@tuwaio/docs-ui 0.0.34 → 0.0.36

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,369 @@
1
+ "use strict";
2
+ "use client";
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+ var Orb_exports = {};
31
+ __export(Orb_exports, {
32
+ Orb: () => Orb
33
+ });
34
+ module.exports = __toCommonJS(Orb_exports);
35
+ var import_jsx_runtime = require("react/jsx-runtime");
36
+ var import_nova_core = require("@tuwaio/nova-core");
37
+ var import_react = __toESM(require("react"), 1);
38
+ const packageColors = {
39
+ siwx: "#10b981",
40
+ orbit: "#0d9488",
41
+ satellite: "#6366f1",
42
+ pulsar: "#f59e0b",
43
+ quasar: "#06b6d4",
44
+ nova: "#8b5cf6",
45
+ sdk: "#3b82f6"
46
+ };
47
+ const packageTints = {
48
+ siwx: "rgba(16,185,129,0.12)",
49
+ orbit: "rgba(13,148,136,0.12)",
50
+ satellite: "rgba(99,102,241,0.12)",
51
+ pulsar: "rgba(245,158,11,0.12)",
52
+ quasar: "rgba(6,182,212,0.12)",
53
+ nova: "rgba(139,92,246,0.12)",
54
+ sdk: "rgba(59,130,246,0.12)"
55
+ };
56
+ const getCosmicFilter = (type, id) => {
57
+ const starField = (freq, seed, dur) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
58
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feTurbulence", { type: "fractalNoise", baseFrequency: freq, numOctaves: "1", seed, result: "starNoise", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
59
+ "animate",
60
+ {
61
+ attributeName: "baseFrequency",
62
+ values: `${freq};${(parseFloat(freq) * 1.15).toFixed(3)};${freq}`,
63
+ dur,
64
+ repeatCount: "indefinite"
65
+ }
66
+ ) }),
67
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
68
+ "feColorMatrix",
69
+ {
70
+ type: "matrix",
71
+ values: "0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 8 0 0 40 -32",
72
+ in: "starNoise",
73
+ result: "stars"
74
+ }
75
+ )
76
+ ] });
77
+ switch (type) {
78
+ case "satellite":
79
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("filter", { id, x: "-20%", y: "-20%", width: "140%", height: "140%", children: [
80
+ starField("0.06", "9", "14s"),
81
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feTurbulence", { type: "fractalNoise", baseFrequency: "0.018", numOctaves: "2", seed: "4", result: "nebulaNoise", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("animate", { attributeName: "baseFrequency", values: "0.018;0.024;0.016;0.018", dur: "18s", repeatCount: "indefinite" }) }),
82
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
83
+ "feColorMatrix",
84
+ {
85
+ type: "matrix",
86
+ values: "0 0 0 0 0.7 0 0 0 0 0.7 0 0 0 0 1.0 0 0 0 3 -0.5",
87
+ in: "nebulaNoise",
88
+ result: "nebula"
89
+ }
90
+ ),
91
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("feMerge", { result: "cosmic", children: [
92
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feMergeNode", { in: "nebula" }),
93
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feMergeNode", { in: "stars" })
94
+ ] }),
95
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feGaussianBlur", { in: "cosmic", stdDeviation: "1.2", result: "softCosmic" }),
96
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feComposite", { in: "softCosmic", in2: "SourceGraphic", operator: "in" })
97
+ ] });
98
+ case "pulsar":
99
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("filter", { id, x: "-20%", y: "-20%", width: "140%", height: "140%", children: [
100
+ starField("0.12", "1", "6s"),
101
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feTurbulence", { type: "fractalNoise", baseFrequency: "0.035", numOctaves: "3", seed: "2", result: "nebulaNoise", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("animate", { attributeName: "baseFrequency", values: "0.035;0.055;0.025;0.035", dur: "5s", repeatCount: "indefinite" }) }),
102
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
103
+ "feColorMatrix",
104
+ {
105
+ type: "matrix",
106
+ values: "0 0 0 0 1.0 0 0 0 0 0.8 0 0 0 0 0.2 0 0 0 4 -1",
107
+ in: "nebulaNoise",
108
+ result: "nebula"
109
+ }
110
+ ),
111
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("feMerge", { result: "cosmic", children: [
112
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feMergeNode", { in: "nebula" }),
113
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feMergeNode", { in: "stars" })
114
+ ] }),
115
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feGaussianBlur", { in: "cosmic", stdDeviation: "1.0", result: "softCosmic" }),
116
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feComposite", { in: "softCosmic", in2: "SourceGraphic", operator: "in" })
117
+ ] });
118
+ case "orbit":
119
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("filter", { id, x: "-20%", y: "-20%", width: "140%", height: "140%", children: [
120
+ starField("0.15", "42", "22s"),
121
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feTurbulence", { type: "fractalNoise", baseFrequency: "0.012", numOctaves: "3", seed: "12", result: "nebulaNoise", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("animate", { attributeName: "baseFrequency", values: "0.012;0.018;0.010;0.012", dur: "20s", repeatCount: "indefinite" }) }),
122
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
123
+ "feColorMatrix",
124
+ {
125
+ type: "matrix",
126
+ values: "0 0 0 0 0.2 0 0 0 0 0.9 0 0 0 0 0.85 0 0 0 3 -0.5",
127
+ in: "nebulaNoise",
128
+ result: "nebula"
129
+ }
130
+ ),
131
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("feMerge", { result: "preMerge", children: [
132
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feMergeNode", { in: "nebula" }),
133
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feMergeNode", { in: "stars" })
134
+ ] }),
135
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feDisplacementMap", { in: "preMerge", in2: "nebulaNoise", scale: "18", xChannelSelector: "R", yChannelSelector: "G", result: "warped" }),
136
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feGaussianBlur", { in: "warped", stdDeviation: "0.8", result: "softCosmic" }),
137
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feComposite", { in: "softCosmic", in2: "SourceGraphic", operator: "in" })
138
+ ] });
139
+ case "nova":
140
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("filter", { id, x: "-20%", y: "-20%", width: "140%", height: "140%", children: [
141
+ starField("0.20", "7", "8s"),
142
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feTurbulence", { type: "fractalNoise", baseFrequency: "0.025", numOctaves: "4", seed: "7", result: "nebulaNoise", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("animate", { attributeName: "baseFrequency", values: "0.025;0.042;0.018;0.025", dur: "7s", repeatCount: "indefinite" }) }),
143
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
144
+ "feColorMatrix",
145
+ {
146
+ type: "matrix",
147
+ values: "0 0 0 0 0.9 0 0 0 0 0.5 0 0 0 0 1.0 0 0 0 5 -1.5",
148
+ in: "nebulaNoise",
149
+ result: "nebula"
150
+ }
151
+ ),
152
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("feMerge", { result: "preMerge", children: [
153
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feMergeNode", { in: "nebula" }),
154
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feMergeNode", { in: "stars" })
155
+ ] }),
156
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feDisplacementMap", { in: "preMerge", in2: "nebulaNoise", scale: "28", xChannelSelector: "R", yChannelSelector: "B", result: "warped" }),
157
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feGaussianBlur", { in: "warped", stdDeviation: "1.5", result: "softCosmic" }),
158
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feComposite", { in: "softCosmic", in2: "SourceGraphic", operator: "in" })
159
+ ] });
160
+ case "quasar":
161
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("filter", { id, x: "-20%", y: "-20%", width: "140%", height: "140%", children: [
162
+ starField("0.25", "99", "7s"),
163
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feTurbulence", { type: "turbulence", baseFrequency: "0.015", numOctaves: "3", seed: "99", result: "nebulaNoise", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("animate", { attributeName: "baseFrequency", values: "0.015;0.032;0.010;0.015", dur: "9s", repeatCount: "indefinite" }) }),
164
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
165
+ "feColorMatrix",
166
+ {
167
+ type: "matrix",
168
+ values: "0 0 0 0 0.0 0 0 0 0 0.85 0 0 0 0 1.0 0 0 0 5 -1",
169
+ in: "nebulaNoise",
170
+ result: "nebula"
171
+ }
172
+ ),
173
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("feMerge", { result: "preMerge", children: [
174
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feMergeNode", { in: "nebula" }),
175
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feMergeNode", { in: "stars" })
176
+ ] }),
177
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feDisplacementMap", { in: "preMerge", in2: "nebulaNoise", scale: "40", xChannelSelector: "G", yChannelSelector: "B", result: "warped" }),
178
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feGaussianBlur", { in: "warped", stdDeviation: "1.0", result: "softCosmic" }),
179
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feComposite", { in: "softCosmic", in2: "SourceGraphic", operator: "in" })
180
+ ] });
181
+ case "siwx":
182
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("filter", { id, x: "-20%", y: "-20%", width: "140%", height: "140%", children: [
183
+ starField("0.09", "11", "16s"),
184
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feTurbulence", { type: "fractalNoise", baseFrequency: "0.06 0.012", numOctaves: "2", seed: "1", result: "nebulaNoise", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
185
+ "animate",
186
+ {
187
+ attributeName: "baseFrequency",
188
+ values: "0.06 0.012; 0.09 0.020; 0.05 0.010; 0.06 0.012",
189
+ dur: "10s",
190
+ repeatCount: "indefinite"
191
+ }
192
+ ) }),
193
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
194
+ "feColorMatrix",
195
+ {
196
+ type: "matrix",
197
+ values: "0 0 0 0 0.3 0 0 0 0 1.0 0 0 0 0 0.7 0 0 0 4 -1",
198
+ in: "nebulaNoise",
199
+ result: "nebula"
200
+ }
201
+ ),
202
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("feMerge", { result: "cosmic", children: [
203
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feMergeNode", { in: "nebula" }),
204
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feMergeNode", { in: "stars" })
205
+ ] }),
206
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feGaussianBlur", { in: "cosmic", stdDeviation: "1.4", result: "softCosmic" }),
207
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feComposite", { in: "softCosmic", in2: "SourceGraphic", operator: "in" })
208
+ ] });
209
+ case "sdk":
210
+ default:
211
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("filter", { id, x: "-20%", y: "-20%", width: "140%", height: "140%", children: [
212
+ starField("0.10", "3", "28s"),
213
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feTurbulence", { type: "fractalNoise", baseFrequency: "0.014", numOctaves: "2", seed: "3", result: "nebulaNoise", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("animate", { attributeName: "baseFrequency", values: "0.014;0.020;0.010;0.014", dur: "22s", repeatCount: "indefinite" }) }),
214
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
215
+ "feColorMatrix",
216
+ {
217
+ type: "matrix",
218
+ values: "0 0 0 0 0.3 0 0 0 0 0.6 0 0 0 0 1.0 0 0 0 3 -0.5",
219
+ in: "nebulaNoise",
220
+ result: "nebula"
221
+ }
222
+ ),
223
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("feMerge", { result: "cosmic", children: [
224
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feMergeNode", { in: "nebula" }),
225
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feMergeNode", { in: "stars" })
226
+ ] }),
227
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feGaussianBlur", { in: "cosmic", stdDeviation: "1.2", result: "softCosmic" }),
228
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feComposite", { in: "softCosmic", in2: "SourceGraphic", operator: "in" })
229
+ ] });
230
+ }
231
+ };
232
+ const Orb = import_react.default.forwardRef(
233
+ ({ packageType, size = 120, icon: Icon, className, ...props }, ref) => {
234
+ const color = packageColors[packageType];
235
+ const tint = packageTints[packageType];
236
+ const filterId = `orb-filter-${packageType}`;
237
+ const nebGradId = `orb-neb-${packageType}`;
238
+ const glowGradId = `orb-glow-${packageType}`;
239
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
240
+ "div",
241
+ {
242
+ ref,
243
+ className: (0, import_nova_core.cn)(
244
+ "tuwadocs:relative tuwadocs:flex tuwadocs:items-center tuwadocs:justify-center tuwa-orb-float",
245
+ className
246
+ ),
247
+ style: { width: size, height: size, flexShrink: 0, ...props.style },
248
+ ...props,
249
+ children: [
250
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
251
+ "div",
252
+ {
253
+ className: "tuwadocs:absolute tuwadocs:inset-0 tuwadocs:rounded-full tuwadocs:overflow-hidden",
254
+ style: {
255
+ background: `radial-gradient(circle at 40% 35%, ${color}28 0%, ${tint} 55%, rgba(255,255,255,0.04) 100%)`,
256
+ boxShadow: [
257
+ `0 0 0 1px ${color}30`,
258
+ `0 4px 24px ${color}25`,
259
+ "inset 0 1px 0 rgba(255,255,255,0.35)",
260
+ `inset 0 -2px 8px ${color}20`
261
+ ].join(", "),
262
+ backdropFilter: "blur(2px)"
263
+ },
264
+ children: [
265
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
266
+ "svg",
267
+ {
268
+ className: "tuwadocs:absolute tuwadocs:inset-0 tuwadocs:w-full tuwadocs:h-full",
269
+ style: { mixBlendMode: "screen", opacity: 0.85 },
270
+ children: [
271
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("defs", { children: [
272
+ getCosmicFilter(packageType, filterId),
273
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("radialGradient", { id: nebGradId, cx: "50%", cy: "50%", r: "50%", children: [
274
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("stop", { offset: "0%", stopColor: color, stopOpacity: "0.9" }),
275
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("stop", { offset: "50%", stopColor: color, stopOpacity: "0.45" }),
276
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("stop", { offset: "100%", stopColor: color, stopOpacity: "0" })
277
+ ] })
278
+ ] }),
279
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
280
+ "circle",
281
+ {
282
+ cx: "50%",
283
+ cy: "50%",
284
+ r: "52%",
285
+ fill: `url(#${nebGradId})`,
286
+ filter: `url(#${filterId})`,
287
+ className: "tuwa-orb-spin",
288
+ style: { transformOrigin: "center" }
289
+ }
290
+ )
291
+ ]
292
+ }
293
+ ),
294
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
295
+ "svg",
296
+ {
297
+ className: "tuwadocs:absolute tuwadocs:inset-0 tuwadocs:w-full tuwadocs:h-full",
298
+ style: { mixBlendMode: "soft-light", opacity: 0.6 },
299
+ children: [
300
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("radialGradient", { id: glowGradId, cx: "50%", cy: "50%", r: "50%", children: [
301
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("stop", { offset: "0%", stopColor: color, stopOpacity: "1", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("animate", { attributeName: "stop-opacity", values: "1;0.4;1", dur: "4s", repeatCount: "indefinite" }) }),
302
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("stop", { offset: "60%", stopColor: color, stopOpacity: "0.2" }),
303
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("stop", { offset: "100%", stopColor: color, stopOpacity: "0" })
304
+ ] }) }),
305
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", { cx: "50%", cy: "50%", r: "40%", fill: `url(#${glowGradId})` })
306
+ ]
307
+ }
308
+ )
309
+ ]
310
+ }
311
+ ),
312
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
313
+ "div",
314
+ {
315
+ className: "tuwadocs:absolute tuwadocs:inset-0 tuwadocs:rounded-full tuwadocs:pointer-events-none",
316
+ style: {
317
+ background: "radial-gradient(ellipse at 28% 22%, rgba(255,255,255,0.55) 0%, rgba(255,255,255,0.12) 28%, transparent 55%)"
318
+ }
319
+ }
320
+ ),
321
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
322
+ "div",
323
+ {
324
+ className: "tuwadocs:absolute tuwadocs:inset-0 tuwadocs:rounded-full tuwadocs:pointer-events-none",
325
+ style: {
326
+ background: `radial-gradient(ellipse at 70% 78%, ${color}22 0%, transparent 55%)`
327
+ }
328
+ }
329
+ ),
330
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
331
+ "div",
332
+ {
333
+ className: "tuwadocs:absolute tuwadocs:pointer-events-none",
334
+ style: {
335
+ top: "14%",
336
+ left: "22%",
337
+ width: "28%",
338
+ height: "10%",
339
+ background: "linear-gradient(180deg, rgba(255,255,255,0.45) 0%, transparent 100%)",
340
+ transform: "rotate(-38deg)",
341
+ filter: "blur(0.5px)",
342
+ borderRadius: "50%"
343
+ }
344
+ }
345
+ ),
346
+ Icon && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "tuwadocs:absolute tuwadocs:inset-0 tuwadocs:flex tuwadocs:items-center tuwadocs:justify-center tuwadocs:z-10 tuwadocs:pointer-events-none", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
347
+ Icon,
348
+ {
349
+ className: "tuwadocs:w-5 tuwadocs:h-5 tuwadocs:2xl:w-6 tuwadocs:2xl:h-6",
350
+ style: {
351
+ color: "rgba(255,255,255,0.95)",
352
+ filter: [
353
+ `drop-shadow(0 0 6px ${color})`,
354
+ `drop-shadow(0 0 14px ${color}90)`,
355
+ "drop-shadow(0 2px 4px rgba(0,0,0,0.4))"
356
+ ].join(" ")
357
+ }
358
+ }
359
+ ) })
360
+ ]
361
+ }
362
+ );
363
+ }
364
+ );
365
+ Orb.displayName = "Orb";
366
+ // Annotate the CommonJS export names for ESM import in node:
367
+ 0 && (module.exports = {
368
+ Orb
369
+ });
@@ -0,0 +1,18 @@
1
+ import react__default from 'react';
2
+
3
+ type PackageType = 'orbit' | 'pulsar' | 'satellite' | 'nova' | 'quasar' | 'siwx' | 'sdk';
4
+ interface OrbProps extends react__default.HTMLAttributes<HTMLDivElement> {
5
+ packageType: PackageType;
6
+ size?: number;
7
+ icon?: react__default.ComponentType<react__default.SVGProps<SVGSVGElement>>;
8
+ }
9
+ /**
10
+ * Orb — Premium 3D cosmic sphere for TUWA package visualization.
11
+ *
12
+ * @param packageType - Which TUWA package this orb represents
13
+ * @param size - Diameter in pixels (default: 120)
14
+ * @param icon - SVG icon component rendered centered inside the orb
15
+ */
16
+ declare const Orb: react__default.ForwardRefExoticComponent<OrbProps & react__default.RefAttributes<HTMLDivElement>>;
17
+
18
+ export { Orb, type OrbProps, type PackageType };
@@ -0,0 +1,18 @@
1
+ import react__default from 'react';
2
+
3
+ type PackageType = 'orbit' | 'pulsar' | 'satellite' | 'nova' | 'quasar' | 'siwx' | 'sdk';
4
+ interface OrbProps extends react__default.HTMLAttributes<HTMLDivElement> {
5
+ packageType: PackageType;
6
+ size?: number;
7
+ icon?: react__default.ComponentType<react__default.SVGProps<SVGSVGElement>>;
8
+ }
9
+ /**
10
+ * Orb — Premium 3D cosmic sphere for TUWA package visualization.
11
+ *
12
+ * @param packageType - Which TUWA package this orb represents
13
+ * @param size - Diameter in pixels (default: 120)
14
+ * @param icon - SVG icon component rendered centered inside the orb
15
+ */
16
+ declare const Orb: react__default.ForwardRefExoticComponent<OrbProps & react__default.RefAttributes<HTMLDivElement>>;
17
+
18
+ export { Orb, type OrbProps, type PackageType };
@@ -0,0 +1,335 @@
1
+ "use client";
2
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
+ import { cn } from "@tuwaio/nova-core";
4
+ import React from "react";
5
+ const packageColors = {
6
+ siwx: "#10b981",
7
+ orbit: "#0d9488",
8
+ satellite: "#6366f1",
9
+ pulsar: "#f59e0b",
10
+ quasar: "#06b6d4",
11
+ nova: "#8b5cf6",
12
+ sdk: "#3b82f6"
13
+ };
14
+ const packageTints = {
15
+ siwx: "rgba(16,185,129,0.12)",
16
+ orbit: "rgba(13,148,136,0.12)",
17
+ satellite: "rgba(99,102,241,0.12)",
18
+ pulsar: "rgba(245,158,11,0.12)",
19
+ quasar: "rgba(6,182,212,0.12)",
20
+ nova: "rgba(139,92,246,0.12)",
21
+ sdk: "rgba(59,130,246,0.12)"
22
+ };
23
+ const getCosmicFilter = (type, id) => {
24
+ const starField = (freq, seed, dur) => /* @__PURE__ */ jsxs(Fragment, { children: [
25
+ /* @__PURE__ */ jsx("feTurbulence", { type: "fractalNoise", baseFrequency: freq, numOctaves: "1", seed, result: "starNoise", children: /* @__PURE__ */ jsx(
26
+ "animate",
27
+ {
28
+ attributeName: "baseFrequency",
29
+ values: `${freq};${(parseFloat(freq) * 1.15).toFixed(3)};${freq}`,
30
+ dur,
31
+ repeatCount: "indefinite"
32
+ }
33
+ ) }),
34
+ /* @__PURE__ */ jsx(
35
+ "feColorMatrix",
36
+ {
37
+ type: "matrix",
38
+ values: "0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 8 0 0 40 -32",
39
+ in: "starNoise",
40
+ result: "stars"
41
+ }
42
+ )
43
+ ] });
44
+ switch (type) {
45
+ case "satellite":
46
+ return /* @__PURE__ */ jsxs("filter", { id, x: "-20%", y: "-20%", width: "140%", height: "140%", children: [
47
+ starField("0.06", "9", "14s"),
48
+ /* @__PURE__ */ jsx("feTurbulence", { type: "fractalNoise", baseFrequency: "0.018", numOctaves: "2", seed: "4", result: "nebulaNoise", children: /* @__PURE__ */ jsx("animate", { attributeName: "baseFrequency", values: "0.018;0.024;0.016;0.018", dur: "18s", repeatCount: "indefinite" }) }),
49
+ /* @__PURE__ */ jsx(
50
+ "feColorMatrix",
51
+ {
52
+ type: "matrix",
53
+ values: "0 0 0 0 0.7 0 0 0 0 0.7 0 0 0 0 1.0 0 0 0 3 -0.5",
54
+ in: "nebulaNoise",
55
+ result: "nebula"
56
+ }
57
+ ),
58
+ /* @__PURE__ */ jsxs("feMerge", { result: "cosmic", children: [
59
+ /* @__PURE__ */ jsx("feMergeNode", { in: "nebula" }),
60
+ /* @__PURE__ */ jsx("feMergeNode", { in: "stars" })
61
+ ] }),
62
+ /* @__PURE__ */ jsx("feGaussianBlur", { in: "cosmic", stdDeviation: "1.2", result: "softCosmic" }),
63
+ /* @__PURE__ */ jsx("feComposite", { in: "softCosmic", in2: "SourceGraphic", operator: "in" })
64
+ ] });
65
+ case "pulsar":
66
+ return /* @__PURE__ */ jsxs("filter", { id, x: "-20%", y: "-20%", width: "140%", height: "140%", children: [
67
+ starField("0.12", "1", "6s"),
68
+ /* @__PURE__ */ jsx("feTurbulence", { type: "fractalNoise", baseFrequency: "0.035", numOctaves: "3", seed: "2", result: "nebulaNoise", children: /* @__PURE__ */ jsx("animate", { attributeName: "baseFrequency", values: "0.035;0.055;0.025;0.035", dur: "5s", repeatCount: "indefinite" }) }),
69
+ /* @__PURE__ */ jsx(
70
+ "feColorMatrix",
71
+ {
72
+ type: "matrix",
73
+ values: "0 0 0 0 1.0 0 0 0 0 0.8 0 0 0 0 0.2 0 0 0 4 -1",
74
+ in: "nebulaNoise",
75
+ result: "nebula"
76
+ }
77
+ ),
78
+ /* @__PURE__ */ jsxs("feMerge", { result: "cosmic", children: [
79
+ /* @__PURE__ */ jsx("feMergeNode", { in: "nebula" }),
80
+ /* @__PURE__ */ jsx("feMergeNode", { in: "stars" })
81
+ ] }),
82
+ /* @__PURE__ */ jsx("feGaussianBlur", { in: "cosmic", stdDeviation: "1.0", result: "softCosmic" }),
83
+ /* @__PURE__ */ jsx("feComposite", { in: "softCosmic", in2: "SourceGraphic", operator: "in" })
84
+ ] });
85
+ case "orbit":
86
+ return /* @__PURE__ */ jsxs("filter", { id, x: "-20%", y: "-20%", width: "140%", height: "140%", children: [
87
+ starField("0.15", "42", "22s"),
88
+ /* @__PURE__ */ jsx("feTurbulence", { type: "fractalNoise", baseFrequency: "0.012", numOctaves: "3", seed: "12", result: "nebulaNoise", children: /* @__PURE__ */ jsx("animate", { attributeName: "baseFrequency", values: "0.012;0.018;0.010;0.012", dur: "20s", repeatCount: "indefinite" }) }),
89
+ /* @__PURE__ */ jsx(
90
+ "feColorMatrix",
91
+ {
92
+ type: "matrix",
93
+ values: "0 0 0 0 0.2 0 0 0 0 0.9 0 0 0 0 0.85 0 0 0 3 -0.5",
94
+ in: "nebulaNoise",
95
+ result: "nebula"
96
+ }
97
+ ),
98
+ /* @__PURE__ */ jsxs("feMerge", { result: "preMerge", children: [
99
+ /* @__PURE__ */ jsx("feMergeNode", { in: "nebula" }),
100
+ /* @__PURE__ */ jsx("feMergeNode", { in: "stars" })
101
+ ] }),
102
+ /* @__PURE__ */ jsx("feDisplacementMap", { in: "preMerge", in2: "nebulaNoise", scale: "18", xChannelSelector: "R", yChannelSelector: "G", result: "warped" }),
103
+ /* @__PURE__ */ jsx("feGaussianBlur", { in: "warped", stdDeviation: "0.8", result: "softCosmic" }),
104
+ /* @__PURE__ */ jsx("feComposite", { in: "softCosmic", in2: "SourceGraphic", operator: "in" })
105
+ ] });
106
+ case "nova":
107
+ return /* @__PURE__ */ jsxs("filter", { id, x: "-20%", y: "-20%", width: "140%", height: "140%", children: [
108
+ starField("0.20", "7", "8s"),
109
+ /* @__PURE__ */ jsx("feTurbulence", { type: "fractalNoise", baseFrequency: "0.025", numOctaves: "4", seed: "7", result: "nebulaNoise", children: /* @__PURE__ */ jsx("animate", { attributeName: "baseFrequency", values: "0.025;0.042;0.018;0.025", dur: "7s", repeatCount: "indefinite" }) }),
110
+ /* @__PURE__ */ jsx(
111
+ "feColorMatrix",
112
+ {
113
+ type: "matrix",
114
+ values: "0 0 0 0 0.9 0 0 0 0 0.5 0 0 0 0 1.0 0 0 0 5 -1.5",
115
+ in: "nebulaNoise",
116
+ result: "nebula"
117
+ }
118
+ ),
119
+ /* @__PURE__ */ jsxs("feMerge", { result: "preMerge", children: [
120
+ /* @__PURE__ */ jsx("feMergeNode", { in: "nebula" }),
121
+ /* @__PURE__ */ jsx("feMergeNode", { in: "stars" })
122
+ ] }),
123
+ /* @__PURE__ */ jsx("feDisplacementMap", { in: "preMerge", in2: "nebulaNoise", scale: "28", xChannelSelector: "R", yChannelSelector: "B", result: "warped" }),
124
+ /* @__PURE__ */ jsx("feGaussianBlur", { in: "warped", stdDeviation: "1.5", result: "softCosmic" }),
125
+ /* @__PURE__ */ jsx("feComposite", { in: "softCosmic", in2: "SourceGraphic", operator: "in" })
126
+ ] });
127
+ case "quasar":
128
+ return /* @__PURE__ */ jsxs("filter", { id, x: "-20%", y: "-20%", width: "140%", height: "140%", children: [
129
+ starField("0.25", "99", "7s"),
130
+ /* @__PURE__ */ jsx("feTurbulence", { type: "turbulence", baseFrequency: "0.015", numOctaves: "3", seed: "99", result: "nebulaNoise", children: /* @__PURE__ */ jsx("animate", { attributeName: "baseFrequency", values: "0.015;0.032;0.010;0.015", dur: "9s", repeatCount: "indefinite" }) }),
131
+ /* @__PURE__ */ jsx(
132
+ "feColorMatrix",
133
+ {
134
+ type: "matrix",
135
+ values: "0 0 0 0 0.0 0 0 0 0 0.85 0 0 0 0 1.0 0 0 0 5 -1",
136
+ in: "nebulaNoise",
137
+ result: "nebula"
138
+ }
139
+ ),
140
+ /* @__PURE__ */ jsxs("feMerge", { result: "preMerge", children: [
141
+ /* @__PURE__ */ jsx("feMergeNode", { in: "nebula" }),
142
+ /* @__PURE__ */ jsx("feMergeNode", { in: "stars" })
143
+ ] }),
144
+ /* @__PURE__ */ jsx("feDisplacementMap", { in: "preMerge", in2: "nebulaNoise", scale: "40", xChannelSelector: "G", yChannelSelector: "B", result: "warped" }),
145
+ /* @__PURE__ */ jsx("feGaussianBlur", { in: "warped", stdDeviation: "1.0", result: "softCosmic" }),
146
+ /* @__PURE__ */ jsx("feComposite", { in: "softCosmic", in2: "SourceGraphic", operator: "in" })
147
+ ] });
148
+ case "siwx":
149
+ return /* @__PURE__ */ jsxs("filter", { id, x: "-20%", y: "-20%", width: "140%", height: "140%", children: [
150
+ starField("0.09", "11", "16s"),
151
+ /* @__PURE__ */ jsx("feTurbulence", { type: "fractalNoise", baseFrequency: "0.06 0.012", numOctaves: "2", seed: "1", result: "nebulaNoise", children: /* @__PURE__ */ jsx(
152
+ "animate",
153
+ {
154
+ attributeName: "baseFrequency",
155
+ values: "0.06 0.012; 0.09 0.020; 0.05 0.010; 0.06 0.012",
156
+ dur: "10s",
157
+ repeatCount: "indefinite"
158
+ }
159
+ ) }),
160
+ /* @__PURE__ */ jsx(
161
+ "feColorMatrix",
162
+ {
163
+ type: "matrix",
164
+ values: "0 0 0 0 0.3 0 0 0 0 1.0 0 0 0 0 0.7 0 0 0 4 -1",
165
+ in: "nebulaNoise",
166
+ result: "nebula"
167
+ }
168
+ ),
169
+ /* @__PURE__ */ jsxs("feMerge", { result: "cosmic", children: [
170
+ /* @__PURE__ */ jsx("feMergeNode", { in: "nebula" }),
171
+ /* @__PURE__ */ jsx("feMergeNode", { in: "stars" })
172
+ ] }),
173
+ /* @__PURE__ */ jsx("feGaussianBlur", { in: "cosmic", stdDeviation: "1.4", result: "softCosmic" }),
174
+ /* @__PURE__ */ jsx("feComposite", { in: "softCosmic", in2: "SourceGraphic", operator: "in" })
175
+ ] });
176
+ case "sdk":
177
+ default:
178
+ return /* @__PURE__ */ jsxs("filter", { id, x: "-20%", y: "-20%", width: "140%", height: "140%", children: [
179
+ starField("0.10", "3", "28s"),
180
+ /* @__PURE__ */ jsx("feTurbulence", { type: "fractalNoise", baseFrequency: "0.014", numOctaves: "2", seed: "3", result: "nebulaNoise", children: /* @__PURE__ */ jsx("animate", { attributeName: "baseFrequency", values: "0.014;0.020;0.010;0.014", dur: "22s", repeatCount: "indefinite" }) }),
181
+ /* @__PURE__ */ jsx(
182
+ "feColorMatrix",
183
+ {
184
+ type: "matrix",
185
+ values: "0 0 0 0 0.3 0 0 0 0 0.6 0 0 0 0 1.0 0 0 0 3 -0.5",
186
+ in: "nebulaNoise",
187
+ result: "nebula"
188
+ }
189
+ ),
190
+ /* @__PURE__ */ jsxs("feMerge", { result: "cosmic", children: [
191
+ /* @__PURE__ */ jsx("feMergeNode", { in: "nebula" }),
192
+ /* @__PURE__ */ jsx("feMergeNode", { in: "stars" })
193
+ ] }),
194
+ /* @__PURE__ */ jsx("feGaussianBlur", { in: "cosmic", stdDeviation: "1.2", result: "softCosmic" }),
195
+ /* @__PURE__ */ jsx("feComposite", { in: "softCosmic", in2: "SourceGraphic", operator: "in" })
196
+ ] });
197
+ }
198
+ };
199
+ const Orb = React.forwardRef(
200
+ ({ packageType, size = 120, icon: Icon, className, ...props }, ref) => {
201
+ const color = packageColors[packageType];
202
+ const tint = packageTints[packageType];
203
+ const filterId = `orb-filter-${packageType}`;
204
+ const nebGradId = `orb-neb-${packageType}`;
205
+ const glowGradId = `orb-glow-${packageType}`;
206
+ return /* @__PURE__ */ jsxs(
207
+ "div",
208
+ {
209
+ ref,
210
+ className: cn(
211
+ "tuwadocs:relative tuwadocs:flex tuwadocs:items-center tuwadocs:justify-center tuwa-orb-float",
212
+ className
213
+ ),
214
+ style: { width: size, height: size, flexShrink: 0, ...props.style },
215
+ ...props,
216
+ children: [
217
+ /* @__PURE__ */ jsxs(
218
+ "div",
219
+ {
220
+ className: "tuwadocs:absolute tuwadocs:inset-0 tuwadocs:rounded-full tuwadocs:overflow-hidden",
221
+ style: {
222
+ background: `radial-gradient(circle at 40% 35%, ${color}28 0%, ${tint} 55%, rgba(255,255,255,0.04) 100%)`,
223
+ boxShadow: [
224
+ `0 0 0 1px ${color}30`,
225
+ `0 4px 24px ${color}25`,
226
+ "inset 0 1px 0 rgba(255,255,255,0.35)",
227
+ `inset 0 -2px 8px ${color}20`
228
+ ].join(", "),
229
+ backdropFilter: "blur(2px)"
230
+ },
231
+ children: [
232
+ /* @__PURE__ */ jsxs(
233
+ "svg",
234
+ {
235
+ className: "tuwadocs:absolute tuwadocs:inset-0 tuwadocs:w-full tuwadocs:h-full",
236
+ style: { mixBlendMode: "screen", opacity: 0.85 },
237
+ children: [
238
+ /* @__PURE__ */ jsxs("defs", { children: [
239
+ getCosmicFilter(packageType, filterId),
240
+ /* @__PURE__ */ jsxs("radialGradient", { id: nebGradId, cx: "50%", cy: "50%", r: "50%", children: [
241
+ /* @__PURE__ */ jsx("stop", { offset: "0%", stopColor: color, stopOpacity: "0.9" }),
242
+ /* @__PURE__ */ jsx("stop", { offset: "50%", stopColor: color, stopOpacity: "0.45" }),
243
+ /* @__PURE__ */ jsx("stop", { offset: "100%", stopColor: color, stopOpacity: "0" })
244
+ ] })
245
+ ] }),
246
+ /* @__PURE__ */ jsx(
247
+ "circle",
248
+ {
249
+ cx: "50%",
250
+ cy: "50%",
251
+ r: "52%",
252
+ fill: `url(#${nebGradId})`,
253
+ filter: `url(#${filterId})`,
254
+ className: "tuwa-orb-spin",
255
+ style: { transformOrigin: "center" }
256
+ }
257
+ )
258
+ ]
259
+ }
260
+ ),
261
+ /* @__PURE__ */ jsxs(
262
+ "svg",
263
+ {
264
+ className: "tuwadocs:absolute tuwadocs:inset-0 tuwadocs:w-full tuwadocs:h-full",
265
+ style: { mixBlendMode: "soft-light", opacity: 0.6 },
266
+ children: [
267
+ /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs("radialGradient", { id: glowGradId, cx: "50%", cy: "50%", r: "50%", children: [
268
+ /* @__PURE__ */ jsx("stop", { offset: "0%", stopColor: color, stopOpacity: "1", children: /* @__PURE__ */ jsx("animate", { attributeName: "stop-opacity", values: "1;0.4;1", dur: "4s", repeatCount: "indefinite" }) }),
269
+ /* @__PURE__ */ jsx("stop", { offset: "60%", stopColor: color, stopOpacity: "0.2" }),
270
+ /* @__PURE__ */ jsx("stop", { offset: "100%", stopColor: color, stopOpacity: "0" })
271
+ ] }) }),
272
+ /* @__PURE__ */ jsx("circle", { cx: "50%", cy: "50%", r: "40%", fill: `url(#${glowGradId})` })
273
+ ]
274
+ }
275
+ )
276
+ ]
277
+ }
278
+ ),
279
+ /* @__PURE__ */ jsx(
280
+ "div",
281
+ {
282
+ className: "tuwadocs:absolute tuwadocs:inset-0 tuwadocs:rounded-full tuwadocs:pointer-events-none",
283
+ style: {
284
+ background: "radial-gradient(ellipse at 28% 22%, rgba(255,255,255,0.55) 0%, rgba(255,255,255,0.12) 28%, transparent 55%)"
285
+ }
286
+ }
287
+ ),
288
+ /* @__PURE__ */ jsx(
289
+ "div",
290
+ {
291
+ className: "tuwadocs:absolute tuwadocs:inset-0 tuwadocs:rounded-full tuwadocs:pointer-events-none",
292
+ style: {
293
+ background: `radial-gradient(ellipse at 70% 78%, ${color}22 0%, transparent 55%)`
294
+ }
295
+ }
296
+ ),
297
+ /* @__PURE__ */ jsx(
298
+ "div",
299
+ {
300
+ className: "tuwadocs:absolute tuwadocs:pointer-events-none",
301
+ style: {
302
+ top: "14%",
303
+ left: "22%",
304
+ width: "28%",
305
+ height: "10%",
306
+ background: "linear-gradient(180deg, rgba(255,255,255,0.45) 0%, transparent 100%)",
307
+ transform: "rotate(-38deg)",
308
+ filter: "blur(0.5px)",
309
+ borderRadius: "50%"
310
+ }
311
+ }
312
+ ),
313
+ Icon && /* @__PURE__ */ jsx("div", { className: "tuwadocs:absolute tuwadocs:inset-0 tuwadocs:flex tuwadocs:items-center tuwadocs:justify-center tuwadocs:z-10 tuwadocs:pointer-events-none", children: /* @__PURE__ */ jsx(
314
+ Icon,
315
+ {
316
+ className: "tuwadocs:w-5 tuwadocs:h-5 tuwadocs:2xl:w-6 tuwadocs:2xl:h-6",
317
+ style: {
318
+ color: "rgba(255,255,255,0.95)",
319
+ filter: [
320
+ `drop-shadow(0 0 6px ${color})`,
321
+ `drop-shadow(0 0 14px ${color}90)`,
322
+ "drop-shadow(0 2px 4px rgba(0,0,0,0.4))"
323
+ ].join(" ")
324
+ }
325
+ }
326
+ ) })
327
+ ]
328
+ }
329
+ );
330
+ }
331
+ );
332
+ Orb.displayName = "Orb";
333
+ export {
334
+ Orb
335
+ };
package/dist/index.cjs CHANGED
@@ -41,6 +41,7 @@ __reExport(index_exports, require("./components/Footer"), module.exports);
41
41
  __reExport(index_exports, require("./components/Logo"), module.exports);
