@rock.star/ui 1.1.2 → 1.1.6
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/dist/icon/index.js +5 -9
- package/dist/icon/index.js.map +1 -1
- package/dist/index.d.ts +5 -4
- package/dist/index.js +906 -597
- package/dist/index.js.map +1 -1
- package/dist/lib/index.d.ts +14 -5
- package/dist/lib/index.js +41 -48
- package/dist/lib/index.js.map +1 -1
- package/dist/loader.css +93 -0
- package/dist/ui/index.d.ts +3 -1
- package/dist/ui/index.js +680 -602
- package/dist/ui/index.js.map +1 -1
- package/package.json +4 -5
- package/dist/utils-Cbsgs0XP.d.ts +0 -5
package/dist/lib/index.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { OpenAI } from 'openai';
|
|
2
2
|
import * as nuqs_server from 'nuqs/server';
|
|
3
|
-
|
|
4
|
-
import 'clsx';
|
|
3
|
+
import * as React from 'react';
|
|
5
4
|
|
|
6
5
|
type PluginListenerHandle = {
|
|
7
6
|
remove: () => Promise<void>;
|
|
@@ -202,8 +201,6 @@ declare function pickNativeChooserImageFiles({ isNative, limit, title, }: {
|
|
|
202
201
|
title?: string;
|
|
203
202
|
}): Promise<File[] | null>;
|
|
204
203
|
|
|
205
|
-
declare const fontVariables: string;
|
|
206
|
-
|
|
207
204
|
declare function getOpenAI(): OpenAI;
|
|
208
205
|
|
|
209
206
|
type SearchParamSource = Pick<URLSearchParams, "has" | "toString">;
|
|
@@ -306,4 +303,16 @@ declare const SearchParams: nuqs_server.LoaderFunction<{
|
|
|
306
303
|
declare function hasFlagSearchParam(searchParams: SearchParamSource, key: "cart" | "notification"): boolean;
|
|
307
304
|
declare function buildFlagSearchParamHref(pathname: string, searchParams: SearchParamSource, key: "cart" | "notification", enabled: boolean): string;
|
|
308
305
|
|
|
309
|
-
|
|
306
|
+
type PossibleRef<T> = React.Ref<T> | undefined;
|
|
307
|
+
/**
|
|
308
|
+
* A utility to compose multiple refs together
|
|
309
|
+
* Accepts callback refs and RefObject(s)
|
|
310
|
+
*/
|
|
311
|
+
declare function composeRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T>;
|
|
312
|
+
/**
|
|
313
|
+
* A custom hook that composes multiple refs
|
|
314
|
+
* Accepts callback refs and RefObject(s)
|
|
315
|
+
*/
|
|
316
|
+
declare function useComposedRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T>;
|
|
317
|
+
|
|
318
|
+
export { type NativeSharePayload, type NativeSharedFile, type NativeUpdateInfo, type NativeUpdateState, SearchParams, buildFlagSearchParamHref, composeRefs, getNativeAppPlugin, getNativeAppSettingsPlugin, getNativeBrowserPlugin, getNativeCameraPlugin, getNativeImagePickerPlugin, getNativeInAppUpdatePlugin, getNativePaymentPlugin, getNativePlatform, getNativeShareFilePlugin, getNativeSharePlugin, getNativeShareTargetPlugin, getNativeStatusBarPlugin, getNativeThemePlugin, getOpenAI, hasFlagSearchParam, isNativeApp, nativeSharedFileToFile, openExternalUrl, openNativeAppSettings, openUpiPaymentUrl, pickNativeChooserImageFiles, pickNativeImageFiles, saveNativeShareImage, searchParamKeys, searchParams, shareNativeOrWeb, useComposedRefs };
|
package/dist/lib/index.js
CHANGED
|
@@ -224,51 +224,6 @@ async function pickNativeChooserImageFiles({
|
|
|
224
224
|
}
|
|
225
225
|
}
|
|
226
226
|
|
|
227
|
-
// src/lib/fonts.ts
|
|
228
|
-
import {
|
|
229
|
-
Geist_Mono as FontMono,
|
|
230
|
-
Noto_Sans_Arabic as FontNotoSansArabic,
|
|
231
|
-
Noto_Sans_Hebrew as FontNotoSansHebrew,
|
|
232
|
-
Geist as FontSans
|
|
233
|
-
} from "next/font/google";
|
|
234
|
-
|
|
235
|
-
// src/lib/utils.ts
|
|
236
|
-
import { clsx } from "clsx";
|
|
237
|
-
import { twMerge } from "tailwind-merge";
|
|
238
|
-
function cn(...inputs) {
|
|
239
|
-
return twMerge(clsx(inputs));
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
// src/lib/fonts.ts
|
|
243
|
-
var fontSans = FontSans({
|
|
244
|
-
subsets: ["latin"],
|
|
245
|
-
variable: "--font-sans"
|
|
246
|
-
});
|
|
247
|
-
var fontHeading = FontSans({
|
|
248
|
-
subsets: ["latin"],
|
|
249
|
-
variable: "--font-heading"
|
|
250
|
-
});
|
|
251
|
-
var fontMono = FontMono({
|
|
252
|
-
subsets: ["latin"],
|
|
253
|
-
variable: "--font-mono",
|
|
254
|
-
weight: ["400"]
|
|
255
|
-
});
|
|
256
|
-
var fontNotoSansArabic = FontNotoSansArabic({
|
|
257
|
-
subsets: ["latin"],
|
|
258
|
-
variable: "--font-ar"
|
|
259
|
-
});
|
|
260
|
-
var fontNotoSansHebrew = FontNotoSansHebrew({
|
|
261
|
-
subsets: ["latin"],
|
|
262
|
-
variable: "--font-he"
|
|
263
|
-
});
|
|
264
|
-
var fontVariables = cn(
|
|
265
|
-
fontSans.variable,
|
|
266
|
-
fontHeading.variable,
|
|
267
|
-
fontMono.variable,
|
|
268
|
-
fontNotoSansArabic.variable,
|
|
269
|
-
fontNotoSansHebrew.variable
|
|
270
|
-
);
|
|
271
|
-
|
|
272
227
|
// src/lib/openai.ts
|
|
273
228
|
import { OpenAI as AI } from "openai";
|
|
274
229
|
var client;
|
|
@@ -347,11 +302,48 @@ function buildFlagSearchParamHref(pathname, searchParams2, key, enabled) {
|
|
|
347
302
|
}
|
|
348
303
|
return query ? `${pathname}?${query}` : pathname;
|
|
349
304
|
}
|
|
305
|
+
|
|
306
|
+
// src/lib/compose-refs.ts
|
|
307
|
+
import * as React from "react";
|
|
308
|
+
function setRef(ref, value) {
|
|
309
|
+
if (typeof ref === "function") {
|
|
310
|
+
return ref(value);
|
|
311
|
+
}
|
|
312
|
+
if (ref !== null && ref !== void 0) {
|
|
313
|
+
ref.current = value;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
function composeRefs(...refs) {
|
|
317
|
+
return (node) => {
|
|
318
|
+
let hasCleanup = false;
|
|
319
|
+
const cleanups = refs.map((ref) => {
|
|
320
|
+
const cleanup = setRef(ref, node);
|
|
321
|
+
if (!hasCleanup && typeof cleanup === "function") {
|
|
322
|
+
hasCleanup = true;
|
|
323
|
+
}
|
|
324
|
+
return cleanup;
|
|
325
|
+
});
|
|
326
|
+
if (hasCleanup) {
|
|
327
|
+
return () => {
|
|
328
|
+
for (let i = 0; i < cleanups.length; i++) {
|
|
329
|
+
const cleanup = cleanups[i];
|
|
330
|
+
if (typeof cleanup === "function") {
|
|
331
|
+
cleanup();
|
|
332
|
+
} else {
|
|
333
|
+
setRef(refs[i], null);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
function useComposedRefs(...refs) {
|
|
341
|
+
return React.useCallback(composeRefs(...refs), refs);
|
|
342
|
+
}
|
|
350
343
|
export {
|
|
351
344
|
SearchParams,
|
|
352
345
|
buildFlagSearchParamHref,
|
|
353
|
-
|
|
354
|
-
fontVariables,
|
|
346
|
+
composeRefs,
|
|
355
347
|
getNativeAppPlugin,
|
|
356
348
|
getNativeAppSettingsPlugin,
|
|
357
349
|
getNativeBrowserPlugin,
|
|
@@ -377,6 +369,7 @@ export {
|
|
|
377
369
|
saveNativeShareImage,
|
|
378
370
|
searchParamKeys,
|
|
379
371
|
searchParams,
|
|
380
|
-
shareNativeOrWeb
|
|
372
|
+
shareNativeOrWeb,
|
|
373
|
+
useComposedRefs
|
|
381
374
|
};
|
|
382
375
|
//# sourceMappingURL=index.js.map
|
package/dist/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/lib/capacitor.ts","../../src/lib/fonts.ts","../../src/lib/utils.ts","../../src/lib/openai.ts","../../src/lib/parms.ts"],"sourcesContent":["type PluginListenerHandle = {\n remove: () => Promise<void>\n}\n\ntype AppUrlOpenEvent = {\n url: string\n}\n\ntype AppPlugin = {\n addListener?: (\n eventName: \"appUrlOpen\",\n listener: (event: AppUrlOpenEvent) => void\n ) => PluginListenerHandle | Promise<PluginListenerHandle>\n}\n\ntype StatusBarStyle = \"DARK\" | \"LIGHT\" | \"DEFAULT\"\n\ntype StatusBarPlugin = {\n setBackgroundColor?: (options: { color: string }) => Promise<void>\n setStyle?: (options: { style: StatusBarStyle }) => Promise<void>\n}\n\ntype BrowserPlugin = {\n open?: (options: { url: string }) => Promise<void>\n}\n\ntype NativeSharePlugin = {\n share?: (options: {\n title?: string\n text?: string\n url?: string\n files?: string[]\n dialogTitle?: string\n }) => Promise<void>\n}\n\ntype NativeThemePlugin = {\n setStyle?: (options: { style: \"dark\" | \"light\" | \"system\" }) => Promise<void>\n}\n\ntype NativePaymentPlugin = {\n openUpiUrl?: (options: {\n url: string\n title?: string\n }) => Promise<{ opened: boolean }>\n}\n\nexport type NativeSharedFile = {\n name: string\n type: string\n size: number\n data: string\n}\n\ntype NativeImagePickerPlugin = {\n pickImages?: (options: {\n limit?: number\n title?: string\n }) => Promise<{ files: NativeSharedFile[] }>\n}\n\nexport type NativeSharePayload = {\n id: string\n title?: string | null\n text?: string | null\n files: NativeSharedFile[]\n}\n\ntype NativeShareTargetPlugin = {\n addListener?: (\n eventName: \"shareReceived\",\n listener: (event: NativeSharePayload) => void\n ) => PluginListenerHandle | Promise<PluginListenerHandle>\n getPendingShare?: () => Promise<{ share: NativeSharePayload | null }>\n clearPendingShare?: () => Promise<void>\n}\n\ntype NativeAppSettingsPlugin = {\n openAppSettings?: () => Promise<void>\n}\n\nexport type NativeUpdateState = {\n status: \"downloading\" | \"downloaded\" | \"installing\" | \"installed\" | \"failed\" | \"canceled\" | \"unknown\"\n bytesDownloaded: number\n totalBytesToDownload: number\n}\n\nexport type NativeUpdateInfo = NativeUpdateState & {\n available: boolean\n inProgress: boolean\n availableVersionCode: number\n installStatus: NativeUpdateState[\"status\"]\n}\n\ntype NativeInAppUpdatePlugin = {\n checkForUpdate?: () => Promise<NativeUpdateInfo>\n startUpdate?: () => Promise<void>\n completeUpdate?: () => Promise<void>\n addListener?: (\n eventName: \"updateStateChanged\",\n listener: (state: NativeUpdateState) => void\n ) => PluginListenerHandle | Promise<PluginListenerHandle>\n}\n\ntype NativeShareFilePlugin = {\n saveImage?: (options: {\n data: string\n fileName?: string\n }) => Promise<{ path?: string }>\n}\n\ntype CameraPhoto = {\n format?: string\n path?: string\n webPath?: string\n}\n\ntype CameraPlugin = {\n getPhoto?: (options: {\n allowEditing?: boolean\n quality?: number\n resultType: \"uri\"\n source?: \"PROMPT\" | \"CAMERA\" | \"PHOTOS\"\n }) => Promise<CameraPhoto>\n pickImages?: (options: {\n limit?: number\n quality?: number\n }) => Promise<{ photos: CameraPhoto[] }>\n}\n\ntype CapacitorRuntime = {\n isNativePlatform?: () => boolean\n getPlatform?: () => string\n Plugins?: {\n App?: AppPlugin\n Browser?: BrowserPlugin\n Camera?: CameraPlugin\n NativeAppSettings?: NativeAppSettingsPlugin\n NativeInAppUpdate?: NativeInAppUpdatePlugin\n NativeImagePicker?: NativeImagePickerPlugin\n NativeShareFile?: NativeShareFilePlugin\n NativePayment?: NativePaymentPlugin\n NativeTheme?: NativeThemePlugin\n NativeShareTarget?: NativeShareTargetPlugin\n Share?: NativeSharePlugin\n StatusBar?: StatusBarPlugin\n }\n}\n\ndeclare global {\n interface Window {\n Capacitor?: CapacitorRuntime\n }\n}\n\nexport function isNativeApp() {\n if (typeof window === \"undefined\") return false\n\n return window.Capacitor?.isNativePlatform?.() === true\n}\n\nexport function getNativePlatform() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.getPlatform?.() ?? null\n}\n\nexport function getNativeAppPlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.App ?? null\n}\n\nexport function getNativeStatusBarPlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.StatusBar ?? null\n}\n\nexport function getNativeBrowserPlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.Browser ?? null\n}\n\nexport function getNativeSharePlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.Share ?? null\n}\n\nexport function getNativeCameraPlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.Camera ?? null\n}\n\nexport function getNativeImagePickerPlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.NativeImagePicker ?? null\n}\n\nexport function getNativeShareFilePlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.NativeShareFile ?? null\n}\n\nexport function getNativeThemePlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.NativeTheme ?? null\n}\n\nexport function getNativePaymentPlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.NativePayment ?? null\n}\n\nexport function getNativeShareTargetPlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.NativeShareTarget ?? null\n}\n\nexport function getNativeAppSettingsPlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.NativeAppSettings ?? null\n}\n\nexport function getNativeInAppUpdatePlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.NativeInAppUpdate ?? null\n}\n\n/** Opens the OS App Info page. Returns false when unavailable (web or old shell). */\nexport async function openNativeAppSettings() {\n const settings = getNativeAppSettingsPlugin()\n\n if (!settings?.openAppSettings) return false\n\n try {\n await settings.openAppSettings()\n return true\n } catch {\n return false\n }\n}\n\nexport async function openUpiPaymentUrl(\n url: string,\n options: {\n isNative?: boolean\n title?: string\n } = {}\n) {\n if (typeof window === \"undefined\") return false\n\n if (options.isNative ?? isNativeApp()) {\n const payment = getNativePaymentPlugin()\n\n if (payment?.openUpiUrl) {\n const result = await payment.openUpiUrl({\n url,\n title: options.title,\n })\n\n return result.opened\n }\n }\n\n window.location.href = url\n return true\n}\n\nexport async function openExternalUrl(\n url: string,\n options: {\n isNative?: boolean\n target?: string\n features?: string\n } = {}\n) {\n if (typeof window === \"undefined\") return false\n\n if (options.isNative ?? isNativeApp()) {\n const browser = getNativeBrowserPlugin()\n\n if (browser?.open) {\n await browser.open({ url })\n return true\n }\n }\n\n const opened = window.open(\n url,\n options.target ?? \"_blank\",\n options.features ?? \"noopener,noreferrer\"\n )\n\n return opened != null\n}\n\n/**\n * Saves base64 image bytes into app-private storage and returns a file:// URL\n * that @capacitor/share can attach. Returns null outside the native app or\n * when the save fails, so callers can fall back to a text-only share.\n */\nexport async function saveNativeShareImage(\n dataUrl: string,\n options: {\n fileName?: string\n isNative?: boolean\n } = {}\n) {\n if (!(options.isNative ?? isNativeApp())) return null\n\n const plugin = getNativeShareFilePlugin()\n\n if (!plugin?.saveImage) return null\n\n try {\n const result = await plugin.saveImage({\n data: dataUrl,\n fileName: options.fileName,\n })\n\n return result.path ?? null\n } catch {\n return null\n }\n}\n\nexport async function shareNativeOrWeb(\n data: {\n title?: string\n text?: string\n url?: string\n files?: string[]\n dialogTitle?: string\n },\n options: {\n isNative?: boolean\n } = {}\n) {\n if (typeof window === \"undefined\") return false\n\n if (options.isNative ?? isNativeApp()) {\n const share = getNativeSharePlugin()\n\n if (share?.share) {\n await share.share(data)\n return true\n }\n }\n\n // Web Share only accepts File objects, not file:// URL strings.\n const { files: _files, ...webData } = data\n\n if (typeof navigator.share === \"function\") {\n await navigator.share(webData)\n return true\n }\n\n return false\n}\n\nfunction isNativePickerCancel(error: unknown) {\n if (!(error instanceof Error)) return false\n\n const message = error.message.toLowerCase()\n\n return (\n message.includes(\"cancel\") ||\n message.includes(\"dismiss\") ||\n message.includes(\"no image\") ||\n message.includes(\"user denied\")\n )\n}\n\nfunction imageTypeFromFormat(format: string | undefined, fallback: string) {\n if (!format) return fallback\n\n const normalized = format.toLowerCase()\n\n if (normalized === \"jpg\") return \"image/jpeg\"\n if (normalized === \"jpeg\") return \"image/jpeg\"\n if (normalized === \"png\") return \"image/png\"\n if (normalized === \"webp\") return \"image/webp\"\n if (normalized === \"heic\") return \"image/heic\"\n if (normalized === \"heif\") return \"image/heif\"\n\n return fallback\n}\n\nfunction imageExtensionFromType(type: string) {\n if (type.includes(\"png\")) return \"png\"\n if (type.includes(\"webp\")) return \"webp\"\n if (type.includes(\"heic\")) return \"heic\"\n if (type.includes(\"heif\")) return \"heif\"\n\n return \"jpg\"\n}\n\nexport function nativeSharedFileToFile(\n sharedFile: NativeSharedFile,\n fallbackName = \"native-image.jpg\"\n) {\n const binary = atob(sharedFile.data)\n const bytes = new Uint8Array(binary.length)\n\n for (let index = 0; index < binary.length; index++) {\n bytes[index] = binary.charCodeAt(index)\n }\n\n return new File([bytes], sharedFile.name || fallbackName, {\n type: sharedFile.type || \"image/jpeg\",\n lastModified: Date.now(),\n })\n}\n\nasync function nativePhotoToFile(\n photo: CameraPhoto,\n index: number,\n prefix: string\n) {\n const src = photo.webPath ?? photo.path\n\n if (!src) {\n throw new Error(\"Unable to read selected image.\")\n }\n\n const response = await fetch(src)\n\n if (!response.ok) {\n throw new Error(\"Unable to read selected image.\")\n }\n\n const blob = await response.blob()\n const type = blob.type || imageTypeFromFormat(photo.format, \"image/jpeg\")\n const extension = imageExtensionFromType(type)\n\n return new File([blob], `${prefix}-${Date.now()}-${index}.${extension}`, {\n type,\n lastModified: Date.now(),\n })\n}\n\nexport async function pickNativeImageFiles({\n isNative,\n multiple = false,\n limit = multiple ? 10 : 1,\n quality = 85,\n prefix = \"image\",\n}: {\n isNative?: boolean\n multiple?: boolean\n limit?: number\n quality?: number\n prefix?: string\n}) {\n if (!(isNative ?? isNativeApp())) return null\n\n const camera = getNativeCameraPlugin()\n\n if (!camera) return null\n\n try {\n const photos =\n multiple && camera.pickImages\n ? (await camera.pickImages({ limit, quality })).photos\n : [\n await camera.getPhoto?.({\n allowEditing: false,\n quality,\n resultType: \"uri\",\n source: \"PROMPT\",\n }),\n ].filter((photo): photo is CameraPhoto => Boolean(photo))\n\n return Promise.all(\n photos\n .slice(0, limit)\n .map((photo, index) => nativePhotoToFile(photo, index, prefix))\n )\n } catch (error) {\n if (isNativePickerCancel(error)) return []\n throw error\n }\n}\n\nexport async function pickNativeChooserImageFiles({\n isNative,\n limit = 1,\n title = \"Select image\",\n}: {\n isNative?: boolean\n limit?: number\n title?: string\n}) {\n if (!(isNative ?? isNativeApp())) return null\n\n const picker = getNativeImagePickerPlugin()\n\n if (!picker?.pickImages) return null\n\n try {\n const result = await picker.pickImages({\n limit,\n title,\n })\n\n return (result.files ?? [])\n .filter((file) => file.type?.startsWith(\"image/\"))\n .slice(0, limit)\n .map((file) => nativeSharedFileToFile(file))\n } catch (error) {\n if (isNativePickerCancel(error)) return []\n throw error\n }\n}\n","import {\n Geist_Mono as FontMono,\n Noto_Sans_Arabic as FontNotoSansArabic,\n Noto_Sans_Hebrew as FontNotoSansHebrew,\n Geist as FontSans,\n} from \"next/font/google\"\n\nimport { cn } from \"./utils\"\n\nconst fontSans = FontSans({\n subsets: [\"latin\"],\n variable: \"--font-sans\",\n})\n\nconst fontHeading = FontSans({\n subsets: [\"latin\"],\n variable: \"--font-heading\",\n})\n\nconst fontMono = FontMono({\n subsets: [\"latin\"],\n variable: \"--font-mono\",\n weight: [\"400\"],\n})\n\nconst fontNotoSansArabic = FontNotoSansArabic({\n subsets: [\"latin\"],\n variable: \"--font-ar\",\n})\n\nconst fontNotoSansHebrew = FontNotoSansHebrew({\n subsets: [\"latin\"],\n variable: \"--font-he\",\n})\n\nexport const fontVariables = cn(\n fontSans.variable,\n fontHeading.variable,\n fontMono.variable,\n fontNotoSansArabic.variable,\n fontNotoSansHebrew.variable\n)\n","import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import { OpenAI as AI } from \"openai\"\n\nlet client: AI | undefined\n\nexport function getOpenAI() {\n const apiKey = process.env.OPENAI_API_KEY\n\n if (!apiKey) {\n throw new Error(\"OPENAI_API_KEY is not configured\")\n }\n\n client ??= new AI({ apiKey })\n\n return client\n}\n","import {\n createLoader,\n createParser,\n parseAsString,\n parseAsStringLiteral,\n type UrlKeys,\n} from \"nuqs/server\"\n\ntype SearchParamSource = Pick<URLSearchParams, \"has\" | \"toString\">\n\nconst parseAsPage = createParser({\n parse(value) {\n const page = Number(value)\n return Number.isInteger(page) && page > 0 ? page : null\n },\n serialize: String,\n}).withDefault(1)\n\nconst parseAsFlag = createParser<boolean>({\n parse(value) {\n return value === \"\" || value === \"1\" || value === \"true\" ? true : null\n },\n serialize(value) {\n return value ? \"1\" : \"\"\n },\n})\n\nexport const searchParams = {\n tab: parseAsString.withDefault(\"\"),\n query: parseAsString.withDefault(\"\"),\n category: parseAsString.withDefault(\"\"),\n productStatus: parseAsStringLiteral([\n \"active\",\n \"draft\",\n \"archived\",\n ]).withDefault(\"active\"),\n user: parseAsString.withDefault(\"\"),\n transaction: parseAsString.withDefault(\"\"),\n page: parseAsPage,\n transactionPage: parseAsPage,\n cart: parseAsFlag.withDefault(false),\n notification: parseAsFlag.withDefault(false),\n}\n\nexport const searchParamKeys = {\n tab: \"tab\",\n query: \"q\",\n category: \"c\",\n productStatus: \"status\",\n user: \"u\",\n transaction: \"id\",\n page: \"page\",\n transactionPage: \"tp\",\n cart: \"cart\",\n notification: \"notification\",\n} satisfies UrlKeys<typeof searchParams>\n\nexport const SearchParams = createLoader(searchParams, {\n urlKeys: searchParamKeys,\n})\n\nexport function hasFlagSearchParam(\n searchParams: SearchParamSource,\n key: \"cart\" | \"notification\"\n) {\n return searchParams.has(searchParamKeys[key])\n}\n\nexport function buildFlagSearchParamHref(\n pathname: string,\n searchParams: SearchParamSource,\n key: \"cart\" | \"notification\",\n enabled: boolean\n) {\n const searchKey = searchParamKeys[key]\n const nextParams = new URLSearchParams(searchParams.toString())\n\n nextParams.delete(searchKey)\n\n const query = nextParams.toString()\n if (enabled) {\n return query\n ? `${pathname}?${searchKey}&${query}`\n : `${pathname}?${searchKey}`\n }\n\n return query ? `${pathname}?${query}` : pathname\n}\n"],"mappings":"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","names":["searchParams"]}
|
|
1
|
+
{"version":3,"sources":["../../src/lib/capacitor.ts","../../src/lib/openai.ts","../../src/lib/parms.ts","../../src/lib/compose-refs.ts"],"sourcesContent":["type PluginListenerHandle = {\n remove: () => Promise<void>\n}\n\ntype AppUrlOpenEvent = {\n url: string\n}\n\ntype AppPlugin = {\n addListener?: (\n eventName: \"appUrlOpen\",\n listener: (event: AppUrlOpenEvent) => void\n ) => PluginListenerHandle | Promise<PluginListenerHandle>\n}\n\ntype StatusBarStyle = \"DARK\" | \"LIGHT\" | \"DEFAULT\"\n\ntype StatusBarPlugin = {\n setBackgroundColor?: (options: { color: string }) => Promise<void>\n setStyle?: (options: { style: StatusBarStyle }) => Promise<void>\n}\n\ntype BrowserPlugin = {\n open?: (options: { url: string }) => Promise<void>\n}\n\ntype NativeSharePlugin = {\n share?: (options: {\n title?: string\n text?: string\n url?: string\n files?: string[]\n dialogTitle?: string\n }) => Promise<void>\n}\n\ntype NativeThemePlugin = {\n setStyle?: (options: { style: \"dark\" | \"light\" | \"system\" }) => Promise<void>\n}\n\ntype NativePaymentPlugin = {\n openUpiUrl?: (options: {\n url: string\n title?: string\n }) => Promise<{ opened: boolean }>\n}\n\nexport type NativeSharedFile = {\n name: string\n type: string\n size: number\n data: string\n}\n\ntype NativeImagePickerPlugin = {\n pickImages?: (options: {\n limit?: number\n title?: string\n }) => Promise<{ files: NativeSharedFile[] }>\n}\n\nexport type NativeSharePayload = {\n id: string\n title?: string | null\n text?: string | null\n files: NativeSharedFile[]\n}\n\ntype NativeShareTargetPlugin = {\n addListener?: (\n eventName: \"shareReceived\",\n listener: (event: NativeSharePayload) => void\n ) => PluginListenerHandle | Promise<PluginListenerHandle>\n getPendingShare?: () => Promise<{ share: NativeSharePayload | null }>\n clearPendingShare?: () => Promise<void>\n}\n\ntype NativeAppSettingsPlugin = {\n openAppSettings?: () => Promise<void>\n}\n\nexport type NativeUpdateState = {\n status: \"downloading\" | \"downloaded\" | \"installing\" | \"installed\" | \"failed\" | \"canceled\" | \"unknown\"\n bytesDownloaded: number\n totalBytesToDownload: number\n}\n\nexport type NativeUpdateInfo = NativeUpdateState & {\n available: boolean\n inProgress: boolean\n availableVersionCode: number\n installStatus: NativeUpdateState[\"status\"]\n}\n\ntype NativeInAppUpdatePlugin = {\n checkForUpdate?: () => Promise<NativeUpdateInfo>\n startUpdate?: () => Promise<void>\n completeUpdate?: () => Promise<void>\n addListener?: (\n eventName: \"updateStateChanged\",\n listener: (state: NativeUpdateState) => void\n ) => PluginListenerHandle | Promise<PluginListenerHandle>\n}\n\ntype NativeShareFilePlugin = {\n saveImage?: (options: {\n data: string\n fileName?: string\n }) => Promise<{ path?: string }>\n}\n\ntype CameraPhoto = {\n format?: string\n path?: string\n webPath?: string\n}\n\ntype CameraPlugin = {\n getPhoto?: (options: {\n allowEditing?: boolean\n quality?: number\n resultType: \"uri\"\n source?: \"PROMPT\" | \"CAMERA\" | \"PHOTOS\"\n }) => Promise<CameraPhoto>\n pickImages?: (options: {\n limit?: number\n quality?: number\n }) => Promise<{ photos: CameraPhoto[] }>\n}\n\ntype CapacitorRuntime = {\n isNativePlatform?: () => boolean\n getPlatform?: () => string\n Plugins?: {\n App?: AppPlugin\n Browser?: BrowserPlugin\n Camera?: CameraPlugin\n NativeAppSettings?: NativeAppSettingsPlugin\n NativeInAppUpdate?: NativeInAppUpdatePlugin\n NativeImagePicker?: NativeImagePickerPlugin\n NativeShareFile?: NativeShareFilePlugin\n NativePayment?: NativePaymentPlugin\n NativeTheme?: NativeThemePlugin\n NativeShareTarget?: NativeShareTargetPlugin\n Share?: NativeSharePlugin\n StatusBar?: StatusBarPlugin\n }\n}\n\ndeclare global {\n interface Window {\n Capacitor?: CapacitorRuntime\n }\n}\n\nexport function isNativeApp() {\n if (typeof window === \"undefined\") return false\n\n return window.Capacitor?.isNativePlatform?.() === true\n}\n\nexport function getNativePlatform() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.getPlatform?.() ?? null\n}\n\nexport function getNativeAppPlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.App ?? null\n}\n\nexport function getNativeStatusBarPlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.StatusBar ?? null\n}\n\nexport function getNativeBrowserPlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.Browser ?? null\n}\n\nexport function getNativeSharePlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.Share ?? null\n}\n\nexport function getNativeCameraPlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.Camera ?? null\n}\n\nexport function getNativeImagePickerPlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.NativeImagePicker ?? null\n}\n\nexport function getNativeShareFilePlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.NativeShareFile ?? null\n}\n\nexport function getNativeThemePlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.NativeTheme ?? null\n}\n\nexport function getNativePaymentPlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.NativePayment ?? null\n}\n\nexport function getNativeShareTargetPlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.NativeShareTarget ?? null\n}\n\nexport function getNativeAppSettingsPlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.NativeAppSettings ?? null\n}\n\nexport function getNativeInAppUpdatePlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.NativeInAppUpdate ?? null\n}\n\n/** Opens the OS App Info page. Returns false when unavailable (web or old shell). */\nexport async function openNativeAppSettings() {\n const settings = getNativeAppSettingsPlugin()\n\n if (!settings?.openAppSettings) return false\n\n try {\n await settings.openAppSettings()\n return true\n } catch {\n return false\n }\n}\n\nexport async function openUpiPaymentUrl(\n url: string,\n options: {\n isNative?: boolean\n title?: string\n } = {}\n) {\n if (typeof window === \"undefined\") return false\n\n if (options.isNative ?? isNativeApp()) {\n const payment = getNativePaymentPlugin()\n\n if (payment?.openUpiUrl) {\n const result = await payment.openUpiUrl({\n url,\n title: options.title,\n })\n\n return result.opened\n }\n }\n\n window.location.href = url\n return true\n}\n\nexport async function openExternalUrl(\n url: string,\n options: {\n isNative?: boolean\n target?: string\n features?: string\n } = {}\n) {\n if (typeof window === \"undefined\") return false\n\n if (options.isNative ?? isNativeApp()) {\n const browser = getNativeBrowserPlugin()\n\n if (browser?.open) {\n await browser.open({ url })\n return true\n }\n }\n\n const opened = window.open(\n url,\n options.target ?? \"_blank\",\n options.features ?? \"noopener,noreferrer\"\n )\n\n return opened != null\n}\n\n/**\n * Saves base64 image bytes into app-private storage and returns a file:// URL\n * that @capacitor/share can attach. Returns null outside the native app or\n * when the save fails, so callers can fall back to a text-only share.\n */\nexport async function saveNativeShareImage(\n dataUrl: string,\n options: {\n fileName?: string\n isNative?: boolean\n } = {}\n) {\n if (!(options.isNative ?? isNativeApp())) return null\n\n const plugin = getNativeShareFilePlugin()\n\n if (!plugin?.saveImage) return null\n\n try {\n const result = await plugin.saveImage({\n data: dataUrl,\n fileName: options.fileName,\n })\n\n return result.path ?? null\n } catch {\n return null\n }\n}\n\nexport async function shareNativeOrWeb(\n data: {\n title?: string\n text?: string\n url?: string\n files?: string[]\n dialogTitle?: string\n },\n options: {\n isNative?: boolean\n } = {}\n) {\n if (typeof window === \"undefined\") return false\n\n if (options.isNative ?? isNativeApp()) {\n const share = getNativeSharePlugin()\n\n if (share?.share) {\n await share.share(data)\n return true\n }\n }\n\n // Web Share only accepts File objects, not file:// URL strings.\n const { files: _files, ...webData } = data\n\n if (typeof navigator.share === \"function\") {\n await navigator.share(webData)\n return true\n }\n\n return false\n}\n\nfunction isNativePickerCancel(error: unknown) {\n if (!(error instanceof Error)) return false\n\n const message = error.message.toLowerCase()\n\n return (\n message.includes(\"cancel\") ||\n message.includes(\"dismiss\") ||\n message.includes(\"no image\") ||\n message.includes(\"user denied\")\n )\n}\n\nfunction imageTypeFromFormat(format: string | undefined, fallback: string) {\n if (!format) return fallback\n\n const normalized = format.toLowerCase()\n\n if (normalized === \"jpg\") return \"image/jpeg\"\n if (normalized === \"jpeg\") return \"image/jpeg\"\n if (normalized === \"png\") return \"image/png\"\n if (normalized === \"webp\") return \"image/webp\"\n if (normalized === \"heic\") return \"image/heic\"\n if (normalized === \"heif\") return \"image/heif\"\n\n return fallback\n}\n\nfunction imageExtensionFromType(type: string) {\n if (type.includes(\"png\")) return \"png\"\n if (type.includes(\"webp\")) return \"webp\"\n if (type.includes(\"heic\")) return \"heic\"\n if (type.includes(\"heif\")) return \"heif\"\n\n return \"jpg\"\n}\n\nexport function nativeSharedFileToFile(\n sharedFile: NativeSharedFile,\n fallbackName = \"native-image.jpg\"\n) {\n const binary = atob(sharedFile.data)\n const bytes = new Uint8Array(binary.length)\n\n for (let index = 0; index < binary.length; index++) {\n bytes[index] = binary.charCodeAt(index)\n }\n\n return new File([bytes], sharedFile.name || fallbackName, {\n type: sharedFile.type || \"image/jpeg\",\n lastModified: Date.now(),\n })\n}\n\nasync function nativePhotoToFile(\n photo: CameraPhoto,\n index: number,\n prefix: string\n) {\n const src = photo.webPath ?? photo.path\n\n if (!src) {\n throw new Error(\"Unable to read selected image.\")\n }\n\n const response = await fetch(src)\n\n if (!response.ok) {\n throw new Error(\"Unable to read selected image.\")\n }\n\n const blob = await response.blob()\n const type = blob.type || imageTypeFromFormat(photo.format, \"image/jpeg\")\n const extension = imageExtensionFromType(type)\n\n return new File([blob], `${prefix}-${Date.now()}-${index}.${extension}`, {\n type,\n lastModified: Date.now(),\n })\n}\n\nexport async function pickNativeImageFiles({\n isNative,\n multiple = false,\n limit = multiple ? 10 : 1,\n quality = 85,\n prefix = \"image\",\n}: {\n isNative?: boolean\n multiple?: boolean\n limit?: number\n quality?: number\n prefix?: string\n}) {\n if (!(isNative ?? isNativeApp())) return null\n\n const camera = getNativeCameraPlugin()\n\n if (!camera) return null\n\n try {\n const photos =\n multiple && camera.pickImages\n ? (await camera.pickImages({ limit, quality })).photos\n : [\n await camera.getPhoto?.({\n allowEditing: false,\n quality,\n resultType: \"uri\",\n source: \"PROMPT\",\n }),\n ].filter((photo): photo is CameraPhoto => Boolean(photo))\n\n return Promise.all(\n photos\n .slice(0, limit)\n .map((photo, index) => nativePhotoToFile(photo, index, prefix))\n )\n } catch (error) {\n if (isNativePickerCancel(error)) return []\n throw error\n }\n}\n\nexport async function pickNativeChooserImageFiles({\n isNative,\n limit = 1,\n title = \"Select image\",\n}: {\n isNative?: boolean\n limit?: number\n title?: string\n}) {\n if (!(isNative ?? isNativeApp())) return null\n\n const picker = getNativeImagePickerPlugin()\n\n if (!picker?.pickImages) return null\n\n try {\n const result = await picker.pickImages({\n limit,\n title,\n })\n\n return (result.files ?? [])\n .filter((file) => file.type?.startsWith(\"image/\"))\n .slice(0, limit)\n .map((file) => nativeSharedFileToFile(file))\n } catch (error) {\n if (isNativePickerCancel(error)) return []\n throw error\n }\n}\n","import { OpenAI as AI } from \"openai\"\n\nlet client: AI | undefined\n\nexport function getOpenAI() {\n const apiKey = process.env.OPENAI_API_KEY\n\n if (!apiKey) {\n throw new Error(\"OPENAI_API_KEY is not configured\")\n }\n\n client ??= new AI({ apiKey })\n\n return client\n}\n","import {\n createLoader,\n createParser,\n parseAsString,\n parseAsStringLiteral,\n type UrlKeys,\n} from \"nuqs/server\"\n\ntype SearchParamSource = Pick<URLSearchParams, \"has\" | \"toString\">\n\nconst parseAsPage = createParser({\n parse(value) {\n const page = Number(value)\n return Number.isInteger(page) && page > 0 ? page : null\n },\n serialize: String,\n}).withDefault(1)\n\nconst parseAsFlag = createParser<boolean>({\n parse(value) {\n return value === \"\" || value === \"1\" || value === \"true\" ? true : null\n },\n serialize(value) {\n return value ? \"1\" : \"\"\n },\n})\n\nexport const searchParams = {\n tab: parseAsString.withDefault(\"\"),\n query: parseAsString.withDefault(\"\"),\n category: parseAsString.withDefault(\"\"),\n productStatus: parseAsStringLiteral([\n \"active\",\n \"draft\",\n \"archived\",\n ]).withDefault(\"active\"),\n user: parseAsString.withDefault(\"\"),\n transaction: parseAsString.withDefault(\"\"),\n page: parseAsPage,\n transactionPage: parseAsPage,\n cart: parseAsFlag.withDefault(false),\n notification: parseAsFlag.withDefault(false),\n}\n\nexport const searchParamKeys = {\n tab: \"tab\",\n query: \"q\",\n category: \"c\",\n productStatus: \"status\",\n user: \"u\",\n transaction: \"id\",\n page: \"page\",\n transactionPage: \"tp\",\n cart: \"cart\",\n notification: \"notification\",\n} satisfies UrlKeys<typeof searchParams>\n\nexport const SearchParams = createLoader(searchParams, {\n urlKeys: searchParamKeys,\n})\n\nexport function hasFlagSearchParam(\n searchParams: SearchParamSource,\n key: \"cart\" | \"notification\"\n) {\n return searchParams.has(searchParamKeys[key])\n}\n\nexport function buildFlagSearchParamHref(\n pathname: string,\n searchParams: SearchParamSource,\n key: \"cart\" | \"notification\",\n enabled: boolean\n) {\n const searchKey = searchParamKeys[key]\n const nextParams = new URLSearchParams(searchParams.toString())\n\n nextParams.delete(searchKey)\n\n const query = nextParams.toString()\n if (enabled) {\n return query\n ? `${pathname}?${searchKey}&${query}`\n : `${pathname}?${searchKey}`\n }\n\n return query ? `${pathname}?${query}` : pathname\n}\n","import * as React from \"react\";\n\ntype PossibleRef<T> = React.Ref<T> | undefined;\n\n/**\n * Set a given ref to a given value\n * This utility takes care of different types of refs: callback refs and RefObject(s)\n */\nfunction setRef<T>(ref: PossibleRef<T>, value: T) {\n if (typeof ref === \"function\") {\n return ref(value);\n }\n\n if (ref !== null && ref !== undefined) {\n ref.current = value;\n }\n}\n\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n */\nfunction composeRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup === \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n\n // React <19 will log an error to the console if a callback ref returns a\n // value. We don't use ref cleanups internally so this will only happen if a\n // user's ref callback returns a value, which we only expect if they are\n // using the cleanup functionality added in React 19.\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup === \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\n\n/**\n * A custom hook that composes multiple refs\n * Accepts callback refs and RefObject(s)\n */\nfunction useComposedRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n // oxlint-disable-next-line react/exhaustive-deps -- we want to memoize by all values\n return React.useCallback(composeRefs(...refs), refs);\n}\n\nexport { composeRefs, useComposedRefs };\n"],"mappings":";AA2JO,SAAS,cAAc;AAC5B,MAAI,OAAO,WAAW,YAAa,QAAO;AAE1C,SAAO,OAAO,WAAW,mBAAmB,MAAM;AACpD;AAEO,SAAS,oBAAoB;AAClC,MAAI,CAAC,YAAY,EAAG,QAAO;AAE3B,SAAO,OAAO,WAAW,cAAc,KAAK;AAC9C;AAEO,SAAS,qBAAqB;AACnC,MAAI,CAAC,YAAY,EAAG,QAAO;AAE3B,SAAO,OAAO,WAAW,SAAS,OAAO;AAC3C;AAEO,SAAS,2BAA2B;AACzC,MAAI,CAAC,YAAY,EAAG,QAAO;AAE3B,SAAO,OAAO,WAAW,SAAS,aAAa;AACjD;AAEO,SAAS,yBAAyB;AACvC,MAAI,CAAC,YAAY,EAAG,QAAO;AAE3B,SAAO,OAAO,WAAW,SAAS,WAAW;AAC/C;AAEO,SAAS,uBAAuB;AACrC,MAAI,CAAC,YAAY,EAAG,QAAO;AAE3B,SAAO,OAAO,WAAW,SAAS,SAAS;AAC7C;AAEO,SAAS,wBAAwB;AACtC,MAAI,CAAC,YAAY,EAAG,QAAO;AAE3B,SAAO,OAAO,WAAW,SAAS,UAAU;AAC9C;AAEO,SAAS,6BAA6B;AAC3C,MAAI,CAAC,YAAY,EAAG,QAAO;AAE3B,SAAO,OAAO,WAAW,SAAS,qBAAqB;AACzD;AAEO,SAAS,2BAA2B;AACzC,MAAI,CAAC,YAAY,EAAG,QAAO;AAE3B,SAAO,OAAO,WAAW,SAAS,mBAAmB;AACvD;AAEO,SAAS,uBAAuB;AACrC,MAAI,CAAC,YAAY,EAAG,QAAO;AAE3B,SAAO,OAAO,WAAW,SAAS,eAAe;AACnD;AAEO,SAAS,yBAAyB;AACvC,MAAI,CAAC,YAAY,EAAG,QAAO;AAE3B,SAAO,OAAO,WAAW,SAAS,iBAAiB;AACrD;AAEO,SAAS,6BAA6B;AAC3C,MAAI,CAAC,YAAY,EAAG,QAAO;AAE3B,SAAO,OAAO,WAAW,SAAS,qBAAqB;AACzD;AAEO,SAAS,6BAA6B;AAC3C,MAAI,CAAC,YAAY,EAAG,QAAO;AAE3B,SAAO,OAAO,WAAW,SAAS,qBAAqB;AACzD;AAEO,SAAS,6BAA6B;AAC3C,MAAI,CAAC,YAAY,EAAG,QAAO;AAE3B,SAAO,OAAO,WAAW,SAAS,qBAAqB;AACzD;AAGA,eAAsB,wBAAwB;AAC5C,QAAM,WAAW,2BAA2B;AAE5C,MAAI,CAAC,UAAU,gBAAiB,QAAO;AAEvC,MAAI;AACF,UAAM,SAAS,gBAAgB;AAC/B,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,eAAsB,kBACpB,KACA,UAGI,CAAC,GACL;AACA,MAAI,OAAO,WAAW,YAAa,QAAO;AAE1C,MAAI,QAAQ,YAAY,YAAY,GAAG;AACrC,UAAM,UAAU,uBAAuB;AAEvC,QAAI,SAAS,YAAY;AACvB,YAAM,SAAS,MAAM,QAAQ,WAAW;AAAA,QACtC;AAAA,QACA,OAAO,QAAQ;AAAA,MACjB,CAAC;AAED,aAAO,OAAO;AAAA,IAChB;AAAA,EACF;AAEA,SAAO,SAAS,OAAO;AACvB,SAAO;AACT;AAEA,eAAsB,gBACpB,KACA,UAII,CAAC,GACL;AACA,MAAI,OAAO,WAAW,YAAa,QAAO;AAE1C,MAAI,QAAQ,YAAY,YAAY,GAAG;AACrC,UAAM,UAAU,uBAAuB;AAEvC,QAAI,SAAS,MAAM;AACjB,YAAM,QAAQ,KAAK,EAAE,IAAI,CAAC;AAC1B,aAAO;AAAA,IACT;AAAA,EACF;AAEA,QAAM,SAAS,OAAO;AAAA,IACpB;AAAA,IACA,QAAQ,UAAU;AAAA,IAClB,QAAQ,YAAY;AAAA,EACtB;AAEA,SAAO,UAAU;AACnB;AAOA,eAAsB,qBACpB,SACA,UAGI,CAAC,GACL;AACA,MAAI,EAAE,QAAQ,YAAY,YAAY,GAAI,QAAO;AAEjD,QAAM,SAAS,yBAAyB;AAExC,MAAI,CAAC,QAAQ,UAAW,QAAO;AAE/B,MAAI;AACF,UAAM,SAAS,MAAM,OAAO,UAAU;AAAA,MACpC,MAAM;AAAA,MACN,UAAU,QAAQ;AAAA,IACpB,CAAC;AAED,WAAO,OAAO,QAAQ;AAAA,EACxB,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,eAAsB,iBACpB,MAOA,UAEI,CAAC,GACL;AACA,MAAI,OAAO,WAAW,YAAa,QAAO;AAE1C,MAAI,QAAQ,YAAY,YAAY,GAAG;AACrC,UAAM,QAAQ,qBAAqB;AAEnC,QAAI,OAAO,OAAO;AAChB,YAAM,MAAM,MAAM,IAAI;AACtB,aAAO;AAAA,IACT;AAAA,EACF;AAGA,QAAM,EAAE,OAAO,QAAQ,GAAG,QAAQ,IAAI;AAEtC,MAAI,OAAO,UAAU,UAAU,YAAY;AACzC,UAAM,UAAU,MAAM,OAAO;AAC7B,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEA,SAAS,qBAAqB,OAAgB;AAC5C,MAAI,EAAE,iBAAiB,OAAQ,QAAO;AAEtC,QAAM,UAAU,MAAM,QAAQ,YAAY;AAE1C,SACE,QAAQ,SAAS,QAAQ,KACzB,QAAQ,SAAS,SAAS,KAC1B,QAAQ,SAAS,UAAU,KAC3B,QAAQ,SAAS,aAAa;AAElC;AAEA,SAAS,oBAAoB,QAA4B,UAAkB;AACzE,MAAI,CAAC,OAAQ,QAAO;AAEpB,QAAM,aAAa,OAAO,YAAY;AAEtC,MAAI,eAAe,MAAO,QAAO;AACjC,MAAI,eAAe,OAAQ,QAAO;AAClC,MAAI,eAAe,MAAO,QAAO;AACjC,MAAI,eAAe,OAAQ,QAAO;AAClC,MAAI,eAAe,OAAQ,QAAO;AAClC,MAAI,eAAe,OAAQ,QAAO;AAElC,SAAO;AACT;AAEA,SAAS,uBAAuB,MAAc;AAC5C,MAAI,KAAK,SAAS,KAAK,EAAG,QAAO;AACjC,MAAI,KAAK,SAAS,MAAM,EAAG,QAAO;AAClC,MAAI,KAAK,SAAS,MAAM,EAAG,QAAO;AAClC,MAAI,KAAK,SAAS,MAAM,EAAG,QAAO;AAElC,SAAO;AACT;AAEO,SAAS,uBACd,YACA,eAAe,oBACf;AACA,QAAM,SAAS,KAAK,WAAW,IAAI;AACnC,QAAM,QAAQ,IAAI,WAAW,OAAO,MAAM;AAE1C,WAAS,QAAQ,GAAG,QAAQ,OAAO,QAAQ,SAAS;AAClD,UAAM,KAAK,IAAI,OAAO,WAAW,KAAK;AAAA,EACxC;AAEA,SAAO,IAAI,KAAK,CAAC,KAAK,GAAG,WAAW,QAAQ,cAAc;AAAA,IACxD,MAAM,WAAW,QAAQ;AAAA,IACzB,cAAc,KAAK,IAAI;AAAA,EACzB,CAAC;AACH;AAEA,eAAe,kBACb,OACA,OACA,QACA;AACA,QAAM,MAAM,MAAM,WAAW,MAAM;AAEnC,MAAI,CAAC,KAAK;AACR,UAAM,IAAI,MAAM,gCAAgC;AAAA,EAClD;AAEA,QAAM,WAAW,MAAM,MAAM,GAAG;AAEhC,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,IAAI,MAAM,gCAAgC;AAAA,EAClD;AAEA,QAAM,OAAO,MAAM,SAAS,KAAK;AACjC,QAAM,OAAO,KAAK,QAAQ,oBAAoB,MAAM,QAAQ,YAAY;AACxE,QAAM,YAAY,uBAAuB,IAAI;AAE7C,SAAO,IAAI,KAAK,CAAC,IAAI,GAAG,GAAG,MAAM,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,SAAS,IAAI;AAAA,IACvE;AAAA,IACA,cAAc,KAAK,IAAI;AAAA,EACzB,CAAC;AACH;AAEA,eAAsB,qBAAqB;AAAA,EACzC;AAAA,EACA,WAAW;AAAA,EACX,QAAQ,WAAW,KAAK;AAAA,EACxB,UAAU;AAAA,EACV,SAAS;AACX,GAMG;AACD,MAAI,EAAE,YAAY,YAAY,GAAI,QAAO;AAEzC,QAAM,SAAS,sBAAsB;AAErC,MAAI,CAAC,OAAQ,QAAO;AAEpB,MAAI;AACF,UAAM,SACJ,YAAY,OAAO,cACd,MAAM,OAAO,WAAW,EAAE,OAAO,QAAQ,CAAC,GAAG,SAC9C;AAAA,MACE,MAAM,OAAO,WAAW;AAAA,QACtB,cAAc;AAAA,QACd;AAAA,QACA,YAAY;AAAA,QACZ,QAAQ;AAAA,MACV,CAAC;AAAA,IACH,EAAE,OAAO,CAAC,UAAgC,QAAQ,KAAK,CAAC;AAE9D,WAAO,QAAQ;AAAA,MACb,OACG,MAAM,GAAG,KAAK,EACd,IAAI,CAAC,OAAO,UAAU,kBAAkB,OAAO,OAAO,MAAM,CAAC;AAAA,IAClE;AAAA,EACF,SAAS,OAAO;AACd,QAAI,qBAAqB,KAAK,EAAG,QAAO,CAAC;AACzC,UAAM;AAAA,EACR;AACF;AAEA,eAAsB,4BAA4B;AAAA,EAChD;AAAA,EACA,QAAQ;AAAA,EACR,QAAQ;AACV,GAIG;AACD,MAAI,EAAE,YAAY,YAAY,GAAI,QAAO;AAEzC,QAAM,SAAS,2BAA2B;AAE1C,MAAI,CAAC,QAAQ,WAAY,QAAO;AAEhC,MAAI;AACF,UAAM,SAAS,MAAM,OAAO,WAAW;AAAA,MACrC;AAAA,MACA;AAAA,IACF,CAAC;AAED,YAAQ,OAAO,SAAS,CAAC,GACtB,OAAO,CAAC,SAAS,KAAK,MAAM,WAAW,QAAQ,CAAC,EAChD,MAAM,GAAG,KAAK,EACd,IAAI,CAAC,SAAS,uBAAuB,IAAI,CAAC;AAAA,EAC/C,SAAS,OAAO;AACd,QAAI,qBAAqB,KAAK,EAAG,QAAO,CAAC;AACzC,UAAM;AAAA,EACR;AACF;;;AC5gBA,SAAS,UAAU,UAAU;AAE7B,IAAI;AAEG,SAAS,YAAY;AAC1B,QAAM,SAAS,QAAQ,IAAI;AAE3B,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,MAAM,kCAAkC;AAAA,EACpD;AAEA,aAAW,IAAI,GAAG,EAAE,OAAO,CAAC;AAE5B,SAAO;AACT;;;ACdA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AAIP,IAAM,cAAc,aAAa;AAAA,EAC/B,MAAM,OAAO;AACX,UAAM,OAAO,OAAO,KAAK;AACzB,WAAO,OAAO,UAAU,IAAI,KAAK,OAAO,IAAI,OAAO;AAAA,EACrD;AAAA,EACA,WAAW;AACb,CAAC,EAAE,YAAY,CAAC;AAEhB,IAAM,cAAc,aAAsB;AAAA,EACxC,MAAM,OAAO;AACX,WAAO,UAAU,MAAM,UAAU,OAAO,UAAU,SAAS,OAAO;AAAA,EACpE;AAAA,EACA,UAAU,OAAO;AACf,WAAO,QAAQ,MAAM;AAAA,EACvB;AACF,CAAC;AAEM,IAAM,eAAe;AAAA,EAC1B,KAAK,cAAc,YAAY,EAAE;AAAA,EACjC,OAAO,cAAc,YAAY,EAAE;AAAA,EACnC,UAAU,cAAc,YAAY,EAAE;AAAA,EACtC,eAAe,qBAAqB;AAAA,IAClC;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC,EAAE,YAAY,QAAQ;AAAA,EACvB,MAAM,cAAc,YAAY,EAAE;AAAA,EAClC,aAAa,cAAc,YAAY,EAAE;AAAA,EACzC,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB,MAAM,YAAY,YAAY,KAAK;AAAA,EACnC,cAAc,YAAY,YAAY,KAAK;AAC7C;AAEO,IAAM,kBAAkB;AAAA,EAC7B,KAAK;AAAA,EACL,OAAO;AAAA,EACP,UAAU;AAAA,EACV,eAAe;AAAA,EACf,MAAM;AAAA,EACN,aAAa;AAAA,EACb,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB,MAAM;AAAA,EACN,cAAc;AAChB;AAEO,IAAM,eAAe,aAAa,cAAc;AAAA,EACrD,SAAS;AACX,CAAC;AAEM,SAAS,mBACdA,eACA,KACA;AACA,SAAOA,cAAa,IAAI,gBAAgB,GAAG,CAAC;AAC9C;AAEO,SAAS,yBACd,UACAA,eACA,KACA,SACA;AACA,QAAM,YAAY,gBAAgB,GAAG;AACrC,QAAM,aAAa,IAAI,gBAAgBA,cAAa,SAAS,CAAC;AAE9D,aAAW,OAAO,SAAS;AAE3B,QAAM,QAAQ,WAAW,SAAS;AAClC,MAAI,SAAS;AACX,WAAO,QACH,GAAG,QAAQ,IAAI,SAAS,IAAI,KAAK,KACjC,GAAG,QAAQ,IAAI,SAAS;AAAA,EAC9B;AAEA,SAAO,QAAQ,GAAG,QAAQ,IAAI,KAAK,KAAK;AAC1C;;;ACvFA,YAAY,WAAW;AAQvB,SAAS,OAAU,KAAqB,OAAU;AAChD,MAAI,OAAO,QAAQ,YAAY;AAC7B,WAAO,IAAI,KAAK;AAAA,EAClB;AAEA,MAAI,QAAQ,QAAQ,QAAQ,QAAW;AACrC,QAAI,UAAU;AAAA,EAChB;AACF;AAMA,SAAS,eAAkB,MAA8C;AACvE,SAAO,CAAC,SAAS;AACf,QAAI,aAAa;AACjB,UAAM,WAAW,KAAK,IAAI,CAAC,QAAQ;AACjC,YAAM,UAAU,OAAO,KAAK,IAAI;AAChC,UAAI,CAAC,cAAc,OAAO,YAAY,YAAY;AAChD,qBAAa;AAAA,MACf;AACA,aAAO;AAAA,IACT,CAAC;AAMD,QAAI,YAAY;AACd,aAAO,MAAM;AACX,iBAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,gBAAM,UAAU,SAAS,CAAC;AAC1B,cAAI,OAAO,YAAY,YAAY;AACjC,oBAAQ;AAAA,UACV,OAAO;AACL,mBAAO,KAAK,CAAC,GAAG,IAAI;AAAA,UACtB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAMA,SAAS,mBAAsB,MAA8C;AAE3E,SAAa,kBAAY,YAAY,GAAG,IAAI,GAAG,IAAI;AACrD;","names":["searchParams"]}
|
package/dist/loader.css
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
.loader-wrapper {
|
|
2
|
+
height: var(--spinner-size, 20px);
|
|
3
|
+
width: var(--spinner-size, 20px);
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.loader-spinner {
|
|
7
|
+
position: relative;
|
|
8
|
+
top: 50%;
|
|
9
|
+
left: 50%;
|
|
10
|
+
height: var(--spinner-size, 20px);
|
|
11
|
+
width: var(--spinner-size, 20px);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.loader-bar {
|
|
15
|
+
animation: loader-spin 1.2s linear infinite;
|
|
16
|
+
background: var(--spinner-color);
|
|
17
|
+
border-radius: 6px;
|
|
18
|
+
height: 8%;
|
|
19
|
+
left: -10%;
|
|
20
|
+
position: absolute;
|
|
21
|
+
top: -3.9%;
|
|
22
|
+
width: 24%;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.loader-bar:nth-child(1) {
|
|
26
|
+
animation-delay: -1.2s;
|
|
27
|
+
transform: rotate(0.0001deg) translate(146%);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.loader-bar:nth-child(2) {
|
|
31
|
+
animation-delay: -1.1s;
|
|
32
|
+
transform: rotate(30deg) translate(146%);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.loader-bar:nth-child(3) {
|
|
36
|
+
animation-delay: -1s;
|
|
37
|
+
transform: rotate(60deg) translate(146%);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.loader-bar:nth-child(4) {
|
|
41
|
+
animation-delay: -0.9s;
|
|
42
|
+
transform: rotate(90deg) translate(146%);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.loader-bar:nth-child(5) {
|
|
46
|
+
animation-delay: -0.8s;
|
|
47
|
+
transform: rotate(120deg) translate(146%);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.loader-bar:nth-child(6) {
|
|
51
|
+
animation-delay: -0.7s;
|
|
52
|
+
transform: rotate(150deg) translate(146%);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.loader-bar:nth-child(7) {
|
|
56
|
+
animation-delay: -0.6s;
|
|
57
|
+
transform: rotate(180deg) translate(146%);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.loader-bar:nth-child(8) {
|
|
61
|
+
animation-delay: -0.5s;
|
|
62
|
+
transform: rotate(210deg) translate(146%);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.loader-bar:nth-child(9) {
|
|
66
|
+
animation-delay: -0.4s;
|
|
67
|
+
transform: rotate(240deg) translate(146%);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.loader-bar:nth-child(10) {
|
|
71
|
+
animation-delay: -0.3s;
|
|
72
|
+
transform: rotate(270deg) translate(146%);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.loader-bar:nth-child(11) {
|
|
76
|
+
animation-delay: -0.2s;
|
|
77
|
+
transform: rotate(300deg) translate(146%);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.loader-bar:nth-child(12) {
|
|
81
|
+
animation-delay: -0.1s;
|
|
82
|
+
transform: rotate(330deg) translate(146%);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
@keyframes loader-spin {
|
|
86
|
+
0% {
|
|
87
|
+
opacity: 1;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
100% {
|
|
91
|
+
opacity: 0.15;
|
|
92
|
+
}
|
|
93
|
+
}
|
package/dist/ui/index.d.ts
CHANGED
|
@@ -349,6 +349,8 @@ declare function EmptyTitle({ className, ...props }: React.ComponentProps<"div">
|
|
|
349
349
|
declare function EmptyDescription({ className, ...props }: React.ComponentProps<"p">): React$1.JSX.Element;
|
|
350
350
|
declare function EmptyContent({ className, ...props }: React.ComponentProps<"div">): React$1.JSX.Element;
|
|
351
351
|
|
|
352
|
+
declare const AnimatedDiv: React__default.ForwardRefExoticComponent<AnimatedTAGProps & React__default.RefAttributes<HTMLDivElement>>;
|
|
353
|
+
|
|
352
354
|
type AnimatedTAGProps = MotionProps & {
|
|
353
355
|
variants?: Variants;
|
|
354
356
|
mobileVariants?: Variants;
|
|
@@ -880,4 +882,4 @@ declare function Tooltip({ ...props }: Tooltip$1.Root.Props): React$1.JSX.Elemen
|
|
|
880
882
|
declare function TooltipTrigger({ ...props }: Tooltip$1.Trigger.Props): React$1.JSX.Element;
|
|
881
883
|
declare function TooltipContent({ className, side, sideOffset, align, alignOffset, children, ...props }: Tooltip$1.Popup.Props & Pick<Tooltip$1.Positioner.Props, "align" | "alignOffset" | "side" | "sideOffset">): React$1.JSX.Element;
|
|
882
884
|
|
|
883
|
-
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, type AnimatedTAGProps, Apple, Autocomplete, AutocompleteClear, AutocompleteCollection, AutocompleteEmpty, AutocompleteGroup, AutocompleteGroupLabel, AutocompleteInput, AutocompleteItem, AutocompleteList, AutocompletePopup, AutocompleteRow, AutocompleteSeparator, AutocompleteStatus, AutocompleteTrigger, AutocompleteValue, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Badge, BlogCardAnimation, Bottom, Bubble, BubbleContent, BubbleGroup, BubbleReactions, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, Combobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxCollection, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxLabel, ComboboxList, ComboboxSeparator, ComboboxTrigger, ComboboxValue, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, type CustomRendererProps, DEFAULT_I18N, DEFAULT_OPERATORS, DashedSeparator, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Dock, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerSwipeHandle, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EASE_DRAWER, EASE_IN_OUT, EASE_OUT, EASE_OUT_CSS, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, FadeContainer, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, type Filter, type FilterFieldConfig, type FilterFieldGroup, type FilterFieldsConfig, type FilterGroup, type FilterI18nConfig, type FilterOperator, type FilterOption, type FilterOptionListRenderProps, Filters, FiltersContent, Image, type ImageProps, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, JellyAction, JellyBlob, JellyEmpty, type JellyEmptyProps, JellyGroup, JellyLink, JellyMascot, type JellyMascotConfig, JellyMini, type JellySize, Kbd, KbdGroup, Label, ListItemVariant, Message, MessageAvatar, MessageContent, MessageFooter, MessageGroup, MessageHeader, MessageScroller, MessageScrollerButton, MessageScrollerContent, MessageScrollerItem, MessageScrollerProvider, MessageScrollerViewport, NativeAppBridge, OTPInput, type OTPInputProps, type OTPStatus, Popover, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, QuantityInput, RadioGroup, RadioGroupItem, SPRING_LAYOUT, SPRING_MOUSE, SPRING_PANEL, SPRING_PRESS, SPRING_SWAP, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, ShimmerSkeleton, type SkeletonProps as ShimmerSkeletonProps, Skeleton, SkeletonAvatar, SkeletonButton, type SkeletonProps, type SkeletonRounded, SkeletonText, type SkeletonVariant, Sortable, SortableContent, SortableItem, SortableItemHandle, SortableOverlay, type SortableProps, Switch, Textarea, Toaster, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, Top, activityItemAnimation, badgeVariants, buttonGroupVariants, buttonVariants, createFilter, createFilterGroup, fromLeftChildren, fromLeftVariant, fromRightVariant, fromTopVariant, getSkeletonVariantDuration, hamFastFadeContainer, headingFromLeft, kanbanOrderCardAnimation, kanbanOrderCardLayoutTransition, kanbanOrderCardReducedMotionAnimation, mobileNavItemSideways, opacityVariant, popUp, popUpFromBottomForText, resolveSkeletonA11yProps, searchBarSlideAnimation, skeletonRoundedClasses, skeletonVariantDefaultDuration, svgVariant, useAutocompleteFilter, useCarousel, useComboboxAnchor, useJellyMood };
|
|
885
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AnimatedDiv, type AnimatedTAGProps, Apple, Autocomplete, AutocompleteClear, AutocompleteCollection, AutocompleteEmpty, AutocompleteGroup, AutocompleteGroupLabel, AutocompleteInput, AutocompleteItem, AutocompleteList, AutocompletePopup, AutocompleteRow, AutocompleteSeparator, AutocompleteStatus, AutocompleteTrigger, AutocompleteValue, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Badge, BlogCardAnimation, Bottom, Bubble, BubbleContent, BubbleGroup, BubbleReactions, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, Combobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxCollection, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxLabel, ComboboxList, ComboboxSeparator, ComboboxTrigger, ComboboxValue, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, type CustomRendererProps, DEFAULT_I18N, DEFAULT_OPERATORS, DashedSeparator, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Dock, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerSwipeHandle, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EASE_DRAWER, EASE_IN_OUT, EASE_OUT, EASE_OUT_CSS, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, FadeContainer, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, type Filter, type FilterFieldConfig, type FilterFieldGroup, type FilterFieldsConfig, type FilterGroup, type FilterI18nConfig, type FilterOperator, type FilterOption, type FilterOptionListRenderProps, Filters, FiltersContent, Image, type ImageProps, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, JellyAction, JellyBlob, JellyEmpty, type JellyEmptyProps, JellyGroup, JellyLink, JellyMascot, type JellyMascotConfig, JellyMini, type JellySize, Kbd, KbdGroup, Label, ListItemVariant, Message, MessageAvatar, MessageContent, MessageFooter, MessageGroup, MessageHeader, MessageScroller, MessageScrollerButton, MessageScrollerContent, MessageScrollerItem, MessageScrollerProvider, MessageScrollerViewport, NativeAppBridge, OTPInput, type OTPInputProps, type OTPStatus, Popover, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, QuantityInput, RadioGroup, RadioGroupItem, SPRING_LAYOUT, SPRING_MOUSE, SPRING_PANEL, SPRING_PRESS, SPRING_SWAP, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, ShimmerSkeleton, type SkeletonProps as ShimmerSkeletonProps, Skeleton, SkeletonAvatar, SkeletonButton, type SkeletonProps, type SkeletonRounded, SkeletonText, type SkeletonVariant, Sortable, SortableContent, SortableItem, SortableItemHandle, SortableOverlay, type SortableProps, Switch, Textarea, Toaster, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, Top, activityItemAnimation, badgeVariants, buttonGroupVariants, buttonVariants, createFilter, createFilterGroup, fromLeftChildren, fromLeftVariant, fromRightVariant, fromTopVariant, getSkeletonVariantDuration, hamFastFadeContainer, headingFromLeft, kanbanOrderCardAnimation, kanbanOrderCardLayoutTransition, kanbanOrderCardReducedMotionAnimation, mobileNavItemSideways, opacityVariant, popUp, popUpFromBottomForText, resolveSkeletonA11yProps, searchBarSlideAnimation, skeletonRoundedClasses, skeletonVariantDefaultDuration, svgVariant, useAutocompleteFilter, useCarousel, useComboboxAnchor, useJellyMood };
|