@m1kapp/kit 0.0.30 → 0.0.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -12
- package/bin/skills/m1kapp-clean.md +71 -0
- package/bin/skills.mjs +4 -0
- package/bin/stats.mjs +425 -2
- package/dist/index.d.mts +93 -42
- package/dist/index.d.ts +93 -42
- package/dist/index.js +4 -4
- package/dist/index.mjs +4 -4
- package/dist/meta.json +41 -11
- package/dist/ogimage.js +1 -1
- package/dist/ogimage.mjs +1 -1
- package/dist/pwa.d.mts +12 -11
- package/dist/pwa.d.ts +12 -11
- package/dist/pwa.js +2 -2
- package/dist/pwa.mjs +2 -2
- package/dist/styles.css +1 -1
- package/dist/utils.d.mts +15 -1
- package/dist/utils.d.ts +15 -1
- package/dist/utils.js +1 -1
- package/dist/utils.mjs +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -65,6 +65,19 @@ interface AppShellProps {
|
|
|
65
65
|
/**
|
|
66
66
|
* Mobile app-like container with rounded corners, shadow, and ring.
|
|
67
67
|
* Centers content and constrains width for a phone-like viewport.
|
|
68
|
+
*
|
|
69
|
+
* `AppShell` fills `h-full` of its parent — it does not size itself. Wrap it
|
|
70
|
+
* in `<Watermark>` (gives `h-dvh` + centering + the `PoweredByKit` credit
|
|
71
|
+
* strip) rather than a hand-rolled height/centering div; without a sized
|
|
72
|
+
* parent the shell just collapses to content height.
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* <Watermark color="#e2603f" text="myapp">
|
|
76
|
+
* <AppShell>
|
|
77
|
+
* <AppShellHeader>...</AppShellHeader>
|
|
78
|
+
* <AppShellContent><Section>...</Section></AppShellContent>
|
|
79
|
+
* </AppShell>
|
|
80
|
+
* </Watermark>
|
|
68
81
|
*/
|
|
69
82
|
declare function AppShell({ children, className, maxWidth, maxHeight, accent, accentFg, style, }: AppShellProps): react_jsx_runtime.JSX.Element;
|
|
70
83
|
interface AppShellHeaderProps {
|
|
@@ -80,7 +93,9 @@ interface AppShellContentProps {
|
|
|
80
93
|
className?: string;
|
|
81
94
|
}
|
|
82
95
|
/**
|
|
83
|
-
* Scrollable main content area.
|
|
96
|
+
* Scrollable main content area. Carries no padding of its own — build
|
|
97
|
+
* children from `<Section>` (px-4) blocks separated by `<Divider spacing="sm" />`,
|
|
98
|
+
* not a hand-rolled `<div className="p-4 flex flex-col gap-4">`.
|
|
84
99
|
*/
|
|
85
100
|
declare function AppShellContent({ children, className }: AppShellContentProps): react_jsx_runtime.JSX.Element;
|
|
86
101
|
|
|
@@ -304,6 +319,55 @@ interface TextareaProps extends InputBaseProps {
|
|
|
304
319
|
}
|
|
305
320
|
declare function Textarea({ value, onChange, placeholder, rows, disabled, onFocus, onBlur, className, }: TextareaProps): react_jsx_runtime.JSX.Element;
|
|
306
321
|
|
|
322
|
+
interface MediaCardProps {
|
|
323
|
+
/** 16:9 썸네일 이미지 URL */
|
|
324
|
+
thumbnail: string;
|
|
325
|
+
/** 썸네일 우하단 배지 (재생시간 등) */
|
|
326
|
+
badge?: string;
|
|
327
|
+
/** horizontal: 썸네일 좌측 절반 / vertical: 썸네일 상단 풀폭 */
|
|
328
|
+
layout?: "horizontal" | "vertical";
|
|
329
|
+
onClick?: () => void;
|
|
330
|
+
/** 제목·메타 등 본문 — 폰트/색은 호출부 소유 */
|
|
331
|
+
children: ReactNode;
|
|
332
|
+
className?: string;
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* 썸네일 + 본문 미디어 카드 (영상·플레이리스트 목록용).
|
|
336
|
+
*
|
|
337
|
+
* @example
|
|
338
|
+
* <MediaCard thumbnail={v.thumbnail} badge={v.duration} onClick={open}>
|
|
339
|
+
* <p className="text-base line-clamp-2">{v.title}</p>
|
|
340
|
+
* <p className="text-xs text-zinc-400">조회수 {formatKoreanNumber(v.viewCount)}회</p>
|
|
341
|
+
* </MediaCard>
|
|
342
|
+
*/
|
|
343
|
+
declare function MediaCard({ thumbnail, badge, layout, onClick, children, className, }: MediaCardProps): react_jsx_runtime.JSX.Element;
|
|
344
|
+
|
|
345
|
+
interface UnderlineTab<T extends string = string> {
|
|
346
|
+
id: T;
|
|
347
|
+
label: string;
|
|
348
|
+
}
|
|
349
|
+
interface UnderlineTabsProps<T extends string = string> {
|
|
350
|
+
tabs: UnderlineTab<T>[];
|
|
351
|
+
active: T;
|
|
352
|
+
onChange: (id: T) => void;
|
|
353
|
+
/** 스크롤 상단 고정 */
|
|
354
|
+
sticky?: boolean;
|
|
355
|
+
/** 좁은 탭 간격 (요일 등 짧은 라벨 다수일 때) */
|
|
356
|
+
compact?: boolean;
|
|
357
|
+
/** 활성 탭 색. Default: currentColor 기반 (dark 셸에선 white) */
|
|
358
|
+
activeColor?: string;
|
|
359
|
+
className?: string;
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* 하단 언더라인 인디케이터 탭 (콘텐츠 필터용) — 하단 내비 TabBar와 별개.
|
|
363
|
+
* SegmentedControl(박스형)과 달리 미디어 앱의 카테고리 탭 UX.
|
|
364
|
+
*
|
|
365
|
+
* @example
|
|
366
|
+
* <UnderlineTabs tabs={[{ id: "all", label: "전체" }, { id: "music", label: "음악" }]}
|
|
367
|
+
* active={tab} onChange={setTab} sticky />
|
|
368
|
+
*/
|
|
369
|
+
declare function UnderlineTabs<T extends string>({ tabs, active, onChange, sticky, compact, activeColor, className, }: UnderlineTabsProps<T>): react_jsx_runtime.JSX.Element;
|
|
370
|
+
|
|
307
371
|
interface SectionProps {
|
|
308
372
|
children: ReactNode;
|
|
309
373
|
className?: string;
|
|
@@ -419,12 +483,7 @@ interface WatermarkProps {
|
|
|
419
483
|
total?: number;
|
|
420
484
|
};
|
|
421
485
|
}
|
|
422
|
-
/**
|
|
423
|
-
* Full-screen colored background with repeating animated text watermark pattern.
|
|
424
|
-
*
|
|
425
|
-
* Renders as a single SVG element with a <pattern> — zero extra DOM nodes per tile.
|
|
426
|
-
* Sponsor tiles inside the pattern are clickable and support hover effects.
|
|
427
|
-
*/
|
|
486
|
+
/** Estimate rendered width of a string. CJK chars ≈ 1.0×, Latin ≈ 0.62× font size. */
|
|
428
487
|
declare function Watermark({ children, color, text, maxWidth, sponsor, speed, hidePoweredBy, trackSlug, track, claimed, counts, }: WatermarkProps): react_jsx_runtime.JSX.Element;
|
|
429
488
|
|
|
430
489
|
declare const colors: {
|
|
@@ -1168,18 +1227,6 @@ interface StepperProps {
|
|
|
1168
1227
|
accent?: string;
|
|
1169
1228
|
className?: string;
|
|
1170
1229
|
}
|
|
1171
|
-
/**
|
|
1172
|
-
* Horizontal multi-step progress indicator with connectors. Steps before the
|
|
1173
|
-
* cursor show a check, the current step is highlighted, the rest are muted.
|
|
1174
|
-
* Great for wizards, multi-phase flows, and onboarding.
|
|
1175
|
-
*
|
|
1176
|
-
* @example
|
|
1177
|
-
* <Stepper current={phase} onStepClick={setPhase} steps={[
|
|
1178
|
-
* { label: "분석", icon: "📝" },
|
|
1179
|
-
* { label: "준비", icon: "📸" },
|
|
1180
|
-
* { label: "생성", icon: "✨" },
|
|
1181
|
-
* ]} />
|
|
1182
|
-
*/
|
|
1183
1230
|
declare function Stepper({ steps, current, completedThrough, onStepClick, accent, className, }: StepperProps): react_jsx_runtime.JSX.Element;
|
|
1184
1231
|
|
|
1185
1232
|
interface CollapsibleProps {
|
|
@@ -1201,17 +1248,6 @@ interface CollapsibleProps {
|
|
|
1201
1248
|
children: ReactNode;
|
|
1202
1249
|
className?: string;
|
|
1203
1250
|
}
|
|
1204
|
-
/**
|
|
1205
|
-
* Collapsible card with a header (leading marker, title, optional subtitle/badge)
|
|
1206
|
-
* and a body that shows when `open`. State-aware styling for expanded/completed.
|
|
1207
|
-
* Good for step lists, accordions, and disclosure sections.
|
|
1208
|
-
*
|
|
1209
|
-
* @example
|
|
1210
|
-
* <Collapsible leading={1} title="페르소나 분석" subtitle="스타일 파악"
|
|
1211
|
-
* open={open === 1} onToggle={() => setOpen(open === 1 ? null : 1)} completed>
|
|
1212
|
-
* <p>…</p>
|
|
1213
|
-
* </Collapsible>
|
|
1214
|
-
*/
|
|
1215
1251
|
declare function Collapsible({ title, subtitle, badge, leading, open, onToggle, completed, optionalTag, accent, children, className, }: CollapsibleProps): react_jsx_runtime.JSX.Element;
|
|
1216
1252
|
|
|
1217
1253
|
/**
|
|
@@ -1494,6 +1530,18 @@ interface UsePWAInstallReturn {
|
|
|
1494
1530
|
}
|
|
1495
1531
|
declare function usePWAInstall(): UsePWAInstallReturn;
|
|
1496
1532
|
|
|
1533
|
+
interface IOSInstallSheetProps {
|
|
1534
|
+
open: boolean;
|
|
1535
|
+
onClose(): void;
|
|
1536
|
+
appName: string;
|
|
1537
|
+
iconSrc?: string;
|
|
1538
|
+
}
|
|
1539
|
+
/**
|
|
1540
|
+
* Bottom-sheet guide for iOS "Add to Home Screen".
|
|
1541
|
+
* Can also be used standalone if you need custom trigger UI.
|
|
1542
|
+
*/
|
|
1543
|
+
declare function IOSInstallSheet({ open, onClose, appName, iconSrc }: IOSInstallSheetProps): react_jsx_runtime.JSX.Element | null;
|
|
1544
|
+
|
|
1497
1545
|
interface PWAInstallButtonProps {
|
|
1498
1546
|
/** App name shown in iOS guide sheet */
|
|
1499
1547
|
appName?: string;
|
|
@@ -1517,17 +1565,6 @@ interface PWAInstallButtonProps {
|
|
|
1517
1565
|
* <PWAInstallButton appName="My App" iconSrc="/icon.png" />
|
|
1518
1566
|
*/
|
|
1519
1567
|
declare function PWAInstallButton({ appName, iconSrc, label, installedLabel, className, }: PWAInstallButtonProps): react_jsx_runtime.JSX.Element | null;
|
|
1520
|
-
interface IOSInstallSheetProps {
|
|
1521
|
-
open: boolean;
|
|
1522
|
-
onClose(): void;
|
|
1523
|
-
appName: string;
|
|
1524
|
-
iconSrc?: string;
|
|
1525
|
-
}
|
|
1526
|
-
/**
|
|
1527
|
-
* Bottom-sheet guide for iOS "Add to Home Screen".
|
|
1528
|
-
* Can also be used standalone if you need custom trigger UI.
|
|
1529
|
-
*/
|
|
1530
|
-
declare function IOSInstallSheet({ open, onClose, appName, iconSrc }: IOSInstallSheetProps): react_jsx_runtime.JSX.Element | null;
|
|
1531
1568
|
|
|
1532
1569
|
/**
|
|
1533
1570
|
* Drop into <head> in your root layout to pre-load kit styles and
|
|
@@ -1709,5 +1746,19 @@ interface DateCount {
|
|
|
1709
1746
|
* // [{date:"2026-07-01",count:0}, …, {date:"2026-07-06",count:3}, {date:"2026-07-07",count:0}]
|
|
1710
1747
|
*/
|
|
1711
1748
|
declare function fillDateSeries(daily: DateCount[], days: number, timeZone?: string): DateCount[];
|
|
1749
|
+
/**
|
|
1750
|
+
* 한국식 수 축약 (내림). 조회수·좋아요 표기용 — 단위는 호출부에서
|
|
1751
|
+
* `${formatKoreanNumber(n)}회`처럼 붙인다.
|
|
1752
|
+
*/
|
|
1753
|
+
declare function formatKoreanNumber(n: number | string): string;
|
|
1754
|
+
interface IsoDuration {
|
|
1755
|
+
hours: number;
|
|
1756
|
+
minutes: number;
|
|
1757
|
+
seconds: number;
|
|
1758
|
+
}
|
|
1759
|
+
/** "PT1H2M3S" → { hours: 1, minutes: 2, seconds: 3 } */
|
|
1760
|
+
declare function parseIsoDuration(duration: string): IsoDuration;
|
|
1761
|
+
/** "PT1H2M3S" → 3723 (초) */
|
|
1762
|
+
declare function isoDurationToSec(duration: string): number;
|
|
1712
1763
|
|
|
1713
|
-
export { ActionCard, type ActionCardLabels, type ActionCardProps, type ActionCardState, type ApiClient, type ApiClientOptions, ApiError, AppShell, AppShellContent, type AppShellContentProps, AppShellHeader, type AppShellHeaderProps, type AppShellProps, AsyncList, type AsyncListProps, type AsyncListStatus, Avatar, type AvatarProps, Badge, type BadgeProps, BarList, type BarListItem, type BarListProps, Button, type ButtonProps, Carousel, type CarouselProps, ChatBubble, type ChatBubbleProps, type ChatMessage, type ChatRole, CodeBlock, type CodeBlockProps, Collapsible, type CollapsibleProps, type ColorName, ColorPicker, type ColorPickerProps, CopyButton, type CopyButtonProps, Countdown, type CountdownLabels, type CountdownProps, type DateCount, type DayGroup, Dialog, type DialogProps, Divider, type DividerProps, EmojiButton, type EmojiButtonProps, EmojiPicker, type EmojiPickerLabels, type EmojiPickerProps, EmptyState, type EmptyStateProps, Fab, type FabProps, FetchProgress, type FetchProgressProps, Field, type FieldProps, FontLinks, type FontName, GrassMap, type GrassMapData, type GrassMapLabels, type GrassMapProps, IOSInstallSheet, IconButton, type IconButtonProps, Img, type ImgProps, InAppSheet, type InAppSheetProps, InlineEdit, type InlineEditProps, Input, type InputProps, KitStyles, LinkifiedText, type LinkifiedTextProps, ListRow, type ListRowProps, MessageList, type MessageListProps, PWAInstallButton, type PWAInstallState, PoweredByKit, type PoweredByKitProps, ProgressRing, type ProgressRingProps, Section, SectionHeader, type SectionHeaderProps, type SectionProps, type SegmentOption, SegmentedControl, type SegmentedControlProps, Select, type SelectOption, type SelectProps, ShareButton, type ShareButtonProps, Skeleton, type SkeletonProps, StatChip, type StatChipProps, type Step, Stepper, type StepperProps, Switch, type SwitchProps, THEME_SCRIPT, Tab, TabBar, type TabBarProps, type TabProps, type TabRootProps, Textarea, type TextareaProps, ThemeButton, type ThemeButtonProps, ThemeDialog, type ThemeDialogLabels, type ThemeDialogProps, type ToastOptions, ToastProvider, type ToastVariant, Tooltip, type TooltipProps, Typewriter, type TypewriterProps, TypingIndicator, type TypingIndicatorProps, 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, fillDateSeries, fontFamily, fonts, formatDayLabel, formatDuration, formatNumber, formatPrice, getFetchActiveCount, groupByDay, invalidateFetch, mobileViewport, postJson, relativeTime, subscribeFetchActivity, svgIcon, useCopy, useDebounce, useEscapeKey, useFetch, useFocusTrap, useFormSubmit, useImageLoader, useInView, useLocalStorage, usePWAInstall, usePolling, usePortalTarget, useScrollLock, useShare, useToast };
|
|
1764
|
+
export { ActionCard, type ActionCardLabels, type ActionCardProps, type ActionCardState, type ApiClient, type ApiClientOptions, ApiError, AppShell, AppShellContent, type AppShellContentProps, AppShellHeader, type AppShellHeaderProps, type AppShellProps, AsyncList, type AsyncListProps, type AsyncListStatus, Avatar, type AvatarProps, Badge, type BadgeProps, BarList, type BarListItem, type BarListProps, Button, type ButtonProps, Carousel, type CarouselProps, ChatBubble, type ChatBubbleProps, type ChatMessage, type ChatRole, CodeBlock, type CodeBlockProps, Collapsible, type CollapsibleProps, type ColorName, ColorPicker, type ColorPickerProps, CopyButton, type CopyButtonProps, Countdown, type CountdownLabels, type CountdownProps, type DateCount, type DayGroup, Dialog, type DialogProps, Divider, type DividerProps, EmojiButton, type EmojiButtonProps, EmojiPicker, type EmojiPickerLabels, type EmojiPickerProps, EmptyState, type EmptyStateProps, Fab, type FabProps, FetchProgress, type FetchProgressProps, Field, type FieldProps, FontLinks, type FontName, GrassMap, type GrassMapData, type GrassMapLabels, type GrassMapProps, IOSInstallSheet, IconButton, type IconButtonProps, Img, type ImgProps, InAppSheet, type InAppSheetProps, InlineEdit, type InlineEditProps, Input, type InputProps, type IsoDuration, KitStyles, LinkifiedText, type LinkifiedTextProps, ListRow, type ListRowProps, MediaCard, type MediaCardProps, MessageList, type MessageListProps, PWAInstallButton, type PWAInstallState, PoweredByKit, type PoweredByKitProps, ProgressRing, type ProgressRingProps, Section, SectionHeader, type SectionHeaderProps, type SectionProps, type SegmentOption, SegmentedControl, type SegmentedControlProps, Select, type SelectOption, type SelectProps, ShareButton, type ShareButtonProps, Skeleton, type SkeletonProps, StatChip, type StatChipProps, type Step, Stepper, type StepperProps, Switch, type SwitchProps, THEME_SCRIPT, Tab, TabBar, type TabBarProps, type TabProps, type TabRootProps, Textarea, type TextareaProps, ThemeButton, type ThemeButtonProps, ThemeDialog, type ThemeDialogLabels, type ThemeDialogProps, type ToastOptions, ToastProvider, type ToastVariant, Tooltip, type TooltipProps, Typewriter, type TypewriterProps, TypingIndicator, type TypingIndicatorProps, type UnderlineTab, UnderlineTabs, type UnderlineTabsProps, 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, fillDateSeries, fontFamily, fonts, formatDayLabel, formatDuration, formatKoreanNumber, formatNumber, formatPrice, getFetchActiveCount, groupByDay, invalidateFetch, isoDurationToSec, mobileViewport, parseIsoDuration, postJson, relativeTime, subscribeFetchActivity, svgIcon, useCopy, useDebounce, useEscapeKey, useFetch, useFocusTrap, useFormSubmit, useImageLoader, useInView, useLocalStorage, usePWAInstall, usePolling, usePortalTarget, useScrollLock, useShare, useToast };
|
package/dist/index.d.ts
CHANGED
|
@@ -65,6 +65,19 @@ interface AppShellProps {
|
|
|
65
65
|
/**
|
|
66
66
|
* Mobile app-like container with rounded corners, shadow, and ring.
|
|
67
67
|
* Centers content and constrains width for a phone-like viewport.
|
|
68
|
+
*
|
|
69
|
+
* `AppShell` fills `h-full` of its parent — it does not size itself. Wrap it
|
|
70
|
+
* in `<Watermark>` (gives `h-dvh` + centering + the `PoweredByKit` credit
|
|
71
|
+
* strip) rather than a hand-rolled height/centering div; without a sized
|
|
72
|
+
* parent the shell just collapses to content height.
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* <Watermark color="#e2603f" text="myapp">
|
|
76
|
+
* <AppShell>
|
|
77
|
+
* <AppShellHeader>...</AppShellHeader>
|
|
78
|
+
* <AppShellContent><Section>...</Section></AppShellContent>
|
|
79
|
+
* </AppShell>
|
|
80
|
+
* </Watermark>
|
|
68
81
|
*/
|
|
69
82
|
declare function AppShell({ children, className, maxWidth, maxHeight, accent, accentFg, style, }: AppShellProps): react_jsx_runtime.JSX.Element;
|
|
70
83
|
interface AppShellHeaderProps {
|
|
@@ -80,7 +93,9 @@ interface AppShellContentProps {
|
|
|
80
93
|
className?: string;
|
|
81
94
|
}
|
|
82
95
|
/**
|
|
83
|
-
* Scrollable main content area.
|
|
96
|
+
* Scrollable main content area. Carries no padding of its own — build
|
|
97
|
+
* children from `<Section>` (px-4) blocks separated by `<Divider spacing="sm" />`,
|
|
98
|
+
* not a hand-rolled `<div className="p-4 flex flex-col gap-4">`.
|
|
84
99
|
*/
|
|
85
100
|
declare function AppShellContent({ children, className }: AppShellContentProps): react_jsx_runtime.JSX.Element;
|
|
86
101
|
|
|
@@ -304,6 +319,55 @@ interface TextareaProps extends InputBaseProps {
|
|
|
304
319
|
}
|
|
305
320
|
declare function Textarea({ value, onChange, placeholder, rows, disabled, onFocus, onBlur, className, }: TextareaProps): react_jsx_runtime.JSX.Element;
|
|
306
321
|
|
|
322
|
+
interface MediaCardProps {
|
|
323
|
+
/** 16:9 썸네일 이미지 URL */
|
|
324
|
+
thumbnail: string;
|
|
325
|
+
/** 썸네일 우하단 배지 (재생시간 등) */
|
|
326
|
+
badge?: string;
|
|
327
|
+
/** horizontal: 썸네일 좌측 절반 / vertical: 썸네일 상단 풀폭 */
|
|
328
|
+
layout?: "horizontal" | "vertical";
|
|
329
|
+
onClick?: () => void;
|
|
330
|
+
/** 제목·메타 등 본문 — 폰트/색은 호출부 소유 */
|
|
331
|
+
children: ReactNode;
|
|
332
|
+
className?: string;
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* 썸네일 + 본문 미디어 카드 (영상·플레이리스트 목록용).
|
|
336
|
+
*
|
|
337
|
+
* @example
|
|
338
|
+
* <MediaCard thumbnail={v.thumbnail} badge={v.duration} onClick={open}>
|
|
339
|
+
* <p className="text-base line-clamp-2">{v.title}</p>
|
|
340
|
+
* <p className="text-xs text-zinc-400">조회수 {formatKoreanNumber(v.viewCount)}회</p>
|
|
341
|
+
* </MediaCard>
|
|
342
|
+
*/
|
|
343
|
+
declare function MediaCard({ thumbnail, badge, layout, onClick, children, className, }: MediaCardProps): react_jsx_runtime.JSX.Element;
|
|
344
|
+
|
|
345
|
+
interface UnderlineTab<T extends string = string> {
|
|
346
|
+
id: T;
|
|
347
|
+
label: string;
|
|
348
|
+
}
|
|
349
|
+
interface UnderlineTabsProps<T extends string = string> {
|
|
350
|
+
tabs: UnderlineTab<T>[];
|
|
351
|
+
active: T;
|
|
352
|
+
onChange: (id: T) => void;
|
|
353
|
+
/** 스크롤 상단 고정 */
|
|
354
|
+
sticky?: boolean;
|
|
355
|
+
/** 좁은 탭 간격 (요일 등 짧은 라벨 다수일 때) */
|
|
356
|
+
compact?: boolean;
|
|
357
|
+
/** 활성 탭 색. Default: currentColor 기반 (dark 셸에선 white) */
|
|
358
|
+
activeColor?: string;
|
|
359
|
+
className?: string;
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* 하단 언더라인 인디케이터 탭 (콘텐츠 필터용) — 하단 내비 TabBar와 별개.
|
|
363
|
+
* SegmentedControl(박스형)과 달리 미디어 앱의 카테고리 탭 UX.
|
|
364
|
+
*
|
|
365
|
+
* @example
|
|
366
|
+
* <UnderlineTabs tabs={[{ id: "all", label: "전체" }, { id: "music", label: "음악" }]}
|
|
367
|
+
* active={tab} onChange={setTab} sticky />
|
|
368
|
+
*/
|
|
369
|
+
declare function UnderlineTabs<T extends string>({ tabs, active, onChange, sticky, compact, activeColor, className, }: UnderlineTabsProps<T>): react_jsx_runtime.JSX.Element;
|
|
370
|
+
|
|
307
371
|
interface SectionProps {
|
|
308
372
|
children: ReactNode;
|
|
309
373
|
className?: string;
|
|
@@ -419,12 +483,7 @@ interface WatermarkProps {
|
|
|
419
483
|
total?: number;
|
|
420
484
|
};
|
|
421
485
|
}
|
|
422
|
-
/**
|
|
423
|
-
* Full-screen colored background with repeating animated text watermark pattern.
|
|
424
|
-
*
|
|
425
|
-
* Renders as a single SVG element with a <pattern> — zero extra DOM nodes per tile.
|
|
426
|
-
* Sponsor tiles inside the pattern are clickable and support hover effects.
|
|
427
|
-
*/
|
|
486
|
+
/** Estimate rendered width of a string. CJK chars ≈ 1.0×, Latin ≈ 0.62× font size. */
|
|
428
487
|
declare function Watermark({ children, color, text, maxWidth, sponsor, speed, hidePoweredBy, trackSlug, track, claimed, counts, }: WatermarkProps): react_jsx_runtime.JSX.Element;
|
|
429
488
|
|
|
430
489
|
declare const colors: {
|
|
@@ -1168,18 +1227,6 @@ interface StepperProps {
|
|
|
1168
1227
|
accent?: string;
|
|
1169
1228
|
className?: string;
|
|
1170
1229
|
}
|
|
1171
|
-
/**
|
|
1172
|
-
* Horizontal multi-step progress indicator with connectors. Steps before the
|
|
1173
|
-
* cursor show a check, the current step is highlighted, the rest are muted.
|
|
1174
|
-
* Great for wizards, multi-phase flows, and onboarding.
|
|
1175
|
-
*
|
|
1176
|
-
* @example
|
|
1177
|
-
* <Stepper current={phase} onStepClick={setPhase} steps={[
|
|
1178
|
-
* { label: "분석", icon: "📝" },
|
|
1179
|
-
* { label: "준비", icon: "📸" },
|
|
1180
|
-
* { label: "생성", icon: "✨" },
|
|
1181
|
-
* ]} />
|
|
1182
|
-
*/
|
|
1183
1230
|
declare function Stepper({ steps, current, completedThrough, onStepClick, accent, className, }: StepperProps): react_jsx_runtime.JSX.Element;
|
|
1184
1231
|
|
|
1185
1232
|
interface CollapsibleProps {
|
|
@@ -1201,17 +1248,6 @@ interface CollapsibleProps {
|
|
|
1201
1248
|
children: ReactNode;
|
|
1202
1249
|
className?: string;
|
|
1203
1250
|
}
|
|
1204
|
-
/**
|
|
1205
|
-
* Collapsible card with a header (leading marker, title, optional subtitle/badge)
|
|
1206
|
-
* and a body that shows when `open`. State-aware styling for expanded/completed.
|
|
1207
|
-
* Good for step lists, accordions, and disclosure sections.
|
|
1208
|
-
*
|
|
1209
|
-
* @example
|
|
1210
|
-
* <Collapsible leading={1} title="페르소나 분석" subtitle="스타일 파악"
|
|
1211
|
-
* open={open === 1} onToggle={() => setOpen(open === 1 ? null : 1)} completed>
|
|
1212
|
-
* <p>…</p>
|
|
1213
|
-
* </Collapsible>
|
|
1214
|
-
*/
|
|
1215
1251
|
declare function Collapsible({ title, subtitle, badge, leading, open, onToggle, completed, optionalTag, accent, children, className, }: CollapsibleProps): react_jsx_runtime.JSX.Element;
|
|
1216
1252
|
|
|
1217
1253
|
/**
|
|
@@ -1494,6 +1530,18 @@ interface UsePWAInstallReturn {
|
|
|
1494
1530
|
}
|
|
1495
1531
|
declare function usePWAInstall(): UsePWAInstallReturn;
|
|
1496
1532
|
|
|
1533
|
+
interface IOSInstallSheetProps {
|
|
1534
|
+
open: boolean;
|
|
1535
|
+
onClose(): void;
|
|
1536
|
+
appName: string;
|
|
1537
|
+
iconSrc?: string;
|
|
1538
|
+
}
|
|
1539
|
+
/**
|
|
1540
|
+
* Bottom-sheet guide for iOS "Add to Home Screen".
|
|
1541
|
+
* Can also be used standalone if you need custom trigger UI.
|
|
1542
|
+
*/
|
|
1543
|
+
declare function IOSInstallSheet({ open, onClose, appName, iconSrc }: IOSInstallSheetProps): react_jsx_runtime.JSX.Element | null;
|
|
1544
|
+
|
|
1497
1545
|
interface PWAInstallButtonProps {
|
|
1498
1546
|
/** App name shown in iOS guide sheet */
|
|
1499
1547
|
appName?: string;
|
|
@@ -1517,17 +1565,6 @@ interface PWAInstallButtonProps {
|
|
|
1517
1565
|
* <PWAInstallButton appName="My App" iconSrc="/icon.png" />
|
|
1518
1566
|
*/
|
|
1519
1567
|
declare function PWAInstallButton({ appName, iconSrc, label, installedLabel, className, }: PWAInstallButtonProps): react_jsx_runtime.JSX.Element | null;
|
|
1520
|
-
interface IOSInstallSheetProps {
|
|
1521
|
-
open: boolean;
|
|
1522
|
-
onClose(): void;
|
|
1523
|
-
appName: string;
|
|
1524
|
-
iconSrc?: string;
|
|
1525
|
-
}
|
|
1526
|
-
/**
|
|
1527
|
-
* Bottom-sheet guide for iOS "Add to Home Screen".
|
|
1528
|
-
* Can also be used standalone if you need custom trigger UI.
|
|
1529
|
-
*/
|
|
1530
|
-
declare function IOSInstallSheet({ open, onClose, appName, iconSrc }: IOSInstallSheetProps): react_jsx_runtime.JSX.Element | null;
|
|
1531
1568
|
|
|
1532
1569
|
/**
|
|
1533
1570
|
* Drop into <head> in your root layout to pre-load kit styles and
|
|
@@ -1709,5 +1746,19 @@ interface DateCount {
|
|
|
1709
1746
|
* // [{date:"2026-07-01",count:0}, …, {date:"2026-07-06",count:3}, {date:"2026-07-07",count:0}]
|
|
1710
1747
|
*/
|
|
1711
1748
|
declare function fillDateSeries(daily: DateCount[], days: number, timeZone?: string): DateCount[];
|
|
1749
|
+
/**
|
|
1750
|
+
* 한국식 수 축약 (내림). 조회수·좋아요 표기용 — 단위는 호출부에서
|
|
1751
|
+
* `${formatKoreanNumber(n)}회`처럼 붙인다.
|
|
1752
|
+
*/
|
|
1753
|
+
declare function formatKoreanNumber(n: number | string): string;
|
|
1754
|
+
interface IsoDuration {
|
|
1755
|
+
hours: number;
|
|
1756
|
+
minutes: number;
|
|
1757
|
+
seconds: number;
|
|
1758
|
+
}
|
|
1759
|
+
/** "PT1H2M3S" → { hours: 1, minutes: 2, seconds: 3 } */
|
|
1760
|
+
declare function parseIsoDuration(duration: string): IsoDuration;
|
|
1761
|
+
/** "PT1H2M3S" → 3723 (초) */
|
|
1762
|
+
declare function isoDurationToSec(duration: string): number;
|
|
1712
1763
|
|
|
1713
|
-
export { ActionCard, type ActionCardLabels, type ActionCardProps, type ActionCardState, type ApiClient, type ApiClientOptions, ApiError, AppShell, AppShellContent, type AppShellContentProps, AppShellHeader, type AppShellHeaderProps, type AppShellProps, AsyncList, type AsyncListProps, type AsyncListStatus, Avatar, type AvatarProps, Badge, type BadgeProps, BarList, type BarListItem, type BarListProps, Button, type ButtonProps, Carousel, type CarouselProps, ChatBubble, type ChatBubbleProps, type ChatMessage, type ChatRole, CodeBlock, type CodeBlockProps, Collapsible, type CollapsibleProps, type ColorName, ColorPicker, type ColorPickerProps, CopyButton, type CopyButtonProps, Countdown, type CountdownLabels, type CountdownProps, type DateCount, type DayGroup, Dialog, type DialogProps, Divider, type DividerProps, EmojiButton, type EmojiButtonProps, EmojiPicker, type EmojiPickerLabels, type EmojiPickerProps, EmptyState, type EmptyStateProps, Fab, type FabProps, FetchProgress, type FetchProgressProps, Field, type FieldProps, FontLinks, type FontName, GrassMap, type GrassMapData, type GrassMapLabels, type GrassMapProps, IOSInstallSheet, IconButton, type IconButtonProps, Img, type ImgProps, InAppSheet, type InAppSheetProps, InlineEdit, type InlineEditProps, Input, type InputProps, KitStyles, LinkifiedText, type LinkifiedTextProps, ListRow, type ListRowProps, MessageList, type MessageListProps, PWAInstallButton, type PWAInstallState, PoweredByKit, type PoweredByKitProps, ProgressRing, type ProgressRingProps, Section, SectionHeader, type SectionHeaderProps, type SectionProps, type SegmentOption, SegmentedControl, type SegmentedControlProps, Select, type SelectOption, type SelectProps, ShareButton, type ShareButtonProps, Skeleton, type SkeletonProps, StatChip, type StatChipProps, type Step, Stepper, type StepperProps, Switch, type SwitchProps, THEME_SCRIPT, Tab, TabBar, type TabBarProps, type TabProps, type TabRootProps, Textarea, type TextareaProps, ThemeButton, type ThemeButtonProps, ThemeDialog, type ThemeDialogLabels, type ThemeDialogProps, type ToastOptions, ToastProvider, type ToastVariant, Tooltip, type TooltipProps, Typewriter, type TypewriterProps, TypingIndicator, type TypingIndicatorProps, 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, fillDateSeries, fontFamily, fonts, formatDayLabel, formatDuration, formatNumber, formatPrice, getFetchActiveCount, groupByDay, invalidateFetch, mobileViewport, postJson, relativeTime, subscribeFetchActivity, svgIcon, useCopy, useDebounce, useEscapeKey, useFetch, useFocusTrap, useFormSubmit, useImageLoader, useInView, useLocalStorage, usePWAInstall, usePolling, usePortalTarget, useScrollLock, useShare, useToast };
|
|
1764
|
+
export { ActionCard, type ActionCardLabels, type ActionCardProps, type ActionCardState, type ApiClient, type ApiClientOptions, ApiError, AppShell, AppShellContent, type AppShellContentProps, AppShellHeader, type AppShellHeaderProps, type AppShellProps, AsyncList, type AsyncListProps, type AsyncListStatus, Avatar, type AvatarProps, Badge, type BadgeProps, BarList, type BarListItem, type BarListProps, Button, type ButtonProps, Carousel, type CarouselProps, ChatBubble, type ChatBubbleProps, type ChatMessage, type ChatRole, CodeBlock, type CodeBlockProps, Collapsible, type CollapsibleProps, type ColorName, ColorPicker, type ColorPickerProps, CopyButton, type CopyButtonProps, Countdown, type CountdownLabels, type CountdownProps, type DateCount, type DayGroup, Dialog, type DialogProps, Divider, type DividerProps, EmojiButton, type EmojiButtonProps, EmojiPicker, type EmojiPickerLabels, type EmojiPickerProps, EmptyState, type EmptyStateProps, Fab, type FabProps, FetchProgress, type FetchProgressProps, Field, type FieldProps, FontLinks, type FontName, GrassMap, type GrassMapData, type GrassMapLabels, type GrassMapProps, IOSInstallSheet, IconButton, type IconButtonProps, Img, type ImgProps, InAppSheet, type InAppSheetProps, InlineEdit, type InlineEditProps, Input, type InputProps, type IsoDuration, KitStyles, LinkifiedText, type LinkifiedTextProps, ListRow, type ListRowProps, MediaCard, type MediaCardProps, MessageList, type MessageListProps, PWAInstallButton, type PWAInstallState, PoweredByKit, type PoweredByKitProps, ProgressRing, type ProgressRingProps, Section, SectionHeader, type SectionHeaderProps, type SectionProps, type SegmentOption, SegmentedControl, type SegmentedControlProps, Select, type SelectOption, type SelectProps, ShareButton, type ShareButtonProps, Skeleton, type SkeletonProps, StatChip, type StatChipProps, type Step, Stepper, type StepperProps, Switch, type SwitchProps, THEME_SCRIPT, Tab, TabBar, type TabBarProps, type TabProps, type TabRootProps, Textarea, type TextareaProps, ThemeButton, type ThemeButtonProps, ThemeDialog, type ThemeDialogLabels, type ThemeDialogProps, type ToastOptions, ToastProvider, type ToastVariant, Tooltip, type TooltipProps, Typewriter, type TypewriterProps, TypingIndicator, type TypingIndicatorProps, type UnderlineTab, UnderlineTabs, type UnderlineTabsProps, 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, fillDateSeries, fontFamily, fonts, formatDayLabel, formatDuration, formatKoreanNumber, formatNumber, formatPrice, getFetchActiveCount, groupByDay, invalidateFetch, isoDurationToSec, mobileViewport, parseIsoDuration, postJson, relativeTime, subscribeFetchActivity, svgIcon, useCopy, useDebounce, useEscapeKey, useFetch, useFocusTrap, useFormSubmit, useImageLoader, useInView, useLocalStorage, usePWAInstall, usePolling, usePortalTarget, useScrollLock, useShare, useToast };
|