@brijbyte/agentic-ui 0.0.4 → 0.0.5

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 (113) hide show
  1. package/README.md +151 -21
  2. package/dist/accordion/index.d.ts +2 -2
  3. package/dist/accordion/index.js +2 -2
  4. package/dist/accordion/parts.d.ts +6 -14
  5. package/dist/accordion/parts.d.ts.map +1 -1
  6. package/dist/accordion/parts.js +7 -6
  7. package/dist/accordion/parts.js.map +1 -1
  8. package/dist/alert-dialog/parts.d.ts +4 -12
  9. package/dist/alert-dialog/parts.d.ts.map +1 -1
  10. package/dist/alert-dialog/parts.js +17 -19
  11. package/dist/alert-dialog/parts.js.map +1 -1
  12. package/dist/checkbox/parts.d.ts +2 -5
  13. package/dist/checkbox/parts.d.ts.map +1 -1
  14. package/dist/checkbox/parts.js +3 -2
  15. package/dist/checkbox/parts.js.map +1 -1
  16. package/dist/collapsible/parts.d.ts +3 -9
  17. package/dist/collapsible/parts.d.ts.map +1 -1
  18. package/dist/collapsible/parts.js +7 -6
  19. package/dist/collapsible/parts.js.map +1 -1
  20. package/dist/context-menu/parts.d.ts +6 -18
  21. package/dist/context-menu/parts.d.ts.map +1 -1
  22. package/dist/context-menu/parts.js +16 -16
  23. package/dist/context-menu/parts.js.map +1 -1
  24. package/dist/dialog/parts.d.ts +6 -18
  25. package/dist/dialog/parts.d.ts.map +1 -1
  26. package/dist/dialog/parts.js +8 -9
  27. package/dist/dialog/parts.js.map +1 -1
  28. package/dist/drawer/parts.d.ts +7 -19
  29. package/dist/drawer/parts.d.ts.map +1 -1
  30. package/dist/drawer/parts.js +14 -13
  31. package/dist/drawer/parts.js.map +1 -1
  32. package/dist/index.css +1375 -1375
  33. package/dist/index.d.ts +2 -2
  34. package/dist/index.js +2 -2
  35. package/dist/menu/parts.d.ts +6 -18
  36. package/dist/menu/parts.d.ts.map +1 -1
  37. package/dist/menu/parts.js +7 -6
  38. package/dist/menu/parts.js.map +1 -1
  39. package/dist/meter/parts.d.ts +4 -10
  40. package/dist/meter/parts.d.ts.map +1 -1
  41. package/dist/meter/parts.js +5 -4
  42. package/dist/meter/parts.js.map +1 -1
  43. package/dist/number-field/parts.d.ts +6 -18
  44. package/dist/number-field/parts.d.ts.map +1 -1
  45. package/dist/number-field/parts.js +7 -6
  46. package/dist/number-field/parts.js.map +1 -1
  47. package/dist/popover/parts.d.ts +7 -21
  48. package/dist/popover/parts.d.ts.map +1 -1
  49. package/dist/popover/parts.js +8 -11
  50. package/dist/popover/parts.js.map +1 -1
  51. package/dist/progress/parts.d.ts +2 -4
  52. package/dist/progress/parts.d.ts.map +1 -1
  53. package/dist/progress/parts.js +3 -6
  54. package/dist/progress/parts.js.map +1 -1
  55. package/dist/radio/parts.d.ts +2 -6
  56. package/dist/radio/parts.d.ts.map +1 -1
  57. package/dist/radio/parts.js +3 -2
  58. package/dist/radio/parts.js.map +1 -1
  59. package/dist/radio-group/parts.d.ts +1 -3
  60. package/dist/radio-group/parts.d.ts.map +1 -1
  61. package/dist/radio-group/parts.js +2 -1
  62. package/dist/radio-group/parts.js.map +1 -1
  63. package/dist/reset-scoped.css +112 -0
  64. package/dist/select/parts.d.ts +11 -32
  65. package/dist/select/parts.d.ts.map +1 -1
  66. package/dist/select/parts.js +10 -9
  67. package/dist/select/parts.js.map +1 -1
  68. package/dist/slider/parts.d.ts +6 -18
  69. package/dist/slider/parts.d.ts.map +1 -1
  70. package/dist/slider/parts.js +7 -6
  71. package/dist/slider/parts.js.map +1 -1
  72. package/dist/switch/parts.d.ts +2 -6
  73. package/dist/switch/parts.d.ts.map +1 -1
  74. package/dist/switch/parts.js +3 -2
  75. package/dist/switch/parts.js.map +1 -1
  76. package/dist/tabs/parts.d.ts +3 -9
  77. package/dist/tabs/parts.d.ts.map +1 -1
  78. package/dist/tabs/parts.js +4 -3
  79. package/dist/tabs/parts.js.map +1 -1
  80. package/dist/toast/parts.d.ts +5 -15
  81. package/dist/toast/parts.d.ts.map +1 -1
  82. package/dist/toast/parts.js +6 -5
  83. package/dist/toast/parts.js.map +1 -1
  84. package/dist/tooltip/parts.d.ts +3 -9
  85. package/dist/tooltip/parts.d.ts.map +1 -1
  86. package/dist/tooltip/parts.js +4 -3
  87. package/dist/tooltip/parts.js.map +1 -1
  88. package/dist/utils/resolveClassName.js +25 -0
  89. package/dist/utils/resolveClassName.js.map +1 -0
  90. package/package.json +4 -3
  91. package/src/accordion/index.ts +1 -1
  92. package/src/accordion/parts.tsx +10 -17
  93. package/src/alert-dialog/parts.tsx +23 -31
  94. package/src/checkbox/parts.tsx +5 -7
  95. package/src/collapsible/parts.tsx +10 -15
  96. package/src/context-menu/parts.tsx +34 -34
  97. package/src/dialog/parts.tsx +14 -27
  98. package/src/drawer/parts.tsx +30 -38
  99. package/src/menu/parts.tsx +13 -24
  100. package/src/meter/parts.tsx +15 -14
  101. package/src/number-field/parts.tsx +33 -24
  102. package/src/popover/parts.tsx +17 -32
  103. package/src/progress/parts.tsx +13 -6
  104. package/src/radio/parts.tsx +7 -8
  105. package/src/radio-group/parts.tsx +3 -4
  106. package/src/select/parts.tsx +34 -41
  107. package/src/slider/parts.tsx +13 -24
  108. package/src/styles/reset-scoped.css +112 -0
  109. package/src/switch/parts.tsx +5 -8
  110. package/src/tabs/parts.tsx +7 -12
  111. package/src/toast/parts.tsx +11 -20
  112. package/src/tooltip/parts.tsx +7 -12
  113. package/src/utils/resolveClassName.ts +24 -0
