@cladd-ui/react 0.7.0 → 0.7.2
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/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -1,3 +1,106 @@
|
|
|
1
|
-
# Cladd
|
|
1
|
+
# Cladd
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**A React UI kit for building actual apps.**
|
|
4
|
+
|
|
5
|
+
Cladd is an opinionated React UI kit for editors, dashboards, settings panels, and internal tooling — the kind of UI where a sidebar, a canvas, an inspector, and forty controls have to coexist on one screen and still stay legible.
|
|
6
|
+
|
|
7
|
+
It ships with a defined visual identity: recessed and raised surfaces, a single sizing scale, eleven accent colors, dark-first theming, and a complete set of application-grade controls.
|
|
8
|
+
|
|
9
|
+
- **Website:** [cladd.io](https://cladd.io)
|
|
10
|
+
- **Docs:** [cladd.io/react](https://cladd.io/react/)
|
|
11
|
+
- **About:** [cladd.io/about](https://cladd.io/about/)
|
|
12
|
+
|
|
13
|
+
## Why cladd
|
|
14
|
+
|
|
15
|
+
- **Surfaces that nest.** Recessed and raised levels auto-bump when you nest them — no manual color picking, no per-card overrides.
|
|
16
|
+
- **One sizing scale.** Seven steps from `2xs` to `2xl`. Drop a `Chip` inside a `Button` at the same `size` and it just fits.
|
|
17
|
+
- **Eleven accent colors.** `neutral`, `brand`, `red`, `pink`, `purple`, `blue`, `cyan`, `lime`, `green`, `yellow`, `orange` — set per component or per region.
|
|
18
|
+
- **Controlled overlays.** Open a `Dialog`, `Popover`, `Toast`, or `Tooltip` imperatively from a hook — no `<Root>`/`<Portal>`/`<Content>` scaffolding sprinkled across files.
|
|
19
|
+
- **Dense, not crowded.** Tuned for information-rich screens: tight gaps, sharp type, default `md` height of 28 px.
|
|
20
|
+
- **Dark-first, light included.**
|
|
21
|
+
- **First-class TypeScript.** Every component re-exports its props and size union.
|
|
22
|
+
|
|
23
|
+
## Installation
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npm install @cladd-ui/react
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Import the stylesheet after Tailwind, in the same CSS file:
|
|
30
|
+
|
|
31
|
+
```css
|
|
32
|
+
@import 'tailwindcss';
|
|
33
|
+
@import '@cladd-ui/react/css';
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Wrap your app in `CladdProvider` once, as high in the tree as possible:
|
|
37
|
+
|
|
38
|
+
```tsx
|
|
39
|
+
import { CladdProvider } from '@cladd-ui/react';
|
|
40
|
+
|
|
41
|
+
export default function App({ children }) {
|
|
42
|
+
return <CladdProvider>{children}</CladdProvider>;
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Framework-specific guides for Next.js, Vite, TanStack Start, React Router, Astro, and plain React are at [cladd.io/react/installation](https://cladd.io/react/installation/).
|
|
47
|
+
|
|
48
|
+
### Requirements
|
|
49
|
+
|
|
50
|
+
- **React 19+**
|
|
51
|
+
- **Tailwind CSS v4**
|
|
52
|
+
- A bundler that respects CSS import order (the cladd stylesheet must load after Tailwind).
|
|
53
|
+
|
|
54
|
+
## Quick example
|
|
55
|
+
|
|
56
|
+
```tsx
|
|
57
|
+
import { Button, Surface, useDialog } from '@cladd-ui/react';
|
|
58
|
+
|
|
59
|
+
export function Example() {
|
|
60
|
+
const dialog = useDialog();
|
|
61
|
+
|
|
62
|
+
return (
|
|
63
|
+
<Surface>
|
|
64
|
+
<Button
|
|
65
|
+
color="red"
|
|
66
|
+
onClick={() =>
|
|
67
|
+
dialog.confirm({
|
|
68
|
+
title: 'Delete project?',
|
|
69
|
+
text: 'This cannot be undone.',
|
|
70
|
+
confirmButtonText: 'Delete',
|
|
71
|
+
confirmButtonColor: 'red',
|
|
72
|
+
onConfirm: () => {
|
|
73
|
+
// delete the project
|
|
74
|
+
},
|
|
75
|
+
})
|
|
76
|
+
}
|
|
77
|
+
>
|
|
78
|
+
Delete
|
|
79
|
+
</Button>
|
|
80
|
+
</Surface>
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## What's in the box
|
|
86
|
+
|
|
87
|
+
- **Surfaces** — `Surface`, `SurfaceCut`, with five depth levels that nest contextually.
|
|
88
|
+
- **Controls** — `Button`, `Input`, `NumberField`, `Textarea`, `SearchField`, `OTPField`, `Select`, `Slider`, `Checkbox`, `Radio`, `Switch`, `Segmented`, `Chip`, `Shortcut`, `Link`, `Spinner`.
|
|
89
|
+
- **Layout** — `Toolbar`, `List`, `ListItem`, `ListButton`, `ListSeparator`, `ListTitle`, `SectionTitle`.
|
|
90
|
+
- **Overlays** — `Dialog`, `Popover`, `Popup`, `Tooltip`, `Toast`, `Backdrop`.
|
|
91
|
+
- **Hooks** — `useDialog`, `useToast`, `useTheme`, `useAccentColor`, `useSurface`, `useDevice`.
|
|
92
|
+
|
|
93
|
+
Full component reference: [cladd.io/react](https://cladd.io/react/).
|
|
94
|
+
|
|
95
|
+
## Already shipping in
|
|
96
|
+
|
|
97
|
+
- [Swiper Studio](https://studio.swiperjs.com/) — visual editor for Swiper sliders
|
|
98
|
+
- [t0ggles](https://t0ggles.com/) — project management
|
|
99
|
+
- [PaneFlow](https://paneflow.com/) — animated slideshow editor
|
|
100
|
+
- [Start Page HQ](https://startpagehq.com/) — custom New Tab dashboard
|
|
101
|
+
|
|
102
|
+
## License
|
|
103
|
+
|
|
104
|
+
[MIT](./LICENSE) — free forever.
|
|
105
|
+
|
|
106
|
+
Built by [Vladimir Kharlampidi](https://nolimits4web.com) — also the author of [Swiper](https://swiperjs.com), [Framework7](https://framework7.io), and [Konsta UI](https://konstaui.com).
|
|
@@ -29,6 +29,8 @@ interface NumberScrubberOwnProps {
|
|
|
29
29
|
surfaceLevel?: string | number;
|
|
30
30
|
/** Show the chevron-expand indicator on the left of the trigger. Default `true`. */
|
|
31
31
|
scrubberIcon?: boolean;
|
|
32
|
+
/** Icon node rendered inside the trigger - forwarded to the inner `Input` when editing and rendered as the first child of the idle `Button`. */
|
|
33
|
+
icon?: ReactNode;
|
|
32
34
|
/** Minimum allowed value. Default `0`. */
|
|
33
35
|
min?: number;
|
|
34
36
|
/** Maximum allowed value. Default `1_000_000`. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NumberScrubber.d.ts","sourceRoot":"","sources":["../../../src/components/NumberScrubber.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EACT,GAAG,EACH,wBAAwB,EAKzB,MAAM,OAAO,CAAC;AAIf,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAIjC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,MAAM,MAAM,kBAAkB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;AAEnE,UAAU,sBAAsB;IAC9B,uFAAuF;IACvF,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yDAAyD;IACzD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sHAAsH;IACtH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sGAAsG;IACtG,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,6GAA6G;IAC7G,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,kGAAkG;IAClG,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,8EAA8E;IAC9E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kIAAkI;IAClI,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,oFAAoF;IACpF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,0CAA0C;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wFAAwF;IACxF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kGAAkG;IAClG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sKAAsK;IACtK,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8FAA8F;IAC9F,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACzC,oLAAoL;IACpL,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,yHAAyH;IACzH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,4CAA4C;IAC5C,GAAG,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;CACxB;AAED,MAAM,MAAM,mBAAmB,GAAG,sBAAsB,GACtD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,EAAE,MAAM,sBAAsB,CAAC,CAAC;AAEzE,qGAAqG;AACrG,MAAM,MAAM,0BAA0B,GAAG,OAAO,CAC9C,IAAI,CACF,sBAAsB,EACtB,UAAU,GAAG,KAAK,GAAG,OAAO,GAAG,UAAU,GAAG,mBAAmB,CAChE,CACF,CAAC;AAIF,eAAO,MAAM,cAAc,GAAI,OAAO,mBAAmB,
|
|
1
|
+
{"version":3,"file":"NumberScrubber.d.ts","sourceRoot":"","sources":["../../../src/components/NumberScrubber.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EACT,GAAG,EACH,wBAAwB,EAKzB,MAAM,OAAO,CAAC;AAIf,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAIjC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,MAAM,MAAM,kBAAkB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;AAEnE,UAAU,sBAAsB;IAC9B,uFAAuF;IACvF,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yDAAyD;IACzD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sHAAsH;IACtH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sGAAsG;IACtG,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,6GAA6G;IAC7G,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,kGAAkG;IAClG,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,8EAA8E;IAC9E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kIAAkI;IAClI,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,oFAAoF;IACpF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gJAAgJ;IAChJ,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,0CAA0C;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wFAAwF;IACxF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kGAAkG;IAClG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sKAAsK;IACtK,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8FAA8F;IAC9F,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACzC,oLAAoL;IACpL,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,yHAAyH;IACzH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,4CAA4C;IAC5C,GAAG,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;CACxB;AAED,MAAM,MAAM,mBAAmB,GAAG,sBAAsB,GACtD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,EAAE,MAAM,sBAAsB,CAAC,CAAC;AAEzE,qGAAqG;AACrG,MAAM,MAAM,0BAA0B,GAAG,OAAO,CAC9C,IAAI,CACF,sBAAsB,EACtB,UAAU,GAAG,KAAK,GAAG,OAAO,GAAG,UAAU,GAAG,mBAAmB,CAChE,CACF,CAAC;AAIF,eAAO,MAAM,cAAc,GAAI,OAAO,mBAAmB,4CA2MxD,CAAC"}
|
|
@@ -2,12 +2,12 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useRef, useState, useEffect, } from 'react';
|
|
3
3
|
import { useComponentDefaults } from '../hooks/use-component-defaults.js';
|
|
4
4
|
import { cn } from '../shared/cn.js';
|
|
5
|
-
import { Button } from './Button.js';
|
|
5
|
+
import { Button, buttonIconSizes } from './Button.js';
|
|
6
6
|
import { DropdownIcon } from './icons/DropdownIcon.js';
|
|
7
7
|
import { Input } from './Input.js';
|
|
8
8
|
const CLICK_SUPPRESS_MS = 200;
|
|
9
9
|
export const NumberScrubber = (props) => {
|
|
10
|
-
const { children, className = '', contentClassName = '', inputClassName = '', disabled = false, readOnly = false, rounded = false, size = 'md', color = '', outline = true, variant = 'gradient', surfaceLevel, scrubberIcon = true, displayValue = (v) => String(v), min = 0, max = 1000000, value = 0, step = 1, dragStep = step / 5, altDragStep = step, ref, onTemporaryChange, onChange, ...rest } = useComponentDefaults('NumberScrubber', props);
|
|
10
|
+
const { children, className = '', contentClassName = '', inputClassName = '', disabled = false, readOnly = false, rounded = false, size = 'md', color = '', outline = true, variant = 'gradient', surfaceLevel, scrubberIcon = true, icon, displayValue = (v) => String(v), min = 0, max = 1000000, value = 0, step = 1, dragStep = step / 5, altDragStep = step, ref, onTemporaryChange, onChange, ...rest } = useComponentDefaults('NumberScrubber', props);
|
|
11
11
|
const [isEditing, setIsEditing] = useState(false);
|
|
12
12
|
const [inputValue, setInputValue] = useState(String(value));
|
|
13
13
|
const displayValueElRef = useRef(null);
|
|
@@ -114,8 +114,8 @@ export const NumberScrubber = (props) => {
|
|
|
114
114
|
enableEditing();
|
|
115
115
|
};
|
|
116
116
|
if (isEditing) {
|
|
117
|
-
return (_jsx(Input, { type: "number", size: size, value: inputValue, min: min, max: max, step: step, autoFocus: true, inputRef: inputElRef, onBlur: commitInput, onKeyDown: onInputKeyDown, onChange: setInputValue, disabled: disabled, rounded: rounded, className: cn('cladd-number-scrubber', className), contentClassName: contentClassName, inputClassName: cn('text-left', inputClassName) }));
|
|
117
|
+
return (_jsx(Input, { type: "number", size: size, value: inputValue, min: min, max: max, step: step, autoFocus: true, inputRef: inputElRef, onBlur: commitInput, onKeyDown: onInputKeyDown, onChange: setInputValue, disabled: disabled, rounded: rounded, icon: icon, className: cn('cladd-number-scrubber', className), contentClassName: contentClassName, inputClassName: cn('text-left', inputClassName) }));
|
|
118
118
|
}
|
|
119
|
-
return (_jsxs(Button, { className: cn('cladd-number-scrubber', !disabled && !readOnly && 'cursor-ew-resize touch-pan-y', className), contentClassName: cn(scrubberIcon && 'pl-1.5', 'justify-between', contentClassName), color: color, disabled: disabled, readOnly: readOnly, rounded: rounded, size: size, variant: variant, outline: outline, surfaceLevel: surfaceLevel, ref: ref, onPointerDown: onPointerDown, onClick: onClick, onFocus: onFocus, ...rest, children: [scrubberIcon && (_jsx(DropdownIcon, { className: "shrink-0 rotate-90 text-cladd-fg-softer" })), _jsx("span", { ref: displayValueElRef, children: displayValue(value) }), children] }));
|
|
119
|
+
return (_jsxs(Button, { className: cn('cladd-number-scrubber', !disabled && !readOnly && 'cursor-ew-resize touch-pan-y', className), contentClassName: cn(scrubberIcon && !icon && 'pl-1.5', 'justify-between', contentClassName), color: color, disabled: disabled, readOnly: readOnly, rounded: rounded, size: size, variant: variant, outline: outline, surfaceLevel: surfaceLevel, ref: ref, onPointerDown: onPointerDown, onClick: onClick, onFocus: onFocus, ...rest, children: [icon && (_jsx("div", { "data-part": "icon", className: cn('shrink-0', buttonIconSizes[size]), children: icon })), scrubberIcon && (_jsx(DropdownIcon, { className: "mr-auto shrink-0 rotate-90 text-cladd-fg-softer" })), _jsx("span", { ref: displayValueElRef, children: displayValue(value) }), children] }));
|
|
120
120
|
};
|
|
121
121
|
//# sourceMappingURL=NumberScrubber.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NumberScrubber.js","sourceRoot":"","sources":["../../../src/components/NumberScrubber.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,MAAM,EAIN,QAAQ,EACR,SAAS,GAGV,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"NumberScrubber.js","sourceRoot":"","sources":["../../../src/components/NumberScrubber.tsx"],"names":[],"mappings":"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"}
|