@kitelus/fly-ui 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Thanh Binh & Kitelus
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,29 +1,56 @@
1
- # Fly UI
1
+ # FlyUI
2
2
 
3
- Modern React component library with isolated styles, Storybook docs, and npm publishing workflow.
3
+ Lightweight React component library focused on loading UX with isolated styles and Storybook-driven documentation.
4
4
 
5
- ## Tech Stack
5
+ [![npm version](https://img.shields.io/npm/v/@kitelus/fly-ui)](https://www.npmjs.com/package/@kitelus/fly-ui)
6
+ [![npm downloads](https://img.shields.io/npm/dm/@kitelus/fly-ui)](https://www.npmjs.com/package/@kitelus/fly-ui)
7
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)
6
8
 
7
- - React + TypeScript
8
- - Vite (local playground)
9
- - Storybook 10 (docs and interactive examples)
10
- - tsup (library build to ESM + CJS + DTS)
9
+ ## Links
11
10
 
12
- ## Components Included
11
+ - GitHub: https://github.com/kitelus/fly-ui
12
+ - npm: https://www.npmjs.com/package/@kitelus/fly-ui
13
+ - Storybook Docs: https://kitelus.github.io/fly-ui/
14
+
15
+ ## Features
16
+
17
+ - Isolated component styles via CSS Modules (prefixed classes)
18
+ - Loading-focused UI components for product consistency
19
+ - Global + per-component theming support
20
+ - Storybook docs and usage playground
21
+ - ESM + CJS + TypeScript declarations build output
22
+
23
+ ## Components
13
24
 
14
25
  - `KiteLogo`
15
26
  - `KiteLoader`
16
27
  - `KitePageLoader`
17
- - `Loading` (3-dot indicator)
28
+ - `Loading`
29
+
30
+ ## Installation
31
+
32
+ ```bash
33
+ npm install @kitelus/fly-ui
34
+ ```
18
35
 
19
- Each component has:
36
+ ## Quick Start
37
+
38
+ ```tsx
39
+ import { KiteLogo, KiteLoader, KitePageLoader, Loading } from "@kitelus/fly-ui";
20
40
 
21
- - typed props
22
- - Storybook controls (params playground)
23
- - usage source examples in docs
24
- - CSS Module styling to avoid leakage into host apps
41
+ export function Example() {
42
+ return (
43
+ <div>
44
+ <KiteLogo size="md" name="Fly" subBrand="UI" />
45
+ <KiteLoader showBrand label="Loading section..." />
46
+ <Loading />
47
+ <KitePageLoader message="Preparing workspace..." />
48
+ </div>
49
+ );
50
+ }
51
+ ```
25
52
 
26
- ## Local Development
53
+ ## Development
27
54
 
28
55
  ```bash
29
56
  npm install
@@ -36,7 +63,7 @@ Run Storybook:
36
63
  npm run storybook
37
64
  ```
38
65
 
39
- Build package:
66
+ Build the package:
40
67
 
41
68
  ```bash
42
69
  npm run build:lib
@@ -48,56 +75,30 @@ Build static Storybook for GitHub Pages:
48
75
  npm run build-storybook
49
76
  ```
50
77
 
51
- ## Install and Use
78
+ ## Contributing
52
79
 
53
- ```bash
54
- npm install @kitelus/fly-ui
55
- ```
80
+ Contributions are welcome.
56
81
 
57
- ```tsx
58
- import { KiteLoader, KitePageLoader, KiteLogo, Loading } from "@kitelus/fly-ui";
82
+ 1. Fork the repository
83
+ 2. Create your feature branch
84
+ 3. Commit your changes with clear messages
85
+ 4. Open a pull request
59
86
 
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
87
+ Please include a clear description of the change and update docs/stories when relevant.
78
88
 
79
- ## NPM Publish
89
+ See detailed guidelines in [CONTRIBUTING.md](./CONTRIBUTING.md).
80
90
 
81
- Workflow: `.github/workflows/publish-npm.yml`
91
+ ## Community
82
92
 
83
- Required secret:
93
+ - Code of Conduct: [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md)
94
+ - Contributing Guide: [CONTRIBUTING.md](./CONTRIBUTING.md)
95
+ - Security Policy: [SECURITY.md](./SECURITY.md)
84
96
 
85
- - `NPM_TOKEN`
97
+ ## License
86
98
 
87
- Publish triggers:
99
+ This project is licensed under the MIT License. See [LICENSE](./LICENSE) for full details.
88
100
 
89
- - GitHub Release `published`
90
- - manual workflow dispatch
101
+ ## Contact
91
102
 
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
- ```
103
+ - Maintainer: Binh Tran
104
+ - Email: thanhbinh.bent@gmail.com
package/dist/index.cjs CHANGED
@@ -68,11 +68,11 @@ function buildKiteThemeStyle(theme) {
68
68
  // src/components/kite/KiteLogo.tsx
69
69
  var import_jsx_runtime = require("react/jsx-runtime");
70
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 }
71
+ xs: { icon: 16, text: 12, gap: 4, strongWeight: 600 },
72
+ sm: { icon: 20, text: 14, gap: 6, strongWeight: 600 },
73
+ md: { icon: 24, text: 16, gap: 7, strongWeight: 600 },
74
+ lg: { icon: 28, text: 18, gap: 8, strongWeight: 700 },
75
+ xl: { icon: 40, text: 24, gap: 9, strongWeight: 700 }
76
76
  };
77
77
  function KiteIcon({ size }) {
78
78
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
@@ -103,6 +103,7 @@ function KiteLogo({
103
103
  showText = true,
104
104
  name = "Fly",
105
105
  subBrand = "UI",
106
+ iconTextGap,
106
107
  theme,
107
108
  className,
108
109
  textClassName,
@@ -120,7 +121,7 @@ function KiteLogo({
120
121
  kite_animations_default["kite-fu-logoWrap"],
121
122
  className
122
123
  ),
123
- style: { ...themeStyle, ...style, gap: cfg.gap },
124
+ style: { ...themeStyle, ...style, gap: iconTextGap ?? cfg.gap },
124
125
  children: [
125
126
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(KiteIcon, { size: cfg.icon }),
126
127
  showText ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
@@ -1 +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"]}
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\";\nexport type { KiteLogoProps } from \"./components/kite/KiteLogo\";\nexport type { KiteTheme } from \"./components/kite/theme\";\nexport { FlyUIThemeProvider, useFlyUITheme } from \"./components/kite/theme\";\n\nexport { KiteLoader } from \"./components/kite/KiteLoader\";\nexport type { KiteLoaderProps } from \"./components/kite/KiteLoader\";\n\nexport { KitePageLoader } from \"./components/kite/KitePageLoader\";\nexport type { KitePageLoaderProps } from \"./components/kite/KitePageLoader\";\n\nexport { Loading } from \"./components/loading/Loading\";\nexport type { LoadingProps } from \"./components/loading/Loading\";\n","export function cn(...parts: Array<string | false | null | undefined>): string {\n return parts.filter(Boolean).join(\" \");\n}\n",".kite-fu-host {\n --kite-primary: #0ea5e9;\n --kite-foreground: #0f172a;\n --kite-muted: #64748b;\n --kite-overlay-background: rgba(255, 255, 255, 0.82);\n --kite-overlay-blur: 2px;\n color: var(--kite-foreground);\n font-family: \"Inter Variable\", Inter, sans-serif;\n line-height: 1;\n box-sizing: border-box;\n}\n\n.kite-fu-host *,\n.kite-fu-host *::before,\n.kite-fu-host *::after {\n box-sizing: inherit;\n}\n\n.kite-fu-skyLayer {\n opacity: 0.86;\n}\n\n.kite-fu-cloudSizeXs,\n.kite-fu-cloudSizeSm,\n.kite-fu-cloudSizeMd,\n.kite-fu-cloudSizeLg {\n transform-box: fill-box;\n transform-origin: center;\n}\n\n.kite-fu-cloudSizeXs {\n transform: scale(0.78);\n}\n.kite-fu-cloudSizeSm {\n transform: scale(0.92);\n}\n.kite-fu-cloudSizeMd {\n transform: scale(1.04);\n}\n.kite-fu-cloudSizeLg {\n transform: scale(1.18);\n}\n\n.kite-fu-cloudDelayB {\n animation-delay: -1.9s;\n}\n.kite-fu-cloudDelayC {\n animation-delay: -3s;\n}\n\n.kite-fu-cloudDriftFar {\n animation: cloud-pass-far 4.6s cubic-bezier(0.4, 0.06, 0.6, 0.94) infinite;\n will-change: transform, opacity;\n}\n\n.kite-fu-cloudDriftNear {\n animation: cloud-pass-near 3.5s cubic-bezier(0.34, 0.08, 0.58, 0.96) infinite;\n animation-delay: -1.6s;\n will-change: transform, opacity;\n}\n\n.kite-fu-cloudDriftHigh {\n animation: cloud-pass-high 3.2s cubic-bezier(0.36, 0.07, 0.58, 0.95) infinite;\n animation-delay: -2.4s;\n will-change: transform, opacity;\n}\n\n.kite-fu-cloudDriftAlt {\n animation: cloud-pass-alt 4.1s cubic-bezier(0.38, 0.06, 0.62, 0.95) infinite;\n animation-delay: -0.9s;\n will-change: transform, opacity;\n}\n\n@keyframes cloud-pass-far {\n 0% {\n transform: translate3d(22px, 0.4px, 0) scale(0.96);\n opacity: 0;\n }\n 18% {\n transform: translate3d(12px, -0.3px, 0) scale(0.98);\n opacity: 0.5;\n }\n 52% {\n transform: translate3d(-4px, 0.2px, 0) scale(1);\n opacity: 0.58;\n }\n 82% {\n transform: translate3d(-18px, -0.5px, 0) scale(0.98);\n opacity: 0.48;\n }\n 100% {\n transform: translate3d(-30px, 0.4px, 0) scale(0.95);\n opacity: 0;\n }\n}\n\n@keyframes cloud-pass-near {\n 0% {\n transform: translate3d(24px, -0.7px, 0) scale(1.02);\n opacity: 0;\n }\n 16% {\n transform: translate3d(14px, 0px, 0) scale(1.04);\n opacity: 0.62;\n }\n 48% {\n transform: translate3d(-4px, 0.6px, 0) scale(1.06);\n opacity: 0.72;\n }\n 78% {\n transform: translate3d(-18px, -0.1px, 0) scale(1.03);\n opacity: 0.64;\n }\n 100% {\n transform: translate3d(-32px, -0.8px, 0) scale(1.01);\n opacity: 0;\n }\n}\n\n@keyframes cloud-pass-high {\n 0% {\n transform: translate3d(26px, -1.2px, 0) scale(0.9);\n opacity: 0;\n }\n 20% {\n transform: translate3d(15px, -1.6px, 0) scale(0.95);\n opacity: 0.52;\n }\n 55% {\n transform: translate3d(-5px, -1px, 0) scale(0.98);\n opacity: 0.58;\n }\n 84% {\n transform: translate3d(-21px, -1.4px, 0) scale(0.94);\n opacity: 0.46;\n }\n 100% {\n transform: translate3d(-34px, -1.1px, 0) scale(0.9);\n opacity: 0;\n }\n}\n\n@keyframes cloud-pass-alt {\n 0% {\n transform: translate3d(24px, 1px, 0) scale(1.08);\n opacity: 0;\n }\n 15% {\n transform: translate3d(15px, 0.2px, 0) scale(1.1);\n opacity: 0.62;\n }\n 49% {\n transform: translate3d(-4px, 0.9px, 0) scale(1.12);\n opacity: 0.7;\n }\n 79% {\n transform: translate3d(-20px, 0.4px, 0) scale(1.08);\n opacity: 0.56;\n }\n 100% {\n transform: translate3d(-34px, 1.1px, 0) scale(1.05);\n opacity: 0;\n }\n}\n\n.kite-fu-float {\n animation: kite-float 1.9s cubic-bezier(0.45, 0.05, 0.55, 0.95) infinite;\n transform-box: fill-box;\n transform-origin: center;\n}\n\n@keyframes kite-float {\n 0% {\n transform: translate(-11px, 0px) rotate(-5deg);\n }\n 16% {\n transform: translate(-6px, -1px) rotate(-2deg);\n }\n 32% {\n transform: translate(0px, -2px) rotate(1deg);\n }\n 48% {\n transform: translate(7px, -1px) rotate(4deg);\n }\n 64% {\n transform: translate(11px, 0px) rotate(6deg);\n }\n 80% {\n transform: translate(4px, 1px) rotate(3deg);\n }\n 92% {\n transform: translate(-5px, 1px) rotate(-2deg);\n }\n 100% {\n transform: translate(-11px, 0px) rotate(-5deg);\n }\n}\n\n.kite-fu-shadowBreathe {\n animation: kite-shadow-breathe 1.9s ease-in-out infinite;\n opacity: 0.48;\n}\n\n@keyframes kite-shadow-breathe {\n 0% {\n opacity: 0.48;\n }\n 30% {\n opacity: 0.66;\n }\n 50% {\n opacity: 0.82;\n }\n 72% {\n opacity: 0.64;\n }\n 100% {\n opacity: 0.48;\n }\n}\n\n.kite-fu-stringSway {\n animation: kite-string-sway 1.9s ease-in-out infinite;\n transform-box: fill-box;\n transform-origin: top center;\n opacity: 0.35;\n}\n\n@keyframes kite-string-sway {\n 0% {\n transform: rotate(6deg);\n }\n 16% {\n transform: rotate(3deg);\n }\n 32% {\n transform: rotate(-2deg);\n }\n 48% {\n transform: rotate(-6deg);\n }\n 64% {\n transform: rotate(-7deg);\n }\n 80% {\n transform: rotate(-1deg);\n }\n 92% {\n transform: rotate(4deg);\n }\n 100% {\n transform: rotate(6deg);\n }\n}\n\n.kite-fu-kiteBreath {\n animation: kite-breath 1.6s ease-in-out infinite;\n}\n\n@keyframes kite-breath {\n 0%,\n 100% {\n opacity: 1;\n }\n 50% {\n opacity: 0.45;\n }\n}\n\n.kite-fu-dot {\n animation: kite-dot 1.2s ease-in-out infinite;\n}\n\n.kite-fu-dot1 {\n animation-delay: 0.15s;\n}\n.kite-fu-dot2 {\n animation-delay: 0.3s;\n}\n\n@keyframes kite-dot {\n 0%,\n 60%,\n 100% {\n transform: translateY(0);\n opacity: 0.3;\n }\n 30% {\n transform: translateY(-5px);\n opacity: 1;\n }\n}\n\n@keyframes kite-label-pulse {\n 0%,\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n 50% {\n opacity: 0.42;\n transform: translateY(0.5px);\n }\n}\n\n.kite-fu-loadingDots {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.kite-fu-loadingDotsBelowBrand {\n margin-top: 14px;\n}\n\n.kite-fu-loadingDot {\n width: 6px;\n height: 6px;\n border-radius: 9999px;\n background: var(--kite-primary);\n animation: kite-dot 1.2s ease-in-out infinite;\n}\n\n.kite-fu-loadingDot1 {\n animation-delay: 0.15s;\n}\n.kite-fu-loadingDot2 {\n animation-delay: 0.3s;\n}\n\n.kite-fu-logoWrap {\n display: inline-flex;\n align-items: center;\n gap: 10px;\n}\n\n.kite-fu-logoText {\n margin: 0;\n color: var(--kite-foreground);\n letter-spacing: -0.03em;\n line-height: 1;\n}\n\n.kite-fu-logoTextStrong {\n font-weight: 600;\n}\n\n.kite-fu-logoTextLight {\n font-weight: 300;\n}\n\n.kite-fu-pageWrap {\n font-family: \"Inter Variable\", Inter, sans-serif;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n font-weight: 400;\n}\n\n.kite-fu-pageWrapFullscreen {\n min-height: 100vh;\n}\n\n.kite-fu-pageWrapOverlay {\n position: fixed;\n inset: 0;\n z-index: 50;\n background: var(--kite-overlay-background);\n backdrop-filter: blur(var(--kite-overlay-blur));\n}\n\n.kite-fu-label {\n margin: 10px 0 0;\n font-size: 14px;\n font-family: \"Inter Variable\", Inter, sans-serif;\n font-weight: 400;\n line-height: 1.4;\n color: var(--kite-muted);\n animation: kite-label-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n\n.kite-fu-loadingTextPulse {\n animation: kite-label-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n","import {\n createElement,\n createContext,\n type CSSProperties,\n type ReactNode,\n useContext,\n} from \"react\";\n\nexport interface KiteTheme {\n primary?: string;\n foreground?: string;\n muted?: string;\n overlayBackground?: string;\n overlayBlur?: string;\n}\n\ninterface FlyUIThemeProviderProps {\n theme?: KiteTheme;\n children: ReactNode;\n}\n\nconst FlyUIThemeContext = createContext<KiteTheme | undefined>(undefined);\n\nexport function FlyUIThemeProvider({\n theme,\n children,\n}: FlyUIThemeProviderProps) {\n return createElement(FlyUIThemeContext.Provider, { value: theme }, children);\n}\n\nexport function useFlyUITheme() {\n return useContext(FlyUIThemeContext);\n}\n\nexport function mergeKiteTheme(\n globalTheme?: KiteTheme,\n componentTheme?: KiteTheme,\n) {\n return { ...globalTheme, ...componentTheme };\n}\n\nexport function buildKiteThemeStyle(theme?: KiteTheme): CSSProperties {\n if (!theme) {\n return {};\n }\n\n return {\n ...(theme.primary ? { [\"--kite-primary\" as string]: theme.primary } : {}),\n ...(theme.foreground\n ? { [\"--kite-foreground\" as string]: theme.foreground }\n : {}),\n ...(theme.muted ? { [\"--kite-muted\" as string]: theme.muted } : {}),\n ...(theme.overlayBackground\n ? { [\"--kite-overlay-background\" as string]: theme.overlayBackground }\n : {}),\n ...(theme.overlayBlur\n ? { [\"--kite-overlay-blur\" as string]: theme.overlayBlur }\n : {}),\n } as CSSProperties;\n}\n","import type { CSSProperties } from \"react\";\n\nimport { cn } from \"../../lib/cn\";\n\nimport styles from \"./kite-animations.module.css\";\nimport {\n buildKiteThemeStyle,\n mergeKiteTheme,\n type KiteTheme,\n useFlyUITheme,\n} from \"./theme\";\n\nconst SIZE = {\n xs: { icon: 16, text: 12, gap: 4, strongWeight: 600 },\n sm: { icon: 20, text: 14, gap: 6, strongWeight: 600 },\n md: { icon: 24, text: 16, gap: 7, strongWeight: 600 },\n lg: { icon: 28, text: 18, gap: 8, strongWeight: 700 },\n xl: { icon: 40, text: 24, gap: 9, strongWeight: 700 },\n} as const;\n\ntype SizeKey = keyof typeof SIZE;\n\nexport interface KiteLogoProps {\n size?: SizeKey;\n showText?: boolean;\n name?: string;\n subBrand?: string;\n iconTextGap?: number;\n theme?: KiteTheme;\n className?: string;\n textClassName?: string;\n style?: CSSProperties;\n}\n\nfunction KiteIcon({ size }: { size: number }) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path d=\"M12 0 L0 9 L12 24 Z\" fill=\"var(--kite-primary, #0ea5e9)\" />\n <path\n d=\"M12 0 L24 9 L12 24 Z\"\n fill=\"var(--kite-primary, #0ea5e9)\"\n opacity=\"0.48\"\n />\n </svg>\n );\n}\n\nexport function KiteLogo({\n size = \"md\",\n showText = true,\n name = \"Fly\",\n subBrand = \"UI\",\n iconTextGap,\n theme,\n className,\n textClassName,\n style,\n}: KiteLogoProps) {\n const cfg = SIZE[size];\n const globalTheme = useFlyUITheme();\n const resolvedTheme = mergeKiteTheme(globalTheme, theme);\n const themeStyle = buildKiteThemeStyle(resolvedTheme);\n\n return (\n <div\n className={cn(\n styles[\"kite-fu-host\"],\n styles[\"kite-fu-logoWrap\"],\n className,\n )}\n style={{ ...themeStyle, ...style, gap: iconTextGap ?? cfg.gap }}\n >\n <KiteIcon size={cfg.icon} />\n {showText ? (\n <span\n className={cn(styles[\"kite-fu-logoText\"], textClassName)}\n style={{\n fontSize: `${cfg.text}px`,\n fontFamily: '\"Inter Variable\", sans-serif',\n letterSpacing: \"-0.03em\",\n lineHeight: 1,\n }}\n >\n <span\n className={styles[\"kite-fu-logoTextStrong\"]}\n style={{ fontWeight: cfg.strongWeight }}\n >\n {name}\n </span>\n <span className={styles[\"kite-fu-logoTextLight\"]}>{subBrand}</span>\n </span>\n ) : null}\n </div>\n );\n}\n","import type { CSSProperties } from \"react\";\n\nimport { cn } from \"../../lib/cn\";\n\nimport styles from \"./kite-animations.module.css\";\nimport {\n buildKiteThemeStyle,\n mergeKiteTheme,\n type KiteTheme,\n useFlyUITheme,\n} from \"./theme\";\n\nconst SIZES = {\n sm: 32,\n md: 48,\n lg: 64,\n} as const;\n\ntype LoaderSize = keyof typeof SIZES;\n\nexport interface KiteLoaderProps {\n size?: LoaderSize;\n label?: string;\n showBrand?: boolean;\n name?: string;\n subBrand?: string;\n theme?: KiteTheme;\n className?: string;\n style?: CSSProperties;\n}\n\nexport function KiteLoader({\n size = \"md\",\n label,\n showBrand = false,\n name = \"Fly\",\n subBrand = \"UI\",\n theme,\n className,\n style,\n}: KiteLoaderProps) {\n const px = SIZES[size];\n const svgH = Math.round(px * 1.2);\n const globalTheme = useFlyUITheme();\n const resolvedTheme = mergeKiteTheme(globalTheme, theme);\n const themeStyle = buildKiteThemeStyle(resolvedTheme);\n\n return (\n <div\n className={cn(styles[\"kite-fu-host\"], className)}\n role=\"status\"\n aria-label={label ?? \"Loading\"}\n style={{ ...themeStyle, ...style }}\n >\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n gap: 10,\n }}\n >\n <svg\n width={px}\n height={svgH}\n viewBox=\"0 0 24 31\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n overflow=\"visible\"\n >\n <g className={styles[\"kite-fu-skyLayer\"]} aria-hidden=\"true\">\n <g className={styles[\"kite-fu-cloudSizeSm\"]}>\n <g className={styles[\"kite-fu-cloudDriftHigh\"]}>\n <path\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\"\n fill=\"var(--kite-muted, #64748b)\"\n opacity=\"0.28\"\n />\n </g>\n </g>\n <g className={styles[\"kite-fu-cloudSizeLg\"]}>\n <g className={styles[\"kite-fu-cloudDriftFar\"]}>\n <path\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\"\n fill=\"var(--kite-muted, #64748b)\"\n opacity=\"0.32\"\n />\n </g>\n </g>\n </g>\n <g\n className={cn(\n styles[\"kite-fu-float\"],\n styles[\"kite-fu-kiteBreath\"],\n )}\n >\n <g transform=\"rotate(90 12 12)\">\n <path\n d=\"M12 0 L0 9 L12 24 Z\"\n fill=\"var(--kite-primary, #0ea5e9)\"\n />\n <path\n d=\"M12 0 L24 9 L12 24 Z\"\n fill=\"var(--kite-primary, #0ea5e9)\"\n className={styles[\"kite-fu-shadowBreathe\"]}\n />\n <path\n d=\"M12 24 Q13 28.5 12 31\"\n stroke=\"var(--kite-muted, #64748b)\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n fill=\"none\"\n className={styles[\"kite-fu-stringSway\"]}\n />\n </g>\n </g>\n </svg>\n {showBrand ? (\n <span\n className={cn(\n styles[\"kite-fu-logoText\"],\n styles[\"kite-fu-loadingTextPulse\"],\n )}\n style={{\n marginTop: -2,\n fontSize: 20,\n fontFamily: '\"Inter Variable\", sans-serif',\n letterSpacing: \"-0.03em\",\n lineHeight: 1,\n }}\n >\n <span className={styles[\"kite-fu-logoTextStrong\"]}>{name}</span>\n <span className={styles[\"kite-fu-logoTextLight\"]}>{subBrand}</span>\n </span>\n ) : null}\n {label ? <p className={styles[\"kite-fu-label\"]}>{label}</p> : null}\n </div>\n </div>\n );\n}\n","import type { CSSProperties } from \"react\";\n\nimport { cn } from \"../../lib/cn\";\n\nimport styles from \"./kite-animations.module.css\";\nimport {\n buildKiteThemeStyle,\n mergeKiteTheme,\n type KiteTheme,\n useFlyUITheme,\n} from \"./theme\";\n\nexport interface KitePageLoaderProps {\n message?: string;\n overlay?: boolean;\n name?: string;\n subBrand?: string;\n theme?: KiteTheme;\n className?: string;\n style?: CSSProperties;\n}\n\nexport function KitePageLoader({\n message,\n overlay = false,\n name = \"Fly\",\n subBrand = \"UI\",\n theme,\n className,\n style,\n}: KitePageLoaderProps) {\n const globalTheme = useFlyUITheme();\n const resolvedTheme = mergeKiteTheme(globalTheme, theme);\n const themeStyle = buildKiteThemeStyle(resolvedTheme);\n\n return (\n <div\n role=\"status\"\n aria-live=\"polite\"\n aria-label={message ?? \"Loading\"}\n className={cn(\n styles[\"kite-fu-host\"],\n styles[\"kite-fu-pageWrap\"],\n overlay\n ? styles[\"kite-fu-pageWrapOverlay\"]\n : styles[\"kite-fu-pageWrapFullscreen\"],\n className,\n )}\n style={{ ...themeStyle, ...style }}\n >\n <svg\n width={56}\n height={58}\n viewBox=\"0 0 24 31\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n overflow=\"visible\"\n >\n <g className={styles[\"kite-fu-skyLayer\"]} aria-hidden=\"true\">\n <g className={styles[\"kite-fu-cloudSizeSm\"]}>\n <g className={styles[\"kite-fu-cloudDriftHigh\"]}>\n <path\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\"\n fill=\"var(--kite-muted, #64748b)\"\n opacity=\"0.28\"\n />\n </g>\n </g>\n <g className={styles[\"kite-fu-cloudSizeLg\"]}>\n <g className={styles[\"kite-fu-cloudDriftFar\"]}>\n <path\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\"\n fill=\"var(--kite-muted, #64748b)\"\n opacity=\"0.32\"\n />\n </g>\n </g>\n </g>\n <g\n className={cn(styles[\"kite-fu-float\"], styles[\"kite-fu-kiteBreath\"])}\n >\n <g transform=\"rotate(90 12 12)\">\n <path d=\"M12 0 L0 9 L12 24 Z\" fill=\"var(--kite-primary, #0ea5e9)\" />\n <path\n d=\"M12 0 L24 9 L12 24 Z\"\n fill=\"var(--kite-primary, #0ea5e9)\"\n className={styles[\"kite-fu-shadowBreathe\"]}\n />\n <path\n d=\"M12 24 Q13 28.5 12 31\"\n stroke=\"var(--kite-muted, #64748b)\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n fill=\"none\"\n className={styles[\"kite-fu-stringSway\"]}\n />\n </g>\n </g>\n </svg>\n\n <span\n className={cn(\n styles[\"kite-fu-logoText\"],\n styles[\"kite-fu-loadingTextPulse\"],\n )}\n style={{\n marginTop: -2,\n fontSize: 20,\n fontFamily: '\"Inter Variable\", sans-serif',\n letterSpacing: \"-0.03em\",\n lineHeight: 1,\n }}\n >\n <span className={styles[\"kite-fu-logoTextStrong\"]}>{name}</span>\n <span className={styles[\"kite-fu-logoTextLight\"]}>{subBrand}</span>\n </span>\n\n <div\n className={cn(\n styles[\"kite-fu-loadingDots\"],\n styles[\"kite-fu-loadingDotsBelowBrand\"],\n )}\n aria-hidden=\"true\"\n >\n <span className={styles[\"kite-fu-loadingDot\"]} />\n <span\n className={cn(\n styles[\"kite-fu-loadingDot\"],\n styles[\"kite-fu-loadingDot1\"],\n )}\n />\n <span\n className={cn(\n styles[\"kite-fu-loadingDot\"],\n styles[\"kite-fu-loadingDot2\"],\n )}\n />\n </div>\n\n {message ? <p className={styles[\"kite-fu-label\"]}>{message}</p> : null}\n </div>\n );\n}\n","import type { CSSProperties } from \"react\";\n\nimport { cn } from \"../../lib/cn\";\n\nimport styles from \"../kite/kite-animations.module.css\";\nimport {\n buildKiteThemeStyle,\n mergeKiteTheme,\n type KiteTheme,\n useFlyUITheme,\n} from \"../kite/theme\";\n\nexport interface LoadingProps {\n className?: string;\n label?: string;\n theme?: KiteTheme;\n style?: CSSProperties;\n}\n\nexport function Loading({ className, label, theme, style }: LoadingProps) {\n const globalTheme = useFlyUITheme();\n const resolvedTheme = mergeKiteTheme(globalTheme, theme);\n const themeStyle = buildKiteThemeStyle(resolvedTheme);\n\n return (\n <div\n className={cn(styles[\"kite-fu-host\"], className)}\n role=\"status\"\n aria-label={label ?? \"Loading\"}\n style={{ ...themeStyle, ...style }}\n >\n <div className={styles[\"kite-fu-loadingDots\"]}>\n <span className={styles[\"kite-fu-loadingDot\"]} />\n <span\n className={cn(\n styles[\"kite-fu-loadingDot\"],\n styles[\"kite-fu-loadingDot1\"],\n )}\n />\n <span\n className={cn(\n styles[\"kite-fu-loadingDot\"],\n styles[\"kite-fu-loadingDot2\"],\n )}\n />\n </div>\n </div>\n );\n}\n"],"mappings":"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","names":["import_jsx_runtime","import_jsx_runtime","import_jsx_runtime"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/kite/kite-animations.module.css"],"sourcesContent":[".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"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/components/kite/kite-animations.module.css"],"sourcesContent":[".kite-fu-host {\n --kite-primary: #0ea5e9;\n --kite-foreground: #0f172a;\n --kite-muted: #64748b;\n --kite-overlay-background: rgba(255, 255, 255, 0.82);\n --kite-overlay-blur: 2px;\n color: var(--kite-foreground);\n font-family: \"Inter Variable\", Inter, sans-serif;\n line-height: 1;\n box-sizing: border-box;\n}\n\n.kite-fu-host *,\n.kite-fu-host *::before,\n.kite-fu-host *::after {\n box-sizing: inherit;\n}\n\n.kite-fu-skyLayer {\n opacity: 0.86;\n}\n\n.kite-fu-cloudSizeXs,\n.kite-fu-cloudSizeSm,\n.kite-fu-cloudSizeMd,\n.kite-fu-cloudSizeLg {\n transform-box: fill-box;\n transform-origin: center;\n}\n\n.kite-fu-cloudSizeXs {\n transform: scale(0.78);\n}\n.kite-fu-cloudSizeSm {\n transform: scale(0.92);\n}\n.kite-fu-cloudSizeMd {\n transform: scale(1.04);\n}\n.kite-fu-cloudSizeLg {\n transform: scale(1.18);\n}\n\n.kite-fu-cloudDelayB {\n animation-delay: -1.9s;\n}\n.kite-fu-cloudDelayC {\n animation-delay: -3s;\n}\n\n.kite-fu-cloudDriftFar {\n animation: cloud-pass-far 4.6s cubic-bezier(0.4, 0.06, 0.6, 0.94) infinite;\n will-change: transform, opacity;\n}\n\n.kite-fu-cloudDriftNear {\n animation: cloud-pass-near 3.5s cubic-bezier(0.34, 0.08, 0.58, 0.96) infinite;\n animation-delay: -1.6s;\n will-change: transform, opacity;\n}\n\n.kite-fu-cloudDriftHigh {\n animation: cloud-pass-high 3.2s cubic-bezier(0.36, 0.07, 0.58, 0.95) infinite;\n animation-delay: -2.4s;\n will-change: transform, opacity;\n}\n\n.kite-fu-cloudDriftAlt {\n animation: cloud-pass-alt 4.1s cubic-bezier(0.38, 0.06, 0.62, 0.95) infinite;\n animation-delay: -0.9s;\n will-change: transform, opacity;\n}\n\n@keyframes cloud-pass-far {\n 0% {\n transform: translate3d(22px, 0.4px, 0) scale(0.96);\n opacity: 0;\n }\n 18% {\n transform: translate3d(12px, -0.3px, 0) scale(0.98);\n opacity: 0.5;\n }\n 52% {\n transform: translate3d(-4px, 0.2px, 0) scale(1);\n opacity: 0.58;\n }\n 82% {\n transform: translate3d(-18px, -0.5px, 0) scale(0.98);\n opacity: 0.48;\n }\n 100% {\n transform: translate3d(-30px, 0.4px, 0) scale(0.95);\n opacity: 0;\n }\n}\n\n@keyframes cloud-pass-near {\n 0% {\n transform: translate3d(24px, -0.7px, 0) scale(1.02);\n opacity: 0;\n }\n 16% {\n transform: translate3d(14px, 0px, 0) scale(1.04);\n opacity: 0.62;\n }\n 48% {\n transform: translate3d(-4px, 0.6px, 0) scale(1.06);\n opacity: 0.72;\n }\n 78% {\n transform: translate3d(-18px, -0.1px, 0) scale(1.03);\n opacity: 0.64;\n }\n 100% {\n transform: translate3d(-32px, -0.8px, 0) scale(1.01);\n opacity: 0;\n }\n}\n\n@keyframes cloud-pass-high {\n 0% {\n transform: translate3d(26px, -1.2px, 0) scale(0.9);\n opacity: 0;\n }\n 20% {\n transform: translate3d(15px, -1.6px, 0) scale(0.95);\n opacity: 0.52;\n }\n 55% {\n transform: translate3d(-5px, -1px, 0) scale(0.98);\n opacity: 0.58;\n }\n 84% {\n transform: translate3d(-21px, -1.4px, 0) scale(0.94);\n opacity: 0.46;\n }\n 100% {\n transform: translate3d(-34px, -1.1px, 0) scale(0.9);\n opacity: 0;\n }\n}\n\n@keyframes cloud-pass-alt {\n 0% {\n transform: translate3d(24px, 1px, 0) scale(1.08);\n opacity: 0;\n }\n 15% {\n transform: translate3d(15px, 0.2px, 0) scale(1.1);\n opacity: 0.62;\n }\n 49% {\n transform: translate3d(-4px, 0.9px, 0) scale(1.12);\n opacity: 0.7;\n }\n 79% {\n transform: translate3d(-20px, 0.4px, 0) scale(1.08);\n opacity: 0.56;\n }\n 100% {\n transform: translate3d(-34px, 1.1px, 0) scale(1.05);\n opacity: 0;\n }\n}\n\n.kite-fu-float {\n animation: kite-float 1.9s cubic-bezier(0.45, 0.05, 0.55, 0.95) infinite;\n transform-box: fill-box;\n transform-origin: center;\n}\n\n@keyframes kite-float {\n 0% {\n transform: translate(-11px, 0px) rotate(-5deg);\n }\n 16% {\n transform: translate(-6px, -1px) rotate(-2deg);\n }\n 32% {\n transform: translate(0px, -2px) rotate(1deg);\n }\n 48% {\n transform: translate(7px, -1px) rotate(4deg);\n }\n 64% {\n transform: translate(11px, 0px) rotate(6deg);\n }\n 80% {\n transform: translate(4px, 1px) rotate(3deg);\n }\n 92% {\n transform: translate(-5px, 1px) rotate(-2deg);\n }\n 100% {\n transform: translate(-11px, 0px) rotate(-5deg);\n }\n}\n\n.kite-fu-shadowBreathe {\n animation: kite-shadow-breathe 1.9s ease-in-out infinite;\n opacity: 0.48;\n}\n\n@keyframes kite-shadow-breathe {\n 0% {\n opacity: 0.48;\n }\n 30% {\n opacity: 0.66;\n }\n 50% {\n opacity: 0.82;\n }\n 72% {\n opacity: 0.64;\n }\n 100% {\n opacity: 0.48;\n }\n}\n\n.kite-fu-stringSway {\n animation: kite-string-sway 1.9s ease-in-out infinite;\n transform-box: fill-box;\n transform-origin: top center;\n opacity: 0.35;\n}\n\n@keyframes kite-string-sway {\n 0% {\n transform: rotate(6deg);\n }\n 16% {\n transform: rotate(3deg);\n }\n 32% {\n transform: rotate(-2deg);\n }\n 48% {\n transform: rotate(-6deg);\n }\n 64% {\n transform: rotate(-7deg);\n }\n 80% {\n transform: rotate(-1deg);\n }\n 92% {\n transform: rotate(4deg);\n }\n 100% {\n transform: rotate(6deg);\n }\n}\n\n.kite-fu-kiteBreath {\n animation: kite-breath 1.6s ease-in-out infinite;\n}\n\n@keyframes kite-breath {\n 0%,\n 100% {\n opacity: 1;\n }\n 50% {\n opacity: 0.45;\n }\n}\n\n.kite-fu-dot {\n animation: kite-dot 1.2s ease-in-out infinite;\n}\n\n.kite-fu-dot1 {\n animation-delay: 0.15s;\n}\n.kite-fu-dot2 {\n animation-delay: 0.3s;\n}\n\n@keyframes kite-dot {\n 0%,\n 60%,\n 100% {\n transform: translateY(0);\n opacity: 0.3;\n }\n 30% {\n transform: translateY(-5px);\n opacity: 1;\n }\n}\n\n@keyframes kite-label-pulse {\n 0%,\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n 50% {\n opacity: 0.42;\n transform: translateY(0.5px);\n }\n}\n\n.kite-fu-loadingDots {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.kite-fu-loadingDotsBelowBrand {\n margin-top: 14px;\n}\n\n.kite-fu-loadingDot {\n width: 6px;\n height: 6px;\n border-radius: 9999px;\n background: var(--kite-primary);\n animation: kite-dot 1.2s ease-in-out infinite;\n}\n\n.kite-fu-loadingDot1 {\n animation-delay: 0.15s;\n}\n.kite-fu-loadingDot2 {\n animation-delay: 0.3s;\n}\n\n.kite-fu-logoWrap {\n display: inline-flex;\n align-items: center;\n gap: 10px;\n}\n\n.kite-fu-logoText {\n margin: 0;\n color: var(--kite-foreground);\n letter-spacing: -0.03em;\n line-height: 1;\n}\n\n.kite-fu-logoTextStrong {\n font-weight: 600;\n}\n\n.kite-fu-logoTextLight {\n font-weight: 300;\n}\n\n.kite-fu-pageWrap {\n font-family: \"Inter Variable\", Inter, sans-serif;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n font-weight: 400;\n}\n\n.kite-fu-pageWrapFullscreen {\n min-height: 100vh;\n}\n\n.kite-fu-pageWrapOverlay {\n position: fixed;\n inset: 0;\n z-index: 50;\n background: var(--kite-overlay-background);\n backdrop-filter: blur(var(--kite-overlay-blur));\n}\n\n.kite-fu-label {\n margin: 10px 0 0;\n font-size: 14px;\n font-family: \"Inter Variable\", Inter, sans-serif;\n font-weight: 400;\n line-height: 1.4;\n color: var(--kite-muted);\n animation: kite-label-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n\n.kite-fu-loadingTextPulse {\n animation: kite-label-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n"],"mappings":";AAAA,CAAC;AACC,kBAAgB;AAChB,qBAAmB;AACnB,gBAAc;AACd,6BAA2B,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AAC/C,uBAAqB;AACrB,SAAO,IAAI;AACX;AAAA,IAAa,gBAAgB;AAAA,IAAE,KAAK;AAAA,IAAE;AACtC,eAAa;AACb,cAAY;AACd;AAEA,CAZC,aAYa;AACd,CAbC,aAaa,CAAC;AACf,CAdC,aAca,CAAC;AACb,cAAY;AACd;AAEA,CAAC;AACC,WAAS;AACX;AAEA,CAAC;AACD,CAAC;AACD,CAAC;AACD,CAAC;AACC,iBAAe;AACf,oBAAkB;AACpB;AAEA,CARC;AASC,aAAW,MAAM;AACnB;AACA,CAVC;AAWC,aAAW,MAAM;AACnB;AACA,CAZC;AAaC,aAAW,MAAM;AACnB;AACA,CAdC;AAeC,aAAW,MAAM;AACnB;AAEA,CAAC;AACC,mBAAiB;AACnB;AACA,CAAC;AACC,mBAAiB;AACnB;AAEA,CAAC;AACC,aAAW,eAAe,KAAK,aAAa,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM;AAClE,eAAa,SAAS,EAAE;AAC1B;AAEA,CAAC;AACC,aAAW,gBAAgB,KAAK,aAAa,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM;AACrE,mBAAiB;AACjB,eAAa,SAAS,EAAE;AAC1B;AAEA,CAAC;AACC,aAAW,gBAAgB,KAAK,aAAa,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM;AACrE,mBAAiB;AACjB,eAAa,SAAS,EAAE;AAC1B;AAEA,CAAC;AACC,aAAW,eAAe,KAAK,aAAa,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM;AACpE,mBAAiB;AACjB,eAAa,SAAS,EAAE;AAC1B;AAEA,WAtBa;AAuBX;AACE,eAAW,YAAY,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM;AAC7C,aAAS;AACX;AACA;AACE,eAAW,YAAY,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM;AAC9C,aAAS;AACX;AACA;AACE,eAAW,YAAY,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM;AAC7C,aAAS;AACX;AACA;AACE,eAAW,YAAY,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;AAC/C,aAAS;AACX;AACA;AACE,eAAW,YAAY,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM;AAC9C,aAAS;AACX;AACF;AAEA,WAxCa;AAyCX;AACE,eAAW,YAAY,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM;AAC9C,aAAS;AACX;AACA;AACE,eAAW,YAAY,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM;AAC3C,aAAS;AACX;AACA;AACE,eAAW,YAAY,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM;AAC7C,aAAS;AACX;AACA;AACE,eAAW,YAAY,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;AAC/C,aAAS;AACX;AACA;AACE,eAAW,YAAY,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;AAC/C,aAAS;AACX;AACF;AAEA,WAzDa;AA0DX;AACE,eAAW,YAAY,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM;AAC9C,aAAS;AACX;AACA;AACE,eAAW,YAAY,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM;AAC9C,aAAS;AACX;AACA;AACE,eAAW,YAAY,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM;AAC5C,aAAS;AACX;AACA;AACE,eAAW,YAAY,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;AAC/C,aAAS;AACX;AACA;AACE,eAAW,YAAY,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;AAC/C,aAAS;AACX;AACF;AAEA,WA1Ea;AA2EX;AACE,eAAW,YAAY,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM;AAC3C,aAAS;AACX;AACA;AACE,eAAW,YAAY,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM;AAC7C,aAAS;AACX;AACA;AACE,eAAW,YAAY,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM;AAC7C,aAAS;AACX;AACA;AACE,eAAW,YAAY,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM;AAC9C,aAAS;AACX;AACA;AACE,eAAW,YAAY,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM;AAC9C,aAAS;AACX;AACF;AAEA,CAAC;AACC,aAAW,WAAW,KAAK,aAAa,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM;AAChE,iBAAe;AACf,oBAAkB;AACpB;AAEA,WALa;AAMX;AACE,eAAW,UAAU,KAAK,EAAE,KAAK,OAAO;AAC1C;AACA;AACE,eAAW,UAAU,IAAI,EAAE,MAAM,OAAO;AAC1C;AACA;AACE,eAAW,UAAU,GAAG,EAAE,MAAM,OAAO;AACzC;AACA;AACE,eAAW,UAAU,GAAG,EAAE,MAAM,OAAO;AACzC;AACA;AACE,eAAW,UAAU,IAAI,EAAE,KAAK,OAAO;AACzC;AACA;AACE,eAAW,UAAU,GAAG,EAAE,KAAK,OAAO;AACxC;AACA;AACE,eAAW,UAAU,IAAI,EAAE,KAAK,OAAO;AACzC;AACA;AACE,eAAW,UAAU,KAAK,EAAE,KAAK,OAAO;AAC1C;AACF;AAEA,CAAC;AACC,aAAW,oBAAoB,KAAK,YAAY;AAChD,WAAS;AACX;AAEA,WAJa;AAKX;AACE,aAAS;AACX;AACA;AACE,aAAS;AACX;AACA;AACE,aAAS;AACX;AACA;AACE,aAAS;AACX;AACA;AACE,aAAS;AACX;AACF;AAEA,CAAC;AACC,aAAW,iBAAiB,KAAK,YAAY;AAC7C,iBAAe;AACf,oBAAkB,IAAI;AACtB,WAAS;AACX;AAEA,WANa;AAOX;AACE,eAAW,OAAO;AACpB;AACA;AACE,eAAW,OAAO;AACpB;AACA;AACE,eAAW,OAAO;AACpB;AACA;AACE,eAAW,OAAO;AACpB;AACA;AACE,eAAW,OAAO;AACpB;AACA;AACE,eAAW,OAAO;AACpB;AACA;AACE,eAAW,OAAO;AACpB;AACA;AACE,eAAW,OAAO;AACpB;AACF;AAEA,CAAC;AACC,aAAW,YAAY,KAAK,YAAY;AAC1C;AAEA,WAHa;AAIX;AAEE,aAAS;AACX;AACA;AACE,aAAS;AACX;AACF;AAEA,CAAC;AACC,aAAW,SAAS,KAAK,YAAY;AACvC;AAEA,CAAC;AACC,mBAAiB;AACnB;AACA,CAAC;AACC,mBAAiB;AACnB;AAEA,WAVa;AAWX;AAGE,eAAW,WAAW;AACtB,aAAS;AACX;AACA;AACE,eAAW,WAAW;AACtB,aAAS;AACX;AACF;AAEA,WAAW;AACT;AAEE,aAAS;AACT,eAAW,WAAW;AACxB;AACA;AACE,aAAS;AACT,eAAW,WAAW;AACxB;AACF;AAEA,CAAC;AACC,WAAS;AACT,eAAa;AACb,OAAK;AACP;AAEA,CAAC;AACC,cAAY;AACd;AAEA,CAAC;AACC,SAAO;AACP,UAAQ;AACR,iBAAe;AACf,cAAY,IAAI;AAChB,aAAW,SAAS,KAAK,YAAY;AACvC;AAEA,CAAC;AACC,mBAAiB;AACnB;AACA,CAAC;AACC,mBAAiB;AACnB;AAEA,CAAC;AACC,WAAS;AACT,eAAa;AACb,OAAK;AACP;AAEA,CAAC;AACC,UAAQ;AACR,SAAO,IAAI;AACX,kBAAgB;AAChB,eAAa;AACf;AAEA,CAAC;AACC,eAAa;AACf;AAEA,CAAC;AACC,eAAa;AACf;AAEA,CAAC;AACC;AAAA,IAAa,gBAAgB;AAAA,IAAE,KAAK;AAAA,IAAE;AACtC,WAAS;AACT,kBAAgB;AAChB,eAAa;AACb,mBAAiB;AACjB,eAAa;AACf;AAEA,CAAC;AACC,cAAY;AACd;AAEA,CAAC;AACC,YAAU;AACV,SAAO;AACP,WAAS;AACT,cAAY,IAAI;AAChB,mBAAiB,KAAK,IAAI;AAC5B;AAEA,CAAC;AACC,UAAQ,KAAK,EAAE;AACf,aAAW;AACX;AAAA,IAAa,gBAAgB;AAAA,IAAE,KAAK;AAAA,IAAE;AACtC,eAAa;AACb,eAAa;AACb,SAAO,IAAI;AACX,aAAW,iBAAiB,GAAG,aAAa,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG;AAC9D;AAEA,CAAC;AACC,aAAW,iBAAiB,GAAG,aAAa,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG;AAC9D;","names":[]}
package/dist/index.d.cts CHANGED
@@ -20,31 +20,31 @@ declare const SIZE: {
20
20
  readonly xs: {
21
21
  readonly icon: 16;
22
22
  readonly text: 12;
23
- readonly gap: 6;
23
+ readonly gap: 4;
24
24
  readonly strongWeight: 600;
25
25
  };
26
26
  readonly sm: {
27
27
  readonly icon: 20;
28
28
  readonly text: 14;
29
- readonly gap: 8;
29
+ readonly gap: 6;
30
30
  readonly strongWeight: 600;
31
31
  };
32
32
  readonly md: {
33
33
  readonly icon: 24;
34
34
  readonly text: 16;
35
- readonly gap: 10;
35
+ readonly gap: 7;
36
36
  readonly strongWeight: 600;
37
37
  };
38
38
  readonly lg: {
39
39
  readonly icon: 28;
40
40
  readonly text: 18;
41
- readonly gap: 10;
41
+ readonly gap: 8;
42
42
  readonly strongWeight: 700;
43
43
  };
44
44
  readonly xl: {
45
45
  readonly icon: 40;
46
46
  readonly text: 24;
47
- readonly gap: 12;
47
+ readonly gap: 9;
48
48
  readonly strongWeight: 700;
49
49
  };
50
50
  };
@@ -54,12 +54,13 @@ interface KiteLogoProps {
54
54
  showText?: boolean;
55
55
  name?: string;
56
56
  subBrand?: string;
57
+ iconTextGap?: number;
57
58
  theme?: KiteTheme;
58
59
  className?: string;
59
60
  textClassName?: string;
60
61
  style?: CSSProperties;
61
62
  }
62
- declare function KiteLogo({ size, showText, name, subBrand, theme, className, textClassName, style, }: KiteLogoProps): react_jsx_runtime.JSX.Element;
63
+ declare function KiteLogo({ size, showText, name, subBrand, iconTextGap, theme, className, textClassName, style, }: KiteLogoProps): react_jsx_runtime.JSX.Element;
63
64
 
64
65
  declare const SIZES: {
65
66
  readonly sm: 32;
package/dist/index.d.ts CHANGED
@@ -20,31 +20,31 @@ declare const SIZE: {
20
20
  readonly xs: {
21
21
  readonly icon: 16;
22
22
  readonly text: 12;
23
- readonly gap: 6;
23
+ readonly gap: 4;
24
24
  readonly strongWeight: 600;
25
25
  };
26
26
  readonly sm: {
27
27
  readonly icon: 20;
28
28
  readonly text: 14;
29
- readonly gap: 8;
29
+ readonly gap: 6;
30
30
  readonly strongWeight: 600;
31
31
  };
32
32
  readonly md: {
33
33
  readonly icon: 24;
34
34
  readonly text: 16;
35
- readonly gap: 10;
35
+ readonly gap: 7;
36
36
  readonly strongWeight: 600;
37
37
  };
38
38
  readonly lg: {
39
39
  readonly icon: 28;
40
40
  readonly text: 18;
41
- readonly gap: 10;
41
+ readonly gap: 8;
42
42
  readonly strongWeight: 700;
43
43
  };
44
44
  readonly xl: {
45
45
  readonly icon: 40;
46
46
  readonly text: 24;
47
- readonly gap: 12;
47
+ readonly gap: 9;
48
48
  readonly strongWeight: 700;
49
49
  };
50
50
  };
@@ -54,12 +54,13 @@ interface KiteLogoProps {
54
54
  showText?: boolean;
55
55
  name?: string;
56
56
  subBrand?: string;
57
+ iconTextGap?: number;
57
58
  theme?: KiteTheme;
58
59
  className?: string;
59
60
  textClassName?: string;
60
61
  style?: CSSProperties;
61
62
  }
62
- declare function KiteLogo({ size, showText, name, subBrand, theme, className, textClassName, style, }: KiteLogoProps): react_jsx_runtime.JSX.Element;
63
+ declare function KiteLogo({ size, showText, name, subBrand, iconTextGap, theme, className, textClassName, style, }: KiteLogoProps): react_jsx_runtime.JSX.Element;
63
64
 
64
65
  declare const SIZES: {
65
66
  readonly sm: 32;
package/dist/index.js CHANGED
@@ -41,11 +41,11 @@ function buildKiteThemeStyle(theme) {
41
41
  // src/components/kite/KiteLogo.tsx
42
42
  import { jsx, jsxs } from "react/jsx-runtime";
43
43
  var SIZE = {
44
- xs: { icon: 16, text: 12, gap: 6, strongWeight: 600 },
45
- sm: { icon: 20, text: 14, gap: 8, strongWeight: 600 },
46
- md: { icon: 24, text: 16, gap: 10, strongWeight: 600 },
47
- lg: { icon: 28, text: 18, gap: 10, strongWeight: 700 },
48
- xl: { icon: 40, text: 24, gap: 12, strongWeight: 700 }
44
+ xs: { icon: 16, text: 12, gap: 4, strongWeight: 600 },
45
+ sm: { icon: 20, text: 14, gap: 6, strongWeight: 600 },
46
+ md: { icon: 24, text: 16, gap: 7, strongWeight: 600 },
47
+ lg: { icon: 28, text: 18, gap: 8, strongWeight: 700 },
48
+ xl: { icon: 40, text: 24, gap: 9, strongWeight: 700 }
49
49
  };
50
50
  function KiteIcon({ size }) {
51
51
  return /* @__PURE__ */ jsxs(
@@ -76,6 +76,7 @@ function KiteLogo({
76
76
  showText = true,
77
77
  name = "Fly",
78
78
  subBrand = "UI",
79
+ iconTextGap,
79
80
  theme,
80
81
  className,
81
82
  textClassName,
@@ -93,7 +94,7 @@ function KiteLogo({
93
94
  kite_animations_default["kite-fu-logoWrap"],
94
95
  className
95
96
  ),
96
- style: { ...themeStyle, ...style, gap: cfg.gap },
97
+ style: { ...themeStyle, ...style, gap: iconTextGap ?? cfg.gap },
97
98
  children: [
98
99
  /* @__PURE__ */ jsx(KiteIcon, { size: cfg.icon }),
99
100
  showText ? /* @__PURE__ */ jsxs(
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../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 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":["jsx","jsxs","jsx","jsxs","jsx","jsxs"]}
1
+ {"version":3,"sources":["../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 function cn(...parts: Array<string | false | null | undefined>): string {\n return parts.filter(Boolean).join(\" \");\n}\n",".kite-fu-host {\n --kite-primary: #0ea5e9;\n --kite-foreground: #0f172a;\n --kite-muted: #64748b;\n --kite-overlay-background: rgba(255, 255, 255, 0.82);\n --kite-overlay-blur: 2px;\n color: var(--kite-foreground);\n font-family: \"Inter Variable\", Inter, sans-serif;\n line-height: 1;\n box-sizing: border-box;\n}\n\n.kite-fu-host *,\n.kite-fu-host *::before,\n.kite-fu-host *::after {\n box-sizing: inherit;\n}\n\n.kite-fu-skyLayer {\n opacity: 0.86;\n}\n\n.kite-fu-cloudSizeXs,\n.kite-fu-cloudSizeSm,\n.kite-fu-cloudSizeMd,\n.kite-fu-cloudSizeLg {\n transform-box: fill-box;\n transform-origin: center;\n}\n\n.kite-fu-cloudSizeXs {\n transform: scale(0.78);\n}\n.kite-fu-cloudSizeSm {\n transform: scale(0.92);\n}\n.kite-fu-cloudSizeMd {\n transform: scale(1.04);\n}\n.kite-fu-cloudSizeLg {\n transform: scale(1.18);\n}\n\n.kite-fu-cloudDelayB {\n animation-delay: -1.9s;\n}\n.kite-fu-cloudDelayC {\n animation-delay: -3s;\n}\n\n.kite-fu-cloudDriftFar {\n animation: cloud-pass-far 4.6s cubic-bezier(0.4, 0.06, 0.6, 0.94) infinite;\n will-change: transform, opacity;\n}\n\n.kite-fu-cloudDriftNear {\n animation: cloud-pass-near 3.5s cubic-bezier(0.34, 0.08, 0.58, 0.96) infinite;\n animation-delay: -1.6s;\n will-change: transform, opacity;\n}\n\n.kite-fu-cloudDriftHigh {\n animation: cloud-pass-high 3.2s cubic-bezier(0.36, 0.07, 0.58, 0.95) infinite;\n animation-delay: -2.4s;\n will-change: transform, opacity;\n}\n\n.kite-fu-cloudDriftAlt {\n animation: cloud-pass-alt 4.1s cubic-bezier(0.38, 0.06, 0.62, 0.95) infinite;\n animation-delay: -0.9s;\n will-change: transform, opacity;\n}\n\n@keyframes cloud-pass-far {\n 0% {\n transform: translate3d(22px, 0.4px, 0) scale(0.96);\n opacity: 0;\n }\n 18% {\n transform: translate3d(12px, -0.3px, 0) scale(0.98);\n opacity: 0.5;\n }\n 52% {\n transform: translate3d(-4px, 0.2px, 0) scale(1);\n opacity: 0.58;\n }\n 82% {\n transform: translate3d(-18px, -0.5px, 0) scale(0.98);\n opacity: 0.48;\n }\n 100% {\n transform: translate3d(-30px, 0.4px, 0) scale(0.95);\n opacity: 0;\n }\n}\n\n@keyframes cloud-pass-near {\n 0% {\n transform: translate3d(24px, -0.7px, 0) scale(1.02);\n opacity: 0;\n }\n 16% {\n transform: translate3d(14px, 0px, 0) scale(1.04);\n opacity: 0.62;\n }\n 48% {\n transform: translate3d(-4px, 0.6px, 0) scale(1.06);\n opacity: 0.72;\n }\n 78% {\n transform: translate3d(-18px, -0.1px, 0) scale(1.03);\n opacity: 0.64;\n }\n 100% {\n transform: translate3d(-32px, -0.8px, 0) scale(1.01);\n opacity: 0;\n }\n}\n\n@keyframes cloud-pass-high {\n 0% {\n transform: translate3d(26px, -1.2px, 0) scale(0.9);\n opacity: 0;\n }\n 20% {\n transform: translate3d(15px, -1.6px, 0) scale(0.95);\n opacity: 0.52;\n }\n 55% {\n transform: translate3d(-5px, -1px, 0) scale(0.98);\n opacity: 0.58;\n }\n 84% {\n transform: translate3d(-21px, -1.4px, 0) scale(0.94);\n opacity: 0.46;\n }\n 100% {\n transform: translate3d(-34px, -1.1px, 0) scale(0.9);\n opacity: 0;\n }\n}\n\n@keyframes cloud-pass-alt {\n 0% {\n transform: translate3d(24px, 1px, 0) scale(1.08);\n opacity: 0;\n }\n 15% {\n transform: translate3d(15px, 0.2px, 0) scale(1.1);\n opacity: 0.62;\n }\n 49% {\n transform: translate3d(-4px, 0.9px, 0) scale(1.12);\n opacity: 0.7;\n }\n 79% {\n transform: translate3d(-20px, 0.4px, 0) scale(1.08);\n opacity: 0.56;\n }\n 100% {\n transform: translate3d(-34px, 1.1px, 0) scale(1.05);\n opacity: 0;\n }\n}\n\n.kite-fu-float {\n animation: kite-float 1.9s cubic-bezier(0.45, 0.05, 0.55, 0.95) infinite;\n transform-box: fill-box;\n transform-origin: center;\n}\n\n@keyframes kite-float {\n 0% {\n transform: translate(-11px, 0px) rotate(-5deg);\n }\n 16% {\n transform: translate(-6px, -1px) rotate(-2deg);\n }\n 32% {\n transform: translate(0px, -2px) rotate(1deg);\n }\n 48% {\n transform: translate(7px, -1px) rotate(4deg);\n }\n 64% {\n transform: translate(11px, 0px) rotate(6deg);\n }\n 80% {\n transform: translate(4px, 1px) rotate(3deg);\n }\n 92% {\n transform: translate(-5px, 1px) rotate(-2deg);\n }\n 100% {\n transform: translate(-11px, 0px) rotate(-5deg);\n }\n}\n\n.kite-fu-shadowBreathe {\n animation: kite-shadow-breathe 1.9s ease-in-out infinite;\n opacity: 0.48;\n}\n\n@keyframes kite-shadow-breathe {\n 0% {\n opacity: 0.48;\n }\n 30% {\n opacity: 0.66;\n }\n 50% {\n opacity: 0.82;\n }\n 72% {\n opacity: 0.64;\n }\n 100% {\n opacity: 0.48;\n }\n}\n\n.kite-fu-stringSway {\n animation: kite-string-sway 1.9s ease-in-out infinite;\n transform-box: fill-box;\n transform-origin: top center;\n opacity: 0.35;\n}\n\n@keyframes kite-string-sway {\n 0% {\n transform: rotate(6deg);\n }\n 16% {\n transform: rotate(3deg);\n }\n 32% {\n transform: rotate(-2deg);\n }\n 48% {\n transform: rotate(-6deg);\n }\n 64% {\n transform: rotate(-7deg);\n }\n 80% {\n transform: rotate(-1deg);\n }\n 92% {\n transform: rotate(4deg);\n }\n 100% {\n transform: rotate(6deg);\n }\n}\n\n.kite-fu-kiteBreath {\n animation: kite-breath 1.6s ease-in-out infinite;\n}\n\n@keyframes kite-breath {\n 0%,\n 100% {\n opacity: 1;\n }\n 50% {\n opacity: 0.45;\n }\n}\n\n.kite-fu-dot {\n animation: kite-dot 1.2s ease-in-out infinite;\n}\n\n.kite-fu-dot1 {\n animation-delay: 0.15s;\n}\n.kite-fu-dot2 {\n animation-delay: 0.3s;\n}\n\n@keyframes kite-dot {\n 0%,\n 60%,\n 100% {\n transform: translateY(0);\n opacity: 0.3;\n }\n 30% {\n transform: translateY(-5px);\n opacity: 1;\n }\n}\n\n@keyframes kite-label-pulse {\n 0%,\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n 50% {\n opacity: 0.42;\n transform: translateY(0.5px);\n }\n}\n\n.kite-fu-loadingDots {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.kite-fu-loadingDotsBelowBrand {\n margin-top: 14px;\n}\n\n.kite-fu-loadingDot {\n width: 6px;\n height: 6px;\n border-radius: 9999px;\n background: var(--kite-primary);\n animation: kite-dot 1.2s ease-in-out infinite;\n}\n\n.kite-fu-loadingDot1 {\n animation-delay: 0.15s;\n}\n.kite-fu-loadingDot2 {\n animation-delay: 0.3s;\n}\n\n.kite-fu-logoWrap {\n display: inline-flex;\n align-items: center;\n gap: 10px;\n}\n\n.kite-fu-logoText {\n margin: 0;\n color: var(--kite-foreground);\n letter-spacing: -0.03em;\n line-height: 1;\n}\n\n.kite-fu-logoTextStrong {\n font-weight: 600;\n}\n\n.kite-fu-logoTextLight {\n font-weight: 300;\n}\n\n.kite-fu-pageWrap {\n font-family: \"Inter Variable\", Inter, sans-serif;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n font-weight: 400;\n}\n\n.kite-fu-pageWrapFullscreen {\n min-height: 100vh;\n}\n\n.kite-fu-pageWrapOverlay {\n position: fixed;\n inset: 0;\n z-index: 50;\n background: var(--kite-overlay-background);\n backdrop-filter: blur(var(--kite-overlay-blur));\n}\n\n.kite-fu-label {\n margin: 10px 0 0;\n font-size: 14px;\n font-family: \"Inter Variable\", Inter, sans-serif;\n font-weight: 400;\n line-height: 1.4;\n color: var(--kite-muted);\n animation: kite-label-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n\n.kite-fu-loadingTextPulse {\n animation: kite-label-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n","import {\n createElement,\n createContext,\n type CSSProperties,\n type ReactNode,\n useContext,\n} from \"react\";\n\nexport interface KiteTheme {\n primary?: string;\n foreground?: string;\n muted?: string;\n overlayBackground?: string;\n overlayBlur?: string;\n}\n\ninterface FlyUIThemeProviderProps {\n theme?: KiteTheme;\n children: ReactNode;\n}\n\nconst FlyUIThemeContext = createContext<KiteTheme | undefined>(undefined);\n\nexport function FlyUIThemeProvider({\n theme,\n children,\n}: FlyUIThemeProviderProps) {\n return createElement(FlyUIThemeContext.Provider, { value: theme }, children);\n}\n\nexport function useFlyUITheme() {\n return useContext(FlyUIThemeContext);\n}\n\nexport function mergeKiteTheme(\n globalTheme?: KiteTheme,\n componentTheme?: KiteTheme,\n) {\n return { ...globalTheme, ...componentTheme };\n}\n\nexport function buildKiteThemeStyle(theme?: KiteTheme): CSSProperties {\n if (!theme) {\n return {};\n }\n\n return {\n ...(theme.primary ? { [\"--kite-primary\" as string]: theme.primary } : {}),\n ...(theme.foreground\n ? { [\"--kite-foreground\" as string]: theme.foreground }\n : {}),\n ...(theme.muted ? { [\"--kite-muted\" as string]: theme.muted } : {}),\n ...(theme.overlayBackground\n ? { [\"--kite-overlay-background\" as string]: theme.overlayBackground }\n : {}),\n ...(theme.overlayBlur\n ? { [\"--kite-overlay-blur\" as string]: theme.overlayBlur }\n : {}),\n } as CSSProperties;\n}\n","import type { CSSProperties } from \"react\";\n\nimport { cn } from \"../../lib/cn\";\n\nimport styles from \"./kite-animations.module.css\";\nimport {\n buildKiteThemeStyle,\n mergeKiteTheme,\n type KiteTheme,\n useFlyUITheme,\n} from \"./theme\";\n\nconst SIZE = {\n xs: { icon: 16, text: 12, gap: 4, strongWeight: 600 },\n sm: { icon: 20, text: 14, gap: 6, strongWeight: 600 },\n md: { icon: 24, text: 16, gap: 7, strongWeight: 600 },\n lg: { icon: 28, text: 18, gap: 8, strongWeight: 700 },\n xl: { icon: 40, text: 24, gap: 9, strongWeight: 700 },\n} as const;\n\ntype SizeKey = keyof typeof SIZE;\n\nexport interface KiteLogoProps {\n size?: SizeKey;\n showText?: boolean;\n name?: string;\n subBrand?: string;\n iconTextGap?: number;\n theme?: KiteTheme;\n className?: string;\n textClassName?: string;\n style?: CSSProperties;\n}\n\nfunction KiteIcon({ size }: { size: number }) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path d=\"M12 0 L0 9 L12 24 Z\" fill=\"var(--kite-primary, #0ea5e9)\" />\n <path\n d=\"M12 0 L24 9 L12 24 Z\"\n fill=\"var(--kite-primary, #0ea5e9)\"\n opacity=\"0.48\"\n />\n </svg>\n );\n}\n\nexport function KiteLogo({\n size = \"md\",\n showText = true,\n name = \"Fly\",\n subBrand = \"UI\",\n iconTextGap,\n theme,\n className,\n textClassName,\n style,\n}: KiteLogoProps) {\n const cfg = SIZE[size];\n const globalTheme = useFlyUITheme();\n const resolvedTheme = mergeKiteTheme(globalTheme, theme);\n const themeStyle = buildKiteThemeStyle(resolvedTheme);\n\n return (\n <div\n className={cn(\n styles[\"kite-fu-host\"],\n styles[\"kite-fu-logoWrap\"],\n className,\n )}\n style={{ ...themeStyle, ...style, gap: iconTextGap ?? cfg.gap }}\n >\n <KiteIcon size={cfg.icon} />\n {showText ? (\n <span\n className={cn(styles[\"kite-fu-logoText\"], textClassName)}\n style={{\n fontSize: `${cfg.text}px`,\n fontFamily: '\"Inter Variable\", sans-serif',\n letterSpacing: \"-0.03em\",\n lineHeight: 1,\n }}\n >\n <span\n className={styles[\"kite-fu-logoTextStrong\"]}\n style={{ fontWeight: cfg.strongWeight }}\n >\n {name}\n </span>\n <span className={styles[\"kite-fu-logoTextLight\"]}>{subBrand}</span>\n </span>\n ) : null}\n </div>\n );\n}\n","import type { CSSProperties } from \"react\";\n\nimport { cn } from \"../../lib/cn\";\n\nimport styles from \"./kite-animations.module.css\";\nimport {\n buildKiteThemeStyle,\n mergeKiteTheme,\n type KiteTheme,\n useFlyUITheme,\n} from \"./theme\";\n\nconst SIZES = {\n sm: 32,\n md: 48,\n lg: 64,\n} as const;\n\ntype LoaderSize = keyof typeof SIZES;\n\nexport interface KiteLoaderProps {\n size?: LoaderSize;\n label?: string;\n showBrand?: boolean;\n name?: string;\n subBrand?: string;\n theme?: KiteTheme;\n className?: string;\n style?: CSSProperties;\n}\n\nexport function KiteLoader({\n size = \"md\",\n label,\n showBrand = false,\n name = \"Fly\",\n subBrand = \"UI\",\n theme,\n className,\n style,\n}: KiteLoaderProps) {\n const px = SIZES[size];\n const svgH = Math.round(px * 1.2);\n const globalTheme = useFlyUITheme();\n const resolvedTheme = mergeKiteTheme(globalTheme, theme);\n const themeStyle = buildKiteThemeStyle(resolvedTheme);\n\n return (\n <div\n className={cn(styles[\"kite-fu-host\"], className)}\n role=\"status\"\n aria-label={label ?? \"Loading\"}\n style={{ ...themeStyle, ...style }}\n >\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n gap: 10,\n }}\n >\n <svg\n width={px}\n height={svgH}\n viewBox=\"0 0 24 31\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n overflow=\"visible\"\n >\n <g className={styles[\"kite-fu-skyLayer\"]} aria-hidden=\"true\">\n <g className={styles[\"kite-fu-cloudSizeSm\"]}>\n <g className={styles[\"kite-fu-cloudDriftHigh\"]}>\n <path\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\"\n fill=\"var(--kite-muted, #64748b)\"\n opacity=\"0.28\"\n />\n </g>\n </g>\n <g className={styles[\"kite-fu-cloudSizeLg\"]}>\n <g className={styles[\"kite-fu-cloudDriftFar\"]}>\n <path\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\"\n fill=\"var(--kite-muted, #64748b)\"\n opacity=\"0.32\"\n />\n </g>\n </g>\n </g>\n <g\n className={cn(\n styles[\"kite-fu-float\"],\n styles[\"kite-fu-kiteBreath\"],\n )}\n >\n <g transform=\"rotate(90 12 12)\">\n <path\n d=\"M12 0 L0 9 L12 24 Z\"\n fill=\"var(--kite-primary, #0ea5e9)\"\n />\n <path\n d=\"M12 0 L24 9 L12 24 Z\"\n fill=\"var(--kite-primary, #0ea5e9)\"\n className={styles[\"kite-fu-shadowBreathe\"]}\n />\n <path\n d=\"M12 24 Q13 28.5 12 31\"\n stroke=\"var(--kite-muted, #64748b)\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n fill=\"none\"\n className={styles[\"kite-fu-stringSway\"]}\n />\n </g>\n </g>\n </svg>\n {showBrand ? (\n <span\n className={cn(\n styles[\"kite-fu-logoText\"],\n styles[\"kite-fu-loadingTextPulse\"],\n )}\n style={{\n marginTop: -2,\n fontSize: 20,\n fontFamily: '\"Inter Variable\", sans-serif',\n letterSpacing: \"-0.03em\",\n lineHeight: 1,\n }}\n >\n <span className={styles[\"kite-fu-logoTextStrong\"]}>{name}</span>\n <span className={styles[\"kite-fu-logoTextLight\"]}>{subBrand}</span>\n </span>\n ) : null}\n {label ? <p className={styles[\"kite-fu-label\"]}>{label}</p> : null}\n </div>\n </div>\n );\n}\n","import type { CSSProperties } from \"react\";\n\nimport { cn } from \"../../lib/cn\";\n\nimport styles from \"./kite-animations.module.css\";\nimport {\n buildKiteThemeStyle,\n mergeKiteTheme,\n type KiteTheme,\n useFlyUITheme,\n} from \"./theme\";\n\nexport interface KitePageLoaderProps {\n message?: string;\n overlay?: boolean;\n name?: string;\n subBrand?: string;\n theme?: KiteTheme;\n className?: string;\n style?: CSSProperties;\n}\n\nexport function KitePageLoader({\n message,\n overlay = false,\n name = \"Fly\",\n subBrand = \"UI\",\n theme,\n className,\n style,\n}: KitePageLoaderProps) {\n const globalTheme = useFlyUITheme();\n const resolvedTheme = mergeKiteTheme(globalTheme, theme);\n const themeStyle = buildKiteThemeStyle(resolvedTheme);\n\n return (\n <div\n role=\"status\"\n aria-live=\"polite\"\n aria-label={message ?? \"Loading\"}\n className={cn(\n styles[\"kite-fu-host\"],\n styles[\"kite-fu-pageWrap\"],\n overlay\n ? styles[\"kite-fu-pageWrapOverlay\"]\n : styles[\"kite-fu-pageWrapFullscreen\"],\n className,\n )}\n style={{ ...themeStyle, ...style }}\n >\n <svg\n width={56}\n height={58}\n viewBox=\"0 0 24 31\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n overflow=\"visible\"\n >\n <g className={styles[\"kite-fu-skyLayer\"]} aria-hidden=\"true\">\n <g className={styles[\"kite-fu-cloudSizeSm\"]}>\n <g className={styles[\"kite-fu-cloudDriftHigh\"]}>\n <path\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\"\n fill=\"var(--kite-muted, #64748b)\"\n opacity=\"0.28\"\n />\n </g>\n </g>\n <g className={styles[\"kite-fu-cloudSizeLg\"]}>\n <g className={styles[\"kite-fu-cloudDriftFar\"]}>\n <path\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\"\n fill=\"var(--kite-muted, #64748b)\"\n opacity=\"0.32\"\n />\n </g>\n </g>\n </g>\n <g\n className={cn(styles[\"kite-fu-float\"], styles[\"kite-fu-kiteBreath\"])}\n >\n <g transform=\"rotate(90 12 12)\">\n <path d=\"M12 0 L0 9 L12 24 Z\" fill=\"var(--kite-primary, #0ea5e9)\" />\n <path\n d=\"M12 0 L24 9 L12 24 Z\"\n fill=\"var(--kite-primary, #0ea5e9)\"\n className={styles[\"kite-fu-shadowBreathe\"]}\n />\n <path\n d=\"M12 24 Q13 28.5 12 31\"\n stroke=\"var(--kite-muted, #64748b)\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n fill=\"none\"\n className={styles[\"kite-fu-stringSway\"]}\n />\n </g>\n </g>\n </svg>\n\n <span\n className={cn(\n styles[\"kite-fu-logoText\"],\n styles[\"kite-fu-loadingTextPulse\"],\n )}\n style={{\n marginTop: -2,\n fontSize: 20,\n fontFamily: '\"Inter Variable\", sans-serif',\n letterSpacing: \"-0.03em\",\n lineHeight: 1,\n }}\n >\n <span className={styles[\"kite-fu-logoTextStrong\"]}>{name}</span>\n <span className={styles[\"kite-fu-logoTextLight\"]}>{subBrand}</span>\n </span>\n\n <div\n className={cn(\n styles[\"kite-fu-loadingDots\"],\n styles[\"kite-fu-loadingDotsBelowBrand\"],\n )}\n aria-hidden=\"true\"\n >\n <span className={styles[\"kite-fu-loadingDot\"]} />\n <span\n className={cn(\n styles[\"kite-fu-loadingDot\"],\n styles[\"kite-fu-loadingDot1\"],\n )}\n />\n <span\n className={cn(\n styles[\"kite-fu-loadingDot\"],\n styles[\"kite-fu-loadingDot2\"],\n )}\n />\n </div>\n\n {message ? <p className={styles[\"kite-fu-label\"]}>{message}</p> : null}\n </div>\n );\n}\n","import type { CSSProperties } from \"react\";\n\nimport { cn } from \"../../lib/cn\";\n\nimport styles from \"../kite/kite-animations.module.css\";\nimport {\n buildKiteThemeStyle,\n mergeKiteTheme,\n type KiteTheme,\n useFlyUITheme,\n} from \"../kite/theme\";\n\nexport interface LoadingProps {\n className?: string;\n label?: string;\n theme?: KiteTheme;\n style?: CSSProperties;\n}\n\nexport function Loading({ className, label, theme, style }: LoadingProps) {\n const globalTheme = useFlyUITheme();\n const resolvedTheme = mergeKiteTheme(globalTheme, theme);\n const themeStyle = buildKiteThemeStyle(resolvedTheme);\n\n return (\n <div\n className={cn(styles[\"kite-fu-host\"], className)}\n role=\"status\"\n aria-label={label ?? \"Loading\"}\n style={{ ...themeStyle, ...style }}\n >\n <div className={styles[\"kite-fu-loadingDots\"]}>\n <span className={styles[\"kite-fu-loadingDot\"]} />\n <span\n className={cn(\n styles[\"kite-fu-loadingDot\"],\n styles[\"kite-fu-loadingDot1\"],\n )}\n />\n <span\n className={cn(\n styles[\"kite-fu-loadingDot\"],\n styles[\"kite-fu-loadingDot2\"],\n )}\n />\n </div>\n </div>\n );\n}\n"],"mappings":"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","names":["jsx","jsxs","jsx","jsxs","jsx","jsxs"]}
package/package.json CHANGED
@@ -1,9 +1,16 @@
1
1
  {
2
2
  "name": "@kitelus/fly-ui",
3
3
  "private": false,
4
- "version": "0.1.0",
4
+ "version": "0.1.2",
5
5
  "description": "Fly UI - isolated React component library with modern Storybook docs",
6
6
  "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/kitelus/fly-ui.git"
10
+ },
11
+ "bugs": {
12
+ "url": "https://github.com/kitelus/fly-ui/issues"
13
+ },
7
14
  "type": "module",
8
15
  "homepage": "https://kitelus.github.io/fly-ui/",
9
16
  "main": "./dist/index.cjs",
@@ -30,12 +37,17 @@
30
37
  "build": "npm run build:lib",
31
38
  "build:lib": "tsup",
32
39
  "lint": "eslint .",
40
+ "lint:staged": "lint-staged",
33
41
  "preview": "vite preview",
34
42
  "storybook": "storybook dev -p 6006",
35
43
  "build-storybook": "storybook build -o storybook-static",
36
44
  "test-storybook": "vitest run",
45
+ "prepare": "husky",
37
46
  "prepublishOnly": "npm run build:lib"
38
47
  },
48
+ "lint-staged": {
49
+ "*.{js,jsx,ts,tsx}": "eslint --fix"
50
+ },
39
51
  "peerDependencies": {
40
52
  "react": ">=18",
41
53
  "react-dom": ">=18"
@@ -63,6 +75,8 @@
63
75
  "eslint-plugin-react-refresh": "^0.5.2",
64
76
  "eslint-plugin-storybook": "^10.3.4",
65
77
  "globals": "^17.4.0",
78
+ "husky": "^9.1.7",
79
+ "lint-staged": "^16.4.0",
66
80
  "playwright": "^1.59.1",
67
81
  "storybook": "^10.3.4",
68
82
  "tsup": "^8.5.1",