@jalvin/ui 1.0.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.
@@ -0,0 +1,84 @@
1
+ import type { CSSProperties } from "react";
2
+ export declare class Modifier {
3
+ readonly _styles: CSSProperties;
4
+ readonly _classNames: ReadonlyArray<string>;
5
+ private constructor();
6
+ static get Default(): Modifier;
7
+ static fillMaxWidth(): Modifier;
8
+ static fillMaxHeight(): Modifier;
9
+ static fillMaxSize(): Modifier;
10
+ static padding(v: number | string): Modifier;
11
+ static margin(v: number | string): Modifier;
12
+ static background(c: string): Modifier;
13
+ static color(c: string): Modifier;
14
+ static width(v: number | string): Modifier;
15
+ static height(v: number | string): Modifier;
16
+ static size(v: number): Modifier;
17
+ static className(name: string): Modifier;
18
+ static border(v: string): Modifier;
19
+ static borderRadius(v: number | string): Modifier;
20
+ static opacity(v: number): Modifier;
21
+ static cursor(v: string): Modifier;
22
+ static zIndex(v: number): Modifier;
23
+ static overflow(v: "visible" | "hidden" | "scroll" | "auto"): Modifier;
24
+ private with;
25
+ fillMaxWidth(): Modifier;
26
+ fillMaxHeight(): Modifier;
27
+ fillMaxSize(): Modifier;
28
+ padding(v: number | string): Modifier;
29
+ paddingHorizontal(v: number): Modifier;
30
+ paddingVertical(v: number): Modifier;
31
+ paddingTop(v: number): Modifier;
32
+ paddingBottom(v: number): Modifier;
33
+ paddingLeft(v: number): Modifier;
34
+ paddingRight(v: number): Modifier;
35
+ margin(v: number | string): Modifier;
36
+ marginHorizontal(v: number): Modifier;
37
+ marginVertical(v: number): Modifier;
38
+ background(c: string): Modifier;
39
+ color(c: string): Modifier;
40
+ border(v: string): Modifier;
41
+ borderRadius(v: number | string): Modifier;
42
+ outline(v: string): Modifier;
43
+ boxShadow(v: string): Modifier;
44
+ width(v: number | string): Modifier;
45
+ height(v: number | string): Modifier;
46
+ size(v: number): Modifier;
47
+ minWidth(v: number | string): Modifier;
48
+ maxWidth(v: number | string): Modifier;
49
+ minHeight(v: number | string): Modifier;
50
+ opacity(v: number): Modifier;
51
+ cursor(v: string): Modifier;
52
+ zIndex(v: number): Modifier;
53
+ overflow(v: "visible" | "hidden" | "scroll" | "auto"): Modifier;
54
+ overflowX(v: "visible" | "hidden" | "scroll" | "auto"): Modifier;
55
+ overflowY(v: "visible" | "hidden" | "scroll" | "auto"): Modifier;
56
+ position(v: "relative" | "absolute" | "fixed" | "sticky" | "static"): Modifier;
57
+ top(v: number | string): Modifier;
58
+ bottom(v: number | string): Modifier;
59
+ left(v: number | string): Modifier;
60
+ right(v: number | string): Modifier;
61
+ flex(v: number): Modifier;
62
+ gap(v: number): Modifier;
63
+ fontSize(v: number | string): Modifier;
64
+ fontWeight(v: number | "bold" | "normal" | "light"): Modifier;
65
+ fontFamily(v: string): Modifier;
66
+ textAlign(v: "left" | "center" | "right" | "justify"): Modifier;
67
+ lineHeight(v: number | string): Modifier;
68
+ letterSpacing(v: number | string): Modifier;
69
+ textDecoration(v: string): Modifier;
70
+ userSelect(v: "none" | "text" | "all" | "auto"): Modifier;
71
+ pointerEvents(v: "none" | "auto"): Modifier;
72
+ transition(v: string): Modifier;
73
+ transform(v: string): Modifier;
74
+ /** Append an additional CSS class name. */
75
+ className(name: string): Modifier;
76
+ /** Merge another Modifier on top of this one. */
77
+ then(other: Modifier): Modifier;
78
+ /** Extract style + className props for spreading onto a React element. */
79
+ toProps(): {
80
+ style?: CSSProperties;
81
+ className?: string;
82
+ };
83
+ }
84
+ //# sourceMappingURL=modifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modifier.d.ts","sourceRoot":"","sources":["../src/modifier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ // ─────────────────────────────────────────────────────────────────────────────
3
+ // Modifier — fluent builder for layout, spacing, and styling
4
+ //
5
+ // Modelled after Jetpack Compose's Modifier. Every method returns a new
6
+ // (immutable) Modifier instance so chains can be safely split across
7
+ // variables.
8
+ //
9
+ // Example:
10
+ // Modifier.fillMaxWidth().padding(16).background(Color.Surface)
11
+ // ─────────────────────────────────────────────────────────────────────────────
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.Modifier = void 0;
14
+ class Modifier {
15
+ _styles;
16
+ _classNames;
17
+ constructor(styles = {}, classNames = []) {
18
+ this._styles = styles;
19
+ this._classNames = classNames;
20
+ }
21
+ // ── Static factory helpers ─────────────────────────────────────────────────
22
+ static get Default() { return new Modifier(); }
23
+ static fillMaxWidth() { return new Modifier().fillMaxWidth(); }
24
+ static fillMaxHeight() { return new Modifier().fillMaxHeight(); }
25
+ static fillMaxSize() { return new Modifier().fillMaxSize(); }
26
+ static padding(v) { return new Modifier().padding(v); }
27
+ static margin(v) { return new Modifier().margin(v); }
28
+ static background(c) { return new Modifier().background(c); }
29
+ static color(c) { return new Modifier().color(c); }
30
+ static width(v) { return new Modifier().width(v); }
31
+ static height(v) { return new Modifier().height(v); }
32
+ static size(v) { return new Modifier().size(v); }
33
+ static className(name) { return new Modifier().className(name); }
34
+ static border(v) { return new Modifier().border(v); }
35
+ static borderRadius(v) { return new Modifier().borderRadius(v); }
36
+ static opacity(v) { return new Modifier().opacity(v); }
37
+ static cursor(v) { return new Modifier().cursor(v); }
38
+ static zIndex(v) { return new Modifier().zIndex(v); }
39
+ static overflow(v) { return new Modifier().overflow(v); }
40
+ // ── Fluent instance methods ────────────────────────────────────────────────
41
+ with(extra) {
42
+ return new Modifier({ ...this._styles, ...extra }, [...this._classNames]);
43
+ }
44
+ fillMaxWidth() { return this.with({ width: "100%" }); }
45
+ fillMaxHeight() { return this.with({ height: "100%" }); }
46
+ fillMaxSize() { return this.with({ width: "100%", height: "100%" }); }
47
+ padding(v) {
48
+ return this.with({ padding: typeof v === "number" ? `${v}px` : v });
49
+ }
50
+ paddingHorizontal(v) {
51
+ return this.with({ paddingLeft: `${v}px`, paddingRight: `${v}px` });
52
+ }
53
+ paddingVertical(v) {
54
+ return this.with({ paddingTop: `${v}px`, paddingBottom: `${v}px` });
55
+ }
56
+ paddingTop(v) { return this.with({ paddingTop: `${v}px` }); }
57
+ paddingBottom(v) { return this.with({ paddingBottom: `${v}px` }); }
58
+ paddingLeft(v) { return this.with({ paddingLeft: `${v}px` }); }
59
+ paddingRight(v) { return this.with({ paddingRight: `${v}px` }); }
60
+ margin(v) {
61
+ return this.with({ margin: typeof v === "number" ? `${v}px` : v });
62
+ }
63
+ marginHorizontal(v) {
64
+ return this.with({ marginLeft: `${v}px`, marginRight: `${v}px` });
65
+ }
66
+ marginVertical(v) {
67
+ return this.with({ marginTop: `${v}px`, marginBottom: `${v}px` });
68
+ }
69
+ background(c) { return this.with({ backgroundColor: c }); }
70
+ color(c) { return this.with({ color: c }); }
71
+ border(v) { return this.with({ border: v }); }
72
+ borderRadius(v) {
73
+ return this.with({ borderRadius: typeof v === "number" ? `${v}px` : v });
74
+ }
75
+ outline(v) { return this.with({ outline: v }); }
76
+ boxShadow(v) { return this.with({ boxShadow: v }); }
77
+ width(v) {
78
+ return this.with({ width: typeof v === "number" ? `${v}px` : v });
79
+ }
80
+ height(v) {
81
+ return this.with({ height: typeof v === "number" ? `${v}px` : v });
82
+ }
83
+ size(v) {
84
+ return this.with({ width: `${v}px`, height: `${v}px` });
85
+ }
86
+ minWidth(v) {
87
+ return this.with({ minWidth: typeof v === "number" ? `${v}px` : v });
88
+ }
89
+ maxWidth(v) {
90
+ return this.with({ maxWidth: typeof v === "number" ? `${v}px` : v });
91
+ }
92
+ minHeight(v) {
93
+ return this.with({ minHeight: typeof v === "number" ? `${v}px` : v });
94
+ }
95
+ opacity(v) { return this.with({ opacity: v }); }
96
+ cursor(v) { return this.with({ cursor: v }); }
97
+ zIndex(v) { return this.with({ zIndex: v }); }
98
+ overflow(v) {
99
+ return this.with({ overflow: v });
100
+ }
101
+ overflowX(v) {
102
+ return this.with({ overflowX: v });
103
+ }
104
+ overflowY(v) {
105
+ return this.with({ overflowY: v });
106
+ }
107
+ position(v) {
108
+ return this.with({ position: v });
109
+ }
110
+ top(v) { return this.with({ top: typeof v === "number" ? `${v}px` : v }); }
111
+ bottom(v) { return this.with({ bottom: typeof v === "number" ? `${v}px` : v }); }
112
+ left(v) { return this.with({ left: typeof v === "number" ? `${v}px` : v }); }
113
+ right(v) { return this.with({ right: typeof v === "number" ? `${v}px` : v }); }
114
+ flex(v) { return this.with({ flex: v }); }
115
+ gap(v) { return this.with({ gap: `${v}px` }); }
116
+ fontSize(v) {
117
+ return this.with({ fontSize: typeof v === "number" ? `${v}px` : v });
118
+ }
119
+ fontWeight(v) {
120
+ return this.with({ fontWeight: v });
121
+ }
122
+ fontFamily(v) { return this.with({ fontFamily: v }); }
123
+ textAlign(v) {
124
+ return this.with({ textAlign: v });
125
+ }
126
+ lineHeight(v) {
127
+ return this.with({ lineHeight: typeof v === "number" ? `${v}px` : v });
128
+ }
129
+ letterSpacing(v) {
130
+ return this.with({ letterSpacing: typeof v === "number" ? `${v}px` : v });
131
+ }
132
+ textDecoration(v) { return this.with({ textDecoration: v }); }
133
+ userSelect(v) {
134
+ return this.with({ userSelect: v });
135
+ }
136
+ pointerEvents(v) {
137
+ return this.with({ pointerEvents: v });
138
+ }
139
+ transition(v) { return this.with({ transition: v }); }
140
+ transform(v) { return this.with({ transform: v }); }
141
+ /** Append an additional CSS class name. */
142
+ className(name) {
143
+ return new Modifier(this._styles, [...this._classNames, name]);
144
+ }
145
+ /** Merge another Modifier on top of this one. */
146
+ then(other) {
147
+ return new Modifier({ ...this._styles, ...other._styles }, [...this._classNames, ...other._classNames]);
148
+ }
149
+ /** Extract style + className props for spreading onto a React element. */
150
+ toProps() {
151
+ const hasStyles = Object.keys(this._styles).length > 0;
152
+ const hasClasses = this._classNames.length > 0;
153
+ return {
154
+ style: hasStyles ? this._styles : undefined,
155
+ className: hasClasses ? this._classNames.join(" ") : undefined,
156
+ };
157
+ }
158
+ }
159
+ exports.Modifier = Modifier;
160
+ //# sourceMappingURL=modifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modifier.js","sourceRoot":"","sources":["../src/modifier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import React from "react";
2
+ import { Modifier } from "./modifier.js";
3
+ export interface SpacerProps {
4
+ /** Fixed width in pixels (horizontal spacer) */
5
+ width?: number;
6
+ /** Fixed height in pixels (vertical spacer) */
7
+ height?: number;
8
+ /** flex: 1 — takes all remaining space */
9
+ weight?: number;
10
+ modifier?: Modifier;
11
+ }
12
+ /** Flexible or fixed-size spacer — analogous to Compose's Spacer. */
13
+ export declare function Spacer({ width, height, weight, modifier }: SpacerProps): React.ReactElement;
14
+ export interface DividerProps {
15
+ modifier?: Modifier;
16
+ color?: string;
17
+ thickness?: number;
18
+ /** "horizontal" (default) or "vertical" */
19
+ orientation?: "horizontal" | "vertical";
20
+ }
21
+ /** Thin line divider — analogous to Compose's Divider / VerticalDivider. */
22
+ export declare function Divider({ modifier, color, thickness, orientation, }: DividerProps): React.ReactElement;
23
+ //# sourceMappingURL=spacer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spacer.d.ts","sourceRoot":"","sources":["../src/spacer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,WAAW,WAAW;IAC1B,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,qEAAqE;AACrE,wBAAgB,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,WAAW,GAAG,KAAK,CAAC,YAAY,CAY3F;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;CACzC;AAED,4EAA4E;AAC5E,wBAAgB,OAAO,CAAC,EACtB,QAAQ,EACR,KAAiB,EACjB,SAAa,EACb,WAA0B,GAC3B,EAAE,YAAY,GAAG,KAAK,CAAC,YAAY,CAcnC"}
package/dist/spacer.js ADDED
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Spacer = Spacer;
7
+ exports.Divider = Divider;
8
+ const react_1 = __importDefault(require("react"));
9
+ /** Flexible or fixed-size spacer — analogous to Compose's Spacer. */
10
+ function Spacer({ width, height, weight, modifier }) {
11
+ const modProps = modifier?.toProps() ?? {};
12
+ return react_1.default.createElement("div", {
13
+ ...modProps,
14
+ style: {
15
+ flex: weight !== undefined ? weight : undefined,
16
+ width: width !== undefined ? `${width}px` : (weight !== undefined ? undefined : "0"),
17
+ height: height !== undefined ? `${height}px` : (weight !== undefined ? undefined : "0"),
18
+ flexShrink: 0,
19
+ ...modProps.style,
20
+ },
21
+ });
22
+ }
23
+ /** Thin line divider — analogous to Compose's Divider / VerticalDivider. */
24
+ function Divider({ modifier, color = "#c4c4c4", thickness = 1, orientation = "horizontal", }) {
25
+ const modProps = modifier?.toProps() ?? {};
26
+ const isVertical = orientation === "vertical";
27
+ return react_1.default.createElement("div", {
28
+ ...modProps,
29
+ role: "separator",
30
+ style: {
31
+ width: isVertical ? `${thickness}px` : "100%",
32
+ height: isVertical ? "100%" : `${thickness}px`,
33
+ backgroundColor: color,
34
+ flexShrink: 0,
35
+ ...modProps.style,
36
+ },
37
+ });
38
+ }
39
+ //# sourceMappingURL=spacer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spacer.js","sourceRoot":"","sources":["../src/spacer.tsx"],"names":[],"mappings":";;;;;AAcA,wBAYC;AAWD,0BAmBC;AAxDD,kDAA0B;AAa1B,qEAAqE;AACrE,SAAgB,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAe;IACrE,MAAM,QAAQ,GAAG,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3C,OAAO,eAAK,CAAC,aAAa,CAAC,KAAK,EAAE;QAChC,GAAG,QAAQ;QACX,KAAK,EAAE;YACL,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YAC/C,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;YACpF,MAAM,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;YACvF,UAAU,EAAE,CAAC;YACb,GAAG,QAAQ,CAAC,KAAK;SAClB;KACF,CAAC,CAAC;AACL,CAAC;AAUD,4EAA4E;AAC5E,SAAgB,OAAO,CAAC,EACtB,QAAQ,EACR,KAAK,GAAG,SAAS,EACjB,SAAS,GAAG,CAAC,EACb,WAAW,GAAG,YAAY,GACb;IACb,MAAM,QAAQ,GAAG,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3C,MAAM,UAAU,GAAG,WAAW,KAAK,UAAU,CAAC;IAC9C,OAAO,eAAK,CAAC,aAAa,CAAC,KAAK,EAAE;QAChC,GAAG,QAAQ;QACX,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE;YACL,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC,MAAM;YAC7C,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI;YAC9C,eAAe,EAAE,KAAK;YACtB,UAAU,EAAE,CAAC;YACb,GAAG,QAAQ,CAAC,KAAK;SAClB;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,33 @@
1
+ import React from "react";
2
+ import { Modifier } from "./modifier.js";
3
+ export interface CardProps {
4
+ children?: React.ReactNode;
5
+ modifier?: Modifier;
6
+ onClick?: () => void;
7
+ /** Shadow depth 0–3 */
8
+ elevation?: 0 | 1 | 2 | 3;
9
+ outlined?: boolean;
10
+ }
11
+ /** Card container — analogous to Compose's Card / ElevatedCard. */
12
+ export declare function Card({ children, modifier, onClick, elevation, outlined, }: CardProps): React.ReactElement;
13
+ export interface ScaffoldProps {
14
+ children?: React.ReactNode;
15
+ topBar?: React.ReactNode;
16
+ bottomBar?: React.ReactNode;
17
+ floatingActionButton?: React.ReactNode;
18
+ modifier?: Modifier;
19
+ }
20
+ /**
21
+ * Full-page layout scaffold — analogous to Compose's Scaffold.
22
+ * Stacks topBar, scrollable content, and bottomBar.
23
+ */
24
+ export declare function Scaffold({ children, topBar, bottomBar, floatingActionButton, modifier, }: ScaffoldProps): React.ReactElement;
25
+ export interface TopBarProps {
26
+ title: string | React.ReactNode;
27
+ navigationIcon?: React.ReactNode;
28
+ actions?: React.ReactNode;
29
+ modifier?: Modifier;
30
+ }
31
+ /** App top bar — analogous to Compose's TopAppBar. */
32
+ export declare function TopBar({ title, navigationIcon, actions, modifier, }: TopBarProps): React.ReactElement;
33
+ //# sourceMappingURL=surface.d.ts.map
@@ -0,0 +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,KAAK,CAAC,SAAS,CAAC;IAC3B,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,CAAC,EACnB,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,SAAa,EACb,QAAgB,GACjB,EAAE,SAAS,GAAG,KAAK,CAAC,YAAY,CAiBhC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,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,CAAC,EACvB,QAAQ,EACR,MAAM,EACN,SAAS,EACT,oBAAoB,EACpB,QAAQ,GACT,EAAE,aAAa,GAAG,KAAK,CAAC,YAAY,CAsBpC;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"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Card = Card;
7
+ exports.Scaffold = Scaffold;
8
+ exports.TopBar = TopBar;
9
+ const react_1 = __importDefault(require("react"));
10
+ const SHADOWS = [
11
+ "none",
12
+ "0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.08)",
13
+ "0 3px 6px rgba(0,0,0,0.12), 0 2px 4px rgba(0,0,0,0.09)",
14
+ "0 10px 20px rgba(0,0,0,0.12), 0 3px 6px rgba(0,0,0,0.09)",
15
+ ];
16
+ /** Card container — analogous to Compose's Card / ElevatedCard. */
17
+ function Card({ children, modifier, onClick, elevation = 1, outlined = false, }) {
18
+ const modProps = modifier?.toProps() ?? {};
19
+ return react_1.default.createElement("div", {
20
+ ...modProps,
21
+ onClick,
22
+ role: onClick ? "button" : undefined,
23
+ tabIndex: onClick ? 0 : undefined,
24
+ style: {
25
+ backgroundColor: "#ffffff",
26
+ borderRadius: "12px",
27
+ padding: "16px",
28
+ boxShadow: SHADOWS[elevation],
29
+ border: outlined ? "1px solid #e7e7e7" : "none",
30
+ cursor: onClick ? "pointer" : "default",
31
+ ...modProps.style,
32
+ },
33
+ }, children);
34
+ }
35
+ /**
36
+ * Full-page layout scaffold — analogous to Compose's Scaffold.
37
+ * Stacks topBar, scrollable content, and bottomBar.
38
+ */
39
+ function Scaffold({ children, topBar, bottomBar, floatingActionButton, modifier, }) {
40
+ const modProps = modifier?.toProps() ?? {};
41
+ return react_1.default.createElement("div", {
42
+ ...modProps,
43
+ style: {
44
+ display: "flex",
45
+ flexDirection: "column",
46
+ width: "100%",
47
+ height: "100%",
48
+ position: "relative",
49
+ ...modProps.style,
50
+ },
51
+ }, topBar, react_1.default.createElement("main", {
52
+ style: { flex: 1, overflow: "auto" },
53
+ }, children), bottomBar, floatingActionButton && react_1.default.createElement("div", {
54
+ style: { position: "absolute", bottom: "16px", right: "16px" },
55
+ }, floatingActionButton));
56
+ }
57
+ /** App top bar — analogous to Compose's TopAppBar. */
58
+ function TopBar({ title, navigationIcon, actions, modifier, }) {
59
+ const modProps = modifier?.toProps() ?? {};
60
+ return react_1.default.createElement("header", {
61
+ ...modProps,
62
+ style: {
63
+ display: "flex",
64
+ alignItems: "center",
65
+ gap: "8px",
66
+ padding: "0 16px",
67
+ height: "56px",
68
+ backgroundColor: "#ffffff",
69
+ boxShadow: "0 1px 3px rgba(0,0,0,0.12)",
70
+ flexShrink: 0,
71
+ ...modProps.style,
72
+ },
73
+ }, navigationIcon, react_1.default.createElement("span", {
74
+ style: { flex: 1, fontSize: "1.375rem", fontWeight: 500 },
75
+ }, title), actions);
76
+ }
77
+ //# sourceMappingURL=surface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"surface.js","sourceRoot":"","sources":["../src/surface.tsx"],"names":[],"mappings":"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"}
package/dist/text.d.ts ADDED
@@ -0,0 +1,18 @@
1
+ import React from "react";
2
+ import { Modifier } from "./modifier.js";
3
+ import { type TextStyleDef } from "./typography.js";
4
+ import type { CSSProperties } from "react";
5
+ export interface TextProps {
6
+ children?: React.ReactNode;
7
+ /** Shorthand for text content when no JSX children needed */
8
+ text?: string;
9
+ modifier?: Modifier;
10
+ style?: TextStyleDef | CSSProperties;
11
+ color?: string;
12
+ maxLines?: number;
13
+ /** HTML tag to render — defaults to "span" */
14
+ as?: "p" | "span" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "label" | "code" | "pre" | "strong" | "em";
15
+ }
16
+ /** Text element — analogous to Compose's Text. */
17
+ export declare function Text({ children, text, modifier, style, color, maxLines, as: Tag, }: TextProps): React.ReactElement;
18
+ //# sourceMappingURL=text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../src/text.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,KAAK,YAAY,EAAkB,MAAM,iBAAiB,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,EAAE,CAAC,EAAE,GAAG,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC;CAC1G;AAED,kDAAkD;AAClD,wBAAgB,IAAI,CAAC,EACnB,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,KAAK,EACL,QAAQ,EACR,EAAE,EAAE,GAAY,GACjB,EAAE,SAAS,GAAG,KAAK,CAAC,YAAY,CAoBhC"}
package/dist/text.js ADDED
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Text = Text;
7
+ const react_1 = __importDefault(require("react"));
8
+ const typography_js_1 = require("./typography.js");
9
+ /** Text element — analogous to Compose's Text. */
10
+ function Text({ children, text, modifier, style, color, maxLines, as: Tag = "span", }) {
11
+ const modProps = modifier?.toProps() ?? {};
12
+ const textStyle = style ? (0, typography_js_1.textStyleToCSS)(style) : {};
13
+ const clampStyle = maxLines !== undefined ? {
14
+ display: "-webkit-box",
15
+ WebkitLineClamp: maxLines,
16
+ WebkitBoxOrient: "vertical",
17
+ overflow: "hidden",
18
+ } : {};
19
+ return react_1.default.createElement(Tag, {
20
+ ...modProps,
21
+ style: {
22
+ ...textStyle,
23
+ color: color ?? textStyle.color,
24
+ ...clampStyle,
25
+ ...modProps.style,
26
+ },
27
+ }, text ?? children);
28
+ }
29
+ //# sourceMappingURL=text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../src/text.tsx"],"names":[],"mappings":";;;;;AAkBA,oBA4BC;AA9CD,kDAA0B;AAE1B,mDAAoE;AAepE,kDAAkD;AAClD,SAAgB,IAAI,CAAC,EACnB,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,KAAK,EACL,QAAQ,EACR,EAAE,EAAE,GAAG,GAAG,MAAM,GACN;IACV,MAAM,QAAQ,GAAG,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3C,MAAM,SAAS,GAAkB,KAAK,CAAC,CAAC,CAAC,IAAA,8BAAc,EAAC,KAAqB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEpF,MAAM,UAAU,GAAkB,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC;QACzD,OAAO,EAAE,aAAa;QACtB,eAAe,EAAE,QAAQ;QACzB,eAAe,EAAE,UAAU;QAC3B,QAAQ,EAAE,QAAQ;KACnB,CAAC,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,eAAK,CAAC,aAAa,CAAC,GAAG,EAAE;QAC9B,GAAG,QAAQ;QACX,KAAK,EAAE;YACL,GAAG,SAAS;YACZ,KAAK,EAAE,KAAK,IAAI,SAAS,CAAC,KAAK;YAC/B,GAAG,UAAU;YACb,GAAG,QAAQ,CAAC,KAAK;SAClB;KACF,EAAE,IAAI,IAAI,QAAQ,CAAC,CAAC;AACvB,CAAC"}