@tribepad/themis 1.0.11 → 1.0.12
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/elements/Accordion/Accordion.types.d.ts +44 -4
- package/dist/elements/Accordion/Accordion.types.d.ts.map +1 -1
- package/dist/elements/Accordion/index.js +1 -1
- package/dist/elements/Accordion/index.js.map +1 -1
- package/dist/elements/Accordion/index.mjs +1 -1
- package/dist/elements/Accordion/index.mjs.map +1 -1
- package/dist/elements/AlertDialog/AlertDialog.types.d.ts +19 -2
- package/dist/elements/AlertDialog/AlertDialog.types.d.ts.map +1 -1
- package/dist/elements/AlertDialog/index.js +1 -1
- package/dist/elements/AlertDialog/index.js.map +1 -1
- package/dist/elements/AlertDialog/index.mjs +1 -1
- package/dist/elements/AlertDialog/index.mjs.map +1 -1
- package/dist/elements/Avatar/Avatar.d.ts +1 -21
- package/dist/elements/Avatar/Avatar.d.ts.map +1 -1
- package/dist/elements/Avatar/Avatar.types.d.ts +30 -11
- package/dist/elements/Avatar/Avatar.types.d.ts.map +1 -1
- package/dist/elements/Avatar/AvatarGroup.d.ts +1 -17
- package/dist/elements/Avatar/AvatarGroup.d.ts.map +1 -1
- package/dist/elements/Avatar/index.js +1 -1
- package/dist/elements/Avatar/index.js.map +1 -1
- package/dist/elements/Avatar/index.mjs +1 -1
- package/dist/elements/Avatar/index.mjs.map +1 -1
- package/dist/elements/Badge/Badge.types.d.ts +16 -9
- package/dist/elements/Badge/Badge.types.d.ts.map +1 -1
- package/dist/elements/Badge/index.js +1 -1
- package/dist/elements/Badge/index.js.map +1 -1
- package/dist/elements/Badge/index.mjs +1 -1
- package/dist/elements/Badge/index.mjs.map +1 -1
- package/dist/elements/Breadcrumbs/Breadcrumbs.d.ts +2 -34
- package/dist/elements/Breadcrumbs/Breadcrumbs.d.ts.map +1 -1
- package/dist/elements/Breadcrumbs/Breadcrumbs.types.d.ts +25 -2
- package/dist/elements/Breadcrumbs/Breadcrumbs.types.d.ts.map +1 -1
- package/dist/elements/Breadcrumbs/index.js +1 -1
- package/dist/elements/Breadcrumbs/index.js.map +1 -1
- package/dist/elements/Breadcrumbs/index.mjs +1 -1
- package/dist/elements/Breadcrumbs/index.mjs.map +1 -1
- package/dist/elements/Button/Button.d.ts +1 -24
- package/dist/elements/Button/Button.d.ts.map +1 -1
- package/dist/elements/Button/Button.types.d.ts +28 -7
- package/dist/elements/Button/Button.types.d.ts.map +1 -1
- package/dist/elements/ButtonGroup/ButtonGroup.d.ts +3 -14
- package/dist/elements/ButtonGroup/ButtonGroup.d.ts.map +1 -1
- package/dist/elements/ButtonGroup/ButtonGroup.types.d.ts +14 -5
- package/dist/elements/ButtonGroup/ButtonGroup.types.d.ts.map +1 -1
- package/dist/elements/ButtonGroup/index.js +1 -1
- package/dist/elements/ButtonGroup/index.js.map +1 -1
- package/dist/elements/ButtonGroup/index.mjs +1 -1
- package/dist/elements/ButtonGroup/index.mjs.map +1 -1
- package/dist/elements/Carousel/Carousel.types.d.ts +26 -7
- package/dist/elements/Carousel/Carousel.types.d.ts.map +1 -1
- package/dist/elements/Chart/Chart.d.ts +2 -40
- package/dist/elements/Chart/Chart.d.ts.map +1 -1
- package/dist/elements/Chart/Chart.types.d.ts +25 -10
- package/dist/elements/Chart/Chart.types.d.ts.map +1 -1
- package/dist/elements/Chart/index.js +1 -1
- package/dist/elements/Chart/index.js.map +1 -1
- package/dist/elements/Chart/index.mjs +1 -1
- package/dist/elements/Chart/index.mjs.map +1 -1
- package/dist/elements/Checkbox/Checkbox.d.ts +1 -31
- package/dist/elements/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/elements/Checkbox/Checkbox.types.d.ts +33 -1
- package/dist/elements/Checkbox/Checkbox.types.d.ts.map +1 -1
- package/dist/elements/Checkbox/index.js +1 -1
- package/dist/elements/Checkbox/index.js.map +1 -1
- package/dist/elements/Checkbox/index.mjs +1 -1
- package/dist/elements/Checkbox/index.mjs.map +1 -1
- package/dist/elements/CheckboxGroup/CheckboxGroup.d.ts +1 -26
- package/dist/elements/CheckboxGroup/CheckboxGroup.d.ts.map +1 -1
- package/dist/elements/CheckboxGroup/CheckboxGroup.types.d.ts +48 -4
- package/dist/elements/CheckboxGroup/CheckboxGroup.types.d.ts.map +1 -1
- package/dist/elements/CheckboxGroup/index.js +1 -1
- package/dist/elements/CheckboxGroup/index.js.map +1 -1
- package/dist/elements/CheckboxGroup/index.mjs +1 -1
- package/dist/elements/CheckboxGroup/index.mjs.map +1 -1
- package/dist/elements/Combobox/Combobox.d.ts +1 -30
- package/dist/elements/Combobox/Combobox.d.ts.map +1 -1
- package/dist/elements/Combobox/Combobox.types.d.ts +38 -4
- package/dist/elements/Combobox/Combobox.types.d.ts.map +1 -1
- package/dist/elements/Combobox/index.js +1 -1
- package/dist/elements/Combobox/index.js.map +1 -1
- package/dist/elements/Combobox/index.mjs +1 -1
- package/dist/elements/Combobox/index.mjs.map +1 -1
- package/dist/elements/Dropdown/Dropdown.d.ts +10 -124
- package/dist/elements/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/elements/Dropdown/Dropdown.types.d.ts +53 -8
- package/dist/elements/Dropdown/Dropdown.types.d.ts.map +1 -1
- package/dist/elements/FileField/FileField.d.ts +2 -39
- package/dist/elements/FileField/FileField.d.ts.map +1 -1
- package/dist/elements/FileField/FileField.types.d.ts +31 -13
- package/dist/elements/FileField/FileField.types.d.ts.map +1 -1
- package/dist/elements/FileField/index.js +1 -1
- package/dist/elements/FileField/index.js.map +1 -1
- package/dist/elements/FileField/index.mjs +1 -1
- package/dist/elements/FileField/index.mjs.map +1 -1
- package/dist/elements/FormLayout/FormLayout.d.ts +2 -37
- package/dist/elements/FormLayout/FormLayout.d.ts.map +1 -1
- package/dist/elements/FormLayout/FormLayout.types.d.ts +19 -3
- package/dist/elements/FormLayout/FormLayout.types.d.ts.map +1 -1
- package/dist/elements/MatrixGrid/MatrixGrid.d.ts +2 -29
- package/dist/elements/MatrixGrid/MatrixGrid.d.ts.map +1 -1
- package/dist/elements/MatrixGrid/MatrixGrid.types.d.ts +22 -1
- package/dist/elements/MatrixGrid/MatrixGrid.types.d.ts.map +1 -1
- package/dist/elements/MatrixGrid/index.js +1 -1
- package/dist/elements/MatrixGrid/index.js.map +1 -1
- package/dist/elements/MatrixGrid/index.mjs +1 -1
- package/dist/elements/MatrixGrid/index.mjs.map +1 -1
- package/dist/elements/Modal/Modal.types.d.ts +69 -9
- package/dist/elements/Modal/Modal.types.d.ts.map +1 -1
- package/dist/elements/Pagination/Pagination.d.ts +2 -28
- package/dist/elements/Pagination/Pagination.d.ts.map +1 -1
- package/dist/elements/Pagination/Pagination.types.d.ts +26 -1
- package/dist/elements/Pagination/Pagination.types.d.ts.map +1 -1
- package/dist/elements/Pagination/index.js +1 -1
- package/dist/elements/Pagination/index.js.map +1 -1
- package/dist/elements/Pagination/index.mjs +1 -1
- package/dist/elements/Pagination/index.mjs.map +1 -1
- package/dist/elements/Panel/Panel.types.d.ts +67 -9
- package/dist/elements/Panel/Panel.types.d.ts.map +1 -1
- package/dist/elements/PasswordField/PasswordField.d.ts +2 -26
- package/dist/elements/PasswordField/PasswordField.d.ts.map +1 -1
- package/dist/elements/PasswordField/PasswordField.types.d.ts +27 -2
- package/dist/elements/PasswordField/PasswordField.types.d.ts.map +1 -1
- package/dist/elements/PasswordField/index.js +1 -1
- package/dist/elements/PasswordField/index.js.map +1 -1
- package/dist/elements/PasswordField/index.mjs +1 -1
- package/dist/elements/PasswordField/index.mjs.map +1 -1
- package/dist/elements/RadioGroup/RadioGroup.d.ts +1 -26
- package/dist/elements/RadioGroup/RadioGroup.d.ts.map +1 -1
- package/dist/elements/RadioGroup/RadioGroup.types.d.ts +43 -4
- package/dist/elements/RadioGroup/RadioGroup.types.d.ts.map +1 -1
- package/dist/elements/RadioGroup/index.js +1 -1
- package/dist/elements/RadioGroup/index.js.map +1 -1
- package/dist/elements/RadioGroup/index.mjs +1 -1
- package/dist/elements/RadioGroup/index.mjs.map +1 -1
- package/dist/elements/RatingScale/RatingScale.d.ts +2 -30
- package/dist/elements/RatingScale/RatingScale.d.ts.map +1 -1
- package/dist/elements/RatingScale/RatingScale.types.d.ts +29 -1
- package/dist/elements/RatingScale/RatingScale.types.d.ts.map +1 -1
- package/dist/elements/RatingScale/index.js +1 -1
- package/dist/elements/RatingScale/index.js.map +1 -1
- package/dist/elements/RatingScale/index.mjs +1 -1
- package/dist/elements/RatingScale/index.mjs.map +1 -1
- package/dist/elements/SearchField/SearchField.d.ts +2 -26
- package/dist/elements/SearchField/SearchField.d.ts.map +1 -1
- package/dist/elements/SearchField/SearchField.types.d.ts +26 -2
- package/dist/elements/SearchField/SearchField.types.d.ts.map +1 -1
- package/dist/elements/SearchField/index.js +1 -1
- package/dist/elements/SearchField/index.js.map +1 -1
- package/dist/elements/SearchField/index.mjs +1 -1
- package/dist/elements/SearchField/index.mjs.map +1 -1
- package/dist/elements/Select/Select.d.ts +3 -61
- package/dist/elements/Select/Select.d.ts.map +1 -1
- package/dist/elements/Select/Select.types.d.ts +52 -4
- package/dist/elements/Select/Select.types.d.ts.map +1 -1
- package/dist/elements/Select/index.js +1 -1
- package/dist/elements/Select/index.js.map +1 -1
- package/dist/elements/Select/index.mjs +1 -1
- package/dist/elements/Select/index.mjs.map +1 -1
- package/dist/elements/SituationalJudgement/SituationalJudgement.d.ts +2 -28
- package/dist/elements/SituationalJudgement/SituationalJudgement.d.ts.map +1 -1
- package/dist/elements/SituationalJudgement/SituationalJudgement.types.d.ts +23 -1
- package/dist/elements/SituationalJudgement/SituationalJudgement.types.d.ts.map +1 -1
- package/dist/elements/SituationalJudgement/index.js +1 -1
- package/dist/elements/SituationalJudgement/index.js.map +1 -1
- package/dist/elements/SituationalJudgement/index.mjs +1 -1
- package/dist/elements/SituationalJudgement/index.mjs.map +1 -1
- package/dist/elements/Skeleton/Skeleton.types.d.ts +11 -6
- package/dist/elements/Skeleton/Skeleton.types.d.ts.map +1 -1
- package/dist/elements/Skeleton/index.js +1 -1
- package/dist/elements/Skeleton/index.js.map +1 -1
- package/dist/elements/Skeleton/index.mjs +1 -1
- package/dist/elements/Skeleton/index.mjs.map +1 -1
- package/dist/elements/Switch/Switch.types.d.ts +31 -7
- package/dist/elements/Switch/Switch.types.d.ts.map +1 -1
- package/dist/elements/Switch/index.js +1 -1
- package/dist/elements/Switch/index.js.map +1 -1
- package/dist/elements/Switch/index.mjs +1 -1
- package/dist/elements/Switch/index.mjs.map +1 -1
- package/dist/elements/Table/Table.d.ts +7 -79
- package/dist/elements/Table/Table.d.ts.map +1 -1
- package/dist/elements/Table/Table.types.d.ts +82 -17
- package/dist/elements/Table/Table.types.d.ts.map +1 -1
- package/dist/elements/Table/index.js +1 -1
- package/dist/elements/Table/index.js.map +1 -1
- package/dist/elements/Table/index.mjs +1 -1
- package/dist/elements/Table/index.mjs.map +1 -1
- package/dist/elements/Tabs/Tabs.types.d.ts +61 -5
- package/dist/elements/Tabs/Tabs.types.d.ts.map +1 -1
- package/dist/elements/Tabs/index.js +1 -1
- package/dist/elements/Tabs/index.js.map +1 -1
- package/dist/elements/Tabs/index.mjs +1 -1
- package/dist/elements/Tabs/index.mjs.map +1 -1
- package/dist/elements/TextField/TextField.d.ts +6 -71
- package/dist/elements/TextField/TextField.d.ts.map +1 -1
- package/dist/elements/TextField/TextField.types.d.ts +76 -12
- package/dist/elements/TextField/TextField.types.d.ts.map +1 -1
- package/dist/elements/TextField/index.js +1 -1
- package/dist/elements/TextField/index.js.map +1 -1
- package/dist/elements/TextField/index.mjs +1 -1
- package/dist/elements/TextField/index.mjs.map +1 -1
- package/dist/elements/Toast/Toast.types.d.ts +12 -20
- package/dist/elements/Toast/Toast.types.d.ts.map +1 -1
- package/dist/elements/Toast/Toaster.d.ts +2 -5
- package/dist/elements/Toast/Toaster.d.ts.map +1 -1
- package/dist/elements/Toast/index.js +1 -1
- package/dist/elements/Toast/index.js.map +1 -1
- package/dist/elements/Toast/index.mjs +1 -1
- package/dist/elements/Toast/index.mjs.map +1 -1
- package/dist/elements/Tooltip/Tooltip.types.d.ts +39 -4
- package/dist/elements/Tooltip/Tooltip.types.d.ts.map +1 -1
- package/dist/elements/Tooltip/index.js +1 -1
- package/dist/elements/Tooltip/index.js.map +1 -1
- package/dist/elements/Tooltip/index.mjs +1 -1
- package/dist/elements/Tooltip/index.mjs.map +1 -1
- package/dist/elements/index.js.map +1 -1
- package/dist/elements/index.mjs.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -45,11 +45,35 @@ export declare const ComboboxPropsSchema: z.ZodObject<{
|
|
|
45
45
|
defaultSelectedKey: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
46
46
|
selectedKey: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodNull]>>;
|
|
47
47
|
}, z.core.$strip>;
|
|
48
|
-
export
|
|
48
|
+
export interface ComboboxPropsOwn {
|
|
49
|
+
className?: string;
|
|
50
|
+
id?: string;
|
|
51
|
+
'aria-label'?: string;
|
|
52
|
+
'aria-labelledby'?: string;
|
|
53
|
+
'aria-describedby'?: string;
|
|
54
|
+
'aria-live'?: 'off' | 'polite' | 'assertive';
|
|
55
|
+
'aria-hidden'?: boolean;
|
|
56
|
+
'data-testid'?: string;
|
|
57
|
+
label?: string;
|
|
58
|
+
description?: string;
|
|
59
|
+
errorMessage?: string;
|
|
60
|
+
size?: ComboboxSize;
|
|
61
|
+
placeholder?: string;
|
|
62
|
+
isRequired?: boolean;
|
|
63
|
+
isDisabled?: boolean;
|
|
64
|
+
isReadOnly?: boolean;
|
|
65
|
+
name?: string;
|
|
66
|
+
allowsCustomValue?: boolean;
|
|
67
|
+
menuTrigger?: 'input' | 'focus' | 'manual';
|
|
68
|
+
defaultInputValue?: string;
|
|
69
|
+
inputValue?: string;
|
|
70
|
+
defaultSelectedKey?: string | number;
|
|
71
|
+
selectedKey?: string | number | null;
|
|
49
72
|
children: ReactNode;
|
|
50
73
|
onInputChange?: (value: string) => void;
|
|
51
74
|
onSelectionChange?: (key: string | number | null) => void;
|
|
52
|
-
}
|
|
75
|
+
}
|
|
76
|
+
export type ComboboxProps = ComboboxPropsOwn & Omit<AriaComboBoxProps<object>, keyof ComboboxPropsOwn>;
|
|
53
77
|
export declare const ComboboxItemPropsSchema: z.ZodObject<{
|
|
54
78
|
id: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
55
79
|
textValue: z.ZodOptional<z.ZodString>;
|
|
@@ -57,11 +81,21 @@ export declare const ComboboxItemPropsSchema: z.ZodObject<{
|
|
|
57
81
|
children: z.ZodCustom<ReactNode, ReactNode>;
|
|
58
82
|
className: z.ZodOptional<z.ZodString>;
|
|
59
83
|
}, z.core.$strip>;
|
|
60
|
-
export
|
|
84
|
+
export interface ComboboxItemProps {
|
|
85
|
+
id?: string | number;
|
|
86
|
+
textValue?: string;
|
|
87
|
+
isDisabled?: boolean;
|
|
88
|
+
children?: ReactNode;
|
|
89
|
+
className?: string;
|
|
90
|
+
}
|
|
61
91
|
export declare const ComboboxSectionPropsSchema: z.ZodObject<{
|
|
62
92
|
header: z.ZodOptional<z.ZodString>;
|
|
63
93
|
children: z.ZodCustom<ReactNode, ReactNode>;
|
|
64
94
|
className: z.ZodOptional<z.ZodString>;
|
|
65
95
|
}, z.core.$strip>;
|
|
66
|
-
export
|
|
96
|
+
export interface ComboboxSectionProps {
|
|
97
|
+
header?: string;
|
|
98
|
+
children?: ReactNode;
|
|
99
|
+
className?: string;
|
|
100
|
+
}
|
|
67
101
|
//# sourceMappingURL=Combobox.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Combobox.types.d.ts","sourceRoot":"","sources":["../../../src/elements/Combobox/Combobox.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAEhF,eAAO,MAAM,kBAAkB;;;;EAAkC,CAAC;AAClE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6C9B,CAAC;AAEH,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"Combobox.types.d.ts","sourceRoot":"","sources":["../../../src/elements/Combobox/Combobox.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAEhF,eAAO,MAAM,kBAAkB;;;;EAAkC,CAAC;AAClE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6C9B,CAAC;AAEH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC7C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC3C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,EAAE,SAAS,CAAC;IACpB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC3D;AAED,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAC1C,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,uBAAuB;;;;;;iBAUlC,CAAC;AAEH,MAAM,WAAW,iBAAiB;IAChC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,0BAA0B;;;;iBAMrC,CAAC;AAEH,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
'use strict';var react=require('react'),reactAriaComponents=require('react-aria-components'),lucideReact=require('lucide-react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),classVarianceAuthority=require('class-variance-authority'),jsxRuntime=require('react/jsx-runtime'),zod=require('zod');function p(...r){return tailwindMerge.twMerge(clsx.clsx(r))}var
|
|
2
|
+
'use strict';var react=require('react'),reactAriaComponents=require('react-aria-components'),lucideReact=require('lucide-react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),classVarianceAuthority=require('class-variance-authority'),jsxRuntime=require('react/jsx-runtime'),zod=require('zod');function p(...r){return tailwindMerge.twMerge(clsx.clsx(r))}var c=classVarianceAuthority.cva("group flex flex-col gap-1.5 w-full",{variants:{size:{sm:"",default:"",lg:""}},defaultVariants:{size:"default"}}),x=classVarianceAuthority.cva("text-[var(--text-primary)] font-medium",{variants:{size:{sm:"text-xs",default:"text-sm",lg:"text-base"}},defaultVariants:{size:"default"}}),d=classVarianceAuthority.cva(["flex-1 bg-transparent outline-none","placeholder:text-[var(--muted-foreground)]","disabled:cursor-not-allowed"],{variants:{size:{sm:"text-xs",default:"text-sm",lg:"text-base"}},defaultVariants:{size:"default"}}),u=classVarianceAuthority.cva(["flex items-center w-full rounded-md border","bg-[var(--input-background)] text-[var(--content-foreground)]","border-[var(--input-border)]","transition-colors duration-[var(--transition-fast)]","focus-within:ring-2 focus-within:ring-[var(--ring)] focus-within:ring-offset-[var(--ring-offset)]","data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50","data-[invalid]:border-[var(--destructive-background)]"],{variants:{size:{sm:"h-8 px-2 gap-1 min-h-[44px]",default:"h-10 px-3 gap-2 min-h-[44px]",lg:"h-12 px-4 gap-2 min-h-[44px]"}},defaultVariants:{size:"default"}}),f=classVarianceAuthority.cva(["flex items-center justify-center shrink-0","text-[var(--muted-foreground)]","hover:text-[var(--text-primary)]","transition-colors","focus:outline-none"],{variants:{size:{sm:"h-4 w-4 min-h-[44px] min-w-[44px]",default:"h-5 w-5 min-h-[44px] min-w-[44px]",lg:"h-6 w-6 min-h-[44px] min-w-[44px]"}},defaultVariants:{size:"default"}}),g=classVarianceAuthority.cva(["w-[var(--trigger-width)] overflow-auto","rounded-md border border-[var(--border)]","bg-[var(--content-background)] text-[var(--content-foreground)]","shadow-md","data-[entering]:motion-safe:animate-in data-[entering]:motion-safe:fade-in-0","data-[exiting]:motion-safe:animate-out data-[exiting]:motion-safe:fade-out-0"]),C=classVarianceAuthority.cva("p-1 outline-none max-h-[300px] overflow-auto"),V=classVarianceAuthority.cva(["flex items-center gap-2 w-full rounded-sm px-2 py-1.5","text-[var(--content-foreground)]","cursor-pointer outline-none","data-[focused]:bg-[var(--accent-background)] data-[focused]:text-[var(--accent-foreground)]","data-[selected]:font-medium","data-[disabled]:opacity-50 data-[disabled]:cursor-not-allowed"],{variants:{size:{sm:"text-xs min-h-[44px]",default:"text-sm min-h-[44px]",lg:"text-base min-h-[44px]"}},defaultVariants:{size:"default"}}),h=classVarianceAuthority.cva("pt-1"),v=classVarianceAuthority.cva("px-2 py-1.5 text-xs font-semibold text-[var(--muted-foreground)]"),y=classVarianceAuthority.cva("text-[var(--muted-foreground)]",{variants:{size:{sm:"text-xs",default:"text-xs",lg:"text-sm"}},defaultVariants:{size:"default"}}),S=classVarianceAuthority.cva("text-[var(--destructive-background)]",{variants:{size:{sm:"text-xs",default:"text-xs",lg:"text-sm"}},defaultVariants:{size:"default"}});var B=react.forwardRef(({className:r,size:a="default",label:n,description:m,errorMessage:s,isRequired:b,isDisabled:R,isReadOnly:T,placeholder:k,name:D,allowsCustomValue:E=false,menuTrigger:O="input",defaultInputValue:H,inputValue:K,defaultSelectedKey:j,selectedKey:W,onInputChange:q,onSelectionChange:M,children:G,"aria-label":P,"aria-labelledby":N,"data-testid":U,..._},F)=>(process.env.NODE_ENV!=="production"&&!n&&!P&&!N&&console.warn("[Combobox] Either label, aria-label, or aria-labelledby is required for accessibility (WCAG 1.1.1)"),jsxRuntime.jsxs(reactAriaComponents.ComboBox,{ref:F,className:p(c({size:a}),r),isRequired:b,isDisabled:R,isReadOnly:T,name:D,allowsCustomValue:E,menuTrigger:O,defaultInputValue:H,inputValue:K,defaultSelectedKey:j,selectedKey:W,onInputChange:q,onSelectionChange:M,"aria-label":n?void 0:P,"aria-labelledby":N,"data-testid":U,..._,children:[n&&jsxRuntime.jsxs(reactAriaComponents.Label,{className:x({size:a}),children:[n,b&&jsxRuntime.jsx("span",{className:"text-[var(--destructive-background)] ml-1","aria-hidden":"true",children:"*"})]}),jsxRuntime.jsxs("div",{className:u({size:a}),children:[jsxRuntime.jsx(reactAriaComponents.Input,{className:d({size:a}),placeholder:k}),jsxRuntime.jsx(reactAriaComponents.Button,{className:f({size:a}),children:jsxRuntime.jsx(lucideReact.ChevronsUpDown,{className:"h-full w-full","aria-hidden":"true"})})]}),m&&!s&&jsxRuntime.jsx(reactAriaComponents.Text,{slot:"description",className:y({size:a}),children:m}),s&&jsxRuntime.jsx(reactAriaComponents.Text,{slot:"errorMessage",className:S({size:a}),children:s}),jsxRuntime.jsx(reactAriaComponents.Popover,{className:g(),children:jsxRuntime.jsx(reactAriaComponents.ListBox,{className:C(),children:G})})]})));B.displayName="Combobox";function I({children:r,className:a,textValue:n,...m}){let s=n||(typeof r=="string"?r:void 0);return jsxRuntime.jsx(reactAriaComponents.ListBoxItem,{className:p(V({size:"default"}),a),textValue:s,...m,children:({isSelected:b})=>jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("span",{className:"flex-1",children:r}),b&&jsxRuntime.jsx(lucideReact.Check,{className:"h-4 w-4 shrink-0 text-[var(--primary)]","aria-hidden":"true"})]})})}I.displayName="ComboboxItem";function z({header:r,children:a,className:n}){return jsxRuntime.jsxs(reactAriaComponents.ListBoxSection,{className:p(h(),n),children:[r&&jsxRuntime.jsx(reactAriaComponents.Header,{className:v(),children:r}),a]})}z.displayName="ComboboxSection";var A=zod.z.object({className:zod.z.string().optional(),children:zod.z.any().optional(),id:zod.z.string().optional(),"aria-label":zod.z.string().optional(),"aria-labelledby":zod.z.string().optional(),"aria-describedby":zod.z.string().optional(),"aria-live":zod.z.enum(["off","polite","assertive"]).optional(),"aria-hidden":zod.z.boolean().optional(),"data-testid":zod.z.string().optional()});var L=zod.z.enum(["sm","default","lg"]),mo=A.extend({label:zod.z.string().optional(),description:zod.z.string().optional(),errorMessage:zod.z.string().optional(),size:L.optional().default("default"),placeholder:zod.z.string().optional(),isRequired:zod.z.boolean().optional(),isDisabled:zod.z.boolean().optional(),isReadOnly:zod.z.boolean().optional(),name:zod.z.string().optional(),allowsCustomValue:zod.z.boolean().optional().default(false),menuTrigger:zod.z.enum(["input","focus","manual"]).optional().default("input"),defaultInputValue:zod.z.string().optional(),inputValue:zod.z.string().optional(),defaultSelectedKey:zod.z.union([zod.z.string(),zod.z.number()]).optional(),selectedKey:zod.z.union([zod.z.string(),zod.z.number(),zod.z.null()]).optional()}),bo=zod.z.object({id:zod.z.union([zod.z.string(),zod.z.number()]).optional(),textValue:zod.z.string().optional(),isDisabled:zod.z.boolean().optional(),children:zod.z.custom(),className:zod.z.string().optional()}),po=zod.z.object({header:zod.z.string().optional(),children:zod.z.custom(),className:zod.z.string().optional()});exports.Combobox=B;exports.ComboboxItem=I;exports.ComboboxItemPropsSchema=bo;exports.ComboboxPropsSchema=mo;exports.ComboboxSection=z;exports.ComboboxSectionPropsSchema=po;exports.ComboboxSizeSchema=L;exports.comboboxButtonVariants=f;exports.comboboxDescriptionVariants=y;exports.comboboxErrorVariants=S;exports.comboboxInputVariants=d;exports.comboboxItemVariants=V;exports.comboboxLabelVariants=x;exports.comboboxListBoxVariants=C;exports.comboboxPopoverVariants=g;exports.comboboxSectionHeaderVariants=v;exports.comboboxSectionVariants=h;exports.comboboxTriggerWrapperVariants=u;exports.comboboxVariants=c;//# sourceMappingURL=index.js.map
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/cn.ts","../../../src/elements/Combobox/Combobox.styles.ts","../../../src/elements/Combobox/Combobox.tsx","../../../src/schemas/BaseComponentProps.ts","../../../src/elements/Combobox/Combobox.types.ts"],"names":["cn","inputs","twMerge","clsx","comboboxVariants","cva","comboboxLabelVariants","comboboxInputVariants","comboboxTriggerWrapperVariants","comboboxButtonVariants","comboboxPopoverVariants","comboboxListBoxVariants","comboboxItemVariants","comboboxSectionVariants","comboboxSectionHeaderVariants","comboboxDescriptionVariants","comboboxErrorVariants","Combobox","forwardRef","className","size","label","description","errorMessage","isRequired","isDisabled","isReadOnly","placeholder","name","allowsCustomValue","menuTrigger","defaultInputValue","inputValue","defaultSelectedKey","selectedKey","onInputChange","onSelectionChange","children","ariaLabel","ariaLabelledBy","dataTestId","props","ref","jsxs","AriaComboBox","AriaLabel","jsx","AriaInput","AriaButton","ChevronsUpDown","AriaText","AriaPopover","AriaListBox","ComboboxItem","textValue","computedTextValue","AriaListBoxItem","isSelected","Fragment","Check","ComboboxSection","header","AriaListBoxSection","AriaHeader","BaseComponentPropsSchema","z","ComboboxSizeSchema","ComboboxPropsSchema","ComboboxItemPropsSchema","ComboboxSectionPropsSchema"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Class Name Utility\n * Merges Tailwind CSS classes with conflict resolution\n *\n * Combines clsx for conditional classes and tailwind-merge for deduplication\n *\n * @example\n * cn('px-2 py-1', 'px-4') // => 'py-1 px-4' (px-4 overrides px-2)\n * cn('text-red-500', condition && 'text-blue-500') // => conditional application\n */\n\nimport { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import { cva } from 'class-variance-authority';\n\nexport const comboboxVariants = cva(\n 'group flex flex-col gap-1.5 w-full',\n {\n variants: {\n size: {\n sm: '',\n default: '',\n lg: '',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxLabelVariants = cva(\n 'text-[var(--text-primary)] font-medium',\n {\n variants: {\n size: {\n sm: 'text-xs',\n default: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxInputVariants = cva(\n [\n 'flex-1 bg-transparent outline-none',\n 'placeholder:text-[var(--muted-foreground)]',\n 'disabled:cursor-not-allowed',\n ],\n {\n variants: {\n size: {\n sm: 'text-xs',\n default: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxTriggerWrapperVariants = cva(\n [\n 'flex items-center w-full rounded-md border',\n 'bg-[var(--input-background)] text-[var(--content-foreground)]',\n 'border-[var(--input-border)]',\n 'transition-colors duration-[var(--transition-fast)]',\n 'focus-within:ring-2 focus-within:ring-[var(--ring)] focus-within:ring-offset-[var(--ring-offset)]',\n 'data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50',\n 'data-[invalid]:border-[var(--destructive-background)]',\n ],\n {\n variants: {\n size: {\n sm: 'h-8 px-2 gap-1 min-h-[44px]',\n default: 'h-10 px-3 gap-2 min-h-[44px]',\n lg: 'h-12 px-4 gap-2 min-h-[44px]',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxButtonVariants = cva(\n [\n 'flex items-center justify-center shrink-0',\n 'text-[var(--muted-foreground)]',\n 'hover:text-[var(--text-primary)]',\n 'transition-colors',\n 'focus:outline-none',\n ],\n {\n variants: {\n size: {\n sm: 'h-4 w-4 min-h-[44px] min-w-[44px]',\n default: 'h-5 w-5 min-h-[44px] min-w-[44px]',\n lg: 'h-6 w-6 min-h-[44px] min-w-[44px]',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxPopoverVariants = cva(\n [\n 'w-[var(--trigger-width)] overflow-auto',\n 'rounded-md border border-[var(--border)]',\n 'bg-[var(--content-background)] text-[var(--content-foreground)]',\n 'shadow-md',\n 'data-[entering]:motion-safe:animate-in data-[entering]:motion-safe:fade-in-0',\n 'data-[exiting]:motion-safe:animate-out data-[exiting]:motion-safe:fade-out-0',\n ]\n);\n\nexport const comboboxListBoxVariants = cva(\n 'p-1 outline-none max-h-[300px] overflow-auto'\n);\n\nexport const comboboxItemVariants = cva(\n [\n 'flex items-center gap-2 w-full rounded-sm px-2 py-1.5',\n 'text-[var(--content-foreground)]',\n 'cursor-pointer outline-none',\n 'data-[focused]:bg-[var(--accent-background)] data-[focused]:text-[var(--accent-foreground)]',\n 'data-[selected]:font-medium',\n 'data-[disabled]:opacity-50 data-[disabled]:cursor-not-allowed',\n ],\n {\n variants: {\n size: {\n sm: 'text-xs min-h-[44px]',\n default: 'text-sm min-h-[44px]',\n lg: 'text-base min-h-[44px]',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxSectionVariants = cva('pt-1');\n\nexport const comboboxSectionHeaderVariants = cva(\n 'px-2 py-1.5 text-xs font-semibold text-[var(--muted-foreground)]'\n);\n\nexport const comboboxDescriptionVariants = cva(\n 'text-[var(--muted-foreground)]',\n {\n variants: {\n size: {\n sm: 'text-xs',\n default: 'text-xs',\n lg: 'text-sm',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxErrorVariants = cva(\n 'text-[var(--destructive-background)]',\n {\n variants: {\n size: {\n sm: 'text-xs',\n default: 'text-xs',\n lg: 'text-sm',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n","'use client';\n\nimport { forwardRef, type ReactElement } from 'react';\nimport {\n ComboBox as AriaComboBox,\n Label as AriaLabel,\n Input as AriaInput,\n Button as AriaButton,\n Popover as AriaPopover,\n ListBox as AriaListBox,\n ListBoxItem as AriaListBoxItem,\n ListBoxSection as AriaListBoxSection,\n Header as AriaHeader,\n Text as AriaText,\n} from 'react-aria-components';\nimport { ChevronsUpDown, Check } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport type {\n ComboboxProps,\n ComboboxItemProps,\n ComboboxSectionProps,\n} from './Combobox.types';\nimport {\n comboboxVariants,\n comboboxLabelVariants,\n comboboxInputVariants,\n comboboxTriggerWrapperVariants,\n comboboxButtonVariants,\n comboboxPopoverVariants,\n comboboxListBoxVariants,\n comboboxItemVariants,\n comboboxSectionVariants,\n comboboxSectionHeaderVariants,\n comboboxDescriptionVariants,\n comboboxErrorVariants,\n} from './Combobox.styles';\n\n// ============================================================================\n// Combobox\n// ============================================================================\n\n/**\n * Combobox Component\n *\n * A filterable select/autocomplete component built on React Aria's ComboBox.\n * Supports type-to-filter, keyboard navigation, and optional custom values.\n *\n * @example\n * ```tsx\n * <Combobox label=\"Framework\">\n * <ComboboxItem id=\"react\">React</ComboboxItem>\n * <ComboboxItem id=\"vue\">Vue</ComboboxItem>\n * <ComboboxItem id=\"angular\">Angular</ComboboxItem>\n * </Combobox>\n * ```\n */\nexport const Combobox = forwardRef<HTMLDivElement, ComboboxProps>(\n (\n {\n className,\n size = 'default',\n label,\n description,\n errorMessage,\n isRequired,\n isDisabled,\n isReadOnly,\n placeholder,\n name,\n allowsCustomValue = false,\n menuTrigger = 'input',\n defaultInputValue,\n inputValue,\n defaultSelectedKey,\n selectedKey,\n onInputChange,\n onSelectionChange,\n children,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'data-testid': dataTestId,\n ...props\n },\n ref\n ): ReactElement => {\n // Warn if no accessible label\n if (process.env.NODE_ENV !== 'production') {\n if (!label && !ariaLabel && !ariaLabelledBy) {\n console.warn(\n '[Combobox] Either label, aria-label, or aria-labelledby is required for accessibility (WCAG 1.1.1)'\n );\n }\n }\n\n return (\n <AriaComboBox\n ref={ref}\n className={cn(comboboxVariants({ size }), className)}\n isRequired={isRequired}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n name={name}\n allowsCustomValue={allowsCustomValue}\n menuTrigger={menuTrigger}\n defaultInputValue={defaultInputValue}\n inputValue={inputValue}\n defaultSelectedKey={defaultSelectedKey}\n selectedKey={selectedKey}\n onInputChange={onInputChange}\n onSelectionChange={onSelectionChange}\n aria-label={!label ? ariaLabel : undefined}\n aria-labelledby={ariaLabelledBy}\n data-testid={dataTestId}\n {...props}\n >\n {label && (\n <AriaLabel className={comboboxLabelVariants({ size })}>\n {label}\n {isRequired && (\n <span className=\"text-[var(--destructive-background)] ml-1\" aria-hidden=\"true\">\n *\n </span>\n )}\n </AriaLabel>\n )}\n\n <div className={comboboxTriggerWrapperVariants({ size })}>\n <AriaInput\n className={comboboxInputVariants({ size })}\n placeholder={placeholder}\n />\n <AriaButton className={comboboxButtonVariants({ size })}>\n <ChevronsUpDown className=\"h-full w-full\" aria-hidden=\"true\" />\n </AriaButton>\n </div>\n\n {description && !errorMessage && (\n <AriaText slot=\"description\" className={comboboxDescriptionVariants({ size })}>\n {description}\n </AriaText>\n )}\n\n {errorMessage && (\n <AriaText slot=\"errorMessage\" className={comboboxErrorVariants({ size })}>\n {errorMessage}\n </AriaText>\n )}\n\n <AriaPopover className={comboboxPopoverVariants()}>\n <AriaListBox className={comboboxListBoxVariants()}>\n {children}\n </AriaListBox>\n </AriaPopover>\n </AriaComboBox>\n );\n }\n);\n\nCombobox.displayName = 'Combobox';\n\n// ============================================================================\n// ComboboxItem\n// ============================================================================\n\nexport function ComboboxItem({\n children,\n className,\n textValue,\n ...props\n}: ComboboxItemProps): ReactElement {\n // Compute textValue from string children if not explicitly provided\n const computedTextValue = textValue || (typeof children === 'string' ? children : undefined);\n\n return (\n <AriaListBoxItem\n className={cn(comboboxItemVariants({ size: 'default' }), className)}\n textValue={computedTextValue}\n {...props}\n >\n {({ isSelected }) => (\n <>\n <span className=\"flex-1\">{children}</span>\n {isSelected && (\n <Check className=\"h-4 w-4 shrink-0 text-[var(--primary)]\" aria-hidden=\"true\" />\n )}\n </>\n )}\n </AriaListBoxItem>\n );\n}\n\nComboboxItem.displayName = 'ComboboxItem';\n\n// ============================================================================\n// ComboboxSection\n// ============================================================================\n\nexport function ComboboxSection({\n header,\n children,\n className,\n}: ComboboxSectionProps): ReactElement {\n return (\n <AriaListBoxSection className={cn(comboboxSectionVariants(), className)}>\n {header && (\n <AriaHeader className={comboboxSectionHeaderVariants()}>\n {header}\n </AriaHeader>\n )}\n {children}\n </AriaListBoxSection>\n );\n}\n\nComboboxSection.displayName = 'ComboboxSection';\n","import { z } from 'zod';\n\n/**\n * Base props schema for all Themis components\n * Ensures consistent accessibility and styling APIs across the library\n *\n * @see spec.md FR-009 to FR-014 (Accessibility Requirements)\n * @see constitution.md Principle IV (Accessibility First - WCAG 2.2 AA minimum)\n */\nexport const BaseComponentPropsSchema = z.object({\n // Styling\n className: z.string().optional(),\n\n // React\n children: z.any().optional(), // ReactNode not directly supported by Zod\n id: z.string().optional(),\n\n // Accessibility (WCAG 2.2 AA requirements)\n 'aria-label': z.string().optional(),\n 'aria-labelledby': z.string().optional(),\n 'aria-describedby': z.string().optional(),\n 'aria-live': z.enum(['off', 'polite', 'assertive']).optional(),\n 'aria-hidden': z.boolean().optional(),\n\n // Testing & Development\n 'data-testid': z.string().optional(),\n});\n\nexport type BaseComponentProps = z.infer<typeof BaseComponentPropsSchema>;\n","import { z } from 'zod';\nimport { BaseComponentPropsSchema } from '../../schemas/BaseComponentProps';\nimport type { ReactNode } from 'react';\nimport type { ComboBoxProps as AriaComboBoxProps } from 'react-aria-components';\n\nexport const ComboboxSizeSchema = z.enum(['sm', 'default', 'lg']);\nexport type ComboboxSize = z.infer<typeof ComboboxSizeSchema>;\n\nexport const ComboboxPropsSchema = BaseComponentPropsSchema.extend({\n /** Label text */\n label: z.string().optional(),\n\n /** Description/help text */\n description: z.string().optional(),\n\n /** Error message */\n errorMessage: z.string().optional(),\n\n /** Size variant */\n size: ComboboxSizeSchema.optional().default('default'),\n\n /** Placeholder text */\n placeholder: z.string().optional(),\n\n /** Whether the field is required */\n isRequired: z.boolean().optional(),\n\n /** Whether the field is disabled */\n isDisabled: z.boolean().optional(),\n\n /** Whether the field is read-only */\n isReadOnly: z.boolean().optional(),\n\n /** Field name for form submission */\n name: z.string().optional(),\n\n /** Whether to allow custom values (not in the list) */\n allowsCustomValue: z.boolean().optional().default(false),\n\n /** The menu trigger behavior */\n menuTrigger: z.enum(['input', 'focus', 'manual']).optional().default('input'),\n\n /** Default input value (uncontrolled) */\n defaultInputValue: z.string().optional(),\n\n /** Input value (controlled) */\n inputValue: z.string().optional(),\n\n /** Default selected key (uncontrolled) */\n defaultSelectedKey: z.union([z.string(), z.number()]).optional(),\n\n /** Selected key (controlled) */\n selectedKey: z.union([z.string(), z.number(), z.null()]).optional(),\n});\n\nexport type ComboboxProps = z.infer<typeof ComboboxPropsSchema> &\n Omit<AriaComboBoxProps<object>, keyof z.infer<typeof ComboboxPropsSchema>> & {\n children: ReactNode;\n onInputChange?: (value: string) => void;\n onSelectionChange?: (key: string | number | null) => void;\n };\n\nexport const ComboboxItemPropsSchema = z.object({\n /** Unique key/value for the item */\n id: z.union([z.string(), z.number()]).optional(),\n /** Text value for filtering */\n textValue: z.string().optional(),\n /** Whether this item is disabled */\n isDisabled: z.boolean().optional(),\n /** Item content */\n children: z.custom<ReactNode>(),\n className: z.string().optional(),\n});\n\nexport type ComboboxItemProps = z.infer<typeof ComboboxItemPropsSchema>;\n\nexport const ComboboxSectionPropsSchema = z.object({\n /** Section header text */\n header: z.string().optional(),\n /** Section items */\n children: z.custom<ReactNode>(),\n className: z.string().optional(),\n});\n\nexport type ComboboxSectionProps = z.infer<typeof ComboboxSectionPropsSchema>;\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/cn.ts","../../../src/elements/Combobox/Combobox.styles.ts","../../../src/elements/Combobox/Combobox.tsx","../../../src/schemas/BaseComponentProps.ts","../../../src/elements/Combobox/Combobox.types.ts"],"names":["cn","inputs","twMerge","clsx","comboboxVariants","cva","comboboxLabelVariants","comboboxInputVariants","comboboxTriggerWrapperVariants","comboboxButtonVariants","comboboxPopoverVariants","comboboxListBoxVariants","comboboxItemVariants","comboboxSectionVariants","comboboxSectionHeaderVariants","comboboxDescriptionVariants","comboboxErrorVariants","Combobox","forwardRef","className","size","label","description","errorMessage","isRequired","isDisabled","isReadOnly","placeholder","name","allowsCustomValue","menuTrigger","defaultInputValue","inputValue","defaultSelectedKey","selectedKey","onInputChange","onSelectionChange","children","ariaLabel","ariaLabelledBy","dataTestId","props","ref","jsxs","AriaComboBox","AriaLabel","jsx","AriaInput","AriaButton","ChevronsUpDown","AriaText","AriaPopover","AriaListBox","ComboboxItem","textValue","computedTextValue","AriaListBoxItem","isSelected","Fragment","Check","ComboboxSection","header","AriaListBoxSection","AriaHeader","BaseComponentPropsSchema","z","ComboboxSizeSchema","ComboboxPropsSchema","ComboboxItemPropsSchema","ComboboxSectionPropsSchema"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Class Name Utility\n * Merges Tailwind CSS classes with conflict resolution\n *\n * Combines clsx for conditional classes and tailwind-merge for deduplication\n *\n * @example\n * cn('px-2 py-1', 'px-4') // => 'py-1 px-4' (px-4 overrides px-2)\n * cn('text-red-500', condition && 'text-blue-500') // => conditional application\n */\n\nimport { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import { cva } from 'class-variance-authority';\n\nexport const comboboxVariants = cva(\n 'group flex flex-col gap-1.5 w-full',\n {\n variants: {\n size: {\n sm: '',\n default: '',\n lg: '',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxLabelVariants = cva(\n 'text-[var(--text-primary)] font-medium',\n {\n variants: {\n size: {\n sm: 'text-xs',\n default: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxInputVariants = cva(\n [\n 'flex-1 bg-transparent outline-none',\n 'placeholder:text-[var(--muted-foreground)]',\n 'disabled:cursor-not-allowed',\n ],\n {\n variants: {\n size: {\n sm: 'text-xs',\n default: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxTriggerWrapperVariants = cva(\n [\n 'flex items-center w-full rounded-md border',\n 'bg-[var(--input-background)] text-[var(--content-foreground)]',\n 'border-[var(--input-border)]',\n 'transition-colors duration-[var(--transition-fast)]',\n 'focus-within:ring-2 focus-within:ring-[var(--ring)] focus-within:ring-offset-[var(--ring-offset)]',\n 'data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50',\n 'data-[invalid]:border-[var(--destructive-background)]',\n ],\n {\n variants: {\n size: {\n sm: 'h-8 px-2 gap-1 min-h-[44px]',\n default: 'h-10 px-3 gap-2 min-h-[44px]',\n lg: 'h-12 px-4 gap-2 min-h-[44px]',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxButtonVariants = cva(\n [\n 'flex items-center justify-center shrink-0',\n 'text-[var(--muted-foreground)]',\n 'hover:text-[var(--text-primary)]',\n 'transition-colors',\n 'focus:outline-none',\n ],\n {\n variants: {\n size: {\n sm: 'h-4 w-4 min-h-[44px] min-w-[44px]',\n default: 'h-5 w-5 min-h-[44px] min-w-[44px]',\n lg: 'h-6 w-6 min-h-[44px] min-w-[44px]',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxPopoverVariants = cva(\n [\n 'w-[var(--trigger-width)] overflow-auto',\n 'rounded-md border border-[var(--border)]',\n 'bg-[var(--content-background)] text-[var(--content-foreground)]',\n 'shadow-md',\n 'data-[entering]:motion-safe:animate-in data-[entering]:motion-safe:fade-in-0',\n 'data-[exiting]:motion-safe:animate-out data-[exiting]:motion-safe:fade-out-0',\n ]\n);\n\nexport const comboboxListBoxVariants = cva(\n 'p-1 outline-none max-h-[300px] overflow-auto'\n);\n\nexport const comboboxItemVariants = cva(\n [\n 'flex items-center gap-2 w-full rounded-sm px-2 py-1.5',\n 'text-[var(--content-foreground)]',\n 'cursor-pointer outline-none',\n 'data-[focused]:bg-[var(--accent-background)] data-[focused]:text-[var(--accent-foreground)]',\n 'data-[selected]:font-medium',\n 'data-[disabled]:opacity-50 data-[disabled]:cursor-not-allowed',\n ],\n {\n variants: {\n size: {\n sm: 'text-xs min-h-[44px]',\n default: 'text-sm min-h-[44px]',\n lg: 'text-base min-h-[44px]',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxSectionVariants = cva('pt-1');\n\nexport const comboboxSectionHeaderVariants = cva(\n 'px-2 py-1.5 text-xs font-semibold text-[var(--muted-foreground)]'\n);\n\nexport const comboboxDescriptionVariants = cva(\n 'text-[var(--muted-foreground)]',\n {\n variants: {\n size: {\n sm: 'text-xs',\n default: 'text-xs',\n lg: 'text-sm',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxErrorVariants = cva(\n 'text-[var(--destructive-background)]',\n {\n variants: {\n size: {\n sm: 'text-xs',\n default: 'text-xs',\n lg: 'text-sm',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n","'use client';\n\nimport { forwardRef, type ReactElement } from 'react';\nimport {\n ComboBox as AriaComboBox,\n Label as AriaLabel,\n Input as AriaInput,\n Button as AriaButton,\n Popover as AriaPopover,\n ListBox as AriaListBox,\n ListBoxItem as AriaListBoxItem,\n ListBoxSection as AriaListBoxSection,\n Header as AriaHeader,\n Text as AriaText,\n} from 'react-aria-components';\nimport { ChevronsUpDown, Check } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport type {\n ComboboxProps,\n ComboboxItemProps,\n ComboboxSectionProps,\n} from './Combobox.types';\nimport {\n comboboxVariants,\n comboboxLabelVariants,\n comboboxInputVariants,\n comboboxTriggerWrapperVariants,\n comboboxButtonVariants,\n comboboxPopoverVariants,\n comboboxListBoxVariants,\n comboboxItemVariants,\n comboboxSectionVariants,\n comboboxSectionHeaderVariants,\n comboboxDescriptionVariants,\n comboboxErrorVariants,\n} from './Combobox.styles';\n\n// ============================================================================\n// Combobox\n// ============================================================================\n\n/**\n * Combobox Component\n *\n * A filterable select/autocomplete component built on React Aria's ComboBox.\n * Supports type-to-filter, keyboard navigation, and optional custom values.\n *\n * @example\n * ```tsx\n * <Combobox label=\"Framework\">\n * <ComboboxItem id=\"react\">React</ComboboxItem>\n * <ComboboxItem id=\"vue\">Vue</ComboboxItem>\n * <ComboboxItem id=\"angular\">Angular</ComboboxItem>\n * </Combobox>\n * ```\n */\nexport const Combobox = forwardRef<HTMLDivElement, ComboboxProps>(\n (\n {\n className,\n size = 'default',\n label,\n description,\n errorMessage,\n isRequired,\n isDisabled,\n isReadOnly,\n placeholder,\n name,\n allowsCustomValue = false,\n menuTrigger = 'input',\n defaultInputValue,\n inputValue,\n defaultSelectedKey,\n selectedKey,\n onInputChange,\n onSelectionChange,\n children,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'data-testid': dataTestId,\n ...props\n },\n ref\n ): ReactElement => {\n // Warn if no accessible label\n if (process.env.NODE_ENV !== 'production') {\n if (!label && !ariaLabel && !ariaLabelledBy) {\n console.warn(\n '[Combobox] Either label, aria-label, or aria-labelledby is required for accessibility (WCAG 1.1.1)'\n );\n }\n }\n\n return (\n <AriaComboBox\n ref={ref}\n className={cn(comboboxVariants({ size }), className)}\n isRequired={isRequired}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n name={name}\n allowsCustomValue={allowsCustomValue}\n menuTrigger={menuTrigger}\n defaultInputValue={defaultInputValue}\n inputValue={inputValue}\n defaultSelectedKey={defaultSelectedKey}\n selectedKey={selectedKey}\n onInputChange={onInputChange}\n onSelectionChange={onSelectionChange}\n aria-label={!label ? ariaLabel : undefined}\n aria-labelledby={ariaLabelledBy}\n data-testid={dataTestId}\n {...props}\n >\n {label && (\n <AriaLabel className={comboboxLabelVariants({ size })}>\n {label}\n {isRequired && (\n <span className=\"text-[var(--destructive-background)] ml-1\" aria-hidden=\"true\">\n *\n </span>\n )}\n </AriaLabel>\n )}\n\n <div className={comboboxTriggerWrapperVariants({ size })}>\n <AriaInput\n className={comboboxInputVariants({ size })}\n placeholder={placeholder}\n />\n <AriaButton className={comboboxButtonVariants({ size })}>\n <ChevronsUpDown className=\"h-full w-full\" aria-hidden=\"true\" />\n </AriaButton>\n </div>\n\n {description && !errorMessage && (\n <AriaText slot=\"description\" className={comboboxDescriptionVariants({ size })}>\n {description}\n </AriaText>\n )}\n\n {errorMessage && (\n <AriaText slot=\"errorMessage\" className={comboboxErrorVariants({ size })}>\n {errorMessage}\n </AriaText>\n )}\n\n <AriaPopover className={comboboxPopoverVariants()}>\n <AriaListBox className={comboboxListBoxVariants()}>\n {children}\n </AriaListBox>\n </AriaPopover>\n </AriaComboBox>\n );\n }\n);\n\nCombobox.displayName = 'Combobox';\n\n// ============================================================================\n// ComboboxItem\n// ============================================================================\n\nexport function ComboboxItem({\n children,\n className,\n textValue,\n ...props\n}: ComboboxItemProps): ReactElement {\n // Compute textValue from string children if not explicitly provided\n const computedTextValue = textValue || (typeof children === 'string' ? children : undefined);\n\n return (\n <AriaListBoxItem\n className={cn(comboboxItemVariants({ size: 'default' }), className)}\n textValue={computedTextValue}\n {...props}\n >\n {({ isSelected }) => (\n <>\n <span className=\"flex-1\">{children}</span>\n {isSelected && (\n <Check className=\"h-4 w-4 shrink-0 text-[var(--primary)]\" aria-hidden=\"true\" />\n )}\n </>\n )}\n </AriaListBoxItem>\n );\n}\n\nComboboxItem.displayName = 'ComboboxItem';\n\n// ============================================================================\n// ComboboxSection\n// ============================================================================\n\nexport function ComboboxSection({\n header,\n children,\n className,\n}: ComboboxSectionProps): ReactElement {\n return (\n <AriaListBoxSection className={cn(comboboxSectionVariants(), className)}>\n {header && (\n <AriaHeader className={comboboxSectionHeaderVariants()}>\n {header}\n </AriaHeader>\n )}\n {children}\n </AriaListBoxSection>\n );\n}\n\nComboboxSection.displayName = 'ComboboxSection';\n","import { z } from 'zod';\n\n/**\n * Base props schema for all Themis components\n * Ensures consistent accessibility and styling APIs across the library\n *\n * @see spec.md FR-009 to FR-014 (Accessibility Requirements)\n * @see constitution.md Principle IV (Accessibility First - WCAG 2.2 AA minimum)\n */\nexport const BaseComponentPropsSchema = z.object({\n // Styling\n className: z.string().optional(),\n\n // React\n children: z.any().optional(), // ReactNode not directly supported by Zod\n id: z.string().optional(),\n\n // Accessibility (WCAG 2.2 AA requirements)\n 'aria-label': z.string().optional(),\n 'aria-labelledby': z.string().optional(),\n 'aria-describedby': z.string().optional(),\n 'aria-live': z.enum(['off', 'polite', 'assertive']).optional(),\n 'aria-hidden': z.boolean().optional(),\n\n // Testing & Development\n 'data-testid': z.string().optional(),\n});\n\nexport type BaseComponentProps = z.infer<typeof BaseComponentPropsSchema>;\n","import { z } from 'zod';\nimport { BaseComponentPropsSchema } from '../../schemas/BaseComponentProps';\nimport type { ReactNode } from 'react';\nimport type { ComboBoxProps as AriaComboBoxProps } from 'react-aria-components';\n\nexport const ComboboxSizeSchema = z.enum(['sm', 'default', 'lg']);\nexport type ComboboxSize = z.infer<typeof ComboboxSizeSchema>;\n\nexport const ComboboxPropsSchema = BaseComponentPropsSchema.extend({\n /** Label text */\n label: z.string().optional(),\n\n /** Description/help text */\n description: z.string().optional(),\n\n /** Error message */\n errorMessage: z.string().optional(),\n\n /** Size variant */\n size: ComboboxSizeSchema.optional().default('default'),\n\n /** Placeholder text */\n placeholder: z.string().optional(),\n\n /** Whether the field is required */\n isRequired: z.boolean().optional(),\n\n /** Whether the field is disabled */\n isDisabled: z.boolean().optional(),\n\n /** Whether the field is read-only */\n isReadOnly: z.boolean().optional(),\n\n /** Field name for form submission */\n name: z.string().optional(),\n\n /** Whether to allow custom values (not in the list) */\n allowsCustomValue: z.boolean().optional().default(false),\n\n /** The menu trigger behavior */\n menuTrigger: z.enum(['input', 'focus', 'manual']).optional().default('input'),\n\n /** Default input value (uncontrolled) */\n defaultInputValue: z.string().optional(),\n\n /** Input value (controlled) */\n inputValue: z.string().optional(),\n\n /** Default selected key (uncontrolled) */\n defaultSelectedKey: z.union([z.string(), z.number()]).optional(),\n\n /** Selected key (controlled) */\n selectedKey: z.union([z.string(), z.number(), z.null()]).optional(),\n});\n\nexport interface ComboboxPropsOwn {\n className?: string;\n id?: string;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n 'aria-describedby'?: string;\n 'aria-live'?: 'off' | 'polite' | 'assertive';\n 'aria-hidden'?: boolean;\n 'data-testid'?: string;\n label?: string;\n description?: string;\n errorMessage?: string;\n size?: ComboboxSize;\n placeholder?: string;\n isRequired?: boolean;\n isDisabled?: boolean;\n isReadOnly?: boolean;\n name?: string;\n allowsCustomValue?: boolean;\n menuTrigger?: 'input' | 'focus' | 'manual';\n defaultInputValue?: string;\n inputValue?: string;\n defaultSelectedKey?: string | number;\n selectedKey?: string | number | null;\n children: ReactNode;\n onInputChange?: (value: string) => void;\n onSelectionChange?: (key: string | number | null) => void;\n}\n\nexport type ComboboxProps = ComboboxPropsOwn &\n Omit<AriaComboBoxProps<object>, keyof ComboboxPropsOwn>;\n\nexport const ComboboxItemPropsSchema = z.object({\n /** Unique key/value for the item */\n id: z.union([z.string(), z.number()]).optional(),\n /** Text value for filtering */\n textValue: z.string().optional(),\n /** Whether this item is disabled */\n isDisabled: z.boolean().optional(),\n /** Item content */\n children: z.custom<ReactNode>(),\n className: z.string().optional(),\n});\n\nexport interface ComboboxItemProps {\n id?: string | number;\n textValue?: string;\n isDisabled?: boolean;\n children?: ReactNode;\n className?: string;\n}\n\nexport const ComboboxSectionPropsSchema = z.object({\n /** Section header text */\n header: z.string().optional(),\n /** Section items */\n children: z.custom<ReactNode>(),\n className: z.string().optional(),\n});\n\nexport interface ComboboxSectionProps {\n header?: string;\n children?: ReactNode;\n className?: string;\n}\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {forwardRef}from'react';import {ComboBox,Label,Input,Button,Text,Popover,ListBox,ListBoxItem,ListBoxSection,Header}from'react-aria-components';import {ChevronsUpDown,Check}from'lucide-react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {cva}from'class-variance-authority';import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {z as z$1}from'zod';function p(...r){return twMerge(clsx(r))}var
|
|
2
|
+
import {forwardRef}from'react';import {ComboBox,Label,Input,Button,Text,Popover,ListBox,ListBoxItem,ListBoxSection,Header}from'react-aria-components';import {ChevronsUpDown,Check}from'lucide-react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {cva}from'class-variance-authority';import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {z as z$1}from'zod';function p(...r){return twMerge(clsx(r))}var c=cva("group flex flex-col gap-1.5 w-full",{variants:{size:{sm:"",default:"",lg:""}},defaultVariants:{size:"default"}}),x=cva("text-[var(--text-primary)] font-medium",{variants:{size:{sm:"text-xs",default:"text-sm",lg:"text-base"}},defaultVariants:{size:"default"}}),d=cva(["flex-1 bg-transparent outline-none","placeholder:text-[var(--muted-foreground)]","disabled:cursor-not-allowed"],{variants:{size:{sm:"text-xs",default:"text-sm",lg:"text-base"}},defaultVariants:{size:"default"}}),u=cva(["flex items-center w-full rounded-md border","bg-[var(--input-background)] text-[var(--content-foreground)]","border-[var(--input-border)]","transition-colors duration-[var(--transition-fast)]","focus-within:ring-2 focus-within:ring-[var(--ring)] focus-within:ring-offset-[var(--ring-offset)]","data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50","data-[invalid]:border-[var(--destructive-background)]"],{variants:{size:{sm:"h-8 px-2 gap-1 min-h-[44px]",default:"h-10 px-3 gap-2 min-h-[44px]",lg:"h-12 px-4 gap-2 min-h-[44px]"}},defaultVariants:{size:"default"}}),f=cva(["flex items-center justify-center shrink-0","text-[var(--muted-foreground)]","hover:text-[var(--text-primary)]","transition-colors","focus:outline-none"],{variants:{size:{sm:"h-4 w-4 min-h-[44px] min-w-[44px]",default:"h-5 w-5 min-h-[44px] min-w-[44px]",lg:"h-6 w-6 min-h-[44px] min-w-[44px]"}},defaultVariants:{size:"default"}}),g=cva(["w-[var(--trigger-width)] overflow-auto","rounded-md border border-[var(--border)]","bg-[var(--content-background)] text-[var(--content-foreground)]","shadow-md","data-[entering]:motion-safe:animate-in data-[entering]:motion-safe:fade-in-0","data-[exiting]:motion-safe:animate-out data-[exiting]:motion-safe:fade-out-0"]),C=cva("p-1 outline-none max-h-[300px] overflow-auto"),V=cva(["flex items-center gap-2 w-full rounded-sm px-2 py-1.5","text-[var(--content-foreground)]","cursor-pointer outline-none","data-[focused]:bg-[var(--accent-background)] data-[focused]:text-[var(--accent-foreground)]","data-[selected]:font-medium","data-[disabled]:opacity-50 data-[disabled]:cursor-not-allowed"],{variants:{size:{sm:"text-xs min-h-[44px]",default:"text-sm min-h-[44px]",lg:"text-base min-h-[44px]"}},defaultVariants:{size:"default"}}),h=cva("pt-1"),v=cva("px-2 py-1.5 text-xs font-semibold text-[var(--muted-foreground)]"),y=cva("text-[var(--muted-foreground)]",{variants:{size:{sm:"text-xs",default:"text-xs",lg:"text-sm"}},defaultVariants:{size:"default"}}),S=cva("text-[var(--destructive-background)]",{variants:{size:{sm:"text-xs",default:"text-xs",lg:"text-sm"}},defaultVariants:{size:"default"}});var B=forwardRef(({className:r,size:a="default",label:n,description:m,errorMessage:s,isRequired:b,isDisabled:R,isReadOnly:T,placeholder:k,name:D,allowsCustomValue:E=false,menuTrigger:O="input",defaultInputValue:H,inputValue:K,defaultSelectedKey:j,selectedKey:W,onInputChange:q,onSelectionChange:M,children:G,"aria-label":P,"aria-labelledby":N,"data-testid":U,..._},F)=>(process.env.NODE_ENV!=="production"&&!n&&!P&&!N&&console.warn("[Combobox] Either label, aria-label, or aria-labelledby is required for accessibility (WCAG 1.1.1)"),jsxs(ComboBox,{ref:F,className:p(c({size:a}),r),isRequired:b,isDisabled:R,isReadOnly:T,name:D,allowsCustomValue:E,menuTrigger:O,defaultInputValue:H,inputValue:K,defaultSelectedKey:j,selectedKey:W,onInputChange:q,onSelectionChange:M,"aria-label":n?void 0:P,"aria-labelledby":N,"data-testid":U,..._,children:[n&&jsxs(Label,{className:x({size:a}),children:[n,b&&jsx("span",{className:"text-[var(--destructive-background)] ml-1","aria-hidden":"true",children:"*"})]}),jsxs("div",{className:u({size:a}),children:[jsx(Input,{className:d({size:a}),placeholder:k}),jsx(Button,{className:f({size:a}),children:jsx(ChevronsUpDown,{className:"h-full w-full","aria-hidden":"true"})})]}),m&&!s&&jsx(Text,{slot:"description",className:y({size:a}),children:m}),s&&jsx(Text,{slot:"errorMessage",className:S({size:a}),children:s}),jsx(Popover,{className:g(),children:jsx(ListBox,{className:C(),children:G})})]})));B.displayName="Combobox";function I({children:r,className:a,textValue:n,...m}){let s=n||(typeof r=="string"?r:void 0);return jsx(ListBoxItem,{className:p(V({size:"default"}),a),textValue:s,...m,children:({isSelected:b})=>jsxs(Fragment,{children:[jsx("span",{className:"flex-1",children:r}),b&&jsx(Check,{className:"h-4 w-4 shrink-0 text-[var(--primary)]","aria-hidden":"true"})]})})}I.displayName="ComboboxItem";function z({header:r,children:a,className:n}){return jsxs(ListBoxSection,{className:p(h(),n),children:[r&&jsx(Header,{className:v(),children:r}),a]})}z.displayName="ComboboxSection";var A=z$1.object({className:z$1.string().optional(),children:z$1.any().optional(),id:z$1.string().optional(),"aria-label":z$1.string().optional(),"aria-labelledby":z$1.string().optional(),"aria-describedby":z$1.string().optional(),"aria-live":z$1.enum(["off","polite","assertive"]).optional(),"aria-hidden":z$1.boolean().optional(),"data-testid":z$1.string().optional()});var L=z$1.enum(["sm","default","lg"]),mo=A.extend({label:z$1.string().optional(),description:z$1.string().optional(),errorMessage:z$1.string().optional(),size:L.optional().default("default"),placeholder:z$1.string().optional(),isRequired:z$1.boolean().optional(),isDisabled:z$1.boolean().optional(),isReadOnly:z$1.boolean().optional(),name:z$1.string().optional(),allowsCustomValue:z$1.boolean().optional().default(false),menuTrigger:z$1.enum(["input","focus","manual"]).optional().default("input"),defaultInputValue:z$1.string().optional(),inputValue:z$1.string().optional(),defaultSelectedKey:z$1.union([z$1.string(),z$1.number()]).optional(),selectedKey:z$1.union([z$1.string(),z$1.number(),z$1.null()]).optional()}),bo=z$1.object({id:z$1.union([z$1.string(),z$1.number()]).optional(),textValue:z$1.string().optional(),isDisabled:z$1.boolean().optional(),children:z$1.custom(),className:z$1.string().optional()}),po=z$1.object({header:z$1.string().optional(),children:z$1.custom(),className:z$1.string().optional()});export{B as Combobox,I as ComboboxItem,bo as ComboboxItemPropsSchema,mo as ComboboxPropsSchema,z as ComboboxSection,po as ComboboxSectionPropsSchema,L as ComboboxSizeSchema,f as comboboxButtonVariants,y as comboboxDescriptionVariants,S as comboboxErrorVariants,d as comboboxInputVariants,V as comboboxItemVariants,x as comboboxLabelVariants,C as comboboxListBoxVariants,g as comboboxPopoverVariants,v as comboboxSectionHeaderVariants,h as comboboxSectionVariants,u as comboboxTriggerWrapperVariants,c as comboboxVariants};//# sourceMappingURL=index.mjs.map
|
|
3
3
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/cn.ts","../../../src/elements/Combobox/Combobox.styles.ts","../../../src/elements/Combobox/Combobox.tsx","../../../src/schemas/BaseComponentProps.ts","../../../src/elements/Combobox/Combobox.types.ts"],"names":["cn","inputs","twMerge","clsx","comboboxVariants","cva","comboboxLabelVariants","comboboxInputVariants","comboboxTriggerWrapperVariants","comboboxButtonVariants","comboboxPopoverVariants","comboboxListBoxVariants","comboboxItemVariants","comboboxSectionVariants","comboboxSectionHeaderVariants","comboboxDescriptionVariants","comboboxErrorVariants","Combobox","forwardRef","className","size","label","description","errorMessage","isRequired","isDisabled","isReadOnly","placeholder","name","allowsCustomValue","menuTrigger","defaultInputValue","inputValue","defaultSelectedKey","selectedKey","onInputChange","onSelectionChange","children","ariaLabel","ariaLabelledBy","dataTestId","props","ref","jsxs","AriaComboBox","AriaLabel","jsx","AriaInput","AriaButton","ChevronsUpDown","AriaText","AriaPopover","AriaListBox","ComboboxItem","textValue","computedTextValue","AriaListBoxItem","isSelected","Fragment","Check","ComboboxSection","header","AriaListBoxSection","AriaHeader","BaseComponentPropsSchema","z","ComboboxSizeSchema","ComboboxPropsSchema","ComboboxItemPropsSchema","ComboboxSectionPropsSchema"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Class Name Utility\n * Merges Tailwind CSS classes with conflict resolution\n *\n * Combines clsx for conditional classes and tailwind-merge for deduplication\n *\n * @example\n * cn('px-2 py-1', 'px-4') // => 'py-1 px-4' (px-4 overrides px-2)\n * cn('text-red-500', condition && 'text-blue-500') // => conditional application\n */\n\nimport { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import { cva } from 'class-variance-authority';\n\nexport const comboboxVariants = cva(\n 'group flex flex-col gap-1.5 w-full',\n {\n variants: {\n size: {\n sm: '',\n default: '',\n lg: '',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxLabelVariants = cva(\n 'text-[var(--text-primary)] font-medium',\n {\n variants: {\n size: {\n sm: 'text-xs',\n default: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxInputVariants = cva(\n [\n 'flex-1 bg-transparent outline-none',\n 'placeholder:text-[var(--muted-foreground)]',\n 'disabled:cursor-not-allowed',\n ],\n {\n variants: {\n size: {\n sm: 'text-xs',\n default: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxTriggerWrapperVariants = cva(\n [\n 'flex items-center w-full rounded-md border',\n 'bg-[var(--input-background)] text-[var(--content-foreground)]',\n 'border-[var(--input-border)]',\n 'transition-colors duration-[var(--transition-fast)]',\n 'focus-within:ring-2 focus-within:ring-[var(--ring)] focus-within:ring-offset-[var(--ring-offset)]',\n 'data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50',\n 'data-[invalid]:border-[var(--destructive-background)]',\n ],\n {\n variants: {\n size: {\n sm: 'h-8 px-2 gap-1 min-h-[44px]',\n default: 'h-10 px-3 gap-2 min-h-[44px]',\n lg: 'h-12 px-4 gap-2 min-h-[44px]',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxButtonVariants = cva(\n [\n 'flex items-center justify-center shrink-0',\n 'text-[var(--muted-foreground)]',\n 'hover:text-[var(--text-primary)]',\n 'transition-colors',\n 'focus:outline-none',\n ],\n {\n variants: {\n size: {\n sm: 'h-4 w-4 min-h-[44px] min-w-[44px]',\n default: 'h-5 w-5 min-h-[44px] min-w-[44px]',\n lg: 'h-6 w-6 min-h-[44px] min-w-[44px]',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxPopoverVariants = cva(\n [\n 'w-[var(--trigger-width)] overflow-auto',\n 'rounded-md border border-[var(--border)]',\n 'bg-[var(--content-background)] text-[var(--content-foreground)]',\n 'shadow-md',\n 'data-[entering]:motion-safe:animate-in data-[entering]:motion-safe:fade-in-0',\n 'data-[exiting]:motion-safe:animate-out data-[exiting]:motion-safe:fade-out-0',\n ]\n);\n\nexport const comboboxListBoxVariants = cva(\n 'p-1 outline-none max-h-[300px] overflow-auto'\n);\n\nexport const comboboxItemVariants = cva(\n [\n 'flex items-center gap-2 w-full rounded-sm px-2 py-1.5',\n 'text-[var(--content-foreground)]',\n 'cursor-pointer outline-none',\n 'data-[focused]:bg-[var(--accent-background)] data-[focused]:text-[var(--accent-foreground)]',\n 'data-[selected]:font-medium',\n 'data-[disabled]:opacity-50 data-[disabled]:cursor-not-allowed',\n ],\n {\n variants: {\n size: {\n sm: 'text-xs min-h-[44px]',\n default: 'text-sm min-h-[44px]',\n lg: 'text-base min-h-[44px]',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxSectionVariants = cva('pt-1');\n\nexport const comboboxSectionHeaderVariants = cva(\n 'px-2 py-1.5 text-xs font-semibold text-[var(--muted-foreground)]'\n);\n\nexport const comboboxDescriptionVariants = cva(\n 'text-[var(--muted-foreground)]',\n {\n variants: {\n size: {\n sm: 'text-xs',\n default: 'text-xs',\n lg: 'text-sm',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxErrorVariants = cva(\n 'text-[var(--destructive-background)]',\n {\n variants: {\n size: {\n sm: 'text-xs',\n default: 'text-xs',\n lg: 'text-sm',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n","'use client';\n\nimport { forwardRef, type ReactElement } from 'react';\nimport {\n ComboBox as AriaComboBox,\n Label as AriaLabel,\n Input as AriaInput,\n Button as AriaButton,\n Popover as AriaPopover,\n ListBox as AriaListBox,\n ListBoxItem as AriaListBoxItem,\n ListBoxSection as AriaListBoxSection,\n Header as AriaHeader,\n Text as AriaText,\n} from 'react-aria-components';\nimport { ChevronsUpDown, Check } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport type {\n ComboboxProps,\n ComboboxItemProps,\n ComboboxSectionProps,\n} from './Combobox.types';\nimport {\n comboboxVariants,\n comboboxLabelVariants,\n comboboxInputVariants,\n comboboxTriggerWrapperVariants,\n comboboxButtonVariants,\n comboboxPopoverVariants,\n comboboxListBoxVariants,\n comboboxItemVariants,\n comboboxSectionVariants,\n comboboxSectionHeaderVariants,\n comboboxDescriptionVariants,\n comboboxErrorVariants,\n} from './Combobox.styles';\n\n// ============================================================================\n// Combobox\n// ============================================================================\n\n/**\n * Combobox Component\n *\n * A filterable select/autocomplete component built on React Aria's ComboBox.\n * Supports type-to-filter, keyboard navigation, and optional custom values.\n *\n * @example\n * ```tsx\n * <Combobox label=\"Framework\">\n * <ComboboxItem id=\"react\">React</ComboboxItem>\n * <ComboboxItem id=\"vue\">Vue</ComboboxItem>\n * <ComboboxItem id=\"angular\">Angular</ComboboxItem>\n * </Combobox>\n * ```\n */\nexport const Combobox = forwardRef<HTMLDivElement, ComboboxProps>(\n (\n {\n className,\n size = 'default',\n label,\n description,\n errorMessage,\n isRequired,\n isDisabled,\n isReadOnly,\n placeholder,\n name,\n allowsCustomValue = false,\n menuTrigger = 'input',\n defaultInputValue,\n inputValue,\n defaultSelectedKey,\n selectedKey,\n onInputChange,\n onSelectionChange,\n children,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'data-testid': dataTestId,\n ...props\n },\n ref\n ): ReactElement => {\n // Warn if no accessible label\n if (process.env.NODE_ENV !== 'production') {\n if (!label && !ariaLabel && !ariaLabelledBy) {\n console.warn(\n '[Combobox] Either label, aria-label, or aria-labelledby is required for accessibility (WCAG 1.1.1)'\n );\n }\n }\n\n return (\n <AriaComboBox\n ref={ref}\n className={cn(comboboxVariants({ size }), className)}\n isRequired={isRequired}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n name={name}\n allowsCustomValue={allowsCustomValue}\n menuTrigger={menuTrigger}\n defaultInputValue={defaultInputValue}\n inputValue={inputValue}\n defaultSelectedKey={defaultSelectedKey}\n selectedKey={selectedKey}\n onInputChange={onInputChange}\n onSelectionChange={onSelectionChange}\n aria-label={!label ? ariaLabel : undefined}\n aria-labelledby={ariaLabelledBy}\n data-testid={dataTestId}\n {...props}\n >\n {label && (\n <AriaLabel className={comboboxLabelVariants({ size })}>\n {label}\n {isRequired && (\n <span className=\"text-[var(--destructive-background)] ml-1\" aria-hidden=\"true\">\n *\n </span>\n )}\n </AriaLabel>\n )}\n\n <div className={comboboxTriggerWrapperVariants({ size })}>\n <AriaInput\n className={comboboxInputVariants({ size })}\n placeholder={placeholder}\n />\n <AriaButton className={comboboxButtonVariants({ size })}>\n <ChevronsUpDown className=\"h-full w-full\" aria-hidden=\"true\" />\n </AriaButton>\n </div>\n\n {description && !errorMessage && (\n <AriaText slot=\"description\" className={comboboxDescriptionVariants({ size })}>\n {description}\n </AriaText>\n )}\n\n {errorMessage && (\n <AriaText slot=\"errorMessage\" className={comboboxErrorVariants({ size })}>\n {errorMessage}\n </AriaText>\n )}\n\n <AriaPopover className={comboboxPopoverVariants()}>\n <AriaListBox className={comboboxListBoxVariants()}>\n {children}\n </AriaListBox>\n </AriaPopover>\n </AriaComboBox>\n );\n }\n);\n\nCombobox.displayName = 'Combobox';\n\n// ============================================================================\n// ComboboxItem\n// ============================================================================\n\nexport function ComboboxItem({\n children,\n className,\n textValue,\n ...props\n}: ComboboxItemProps): ReactElement {\n // Compute textValue from string children if not explicitly provided\n const computedTextValue = textValue || (typeof children === 'string' ? children : undefined);\n\n return (\n <AriaListBoxItem\n className={cn(comboboxItemVariants({ size: 'default' }), className)}\n textValue={computedTextValue}\n {...props}\n >\n {({ isSelected }) => (\n <>\n <span className=\"flex-1\">{children}</span>\n {isSelected && (\n <Check className=\"h-4 w-4 shrink-0 text-[var(--primary)]\" aria-hidden=\"true\" />\n )}\n </>\n )}\n </AriaListBoxItem>\n );\n}\n\nComboboxItem.displayName = 'ComboboxItem';\n\n// ============================================================================\n// ComboboxSection\n// ============================================================================\n\nexport function ComboboxSection({\n header,\n children,\n className,\n}: ComboboxSectionProps): ReactElement {\n return (\n <AriaListBoxSection className={cn(comboboxSectionVariants(), className)}>\n {header && (\n <AriaHeader className={comboboxSectionHeaderVariants()}>\n {header}\n </AriaHeader>\n )}\n {children}\n </AriaListBoxSection>\n );\n}\n\nComboboxSection.displayName = 'ComboboxSection';\n","import { z } from 'zod';\n\n/**\n * Base props schema for all Themis components\n * Ensures consistent accessibility and styling APIs across the library\n *\n * @see spec.md FR-009 to FR-014 (Accessibility Requirements)\n * @see constitution.md Principle IV (Accessibility First - WCAG 2.2 AA minimum)\n */\nexport const BaseComponentPropsSchema = z.object({\n // Styling\n className: z.string().optional(),\n\n // React\n children: z.any().optional(), // ReactNode not directly supported by Zod\n id: z.string().optional(),\n\n // Accessibility (WCAG 2.2 AA requirements)\n 'aria-label': z.string().optional(),\n 'aria-labelledby': z.string().optional(),\n 'aria-describedby': z.string().optional(),\n 'aria-live': z.enum(['off', 'polite', 'assertive']).optional(),\n 'aria-hidden': z.boolean().optional(),\n\n // Testing & Development\n 'data-testid': z.string().optional(),\n});\n\nexport type BaseComponentProps = z.infer<typeof BaseComponentPropsSchema>;\n","import { z } from 'zod';\nimport { BaseComponentPropsSchema } from '../../schemas/BaseComponentProps';\nimport type { ReactNode } from 'react';\nimport type { ComboBoxProps as AriaComboBoxProps } from 'react-aria-components';\n\nexport const ComboboxSizeSchema = z.enum(['sm', 'default', 'lg']);\nexport type ComboboxSize = z.infer<typeof ComboboxSizeSchema>;\n\nexport const ComboboxPropsSchema = BaseComponentPropsSchema.extend({\n /** Label text */\n label: z.string().optional(),\n\n /** Description/help text */\n description: z.string().optional(),\n\n /** Error message */\n errorMessage: z.string().optional(),\n\n /** Size variant */\n size: ComboboxSizeSchema.optional().default('default'),\n\n /** Placeholder text */\n placeholder: z.string().optional(),\n\n /** Whether the field is required */\n isRequired: z.boolean().optional(),\n\n /** Whether the field is disabled */\n isDisabled: z.boolean().optional(),\n\n /** Whether the field is read-only */\n isReadOnly: z.boolean().optional(),\n\n /** Field name for form submission */\n name: z.string().optional(),\n\n /** Whether to allow custom values (not in the list) */\n allowsCustomValue: z.boolean().optional().default(false),\n\n /** The menu trigger behavior */\n menuTrigger: z.enum(['input', 'focus', 'manual']).optional().default('input'),\n\n /** Default input value (uncontrolled) */\n defaultInputValue: z.string().optional(),\n\n /** Input value (controlled) */\n inputValue: z.string().optional(),\n\n /** Default selected key (uncontrolled) */\n defaultSelectedKey: z.union([z.string(), z.number()]).optional(),\n\n /** Selected key (controlled) */\n selectedKey: z.union([z.string(), z.number(), z.null()]).optional(),\n});\n\nexport type ComboboxProps = z.infer<typeof ComboboxPropsSchema> &\n Omit<AriaComboBoxProps<object>, keyof z.infer<typeof ComboboxPropsSchema>> & {\n children: ReactNode;\n onInputChange?: (value: string) => void;\n onSelectionChange?: (key: string | number | null) => void;\n };\n\nexport const ComboboxItemPropsSchema = z.object({\n /** Unique key/value for the item */\n id: z.union([z.string(), z.number()]).optional(),\n /** Text value for filtering */\n textValue: z.string().optional(),\n /** Whether this item is disabled */\n isDisabled: z.boolean().optional(),\n /** Item content */\n children: z.custom<ReactNode>(),\n className: z.string().optional(),\n});\n\nexport type ComboboxItemProps = z.infer<typeof ComboboxItemPropsSchema>;\n\nexport const ComboboxSectionPropsSchema = z.object({\n /** Section header text */\n header: z.string().optional(),\n /** Section items */\n children: z.custom<ReactNode>(),\n className: z.string().optional(),\n});\n\nexport type ComboboxSectionProps = z.infer<typeof ComboboxSectionPropsSchema>;\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/cn.ts","../../../src/elements/Combobox/Combobox.styles.ts","../../../src/elements/Combobox/Combobox.tsx","../../../src/schemas/BaseComponentProps.ts","../../../src/elements/Combobox/Combobox.types.ts"],"names":["cn","inputs","twMerge","clsx","comboboxVariants","cva","comboboxLabelVariants","comboboxInputVariants","comboboxTriggerWrapperVariants","comboboxButtonVariants","comboboxPopoverVariants","comboboxListBoxVariants","comboboxItemVariants","comboboxSectionVariants","comboboxSectionHeaderVariants","comboboxDescriptionVariants","comboboxErrorVariants","Combobox","forwardRef","className","size","label","description","errorMessage","isRequired","isDisabled","isReadOnly","placeholder","name","allowsCustomValue","menuTrigger","defaultInputValue","inputValue","defaultSelectedKey","selectedKey","onInputChange","onSelectionChange","children","ariaLabel","ariaLabelledBy","dataTestId","props","ref","jsxs","AriaComboBox","AriaLabel","jsx","AriaInput","AriaButton","ChevronsUpDown","AriaText","AriaPopover","AriaListBox","ComboboxItem","textValue","computedTextValue","AriaListBoxItem","isSelected","Fragment","Check","ComboboxSection","header","AriaListBoxSection","AriaHeader","BaseComponentPropsSchema","z","ComboboxSizeSchema","ComboboxPropsSchema","ComboboxItemPropsSchema","ComboboxSectionPropsSchema"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Class Name Utility\n * Merges Tailwind CSS classes with conflict resolution\n *\n * Combines clsx for conditional classes and tailwind-merge for deduplication\n *\n * @example\n * cn('px-2 py-1', 'px-4') // => 'py-1 px-4' (px-4 overrides px-2)\n * cn('text-red-500', condition && 'text-blue-500') // => conditional application\n */\n\nimport { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import { cva } from 'class-variance-authority';\n\nexport const comboboxVariants = cva(\n 'group flex flex-col gap-1.5 w-full',\n {\n variants: {\n size: {\n sm: '',\n default: '',\n lg: '',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxLabelVariants = cva(\n 'text-[var(--text-primary)] font-medium',\n {\n variants: {\n size: {\n sm: 'text-xs',\n default: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxInputVariants = cva(\n [\n 'flex-1 bg-transparent outline-none',\n 'placeholder:text-[var(--muted-foreground)]',\n 'disabled:cursor-not-allowed',\n ],\n {\n variants: {\n size: {\n sm: 'text-xs',\n default: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxTriggerWrapperVariants = cva(\n [\n 'flex items-center w-full rounded-md border',\n 'bg-[var(--input-background)] text-[var(--content-foreground)]',\n 'border-[var(--input-border)]',\n 'transition-colors duration-[var(--transition-fast)]',\n 'focus-within:ring-2 focus-within:ring-[var(--ring)] focus-within:ring-offset-[var(--ring-offset)]',\n 'data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50',\n 'data-[invalid]:border-[var(--destructive-background)]',\n ],\n {\n variants: {\n size: {\n sm: 'h-8 px-2 gap-1 min-h-[44px]',\n default: 'h-10 px-3 gap-2 min-h-[44px]',\n lg: 'h-12 px-4 gap-2 min-h-[44px]',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxButtonVariants = cva(\n [\n 'flex items-center justify-center shrink-0',\n 'text-[var(--muted-foreground)]',\n 'hover:text-[var(--text-primary)]',\n 'transition-colors',\n 'focus:outline-none',\n ],\n {\n variants: {\n size: {\n sm: 'h-4 w-4 min-h-[44px] min-w-[44px]',\n default: 'h-5 w-5 min-h-[44px] min-w-[44px]',\n lg: 'h-6 w-6 min-h-[44px] min-w-[44px]',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxPopoverVariants = cva(\n [\n 'w-[var(--trigger-width)] overflow-auto',\n 'rounded-md border border-[var(--border)]',\n 'bg-[var(--content-background)] text-[var(--content-foreground)]',\n 'shadow-md',\n 'data-[entering]:motion-safe:animate-in data-[entering]:motion-safe:fade-in-0',\n 'data-[exiting]:motion-safe:animate-out data-[exiting]:motion-safe:fade-out-0',\n ]\n);\n\nexport const comboboxListBoxVariants = cva(\n 'p-1 outline-none max-h-[300px] overflow-auto'\n);\n\nexport const comboboxItemVariants = cva(\n [\n 'flex items-center gap-2 w-full rounded-sm px-2 py-1.5',\n 'text-[var(--content-foreground)]',\n 'cursor-pointer outline-none',\n 'data-[focused]:bg-[var(--accent-background)] data-[focused]:text-[var(--accent-foreground)]',\n 'data-[selected]:font-medium',\n 'data-[disabled]:opacity-50 data-[disabled]:cursor-not-allowed',\n ],\n {\n variants: {\n size: {\n sm: 'text-xs min-h-[44px]',\n default: 'text-sm min-h-[44px]',\n lg: 'text-base min-h-[44px]',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxSectionVariants = cva('pt-1');\n\nexport const comboboxSectionHeaderVariants = cva(\n 'px-2 py-1.5 text-xs font-semibold text-[var(--muted-foreground)]'\n);\n\nexport const comboboxDescriptionVariants = cva(\n 'text-[var(--muted-foreground)]',\n {\n variants: {\n size: {\n sm: 'text-xs',\n default: 'text-xs',\n lg: 'text-sm',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n\nexport const comboboxErrorVariants = cva(\n 'text-[var(--destructive-background)]',\n {\n variants: {\n size: {\n sm: 'text-xs',\n default: 'text-xs',\n lg: 'text-sm',\n },\n },\n defaultVariants: { size: 'default' },\n }\n);\n","'use client';\n\nimport { forwardRef, type ReactElement } from 'react';\nimport {\n ComboBox as AriaComboBox,\n Label as AriaLabel,\n Input as AriaInput,\n Button as AriaButton,\n Popover as AriaPopover,\n ListBox as AriaListBox,\n ListBoxItem as AriaListBoxItem,\n ListBoxSection as AriaListBoxSection,\n Header as AriaHeader,\n Text as AriaText,\n} from 'react-aria-components';\nimport { ChevronsUpDown, Check } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport type {\n ComboboxProps,\n ComboboxItemProps,\n ComboboxSectionProps,\n} from './Combobox.types';\nimport {\n comboboxVariants,\n comboboxLabelVariants,\n comboboxInputVariants,\n comboboxTriggerWrapperVariants,\n comboboxButtonVariants,\n comboboxPopoverVariants,\n comboboxListBoxVariants,\n comboboxItemVariants,\n comboboxSectionVariants,\n comboboxSectionHeaderVariants,\n comboboxDescriptionVariants,\n comboboxErrorVariants,\n} from './Combobox.styles';\n\n// ============================================================================\n// Combobox\n// ============================================================================\n\n/**\n * Combobox Component\n *\n * A filterable select/autocomplete component built on React Aria's ComboBox.\n * Supports type-to-filter, keyboard navigation, and optional custom values.\n *\n * @example\n * ```tsx\n * <Combobox label=\"Framework\">\n * <ComboboxItem id=\"react\">React</ComboboxItem>\n * <ComboboxItem id=\"vue\">Vue</ComboboxItem>\n * <ComboboxItem id=\"angular\">Angular</ComboboxItem>\n * </Combobox>\n * ```\n */\nexport const Combobox = forwardRef<HTMLDivElement, ComboboxProps>(\n (\n {\n className,\n size = 'default',\n label,\n description,\n errorMessage,\n isRequired,\n isDisabled,\n isReadOnly,\n placeholder,\n name,\n allowsCustomValue = false,\n menuTrigger = 'input',\n defaultInputValue,\n inputValue,\n defaultSelectedKey,\n selectedKey,\n onInputChange,\n onSelectionChange,\n children,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'data-testid': dataTestId,\n ...props\n },\n ref\n ): ReactElement => {\n // Warn if no accessible label\n if (process.env.NODE_ENV !== 'production') {\n if (!label && !ariaLabel && !ariaLabelledBy) {\n console.warn(\n '[Combobox] Either label, aria-label, or aria-labelledby is required for accessibility (WCAG 1.1.1)'\n );\n }\n }\n\n return (\n <AriaComboBox\n ref={ref}\n className={cn(comboboxVariants({ size }), className)}\n isRequired={isRequired}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n name={name}\n allowsCustomValue={allowsCustomValue}\n menuTrigger={menuTrigger}\n defaultInputValue={defaultInputValue}\n inputValue={inputValue}\n defaultSelectedKey={defaultSelectedKey}\n selectedKey={selectedKey}\n onInputChange={onInputChange}\n onSelectionChange={onSelectionChange}\n aria-label={!label ? ariaLabel : undefined}\n aria-labelledby={ariaLabelledBy}\n data-testid={dataTestId}\n {...props}\n >\n {label && (\n <AriaLabel className={comboboxLabelVariants({ size })}>\n {label}\n {isRequired && (\n <span className=\"text-[var(--destructive-background)] ml-1\" aria-hidden=\"true\">\n *\n </span>\n )}\n </AriaLabel>\n )}\n\n <div className={comboboxTriggerWrapperVariants({ size })}>\n <AriaInput\n className={comboboxInputVariants({ size })}\n placeholder={placeholder}\n />\n <AriaButton className={comboboxButtonVariants({ size })}>\n <ChevronsUpDown className=\"h-full w-full\" aria-hidden=\"true\" />\n </AriaButton>\n </div>\n\n {description && !errorMessage && (\n <AriaText slot=\"description\" className={comboboxDescriptionVariants({ size })}>\n {description}\n </AriaText>\n )}\n\n {errorMessage && (\n <AriaText slot=\"errorMessage\" className={comboboxErrorVariants({ size })}>\n {errorMessage}\n </AriaText>\n )}\n\n <AriaPopover className={comboboxPopoverVariants()}>\n <AriaListBox className={comboboxListBoxVariants()}>\n {children}\n </AriaListBox>\n </AriaPopover>\n </AriaComboBox>\n );\n }\n);\n\nCombobox.displayName = 'Combobox';\n\n// ============================================================================\n// ComboboxItem\n// ============================================================================\n\nexport function ComboboxItem({\n children,\n className,\n textValue,\n ...props\n}: ComboboxItemProps): ReactElement {\n // Compute textValue from string children if not explicitly provided\n const computedTextValue = textValue || (typeof children === 'string' ? children : undefined);\n\n return (\n <AriaListBoxItem\n className={cn(comboboxItemVariants({ size: 'default' }), className)}\n textValue={computedTextValue}\n {...props}\n >\n {({ isSelected }) => (\n <>\n <span className=\"flex-1\">{children}</span>\n {isSelected && (\n <Check className=\"h-4 w-4 shrink-0 text-[var(--primary)]\" aria-hidden=\"true\" />\n )}\n </>\n )}\n </AriaListBoxItem>\n );\n}\n\nComboboxItem.displayName = 'ComboboxItem';\n\n// ============================================================================\n// ComboboxSection\n// ============================================================================\n\nexport function ComboboxSection({\n header,\n children,\n className,\n}: ComboboxSectionProps): ReactElement {\n return (\n <AriaListBoxSection className={cn(comboboxSectionVariants(), className)}>\n {header && (\n <AriaHeader className={comboboxSectionHeaderVariants()}>\n {header}\n </AriaHeader>\n )}\n {children}\n </AriaListBoxSection>\n );\n}\n\nComboboxSection.displayName = 'ComboboxSection';\n","import { z } from 'zod';\n\n/**\n * Base props schema for all Themis components\n * Ensures consistent accessibility and styling APIs across the library\n *\n * @see spec.md FR-009 to FR-014 (Accessibility Requirements)\n * @see constitution.md Principle IV (Accessibility First - WCAG 2.2 AA minimum)\n */\nexport const BaseComponentPropsSchema = z.object({\n // Styling\n className: z.string().optional(),\n\n // React\n children: z.any().optional(), // ReactNode not directly supported by Zod\n id: z.string().optional(),\n\n // Accessibility (WCAG 2.2 AA requirements)\n 'aria-label': z.string().optional(),\n 'aria-labelledby': z.string().optional(),\n 'aria-describedby': z.string().optional(),\n 'aria-live': z.enum(['off', 'polite', 'assertive']).optional(),\n 'aria-hidden': z.boolean().optional(),\n\n // Testing & Development\n 'data-testid': z.string().optional(),\n});\n\nexport type BaseComponentProps = z.infer<typeof BaseComponentPropsSchema>;\n","import { z } from 'zod';\nimport { BaseComponentPropsSchema } from '../../schemas/BaseComponentProps';\nimport type { ReactNode } from 'react';\nimport type { ComboBoxProps as AriaComboBoxProps } from 'react-aria-components';\n\nexport const ComboboxSizeSchema = z.enum(['sm', 'default', 'lg']);\nexport type ComboboxSize = z.infer<typeof ComboboxSizeSchema>;\n\nexport const ComboboxPropsSchema = BaseComponentPropsSchema.extend({\n /** Label text */\n label: z.string().optional(),\n\n /** Description/help text */\n description: z.string().optional(),\n\n /** Error message */\n errorMessage: z.string().optional(),\n\n /** Size variant */\n size: ComboboxSizeSchema.optional().default('default'),\n\n /** Placeholder text */\n placeholder: z.string().optional(),\n\n /** Whether the field is required */\n isRequired: z.boolean().optional(),\n\n /** Whether the field is disabled */\n isDisabled: z.boolean().optional(),\n\n /** Whether the field is read-only */\n isReadOnly: z.boolean().optional(),\n\n /** Field name for form submission */\n name: z.string().optional(),\n\n /** Whether to allow custom values (not in the list) */\n allowsCustomValue: z.boolean().optional().default(false),\n\n /** The menu trigger behavior */\n menuTrigger: z.enum(['input', 'focus', 'manual']).optional().default('input'),\n\n /** Default input value (uncontrolled) */\n defaultInputValue: z.string().optional(),\n\n /** Input value (controlled) */\n inputValue: z.string().optional(),\n\n /** Default selected key (uncontrolled) */\n defaultSelectedKey: z.union([z.string(), z.number()]).optional(),\n\n /** Selected key (controlled) */\n selectedKey: z.union([z.string(), z.number(), z.null()]).optional(),\n});\n\nexport interface ComboboxPropsOwn {\n className?: string;\n id?: string;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n 'aria-describedby'?: string;\n 'aria-live'?: 'off' | 'polite' | 'assertive';\n 'aria-hidden'?: boolean;\n 'data-testid'?: string;\n label?: string;\n description?: string;\n errorMessage?: string;\n size?: ComboboxSize;\n placeholder?: string;\n isRequired?: boolean;\n isDisabled?: boolean;\n isReadOnly?: boolean;\n name?: string;\n allowsCustomValue?: boolean;\n menuTrigger?: 'input' | 'focus' | 'manual';\n defaultInputValue?: string;\n inputValue?: string;\n defaultSelectedKey?: string | number;\n selectedKey?: string | number | null;\n children: ReactNode;\n onInputChange?: (value: string) => void;\n onSelectionChange?: (key: string | number | null) => void;\n}\n\nexport type ComboboxProps = ComboboxPropsOwn &\n Omit<AriaComboBoxProps<object>, keyof ComboboxPropsOwn>;\n\nexport const ComboboxItemPropsSchema = z.object({\n /** Unique key/value for the item */\n id: z.union([z.string(), z.number()]).optional(),\n /** Text value for filtering */\n textValue: z.string().optional(),\n /** Whether this item is disabled */\n isDisabled: z.boolean().optional(),\n /** Item content */\n children: z.custom<ReactNode>(),\n className: z.string().optional(),\n});\n\nexport interface ComboboxItemProps {\n id?: string | number;\n textValue?: string;\n isDisabled?: boolean;\n children?: ReactNode;\n className?: string;\n}\n\nexport const ComboboxSectionPropsSchema = z.object({\n /** Section header text */\n header: z.string().optional(),\n /** Section items */\n children: z.custom<ReactNode>(),\n className: z.string().optional(),\n});\n\nexport interface ComboboxSectionProps {\n header?: string;\n children?: ReactNode;\n className?: string;\n}\n"]}
|
|
@@ -25,92 +25,35 @@ interface InternalDropdownProps extends DropdownProps {
|
|
|
25
25
|
*
|
|
26
26
|
* @see spec.md FR-008 to FR-012
|
|
27
27
|
*/
|
|
28
|
-
declare const DropdownTrigger: import("react").ForwardRefExoticComponent<
|
|
29
|
-
children: ReactNode;
|
|
30
|
-
className?: string | undefined;
|
|
31
|
-
id?: string | undefined;
|
|
32
|
-
'aria-label'?: string | undefined;
|
|
33
|
-
'aria-labelledby'?: string | undefined;
|
|
34
|
-
'aria-describedby'?: string | undefined;
|
|
35
|
-
'aria-live'?: "off" | "polite" | "assertive" | undefined;
|
|
36
|
-
'aria-hidden'?: boolean | undefined;
|
|
37
|
-
'data-testid'?: string | undefined;
|
|
38
|
-
} & import("react").RefAttributes<HTMLButtonElement>>;
|
|
28
|
+
declare const DropdownTrigger: import("react").ForwardRefExoticComponent<DropdownTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
39
29
|
/**
|
|
40
30
|
* Dropdown.Menu Component
|
|
41
31
|
* Renders menu with positioning, collision detection, and focus management
|
|
42
32
|
*
|
|
43
33
|
* @see spec.md FR-014 to FR-024
|
|
44
34
|
*/
|
|
45
|
-
declare const DropdownMenu: import("react").ForwardRefExoticComponent<
|
|
46
|
-
align: "end" | "center" | "start";
|
|
47
|
-
side: "top" | "bottom" | "left" | "right";
|
|
48
|
-
children: ReactNode;
|
|
49
|
-
id?: string | undefined;
|
|
50
|
-
'aria-label'?: string | undefined;
|
|
51
|
-
'aria-labelledby'?: string | undefined;
|
|
52
|
-
'aria-describedby'?: string | undefined;
|
|
53
|
-
'aria-live'?: "off" | "polite" | "assertive" | undefined;
|
|
54
|
-
'aria-hidden'?: boolean | undefined;
|
|
55
|
-
'data-testid'?: string | undefined;
|
|
56
|
-
className?: string | undefined;
|
|
57
|
-
} & import("react").RefAttributes<HTMLDivElement>>;
|
|
35
|
+
declare const DropdownMenu: import("react").ForwardRefExoticComponent<DropdownMenuProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
58
36
|
/**
|
|
59
37
|
* Dropdown.Item Component
|
|
60
38
|
* Menu item with action callbacks, disabled state, shortcuts, icons, and nested submenu support
|
|
61
39
|
*
|
|
62
40
|
* @see spec.md FR-025 to FR-034
|
|
63
41
|
*/
|
|
64
|
-
declare const DropdownItem: import("react").ForwardRefExoticComponent<
|
|
65
|
-
isDisabled: boolean;
|
|
66
|
-
id?: string | undefined;
|
|
67
|
-
'aria-labelledby'?: string | undefined;
|
|
68
|
-
'aria-describedby'?: string | undefined;
|
|
69
|
-
'aria-live'?: "off" | "polite" | "assertive" | undefined;
|
|
70
|
-
'aria-hidden'?: boolean | undefined;
|
|
71
|
-
'data-testid'?: string | undefined;
|
|
72
|
-
children?: ReactNode;
|
|
73
|
-
onAction?: import("zod/v4/core").$InferOuterFunctionType<import("zod/v4/core").$ZodFunctionArgs, import("zod/v4/core").$ZodFunctionOut> | undefined;
|
|
74
|
-
shortcut?: string | undefined;
|
|
75
|
-
icon?: ReactNode;
|
|
76
|
-
iconRight?: ReactNode;
|
|
77
|
-
'aria-label'?: string | undefined;
|
|
78
|
-
className?: string | undefined;
|
|
79
|
-
} & import("react").RefAttributes<HTMLDivElement>>;
|
|
42
|
+
declare const DropdownItem: import("react").ForwardRefExoticComponent<DropdownItemProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
80
43
|
/**
|
|
81
44
|
* Dropdown.Separator Component
|
|
82
45
|
* Non-focusable visual divider
|
|
83
46
|
*
|
|
84
47
|
* @see spec.md FR-043 to FR-045
|
|
85
48
|
*/
|
|
86
|
-
declare const DropdownSeparator: import("react").NamedExoticComponent<
|
|
87
|
-
children?: any;
|
|
88
|
-
id?: string | undefined;
|
|
89
|
-
'aria-label'?: string | undefined;
|
|
90
|
-
'aria-labelledby'?: string | undefined;
|
|
91
|
-
'aria-describedby'?: string | undefined;
|
|
92
|
-
'aria-live'?: "off" | "polite" | "assertive" | undefined;
|
|
93
|
-
'aria-hidden'?: boolean | undefined;
|
|
94
|
-
'data-testid'?: string | undefined;
|
|
95
|
-
className?: string | undefined;
|
|
96
|
-
} & import("react").RefAttributes<HTMLDivElement>>;
|
|
49
|
+
declare const DropdownSeparator: import("react").NamedExoticComponent<DropdownSeparatorProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
97
50
|
/**
|
|
98
51
|
* Dropdown.Label Component
|
|
99
52
|
* Non-interactive section header
|
|
100
53
|
*
|
|
101
54
|
* @see spec.md FR-046 to FR-048
|
|
102
55
|
*/
|
|
103
|
-
declare const DropdownLabel: import("react").NamedExoticComponent<
|
|
104
|
-
children: ReactNode;
|
|
105
|
-
id?: string | undefined;
|
|
106
|
-
'aria-label'?: string | undefined;
|
|
107
|
-
'aria-labelledby'?: string | undefined;
|
|
108
|
-
'aria-describedby'?: string | undefined;
|
|
109
|
-
'aria-live'?: "off" | "polite" | "assertive" | undefined;
|
|
110
|
-
'aria-hidden'?: boolean | undefined;
|
|
111
|
-
'data-testid'?: string | undefined;
|
|
112
|
-
className?: string | undefined;
|
|
113
|
-
} & import("react").RefAttributes<HTMLDivElement>>;
|
|
56
|
+
declare const DropdownLabel: import("react").NamedExoticComponent<DropdownLabelProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
114
57
|
/**
|
|
115
58
|
* Export compound component via Object.assign for backwards compatibility.
|
|
116
59
|
* Enables `<Dropdown.Trigger>`, `<Dropdown.Menu>`, etc.
|
|
@@ -120,68 +63,11 @@ declare const DropdownLabel: import("react").NamedExoticComponent<{
|
|
|
120
63
|
* for better tree-shaking. See named exports below.
|
|
121
64
|
*/
|
|
122
65
|
export declare const Dropdown: import("react").ForwardRefExoticComponent<InternalDropdownProps & import("react").RefAttributes<HTMLDivElement>> & {
|
|
123
|
-
Trigger: import("react").ForwardRefExoticComponent<
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
'aria-labelledby'?: string | undefined;
|
|
129
|
-
'aria-describedby'?: string | undefined;
|
|
130
|
-
'aria-live'?: "off" | "polite" | "assertive" | undefined;
|
|
131
|
-
'aria-hidden'?: boolean | undefined;
|
|
132
|
-
'data-testid'?: string | undefined;
|
|
133
|
-
} & import("react").RefAttributes<HTMLButtonElement>>;
|
|
134
|
-
Menu: import("react").ForwardRefExoticComponent<{
|
|
135
|
-
align: "end" | "center" | "start";
|
|
136
|
-
side: "top" | "bottom" | "left" | "right";
|
|
137
|
-
children: ReactNode;
|
|
138
|
-
id?: string | undefined;
|
|
139
|
-
'aria-label'?: string | undefined;
|
|
140
|
-
'aria-labelledby'?: string | undefined;
|
|
141
|
-
'aria-describedby'?: string | undefined;
|
|
142
|
-
'aria-live'?: "off" | "polite" | "assertive" | undefined;
|
|
143
|
-
'aria-hidden'?: boolean | undefined;
|
|
144
|
-
'data-testid'?: string | undefined;
|
|
145
|
-
className?: string | undefined;
|
|
146
|
-
} & import("react").RefAttributes<HTMLDivElement>>;
|
|
147
|
-
Item: import("react").ForwardRefExoticComponent<{
|
|
148
|
-
isDisabled: boolean;
|
|
149
|
-
id?: string | undefined;
|
|
150
|
-
'aria-labelledby'?: string | undefined;
|
|
151
|
-
'aria-describedby'?: string | undefined;
|
|
152
|
-
'aria-live'?: "off" | "polite" | "assertive" | undefined;
|
|
153
|
-
'aria-hidden'?: boolean | undefined;
|
|
154
|
-
'data-testid'?: string | undefined;
|
|
155
|
-
children?: ReactNode;
|
|
156
|
-
onAction?: import("zod/v4/core").$InferOuterFunctionType<import("zod/v4/core").$ZodFunctionArgs, import("zod/v4/core").$ZodFunctionOut> | undefined;
|
|
157
|
-
shortcut?: string | undefined;
|
|
158
|
-
icon?: ReactNode;
|
|
159
|
-
iconRight?: ReactNode;
|
|
160
|
-
'aria-label'?: string | undefined;
|
|
161
|
-
className?: string | undefined;
|
|
162
|
-
} & import("react").RefAttributes<HTMLDivElement>>;
|
|
163
|
-
Separator: import("react").NamedExoticComponent<{
|
|
164
|
-
children?: any;
|
|
165
|
-
id?: string | undefined;
|
|
166
|
-
'aria-label'?: string | undefined;
|
|
167
|
-
'aria-labelledby'?: string | undefined;
|
|
168
|
-
'aria-describedby'?: string | undefined;
|
|
169
|
-
'aria-live'?: "off" | "polite" | "assertive" | undefined;
|
|
170
|
-
'aria-hidden'?: boolean | undefined;
|
|
171
|
-
'data-testid'?: string | undefined;
|
|
172
|
-
className?: string | undefined;
|
|
173
|
-
} & import("react").RefAttributes<HTMLDivElement>>;
|
|
174
|
-
Label: import("react").NamedExoticComponent<{
|
|
175
|
-
children: ReactNode;
|
|
176
|
-
id?: string | undefined;
|
|
177
|
-
'aria-label'?: string | undefined;
|
|
178
|
-
'aria-labelledby'?: string | undefined;
|
|
179
|
-
'aria-describedby'?: string | undefined;
|
|
180
|
-
'aria-live'?: "off" | "polite" | "assertive" | undefined;
|
|
181
|
-
'aria-hidden'?: boolean | undefined;
|
|
182
|
-
'data-testid'?: string | undefined;
|
|
183
|
-
className?: string | undefined;
|
|
184
|
-
} & import("react").RefAttributes<HTMLDivElement>>;
|
|
66
|
+
Trigger: import("react").ForwardRefExoticComponent<DropdownTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
67
|
+
Menu: import("react").ForwardRefExoticComponent<DropdownMenuProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
68
|
+
Item: import("react").ForwardRefExoticComponent<DropdownItemProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
69
|
+
Separator: import("react").NamedExoticComponent<DropdownSeparatorProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
70
|
+
Label: import("react").NamedExoticComponent<DropdownLabelProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
185
71
|
};
|
|
186
72
|
export { DropdownTrigger, DropdownMenu, DropdownItem, DropdownSeparator, DropdownLabel };
|
|
187
73
|
export { menuVariants, menuItemVariants };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dropdown.d.ts","sourceRoot":"","sources":["../../../src/elements/Dropdown/Dropdown.tsx"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,OAAO,EAA8C,KAAK,SAAS,EAAuD,MAAM,OAAO,CAAC;AAcxI,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAY1B;;;;;GAKG;AACH,UAAU,qBAAsB,SAAQ,aAAa;IACnD,QAAQ,EAAE,SAAS,CAAC;CACrB;AAmCD;;;;;GAKG;AACH,QAAA,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"Dropdown.d.ts","sourceRoot":"","sources":["../../../src/elements/Dropdown/Dropdown.tsx"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,OAAO,EAA8C,KAAK,SAAS,EAAuD,MAAM,OAAO,CAAC;AAcxI,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAY1B;;;;;GAKG;AACH,UAAU,qBAAsB,SAAQ,aAAa;IACnD,QAAQ,EAAE,SAAS,CAAC;CACrB;AAmCD;;;;;GAKG;AACH,QAAA,MAAM,eAAe,oHAiBpB,CAAC;AAIF;;;;;GAKG;AACH,QAAA,MAAM,YAAY,8GAgBjB,CAAC;AAIF;;;;;GAKG;AACH,QAAA,MAAM,YAAY,8GAkEjB,CAAC;AAIF;;;;;GAKG;AACH,QAAA,MAAM,iBAAiB,8GAYrB,CAAC;AAIH;;;;;GAKG;AACH,QAAA,MAAM,aAAa,0GAcjB,CAAC;AAIH;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ;;;;;;CAMnB,CAAC;AAGH,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAC;AAGzF,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAG1C,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,GACnB,CAAC"}
|