@kennycorrea/ui 0.3.0 → 0.4.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.
package/README.md CHANGED
@@ -257,3 +257,16 @@ toast.dismiss(id); // or toast.dismiss() for all
257
257
  `duration` overrides the `Toaster` default per toast. An action closes the toast after its
258
258
  `onClick` unless `keepOpen` is set. Passing an existing `id` replaces that toast in place.
259
259
  The close button's name comes from `UiStrings.dismiss`, so feed it through `UiStringsProvider`.
260
+
261
+ ## Slider — 0.4.0
262
+
263
+ A thin wrap of Radix Themes' `Slider` at size `2`, like the other atoms. `label` is required and
264
+ becomes the `aria-label`, because a slider has no visible text of its own.
265
+
266
+ ```tsx
267
+ <Slider label="Reminder lead time (hours)" min={1} max={48} step={1}
268
+ value={[hours]} onValueChange={([h]) => setHours(h)} />
269
+ <Slider label="Price range" defaultValue={[10, 60]} min={0} max={200} /> // two thumbs = range
270
+ ```
271
+
272
+ Values are arrays, as in Radix: one entry per thumb.
@@ -0,0 +1,10 @@
1
+ import { Slider as ThemedSlider } from '@radix-ui/themes';
2
+ import { type ComponentPropsWithoutRef } from 'react';
3
+ export interface SliderProps extends Omit<ComponentPropsWithoutRef<typeof ThemedSlider>, 'size' | 'aria-label'> {
4
+ /**
5
+ * Required: a slider has no visible text of its own, so without this a screen reader
6
+ * announces a bare number with nothing to say what it measures.
7
+ */
8
+ label: string;
9
+ }
10
+ export declare const Slider: import("react").ForwardRefExoticComponent<SliderProps & import("react").RefAttributes<HTMLSpanElement>>;
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Slider as ThemedSlider } from '@radix-ui/themes';
3
+ import { forwardRef } from 'react';
4
+ import { cn } from '../../utils/cn.js';
5
+ export const Slider = forwardRef(function Slider({ label, className, ...props }, ref) {
6
+ return (_jsx(ThemedSlider, { ref: ref, size: "2", "aria-label": label, className: cn(className), ...props }));
7
+ });
@@ -0,0 +1 @@
1
+ export * from './Slider.js';
@@ -0,0 +1 @@
1
+ export * from './Slider.js';
@@ -12,6 +12,7 @@ export * from './Popover/index.js';
12
12
  export * from './Progress/index.js';
13
13
  export * from './Select/index.js';
14
14
  export * from './Separator/index.js';
15
+ export * from './Slider/index.js';
15
16
  export * from './Spinner/index.js';
16
17
  export * from './Switch/index.js';
17
18
  export * from './Textarea/index.js';
@@ -12,6 +12,7 @@ export * from './Popover/index.js';
12
12
  export * from './Progress/index.js';
13
13
  export * from './Select/index.js';
14
14
  export * from './Separator/index.js';
15
+ export * from './Slider/index.js';
15
16
  export * from './Spinner/index.js';
16
17
  export * from './Switch/index.js';
17
18
  export * from './Textarea/index.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kennycorrea/ui",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Upfront's house component layer: atoms over Radix Themes, the token bridge, and the accent logic.",
5
5
  "private": false,
6
6
  "type": "module",