@jfrader/ui 0.1.2 → 0.3.0

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 (156) hide show
  1. package/README.md +1 -1
  2. package/dist/accordion-Bd-j04hW.js +198 -0
  3. package/dist/accordion.js +1 -1
  4. package/dist/{alert-CA9ZlIZp.js → alert-BBqaKI4k.js} +57 -52
  5. package/dist/alert.js +1 -1
  6. package/dist/{avatar-IUW4yJl0.js → avatar-BahDVO9t.js} +40 -33
  7. package/dist/avatar.js +1 -1
  8. package/dist/{badge-Bru30HEn.js → badge-B_sLygxU.js} +32 -27
  9. package/dist/badge.js +1 -1
  10. package/dist/breadcrumbs-DVAOxfvL.js +141 -0
  11. package/dist/breadcrumbs.js +1 -1
  12. package/dist/{button-Cmixur4Q.js → button-P2e7_44z.js} +65 -53
  13. package/dist/button.js +1 -1
  14. package/dist/calendar-C9Yad_-w.js +394 -0
  15. package/dist/calendar.js +1 -1
  16. package/dist/card-D-aI2QHx.js +158 -0
  17. package/dist/card.js +1 -1
  18. package/dist/checkbox-COYG6L7d.js +140 -0
  19. package/dist/checkbox.js +1 -1
  20. package/dist/{choice-control-ByFogYcT.js → choice-control-5kJkLXgv.js} +1 -1
  21. package/dist/{collection-registry-1l9f3XJZ.js → collection-registry-BTYi6zGh.js} +1 -1
  22. package/dist/combobox-DrmjBbo7.js +327 -0
  23. package/dist/combobox.js +1 -1
  24. package/dist/command-palette-V_2pEay7.js +379 -0
  25. package/dist/command-palette.js +1 -1
  26. package/dist/container-BOaSptJa.js +41 -0
  27. package/dist/container.js +1 -1
  28. package/dist/{date-picker-DrHJMt2p.js → date-picker-ClUYBIBh.js} +69 -59
  29. package/dist/date-picker.js +1 -1
  30. package/dist/dialog-xaydbXl2.js +218 -0
  31. package/dist/dialog.js +1 -1
  32. package/dist/divider-DYoJf0I_.js +84 -0
  33. package/dist/divider.js +1 -1
  34. package/dist/field-anatomy-D2ToMeRa.js +109 -0
  35. package/dist/flex-Dh-_J5-U.js +28 -0
  36. package/dist/flex.js +1 -1
  37. package/dist/{icon-wrapper-CFWzew5m.js → icon-wrapper-stN8sD7R.js} +1 -1
  38. package/dist/index.js +38 -37
  39. package/dist/{kbd-B03_qIwQ.js → kbd-C3ACoMoE.js} +36 -21
  40. package/dist/kbd.js +1 -1
  41. package/dist/{layout-style-7ZTOiWGR.js → layout-style-Cbd1Vilw.js} +1 -1
  42. package/dist/{loading-ring-BpdB0aFi.js → loading-ring-B8-30Dl1.js} +1 -1
  43. package/dist/menu-DU60SMdt.js +216 -0
  44. package/dist/menu.js +1 -1
  45. package/dist/navigation-DhnKriOp.js +197 -0
  46. package/dist/navigation.js +1 -1
  47. package/dist/pagination-DYdwsxwe.js +156 -0
  48. package/dist/pagination.js +1 -1
  49. package/dist/{pill-CrVqffKM.js → pill-DO2gHzMb.js} +16 -10
  50. package/dist/pill.js +1 -1
  51. package/dist/popover-BtN_0ejj.js +113 -0
  52. package/dist/popover.js +1 -1
  53. package/dist/progress-BpJswTG4.js +90 -0
  54. package/dist/progress.js +1 -1
  55. package/dist/radio-group-Ce0_IWQr.js +145 -0
  56. package/dist/radio-group.js +1 -1
  57. package/dist/select-BCS0-LVW.js +286 -0
  58. package/dist/select.js +1 -1
  59. package/dist/{skeleton-gJ4ImO5u.js → skeleton-OoFlOEXO.js} +24 -18
  60. package/dist/skeleton.js +1 -1
  61. package/dist/spinner-C2YDoiMn.js +56 -0
  62. package/dist/spinner.js +1 -1
  63. package/dist/stack-DC3IbtWk.js +27 -0
  64. package/dist/stack.js +1 -1
  65. package/dist/{switch-2hm2WnWt.js → switch-Dr-qjmT4.js} +63 -57
  66. package/dist/switch.js +1 -1
  67. package/dist/sx-Dx9JUKp5.js +23 -0
  68. package/dist/tabs-CK_g1RKa.js +203 -0
  69. package/dist/tabs.js +1 -1
  70. package/dist/text-field-D60ok14S.js +76 -0
  71. package/dist/text-field.js +1 -1
  72. package/dist/textarea-DyfjtP0A.js +86 -0
  73. package/dist/textarea.js +1 -1
  74. package/dist/theme-root-BiXXvQvr.js +42 -0
  75. package/dist/theme-root.js +1 -1
  76. package/dist/{toast-D3Y6OAsg.js → toast-iqelR-r0.js} +41 -30
  77. package/dist/toast.js +1 -1
  78. package/dist/toggle-group-CI0e7hFm.js +166 -0
  79. package/dist/toggle-group.js +1 -1
  80. package/dist/tooltip-CB-HC1js.js +108 -0
  81. package/dist/tooltip.js +1 -1
  82. package/dist/{trigger-style-B1GFmH7M.js → trigger-style-B1KVC8O1.js} +1 -1
  83. package/dist/types/components/accordion/accordion.d.ts +14 -9
  84. package/dist/types/components/alert/alert.d.ts +7 -3
  85. package/dist/types/components/avatar/avatar.d.ts +7 -3
  86. package/dist/types/components/badge/badge.d.ts +7 -3
  87. package/dist/types/components/breadcrumbs/breadcrumbs.d.ts +9 -5
  88. package/dist/types/components/button/button.d.ts +7 -3
  89. package/dist/types/components/calendar/calendar.d.ts +12 -7
  90. package/dist/types/components/card/card.d.ts +21 -13
  91. package/dist/types/components/checkbox/checkbox.d.ts +7 -3
  92. package/dist/types/components/combobox/combobox.d.ts +13 -8
  93. package/dist/types/components/command-palette/command-palette.d.ts +23 -15
  94. package/dist/types/components/container/container.d.ts +7 -3
  95. package/dist/types/components/date-picker/date-picker.d.ts +7 -4
  96. package/dist/types/components/dialog/dialog.d.ts +17 -11
  97. package/dist/types/components/divider/divider.d.ts +7 -3
  98. package/dist/types/components/field/field-anatomy.d.ts +3 -2
  99. package/dist/types/components/flex/flex.d.ts +7 -3
  100. package/dist/types/components/kbd/kbd.d.ts +9 -5
  101. package/dist/types/components/menu/menu.d.ts +14 -9
  102. package/dist/types/components/navigation/navigation.d.ts +12 -7
  103. package/dist/types/components/pagination/pagination.d.ts +7 -3
  104. package/dist/types/components/pill/pill.d.ts +7 -3
  105. package/dist/types/components/popover/popover.d.ts +8 -5
  106. package/dist/types/components/progress/progress.d.ts +7 -3
  107. package/dist/types/components/radio-group/radio-group.d.ts +9 -5
  108. package/dist/types/components/select/select.d.ts +14 -9
  109. package/dist/types/components/skeleton/skeleton.d.ts +7 -3
  110. package/dist/types/components/spinner/spinner.d.ts +7 -3
  111. package/dist/types/components/stack/stack.d.ts +4 -1
  112. package/dist/types/components/switch/switch.d.ts +7 -3
  113. package/dist/types/components/tabs/tabs.d.ts +15 -9
  114. package/dist/types/components/text-field/text-field.d.ts +7 -3
  115. package/dist/types/components/textarea/textarea.d.ts +7 -3
  116. package/dist/types/components/theme-provider/theme-provider.d.ts +11 -0
  117. package/dist/types/components/theme-root/theme-root.d.ts +7 -3
  118. package/dist/types/components/toast/toast.d.ts +7 -4
  119. package/dist/types/components/toggle-group/toggle-group.d.ts +8 -5
  120. package/dist/types/components/tooltip/tooltip.d.ts +8 -5
  121. package/dist/types/index.d.ts +4 -0
  122. package/dist/types/overlay/use-native-dialog.d.ts +2 -2
  123. package/dist/types/styling/css.d.ts +3 -2
  124. package/dist/types/styling/styled.d.ts +1 -0
  125. package/dist/types/styling/sx.d.ts +16 -0
  126. package/dist/types/styling/theme.d.ts +98 -0
  127. package/dist/{visually-hidden-DCWhf0Cb.js → visually-hidden-BJdvqqvn.js} +1 -1
  128. package/package.json +5 -4
  129. package/dist/accordion-C3YbYFBi.js +0 -169
  130. package/dist/breadcrumbs-CQaviWRc.js +0 -126
  131. package/dist/calendar-DUgS0xmp.js +0 -373
  132. package/dist/card-D9CHtouU.js +0 -121
  133. package/dist/checkbox-DKa5BCdy.js +0 -135
  134. package/dist/combobox-Dq3V88Zt.js +0 -302
  135. package/dist/command-palette-6c158eH1.js +0 -329
  136. package/dist/container-xUEIoZzj.js +0 -35
  137. package/dist/css-Cgj6sCHn.js +0 -2
  138. package/dist/dialog-C2NSOOP-.js +0 -176
  139. package/dist/divider-yF5EmhhT.js +0 -77
  140. package/dist/field-anatomy-BzGw1Ch9.js +0 -105
  141. package/dist/flex-5-NI5SSy.js +0 -22
  142. package/dist/menu-bvKRJOhJ.js +0 -187
  143. package/dist/navigation-xPoqh_Iz.js +0 -175
  144. package/dist/pagination-BIKYsxK1.js +0 -149
  145. package/dist/popover-CVAZ_C1a.js +0 -98
  146. package/dist/progress-C8bgujFI.js +0 -84
  147. package/dist/radio-group-CvQ4x8ii.js +0 -131
  148. package/dist/select-CNNiUhKB.js +0 -257
  149. package/dist/spinner-CSFiP0Oi.js +0 -50
  150. package/dist/stack-mEAryjKz.js +0 -21
  151. package/dist/tabs-GBppQabg.js +0 -174
  152. package/dist/text-field-DDPqQu29.js +0 -74
  153. package/dist/textarea-OP8_3IUR.js +0 -84
  154. package/dist/theme-root-eLka0ZP1.js +0 -21
  155. package/dist/toggle-group-BxzJ-6Cp.js +0 -151
  156. package/dist/tooltip-CVl8HS4S.js +0 -93
