cekat-ui 1.3.8 → 1.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +165 -18
- package/dist/index.d.ts +165 -18
- package/dist/index.mjs +8755 -6732
- package/dist/index.umd.js +4 -4
- package/dist/style.css +101 -8
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -4,7 +4,11 @@ import { CellProps as CellProps_2 } from 'react-aria-components';
|
|
|
4
4
|
import { ClassValue } from 'clsx';
|
|
5
5
|
import { ColumnProps as ColumnProps_2 } from 'react-aria-components';
|
|
6
6
|
import { ColumnResizerProps as ColumnResizerProps_2 } from 'react-aria-components';
|
|
7
|
+
import { ComboBoxProps as ComboBoxProps_2 } from 'react-aria-components';
|
|
7
8
|
import { default as default_2 } from 'react';
|
|
9
|
+
import { DialogProps } from 'react-aria-components';
|
|
10
|
+
import { GroupProps } from 'react-aria-components';
|
|
11
|
+
import { InputProps as InputProps_2 } from 'react-aria-components';
|
|
8
12
|
import { JSX as JSX_2 } from 'react/jsx-runtime';
|
|
9
13
|
import { Key } from 'react-aria-components';
|
|
10
14
|
import { ListBoxItemProps as ListBoxItemProps_2 } from 'react-aria-components';
|
|
@@ -12,6 +16,7 @@ import { ListBoxProps as ListBoxProps_2 } from 'react-aria-components';
|
|
|
12
16
|
import { MenuItemProps as MenuItemProps_2 } from 'react-aria-components';
|
|
13
17
|
import { MenuProps as MenuProps_2 } from 'react-aria-components';
|
|
14
18
|
import { MenuTrigger } from 'react-aria-components';
|
|
19
|
+
import { ModalOverlayProps } from 'react-aria-components';
|
|
15
20
|
import { PopoverProps as PopoverProps_2 } from 'react-aria-components';
|
|
16
21
|
import { PressEvent } from 'react-aria-components';
|
|
17
22
|
import * as React_2 from 'react';
|
|
@@ -352,6 +357,92 @@ export declare const ColumnResizer: React_2.ForwardRefExoticComponent<ColumnResi
|
|
|
352
357
|
export declare interface ColumnResizerProps extends ColumnResizerProps_2 {
|
|
353
358
|
}
|
|
354
359
|
|
|
360
|
+
export declare const ComboBox: <T extends object, M extends ComboBoxSelectionMode = "single">(props: ComboBoxProps<T, M> & {
|
|
361
|
+
ref?: React_2.Ref<HTMLDivElement>;
|
|
362
|
+
}) => React_2.ReactElement;
|
|
363
|
+
|
|
364
|
+
export declare const ComboBoxInput: React_2.ForwardRefExoticComponent<ComboBoxInputProps & React_2.RefAttributes<HTMLInputElement>>;
|
|
365
|
+
|
|
366
|
+
export declare interface ComboBoxInputProps extends Omit<InputProps_2, 'className' | 'style'> {
|
|
367
|
+
className?: ClassValue;
|
|
368
|
+
style?: React_2.CSSProperties;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
/**
|
|
372
|
+
* `ListBoxItem` with the same provisional selected-row treatment as `Select`'s `SelectItem` —
|
|
373
|
+
* see `selectItemSelectedStyles` for why it's provisional. Reused directly rather than
|
|
374
|
+
* re-declared, same as `Menu` does for its own items.
|
|
375
|
+
*/
|
|
376
|
+
export declare function ComboBoxItem<T extends object>({ className, ...props }: ListBoxItemProps<T>): JSX_2.Element;
|
|
377
|
+
|
|
378
|
+
export declare interface ComboBoxProps<T extends object, M extends ComboBoxSelectionMode = 'single'> extends Omit<ComboBoxProps_2<T, M>, 'className' | 'style' | 'children'> {
|
|
379
|
+
children: ComboBoxProps_2<T, M>['children'];
|
|
380
|
+
className?: ClassValue;
|
|
381
|
+
style?: React_2.CSSProperties;
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
/**
|
|
385
|
+
* `'single' | 'multiple'` — unlike `Select` (single-value by construction), `ComboBox`
|
|
386
|
+
* genuinely supports both: multi-selection with removable tags is this component's job,
|
|
387
|
+
* not `Select`'s.
|
|
388
|
+
*/
|
|
389
|
+
export declare type ComboBoxSelectionMode = 'single' | 'multiple';
|
|
390
|
+
|
|
391
|
+
export declare type ComboBoxSize = 'xs' | 'sm' | 'md';
|
|
392
|
+
|
|
393
|
+
/**
|
|
394
|
+
* Renders one chip per selected item, via a render-prop rather than owning `Tag` rendering
|
|
395
|
+
* itself — reuses the existing `Tag` component rather than re-declaring chip styling, and
|
|
396
|
+
* `Tag`'s own color/size/icon surface is a styling decision that belongs to the consumer, not
|
|
397
|
+
* this component. Reads
|
|
398
|
+
* `ComboBoxStateContext` directly (same context `ComboBoxValue` uses internally) rather than
|
|
399
|
+
* threading `selectedItems` through props.
|
|
400
|
+
*
|
|
401
|
+
* Wrapped in `comboBoxTagsRowStyles` (single row, horizontal scroll, no visible scrollbar) so
|
|
402
|
+
* every consumer gets Figma's fixed-height, non-wrapping `Tags` layout by construction, rather
|
|
403
|
+
* than each call site having to remember to wrap it correctly.
|
|
404
|
+
*/
|
|
405
|
+
export declare const ComboBoxTags: ({ children }: ComboBoxTagsProps) => JSX_2.Element | null;
|
|
406
|
+
|
|
407
|
+
export declare interface ComboBoxTagsProps {
|
|
408
|
+
/** Rendered per selected item; must call the given `onRemove` from a close affordance. */
|
|
409
|
+
children: (item: {
|
|
410
|
+
key: React_2.Key;
|
|
411
|
+
textValue: string;
|
|
412
|
+
onRemove: () => void;
|
|
413
|
+
}) => React_2.ReactNode;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
/**
|
|
417
|
+
* Wraps RAC's `Group`, not a `Button` — the trigger holds the leading icon, the text input, and
|
|
418
|
+
* any tag chips (`ComboBoxTags`) as siblings.
|
|
419
|
+
*
|
|
420
|
+
* No trailing chevron/toggle button — Figma's `Type=Search`/`Type=Tags` nodes (81:15162,
|
|
421
|
+
* 81:15174) never render one; the leading search icon alone signals the field is searchable.
|
|
422
|
+
* `icon` stays optional at the type level (not required) even though omitting it removes the
|
|
423
|
+
* only visual affordance a trigger has once the chevron is gone — that's a deliberate usage
|
|
424
|
+
* note, not something enforced here. Consumers rendering `ComboBoxTrigger` without an `icon`
|
|
425
|
+
* get a field that looks like a plain text input; pass one.
|
|
426
|
+
*
|
|
427
|
+
* Clicking anywhere in the field — the icon, the padding, blank space next to the tags —
|
|
428
|
+
* focuses the input, the same way clicking anywhere in a native bordered text field does.
|
|
429
|
+
* `Group` gets no such behavior for free (it's a plain `<div role="group">`; only the `<input>`
|
|
430
|
+
* itself is focusable), so this was a real gap, not a style-only wrapper: without it, everything
|
|
431
|
+
* outside the input's own hit area is dead space that looks clickable and isn't. Only clicks
|
|
432
|
+
* that don't already land on a real control (the input, a tag's remove button) redirect focus —
|
|
433
|
+
* `closest('button, input')` is the check — so this never steals a click already meant for one
|
|
434
|
+
* of those.
|
|
435
|
+
*/
|
|
436
|
+
export declare const ComboBoxTrigger: React_2.ForwardRefExoticComponent<ComboBoxTriggerProps & React_2.RefAttributes<HTMLDivElement>>;
|
|
437
|
+
|
|
438
|
+
export declare interface ComboBoxTriggerProps extends Omit<GroupProps, 'className' | 'style' | 'children' | 'role'> {
|
|
439
|
+
size?: ComboBoxSize;
|
|
440
|
+
/** Leading ornament slot — same as `Select`'s: icon, `Avatar`, or a status dot. */
|
|
441
|
+
icon?: React_2.ReactNode;
|
|
442
|
+
children: React_2.ReactNode;
|
|
443
|
+
className?: ClassValue;
|
|
444
|
+
}
|
|
445
|
+
|
|
355
446
|
/**
|
|
356
447
|
* Standalone, not table-scoped — search results and filtered lists need it
|
|
357
448
|
* too. Structure follows the shipped "No Data Found" design (Figma
|
|
@@ -611,30 +702,86 @@ export declare interface MenuSeparatorProps {
|
|
|
611
702
|
|
|
612
703
|
export { MenuTrigger }
|
|
613
704
|
|
|
614
|
-
export declare
|
|
705
|
+
export declare const Modal: ModalCompound;
|
|
615
706
|
|
|
616
|
-
declare interface
|
|
617
|
-
|
|
618
|
-
label?: string;
|
|
619
|
-
required?: boolean;
|
|
620
|
-
hint?: string;
|
|
621
|
-
error?: boolean;
|
|
622
|
-
disabled?: boolean;
|
|
623
|
-
placeholder?: string;
|
|
624
|
-
rightIcon?: default_2.ReactNode;
|
|
707
|
+
export declare interface ModalBodyProps {
|
|
708
|
+
children?: React_2.ReactNode;
|
|
625
709
|
className?: ClassValue;
|
|
626
|
-
wrapperClassName?: ClassValue;
|
|
627
|
-
options: MultiSelectOption[];
|
|
628
|
-
value?: MultiSelectOption[];
|
|
629
|
-
onChange?: (value: MultiSelectOption[]) => void;
|
|
630
710
|
}
|
|
631
711
|
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
712
|
+
/** `ForwardRefExoticComponent` rather than `FC`: the base forwards a ref to RAC's `Modal`. */
|
|
713
|
+
export declare type ModalCompound = React_2.ForwardRefExoticComponent<ModalProps & React_2.RefAttributes<HTMLDivElement>> & {
|
|
714
|
+
Header: React_2.FC<ModalHeaderProps>;
|
|
715
|
+
Body: React_2.FC<ModalBodyProps>;
|
|
716
|
+
ImagePanel: React_2.FC<ModalImagePanelProps>;
|
|
717
|
+
Footer: React_2.FC<ModalFooterProps>;
|
|
718
|
+
};
|
|
719
|
+
|
|
720
|
+
export declare type ModalFooterLayout = 'horizontal-fill' | 'horizontal' | 'vertical-fill' | 'right-aligned' | 'right-aligned-checkbox' | 'wizard-navigation' | 'single-cta';
|
|
721
|
+
|
|
722
|
+
export declare interface ModalFooterProps {
|
|
723
|
+
/** Default `horizontal-fill`, matching Figma's documented default. */
|
|
724
|
+
layout?: ModalFooterLayout;
|
|
725
|
+
/** Reddens the primary action (Confirm/Delete/Next) for irreversible operations. Default `false`. */
|
|
726
|
+
destructive?: boolean;
|
|
727
|
+
/** Disables every button in the footer — matches the single `busy` flag every current dashboard confirm dialog already uses for its Cancel+Confirm pair. Default `false`. */
|
|
728
|
+
isPending?: boolean;
|
|
729
|
+
/** Not used by `single-cta`. */
|
|
730
|
+
cancelLabel?: string;
|
|
731
|
+
onCancel?: () => void;
|
|
732
|
+
/** The primary action's label — "Next" for `wizard-navigation`, "Confirm"/"Delete" elsewhere. Every layout has one. */
|
|
733
|
+
confirmLabel: string;
|
|
734
|
+
onConfirm: () => void;
|
|
735
|
+
isConfirmDisabled?: boolean;
|
|
736
|
+
/** `wizard-navigation` only. Default `'Back'`. */
|
|
737
|
+
backLabel?: string;
|
|
738
|
+
/** `wizard-navigation` only. */
|
|
739
|
+
onBack?: () => void;
|
|
740
|
+
/** `right-aligned-checkbox` only — consumer-supplied, e.g. cekat-ui's own `Checkbox` alongside its own label markup (`Checkbox` itself has no built-in label). */
|
|
741
|
+
checkbox?: React_2.ReactNode;
|
|
742
|
+
className?: ClassValue;
|
|
743
|
+
}
|
|
744
|
+
|
|
745
|
+
export declare interface ModalHeaderProps {
|
|
746
|
+
title: React_2.ReactNode;
|
|
747
|
+
subtitle?: React_2.ReactNode;
|
|
748
|
+
icon?: React_2.ReactNode;
|
|
749
|
+
className?: ClassValue;
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
export declare interface ModalImagePanelProps {
|
|
753
|
+
children?: React_2.ReactNode;
|
|
754
|
+
className?: ClassValue;
|
|
755
|
+
}
|
|
756
|
+
|
|
757
|
+
export declare interface ModalProps extends Omit<ModalOverlayProps, 'className' | 'style' | 'children'> {
|
|
758
|
+
children?: DialogProps['children'];
|
|
759
|
+
/** Content-area width. Figma foundation: sm 500px · md 640px · lg 800px. Default `sm`. */
|
|
760
|
+
size?: ModalSize;
|
|
761
|
+
/**
|
|
762
|
+
* The standalone top-right dismiss button Figma's foundation `Modal Shell` renders on the
|
|
763
|
+
* card itself, regardless of whether a `Modal.Header` is present. Default `true`.
|
|
764
|
+
*/
|
|
765
|
+
showCloseButton?: boolean;
|
|
766
|
+
/**
|
|
767
|
+
* Optional left-side image area — pass a `Modal.ImagePanel`. Widens the card beyond `size`'s
|
|
768
|
+
* content-area width, matching Figma's `Show Image Panel` toggle (the three per-size
|
|
769
|
+
* `Image Placeholder` slots in the design file are a Figma-variant artifact of the same single
|
|
770
|
+
* slot, not three independent props — collapsed here into one).
|
|
771
|
+
*/
|
|
772
|
+
imagePanel?: React_2.ReactNode;
|
|
773
|
+
'aria-label'?: string;
|
|
774
|
+
'aria-labelledby'?: string;
|
|
775
|
+
/**
|
|
776
|
+
* Applied to the content area — the whole card when `imagePanel` isn't used, otherwise just
|
|
777
|
+
* the left column beside it. Overrides `size`'s default width.
|
|
778
|
+
*/
|
|
779
|
+
className?: ClassValue;
|
|
780
|
+
style?: React_2.CSSProperties;
|
|
636
781
|
}
|
|
637
782
|
|
|
783
|
+
export declare type ModalSize = 'sm' | 'md' | 'lg';
|
|
784
|
+
|
|
638
785
|
declare type NativeButtonProps = Omit<React_2.ButtonHTMLAttributes<HTMLButtonElement>, 'children' | 'className' | 'style'>;
|
|
639
786
|
|
|
640
787
|
export declare function PhoneInput({ size, label, required, hint, error, disabled, placeholder, rightIcon, value, onChange, className, wrapperClassName, }: PhoneInputProps): JSX_2.Element;
|
package/dist/index.d.ts
CHANGED
|
@@ -4,7 +4,11 @@ import { CellProps as CellProps_2 } from 'react-aria-components';
|
|
|
4
4
|
import { ClassValue } from 'clsx';
|
|
5
5
|
import { ColumnProps as ColumnProps_2 } from 'react-aria-components';
|
|
6
6
|
import { ColumnResizerProps as ColumnResizerProps_2 } from 'react-aria-components';
|
|
7
|
+
import { ComboBoxProps as ComboBoxProps_2 } from 'react-aria-components';
|
|
7
8
|
import { default as default_2 } from 'react';
|
|
9
|
+
import { DialogProps } from 'react-aria-components';
|
|
10
|
+
import { GroupProps } from 'react-aria-components';
|
|
11
|
+
import { InputProps as InputProps_2 } from 'react-aria-components';
|
|
8
12
|
import { JSX as JSX_2 } from 'react/jsx-runtime';
|
|
9
13
|
import { Key } from 'react-aria-components';
|
|
10
14
|
import { ListBoxItemProps as ListBoxItemProps_2 } from 'react-aria-components';
|
|
@@ -12,6 +16,7 @@ import { ListBoxProps as ListBoxProps_2 } from 'react-aria-components';
|
|
|
12
16
|
import { MenuItemProps as MenuItemProps_2 } from 'react-aria-components';
|
|
13
17
|
import { MenuProps as MenuProps_2 } from 'react-aria-components';
|
|
14
18
|
import { MenuTrigger } from 'react-aria-components';
|
|
19
|
+
import { ModalOverlayProps } from 'react-aria-components';
|
|
15
20
|
import { PopoverProps as PopoverProps_2 } from 'react-aria-components';
|
|
16
21
|
import { PressEvent } from 'react-aria-components';
|
|
17
22
|
import * as React_2 from 'react';
|
|
@@ -352,6 +357,92 @@ export declare const ColumnResizer: React_2.ForwardRefExoticComponent<ColumnResi
|
|
|
352
357
|
export declare interface ColumnResizerProps extends ColumnResizerProps_2 {
|
|
353
358
|
}
|
|
354
359
|
|
|
360
|
+
export declare const ComboBox: <T extends object, M extends ComboBoxSelectionMode = "single">(props: ComboBoxProps<T, M> & {
|
|
361
|
+
ref?: React_2.Ref<HTMLDivElement>;
|
|
362
|
+
}) => React_2.ReactElement;
|
|
363
|
+
|
|
364
|
+
export declare const ComboBoxInput: React_2.ForwardRefExoticComponent<ComboBoxInputProps & React_2.RefAttributes<HTMLInputElement>>;
|
|
365
|
+
|
|
366
|
+
export declare interface ComboBoxInputProps extends Omit<InputProps_2, 'className' | 'style'> {
|
|
367
|
+
className?: ClassValue;
|
|
368
|
+
style?: React_2.CSSProperties;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
/**
|
|
372
|
+
* `ListBoxItem` with the same provisional selected-row treatment as `Select`'s `SelectItem` —
|
|
373
|
+
* see `selectItemSelectedStyles` for why it's provisional. Reused directly rather than
|
|
374
|
+
* re-declared, same as `Menu` does for its own items.
|
|
375
|
+
*/
|
|
376
|
+
export declare function ComboBoxItem<T extends object>({ className, ...props }: ListBoxItemProps<T>): JSX_2.Element;
|
|
377
|
+
|
|
378
|
+
export declare interface ComboBoxProps<T extends object, M extends ComboBoxSelectionMode = 'single'> extends Omit<ComboBoxProps_2<T, M>, 'className' | 'style' | 'children'> {
|
|
379
|
+
children: ComboBoxProps_2<T, M>['children'];
|
|
380
|
+
className?: ClassValue;
|
|
381
|
+
style?: React_2.CSSProperties;
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
/**
|
|
385
|
+
* `'single' | 'multiple'` — unlike `Select` (single-value by construction), `ComboBox`
|
|
386
|
+
* genuinely supports both: multi-selection with removable tags is this component's job,
|
|
387
|
+
* not `Select`'s.
|
|
388
|
+
*/
|
|
389
|
+
export declare type ComboBoxSelectionMode = 'single' | 'multiple';
|
|
390
|
+
|
|
391
|
+
export declare type ComboBoxSize = 'xs' | 'sm' | 'md';
|
|
392
|
+
|
|
393
|
+
/**
|
|
394
|
+
* Renders one chip per selected item, via a render-prop rather than owning `Tag` rendering
|
|
395
|
+
* itself — reuses the existing `Tag` component rather than re-declaring chip styling, and
|
|
396
|
+
* `Tag`'s own color/size/icon surface is a styling decision that belongs to the consumer, not
|
|
397
|
+
* this component. Reads
|
|
398
|
+
* `ComboBoxStateContext` directly (same context `ComboBoxValue` uses internally) rather than
|
|
399
|
+
* threading `selectedItems` through props.
|
|
400
|
+
*
|
|
401
|
+
* Wrapped in `comboBoxTagsRowStyles` (single row, horizontal scroll, no visible scrollbar) so
|
|
402
|
+
* every consumer gets Figma's fixed-height, non-wrapping `Tags` layout by construction, rather
|
|
403
|
+
* than each call site having to remember to wrap it correctly.
|
|
404
|
+
*/
|
|
405
|
+
export declare const ComboBoxTags: ({ children }: ComboBoxTagsProps) => JSX_2.Element | null;
|
|
406
|
+
|
|
407
|
+
export declare interface ComboBoxTagsProps {
|
|
408
|
+
/** Rendered per selected item; must call the given `onRemove` from a close affordance. */
|
|
409
|
+
children: (item: {
|
|
410
|
+
key: React_2.Key;
|
|
411
|
+
textValue: string;
|
|
412
|
+
onRemove: () => void;
|
|
413
|
+
}) => React_2.ReactNode;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
/**
|
|
417
|
+
* Wraps RAC's `Group`, not a `Button` — the trigger holds the leading icon, the text input, and
|
|
418
|
+
* any tag chips (`ComboBoxTags`) as siblings.
|
|
419
|
+
*
|
|
420
|
+
* No trailing chevron/toggle button — Figma's `Type=Search`/`Type=Tags` nodes (81:15162,
|
|
421
|
+
* 81:15174) never render one; the leading search icon alone signals the field is searchable.
|
|
422
|
+
* `icon` stays optional at the type level (not required) even though omitting it removes the
|
|
423
|
+
* only visual affordance a trigger has once the chevron is gone — that's a deliberate usage
|
|
424
|
+
* note, not something enforced here. Consumers rendering `ComboBoxTrigger` without an `icon`
|
|
425
|
+
* get a field that looks like a plain text input; pass one.
|
|
426
|
+
*
|
|
427
|
+
* Clicking anywhere in the field — the icon, the padding, blank space next to the tags —
|
|
428
|
+
* focuses the input, the same way clicking anywhere in a native bordered text field does.
|
|
429
|
+
* `Group` gets no such behavior for free (it's a plain `<div role="group">`; only the `<input>`
|
|
430
|
+
* itself is focusable), so this was a real gap, not a style-only wrapper: without it, everything
|
|
431
|
+
* outside the input's own hit area is dead space that looks clickable and isn't. Only clicks
|
|
432
|
+
* that don't already land on a real control (the input, a tag's remove button) redirect focus —
|
|
433
|
+
* `closest('button, input')` is the check — so this never steals a click already meant for one
|
|
434
|
+
* of those.
|
|
435
|
+
*/
|
|
436
|
+
export declare const ComboBoxTrigger: React_2.ForwardRefExoticComponent<ComboBoxTriggerProps & React_2.RefAttributes<HTMLDivElement>>;
|
|
437
|
+
|
|
438
|
+
export declare interface ComboBoxTriggerProps extends Omit<GroupProps, 'className' | 'style' | 'children' | 'role'> {
|
|
439
|
+
size?: ComboBoxSize;
|
|
440
|
+
/** Leading ornament slot — same as `Select`'s: icon, `Avatar`, or a status dot. */
|
|
441
|
+
icon?: React_2.ReactNode;
|
|
442
|
+
children: React_2.ReactNode;
|
|
443
|
+
className?: ClassValue;
|
|
444
|
+
}
|
|
445
|
+
|
|
355
446
|
/**
|
|
356
447
|
* Standalone, not table-scoped — search results and filtered lists need it
|
|
357
448
|
* too. Structure follows the shipped "No Data Found" design (Figma
|
|
@@ -611,30 +702,86 @@ export declare interface MenuSeparatorProps {
|
|
|
611
702
|
|
|
612
703
|
export { MenuTrigger }
|
|
613
704
|
|
|
614
|
-
export declare
|
|
705
|
+
export declare const Modal: ModalCompound;
|
|
615
706
|
|
|
616
|
-
declare interface
|
|
617
|
-
|
|
618
|
-
label?: string;
|
|
619
|
-
required?: boolean;
|
|
620
|
-
hint?: string;
|
|
621
|
-
error?: boolean;
|
|
622
|
-
disabled?: boolean;
|
|
623
|
-
placeholder?: string;
|
|
624
|
-
rightIcon?: default_2.ReactNode;
|
|
707
|
+
export declare interface ModalBodyProps {
|
|
708
|
+
children?: React_2.ReactNode;
|
|
625
709
|
className?: ClassValue;
|
|
626
|
-
wrapperClassName?: ClassValue;
|
|
627
|
-
options: MultiSelectOption[];
|
|
628
|
-
value?: MultiSelectOption[];
|
|
629
|
-
onChange?: (value: MultiSelectOption[]) => void;
|
|
630
710
|
}
|
|
631
711
|
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
712
|
+
/** `ForwardRefExoticComponent` rather than `FC`: the base forwards a ref to RAC's `Modal`. */
|
|
713
|
+
export declare type ModalCompound = React_2.ForwardRefExoticComponent<ModalProps & React_2.RefAttributes<HTMLDivElement>> & {
|
|
714
|
+
Header: React_2.FC<ModalHeaderProps>;
|
|
715
|
+
Body: React_2.FC<ModalBodyProps>;
|
|
716
|
+
ImagePanel: React_2.FC<ModalImagePanelProps>;
|
|
717
|
+
Footer: React_2.FC<ModalFooterProps>;
|
|
718
|
+
};
|
|
719
|
+
|
|
720
|
+
export declare type ModalFooterLayout = 'horizontal-fill' | 'horizontal' | 'vertical-fill' | 'right-aligned' | 'right-aligned-checkbox' | 'wizard-navigation' | 'single-cta';
|
|
721
|
+
|
|
722
|
+
export declare interface ModalFooterProps {
|
|
723
|
+
/** Default `horizontal-fill`, matching Figma's documented default. */
|
|
724
|
+
layout?: ModalFooterLayout;
|
|
725
|
+
/** Reddens the primary action (Confirm/Delete/Next) for irreversible operations. Default `false`. */
|
|
726
|
+
destructive?: boolean;
|
|
727
|
+
/** Disables every button in the footer — matches the single `busy` flag every current dashboard confirm dialog already uses for its Cancel+Confirm pair. Default `false`. */
|
|
728
|
+
isPending?: boolean;
|
|
729
|
+
/** Not used by `single-cta`. */
|
|
730
|
+
cancelLabel?: string;
|
|
731
|
+
onCancel?: () => void;
|
|
732
|
+
/** The primary action's label — "Next" for `wizard-navigation`, "Confirm"/"Delete" elsewhere. Every layout has one. */
|
|
733
|
+
confirmLabel: string;
|
|
734
|
+
onConfirm: () => void;
|
|
735
|
+
isConfirmDisabled?: boolean;
|
|
736
|
+
/** `wizard-navigation` only. Default `'Back'`. */
|
|
737
|
+
backLabel?: string;
|
|
738
|
+
/** `wizard-navigation` only. */
|
|
739
|
+
onBack?: () => void;
|
|
740
|
+
/** `right-aligned-checkbox` only — consumer-supplied, e.g. cekat-ui's own `Checkbox` alongside its own label markup (`Checkbox` itself has no built-in label). */
|
|
741
|
+
checkbox?: React_2.ReactNode;
|
|
742
|
+
className?: ClassValue;
|
|
743
|
+
}
|
|
744
|
+
|
|
745
|
+
export declare interface ModalHeaderProps {
|
|
746
|
+
title: React_2.ReactNode;
|
|
747
|
+
subtitle?: React_2.ReactNode;
|
|
748
|
+
icon?: React_2.ReactNode;
|
|
749
|
+
className?: ClassValue;
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
export declare interface ModalImagePanelProps {
|
|
753
|
+
children?: React_2.ReactNode;
|
|
754
|
+
className?: ClassValue;
|
|
755
|
+
}
|
|
756
|
+
|
|
757
|
+
export declare interface ModalProps extends Omit<ModalOverlayProps, 'className' | 'style' | 'children'> {
|
|
758
|
+
children?: DialogProps['children'];
|
|
759
|
+
/** Content-area width. Figma foundation: sm 500px · md 640px · lg 800px. Default `sm`. */
|
|
760
|
+
size?: ModalSize;
|
|
761
|
+
/**
|
|
762
|
+
* The standalone top-right dismiss button Figma's foundation `Modal Shell` renders on the
|
|
763
|
+
* card itself, regardless of whether a `Modal.Header` is present. Default `true`.
|
|
764
|
+
*/
|
|
765
|
+
showCloseButton?: boolean;
|
|
766
|
+
/**
|
|
767
|
+
* Optional left-side image area — pass a `Modal.ImagePanel`. Widens the card beyond `size`'s
|
|
768
|
+
* content-area width, matching Figma's `Show Image Panel` toggle (the three per-size
|
|
769
|
+
* `Image Placeholder` slots in the design file are a Figma-variant artifact of the same single
|
|
770
|
+
* slot, not three independent props — collapsed here into one).
|
|
771
|
+
*/
|
|
772
|
+
imagePanel?: React_2.ReactNode;
|
|
773
|
+
'aria-label'?: string;
|
|
774
|
+
'aria-labelledby'?: string;
|
|
775
|
+
/**
|
|
776
|
+
* Applied to the content area — the whole card when `imagePanel` isn't used, otherwise just
|
|
777
|
+
* the left column beside it. Overrides `size`'s default width.
|
|
778
|
+
*/
|
|
779
|
+
className?: ClassValue;
|
|
780
|
+
style?: React_2.CSSProperties;
|
|
636
781
|
}
|
|
637
782
|
|
|
783
|
+
export declare type ModalSize = 'sm' | 'md' | 'lg';
|
|
784
|
+
|
|
638
785
|
declare type NativeButtonProps = Omit<React_2.ButtonHTMLAttributes<HTMLButtonElement>, 'children' | 'className' | 'style'>;
|
|
639
786
|
|
|
640
787
|
export declare function PhoneInput({ size, label, required, hint, error, disabled, placeholder, rightIcon, value, onChange, className, wrapperClassName, }: PhoneInputProps): JSX_2.Element;
|