@pineui/react 0.1.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.
Files changed (37) hide show
  1. package/LICENSE +168 -0
  2. package/README.md +144 -0
  3. package/dist/PineUI.d.ts +10 -0
  4. package/dist/components/AppBar.d.ts +12 -0
  5. package/dist/components/Avatar.d.ts +11 -0
  6. package/dist/components/Badge.d.ts +9 -0
  7. package/dist/components/BottomNav.d.ts +17 -0
  8. package/dist/components/Button.d.ts +16 -0
  9. package/dist/components/Card.d.ts +13 -0
  10. package/dist/components/Chip.d.ts +12 -0
  11. package/dist/components/Collection.d.ts +21 -0
  12. package/dist/components/ConditionalRender.d.ts +14 -0
  13. package/dist/components/Divider.d.ts +8 -0
  14. package/dist/components/ErrorBoundary.d.ts +17 -0
  15. package/dist/components/Grid.d.ts +12 -0
  16. package/dist/components/Icon.d.ts +12 -0
  17. package/dist/components/Image.d.ts +15 -0
  18. package/dist/components/Input.d.ts +17 -0
  19. package/dist/components/Layout.d.ts +29 -0
  20. package/dist/components/Modal.d.ts +24 -0
  21. package/dist/components/Progress.d.ts +10 -0
  22. package/dist/components/Scaffold.d.ts +13 -0
  23. package/dist/components/Snackbar.d.ts +17 -0
  24. package/dist/components/Table.d.ts +17 -0
  25. package/dist/components/Tabs.d.ts +17 -0
  26. package/dist/components/Text.d.ts +14 -0
  27. package/dist/components/View.d.ts +12 -0
  28. package/dist/index.d.ts +5 -0
  29. package/dist/loader/imports.d.ts +3 -0
  30. package/dist/pineui.es.js +1117 -0
  31. package/dist/pineui.standalone.js +45 -0
  32. package/dist/pineui.umd.js +14 -0
  33. package/dist/renderer/Renderer.d.ts +9 -0
  34. package/dist/renderer/bindings.d.ts +5 -0
  35. package/dist/style.css +1 -0
  36. package/dist/types.d.ts +65 -0
  37. package/package.json +65 -0
