@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.
- package/LICENSE +168 -0
- package/README.md +144 -0
- package/dist/PineUI.d.ts +10 -0
- package/dist/components/AppBar.d.ts +12 -0
- package/dist/components/Avatar.d.ts +11 -0
- package/dist/components/Badge.d.ts +9 -0
- package/dist/components/BottomNav.d.ts +17 -0
- package/dist/components/Button.d.ts +16 -0
- package/dist/components/Card.d.ts +13 -0
- package/dist/components/Chip.d.ts +12 -0
- package/dist/components/Collection.d.ts +21 -0
- package/dist/components/ConditionalRender.d.ts +14 -0
- package/dist/components/Divider.d.ts +8 -0
- package/dist/components/ErrorBoundary.d.ts +17 -0
- package/dist/components/Grid.d.ts +12 -0
- package/dist/components/Icon.d.ts +12 -0
- package/dist/components/Image.d.ts +15 -0
- package/dist/components/Input.d.ts +17 -0
- package/dist/components/Layout.d.ts +29 -0
- package/dist/components/Modal.d.ts +24 -0
- package/dist/components/Progress.d.ts +10 -0
- package/dist/components/Scaffold.d.ts +13 -0
- package/dist/components/Snackbar.d.ts +17 -0
- package/dist/components/Table.d.ts +17 -0
- package/dist/components/Tabs.d.ts +17 -0
- package/dist/components/Text.d.ts +14 -0
- package/dist/components/View.d.ts +12 -0
- package/dist/index.d.ts +5 -0
- package/dist/loader/imports.d.ts +3 -0
- package/dist/pineui.es.js +1117 -0
- package/dist/pineui.standalone.js +45 -0
- package/dist/pineui.umd.js +14 -0
- package/dist/renderer/Renderer.d.ts +9 -0
- package/dist/renderer/bindings.d.ts +5 -0
- package/dist/style.css +1 -0
- package/dist/types.d.ts +65 -0
- 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**
|
package/dist/PineUI.d.ts
ADDED
|
@@ -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,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,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,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 {};
|