@jakubmazanec/ui 0.1.0 → 0.1.1-unstable.91147a2

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.
Files changed (201) hide show
  1. package/build/components/Button.d.ts +10 -10
  2. package/build/components/Button.js.map +1 -1
  3. package/build/components/Card.d.ts +6 -6
  4. package/build/components/Card.js.map +1 -1
  5. package/build/components/Checkbox.d.ts +8 -8
  6. package/build/components/Checkbox.js.map +1 -1
  7. package/build/components/CheckboxField.d.ts +2 -2
  8. package/build/components/CheckboxField.js.map +1 -1
  9. package/build/components/Combobox.d.ts +10 -10
  10. package/build/components/Combobox.js +4 -4
  11. package/build/components/Combobox.js.map +2 -2
  12. package/build/components/ComboboxOption.d.ts +8 -8
  13. package/build/components/ComboboxOption.js.map +1 -1
  14. package/build/components/Container.d.ts +8 -8
  15. package/build/components/Container.js.map +1 -1
  16. package/build/components/Description.d.ts +6 -6
  17. package/build/components/Description.js.map +1 -1
  18. package/build/components/Dialog.d.ts +6 -6
  19. package/build/components/Dialog.js.map +1 -1
  20. package/build/components/DialogPanel.d.ts +6 -6
  21. package/build/components/DialogPanel.js.map +1 -1
  22. package/build/components/DialogTitle.d.ts +6 -6
  23. package/build/components/DialogTitle.js.map +1 -1
  24. package/build/components/Error.d.ts +6 -6
  25. package/build/components/Error.js.map +1 -1
  26. package/build/components/Field.d.ts +4 -4
  27. package/build/components/Field.js.map +1 -1
  28. package/build/components/Fieldset.d.ts +8 -8
  29. package/build/components/Fieldset.js.map +1 -1
  30. package/build/components/Form.d.ts +6 -6
  31. package/build/components/Form.js.map +1 -1
  32. package/build/components/Icon.d.ts +9 -9
  33. package/build/components/Icon.js.map +1 -1
  34. package/build/components/Input.d.ts +8 -8
  35. package/build/components/Input.js.map +1 -1
  36. package/build/components/Label.d.ts +6 -6
  37. package/build/components/Label.js.map +1 -1
  38. package/build/components/Legend.d.ts +6 -6
  39. package/build/components/Legend.js.map +1 -1
  40. package/build/components/Listbox.d.ts +8 -8
  41. package/build/components/Listbox.js +2 -2
  42. package/build/components/Listbox.js.map +2 -2
  43. package/build/components/ListboxOption.d.ts +8 -8
  44. package/build/components/ListboxOption.js.map +1 -1
  45. package/build/components/Menu.d.ts +6 -6
  46. package/build/components/Menu.js.map +1 -1
  47. package/build/components/MenuButton.d.ts +8 -8
  48. package/build/components/MenuButton.js.map +1 -1
  49. package/build/components/MenuHeading.d.ts +6 -6
  50. package/build/components/MenuHeading.js.map +1 -1
  51. package/build/components/MenuItem.d.ts +8 -8
  52. package/build/components/MenuItem.js.map +1 -1
  53. package/build/components/MenuItems.d.ts +6 -6
  54. package/build/components/MenuItems.js.map +1 -1
  55. package/build/components/MenuSection.d.ts +6 -6
  56. package/build/components/MenuSection.js.map +1 -1
  57. package/build/components/MenuSeparator.d.ts +6 -6
  58. package/build/components/MenuSeparator.js.map +1 -1
  59. package/build/components/Popover.d.ts +6 -6
  60. package/build/components/Popover.js.map +1 -1
  61. package/build/components/PopoverBackdrop.d.ts +6 -6
  62. package/build/components/PopoverBackdrop.js.map +1 -1
  63. package/build/components/PopoverButton.d.ts +8 -8
  64. package/build/components/PopoverButton.js.map +1 -1
  65. package/build/components/PopoverGroup.d.ts +6 -6
  66. package/build/components/PopoverGroup.js.map +1 -1
  67. package/build/components/PopoverPanel.d.ts +6 -6
  68. package/build/components/PopoverPanel.js.map +1 -1
  69. package/build/components/Radio.d.ts +8 -8
  70. package/build/components/Radio.js +1 -1
  71. package/build/components/Radio.js.map +2 -2
  72. package/build/components/RadioField.d.ts +2 -2
  73. package/build/components/RadioField.js.map +1 -1
  74. package/build/components/RadioGroup.d.ts +8 -8
  75. package/build/components/RadioGroup.js.map +1 -1
  76. package/build/components/Spinner.d.ts +2 -2
  77. package/build/components/Spinner.js.map +1 -1
  78. package/build/components/Table.d.ts +6 -6
  79. package/build/components/Table.js.map +1 -1
  80. package/build/components/TableBody.d.ts +6 -6
  81. package/build/components/TableBody.js.map +1 -1
  82. package/build/components/TableCaption.d.ts +6 -6
  83. package/build/components/TableCaption.js.map +1 -1
  84. package/build/components/TableCell.d.ts +6 -6
  85. package/build/components/TableCell.js.map +1 -1
  86. package/build/components/TableFoot.d.ts +6 -6
  87. package/build/components/TableFoot.js.map +1 -1
  88. package/build/components/TableHead.d.ts +6 -6
  89. package/build/components/TableHead.js.map +1 -1
  90. package/build/components/TableHeader.d.ts +6 -6
  91. package/build/components/TableHeader.js.map +1 -1
  92. package/build/components/TableRow.d.ts +6 -6
  93. package/build/components/TableRow.js.map +1 -1
  94. package/build/components/Text.d.ts +8 -8
  95. package/build/components/Text.js.map +1 -1
  96. package/build/components/Textarea.d.ts +8 -8
  97. package/build/components/Textarea.js.map +1 -1
  98. package/build/components/data-table/DataTable.js +13 -13
  99. package/build/components/data-table/DataTable.js.map +2 -2
  100. package/build/components/data-table/internals/DataTableHeader.js +23 -23
  101. package/build/components/data-table/internals/DataTableHeader.js.map +2 -2
  102. package/build/components/data-table/internals/DataTableHeaderFilter.js +14 -14
  103. package/build/components/data-table/internals/DataTableHeaderFilter.js.map +2 -2
  104. package/build/components/data-table/internals/DataTablePagination.js +10 -10
  105. package/build/components/data-table/internals/DataTablePagination.js.map +2 -2
  106. package/build/components/data-table/internals/DataTableSearch.js +2 -2
  107. package/build/components/data-table/internals/DataTableSearch.js.map +2 -2
  108. package/build/components/data-table/internals/addFilter.js.map +1 -1
  109. package/build/components/internals/filterProps.d.ts +2 -2
  110. package/build/components/internals/filterProps.js.map +1 -1
  111. package/build/components/internals/forwardRef.d.ts +2 -2
  112. package/build/components/internals/forwardRef.js.map +1 -1
  113. package/build/development/createTailwindConfig.d.ts +6 -6
  114. package/build/development/createTailwindConfig.js.map +1 -1
  115. package/build/development/internals/createDisplayColor.d.ts +1 -1
  116. package/build/development/internals/createDisplayColor.js +1 -1
  117. package/build/development/internals/createDisplayColor.js.map +2 -2
  118. package/build/development/internals/hexToHsl.js +3 -3
  119. package/build/development/internals/hexToHsl.js.map +2 -2
  120. package/build/development/internals/isHex.js +3 -3
  121. package/build/development/internals/isHex.js.map +2 -2
  122. package/build/development/internals/round.js +1 -1
  123. package/build/development/internals/round.js.map +2 -2
  124. package/build/theme/Theme.d.ts +12 -12
  125. package/build/theme/internals/ClassName.d.ts +1 -1
  126. package/build/theme/internals/ComponentThemeCompoundVariants.d.ts +4 -4
  127. package/build/theme/internals/ComponentThemeDefinitionVariants.d.ts +1 -1
  128. package/build/theme/internals/createUseComponentThemeReturn.d.ts +1 -1
  129. package/build/theme/internals/createUseComponentThemeReturn.js.map +1 -1
  130. package/build/theme/internals/themeContext.d.ts +22 -22
  131. package/build/theme/internals/useTheme.d.ts +22 -22
  132. package/build/theme/internals.d.ts +12 -12
  133. package/build/theme/internals.js +0 -12
  134. package/build/theme/internals.js.map +2 -2
  135. package/package.json +4 -4
  136. package/source/components/Button.tsx +9 -9
  137. package/source/components/Card.ts +5 -5
  138. package/source/components/Checkbox.tsx +10 -10
  139. package/source/components/CheckboxField.tsx +15 -15
  140. package/source/components/Combobox.tsx +38 -40
  141. package/source/components/ComboboxOption.tsx +6 -6
  142. package/source/components/Container.ts +5 -5
  143. package/source/components/Description.tsx +5 -5
  144. package/source/components/Dialog.tsx +9 -9
  145. package/source/components/DialogPanel.tsx +5 -5
  146. package/source/components/DialogTitle.tsx +5 -5
  147. package/source/components/Error.tsx +5 -5
  148. package/source/components/Field.tsx +18 -18
  149. package/source/components/Fieldset.tsx +5 -5
  150. package/source/components/Form.tsx +7 -7
  151. package/source/components/Icon.tsx +6 -6
  152. package/source/components/Input.tsx +8 -8
  153. package/source/components/Label.tsx +5 -5
  154. package/source/components/Legend.tsx +5 -5
  155. package/source/components/Listbox.tsx +39 -41
  156. package/source/components/ListboxOption.tsx +6 -6
  157. package/source/components/Menu.tsx +5 -5
  158. package/source/components/MenuButton.tsx +5 -5
  159. package/source/components/MenuHeading.tsx +5 -5
  160. package/source/components/MenuItem.tsx +5 -5
  161. package/source/components/MenuItems.tsx +6 -6
  162. package/source/components/MenuSection.tsx +5 -5
  163. package/source/components/MenuSeparator.tsx +5 -5
  164. package/source/components/Popover.tsx +5 -5
  165. package/source/components/PopoverBackdrop.tsx +5 -5
  166. package/source/components/PopoverButton.tsx +6 -6
  167. package/source/components/PopoverGroup.tsx +5 -5
  168. package/source/components/PopoverPanel.tsx +7 -7
  169. package/source/components/Radio.tsx +9 -11
  170. package/source/components/RadioField.tsx +2 -2
  171. package/source/components/RadioGroup.tsx +24 -24
  172. package/source/components/Spinner.tsx +2 -2
  173. package/source/components/Table.ts +5 -5
  174. package/source/components/TableBody.ts +5 -5
  175. package/source/components/TableCaption.ts +5 -5
  176. package/source/components/TableCell.ts +5 -5
  177. package/source/components/TableFoot.ts +5 -5
  178. package/source/components/TableHead.ts +5 -5
  179. package/source/components/TableHeader.ts +5 -5
  180. package/source/components/TableRow.ts +5 -5
  181. package/source/components/Text.ts +5 -5
  182. package/source/components/Textarea.tsx +7 -7
  183. package/source/components/data-table/DataTable.tsx +12 -14
  184. package/source/components/data-table/internals/DataTableHeader.tsx +25 -25
  185. package/source/components/data-table/internals/DataTableHeaderFilter.tsx +20 -22
  186. package/source/components/data-table/internals/DataTablePagination.tsx +10 -10
  187. package/source/components/data-table/internals/DataTableSearch.tsx +4 -4
  188. package/source/components/data-table/internals/addFilter.ts +3 -3
  189. package/source/components/internals/filterProps.ts +1 -1
  190. package/source/components/internals/forwardRef.ts +1 -1
  191. package/source/development/createTailwindConfig.ts +2 -2
  192. package/source/development/internals/createDisplayColor.ts +2 -2
  193. package/source/development/internals/hexToHsl.ts +3 -3
  194. package/source/development/internals/isHex.ts +3 -4
  195. package/source/development/internals/round.ts +1 -1
  196. package/source/theme/Theme.ts +8 -8
  197. package/source/theme/internals/ClassName.ts +1 -1
  198. package/source/theme/internals/ComponentThemeCompoundVariants.ts +4 -4
  199. package/source/theme/internals/ComponentThemeDefinitionVariants.ts +1 -1
  200. package/source/theme/internals/createUseComponentThemeReturn.ts +1 -1
  201. package/source/theme/internals.ts +12 -12
@@ -15,26 +15,26 @@ export declare const useButtonTheme: ((themeProps: {
15
15
  };
16
16
  };
17
17
  };
18
- export type ButtonProps<T extends ElementType> = ComponentProps<typeof useButtonTheme> & Omit<ComponentPropsWithoutRef<T>, 'type'> & {
18
+ export type ButtonProps<T extends ElementType> = {
19
19
  as?: T | undefined;
20
20
  submit?: boolean | undefined;
21
21
  idle?: boolean | undefined;
22
22
  autoFocus?: boolean | undefined;
23
23
  className?: string | undefined;
24
24
  children?: HeadlessButtonProps['children'] | undefined;
25
- };
26
- export declare const Button: <T extends ElementType = "button">(props: Partial<import("@jakubmazanec/ts-utils").Writable<{
27
- readonly variant: "text" | "solid" | "outline" | "invisible";
28
- readonly size: "small" | "medium" | "large";
29
- readonly disabled: boolean;
30
- }>> & Omit<import("react").PropsWithoutRef<import("react").ComponentProps<T>>, "type"> & {
25
+ } & ComponentProps<typeof useButtonTheme> & Omit<ComponentPropsWithoutRef<T>, 'type'>;
26
+ export declare const Button: <T extends ElementType = "button">(props: {
27
+ ref?: Ref<HTMLElement> | undefined;
28
+ } & {
31
29
  as?: T | undefined;
32
30
  submit?: boolean | undefined;
33
31
  idle?: boolean | undefined;
34
32
  autoFocus?: boolean | undefined;
35
33
  className?: string | undefined;
36
34
  children?: HeadlessButtonProps["children"] | undefined;
37
- } & {
38
- ref?: Ref<HTMLElement> | undefined;
39
- }) => React.ReactNode;
35
+ } & Partial<import("@jakubmazanec/ts-utils").Writable<{
36
+ readonly variant: "text" | "solid" | "outline" | "invisible";
37
+ readonly size: "small" | "medium" | "large";
38
+ readonly disabled: boolean;
39
+ }>> & Omit<import("react").PropsWithoutRef<import("react").ComponentProps<T>>, "type">) => React.ReactNode;
40
40
  export declare const buttonTheme: ComponentTheme<typeof useButtonTheme>;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../source/components/Button.tsx"],