@@ -1,10 +1,6 @@
1
1
  /**
2
2
  * Styled primitives for Popover.
3
3
  *
4
- * Use these when you need full control over the popover's behaviour
5
- * (controlled state, custom positioning, anchor overrides) while keeping
6
- * all agentic-ui styles applied.
7
- *
8
4
  * @example
9
5
  * ```tsx
10
6
  * import { Popover } from '@base-ui/react/popover';
@@ -36,6 +32,7 @@ import type { ComponentRef, ComponentPropsWithoutRef } from "react";
36
32
  import { Popover as BasePopover } from "@base-ui/react/popover";
37
33
  import styles from "./popover.module.css";
38
34
  import { PopupArrow } from "../shared/PopupArrow";
35
+ import { resolveClassName, cx } from "../utils/resolveClassName";
39
36
 
40
37
  type BasePositionerProps = ComponentPropsWithoutRef<typeof BasePopover.Positioner>;
41
38
  type BasePopupProps = ComponentPropsWithoutRef<typeof BasePopover.Popup>;
@@ -45,52 +42,40 @@ type BaseCloseProps = ComponentPropsWithoutRef<typeof BasePopover.Close>;
45
42
  type BaseArrowProps = ComponentPropsWithoutRef<typeof BasePopover.Arrow>;
46
43
  type BaseViewportProps = ComponentPropsWithoutRef<typeof BasePopover.Viewport>;
47
44
 
48
- export interface PopoverPositionerProps extends Omit<BasePositionerProps, "className"> {
49
- className?: string;
50
- }
51
- export interface PopoverPopupProps extends Omit<BasePopupProps, "className"> {
52
- className?: string;
53
- }
54
- export interface PopoverTitleProps extends Omit<BaseTitleProps, "className"> {
55
- className?: string;
56
- }
57
- export interface PopoverDescriptionProps extends Omit<BaseDescriptionProps, "className"> {
58
- className?: string;
59
- }
60
- export interface PopoverCloseProps extends Omit<BaseCloseProps, "className"> {
61
- className?: string;
62
- }
63
- export interface PopoverArrowProps extends Omit<BaseArrowProps, "className"> {
64
- className?: string;
65
- }
66
- export interface PopoverViewportProps extends Omit<BaseViewportProps, "className"> {
67
- className?: string;
68
- }
45
+ export interface PopoverPositionerProps extends BasePositionerProps {}
46
+ export interface PopoverPopupProps extends BasePopupProps {}
47
+ export interface PopoverTitleProps extends BaseTitleProps {}
48
+ export interface PopoverDescriptionProps extends BaseDescriptionProps {}
49
+ export interface PopoverCloseProps extends BaseCloseProps {}
50
+ export interface PopoverArrowProps extends BaseArrowProps {}
51
+ export interface PopoverViewportProps extends BaseViewportProps {}
69
52
 
70
53
  export const PopoverPositioner = forwardRef<ComponentRef<typeof BasePopover.Positioner>, PopoverPositionerProps>(function PopoverPositioner(
71
54
  { className, ...props },
72
55
  ref,
73
56
  ) {
74
- return <BasePopover.Positioner ref={ref} className={`${styles.positioner} ${className ?? ""}`} {...props} />;
57
+ return <BasePopover.Positioner ref={ref} className={(state) => cx(styles.positioner, resolveClassName(className, state))} {...props} />;
75
58
  });
76
59
 
77
60
  export const PopoverPopup = forwardRef<ComponentRef<typeof BasePopover.Popup>, PopoverPopupProps>(function PopoverPopup(
78
61
  { className, ...props },
79
62
  ref,
80
63
  ) {
81
- return <BasePopover.Popup ref={ref} className={`${styles.popup} ${className ?? ""}`} {...props} />;
64
+ return <BasePopover.Popup ref={ref} className={(state) => cx(styles.popup, resolveClassName(className, state))} {...props} />;
82
65
  });
83
66
 
84
67
  export const PopoverTitle = forwardRef<ComponentRef<typeof BasePopover.Title>, PopoverTitleProps>(function PopoverTitle(
85
68
  { className, ...props },
86
69
  ref,
87
70
  ) {
88
- return <BasePopover.Title ref={ref} className={`${styles.title} ${className ?? ""}`} {...props} />;
71
+ return <BasePopover.Title ref={ref} className={(state) => cx(styles.title, resolveClassName(className, state))} {...props} />;
89
72
  });
90
73
 
91
74
  export const PopoverDescription = forwardRef<ComponentRef<typeof BasePopover.Description>, PopoverDescriptionProps>(
92
75
  function PopoverDescription({ className, ...props }, ref) {
93
- return <BasePopover.Description ref={ref} className={`${styles.description} ${className ?? ""}`} {...props} />;
76
+ return (
77
+ <BasePopover.Description ref={ref} className={(state) => cx(styles.description, resolveClassName(className, state))} {...props} />
78
+ );
94
79
  },
95
80
  );
96
81
 
@@ -98,14 +83,14 @@ export const PopoverClose = forwardRef<ComponentRef<typeof BasePopover.Close>, P
98
83
  { className, ...props },
99
84
  ref,
100
85
  ) {
101
- return <BasePopover.Close ref={ref} className={`${styles.close} ${className ?? ""}`} {...props} />;
86
+ return <BasePopover.Close ref={ref} className={(state) => cx(styles.close, resolveClassName(className, state))} {...props} />;
102
87
  });
103
88
 
104
89
  export const PopoverViewport = forwardRef<ComponentRef<typeof BasePopover.Viewport>, PopoverViewportProps>(function PopoverViewport(
105
90
  { className, ...props },
106
91
  ref,
107
92
  ) {
108
- return <BasePopover.Viewport ref={ref} className={`${styles.viewport} ${className ?? ""}`} {...props} />;
93
+ return <BasePopover.Viewport ref={ref} className={(state) => cx(styles.viewport, resolveClassName(className, state))} {...props} />;
109
94
  });
110
95
 
111
96
  export const PopoverArrow = forwardRef<ComponentRef<typeof BasePopover.Arrow>, PopoverArrowProps>(function PopoverArrow(
@@ -113,7 +98,7 @@ export const PopoverArrow = forwardRef<ComponentRef<typeof BasePopover.Arrow>, P
113
98
  ref,
114
99
  ) {
115
100
  return (
116
- <BasePopover.Arrow ref={ref} className={`${styles.arrow} ${className ?? ""}`} {...props}>
101
+ <BasePopover.Arrow ref={ref} className={(state) => cx(styles.arrow, resolveClassName(className, state))} {...props}>
117
102
  {children ?? <PopupArrow fillClass={styles["arrow-fill"]!} seamClass={styles["arrow-seam"]!} />}
118
103
  </BasePopover.Arrow>
119
104
  );
@@ -17,16 +17,15 @@ import { forwardRef } from "react";
17
17
  import type { ComponentRef, ComponentPropsWithoutRef } from "react";
18
18
  import { Progress as BaseProgress } from "@base-ui/react/progress";
19
19
  import styles from "./progress.module.css";
20
+ import { resolveClassName, cx } from "../utils/resolveClassName";
20
21
 
21
22
  type BaseTrackProps = ComponentPropsWithoutRef<typeof BaseProgress.Track>;
22
23
  type BaseIndicatorProps = ComponentPropsWithoutRef<typeof BaseProgress.Indicator>;
23
24
 
24
- export interface ProgressTrackProps extends Omit<BaseTrackProps, "className"> {
25
- className?: string;
25
+ export interface ProgressTrackProps extends BaseTrackProps {
26
26
  size?: "sm" | "md" | "lg";
27
27
  }
28
- export interface ProgressIndicatorProps extends Omit<BaseIndicatorProps, "className"> {
29
- className?: string;
28
+ export interface ProgressIndicatorProps extends BaseIndicatorProps {
30
29
  status?: "default" | "success" | "warning" | "error";
31
30
  }
32
31
 
@@ -34,7 +33,13 @@ export const ProgressTrack = forwardRef<ComponentRef<typeof BaseProgress.Track>,
34
33
  { className, size = "md", ...props },
35
34
  ref,
36
35
  ) {
37
- return <BaseProgress.Track ref={ref} className={`${styles.track} ${styles[`track-${size}`]} ${className ?? ""}`} {...props} />;
36
+ return (
37
+ <BaseProgress.Track
38
+ ref={ref}
39
+ className={(state) => cx(styles.track, styles[`track-${size}`], resolveClassName(className, state))}
40
+ {...props}
41
+ />
42
+ );
38
43
  });
39
44
 
40
45
  export const ProgressIndicator = forwardRef<ComponentRef<typeof BaseProgress.Indicator>, ProgressIndicatorProps>(function ProgressIndicator(
@@ -44,7 +49,9 @@ export const ProgressIndicator = forwardRef<ComponentRef<typeof BaseProgress.Ind
44
49
  return (
45
50
  <BaseProgress.Indicator
46
51
  ref={ref}
47
- className={[styles.indicator, status !== "default" ? styles[`indicator-${status}`] : "", className ?? ""].filter(Boolean).join(" ")}
52
+ className={(state) =>
53
+ cx(styles.indicator, status !== "default" ? styles[`indicator-${status}`] : undefined, resolveClassName(className, state))
54
+ }
48
55
  {...props}
49
56
  />
50
57
  );
@@ -20,24 +20,23 @@ import { forwardRef } from "react";
20
20
  import type { ComponentRef, ComponentPropsWithoutRef } from "react";
21
21
  import { Radio as BaseRadio } from "@base-ui/react/radio";
22
22
  import styles from "./radio.module.css";
23
+ import { resolveClassName, cx } from "../utils/resolveClassName";
23
24
 
24
25
  type BaseRootProps = ComponentPropsWithoutRef<typeof BaseRadio.Root>;
25
26
  type BaseIndicatorProps = ComponentPropsWithoutRef<typeof BaseRadio.Indicator>;
26
27
 
27
- export interface RadioRootProps extends Omit<BaseRootProps, "className"> {
28
- className?: string;
29
- }
30
- export interface RadioIndicatorProps extends Omit<BaseIndicatorProps, "className"> {
31
- className?: string;
32
- }
28
+ export interface RadioRootProps extends BaseRootProps {}
29
+ export interface RadioIndicatorProps extends BaseIndicatorProps {}
33
30
 
34
31
  export const RadioRoot = forwardRef<ComponentRef<typeof BaseRadio.Root>, RadioRootProps>(function RadioRoot({ className, ...props }, ref) {
35
- return <BaseRadio.Root ref={ref} className={`${styles.radio} ${className ?? ""}`} {...props} />;
32
+ return <BaseRadio.Root ref={ref} className={(state) => cx(styles.radio, resolveClassName(className, state))} {...props} />;
36
33
  });
37
34
 
38
35
  export const RadioIndicator = forwardRef<ComponentRef<typeof BaseRadio.Indicator>, RadioIndicatorProps>(function RadioIndicator(
39
36
  { className, ...props },
40
37
  ref,
41
38
  ) {
42
- return <BaseRadio.Indicator ref={ref} keepMounted className={`${styles.indicator} ${className ?? ""}`} {...props} />;
39
+ return (
40
+ <BaseRadio.Indicator ref={ref} keepMounted className={(state) => cx(styles.indicator, resolveClassName(className, state))} {...props} />
41
+ );
43
42
  });
@@ -17,16 +17,15 @@ import { forwardRef } from "react";
17
17
  import type { ComponentRef, ComponentPropsWithoutRef } from "react";
18
18
  import { RadioGroup as BaseRadioGroup } from "@base-ui/react/radio-group";
19
19
  import styles from "./radio-group.module.css";
20
+ import { resolveClassName, cx } from "../utils/resolveClassName";
20
21
 
21
22
  type BaseGroupProps = ComponentPropsWithoutRef<typeof BaseRadioGroup>;
22
23
 
23
- export interface RadioGroupRootProps extends Omit<BaseGroupProps, "className"> {
24
- className?: string;
25
- }
24
+ export interface RadioGroupRootProps extends BaseGroupProps {}
26
25
 
27
26
  export const RadioGroupRoot = forwardRef<ComponentRef<typeof BaseRadioGroup>, RadioGroupRootProps>(function RadioGroupRoot(
28
27
  { className, ...props },
29
28
  ref,
30
29
  ) {
31
- return <BaseRadioGroup ref={ref} className={`${styles.group} ${className ?? ""}`} {...props} />;
30
+ return <BaseRadioGroup ref={ref} className={(state) => cx(styles.group, resolveClassName(className, state))} {...props} />;
32
31
  });
@@ -33,6 +33,7 @@ import { forwardRef } from "react";
33
33
  import type { ComponentRef, ComponentPropsWithoutRef, ReactNode } from "react";
34
34
  import { Select as BaseSelect } from "@base-ui/react/select";
35
35
  import styles from "./select.module.css";
36
+ import { resolveClassName, cx } from "../utils/resolveClassName";
36
37
 
37
38
  type BaseTriggerProps = ComponentPropsWithoutRef<typeof BaseSelect.Trigger>;
38
39
  type BaseValueProps = ComponentPropsWithoutRef<typeof BaseSelect.Value>;
@@ -46,41 +47,20 @@ type BaseGroupProps = ComponentPropsWithoutRef<typeof BaseSelect.Group>;
46
47
  type BaseGroupLabelProps = ComponentPropsWithoutRef<typeof BaseSelect.GroupLabel>;
47
48
  type BaseSeparatorProps = ComponentPropsWithoutRef<typeof BaseSelect.Separator>;
48
49
 
49
- export interface SelectTriggerProps extends Omit<BaseTriggerProps, "className"> {
50
- className?: string;
51
- }
52
- export interface SelectValueProps extends Omit<BaseValueProps, "className"> {
53
- className?: string;
54
- }
55
- export interface SelectPositionerProps extends Omit<BasePositionerProps, "className"> {
56
- className?: string;
57
- }
58
- export interface SelectPopupProps extends Omit<BasePopupProps, "className"> {
59
- className?: string;
60
- }
61
- export interface SelectListProps extends Omit<BaseListProps, "className"> {
62
- className?: string;
63
- }
64
- export interface SelectItemProps extends Omit<BaseItemProps, "className"> {
65
- className?: string;
66
- }
67
- export interface SelectItemTextProps extends Omit<BaseItemTextProps, "className"> {
68
- className?: string;
69
- }
70
- export interface SelectItemIndicatorProps extends Omit<BaseItemIndicatorProps, "className"> {
71
- className?: string;
50
+ export interface SelectTriggerProps extends BaseTriggerProps {}
51
+ export interface SelectValueProps extends BaseValueProps {}
52
+ export interface SelectPositionerProps extends BasePositionerProps {}
53
+ export interface SelectPopupProps extends BasePopupProps {}
54
+ export interface SelectListProps extends BaseListProps {}
55
+ export interface SelectItemProps extends BaseItemProps {}
56
+ export interface SelectItemTextProps extends BaseItemTextProps {}
57
+ export interface SelectItemIndicatorProps extends BaseItemIndicatorProps {
72
58
  /** Custom icon. Defaults to a checkmark SVG. */
