@jakubmazanec/ui 0.1.6 → 0.1.7-unstable.5350d526
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 +4 -1
- package/build/components/Button.d.ts +6 -16
- package/build/components/Button.js +41 -43
- package/build/components/Button.js.map +2 -2
- package/build/components/Card.d.ts +6 -10
- package/build/components/Card.js +17 -14
- package/build/components/Card.js.map +2 -2
- package/build/components/Checkbox.d.ts +6 -15
- package/build/components/Checkbox.js +39 -40
- package/build/components/Checkbox.js.map +2 -2
- package/build/components/CheckboxField.js +3 -3
- package/build/components/CheckboxField.js.map +2 -2
- package/build/components/Combobox.d.ts +9 -6
- package/build/components/Combobox.js +106 -107
- package/build/components/Combobox.js.map +2 -2
- package/build/components/ComboboxOption.d.ts +7 -14
- package/build/components/ComboboxOption.js +22 -24
- package/build/components/ComboboxOption.js.map +2 -2
- package/build/components/ComponentRef.d.ts +2 -0
- package/build/components/ComponentRef.js +2 -0
- package/build/components/ComponentRef.js.map +7 -0
- package/build/components/Container.d.ts +7 -16
- package/build/components/Container.js +19 -21
- package/build/components/Container.js.map +2 -2
- package/build/components/Description.d.ts +7 -11
- package/build/components/Description.js +18 -14
- package/build/components/Description.js.map +2 -2
- package/build/components/Dialog.d.ts +7 -15
- package/build/components/Dialog.js +28 -29
- package/build/components/Dialog.js.map +2 -2
- package/build/components/DialogPanel.d.ts +7 -11
- package/build/components/DialogPanel.js +19 -15
- package/build/components/DialogPanel.js.map +2 -2
- package/build/components/DialogTitle.d.ts +7 -11
- package/build/components/DialogTitle.js +18 -14
- package/build/components/DialogTitle.js.map +2 -2
- package/build/components/Error.d.ts +7 -11
- package/build/components/Error.js +24 -21
- package/build/components/Error.js.map +2 -2
- package/build/components/Field.d.ts +7 -6
- package/build/components/Field.js +25 -19
- package/build/components/Field.js.map +2 -2
- package/build/components/Fieldset.d.ts +7 -13
- package/build/components/Fieldset.js +20 -15
- package/build/components/Fieldset.js.map +2 -2
- package/build/components/Form.d.ts +7 -12
- package/build/components/Form.js +24 -19
- package/build/components/Form.js.map +2 -2
- package/build/components/Icon.d.ts +7 -15
- package/build/components/Icon.js +28 -30
- package/build/components/Icon.js.map +2 -2
- package/build/components/Input.d.ts +6 -13
- package/build/components/Input.js +59 -61
- package/build/components/Input.js.map +2 -2
- package/build/components/Label.d.ts +7 -11
- package/build/components/Label.js +18 -14
- package/build/components/Label.js.map +2 -2
- package/build/components/Legend.d.ts +7 -11
- package/build/components/Legend.js +18 -14
- package/build/components/Legend.js.map +2 -2
- package/build/components/Listbox.d.ts +9 -6
- package/build/components/Listbox.js +170 -172
- package/build/components/Listbox.js.map +2 -2
- package/build/components/ListboxOption.d.ts +7 -14
- package/build/components/ListboxOption.js +22 -24
- package/build/components/ListboxOption.js.map +2 -2
- package/build/components/Menu.d.ts +9 -11
- package/build/components/Menu.js +18 -14
- package/build/components/Menu.js.map +2 -2
- package/build/components/MenuButton.d.ts +7 -13
- package/build/components/MenuButton.js +19 -20
- package/build/components/MenuButton.js.map +2 -2
- package/build/components/MenuHeading.d.ts +7 -11
- package/build/components/MenuHeading.js +18 -14
- package/build/components/MenuHeading.js.map +2 -2
- package/build/components/MenuItem.d.ts +7 -13
- package/build/components/MenuItem.js +20 -15
- package/build/components/MenuItem.js.map +2 -2
- package/build/components/MenuItems.d.ts +7 -12
- package/build/components/MenuItems.js +20 -21
- package/build/components/MenuItems.js.map +2 -2
- package/build/components/MenuSection.d.ts +7 -11
- package/build/components/MenuSection.js +18 -14
- package/build/components/MenuSection.js.map +2 -2
- package/build/components/MenuSeparator.d.ts +7 -11
- package/build/components/MenuSeparator.js +18 -14
- package/build/components/MenuSeparator.js.map +2 -2
- package/build/components/Popover.d.ts +7 -11
- package/build/components/Popover.js +18 -14
- package/build/components/Popover.js.map +2 -2
- package/build/components/PopoverBackdrop.d.ts +7 -11
- package/build/components/PopoverBackdrop.js +18 -14
- package/build/components/PopoverBackdrop.js.map +2 -2
- package/build/components/PopoverButton.d.ts +7 -14
- package/build/components/PopoverButton.js +20 -21
- package/build/components/PopoverButton.js.map +2 -2
- package/build/components/PopoverGroup.d.ts +7 -11
- package/build/components/PopoverGroup.js +18 -14
- package/build/components/PopoverGroup.js.map +2 -2
- package/build/components/PopoverPanel.d.ts +7 -13
- package/build/components/PopoverPanel.js +21 -22
- package/build/components/PopoverPanel.js.map +2 -2
- package/build/components/Radio.d.ts +6 -12
- package/build/components/Radio.js +19 -21
- package/build/components/Radio.js.map +2 -2
- package/build/components/RadioField.d.ts +2 -2
- package/build/components/RadioField.js.map +2 -2
- package/build/components/RadioGroup.d.ts +7 -6
- package/build/components/RadioGroup.js +52 -53
- package/build/components/RadioGroup.js.map +2 -2
- package/build/components/Table.d.ts +7 -11
- package/build/components/Table.js +16 -13
- package/build/components/Table.js.map +2 -2
- package/build/components/TableBody.d.ts +7 -11
- package/build/components/TableBody.js +16 -13
- package/build/components/TableBody.js.map +2 -2
- package/build/components/TableCaption.d.ts +7 -11
- package/build/components/TableCaption.js +15 -17
- package/build/components/TableCaption.js.map +2 -2
- package/build/components/TableCell.d.ts +7 -11
- package/build/components/TableCell.js +16 -13
- package/build/components/TableCell.js.map +2 -2
- package/build/components/TableFoot.d.ts +7 -11
- package/build/components/TableFoot.js +17 -13
- package/build/components/TableFoot.js.map +2 -2
- package/build/components/TableHead.d.ts +7 -11
- package/build/components/TableHead.js +16 -13
- package/build/components/TableHead.js.map +2 -2
- package/build/components/TableHeader.d.ts +7 -11
- package/build/components/TableHeader.js +16 -13
- package/build/components/TableHeader.js.map +2 -2
- package/build/components/TableRow.d.ts +7 -11
- package/build/components/TableRow.js +16 -13
- package/build/components/TableRow.js.map +2 -2
- package/build/components/Text.d.ts +7 -13
- package/build/components/Text.js +16 -18
- package/build/components/Text.js.map +2 -2
- package/build/components/Textarea.d.ts +6 -12
- package/build/components/Textarea.js +36 -38
- package/build/components/Textarea.js.map +2 -2
- package/build/components/internals/{fieldContext.d.ts → FieldContext.d.ts} +1 -1
- package/build/components/internals/FieldContext.js +4 -0
- package/build/components/internals/{fieldContext.js.map → FieldContext.js.map} +2 -2
- package/build/components/internals/{fieldNameContext.d.ts → FieldNameContext.d.ts} +1 -1
- package/build/components/internals/FieldNameContext.js +4 -0
- package/build/components/internals/{fieldNameContext.js.map → FieldNameContext.js.map} +2 -2
- package/build/components/internals/FormIdContext.d.ts +1 -0
- package/build/components/internals/FormIdContext.js +4 -0
- package/build/components/internals/{formIdContext.js.map → FormIdContext.js.map} +2 -2
- package/build/components/internals/useFormId.js +2 -2
- package/build/components/internals/useFormId.js.map +1 -1
- package/build/components/internals.d.ts +3 -4
- package/build/components/internals.js +3 -4
- package/build/components/internals.js.map +2 -2
- package/build/components/useField.js +2 -2
- package/build/components/useField.js.map +1 -1
- package/build/components/useFieldName.js +2 -2
- package/build/components/useFieldName.js.map +1 -1
- package/package.json +9 -9
- package/source/components/Button.tsx +51 -54
- package/source/components/Card.ts +19 -18
- package/source/components/Checkbox.tsx +50 -52
- package/source/components/CheckboxField.tsx +5 -5
- package/source/components/Combobox.tsx +190 -191
- package/source/components/ComboboxOption.tsx +42 -51
- package/source/components/ComponentRef.ts +3 -0
- package/source/components/Container.ts +28 -33
- package/source/components/Description.tsx +28 -31
- package/source/components/Dialog.tsx +46 -50
- package/source/components/DialogPanel.tsx +29 -32
- package/source/components/DialogTitle.tsx +28 -31
- package/source/components/Error.tsx +37 -37
- package/source/components/Field.tsx +57 -58
- package/source/components/Fieldset.tsx +30 -32
- package/source/components/Form.tsx +42 -40
- package/source/components/Icon.tsx +51 -56
- package/source/components/Input.tsx +80 -84
- package/source/components/Label.tsx +28 -31
- package/source/components/Legend.tsx +28 -31
- package/source/components/Listbox.tsx +270 -271
- package/source/components/ListboxOption.tsx +42 -51
- package/source/components/Menu.tsx +27 -26
- package/source/components/MenuButton.tsx +30 -38
- package/source/components/MenuHeading.tsx +28 -31
- package/source/components/MenuItem.tsx +30 -32
- package/source/components/MenuItems.tsx +32 -40
- package/source/components/MenuSection.tsx +28 -31
- package/source/components/MenuSeparator.tsx +30 -31
- package/source/components/Popover.tsx +28 -31
- package/source/components/PopoverBackdrop.tsx +30 -31
- package/source/components/PopoverButton.tsx +35 -41
- package/source/components/PopoverGroup.tsx +28 -31
- package/source/components/PopoverPanel.tsx +35 -43
- package/source/components/Radio.tsx +40 -40
- package/source/components/RadioField.tsx +3 -4
- package/source/components/RadioGroup.tsx +92 -96
- package/source/components/Table.ts +24 -24
- package/source/components/TableBody.ts +24 -24
- package/source/components/TableCaption.ts +24 -29
- package/source/components/TableCell.ts +24 -24
- package/source/components/TableFoot.ts +25 -24
- package/source/components/TableHead.ts +24 -24
- package/source/components/TableHeader.ts +24 -24
- package/source/components/TableRow.ts +24 -24
- package/source/components/Text.ts +25 -30
- package/source/components/Textarea.tsx +46 -49
- package/source/components/internals/{fieldContext.ts → FieldContext.ts} +1 -1
- package/source/components/internals/{fieldNameContext.ts → FieldNameContext.ts} +1 -1
- package/source/components/internals/FormIdContext.ts +3 -0
- package/source/components/internals/useFormId.ts +2 -2
- package/source/components/internals.ts +3 -4
- package/source/components/useField.ts +2 -2
- package/source/components/useFieldName.ts +2 -2
- package/build/components/internals/fieldContext.js +0 -4
- package/build/components/internals/fieldNameContext.js +0 -4
- package/build/components/internals/formIdContext.d.ts +0 -1
- package/build/components/internals/formIdContext.js +0 -4
- package/build/components/internals/forwardRef.d.ts +0 -4
- package/build/components/internals/forwardRef.js +0 -6
- package/build/components/internals/forwardRef.js.map +0 -7
- package/source/components/internals/formIdContext.ts +0 -3
- package/source/components/internals/forwardRef.ts +0 -7
package/README.md
CHANGED
|
@@ -17,10 +17,13 @@ npm install @jakubmazanec/ui
|
|
|
17
17
|
⚠️ This is an [ESM](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c) package!
|
|
18
18
|
It cannot be required from a CommonJS module.
|
|
19
19
|
|
|
20
|
+
<!-- prerequisites -->
|
|
21
|
+
|
|
20
22
|
#### Prerequisites
|
|
21
23
|
|
|
22
|
-
- Node.js
|
|
24
|
+
- Node.js 22 or later
|
|
23
25
|
- TypeScript 5 or later
|
|
26
|
+
<!-- prerequisites -->
|
|
24
27
|
|
|
25
28
|
## Usage
|
|
26
29
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type ButtonProps as HeadlessButtonProps } from '@headlessui/react';
|
|
2
|
-
import { type ComponentPropsWithoutRef, type ElementType
|
|
2
|
+
import { type ComponentPropsWithoutRef, type ElementType } from 'react';
|
|
3
3
|
import { type ComponentProps, type ComponentTheme } from '../theme/internals.js';
|
|
4
|
+
import { type ComponentRef } from './ComponentRef.js';
|
|
4
5
|
export declare const useButtonTheme: {
|
|
5
6
|
componentThemeName: "Button";
|
|
6
7
|
themeDefinition: {
|
|
@@ -15,7 +16,8 @@ export declare const useButtonTheme: {
|
|
|
15
16
|
readonly size: "small" | "medium" | "large";
|
|
16
17
|
readonly disabled: boolean;
|
|
17
18
|
}) => (baseClassName?: import("../theme/internals.js").ClassName, overrideClassName?: import("../theme/internals.js").ClassName) => string);
|
|
18
|
-
|
|
19
|
+
declare const BUTTON_ELEMENT = "button";
|
|
20
|
+
export type ButtonProps<T extends ElementType> = ComponentProps<typeof useButtonTheme> & ComponentRef<T> & Omit<ComponentPropsWithoutRef<T>, 'type'> & {
|
|
19
21
|
as?: T | undefined;
|
|
20
22
|
submit?: boolean | undefined;
|
|
21
23
|
idle?: boolean | undefined;
|
|
@@ -23,18 +25,6 @@ export type ButtonProps<T extends ElementType> = ComponentProps<typeof useButton
|
|
|
23
25
|
className?: string | undefined;
|
|
24
26
|
children?: HeadlessButtonProps['children'] | undefined;
|
|
25
27
|
};
|
|
26
|
-
export declare
|
|
27
|
-
readonly variant: "text" | "solid" | "outline" | "invisible";
|
|
28
|
-
readonly size: "small" | "medium" | "large";
|
|
29
|
-
readonly disabled: boolean;
|
|
30
|
-
}>> & Omit<import("react").PropsWithoutRef<import("react").ComponentProps<T>>, "type"> & {
|
|
31
|
-
as?: T | undefined;
|
|
32
|
-
submit?: boolean | undefined;
|
|
33
|
-
idle?: boolean | undefined;
|
|
34
|
-
autoFocus?: boolean | undefined;
|
|
35
|
-
className?: string | undefined;
|
|
36
|
-
children?: HeadlessButtonProps["children"] | undefined;
|
|
37
|
-
} & {
|
|
38
|
-
ref?: Ref<HTMLElement> | undefined;
|
|
39
|
-
}) => React.ReactNode;
|
|
28
|
+
export declare function Button<T extends ElementType = typeof BUTTON_ELEMENT>({ variant, size, disabled, as, idle, autoFocus, submit, className, ref, children, ...rest }: ButtonProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
40
29
|
export declare const buttonTheme: ComponentTheme<typeof useButtonTheme>;
|
|
30
|
+
export {};
|
|
@@ -10,7 +10,6 @@ import {
|
|
|
10
10
|
createComponentTheme
|
|
11
11
|
} from "../theme/internals.js";
|
|
12
12
|
import { Icon } from "./Icon.js";
|
|
13
|
-
import { forwardRef } from "./internals.js";
|
|
14
13
|
import { Spinner } from "./Spinner.js";
|
|
15
14
|
export const useButtonTheme = createComponentTheme("Button", {
|
|
16
15
|
variants: {
|
|
@@ -20,50 +19,49 @@ export const useButtonTheme = createComponentTheme("Button", {
|
|
|
20
19
|
}
|
|
21
20
|
});
|
|
22
21
|
const BUTTON_ELEMENT = "button";
|
|
23
|
-
export
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
22
|
+
export function Button({
|
|
23
|
+
variant = "solid",
|
|
24
|
+
size = "medium",
|
|
25
|
+
disabled = false,
|
|
26
|
+
as = BUTTON_ELEMENT,
|
|
27
|
+
idle = true,
|
|
28
|
+
autoFocus = false,
|
|
29
|
+
submit = false,
|
|
30
|
+
className,
|
|
31
|
+
ref,
|
|
32
|
+
children,
|
|
33
|
+
...rest
|
|
34
|
+
}) {
|
|
35
|
+
let theme = useButtonTheme({ variant, size, disabled });
|
|
36
|
+
let props = {
|
|
37
|
+
as,
|
|
38
|
+
ref,
|
|
39
|
+
className: theme(disabled ? "pointer-events-none" : null, className),
|
|
40
|
+
disabled: disabled || submit && !idle,
|
|
41
|
+
autoFocus,
|
|
42
|
+
"data-component": "button",
|
|
34
43
|
...rest
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
as,
|
|
39
|
-
ref,
|
|
40
|
-
className: theme(disabled ? "pointer-events-none" : null, className),
|
|
41
|
-
disabled: disabled || submit && !idle,
|
|
42
|
-
autoFocus,
|
|
43
|
-
"data-component": "button",
|
|
44
|
-
...rest
|
|
45
|
-
};
|
|
46
|
-
if (as === BUTTON_ELEMENT) {
|
|
47
|
-
props.type = "button";
|
|
48
|
-
}
|
|
49
|
-
if (submit) {
|
|
50
|
-
props.type = "submit";
|
|
51
|
-
}
|
|
52
|
-
if (typeof children === "function") {
|
|
53
|
-
return /* @__PURE__ */ jsx(HeadlessButton, { ...props, children });
|
|
54
|
-
}
|
|
55
|
-
let enhancedChildren = Children.map(children, (child) => {
|
|
56
|
-
if (isValidElement(child) && (child.type === Icon || child.type === Spinner)) {
|
|
57
|
-
return cloneElement(child, { "data-icon": "" });
|
|
58
|
-
}
|
|
59
|
-
return child;
|
|
60
|
-
});
|
|
61
|
-
return /* @__PURE__ */ jsxs(HeadlessButton, { ...props, children: [
|
|
62
|
-
submit && !idle ? /* @__PURE__ */ jsx(Spinner, { "data-icon": true }) : null,
|
|
63
|
-
enhancedChildren
|
|
64
|
-
] });
|
|
44
|
+
};
|
|
45
|
+
if (as === BUTTON_ELEMENT) {
|
|
46
|
+
props.type = "button";
|
|
65
47
|
}
|
|
66
|
-
)
|
|
48
|
+
if (submit) {
|
|
49
|
+
props.type = "submit";
|
|
50
|
+
}
|
|
51
|
+
if (typeof children === "function") {
|
|
52
|
+
return /* @__PURE__ */ jsx(HeadlessButton, { ...props, children });
|
|
53
|
+
}
|
|
54
|
+
let enhancedChildren = Children.map(children, (child) => {
|
|
55
|
+
if (isValidElement(child) && (child.type === Icon || child.type === Spinner)) {
|
|
56
|
+
return cloneElement(child, { "data-icon": "" });
|
|
57
|
+
}
|
|
58
|
+
return child;
|
|
59
|
+
});
|
|
60
|
+
return /* @__PURE__ */ jsxs(HeadlessButton, { ...props, children: [
|
|
61
|
+
submit && !idle ? /* @__PURE__ */ jsx(Spinner, { "data-icon": true }) : null,
|
|
62
|
+
enhancedChildren
|
|
63
|
+
] });
|
|
64
|
+
}
|
|
67
65
|
export const buttonTheme = {
|
|
68
66
|
className: "rounded-2 flex items-center justify-center text-nowrap font-sans font-medium text-sm transition-colors",
|
|
69
67
|
variants: {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../source/components/Button.tsx"],
|
|
4
|
-
"sourcesContent": ["import {Button as HeadlessButton, type ButtonProps as HeadlessButtonProps} from '@headlessui/react';\nimport {\n Children,\n cloneElement,\n type ComponentPropsWithoutRef,\n type ElementType,\n isValidElement,\n
|
|
5
|
-
"mappings": ";
|
|
4
|
+
"sourcesContent": ["import {Button as HeadlessButton, type ButtonProps as HeadlessButtonProps} from '@headlessui/react';\nimport {\n Children,\n cloneElement,\n type ComponentPropsWithoutRef,\n type ElementType,\n isValidElement,\n} from 'react';\n\nimport {\n type ComponentProps,\n type ComponentTheme,\n createComponentTheme,\n} from '../theme/internals.js';\nimport {type ComponentRef} from './ComponentRef.js';\nimport {Icon} from './Icon.js';\nimport {Spinner} from './Spinner.js';\n\nexport const useButtonTheme = createComponentTheme('Button', {\n variants: {\n variant: ['solid', 'outline', 'text', 'invisible'],\n size: ['small', 'medium', 'large'],\n disabled: [true, false],\n },\n});\n\nconst BUTTON_ELEMENT = 'button';\n\nexport type ButtonProps<T extends ElementType> = ComponentProps<typeof useButtonTheme> &\n ComponentRef<T> &\n Omit<ComponentPropsWithoutRef<T>, 'type'> & {\n as?: T | undefined;\n submit?: boolean | undefined;\n idle?: boolean | undefined;\n autoFocus?: boolean | undefined;\n className?: string | undefined;\n // ref?: Ref<R> | undefined;\n children?: HeadlessButtonProps['children'] | undefined; // sadly, we cannot use `T`'s children type, because Headless UI always, if `children` is function, calls it with its own render props documented here: https://headlessui.com/react/button#using-render-props\n };\n\nexport function Button<T extends ElementType = typeof BUTTON_ELEMENT>({\n variant = 'solid',\n size = 'medium',\n disabled = false,\n as = BUTTON_ELEMENT as T,\n idle = true,\n autoFocus = false,\n submit = false,\n className,\n ref,\n children,\n ...rest\n}: ButtonProps<T>) {\n let theme = useButtonTheme({variant, size, disabled});\n\n let props: Record<string, unknown> = {\n as,\n ref,\n className: theme(disabled ? 'pointer-events-none' : null, className),\n disabled: disabled || (submit && !idle),\n autoFocus,\n 'data-component': 'button',\n ...rest,\n };\n\n if (as === BUTTON_ELEMENT) {\n props.type = 'button';\n }\n\n if (submit) {\n props.type = 'submit';\n }\n\n if (typeof children === 'function') {\n return <HeadlessButton {...props}>{children}</HeadlessButton>;\n }\n\n let enhancedChildren = Children.map(children, (child) => {\n if (isValidElement(child) && (child.type === Icon || child.type === Spinner)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- needed\n return cloneElement<any>(child, {'data-icon': ''});\n }\n\n return child;\n });\n\n return (\n <HeadlessButton {...props}>\n {submit && !idle ?\n <Spinner data-icon />\n : null}\n {enhancedChildren}\n </HeadlessButton>\n );\n}\n\nexport const buttonTheme: ComponentTheme<typeof useButtonTheme> = {\n className:\n 'rounded-2 flex items-center justify-center text-nowrap font-sans font-medium text-sm transition-colors',\n variants: {\n variant: {\n solid: 'text-white bg-neutral-900 hover:bg-neutral-800',\n outline: 'text-neutral-950 border-2 border-neutral-100 hover:border-neutral-200',\n text: 'text-neutral-950 border-2 border-transparent hover:border-neutral-200',\n invisible: 'cursor-default text-neutral-200 hover:text-neutral-600 select-none',\n },\n size: {\n small: 'text-sm leading-6 px-2.5 h-8 min-w-8 gap-x-2',\n medium: 'leading-6 px-2.5 h-9 min-w-9 gap-x-2',\n large: 'text-lg leading-6 px-3 h-10 min-w-10 gap-x-2',\n },\n disabled: {\n true: '',\n false: '',\n },\n },\n compoundVariants: [\n {\n variant: 'solid',\n size: 'small',\n className: 'px-3',\n },\n {\n variant: 'solid',\n size: 'medium',\n className: 'px-3',\n },\n {\n variant: 'solid',\n size: 'large',\n className: 'px-3.5',\n },\n {\n variant: 'invisible',\n size: 'small',\n className: 'text-xs px-2 h-5 min-w-5',\n },\n {\n variant: 'invisible',\n size: 'medium',\n className: 'px-2 h-6 min-w-6',\n },\n {\n variant: 'invisible',\n size: 'large',\n className: 'px-2 h-7 min-w-7',\n },\n {\n variant: 'solid',\n disabled: true,\n className: 'text-white bg-neutral-200 hover:bg-neutral-200',\n },\n {\n variant: 'outline',\n disabled: true,\n className: 'text-neutral-200 hover:border-neutral-100',\n },\n {\n variant: 'text',\n disabled: true,\n className: 'text-neutral-200 hover:border-transparent',\n },\n {\n variant: 'invisible',\n disabled: true,\n className: 'text-neutral-200 ',\n },\n ],\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,19 +1,15 @@
|
|
|
1
|
-
import { type ComponentPropsWithoutRef, type ElementType, type PropsWithChildren
|
|
1
|
+
import { type ComponentPropsWithoutRef, type ElementType, type PropsWithChildren } from 'react';
|
|
2
2
|
import { type ComponentProps, type ComponentTheme } from '../theme/internals.js';
|
|
3
|
+
import { type ComponentRef } from './ComponentRef.js';
|
|
3
4
|
export declare const useCardTheme: {
|
|
4
5
|
componentThemeName: "Card";
|
|
5
6
|
themeDefinition: undefined;
|
|
6
7
|
} & (() => (baseClassName?: import("../theme/internals.js").ClassName, overrideClassName?: import("../theme/internals.js").ClassName) => string);
|
|
7
|
-
|
|
8
|
+
declare const CARD_ELEMENT = "button";
|
|
9
|
+
export type CardProps<T extends ElementType> = ComponentProps<typeof useCardTheme> & ComponentPropsWithoutRef<T> & ComponentRef<T> & PropsWithChildren<{
|
|
8
10
|
as?: T | undefined;
|
|
9
11
|
className?: string;
|
|
10
12
|
}>;
|
|
11
|
-
export declare const Card: <T extends ElementType = "
|
|
12
|
-
as?: T | undefined;
|
|
13
|
-
className?: string;
|
|
14
|
-
} & {
|
|
15
|
-
children?: import("react").ReactNode | undefined;
|
|
16
|
-
} & {
|
|
17
|
-
ref?: Ref<HTMLElement> | undefined;
|
|
18
|
-
}) => React.ReactNode;
|
|
13
|
+
export declare const Card: <T extends ElementType = "button">({ as: Component, className, ref, children, ...rest }: CardProps<T>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
|
|
19
14
|
export declare const cardTheme: ComponentTheme<typeof useCardTheme>;
|
|
15
|
+
export {};
|
package/build/components/Card.js
CHANGED
|
@@ -5,21 +5,24 @@ import {
|
|
|
5
5
|
import {
|
|
6
6
|
createComponentTheme
|
|
7
7
|
} from "../theme/internals.js";
|
|
8
|
-
import { forwardRef } from "./internals.js";
|
|
9
8
|
export const useCardTheme = createComponentTheme("Card");
|
|
10
|
-
const CARD_ELEMENT = "
|
|
11
|
-
export const Card =
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
9
|
+
const CARD_ELEMENT = "button";
|
|
10
|
+
export const Card = ({
|
|
11
|
+
as: Component = CARD_ELEMENT,
|
|
12
|
+
className,
|
|
13
|
+
ref,
|
|
14
|
+
children,
|
|
15
|
+
...rest
|
|
16
|
+
}) => {
|
|
17
|
+
let theme = useCardTheme();
|
|
18
|
+
let props = {
|
|
19
|
+
ref,
|
|
20
|
+
className: theme(null, className),
|
|
21
|
+
"data-component": "card",
|
|
22
|
+
...rest
|
|
23
|
+
};
|
|
24
|
+
return createElement(Component, props, children);
|
|
25
|
+
};
|
|
23
26
|
export const cardTheme = {
|
|
24
27
|
className: "rounded-2 border border-neutral-100 p-4"
|
|
25
28
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../source/components/Card.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type ComponentPropsWithoutRef,\n createElement,\n type ElementType,\n type PropsWithChildren,\n
|
|
5
|
-
"mappings": ";AAAA;AAAA,EAEE;AAAA,
|
|
4
|
+
"sourcesContent": ["import {\n type ComponentPropsWithoutRef,\n createElement,\n type ElementType,\n type PropsWithChildren,\n} from 'react';\n\nimport {\n type ComponentProps,\n type ComponentTheme,\n createComponentTheme,\n} from '../theme/internals.js';\nimport {type ComponentRef} from './ComponentRef.js';\n\nexport const useCardTheme = createComponentTheme('Card');\n\nconst CARD_ELEMENT = 'button';\n\nexport type CardProps<T extends ElementType> = ComponentProps<typeof useCardTheme> &\n ComponentPropsWithoutRef<T> &\n ComponentRef<T> &\n PropsWithChildren<{\n as?: T | undefined;\n className?: string;\n }>;\n\nexport const Card = <T extends ElementType = typeof CARD_ELEMENT>({\n as: Component = CARD_ELEMENT as T,\n className,\n ref,\n children,\n ...rest\n}: CardProps<T>) => {\n let theme = useCardTheme();\n let props = {\n ref,\n className: theme(null, className),\n 'data-component': 'card',\n ...rest,\n };\n\n return createElement(Component, props, children);\n};\n\nexport const cardTheme: ComponentTheme<typeof useCardTheme> = {\n className: 'rounded-2 border border-neutral-100 p-4',\n};\n"],
|
|
5
|
+
"mappings": ";AAAA;AAAA,EAEE;AAAA,OAGK;AAEP;AAAA,EAGE;AAAA,OACK;AAGA,aAAM,eAAe,qBAAqB,MAAM;AAEvD,MAAM,eAAe;AAUd,aAAM,OAAO,CAA8C;AAAA,EAChE,IAAI,YAAY;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAoB;AAClB,MAAI,QAAQ,aAAa;AACzB,MAAI,QAAQ;AAAA,IACV;AAAA,IACA,WAAW,MAAM,MAAM,SAAS;AAAA,IAChC,kBAAkB;AAAA,IAClB,GAAG;AAAA,EACL;AAEA,SAAO,cAAc,WAAW,OAAO,QAAQ;AACjD;AAEO,aAAM,YAAiD;AAAA,EAC5D,WAAW;AACb;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { type ComponentPropsWithoutRef, type ElementType
|
|
1
|
+
import { type ComponentPropsWithoutRef, type ElementType } from 'react';
|
|
2
2
|
import { type ComponentProps, type ComponentTheme } from '../theme/internals.js';
|
|
3
|
+
import { type ComponentRef } from './ComponentRef.js';
|
|
3
4
|
export declare const useCheckboxTheme: {
|
|
4
5
|
componentThemeName: "Checkbox";
|
|
5
6
|
themeDefinition: {
|
|
@@ -14,7 +15,8 @@ export declare const useCheckboxTheme: {
|
|
|
14
15
|
icon: (baseClassName?: import("../theme/internals.js").ClassName, overrideClassName?: import("../theme/internals.js").ClassName) => string;
|
|
15
16
|
root: (baseClassName?: import("../theme/internals.js").ClassName, overrideClassName?: import("../theme/internals.js").ClassName) => string;
|
|
16
17
|
});
|
|
17
|
-
|
|
18
|
+
declare const CHECKBOX_ELEMENT = "span";
|
|
19
|
+
export type CheckboxProps<T extends ElementType> = ComponentProps<typeof useCheckboxTheme> & ComponentRef<T> & Omit<ComponentPropsWithoutRef<T>, 'onChange'> & {
|
|
18
20
|
as?: T | undefined;
|
|
19
21
|
checked?: boolean | undefined;
|
|
20
22
|
indeterminate?: boolean | undefined;
|
|
@@ -23,17 +25,6 @@ export type CheckboxProps<T extends ElementType> = ComponentProps<typeof useChec
|
|
|
23
25
|
className?: string;
|
|
24
26
|
onChange?: ((checked: boolean) => void) | undefined;
|
|
25
27
|
};
|
|
26
|
-
export declare const Checkbox: <T extends ElementType = "span">(
|
|
27
|
-
readonly disabled: boolean;
|
|
28
|
-
}>> & Omit<import("react").PropsWithoutRef<import("react").ComponentProps<T>>, "onChange"> & {
|
|
29
|
-
as?: T | undefined;
|
|
30
|
-
checked?: boolean | undefined;
|
|
31
|
-
indeterminate?: boolean | undefined;
|
|
32
|
-
autoFocus?: boolean | undefined;
|
|
33
|
-
name?: string;
|
|
34
|
-
className?: string;
|
|
35
|
-
onChange?: ((checked: boolean) => void) | undefined;
|
|
36
|
-
} & {
|
|
37
|
-
ref?: Ref<HTMLElement> | undefined;
|
|
38
|
-
}) => React.ReactNode;
|
|
28
|
+
export declare const Checkbox: <T extends ElementType = "span">({ disabled, as, checked, indeterminate, autoFocus, name, className, onChange, ref, ...rest }: CheckboxProps<T>) => import("react/jsx-runtime").JSX.Element;
|
|
39
29
|
export declare const checkboxTheme: ComponentTheme<typeof useCheckboxTheme>;
|
|
30
|
+
export {};
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
createComponentTheme
|
|
9
9
|
} from "../theme/internals.js";
|
|
10
10
|
import { Icon } from "./Icon.js";
|
|
11
|
-
import {
|
|
11
|
+
import { useFormId } from "./internals.js";
|
|
12
12
|
import { useField } from "./useField.js";
|
|
13
13
|
import { useFieldName } from "./useFieldName.js";
|
|
14
14
|
export const useCheckboxTheme = createComponentTheme("Checkbox", {
|
|
@@ -18,54 +18,53 @@ export const useCheckboxTheme = createComponentTheme("Checkbox", {
|
|
|
18
18
|
elements: ["root", "icon"]
|
|
19
19
|
});
|
|
20
20
|
const CHECKBOX_ELEMENT = "span";
|
|
21
|
-
export const Checkbox =
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
as,
|
|
43
|
-
ref,
|
|
44
|
-
form: formId,
|
|
45
|
-
name: field?.name ?? fieldName,
|
|
46
|
-
indeterminate,
|
|
47
|
-
autoFocus,
|
|
48
|
-
className: theme.root("relative", className),
|
|
49
|
-
"data-component": "checkbox",
|
|
50
|
-
...rest
|
|
51
|
-
};
|
|
52
|
-
return /* @__PURE__ */ jsx(HeadlessCheckbox, { ...props2, children: /* @__PURE__ */ jsx("span", { className: theme.icon(), children: /* @__PURE__ */ jsx(Icon, { name: "Check" }) }) });
|
|
53
|
-
}
|
|
54
|
-
let props = {
|
|
21
|
+
export const Checkbox = ({
|
|
22
|
+
disabled = false,
|
|
23
|
+
as = CHECKBOX_ELEMENT,
|
|
24
|
+
checked,
|
|
25
|
+
indeterminate,
|
|
26
|
+
autoFocus,
|
|
27
|
+
name,
|
|
28
|
+
className,
|
|
29
|
+
onChange,
|
|
30
|
+
ref,
|
|
31
|
+
...rest
|
|
32
|
+
}) => {
|
|
33
|
+
let theme = useCheckboxTheme({ disabled });
|
|
34
|
+
let fieldName = useFieldName();
|
|
35
|
+
let field = useField();
|
|
36
|
+
let formId = useFormId();
|
|
37
|
+
let handleChange = useCallback(() => {
|
|
38
|
+
onChange?.(!checked);
|
|
39
|
+
}, [checked, onChange]);
|
|
40
|
+
if (field || fieldName) {
|
|
41
|
+
let props2 = {
|
|
55
42
|
as,
|
|
56
43
|
ref,
|
|
57
|
-
|
|
58
|
-
name,
|
|
44
|
+
form: formId,
|
|
45
|
+
name: field?.name ?? fieldName,
|
|
59
46
|
indeterminate,
|
|
60
47
|
autoFocus,
|
|
61
48
|
className: theme.root("relative", className),
|
|
62
49
|
"data-component": "checkbox",
|
|
63
|
-
onChange: handleChange,
|
|
64
50
|
...rest
|
|
65
51
|
};
|
|
66
|
-
return /* @__PURE__ */ jsx(HeadlessCheckbox, { ...
|
|
52
|
+
return /* @__PURE__ */ jsx(HeadlessCheckbox, { ...props2, children: /* @__PURE__ */ jsx("span", { className: theme.icon(), children: /* @__PURE__ */ jsx(Icon, { name: "Check" }) }) });
|
|
67
53
|
}
|
|
68
|
-
|
|
54
|
+
let props = {
|
|
55
|
+
as,
|
|
56
|
+
ref,
|
|
57
|
+
checked: Boolean(checked),
|
|
58
|
+
name,
|
|
59
|
+
indeterminate,
|
|
60
|
+
autoFocus,
|
|
61
|
+
className: theme.root("relative", className),
|
|
62
|
+
"data-component": "checkbox",
|
|
63
|
+
onChange: handleChange,
|
|
64
|
+
...rest
|
|
65
|
+
};
|
|
66
|
+
return /* @__PURE__ */ jsx(HeadlessCheckbox, { ...props, children: /* @__PURE__ */ jsx("span", { className: theme.icon(), children: /* @__PURE__ */ jsx(Icon, { name: "Check" }) }) });
|
|
67
|
+
};
|
|
69
68
|
export const checkboxTheme = {
|
|
70
69
|
classNames: {
|
|
71
70
|
root: "group/checkbox inline-block size-5 cursor-pointer",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../source/components/Checkbox.tsx"],
|
|
4
|
-
"sourcesContent": ["import {\n Checkbox as HeadlessCheckbox,\n type CheckboxProps as HeadlessCheckboxProps,\n} from '@headlessui/react';\nimport {type ComponentPropsWithoutRef, type ElementType,
|
|
5
|
-
"mappings": ";
|
|
4
|
+
"sourcesContent": ["import {\n Checkbox as HeadlessCheckbox,\n type CheckboxProps as HeadlessCheckboxProps,\n} from '@headlessui/react';\nimport {type ComponentPropsWithoutRef, type ElementType, useCallback} from 'react';\n\nimport {\n type ComponentProps,\n type ComponentTheme,\n createComponentTheme,\n} from '../theme/internals.js';\nimport {type ComponentRef} from './ComponentRef.js';\nimport {Icon} from './Icon.js';\nimport {useFormId} from './internals.js';\nimport {useField} from './useField.js';\nimport {useFieldName} from './useFieldName.js';\n\nexport const useCheckboxTheme = createComponentTheme('Checkbox', {\n variants: {\n disabled: [true, false],\n },\n elements: ['root', 'icon'],\n});\n\nconst CHECKBOX_ELEMENT = 'span';\n\nexport type CheckboxProps<T extends ElementType> = ComponentProps<typeof useCheckboxTheme> &\n ComponentRef<T> &\n Omit<ComponentPropsWithoutRef<T>, 'onChange'> & {\n as?: T | undefined;\n checked?: boolean | undefined;\n indeterminate?: boolean | undefined;\n autoFocus?: boolean | undefined;\n name?: string;\n className?: string;\n onChange?: ((checked: boolean) => void) | undefined;\n };\n\nexport const Checkbox = <T extends ElementType = typeof CHECKBOX_ELEMENT>({\n disabled = false,\n as = CHECKBOX_ELEMENT as T,\n checked,\n indeterminate,\n autoFocus,\n name,\n className,\n onChange,\n ref,\n ...rest\n}: CheckboxProps<T>) => {\n let theme = useCheckboxTheme({disabled});\n let fieldName = useFieldName();\n let field = useField();\n let formId = useFormId();\n\n let handleChange = useCallback(() => {\n onChange?.(!checked);\n }, [checked, onChange]);\n\n if (field || fieldName) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- needed\n let props: HeadlessCheckboxProps<any> = {\n as,\n ref,\n form: formId,\n name: field?.name ?? fieldName,\n indeterminate,\n autoFocus,\n className: theme.root('relative', className),\n 'data-component': 'checkbox',\n ...rest,\n };\n\n return (\n <HeadlessCheckbox {...props}>\n <span className={theme.icon()}>\n <Icon name=\"Check\" />\n </span>\n </HeadlessCheckbox>\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- needed\n let props: HeadlessCheckboxProps<any> = {\n as,\n ref,\n checked: Boolean(checked),\n name,\n indeterminate,\n autoFocus,\n className: theme.root('relative', className),\n 'data-component': 'checkbox',\n onChange: handleChange,\n ...rest,\n };\n\n return (\n <HeadlessCheckbox {...props}>\n <span className={theme.icon()}>\n <Icon name=\"Check\" />\n </span>\n </HeadlessCheckbox>\n );\n};\n\nexport const checkboxTheme: ComponentTheme<typeof useCheckboxTheme> = {\n classNames: {\n root: 'group/checkbox inline-block size-5 cursor-pointer',\n icon: 'flex justify-content justify-item size-5 *:rounded-2 *:bg-white *:border-2 *:border-neutral-100 *:hover:border-neutral-200 *:shadow-inner *:transition-colors *:text-transparent *:hover:text-neutral-100 group-data-[checked]/checkbox:*:bg-neutral-950 group-data-[checked]/checkbox:*:border-neutral-950 group-data-[checked]/checkbox:*:text-white',\n },\n variants: {\n disabled: {\n true: {\n root: 'cursor-not-allowed',\n icon: '*:hover:text-transparent *:border-neutral-50 *:hover:border-neutral-50 group-data-[checked]/checkbox:*:bg-neutral-100 group-data-[checked]/checkbox:*:border-neutral-100 group-data-[checked]/checkbox:*:text-white',\n },\n false: {\n root: '',\n icon: '',\n },\n },\n },\n};\n"],
|
|
5
|
+
"mappings": ";AA4EU;AA5EV;AAAA,EACE,YAAY;AAAA,OAEP;AACP,SAAyD,mBAAkB;AAE3E;AAAA,EAGE;AAAA,OACK;AAEP,SAAQ,YAAW;AACnB,SAAQ,iBAAgB;AACxB,SAAQ,gBAAe;AACvB,SAAQ,oBAAmB;AAEpB,aAAM,mBAAmB,qBAAqB,YAAY;AAAA,EAC/D,UAAU;AAAA,IACR,UAAU,CAAC,MAAM,KAAK;AAAA,EACxB;AAAA,EACA,UAAU,CAAC,QAAQ,MAAM;AAC3B,CAAC;AAED,MAAM,mBAAmB;AAclB,aAAM,WAAW,CAAkD;AAAA,EACxE,WAAW;AAAA,EACX,KAAK;AAAA,EACL;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAwB;AACtB,MAAI,QAAQ,iBAAiB,EAAC,SAAQ,CAAC;AACvC,MAAI,YAAY,aAAa;AAC7B,MAAI,QAAQ,SAAS;AACrB,MAAI,SAAS,UAAU;AAEvB,MAAI,eAAe,YAAY,MAAM;AACnC,eAAW,CAAC,OAAO;AAAA,EACrB,GAAG,CAAC,SAAS,QAAQ,CAAC;AAEtB,MAAI,SAAS,WAAW;AAEtB,QAAIA,SAAoC;AAAA,MACtC;AAAA,MACA;AAAA,MACA,MAAM;AAAA,MACN,MAAM,OAAO,QAAQ;AAAA,MACrB;AAAA,MACA;AAAA,MACA,WAAW,MAAM,KAAK,YAAY,SAAS;AAAA,MAC3C,kBAAkB;AAAA,MAClB,GAAG;AAAA,IACL;AAEA,WACE,oBAAC,oBAAkB,GAAGA,QACpB,8BAAC,UAAK,WAAW,MAAM,KAAK,GAC1B,8BAAC,QAAK,MAAK,SAAQ,GACrB,GACF;AAAA,EAEJ;AAGA,MAAI,QAAoC;AAAA,IACtC;AAAA,IACA;AAAA,IACA,SAAS,QAAQ,OAAO;AAAA,IACxB;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW,MAAM,KAAK,YAAY,SAAS;AAAA,IAC3C,kBAAkB;AAAA,IAClB,UAAU;AAAA,IACV,GAAG;AAAA,EACL;AAEA,SACE,oBAAC,oBAAkB,GAAG,OACpB,8BAAC,UAAK,WAAW,MAAM,KAAK,GAC1B,8BAAC,QAAK,MAAK,SAAQ,GACrB,GACF;AAEJ;AAEO,aAAM,gBAAyD;AAAA,EACpE,YAAY;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA,UAAU;AAAA,IACR,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA,OAAO;AAAA,QACL,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;",
|
|
6
6
|
"names": ["props"]
|
|
7
7
|
}
|
|
@@ -4,15 +4,15 @@ import { Field as HeadlessField } from "@headlessui/react";
|
|
|
4
4
|
import {
|
|
5
5
|
createComponentTheme
|
|
6
6
|
} from "../theme/internals.js";
|
|
7
|
-
import {
|
|
7
|
+
import { FieldContext, FieldNameContext } from "./internals.js";
|
|
8
8
|
export const useCheckboxFieldTheme = createComponentTheme("CheckboxField");
|
|
9
9
|
export function CheckboxField({ field, name, className, children }) {
|
|
10
10
|
let theme = useCheckboxFieldTheme();
|
|
11
11
|
if (field) {
|
|
12
|
-
return /* @__PURE__ */ jsx(
|
|
12
|
+
return /* @__PURE__ */ jsx(FieldContext, { value: field, children: /* @__PURE__ */ jsx(HeadlessField, { className: theme(null, className), "data-component": "checkbox-field", children }) });
|
|
13
13
|
}
|
|
14
14
|
if (name) {
|
|
15
|
-
return /* @__PURE__ */ jsx(
|
|
15
|
+
return /* @__PURE__ */ jsx(FieldNameContext, { value: name, children: /* @__PURE__ */ jsx(HeadlessField, { className: theme(null, className), "data-component": "checkbox-field", children }) });
|
|
16
16
|
}
|
|
17
17
|
return /* @__PURE__ */ jsx(HeadlessField, { className: theme(null, className), children });
|
|
18
18
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../source/components/CheckboxField.tsx"],
|
|
4
|
-
"sourcesContent": ["import {type FieldMetadata, type FieldName} from '@conform-to/react';\nimport {Field as HeadlessField} from '@headlessui/react';\nimport {type PropsWithChildren} from 'react';\n\nimport {\n type ComponentProps,\n type ComponentTheme,\n createComponentTheme,\n} from '../theme/internals.js';\nimport {
|
|
5
|
-
"mappings": ";AAqCQ;AApCR,SAAQ,SAAS,qBAAoB;AAGrC;AAAA,EAGE;AAAA,OACK;AACP,SAAQ,cAAc,wBAAuB;AAEtC,aAAM,wBAAwB,qBAAqB,eAAe;AAoBlE,gBAAS,cAAc,EAAC,OAAO,MAAM,WAAW,SAAQ,GAAuB;AACpF,MAAI,QAAQ,sBAAsB;AAElC,MAAI,OAAO;AACT,WACE,oBAAC,
|
|
4
|
+
"sourcesContent": ["import {type FieldMetadata, type FieldName} from '@conform-to/react';\nimport {Field as HeadlessField} from '@headlessui/react';\nimport {type PropsWithChildren} from 'react';\n\nimport {\n type ComponentProps,\n type ComponentTheme,\n createComponentTheme,\n} from '../theme/internals.js';\nimport {FieldContext, FieldNameContext} from './internals.js';\n\nexport const useCheckboxFieldTheme = createComponentTheme('CheckboxField');\n\nexport type CheckboxFieldProps = PropsWithChildren<\n ComponentProps<typeof useCheckboxFieldTheme> &\n (\n | {\n className?: string | undefined;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- needed\n field?: FieldMetadata<any, any> | undefined;\n name?: undefined;\n }\n | {\n className?: string | undefined;\n field?: undefined;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- needed\n name?: FieldName<any, any> | string | undefined;\n }\n )\n>;\n\nexport function CheckboxField({field, name, className, children}: CheckboxFieldProps) {\n let theme = useCheckboxFieldTheme();\n\n if (field) {\n return (\n <FieldContext value={field}>\n <HeadlessField className={theme(null, className)} data-component=\"checkbox-field\">\n {children}\n </HeadlessField>\n </FieldContext>\n );\n }\n\n if (name) {\n return (\n <FieldNameContext value={name}>\n <HeadlessField className={theme(null, className)} data-component=\"checkbox-field\">\n {children}\n </HeadlessField>\n </FieldNameContext>\n );\n }\n\n return <HeadlessField className={theme(null, className)}>{children}</HeadlessField>;\n}\n\nexport const checkboxFieldTheme: ComponentTheme<typeof useCheckboxFieldTheme> = {\n className:\n 'grid grid-cols-[theme(spacing.5)_1fr] gap-x-2 gap-y-1 [&>[data-component=description]]:col-start-2',\n};\n"],
|
|
5
|
+
"mappings": ";AAqCQ;AApCR,SAAQ,SAAS,qBAAoB;AAGrC;AAAA,EAGE;AAAA,OACK;AACP,SAAQ,cAAc,wBAAuB;AAEtC,aAAM,wBAAwB,qBAAqB,eAAe;AAoBlE,gBAAS,cAAc,EAAC,OAAO,MAAM,WAAW,SAAQ,GAAuB;AACpF,MAAI,QAAQ,sBAAsB;AAElC,MAAI,OAAO;AACT,WACE,oBAAC,gBAAa,OAAO,OACnB,8BAAC,iBAAc,WAAW,MAAM,MAAM,SAAS,GAAG,kBAAe,kBAC9D,UACH,GACF;AAAA,EAEJ;AAEA,MAAI,MAAM;AACR,WACE,oBAAC,oBAAiB,OAAO,MACvB,8BAAC,iBAAc,WAAW,MAAM,MAAM,SAAS,GAAG,kBAAe,kBAC9D,UACH,GACF;AAAA,EAEJ;AAEA,SAAO,oBAAC,iBAAc,WAAW,MAAM,MAAM,SAAS,GAAI,UAAS;AACrE;AAEO,aAAM,qBAAmE;AAAA,EAC9E,WACE;AACJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { type ComponentPropsWithoutRef, type ElementType, type PropsWithChildren
|
|
1
|
+
import { type ComponentPropsWithoutRef, type ElementType, type PropsWithChildren } from 'react';
|
|
2
2
|
import { type ComponentProps, type ComponentTheme } from '../theme/internals.js';
|
|
3
|
+
import { type ComponentRef } from './ComponentRef.js';
|
|
3
4
|
export declare const useComboboxTheme: {
|
|
4
5
|
componentThemeName: "Combobox";
|
|
5
6
|
themeDefinition: {
|
|
@@ -18,11 +19,14 @@ export declare const useComboboxTheme: {
|
|
|
18
19
|
root: (baseClassName?: import("../theme/internals.js").ClassName, overrideClassName?: import("../theme/internals.js").ClassName) => string;
|
|
19
20
|
options: (baseClassName?: import("../theme/internals.js").ClassName, overrideClassName?: import("../theme/internals.js").ClassName) => string;
|
|
20
21
|
});
|
|
22
|
+
declare const COMBOBOX_ELEMENT: import("react").ExoticComponent<{
|
|
23
|
+
children?: import("react").ReactNode | undefined;
|
|
24
|
+
}>;
|
|
21
25
|
export type ComboboxItem<V> = {
|
|
22
26
|
value: V;
|
|
23
27
|
label: string;
|
|
24
28
|
};
|
|
25
|
-
export type ComboboxProps<T extends ElementType, V extends boolean | number | string> =
|
|
29
|
+
export type ComboboxProps<T extends ElementType, V extends boolean | number | string> = ComponentProps<typeof useComboboxTheme> & ComponentPropsWithoutRef<T> & ComponentRef<T> & PropsWithChildren & ({
|
|
26
30
|
as?: T | undefined;
|
|
27
31
|
value?: V[] | undefined;
|
|
28
32
|
defaultValue?: V[] | undefined;
|
|
@@ -48,10 +52,9 @@ export type ComboboxProps<T extends ElementType, V extends boolean | number | st
|
|
|
48
52
|
name?: string | undefined;
|
|
49
53
|
className?: string;
|
|
50
54
|
onChange?: (selectedValue: V | undefined) => void;
|
|
51
|
-
})
|
|
55
|
+
});
|
|
52
56
|
export declare const Combobox: <T extends ElementType = import("react").ExoticComponent<{
|
|
53
57
|
children?: import("react").ReactNode | undefined;
|
|
54
|
-
}>, V extends boolean | number | string = string>(
|
|
55
|
-
ref?: Ref<HTMLElement> | undefined;
|
|
56
|
-
}) => React.ReactNode;
|
|
58
|
+
}>, V extends boolean | number | string = string>({ disabled, invalid, as, value, defaultValue, multiple, items, placeholder, immediate, virtual, customValue, name, className, onChange, ref, children, ...rest }: ComboboxProps<T, V>) => import("react/jsx-runtime").JSX.Element;
|
|
57
59
|
export declare const comboboxTheme: ComponentTheme<typeof useComboboxTheme>;
|
|
60
|
+
export {};
|