4
- "sourcesContent": ["import {Button as HeadlessButton, type ButtonProps as HeadlessButtonProps} from '@headlessui/react';\nimport {\n Children,\n cloneElement,\n type ComponentPropsWithoutRef,\n type ElementType,\n isValidElement,\n type Ref,\n} from 'react';\n\nimport {\n type ComponentProps,\n type ComponentTheme,\n createComponentTheme,\n} from '../theme/internals.js';\nimport {Icon} from './Icon.js';\nimport {forwardRef} from './internals.js';\nimport {Spinner} from './Spinner.js';\n\nexport const useButtonTheme = createComponentTheme('Button', {\n variants: {\n variant: ['solid', 'outline', 'text', 'invisible'],\n size: ['small', 'medium', 'large'],\n disabled: [true, false],\n },\n});\n\nconst BUTTON_ELEMENT = 'button';\n\nexport type ButtonProps<T extends ElementType> = ComponentProps<typeof useButtonTheme> &\n Omit<ComponentPropsWithoutRef<T>, 'type'> & {\n as?: T | undefined;\n submit?: boolean | undefined;\n idle?: boolean | undefined;\n autoFocus?: boolean | undefined;\n className?: string | undefined;\n children?: HeadlessButtonProps['children'] | undefined; // sadly, we cannot use `T`'s children type, because Headless UI always, if `children` is function, calls it with its own render props documented here: https://headlessui.com/react/button#using-render-props\n };\n\nexport const Button = forwardRef(\n <T extends ElementType = typeof BUTTON_ELEMENT>(\n {\n variant = 'solid',\n size = 'medium',\n disabled = false,\n as = BUTTON_ELEMENT as T,\n idle = true,\n autoFocus = false,\n submit = false,\n className,\n children,\n ...rest\n }: ButtonProps<T>,\n ref: Ref<HTMLElement>,\n ) => {\n let theme = useButtonTheme({variant, size, disabled});\n\n let props: Record<string, unknown> = {\n as,\n ref,\n className: theme(disabled ? 'pointer-events-none' : null, className),\n disabled: disabled || (submit && !idle),\n autoFocus,\n 'data-component': 'button',\n ...rest,\n };\n\n if (as === BUTTON_ELEMENT) {\n props.type = 'button';\n }\n\n if (submit) {\n props.type = 'submit';\n }\n\n if (typeof children === 'function') {\n return <HeadlessButton {...props}>{children}</HeadlessButton>;\n }\n\n let enhancedChildren = Children.map(children, (child) => {\n if (isValidElement(child) && (child.type === Icon || child.type === Spinner)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- needed\n return cloneElement<any>(child, {'data-icon': ''});\n }\n\n return child;\n });\n\n return (\n <HeadlessButton {...props}>\n {submit && !idle ?\n <Spinner data-icon />\n : null}\n {enhancedChildren}\n </HeadlessButton>\n );\n },\n);\n\nexport const buttonTheme: ComponentTheme<typeof useButtonTheme> = {\n className:\n 'rounded-2 flex items-center justify-center text-nowrap font-sans font-medium text-sm transition-colors',\n variants: {\n variant: {\n solid: 'text-white bg-neutral-900 hover:bg-neutral-800',\n outline: 'text-neutral-950 border-2 border-neutral-100 hover:border-neutral-200',\n text: 'text-neutral-950 border-2 border-transparent hover:border-neutral-200',\n invisible: 'cursor-default text-neutral-200 hover:text-neutral-600 select-none',\n },\n size: {\n small: 'text-sm leading-6 px-2.5 h-8 min-w-8 gap-x-2',\n medium: 'leading-6 px-2.5 h-9 min-w-9 gap-x-2',\n large: 'text-lg leading-6 px-3 h-10 min-w-10 gap-x-2',\n },\n disabled: {\n true: '',\n false: '',\n },\n },\n compoundVariants: [\n {\n variant: 'solid',\n size: 'small',\n className: 'px-3',\n },\n {\n variant: 'solid',\n size: 'medium',\n className: 'px-3',\n },\n {\n variant: 'solid',\n size: 'large',\n className: 'px-3.5',\n },\n {\n variant: 'invisible',\n size: 'small',\n className: 'text-xs px-2 h-5 min-w-5',\n },\n {\n variant: 'invisible',\n size: 'medium',\n className: 'px-2 h-6 min-w-6',\n },\n {\n variant: 'invisible',\n size: 'large',\n className: 'px-2 h-7 min-w-7',\n },\n {\n variant: 'solid',\n disabled: true,\n className: 'text-white bg-neutral-200 hover:bg-neutral-200',\n },\n {\n variant: 'outline',\n disabled: true,\n className: 'text-neutral-200 hover:border-neutral-100',\n },\n {\n variant: 'text',\n disabled: true,\n className: 'text-neutral-200 hover:border-transparent',\n },\n {\n variant: 'invisible',\n disabled: true,\n className: 'text-neutral-200 ',\n },\n ],\n};\n"],
4
+ "sourcesContent": ["import {Button as HeadlessButton, type ButtonProps as HeadlessButtonProps} from '@headlessui/react';\nimport {\n Children,\n cloneElement,\n type ComponentPropsWithoutRef,\n type ElementType,\n isValidElement,\n type Ref,\n} from 'react';\n\nimport {\n type ComponentProps,\n type ComponentTheme,\n createComponentTheme,\n} from '../theme/internals.js';\nimport {Icon} from './Icon.js';\nimport {forwardRef} from './internals.js';\nimport {Spinner} from './Spinner.js';\n\nexport const useButtonTheme = createComponentTheme('Button', {\n variants: {\n variant: ['solid', 'outline', 'text', 'invisible'],\n size: ['small', 'medium', 'large'],\n disabled: [true, false],\n },\n});\n\nconst BUTTON_ELEMENT = 'button';\n\nexport type ButtonProps<T extends ElementType> = {\n as?: T | undefined;\n submit?: boolean | undefined;\n idle?: boolean | undefined;\n autoFocus?: boolean | undefined;\n className?: string | undefined;\n children?: HeadlessButtonProps['children'] | undefined; // sadly, we cannot use `T`'s children type, because Headless UI always, if `children` is function, calls it with its own render props documented here: https://headlessui.com/react/button#using-render-props\n} & ComponentProps<typeof useButtonTheme> &\n Omit<ComponentPropsWithoutRef<T>, 'type'>;\n\nexport const Button = forwardRef(\n <T extends ElementType = typeof BUTTON_ELEMENT>(\n {\n variant = 'solid',\n size = 'medium',\n disabled = false,\n as = BUTTON_ELEMENT as T,\n idle = true,\n autoFocus = false,\n submit = false,\n className,\n children,\n ...rest\n }: ButtonProps<T>,\n ref: Ref<HTMLElement>,\n ) => {\n let theme = useButtonTheme({variant, size, disabled});\n\n let props: Record<string, unknown> = {\n as,\n ref,\n className: theme(disabled ? 'pointer-events-none' : null, className),\n disabled: disabled || (submit && !idle),\n autoFocus,\n 'data-component': 'button',\n ...rest,\n };\n\n if (as === BUTTON_ELEMENT) {\n props.type = 'button';\n }\n\n if (submit) {\n props.type = 'submit';\n }\n\n if (typeof children === 'function') {\n return <HeadlessButton {...props}>{children}</HeadlessButton>;\n }\n\n let enhancedChildren = Children.map(children, (child) => {\n if (isValidElement(child) && (child.type === Icon || child.type === Spinner)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- needed\n return cloneElement<any>(child, {'data-icon': ''});\n }\n\n return child;\n });\n\n return (\n <HeadlessButton {...props}>\n {submit && !idle ?\n <Spinner data-icon />\n : null}\n {enhancedChildren}\n </HeadlessButton>\n );\n },\n);\n\nexport const buttonTheme: ComponentTheme<typeof useButtonTheme> = {\n className:\n 'rounded-2 flex items-center justify-center text-nowrap font-sans font-medium text-sm transition-colors',\n variants: {\n variant: {\n solid: 'text-white bg-neutral-900 hover:bg-neutral-800',\n outline: 'text-neutral-950 border-2 border-neutral-100 hover:border-neutral-200',\n text: 'text-neutral-950 border-2 border-transparent hover:border-neutral-200',\n invisible: 'cursor-default text-neutral-200 hover:text-neutral-600 select-none',\n },\n size: {\n small: 'text-sm leading-6 px-2.5 h-8 min-w-8 gap-x-2',\n medium: 'leading-6 px-2.5 h-9 min-w-9 gap-x-2',\n large: 'text-lg leading-6 px-3 h-10 min-w-10 gap-x-2',\n },\n disabled: {\n true: '',\n false: '',\n },\n },\n compoundVariants: [\n {\n variant: 'solid',\n size: 'small',\n className: 'px-3',\n },\n {\n variant: 'solid',\n size: 'medium',\n className: 'px-3',\n },\n {\n variant: 'solid',\n size: 'large',\n className: 'px-3.5',\n },\n {\n variant: 'invisible',\n size: 'small',\n className: 'text-xs px-2 h-5 min-w-5',\n },\n {\n variant: 'invisible',\n size: 'medium',\n className: 'px-2 h-6 min-w-6',\n },\n {\n variant: 'invisible',\n size: 'large',\n className: 'px-2 h-7 min-w-7',\n },\n {\n variant: 'solid',\n disabled: true,\n className: 'text-white bg-neutral-200 hover:bg-neutral-200',\n },\n {\n variant: 'outline',\n disabled: true,\n className: 'text-neutral-200 hover:border-neutral-100',\n },\n {\n variant: 'text',\n disabled: true,\n className: 'text-neutral-200 hover:border-transparent',\n },\n {\n variant: 'invisible',\n disabled: true,\n className: 'text-neutral-200 ',\n },\n ],\n};\n"],
5
5
  "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -4,16 +4,16 @@ export declare const useCardTheme: (() => (baseClassName?: import("../theme/inte
4
4
  componentThemeName: "Card";
5
5
  themeDefinition: undefined;
6
6
  };