73
59
  children?: ReactNode;
74
60
  }
75
- export interface SelectGroupProps extends Omit<BaseGroupProps, "className"> {
76
- className?: string;
77
- }
78
- export interface SelectGroupLabelProps extends Omit<BaseGroupLabelProps, "className"> {
79
- className?: string;
80
- }
81
- export interface SelectSeparatorProps extends Omit<BaseSeparatorProps, "className"> {
82
- className?: string;
83
- }
61
+ export interface SelectGroupProps extends BaseGroupProps {}
62
+ export interface SelectGroupLabelProps extends BaseGroupLabelProps {}
63
+ export interface SelectSeparatorProps extends BaseSeparatorProps {}
84
64
 
85
65
  function DefaultCheckIcon() {
86
66
  return (
@@ -94,42 +74,49 @@ export const SelectTrigger = forwardRef<ComponentRef<typeof BaseSelect.Trigger>,
94
74
  { className, ...props },
95
75
  ref,
96
76
  ) {
97
- return <BaseSelect.Trigger ref={ref} className={`${styles.trigger} ${className ?? ""}`} {...props} />;
77
+ return <BaseSelect.Trigger ref={ref} className={(state) => cx(styles.trigger, resolveClassName(className, state))} {...props} />;
98
78
  });
99
79
 
