@justanarthur/modo-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 +2 -1
- package/dist/blocks/sidebar-app/index.js +3 -3
- package/dist/components/inputs/combobox/index.d.ts +7 -6
- package/dist/components/inputs/combobox/index.js +2 -2
- package/dist/components/inputs/date-time/date-picker/index.d.ts +7 -3
- package/dist/components/inputs/date-time/date-picker/index.js +5 -5
- package/dist/components/inputs/date-time/date-range-picker/index.d.ts +7 -3
- package/dist/components/inputs/date-time/date-range-picker/index.js +4 -4
- package/dist/components/inputs/date-time/duration-picker/index.d.ts +7 -3
- package/dist/components/inputs/date-time/duration-picker/index.js +4 -4
- package/dist/components/inputs/date-time/month-picker/index.d.ts +7 -3
- package/dist/components/inputs/date-time/month-picker/index.js +4 -4
- package/dist/components/inputs/date-time/time-picker/index.d.ts +7 -3
- package/dist/components/inputs/date-time/time-picker/index.js +4 -4
- package/dist/components/inputs/input/index.d.ts +5 -1
- package/dist/components/inputs/input/index.js +2 -2
- package/dist/components/inputs/textarea/index.d.ts +46 -0
- package/dist/components/inputs/textarea/index.js +13 -0
- package/dist/components/navigation/sidebar/index.js +2 -2
- package/dist/index.d.ts +166 -111
- package/dist/index.js +15 -11
- package/dist/shared/{components-mhd39z7x.js → components-3myrw7ne.js} +36 -1
- package/dist/shared/{components-gvr9w41t.js → components-50m950y9.js} +19 -23
- package/dist/shared/{components-nb87fjy4.js → components-mqyvvh8k.js} +1 -1
- package/dist/shared/{components-3fbbvq5j.js → components-nsjec21k.js} +3 -1
- package/dist/shared/{components-re6rs21k.js → components-nyq0rym2.js} +3 -1
- package/dist/shared/{components-7btqt08d.js → components-qtqxgfrb.js} +17 -20
- package/dist/shared/components-rd9tbsqv.js +89 -0
- package/dist/shared/{components-8ey44d79.js → components-tcee5k0s.js} +22 -24
- package/dist/shared/{components-bshdmf75.js → components-wshd8f3n.js} +3 -1
- package/dist/shared/{components-2nhgyh31.js → components-wtbesgdp.js} +3 -1
- package/dist/shared/{components-2n3whx7z.js → components-ye0ze0h8.js} +1 -1
- package/dist/shared/{components-k809mbn0.js → components-zwhtxm15.js} +3 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -54,7 +54,7 @@ import {
|
|
|
54
54
|
} from "./shared/components-rr7a6ja9.js";
|
|
55
55
|
import {
|
|
56
56
|
fieldVariants
|
|
57
|
-
} from "./shared/components-
|
|
57
|
+
} from "./shared/components-3myrw7ne.js";
|
|
58
58
|
import"./shared/components-c6s6b43g.js";
|
|
59
59
|
import {
|
|
60
60
|
TooltipPortalContainer2,
|
|
@@ -98,7 +98,7 @@ import {
|
|
|
98
98
|
SidebarMenuSubButton2,
|
|
99
99
|
Sidebar2,
|
|
100
100
|
SidebarContent2
|
|
101
|
-
} from "./shared/components-
|
|
101
|
+
} from "./shared/components-mqyvvh8k.js";
|
|
102
102
|
import"./shared/components-chacnk61.js";
|
|
103
103
|
import {
|
|
104
104
|
FluidHoverHighlight2
|
|
@@ -129,7 +129,7 @@ import {
|
|
|
129
129
|
} from "./shared/components-a86dytt0.js";
|
|
130
130
|
import {
|
|
131
131
|
SidebarApp2
|
|
132
|
-
} from "./shared/components-
|
|
132
|
+
} from "./shared/components-ye0ze0h8.js";
|
|
133
133
|
import {
|
|
134
134
|
FileThumbnail2,
|
|
135
135
|
InputMessage2
|
|
@@ -193,7 +193,7 @@ import {
|
|
|
193
193
|
ComboboxList2,
|
|
194
194
|
ComboboxItem2,
|
|
195
195
|
ComboboxEmpty2
|
|
196
|
-
} from "./shared/components-
|
|
196
|
+
} from "./shared/components-tcee5k0s.js";
|
|
197
197
|
import"./shared/components-gz8zf3ec.js";
|
|
198
198
|
import {
|
|
199
199
|
Calendar2
|
|
@@ -202,24 +202,24 @@ import {
|
|
|
202
202
|
Input2,
|
|
203
203
|
Label2,
|
|
204
204
|
InputGroup2
|
|
205
|
-
} from "./shared/components-
|
|
206
|
-
import"./shared/components-
|
|
205
|
+
} from "./shared/components-50m950y9.js";
|
|
206
|
+
import"./shared/components-qtqxgfrb.js";
|
|
207
207
|
import"./shared/components-mjthm1kf.js";
|
|
208
208
|
import {
|
|
209
209
|
DatePicker2
|
|
210
|
-
} from "./shared/components-
|
|
210
|
+
} from "./shared/components-wtbesgdp.js";
|
|
211
211
|
import {
|
|
212
212
|
DateRangePicker2
|
|
213
|
-
} from "./shared/components-
|
|
213
|
+
} from "./shared/components-zwhtxm15.js";
|
|
214
214
|
import {
|
|
215
215
|
DurationPicker2
|
|
216
|
-
} from "./shared/components-
|
|
216
|
+
} from "./shared/components-nyq0rym2.js";
|
|
217
217
|
import {
|
|
218
218
|
MonthPicker2
|
|
219
|
-
} from "./shared/components-
|
|
219
|
+
} from "./shared/components-nsjec21k.js";
|
|
220
220
|
import {
|
|
221
221
|
TimePicker2
|
|
222
|
-
} from "./shared/components-
|
|
222
|
+
} from "./shared/components-wshd8f3n.js";
|
|
223
223
|
import {
|
|
224
224
|
RadioGroup2,
|
|
225
225
|
Radio2
|
|
@@ -250,6 +250,9 @@ import {
|
|
|
250
250
|
Switch2,
|
|
251
251
|
SwitchGroup2
|
|
252
252
|
} from "./shared/components-8snj490h.js";
|
|
253
|
+
import {
|
|
254
|
+
Textarea2
|
|
255
|
+
} from "./shared/components-rd9tbsqv.js";
|
|
253
256
|
import {
|
|
254
257
|
Tabs2,
|
|
255
258
|
TabsList2,
|
|
@@ -478,6 +481,7 @@ export {
|
|
|
478
481
|
TabsSubtle2 as TabsSubtle,
|
|
479
482
|
TabsSubtleItem2 as TabsSubtleItem,
|
|
480
483
|
TabsSubtlePanel2 as TabsSubtlePanel,
|
|
484
|
+
Textarea2 as Textarea,
|
|
481
485
|
ThinkingIndicator2 as ThinkingIndicator,
|
|
482
486
|
TimePicker2 as TimePicker,
|
|
483
487
|
Toast2 as Toast,
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useShape
|
|
3
|
+
} from "./components-cv16mryv.js";
|
|
4
|
+
import {
|
|
5
|
+
useSize2
|
|
6
|
+
} from "./components-0sn7ypjw.js";
|
|
7
|
+
import {
|
|
8
|
+
cn2
|
|
9
|
+
} from "./components-ezxhrmer.js";
|
|
10
|
+
|
|
1
11
|
// lib/field-classes.ts
|
|
2
12
|
import { cva } from "class-variance-authority";
|
|
3
13
|
var fieldVariants = cva([
|
|
@@ -18,5 +28,30 @@ var fieldVariants = cva([
|
|
|
18
28
|
}
|
|
19
29
|
});
|
|
20
30
|
var fieldIconClasses = "shrink-0 text-muted-foreground transition-[color,stroke-width] duration-fast group-hover/field:text-foreground group-hover/field:stroke-[2] group-data-[active]/field:text-foreground group-data-[active]/field:stroke-[2] group-focus-within/field:text-foreground group-focus-within/field:stroke-[2]";
|
|
31
|
+
var FIELD_PX = {
|
|
32
|
+
default: "px-2.5",
|
|
33
|
+
compact: "px-2"
|
|
34
|
+
};
|
|
35
|
+
function useFieldBox({ variant, invalid, disabled, active, size }) {
|
|
36
|
+
const shape = useShape();
|
|
37
|
+
const sizeClasses = useSize2(size);
|
|
38
|
+
return {
|
|
39
|
+
size: sizeClasses,
|
|
40
|
+
props: {
|
|
41
|
+
"data-active": active || undefined,
|
|
42
|
+
"data-invalid": invalid || undefined,
|
|
43
|
+
"data-disabled": disabled || undefined,
|
|
44
|
+
className: cn2(fieldVariants({ variant }), shape.input, FIELD_PX[sizeClasses.variant])
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function focusControlOnPress(control) {
|
|
49
|
+
return (e) => {
|
|
50
|
+
if (e.target === control.current)
|
|
51
|
+
return;
|
|
52
|
+
e.preventDefault();
|
|
53
|
+
control.current?.focus();
|
|
54
|
+
};
|
|
55
|
+
}
|
|
21
56
|
|
|
22
|
-
export { fieldVariants, fieldIconClasses };
|
|
57
|
+
export { fieldVariants, fieldIconClasses, useFieldBox, focusControlOnPress };
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
fieldVariants,
|
|
3
|
-
fieldIconClasses
|
|
4
|
-
} from "./components-mhd39z7x.js";
|
|
5
|
-
import {
|
|
6
|
-
useShape
|
|
7
|
-
} from "./components-cv16mryv.js";
|
|
8
1
|
import {
|
|
9
2
|
useSize2
|
|
10
3
|
} from "./components-0sn7ypjw.js";
|
|
4
|
+
import {
|
|
5
|
+
cn2
|
|
6
|
+
} from "./components-ezxhrmer.js";
|
|
7
|
+
import {
|
|
8
|
+
fieldIconClasses,
|
|
9
|
+
useFieldBox,
|
|
10
|
+
focusControlOnPress
|
|
11
|
+
} from "./components-3myrw7ne.js";
|
|
11
12
|
import {
|
|
12
13
|
useControllableState
|
|
13
14
|
} from "./components-n7mjr357.js";
|
|
@@ -15,9 +16,6 @@ import {
|
|
|
15
16
|
useFluidHover2,
|
|
16
17
|
useRegisterFluidHoverItem2
|
|
17
18
|
} from "./components-59efxjd9.js";
|
|
18
|
-
import {
|
|
19
|
-
cn2
|
|
20
|
-
} from "./components-ezxhrmer.js";
|
|
21
19
|
import {
|
|
22
20
|
SizeProvider2
|
|
23
21
|
} from "./components-jjw69c4c.js";
|
|
@@ -45,6 +43,7 @@ var Input2 = forwardRef(({
|
|
|
45
43
|
value: valueProp,
|
|
46
44
|
defaultValue = "",
|
|
47
45
|
onChange: onChangeProp,
|
|
46
|
+
variant = "borderless",
|
|
48
47
|
invalid,
|
|
49
48
|
disabled,
|
|
50
49
|
size,
|
|
@@ -54,20 +53,17 @@ var Input2 = forwardRef(({
|
|
|
54
53
|
const [value, onChange] = useControllableState(valueProp, defaultValue, onChangeProp);
|
|
55
54
|
const inputRef = useRef(null);
|
|
56
55
|
const field = useContext(FieldStateContext);
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
56
|
+
const { size: sizeClasses, props: boxProps } = useFieldBox({
|
|
57
|
+
variant,
|
|
58
|
+
invalid,
|
|
59
|
+
disabled,
|
|
60
|
+
active: field?.active,
|
|
61
|
+
size
|
|
62
|
+
});
|
|
60
63
|
return /* @__PURE__ */ jsxs("div", {
|
|
61
|
-
onMouseDown: (
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
e.preventDefault();
|
|
65
|
-
inputRef.current?.focus();
|
|
66
|
-
},
|
|
67
|
-
"data-active": field?.active || undefined,
|
|
68
|
-
"data-invalid": invalid || undefined,
|
|
69
|
-
"data-disabled": disabled || undefined,
|
|
70
|
-
className: cn2(fieldVariants(), "flex items-center", sizeClasses.gap, shape.input, compact ? "px-2" : "px-2.5", sizeClasses.control, className),
|
|
64
|
+
onMouseDown: focusControlOnPress(inputRef),
|
|
65
|
+
...boxProps,
|
|
66
|
+
className: cn2(boxProps.className, "flex items-center", sizeClasses.gap, sizeClasses.control, className),
|
|
71
67
|
children: [
|
|
72
68
|
Icon && /* @__PURE__ */ jsx(Icon, {
|
|
73
69
|
size: sizeClasses.icon,
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
import {
|
|
15
15
|
PickerShell,
|
|
16
16
|
PickerInput
|
|
17
|
-
} from "./components-
|
|
17
|
+
} from "./components-qtqxgfrb.js";
|
|
18
18
|
|
|
19
19
|
// components/inputs/date-time/month-picker/index.tsx
|
|
20
20
|
import { addYears, endOfYear, format, startOfMonth, startOfYear } from "date-fns";
|
|
@@ -29,6 +29,7 @@ function MonthPicker2({
|
|
|
29
29
|
startMonth,
|
|
30
30
|
endMonth,
|
|
31
31
|
disabled,
|
|
32
|
+
variant,
|
|
32
33
|
invalid,
|
|
33
34
|
size,
|
|
34
35
|
open: openProp,
|
|
@@ -74,6 +75,7 @@ function MonthPicker2({
|
|
|
74
75
|
open,
|
|
75
76
|
onOpenChange: setOpen,
|
|
76
77
|
size,
|
|
78
|
+
variant,
|
|
77
79
|
invalid,
|
|
78
80
|
disabled,
|
|
79
81
|
icon: "calendar",
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
import {
|
|
14
14
|
PickerShell,
|
|
15
15
|
PickerInput
|
|
16
|
-
} from "./components-
|
|
16
|
+
} from "./components-qtqxgfrb.js";
|
|
17
17
|
import {
|
|
18
18
|
pad
|
|
19
19
|
} from "./components-mjthm1kf.js";
|
|
@@ -32,6 +32,7 @@ function DurationPicker2({
|
|
|
32
32
|
locale = defaultLocale,
|
|
33
33
|
placeholder,
|
|
34
34
|
disabled,
|
|
35
|
+
variant,
|
|
35
36
|
invalid,
|
|
36
37
|
size,
|
|
37
38
|
open: openProp,
|
|
@@ -72,6 +73,7 @@ function DurationPicker2({
|
|
|
72
73
|
open,
|
|
73
74
|
onOpenChange: setOpen,
|
|
74
75
|
size,
|
|
76
|
+
variant,
|
|
75
77
|
invalid,
|
|
76
78
|
disabled,
|
|
77
79
|
icon: "clock",
|
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
useShape
|
|
3
|
+
} from "./components-cv16mryv.js";
|
|
4
|
+
import {
|
|
5
|
+
useSize2
|
|
6
|
+
} from "./components-0sn7ypjw.js";
|
|
7
|
+
import {
|
|
8
|
+
cn2
|
|
9
|
+
} from "./components-ezxhrmer.js";
|
|
10
|
+
import {
|
|
11
|
+
fieldIconClasses,
|
|
12
|
+
useFieldBox
|
|
13
|
+
} from "./components-3myrw7ne.js";
|
|
5
14
|
import {
|
|
6
15
|
useIcon
|
|
7
16
|
} from "./components-zrkzcayz.js";
|
|
@@ -14,15 +23,6 @@ import {
|
|
|
14
23
|
useMorphOrigin,
|
|
15
24
|
useMorph
|
|
16
25
|
} from "./components-hqeq3w9q.js";
|
|
17
|
-
import {
|
|
18
|
-
cn2
|
|
19
|
-
} from "./components-ezxhrmer.js";
|
|
20
|
-
import {
|
|
21
|
-
useShape
|
|
22
|
-
} from "./components-cv16mryv.js";
|
|
23
|
-
import {
|
|
24
|
-
useSize2
|
|
25
|
-
} from "./components-0sn7ypjw.js";
|
|
26
26
|
import {
|
|
27
27
|
SURFACE_BG,
|
|
28
28
|
SURFACE_SHADOW,
|
|
@@ -46,7 +46,7 @@ import {
|
|
|
46
46
|
} from "./components-rr7a6ja9.js";
|
|
47
47
|
import {
|
|
48
48
|
input_default
|
|
49
|
-
} from "./components-
|
|
49
|
+
} from "./components-50m950y9.js";
|
|
50
50
|
|
|
51
51
|
// components/inputs/date-time/picker-shell.tsx
|
|
52
52
|
import { Popover } from "@base-ui/react/popover";
|
|
@@ -69,21 +69,18 @@ function PickerShell({ open: openProp, defaultOpen = false, onOpenChange, size,
|
|
|
69
69
|
children: shell
|
|
70
70
|
}) : shell;
|
|
71
71
|
}
|
|
72
|
-
var PickerField = forwardRef(({ icon, display, placeholder, invalid, disabled, id, className, ...props }, ref) => {
|
|
72
|
+
var PickerField = forwardRef(({ icon, display, placeholder, variant = "bordered", invalid, disabled, id, className, ...props }, ref) => {
|
|
73
73
|
const Icon = useIcon(icon);
|
|
74
|
-
const
|
|
75
|
-
const sizeClasses = useSize2();
|
|
76
|
-
const compact = sizeClasses.variant === "compact";
|
|
74
|
+
const { size: sizeClasses, props: boxProps } = useFieldBox({ variant, invalid, disabled });
|
|
77
75
|
return /* @__PURE__ */ jsxs("button", {
|
|
78
76
|
ref,
|
|
79
77
|
type: "button",
|
|
80
78
|
id,
|
|
81
79
|
disabled,
|
|
82
80
|
"aria-invalid": invalid || undefined,
|
|
83
|
-
|
|
84
|
-
"data-disabled": disabled || undefined,
|
|
81
|
+
...boxProps,
|
|
85
82
|
...props,
|
|
86
|
-
className: cn2(
|
|
83
|
+
className: cn2(boxProps.className, "flex w-full min-w-0 items-center text-left cursor-pointer outline-none focus-visible:ring-focus-ring", sizeClasses.gap, sizeClasses.control, className),
|
|
87
84
|
children: [
|
|
88
85
|
/* @__PURE__ */ jsx(Icon, {
|
|
89
86
|
size: sizeClasses.icon,
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import {
|
|
2
|
+
cn2
|
|
3
|
+
} from "./components-ezxhrmer.js";
|
|
4
|
+
import {
|
|
5
|
+
useFieldBox,
|
|
6
|
+
focusControlOnPress
|
|
7
|
+
} from "./components-3myrw7ne.js";
|
|
8
|
+
import {
|
|
9
|
+
useControllableState
|
|
10
|
+
} from "./components-n7mjr357.js";
|
|
11
|
+
|
|
12
|
+
// components/inputs/textarea/index.tsx
|
|
13
|
+
import { Field } from "@base-ui/react/field";
|
|
14
|
+
import { forwardRef, useCallback, useEffect, useLayoutEffect, useRef } from "react";
|
|
15
|
+
import { jsx } from "react/jsx-runtime";
|
|
16
|
+
var PADDING_Y = {
|
|
17
|
+
default: "py-2",
|
|
18
|
+
compact: "py-1"
|
|
19
|
+
};
|
|
20
|
+
var Textarea2 = forwardRef(({
|
|
21
|
+
value: valueProp,
|
|
22
|
+
defaultValue = "",
|
|
23
|
+
onChange: onChangeProp,
|
|
24
|
+
minRows = 3,
|
|
25
|
+
maxRows = 8,
|
|
26
|
+
variant = "borderless",
|
|
27
|
+
invalid,
|
|
28
|
+
disabled,
|
|
29
|
+
size,
|
|
30
|
+
className,
|
|
31
|
+
...props
|
|
32
|
+
}, ref) => {
|
|
33
|
+
const [value, onChange] = useControllableState(valueProp, defaultValue, onChangeProp);
|
|
34
|
+
const textareaRef = useRef(null);
|
|
35
|
+
const box = useFieldBox({ variant, invalid, disabled, size });
|
|
36
|
+
const resize = useCallback(() => {
|
|
37
|
+
const el = textareaRef.current;
|
|
38
|
+
if (!el)
|
|
39
|
+
return;
|
|
40
|
+
el.style.height = "auto";
|
|
41
|
+
const lineHeight = Number.parseFloat(getComputedStyle(el).lineHeight);
|
|
42
|
+
const max = lineHeight * Math.max(maxRows, minRows);
|
|
43
|
+
el.style.height = `${Math.min(Math.max(el.scrollHeight, lineHeight * minRows), max)}px`;
|
|
44
|
+
el.style.overflowY = el.scrollHeight > max ? "auto" : "hidden";
|
|
45
|
+
}, [minRows, maxRows]);
|
|
46
|
+
useLayoutEffect(resize, [resize, value, box.size.variant]);
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
const el = textareaRef.current;
|
|
49
|
+
if (!el)
|
|
50
|
+
return;
|
|
51
|
+
let lastWidth = el.offsetWidth;
|
|
52
|
+
const observer = new ResizeObserver(() => {
|
|
53
|
+
if (el.offsetWidth === lastWidth)
|
|
54
|
+
return;
|
|
55
|
+
lastWidth = el.offsetWidth;
|
|
56
|
+
resize();
|
|
57
|
+
});
|
|
58
|
+
observer.observe(el);
|
|
59
|
+
return () => observer.disconnect();
|
|
60
|
+
}, [resize]);
|
|
61
|
+
return /* @__PURE__ */ jsx("div", {
|
|
62
|
+
onMouseDown: focusControlOnPress(textareaRef),
|
|
63
|
+
...box.props,
|
|
64
|
+
className: cn2(box.props.className, "flex", PADDING_Y[box.size.variant], className),
|
|
65
|
+
children: /* @__PURE__ */ jsx(Field.Control, {
|
|
66
|
+
ref: (node) => {
|
|
67
|
+
const textarea = node;
|
|
68
|
+
textareaRef.current = textarea;
|
|
69
|
+
if (typeof ref === "function")
|
|
70
|
+
ref(textarea);
|
|
71
|
+
else if (ref)
|
|
72
|
+
ref.current = textarea;
|
|
73
|
+
},
|
|
74
|
+
render: /* @__PURE__ */ jsx("textarea", {
|
|
75
|
+
rows: minRows,
|
|
76
|
+
...props
|
|
77
|
+
}),
|
|
78
|
+
value,
|
|
79
|
+
onChange: (e) => onChange(e.target.value),
|
|
80
|
+
disabled,
|
|
81
|
+
"aria-invalid": invalid || undefined,
|
|
82
|
+
className: cn2("block w-full resize-none rounded-none bg-transparent text-foreground placeholder:text-muted-foreground outline-none font-[inherit]", box.size.text, "weight-normal")
|
|
83
|
+
})
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
Textarea2.displayName = "Textarea";
|
|
87
|
+
var textarea_default = Textarea2;
|
|
88
|
+
|
|
89
|
+
export { Textarea2, textarea_default };
|
|
@@ -1,16 +1,23 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
} from "./components-
|
|
2
|
+
shapeMap,
|
|
3
|
+
useShape
|
|
4
|
+
} from "./components-cv16mryv.js";
|
|
5
|
+
import {
|
|
6
|
+
useSize2
|
|
7
|
+
} from "./components-0sn7ypjw.js";
|
|
8
|
+
import {
|
|
9
|
+
cn2
|
|
10
|
+
} from "./components-ezxhrmer.js";
|
|
11
|
+
import {
|
|
12
|
+
fieldIconClasses,
|
|
13
|
+
useFieldBox
|
|
14
|
+
} from "./components-3myrw7ne.js";
|
|
5
15
|
import {
|
|
6
16
|
opensInPlace,
|
|
7
17
|
inPlaceOffset,
|
|
8
18
|
useMorphOrigin,
|
|
9
19
|
useMorph
|
|
10
20
|
} from "./components-hqeq3w9q.js";
|
|
11
|
-
import {
|
|
12
|
-
cn2
|
|
13
|
-
} from "./components-ezxhrmer.js";
|
|
14
21
|
import {
|
|
15
22
|
FluidHoverHighlight2
|
|
16
23
|
} from "./components-kvr7f9hy.js";
|
|
@@ -20,13 +27,6 @@ import {
|
|
|
20
27
|
import {
|
|
21
28
|
MorphSurface
|
|
22
29
|
} from "./components-0q0sqfh4.js";
|
|
23
|
-
import {
|
|
24
|
-
shapeMap,
|
|
25
|
-
useShape
|
|
26
|
-
} from "./components-cv16mryv.js";
|
|
27
|
-
import {
|
|
28
|
-
useSize2
|
|
29
|
-
} from "./components-0sn7ypjw.js";
|
|
30
30
|
import {
|
|
31
31
|
SURFACE_BG,
|
|
32
32
|
SURFACE_SHADOW,
|
|
@@ -279,9 +279,8 @@ function FieldControls({ clearable, compact, iconSize }) {
|
|
|
279
279
|
]
|
|
280
280
|
});
|
|
281
281
|
}
|
|
282
|
-
var ComboboxInput2 = forwardRef(({ className, variant, icon: Icon, placeholder = "Search…", error, clearable = false, size, ...props }, ref) => {
|
|
283
|
-
const
|
|
284
|
-
const sizeClasses = useSize2(size);
|
|
282
|
+
var ComboboxInput2 = forwardRef(({ className, variant = "bordered", icon: Icon, placeholder = "Search…", error, clearable = false, size, ...props }, ref) => {
|
|
283
|
+
const { size: sizeClasses, props: boxProps } = useFieldBox({ variant, invalid: !!error, size });
|
|
285
284
|
const compact = sizeClasses.variant === "compact";
|
|
286
285
|
const { anchorRef } = useComboboxContext();
|
|
287
286
|
return /* @__PURE__ */ jsxs("div", {
|
|
@@ -289,8 +288,8 @@ var ComboboxInput2 = forwardRef(({ className, variant, icon: Icon, placeholder =
|
|
|
289
288
|
children: [
|
|
290
289
|
/* @__PURE__ */ jsxs(ComboboxPrimitive.InputGroup, {
|
|
291
290
|
ref: anchorRef,
|
|
292
|
-
|
|
293
|
-
className: cn2(
|
|
291
|
+
...boxProps,
|
|
292
|
+
className: cn2(boxProps.className, "flex items-center", sizeClasses.control, sizeClasses.gap, compact ? "min-w-[128px]" : "min-w-[160px]", className),
|
|
294
293
|
children: [
|
|
295
294
|
Icon && /* @__PURE__ */ jsx(Icon, {
|
|
296
295
|
size: sizeClasses.icon,
|
|
@@ -345,12 +344,12 @@ function useChipRowHeight(padY) {
|
|
|
345
344
|
}, [height]);
|
|
346
345
|
return { ref, height };
|
|
347
346
|
}
|
|
348
|
-
var ComboboxChips2 = forwardRef(({ className, variant, icon: Icon, placeholder = "Search…", error, clearable = false, size, ...props }, ref) => {
|
|
347
|
+
var ComboboxChips2 = forwardRef(({ className, variant = "bordered", icon: Icon, placeholder = "Search…", error, clearable = false, size, ...props }, ref) => {
|
|
349
348
|
const XIcon = useIcon("x");
|
|
350
349
|
const shape = useShape();
|
|
351
|
-
const sizeClasses = useSize2(size);
|
|
352
|
-
const compact = sizeClasses.variant === "compact";
|
|
353
350
|
const { anchorRef, open, disabled, inputValue, values } = useComboboxContext();
|
|
351
|
+
const { size: sizeClasses, props: boxProps } = useFieldBox({ variant, invalid: !!error, disabled, size });
|
|
352
|
+
const compact = sizeClasses.variant === "compact";
|
|
354
353
|
const rowHeight = useChipRowHeight(compact ? 8 : 12);
|
|
355
354
|
return /* @__PURE__ */ jsxs("div", {
|
|
356
355
|
className: "flex flex-col gap-1",
|
|
@@ -360,10 +359,9 @@ var ComboboxChips2 = forwardRef(({ className, variant, icon: Icon, placeholder =
|
|
|
360
359
|
render: /* @__PURE__ */ jsx(motion.div, {
|
|
361
360
|
style: { height: rowHeight.height }
|
|
362
361
|
}),
|
|
363
|
-
|
|
364
|
-
"data-invalid": !!error || undefined,
|
|
362
|
+
...boxProps,
|
|
365
363
|
"data-popup-open": open || undefined,
|
|
366
|
-
className: cn2(
|
|
364
|
+
className: cn2(boxProps.className, "flex items-center", "transition-[color,background-color,border-radius,box-shadow,opacity]", "!items-start", compact ? "min-h-7 py-1" : "min-h-9 py-1.5", sizeClasses.gap, compact ? "min-w-[128px]" : "min-w-[160px]", className),
|
|
367
365
|
children: [
|
|
368
366
|
Icon && /* @__PURE__ */ jsx("span", {
|
|
369
367
|
className: cn2("flex shrink-0 items-center", compact ? "h-5" : "h-6"),
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
import {
|
|
14
14
|
PickerShell,
|
|
15
15
|
PickerInput
|
|
16
|
-
} from "./components-
|
|
16
|
+
} from "./components-qtqxgfrb.js";
|
|
17
17
|
import {
|
|
18
18
|
pad,
|
|
19
19
|
TimeColumns
|
|
@@ -37,6 +37,7 @@ function TimePicker2({
|
|
|
37
37
|
locale = defaultLocale,
|
|
38
38
|
placeholder,
|
|
39
39
|
disabled,
|
|
40
|
+
variant,
|
|
40
41
|
invalid,
|
|
41
42
|
size,
|
|
42
43
|
open: openProp,
|
|
@@ -69,6 +70,7 @@ function TimePicker2({
|
|
|
69
70
|
open,
|
|
70
71
|
onOpenChange: setOpen,
|
|
71
72
|
size,
|
|
73
|
+
variant,
|
|
72
74
|
invalid,
|
|
73
75
|
disabled,
|
|
74
76
|
icon: "clock",
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
import {
|
|
14
14
|
PickerShell,
|
|
15
15
|
PickerInput
|
|
16
|
-
} from "./components-
|
|
16
|
+
} from "./components-qtqxgfrb.js";
|
|
17
17
|
import {
|
|
18
18
|
TimeColumns
|
|
19
19
|
} from "./components-mjthm1kf.js";
|
|
@@ -36,6 +36,7 @@ function DatePicker2({
|
|
|
36
36
|
disabled,
|
|
37
37
|
startMonth,
|
|
38
38
|
endMonth,
|
|
39
|
+
variant,
|
|
39
40
|
invalid,
|
|
40
41
|
size,
|
|
41
42
|
open: openProp,
|
|
@@ -99,6 +100,7 @@ function DatePicker2({
|
|
|
99
100
|
open,
|
|
100
101
|
onOpenChange: setOpen,
|
|
101
102
|
size,
|
|
103
|
+
variant,
|
|
102
104
|
invalid,
|
|
103
105
|
disabled: off,
|
|
104
106
|
icon: "calendar",
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
import {
|
|
12
12
|
PickerShell,
|
|
13
13
|
PickerInput
|
|
14
|
-
} from "./components-
|
|
14
|
+
} from "./components-qtqxgfrb.js";
|
|
15
15
|
|
|
16
16
|
// components/inputs/date-time/date-range-picker/index.tsx
|
|
17
17
|
import { endOfMonth, format } from "date-fns";
|
|
@@ -27,6 +27,7 @@ function DateRangePicker2({
|
|
|
27
27
|
disabled,
|
|
28
28
|
startMonth,
|
|
29
29
|
endMonth,
|
|
30
|
+
variant,
|
|
30
31
|
invalid,
|
|
31
32
|
size,
|
|
32
33
|
open: openProp,
|
|
@@ -109,6 +110,7 @@ function DateRangePicker2({
|
|
|
109
110
|
open,
|
|
110
111
|
onOpenChange: setOpen,
|
|
111
112
|
size,
|
|
113
|
+
variant,
|
|
112
114
|
invalid,
|
|
113
115
|
disabled: off,
|
|
114
116
|
icon: "calendar",
|
package/dist/styles.css
CHANGED
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
}
|
|
60
60
|
/* layer: theme */
|
|
61
61
|
@layer theme{
|
|
62
|
-
:root, :host { --default-transition-timingFunction: cubic-bezier(0.4, 0, 0.2, 1); --default-transition-duration: 150ms; --spacing: 0.25rem; --ease-DEFAULT: cubic-bezier(0.4, 0, 0.2, 1); --font-sans: 'Inter Variable', ui-sans-serif, system-ui, sans-serif; --radius-
|
|
62
|
+
:root, :host { --default-transition-timingFunction: cubic-bezier(0.4, 0, 0.2, 1); --default-transition-duration: 150ms; --spacing: 0.25rem; --ease-DEFAULT: cubic-bezier(0.4, 0, 0.2, 1); --font-sans: 'Inter Variable', ui-sans-serif, system-ui, sans-serif; --radius-none: 0; --leading-relaxed: 1.625; --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1); --radius-2xl: 1rem; --radius-3xl: 1.5rem; --radius-DEFAULT: 0.25rem; --radius-lg: 0.5rem; --radius-xl: 0.75rem; --leading-none: 1; --ease-out: cubic-bezier(0, 0, 0.2, 1); --radius-sm: 0.25rem; --leading-snug: 1.375; --leading-normal: 1.5; --radius-xs: 0.125rem; --tracking-wide: 0.025em; --radius-md: 0.375rem; --font-mono: ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Consolas, monospace; --leading-tight: 1.25; --default-font-family: var(--font-sans); --default-monoFont-family: var(--font-mono); }
|
|
63
63
|
}
|
|
64
64
|
/* layer: base */
|
|
65
65
|
@layer base{
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@justanarthur/modo-ui",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.4.0",
|
|
5
5
|
"description": "Fluid Functionalism (Base UI flavor, MIT © 2026 Micka Touillaud) ported to UnoCSS: motion springs, fluid hover, a two-step size ladder and an eight-level elevated surface system. Documented with modo.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"keywords": [
|