package/LICENSE ADDED
@@ -0,0 +1,168 @@
1
+ Apache License 2.0 with Commons Clause
2
+
3
+ License Agreement
4
+
5
+ PineUI - Server-Driven UI for AI-Native Applications
6
+ Copyright (c) 2026 Luma Ventures Ltda (CNPJ: 21.951.820/0001-39)
7
+
8
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not
9
+ use this file except in compliance with the License. You may obtain a copy
10
+ of the License at
11
+
12
+ http://www.apache.org/licenses/LICENSE-2.0
13
+
14
+ Unless required by applicable law or agreed to in writing, software distributed
15
+ under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
16
+ CONDITIONS OF ANY KIND, either express or implied. See the License for the
17
+ specific language governing permissions and limitations under the License.
18
+
19
+ ---
20
+
21
+ "Commons Clause" License Condition v1.0
22
+
23
+ The Software is provided to you by the Licensor under the License, as defined
24
+ below, subject to the following condition.
25
+
26
+ Without limiting other conditions in the License, the grant of rights under the
27
+ License will not include, and the License does not grant to you, the right to
28
+ Sell the Software.
29
+
30
+ For purposes of the foregoing, "Sell" means practicing any or all of the rights
31
+ granted to you under the License to provide to third parties, for a fee or
32
+ other consideration (including without limitation fees for hosting or
33
+ consulting/support services related to the Software), a product or service
34
+ whose value derives, entirely or substantially, from the functionality of the
35
+ Software. Any license notice or attribution required by the License must also
36
+ include this Commons Clause License Condition notice.
37
+
38
+ Software: PineUI
39
+
40
+ License: Apache 2.0
41
+
42
+ Licensor: Luma Ventures Ltda
43
+ CNPJ: 21.951.820/0001-39
44
+
45
+ ---
46
+
47
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
48
+
49
+ 1. Definitions.
50
+
51
+ "License" shall mean the terms and conditions for use, reproduction, and
52
+ distribution as defined by Sections 1 through 9 of this document.
53
+
54
+ "Licensor" shall mean the copyright owner or entity authorized by the
55
+ copyright owner that is granting the License.
56
+
57
+ "Legal Entity" shall mean the union of the acting entity and all other
58
+ entities that control, are controlled by, or are under common control with
59
+ that entity. For the purposes of this definition, "control" means (i) the
60
+ power, direct or indirect, to cause the direction or management of such
61
+ entity, whether by contract or otherwise, or (ii) ownership of fifty
62
+ percent (50%) or more of the outstanding shares, or (iii) beneficial
63
+ ownership of such entity.
64
+
65
+ "You" (or "Your") shall mean an individual or Legal Entity exercising
66
+ permissions granted by this License.
67
+
68
+ "Source" form shall mean the preferred form for making modifications,
69
+ including but not limited to software source code, documentation source,
70
+ and configuration files.
71
+
72
+ "Object" form shall mean any form resulting from mechanical transformation
73
+ or translation of a Source form, including but not limited to compiled
74
+ object code, generated documentation, and conversions to other media types.
75
+
76
+ "Work" shall mean the work of authorship, whether in Source or Object form,
77
+ made available under the License, as indicated by a copyright notice that
78
+ is included in or attached to the work.
79
+
80
+ "Derivative Works" shall mean any work, whether in Source or Object form,
81
+ that is based on (or derived from) the Work and for which the editorial
82
+ revisions, annotations, elaborations, or other modifications represent, as
83
+ a whole, an original work of authorship. For the purposes of this License,
84
+ Derivative Works shall not include works that remain separable from, or
85
+ merely link (or bind by name) to the interfaces of, the Work and Derivative
86
+ Works thereof.
87
+
88
+ "Contribution" shall mean any work of authorship, including the original
89
+ version of the Work and any modifications or additions to that Work or
90
+ Derivative Works thereof, that is intentionally submitted to Licensor for
91
+ inclusion in the Work by the copyright owner or by an individual or Legal
92
+ Entity authorized to submit on behalf of the copyright owner.
93
+
94
+ 2. Grant of Copyright License.
95
+
96
+ Subject to the terms and conditions of this License, each Contributor hereby
97
+ grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
98
+ irrevocable copyright license to reproduce, prepare Derivative Works of,
99
+ publicly display, publicly perform, sublicense, and distribute the Work and
100
+ such Derivative Works in Source or Object form.
101
+
102
+ 3. Grant of Patent License.
103
+
104
+ Subject to the terms and conditions of this License, each Contributor hereby
105
+ grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
106
+ irrevocable patent license to make, have made, use, offer to sell, sell,
107
+ import, and otherwise transfer the Work.
108
+
109
+ 4. Redistribution.
110
+
111
+ You may reproduce and distribute copies of the Work or Derivative Works
112
+ thereof in any medium, with or without modifications, and in Source or
113
+ Object form, provided that You meet the following conditions:
114
+
115
+ (a) You must give any other recipients of the Work or Derivative Works a
116
+ copy of this License; and
117
+
118
+ (b) You must cause any modified files to carry prominent notices stating
119
+ that You changed the files; and
120
+
121
+ (c) You must retain, in the Source form of any Derivative Works that You
122
+ distribute, all copyright, patent, trademark, and attribution notices
123
+ from the Source form of the Work; and
124
+
125
+ (d) You must include a copy of this License and the Commons Clause restriction.
126
+
127
+ 5. Submission of Contributions.
128
+
129
+ Unless You explicitly state otherwise, any Contribution intentionally
130
+ submitted for inclusion in the Work by You to the Licensor shall be under
131
+ the terms and conditions of this License, without any additional terms or
132
+ conditions.
133
+
134
+ 6. Trademarks.
135
+
136
+ This License does not grant permission to use the trade names, trademarks,
137
+ service marks, or product names of the Licensor, except as required for
138
+ reasonable and customary use in describing the origin of the Work.
139
+
140
+ 7. Disclaimer of Warranty.
141
+
142
+ Unless required by applicable law or agreed to in writing, Licensor provides
143
+ the Work on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
144
+ either express or implied, including, without limitation, any warranties or
145
+ conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
146
+ PARTICULAR PURPOSE.
147
+
148
+ 8. Limitation of Liability.
149
+
150
+ In no event and under no legal theory shall any Contributor be liable to You
151
+ for damages, including any direct, indirect, special, incidental, or
152
+ consequential damages of any character arising as a result of this License or
153
+ out of the use or inability to use the Work.
154
+
155
+ 9. Accepting Warranty or Additional Liability.
156
+
157
+ While redistributing the Work or Derivative Works thereof, You may choose to
158
+ offer, and charge a fee for, acceptance of support, warranty, indemnity, or
159
+ other liability obligations and/or rights consistent with this License.
160
+ However, in accepting such obligations, You may act only on Your own behalf
161
+ and on Your sole responsibility.
162
+
163
+ ---
164
+
165
+ For commercial licensing inquiries, please contact:
166
+ Luma Ventures Ltda
167
+ CNPJ: 21.951.820/0001-39
168
+ Email: wupsbr@gmail.com
package/README.md ADDED
@@ -0,0 +1,144 @@
1
+ # @pineui/react
2
+
3
+ Server-Driven UI framework for AI-native applications. Build dynamic, multi-platform interfaces from JSON schemas.
4
+
5
+ 🍍 **PineUI** helps you peel through the tough challenges of building dynamic, cross-platform UIs.
6
+
7
+ ## Installation
8
+
9
+ ```bash
10
+ npm install @pineui/react react react-dom
11
+ ```
12
+
13
+ ## Quick Start
14
+
15
+ ```tsx
16
+ import { PineUI } from '@pineui/react';
17
+
18
+ function App() {
19
+ return (
20
+ <PineUI
21
+ schema={{
22
+ schemaVersion: "1.0.0",
23
+ screen: {
24
+ type: "layout.column",
25
+ padding: 16,
26
+ spacing: 16,
27
+ children: [
28
+ {
29
+ type: "text",
30
+ content: "Hello PineUI!",
31
+ style: "titleLarge"
32
+ },
33
+ {
34
+ type: "button.filled",
35
+ label: "Click Me",
36
+ onPress: {
37
+ type: "action.snackbar.show",
38
+ message: "Button clicked!"
39
+ }
40
+ }
41
+ ]
42
+ }
43
+ }}
44
+ />
45
+ );
46
+ }
47
+ ```
48
+
49
+ ## Standalone Usage (CDN)
50
+
51
+ ```html
52
+ <!DOCTYPE html>
53
+ <html>
54
+ <head>
55
+ <link rel="stylesheet" href="https://unpkg.com/@pineui/react@latest/dist/style.css">
56
+ </head>
57
+ <body>
58
+ <div id="app"></div>
59
+
60
+ <script src="https://unpkg.com/@pineui/react@latest/dist/pineui.standalone.js"></script>
61
+ <script>
62
+ PineUI.render({
63
+ target: '#app',
64
+ schema: {
65
+ schemaVersion: "1.0.0",
66
+ screen: {
67
+ type: "text",
68
+ content: "Hello from PineUI!",
69
+ style: "titleLarge"
70
+ }
71
+ }
72
+ });
73
+ </script>
74
+ </body>
75
+ </html>
76
+ ```
77
+
78
+ ## Features
79
+
80
+ - 🚀 **Fast** - 60 FPS guaranteed, ~52KB gzipped
81
+ - 🌍 **Cross-Platform** - Same JSON schema works on Web and Mobile (Flutter coming soon)
82
+ - 🤖 **AI-Friendly** - LLMs can generate valid UIs without specific training
83
+ - 🎨 **Material Design 3** - Beautiful components out of the box
84
+ - 🔄 **Reactive** - Built-in state management with automatic UI updates
85
+ - 📱 **Responsive** - Mobile-first with automatic breakpoints
86
+
87
+ ## Documentation
88
+
89
+ 📖 [Complete Documentation](https://pineui.github.io/PineUI/documentation.html)
90
+
91
+ 🚀 [Live Demos](https://pineui.github.io/PineUI/)
92
+
93
+ ## Example: LLM-Generated UI
94
+
95
+ ```javascript
96
+ // Just describe what you want to an LLM:
97
+ // "Create a course gallery with category filters using PineUI"
98
+
99
+ const schema = {
100
+ schemaVersion: "1.0.0",
101
+ state: { selectedCategory: "All" },
102
+ screen: {
103
+ type: "layout.column",
104
+ children: [
105
+ // ... LLM generates complete UI ...
106
+ ]
107
+ }
108
+ };
109
+
110
+ PineUI.render({ target: '#app', schema });
111
+ ```
112
+
113
+ ## License
114
+
115
+ Apache 2.0 with Commons Clause
116
+
117
+ **You CAN:**
118
+ - ✅ Use PineUI for free in your projects (commercial or non-commercial)
119
+ - ✅ Modify the source code
120
+ - ✅ Distribute copies of PineUI
121
+ - ✅ Use it in proprietary software
122
+
123
+ **You CANNOT:**
124
+ - ❌ Sell PineUI itself as a product or service
125
+ - ❌ Offer hosting or consulting services where the primary value comes from PineUI
126
+
127
+ For commercial licensing: wupsbr@gmail.com
128
+
129
+ ## Creator
130
+
131
+ Created by **David Ruiz (wupsbr)** - CPTO at Ingresse, former Director of Engineering at iFood (R$70B+ GMV), CTO at Paraná Banco, and co-founder of ONOVOLAB.
132
+
133
+ Developed by Luma Ventures Ltda (CNPJ: 21.951.820/0001-39)
134
+
135
+ ## Links
136
+
137
+ - [GitHub Repository](https://github.com/PineUI/PineUI)
138
+ - [Documentation](https://pineui.github.io/PineUI/documentation.html)
139
+ - [Live Demos](https://pineui.github.io/PineUI/)
140
+ - [Issues](https://github.com/PineUI/PineUI/issues)
141
+
142
+ ---
143
+
144
+ 🍍 **Peel through tough UI challenges with PineUI**
@@ -0,0 +1,10 @@
1
+ import { default as React } from 'react';
2
+ import { PineUISchema } from './types';
3
+
4
+ interface PineUIProps {
5
+ schema?: PineUISchema;
6
+ schemaUrl?: string;
7
+ baseUrl?: string;
8
+ }
9
+ export declare const PineUI: React.FC<PineUIProps>;
10
+ export {};
@@ -0,0 +1,12 @@
1
+ import { default as React } from 'react';
2
+ import { ComponentNode, RenderContext } from '../types';
3
+
4
+ interface AppBarProps {
5
+ title?: ComponentNode;
6
+ leading?: ComponentNode;
7
+ actions?: ComponentNode[];
8
+ context?: RenderContext;
9
+ renderer?: React.ComponentType<any>;
10
+ }
11
+ export declare const AppBar: React.FC<AppBarProps>;
12
+ export {};
@@ -0,0 +1,11 @@
1
+ import { default as React } from 'react';
2
+ import { RenderContext, ActionNode } from '../types';
3
+
4
+ interface AvatarProps {
5
+ src: string;
6
+ size?: number;
7
+ onTap?: ActionNode;
8
+ context?: RenderContext;
9
+ }
10
+ export declare const Avatar: React.FC<AvatarProps>;
11
+ export {};
@@ -0,0 +1,9 @@
1
+ import { default as React } from 'react';
2
+
3
+ interface BadgeProps {
4
+ label: string;
5
+ variant?: 'default' | 'success' | 'warning' | 'error' | 'info';
6
+ size?: 'small' | 'medium' | 'large';
7
+ }
8
+ export declare const Badge: React.FC<BadgeProps>;
9
+ export {};
@@ -0,0 +1,17 @@
1
+ import { default as React } from 'react';
2
+ import { RenderContext, ActionNode } from '../types';
3
+
4
+ interface BottomNavItem {
5
+ icon: string;
6
+ label: string;
7
+ destination: string;
8
+ badge?: number;
9
+ }
10
+ interface BottomNavProps {
11
+ items: BottomNavItem[];
12
+ currentIndex: number;
13
+ onItemTap: ActionNode;
14
+ context?: RenderContext;
15
+ }
16
+ export declare const BottomNav: React.FC<BottomNavProps>;
17
+ export {};
@@ -0,0 +1,16 @@
1
+ import { default as React } from 'react';
2
+ import { RenderContext, ActionNode } from '../types';
3
+
4
+ interface ButtonProps {
5
+ type: 'button.filled' | 'button.text' | 'button.icon' | 'button.fab';
6
+ label?: string;
7
+ icon?: string;
8
+ enabled?: boolean;
9
+ loading?: boolean;
10
+ onPress?: ActionNode;
11
+ context?: RenderContext;
12
+ size?: 'small' | 'medium' | 'large';
13
+ color?: string;
14
+ }
15
+ export declare const Button: React.FC<ButtonProps>;
16
+ export {};
@@ -0,0 +1,13 @@
1
+ import { default as React } from 'react';
2
+ import { ComponentNode, RenderContext, ActionNode } from '../types';
3
+
4
+ interface CardProps {
5
+ child: ComponentNode;
6
+ elevation?: number;
7
+ padding?: number;
8
+ onTap?: ActionNode;
9
+ context?: RenderContext;
10
+ renderer?: React.ComponentType<any>;
11
+ }
12
+ export declare const Card: React.FC<CardProps>;
13
+ export {};
@@ -0,0 +1,12 @@
1
+ import { default as React } from 'react';
2
+ import { ActionNode, RenderContext } from '../types';
3
+
4
+ interface ChipProps {
5
+ label: string;
6
+ icon?: string;
7
+ selected?: boolean;
8
+ onPress?: ActionNode;
9
+ context?: RenderContext;
10
+ }
11
+ export declare const Chip: React.FC<ChipProps>;
12
+ export {};
@@ -0,0 +1,21 @@
1
+ import { default as React } from 'react';
2
+ import { ComponentNode, RenderContext, ActionNode } from '../types';
3
+
4
+ interface CollectionProps {
5
+ id: string;
6
+ layout?: 'list' | 'grid' | 'table';
7
+ columns?: number;
8
+ spacing?: number;
9
+ data: ActionNode;
10
+ itemTemplate: ComponentNode;
11
+ loadingState?: ComponentNode;
12
+ emptyState?: ComponentNode;
13
+ errorState?: ComponentNode;
14
+ virtualized?: boolean;
15
+ refreshable?: boolean;
16
+ onRefresh?: ActionNode;
17
+ context?: RenderContext;
18
+ renderer?: React.ComponentType<any>;
19
+ }
20
+ export declare const Collection: React.FC<CollectionProps>;
21
+ export {};
@@ -0,0 +1,14 @@
1
+ import { default as React } from 'react';
2
+ import { ComponentNode, RenderContext } from '../types';
3
+
4
+ interface Condition {
5
+ when: string | boolean;
6
+ render: ComponentNode;
7
+ }
8
+ interface ConditionalRenderProps {
9
+ conditions: Condition[];
10
+ context?: RenderContext;
11
+ renderer?: React.ComponentType<any>;
12
+ }
13
+ export declare const ConditionalRender: React.FC<ConditionalRenderProps>;
14
+ export {};
@@ -0,0 +1,8 @@
1
+ import { default as React } from 'react';
2
+
3
+ interface DividerProps {
4
+ thickness?: number;
5
+ color?: string;
6
+ }
7
+ export declare const Divider: React.FC<DividerProps>;
8
+ export {};
@@ -0,0 +1,17 @@
1
+ import { Component, ErrorInfo, ReactNode } from 'react';
2
+
3
+ interface Props {
4
+ children: ReactNode;
5
+ fallback?: ReactNode;
6
+ }
7
+ interface State {
8
+ hasError: boolean;
9
+ error: Error | null;
10
+ }
11
+ export declare class ErrorBoundary extends Component<Props, State> {
12
+ constructor(props: Props);
13
+ static getDerivedStateFromError(error: Error): State;
14
+ componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
15
+ render(): string | number | boolean | import("react/jsx-runtime").JSX.Element | Iterable<ReactNode> | null | undefined;
16
+ }
17
+ export {};
@@ -0,0 +1,12 @@
1
+ import { default as React } from 'react';
2
+ import { ComponentNode, RenderContext } from '../types';
3
+
4
+ interface GridProps {
5
+ children: ComponentNode[];
6
+ columns?: number;
7
+ spacing?: number;
8
+ context?: RenderContext;
9
+ renderer?: React.ComponentType<any>;
10
+ }
11
+ export declare const Grid: React.FC<GridProps>;
12
+ export {};
@@ -0,0 +1,12 @@
1
+ import { default as React } from 'react';
2
+ import { RenderContext } from '../types';
3
+
4
+ interface IconProps {
5
+ name: string;
6
+ size?: number;
7
+ color?: string;
8
+ visible?: boolean;
9
+ context?: RenderContext;
10
+ }
11
+ export declare const Icon: React.FC<IconProps>;
12
+ export {};
@@ -0,0 +1,15 @@
1
+ import { default as React } from 'react';
2
+ import { RenderContext, ActionNode } from '../types';
3
+
4
+ interface ImageProps {
5
+ src: string;
6
+ thumbnail?: string;
7
+ alt?: string;
8
+ aspectRatio?: number | string;
9
+ borderRadius?: number;
10
+ loading?: 'eager' | 'lazy';
11
+ onTap?: ActionNode;
12
+ context?: RenderContext;
13
+ }
14
+ export declare const Image: React.FC<ImageProps>;
15
+ export {};
@@ -0,0 +1,17 @@
1
+ import { default as React } from 'react';
2
+ import { RenderContext, ActionNode } from '../types';
3
+
4
+ interface InputProps {
5
+ type: 'input.text';
6
+ id?: string;
7
+ placeholder?: string;
8
+ value?: string;
9
+ multiline?: boolean;
10
+ maxLines?: number;
11
+ maxLength?: number;
12
+ autofocus?: boolean;
13
+ onChanged?: ActionNode;
14
+ context?: RenderContext;
15
+ }
16
+ export declare const Input: React.FC<InputProps>;
17
+ export {};
@@ -0,0 +1,29 @@
1
+ import { default as React } from 'react';
2
+ import { ComponentNode, RenderContext, ActionNode } from '../types';
3
+
4
+ interface LayoutProps {
5
+ type: 'layout.column' | 'layout.row';
6
+ children?: ComponentNode[];
7
+ spacing?: number;
8
+ padding?: number;
9
+ mainAxisAlignment?: 'start' | 'center' | 'end' | 'spaceBetween' | 'spaceAround';
10
+ crossAxisAlignment?: 'start' | 'center' | 'end' | 'stretch';
11
+ flex?: number;
12
+ width?: number | string;
13
+ height?: number | string;
14
+ maxWidth?: number | string;
15
+ overflow?: 'visible' | 'hidden' | 'scroll' | 'auto';
16
+ backgroundColor?: string;
17
+ border?: string;
18
+ borderRadius?: number;
19
+ elevation?: number;
20
+ borderRight?: string;
21
+ borderLeft?: string;
22
+ borderTop?: string;
23
+ borderBottom?: string;
24
+ onPress?: ActionNode;
25
+ context?: RenderContext;
26
+ renderer?: React.ComponentType<any>;
27
+ }
28
+ export declare const Layout: React.FC<LayoutProps>;
29
+ export {};
@@ -0,0 +1,24 @@
1
+ import { default as React } from 'react';
2
+ import { ComponentNode, RenderContext } from '../types';
3
+
4
+ interface ModalProps {
5
+ id: string;
6
+ presentation?: 'modal' | 'bottomSheet' | 'dialog';
7
+ dismissible?: boolean;
8
+ child: ComponentNode;
9
+ onClose: () => void;
10
+ context?: RenderContext;
11
+ renderer?: React.ComponentType<any>;
12
+ }
13
+ export declare const Modal: React.FC<ModalProps>;
14
+ interface ModalContainerProps {
15
+ overlays: Record<string, {
16
+ visible: boolean;
17
+ config: any;
18
+ }>;
19
+ onClose: (id: string) => void;
20
+ context: RenderContext;
21
+ renderer: React.ComponentType<any>;
22
+ }
23
+ export declare const ModalContainer: React.FC<ModalContainerProps>;
24
+ export {};
@@ -0,0 +1,10 @@
1
+ import { default as React } from 'react';
2
+
3
+ interface ProgressProps {
4
+ value: number;
5
+ label?: string;
6
+ showPercentage?: boolean;
7
+ color?: string;
8
+ }
9
+ export declare const Progress: React.FC<ProgressProps>;
10
+ export {};
@@ -0,0 +1,13 @@
1
+ import { default as React } from 'react';
2
+ import { ComponentNode, RenderContext } from '../types';
3
+
4
+ interface ScaffoldProps {
5
+ appBar?: ComponentNode;
6
+ body: ComponentNode;
7
+ floatingActionButton?: ComponentNode;
8
+ bottomNavigationBar?: ComponentNode;
9
+ context?: RenderContext;
10
+ renderer?: React.ComponentType<any>;
11
+ }
12
+ export declare const Scaffold: React.FC<ScaffoldProps>;
13
+ export {};
@@ -0,0 +1,17 @@
1
+ import { default as React } from 'react';
2
+
3
+ export interface SnackbarMessage {
4
+ id: string;
5
+ message: string;
6
+ duration?: number;
7
+ action?: {
8
+ label: string;
9
+ onPress: any;
10
+ };
11
+ }
12
+ interface SnackbarProps {
13
+ messages: SnackbarMessage[];
14
+ onDismiss: (id: string) => void;
15
+ }
16
+ export declare const SnackbarContainer: React.FC<SnackbarProps>;
17
+ export {};
@@ -0,0 +1,17 @@
1
+ import { default as React } from 'react';
2
+ import { RenderContext, ComponentNode, ActionNode } from '../types';
3
+
4
+ interface TableColumn {
5
+ key: string;
6
+ label: string;
7
+ width?: string;
8
+ template?: ComponentNode;
9
+ }
10
+ interface TableProps {
11
+ columns: TableColumn[];
12
+ data: any[] | ActionNode;
13
+ context?: RenderContext;
14
+ renderer?: React.ComponentType<any>;
15
+ }
16
+ export declare const Table: React.FC<TableProps>;
17
+ export {};