100
80
  export const SelectValue = forwardRef<ComponentRef<typeof BaseSelect.Value>, SelectValueProps>(function SelectValue(
101
81
  { className, ...props },
102
82
  ref,
103
83
  ) {
104
- return <BaseSelect.Value ref={ref} className={`${styles["trigger-value"]} ${className ?? ""}`} {...props} />;
84
+ return <BaseSelect.Value ref={ref} className={(state) => cx(styles["trigger-value"], resolveClassName(className, state))} {...props} />;
105
85
  });
106
86
 
107
87
  export const SelectPositioner = forwardRef<ComponentRef<typeof BaseSelect.Positioner>, SelectPositionerProps>(function SelectPositioner(
108
88
  { className, sideOffset = 4, ...props },
109
89
  ref,
110
90
  ) {
111
- return <BaseSelect.Positioner ref={ref} className={`${styles.positioner} ${className ?? ""}`} sideOffset={sideOffset} {...props} />;
91
+ return (
92
+ <BaseSelect.Positioner
93
+ ref={ref}
94
+ className={(state) => cx(styles.positioner, resolveClassName(className, state))}
95
+ sideOffset={sideOffset}
96
+ {...props}
97
+ />
98
+ );
112
99
  });
113
100
 
114
101
  export const SelectPopup = forwardRef<ComponentRef<typeof BaseSelect.Popup>, SelectPopupProps>(function SelectPopup(
115
102
  { className, ...props },
116
103
  ref,
117
104
  ) {
118
- return <BaseSelect.Popup ref={ref} className={`${styles.popup} ${className ?? ""}`} {...props} />;
105
+ return <BaseSelect.Popup ref={ref} className={(state) => cx(styles.popup, resolveClassName(className, state))} {...props} />;
119
106
  });