42
42
  __reExport(index_exports, require("./components/NavBar"), module.exports);
43
43
  var import_NoSSR = __toESM(require("./components/NoSSR"), 1);
44
+ __reExport(index_exports, require("./components/Orb"), module.exports);
44
45
  __reExport(index_exports, require("./components/PackageInstallationTabs"), module.exports);
45
46
  var import_StarryBackground = __toESM(require("./components/StarryBackground"), 1);
46
47
  __reExport(index_exports, require("./components/StyledLink"), module.exports);
@@ -59,6 +60,7 @@ __reExport(index_exports, require("@tuwaio/nova-core"), module.exports);
59
60
  ...require("./components/Footer"),
60
61
  ...require("./components/Logo"),
61
62
  ...require("./components/NavBar"),
63
+ ...require("./components/Orb"),
62
64
  ...require("./components/PackageInstallationTabs"),
63
65
  ...require("./components/StyledLink"),
64
66
  ...require("./components/ThemeSwitcher"),
package/dist/index.css CHANGED
@@ -75,8 +75,8 @@
75
75
  .novacore\:h-full {
76
76
  height: 100%;
77
77
  }
78
- .novacore\:max-h-\[98dvh\] {
79
- max-height: 98dvh;
78
+ .novacore\:max-h-\[100dvh\] {
79
+ max-height: 100dvh;
80
80
  }
81
81
  .novacore\:min-h-\[36px\] {
82
82
  min-height: 36px;
@@ -90,6 +90,9 @@
90
90
  .novacore\:w-full {
91
91
  width: 100%;
92
92
  }
93
+ .novacore\:\[transform\:translateZ\(0\)\] {
94
+ transform: translateZ(0);
95
+ }
93
96
  .novacore\:animate-pulse {
94
97
  animation: var(--novacore-animate-pulse);
95
98
  }
@@ -117,9 +120,6 @@
117
120
  .novacore\:gap-1 {
118
121
  gap: var(--novacore-spacing);
119
122
  }
120
- .novacore\:gap-3 {
121
- gap: calc(var(--novacore-spacing) * 3);
122
- }
123
123
  .novacore\:overflow-hidden {
124
124
  overflow: hidden;
125
125
  }
@@ -230,6 +230,9 @@
230
230
  --tw-outline-style: none;
231
231
  outline-style: none;
232
232
  }
233
+ .novacore\:\[backface-visibility\:hidden\] {
234
+ backface-visibility: hidden;
235
+ }
233
236
  @media (hover: hover) {
234
237
  .novacore\:hover\:bg-\[var\(--tuwa-bg-muted\)\]:hover {
235
238
  background-color: var(--tuwa-bg-muted);
@@ -420,8 +423,12 @@
420
423
  background-color: var(--tuwa-text-primary);
421
424
  }
422
425
  }
426
+ html {
427
+ scrollbar-gutter: stable;
428
+ }
423
429
  .NovaModalOpen {
424
430
  overflow: hidden;
431
+ scrollbar-gutter: stable;
425
432
  }
426
433
  @property --tw-border-style {
427
434
  syntax: "*";
@@ -645,6 +652,9 @@
645
652
  .tuwadocs\:h-4 {
646
653
  height: calc(var(--tuwadocs-spacing) * 4);
647
654
  }
655
+ .tuwadocs\:h-5 {
656
+ height: calc(var(--tuwadocs-spacing) * 5);
657
+ }
648
658
  .tuwadocs\:h-6 {
649
659
  height: calc(var(--tuwadocs-spacing) * 6);
650
660
  }
@@ -663,6 +673,9 @@
663
673
  .tuwadocs\:w-4 {
664
674
  width: calc(var(--tuwadocs-spacing) * 4);
665
675
  }
676
+ .tuwadocs\:w-5 {
677
+ width: calc(var(--tuwadocs-spacing) * 5);
678
+ }
666
679
  .tuwadocs\:w-6 {
667
680
  width: calc(var(--tuwadocs-spacing) * 6);
668
681
  }
@@ -726,6 +739,9 @@
726
739
  .tuwadocs\:rounded-\[var\(--tuwa-rounded-corners\)\] {
727
740
  border-radius: var(--tuwa-rounded-corners);
728
741
  }
742
+ .tuwadocs\:rounded-full {
743
+ border-radius: calc(infinity * 1px);
744
+ }
729
745
  .tuwadocs\:border {
730
746
  border-style: var(--tw-border-style);
731
747
  border-width: 1px;
@@ -995,6 +1011,14 @@
995
1011
  opacity: 0%;
996
1012
  }
997
1013
  }
1014
+ @media (width >= 96rem) {
1015
+ .tuwadocs\:2xl\:h-6 {
1016
+ height: calc(var(--tuwadocs-spacing) * 6);
1017
+ }
1018
+ .tuwadocs\:2xl\:w-6 {
1019
+ width: calc(var(--tuwadocs-spacing) * 6);
1020
+ }
1021
+ }
998
1022
  .tuwadocs\:dark\:border-white\/10:where(.dark, .dark *) {
999
1023
  border-color: var(--tuwadocs-color-white);
1000
1024
  @supports (color: color-mix(in lab, red, red)) {
@@ -1431,6 +1455,46 @@ article:focus {
1431
1455
  outline: 2px solid var(--tuwa-primary);
1432
1456
  outline-offset: 2px;
1433
1457
  }
1458
+ @keyframes orb-spin {
1459
+ 0% {
1460
+ transform: rotate(0deg);
1461
+ }
1462
+ 100% {
1463
+ transform: rotate(360deg);
1464
+ }
1465
+ }
1466
+ @keyframes orb-pulse-slow {
1467
+ 0%,
1468
+ 100% {
1469
+ opacity: 0.8;
1470
+ transform: scale(1);
1471
+ }
1472
+ 50% {
1473
+ opacity: 1;
1474
+ transform: scale(1.05);
1475
+ }
1476
+ }
1477
+ @keyframes orb-float {
1478
+ 0%,
1479
+ 100% {
1480
+ transform: translateY(0) rotate(0deg);
1481
+ }
1482
+ 50% {
1483
+ transform: translateY(-3%) rotate(5deg);
1484
+ }
1485
+ }
1486
+ .tuwa-orb-spin {
1487
+ animation: orb-spin 20s linear infinite;
1488
+ }
1489
+ .tuwa-orb-spin-reverse {
1490
+ animation: orb-spin 25s linear infinite reverse;
1491
+ }
1492
+ .tuwa-orb-float {
1493
+ animation: orb-float 8s ease-in-out infinite;
1494
+ }
1495
+ .tuwa-orb-pulse {
1496
+ animation: orb-pulse-slow 4s ease-in-out infinite;
1497
+ }
1434
1498
  @property --tw-gradient-position {
1435
1499
  syntax: "*";
1436
1500
  inherits: false;
package/dist/index.d.cts CHANGED
@@ -6,6 +6,7 @@ export { Footer } from './components/Footer.cjs';
6
6
  export { RemoteLogo, RemoteLogoProps } from './components/Logo.cjs';
7
7
  export { NavProps, Navbar, SocialLink } from './components/NavBar.cjs';
8
8
  export { default as NoSSR } from './components/NoSSR.cjs';
9
+ export { Orb, OrbProps, PackageType } from './components/Orb.cjs';
9
10
  export { PackageInstallationTabs } from './components/PackageInstallationTabs.cjs';
10
11
  export { default as StarryBackground } from './components/StarryBackground.cjs';
11
12
  export { StyledLink } from './components/StyledLink.cjs';
package/dist/index.d.ts CHANGED
@@ -6,6 +6,7 @@ export { Footer } from './components/Footer.js';
6
6
  export { RemoteLogo, RemoteLogoProps } from './components/Logo.js';
7
7
  export { NavProps, Navbar, SocialLink } from './components/NavBar.js';
8
8
  export { default as NoSSR } from './components/NoSSR.js';
9
+ export { Orb, OrbProps, PackageType } from './components/Orb.js';
9
10
  export { PackageInstallationTabs } from './components/PackageInstallationTabs.js';
10
11
  export { default as StarryBackground } from './components/StarryBackground.js';
11
12
  export { StyledLink } from './components/StyledLink.js';
package/dist/index.js CHANGED
@@ -6,6 +6,7 @@ export * from "./components/Footer";
6
6
  export * from "./components/Logo";
7
7
  export * from "./components/NavBar";
8
8
  import { default as default2 } from "./components/NoSSR";
9
+ export * from "./components/Orb";
9
10
  export * from "./components/PackageInstallationTabs";
10
11
  import { default as default3 } from "./components/StarryBackground";
11
12
  export * from "./components/StyledLink";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tuwaio/docs-ui",
3
- "version": "0.0.34",
3
+ "version": "0.0.36",
4
4
  "private": false,
5
5
  "author": "Oleksandr Tkach",
6
6
  "license": "Apache-2.0",
@@ -49,7 +49,7 @@
49
49
  }
50
50
  ],
51
51
  "dependencies": {
52
- "@tuwaio/nova-core": "^0.4.5",
52
+ "@tuwaio/nova-core": "^0.5.0",
53
53
  "@types/react-syntax-highlighter": "^15.5.13",
54
54
  "clsx": "^2.1.1",
55
55
  "html-react-parser": "^6.1.5",
@@ -68,12 +68,12 @@
68
68
  "@tailwindcss/postcss": "^4.3.3",
69
69
  "@tailwindcss/vite": "^4.3.3",
70
70
  "@types/node": "^26",
71
- "@types/react": "^19.2.17",
71
+ "@types/react": "^19.2.18",
72
72
  "autoprefixer": "^10.5.4",
73
- "next": "16.2.11",
73
+ "next": "16.3.0",
74
74
  "nextra": "^4.6.1",
75
75
  "nextra-theme-docs": "^4.6.1",
76
- "postcss": "^8.5.22",
76
+ "postcss": "^8.5.26",
77
77
  "postcss-cli": "^11.0.1",
78
78
  "react": "^19.2.8",
79
79
  "tailwindcss": "^4.3.3",