7
- export type CardProps<T extends ElementType> = ComponentProps<typeof useCardTheme> & ComponentPropsWithoutRef<T> & PropsWithChildren<{
7
+ export type CardProps<T extends ElementType> = {
8
8
  as?: T | undefined;
9
9
  className?: string;
10
- }>;
11
- export declare const Card: <T extends ElementType = "div">(props: import("react").PropsWithoutRef<import("react").ComponentProps<T>> & {
10
+ } & ComponentProps<typeof useCardTheme> & ComponentPropsWithoutRef<T> & PropsWithChildren;
11
+ export declare const Card: <T extends ElementType = "div">(props: {
12
+ ref?: Ref<HTMLElement> | undefined;
13
+ } & {
12
14
  as?: T | undefined;
13
15
  className?: string;
14
- } & {
16
+ } & import("react").PropsWithoutRef<import("react").ComponentProps<T>> & {
15
17
  children?: import("react").ReactNode | undefined;
16
- } & {
17
- ref?: Ref<HTMLElement> | undefined;
18
18
  }) => React.ReactNode;
19
19
  export declare const cardTheme: ComponentTheme<typeof useCardTheme>;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../source/components/Card.ts"],
4
- "sourcesContent": ["import {\n type ComponentPropsWithoutRef,\n createElement,\n type ElementType,\n type PropsWithChildren,\n type Ref,\n} from 'react';\n\nimport {\n type ComponentProps,\n type ComponentTheme,\n createComponentTheme,\n} from '../theme/internals.js';\nimport {forwardRef} from './internals.js';\n\nexport const useCardTheme = createComponentTheme('Card');\n\nconst CARD_ELEMENT = 'div';\n\nexport type CardProps<T extends ElementType> = ComponentProps<typeof useCardTheme> &\n ComponentPropsWithoutRef<T> &\n PropsWithChildren<{\n as?: T | undefined;\n className?: string;\n }>;\n\nexport const Card = forwardRef(\n <T extends ElementType = typeof CARD_ELEMENT>(\n {as: Component = CARD_ELEMENT as T, className, children, ...rest}: CardProps<T>,\n ref: Ref<HTMLElement>,\n ) => {\n let theme = useCardTheme();\n let props = {\n ref,\n className: theme(null, className),\n 'data-component': 'card',\n ...rest,\n };\n\n return createElement(Component, props, children);\n },\n);\n\nexport const cardTheme: ComponentTheme<typeof useCardTheme> = {\n className: 'rounded-2 border border-neutral-100 p-4',\n};\n"],
4
+ "sourcesContent": ["import {\n type ComponentPropsWithoutRef,\n createElement,\n type ElementType,\n type PropsWithChildren,\n type Ref,\n} from 'react';\n\nimport {\n type ComponentProps,\n type ComponentTheme,\n createComponentTheme,\n} from '../theme/internals.js';\nimport {forwardRef} from './internals.js';\n\nexport const useCardTheme = createComponentTheme('Card');\n\nconst CARD_ELEMENT = 'div';\n\nexport type CardProps<T extends ElementType> = {\n as?: T | undefined;\n className?: string;\n} & ComponentProps<typeof useCardTheme> &\n ComponentPropsWithoutRef<T> &\n PropsWithChildren;\n\nexport const Card = forwardRef(\n <T extends ElementType = typeof CARD_ELEMENT>(\n {as: Component = CARD_ELEMENT as T, className, children, ...rest}: CardProps<T>,\n ref: Ref<HTMLElement>,\n ) => {\n let theme = useCardTheme();\n let props = {\n ref,\n className: theme(null, className),\n 'data-component': 'card',\n ...rest,\n };\n\n return createElement(Component, props, children);\n },\n);\n\nexport const cardTheme: ComponentTheme<typeof useCardTheme> = {\n className: 'rounded-2 border border-neutral-100 p-4',\n};\n"],
5
5
  "mappings": ";AAAA;AAAA,EAEE;AAAA,OAIK;AAEP;AAAA,EAGE;AAAA,OACK;AACP,SAAQ,kBAAiB;AAElB,aAAM,eAAe,qBAAqB,MAAM;AAEvD,MAAM,eAAe;AASd,aAAM,OAAO;AAAA,EAClB,CACE,EAAC,IAAI,YAAY,cAAmB,WAAW,UAAU,GAAG,KAAI,GAChE,QACG;AACH,QAAI,QAAQ,aAAa;AACzB,QAAI,QAAQ;AAAA,MACV;AAAA,MACA,WAAW,MAAM,MAAM,SAAS;AAAA,MAChC,kBAAkB;AAAA,MAClB,GAAG;AAAA,IACL;AAEA,WAAO,cAAc,WAAW,OAAO,QAAQ;AAAA,EACjD;AACF;AAEO,aAAM,YAAiD;AAAA,EAC5D,WAAW;AACb;",
6
6
  "names": []
7
7
  }
@@ -14,7 +14,7 @@ export declare const useCheckboxTheme: ((themeProps: {
14
14
  readonly elements: ["root", "icon"];
15
15
  };
16
16
  };
17
- export type CheckboxProps<T extends ElementType> = ComponentProps<typeof useCheckboxTheme> & Omit<ComponentPropsWithoutRef<T>, 'onChange'> & {
17
+ export type CheckboxProps<T extends ElementType> = {
18
18
  as?: T | undefined;
19
19
  checked?: boolean | undefined;
20
20
  indeterminate?: boolean | undefined;
@@ -22,10 +22,10 @@ export type CheckboxProps<T extends ElementType> = ComponentProps<typeof useChec
22
22
  name?: string;
23
23
  className?: string;
24
24
  onChange?: ((checked: boolean) => void) | undefined;
25
- };
26
- export declare const Checkbox: <T extends ElementType = "span">(props: Partial<import("@jakubmazanec/ts-utils").Writable<{
27
- readonly disabled: boolean;
28
- }>> & Omit<import("react").PropsWithoutRef<import("react").ComponentProps<T>>, "onChange"> & {
25
+ } & ComponentProps<typeof useCheckboxTheme> & Omit<ComponentPropsWithoutRef<T>, 'onChange'>;
26
+ export declare const Checkbox: <T extends ElementType = "span">(props: {
27
+ ref?: Ref<HTMLElement> | undefined;
28
+ } & {
29
29
  as?: T | undefined;
30
30
  checked?: boolean | undefined;
31
31
  indeterminate?: boolean | undefined;
@@ -33,7 +33,7 @@ export declare const Checkbox: <T extends ElementType = "span">(props: Partial<i
33
33
  name?: string;
34
34
  className?: string;
35
35
  onChange?: ((checked: boolean) => void) | undefined;
36
- } & {
37
- ref?: Ref<HTMLElement> | undefined;
38
- }) => React.ReactNode;
36
+ } & Partial<import("@jakubmazanec/ts-utils").Writable<{
37
+ readonly disabled: boolean;
38
+ }>> & Omit<import("react").PropsWithoutRef<import("react").ComponentProps<T>>, "onChange">) => React.ReactNode;
39
39
  export declare const checkboxTheme: ComponentTheme<typeof useCheckboxTheme>;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../source/components/Checkbox.tsx"],
4
- "sourcesContent": ["import {\n Checkbox as HeadlessCheckbox,\n type CheckboxProps as HeadlessCheckboxProps,\n} from '@headlessui/react';\nimport {type ComponentPropsWithoutRef, type ElementType, type Ref, useCallback} from 'react';\n\nimport {\n type ComponentProps,\n type ComponentTheme,\n createComponentTheme,\n} from '../theme/internals.js';\nimport {Icon} from './Icon.js';\nimport {forwardRef, useFormId} from './internals.js';\nimport {useField} from './useField.js';\nimport {useFieldName} from './useFieldName.js';\n\nexport const useCheckboxTheme = createComponentTheme('Checkbox', {\n variants: {\n disabled: [true, false],\n },\n elements: ['root', 'icon'],\n});\n\nconst CHECKBOX_ELEMENT = 'span';\n\nexport type CheckboxProps<T extends ElementType> = ComponentProps<typeof useCheckboxTheme> &\n Omit<ComponentPropsWithoutRef<T>, 'onChange'> & {\n as?: T | undefined;\n checked?: boolean | undefined;\n indeterminate?: boolean | undefined;\n autoFocus?: boolean | undefined;\n name?: string;\n className?: string;\n onChange?: ((checked: boolean) => void) | undefined;\n };\n\nexport const Checkbox = forwardRef(\n <T extends ElementType = typeof CHECKBOX_ELEMENT>(\n {\n disabled = false,\n as = CHECKBOX_ELEMENT as T,\n checked,\n indeterminate,\n autoFocus,\n name,\n className,\n onChange,\n ...rest\n }: CheckboxProps<T>,\n ref: Ref<HTMLElement>,\n ) => {\n let theme = useCheckboxTheme({disabled});\n let fieldName = useFieldName();\n let field = useField();\n let formId = useFormId();\n\n let handleChange = useCallback(() => {\n onChange?.(!checked);\n }, [checked, onChange]);\n\n if (field || fieldName) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- needed\n let props: HeadlessCheckboxProps<any> = {\n as,\n ref,\n form: formId,\n name: field?.name ?? fieldName,\n indeterminate,\n autoFocus,\n className: theme.root('relative', className),\n 'data-component': 'checkbox',\n ...rest,\n };\n\n return (\n <HeadlessCheckbox {...props}>\n <span className={theme.icon()}>\n <Icon name=\"Check\" />\n </span>\n </HeadlessCheckbox>\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- needed\n let props: HeadlessCheckboxProps<any> = {\n as,\n ref,\n checked: Boolean(checked),\n name,\n indeterminate,\n autoFocus,\n className: theme.root('relative', className),\n 'data-component': 'checkbox',\n onChange: handleChange,\n ...rest,\n };\n\n return (\n <HeadlessCheckbox {...props}>\n <span className={theme.icon()}>\n <Icon name=\"Check\" />\n </span>\n </HeadlessCheckbox>\n );\n },\n);\n\nexport const checkboxTheme: ComponentTheme<typeof useCheckboxTheme> = {\n classNames: {\n root: 'group/checkbox inline-block size-5 cursor-pointer',\n icon: 'flex justify-content justify-item size-5 *:rounded-2 *:bg-white *:border-2 *:border-neutral-100 *:hover:border-neutral-200 *:shadow-inner *:transition-colors *:text-transparent *:hover:text-neutral-100 group-data-[checked]/checkbox:*:bg-neutral-950 group-data-[checked]/checkbox:*:border-neutral-950 group-data-[checked]/checkbox:*:text-white',\n },\n variants: {\n disabled: {\n true: {\n root: 'cursor-not-allowed',\n icon: '*:hover:text-transparent *:border-neutral-50 *:hover:border-neutral-50 group-data-[checked]/checkbox:*:bg-neutral-100 group-data-[checked]/checkbox:*:border-neutral-100 group-data-[checked]/checkbox:*:text-white',\n },\n false: {\n root: '',\n icon: '',\n },\n },\n },\n};\n"],
4
+ "sourcesContent": ["import {\n Checkbox as HeadlessCheckbox,\n type CheckboxProps as HeadlessCheckboxProps,\n} from '@headlessui/react';\nimport {type ComponentPropsWithoutRef, type ElementType, type Ref, useCallback} from 'react';\n\nimport {\n type ComponentProps,\n type ComponentTheme,\n createComponentTheme,\n} from '../theme/internals.js';\nimport {Icon} from './Icon.js';\nimport {forwardRef, useFormId} from './internals.js';\nimport {useField} from './useField.js';\nimport {useFieldName} from './useFieldName.js';\n\nexport const useCheckboxTheme = createComponentTheme('Checkbox', {\n variants: {\n disabled: [true, false],\n },\n elements: ['root', 'icon'],\n});\n\nconst CHECKBOX_ELEMENT = 'span';\n\nexport type CheckboxProps<T extends ElementType> = {\n as?: T | undefined;\n checked?: boolean | undefined;\n indeterminate?: boolean | undefined;\n autoFocus?: boolean | undefined;\n name?: string;\n className?: string;\n onChange?: ((checked: boolean) => void) | undefined;\n} & ComponentProps<typeof useCheckboxTheme> &\n Omit<ComponentPropsWithoutRef<T>, 'onChange'>;\n\nexport const Checkbox = forwardRef(\n <T extends ElementType = typeof CHECKBOX_ELEMENT>(\n {\n disabled = false,\n as = CHECKBOX_ELEMENT as T,\n checked,\n indeterminate,\n autoFocus,\n name,\n className,\n onChange,\n ...rest\n }: CheckboxProps<T>,\n ref: Ref<HTMLElement>,\n ) => {\n let theme = useCheckboxTheme({disabled});\n let fieldName = useFieldName();\n let field = useField();\n let formId = useFormId();\n\n let handleChange = useCallback(() => {\n onChange?.(!checked);\n }, [checked, onChange]);\n\n if (field || fieldName) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- needed\n let props: HeadlessCheckboxProps<any> = {\n as,\n ref,\n form: formId,\n name: field?.name ?? fieldName,\n indeterminate,\n autoFocus,\n className: theme.root('relative', className),\n 'data-component': 'checkbox',\n ...rest,\n };\n\n return (\n <HeadlessCheckbox {...props}>\n <span className={theme.icon()}>\n <Icon name=\"Check\" />\n </span>\n </HeadlessCheckbox>\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- needed\n let props: HeadlessCheckboxProps<any> = {\n as,\n ref,\n checked: Boolean(checked),\n name,\n indeterminate,\n autoFocus,\n className: theme.root('relative', className),\n 'data-component': 'checkbox',\n onChange: handleChange,\n ...rest,\n };\n\n return (\n <HeadlessCheckbox {...props}>\n <span className={theme.icon()}>\n <Icon name=\"Check\" />\n </span>\n </HeadlessCheckbox>\n );\n },\n);\n\nexport const checkboxTheme: ComponentTheme<typeof useCheckboxTheme> = {\n classNames: {\n root: 'group/checkbox inline-block size-5 cursor-pointer',\n icon: 'flex justify-content justify-item size-5 *:rounded-2 *:bg-white *:border-2 *:border-neutral-100 *:hover:border-neutral-200 *:shadow-inner *:transition-colors *:text-transparent *:hover:text-neutral-100 group-data-[checked]/checkbox:*:bg-neutral-950 group-data-[checked]/checkbox:*:border-neutral-950 group-data-[checked]/checkbox:*:text-white',\n },\n variants: {\n disabled: {\n true: {\n root: 'cursor-not-allowed',\n icon: '*:hover:text-transparent *:border-neutral-50 *:hover:border-neutral-50 group-data-[checked]/checkbox:*:bg-neutral-100 group-data-[checked]/checkbox:*:border-neutral-100 group-data-[checked]/checkbox:*:text-white',\n },\n false: {\n root: '',\n icon: '',\n },\n },\n },\n};\n"],
5
5
  "mappings": ";AA6EY;AA7EZ;AAAA,EACE,YAAY;AAAA,OAEP;AACP,SAAmE,mBAAkB;AAErF;AAAA,EAGE;AAAA,OACK;AACP,SAAQ,YAAW;AACnB,SAAQ,YAAY,iBAAgB;AACpC,SAAQ,gBAAe;AACvB,SAAQ,oBAAmB;AAEpB,aAAM,mBAAmB,qBAAqB,YAAY;AAAA,EAC/D,UAAU;AAAA,IACR,UAAU,CAAC,MAAM,KAAK;AAAA,EACxB;AAAA,EACA,UAAU,CAAC,QAAQ,MAAM;AAC3B,CAAC;AAED,MAAM,mBAAmB;AAalB,aAAM,WAAW;AAAA,EACtB,CACE;AAAA,IACE,WAAW;AAAA,IACX,KAAK;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AACH,QAAI,QAAQ,iBAAiB,EAAC,SAAQ,CAAC;AACvC,QAAI,YAAY,aAAa;AAC7B,QAAI,QAAQ,SAAS;AACrB,QAAI,SAAS,UAAU;AAEvB,QAAI,eAAe,YAAY,MAAM;AACnC,iBAAW,CAAC,OAAO;AAAA,IACrB,GAAG,CAAC,SAAS,QAAQ,CAAC;AAEtB,QAAI,SAAS,WAAW;AAEtB,UAAIA,SAAoC;AAAA,QACtC;AAAA,QACA;AAAA,QACA,MAAM;AAAA,QACN,MAAM,OAAO,QAAQ;AAAA,QACrB;AAAA,QACA;AAAA,QACA,WAAW,MAAM,KAAK,YAAY,SAAS;AAAA,QAC3C,kBAAkB;AAAA,QAClB,GAAG;AAAA,MACL;AAEA,aACE,oBAAC,oBAAkB,GAAGA,QACpB,8BAAC,UAAK,WAAW,MAAM,KAAK,GAC1B,8BAAC,QAAK,MAAK,SAAQ,GACrB,GACF;AAAA,IAEJ;AAGA,QAAI,QAAoC;AAAA,MACtC;AAAA,MACA;AAAA,MACA,SAAS,QAAQ,OAAO;AAAA,MACxB;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW,MAAM,KAAK,YAAY,SAAS;AAAA,MAC3C,kBAAkB;AAAA,MAClB,UAAU;AAAA,MACV,GAAG;AAAA,IACL;AAEA,WACE,oBAAC,oBAAkB,GAAG,OACpB,8BAAC,UAAK,WAAW,MAAM,KAAK,GAC1B,8BAAC,QAAK,MAAK,SAAQ,GACrB,GACF;AAAA,EAEJ;AACF;AAEO,aAAM,gBAAyD;AAAA,EACpE,YAAY;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA,UAAU;AAAA,IACR,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA,OAAO;AAAA,QACL,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;",
6
6
  "names": ["props"]
7
7
  }
@@ -5,7 +5,7 @@ export declare const useCheckboxFieldTheme: (() => (baseClassName?: import("../t
5
5
  componentThemeName: "CheckboxField";
6
6
  themeDefinition: undefined;
7
7
  };
8
- export type CheckboxFieldProps = PropsWithChildren<ComponentProps<typeof useCheckboxFieldTheme> & ({
8
+ export type CheckboxFieldProps = PropsWithChildren<({
9
9
  className?: string | undefined;
10
10
  field?: FieldMetadata<any, any> | undefined;
11
11
  name?: undefined;
@@ -13,6 +13,6 @@ export type CheckboxFieldProps = PropsWithChildren<ComponentProps<typeof useChec
13
13
  className?: string | undefined;
14
14
  field?: undefined;
15
15
  name?: FieldName<any, any> | string | undefined;
16
- })>;
16
+ }) & ComponentProps<typeof useCheckboxFieldTheme>>;
17
17
  export declare function CheckboxField({ field, name, className, children }: CheckboxFieldProps): import("react/jsx-runtime").JSX.Element;
18
18
  export declare const checkboxFieldTheme: ComponentTheme<typeof useCheckboxFieldTheme>;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../source/components/CheckboxField.tsx"],
4
- "sourcesContent": ["import {type FieldMetadata, type FieldName} from '@conform-to/react';\nimport {Field as HeadlessField} from '@headlessui/react';\nimport {type PropsWithChildren} from 'react';\n\nimport {\n type ComponentProps,\n type ComponentTheme,\n createComponentTheme,\n} from '../theme/internals.js';\nimport {fieldContext, fieldNameContext} from './internals.js';\n\nexport const useCheckboxFieldTheme = createComponentTheme('CheckboxField');\n\nexport type CheckboxFieldProps = PropsWithChildren<\n ComponentProps<typeof useCheckboxFieldTheme> &\n (\n | {\n className?: string | undefined;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- needed\n field?: FieldMetadata<any, any> | undefined;\n name?: undefined;\n }\n | {\n className?: string | undefined;\n field?: undefined;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- needed\n name?: FieldName<any, any> | string | undefined;\n }\n )\n>;\n\nexport function CheckboxField({field, name, className, children}: CheckboxFieldProps) {\n let theme = useCheckboxFieldTheme();\n\n if (field) {\n return (\n <fieldContext.Provider value={field}>\n <HeadlessField className={theme(null, className)} data-component=\"checkbox-field\">\n {children}\n </HeadlessField>\n </fieldContext.Provider>\n );\n }\n\n if (name) {\n return (\n <fieldNameContext.Provider value={name}>\n <HeadlessField className={theme(null, className)} data-component=\"checkbox-field\">\n {children}\n </HeadlessField>\n </fieldNameContext.Provider>\n );\n }\n\n return <HeadlessField className={theme(null, className)}>{children}</HeadlessField>;\n}\n\nexport const checkboxFieldTheme: ComponentTheme<typeof useCheckboxFieldTheme> = {\n className:\n 'grid grid-cols-[theme(spacing.5)_1fr] gap-x-2 gap-y-1 [&>[data-component=description]]:col-start-2',\n};\n"],
4
+ "sourcesContent": ["import {type FieldMetadata, type FieldName} from '@conform-to/react';\nimport {Field as HeadlessField} from '@headlessui/react';\nimport {type PropsWithChildren} from 'react';\n\nimport {\n type ComponentProps,\n type ComponentTheme,\n createComponentTheme,\n} from '../theme/internals.js';\nimport {fieldContext, fieldNameContext} from './internals.js';\n\nexport const useCheckboxFieldTheme = createComponentTheme('CheckboxField');\n\nexport type CheckboxFieldProps = PropsWithChildren<\n (\n | {\n className?: string | undefined;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- needed\n field?: FieldMetadata<any, any> | undefined;\n name?: undefined;\n }\n | {\n className?: string | undefined;\n field?: undefined;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- needed\n name?: FieldName<any, any> | string | undefined;\n }\n ) &\n ComponentProps<typeof useCheckboxFieldTheme>\n>;\n\nexport function CheckboxField({field, name, className, children}: CheckboxFieldProps) {\n let theme = useCheckboxFieldTheme();\n\n if (field) {\n return (\n <fieldContext.Provider value={field}>\n <HeadlessField className={theme(null, className)} data-component=\"checkbox-field\">\n {children}\n </HeadlessField>\n </fieldContext.Provider>\n );\n }\n\n if (name) {\n return (\n <fieldNameContext.Provider value={name}>\n <HeadlessField className={theme(null, className)} data-component=\"checkbox-field\">\n {children}\n </HeadlessField>\n </fieldNameContext.Provider>\n );\n }\n\n return <HeadlessField className={theme(null, className)}>{children}</HeadlessField>;\n}\n\nexport const checkboxFieldTheme: ComponentTheme<typeof useCheckboxFieldTheme> = {\n className:\n 'grid grid-cols-[theme(spacing.5)_1fr] gap-x-2 gap-y-1 [&>[data-component=description]]:col-start-2',\n};\n"],
5
5
  "mappings": ";AAqCQ;AApCR,SAAQ,SAAS,qBAAoB;AAGrC;AAAA,EAGE;AAAA,OACK;AACP,SAAQ,cAAc,wBAAuB;AAEtC,aAAM,wBAAwB,qBAAqB,eAAe;AAoBlE,gBAAS,cAAc,EAAC,OAAO,MAAM,WAAW,SAAQ,GAAuB;AACpF,MAAI,QAAQ,sBAAsB;AAElC,MAAI,OAAO;AACT,WACE,oBAAC,aAAa,UAAb,EAAsB,OAAO,OAC5B,8BAAC,iBAAc,WAAW,MAAM,MAAM,SAAS,GAAG,kBAAe,kBAC9D,UACH,GACF;AAAA,EAEJ;AAEA,MAAI,MAAM;AACR,WACE,oBAAC,iBAAiB,UAAjB,EAA0B,OAAO,MAChC,8BAAC,iBAAc,WAAW,MAAM,MAAM,SAAS,GAAG,kBAAe,kBAC9D,UACH,GACF;AAAA,EAEJ;AAEA,SAAO,oBAAC,iBAAc,WAAW,MAAM,MAAM,SAAS,GAAI,UAAS;AACrE;AAEO,aAAM,qBAAmE;AAAA,EAC9E,WACE;AACJ;",
6
6
  "names": []
7
7
  }
@@ -22,10 +22,10 @@ export type ComboboxItem<V> = {
22
22
  value: V;
23
23
  label: string;
24
24
  };
25
- export type ComboboxProps<T extends ElementType, V extends boolean | number | string> = PropsWithChildren<ComponentProps<typeof useComboboxTheme> & ComponentPropsWithoutRef<T> & ({
25
+ export type ComboboxProps<T extends ElementType, V extends boolean | number | string> = PropsWithChildren<({
26
26
  as?: T | undefined;
27
- value?: V | undefined;
28
- defaultValue?: V | undefined;
27
+ value?: undefined | V;
28
+ defaultValue?: undefined | V;
29
29
  multiple?: false | undefined;
30
30
  items?: Array<ComboboxItem<V>> | undefined;
31
31
  placeholder?: string;
@@ -34,11 +34,11 @@ export type ComboboxProps<T extends ElementType, V extends boolean | number | st
34
34
  customValue?: boolean | undefined;
35
35
  name?: string | undefined;
36
36
  className?: string;
37
- onChange?: (selectedValue: V | undefined) => void;
37
+ onChange?: (selectedValue: undefined | V) => void;
38
38
  } | {
39
39
  as?: T | undefined;
40
- value?: V[] | undefined;
41
- defaultValue?: V[] | undefined;
40
+ value?: undefined | V[];
41
+ defaultValue?: undefined | V[];
42
42
  multiple: true;
43
43
  items?: Array<ComboboxItem<V>> | undefined;
44
44
  placeholder?: string;
@@ -47,11 +47,11 @@ export type ComboboxProps<T extends ElementType, V extends boolean | number | st
47
47
  customValue?: boolean | undefined;
48
48
  name?: string | undefined;
49
49
  className?: string;
50
- onChange?: (selectedValue: V[] | undefined) => void;
51
- })>;
50
+ onChange?: (selectedValue: undefined | V[]) => void;
51
+ }) & ComponentProps<typeof useComboboxTheme> & ComponentPropsWithoutRef<T>>;
52
52
  export declare const Combobox: <T extends ElementType = import("react").ExoticComponent<{
53
53
  children?: import("react").ReactNode | undefined;
54
- }>, V extends boolean | number | string = string>(props: ComboboxProps<T, V> & {
54
+ }>, V extends boolean | number | string = string>(props: {
55
55
  ref?: Ref<HTMLElement> | undefined;
56
- }) => React.ReactNode;
56
+ } & ComboboxProps<T, V>) => React.ReactNode;
57
57
  export declare const comboboxTheme: ComponentTheme<typeof useComboboxTheme>;
@@ -118,19 +118,19 @@ export const Combobox = forwardRef(
118
118
  HeadlessComboboxInput,
119
119
  {
120
120
  className: theme.input(null, className),
121
- size: 1,
122
121
  displayValue,
122
+ size: 1,
123
123
  onChange: handleQueryChange
124
124
  }
125
125
  ),
126
126
  /* @__PURE__ */ jsx(HeadlessComboboxButton, { className: theme.icon("absolute"), children: /* @__PURE__ */ jsx(Icon, { children: /* @__PURE__ */ jsx(ChevronDownIcon, {}) }) })
127
127
  ] }),
