nanoshell 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.
- package/README.md +97 -0
- package/SKILL.md +110 -0
- package/example_app/app.js +77 -0
- package/example_app/index.html +82 -0
- package/example_app/main.zig +144 -0
- package/example_app/settings.html +31 -0
- package/example_app/styles.css +223 -0
- package/package.json +39 -0
- package/vendor/README.md +151 -0
- package/vendor/bin/AppCore.dll +0 -0
- package/vendor/bin/Ultralight.dll +0 -0
- package/vendor/bin/UltralightCore.dll +0 -0
- package/vendor/bin/WebCore.dll +0 -0
- package/vendor/resources/cacert.pem +3363 -0
- package/vendor/resources/icudt67l.dat +0 -0
- package/zig-out/bin/AppCore.dll +0 -0
- package/zig-out/bin/Ultralight.dll +0 -0
- package/zig-out/bin/UltralightCore.dll +0 -0
- package/zig-out/bin/WebCore.dll +0 -0
- package/zig-out/bin/example_app.exe +0 -0
- package/zig-out/bin/taffy_c_bridge.dll +0 -0
- package/zig-out/bin/zeroui.exe +0 -0
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/* ZeroUI Glassmorphism CSS Design Tokens */
|
|
2
|
+
|
|
3
|
+
* {
|
|
4
|
+
box-sizing: border-box;
|
|
5
|
+
margin: 0;
|
|
6
|
+
padding: 0;
|
|
7
|
+
font-family: 'Segoe UI', -apple-system, BlinkMacSystemFont, Roboto, sans-serif;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
body {
|
|
11
|
+
background: linear-gradient(135deg, #0b0d19 0%, #15182e 50%, #080a14 100%);
|
|
12
|
+
color: #f0f4f8;
|
|
13
|
+
height: 100vh;
|
|
14
|
+
overflow: hidden;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.dashboard-container {
|
|
18
|
+
display: flex;
|
|
19
|
+
width: 100%;
|
|
20
|
+
height: 100vh;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/* Sidebar */
|
|
24
|
+
.sidebar {
|
|
25
|
+
width: 260px;
|
|
26
|
+
background: rgba(20, 24, 45, 0.6);
|
|
27
|
+
border-right: 1px solid rgba(255, 255, 255, 0.08);
|
|
28
|
+
display: flex;
|
|
29
|
+
flex-direction: column;
|
|
30
|
+
padding: 24px;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.logo-box {
|
|
34
|
+
margin-bottom: 32px;
|
|
35
|
+
display: block;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.logo-title {
|
|
39
|
+
font-size: 28px;
|
|
40
|
+
font-weight: 800;
|
|
41
|
+
line-height: 1.2;
|
|
42
|
+
letter-spacing: -0.5px;
|
|
43
|
+
color: #ffffff;
|
|
44
|
+
display: block;
|
|
45
|
+
margin: 0;
|
|
46
|
+
padding: 0;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.logo-title span {
|
|
50
|
+
color: #00f2fe;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.tagline {
|
|
54
|
+
font-size: 11px;
|
|
55
|
+
color: #94a3b8;
|
|
56
|
+
text-transform: uppercase;
|
|
57
|
+
letter-spacing: 1px;
|
|
58
|
+
margin-top: 6px;
|
|
59
|
+
display: block;
|
|
60
|
+
clear: both;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.nav-menu {
|
|
64
|
+
display: flex;
|
|
65
|
+
flex-direction: column;
|
|
66
|
+
gap: 10px;
|
|
67
|
+
flex: 1;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.nav-btn {
|
|
71
|
+
background: transparent;
|
|
72
|
+
border: 1px solid transparent;
|
|
73
|
+
color: #cbd5e1;
|
|
74
|
+
padding: 12px 16px;
|
|
75
|
+
border-radius: 12px;
|
|
76
|
+
text-align: left;
|
|
77
|
+
font-size: 14px;
|
|
78
|
+
font-weight: 500;
|
|
79
|
+
cursor: pointer;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.nav-btn:hover {
|
|
83
|
+
background: rgba(255, 255, 255, 0.05);
|
|
84
|
+
color: #ffffff;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.nav-btn.active {
|
|
88
|
+
background: linear-gradient(135deg, rgba(0, 242, 254, 0.15) 0%, rgba(79, 172, 254, 0.15) 100%);
|
|
89
|
+
border: 1px solid rgba(0, 242, 254, 0.3);
|
|
90
|
+
color: #00f2fe;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.status-badge {
|
|
94
|
+
display: flex;
|
|
95
|
+
align-items: center;
|
|
96
|
+
gap: 10px;
|
|
97
|
+
padding: 12px;
|
|
98
|
+
background: rgba(0, 242, 254, 0.08);
|
|
99
|
+
border-radius: 12px;
|
|
100
|
+
font-size: 13px;
|
|
101
|
+
color: #00f2fe;
|
|
102
|
+
font-weight: 600;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.pulse-dot {
|
|
106
|
+
width: 8px;
|
|
107
|
+
height: 8px;
|
|
108
|
+
background: #00f2fe;
|
|
109
|
+
border-radius: 50%;
|
|
110
|
+
box-shadow: 0 0 10px #00f2fe;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/* Content Area */
|
|
114
|
+
.content-area {
|
|
115
|
+
flex: 1;
|
|
116
|
+
padding: 32px;
|
|
117
|
+
display: flex;
|
|
118
|
+
flex-direction: column;
|
|
119
|
+
gap: 24px;
|
|
120
|
+
overflow-y: auto;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.glass-card {
|
|
124
|
+
background: rgba(30, 41, 59, 0.45);
|
|
125
|
+
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
126
|
+
border-radius: 20px;
|
|
127
|
+
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);
|
|
128
|
+
padding: 24px;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.header-card {
|
|
132
|
+
display: flex;
|
|
133
|
+
justify-content: space-between;
|
|
134
|
+
align-items: center;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.header-text h2 {
|
|
138
|
+
font-size: 22px;
|
|
139
|
+
font-weight: 700;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.header-text p {
|
|
143
|
+
font-size: 13px;
|
|
144
|
+
color: #94a3b8;
|
|
145
|
+
margin-top: 4px;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/* Metrics Grid */
|
|
149
|
+
.metrics-grid {
|
|
150
|
+
display: grid;
|
|
151
|
+
grid-template-columns: repeat(4, 1fr);
|
|
152
|
+
gap: 20px;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.metric-card {
|
|
156
|
+
display: flex;
|
|
157
|
+
flex-direction: column;
|
|
158
|
+
gap: 8px;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.card-label {
|
|
162
|
+
font-size: 11px;
|
|
163
|
+
text-transform: uppercase;
|
|
164
|
+
letter-spacing: 1px;
|
|
165
|
+
color: #94a3b8;
|
|
166
|
+
font-weight: 600;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
.card-value {
|
|
170
|
+
font-size: 28px;
|
|
171
|
+
font-weight: 800;
|
|
172
|
+
color: #00f2fe;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.card-sub {
|
|
176
|
+
font-size: 12px;
|
|
177
|
+
color: #64748b;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/* Action Panel */
|
|
181
|
+
.action-panel h3 {
|
|
182
|
+
font-size: 16px;
|
|
183
|
+
font-weight: 600;
|
|
184
|
+
margin-bottom: 16px;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
.button-group {
|
|
188
|
+
display: flex;
|
|
189
|
+
gap: 16px;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
button.action-btn,
|
|
193
|
+
button.btn-primary,
|
|
194
|
+
button.btn-secondary,
|
|
195
|
+
button.btn-accent {
|
|
196
|
+
padding: 12px 20px;
|
|
197
|
+
border-radius: 12px;
|
|
198
|
+
font-size: 14px;
|
|
199
|
+
font-weight: 600;
|
|
200
|
+
cursor: pointer;
|
|
201
|
+
border: none;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
button.btn-primary {
|
|
205
|
+
background: linear-gradient(135deg, #00f2fe 0%, #4facfe 100%);
|
|
206
|
+
color: #0b0d19;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
button.btn-secondary {
|
|
210
|
+
background: rgba(255, 255, 255, 0.08);
|
|
211
|
+
color: #f0f4f8;
|
|
212
|
+
border: 1px solid rgba(255, 255, 255, 0.15);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
button.btn-accent {
|
|
216
|
+
background: linear-gradient(135deg, #b224ef 0%, #7579ff 100%);
|
|
217
|
+
color: #ffffff;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
button.action-btn {
|
|
221
|
+
background: #ffffff;
|
|
222
|
+
color: #0b0d19;
|
|
223
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "nanoshell",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Hyper-lightweight 17MB RAM, 120 FPS native desktop application framework & runtime engine created by Suman Biswas",
|
|
5
|
+
"main": "zig-out/bin/example_app.exe",
|
|
6
|
+
"bin": {
|
|
7
|
+
"nanoshell": "zig-out/bin/zeroui.exe",
|
|
8
|
+
"create-nanoshell-app": "zig-out/bin/zeroui.exe"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"zig-out/bin/*.exe",
|
|
12
|
+
"zig-out/bin/*.dll",
|
|
13
|
+
"vendor/bin/",
|
|
14
|
+
"vendor/resources/",
|
|
15
|
+
"example_app/",
|
|
16
|
+
"SKILL.md",
|
|
17
|
+
"README.md"
|
|
18
|
+
],
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "zig build -Doptimize=ReleaseFast",
|
|
21
|
+
"start": "zig-out/bin/example_app.exe",
|
|
22
|
+
"init": "zig-out/bin/zeroui.exe init"
|
|
23
|
+
},
|
|
24
|
+
"keywords": [
|
|
25
|
+
"nanoshell",
|
|
26
|
+
"desktop",
|
|
27
|
+
"gui",
|
|
28
|
+
"framework",
|
|
29
|
+
"electron-alternative",
|
|
30
|
+
"native",
|
|
31
|
+
"zig",
|
|
32
|
+
"webkit",
|
|
33
|
+
"ultralight",
|
|
34
|
+
"lightweight",
|
|
35
|
+
"suman-biswas"
|
|
36
|
+
],
|
|
37
|
+
"author": "Suman Biswas <suman@zeroui.dev>",
|
|
38
|
+
"license": "MIT"
|
|
39
|
+
}
|
package/vendor/README.md
ADDED
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
<img src="media/logo.png" width="200">
|
|
2
|
+
<a href='https://ci.ultralig.ht/job/Ultralight/job/master/'><img src='https://ci.ultralig.ht/buildStatus/icon?job=Ultralight%2Fmaster'></a>
|
|
3
|
+
|
|
4
|
+
[Website](https://ultralig.ht) | [Chat on Discord!](https://chat.ultralig.ht) | [Browse C++ API](https://ultralig.ht/api/cpp/1_3_0/) | [Browse C API](https://ultralig.ht/api/c/1_3_0/) | [Support Docs](https://docs.ultralig.ht) | [Twitter](https://twitter.com/ultralight_ux)
|
|
5
|
+
|
|
6
|
+
## :video_game: Discord Chat
|
|
7
|
+
|
|
8
|
+
Got a question about Ultralight? [<strong>Chat with us on Discord!</strong> <img src="media/discord-logo.svg">](https://chat.ultralig.ht)
|
|
9
|
+
|
|
10
|
+
# :star: About
|
|
11
|
+
|
|
12
|
+
Ultralight makes it easy for C/C++ developers to seamlessly integrate web-content into games and desktop apps.
|
|
13
|
+
|
|
14
|
+
Use our lightweight, high-performance renderer to display HTML/JS/CSS on a variety of platforms and hardware targets.
|
|
15
|
+
|
|
16
|
+
## Key Features
|
|
17
|
+
|
|
18
|
+
<dl>
|
|
19
|
+
<dt>1. :zap: Modern HTML/JS/CSS Support:</dt>
|
|
20
|
+
<dd>
|
|
21
|
+
Based on WebKit, Ultralight enjoys many of the same cutting-edge web features as Apple's Safari browser, simplifying development and reducing production costs.
|
|
22
|
+
</dd>
|
|
23
|
+
|
|
24
|
+
<dt>2. :sparkles: Powerful and Lightweight:</dt>
|
|
25
|
+
<dd>
|
|
26
|
+
Thanks to its highly-customizable CPU and GPU renderers, Ultralight offers developers unprecedented control over performance and memory usage-- making it the go-to choice for users who demand speed in constrained environments.
|
|
27
|
+
</dd>
|
|
28
|
+
|
|
29
|
+
<dt>3. :jigsaw: Cross-Platform Compatibility:</dt>
|
|
30
|
+
<dd>
|
|
31
|
+
With support for Windows, macOS, Linux, Xbox, PS4, and PS5 (and ARM64 coming in 1.4), Ultralight ensures your content displays smoothly and consistently on a wide range of platforms and hardware targets.
|
|
32
|
+
</dd>
|
|
33
|
+
|
|
34
|
+
<dt>4. :repeat: Deep C/C++ and JavaScript Integration:</dt>
|
|
35
|
+
<dd>
|
|
36
|
+
Ultralight facilitates seamless C/C++ and JavaScript integration through direct access to the JavaScriptCore API. Expose native state to web pages, extend JavaScript classes, define C/C++ callbacks, and more.
|
|
37
|
+
</dd>
|
|
38
|
+
|
|
39
|
+
<dt>5. :wrench: Low-Level Customization:</dt>
|
|
40
|
+
<dd>
|
|
41
|
+
Ultralight allows developers the ability to override platform-specific functionality-- granting control over such things as file-system access, clipboard management, font loading, and more to suit the unique needs of each target environment.
|
|
42
|
+
</dd>
|
|
43
|
+
</dl>
|
|
44
|
+
|
|
45
|
+
## :space_invader: For Game Developers
|
|
46
|
+
|
|
47
|
+
Developed in collaboration with top AAA game studios, Ultralight is engineered to display high-performance web-content across a diverse set of hardware targets and game engine environments.
|
|
48
|
+
|
|
49
|
+
Choose between our CPU renderer for fast, reliable rendering or our customizable GPU renderer for unparalleled animation performance.
|
|
50
|
+
|
|
51
|
+
__→ Learn more by visiting our [Game Integration Guide](https://docs.ultralig.ht/docs/integrating-with-games).__
|
|
52
|
+
|
|
53
|
+
## :desktop_computer: For Desktop-App Developers
|
|
54
|
+
|
|
55
|
+
Get the best of both worlds-- save time by building your front-end with HTML/CSS/JS while retaining the power and performance of C/C++.
|
|
56
|
+
|
|
57
|
+
Embed the renderer directly within your existing run loop or leverage our AppCore framework to do all the heavy lifting for you, offering convenient native window management and accelerated rendering.
|
|
58
|
+
|
|
59
|
+
__→ Learn more by visiting our [Desktop App Guide](https://docs.ultralig.ht/docs/writing-your-first-app).__
|
|
60
|
+
|
|
61
|
+
## :classical_building: Architecture
|
|
62
|
+
|
|
63
|
+
Ultralight is a platform-agnostic port of WebKit for games and desktop apps.
|
|
64
|
+
|
|
65
|
+
Portions of the library are open-source, here's how the library is laid out:
|
|
66
|
+
|
|
67
|
+
| | Description | License | Source Code |
|
|
68
|
+
|--------------------|------------------------------------------|-------------|--------------------------|
|
|
69
|
+
| __UltralightCore__ | Low-level graphics renderer | Proprietary | (Available with license) |
|
|
70
|
+
| __WebCore__ | HTML layout engine (WebKit fork) | LGPL/BSD | [ultralight-ux/WebCore](https://github.com/ultralight-ux/WebCore) |
|
|
71
|
+
| __Ultralight__ | View, compositor, and event logic | Proprietary | (Avaiable with license) |
|
|
72
|
+
| __AppCore__ | :sparkles: Optional, desktop app runtime | LGPL | [ultralight-ux/AppCore](https://github.com/ultralight-ux/AppCore) |
|
|
73
|
+
|
|
74
|
+
### :rocket: Dual High-Performance Renderers
|
|
75
|
+
|
|
76
|
+
We offer two different renderers for integration into a variety of target environments.
|
|
77
|
+
|
|
78
|
+
<table style="width: 100%;">
|
|
79
|
+
<tr><th> :sparkle: CPU Renderer</th><th> :eight_spoked_asterisk: GPU Renderer</th></tr>
|
|
80
|
+
<tr>
|
|
81
|
+
<td style="width: 50%;">
|
|
82
|
+
|
|
83
|
+
* Fast, lightweight, and easy to integrate.
|
|
84
|
+
* Renders to a 32-bit BGRA pixel buffer.
|
|
85
|
+
* Based on Skia, accelerated via multi-threaded SIMD.
|
|
86
|
+
* See the [Game Integration Guide](https://docs.ultralig.ht/docs/integrating-with-games) for more info.
|
|
87
|
+
|
|
88
|
+
</td>
|
|
89
|
+
<td style="width: 50%;">
|
|
90
|
+
|
|
91
|
+
* High-performance, customizable, and portable.
|
|
92
|
+
* Renders on the GPU to a texture.
|
|
93
|
+
* Accelerated via tesselated geometry and pixel shaders.
|
|
94
|
+
* See [Using a Custom GPUDriver](https://docs.ultralig.ht/docs/using-a-custom-gpudriver) for more info.
|
|
95
|
+
|
|
96
|
+
</td></tr>
|
|
97
|
+
</table>
|
|
98
|
+
|
|
99
|
+
## :lock: Licensing
|
|
100
|
+
|
|
101
|
+
It's easy to license Ultralight in projects big and small.
|
|
102
|
+
|
|
103
|
+
<table style="width: 100%;">
|
|
104
|
+
<tr><th> :heart_eyes: Free License</th><th> :crown: Commercial License</th></tr>
|
|
105
|
+
<tr>
|
|
106
|
+
<td style="width: 50%;">
|
|
107
|
+
|
|
108
|
+
* __Free__ for non-commercial use.
|
|
109
|
+
* __Free__ for commercial use by indie companies (< $100K annual revenue).
|
|
110
|
+
* Full SDK available for all users, download and try now.
|
|
111
|
+
* See [LICENSE.txt](license/LICENSE.txt) for more info.
|
|
112
|
+
|
|
113
|
+
</td>
|
|
114
|
+
<td style="width: 50%;">
|
|
115
|
+
|
|
116
|
+
* Paid licenses for commercial use.
|
|
117
|
+
* Enterprise licensing, custom contracts, and volume discounts available.
|
|
118
|
+
* Performance tools, extra configurations, and source code.
|
|
119
|
+
* See [our website](https://ultralig.ht) for more info.
|
|
120
|
+
|
|
121
|
+
</td></tr>
|
|
122
|
+
</table>
|
|
123
|
+
|
|
124
|
+
## :eyes: Getting the Latest SDK
|
|
125
|
+
|
|
126
|
+
You can get the latest SDK for each platform below (contact us for Xbox, PS4, and PS5):
|
|
127
|
+
|
|
128
|
+
* [Windows | x64](https://ultralight-sdk.sfo2.cdn.digitaloceanspaces.com/ultralight-sdk-latest-win-x64.7z)
|
|
129
|
+
* [Linux | x64](https://ultralight-sdk.sfo2.cdn.digitaloceanspaces.com/ultralight-sdk-latest-linux-x64.7z)
|
|
130
|
+
* [macOS | x64](https://ultralight-sdk.sfo2.cdn.digitaloceanspaces.com/ultralight-sdk-latest-mac-x64.7z)
|
|
131
|
+
|
|
132
|
+
### Getting Archived Binaries for a Specific Commit
|
|
133
|
+
|
|
134
|
+
Pre-built binares are uploaded to the following S3 buckets every commit:
|
|
135
|
+
|
|
136
|
+
* __Archived Binaries__: <https://ultralight-sdk.sfo2.cdn.digitaloceanspaces.com/>
|
|
137
|
+
|
|
138
|
+
## :hammer_and_wrench: Building the Samples
|
|
139
|
+
|
|
140
|
+
To build the samples in this repo, please [follow the instructions here](https://docs.ultralig.ht/docs/trying-the-samples).
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
## :information_source: Useful Links
|
|
144
|
+
|
|
145
|
+
| Link | URL |
|
|
146
|
+
| -------------------------- | --------------------------------------------------- |
|
|
147
|
+
| __Join our Discord!__ | <https://chat.ultralig.ht> |
|
|
148
|
+
| __Docs / Getting Started__ | <https://docs.ultralig.ht> |
|
|
149
|
+
| __Browse C++ API__ | <https://ultralig.ht/api/cpp/1_3_0/> |
|
|
150
|
+
| __Browse C API__ | <https://ultralig.ht/api/c/1_3_0/> |
|
|
151
|
+
| __Follow Us on Twitter__ | <https://twitter.com/ultralight_ux> |
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|