@@ -1,5 +1,6 @@
1
- import { type ButtonHTMLAttributes, type HTMLAttributes, type ReactNode } from 'react';
1
+ import { type ComponentPropsWithRef, type ReactNode } from 'react';
2
2
  import { type Placement } from '@floating-ui/react';
3
+ import { type SxProps } from '../../styling/sx';
3
4
  export interface PopoverProps {
4
5
  open?: boolean;
5
6
  defaultOpen?: boolean;
@@ -7,13 +8,15 @@ export interface PopoverProps {
7
8
  placement?: Placement;
8
9
  children?: ReactNode;
9
10
  }
10
- export interface PopoverTriggerProps extends ButtonHTMLAttributes<HTMLButtonElement> {
11
+ export interface PopoverTriggerProps extends ComponentPropsWithRef<'button'>, SxProps {
11
12
  }
12
- export interface PopoverContentProps extends HTMLAttributes<HTMLDivElement> {
13
+ export interface PopoverContentProps extends ComponentPropsWithRef<'div'>, SxProps {
13
14
  }
14
15
  declare function PopoverRoot({ open: openProp, defaultOpen, onOpenChange, placement, children, }: PopoverProps): import("@emotion/react/jsx-runtime").JSX.Element;
16
+ declare function PopoverTrigger({ ref, className, sx, ...props }: PopoverTriggerProps): import("@emotion/react/jsx-runtime").JSX.Element;
17
+ declare function PopoverContent({ ref, style, className, sx, ...rest }: PopoverContentProps): import("@emotion/react/jsx-runtime").JSX.Element | null;
15
18
  export declare const Popover: typeof PopoverRoot & {
16
- Trigger: import("react").ForwardRefExoticComponent<PopoverTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
17
- Content: import("react").ForwardRefExoticComponent<PopoverContentProps & import("react").RefAttributes<HTMLDivElement>>;
19
+ Trigger: typeof PopoverTrigger;
20
+ Content: typeof PopoverContent;
18
21
  };
19
22
  export {};
@@ -1,10 +1,11 @@
1
- import { type HTMLAttributes, type ReactNode } from 'react';
1
+ import { type ComponentPropsWithRef, type ReactNode } from 'react';
2
2
  import { type Interpolation, type Theme } from '../../styling/css';
3
+ import { type SxProps } from '../../styling/sx';
3
4
  export interface ProgressPartProps {
4
5
  className?: string;
5
6
  css?: Interpolation<Theme>;
6
7
  }
7
- export interface ProgressProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
8
+ export interface ProgressProps extends Omit<ComponentPropsWithRef<'div'>, 'children'>, SxProps {
8
9
  /** Current value in `0..max`; leave undefined for indeterminate progress. */
9
10
  value?: number;
10
11
  max?: number;
@@ -16,4 +17,7 @@ export interface ProgressProps extends Omit<HTMLAttributes<HTMLDivElement>, 'chi
16
17
  indicator?: ProgressPartProps;
17
18
  };
18
19
  }
19
- export declare const Progress: import("react").ForwardRefExoticComponent<ProgressProps & import("react").RefAttributes<HTMLDivElement>>;
20
+ export declare function Progress({ ref, value, max, label, getValueLabel, slotProps, 'aria-labelledby': ariaLabelledByProp, className, sx, ...rest }: ProgressProps): import("@emotion/react/jsx-runtime").JSX.Element;
21
+ export declare namespace Progress {
22
+ var displayName: string;
23
+ }
@@ -1,7 +1,8 @@
1
- import { type HTMLAttributes, type InputHTMLAttributes, type ReactNode } from 'react';
1
+ import { type ComponentPropsWithRef, type ReactNode } from 'react';
2
2
  import { type Interpolation, type Theme } from '../../styling/css';
3
+ import { type SxProps } from '../../styling/sx';
3
4
  export type RadioGroupOrientation = 'vertical' | 'horizontal';
4
- export interface RadioGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {
5
+ export interface RadioGroupProps extends Omit<ComponentPropsWithRef<'div'>, 'onChange' | 'defaultValue'>, SxProps {
5
6
  value?: string;
6
7
  defaultValue?: string;
7
8
  onValueChange?: (value: string) => void;
@@ -13,7 +14,7 @@ export interface RadioGroupRadioPartProps {
13
14
  className?: string;
14
15
  css?: Interpolation<Theme>;
15
16
  }
16
- export interface RadioGroupRadioProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'value' | 'name' | 'checked' | 'defaultChecked' | 'size'> {
17
+ export interface RadioGroupRadioProps extends Omit<ComponentPropsWithRef<'input'>, 'type' | 'value' | 'name' | 'checked' | 'defaultChecked' | 'size'>, SxProps {
17
18
  value: string;
18
19
  label?: ReactNode;
19
20
  description?: ReactNode;
@@ -24,6 +25,9 @@ export interface RadioGroupRadioProps extends Omit<InputHTMLAttributes<HTMLInput
24
25
  description?: RadioGroupRadioPartProps;
25
26
  };
26
27
  }
27
- export declare const RadioGroup: import("react").ForwardRefExoticComponent<RadioGroupProps & import("react").RefAttributes<HTMLDivElement>> & {
28
- Radio: import("react").ForwardRefExoticComponent<RadioGroupRadioProps & import("react").RefAttributes<HTMLInputElement>>;
28
+ declare function RadioGroupRoot({ ref, value: valueProp, defaultValue, onValueChange, name: nameProp, disabled, orientation, className, sx, ...rest }: RadioGroupProps): import("@emotion/react/jsx-runtime").JSX.Element;
29
+ declare function RadioGroupRadio({ ref, value, label, description, disabled: disabledProp, onChange, slotProps, className, sx, 'aria-labelledby': ariaLabelledByProp, 'aria-describedby': ariaDescribedByProp, ...rest }: RadioGroupRadioProps): import("@emotion/react/jsx-runtime").JSX.Element;
30
+ export declare const RadioGroup: typeof RadioGroupRoot & {
31
+ Radio: typeof RadioGroupRadio;
29
32
  };
33
+ export {};
@@ -1,5 +1,6 @@
1
- import { type ButtonHTMLAttributes, type HTMLAttributes, type ReactNode } from 'react';
1
+ import { type ComponentPropsWithRef, type ReactNode } from 'react';
2
2
  import { type Placement } from '@floating-ui/react';
3
+ import { type SxProps } from '../../styling/sx';
3
4
  export interface SelectProps {
4
5
  value?: string;
5
6
  defaultValue?: string;
@@ -14,25 +15,29 @@ export interface SelectProps {
14
15
  name?: string;
15
16
  children?: ReactNode;
16
17
  }
17
- export interface SelectTriggerProps extends ButtonHTMLAttributes<HTMLButtonElement> {
18
+ export interface SelectTriggerProps extends ComponentPropsWithRef<'button'>, SxProps {
18
19
  id?: string;
19
20
  }
20
- export interface SelectValueProps extends HTMLAttributes<HTMLSpanElement> {
21
+ export interface SelectValueProps extends ComponentPropsWithRef<'span'>, SxProps {
21
22
  /** Shown when no option matches the selected value. */
22
23
  placeholder?: ReactNode;
23
24
  }
24
- export interface SelectContentProps extends HTMLAttributes<HTMLDivElement> {
25
+ export interface SelectContentProps extends ComponentPropsWithRef<'div'>, SxProps {
25
26
  }
26
- export interface SelectItemProps extends HTMLAttributes<HTMLDivElement> {
27
+ export interface SelectItemProps extends ComponentPropsWithRef<'div'>, SxProps {
27
28
  /** Unique within the select. */
28
29
  value: string;
29
30
  disabled?: boolean;
30
31
  }
31
32
  declare function SelectRoot({ value: valueProp, defaultValue, onValueChange, open: openProp, defaultOpen, onOpenChange, placement, disabled, name, children, }: SelectProps): import("@emotion/react/jsx-runtime").JSX.Element;
33
+ declare function SelectTrigger({ ref, id: idProp, disabled: disabledProp, onKeyDown, className, sx, ...rest }: SelectTriggerProps): import("@emotion/react/jsx-runtime").JSX.Element;
34
+ declare function SelectValue({ ref, placeholder, className, sx, ...rest }: SelectValueProps): import("@emotion/react/jsx-runtime").JSX.Element;
35
+ declare function SelectContent({ ref, style, onMouseDown, children, className, sx, ...rest }: SelectContentProps): import("@emotion/react/jsx-runtime").JSX.Element;
36
+ declare function SelectItem({ ref, value, disabled, onClick, children, className, sx, ...rest }: SelectItemProps): import("@emotion/react/jsx-runtime").JSX.Element;
32
37
  export declare const Select: typeof SelectRoot & {
33
- Trigger: import("react").ForwardRefExoticComponent<SelectTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
34
- Value: import("react").ForwardRefExoticComponent<SelectValueProps & import("react").RefAttributes<HTMLSpanElement>>;
35
- Content: import("react").ForwardRefExoticComponent<SelectContentProps & import("react").RefAttributes<HTMLDivElement>>;
36
- Item: import("react").ForwardRefExoticComponent<SelectItemProps & import("react").RefAttributes<HTMLDivElement>>;
38
+ Trigger: typeof SelectTrigger;
39
+ Value: typeof SelectValue;
40
+ Content: typeof SelectContent;
41
+ Item: typeof SelectItem;
37
42
  };
38
43
  export {};
@@ -1,11 +1,15 @@
1
- import { type HTMLAttributes } from 'react';
1
+ import type { ComponentPropsWithRef } from 'react';
2
+ import { type SxProps } from '../../styling/sx';
2
3
  type Length = number | string;
3
- export interface SkeletonProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
4
+ export interface SkeletonProps extends Omit<ComponentPropsWithRef<'div'>, 'children'>, SxProps {
4
5
  width?: Length;
5
6
  height?: Length;
6
7
  /** Round placeholder; height follows width unless `height` is given. */
7
8
  circle?: boolean;
8
9
  radius?: Length;
9
10
  }
10
- export declare const Skeleton: import("react").ForwardRefExoticComponent<SkeletonProps & import("react").RefAttributes<HTMLDivElement>>;
11
+ export declare function Skeleton({ ref, width, height, circle, radius, style, className, sx, ...rest }: SkeletonProps): import("@emotion/react/jsx-runtime").JSX.Element;
12
+ export declare namespace Skeleton {
13
+ var displayName: string;
14
+ }
11
15
  export {};
@@ -1,8 +1,12 @@
1
- import { type HTMLAttributes } from 'react';
1
+ import type { ComponentPropsWithRef } from 'react';
2
+ import { type SxProps } from '../../styling/sx';
2
3
  export type SpinnerSize = 'sm' | 'md' | 'lg';
3
- export interface SpinnerProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'children'> {
4
+ export interface SpinnerProps extends Omit<ComponentPropsWithRef<'span'>, 'children'>, SxProps {
4
5
  size?: SpinnerSize;
5
6
  /** Accessible text announced for the status region. */
6
7
  label?: string;
7
8
  }
8
- export declare const Spinner: import("react").ForwardRefExoticComponent<SpinnerProps & import("react").RefAttributes<HTMLSpanElement>>;
9
+ export declare function Spinner({ ref, size, label, className, sx, ...rest }: SpinnerProps): import("@emotion/react/jsx-runtime").JSX.Element;
10
+ export declare namespace Spinner {
11
+ var displayName: string;
12
+ }
@@ -4,4 +4,7 @@ export type StackAlign = Exclude<FlexAlign, 'baseline'>;
4
4
  export interface StackProps extends Omit<FlexProps, 'direction' | 'inline' | 'align'> {
5
5
  align?: StackAlign;
6
6
  }
7
- export declare const Stack: import("react").ForwardRefExoticComponent<StackProps & import("react").RefAttributes<HTMLDivElement>>;
7
+ export declare function Stack({ ref, gap, align, justify, wrap, className, sx, ...rest }: StackProps): import("@emotion/react/jsx-runtime").JSX.Element;
8
+ export declare namespace Stack {
9
+ var displayName: string;
10
+ }
@@ -1,11 +1,12 @@
1
- import { type InputHTMLAttributes, type ReactNode } from 'react';
1
+ import { type ComponentPropsWithRef, type ReactNode } from 'react';
2
2
  import { type Interpolation, type Theme } from '../../styling/css';
3
+ import { type SxProps } from '../../styling/sx';
3
4
  export type SwitchSize = 'sm' | 'md';
4
5
  export interface SwitchPartProps {
5
6
  className?: string;
6
7
  css?: Interpolation<Theme>;
7
8
  }
8
- export interface SwitchProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'> {
9
+ export interface SwitchProps extends Omit<ComponentPropsWithRef<'input'>, 'size' | 'type'>, SxProps {
9
10
  label?: ReactNode;
10
11
  description?: ReactNode;
11
12
  size?: SwitchSize;
@@ -17,4 +18,7 @@ export interface SwitchProps extends Omit<InputHTMLAttributes<HTMLInputElement>,
17
18
  description?: SwitchPartProps;
18
19
  };
19
20
  }
20
- export declare const Switch: import("react").ForwardRefExoticComponent<SwitchProps & import("react").RefAttributes<HTMLInputElement>>;
21
+ export declare function Switch({ ref, label, description, size, onChange, onCheckedChange, slotProps, className, sx, dir, 'aria-labelledby': ariaLabelledByProp, 'aria-describedby': ariaDescribedByProp, ...rest }: SwitchProps): import("@emotion/react/jsx-runtime").JSX.Element;
22
+ export declare namespace Switch {
23
+ var displayName: string;
24
+ }
@@ -1,22 +1,28 @@
1
- import { type ButtonHTMLAttributes, type HTMLAttributes } from 'react';
1
+ import { type ComponentPropsWithRef } from 'react';
2
+ import { type SxProps } from '../../styling/sx';
2
3
  export type TabsOrientation = 'horizontal' | 'vertical';
3
4
  export type TabsActivation = 'auto' | 'manual';
4
- export interface TabsProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {
5
+ export interface TabsProps extends Omit<ComponentPropsWithRef<'div'>, 'onChange' | 'defaultValue'>, SxProps {
5
6
  value?: string;
6
7
  defaultValue?: string;
7
8
  onValueChange?: (value: string) => void;
8
9
  orientation?: TabsOrientation;
9
10
  activation?: TabsActivation;
10
11
  }
11
- export type TabsListProps = HTMLAttributes<HTMLDivElement>;
12
- export interface TabsTabProps extends ButtonHTMLAttributes<HTMLButtonElement> {
12
+ export type TabsListProps = ComponentPropsWithRef<'div'> & SxProps;
13
+ export interface TabsTabProps extends ComponentPropsWithRef<'button'>, SxProps {
13
14
  value: string;
14
15
  }
15
- export interface TabsPanelProps extends HTMLAttributes<HTMLDivElement> {
16
+ export interface TabsPanelProps extends ComponentPropsWithRef<'div'>, SxProps {
16
17
  value: string;
17
18
  }
18
- export declare const Tabs: import("react").ForwardRefExoticComponent<TabsProps & import("react").RefAttributes<HTMLDivElement>> & {
19
- List: import("react").ForwardRefExoticComponent<TabsListProps & import("react").RefAttributes<HTMLDivElement>>;
20
- Tab: import("react").ForwardRefExoticComponent<TabsTabProps & import("react").RefAttributes<HTMLButtonElement>>;
21
- Panel: import("react").ForwardRefExoticComponent<TabsPanelProps & import("react").RefAttributes<HTMLDivElement>>;
19
+ declare function TabsRoot({ ref, value: valueProp, defaultValue, onValueChange, orientation, activation, className, sx, ...rest }: TabsProps): import("@emotion/react/jsx-runtime").JSX.Element;
20
+ declare function TabsList({ ref, onKeyDown, className, sx, ...rest }: TabsListProps): import("@emotion/react/jsx-runtime").JSX.Element;
21
+ declare function TabsTab({ ref, value, disabled, onClick, onFocus, className, sx, ...rest }: TabsTabProps): import("@emotion/react/jsx-runtime").JSX.Element;
22
+ declare function TabsPanel({ ref, value, tabIndex, 'aria-labelledby': ariaLabelledByProp, className, sx, ...rest }: TabsPanelProps): import("@emotion/react/jsx-runtime").JSX.Element;
23
+ export declare const Tabs: typeof TabsRoot & {
24
+ List: typeof TabsList;
25
+ Tab: typeof TabsTab;
26
+ Panel: typeof TabsPanel;
22
27
  };
28
+ export {};
@@ -1,9 +1,10 @@
1
- import { type InputHTMLAttributes, type ReactNode } from 'react';
1
+ import type { ComponentPropsWithRef, ReactNode } from 'react';
2
+ import type { SxProps } from '../../styling/sx';
2
3
  import { type FieldPartProps, type FieldSlotProps } from '../field/field-anatomy';
3
4
  export type TextFieldSize = 'sm' | 'md' | 'lg';
4
5
  export interface TextFieldPartProps extends FieldPartProps {
5
6
  }
6
- export interface TextFieldProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {
7
+ export interface TextFieldProps extends Omit<ComponentPropsWithRef<'input'>, 'size'>, SxProps {
7
8
  label?: ReactNode;
8
9
  description?: ReactNode;
9
10
  error?: ReactNode;
@@ -11,4 +12,7 @@ export interface TextFieldProps extends Omit<InputHTMLAttributes<HTMLInputElemen
11
12
  onValueChange?: (value: string) => void;
12
13
  slotProps?: FieldSlotProps<TextFieldPartProps>;
13
14
  }
14
- export declare const TextField: import("react").ForwardRefExoticComponent<TextFieldProps & import("react").RefAttributes<HTMLInputElement>>;
15
+ export declare function TextField({ ref, label, description, error, size, onChange, onValueChange, slotProps, className, sx, required, id: idProp, 'aria-describedby': ariaDescribedByProp, 'aria-invalid': ariaInvalidProp, ...rest }: TextFieldProps): import("@emotion/react/jsx-runtime").JSX.Element;
16
+ export declare namespace TextField {
17
+ var displayName: string;
18
+ }
@@ -1,10 +1,11 @@
1
- import { type ReactNode, type TextareaHTMLAttributes } from 'react';
1
+ import type { ComponentPropsWithRef, ReactNode } from 'react';
2
+ import type { SxProps } from '../../styling/sx';
2
3
  import { type FieldPartProps, type FieldSlotProps } from '../field/field-anatomy';
3
4
  export type TextareaSize = 'sm' | 'md' | 'lg';
4
5
  export type TextareaResize = 'none' | 'vertical';
5
6
  export interface TextareaPartProps extends FieldPartProps {
6
7
  }
7
- export interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {
8
+ export interface TextareaProps extends ComponentPropsWithRef<'textarea'>, SxProps {
8
9
  label?: ReactNode;
9
10
  description?: ReactNode;
10
11
  error?: ReactNode;
@@ -14,4 +15,7 @@ export interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElemen
14
15
  onValueChange?: (value: string) => void;
15
16
  slotProps?: FieldSlotProps<TextareaPartProps>;
16
17
  }
17
- export declare const Textarea: import("react").ForwardRefExoticComponent<TextareaProps & import("react").RefAttributes<HTMLTextAreaElement>>;
18
+ export declare function Textarea({ ref, label, description, error, size, resize, autoResize, rows, onChange, onValueChange, slotProps, className, sx, required, id: idProp, 'aria-describedby': ariaDescribedByProp, 'aria-invalid': ariaInvalidProp, ...rest }: TextareaProps): import("@emotion/react/jsx-runtime").JSX.Element;
19
+ export declare namespace Textarea {
20
+ var displayName: string;
21
+ }
@@ -0,0 +1,11 @@
1
+ import type { ReactNode } from 'react';
2
+ import { type JfraderTheme } from '../../styling/theme';
3
+ export interface ThemeProviderProps {
4
+ theme?: JfraderTheme;
5
+ children?: ReactNode;
6
+ }
7
+ export declare function ThemeProvider({ theme, children }: ThemeProviderProps): import("@emotion/react/jsx-runtime").JSX.Element;
8
+ export declare namespace ThemeProvider {
9
+ var displayName: string;
10
+ }
11
+ export declare function useTheme(): JfraderTheme;
@@ -1,7 +1,11 @@
1
- import { type HTMLAttributes, type ReactNode } from 'react';
1
+ import type { ComponentPropsWithRef, ReactNode } from 'react';
2
+ import { type SxProps } from '../../styling/sx';
2
3
  export type ThemeName = 'dark' | 'light';
3
- export interface ThemeRootProps extends HTMLAttributes<HTMLDivElement> {
4
+ export interface ThemeRootProps extends ComponentPropsWithRef<'div'>, SxProps {
4
5
  theme?: ThemeName;
5
6
  children?: ReactNode;
6
7
  }
7
- export declare const ThemeRoot: import("react").ForwardRefExoticComponent<ThemeRootProps & import("react").RefAttributes<HTMLDivElement>>;
8
+ export declare function ThemeRoot({ ref, theme, className, sx, ...rest }: ThemeRootProps): import("@emotion/react/jsx-runtime").JSX.Element;
9
+ export declare namespace ThemeRoot {
10
+ var displayName: string;
11
+ }
@@ -1,4 +1,5 @@
1
- import { type HTMLAttributes, type MouseEvent, type ReactNode } from 'react';
1
+ import { type ComponentPropsWithRef, type MouseEvent, type ReactNode } from 'react';
2
+ import { type SxProps } from '../../styling/sx';
2
3
  export type ToastTone = 'neutral' | 'success' | 'danger';
3
4
  export interface ToastAction {
4
5
  label: string;
@@ -22,7 +23,7 @@ export interface ToastProviderProps {
22
23
  /** Accessible label for each toast's close button. */
23
24
  dismissLabel?: string;
24
25
  }
25
- export interface ToastViewportProps extends HTMLAttributes<HTMLDivElement> {
26
+ export interface ToastViewportProps extends ComponentPropsWithRef<'div'>, SxProps {
26
27
  }
27
28
  export interface ToastApi {
28
29
  toast: (options: ToastOptions) => string;
@@ -30,8 +31,10 @@ export interface ToastApi {
30
31
  }
31
32
  export declare function useToast(): ToastApi;
32
33
  declare function ToastProvider({ children, max, duration, dismissLabel, }: ToastProviderProps): import("@emotion/react/jsx-runtime").JSX.Element;
33
- export declare const Toast: typeof ToastProvider & {
34
+ declare function ToastViewport({ ref, className, sx, ...props }: ToastViewportProps): import("@emotion/react/jsx-runtime").JSX.Element;
35
+ declare function ToastRoot(props: ToastProviderProps): import("@emotion/react/jsx-runtime").JSX.Element;
36
+ export declare const Toast: typeof ToastRoot & {
34
37
  Provider: typeof ToastProvider;
35
- Viewport: import("react").ForwardRefExoticComponent<ToastViewportProps & import("react").RefAttributes<HTMLDivElement>>;
38
+ Viewport: typeof ToastViewport;
36
39
  };
37
40
  export {};
@@ -1,7 +1,8 @@
1
- import { type ButtonHTMLAttributes, type HTMLAttributes } from 'react';
1
+ import { type ComponentPropsWithRef } from 'react';
2
+ import { type SxProps } from '../../styling/sx';
2
3
  export type ToggleGroupType = 'single' | 'multiple';
3
4
  export type ToggleGroupOrientation = 'horizontal' | 'vertical';
4
- interface ToggleGroupBaseProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {
5
+ interface ToggleGroupBaseProps extends Omit<ComponentPropsWithRef<'div'>, 'onChange' | 'defaultValue'>, SxProps {
5
6
  orientation?: ToggleGroupOrientation;
6
7
  disabled?: boolean;
7
8
  allowEmpty?: boolean;
@@ -20,10 +21,12 @@ export interface ToggleGroupMultipleProps extends ToggleGroupBaseProps {
20
21
  onValueChange?: (value: string[]) => void;
21
22
  }
22
23
  export type ToggleGroupProps = ToggleGroupSingleProps | ToggleGroupMultipleProps;
23
- export interface ToggleGroupItemProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'value'> {
24
+ export interface ToggleGroupItemProps extends Omit<ComponentPropsWithRef<'button'>, 'value'>, SxProps {
24
25
  value: string;
25
26
  }
26
- export declare const ToggleGroup: import("react").ForwardRefExoticComponent<ToggleGroupProps & import("react").RefAttributes<HTMLDivElement>> & {
27
- Item: import("react").ForwardRefExoticComponent<ToggleGroupItemProps & import("react").RefAttributes<HTMLButtonElement>>;
27
+ declare function ToggleGroupRoot({ ref, type, value: valueProp, defaultValue, onValueChange, orientation, disabled, allowEmpty, label, 'aria-label': ariaLabelProp, onKeyDown, className, sx, ...rest }: ToggleGroupProps): import("@emotion/react/jsx-runtime").JSX.Element;
28
+ declare function ToggleGroupItem({ ref, value, disabled: disabledProp, onClick, onFocus, className, sx, ...rest }: ToggleGroupItemProps): import("@emotion/react/jsx-runtime").JSX.Element;
29
+ export declare const ToggleGroup: typeof ToggleGroupRoot & {
30
+ Item: typeof ToggleGroupItem;
28
31
  };
29
32
  export {};
@@ -1,5 +1,6 @@
1
- import { type ButtonHTMLAttributes, type HTMLAttributes, type ReactNode } from 'react';
1
+ import { type ComponentPropsWithRef, type ReactNode } from 'react';
2
2
  import { type Placement } from '@floating-ui/react';
3
+ import { type SxProps } from '../../styling/sx';
3
4
  export interface TooltipProps {
4
5
  open?: boolean;
5
6
  defaultOpen?: boolean;
@@ -11,13 +12,15 @@ export interface TooltipProps {
11
12
  closeDelay?: number;
12
13
  children?: ReactNode;
13
14
  }
14
- export interface TooltipTriggerProps extends ButtonHTMLAttributes<HTMLButtonElement> {
15
+ export interface TooltipTriggerProps extends ComponentPropsWithRef<'button'>, SxProps {
15
16
  }
16
- export interface TooltipContentProps extends HTMLAttributes<HTMLDivElement> {
17
+ export interface TooltipContentProps extends ComponentPropsWithRef<'div'>, SxProps {
17
18
  }
18
19
  declare function TooltipRoot({ open: openProp, defaultOpen, onOpenChange, placement, openDelay, closeDelay, children, }: TooltipProps): import("@emotion/react/jsx-runtime").JSX.Element;
20
+ declare function TooltipTrigger({ ref, 'aria-describedby': ariaDescribedByProp, className, sx, ...rest }: TooltipTriggerProps): import("@emotion/react/jsx-runtime").JSX.Element;
21
+ declare function TooltipContent({ ref, style, className, sx, ...rest }: TooltipContentProps): import("@emotion/react/jsx-runtime").JSX.Element | null;
19
22
  export declare const Tooltip: typeof TooltipRoot & {
20
- Trigger: import("react").ForwardRefExoticComponent<TooltipTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
21
- Content: import("react").ForwardRefExoticComponent<TooltipContentProps & import("react").RefAttributes<HTMLDivElement>>;
23
+ Trigger: typeof TooltipTrigger;
24
+ Content: typeof TooltipContent;
22
25
  };
23
26
  export {};
@@ -30,7 +30,11 @@ export * from './components/switch';
30
30
  export * from './components/tabs';
31
31
  export * from './components/text-field';
32
32
  export * from './components/textarea';
33
+ export { ThemeProvider, useTheme, type ThemeProviderProps } from './components/theme-provider/theme-provider';
33
34
  export * from './components/theme-root';
34
35
  export * from './components/toast';
35
36
  export * from './components/toggle-group';
36
37
  export * from './components/tooltip';
38
+ export { styled } from './styling/styled';
39
+ export type { SxProps } from './styling/sx';
40
+ export { theme, type JfraderTheme } from './styling/theme';
@@ -1,4 +1,4 @@
1
- import { type ForwardedRef, type MouseEvent, type MouseEventHandler, type MutableRefObject, type ReactEventHandler, type SyntheticEvent } from 'react';
1
+ import { type MouseEvent, type MouseEventHandler, type MutableRefObject, type ReactEventHandler, type Ref, type SyntheticEvent } from 'react';
2
2
  /** What Content needs from its Root; both Roots expose it through their context. */
3
3
  export interface NativeDialogController {
4
4
  open: boolean;
@@ -31,7 +31,7 @@ export declare function omitNativeOpen<P extends object>(props: P & {
31
31
  * Content half: syncs the native dialog to the logical `open`, and returns the `ref` and
32
32
  * event handlers to spread on the <dialog> (after the consumer's props).
33
33
  */
34
- export declare function useNativeDialog({ open, setOpen, requestClose, repairToken, setDialogElement }: NativeDialogController, { onCancel, onClick, onClose }: NativeDialogHandlers, forwardedRef: ForwardedRef<HTMLDialogElement>, contentRef?: MutableRefObject<HTMLDialogElement | null>): {
34
+ export declare function useNativeDialog({ open, setOpen, requestClose, repairToken, setDialogElement }: NativeDialogController, { onCancel, onClick, onClose }: NativeDialogHandlers, forwardedRef: Ref<HTMLDialogElement> | undefined, contentRef?: MutableRefObject<HTMLDialogElement | null>): {
35
35
  ref: (element: HTMLDialogElement | null) => void;
36
36
  onCancel: (event: SyntheticEvent<HTMLDialogElement>) => void;
37
37
  onClick: (event: MouseEvent<HTMLDialogElement>) => void;
@@ -1,2 +1,3 @@
1
- export { css, keyframes } from '@emotion/react';
2
- export type { Interpolation, SerializedStyles, Theme } from '@emotion/react';
1
+ export { ClassNames, css, keyframes, ThemeProvider as EmotionThemeProvider, useTheme as useEmotionTheme, } from '@emotion/react';
2
+ export type { ClassNamesContent, Interpolation, SerializedStyles, Theme } from '@emotion/react';
3
+ export type { JfraderTheme } from './theme';
@@ -0,0 +1 @@
1
+ export { default as styled } from '@emotion/styled';
@@ -0,0 +1,16 @@
1
+ import type { ReactNode } from 'react';
2
+ import { type Interpolation, type Theme } from './css';
3
+ export interface SxProps {
4
+ /** Consumer style overrides, identical to `css` and applied after it (`sx` is the MUI-style spelling). */
5
+ sx?: Interpolation<Theme>;
6
+ }
7
+ interface ClassNameProps {
8
+ className?: string;
9
+ children: (className: string | undefined) => ReactNode;
10
+ }
11
+ interface WithSxProps extends SxProps, ClassNameProps {
12
+ /** The part's own styles, merged first. */
13
+ styles?: Interpolation<Theme>;
14
+ }
15
+ export declare function WithSx({ className, styles, sx, children }: WithSxProps): import("@emotion/react/jsx-runtime").JSX.Element;
16
+ export {};
@@ -0,0 +1,98 @@
1
+ export declare const theme: {
2
+ readonly color: {
3
+ readonly bg: "var(--ui-color-bg)";
4
+ readonly bgSoft: "var(--ui-color-bg-soft)";
5
+ readonly surface: "var(--ui-color-surface)";
6
+ readonly surfaceRaised: "var(--ui-color-surface-raised)";
7
+ readonly surfaceHover: "var(--ui-color-surface-hover)";
8
+ readonly surfaceInset: "var(--ui-color-surface-inset)";
9
+ readonly border: "var(--ui-color-border)";
10
+ readonly borderSubtle: "var(--ui-color-border-subtle)";
11
+ readonly borderStrong: "var(--ui-color-border-strong)";
12
+ readonly borderControl: "var(--ui-color-border-control)";
13
+ readonly text: "var(--ui-color-text)";
14
+ readonly textMuted: "var(--ui-color-text-muted)";
15
+ readonly textSubtle: "var(--ui-color-text-subtle)";
16
+ readonly accent: "var(--ui-color-accent)";
17
+ readonly accentHover: "var(--ui-color-accent-hover)";
18
+ readonly accentContrast: "var(--ui-color-accent-contrast)";
19
+ readonly accentText: "var(--ui-color-accent-text)";
20
+ readonly accentSoft: "var(--ui-color-accent-soft)";
21
+ readonly accentSoftHover: "var(--ui-color-accent-soft-hover)";
22
+ readonly accentBorder: "var(--ui-color-accent-border)";
23
+ readonly danger: "var(--ui-color-danger)";
24
+ readonly dangerHover: "var(--ui-color-danger-hover)";
25
+ readonly dangerContrast: "var(--ui-color-danger-contrast)";
26
+ readonly dangerText: "var(--ui-color-danger-text)";
27
+ readonly dangerSoft: "var(--ui-color-danger-soft)";
28
+ readonly dangerSoftHover: "var(--ui-color-danger-soft-hover)";
29
+ readonly dangerBorder: "var(--ui-color-danger-border)";
30
+ readonly warning: "var(--ui-color-warning)";
31
+ readonly warningSoft: "var(--ui-color-warning-soft)";
32
+ readonly success: "var(--ui-color-success)";
33
+ readonly successSoft: "var(--ui-color-success-soft)";
34
+ readonly info: "var(--ui-color-info)";
35
+ readonly infoSoft: "var(--ui-color-info-soft)";
36
+ readonly focusRing: "var(--ui-color-focus-ring)";
37
+ readonly scrim: "var(--ui-color-scrim)";
38
+ };
39
+ readonly shadow: {
40
+ readonly raised: "var(--ui-shadow-raised)";
41
+ readonly overlay: "var(--ui-shadow-overlay)";
42
+ readonly floating: "var(--ui-shadow-floating)";
43
+ };
44
+ readonly radius: {
45
+ readonly sm: "var(--ui-radius-sm)";
46
+ readonly md: "var(--ui-radius-md)";
47
+ readonly lg: "var(--ui-radius-lg)";
48
+ readonly xl: "var(--ui-radius-xl)";
49
+ readonly full: "var(--ui-radius-full)";
50
+ };
51
+ readonly space: {
52
+ readonly "1": "var(--ui-space-1)";
53
+ readonly "2": "var(--ui-space-2)";
54
+ readonly "3": "var(--ui-space-3)";
55
+ readonly "4": "var(--ui-space-4)";
56
+ readonly "5": "var(--ui-space-5)";
57
+ readonly "6": "var(--ui-space-6)";
58
+ readonly "8": "var(--ui-space-8)";
59
+ readonly "10": "var(--ui-space-10)";
60
+ readonly "12": "var(--ui-space-12)";
61
+ };
62
+ readonly textSize: {
63
+ readonly xs: "var(--ui-text-size-xs)";
64
+ readonly sm: "var(--ui-text-size-sm)";
65
+ readonly md: "var(--ui-text-size-md)";
66
+ readonly lg: "var(--ui-text-size-lg)";
67
+ readonly xl: "var(--ui-text-size-xl)";
68
+ readonly "2xl": "var(--ui-text-size-2xl)";
69
+ readonly "3xl": "var(--ui-text-size-3xl)";
70
+ };
71
+ readonly lineHeight: {
72
+ readonly tight: "var(--ui-line-height-tight)";
73
+ readonly base: "var(--ui-line-height-base)";
74
+ readonly relaxed: "var(--ui-line-height-relaxed)";
75
+ };
76
+ readonly fontWeight: {
77
+ readonly regular: "var(--ui-font-weight-regular)";
78
+ readonly medium: "var(--ui-font-weight-medium)";
79
+ readonly semibold: "var(--ui-font-weight-semibold)";
80
+ };
81
+ readonly font: {
82
+ readonly sans: "var(--ui-font-sans)";
83
+ readonly mono: "var(--ui-font-mono)";
84
+ };
85
+ readonly motion: {
86
+ readonly duration: {
87
+ readonly fast: "var(--ui-motion-duration-fast)";
88
+ readonly base: "var(--ui-motion-duration-base)";
89
+ readonly slow: "var(--ui-motion-duration-slow)";
90
+ };
91
+ readonly easeStandard: "var(--ui-motion-ease-standard)";
92
+ };
93
+ };
94
+ export type JfraderTheme = typeof theme;
95
+ declare module '@emotion/react' {
96
+ interface Theme extends JfraderTheme {
97
+ }
98
+ }
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { t as e } from "./css-Cgj6sCHn.js";
2
+ import { r as e } from "./sx-Dx9JUKp5.js";
3
3
  //#region src/styling/visually-hidden.ts
4
4
  var t = e({
5
5
  position: "absolute",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jfrader/ui",
3
- "version": "0.1.2",
3
+ "version": "0.3.0",
4
4
  "description": "React components styled with Emotion and themed through CSS custom properties.",
5
5
  "keywords": [
6
6
  "react",
@@ -176,12 +176,13 @@
176
176
  },
177
177
  "dependencies": {
178
178
  "@emotion/react": "^11.14.0",
179
+ "@emotion/styled": "^11.14.0",
179
180
  "@floating-ui/react": "^0.27.20",
180
- "@jfrader/tokens": "0.1.2"
181
+ "@jfrader/tokens": "0.3.0"
181
182
  },
182
183
  "peerDependencies": {
183
- "react": ">=18.2.0",
184
- "react-dom": ">=18.2.0"
184
+ "react": "^19.0.0",
185
+ "react-dom": "^19.0.0"
185
186
  },
186
187
  "devDependencies": {
187
188
  "@storybook/react-vite": "^10.6.1",