@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 +103 -0
- package/dist/index.cjs +481 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.css +354 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.cts +101 -0
- package/dist/index.d.ts +101 -0
- package/dist/index.js +453 -0
- package/dist/index.js.map +1 -0
- package/package.json +74 -0
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"]}
|