128
- virtual && filteredItems ? /* @__PURE__ */ jsx(HeadlessComboboxOptions, { className: theme.options(), anchor: "bottom start", children: ({ option }) => /* @__PURE__ */ jsx(ComboboxOption, { value: option, children: items?.find((item) => item.value === option)?.label }) }) : null,
129
- !virtual && filteredItems ? /* @__PURE__ */ jsxs(HeadlessComboboxOptions, { className: theme.options(), anchor: "bottom start", children: [
128
+ virtual && filteredItems ? /* @__PURE__ */ jsx(HeadlessComboboxOptions, { anchor: "bottom start", className: theme.options(), children: ({ option }) => /* @__PURE__ */ jsx(ComboboxOption, { value: option, children: items?.find((item) => item.value === option)?.label }) }) : null,
129
+ !virtual && filteredItems ? /* @__PURE__ */ jsxs(HeadlessComboboxOptions, { anchor: "bottom start", className: theme.options(), children: [
130
130
  customValue && query.length ? /* @__PURE__ */ jsx(ComboboxOption, { value: query, children: query }, query) : null,
131
131
  filteredItems.map((item) => /* @__PURE__ */ jsx(ComboboxOption, { value: item.value, children: item.label }, String(item.value)))
132
132
  ] }) : null,
133
- !filteredItems && Array.isArray(filteredChildren) ? /* @__PURE__ */ jsxs(HeadlessComboboxOptions, { className: theme.options(), anchor: "bottom start", children: [
133
+ !filteredItems && Array.isArray(filteredChildren) ? /* @__PURE__ */ jsxs(HeadlessComboboxOptions, { anchor: "bottom start", className: theme.options(), children: [
134
134
  customValue && query.length ? /* @__PURE__ */ jsx(ComboboxOption, { value: query, children: query }) : null,
135
135
  filteredChildren
136
136
  ] }) : null
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../source/components/Combobox.tsx"],
4
- "sourcesContent": ["// TODO: fix somehow\n/* eslint-disable complexity -- TODO */\nimport {\n Combobox as HeadlessCombobox,\n ComboboxButton as HeadlessComboboxButton,\n ComboboxInput as HeadlessComboboxInput,\n ComboboxOptions as HeadlessComboboxOptions,\n type ComboboxProps as HeadlessComboboxProps,\n} from '@headlessui/react';\nimport {ChevronDownIcon} from '@heroicons/react/24/outline';\nimport {\n type ChangeEvent,\n Children,\n type ComponentPropsWithoutRef,\n type ElementType,\n Fragment,\n type PropsWithChildren,\n type Ref,\n useCallback,\n useState,\n} from 'react';\n\nimport {\n type ComponentProps,\n type ComponentTheme,\n createComponentTheme,\n} from '../theme/internals.js';\nimport {ComboboxOption} from './ComboboxOption.js';\nimport {Icon} from './Icon.js';\nimport {forwardRef, useFormId} from './internals.js';\nimport {useField} from './useField.js';\nimport {useFieldName} from './useFieldName.js';\n\nexport const useComboboxTheme = createComponentTheme('Combobox', {\n variants: {disabled: [true, false], invalid: [true, false]},\n elements: ['root', 'input', 'icon', 'options'],\n});\n\nconst COMBOBOX_ELEMENT = Fragment;\n\nexport type ComboboxItem<V> = {\n value: V;\n label: string;\n};\n\nexport type ComboboxProps<\n T extends ElementType,\n V extends boolean | number | string,\n> = PropsWithChildren<\n ComponentProps<typeof useComboboxTheme> &\n ComponentPropsWithoutRef<T> &\n (\n | {\n as?: T | undefined;\n value?: V | undefined;\n defaultValue?: V | undefined;\n multiple?: false | undefined;\n items?: Array<ComboboxItem<V>> | undefined;\n placeholder?: string;\n immediate?: boolean | undefined;\n virtual?: boolean | undefined;\n customValue?: boolean | undefined;\n name?: string | undefined;\n className?: string;\n onChange?: (selectedValue: V | undefined) => void;\n }\n | {\n as?: T | undefined;\n value?: V[] | undefined;\n defaultValue?: V[] | undefined;\n multiple: true;\n items?: Array<ComboboxItem<V>> | undefined;\n placeholder?: string;\n immediate?: boolean | undefined;\n virtual?: boolean | undefined;\n customValue?: boolean | undefined;\n name?: string | undefined;\n className?: string;\n onChange?: (selectedValue: V[] | undefined) => void;\n }\n )\n>;\n\nexport const Combobox = forwardRef(\n <T extends ElementType = typeof COMBOBOX_ELEMENT, V extends boolean | number | string = string>(\n {\n disabled = false,\n invalid = false,\n as = COMBOBOX_ELEMENT as unknown as T,\n value,\n defaultValue,\n multiple,\n items,\n placeholder,\n immediate = true,\n virtual = false,\n customValue = false,\n name,\n className,\n onChange,\n children,\n ...rest\n }: ComboboxProps<T, V>,\n ref: Ref<HTMLElement>,\n ) => {\n let theme = useComboboxTheme({disabled, invalid});\n let formId = useFormId();\n let field = useField();\n let fieldName = useFieldName();\n let [query, setQuery] = useState('');\n\n let handleChange = useCallback(\n (selectedValue: V | null) => {\n if (selectedValue) {\n onChange?.(selectedValue as V & V[]);\n }\n\n if (selectedValue === null) {\n onChange?.(undefined);\n }\n },\n [onChange],\n );\n\n let displayValue = useCallback(\n (option: string) => {\n if (items) {\n let selectedItem = items.find((item) => item.value === option);\n\n if (selectedItem) {\n return selectedItem.label;\n }\n }\n\n return option;\n },\n [items],\n );\n\n let handleQueryChange = useCallback((event: ChangeEvent<HTMLInputElement>) => {\n setQuery(event.target.value);\n }, []);\n\n if (virtual && !items) {\n throw new Error('Combobox requires `items` prop in virtual scrolling mode!');\n }\n\n if (virtual && customValue) {\n throw new Error(\"Combobox doesn't support `customValue` prop in virtual scrolling mode!\");\n }\n\n if (items && children) {\n throw new Error('Combobox accepts only either `items` prop, or children!');\n }\n\n let filteredItems =\n query ?\n items?.filter((item) =>\n `${item.label as number | string}`\n .toLowerCase()\n .replace(/\\s+/g, '')\n .includes(query.toLowerCase().replace(/\\s+/g, '')),\n )\n : items;\n let filteredChildren =\n query ?\n Children.toArray(children).filter((child) => {\n if (\n typeof child === 'object' &&\n 'props' in child &&\n typeof child.props === 'object' &&\n typeof (child.props as {children?: unknown[] | string}).children === 'string' &&\n (child.props as {children: string}).children\n .toLowerCase()\n .replace(/\\s+/g, '')\n .includes(query.toLowerCase().replace(/\\s+/g, ''))\n ) {\n return true;\n }\n\n return false;\n })\n : children;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- needed\n let props: HeadlessComboboxProps<any, any, any> = {\n as,\n ref,\n name: field?.name ?? fieldName ?? name,\n value: value ?? null,\n defaultValue,\n multiple,\n disabled,\n immediate,\n form: formId,\n onChange: handleChange,\n ...rest,\n };\n\n if (virtual) {\n props.virtual = {\n options: filteredItems?.map((item) => item.value) ?? [],\n };\n }\n\n return (\n <HeadlessCombobox {...props}>\n <div className={theme.root('relative', className)} data-component=\"combobox\">\n <HeadlessComboboxInput\n className={theme.input(null, className)}\n size={1} // so the input default width without styling is small\n displayValue={displayValue}\n onChange={handleQueryChange}\n />\n <HeadlessComboboxButton className={theme.icon('absolute')}>\n <Icon>\n <ChevronDownIcon />\n </Icon>\n </HeadlessComboboxButton>\n </div>\n\n {virtual && filteredItems ?\n <HeadlessComboboxOptions className={theme.options()} anchor=\"bottom start\">\n {({option}: {option: V}) => (\n <ComboboxOption value={option}>\n {items?.find((item) => item.value === option)?.label}\n </ComboboxOption>\n )}\n </HeadlessComboboxOptions>\n : null}\n\n {!virtual && filteredItems ?\n <HeadlessComboboxOptions className={theme.options()} anchor=\"bottom start\">\n {customValue && query.length ?\n <ComboboxOption key={query} value={query}>\n {query}\n </ComboboxOption>\n : null}\n {filteredItems.map((item) => (\n <ComboboxOption key={String(item.value)} value={item.value}>\n {item.label}\n </ComboboxOption>\n ))}\n </HeadlessComboboxOptions>\n : null}\n\n {!filteredItems && Array.isArray(filteredChildren) ?\n <HeadlessComboboxOptions className={theme.options()} anchor=\"bottom start\">\n {customValue && query.length ?\n <ComboboxOption value={query}>{query}</ComboboxOption>\n : null}\n {filteredChildren}\n </HeadlessComboboxOptions>\n : null}\n </HeadlessCombobox>\n );\n },\n);\n\nexport const comboboxTheme: ComponentTheme<typeof useComboboxTheme> = {\n classNames: {\n root: 'w-full min-w-32',\n input:\n 'flex w-full items-center rounded-2 border-2 border-neutral-100 hover:border-neutral-200 bg-white px-2.5 h-9 pr-9 gap-x-2 transition-colors shadow-inner font-sans text-sm',\n icon: 'text-neutral-500 size-5 top-2 right-2 cursor-pointer',\n options:\n 'flex flex-col gap-y-1 shadow p-1 z-30 rounded-2 border-2 border-neutral-100 hover:border-neutral-200 bg-white text-left w-[var(--input-width)] [--anchor-gap:theme(spacing.1)] [--anchor-padding:theme(spacing.2)] [scrollbar-width:thin] empty:invisible transition-colors',\n },\n variants: {\n disabled: {\n true: {\n root: 'border-neutral-100 text-neutral-200 cursor-not-allowed',\n input: '',\n icon: 'text-neutral-200',\n options: 'border-neutral-100',\n },\n false: {\n root: '',\n input: '',\n icon: '',\n options: '',\n },\n },\n invalid: {\n true: {\n root: '',\n input: '',\n icon: '',\n options: '',\n },\n false: {\n root: '',\n input: '',\n icon: '',\n options: '',\n },\n },\n },\n};\n"],
5
- "mappings": ";AA8MQ,SACE,KADF;AA5MR;AAAA,EACE,YAAY;AAAA,EACZ,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,OAEd;AACP,SAAQ,uBAAsB;AAC9B;AAAA,EAEE;AAAA,EAGA;AAAA,EAGA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EAGE;AAAA,OACK;AACP,SAAQ,sBAAqB;AAC7B,SAAQ,YAAW;AACnB,SAAQ,YAAY,iBAAgB;AACpC,SAAQ,gBAAe;AACvB,SAAQ,oBAAmB;AAEpB,aAAM,mBAAmB,qBAAqB,YAAY;AAAA,EAC/D,UAAU,EAAC,UAAU,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,KAAK,EAAC;AAAA,EAC1D,UAAU,CAAC,QAAQ,SAAS,QAAQ,SAAS;AAC/C,CAAC;AAED,MAAM,mBAAmB;AA6ClB,aAAM,WAAW;AAAA,EACtB,CACE;AAAA,IACE,WAAW;AAAA,IACX,UAAU;AAAA,IACV,KAAK;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AACH,QAAI,QAAQ,iBAAiB,EAAC,UAAU,QAAO,CAAC;AAChD,QAAI,SAAS,UAAU;AACvB,QAAI,QAAQ,SAAS;AACrB,QAAI,YAAY,aAAa;AAC7B,QAAI,CAAC,OAAO,QAAQ,IAAI,SAAS,EAAE;AAEnC,QAAI,eAAe;AAAA,MACjB,CAAC,kBAA4B;AAC3B,YAAI,eAAe;AACjB,qBAAW,aAAwB;AAAA,QACrC;AAEA,YAAI,kBAAkB,MAAM;AAC1B,qBAAW,MAAS;AAAA,QACtB;AAAA,MACF;AAAA,MACA,CAAC,QAAQ;AAAA,IACX;AAEA,QAAI,eAAe;AAAA,MACjB,CAAC,WAAmB;AAClB,YAAI,OAAO;AACT,cAAI,eAAe,MAAM,KAAK,CAAC,SAAS,KAAK,UAAU,MAAM;AAE7D,cAAI,cAAc;AAChB,mBAAO,aAAa;AAAA,UACtB;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAAA,MACA,CAAC,KAAK;AAAA,IACR;AAEA,QAAI,oBAAoB,YAAY,CAAC,UAAyC;AAC5E,eAAS,MAAM,OAAO,KAAK;AAAA,IAC7B,GAAG,CAAC,CAAC;AAEL,QAAI,WAAW,CAAC,OAAO;AACrB,YAAM,IAAI,MAAM,2DAA2D;AAAA,IAC7E;AAEA,QAAI,WAAW,aAAa;AAC1B,YAAM,IAAI,MAAM,wEAAwE;AAAA,IAC1F;AAEA,QAAI,SAAS,UAAU;AACrB,YAAM,IAAI,MAAM,yDAAyD;AAAA,IAC3E;AAEA,QAAI,gBACF,QACE,OAAO;AAAA,MAAO,CAAC,SACb,GAAG,KAAK,KAAwB,GAC7B,YAAY,EACZ,QAAQ,QAAQ,EAAE,EAClB,SAAS,MAAM,YAAY,EAAE,QAAQ,QAAQ,EAAE,CAAC;AAAA,IACrD,IACA;AACJ,QAAI,mBACF,QACE,SAAS,QAAQ,QAAQ,EAAE,OAAO,CAAC,UAAU;AAC3C,UACE,OAAO,UAAU,YACjB,WAAW,SACX,OAAO,MAAM,UAAU,YACvB,OAAQ,MAAM,MAA0C,aAAa,YACpE,MAAM,MAA6B,SACjC,YAAY,EACZ,QAAQ,QAAQ,EAAE,EAClB,SAAS,MAAM,YAAY,EAAE,QAAQ,QAAQ,EAAE,CAAC,GACnD;AACA,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT,CAAC,IACD;AAEJ,QAAI,QAA8C;AAAA,MAChD;AAAA,MACA;AAAA,MACA,MAAM,OAAO,QAAQ,aAAa;AAAA,MAClC,OAAO,SAAS;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM;AAAA,MACN,UAAU;AAAA,MACV,GAAG;AAAA,IACL;AAEA,QAAI,SAAS;AACX,YAAM,UAAU;AAAA,QACd,SAAS,eAAe,IAAI,CAAC,SAAS,KAAK,KAAK,KAAK,CAAC;AAAA,MACxD;AAAA,IACF;AAEA,WACE,qBAAC,oBAAkB,GAAG,OACpB;AAAA,2BAAC,SAAI,WAAW,MAAM,KAAK,YAAY,SAAS,GAAG,kBAAe,YAChE;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW,MAAM,MAAM,MAAM,SAAS;AAAA,YACtC,MAAM;AAAA,YACN;AAAA,YACA,UAAU;AAAA;AAAA,QACZ;AAAA,QACA,oBAAC,0BAAuB,WAAW,MAAM,KAAK,UAAU,GACtD,8BAAC,QACC,8BAAC,mBAAgB,GACnB,GACF;AAAA,SACF;AAAA,MAEC,WAAW,gBACV,oBAAC,2BAAwB,WAAW,MAAM,QAAQ,GAAG,QAAO,gBACzD,WAAC,EAAC,OAAM,MACP,oBAAC,kBAAe,OAAO,QACpB,iBAAO,KAAK,CAAC,SAAS,KAAK,UAAU,MAAM,GAAG,OACjD,GAEJ,IACA;AAAA,MAED,CAAC,WAAW,gBACX,qBAAC,2BAAwB,WAAW,MAAM,QAAQ,GAAG,QAAO,gBACzD;AAAA,uBAAe,MAAM,SACpB,oBAAC,kBAA2B,OAAO,OAChC,mBADkB,KAErB,IACA;AAAA,QACD,cAAc,IAAI,CAAC,SAClB,oBAAC,kBAAwC,OAAO,KAAK,OAClD,eAAK,SADa,OAAO,KAAK,KAAK,CAEtC,CACD;AAAA,SACH,IACA;AAAA,MAED,CAAC,iBAAiB,MAAM,QAAQ,gBAAgB,IAC/C,qBAAC,2BAAwB,WAAW,MAAM,QAAQ,GAAG,QAAO,gBACzD;AAAA,uBAAe,MAAM,SACpB,oBAAC,kBAAe,OAAO,OAAQ,iBAAM,IACrC;AAAA,QACD;AAAA,SACH,IACA;AAAA,OACJ;AAAA,EAEJ;AACF;AAEO,aAAM,gBAAyD;AAAA,EACpE,YAAY;AAAA,IACV,MAAM;AAAA,IACN,OACE;AAAA,IACF,MAAM;AAAA,IACN,SACE;AAAA,EACJ;AAAA,EACA,UAAU;AAAA,IACR,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,OAAO;AAAA,QACP,MAAM;AAAA,QACN,SAAS;AAAA,MACX;AAAA,MACA,OAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO;AAAA,QACP,MAAM;AAAA,QACN,SAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA,SAAS;AAAA,MACP,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,OAAO;AAAA,QACP,MAAM;AAAA,QACN,SAAS;AAAA,MACX;AAAA,MACA,OAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO;AAAA,QACP,MAAM;AAAA,QACN,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AACF;",
4
+ "sourcesContent": ["import {\n Combobox as HeadlessCombobox,\n ComboboxButton as HeadlessComboboxButton,\n ComboboxInput as HeadlessComboboxInput,\n ComboboxOptions as HeadlessComboboxOptions,\n type ComboboxProps as HeadlessComboboxProps,\n} from '@headlessui/react';\nimport {ChevronDownIcon} from '@heroicons/react/24/outline';\nimport {\n type ChangeEvent,\n Children,\n type ComponentPropsWithoutRef,\n type ElementType,\n Fragment,\n type PropsWithChildren,\n type Ref,\n useCallback,\n useState,\n} from 'react';\n\nimport {\n type ComponentProps,\n type ComponentTheme,\n createComponentTheme,\n} from '../theme/internals.js';\nimport {ComboboxOption} from './ComboboxOption.js';\nimport {Icon} from './Icon.js';\nimport {forwardRef, useFormId} from './internals.js';\nimport {useField} from './useField.js';\nimport {useFieldName} from './useFieldName.js';\n\nexport const useComboboxTheme = createComponentTheme('Combobox', {\n variants: {disabled: [true, false], invalid: [true, false]},\n elements: ['root', 'input', 'icon', 'options'],\n});\n\nconst COMBOBOX_ELEMENT = Fragment;\n\nexport type ComboboxItem<V> = {\n value: V;\n label: string;\n};\n\nexport type ComboboxProps<\n T extends ElementType,\n V extends boolean | number | string,\n> = PropsWithChildren<\n (\n | {\n as?: T | undefined;\n value?: undefined | V;\n defaultValue?: undefined | V;\n multiple?: false | undefined;\n items?: Array<ComboboxItem<V>> | undefined;\n placeholder?: string;\n immediate?: boolean | undefined;\n virtual?: boolean | undefined;\n customValue?: boolean | undefined;\n name?: string | undefined;\n className?: string;\n onChange?: (selectedValue: undefined | V) => void;\n }\n | {\n as?: T | undefined;\n value?: undefined | V[];\n defaultValue?: undefined | V[];\n multiple: true;\n items?: Array<ComboboxItem<V>> | undefined;\n placeholder?: string;\n immediate?: boolean | undefined;\n virtual?: boolean | undefined;\n customValue?: boolean | undefined;\n name?: string | undefined;\n className?: string;\n onChange?: (selectedValue: undefined | V[]) => void;\n }\n ) &\n ComponentProps<typeof useComboboxTheme> &\n ComponentPropsWithoutRef<T>\n>;\n\nexport const Combobox = forwardRef(\n <T extends ElementType = typeof COMBOBOX_ELEMENT, V extends boolean | number | string = string>(\n {\n disabled = false,\n invalid = false,\n as = COMBOBOX_ELEMENT as unknown as T,\n value,\n defaultValue,\n multiple,\n items,\n placeholder,\n immediate = true,\n virtual = false,\n customValue = false,\n name,\n className,\n onChange,\n children,\n ...rest\n }: ComboboxProps<T, V>,\n ref: Ref<HTMLElement>,\n ) => {\n let theme = useComboboxTheme({disabled, invalid});\n let formId = useFormId();\n let field = useField();\n let fieldName = useFieldName();\n let [query, setQuery] = useState('');\n\n let handleChange = useCallback(\n (selectedValue: null | V) => {\n if (selectedValue) {\n onChange?.(selectedValue as V & V[]);\n }\n\n if (selectedValue === null) {\n onChange?.(undefined);\n }\n },\n [onChange],\n );\n\n let displayValue = useCallback(\n (option: string) => {\n if (items) {\n let selectedItem = items.find((item) => item.value === option);\n\n if (selectedItem) {\n return selectedItem.label;\n }\n }\n\n return option;\n },\n [items],\n );\n\n let handleQueryChange = useCallback((event: ChangeEvent<HTMLInputElement>) => {\n setQuery(event.target.value);\n }, []);\n\n if (virtual && !items) {\n throw new Error('Combobox requires `items` prop in virtual scrolling mode!');\n }\n\n if (virtual && customValue) {\n throw new Error(\"Combobox doesn't support `customValue` prop in virtual scrolling mode!\");\n }\n\n if (items && children) {\n throw new Error('Combobox accepts only either `items` prop, or children!');\n }\n\n let filteredItems =\n query ?\n items?.filter((item) =>\n `${item.label as number | string}`\n .toLowerCase()\n .replace(/\\s+/g, '')\n .includes(query.toLowerCase().replace(/\\s+/g, '')),\n )\n : items;\n let filteredChildren =\n query ?\n Children.toArray(children).filter((child) => {\n if (\n typeof child === 'object' &&\n 'props' in child &&\n typeof child.props === 'object' &&\n typeof (child.props as {children?: string | unknown[]}).children === 'string' &&\n (child.props as {children: string}).children\n .toLowerCase()\n .replace(/\\s+/g, '')\n .includes(query.toLowerCase().replace(/\\s+/g, ''))\n ) {\n return true;\n }\n\n return false;\n })\n : children;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- needed\n let props: HeadlessComboboxProps<any, any, any> = {\n as,\n ref,\n name: field?.name ?? fieldName ?? name,\n value: value ?? null,\n defaultValue,\n multiple,\n disabled,\n immediate,\n form: formId,\n onChange: handleChange,\n ...rest,\n };\n\n if (virtual) {\n props.virtual = {\n options: filteredItems?.map((item) => item.value) ?? [],\n };\n }\n\n return (\n <HeadlessCombobox {...props}>\n <div className={theme.root('relative', className)} data-component=\"combobox\">\n <HeadlessComboboxInput\n className={theme.input(null, className)}\n displayValue={displayValue}\n size={1} // so the input default width without styling is small\n onChange={handleQueryChange}\n />\n <HeadlessComboboxButton className={theme.icon('absolute')}>\n <Icon>\n <ChevronDownIcon />\n </Icon>\n </HeadlessComboboxButton>\n </div>\n\n {virtual && filteredItems ?\n <HeadlessComboboxOptions anchor=\"bottom start\" className={theme.options()}>\n {({option}: {option: V}) => (\n <ComboboxOption value={option}>\n {items?.find((item) => item.value === option)?.label}\n </ComboboxOption>\n )}\n </HeadlessComboboxOptions>\n : null}\n\n {!virtual && filteredItems ?\n <HeadlessComboboxOptions anchor=\"bottom start\" className={theme.options()}>\n {customValue && query.length ?\n <ComboboxOption key={query} value={query}>\n {query}\n </ComboboxOption>\n : null}\n {filteredItems.map((item) => (\n <ComboboxOption key={String(item.value)} value={item.value}>\n {item.label}\n </ComboboxOption>\n ))}\n </HeadlessComboboxOptions>\n : null}\n\n {!filteredItems && Array.isArray(filteredChildren) ?\n <HeadlessComboboxOptions anchor=\"bottom start\" className={theme.options()}>\n {customValue && query.length ?\n <ComboboxOption value={query}>{query}</ComboboxOption>\n : null}\n {filteredChildren}\n </HeadlessComboboxOptions>\n : null}\n </HeadlessCombobox>\n );\n },\n);\n\nexport const comboboxTheme: ComponentTheme<typeof useComboboxTheme> = {\n classNames: {\n root: 'w-full min-w-32',\n input:\n 'flex w-full items-center rounded-2 border-2 border-neutral-100 hover:border-neutral-200 bg-white px-2.5 h-9 pr-9 gap-x-2 transition-colors shadow-inner font-sans text-sm',\n icon: 'text-neutral-500 size-5 top-2 right-2 cursor-pointer',\n options:\n 'flex flex-col gap-y-1 shadow p-1 z-30 rounded-2 border-2 border-neutral-100 hover:border-neutral-200 bg-white text-left w-[var(--input-width)] [--anchor-gap:theme(spacing.1)] [--anchor-padding:theme(spacing.2)] [scrollbar-width:thin] empty:invisible transition-colors',\n },\n variants: {\n disabled: {\n true: {\n root: 'border-neutral-100 text-neutral-200 cursor-not-allowed',\n input: '',\n icon: 'text-neutral-200',\n options: 'border-neutral-100',\n },\n false: {\n root: '',\n input: '',\n icon: '',\n options: '',\n },\n },\n invalid: {\n true: {\n root: '',\n input: '',\n icon: '',\n options: '',\n },\n false: {\n root: '',\n input: '',\n icon: '',\n options: '',\n },\n },\n },\n};\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -14,20 +14,20 @@ export declare const useComboboxOptionTheme: ((themeProps: {
14
14
  readonly elements: ["root", "icon"];
15
15
  };
16
16
  };
17
- export type ComboboxOptionProps<T extends ElementType, V extends boolean | number | string> = PropsWithChildren<ComponentProps<typeof useComboboxOptionTheme> & ComponentPropsWithoutRef<T> & {
17
+ export type ComboboxOptionProps<T extends ElementType, V extends boolean | number | string> = PropsWithChildren<{
18
18
  as?: T | undefined;
19
19
  value: V;
20
20
  className?: string;
21
- }>;
22
- export declare const ComboboxOption: <T extends ElementType = "div", V extends boolean | number | string = string>(props: Partial<import("@jakubmazanec/ts-utils").Writable<{
23
- readonly disabled: boolean;
24
- }>> & import("react").PropsWithoutRef<import("react").ComponentProps<T>> & {
21
+ } & ComponentProps<typeof useComboboxOptionTheme> & ComponentPropsWithoutRef<T>>;
22
+ export declare const ComboboxOption: <T extends ElementType = "div", V extends boolean | number | string = string>(props: {
23
+ ref?: Ref<HTMLElement> | undefined;
24
+ } & {
25
25
  as?: T | undefined;
26
26
  value: V;
27
27
  className?: string;
28
- } & {
28
+ } & Partial<import("@jakubmazanec/ts-utils").Writable<{
29
+ readonly disabled: boolean;
30
+ }>> & import("react").PropsWithoutRef<import("react").ComponentProps<T>> & {
29
31
  children?: import("react").ReactNode | undefined;
30
- } & {
31
- ref?: Ref<HTMLElement> | undefined;
32
32
  }) => React.ReactNode;
33
33
  export declare const comboboxOptionTheme: ComponentTheme<typeof useComboboxOptionTheme>;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../source/components/ComboboxOption.tsx"],
4
- "sourcesContent": ["import {\n ComboboxOption as HeadlessComboboxOption,\n type ComboboxOptionProps as HeadlessComboboxOptionProps,\n} from '@headlessui/react';\nimport {\n type ComponentPropsWithoutRef,\n type ElementType,\n type PropsWithChildren,\n type Ref,\n} from 'react';\n\nimport {\n type ComponentProps,\n type ComponentTheme,\n createComponentTheme,\n} from '../theme/internals.js';\nimport {Icon} from './Icon.js';\nimport {forwardRef} from './internals.js';\n\nexport const useComboboxOptionTheme = createComponentTheme('ComboboxOption', {\n variants: {disabled: [true, false]},\n elements: ['root', 'icon'],\n});\n\nconst LISTBOX_OPTION_ELEMENT = 'div';\n\nexport type ComboboxOptionProps<\n T extends ElementType,\n V extends boolean | number | string,\n> = PropsWithChildren<\n ComponentProps<typeof useComboboxOptionTheme> &\n ComponentPropsWithoutRef<T> & {\n as?: T | undefined;\n value: V;\n className?: string;\n }\n>;\n\nexport const ComboboxOption = forwardRef(\n <\n T extends ElementType = typeof LISTBOX_OPTION_ELEMENT,\n V extends boolean | number | string = string,\n >(\n {\n disabled = false,\n as = LISTBOX_OPTION_ELEMENT as T,\n value,\n className,\n children,\n ...rest\n }: ComboboxOptionProps<T, V>,\n ref: Ref<HTMLElement>,\n ) => {\n let theme = useComboboxOptionTheme({disabled});\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- needed\n let props: HeadlessComboboxOptionProps<any, any> = {\n as,\n ref,\n value,\n disabled,\n className: theme.root('cursor-pointer', className),\n 'data-component': 'combobox-option',\n ...rest,\n };\n\n return (\n <HeadlessComboboxOption {...props}>\n <span className={theme.icon('absolute')}>\n <Icon name=\"Check\" />\n </span>\n {children}\n </HeadlessComboboxOption>\n );\n },\n);\n\nexport const comboboxOptionTheme: ComponentTheme<typeof useComboboxOptionTheme> = {\n classNames: {\n root: 'relative group/option p-1 pr-6 rounded-1 hover:bg-neutral-50 data-[active]:bg-neutral-50 text-sm transition-colors',\n icon: 'hidden group-data-[selected]/option:block right-1 top-1 text-neutral-500',\n },\n variants: {\n disabled: {\n true: {\n root: 'text-neutral-200 cursor-not-allowed',\n icon: 'text-neutral-200',\n },\n false: {\n root: '',\n icon: '',\n },\n },\n },\n};\n"],
4
+ "sourcesContent": ["import {\n ComboboxOption as HeadlessComboboxOption,\n type ComboboxOptionProps as HeadlessComboboxOptionProps,\n} from '@headlessui/react';\nimport {\n type ComponentPropsWithoutRef,\n type ElementType,\n type PropsWithChildren,\n type Ref,\n} from 'react';\n\nimport {\n type ComponentProps,\n type ComponentTheme,\n createComponentTheme,\n} from '../theme/internals.js';\nimport {Icon} from './Icon.js';\nimport {forwardRef} from './internals.js';\n\nexport const useComboboxOptionTheme = createComponentTheme('ComboboxOption', {\n variants: {disabled: [true, false]},\n elements: ['root', 'icon'],\n});\n\nconst LISTBOX_OPTION_ELEMENT = 'div';\n\nexport type ComboboxOptionProps<\n T extends ElementType,\n V extends boolean | number | string,\n> = PropsWithChildren<\n {\n as?: T | undefined;\n value: V;\n className?: string;\n } & ComponentProps<typeof useComboboxOptionTheme> &\n ComponentPropsWithoutRef<T>\n>;\n\nexport const ComboboxOption = forwardRef(\n <\n T extends ElementType = typeof LISTBOX_OPTION_ELEMENT,\n V extends boolean | number | string = string,\n >(\n {\n disabled = false,\n as = LISTBOX_OPTION_ELEMENT as T,\n value,\n className,\n children,\n ...rest\n }: ComboboxOptionProps<T, V>,\n ref: Ref<HTMLElement>,\n ) => {\n let theme = useComboboxOptionTheme({disabled});\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- needed\n let props: HeadlessComboboxOptionProps<any, any> = {\n as,\n ref,\n value,\n disabled,\n className: theme.root('cursor-pointer', className),\n 'data-component': 'combobox-option',\n ...rest,\n };\n\n return (\n <HeadlessComboboxOption {...props}>\n <span className={theme.icon('absolute')}>\n <Icon name=\"Check\" />\n </span>\n {children}\n </HeadlessComboboxOption>\n );\n },\n);\n\nexport const comboboxOptionTheme: ComponentTheme<typeof useComboboxOptionTheme> = {\n classNames: {\n root: 'relative group/option p-1 pr-6 rounded-1 hover:bg-neutral-50 data-[active]:bg-neutral-50 text-sm transition-colors',\n icon: 'hidden group-data-[selected]/option:block right-1 top-1 text-neutral-500',\n },\n variants: {\n disabled: {\n true: {\n root: 'text-neutral-200 cursor-not-allowed',\n icon: 'text-neutral-200',\n },\n false: {\n root: '',\n icon: '',\n },\n },\n },\n};\n"],
5
5
  "mappings": ";AAmEM,SAEI,KAFJ;AAnEN;AAAA,EACE,kBAAkB;AAAA,OAEb;AAQP;AAAA,EAGE;AAAA,OACK;AACP,SAAQ,YAAW;AACnB,SAAQ,kBAAiB;AAElB,aAAM,yBAAyB,qBAAqB,kBAAkB;AAAA,EAC3E,UAAU,EAAC,UAAU,CAAC,MAAM,KAAK,EAAC;AAAA,EAClC,UAAU,CAAC,QAAQ,MAAM;AAC3B,CAAC;AAED,MAAM,yBAAyB;AAcxB,aAAM,iBAAiB;AAAA,EAC5B,CAIE;AAAA,IACE,WAAW;AAAA,IACX,KAAK;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AACH,QAAI,QAAQ,uBAAuB,EAAC,SAAQ,CAAC;AAG7C,QAAI,QAA+C;AAAA,MACjD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW,MAAM,KAAK,kBAAkB,SAAS;AAAA,MACjD,kBAAkB;AAAA,MAClB,GAAG;AAAA,IACL;AAEA,WACE,qBAAC,0BAAwB,GAAG,OAC1B;AAAA,0BAAC,UAAK,WAAW,MAAM,KAAK,UAAU,GACpC,8BAAC,QAAK,MAAK,SAAQ,GACrB;AAAA,MACC;AAAA,OACH;AAAA,EAEJ;AACF;AAEO,aAAM,sBAAqE;AAAA,EAChF,YAAY;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA,UAAU;AAAA,IACR,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA,OAAO;AAAA,QACL,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;",
6
6
  "names": []
7
7
  }
@@ -16,21 +16,21 @@ export declare const useContainerTheme: ((themeProps: {
16
16
  };
17
17
  };
18
18
  };
19
- export type ContainerProps<T extends ElementType> = PropsWithChildren<ComponentProps<typeof useContainerTheme> & ComponentPropsWithoutRef<T> & {
19
+ export type ContainerProps<T extends ElementType> = PropsWithChildren<{
20
20
  as?: T | undefined;
21
21
  className?: string;
22
- }>;
23
- export declare const Container: <T extends ElementType = "div">(props: Partial<import("@jakubmazanec/ts-utils").Writable<{
22
+ } & ComponentProps<typeof useContainerTheme> & ComponentPropsWithoutRef<T>>;
23
+ export declare const Container: <T extends ElementType = "div">(props: {
24
+ ref?: Ref<HTMLElement> | undefined;
25
+ } & {
26
+ as?: T | undefined;
27
+ className?: string;
28
+ } & Partial<import("@jakubmazanec/ts-utils").Writable<{
24
29
  readonly spacing: "small" | "medium" | "large" | "extra-small";
25
30
  readonly direction: "row" | "column";
26
31
  readonly justify: "center" | "normal" | "spaced";
27
32
  readonly align: "center" | "normal";
28
33
  }>> & import("react").PropsWithoutRef<import("react").ComponentProps<T>> & {
29
- as?: T | undefined;
30
- className?: string;
31
- } & {
32
34
  children?: import("react").ReactNode | undefined;
33
- } & {
34
- ref?: Ref<HTMLElement> | undefined;
35
35
  }) => React.ReactNode;
36
36
  export declare const containerTheme: ComponentTheme<typeof useContainerTheme>;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../source/components/Container.ts"],
4
- "sourcesContent": ["import {\n type ComponentPropsWithoutRef,\n createElement,\n type ElementType,\n type PropsWithChildren,\n type Ref,\n} from 'react';\n\nimport {\n type ComponentProps,\n type ComponentTheme,\n createComponentTheme,\n} from '../theme/internals.js';\nimport {forwardRef} from './internals.js';\n\nexport const useContainerTheme = createComponentTheme('Container', {\n variants: {\n spacing: ['extra-small', 'small', 'medium', 'large'],\n direction: ['row', 'column'],\n justify: ['normal', 'center', 'spaced'],\n align: ['normal', 'center'],\n },\n});\n\nconst TEXT_ELEMENT = 'div';\n\nexport type ContainerProps<T extends ElementType> = PropsWithChildren<\n ComponentProps<typeof useContainerTheme> &\n ComponentPropsWithoutRef<T> & {\n as?: T | undefined;\n className?: string;\n }\n>;\n\nexport const Container = forwardRef(\n <T extends ElementType = typeof TEXT_ELEMENT>(\n {\n spacing = 'medium',\n direction = 'row',\n justify = 'normal',\n align = 'normal',\n as: Component = TEXT_ELEMENT as T,\n className,\n children,\n ...rest\n }: ContainerProps<T>,\n ref: Ref<HTMLElement>,\n ) => {\n let theme = useContainerTheme({spacing, direction, justify, align});\n let props = {\n ref,\n className: theme(null, className),\n 'data-component': 'container',\n ...rest,\n };\n\n return createElement(Component, props, children);\n },\n);\n\nexport const containerTheme: ComponentTheme<typeof useContainerTheme> = {\n className: 'flex',\n variants: {\n spacing: {\n 'extra-small': 'gap-1',\n small: 'gap-2',\n medium: 'gap-4',\n large: 'gap-6',\n },\n direction: {\n row: '',\n column: 'flex-col',\n },\n justify: {\n normal: '',\n center: 'justify-center',\n spaced: 'justify-between',\n },\n align: {\n normal: '',\n center: 'items-center',\n },\n },\n};\n"],
4
+ "sourcesContent": ["import {\n type ComponentPropsWithoutRef,\n createElement,\n type ElementType,\n type PropsWithChildren,\n type Ref,\n} from 'react';\n\nimport {\n type ComponentProps,\n type ComponentTheme,\n createComponentTheme,\n} from '../theme/internals.js';\nimport {forwardRef} from './internals.js';\n\nexport const useContainerTheme = createComponentTheme('Container', {\n variants: {\n spacing: ['extra-small', 'small', 'medium', 'large'],\n direction: ['row', 'column'],\n justify: ['normal', 'center', 'spaced'],\n align: ['normal', 'center'],\n },\n});\n\nconst TEXT_ELEMENT = 'div';\n\nexport type ContainerProps<T extends ElementType> = PropsWithChildren<\n {\n as?: T | undefined;\n className?: string;\n } & ComponentProps<typeof useContainerTheme> &\n ComponentPropsWithoutRef<T>\n>;\n\nexport const Container = forwardRef(\n <T extends ElementType = typeof TEXT_ELEMENT>(\n {\n spacing = 'medium',\n direction = 'row',\n justify = 'normal',\n align = 'normal',\n as: Component = TEXT_ELEMENT as T,\n className,\n children,\n ...rest\n }: ContainerProps<T>,\n ref: Ref<HTMLElement>,\n ) => {\n let theme = useContainerTheme({spacing, direction, justify, align});\n let props = {\n ref,\n className: theme(null, className),\n 'data-component': 'container',\n ...rest,\n };\n\n return createElement(Component, props, children);\n },\n);\n\nexport const containerTheme: ComponentTheme<typeof useContainerTheme> = {\n className: 'flex',\n variants: {\n spacing: {\n 'extra-small': 'gap-1',\n small: 'gap-2',\n medium: 'gap-4',\n large: 'gap-6',\n },\n direction: {\n row: '',\n column: 'flex-col',\n },\n justify: {\n normal: '',\n center: 'justify-center',\n spaced: 'justify-between',\n },\n align: {\n normal: '',\n center: 'items-center',\n },\n },\n};\n"],
5
5
  "mappings": ";AAAA;AAAA,EAEE;AAAA,OAIK;AAEP;AAAA,EAGE;AAAA,OACK;AACP,SAAQ,kBAAiB;AAElB,aAAM,oBAAoB,qBAAqB,aAAa;AAAA,EACjE,UAAU;AAAA,IACR,SAAS,CAAC,eAAe,SAAS,UAAU,OAAO;AAAA,IACnD,WAAW,CAAC,OAAO,QAAQ;AAAA,IAC3B,SAAS,CAAC,UAAU,UAAU,QAAQ;AAAA,IACtC,OAAO,CAAC,UAAU,QAAQ;AAAA,EAC5B;AACF,CAAC;AAED,MAAM,eAAe;AAUd,aAAM,YAAY;AAAA,EACvB,CACE;AAAA,IACE,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,IAAI,YAAY;AAAA,IAChB;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AACH,QAAI,QAAQ,kBAAkB,EAAC,SAAS,WAAW,SAAS,MAAK,CAAC;AAClE,QAAI,QAAQ;AAAA,MACV;AAAA,MACA,WAAW,MAAM,MAAM,SAAS;AAAA,MAChC,kBAAkB;AAAA,MAClB,GAAG;AAAA,IACL;AAEA,WAAO,cAAc,WAAW,OAAO,QAAQ;AAAA,EACjD;AACF;AAEO,aAAM,iBAA2D;AAAA,EACtE,WAAW;AAAA,EACX,UAAU;AAAA,IACR,SAAS;AAAA,MACP,eAAe;AAAA,MACf,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,IACT;AAAA,IACA,WAAW;AAAA,MACT,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAAA,IACA,SAAS;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV;AAAA,IACA,OAAO;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV;AAAA,EACF;AACF;",
6
6
  "names": []
7
7
  }
@@ -4,16 +4,16 @@ export declare const useDescriptionTheme: (() => (baseClassName?: import("../the
4
4
  componentThemeName: "Description";
5
5
  themeDefinition: undefined;
6
6
  };
7
- export type DescriptionProps<T extends ElementType> = PropsWithChildren<ComponentProps<typeof useDescriptionTheme> & ComponentPropsWithoutRef<T> & {
7
+ export type DescriptionProps<T extends ElementType> = PropsWithChildren<{
8
8
  as?: T | undefined;
9
9
  className?: string | undefined;
10
- }>;
11
- export declare const Description: <T extends ElementType = "p">(props: import("react").PropsWithoutRef<import("react").ComponentProps<T>> & {
10
+ } & ComponentProps<typeof useDescriptionTheme> & ComponentPropsWithoutRef<T>>;
11
+ export declare const Description: <T extends ElementType = "p">(props: {
12
+ ref?: Ref<HTMLElement> | undefined;
13
+ } & {
12
14
  as?: T | undefined;
13
15
  className?: string | undefined;
14
- } & {
16
+ } & import("react").PropsWithoutRef<import("react").ComponentProps<T>> & {
15
17
  children?: import("react").ReactNode | undefined;
16
- } & {
17
- ref?: Ref<HTMLElement> | undefined;
18
18
  }) => React.ReactNode;
19
19
  export declare const descriptionTheme: ComponentTheme<typeof useDescriptionTheme>;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../source/components/Description.tsx"],
4
- "sourcesContent": ["import {\n Description as HeadlessDescription,\n type DescriptionProps as HeadlessDescriptionProps,\n} from '@headlessui/react';\nimport {\n type ComponentPropsWithoutRef,\n type ElementType,\n type PropsWithChildren,\n type Ref,\n} from 'react';\n\nimport {\n type ComponentProps,\n type ComponentTheme,\n createComponentTheme,\n} from '../theme/internals.js';\nimport {filterProps, forwardRef} from './internals.js';\n\nexport const useDescriptionTheme = createComponentTheme('Description');\n\nconst DESCRIPTION_ELEMENT = 'p';\n\nexport type DescriptionProps<T extends ElementType> = PropsWithChildren<\n ComponentProps<typeof useDescriptionTheme> &\n ComponentPropsWithoutRef<T> & {\n as?: T | undefined;\n className?: string | undefined;\n }\n>;\n\nexport const Description = forwardRef(\n <T extends ElementType = typeof DESCRIPTION_ELEMENT>(\n {as = DESCRIPTION_ELEMENT as T, className, children, ...rest}: DescriptionProps<T>,\n ref: Ref<HTMLElement>,\n ) => {\n let theme = useDescriptionTheme();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- needed\n let props: HeadlessDescriptionProps<any> = filterProps({\n as,\n ref,\n className: theme(null, className),\n 'data-component': 'description',\n ...rest,\n });\n\n return <HeadlessDescription {...props}>{children}</HeadlessDescription>;\n },\n);\n\nexport const descriptionTheme: ComponentTheme<typeof useDescriptionTheme> = {\n className: 'font-sans text-sm',\n};\n"],
4
+ "sourcesContent": ["import {\n Description as HeadlessDescription,\n type DescriptionProps as HeadlessDescriptionProps,\n} from '@headlessui/react';\nimport {\n type ComponentPropsWithoutRef,\n type ElementType,\n type PropsWithChildren,\n type Ref,\n} from 'react';\n\nimport {\n type ComponentProps,\n type ComponentTheme,\n createComponentTheme,\n} from '../theme/internals.js';\nimport {filterProps, forwardRef} from './internals.js';\n\nexport const useDescriptionTheme = createComponentTheme('Description');\n\nconst DESCRIPTION_ELEMENT = 'p';\n\nexport type DescriptionProps<T extends ElementType> = PropsWithChildren<\n {\n as?: T | undefined;\n className?: string | undefined;\n } & ComponentProps<typeof useDescriptionTheme> &\n ComponentPropsWithoutRef<T>\n>;\n\nexport const Description = forwardRef(\n <T extends ElementType = typeof DESCRIPTION_ELEMENT>(\n {as = DESCRIPTION_ELEMENT as T, className, children, ...rest}: DescriptionProps<T>,\n ref: Ref<HTMLElement>,\n ) => {\n let theme = useDescriptionTheme();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- needed\n let props: HeadlessDescriptionProps<any> = filterProps({\n as,\n ref,\n className: theme(null, className),\n 'data-component': 'description',\n ...rest,\n });\n\n return <HeadlessDescription {...props}>{children}</HeadlessDescription>;\n },\n);\n\nexport const descriptionTheme: ComponentTheme<typeof useDescriptionTheme> = {\n className: 'font-sans text-sm',\n};\n"],
5
5
  "mappings": ";AA6CW;AA7CX;AAAA,EACE,eAAe;AAAA,OAEV;AAQP;AAAA,EAGE;AAAA,OACK;AACP,SAAQ,aAAa,kBAAiB;AAE/B,aAAM,sBAAsB,qBAAqB,aAAa;AAErE,MAAM,sBAAsB;AAUrB,aAAM,cAAc;AAAA,EACzB,CACE,EAAC,KAAK,qBAA0B,WAAW,UAAU,GAAG,KAAI,GAC5D,QACG;AACH,QAAI,QAAQ,oBAAoB;AAEhC,QAAI,QAAuC,YAAY;AAAA,MACrD;AAAA,MACA;AAAA,MACA,WAAW,MAAM,MAAM,SAAS;AAAA,MAChC,kBAAkB;AAAA,MAClB,GAAG;AAAA,IACL,CAAC;AAED,WAAO,oBAAC,uBAAqB,GAAG,OAAQ,UAAS;AAAA,EACnD;AACF;AAEO,aAAM,mBAA+D;AAAA,EAC1E,WAAW;AACb;",
6
6
  "names": []
7
7
  }
@@ -9,24 +9,24 @@ export declare const useDialogTheme: (() => {
9
9
  readonly elements: ["root", "backdrop"];
10
10
  };
11
11
  };
12
- export type DialogProps<T extends ElementType> = PropsWithChildren<ComponentProps<typeof useDialogTheme> & ComponentPropsWithoutRef<T> & {
12
+ export type DialogProps<T extends ElementType> = PropsWithChildren<{
13
13
  as?: T | undefined;
14
14
  open: boolean;
15
15
  static?: boolean | undefined;
16
16
  autoFocus?: boolean | undefined;
17
17
  className?: string;
18
18
  onClose?: () => void;
19
- }>;
20
- export declare const Dialog: <T extends ElementType = "div">(props: import("react").PropsWithoutRef<import("react").ComponentProps<T>> & {
19
+ } & ComponentProps<typeof useDialogTheme> & ComponentPropsWithoutRef<T>>;
20
+ export declare const Dialog: <T extends ElementType = "div">(props: {
21
+ ref?: Ref<HTMLElement> | undefined;
22
+ } & {
21
23
  as?: T | undefined;
22
24
  open: boolean;
23
25
  static?: boolean | undefined;
24
26
  autoFocus?: boolean | undefined;
25
27
  className?: string;
26
28
  onClose?: () => void;
27
- } & {
29
+ } & import("react").PropsWithoutRef<import("react").ComponentProps<T>> & {
28
30
  children?: import("react").ReactNode | undefined;
29
- } & {
30
- ref?: Ref<HTMLElement> | undefined;
31
31
  }) => React.ReactNode;
32
32
  export declare const dialogTheme: ComponentTheme<typeof useDialogTheme>;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../source/components/Dialog.tsx"],
4
- "sourcesContent": ["import {\n Dialog as HeadlessDialog,\n DialogBackdrop as HeadlessDialogBackdrop,\n type DialogProps as HeadlessDialogProps,\n} from '@headlessui/react';\nimport {\n type ComponentPropsWithoutRef,\n type ElementType,\n type PropsWithChildren,\n type Ref,\n useCallback,\n} from 'react';\n\nimport {\n type ComponentProps,\n type ComponentTheme,\n createComponentTheme,\n} from '../theme/internals.js';\nimport {filterProps, forwardRef} from './internals.js';\n\nexport const useDialogTheme = createComponentTheme('Dialog', {\n elements: ['root', 'backdrop'],\n});\n\nconst DIALOG_ELEMENT = 'div';\n\nexport type DialogProps<T extends ElementType> = PropsWithChildren<\n ComponentProps<typeof useDialogTheme> &\n ComponentPropsWithoutRef<T> & {\n as?: T | undefined;\n open: boolean;\n static?: boolean | undefined;\n autoFocus?: boolean | undefined;\n className?: string;\n onClose?: () => void;\n }\n>;\n\nexport const Dialog = forwardRef(\n <T extends ElementType = typeof DIALOG_ELEMENT>(\n {\n as = DIALOG_ELEMENT as T,\n open,\n static: isStatic,\n autoFocus,\n className,\n onClose,\n children,\n ...rest\n }: DialogProps<T>,\n ref: Ref<HTMLElement>,\n ) => {\n let theme = useDialogTheme();\n\n let handleClose = useCallback(() => {\n onClose?.();\n }, [onClose]);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- needed\n let props: HeadlessDialogProps<any> = filterProps({\n as,\n ref,\n open,\n static: isStatic,\n transition: true,\n onClose: handleClose,\n 'data-component': 'dialog',\n ...rest,\n });\n\n return (\n <HeadlessDialog {...props}>\n <HeadlessDialogBackdrop transition className={theme.backdrop('fixed inset-0')} />\n <div className={theme.root('fixed inset-0', className)}>{children}</div>\n </HeadlessDialog>\n );\n },\n);\n\nexport const dialogTheme: ComponentTheme<typeof useDialogTheme> = {\n classNames: {\n root: 'flex w-screen items-center justify-center p-4 z-30',\n backdrop: 'bg-black/30 z-30',\n },\n};\n"],
4
+ "sourcesContent": ["import {\n Dialog as HeadlessDialog,\n DialogBackdrop as HeadlessDialogBackdrop,\n type DialogProps as HeadlessDialogProps,\n} from '@headlessui/react';\nimport {\n type ComponentPropsWithoutRef,\n type ElementType,\n type PropsWithChildren,\n type Ref,\n useCallback,\n} from 'react';\n\nimport {\n type ComponentProps,\n type ComponentTheme,\n createComponentTheme,\n} from '../theme/internals.js';\nimport {filterProps, forwardRef} from './internals.js';\n\nexport const useDialogTheme = createComponentTheme('Dialog', {\n elements: ['root', 'backdrop'],\n});\n\nconst DIALOG_ELEMENT = 'div';\n\nexport type DialogProps<T extends ElementType> = PropsWithChildren<\n {\n as?: T | undefined;\n open: boolean;\n static?: boolean | undefined;\n autoFocus?: boolean | undefined;\n className?: string;\n onClose?: () => void;\n } & ComponentProps<typeof useDialogTheme> &\n ComponentPropsWithoutRef<T>\n>;\n\nexport const Dialog = forwardRef(\n <T extends ElementType = typeof DIALOG_ELEMENT>(\n {\n as = DIALOG_ELEMENT as T,\n open,\n static: isStatic,\n autoFocus,\n className,\n onClose,\n children,\n ...rest\n }: DialogProps<T>,\n ref: Ref<HTMLElement>,\n ) => {\n let theme = useDialogTheme();\n\n let handleClose = useCallback(() => {\n onClose?.();\n }, [onClose]);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- needed\n let props: HeadlessDialogProps<any> = filterProps({\n as,\n ref,\n open,\n static: isStatic,\n transition: true,\n onClose: handleClose,\n 'data-component': 'dialog',\n ...rest,\n });\n\n return (\n <HeadlessDialog {...props}>\n <HeadlessDialogBackdrop transition className={theme.backdrop('fixed inset-0')} />\n <div className={theme.root('fixed inset-0', className)}>{children}</div>\n </HeadlessDialog>\n );\n },\n);\n\nexport const dialogTheme: ComponentTheme<typeof useDialogTheme> = {\n classNames: {\n root: 'flex w-screen items-center justify-center p-4 z-30',\n backdrop: 'bg-black/30 z-30',\n },\n};\n"],
5
5
  "mappings": ";AAuEM,SACE,KADF;AAvEN;AAAA,EACE,UAAU;AAAA,EACV,kBAAkB;AAAA,OAEb;AACP;AAAA,EAKE;AAAA,OACK;AAEP;AAAA,EAGE;AAAA,OACK;AACP,SAAQ,aAAa,kBAAiB;AAE/B,aAAM,iBAAiB,qBAAqB,UAAU;AAAA,EAC3D,UAAU,CAAC,QAAQ,UAAU;AAC/B,CAAC;AAED,MAAM,iBAAiB;AAchB,aAAM,SAAS;AAAA,EACpB,CACE;AAAA,IACE,KAAK;AAAA,IACL;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AACH,QAAI,QAAQ,eAAe;AAE3B,QAAI,cAAc,YAAY,MAAM;AAClC,gBAAU;AAAA,IACZ,GAAG,CAAC,OAAO,CAAC;AAGZ,QAAI,QAAkC,YAAY;AAAA,MAChD;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,kBAAkB;AAAA,MAClB,GAAG;AAAA,IACL,CAAC;AAED,WACE,qBAAC,kBAAgB,GAAG,OAClB;AAAA,0BAAC,0BAAuB,YAAU,MAAC,WAAW,MAAM,SAAS,eAAe,GAAG;AAAA,MAC/E,oBAAC,SAAI,WAAW,MAAM,KAAK,iBAAiB,SAAS,GAAI,UAAS;AAAA,OACpE;AAAA,EAEJ;AACF;AAEO,aAAM,cAAqD;AAAA,EAChE,YAAY;AAAA,IACV,MAAM;AAAA,IACN,UAAU;AAAA,EACZ;AACF;",
6
6
  "names": []
7
7
  }
@@ -4,16 +4,16 @@ export declare const useDialogPanelTheme: (() => (baseClassName?: import("../the
4
4
  componentThemeName: "DialogPanel";
5
5
  themeDefinition: undefined;
6
6
  };
7
- export type DialogPanelProps<T extends ElementType> = PropsWithChildren<ComponentProps<typeof useDialogPanelTheme> & ComponentPropsWithoutRef<T> & {
7
+ export type DialogPanelProps<T extends ElementType> = PropsWithChildren<{
8
8
  as?: T | undefined;
9
9
  className?: string;
10
- }>;
11
- export declare const DialogPanel: <T extends ElementType = "div">(props: import("react").PropsWithoutRef<import("react").ComponentProps<T>> & {
10
+ } & ComponentProps<typeof useDialogPanelTheme> & ComponentPropsWithoutRef<T>>;
11
+ export declare const DialogPanel: <T extends ElementType = "div">(props: {
12
+ ref?: Ref<HTMLElement> | undefined;
13
+ } & {
12
14
  as?: T | undefined;
13
15
  className?: string;
14
- } & {
16
+ } & import("react").PropsWithoutRef<import("react").ComponentProps<T>> & {
15
17
  children?: import("react").ReactNode | undefined;
16
- } & {
17
- ref?: Ref<HTMLElement> | undefined;
18
18
  }) => React.ReactNode;
19
19
  export declare const dialogPanelTheme: ComponentTheme<typeof useDialogPanelTheme>;