@rovula/ui 0.1.18 → 0.1.21
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/cjs/bundle.css +141 -17
- package/dist/cjs/bundle.js +3 -3
- package/dist/cjs/bundle.js.map +1 -1
- package/dist/cjs/types/components/DropdownMenu/DropdownMenu.stories.d.ts +29 -30
- package/dist/cjs/types/components/Form/Form.d.ts +2 -1
- package/dist/cjs/types/components/Form/Form.stories.d.ts +4 -0
- package/dist/cjs/types/components/ScrollArea/ScrollArea.d.ts +38 -0
- package/dist/cjs/types/components/ScrollArea/ScrollArea.stories.d.ts +301 -0
- package/dist/cjs/types/index.d.ts +1 -0
- package/dist/cjs/types/patterns/confirm-dialog/ConfirmDialog.d.ts +1 -0
- package/dist/cjs/types/patterns/confirm-dialog/ConfirmDialog.stories.d.ts +1 -0
- package/dist/components/DropdownMenu/DropdownMenu.js +7 -9
- package/dist/components/DropdownMenu/DropdownMenu.stories.js +79 -91
- package/dist/components/Form/Form.js +11 -4
- package/dist/components/Form/Form.stories.js +27 -0
- package/dist/components/ScrollArea/ScrollArea.js +50 -0
- package/dist/components/ScrollArea/ScrollArea.stories.js +56 -0
- package/dist/esm/bundle.css +141 -17
- package/dist/esm/bundle.js +3 -3
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/types/components/DropdownMenu/DropdownMenu.stories.d.ts +29 -30
- package/dist/esm/types/components/Form/Form.d.ts +2 -1
- package/dist/esm/types/components/Form/Form.stories.d.ts +4 -0
- package/dist/esm/types/components/ScrollArea/ScrollArea.d.ts +38 -0
- package/dist/esm/types/components/ScrollArea/ScrollArea.stories.d.ts +301 -0
- package/dist/esm/types/index.d.ts +1 -0
- package/dist/esm/types/patterns/confirm-dialog/ConfirmDialog.d.ts +1 -0
- package/dist/esm/types/patterns/confirm-dialog/ConfirmDialog.stories.d.ts +1 -0
- package/dist/index.d.ts +42 -2
- package/dist/index.js +1 -0
- package/dist/patterns/confirm-dialog/ConfirmDialog.js +2 -2
- package/dist/patterns/form-dialog/FormDialog.js +1 -1
- package/dist/src/theme/global.css +196 -20
- package/package.json +1 -1
- package/src/components/DropdownMenu/DropdownMenu.stories.tsx +482 -297
- package/src/components/DropdownMenu/DropdownMenu.tsx +7 -8
- package/src/components/Form/Form.stories.tsx +70 -0
- package/src/components/Form/Form.tsx +23 -0
- package/src/components/ScrollArea/ScrollArea.stories.tsx +229 -0
- package/src/components/ScrollArea/ScrollArea.tsx +72 -0
- package/src/index.ts +1 -0
- package/src/patterns/confirm-dialog/ConfirmDialog.tsx +4 -0
- package/src/patterns/form-dialog/FormDialog.tsx +5 -1
- package/src/theme/global.css +84 -11
- package/src/theme/themes/xspector/baseline.css +1 -0
- package/src/theme/themes/xspector/components/dropdown-menu.css +2 -2
- package/src/theme/themes/xspector/components/scrollbar.css +12 -0
- package/src/theme/tokens/baseline.css +2 -1
- package/src/theme/tokens/components/dropdown-menu.css +1 -1
- package/src/theme/tokens/components/scrollbar.css +18 -0
|
@@ -15,40 +15,39 @@ declare const meta: {
|
|
|
15
15
|
}>) => import("react/jsx-runtime").JSX.Element)[];
|
|
16
16
|
};
|
|
17
17
|
export default meta;
|
|
18
|
-
export declare const
|
|
19
|
-
|
|
20
|
-
render: (
|
|
18
|
+
export declare const AllStates: {
|
|
19
|
+
name: string;
|
|
20
|
+
render: () => import("react/jsx-runtime").JSX.Element;
|
|
21
21
|
};
|
|
22
22
|
export declare const WithIcon: {
|
|
23
|
-
|
|
24
|
-
render: (
|
|
23
|
+
name: string;
|
|
24
|
+
render: () => import("react/jsx-runtime").JSX.Element;
|
|
25
25
|
};
|
|
26
|
-
export declare const
|
|
27
|
-
|
|
28
|
-
render: (
|
|
26
|
+
export declare const WithCheckbox: {
|
|
27
|
+
name: string;
|
|
28
|
+
render: () => import("react/jsx-runtime").JSX.Element;
|
|
29
29
|
};
|
|
30
|
-
export declare const
|
|
31
|
-
|
|
32
|
-
render: (
|
|
30
|
+
export declare const WithSection: {
|
|
31
|
+
name: string;
|
|
32
|
+
render: () => import("react/jsx-runtime").JSX.Element;
|
|
33
|
+
};
|
|
34
|
+
export declare const WithSearch: {
|
|
35
|
+
name: string;
|
|
36
|
+
render: () => import("react/jsx-runtime").JSX.Element;
|
|
37
|
+
};
|
|
38
|
+
export declare const CanScroll: {
|
|
39
|
+
name: string;
|
|
40
|
+
render: () => import("react/jsx-runtime").JSX.Element;
|
|
41
|
+
};
|
|
42
|
+
export declare const DoubleScroll: {
|
|
43
|
+
name: string;
|
|
44
|
+
render: () => import("react/jsx-runtime").JSX.Element;
|
|
33
45
|
};
|
|
34
46
|
export declare const SubMenu: {
|
|
35
|
-
|
|
36
|
-
render: (
|
|
37
|
-
};
|
|
38
|
-
export declare const
|
|
39
|
-
|
|
40
|
-
render: (
|
|
41
|
-
};
|
|
42
|
-
export declare const AsChild: {
|
|
43
|
-
args: {};
|
|
44
|
-
render: (args: {}) => import("react/jsx-runtime").JSX.Element;
|
|
45
|
-
};
|
|
46
|
-
export declare const Position: {
|
|
47
|
-
args: {
|
|
48
|
-
side: string;
|
|
49
|
-
align: string;
|
|
50
|
-
sideOffset: number;
|
|
51
|
-
alignOffset: number;
|
|
52
|
-
};
|
|
53
|
-
render: (args: {}) => import("react/jsx-runtime").JSX.Element;
|
|
47
|
+
name: string;
|
|
48
|
+
render: () => import("react/jsx-runtime").JSX.Element;
|
|
49
|
+
};
|
|
50
|
+
export declare const TriggerVariants: {
|
|
51
|
+
name: string;
|
|
52
|
+
render: () => import("react/jsx-runtime").JSX.Element;
|
|
54
53
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { FormHTMLAttributes, ReactNode } from "react";
|
|
2
|
-
import { DefaultValues, FieldValues, Mode, Resolver, SubmitErrorHandler, SubmitHandler, UseFormReturn } from "react-hook-form";
|
|
2
|
+
import { DefaultValues, FieldValues, FormState, Mode, Resolver, SubmitErrorHandler, SubmitHandler, UseFormReturn } from "react-hook-form";
|
|
3
3
|
import * as yup from "yup";
|
|
4
4
|
type FormChildren<TFieldValues extends FieldValues> = ReactNode | ((methods: UseFormReturn<TFieldValues>) => ReactNode);
|
|
5
5
|
export type FormController<TFieldValues extends FieldValues> = {
|
|
@@ -16,6 +16,7 @@ export type FormProps<TFieldValues extends FieldValues> = Omit<FormHTMLAttribute
|
|
|
16
16
|
controllerRef?: React.MutableRefObject<FormController<TFieldValues> | null>;
|
|
17
17
|
onSubmit: SubmitHandler<TFieldValues>;
|
|
18
18
|
onInvalidSubmit?: SubmitErrorHandler<TFieldValues>;
|
|
19
|
+
onFormStateChange?: (formState: FormState<TFieldValues>) => void;
|
|
19
20
|
resolver?: Resolver<TFieldValues>;
|
|
20
21
|
validationSchema?: yup.ObjectSchema<any>;
|
|
21
22
|
mode?: Mode;
|
|
@@ -17,6 +17,10 @@ export declare const RenderPropsCodeControl: {
|
|
|
17
17
|
args: {};
|
|
18
18
|
render: () => import("react/jsx-runtime").JSX.Element;
|
|
19
19
|
};
|
|
20
|
+
export declare const FormStateChangeCallback: {
|
|
21
|
+
args: {};
|
|
22
|
+
render: () => import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
};
|
|
20
24
|
export declare const HigherLayerCodeControl: {
|
|
21
25
|
args: {};
|
|
22
26
|
render: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export type ScrollbarSize = "m" | "s" | "xs";
|
|
3
|
+
export interface ScrollAreaProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
4
|
+
/**
|
|
5
|
+
* Scrollbar thickness.
|
|
6
|
+
* - `m` — 12 px (shows track border)
|
|
7
|
+
* - `s` — 6 px (default, shows no track border)
|
|
8
|
+
* - `xs` — 2 px (shows no track border)
|
|
9
|
+
*/
|
|
10
|
+
scrollbarSize?: ScrollbarSize;
|
|
11
|
+
/**
|
|
12
|
+
* Direction(s) the area can scroll.
|
|
13
|
+
* Defaults to `"vertical"`.
|
|
14
|
+
*/
|
|
15
|
+
direction?: "vertical" | "horizontal" | "both";
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* ScrollArea
|
|
19
|
+
*
|
|
20
|
+
* A thin wrapper that applies the design-system scrollbar style to any
|
|
21
|
+
* scrollable container. Use `scrollbarSize` to pick the Figma size variant
|
|
22
|
+
* and `direction` to control which axis scrolls.
|
|
23
|
+
*
|
|
24
|
+
* **Client usage:**
|
|
25
|
+
* ```tsx
|
|
26
|
+
* <ScrollArea className="max-h-[270px]">
|
|
27
|
+
* {items.map(item => <div key={item.id}>{item.label}</div>)}
|
|
28
|
+
* </ScrollArea>
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* For a double-scroll layout (two independent sections inside one dropdown),
|
|
32
|
+
* wrap each section individually:
|
|
33
|
+
* ```tsx
|
|
34
|
+
* <ScrollArea className="max-h-[160px]">...section A items...</ScrollArea>
|
|
35
|
+
* <ScrollArea className="max-h-[160px]">...section B items...</ScrollArea>
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export declare const ScrollArea: React.ForwardRefExoticComponent<ScrollAreaProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
declare const meta: {
|
|
3
|
+
title: string;
|
|
4
|
+
component: React.ForwardRefExoticComponent<import("./ScrollArea").ScrollAreaProps & React.RefAttributes<HTMLDivElement>>;
|
|
5
|
+
parameters: {
|
|
6
|
+
layout: string;
|
|
7
|
+
};
|
|
8
|
+
decorators: ((Story: import("@storybook/csf").PartialStoryFn<import("@storybook/react").ReactRenderer, {
|
|
9
|
+
scrollbarSize?: import("./ScrollArea").ScrollbarSize | undefined;
|
|
10
|
+
direction?: "vertical" | "horizontal" | "both" | undefined;
|
|
11
|
+
defaultChecked?: boolean | undefined | undefined;
|
|
12
|
+
defaultValue?: string | number | readonly string[] | undefined;
|
|
13
|
+
suppressContentEditableWarning?: boolean | undefined | undefined;
|
|
14
|
+
suppressHydrationWarning?: boolean | undefined | undefined;
|
|
15
|
+
accessKey?: string | undefined | undefined;
|
|
16
|
+
autoCapitalize?: "off" | "none" | "on" | "sentences" | "words" | "characters" | undefined | (string & {}) | undefined;
|
|
17
|
+
autoFocus?: boolean | undefined | undefined;
|
|
18
|
+
className?: string | undefined | undefined;
|
|
19
|
+
contentEditable?: "inherit" | (boolean | "true" | "false") | "plaintext-only" | undefined;
|
|
20
|
+
contextMenu?: string | undefined | undefined;
|
|
21
|
+
dir?: string | undefined | undefined;
|
|
22
|
+
draggable?: (boolean | "true" | "false") | undefined;
|
|
23
|
+
enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
|
|
24
|
+
hidden?: boolean | undefined | undefined;
|
|
25
|
+
id?: string | undefined | undefined;
|
|
26
|
+
lang?: string | undefined | undefined;
|
|
27
|
+
nonce?: string | undefined | undefined;
|
|
28
|
+
slot?: string | undefined | undefined;
|
|
29
|
+
spellCheck?: (boolean | "true" | "false") | undefined;
|
|
30
|
+
style?: React.CSSProperties | undefined;
|
|
31
|
+
tabIndex?: number | undefined | undefined;
|
|
32
|
+
title?: string | undefined | undefined;
|
|
33
|
+
translate?: "yes" | "no" | undefined | undefined;
|
|
34
|
+
radioGroup?: string | undefined | undefined;
|
|
35
|
+
role?: React.AriaRole | undefined;
|
|
36
|
+
about?: string | undefined | undefined;
|
|
37
|
+
content?: string | undefined | undefined;
|
|
38
|
+
datatype?: string | undefined | undefined;
|
|
39
|
+
inlist?: any;
|
|
40
|
+
prefix?: string | undefined | undefined;
|
|
41
|
+
property?: string | undefined | undefined;
|
|
42
|
+
rel?: string | undefined | undefined;
|
|
43
|
+
resource?: string | undefined | undefined;
|
|
44
|
+
rev?: string | undefined | undefined;
|
|
45
|
+
typeof?: string | undefined | undefined;
|
|
46
|
+
vocab?: string | undefined | undefined;
|
|
47
|
+
autoCorrect?: string | undefined | undefined;
|
|
48
|
+
autoSave?: string | undefined | undefined;
|
|
49
|
+
color?: string | undefined | undefined;
|
|
50
|
+
itemProp?: string | undefined | undefined;
|
|
51
|
+
itemScope?: boolean | undefined | undefined;
|
|
52
|
+
itemType?: string | undefined | undefined;
|
|
53
|
+
itemID?: string | undefined | undefined;
|
|
54
|
+
itemRef?: string | undefined | undefined;
|
|
55
|
+
results?: number | undefined | undefined;
|
|
56
|
+
security?: string | undefined | undefined;
|
|
57
|
+
unselectable?: "on" | "off" | undefined | undefined;
|
|
58
|
+
inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined | undefined;
|
|
59
|
+
is?: string | undefined | undefined;
|
|
60
|
+
"aria-activedescendant"?: string | undefined | undefined;
|
|
61
|
+
"aria-atomic"?: (boolean | "true" | "false") | undefined;
|
|
62
|
+
"aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined | undefined;
|
|
63
|
+
"aria-braillelabel"?: string | undefined | undefined;
|
|
64
|
+
"aria-brailleroledescription"?: string | undefined | undefined;
|
|
65
|
+
"aria-busy"?: (boolean | "true" | "false") | undefined;
|
|
66
|
+
"aria-checked"?: boolean | "false" | "mixed" | "true" | undefined | undefined;
|
|
67
|
+
"aria-colcount"?: number | undefined | undefined;
|
|
68
|
+
"aria-colindex"?: number | undefined | undefined;
|
|
69
|
+
"aria-colindextext"?: string | undefined | undefined;
|
|
70
|
+
"aria-colspan"?: number | undefined | undefined;
|
|
71
|
+
"aria-controls"?: string | undefined | undefined;
|
|
72
|
+
"aria-current"?: boolean | "false" | "true" | "page" | "step" | "location" | "date" | "time" | undefined | undefined;
|
|
73
|
+
"aria-describedby"?: string | undefined | undefined;
|
|
74
|
+
"aria-description"?: string | undefined | undefined;
|
|
75
|
+
"aria-details"?: string | undefined | undefined;
|
|
76
|
+
"aria-disabled"?: (boolean | "true" | "false") | undefined;
|
|
77
|
+
"aria-dropeffect"?: "none" | "copy" | "execute" | "link" | "move" | "popup" | undefined | undefined;
|
|
78
|
+
"aria-errormessage"?: string | undefined | undefined;
|
|
79
|
+
"aria-expanded"?: (boolean | "true" | "false") | undefined;
|
|
80
|
+
"aria-flowto"?: string | undefined | undefined;
|
|
81
|
+
"aria-grabbed"?: (boolean | "true" | "false") | undefined;
|
|
82
|
+
"aria-haspopup"?: boolean | "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog" | undefined | undefined;
|
|
83
|
+
"aria-hidden"?: (boolean | "true" | "false") | undefined;
|
|
84
|
+
"aria-invalid"?: boolean | "false" | "true" | "grammar" | "spelling" | undefined | undefined;
|
|
85
|
+
"aria-keyshortcuts"?: string | undefined | undefined;
|
|
86
|
+
"aria-label"?: string | undefined | undefined;
|
|
87
|
+
"aria-labelledby"?: string | undefined | undefined;
|
|
88
|
+
"aria-level"?: number | undefined | undefined;
|
|
89
|
+
"aria-live"?: "off" | "assertive" | "polite" | undefined | undefined;
|
|
90
|
+
"aria-modal"?: (boolean | "true" | "false") | undefined;
|
|
91
|
+
"aria-multiline"?: (boolean | "true" | "false") | undefined;
|
|
92
|
+
"aria-multiselectable"?: (boolean | "true" | "false") | undefined;
|
|
93
|
+
"aria-orientation"?: "horizontal" | "vertical" | undefined | undefined;
|
|
94
|
+
"aria-owns"?: string | undefined | undefined;
|
|
95
|
+
"aria-placeholder"?: string | undefined | undefined;
|
|
96
|
+
"aria-posinset"?: number | undefined | undefined;
|
|
97
|
+
"aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined | undefined;
|
|
98
|
+
"aria-readonly"?: (boolean | "true" | "false") | undefined;
|
|
99
|
+
"aria-relevant"?: "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text" | "text additions" | "text removals" | undefined | undefined;
|
|
100
|
+
"aria-required"?: (boolean | "true" | "false") | undefined;
|
|
101
|
+
"aria-roledescription"?: string | undefined | undefined;
|
|
102
|
+
"aria-rowcount"?: number | undefined | undefined;
|
|
103
|
+
"aria-rowindex"?: number | undefined | undefined;
|
|
104
|
+
"aria-rowindextext"?: string | undefined | undefined;
|
|
105
|
+
"aria-rowspan"?: number | undefined | undefined;
|
|
106
|
+
"aria-selected"?: (boolean | "true" | "false") | undefined;
|
|
107
|
+
"aria-setsize"?: number | undefined | undefined;
|
|
108
|
+
"aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined | undefined;
|
|
109
|
+
"aria-valuemax"?: number | undefined | undefined;
|
|
110
|
+
"aria-valuemin"?: number | undefined | undefined;
|
|
111
|
+
"aria-valuenow"?: number | undefined | undefined;
|
|
112
|
+
"aria-valuetext"?: string | undefined | undefined;
|
|
113
|
+
children?: React.ReactNode;
|
|
114
|
+
dangerouslySetInnerHTML?: {
|
|
115
|
+
__html: string | TrustedHTML;
|
|
116
|
+
} | undefined | undefined;
|
|
117
|
+
onCopy?: React.ClipboardEventHandler<HTMLDivElement> | undefined;
|
|
118
|
+
onCopyCapture?: React.ClipboardEventHandler<HTMLDivElement> | undefined;
|
|
119
|
+
onCut?: React.ClipboardEventHandler<HTMLDivElement> | undefined;
|
|
120
|
+
onCutCapture?: React.ClipboardEventHandler<HTMLDivElement> | undefined;
|
|
121
|
+
onPaste?: React.ClipboardEventHandler<HTMLDivElement> | undefined;
|
|
122
|
+
onPasteCapture?: React.ClipboardEventHandler<HTMLDivElement> | undefined;
|
|
123
|
+
onCompositionEnd?: React.CompositionEventHandler<HTMLDivElement> | undefined;
|
|
124
|
+
onCompositionEndCapture?: React.CompositionEventHandler<HTMLDivElement> | undefined;
|
|
125
|
+
onCompositionStart?: React.CompositionEventHandler<HTMLDivElement> | undefined;
|
|
126
|
+
onCompositionStartCapture?: React.CompositionEventHandler<HTMLDivElement> | undefined;
|
|
127
|
+
onCompositionUpdate?: React.CompositionEventHandler<HTMLDivElement> | undefined;
|
|
128
|
+
onCompositionUpdateCapture?: React.CompositionEventHandler<HTMLDivElement> | undefined;
|
|
129
|
+
onFocus?: React.FocusEventHandler<HTMLDivElement> | undefined;
|
|
130
|
+
onFocusCapture?: React.FocusEventHandler<HTMLDivElement> | undefined;
|
|
131
|
+
onBlur?: React.FocusEventHandler<HTMLDivElement> | undefined;
|
|
132
|
+
onBlurCapture?: React.FocusEventHandler<HTMLDivElement> | undefined;
|
|
133
|
+
onChange?: React.FormEventHandler<HTMLDivElement> | undefined;
|
|
134
|
+
onChangeCapture?: React.FormEventHandler<HTMLDivElement> | undefined;
|
|
135
|
+
onBeforeInput?: React.FormEventHandler<HTMLDivElement> | undefined;
|
|
136
|
+
onBeforeInputCapture?: React.FormEventHandler<HTMLDivElement> | undefined;
|
|
137
|
+
onInput?: React.FormEventHandler<HTMLDivElement> | undefined;
|
|
138
|
+
onInputCapture?: React.FormEventHandler<HTMLDivElement> | undefined;
|
|
139
|
+
onReset?: React.FormEventHandler<HTMLDivElement> | undefined;
|
|
140
|
+
onResetCapture?: React.FormEventHandler<HTMLDivElement> | undefined;
|
|
141
|
+
onSubmit?: React.FormEventHandler<HTMLDivElement> | undefined;
|
|
142
|
+
onSubmitCapture?: React.FormEventHandler<HTMLDivElement> | undefined;
|
|
143
|
+
onInvalid?: React.FormEventHandler<HTMLDivElement> | undefined;
|
|
144
|
+
onInvalidCapture?: React.FormEventHandler<HTMLDivElement> | undefined;
|
|
145
|
+
onLoad?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
146
|
+
onLoadCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
147
|
+
onError?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
148
|
+
onErrorCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
149
|
+
onKeyDown?: React.KeyboardEventHandler<HTMLDivElement> | undefined;
|
|
150
|
+
onKeyDownCapture?: React.KeyboardEventHandler<HTMLDivElement> | undefined;
|
|
151
|
+
onKeyPress?: React.KeyboardEventHandler<HTMLDivElement> | undefined;
|
|
152
|
+
onKeyPressCapture?: React.KeyboardEventHandler<HTMLDivElement> | undefined;
|
|
153
|
+
onKeyUp?: React.KeyboardEventHandler<HTMLDivElement> | undefined;
|
|
154
|
+
onKeyUpCapture?: React.KeyboardEventHandler<HTMLDivElement> | undefined;
|
|
155
|
+
onAbort?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
156
|
+
onAbortCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
157
|
+
onCanPlay?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
158
|
+
onCanPlayCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
159
|
+
onCanPlayThrough?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
160
|
+
onCanPlayThroughCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
161
|
+
onDurationChange?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
162
|
+
onDurationChangeCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
163
|
+
onEmptied?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
164
|
+
onEmptiedCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
165
|
+
onEncrypted?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
166
|
+
onEncryptedCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
167
|
+
onEnded?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
168
|
+
onEndedCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
169
|
+
onLoadedData?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
170
|
+
onLoadedDataCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
171
|
+
onLoadedMetadata?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
172
|
+
onLoadedMetadataCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
173
|
+
onLoadStart?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
174
|
+
onLoadStartCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
175
|
+
onPause?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
176
|
+
onPauseCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
177
|
+
onPlay?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
178
|
+
onPlayCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
179
|
+
onPlaying?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
180
|
+
onPlayingCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
181
|
+
onProgress?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
182
|
+
onProgressCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
183
|
+
onRateChange?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
184
|
+
onRateChangeCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
185
|
+
onResize?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
186
|
+
onResizeCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
187
|
+
onSeeked?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
188
|
+
onSeekedCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
189
|
+
onSeeking?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
190
|
+
onSeekingCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
191
|
+
onStalled?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
192
|
+
onStalledCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
193
|
+
onSuspend?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
194
|
+
onSuspendCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
195
|
+
onTimeUpdate?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
196
|
+
onTimeUpdateCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
197
|
+
onVolumeChange?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
198
|
+
onVolumeChangeCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
199
|
+
onWaiting?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
200
|
+
onWaitingCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
201
|
+
onAuxClick?: React.MouseEventHandler<HTMLDivElement> | undefined;
|
|
202
|
+
onAuxClickCapture?: React.MouseEventHandler<HTMLDivElement> | undefined;
|
|
203
|
+
onClick?: React.MouseEventHandler<HTMLDivElement> | undefined;
|
|
204
|
+
onClickCapture?: React.MouseEventHandler<HTMLDivElement> | undefined;
|
|
205
|
+
onContextMenu?: React.MouseEventHandler<HTMLDivElement> | undefined;
|
|
206
|
+
onContextMenuCapture?: React.MouseEventHandler<HTMLDivElement> | undefined;
|
|
207
|
+
onDoubleClick?: React.MouseEventHandler<HTMLDivElement> | undefined;
|
|
208
|
+
onDoubleClickCapture?: React.MouseEventHandler<HTMLDivElement> | undefined;
|
|
209
|
+
onDrag?: React.DragEventHandler<HTMLDivElement> | undefined;
|
|
210
|
+
onDragCapture?: React.DragEventHandler<HTMLDivElement> | undefined;
|
|
211
|
+
onDragEnd?: React.DragEventHandler<HTMLDivElement> | undefined;
|
|
212
|
+
onDragEndCapture?: React.DragEventHandler<HTMLDivElement> | undefined;
|
|
213
|
+
onDragEnter?: React.DragEventHandler<HTMLDivElement> | undefined;
|
|
214
|
+
onDragEnterCapture?: React.DragEventHandler<HTMLDivElement> | undefined;
|
|
215
|
+
onDragExit?: React.DragEventHandler<HTMLDivElement> | undefined;
|
|
216
|
+
onDragExitCapture?: React.DragEventHandler<HTMLDivElement> | undefined;
|
|
217
|
+
onDragLeave?: React.DragEventHandler<HTMLDivElement> | undefined;
|
|
218
|
+
onDragLeaveCapture?: React.DragEventHandler<HTMLDivElement> | undefined;
|
|
219
|
+
onDragOver?: React.DragEventHandler<HTMLDivElement> | undefined;
|
|
220
|
+
onDragOverCapture?: React.DragEventHandler<HTMLDivElement> | undefined;
|
|
221
|
+
onDragStart?: React.DragEventHandler<HTMLDivElement> | undefined;
|
|
222
|
+
onDragStartCapture?: React.DragEventHandler<HTMLDivElement> | undefined;
|
|
223
|
+
onDrop?: React.DragEventHandler<HTMLDivElement> | undefined;
|
|
224
|
+
onDropCapture?: React.DragEventHandler<HTMLDivElement> | undefined;
|
|
225
|
+
onMouseDown?: React.MouseEventHandler<HTMLDivElement> | undefined;
|
|
226
|
+
onMouseDownCapture?: React.MouseEventHandler<HTMLDivElement> | undefined;
|
|
227
|
+
onMouseEnter?: React.MouseEventHandler<HTMLDivElement> | undefined;
|
|
228
|
+
onMouseLeave?: React.MouseEventHandler<HTMLDivElement> | undefined;
|
|
229
|
+
onMouseMove?: React.MouseEventHandler<HTMLDivElement> | undefined;
|
|
230
|
+
onMouseMoveCapture?: React.MouseEventHandler<HTMLDivElement> | undefined;
|
|
231
|
+
onMouseOut?: React.MouseEventHandler<HTMLDivElement> | undefined;
|
|
232
|
+
onMouseOutCapture?: React.MouseEventHandler<HTMLDivElement> | undefined;
|
|
233
|
+
onMouseOver?: React.MouseEventHandler<HTMLDivElement> | undefined;
|
|
234
|
+
onMouseOverCapture?: React.MouseEventHandler<HTMLDivElement> | undefined;
|
|
235
|
+
onMouseUp?: React.MouseEventHandler<HTMLDivElement> | undefined;
|
|
236
|
+
onMouseUpCapture?: React.MouseEventHandler<HTMLDivElement> | undefined;
|
|
237
|
+
onSelect?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
238
|
+
onSelectCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
|
|
239
|
+
onTouchCancel?: React.TouchEventHandler<HTMLDivElement> | undefined;
|
|
240
|
+
onTouchCancelCapture?: React.TouchEventHandler<HTMLDivElement> | undefined;
|
|
241
|
+
onTouchEnd?: React.TouchEventHandler<HTMLDivElement> | undefined;
|
|
242
|
+
onTouchEndCapture?: React.TouchEventHandler<HTMLDivElement> | undefined;
|
|
243
|
+
onTouchMove?: React.TouchEventHandler<HTMLDivElement> | undefined;
|
|
244
|
+
onTouchMoveCapture?: React.TouchEventHandler<HTMLDivElement> | undefined;
|
|
245
|
+
onTouchStart?: React.TouchEventHandler<HTMLDivElement> | undefined;
|
|
246
|
+
onTouchStartCapture?: React.TouchEventHandler<HTMLDivElement> | undefined;
|
|
247
|
+
onPointerDown?: React.PointerEventHandler<HTMLDivElement> | undefined;
|
|
248
|
+
onPointerDownCapture?: React.PointerEventHandler<HTMLDivElement> | undefined;
|
|
249
|
+
onPointerMove?: React.PointerEventHandler<HTMLDivElement> | undefined;
|
|
250
|
+
onPointerMoveCapture?: React.PointerEventHandler<HTMLDivElement> | undefined;
|
|
251
|
+
onPointerUp?: React.PointerEventHandler<HTMLDivElement> | undefined;
|
|
252
|
+
onPointerUpCapture?: React.PointerEventHandler<HTMLDivElement> | undefined;
|
|
253
|
+
onPointerCancel?: React.PointerEventHandler<HTMLDivElement> | undefined;
|
|
254
|
+
onPointerCancelCapture?: React.PointerEventHandler<HTMLDivElement> | undefined;
|
|
255
|
+
onPointerEnter?: React.PointerEventHandler<HTMLDivElement> | undefined;
|
|
256
|
+
onPointerLeave?: React.PointerEventHandler<HTMLDivElement> | undefined;
|
|
257
|
+
onPointerOver?: React.PointerEventHandler<HTMLDivElement> | undefined;
|
|
258
|
+
onPointerOverCapture?: React.PointerEventHandler<HTMLDivElement> | undefined;
|
|
259
|
+
onPointerOut?: React.PointerEventHandler<HTMLDivElement> | undefined;
|
|
260
|
+
onPointerOutCapture?: React.PointerEventHandler<HTMLDivElement> | undefined;
|
|
261
|
+
onGotPointerCapture?: React.PointerEventHandler<HTMLDivElement> | undefined;
|
|
262
|
+
onGotPointerCaptureCapture?: React.PointerEventHandler<HTMLDivElement> | undefined;
|
|
263
|
+
onLostPointerCapture?: React.PointerEventHandler<HTMLDivElement> | undefined;
|
|
264
|
+
onLostPointerCaptureCapture?: React.PointerEventHandler<HTMLDivElement> | undefined;
|
|
265
|
+
onScroll?: React.UIEventHandler<HTMLDivElement> | undefined;
|
|
266
|
+
onScrollCapture?: React.UIEventHandler<HTMLDivElement> | undefined;
|
|
267
|
+
onWheel?: React.WheelEventHandler<HTMLDivElement> | undefined;
|
|
268
|
+
onWheelCapture?: React.WheelEventHandler<HTMLDivElement> | undefined;
|
|
269
|
+
onAnimationStart?: React.AnimationEventHandler<HTMLDivElement> | undefined;
|
|
270
|
+
onAnimationStartCapture?: React.AnimationEventHandler<HTMLDivElement> | undefined;
|
|
271
|
+
onAnimationEnd?: React.AnimationEventHandler<HTMLDivElement> | undefined;
|
|
272
|
+
onAnimationEndCapture?: React.AnimationEventHandler<HTMLDivElement> | undefined;
|
|
273
|
+
onAnimationIteration?: React.AnimationEventHandler<HTMLDivElement> | undefined;
|
|
274
|
+
onAnimationIterationCapture?: React.AnimationEventHandler<HTMLDivElement> | undefined;
|
|
275
|
+
onTransitionEnd?: React.TransitionEventHandler<HTMLDivElement> | undefined;
|
|
276
|
+
onTransitionEndCapture?: React.TransitionEventHandler<HTMLDivElement> | undefined;
|
|
277
|
+
ref?: React.LegacyRef<HTMLDivElement> | undefined;
|
|
278
|
+
key?: React.Key | null | undefined;
|
|
279
|
+
}>) => import("react/jsx-runtime").JSX.Element)[];
|
|
280
|
+
};
|
|
281
|
+
export default meta;
|
|
282
|
+
export declare const Sizes: {
|
|
283
|
+
name: string;
|
|
284
|
+
render: () => import("react/jsx-runtime").JSX.Element;
|
|
285
|
+
};
|
|
286
|
+
export declare const VerticalScroll: {
|
|
287
|
+
name: string;
|
|
288
|
+
render: () => import("react/jsx-runtime").JSX.Element;
|
|
289
|
+
};
|
|
290
|
+
export declare const HorizontalScroll: {
|
|
291
|
+
name: string;
|
|
292
|
+
render: () => import("react/jsx-runtime").JSX.Element;
|
|
293
|
+
};
|
|
294
|
+
export declare const DoubleScroll: {
|
|
295
|
+
name: string;
|
|
296
|
+
render: () => import("react/jsx-runtime").JSX.Element;
|
|
297
|
+
};
|
|
298
|
+
export declare const WithDropdownMenu: {
|
|
299
|
+
name: string;
|
|
300
|
+
render: () => import("react/jsx-runtime").JSX.Element;
|
|
301
|
+
};
|
|
@@ -42,6 +42,7 @@ export * from "./components/Toast/Toaster";
|
|
|
42
42
|
export * from "./components/Toast/useToast";
|
|
43
43
|
export * from "./components/Tree";
|
|
44
44
|
export * from "./components/FocusedScrollView/FocusedScrollView";
|
|
45
|
+
export * from "./components/ScrollArea/ScrollArea";
|
|
45
46
|
export * from "./components/RadioGroup/RadioGroup";
|
|
46
47
|
export * from "./components/Form";
|
|
47
48
|
export * from "./patterns/confirm-dialog/ConfirmDialog";
|
|
@@ -13,6 +13,7 @@ declare const meta: {
|
|
|
13
13
|
onOpenChange?: ((open: boolean) => void) | undefined;
|
|
14
14
|
title: string;
|
|
15
15
|
description?: string | undefined;
|
|
16
|
+
children?: React.ReactNode;
|
|
16
17
|
confirmLabel?: string | undefined;
|
|
17
18
|
cancelLabel?: string | undefined;
|
|
18
19
|
onConfirm?: (() => void) | undefined;
|
package/dist/index.d.ts
CHANGED
|
@@ -17,7 +17,7 @@ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
|
|
|
17
17
|
import * as ToastPrimitives from '@radix-ui/react-toast';
|
|
18
18
|
import { ToastProviderProps } from '@radix-ui/react-toast';
|
|
19
19
|
import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
|
|
20
|
-
import { FieldValues, UseFormReturn, DefaultValues, SubmitHandler, SubmitErrorHandler, Resolver, Mode, FieldPath, RegisterOptions, FieldPathValue } from 'react-hook-form';
|
|
20
|
+
import { FieldValues, UseFormReturn, DefaultValues, SubmitHandler, SubmitErrorHandler, FormState, Resolver, Mode, FieldPath, RegisterOptions, FieldPathValue } from 'react-hook-form';
|
|
21
21
|
import * as yup from 'yup';
|
|
22
22
|
import Button$1 from '@/components/Button/Button';
|
|
23
23
|
import { ClassValue } from 'clsx';
|
|
@@ -1166,6 +1166,44 @@ type FocusedScrollViewProps = {
|
|
|
1166
1166
|
};
|
|
1167
1167
|
declare const FocusedScrollView: React__default.FC<FocusedScrollViewProps>;
|
|
1168
1168
|
|
|
1169
|
+
type ScrollbarSize = "m" | "s" | "xs";
|
|
1170
|
+
interface ScrollAreaProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
1171
|
+
/**
|
|
1172
|
+
* Scrollbar thickness.
|
|
1173
|
+
* - `m` — 12 px (shows track border)
|
|
1174
|
+
* - `s` — 6 px (default, shows no track border)
|
|
1175
|
+
* - `xs` — 2 px (shows no track border)
|
|
1176
|
+
*/
|
|
1177
|
+
scrollbarSize?: ScrollbarSize;
|
|
1178
|
+
/**
|
|
1179
|
+
* Direction(s) the area can scroll.
|
|
1180
|
+
* Defaults to `"vertical"`.
|
|
1181
|
+
*/
|
|
1182
|
+
direction?: "vertical" | "horizontal" | "both";
|
|
1183
|
+
}
|
|
1184
|
+
/**
|
|
1185
|
+
* ScrollArea
|
|
1186
|
+
*
|
|
1187
|
+
* A thin wrapper that applies the design-system scrollbar style to any
|
|
1188
|
+
* scrollable container. Use `scrollbarSize` to pick the Figma size variant
|
|
1189
|
+
* and `direction` to control which axis scrolls.
|
|
1190
|
+
*
|
|
1191
|
+
* **Client usage:**
|
|
1192
|
+
* ```tsx
|
|
1193
|
+
* <ScrollArea className="max-h-[270px]">
|
|
1194
|
+
* {items.map(item => <div key={item.id}>{item.label}</div>)}
|
|
1195
|
+
* </ScrollArea>
|
|
1196
|
+
* ```
|
|
1197
|
+
*
|
|
1198
|
+
* For a double-scroll layout (two independent sections inside one dropdown),
|
|
1199
|
+
* wrap each section individually:
|
|
1200
|
+
* ```tsx
|
|
1201
|
+
* <ScrollArea className="max-h-[160px]">...section A items...</ScrollArea>
|
|
1202
|
+
* <ScrollArea className="max-h-[160px]">...section B items...</ScrollArea>
|
|
1203
|
+
* ```
|
|
1204
|
+
*/
|
|
1205
|
+
declare const ScrollArea: React.ForwardRefExoticComponent<ScrollAreaProps & React.RefAttributes<HTMLDivElement>>;
|
|
1206
|
+
|
|
1169
1207
|
declare const RadioGroup: React.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
1170
1208
|
declare const RadioGroupItem: React.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupItemProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
1171
1209
|
|
|
@@ -1184,6 +1222,7 @@ type FormProps<TFieldValues extends FieldValues> = Omit<FormHTMLAttributes<HTMLF
|
|
|
1184
1222
|
controllerRef?: React__default.MutableRefObject<FormController<TFieldValues> | null>;
|
|
1185
1223
|
onSubmit: SubmitHandler<TFieldValues>;
|
|
1186
1224
|
onInvalidSubmit?: SubmitErrorHandler<TFieldValues>;
|
|
1225
|
+
onFormStateChange?: (formState: FormState<TFieldValues>) => void;
|
|
1187
1226
|
resolver?: Resolver<TFieldValues>;
|
|
1188
1227
|
validationSchema?: yup.ObjectSchema<any>;
|
|
1189
1228
|
mode?: Mode;
|
|
@@ -1287,6 +1326,7 @@ type ConfirmDialogProps = {
|
|
|
1287
1326
|
onOpenChange?: (open: boolean) => void;
|
|
1288
1327
|
title: string;
|
|
1289
1328
|
description?: string;
|
|
1329
|
+
children?: React.ReactNode;
|
|
1290
1330
|
confirmLabel?: string;
|
|
1291
1331
|
cancelLabel?: string;
|
|
1292
1332
|
onConfirm?: () => void;
|
|
@@ -1788,4 +1828,4 @@ declare const srgbToHex: (color: string) => string;
|
|
|
1788
1828
|
*/
|
|
1789
1829
|
declare function getLucideIconNames(): Promise<string[]>;
|
|
1790
1830
|
|
|
1791
|
-
export { ActionButton, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, Avatar, AvatarGroup, type AvatarGroupProps, type AvatarProps, Button, type ButtonProps, Calendar, Checkbox, Collapsible, ConfirmDialog, type ConfirmDialogProps, type ControlledFormFactoryOptions, type CustomSliderProps, DataTable, type DataTableProps, DatePicker, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Dropdown, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, type DropdownProps, Field, FieldMessage, type FieldMessageProps, type FieldProps, FocusedScrollView, Footer, type FooterProps, type FooterVariant, Form, type FormController, FormDialog, type FormDialogAction, type FormDialogProps, type FormProps, Icon, Input, InputFilter, type InputFilterProps, type InputProps, Label, Loading, type MaskRule, MaskedTextInput, type MaskedTextInputProps, Menu, MenuItem, type MenuItemType, MenuLabel, type MenuOption, type MenuProps, MenuSeparator, Navbar, type NavbarProps, type NavbarVariant, NumberInput, type NumberInputProps, type OptionLike, type Options$1 as Options, OtpInput, OtpInputGroup, type OtpInputGroupProps, type OtpInputProps, PasswordInput, type PasswordInputProps, Popover, PopoverContent, PopoverTrigger, ProgressBar, RadioGroup, RadioGroupItem, Search, type SearchProps, Slider, type SliderProps, Switch, THEME_COLOR_KEYS, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, Text, TextArea, type TextAreaProps, TextInput, type ThemeColorKey, Toast$1 as Toast, ToastAction, type ToastActionElement, ToastClose, ToastDescription, type ToastProps, ToastProvider, ToastTitle, ToastViewport, Toaster, Tooltip, TooltipArrow, TooltipContent, TooltipProvider, TooltipSimple, TooltipTrigger, Tree, type TreeData, TreeItem, type TreeItemProps, type TreeProps, type UseControlledFormOptions, type UseOptionBridgeOptions, ValidationHintList, type ValidationHintListProps, type ValidationHintMode, type ValidationHintRule, type ValidationHintState, cn, createControlledForm, createYupResolver, getEndDateOfDay, getLucideIconNames, getStartDateOfDay, getStartEndTimestampOfDay, getThemeColor, getThemeColors, getTimestampUTC, reducer, resloveTimestamp, srgbToHex, toast, useControlledForm, useOptionBridge, usePrevious, useToast };
|
|
1831
|
+
export { ActionButton, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, Avatar, AvatarGroup, type AvatarGroupProps, type AvatarProps, Button, type ButtonProps, Calendar, Checkbox, Collapsible, ConfirmDialog, type ConfirmDialogProps, type ControlledFormFactoryOptions, type CustomSliderProps, DataTable, type DataTableProps, DatePicker, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Dropdown, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, type DropdownProps, Field, FieldMessage, type FieldMessageProps, type FieldProps, FocusedScrollView, Footer, type FooterProps, type FooterVariant, Form, type FormController, FormDialog, type FormDialogAction, type FormDialogProps, type FormProps, Icon, Input, InputFilter, type InputFilterProps, type InputProps, Label, Loading, type MaskRule, MaskedTextInput, type MaskedTextInputProps, Menu, MenuItem, type MenuItemType, MenuLabel, type MenuOption, type MenuProps, MenuSeparator, Navbar, type NavbarProps, type NavbarVariant, NumberInput, type NumberInputProps, type OptionLike, type Options$1 as Options, OtpInput, OtpInputGroup, type OtpInputGroupProps, type OtpInputProps, PasswordInput, type PasswordInputProps, Popover, PopoverContent, PopoverTrigger, ProgressBar, RadioGroup, RadioGroupItem, ScrollArea, type ScrollAreaProps, type ScrollbarSize, Search, type SearchProps, Slider, type SliderProps, Switch, THEME_COLOR_KEYS, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, Text, TextArea, type TextAreaProps, TextInput, type ThemeColorKey, Toast$1 as Toast, ToastAction, type ToastActionElement, ToastClose, ToastDescription, type ToastProps, ToastProvider, ToastTitle, ToastViewport, Toaster, Tooltip, TooltipArrow, TooltipContent, TooltipProvider, TooltipSimple, TooltipTrigger, Tree, type TreeData, TreeItem, type TreeItemProps, type TreeProps, type UseControlledFormOptions, type UseOptionBridgeOptions, ValidationHintList, type ValidationHintListProps, type ValidationHintMode, type ValidationHintRule, type ValidationHintState, cn, createControlledForm, createYupResolver, getEndDateOfDay, getLucideIconNames, getStartDateOfDay, getStartEndTimestampOfDay, getThemeColor, getThemeColors, getTimestampUTC, reducer, resloveTimestamp, srgbToHex, toast, useControlledForm, useOptionBridge, usePrevious, useToast };
|
package/dist/index.js
CHANGED
|
@@ -44,6 +44,7 @@ export * from "./components/Toast/Toaster";
|
|
|
44
44
|
export * from "./components/Toast/useToast";
|
|
45
45
|
export * from "./components/Tree";
|
|
46
46
|
export * from "./components/FocusedScrollView/FocusedScrollView";
|
|
47
|
+
export * from "./components/ScrollArea/ScrollArea";
|
|
47
48
|
export * from "./components/RadioGroup/RadioGroup";
|
|
48
49
|
export * from "./components/Form";
|
|
49
50
|
// Patterns
|
|
@@ -5,7 +5,7 @@ import * as yup from "yup";
|
|
|
5
5
|
import { AlertDialog, AlertDialogContent, AlertDialogHeader, AlertDialogTitle, AlertDialogDescription, AlertDialogFooter, AlertDialogAction, AlertDialogCancel, AlertDialogTrigger, } from "@/components/AlertDialog/AlertDialog";
|
|
6
6
|
import { useControlledForm, Field } from "@/components/Form";
|
|
7
7
|
import { TextInput } from "@/components/TextInput/TextInput";
|
|
8
|
-
export const ConfirmDialog = ({ open, onOpenChange, title, description, confirmLabel = "Confirm", cancelLabel = "Cancel", onConfirm, onCancel, onClose, trigger, typeToConfirm, hideCancelButton = false, testId, cancelClassName, confirmClassName, }) => {
|
|
8
|
+
export const ConfirmDialog = ({ open, onOpenChange, title, description, children, confirmLabel = "Confirm", cancelLabel = "Cancel", onConfirm, onCancel, onClose, trigger, typeToConfirm, hideCancelButton = false, testId, cancelClassName, confirmClassName, }) => {
|
|
9
9
|
const formId = React.useId();
|
|
10
10
|
const requiresInput = !!typeToConfirm;
|
|
11
11
|
const validationSchema = React.useMemo(() => yup.object({
|
|
@@ -33,7 +33,7 @@ export const ConfirmDialog = ({ open, onOpenChange, title, description, confirmL
|
|
|
33
33
|
onCancel === null || onCancel === void 0 ? void 0 : onCancel();
|
|
34
34
|
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
35
35
|
};
|
|
36
|
-
return (_jsxs(AlertDialog, { open: open, onOpenChange: handleOpenChange, children: [trigger && _jsx(AlertDialogTrigger, { asChild: true, children: trigger }), _jsxs(AlertDialogContent, { "data-testid": testId, children: [_jsxs(AlertDialogHeader, { children: [_jsx(AlertDialogTitle, { "data-testid": testId && `${testId}-title`, children: title }), description && (_jsx(AlertDialogDescription, { "data-testid": testId && `${testId}-description`, children: description }))] }), requiresInput && (_jsxs(FormRoot, { id: formId, className: "flex flex-col gap-4 w-full", onSubmit: () => onConfirm === null || onConfirm === void 0 ? void 0 : onConfirm(), children: [_jsxs("p", { className: "typography-small1 text-text-contrast-max", children: ["Type \u201C", typeToConfirm, "\u201D to proceed."] }), _jsx(Field, { name: "confirmInput", component: TextInput, componentProps: {
|
|
36
|
+
return (_jsxs(AlertDialog, { open: open, onOpenChange: handleOpenChange, children: [trigger && _jsx(AlertDialogTrigger, { asChild: true, children: trigger }), _jsxs(AlertDialogContent, { "data-testid": testId, children: [_jsxs(AlertDialogHeader, { children: [_jsx(AlertDialogTitle, { "data-testid": testId && `${testId}-title`, children: title }), description && (_jsx(AlertDialogDescription, { "data-testid": testId && `${testId}-description`, children: description }))] }), children, requiresInput && (_jsxs(FormRoot, { id: formId, className: "flex flex-col gap-4 w-full", onSubmit: () => onConfirm === null || onConfirm === void 0 ? void 0 : onConfirm(), children: [_jsxs("p", { className: "typography-small1 text-text-contrast-max", children: ["Type \u201C", typeToConfirm, "\u201D to proceed."] }), _jsx(Field, { name: "confirmInput", component: TextInput, componentProps: {
|
|
37
37
|
label: "Type to confirm",
|
|
38
38
|
required: true,
|
|
39
39
|
hasClearIcon: true,
|
|
@@ -5,6 +5,6 @@ import Button from "@/components/Button/Button";
|
|
|
5
5
|
export const FormDialog = ({ open, onOpenChange, title, description, children, trigger, confirmAction, cancelAction, extraAction, scrollable = false, className, formId, testId, }) => {
|
|
6
6
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
7
7
|
const hasFooter = confirmAction || cancelAction || extraAction;
|
|
8
|
-
return (_jsxs(Dialog, { open: open, onOpenChange: onOpenChange, children: [trigger && _jsx(DialogTrigger, { asChild: true, children: trigger }), _jsxs(DialogContent, { className: className, "data-testid": testId, children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { "data-testid": testId && `${testId}-title`, children: title }), description && (_jsx(DialogDescription, { "data-testid": testId && `${testId}-description`, children: description }))] }), children && (_jsx(DialogBody, { scrollable: scrollable, children: children })), hasFooter && (_jsxs(DialogFooter, { className: extraAction ? "justify-between" : undefined, children: [extraAction && (_jsx(Button, { type: (_a = extraAction.type) !== null && _a !== void 0 ? _a : "button", variant: (_b = extraAction.variant) !== null && _b !== void 0 ? _b : "outline", color: (_c = extraAction.color) !== null && _c !== void 0 ? _c : "secondary", fullwidth: false, disabled: extraAction.disabled, isLoading: extraAction.isLoading, onClick: extraAction.onClick, className: extraAction.className, "data-testid": testId && `${testId}-extra-button`, children: extraAction.label })), _jsxs("div", { className: "flex items-center gap-4", children: [cancelAction && (_jsx(Button, { type: (_d = cancelAction.type) !== null && _d !== void 0 ? _d : "button", variant: (_e = cancelAction.variant) !== null && _e !== void 0 ? _e : "outline", color: (_f = cancelAction.color) !== null && _f !== void 0 ? _f : "primary", fullwidth: false, disabled: cancelAction.disabled, isLoading: cancelAction.isLoading, onClick: cancelAction.onClick, className: cancelAction.className, "data-testid": testId && `${testId}-cancel-button`, children: cancelAction.label })), confirmAction && (_jsx(Button, { type: formId ? "submit" : (_g = confirmAction.type) !== null && _g !== void 0 ? _g : "button", form: formId, variant: (_h = confirmAction.variant) !== null && _h !== void 0 ? _h : "solid", color: (_j = confirmAction.color) !== null && _j !== void 0 ? _j : "primary", fullwidth: false, disabled: confirmAction.disabled, isLoading: confirmAction.isLoading, onClick: confirmAction.onClick, className: confirmAction.className, "data-testid": testId && `${testId}-confirm-button`, children: confirmAction.label }))] })] }))] })] }));
|
|
8
|
+
return (_jsxs(Dialog, { open: open, onOpenChange: onOpenChange, children: [trigger && _jsx(DialogTrigger, { asChild: true, children: trigger }), _jsxs(DialogContent, { className: className, "data-testid": testId, children: [_jsxs(DialogHeader, { children: [title && (_jsx(DialogTitle, { "data-testid": testId && `${testId}-title`, children: title })), description && (_jsx(DialogDescription, { "data-testid": testId && `${testId}-description`, children: description }))] }), children && (_jsx(DialogBody, { scrollable: scrollable, children: children })), hasFooter && (_jsxs(DialogFooter, { className: extraAction ? "justify-between" : undefined, children: [extraAction && (_jsx(Button, { type: (_a = extraAction.type) !== null && _a !== void 0 ? _a : "button", variant: (_b = extraAction.variant) !== null && _b !== void 0 ? _b : "outline", color: (_c = extraAction.color) !== null && _c !== void 0 ? _c : "secondary", fullwidth: false, disabled: extraAction.disabled, isLoading: extraAction.isLoading, onClick: extraAction.onClick, className: extraAction.className, "data-testid": testId && `${testId}-extra-button`, children: extraAction.label })), _jsxs("div", { className: "flex items-center gap-4", children: [cancelAction && (_jsx(Button, { type: (_d = cancelAction.type) !== null && _d !== void 0 ? _d : "button", variant: (_e = cancelAction.variant) !== null && _e !== void 0 ? _e : "outline", color: (_f = cancelAction.color) !== null && _f !== void 0 ? _f : "primary", fullwidth: false, disabled: cancelAction.disabled, isLoading: cancelAction.isLoading, onClick: cancelAction.onClick, className: cancelAction.className, "data-testid": testId && `${testId}-cancel-button`, children: cancelAction.label })), confirmAction && (_jsx(Button, { type: formId ? "submit" : (_g = confirmAction.type) !== null && _g !== void 0 ? _g : "button", form: formId, variant: (_h = confirmAction.variant) !== null && _h !== void 0 ? _h : "solid", color: (_j = confirmAction.color) !== null && _j !== void 0 ? _j : "primary", fullwidth: false, disabled: confirmAction.disabled, isLoading: confirmAction.isLoading, onClick: confirmAction.onClick, className: confirmAction.className, "data-testid": testId && `${testId}-confirm-button`, children: confirmAction.label }))] })] }))] })] }));
|
|
9
9
|
};
|
|
10
10
|
FormDialog.displayName = "FormDialog";
|