@kitelus/fly-ui 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/README.md ADDED
@@ -0,0 +1,103 @@
1
+ # Fly UI
2
+
3
+ Modern React component library with isolated styles, Storybook docs, and npm publishing workflow.
4
+
5
+ ## Tech Stack
6
+
7
+ - React + TypeScript
8
+ - Vite (local playground)
9
+ - Storybook 10 (docs and interactive examples)
10
+ - tsup (library build to ESM + CJS + DTS)
11
+
12
+ ## Components Included
13
+
14
+ - `KiteLogo`
15
+ - `KiteLoader`
16
+ - `KitePageLoader`
17
+ - `Loading` (3-dot indicator)
18
+
19
+ Each component has:
20
+
21
+ - typed props
22
+ - Storybook controls (params playground)
23
+ - usage source examples in docs
24
+ - CSS Module styling to avoid leakage into host apps
25
+
26
+ ## Local Development
27
+
28
+ ```bash
29
+ npm install
30
+ npm run dev
31
+ ```
32
+
33
+ Run Storybook:
34
+
35
+ ```bash
36
+ npm run storybook
37
+ ```
38
+
39
+ Build package:
40
+
41
+ ```bash
42
+ npm run build:lib
43
+ ```
44
+
45
+ Build static Storybook for GitHub Pages:
46
+
47
+ ```bash
48
+ npm run build-storybook
49
+ ```
50
+
51
+ ## Install and Use
52
+
53
+ ```bash
54
+ npm install @kitelus/fly-ui
55
+ ```
56
+
57
+ ```tsx
58
+ import { KiteLoader, KitePageLoader, KiteLogo, Loading } from "@kitelus/fly-ui";
59
+
60
+ export function Example() {
61
+ return (
62
+ <div>
63
+ <KiteLogo size="md" />
64
+ <KiteLoader label="Loading panel..." />
65
+ <Loading />
66
+ <KitePageLoader message="Preparing workspace..." />
67
+ </div>
68
+ );
69
+ }
70
+ ```
71
+
72
+ ## GitHub Pages
73
+
74
+ Workflow: `.github/workflows/deploy-storybook-pages.yml`
75
+
76
+ - Trigger: push to `main`
77
+ - Output: Storybook static site on GitHub Pages
78
+
79
+ ## NPM Publish
80
+
81
+ Workflow: `.github/workflows/publish-npm.yml`
82
+
83
+ Required secret:
84
+
85
+ - `NPM_TOKEN`
86
+
87
+ Publish triggers:
88
+
89
+ - GitHub Release `published`
90
+ - manual workflow dispatch
91
+
92
+ ## Repo Setup
93
+
94
+ If this folder is used as a standalone repo:
95
+
96
+ ```bash
97
+ git init
98
+ git remote add origin https://github.com/kitelus/fly-ui.git
99
+ git add .
100
+ git commit -m "feat: bootstrap fly-ui component library"
101
+ git branch -M main
102
+ git push -u origin main
103
+ ```
package/dist/index.cjs ADDED
@@ -0,0 +1,481 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var index_exports = {};
22
+ __export(index_exports, {
23
+ FlyUIThemeProvider: () => FlyUIThemeProvider,
24
+ KiteLoader: () => KiteLoader,
25
+ KiteLogo: () => KiteLogo,
26
+ KitePageLoader: () => KitePageLoader,
27
+ Loading: () => Loading,
28
+ useFlyUITheme: () => useFlyUITheme
29
+ });
30
+ module.exports = __toCommonJS(index_exports);
31
+
32
+ // src/lib/cn.ts
33
+ function cn(...parts) {
34
+ return parts.filter(Boolean).join(" ");
35
+ }
36
+
37
+ // src/components/kite/kite-animations.module.css
38
+ var kite_animations_default = {};
39
+
40
+ // src/components/kite/theme.ts
41
+ var import_react = require("react");
42
+ var FlyUIThemeContext = (0, import_react.createContext)(void 0);
43
+ function FlyUIThemeProvider({
44
+ theme,
45
+ children
46
+ }) {
47
+ return (0, import_react.createElement)(FlyUIThemeContext.Provider, { value: theme }, children);
48
+ }
49
+ function useFlyUITheme() {
50
+ return (0, import_react.useContext)(FlyUIThemeContext);
51
+ }
52
+ function mergeKiteTheme(globalTheme, componentTheme) {
53
+ return { ...globalTheme, ...componentTheme };
54
+ }
55
+ function buildKiteThemeStyle(theme) {
56
+ if (!theme) {
57
+ return {};
58
+ }
59
+ return {
60
+ ...theme.primary ? { ["--kite-primary"]: theme.primary } : {},
61
+ ...theme.foreground ? { ["--kite-foreground"]: theme.foreground } : {},
62
+ ...theme.muted ? { ["--kite-muted"]: theme.muted } : {},
63
+ ...theme.overlayBackground ? { ["--kite-overlay-background"]: theme.overlayBackground } : {},
64
+ ...theme.overlayBlur ? { ["--kite-overlay-blur"]: theme.overlayBlur } : {}
65
+ };
66
+ }
67
+
68
+ // src/components/kite/KiteLogo.tsx
69
+ var import_jsx_runtime = require("react/jsx-runtime");
70
+ var SIZE = {
71
+ xs: { icon: 16, text: 12, gap: 6, strongWeight: 600 },
72
+ sm: { icon: 20, text: 14, gap: 8, strongWeight: 600 },
73
+ md: { icon: 24, text: 16, gap: 10, strongWeight: 600 },
74
+ lg: { icon: 28, text: 18, gap: 10, strongWeight: 700 },
75
+ xl: { icon: 40, text: 24, gap: 12, strongWeight: 700 }
76
+ };
77
+ function KiteIcon({ size }) {
78
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
79
+ "svg",
80
+ {
81
+ width: size,
82
+ height: size,
83
+ viewBox: "0 0 24 24",
84
+ fill: "none",
85
+ xmlns: "http://www.w3.org/2000/svg",
86
+ "aria-hidden": "true",
87
+ children: [
88
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M12 0 L0 9 L12 24 Z", fill: "var(--kite-primary, #0ea5e9)" }),
89
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
90
+ "path",
91
+ {
92
+ d: "M12 0 L24 9 L12 24 Z",
93
+ fill: "var(--kite-primary, #0ea5e9)",
94
+ opacity: "0.48"
95
+ }
96
+ )
97
+ ]
98
+ }
99
+ );
100
+ }
101
+ function KiteLogo({
102
+ size = "md",
103
+ showText = true,
104
+ name = "Fly",
105
+ subBrand = "UI",
106
+ theme,
107
+ className,
108
+ textClassName,
109
+ style
110
+ }) {
111
+ const cfg = SIZE[size];
112
+ const globalTheme = useFlyUITheme();
113
+ const resolvedTheme = mergeKiteTheme(globalTheme, theme);
114
+ const themeStyle = buildKiteThemeStyle(resolvedTheme);
115
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
116
+ "div",
117
+ {
118
+ className: cn(
119
+ kite_animations_default["kite-fu-host"],
120
+ kite_animations_default["kite-fu-logoWrap"],
121
+ className
122
+ ),
123
+ style: { ...themeStyle, ...style, gap: cfg.gap },
124
+ children: [
125
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(KiteIcon, { size: cfg.icon }),
126
+ showText ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
127
+ "span",
128
+ {
129
+ className: cn(kite_animations_default["kite-fu-logoText"], textClassName),
130
+ style: {
131
+ fontSize: `${cfg.text}px`,
132
+ fontFamily: '"Inter Variable", sans-serif',
133
+ letterSpacing: "-0.03em",
134
+ lineHeight: 1
135
+ },
136
+ children: [
137
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
138
+ "span",
139
+ {
140
+ className: kite_animations_default["kite-fu-logoTextStrong"],
141
+ style: { fontWeight: cfg.strongWeight },
142
+ children: name
143
+ }
144
+ ),
145
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: kite_animations_default["kite-fu-logoTextLight"], children: subBrand })
146
+ ]
147
+ }
148
+ ) : null
149
+ ]
150
+ }
151
+ );
152
+ }
153
+
154
+ // src/components/kite/KiteLoader.tsx
155
+ var import_jsx_runtime2 = require("react/jsx-runtime");
156
+ var SIZES = {
157
+ sm: 32,
158
+ md: 48,
159
+ lg: 64
160
+ };
161
+ function KiteLoader({
162
+ size = "md",
163
+ label,
164
+ showBrand = false,
165
+ name = "Fly",
166
+ subBrand = "UI",
167
+ theme,
168
+ className,
169
+ style
170
+ }) {
171
+ const px = SIZES[size];
172
+ const svgH = Math.round(px * 1.2);
173
+ const globalTheme = useFlyUITheme();
174
+ const resolvedTheme = mergeKiteTheme(globalTheme, theme);
175
+ const themeStyle = buildKiteThemeStyle(resolvedTheme);
176
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
177
+ "div",
178
+ {
179
+ className: cn(kite_animations_default["kite-fu-host"], className),
180
+ role: "status",
181
+ "aria-label": label ?? "Loading",
182
+ style: { ...themeStyle, ...style },
183
+ children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
184
+ "div",
185
+ {
186
+ style: {
187
+ display: "flex",
188
+ flexDirection: "column",
189
+ alignItems: "center",
190
+ gap: 10
191
+ },
192
+ children: [
193
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
194
+ "svg",
195
+ {
196
+ width: px,
197
+ height: svgH,
198
+ viewBox: "0 0 24 31",
199
+ fill: "none",
200
+ xmlns: "http://www.w3.org/2000/svg",
201
+ "aria-hidden": "true",
202
+ overflow: "visible",
203
+ children: [
204
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("g", { className: kite_animations_default["kite-fu-skyLayer"], "aria-hidden": "true", children: [
205
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("g", { className: kite_animations_default["kite-fu-cloudSizeSm"], children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("g", { className: kite_animations_default["kite-fu-cloudDriftHigh"], children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
206
+ "path",
207
+ {
208
+ d: "M15.4 3.8c0-0.8 0.6-1.5 1.5-1.5 0.2-1 1.1-1.8 2.1-1.8 0.7 0 1.4 0.4 1.9 1 0.2-0.1 0.5-0.1 0.7-0.1 1 0 1.9 0.9 1.9 1.9s-0.9 1.9-1.9 1.9h-4.5c-0.9 0-1.7-0.7-1.7-1.6z",
209
+ fill: "var(--kite-muted, #64748b)",
210
+ opacity: "0.28"
211
+ }
212
+ ) }) }),
213
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("g", { className: kite_animations_default["kite-fu-cloudSizeLg"], children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("g", { className: kite_animations_default["kite-fu-cloudDriftFar"], children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
214
+ "path",
215
+ {
216
+ d: "M2.4 5.7c0-1 0.8-1.8 1.8-1.8 0.2-1.2 1.3-2.1 2.5-2.1 1 0 1.8 0.5 2.3 1.3 0.3-0.1 0.5-0.1 0.8-0.1 1.3 0 2.3 1 2.3 2.3s-1 2.3-2.3 2.3H4.4c-1.1 0-2-0.9-2-2z",
217
+ fill: "var(--kite-muted, #64748b)",
218
+ opacity: "0.32"
219
+ }
220
+ ) }) })
221
+ ] }),
222
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
223
+ "g",
224
+ {
225
+ className: cn(
226
+ kite_animations_default["kite-fu-float"],
227
+ kite_animations_default["kite-fu-kiteBreath"]
228
+ ),
229
+ children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("g", { transform: "rotate(90 12 12)", children: [
230
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
231
+ "path",
232
+ {
233
+ d: "M12 0 L0 9 L12 24 Z",
234
+ fill: "var(--kite-primary, #0ea5e9)"
235
+ }
236
+ ),
237
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
238
+ "path",
239
+ {
240
+ d: "M12 0 L24 9 L12 24 Z",
241
+ fill: "var(--kite-primary, #0ea5e9)",
242
+ className: kite_animations_default["kite-fu-shadowBreathe"]
243
+ }
244
+ ),
245
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
246
+ "path",
247
+ {
248
+ d: "M12 24 Q13 28.5 12 31",
249
+ stroke: "var(--kite-muted, #64748b)",
250
+ strokeWidth: "1.5",
251
+ strokeLinecap: "round",
252
+ fill: "none",
253
+ className: kite_animations_default["kite-fu-stringSway"]
254
+ }
255
+ )
256
+ ] })
257
+ }
258
+ )
259
+ ]
260
+ }
261
+ ),
262
+ showBrand ? /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
263
+ "span",
264
+ {
265
+ className: cn(
266
+ kite_animations_default["kite-fu-logoText"],
267
+ kite_animations_default["kite-fu-loadingTextPulse"]
268
+ ),
269
+ style: {
270
+ marginTop: -2,
271
+ fontSize: 20,
272
+ fontFamily: '"Inter Variable", sans-serif',
273
+ letterSpacing: "-0.03em",
274
+ lineHeight: 1
275
+ },
276
+ children: [
277
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: kite_animations_default["kite-fu-logoTextStrong"], children: name }),
278
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: kite_animations_default["kite-fu-logoTextLight"], children: subBrand })
279
+ ]
280
+ }
281
+ ) : null,
282
+ label ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { className: kite_animations_default["kite-fu-label"], children: label }) : null
283
+ ]
284
+ }
285
+ )
286
+ }
287
+ );
288
+ }
289
+
290
+ // src/components/kite/KitePageLoader.tsx
291
+ var import_jsx_runtime3 = require("react/jsx-runtime");
292
+ function KitePageLoader({
293
+ message,
294
+ overlay = false,
295
+ name = "Fly",
296
+ subBrand = "UI",
297
+ theme,
298
+ className,
299
+ style
300
+ }) {
301
+ const globalTheme = useFlyUITheme();
302
+ const resolvedTheme = mergeKiteTheme(globalTheme, theme);
303
+ const themeStyle = buildKiteThemeStyle(resolvedTheme);
304
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
305
+ "div",
306
+ {
307
+ role: "status",
308
+ "aria-live": "polite",
309
+ "aria-label": message ?? "Loading",
310
+ className: cn(
311
+ kite_animations_default["kite-fu-host"],
312
+ kite_animations_default["kite-fu-pageWrap"],
313
+ overlay ? kite_animations_default["kite-fu-pageWrapOverlay"] : kite_animations_default["kite-fu-pageWrapFullscreen"],
314
+ className
315
+ ),
316
+ style: { ...themeStyle, ...style },
317
+ children: [
318
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
319
+ "svg",
320
+ {
321
+ width: 56,
322
+ height: 58,
323
+ viewBox: "0 0 24 31",
324
+ fill: "none",
325
+ xmlns: "http://www.w3.org/2000/svg",
326
+ "aria-hidden": "true",
327
+ overflow: "visible",
328
+ children: [
329
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("g", { className: kite_animations_default["kite-fu-skyLayer"], "aria-hidden": "true", children: [
330
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("g", { className: kite_animations_default["kite-fu-cloudSizeSm"], children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("g", { className: kite_animations_default["kite-fu-cloudDriftHigh"], children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
331
+ "path",
332
+ {
333
+ d: "M14.8 3.3c0-0.8 0.6-1.5 1.5-1.5 0.2-1 1.1-1.8 2.2-1.8 0.8 0 1.4 0.4 1.9 1 0.2-0.1 0.5-0.1 0.8-0.1 1 0 1.8 0.8 1.8 1.8s-0.8 1.8-1.8 1.8h-4.7c-0.9 0-1.7-0.6-1.7-1.2z",
334
+ fill: "var(--kite-muted, #64748b)",
335
+ opacity: "0.28"
336
+ }
337
+ ) }) }),
338
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("g", { className: kite_animations_default["kite-fu-cloudSizeLg"], children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("g", { className: kite_animations_default["kite-fu-cloudDriftFar"], children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
339
+ "path",
340
+ {
341
+ d: "M1.5 5.5c0-1.1 0.9-2 2-2 0.2-1.4 1.4-2.4 2.9-2.4 1.1 0 2 0.5 2.6 1.4 0.3-0.1 0.6-0.2 1-0.2 1.4 0 2.6 1.1 2.6 2.6s-1.2 2.6-2.6 2.6h-6.3c-1.3 0-2.3-0.9-2.3-2z",
342
+ fill: "var(--kite-muted, #64748b)",
343
+ opacity: "0.32"
344
+ }
345
+ ) }) })
346
+ ] }),
347
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
348
+ "g",
349
+ {
350
+ className: cn(kite_animations_default["kite-fu-float"], kite_animations_default["kite-fu-kiteBreath"]),
351
+ children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("g", { transform: "rotate(90 12 12)", children: [
352
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M12 0 L0 9 L12 24 Z", fill: "var(--kite-primary, #0ea5e9)" }),
353
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
354
+ "path",
355
+ {
356
+ d: "M12 0 L24 9 L12 24 Z",
357
+ fill: "var(--kite-primary, #0ea5e9)",
358
+ className: kite_animations_default["kite-fu-shadowBreathe"]
359
+ }
360
+ ),
361
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
362
+ "path",
363
+ {
364
+ d: "M12 24 Q13 28.5 12 31",
365
+ stroke: "var(--kite-muted, #64748b)",
366
+ strokeWidth: "1.5",
367
+ strokeLinecap: "round",
368
+ fill: "none",
369
+ className: kite_animations_default["kite-fu-stringSway"]
370
+ }
371
+ )
372
+ ] })
373
+ }
374
+ )
375
+ ]
376
+ }
377
+ ),
378
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
379
+ "span",
380
+ {
381
+ className: cn(
382
+ kite_animations_default["kite-fu-logoText"],
383
+ kite_animations_default["kite-fu-loadingTextPulse"]
384
+ ),
385
+ style: {
386
+ marginTop: -2,
387
+ fontSize: 20,
388
+ fontFamily: '"Inter Variable", sans-serif',
389
+ letterSpacing: "-0.03em",
390
+ lineHeight: 1
391
+ },
392
+ children: [
393
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: kite_animations_default["kite-fu-logoTextStrong"], children: name }),
394
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: kite_animations_default["kite-fu-logoTextLight"], children: subBrand })
395
+ ]
396
+ }
397
+ ),
398
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
399
+ "div",
400
+ {
401
+ className: cn(
402
+ kite_animations_default["kite-fu-loadingDots"],
403
+ kite_animations_default["kite-fu-loadingDotsBelowBrand"]
404
+ ),
405
+ "aria-hidden": "true",
406
+ children: [
407
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: kite_animations_default["kite-fu-loadingDot"] }),
408
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
409
+ "span",
410
+ {
411
+ className: cn(
412
+ kite_animations_default["kite-fu-loadingDot"],
413
+ kite_animations_default["kite-fu-loadingDot1"]
414
+ )
415
+ }
416
+ ),
417
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
418
+ "span",
419
+ {
420
+ className: cn(
421
+ kite_animations_default["kite-fu-loadingDot"],
422
+ kite_animations_default["kite-fu-loadingDot2"]
423
+ )
424
+ }
425
+ )
426
+ ]
427
+ }
428
+ ),
429
+ message ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: kite_animations_default["kite-fu-label"], children: message }) : null
430
+ ]
431
+ }
432
+ );
433
+ }
434
+
435
+ // src/components/loading/Loading.tsx
436
+ var import_jsx_runtime4 = require("react/jsx-runtime");
437
+ function Loading({ className, label, theme, style }) {
438
+ const globalTheme = useFlyUITheme();
439
+ const resolvedTheme = mergeKiteTheme(globalTheme, theme);
440
+ const themeStyle = buildKiteThemeStyle(resolvedTheme);
441
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
442
+ "div",
443
+ {
444
+ className: cn(kite_animations_default["kite-fu-host"], className),
445
+ role: "status",
446
+ "aria-label": label ?? "Loading",
447
+ style: { ...themeStyle, ...style },
448
+ children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: kite_animations_default["kite-fu-loadingDots"], children: [
449
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: kite_animations_default["kite-fu-loadingDot"] }),
450
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
451
+ "span",
452
+ {
453
+ className: cn(
454
+ kite_animations_default["kite-fu-loadingDot"],
455
+ kite_animations_default["kite-fu-loadingDot1"]
456
+ )
457
+ }
458
+ ),
459
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
460
+ "span",
461
+ {
462
+ className: cn(
463
+ kite_animations_default["kite-fu-loadingDot"],
464
+ kite_animations_default["kite-fu-loadingDot2"]
465
+ )
466
+ }
467
+ )
468
+ ] })
469
+ }
470
+ );
471
+ }
472
+ // Annotate the CommonJS export names for ESM import in node:
473
+ 0 && (module.exports = {
474
+ FlyUIThemeProvider,
475
+ KiteLoader,
476
+ KiteLogo,
477
+ KitePageLoader,
478
+ Loading,
479
+ useFlyUITheme
480
+ });
481
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/lib/cn.ts","../src/components/kite/kite-animations.module.css","../src/components/kite/theme.ts","../src/components/kite/KiteLogo.tsx","../src/components/kite/KiteLoader.tsx","../src/components/kite/KitePageLoader.tsx","../src/components/loading/Loading.tsx"],"sourcesContent":["export { KiteLogo } from \"./components/kite/KiteLogo\";\r\nexport type { KiteLogoProps } from \"./components/kite/KiteLogo\";\r\nexport type { KiteTheme } from \"./components/kite/theme\";\r\nexport { FlyUIThemeProvider, useFlyUITheme } from \"./components/kite/theme\";\r\n\r\nexport { KiteLoader } from \"./components/kite/KiteLoader\";\r\nexport type { KiteLoaderProps } from \"./components/kite/KiteLoader\";\r\n\r\nexport { KitePageLoader } from \"./components/kite/KitePageLoader\";\r\nexport type { KitePageLoaderProps } from \"./components/kite/KitePageLoader\";\r\n\r\nexport { Loading } from \"./components/loading/Loading\";\r\nexport type { LoadingProps } from \"./components/loading/Loading\";\r\n","export function cn(...parts: Array<string | false | null | undefined>): string {\r\n return parts.filter(Boolean).join(\" \");\r\n}\r\n",".kite-fu-host {\r\n --kite-primary: #0ea5e9;\r\n --kite-foreground: #0f172a;\r\n --kite-muted: #64748b;\r\n --kite-overlay-background: rgba(255, 255, 255, 0.82);\r\n --kite-overlay-blur: 2px;\r\n color: var(--kite-foreground);\r\n font-family: \"Inter Variable\", Inter, sans-serif;\r\n line-height: 1;\r\n box-sizing: border-box;\r\n}\r\n\r\n.kite-fu-host *,\r\n.kite-fu-host *::before,\r\n.kite-fu-host *::after {\r\n box-sizing: inherit;\r\n}\r\n\r\n.kite-fu-skyLayer {\r\n opacity: 0.86;\r\n}\r\n\r\n.kite-fu-cloudSizeXs,\r\n.kite-fu-cloudSizeSm,\r\n.kite-fu-cloudSizeMd,\r\n.kite-fu-cloudSizeLg {\r\n transform-box: fill-box;\r\n transform-origin: center;\r\n}\r\n\r\n.kite-fu-cloudSizeXs {\r\n transform: scale(0.78);\r\n}\r\n.kite-fu-cloudSizeSm {\r\n transform: scale(0.92);\r\n}\r\n.kite-fu-cloudSizeMd {\r\n transform: scale(1.04);\r\n}\r\n.kite-fu-cloudSizeLg {\r\n transform: scale(1.18);\r\n}\r\n\r\n.kite-fu-cloudDelayB {\r\n animation-delay: -1.9s;\r\n}\r\n.kite-fu-cloudDelayC {\r\n animation-delay: -3s;\r\n}\r\n\r\n.kite-fu-cloudDriftFar {\r\n animation: cloud-pass-far 4.6s cubic-bezier(0.4, 0.06, 0.6, 0.94) infinite;\r\n will-change: transform, opacity;\r\n}\r\n\r\n.kite-fu-cloudDriftNear {\r\n animation: cloud-pass-near 3.5s cubic-bezier(0.34, 0.08, 0.58, 0.96) infinite;\r\n animation-delay: -1.6s;\r\n will-change: transform, opacity;\r\n}\r\n\r\n.kite-fu-cloudDriftHigh {\r\n animation: cloud-pass-high 3.2s cubic-bezier(0.36, 0.07, 0.58, 0.95) infinite;\r\n animation-delay: -2.4s;\r\n will-change: transform, opacity;\r\n}\r\n\r\n.kite-fu-cloudDriftAlt {\r\n animation: cloud-pass-alt 4.1s cubic-bezier(0.38, 0.06, 0.62, 0.95) infinite;\r\n animation-delay: -0.9s;\r\n will-change: transform, opacity;\r\n}\r\n\r\n@keyframes cloud-pass-far {\r\n 0% {\r\n transform: translate3d(22px, 0.4px, 0) scale(0.96);\r\n opacity: 0;\r\n }\r\n 18% {\r\n transform: translate3d(12px, -0.3px, 0) scale(0.98);\r\n opacity: 0.5;\r\n }\r\n 52% {\r\n transform: translate3d(-4px, 0.2px, 0) scale(1);\r\n opacity: 0.58;\r\n }\r\n 82% {\r\n transform: translate3d(-18px, -0.5px, 0) scale(0.98);\r\n opacity: 0.48;\r\n }\r\n 100% {\r\n transform: translate3d(-30px, 0.4px, 0) scale(0.95);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n@keyframes cloud-pass-near {\r\n 0% {\r\n transform: translate3d(24px, -0.7px, 0) scale(1.02);\r\n opacity: 0;\r\n }\r\n 16% {\r\n transform: translate3d(14px, 0px, 0) scale(1.04);\r\n opacity: 0.62;\r\n }\r\n 48% {\r\n transform: translate3d(-4px, 0.6px, 0) scale(1.06);\r\n opacity: 0.72;\r\n }\r\n 78% {\r\n transform: translate3d(-18px, -0.1px, 0) scale(1.03);\r\n opacity: 0.64;\r\n }\r\n 100% {\r\n transform: translate3d(-32px, -0.8px, 0) scale(1.01);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n@keyframes cloud-pass-high {\r\n 0% {\r\n transform: translate3d(26px, -1.2px, 0) scale(0.9);\r\n opacity: 0;\r\n }\r\n 20% {\r\n transform: translate3d(15px, -1.6px, 0) scale(0.95);\r\n opacity: 0.52;\r\n }\r\n 55% {\r\n transform: translate3d(-5px, -1px, 0) scale(0.98);\r\n opacity: 0.58;\r\n }\r\n 84% {\r\n transform: translate3d(-21px, -1.4px, 0) scale(0.94);\r\n opacity: 0.46;\r\n }\r\n 100% {\r\n transform: translate3d(-34px, -1.1px, 0) scale(0.9);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n@keyframes cloud-pass-alt {\r\n 0% {\r\n transform: translate3d(24px, 1px, 0) scale(1.08);\r\n opacity: 0;\r\n }\r\n 15% {\r\n transform: translate3d(15px, 0.2px, 0) scale(1.1);\r\n opacity: 0.62;\r\n }\r\n 49% {\r\n transform: translate3d(-4px, 0.9px, 0) scale(1.12);\r\n opacity: 0.7;\r\n }\r\n 79% {\r\n transform: translate3d(-20px, 0.4px, 0) scale(1.08);\r\n opacity: 0.56;\r\n }\r\n 100% {\r\n transform: translate3d(-34px, 1.1px, 0) scale(1.05);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n.kite-fu-float {\r\n animation: kite-float 1.9s cubic-bezier(0.45, 0.05, 0.55, 0.95) infinite;\r\n transform-box: fill-box;\r\n transform-origin: center;\r\n}\r\n\r\n@keyframes kite-float {\r\n 0% {\r\n transform: translate(-11px, 0px) rotate(-5deg);\r\n }\r\n 16% {\r\n transform: translate(-6px, -1px) rotate(-2deg);\r\n }\r\n 32% {\r\n transform: translate(0px, -2px) rotate(1deg);\r\n }\r\n 48% {\r\n transform: translate(7px, -1px) rotate(4deg);\r\n }\r\n 64% {\r\n transform: translate(11px, 0px) rotate(6deg);\r\n }\r\n 80% {\r\n transform: translate(4px, 1px) rotate(3deg);\r\n }\r\n 92% {\r\n transform: translate(-5px, 1px) rotate(-2deg);\r\n }\r\n 100% {\r\n transform: translate(-11px, 0px) rotate(-5deg);\r\n }\r\n}\r\n\r\n.kite-fu-shadowBreathe {\r\n animation: kite-shadow-breathe 1.9s ease-in-out infinite;\r\n opacity: 0.48;\r\n}\r\n\r\n@keyframes kite-shadow-breathe {\r\n 0% {\r\n opacity: 0.48;\r\n }\r\n 30% {\r\n opacity: 0.66;\r\n }\r\n 50% {\r\n opacity: 0.82;\r\n }\r\n 72% {\r\n opacity: 0.64;\r\n }\r\n 100% {\r\n opacity: 0.48;\r\n }\r\n}\r\n\r\n.kite-fu-stringSway {\r\n animation: kite-string-sway 1.9s ease-in-out infinite;\r\n transform-box: fill-box;\r\n transform-origin: top center;\r\n opacity: 0.35;\r\n}\r\n\r\n@keyframes kite-string-sway {\r\n 0% {\r\n transform: rotate(6deg);\r\n }\r\n 16% {\r\n transform: rotate(3deg);\r\n }\r\n 32% {\r\n transform: rotate(-2deg);\r\n }\r\n 48% {\r\n transform: rotate(-6deg);\r\n }\r\n 64% {\r\n transform: rotate(-7deg);\r\n }\r\n 80% {\r\n transform: rotate(-1deg);\r\n }\r\n 92% {\r\n transform: rotate(4deg);\r\n }\r\n 100% {\r\n transform: rotate(6deg);\r\n }\r\n}\r\n\r\n.kite-fu-kiteBreath {\r\n animation: kite-breath 1.6s ease-in-out infinite;\r\n}\r\n\r\n@keyframes kite-breath {\r\n 0%,\r\n 100% {\r\n opacity: 1;\r\n }\r\n 50% {\r\n opacity: 0.45;\r\n }\r\n}\r\n\r\n.kite-fu-dot {\r\n animation: kite-dot 1.2s ease-in-out infinite;\r\n}\r\n\r\n.kite-fu-dot1 {\r\n animation-delay: 0.15s;\r\n}\r\n.kite-fu-dot2 {\r\n animation-delay: 0.3s;\r\n}\r\n\r\n@keyframes kite-dot {\r\n 0%,\r\n 60%,\r\n 100% {\r\n transform: translateY(0);\r\n opacity: 0.3;\r\n }\r\n 30% {\r\n transform: translateY(-5px);\r\n opacity: 1;\r\n }\r\n}\r\n\r\n@keyframes kite-label-pulse {\r\n 0%,\r\n 100% {\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n 50% {\r\n opacity: 0.42;\r\n transform: translateY(0.5px);\r\n }\r\n}\r\n\r\n.kite-fu-loadingDots {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 6px;\r\n}\r\n\r\n.kite-fu-loadingDotsBelowBrand {\r\n margin-top: 14px;\r\n}\r\n\r\n.kite-fu-loadingDot {\r\n width: 6px;\r\n height: 6px;\r\n border-radius: 9999px;\r\n background: var(--kite-primary);\r\n animation: kite-dot 1.2s ease-in-out infinite;\r\n}\r\n\r\n.kite-fu-loadingDot1 {\r\n animation-delay: 0.15s;\r\n}\r\n.kite-fu-loadingDot2 {\r\n animation-delay: 0.3s;\r\n}\r\n\r\n.kite-fu-logoWrap {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 10px;\r\n}\r\n\r\n.kite-fu-logoText {\r\n margin: 0;\r\n color: var(--kite-foreground);\r\n letter-spacing: -0.03em;\r\n line-height: 1;\r\n}\r\n\r\n.kite-fu-logoTextStrong {\r\n font-weight: 600;\r\n}\r\n\r\n.kite-fu-logoTextLight {\r\n font-weight: 300;\r\n}\r\n\r\n.kite-fu-pageWrap {\r\n font-family: \"Inter Variable\", Inter, sans-serif;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n font-weight: 400;\r\n}\r\n\r\n.kite-fu-pageWrapFullscreen {\r\n min-height: 100vh;\r\n}\r\n\r\n.kite-fu-pageWrapOverlay {\r\n position: fixed;\r\n inset: 0;\r\n z-index: 50;\r\n background: var(--kite-overlay-background);\r\n backdrop-filter: blur(var(--kite-overlay-blur));\r\n}\r\n\r\n.kite-fu-label {\r\n margin: 10px 0 0;\r\n font-size: 14px;\r\n font-family: \"Inter Variable\", Inter, sans-serif;\r\n font-weight: 400;\r\n line-height: 1.4;\r\n color: var(--kite-muted);\r\n animation: kite-label-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\r\n}\r\n\r\n.kite-fu-loadingTextPulse {\r\n animation: kite-label-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\r\n}\r\n","import {\r\n createElement,\r\n createContext,\r\n type CSSProperties,\r\n type ReactNode,\r\n useContext,\r\n} from \"react\";\r\n\r\nexport interface KiteTheme {\r\n primary?: string;\r\n foreground?: string;\r\n muted?: string;\r\n overlayBackground?: string;\r\n overlayBlur?: string;\r\n}\r\n\r\ninterface FlyUIThemeProviderProps {\r\n theme?: KiteTheme;\r\n children: ReactNode;\r\n}\r\n\r\nconst FlyUIThemeContext = createContext<KiteTheme | undefined>(undefined);\r\n\r\nexport function FlyUIThemeProvider({\r\n theme,\r\n children,\r\n}: FlyUIThemeProviderProps) {\r\n return createElement(FlyUIThemeContext.Provider, { value: theme }, children);\r\n}\r\n\r\nexport function useFlyUITheme() {\r\n return useContext(FlyUIThemeContext);\r\n}\r\n\r\nexport function mergeKiteTheme(\r\n globalTheme?: KiteTheme,\r\n componentTheme?: KiteTheme,\r\n) {\r\n return { ...globalTheme, ...componentTheme };\r\n}\r\n\r\nexport function buildKiteThemeStyle(theme?: KiteTheme): CSSProperties {\r\n if (!theme) {\r\n return {};\r\n }\r\n\r\n return {\r\n ...(theme.primary ? { [\"--kite-primary\" as string]: theme.primary } : {}),\r\n ...(theme.foreground\r\n ? { [\"--kite-foreground\" as string]: theme.foreground }\r\n : {}),\r\n ...(theme.muted ? { [\"--kite-muted\" as string]: theme.muted } : {}),\r\n ...(theme.overlayBackground\r\n ? { [\"--kite-overlay-background\" as string]: theme.overlayBackground }\r\n : {}),\r\n ...(theme.overlayBlur\r\n ? { [\"--kite-overlay-blur\" as string]: theme.overlayBlur }\r\n : {}),\r\n } as CSSProperties;\r\n}\r\n","import type { CSSProperties } from \"react\";\r\n\r\nimport { cn } from \"../../lib/cn\";\r\n\r\nimport styles from \"./kite-animations.module.css\";\r\nimport {\r\n buildKiteThemeStyle,\r\n mergeKiteTheme,\r\n type KiteTheme,\r\n useFlyUITheme,\r\n} from \"./theme\";\r\n\r\nconst SIZE = {\r\n xs: { icon: 16, text: 12, gap: 6, strongWeight: 600 },\r\n sm: { icon: 20, text: 14, gap: 8, strongWeight: 600 },\r\n md: { icon: 24, text: 16, gap: 10, strongWeight: 600 },\r\n lg: { icon: 28, text: 18, gap: 10, strongWeight: 700 },\r\n xl: { icon: 40, text: 24, gap: 12, strongWeight: 700 },\r\n} as const;\r\n\r\ntype SizeKey = keyof typeof SIZE;\r\n\r\nexport interface KiteLogoProps {\r\n size?: SizeKey;\r\n showText?: boolean;\r\n name?: string;\r\n subBrand?: string;\r\n theme?: KiteTheme;\r\n className?: string;\r\n textClassName?: string;\r\n style?: CSSProperties;\r\n}\r\n\r\nfunction KiteIcon({ size }: { size: number }) {\r\n return (\r\n <svg\r\n width={size}\r\n height={size}\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n aria-hidden=\"true\"\r\n >\r\n <path d=\"M12 0 L0 9 L12 24 Z\" fill=\"var(--kite-primary, #0ea5e9)\" />\r\n <path\r\n d=\"M12 0 L24 9 L12 24 Z\"\r\n fill=\"var(--kite-primary, #0ea5e9)\"\r\n opacity=\"0.48\"\r\n />\r\n </svg>\r\n );\r\n}\r\n\r\nexport function KiteLogo({\r\n size = \"md\",\r\n showText = true,\r\n name = \"Fly\",\r\n subBrand = \"UI\",\r\n theme,\r\n className,\r\n textClassName,\r\n style,\r\n}: KiteLogoProps) {\r\n const cfg = SIZE[size];\r\n const globalTheme = useFlyUITheme();\r\n const resolvedTheme = mergeKiteTheme(globalTheme, theme);\r\n const themeStyle = buildKiteThemeStyle(resolvedTheme);\r\n\r\n return (\r\n <div\r\n className={cn(\r\n styles[\"kite-fu-host\"],\r\n styles[\"kite-fu-logoWrap\"],\r\n className,\r\n )}\r\n style={{ ...themeStyle, ...style, gap: cfg.gap }}\r\n >\r\n <KiteIcon size={cfg.icon} />\r\n {showText ? (\r\n <span\r\n className={cn(styles[\"kite-fu-logoText\"], textClassName)}\r\n style={{\r\n fontSize: `${cfg.text}px`,\r\n fontFamily: '\"Inter Variable\", sans-serif',\r\n letterSpacing: \"-0.03em\",\r\n lineHeight: 1,\r\n }}\r\n >\r\n <span\r\n className={styles[\"kite-fu-logoTextStrong\"]}\r\n style={{ fontWeight: cfg.strongWeight }}\r\n >\r\n {name}\r\n </span>\r\n <span className={styles[\"kite-fu-logoTextLight\"]}>{subBrand}</span>\r\n </span>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","import type { CSSProperties } from \"react\";\r\n\r\nimport { cn } from \"../../lib/cn\";\r\n\r\nimport styles from \"./kite-animations.module.css\";\r\nimport {\r\n buildKiteThemeStyle,\r\n mergeKiteTheme,\r\n type KiteTheme,\r\n useFlyUITheme,\r\n} from \"./theme\";\r\n\r\nconst SIZES = {\r\n sm: 32,\r\n md: 48,\r\n lg: 64,\r\n} as const;\r\n\r\ntype LoaderSize = keyof typeof SIZES;\r\n\r\nexport interface KiteLoaderProps {\r\n size?: LoaderSize;\r\n label?: string;\r\n showBrand?: boolean;\r\n name?: string;\r\n subBrand?: string;\r\n theme?: KiteTheme;\r\n className?: string;\r\n style?: CSSProperties;\r\n}\r\n\r\nexport function KiteLoader({\r\n size = \"md\",\r\n label,\r\n showBrand = false,\r\n name = \"Fly\",\r\n subBrand = \"UI\",\r\n theme,\r\n className,\r\n style,\r\n}: KiteLoaderProps) {\r\n const px = SIZES[size];\r\n const svgH = Math.round(px * 1.2);\r\n const globalTheme = useFlyUITheme();\r\n const resolvedTheme = mergeKiteTheme(globalTheme, theme);\r\n const themeStyle = buildKiteThemeStyle(resolvedTheme);\r\n\r\n return (\r\n <div\r\n className={cn(styles[\"kite-fu-host\"], className)}\r\n role=\"status\"\r\n aria-label={label ?? \"Loading\"}\r\n style={{ ...themeStyle, ...style }}\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n gap: 10,\r\n }}\r\n >\r\n <svg\r\n width={px}\r\n height={svgH}\r\n viewBox=\"0 0 24 31\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n aria-hidden=\"true\"\r\n overflow=\"visible\"\r\n >\r\n <g className={styles[\"kite-fu-skyLayer\"]} aria-hidden=\"true\">\r\n <g className={styles[\"kite-fu-cloudSizeSm\"]}>\r\n <g className={styles[\"kite-fu-cloudDriftHigh\"]}>\r\n <path\r\n d=\"M15.4 3.8c0-0.8 0.6-1.5 1.5-1.5 0.2-1 1.1-1.8 2.1-1.8 0.7 0 1.4 0.4 1.9 1 0.2-0.1 0.5-0.1 0.7-0.1 1 0 1.9 0.9 1.9 1.9s-0.9 1.9-1.9 1.9h-4.5c-0.9 0-1.7-0.7-1.7-1.6z\"\r\n fill=\"var(--kite-muted, #64748b)\"\r\n opacity=\"0.28\"\r\n />\r\n </g>\r\n </g>\r\n <g className={styles[\"kite-fu-cloudSizeLg\"]}>\r\n <g className={styles[\"kite-fu-cloudDriftFar\"]}>\r\n <path\r\n d=\"M2.4 5.7c0-1 0.8-1.8 1.8-1.8 0.2-1.2 1.3-2.1 2.5-2.1 1 0 1.8 0.5 2.3 1.3 0.3-0.1 0.5-0.1 0.8-0.1 1.3 0 2.3 1 2.3 2.3s-1 2.3-2.3 2.3H4.4c-1.1 0-2-0.9-2-2z\"\r\n fill=\"var(--kite-muted, #64748b)\"\r\n opacity=\"0.32\"\r\n />\r\n </g>\r\n </g>\r\n </g>\r\n <g\r\n className={cn(\r\n styles[\"kite-fu-float\"],\r\n styles[\"kite-fu-kiteBreath\"],\r\n )}\r\n >\r\n <g transform=\"rotate(90 12 12)\">\r\n <path\r\n d=\"M12 0 L0 9 L12 24 Z\"\r\n fill=\"var(--kite-primary, #0ea5e9)\"\r\n />\r\n <path\r\n d=\"M12 0 L24 9 L12 24 Z\"\r\n fill=\"var(--kite-primary, #0ea5e9)\"\r\n className={styles[\"kite-fu-shadowBreathe\"]}\r\n />\r\n <path\r\n d=\"M12 24 Q13 28.5 12 31\"\r\n stroke=\"var(--kite-muted, #64748b)\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n fill=\"none\"\r\n className={styles[\"kite-fu-stringSway\"]}\r\n />\r\n </g>\r\n </g>\r\n </svg>\r\n {showBrand ? (\r\n <span\r\n className={cn(\r\n styles[\"kite-fu-logoText\"],\r\n styles[\"kite-fu-loadingTextPulse\"],\r\n )}\r\n style={{\r\n marginTop: -2,\r\n fontSize: 20,\r\n fontFamily: '\"Inter Variable\", sans-serif',\r\n letterSpacing: \"-0.03em\",\r\n lineHeight: 1,\r\n }}\r\n >\r\n <span className={styles[\"kite-fu-logoTextStrong\"]}>{name}</span>\r\n <span className={styles[\"kite-fu-logoTextLight\"]}>{subBrand}</span>\r\n </span>\r\n ) : null}\r\n {label ? <p className={styles[\"kite-fu-label\"]}>{label}</p> : null}\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import type { CSSProperties } from \"react\";\r\n\r\nimport { cn } from \"../../lib/cn\";\r\n\r\nimport styles from \"./kite-animations.module.css\";\r\nimport {\r\n buildKiteThemeStyle,\r\n mergeKiteTheme,\r\n type KiteTheme,\r\n useFlyUITheme,\r\n} from \"./theme\";\r\n\r\nexport interface KitePageLoaderProps {\r\n message?: string;\r\n overlay?: boolean;\r\n name?: string;\r\n subBrand?: string;\r\n theme?: KiteTheme;\r\n className?: string;\r\n style?: CSSProperties;\r\n}\r\n\r\nexport function KitePageLoader({\r\n message,\r\n overlay = false,\r\n name = \"Fly\",\r\n subBrand = \"UI\",\r\n theme,\r\n className,\r\n style,\r\n}: KitePageLoaderProps) {\r\n const globalTheme = useFlyUITheme();\r\n const resolvedTheme = mergeKiteTheme(globalTheme, theme);\r\n const themeStyle = buildKiteThemeStyle(resolvedTheme);\r\n\r\n return (\r\n <div\r\n role=\"status\"\r\n aria-live=\"polite\"\r\n aria-label={message ?? \"Loading\"}\r\n className={cn(\r\n styles[\"kite-fu-host\"],\r\n styles[\"kite-fu-pageWrap\"],\r\n overlay\r\n ? styles[\"kite-fu-pageWrapOverlay\"]\r\n : styles[\"kite-fu-pageWrapFullscreen\"],\r\n className,\r\n )}\r\n style={{ ...themeStyle, ...style }}\r\n >\r\n <svg\r\n width={56}\r\n height={58}\r\n viewBox=\"0 0 24 31\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n aria-hidden=\"true\"\r\n overflow=\"visible\"\r\n >\r\n <g className={styles[\"kite-fu-skyLayer\"]} aria-hidden=\"true\">\r\n <g className={styles[\"kite-fu-cloudSizeSm\"]}>\r\n <g className={styles[\"kite-fu-cloudDriftHigh\"]}>\r\n <path\r\n d=\"M14.8 3.3c0-0.8 0.6-1.5 1.5-1.5 0.2-1 1.1-1.8 2.2-1.8 0.8 0 1.4 0.4 1.9 1 0.2-0.1 0.5-0.1 0.8-0.1 1 0 1.8 0.8 1.8 1.8s-0.8 1.8-1.8 1.8h-4.7c-0.9 0-1.7-0.6-1.7-1.2z\"\r\n fill=\"var(--kite-muted, #64748b)\"\r\n opacity=\"0.28\"\r\n />\r\n </g>\r\n </g>\r\n <g className={styles[\"kite-fu-cloudSizeLg\"]}>\r\n <g className={styles[\"kite-fu-cloudDriftFar\"]}>\r\n <path\r\n d=\"M1.5 5.5c0-1.1 0.9-2 2-2 0.2-1.4 1.4-2.4 2.9-2.4 1.1 0 2 0.5 2.6 1.4 0.3-0.1 0.6-0.2 1-0.2 1.4 0 2.6 1.1 2.6 2.6s-1.2 2.6-2.6 2.6h-6.3c-1.3 0-2.3-0.9-2.3-2z\"\r\n fill=\"var(--kite-muted, #64748b)\"\r\n opacity=\"0.32\"\r\n />\r\n </g>\r\n </g>\r\n </g>\r\n <g\r\n className={cn(styles[\"kite-fu-float\"], styles[\"kite-fu-kiteBreath\"])}\r\n >\r\n <g transform=\"rotate(90 12 12)\">\r\n <path d=\"M12 0 L0 9 L12 24 Z\" fill=\"var(--kite-primary, #0ea5e9)\" />\r\n <path\r\n d=\"M12 0 L24 9 L12 24 Z\"\r\n fill=\"var(--kite-primary, #0ea5e9)\"\r\n className={styles[\"kite-fu-shadowBreathe\"]}\r\n />\r\n <path\r\n d=\"M12 24 Q13 28.5 12 31\"\r\n stroke=\"var(--kite-muted, #64748b)\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n fill=\"none\"\r\n className={styles[\"kite-fu-stringSway\"]}\r\n />\r\n </g>\r\n </g>\r\n </svg>\r\n\r\n <span\r\n className={cn(\r\n styles[\"kite-fu-logoText\"],\r\n styles[\"kite-fu-loadingTextPulse\"],\r\n )}\r\n style={{\r\n marginTop: -2,\r\n fontSize: 20,\r\n fontFamily: '\"Inter Variable\", sans-serif',\r\n letterSpacing: \"-0.03em\",\r\n lineHeight: 1,\r\n }}\r\n >\r\n <span className={styles[\"kite-fu-logoTextStrong\"]}>{name}</span>\r\n <span className={styles[\"kite-fu-logoTextLight\"]}>{subBrand}</span>\r\n </span>\r\n\r\n <div\r\n className={cn(\r\n styles[\"kite-fu-loadingDots\"],\r\n styles[\"kite-fu-loadingDotsBelowBrand\"],\r\n )}\r\n aria-hidden=\"true\"\r\n >\r\n <span className={styles[\"kite-fu-loadingDot\"]} />\r\n <span\r\n className={cn(\r\n styles[\"kite-fu-loadingDot\"],\r\n styles[\"kite-fu-loadingDot1\"],\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n styles[\"kite-fu-loadingDot\"],\r\n styles[\"kite-fu-loadingDot2\"],\r\n )}\r\n />\r\n </div>\r\n\r\n {message ? <p className={styles[\"kite-fu-label\"]}>{message}</p> : null}\r\n </div>\r\n );\r\n}\r\n","import type { CSSProperties } from \"react\";\r\n\r\nimport { cn } from \"../../lib/cn\";\r\n\r\nimport styles from \"../kite/kite-animations.module.css\";\r\nimport {\r\n buildKiteThemeStyle,\r\n mergeKiteTheme,\r\n type KiteTheme,\r\n useFlyUITheme,\r\n} from \"../kite/theme\";\r\n\r\nexport interface LoadingProps {\r\n className?: string;\r\n label?: string;\r\n theme?: KiteTheme;\r\n style?: CSSProperties;\r\n}\r\n\r\nexport function Loading({ className, label, theme, style }: LoadingProps) {\r\n const globalTheme = useFlyUITheme();\r\n const resolvedTheme = mergeKiteTheme(globalTheme, theme);\r\n const themeStyle = buildKiteThemeStyle(resolvedTheme);\r\n\r\n return (\r\n <div\r\n className={cn(styles[\"kite-fu-host\"], className)}\r\n role=\"status\"\r\n aria-label={label ?? \"Loading\"}\r\n style={{ ...themeStyle, ...style }}\r\n >\r\n <div className={styles[\"kite-fu-loadingDots\"]}>\r\n <span className={styles[\"kite-fu-loadingDot\"]} />\r\n <span\r\n className={cn(\r\n styles[\"kite-fu-loadingDot\"],\r\n styles[\"kite-fu-loadingDot1\"],\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n styles[\"kite-fu-loadingDot\"],\r\n styles[\"kite-fu-loadingDot2\"],\r\n )}\r\n />\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"mappings":"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","names":["import_jsx_runtime","import_jsx_runtime","import_jsx_runtime"]}