@jalvin/ui 2.0.15 → 2.0.17
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/dist/checkbox.d.ts +17 -0
- package/dist/checkbox.d.ts.map +1 -0
- package/dist/checkbox.js +43 -0
- package/dist/checkbox.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/surface.d.ts +2 -4
- package/dist/surface.d.ts.map +1 -1
- package/dist/surface.js +4 -4
- package/dist/surface.js.map +1 -1
- package/dist/textarea.d.ts +22 -0
- package/dist/textarea.d.ts.map +1 -0
- package/dist/textarea.js +45 -0
- package/dist/textarea.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Modifier } from "./modifier.js";
|
|
3
|
+
export interface CheckboxProps {
|
|
4
|
+
checked?: boolean;
|
|
5
|
+
onCheckedChange?: (checked: boolean) => void;
|
|
6
|
+
modifier?: Modifier;
|
|
7
|
+
enabled?: boolean;
|
|
8
|
+
label?: string;
|
|
9
|
+
supportingText?: string;
|
|
10
|
+
isError?: boolean;
|
|
11
|
+
onFocus?: () => void;
|
|
12
|
+
onBlur?: () => void;
|
|
13
|
+
autoFocus?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/** Boolean toggle input — analogous to Compose's Checkbox. */
|
|
16
|
+
export declare function Checkbox({ checked, onCheckedChange, modifier, enabled, label, supportingText, isError, onFocus, onBlur, autoFocus, }: CheckboxProps): React.ReactElement;
|
|
17
|
+
//# sourceMappingURL=checkbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../src/checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,8DAA8D;AAC9D,wBAAgB,QAAQ,CAAC,EACvB,OAAe,EACf,eAAe,EACf,QAAQ,EACR,OAAc,EACd,KAAK,EACL,cAAc,EACd,OAAe,EACf,OAAO,EACP,MAAM,EACN,SAAS,GACV,EAAE,aAAa,GAAG,KAAK,CAAC,YAAY,CA6CpC"}
|
package/dist/checkbox.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
/** Boolean toggle input — analogous to Compose's Checkbox. */
|
|
3
|
+
export function Checkbox({ checked = false, onCheckedChange, modifier, enabled = true, label, supportingText, isError = false, onFocus, onBlur, autoFocus, }) {
|
|
4
|
+
const modProps = modifier?.toProps() ?? {};
|
|
5
|
+
const input = React.createElement("input", {
|
|
6
|
+
type: "checkbox",
|
|
7
|
+
checked,
|
|
8
|
+
disabled: !enabled,
|
|
9
|
+
onChange: (e) => onCheckedChange?.(e.target.checked),
|
|
10
|
+
onFocus,
|
|
11
|
+
onBlur,
|
|
12
|
+
autoFocus,
|
|
13
|
+
style: {
|
|
14
|
+
margin: 0,
|
|
15
|
+
width: "1rem",
|
|
16
|
+
height: "1rem",
|
|
17
|
+
accentColor: isError ? "#b00020" : "#2563eb",
|
|
18
|
+
cursor: enabled ? "pointer" : "not-allowed",
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
const content = React.createElement("div", {
|
|
22
|
+
style: {
|
|
23
|
+
display: "flex",
|
|
24
|
+
flexDirection: "column",
|
|
25
|
+
gap: supportingText ? "2px" : "0",
|
|
26
|
+
},
|
|
27
|
+
}, label && React.createElement("span", {
|
|
28
|
+
style: { fontSize: "0.95rem", color: isError ? "#b00020" : "#1c1c1c" },
|
|
29
|
+
}, label), supportingText && React.createElement("span", {
|
|
30
|
+
style: { fontSize: "0.75rem", color: isError ? "#b00020" : "#5c5c5c" },
|
|
31
|
+
}, supportingText));
|
|
32
|
+
return React.createElement("label", {
|
|
33
|
+
...modProps,
|
|
34
|
+
style: {
|
|
35
|
+
display: "inline-flex",
|
|
36
|
+
alignItems: supportingText ? "flex-start" : "center",
|
|
37
|
+
gap: "8px",
|
|
38
|
+
cursor: enabled ? "pointer" : "not-allowed",
|
|
39
|
+
...modProps.style,
|
|
40
|
+
},
|
|
41
|
+
}, input, content);
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=checkbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkbox.js","sourceRoot":"","sources":["../src/checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAgB1B,8DAA8D;AAC9D,MAAM,UAAU,QAAQ,CAAC,EACvB,OAAO,GAAG,KAAK,EACf,eAAe,EACf,QAAQ,EACR,OAAO,GAAG,IAAI,EACd,KAAK,EACL,cAAc,EACd,OAAO,GAAG,KAAK,EACf,OAAO,EACP,MAAM,EACN,SAAS,GACK;IACd,MAAM,QAAQ,GAAG,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAE3C,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE;QACzC,IAAI,EAAE,UAAU;QAChB,OAAO;QACP,QAAQ,EAAE,CAAC,OAAO;QAClB,QAAQ,EAAE,CAAC,CAAsC,EAAE,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QACzF,OAAO;QACP,MAAM;QACN,SAAS;QACT,KAAK,EAAE;YACL,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,MAAM;YACd,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;YAC5C,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa;SAC5C;KACF,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE;QACzC,KAAK,EAAE;YACL,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,QAAQ;YACvB,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;SAClC;KACF,EACC,KAAK,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;QACnC,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE;KACvE,EAAE,KAAK,CAAC,EACT,cAAc,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;QAC5C,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE;KACvE,EAAE,cAAc,CAAC,CACnB,CAAC;IAEF,OAAO,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE;QAClC,GAAG,QAAQ;QACX,KAAK,EAAE;YACL,OAAO,EAAE,aAAa;YACtB,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ;YACpD,GAAG,EAAE,KAAK;YACV,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa;YAC3C,GAAG,QAAQ,CAAC,KAAK;SAClB;KACF,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AACrB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,8 +8,14 @@ export { Button, IconButton } from "./button.js";
|
|
|
8
8
|
export type { ButtonProps, ButtonVariant, IconButtonProps } from "./button.js";
|
|
9
9
|
export { Text } from "./text.js";
|
|
10
10
|
export type { TextProps } from "./text.js";
|
|
11
|
+
export { TextStyle } from "./typography.js";
|
|
12
|
+
export type { TextStyleDef, TextStyleKey } from "./typography.js";
|
|
11
13
|
export { Input } from "./input.js";
|
|
12
14
|
export type { InputProps } from "./input.js";
|
|
15
|
+
export { TextArea } from "./textarea.js";
|
|
16
|
+
export type { TextAreaProps } from "./textarea.js";
|
|
17
|
+
export { Checkbox } from "./checkbox.js";
|
|
18
|
+
export type { CheckboxProps } from "./checkbox.js";
|
|
13
19
|
export { Image, AsyncImage } from "./image.js";
|
|
14
20
|
export type { ImageProps, AsyncImageProps } from "./image.js";
|
|
15
21
|
export { Spacer, Divider } from "./spacer.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACxD,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAC/C,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG3F,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG/E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACxD,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAC/C,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG3F,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG/E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGlE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGnD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC/C,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG9D,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC9C,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG7D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtD,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -13,8 +13,11 @@ export { Column, Row, Box } from "./layout.js";
|
|
|
13
13
|
export { Button, IconButton } from "./button.js";
|
|
14
14
|
// Text
|
|
15
15
|
export { Text } from "./text.js";
|
|
16
|
+
export { TextStyle } from "./typography.js";
|
|
16
17
|
// Input
|
|
17
18
|
export { Input } from "./input.js";
|
|
19
|
+
export { TextArea } from "./textarea.js";
|
|
20
|
+
export { Checkbox } from "./checkbox.js";
|
|
18
21
|
// Image
|
|
19
22
|
export { Image, AsyncImage } from "./image.js";
|
|
20
23
|
// Spacer / Divider
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,EAAE;AACF,qCAAqC;AACrC,6BAA6B;AAC7B,0BAA0B;AAC1B,6BAA6B;AAC7B,+BAA+B;AAE/B,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGxD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,SAAS;AACT,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAG/C,UAAU;AACV,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGjD,OAAO;AACP,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,EAAE;AACF,qCAAqC;AACrC,6BAA6B;AAC7B,0BAA0B;AAC1B,6BAA6B;AAC7B,+BAA+B;AAE/B,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGxD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,SAAS;AACT,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAG/C,UAAU;AACV,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGjD,OAAO;AACP,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,QAAQ;AACR,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,QAAQ;AACR,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG/C,mBAAmB;AACnB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG9C,qBAAqB;AACrB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/surface.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { Modifier } from "./modifier.js";
|
|
3
3
|
export interface CardProps {
|
|
4
|
-
children?: React.ReactNode;
|
|
5
4
|
modifier?: Modifier;
|
|
6
5
|
onClick?: () => void;
|
|
7
6
|
/** Shadow depth 0–3 */
|
|
@@ -9,9 +8,8 @@ export interface CardProps {
|
|
|
9
8
|
outlined?: boolean;
|
|
10
9
|
}
|
|
11
10
|
/** Card container — analogous to Compose's Card / ElevatedCard. */
|
|
12
|
-
export declare function Card({
|
|
11
|
+
export declare function Card({ modifier, onClick, elevation, outlined, }: CardProps, children?: React.ReactNode[]): React.ReactElement;
|
|
13
12
|
export interface ScaffoldProps {
|
|
14
|
-
children?: React.ReactNode;
|
|
15
13
|
topBar?: React.ReactNode;
|
|
16
14
|
bottomBar?: React.ReactNode;
|
|
17
15
|
floatingActionButton?: React.ReactNode;
|
|
@@ -21,7 +19,7 @@ export interface ScaffoldProps {
|
|
|
21
19
|
* Full-page layout scaffold — analogous to Compose's Scaffold.
|
|
22
20
|
* Stacks topBar, scrollable content, and bottomBar.
|
|
23
21
|
*/
|
|
24
|
-
export declare function Scaffold({
|
|
22
|
+
export declare function Scaffold({ topBar, bottomBar, floatingActionButton, modifier, }: ScaffoldProps, children?: React.ReactNode[]): React.ReactElement;
|
|
25
23
|
export interface TopBarProps {
|
|
26
24
|
title: string | React.ReactNode;
|
|
27
25
|
navigationIcon?: React.ReactNode;
|
package/dist/surface.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"surface.d.ts","sourceRoot":"","sources":["../src/surface.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"surface.d.ts","sourceRoot":"","sources":["../src/surface.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,uBAAuB;IACvB,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AASD,mEAAmE;AACnE,wBAAgB,IAAI,CAClB,EACE,QAAQ,EACR,OAAO,EACP,SAAa,EACb,QAAgB,GACjB,EAAE,SAAS,EACZ,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,GAC3B,KAAK,CAAC,YAAY,CAiBpB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,oBAAoB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvC,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CACtB,EACE,MAAM,EACN,SAAS,EACT,oBAAoB,EACpB,QAAQ,GACT,EAAE,aAAa,EAChB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,GAC3B,KAAK,CAAC,YAAY,CAsBpB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IAChC,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,sDAAsD;AACtD,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,cAAc,EACd,OAAO,EACP,QAAQ,GACT,EAAE,WAAW,GAAG,KAAK,CAAC,YAAY,CAsBlC"}
|
package/dist/surface.js
CHANGED
|
@@ -6,7 +6,7 @@ const SHADOWS = [
|
|
|
6
6
|
"0 10px 20px rgba(0,0,0,0.12), 0 3px 6px rgba(0,0,0,0.09)",
|
|
7
7
|
];
|
|
8
8
|
/** Card container — analogous to Compose's Card / ElevatedCard. */
|
|
9
|
-
export function Card({
|
|
9
|
+
export function Card({ modifier, onClick, elevation = 1, outlined = false, }, children) {
|
|
10
10
|
const modProps = modifier?.toProps() ?? {};
|
|
11
11
|
return React.createElement("div", {
|
|
12
12
|
...modProps,
|
|
@@ -22,13 +22,13 @@ export function Card({ children, modifier, onClick, elevation = 1, outlined = fa
|
|
|
22
22
|
cursor: onClick ? "pointer" : "default",
|
|
23
23
|
...modProps.style,
|
|
24
24
|
},
|
|
25
|
-
}, children);
|
|
25
|
+
}, ...(children ?? []));
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
28
|
* Full-page layout scaffold — analogous to Compose's Scaffold.
|
|
29
29
|
* Stacks topBar, scrollable content, and bottomBar.
|
|
30
30
|
*/
|
|
31
|
-
export function Scaffold({
|
|
31
|
+
export function Scaffold({ topBar, bottomBar, floatingActionButton, modifier, }, children) {
|
|
32
32
|
const modProps = modifier?.toProps() ?? {};
|
|
33
33
|
return React.createElement("div", {
|
|
34
34
|
...modProps,
|
|
@@ -42,7 +42,7 @@ export function Scaffold({ children, topBar, bottomBar, floatingActionButton, mo
|
|
|
42
42
|
},
|
|
43
43
|
}, topBar, React.createElement("main", {
|
|
44
44
|
style: { flex: 1, overflow: "auto" },
|
|
45
|
-
}, children), bottomBar, floatingActionButton && React.createElement("div", {
|
|
45
|
+
}, ...(children ?? [])), bottomBar, floatingActionButton && React.createElement("div", {
|
|
46
46
|
style: { position: "absolute", bottom: "16px", right: "16px" },
|
|
47
47
|
}, floatingActionButton));
|
|
48
48
|
}
|
package/dist/surface.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"surface.js","sourceRoot":"","sources":["../src/surface.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"surface.js","sourceRoot":"","sources":["../src/surface.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Modifier } from "./modifier.js";
|
|
3
|
+
export interface TextAreaProps {
|
|
4
|
+
value?: string;
|
|
5
|
+
onValueChange?: (value: string) => void;
|
|
6
|
+
placeholder?: string;
|
|
7
|
+
modifier?: Modifier;
|
|
8
|
+
enabled?: boolean;
|
|
9
|
+
readOnly?: boolean;
|
|
10
|
+
label?: string;
|
|
11
|
+
supportingText?: string;
|
|
12
|
+
isError?: boolean;
|
|
13
|
+
maxLength?: number;
|
|
14
|
+
rows?: number;
|
|
15
|
+
onFocus?: () => void;
|
|
16
|
+
onBlur?: () => void;
|
|
17
|
+
onKeyDown?: (e: React.KeyboardEvent<HTMLTextAreaElement>) => void;
|
|
18
|
+
autoFocus?: boolean;
|
|
19
|
+
}
|
|
20
|
+
/** Multiline text input — analogous to Compose's TextField with `singleLine = false`. */
|
|
21
|
+
export declare function TextArea({ value, onValueChange, placeholder, modifier, enabled, readOnly, label, supportingText, isError, maxLength, rows, onFocus, onBlur, onKeyDown, autoFocus, }: TextAreaProps): React.ReactElement;
|
|
22
|
+
//# sourceMappingURL=textarea.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textarea.d.ts","sourceRoot":"","sources":["../src/textarea.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAC;IAClE,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,yFAAyF;AACzF,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,aAAa,EACb,WAAW,EACX,QAAQ,EACR,OAAc,EACd,QAAgB,EAChB,KAAK,EACL,cAAc,EACd,OAAe,EACf,SAAS,EACT,IAAQ,EACR,OAAO,EACP,MAAM,EACN,SAAS,EACT,SAAS,GACV,EAAE,aAAa,GAAG,KAAK,CAAC,YAAY,CAgDpC"}
|
package/dist/textarea.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
/** Multiline text input — analogous to Compose's TextField with `singleLine = false`. */
|
|
3
|
+
export function TextArea({ value, onValueChange, placeholder, modifier, enabled = true, readOnly = false, label, supportingText, isError = false, maxLength, rows = 4, onFocus, onBlur, onKeyDown, autoFocus, }) {
|
|
4
|
+
const modProps = modifier?.toProps() ?? {};
|
|
5
|
+
const borderColor = isError ? "#b00020" : "#c4c4c4";
|
|
6
|
+
const textArea = React.createElement("textarea", {
|
|
7
|
+
value,
|
|
8
|
+
onChange: (e) => onValueChange?.(e.target.value),
|
|
9
|
+
placeholder,
|
|
10
|
+
disabled: !enabled,
|
|
11
|
+
readOnly,
|
|
12
|
+
maxLength,
|
|
13
|
+
rows,
|
|
14
|
+
onFocus,
|
|
15
|
+
onBlur,
|
|
16
|
+
onKeyDown,
|
|
17
|
+
autoFocus,
|
|
18
|
+
style: {
|
|
19
|
+
width: "100%",
|
|
20
|
+
padding: "8px 12px",
|
|
21
|
+
fontSize: "1rem",
|
|
22
|
+
fontFamily: "inherit",
|
|
23
|
+
border: `1px solid ${borderColor}`,
|
|
24
|
+
borderRadius: "4px",
|
|
25
|
+
outline: "none",
|
|
26
|
+
backgroundColor: enabled ? "#fff" : "#f5f5f5",
|
|
27
|
+
color: "#1c1c1c",
|
|
28
|
+
boxSizing: "border-box",
|
|
29
|
+
resize: "vertical",
|
|
30
|
+
lineHeight: 1.4,
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
if (!label && !supportingText) {
|
|
34
|
+
return React.createElement("div", { ...modProps }, textArea);
|
|
35
|
+
}
|
|
36
|
+
return React.createElement("div", {
|
|
37
|
+
...modProps,
|
|
38
|
+
style: { display: "flex", flexDirection: "column", gap: "4px", ...modProps.style },
|
|
39
|
+
}, label && React.createElement("label", {
|
|
40
|
+
style: { fontSize: "0.875rem", fontWeight: 500, color: isError ? "#b00020" : "#5c5c5c" },
|
|
41
|
+
}, label), textArea, supportingText && React.createElement("span", {
|
|
42
|
+
style: { fontSize: "0.75rem", color: isError ? "#b00020" : "#5c5c5c" },
|
|
43
|
+
}, supportingText));
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=textarea.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textarea.js","sourceRoot":"","sources":["../src/textarea.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAqB1B,yFAAyF;AACzF,MAAM,UAAU,QAAQ,CAAC,EACvB,KAAK,EACL,aAAa,EACb,WAAW,EACX,QAAQ,EACR,OAAO,GAAG,IAAI,EACd,QAAQ,GAAG,KAAK,EAChB,KAAK,EACL,cAAc,EACd,OAAO,GAAG,KAAK,EACf,SAAS,EACT,IAAI,GAAG,CAAC,EACR,OAAO,EACP,MAAM,EACN,SAAS,EACT,SAAS,GACK;IACd,MAAM,QAAQ,GAAG,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3C,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAEpD,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,UAAU,EAAE;QAC/C,KAAK;QACL,QAAQ,EAAE,CAAC,CAAyC,EAAE,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QACxF,WAAW;QACX,QAAQ,EAAE,CAAC,OAAO;QAClB,QAAQ;QACR,SAAS;QACT,IAAI;QACJ,OAAO;QACP,MAAM;QACN,SAAS;QACT,SAAS;QACT,KAAK,EAAE;YACL,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,UAAU;YACnB,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,SAAS;YACrB,MAAM,EAAE,aAAa,WAAW,EAAE;YAClC,YAAY,EAAE,KAAK;YACnB,OAAO,EAAE,MAAM;YACf,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YAC7C,KAAK,EAAE,SAAS;YAChB,SAAS,EAAE,YAAqB;YAChC,MAAM,EAAE,UAAmB;YAC3B,UAAU,EAAE,GAAG;SAChB;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,GAAG,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE;QAChC,GAAG,QAAQ;QACX,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE;KACnF,EACC,KAAK,IAAI,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE;QACpC,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE;KACzF,EAAE,KAAK,CAAC,EACT,QAAQ,EACR,cAAc,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;QAC5C,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE;KACvE,EAAE,cAAc,CAAC,CACnB,CAAC;AACJ,CAAC"}
|