@m1kapp/kit 0.0.17 → 0.0.20

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/bin/m1kkit.mjs CHANGED
File without changes
package/dist/index.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as React$1 from 'react';
3
- import React__default, { ReactNode, CSSProperties } from 'react';
3
+ import React__default, { ReactNode, CSSProperties, RefObject } from 'react';
4
4
  import { MetadataRoute, Viewport } from 'next';
5
5
  import { ClassValue } from 'clsx';
6
6
 
@@ -69,6 +69,24 @@ interface AppShellContentProps {
69
69
  */
70
70
  declare function AppShellContent({ children, className }: AppShellContentProps): react_jsx_runtime.JSX.Element;
71
71
 
72
+ interface FabProps {
73
+ onClick: () => void;
74
+ icon: ReactNode;
75
+ /** Accent background color. Default: zinc-900/white (follows dark mode) */
76
+ color?: string;
77
+ className?: string;
78
+ }
79
+ /**
80
+ * Floating Action Button — positioned absolute bottom-right inside AppShell.
81
+ *
82
+ * @example
83
+ * <AppShellContent>
84
+ * {content}
85
+ * <Fab onClick={handleAdd} icon={<PlusIcon />} color="#6366f1" />
86
+ * </AppShellContent>
87
+ */
88
+ declare function Fab({ onClick, icon, color, className }: FabProps): react_jsx_runtime.JSX.Element;
89
+
72
90
  interface TabBarProps {
73
91
  children: ReactNode;
74
92
  className?: string;
@@ -239,39 +257,55 @@ interface ThemeDialogProps {
239
257
  declare function ThemeDialog({ open, onClose, current, onSelect, dark: darkProp, onDarkToggle, palette, labels: _labels, }: ThemeDialogProps): react_jsx_runtime.JSX.Element;
240
258
 
241
259
  /**
242
- * Font presets for @m1kapp/ui.
260
+ * Font presets for @m1kapp/kit.
243
261
  * CDN links only — no font files bundled.
244
262
  *
245
- * ## Quick setup (recommended)
263
+ * ## Setup
264
+ *
265
+ * ### Option A: `FontLinks` 컴포넌트 (Next.js App Router 권장)
266
+ *
267
+ * ```tsx
268
+ * // app/layout.tsx
269
+ * import { FontLinks, fontFamily, THEME_SCRIPT } from "@m1kapp/kit";
270
+ *
271
+ * export default function RootLayout({ children }) {
272
+ * return (
273
+ * <html lang="ko">
274
+ * <head>
275
+ * <FontLinks />
276
+ * <script dangerouslySetInnerHTML={{ __html: THEME_SCRIPT }} />
277
+ * </head>
278
+ * <body style={{ fontFamily: fontFamily.default }}>
279
+ * {children}
280
+ * </body>
281
+ * </html>
282
+ * );
283
+ * }
284
+ * ```
285
+ *
286
+ * ### Option B: 수동 `<link>` (Vite / static HTML)
287
+ *
288
+ * ⚠️ Next.js App Router에서 `<link href={fonts.tossface}>` 처럼
289
+ * 변수를 사용하면 SSR 시 href가 누락됩니다. URL을 직접 하드코딩하세요.
246
290
  *
247
- * Add to your `index.html` <head>:
248
291
  * ```html
249
- * <link rel="preconnect" href="https://cdn.jsdelivr.net" />
250
- * <link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin />
251
292
  * <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/toss/tossface/dist/tossface.css" />
252
293
  * <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css" />
253
294
  * ```
254
295
  *
255
- * Add to your global CSS:
296
+ * ### Font stack
297
+ *
298
+ * Tossface를 `system-ui` 앞에 배치해야 macOS에서
299
+ * Apple Color Emoji 대신 Tossface가 적용됩니다.
300
+ *
256
301
  * ```css
257
- * html {
258
- * font-family: "Tossface", "Pretendard Variable", "Pretendard", system-ui, sans-serif;
259
- * }
302
+ * html { font-family: "Tossface", "Pretendard Variable", "Pretendard", sans-serif; }
260
303
  * ```
261
- *
262
- * That's it — Tossface handles emojis, Pretendard handles text.
263
304
  */
264
305
  declare const fonts: {
265
- /**
266
- * Tossface — Toss emoji font (open source, jsDelivr CDN).
267
- * Renders all emoji with the Toss design style.
268
- * Add this to get consistent emoji across platforms.
269
- */
306
+ /** Tossface — Toss emoji font (open source, jsDelivr CDN). */
270
307
  readonly tossface: "https://cdn.jsdelivr.net/gh/toss/tossface/dist/tossface.css";
271
- /**
272
- * Pretendard — best Korean variable web font (jsDelivr CDN).
273
- * Recommended for all Korean UI text.
274
- */
308
+ /** Pretendard — Korean variable web font (jsDelivr CDN). */
275
309
  readonly pretendard: "https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css";
276
310
  /** Inter — clean Latin sans-serif (Google Fonts) */
277
311
  readonly inter: "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;900&display=swap";
@@ -280,24 +314,31 @@ type FontName = keyof typeof fonts;
280
314
  /**
281
315
  * Recommended font-family stacks.
282
316
  *
283
- * @example
284
- * // In your global CSS:
285
- * html { font-family: ${fontFamily.default}; }
286
- *
287
- * // Or in JS (e.g. main.tsx):
288
- * document.documentElement.style.fontFamily = fontFamily.default;
317
+ * Tossface를 맨 앞에 배치합니다.
318
+ * unicode-range 덕분에 이모지만 Tossface로, 나머지는 Pretendard로 렌더됩니다.
319
+ * system-ui를 포함하면 macOS Apple Color Emoji가 먼저 적용될 수 있어 제외합니다.
289
320
  */
290
321
  declare const fontFamily: {
291
- /**
292
- * Default recommended stack.
293
- * Tossface for emoji + Pretendard for Korean/Latin text.
294
- */
295
- readonly default: "\"Pretendard Variable\", \"Pretendard\", system-ui, -apple-system, sans-serif, \"Tossface\"";
296
- /** Pretendard only */
322
+ /** Tossface(emoji) + Pretendard(text). */
323
+ readonly default: "\"Tossface\", \"Pretendard Variable\", \"Pretendard\", sans-serif";
324
+ /** Pretendard only (no Tossface emoji) */
297
325
  readonly pretendard: "\"Pretendard Variable\", \"Pretendard\", system-ui, sans-serif";
298
326
  /** Inter only */
299
327
  readonly inter: "\"Inter\", system-ui, sans-serif";
300
328
  };
329
+ /**
330
+ * `<link>` 태그를 렌더하는 컴포넌트.
331
+ *
332
+ * Next.js App Router에서 `<link href={변수}>`를 쓰면
333
+ * SSR 시 href가 누락되는 버그가 있어, URL을 리터럴로 하드코딩합니다.
334
+ *
335
+ * ```tsx
336
+ * <head>
337
+ * <FontLinks />
338
+ * </head>
339
+ * ```
340
+ */
341
+ declare function FontLinks(): react_jsx_runtime.JSX.Element;
301
342
 
302
343
  interface TypewriterProps {
303
344
  /** Words to cycle through */
@@ -536,6 +577,17 @@ declare function useInView(options?: UseInViewOptions): UseInViewResult;
536
577
  */
537
578
  declare function useFocusTrap<T extends HTMLElement = HTMLElement>(active: boolean): React$1.RefObject<T | null>;
538
579
 
580
+ /**
581
+ * Calls `onEscape` when the Escape key is pressed while `active` is true.
582
+ */
583
+ declare function useEscapeKey(active: boolean, onEscape: () => void): void;
584
+
585
+ /**
586
+ * Locks scroll on the nearest `.tab-scroll` ancestor (or falls back to querySelector)
587
+ * while `active` is true. Restores previous overflow on cleanup.
588
+ */
589
+ declare function useScrollLock(active: boolean, anchorRef?: RefObject<HTMLElement | null>): void;
590
+
539
591
  interface SkeletonProps {
540
592
  /** Tailwind classes for width / height (e.g. "h-4 w-3/4") */
541
593
  className?: string;
@@ -579,8 +631,12 @@ interface InAppSheetProps {
579
631
  className?: string;
580
632
  /** true면 시트가 AppShell 전체 높이를 채움 */
581
633
  fullHeight?: boolean;
634
+ /** 우상단 X 버튼 숨기기. Default: false (보임) */
635
+ hideClose?: boolean;
636
+ /** 닫기 버튼 aria-label. Default: "닫기" */
637
+ closeLabel?: string;
582
638
  }
583
- declare function InAppSheet({ open, onClose, children, className, fullHeight, }: InAppSheetProps): react_jsx_runtime.JSX.Element;
639
+ declare function InAppSheet({ open, onClose, children, className, fullHeight, hideClose, closeLabel, }: InAppSheetProps): react_jsx_runtime.JSX.Element;
584
640
 
585
641
  type PWAInstallState = "android-ready" | "ios-safari" | "installed" | "unsupported";
586
642
  interface UsePWAInstallReturn {
@@ -795,4 +851,4 @@ declare function formatPrice(amount: number, currency?: string, locale?: string)
795
851
 
796
852
  declare function cn(...inputs: ClassValue[]): string;
797
853
 
798
- export { type ApiClient, type ApiClientOptions, ApiError, AppShell, AppShellContent, type AppShellContentProps, AppShellHeader, type AppShellHeaderProps, type AppShellProps, Avatar, type AvatarProps, Badge, type BadgeProps, Button, type ButtonProps, type ColorName, Dialog, type DialogProps, Divider, EmojiButton, type EmojiButtonProps, EmojiPicker, type EmojiPickerLabels, type EmojiPickerProps, EmptyState, type EmptyStateProps, type FontName, GrassMap, type GrassMapData, type GrassMapLabels, type GrassMapProps, IOSInstallSheet, InAppSheet, type InAppSheetProps, KitStyles, PWAInstallButton, type PWAInstallState, Section, SectionHeader, type SectionHeaderProps, type SectionProps, ShareButton, type ShareButtonProps, Skeleton, type SkeletonProps, StatChip, type StatChipProps, THEME_SCRIPT, Tab, TabBar, type TabBarProps, type TabProps, ThemeButton, type ThemeButtonProps, ThemeDialog, type ThemeDialogLabels, type ThemeDialogProps, type ToastOptions, ToastProvider, type ToastVariant, Tooltip, type TooltipProps, Typewriter, type TypewriterProps, type UseFetchOptions, type UseFetchResult, type UseFormSubmitOptions, type UseFormSubmitResult, type UseInViewOptions, type UseInViewResult, type UsePWAInstallReturn, type UsePollingOptions, type UsePollingResult, type UseShareOptions, type UseShareReturn, Watermark, type WatermarkProps, type WatermarkSponsor, clearFetchCache, cn, colors, createApiClient, createManifest, fontFamily, fonts, formatNumber, formatPrice, mobileViewport, relativeTime, svgIcon, useDebounce, useFetch, useFocusTrap, useFormSubmit, useInView, useLocalStorage, usePWAInstall, usePolling, useShare, useToast };
854
+ export { type ApiClient, type ApiClientOptions, ApiError, AppShell, AppShellContent, type AppShellContentProps, AppShellHeader, type AppShellHeaderProps, type AppShellProps, Avatar, type AvatarProps, Badge, type BadgeProps, Button, type ButtonProps, type ColorName, Dialog, type DialogProps, Divider, EmojiButton, type EmojiButtonProps, EmojiPicker, type EmojiPickerLabels, type EmojiPickerProps, EmptyState, type EmptyStateProps, Fab, type FabProps, FontLinks, type FontName, GrassMap, type GrassMapData, type GrassMapLabels, type GrassMapProps, IOSInstallSheet, InAppSheet, type InAppSheetProps, KitStyles, PWAInstallButton, type PWAInstallState, Section, SectionHeader, type SectionHeaderProps, type SectionProps, ShareButton, type ShareButtonProps, Skeleton, type SkeletonProps, StatChip, type StatChipProps, THEME_SCRIPT, Tab, TabBar, type TabBarProps, type TabProps, ThemeButton, type ThemeButtonProps, ThemeDialog, type ThemeDialogLabels, type ThemeDialogProps, type ToastOptions, ToastProvider, type ToastVariant, Tooltip, type TooltipProps, Typewriter, type TypewriterProps, type UseFetchOptions, type UseFetchResult, type UseFormSubmitOptions, type UseFormSubmitResult, type UseInViewOptions, type UseInViewResult, type UsePWAInstallReturn, type UsePollingOptions, type UsePollingResult, type UseShareOptions, type UseShareReturn, Watermark, type WatermarkProps, type WatermarkSponsor, clearFetchCache, cn, colors, createApiClient, createManifest, fontFamily, fonts, formatNumber, formatPrice, mobileViewport, relativeTime, svgIcon, useDebounce, useEscapeKey, useFetch, useFocusTrap, useFormSubmit, useInView, useLocalStorage, usePWAInstall, usePolling, useScrollLock, useShare, useToast };
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as React$1 from 'react';
3
- import React__default, { ReactNode, CSSProperties } from 'react';
3
+ import React__default, { ReactNode, CSSProperties, RefObject } from 'react';
4
4
  import { MetadataRoute, Viewport } from 'next';
5
5
  import { ClassValue } from 'clsx';
6
6
 
@@ -69,6 +69,24 @@ interface AppShellContentProps {
69
69
  */
70
70
  declare function AppShellContent({ children, className }: AppShellContentProps): react_jsx_runtime.JSX.Element;
71
71
 
72
+ interface FabProps {
73
+ onClick: () => void;
74
+ icon: ReactNode;
75
+ /** Accent background color. Default: zinc-900/white (follows dark mode) */
76
+ color?: string;
77
+ className?: string;
78
+ }
79
+ /**
80
+ * Floating Action Button — positioned absolute bottom-right inside AppShell.
81
+ *
82
+ * @example
83
+ * <AppShellContent>
84
+ * {content}
85
+ * <Fab onClick={handleAdd} icon={<PlusIcon />} color="#6366f1" />
86
+ * </AppShellContent>
87
+ */
88
+ declare function Fab({ onClick, icon, color, className }: FabProps): react_jsx_runtime.JSX.Element;
89
+
72
90
  interface TabBarProps {
73
91
  children: ReactNode;
74
92
  className?: string;
@@ -239,39 +257,55 @@ interface ThemeDialogProps {
239
257
  declare function ThemeDialog({ open, onClose, current, onSelect, dark: darkProp, onDarkToggle, palette, labels: _labels, }: ThemeDialogProps): react_jsx_runtime.JSX.Element;
240
258
 
241
259
  /**
242
- * Font presets for @m1kapp/ui.
260
+ * Font presets for @m1kapp/kit.
243
261
  * CDN links only — no font files bundled.
244
262
  *
245
- * ## Quick setup (recommended)
263
+ * ## Setup
264
+ *
265
+ * ### Option A: `FontLinks` 컴포넌트 (Next.js App Router 권장)
266
+ *
267
+ * ```tsx
268
+ * // app/layout.tsx
269
+ * import { FontLinks, fontFamily, THEME_SCRIPT } from "@m1kapp/kit";
270
+ *
271
+ * export default function RootLayout({ children }) {
272
+ * return (
273
+ * <html lang="ko">
274
+ * <head>
275
+ * <FontLinks />
276
+ * <script dangerouslySetInnerHTML={{ __html: THEME_SCRIPT }} />
277
+ * </head>
278
+ * <body style={{ fontFamily: fontFamily.default }}>
279
+ * {children}
280
+ * </body>
281
+ * </html>
282
+ * );
283
+ * }
284
+ * ```
285
+ *
286
+ * ### Option B: 수동 `<link>` (Vite / static HTML)
287
+ *
288
+ * ⚠️ Next.js App Router에서 `<link href={fonts.tossface}>` 처럼
289
+ * 변수를 사용하면 SSR 시 href가 누락됩니다. URL을 직접 하드코딩하세요.
246
290
  *
247
- * Add to your `index.html` <head>:
248
291
  * ```html
249
- * <link rel="preconnect" href="https://cdn.jsdelivr.net" />
250
- * <link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin />
251
292
  * <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/toss/tossface/dist/tossface.css" />
252
293
  * <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css" />
253
294
  * ```
254
295
  *
255
- * Add to your global CSS:
296
+ * ### Font stack
297
+ *
298
+ * Tossface를 `system-ui` 앞에 배치해야 macOS에서
299
+ * Apple Color Emoji 대신 Tossface가 적용됩니다.
300
+ *
256
301
  * ```css
257
- * html {
258
- * font-family: "Tossface", "Pretendard Variable", "Pretendard", system-ui, sans-serif;
259
- * }
302
+ * html { font-family: "Tossface", "Pretendard Variable", "Pretendard", sans-serif; }
260
303
  * ```
261
- *
262
- * That's it — Tossface handles emojis, Pretendard handles text.
263
304
  */
264
305
  declare const fonts: {
265
- /**
266
- * Tossface — Toss emoji font (open source, jsDelivr CDN).
267
- * Renders all emoji with the Toss design style.
268
- * Add this to get consistent emoji across platforms.
269
- */
306
+ /** Tossface — Toss emoji font (open source, jsDelivr CDN). */
270
307
  readonly tossface: "https://cdn.jsdelivr.net/gh/toss/tossface/dist/tossface.css";
271
- /**
272
- * Pretendard — best Korean variable web font (jsDelivr CDN).
273
- * Recommended for all Korean UI text.
274
- */
308
+ /** Pretendard — Korean variable web font (jsDelivr CDN). */
275
309
  readonly pretendard: "https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css";
276
310
  /** Inter — clean Latin sans-serif (Google Fonts) */
277
311
  readonly inter: "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;900&display=swap";
@@ -280,24 +314,31 @@ type FontName = keyof typeof fonts;
280
314
  /**
281
315
  * Recommended font-family stacks.
282
316
  *
283
- * @example
284
- * // In your global CSS:
285
- * html { font-family: ${fontFamily.default}; }
286
- *
287
- * // Or in JS (e.g. main.tsx):
288
- * document.documentElement.style.fontFamily = fontFamily.default;
317
+ * Tossface를 맨 앞에 배치합니다.
318
+ * unicode-range 덕분에 이모지만 Tossface로, 나머지는 Pretendard로 렌더됩니다.
319
+ * system-ui를 포함하면 macOS Apple Color Emoji가 먼저 적용될 수 있어 제외합니다.
289
320
  */
290
321
  declare const fontFamily: {
291
- /**
292
- * Default recommended stack.
293
- * Tossface for emoji + Pretendard for Korean/Latin text.
294
- */
295
- readonly default: "\"Pretendard Variable\", \"Pretendard\", system-ui, -apple-system, sans-serif, \"Tossface\"";
296
- /** Pretendard only */
322
+ /** Tossface(emoji) + Pretendard(text). */
323
+ readonly default: "\"Tossface\", \"Pretendard Variable\", \"Pretendard\", sans-serif";
324
+ /** Pretendard only (no Tossface emoji) */
297
325
  readonly pretendard: "\"Pretendard Variable\", \"Pretendard\", system-ui, sans-serif";
298
326
  /** Inter only */
299
327
  readonly inter: "\"Inter\", system-ui, sans-serif";
300
328
  };
329
+ /**
330
+ * `<link>` 태그를 렌더하는 컴포넌트.
331
+ *
332
+ * Next.js App Router에서 `<link href={변수}>`를 쓰면
333
+ * SSR 시 href가 누락되는 버그가 있어, URL을 리터럴로 하드코딩합니다.
334
+ *
335
+ * ```tsx
336
+ * <head>
337
+ * <FontLinks />
338
+ * </head>
339
+ * ```
340
+ */
341
+ declare function FontLinks(): react_jsx_runtime.JSX.Element;
301
342
 
302
343
  interface TypewriterProps {
303
344
  /** Words to cycle through */
@@ -536,6 +577,17 @@ declare function useInView(options?: UseInViewOptions): UseInViewResult;
536
577
  */
537
578
  declare function useFocusTrap<T extends HTMLElement = HTMLElement>(active: boolean): React$1.RefObject<T | null>;
538
579
 
580
+ /**
581
+ * Calls `onEscape` when the Escape key is pressed while `active` is true.
582
+ */
583
+ declare function useEscapeKey(active: boolean, onEscape: () => void): void;
584
+
585
+ /**
586
+ * Locks scroll on the nearest `.tab-scroll` ancestor (or falls back to querySelector)
587
+ * while `active` is true. Restores previous overflow on cleanup.
588
+ */
589
+ declare function useScrollLock(active: boolean, anchorRef?: RefObject<HTMLElement | null>): void;
590
+
539
591
  interface SkeletonProps {
540
592
  /** Tailwind classes for width / height (e.g. "h-4 w-3/4") */
541
593
  className?: string;
@@ -579,8 +631,12 @@ interface InAppSheetProps {
579
631
  className?: string;
580
632
  /** true면 시트가 AppShell 전체 높이를 채움 */
581
633
  fullHeight?: boolean;
634
+ /** 우상단 X 버튼 숨기기. Default: false (보임) */
635
+ hideClose?: boolean;
636
+ /** 닫기 버튼 aria-label. Default: "닫기" */
637
+ closeLabel?: string;
582
638
  }
583
- declare function InAppSheet({ open, onClose, children, className, fullHeight, }: InAppSheetProps): react_jsx_runtime.JSX.Element;
639
+ declare function InAppSheet({ open, onClose, children, className, fullHeight, hideClose, closeLabel, }: InAppSheetProps): react_jsx_runtime.JSX.Element;
584
640
 
585
641
  type PWAInstallState = "android-ready" | "ios-safari" | "installed" | "unsupported";
586
642
  interface UsePWAInstallReturn {
@@ -795,4 +851,4 @@ declare function formatPrice(amount: number, currency?: string, locale?: string)
795
851
 
796
852
  declare function cn(...inputs: ClassValue[]): string;
797
853
 
798
- export { type ApiClient, type ApiClientOptions, ApiError, AppShell, AppShellContent, type AppShellContentProps, AppShellHeader, type AppShellHeaderProps, type AppShellProps, Avatar, type AvatarProps, Badge, type BadgeProps, Button, type ButtonProps, type ColorName, Dialog, type DialogProps, Divider, EmojiButton, type EmojiButtonProps, EmojiPicker, type EmojiPickerLabels, type EmojiPickerProps, EmptyState, type EmptyStateProps, type FontName, GrassMap, type GrassMapData, type GrassMapLabels, type GrassMapProps, IOSInstallSheet, InAppSheet, type InAppSheetProps, KitStyles, PWAInstallButton, type PWAInstallState, Section, SectionHeader, type SectionHeaderProps, type SectionProps, ShareButton, type ShareButtonProps, Skeleton, type SkeletonProps, StatChip, type StatChipProps, THEME_SCRIPT, Tab, TabBar, type TabBarProps, type TabProps, ThemeButton, type ThemeButtonProps, ThemeDialog, type ThemeDialogLabels, type ThemeDialogProps, type ToastOptions, ToastProvider, type ToastVariant, Tooltip, type TooltipProps, Typewriter, type TypewriterProps, type UseFetchOptions, type UseFetchResult, type UseFormSubmitOptions, type UseFormSubmitResult, type UseInViewOptions, type UseInViewResult, type UsePWAInstallReturn, type UsePollingOptions, type UsePollingResult, type UseShareOptions, type UseShareReturn, Watermark, type WatermarkProps, type WatermarkSponsor, clearFetchCache, cn, colors, createApiClient, createManifest, fontFamily, fonts, formatNumber, formatPrice, mobileViewport, relativeTime, svgIcon, useDebounce, useFetch, useFocusTrap, useFormSubmit, useInView, useLocalStorage, usePWAInstall, usePolling, useShare, useToast };
854
+ export { type ApiClient, type ApiClientOptions, ApiError, AppShell, AppShellContent, type AppShellContentProps, AppShellHeader, type AppShellHeaderProps, type AppShellProps, Avatar, type AvatarProps, Badge, type BadgeProps, Button, type ButtonProps, type ColorName, Dialog, type DialogProps, Divider, EmojiButton, type EmojiButtonProps, EmojiPicker, type EmojiPickerLabels, type EmojiPickerProps, EmptyState, type EmptyStateProps, Fab, type FabProps, FontLinks, type FontName, GrassMap, type GrassMapData, type GrassMapLabels, type GrassMapProps, IOSInstallSheet, InAppSheet, type InAppSheetProps, KitStyles, PWAInstallButton, type PWAInstallState, Section, SectionHeader, type SectionHeaderProps, type SectionProps, ShareButton, type ShareButtonProps, Skeleton, type SkeletonProps, StatChip, type StatChipProps, THEME_SCRIPT, Tab, TabBar, type TabBarProps, type TabProps, ThemeButton, type ThemeButtonProps, ThemeDialog, type ThemeDialogLabels, type ThemeDialogProps, type ToastOptions, ToastProvider, type ToastVariant, Tooltip, type TooltipProps, Typewriter, type TypewriterProps, type UseFetchOptions, type UseFetchResult, type UseFormSubmitOptions, type UseFormSubmitResult, type UseInViewOptions, type UseInViewResult, type UsePWAInstallReturn, type UsePollingOptions, type UsePollingResult, type UseShareOptions, type UseShareReturn, Watermark, type WatermarkProps, type WatermarkSponsor, clearFetchCache, cn, colors, createApiClient, createManifest, fontFamily, fonts, formatNumber, formatPrice, mobileViewport, relativeTime, svgIcon, useDebounce, useEscapeKey, useFetch, useFocusTrap, useFormSubmit, useInView, useLocalStorage, usePWAInstall, usePolling, useScrollLock, useShare, useToast };