120
107
 
121
108
  export const SelectList = forwardRef<ComponentRef<typeof BaseSelect.List>, SelectListProps>(function SelectList(
122
109
  { className, ...props },
123
110
  ref,
124
111
  ) {
125
- return <BaseSelect.List ref={ref} className={`${styles.list ?? ""} ${className ?? ""}`} {...props} />;
112
+ return <BaseSelect.List ref={ref} className={(state) => cx(styles.list ?? "", resolveClassName(className, state))} {...props} />;
126
113
  });
127
114
 
128
115
  export const SelectItem = forwardRef<ComponentRef<typeof BaseSelect.Item>, SelectItemProps>(function SelectItem(
129
116
  { className, ...props },
130
117
  ref,
131
118
  ) {
132
- return <BaseSelect.Item ref={ref} className={`${styles.item} ${className ?? ""}`} {...props} />;
119
+ return <BaseSelect.Item ref={ref} className={(state) => cx(styles.item, resolveClassName(className, state))} {...props} />;
133
120
  });
134
121
 
135
122
  export const SelectItemText = forwardRef<ComponentRef<typeof BaseSelect.ItemText>, SelectItemTextProps>(function SelectItemText(
@@ -142,7 +129,11 @@ export const SelectItemText = forwardRef<ComponentRef<typeof BaseSelect.ItemText
142
129
  export const SelectItemIndicator = forwardRef<ComponentRef<typeof BaseSelect.ItemIndicator>, SelectItemIndicatorProps>(
143
130
  function SelectItemIndicator({ className, children, ...props }, ref) {
144
131
  return (
145
- <BaseSelect.ItemIndicator ref={ref} className={`${styles["item-indicator"]} ${className ?? ""}`} {...props}>
132
+ <BaseSelect.ItemIndicator
133
+ ref={ref}
134
+ className={(state) => cx(styles["item-indicator"], resolveClassName(className, state))}
135
+ {...props}
136
+ >
146
137
  {children ?? <DefaultCheckIcon />}
147
138
  </BaseSelect.ItemIndicator>
148
139
  );
@@ -160,12 +151,14 @@ export const SelectGroupLabel = forwardRef<ComponentRef<typeof BaseSelect.GroupL
160
151
  { className, ...props },
161
152
  ref,
162
153
  ) {
163
- return <BaseSelect.GroupLabel ref={ref} className={`${styles["group-label"]} ${className ?? ""}`} {...props} />;
154
+ return (
155
+ <BaseSelect.GroupLabel ref={ref} className={(state) => cx(styles["group-label"], resolveClassName(className, state))} {...props} />
156
+ );
164
157
  });
165
158
 
166
159
  export const SelectSeparator = forwardRef<ComponentRef<typeof BaseSelect.Separator>, SelectSeparatorProps>(function SelectSeparator(
167
160
  { className, ...props },
168
161
  ref,
169
162
  ) {
170
- return <BaseSelect.Separator ref={ref} className={`${styles.separator} ${className ?? ""}`} {...props} />;
163
+ return <BaseSelect.Separator ref={ref} className={(state) => cx(styles.separator, resolveClassName(className, state))} {...props} />;
171
164
  });
@@ -20,6 +20,7 @@ import { forwardRef } from "react";
20
20
  import type { ComponentRef, ComponentPropsWithoutRef } from "react";
21
21
  import { Slider as BaseSlider } from "@base-ui/react/slider";
22
22
  import styles from "./slider.module.css";
23
+ import { resolveClassName, cx } from "../utils/resolveClassName";
23
24
 
24
25
  type BaseControlProps = ComponentPropsWithoutRef<typeof BaseSlider.Control>;
25
26
  type BaseTrackProps = ComponentPropsWithoutRef<typeof BaseSlider.Track>;
@@ -28,63 +29,51 @@ type BaseThumbProps = ComponentPropsWithoutRef<typeof BaseSlider.Thumb>;
28
29
  type BaseLabelProps = ComponentPropsWithoutRef<typeof BaseSlider.Label>;
29
30
  type BaseValueProps = ComponentPropsWithoutRef<typeof BaseSlider.Value>;
30
31
 
31
- export interface SliderControlProps extends Omit<BaseControlProps, "className"> {
32
- className?: string;
33
- }
34
- export interface SliderTrackProps extends Omit<BaseTrackProps, "className"> {
35
- className?: string;
36
- }
37
- export interface SliderIndicatorProps extends Omit<BaseIndicatorProps, "className"> {
38
- className?: string;
39
- }
40
- export interface SliderThumbProps extends Omit<BaseThumbProps, "className"> {
41
- className?: string;
42
- }
43
- export interface SliderLabelProps extends Omit<BaseLabelProps, "className"> {
44
- className?: string;
45
- }
46
- export interface SliderValueProps extends Omit<BaseValueProps, "className"> {
47
- className?: string;
48
- }
32
+ export interface SliderControlProps extends BaseControlProps {}
33
+ export interface SliderTrackProps extends BaseTrackProps {}
34
+ export interface SliderIndicatorProps extends BaseIndicatorProps {}
35
+ export interface SliderThumbProps extends BaseThumbProps {}
36
+ export interface SliderLabelProps extends BaseLabelProps {}
37
+ export interface SliderValueProps extends BaseValueProps {}
49
38
 
50
39
  export const SliderControl = forwardRef<ComponentRef<typeof BaseSlider.Control>, SliderControlProps>(function SliderControl(
51
40
  { className, ...props },
52
41
  ref,
53
42
  ) {
54
- return <BaseSlider.Control ref={ref} className={`${styles.control} ${className ?? ""}`} {...props} />;
43
+ return <BaseSlider.Control ref={ref} className={(state) => cx(styles.control, resolveClassName(className, state))} {...props} />;
55
44
  });
56
45
 
57
46
  export const SliderTrack = forwardRef<ComponentRef<typeof BaseSlider.Track>, SliderTrackProps>(function SliderTrack(
58
47
  { className, ...props },
59
48
  ref,
60
49
  ) {
61
- return <BaseSlider.Track ref={ref} className={`${styles.track} ${className ?? ""}`} {...props} />;
50
+ return <BaseSlider.Track ref={ref} className={(state) => cx(styles.track, resolveClassName(className, state))} {...props} />;
62
51
  });
63
52
 
64
53
  export const SliderIndicator = forwardRef<ComponentRef<typeof BaseSlider.Indicator>, SliderIndicatorProps>(function SliderIndicator(
65
54
  { className, ...props },
66
55
  ref,
67
56
  ) {
68
- return <BaseSlider.Indicator ref={ref} className={`${styles.indicator} ${className ?? ""}`} {...props} />;
57
+ return <BaseSlider.Indicator ref={ref} className={(state) => cx(styles.indicator, resolveClassName(className, state))} {...props} />;
69
58
  });
70
59
 
71
60
  export const SliderThumb = forwardRef<ComponentRef<typeof BaseSlider.Thumb>, SliderThumbProps>(function SliderThumb(
72
61
  { className, ...props },
73
62
  ref,
74
63
  ) {
75
- return <BaseSlider.Thumb ref={ref} className={`${styles.thumb} ${className ?? ""}`} {...props} />;
64
+ return <BaseSlider.Thumb ref={ref} className={(state) => cx(styles.thumb, resolveClassName(className, state))} {...props} />;
76
65
  });
77
66
 
78
67
  export const SliderLabel = forwardRef<ComponentRef<typeof BaseSlider.Label>, SliderLabelProps>(function SliderLabel(
79
68
  { className, ...props },
80
69
  ref,
81
70
  ) {
82
- return <BaseSlider.Label ref={ref} className={`${styles.label} ${className ?? ""}`} {...props} />;
71
+ return <BaseSlider.Label ref={ref} className={(state) => cx(styles.label, resolveClassName(className, state))} {...props} />;
83
72
  });
84
73
 
85
74
  export const SliderValue = forwardRef<ComponentRef<typeof BaseSlider.Value>, SliderValueProps>(function SliderValue(
86
75
  { className, ...props },
87
76
  ref,
88
77
  ) {
89
- return <BaseSlider.Value ref={ref} className={`${styles.value} ${className ?? ""}`} {...props} />;
78
+ return <BaseSlider.Value ref={ref} className={(state) => cx(styles.value, resolveClassName(className, state))} {...props} />;
90
79
  });
@@ -0,0 +1,112 @@
1
+ /**
2
+ * @brijbyte/agentic-ui — Scoped reset
3
+ *
4
+ * A class-anchored mirror of reset.css for use in sandboxed environments
5
+ * (e.g. documentation demo canvases) where you want the same baseline as
6
+ * a real app that imports reset.css — without touching html/body globally.
7
+ *
8
+ * Usage:
9
+ * @import "@brijbyte/agentic-ui/reset-scoped";
10
+ *
11
+ * <div class="agentic-reset">
12
+ * <!-- your component demo here -->
13
+ * </div>
14
+ *
15
+ * Rules are kept in exact 1-to-1 correspondence with reset.css.
16
+ * html → .agentic-reset
17
+ * body → .agentic-reset
18
+ * Keep both files in sync when either changes.
19
+ */
20
+
21
+ @layer base {
22
+ .agentic-reset,
23
+ .agentic-reset *,
24
+ .agentic-reset *::before,
25
+ .agentic-reset *::after {
26
+ box-sizing: border-box;
27
+ }
28
+
29
+ .agentic-reset * {
30
+ margin: 0;
31
+ padding: 0;
32
+ }
33
+
34
+ /* html rules → applied to the root of the scoped subtree */
35
+ .agentic-reset {
36
+ -webkit-font-smoothing: antialiased;
37
+ -moz-osx-font-smoothing: grayscale;
38
+ text-rendering: optimizeLegibility;
39
+ tab-size: 2;
40
+ }
41
+
42
+ /* body rules → same root */
43
+ .agentic-reset {
44
+ font-family: var(--font-mono);
45
+ font-size: var(--font-size-md);
46
+ line-height: var(--line-height-normal);
47
+ color: var(--color-primary);
48
+ background-color: var(--color-canvas);
49
+ }
50
+
51
+ .agentic-reset img,
52
+ .agentic-reset picture,
53
+ .agentic-reset video,
54
+ .agentic-reset canvas,
55
+ .agentic-reset svg {
56
+ display: block;
57
+ max-width: 100%;
58
+ }
59
+
60
+ .agentic-reset input,
61
+ .agentic-reset button,
62
+ .agentic-reset textarea,
63
+ .agentic-reset select {
64
+ font: inherit;
65
+ }
66
+
67
+ .agentic-reset * {
68
+ -webkit-tap-highlight-color: transparent;
69
+ }
70
+
71
+ .agentic-reset p,
72
+ .agentic-reset h1,
73
+ .agentic-reset h2,
74
+ .agentic-reset h3,
75
+ .agentic-reset h4,
76
+ .agentic-reset h5,
77
+ .agentic-reset h6 {
78
+ overflow-wrap: break-word;
79
+ }
80
+
81
+ .agentic-reset h1,
82
+ .agentic-reset h2,
83
+ .agentic-reset h3,
84
+ .agentic-reset h4,
85
+ .agentic-reset h5,
86
+ .agentic-reset h6 {
87
+ font-family: var(--font-display);
88
+ font-weight: var(--font-weight-semibold);
89
+ line-height: var(--line-height-tight);
90
+ letter-spacing: var(--letter-spacing-tight);
91
+ color: var(--color-primary);
92
+ }
93
+
94
+ .agentic-reset * {
95
+ scrollbar-width: thin;
96
+ scrollbar-color: var(--color-thumb) var(--color-track);
97
+ }
98
+
99
+ .agentic-reset *::-webkit-scrollbar {
100
+ width: 6px;
101
+ height: 6px;
102
+ }
103
+
104
+ .agentic-reset *::-webkit-scrollbar-thumb {
105
+ background: var(--color-thumb);
106
+ border-radius: var(--radius-full);
107
+ }
108
+
109
+ .agentic-reset *::-webkit-scrollbar-track {
110
+ background: var(--color-track);
111
+ }
112
+ }
@@ -18,27 +18,24 @@ import { forwardRef } from "react";
18
18
  import type { ComponentRef, ComponentPropsWithoutRef } from "react";
19
19
  import { Switch as BaseSwitch } from "@base-ui/react/switch";
20
20
  import styles from "./switch.module.css";
21
+ import { resolveClassName, cx } from "../utils/resolveClassName";
21
22
 
22
23
  type BaseRootProps = ComponentPropsWithoutRef<typeof BaseSwitch.Root>;
23
24
  type BaseThumbProps = ComponentPropsWithoutRef<typeof BaseSwitch.Thumb>;
24
25
 
25
- export interface SwitchRootProps extends Omit<BaseRootProps, "className"> {
26
- className?: string;
27
- }
28
- export interface SwitchThumbProps extends Omit<BaseThumbProps, "className"> {
29
- className?: string;
30
- }
26
+ export interface SwitchRootProps extends BaseRootProps {}
27
+ export interface SwitchThumbProps extends BaseThumbProps {}
31
28
 
32
29
  export const SwitchRoot = forwardRef<ComponentRef<typeof BaseSwitch.Root>, SwitchRootProps>(function SwitchRoot(
33
30
  { className, ...props },
34
31
  ref,
35
32
  ) {
36
- return <BaseSwitch.Root ref={ref} className={`${styles["thumb-track"]} ${className ?? ""}`} {...props} />;
33
+ return <BaseSwitch.Root ref={ref} className={(state) => cx(styles["thumb-track"], resolveClassName(className, state))} {...props} />;
37
34
  });
38
35
 
39
36
  export const SwitchThumb = forwardRef<ComponentRef<typeof BaseSwitch.Thumb>, SwitchThumbProps>(function SwitchThumb(
40
37
  { className, ...props },
41
38
  ref,
42
39
  ) {
43
- return <BaseSwitch.Thumb ref={ref} className={`${styles.thumb} ${className ?? ""}`} {...props} />;
40
+ return <BaseSwitch.Thumb ref={ref} className={(state) => cx(styles.thumb, resolveClassName(className, state))} {...props} />;
44
41
  });
@@ -20,29 +20,24 @@ import { forwardRef } from "react";
20
20
  import type { ComponentRef, ComponentPropsWithoutRef } from "react";
21
21
  import { Tabs as BaseTabs } from "@base-ui/react/tabs";
22
22
  import styles from "./tabs.module.css";
23
+ import { resolveClassName, cx } from "../utils/resolveClassName";
23
24
 
24
25
  type BaseListProps = ComponentPropsWithoutRef<typeof BaseTabs.List>;
25
26
  type BaseTabProps = ComponentPropsWithoutRef<typeof BaseTabs.Tab>;
26
27
  type BasePanelProps = ComponentPropsWithoutRef<typeof BaseTabs.Panel>;
27
28
 
28
- export interface TabsListProps extends Omit<BaseListProps, "className"> {
29
- className?: string;
30
- }
31
- export interface TabsTabProps extends Omit<BaseTabProps, "className"> {
32
- className?: string;
33
- }
34
- export interface TabsPanelProps extends Omit<BasePanelProps, "className"> {
35
- className?: string;
36
- }
29
+ export interface TabsListProps extends BaseListProps {}
30
+ export interface TabsTabProps extends BaseTabProps {}
31
+ export interface TabsPanelProps extends BasePanelProps {}
37
32
 
38
33
  export const TabsList = forwardRef<ComponentRef<typeof BaseTabs.List>, TabsListProps>(function TabsList({ className, ...props }, ref) {
39
- return <BaseTabs.List ref={ref} className={`${styles.list} ${className ?? ""}`} {...props} />;
34
+ return <BaseTabs.List ref={ref} className={(state) => cx(styles.list, resolveClassName(className, state))} {...props} />;
40
35
  });
41
36
 
42
37
  export const TabsTab = forwardRef<ComponentRef<typeof BaseTabs.Tab>, TabsTabProps>(function TabsTab({ className, ...props }, ref) {
43
- return <BaseTabs.Tab ref={ref} className={`${styles.tab} ${className ?? ""}`} {...props} />;
38
+ return <BaseTabs.Tab ref={ref} className={(state) => cx(styles.tab, resolveClassName(className, state))} {...props} />;
44
39
  });
45
40
 
46
41
  export const TabsPanel = forwardRef<ComponentRef<typeof BaseTabs.Panel>, TabsPanelProps>(function TabsPanel({ className, ...props }, ref) {
47
- return <BaseTabs.Panel ref={ref} className={`${styles.panel} ${className ?? ""}`} {...props} />;
42
+ return <BaseTabs.Panel ref={ref} className={(state) => cx(styles.panel, resolveClassName(className, state))} {...props} />;
48
43
  });