@m1kapp/kit 0.0.44 → 0.0.46
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/index.d.mts +148 -2
- package/dist/index.d.ts +148 -2
- package/dist/index.js +4 -4
- package/dist/index.mjs +4 -4
- package/dist/meta.json +114 -6
- package/dist/next.d.mts +23 -0
- package/dist/next.d.ts +23 -0
- package/dist/next.js +2 -0
- package/dist/next.mjs +2 -0
- package/dist/pwa.js +2 -2
- package/dist/pwa.mjs +2 -2
- package/dist/styles.css +1 -1
- package/dist/utils.d.mts +43 -1
- package/dist/utils.d.ts +43 -1
- package/dist/utils.js +1 -1
- package/dist/utils.mjs +1 -1
- package/package.json +6 -1
package/dist/index.d.mts
CHANGED
|
@@ -774,13 +774,20 @@ type AvatarSize = "xs" | "sm" | "md" | "lg" | "xl";
|
|
|
774
774
|
type AvatarShape = "circle" | "rounded";
|
|
775
775
|
interface AvatarProps {
|
|
776
776
|
src?: string;
|
|
777
|
+
/**
|
|
778
|
+
* 순서대로 시도할 후보 URL 목록. 첫 장이 죽으면 다음 장으로 넘어가고,
|
|
779
|
+
* 전부 실패해야 이니셜 폴백이 뜬다. src 보다 우선한다.
|
|
780
|
+
*/
|
|
781
|
+
candidates?: string[];
|
|
777
782
|
fallback: string;
|
|
778
783
|
size?: AvatarSize;
|
|
779
784
|
shape?: AvatarShape;
|
|
780
785
|
color?: string;
|
|
786
|
+
/** 그라데이션 링. 프로필·계정 아바타를 눈에 띄게 세울 때. */
|
|
787
|
+
ring?: boolean;
|
|
781
788
|
className?: string;
|
|
782
789
|
}
|
|
783
|
-
declare function Avatar({ src, fallback, size, shape, color, className, }: AvatarProps): react_jsx_runtime.JSX.Element;
|
|
790
|
+
declare function Avatar({ src, candidates, fallback, size, shape, color, ring, className, }: AvatarProps): react_jsx_runtime.JSX.Element;
|
|
784
791
|
|
|
785
792
|
type BadgeVariant = "default" | "green" | "red" | "yellow" | "blue" | "purple" | "orange";
|
|
786
793
|
type BadgeSize = "sm" | "md";
|
|
@@ -1588,6 +1595,103 @@ interface CarouselProps {
|
|
|
1588
1595
|
*/
|
|
1589
1596
|
declare function Carousel({ count, index, onChange, children, loop, showArrows, showDots, accent, className, }: CarouselProps): react_jsx_runtime.JSX.Element;
|
|
1590
1597
|
|
|
1598
|
+
interface EvidenceDialogProps {
|
|
1599
|
+
open: boolean;
|
|
1600
|
+
onClose: () => void;
|
|
1601
|
+
/** 어느 항목의 근거인지 — 다이얼로그 제목. 예: "카카오 → SM" */
|
|
1602
|
+
heading?: string;
|
|
1603
|
+
/** 그 값 자체. 예: "인수금액 1.25조 원 · 지분 39.9%" */
|
|
1604
|
+
title: ReactNode;
|
|
1605
|
+
/** 원문에서 그 값이 나온 대목(인용). */
|
|
1606
|
+
quote?: ReactNode;
|
|
1607
|
+
/** 그 값을 그대로 믿기 전에 알아야 할 것. */
|
|
1608
|
+
note?: ReactNode;
|
|
1609
|
+
/** 원문 주소. */
|
|
1610
|
+
source?: string;
|
|
1611
|
+
/** 원문 링크 라벨. 기본: 그림이 있으면 "원문 ↗", 없으면 "그 값이 적힌 원문 ↗" */
|
|
1612
|
+
sourceLabel?: string;
|
|
1613
|
+
/** 그 값이 적힌 자리를 찍은 그림. */
|
|
1614
|
+
imageSrc?: string;
|
|
1615
|
+
imageAlt?: string;
|
|
1616
|
+
/** 그림도 주소도 없을 때 대신 보일 말. 기본: "원문 그림이 아직 없다" */
|
|
1617
|
+
emptyLabel?: string;
|
|
1618
|
+
}
|
|
1619
|
+
/**
|
|
1620
|
+
* 숫자 하나의 근거. 값을 눌렀을 때 인용문·캡처 그림·원문 링크가 뜬다.
|
|
1621
|
+
*
|
|
1622
|
+
* "이 숫자 어디서 왔나"를 화면에서 바로 보여 주는 증거 기반 앱들의 공통 골격 —
|
|
1623
|
+
* nlnn 의 값 다이얼로그, median-income-calc 의 정확도 안내가 전부 이 모양이었다.
|
|
1624
|
+
* 링크만 걸어 두면 원문이 바뀌거나 사라졌을 때 무엇을 보고 적었는지 알 길이
|
|
1625
|
+
* 없으므로, 그림(캡처)을 함께 두는 것을 권한다.
|
|
1626
|
+
*/
|
|
1627
|
+
declare function EvidenceDialog({ open, onClose, heading, title, quote, note, source, sourceLabel, imageSrc, imageAlt, emptyLabel, }: EvidenceDialogProps): react_jsx_runtime.JSX.Element;
|
|
1628
|
+
|
|
1629
|
+
interface ColumnDatum {
|
|
1630
|
+
/** 축 라벨. weekday 를 켜면 ISO 날짜("2026-09-03")로 요일을 그린다. */
|
|
1631
|
+
label: string;
|
|
1632
|
+
value: number;
|
|
1633
|
+
/** 이 막대만 다른 색. */
|
|
1634
|
+
color?: string;
|
|
1635
|
+
/** 아직 오지 않은 구간(예측). 반투명하게 그리고 경계에 점선을 세운다. */
|
|
1636
|
+
projected?: boolean;
|
|
1637
|
+
}
|
|
1638
|
+
interface ColumnChartProps {
|
|
1639
|
+
data: ColumnDatum[];
|
|
1640
|
+
/** 막대 색. 기본: var(--kit-accent) */
|
|
1641
|
+
color?: string;
|
|
1642
|
+
/** 실측 구간 평균에 점선을 긋는다. */
|
|
1643
|
+
showAverage?: boolean;
|
|
1644
|
+
averageLabel?: string;
|
|
1645
|
+
/** 평균·타이틀 표기용 포맷터. */
|
|
1646
|
+
format?: (n: number) => string;
|
|
1647
|
+
/** 축 라벨을 "일 + 요일 첫 글자"로 그린다(label 이 ISO 날짜일 때). */
|
|
1648
|
+
weekday?: boolean;
|
|
1649
|
+
/** 예측 경계 라벨. 기본: "예상 →" */
|
|
1650
|
+
projectedLabel?: string;
|
|
1651
|
+
height?: number;
|
|
1652
|
+
className?: string;
|
|
1653
|
+
}
|
|
1654
|
+
/** 세로 막대 + 평균선 + 예측 구간. 일별·주별 사용량류에 맞다. */
|
|
1655
|
+
declare function ColumnChart({ data, color, showAverage, averageLabel, format, weekday, projectedLabel, height, className, }: ColumnChartProps): react_jsx_runtime.JSX.Element | null;
|
|
1656
|
+
interface DuoBarSide {
|
|
1657
|
+
value: number;
|
|
1658
|
+
label: string;
|
|
1659
|
+
color: string;
|
|
1660
|
+
}
|
|
1661
|
+
interface DuoBarProps {
|
|
1662
|
+
/** 위에 서는 제목. 오른쪽에 합계가 붙는다. */
|
|
1663
|
+
title?: string;
|
|
1664
|
+
a: DuoBarSide;
|
|
1665
|
+
b: DuoBarSide;
|
|
1666
|
+
format?: (n: number) => string;
|
|
1667
|
+
className?: string;
|
|
1668
|
+
}
|
|
1669
|
+
/** 두 값의 비율 스택 바 + 하단 범례. 입력/출력·모바일/데스크톱 같은 2분할에. */
|
|
1670
|
+
declare function DuoBar({ title, a, b, format, className }: DuoBarProps): react_jsx_runtime.JSX.Element;
|
|
1671
|
+
interface CumulativeCurveProps {
|
|
1672
|
+
/** 일별 증가량(누적이 아니라 그날 값). */
|
|
1673
|
+
daily: {
|
|
1674
|
+
date: string;
|
|
1675
|
+
count: number;
|
|
1676
|
+
}[];
|
|
1677
|
+
/** 지금까지의 총합 — 마일스톤 달성 판정에 쓴다. */
|
|
1678
|
+
total: number;
|
|
1679
|
+
/** 오늘 값이 있으면 끝점에 라이브 점을 찍는다. */
|
|
1680
|
+
todayCount?: number;
|
|
1681
|
+
/** 곡선·면적 색. */
|
|
1682
|
+
accent?: string;
|
|
1683
|
+
/** 교차점 배지를 세울 마일스톤. */
|
|
1684
|
+
milestones?: {
|
|
1685
|
+
value: number;
|
|
1686
|
+
label: string;
|
|
1687
|
+
}[];
|
|
1688
|
+
/** 데이터가 없을 때 보일 말. */
|
|
1689
|
+
empty?: React.ReactNode;
|
|
1690
|
+
className?: string;
|
|
1691
|
+
}
|
|
1692
|
+
/** 누적 성장 곡선 + 마일스톤 배지 + 다음 목표선. 방문자·판매·적립 총량류에. */
|
|
1693
|
+
declare function CumulativeCurve({ daily, total, todayCount, accent, milestones, empty, className, }: CumulativeCurveProps): react_jsx_runtime.JSX.Element | null;
|
|
1694
|
+
|
|
1591
1695
|
type PWAInstallState = "android-ready" | "ios-safari" | "installed" | "unsupported";
|
|
1592
1696
|
interface UsePWAInstallReturn {
|
|
1593
1697
|
state: PWAInstallState;
|
|
@@ -1778,6 +1882,48 @@ interface UsePollingResult<T> {
|
|
|
1778
1882
|
}
|
|
1779
1883
|
declare function usePolling<T>(fetcher: () => Promise<T>, options?: UsePollingOptions<T>): UsePollingResult<T>;
|
|
1780
1884
|
|
|
1885
|
+
/** epoch → 한국 시각의 달력 부분을 UTC 게터(getUTCFullYear 등)로 읽을 수 있는 Date */
|
|
1886
|
+
declare function toKst(ms?: number): Date;
|
|
1887
|
+
/** 그 시각이 속한 한국 날짜의 00:00 epoch */
|
|
1888
|
+
declare function kstMidnight(ms?: number): number;
|
|
1889
|
+
/** 한국 기준 오늘 날짜 "2026-09-03" */
|
|
1890
|
+
declare function kstToday(ms?: number): string;
|
|
1891
|
+
/** 한국 시각 파츠 — { date: "2026-09-03", weekday: "수", hhmm: "14:05" } */
|
|
1892
|
+
declare function kstNowParts(ms?: number): {
|
|
1893
|
+
date: string;
|
|
1894
|
+
weekday: string;
|
|
1895
|
+
hhmm: string;
|
|
1896
|
+
};
|
|
1897
|
+
/** epoch → 한국 기준 '일' 숫자 (날짜 스트립용) */
|
|
1898
|
+
declare function kstDayOfMonth(ms: number): number;
|
|
1899
|
+
/** 그 시각이 한국 기준 오늘인가 */
|
|
1900
|
+
declare function isKstToday(ms: number, now?: number): boolean;
|
|
1901
|
+
/** 이번주(월~일, 한국 달력) 시작 epoch — 이번주 월요일 00:00. weeksAgo=1 이면 지난주 */
|
|
1902
|
+
declare function startOfKstWeek(weeksAgo?: number, now?: number): number;
|
|
1903
|
+
/** weeksAgo → "7.6(월) ~ 7.12(일)" 주차 라벨 — 클라이언트·서버 공용 */
|
|
1904
|
+
declare function kstWeekLabel(weeksAgo?: number, now?: number): string;
|
|
1905
|
+
/** 그 주 월요일 시작 epoch → ISO 8601 { year, week }. 목요일이 속한 해가 ISO 연도 */
|
|
1906
|
+
declare function isoWeekOfStart(start: number): {
|
|
1907
|
+
year: number;
|
|
1908
|
+
week: number;
|
|
1909
|
+
};
|
|
1910
|
+
/** weeksAgo → "2026년 28주차" (ISO 8601 주번호) */
|
|
1911
|
+
declare function kstWeekTitle(weeksAgo?: number, now?: number): string;
|
|
1912
|
+
/** weeksAgo → URL 용 주차 키 "2026-28" */
|
|
1913
|
+
declare function kstWeekParam(weeksAgo?: number, now?: number): string;
|
|
1914
|
+
/** "2026-28" 주차 키 → weeksAgo. 형식이 안 맞으면 null */
|
|
1915
|
+
declare function weeksAgoFromKstWeekParam(param: string | null | undefined, now?: number): number | null;
|
|
1916
|
+
|
|
1917
|
+
/** 한글 음절을 초성으로 — "셀토스" → "ㅅㅌㅅ". 한글이 아니면 그대로 둔다. */
|
|
1918
|
+
declare function toChoseong(text: string): string;
|
|
1919
|
+
/**
|
|
1920
|
+
* 이름·브랜드를 부분일치로 찾는다. 질의가 초성만이면 초성끼리 비교한다.
|
|
1921
|
+
* 공백·점·하이픈은 무시한다. 빈 질의는 전부 통과.
|
|
1922
|
+
*
|
|
1923
|
+
* items.filter((c) => matchesQuery(q, c.name, c.brand, c.english))
|
|
1924
|
+
*/
|
|
1925
|
+
declare function matchesQuery(query: string, ...fields: (string | undefined)[]): boolean;
|
|
1926
|
+
|
|
1781
1927
|
declare function relativeTime(date: Date | string | number): string;
|
|
1782
1928
|
declare function formatNumber(n: number): string;
|
|
1783
1929
|
declare function formatPrice(amount: number, currency?: string, locale?: string): string;
|
|
@@ -1853,4 +1999,4 @@ declare function watermarkTint(accentHex: string, { saturation, lightness }?: {
|
|
|
1853
1999
|
lightness?: number | undefined;
|
|
1854
2000
|
}): string;
|
|
1855
2001
|
|
|
1856
|
-
export { APP_SHELL_HEADER_HEIGHT, 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, formatDollarEok, formatDuration, formatKoreanNumber, formatNumber, formatPrice, formatWon, formatWonTight, getFetchActiveCount, groupByDay, invalidateFetch, isoDurationToSec, mobileViewport, parseIsoDuration, particle, postJson, relativeTime, subscribeFetchActivity, svgIcon, useCopy, useDebounce, useEscapeKey, useFetch, useFocusTrap, useFormSubmit, useImageLoader, useInView, useLocalStorage, usePWAInstall, usePolling, usePortalTarget, useScrollLock, useShare, useToast, watermarkTint, withParticle };
|
|
2002
|
+
export { APP_SHELL_HEADER_HEIGHT, 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, ColumnChart, type ColumnChartProps, type ColumnDatum, CopyButton, type CopyButtonProps, Countdown, type CountdownLabels, type CountdownProps, CumulativeCurve, type CumulativeCurveProps, type DateCount, type DayGroup, Dialog, type DialogProps, Divider, type DividerProps, DuoBar, type DuoBarProps, type DuoBarSide, EmojiButton, type EmojiButtonProps, EmojiPicker, type EmojiPickerLabels, type EmojiPickerProps, EmptyState, type EmptyStateProps, EvidenceDialog, type EvidenceDialogProps, 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, formatDollarEok, formatDuration, formatKoreanNumber, formatNumber, formatPrice, formatWon, formatWonTight, getFetchActiveCount, groupByDay, invalidateFetch, isKstToday, isoDurationToSec, isoWeekOfStart, kstDayOfMonth, kstMidnight, kstNowParts, kstToday, kstWeekLabel, kstWeekParam, kstWeekTitle, matchesQuery, mobileViewport, parseIsoDuration, particle, postJson, relativeTime, startOfKstWeek, subscribeFetchActivity, svgIcon, toChoseong, toKst, useCopy, useDebounce, useEscapeKey, useFetch, useFocusTrap, useFormSubmit, useImageLoader, useInView, useLocalStorage, usePWAInstall, usePolling, usePortalTarget, useScrollLock, useShare, useToast, watermarkTint, weeksAgoFromKstWeekParam, withParticle };
|
package/dist/index.d.ts
CHANGED
|
@@ -774,13 +774,20 @@ type AvatarSize = "xs" | "sm" | "md" | "lg" | "xl";
|
|
|
774
774
|
type AvatarShape = "circle" | "rounded";
|
|
775
775
|
interface AvatarProps {
|
|
776
776
|
src?: string;
|
|
777
|
+
/**
|
|
778
|
+
* 순서대로 시도할 후보 URL 목록. 첫 장이 죽으면 다음 장으로 넘어가고,
|
|
779
|
+
* 전부 실패해야 이니셜 폴백이 뜬다. src 보다 우선한다.
|
|
780
|
+
*/
|
|
781
|
+
candidates?: string[];
|
|
777
782
|
fallback: string;
|
|
778
783
|
size?: AvatarSize;
|
|
779
784
|
shape?: AvatarShape;
|
|
780
785
|
color?: string;
|
|
786
|
+
/** 그라데이션 링. 프로필·계정 아바타를 눈에 띄게 세울 때. */
|
|
787
|
+
ring?: boolean;
|
|
781
788
|
className?: string;
|
|
782
789
|
}
|
|
783
|
-
declare function Avatar({ src, fallback, size, shape, color, className, }: AvatarProps): react_jsx_runtime.JSX.Element;
|
|
790
|
+
declare function Avatar({ src, candidates, fallback, size, shape, color, ring, className, }: AvatarProps): react_jsx_runtime.JSX.Element;
|
|
784
791
|
|
|
785
792
|
type BadgeVariant = "default" | "green" | "red" | "yellow" | "blue" | "purple" | "orange";
|
|
786
793
|
type BadgeSize = "sm" | "md";
|
|
@@ -1588,6 +1595,103 @@ interface CarouselProps {
|
|
|
1588
1595
|
*/
|
|
1589
1596
|
declare function Carousel({ count, index, onChange, children, loop, showArrows, showDots, accent, className, }: CarouselProps): react_jsx_runtime.JSX.Element;
|
|
1590
1597
|
|
|
1598
|
+
interface EvidenceDialogProps {
|
|
1599
|
+
open: boolean;
|
|
1600
|
+
onClose: () => void;
|
|
1601
|
+
/** 어느 항목의 근거인지 — 다이얼로그 제목. 예: "카카오 → SM" */
|
|
1602
|
+
heading?: string;
|
|
1603
|
+
/** 그 값 자체. 예: "인수금액 1.25조 원 · 지분 39.9%" */
|
|
1604
|
+
title: ReactNode;
|
|
1605
|
+
/** 원문에서 그 값이 나온 대목(인용). */
|
|
1606
|
+
quote?: ReactNode;
|
|
1607
|
+
/** 그 값을 그대로 믿기 전에 알아야 할 것. */
|
|
1608
|
+
note?: ReactNode;
|
|
1609
|
+
/** 원문 주소. */
|
|
1610
|
+
source?: string;
|
|
1611
|
+
/** 원문 링크 라벨. 기본: 그림이 있으면 "원문 ↗", 없으면 "그 값이 적힌 원문 ↗" */
|
|
1612
|
+
sourceLabel?: string;
|
|
1613
|
+
/** 그 값이 적힌 자리를 찍은 그림. */
|
|
1614
|
+
imageSrc?: string;
|
|
1615
|
+
imageAlt?: string;
|
|
1616
|
+
/** 그림도 주소도 없을 때 대신 보일 말. 기본: "원문 그림이 아직 없다" */
|
|
1617
|
+
emptyLabel?: string;
|
|
1618
|
+
}
|
|
1619
|
+
/**
|
|
1620
|
+
* 숫자 하나의 근거. 값을 눌렀을 때 인용문·캡처 그림·원문 링크가 뜬다.
|
|
1621
|
+
*
|
|
1622
|
+
* "이 숫자 어디서 왔나"를 화면에서 바로 보여 주는 증거 기반 앱들의 공통 골격 —
|
|
1623
|
+
* nlnn 의 값 다이얼로그, median-income-calc 의 정확도 안내가 전부 이 모양이었다.
|
|
1624
|
+
* 링크만 걸어 두면 원문이 바뀌거나 사라졌을 때 무엇을 보고 적었는지 알 길이
|
|
1625
|
+
* 없으므로, 그림(캡처)을 함께 두는 것을 권한다.
|
|
1626
|
+
*/
|
|
1627
|
+
declare function EvidenceDialog({ open, onClose, heading, title, quote, note, source, sourceLabel, imageSrc, imageAlt, emptyLabel, }: EvidenceDialogProps): react_jsx_runtime.JSX.Element;
|
|
1628
|
+
|
|
1629
|
+
interface ColumnDatum {
|
|
1630
|
+
/** 축 라벨. weekday 를 켜면 ISO 날짜("2026-09-03")로 요일을 그린다. */
|
|
1631
|
+
label: string;
|
|
1632
|
+
value: number;
|
|
1633
|
+
/** 이 막대만 다른 색. */
|
|
1634
|
+
color?: string;
|
|
1635
|
+
/** 아직 오지 않은 구간(예측). 반투명하게 그리고 경계에 점선을 세운다. */
|
|
1636
|
+
projected?: boolean;
|
|
1637
|
+
}
|
|
1638
|
+
interface ColumnChartProps {
|
|
1639
|
+
data: ColumnDatum[];
|
|
1640
|
+
/** 막대 색. 기본: var(--kit-accent) */
|
|
1641
|
+
color?: string;
|
|
1642
|
+
/** 실측 구간 평균에 점선을 긋는다. */
|
|
1643
|
+
showAverage?: boolean;
|
|
1644
|
+
averageLabel?: string;
|
|
1645
|
+
/** 평균·타이틀 표기용 포맷터. */
|
|
1646
|
+
format?: (n: number) => string;
|
|
1647
|
+
/** 축 라벨을 "일 + 요일 첫 글자"로 그린다(label 이 ISO 날짜일 때). */
|
|
1648
|
+
weekday?: boolean;
|
|
1649
|
+
/** 예측 경계 라벨. 기본: "예상 →" */
|
|
1650
|
+
projectedLabel?: string;
|
|
1651
|
+
height?: number;
|
|
1652
|
+
className?: string;
|
|
1653
|
+
}
|
|
1654
|
+
/** 세로 막대 + 평균선 + 예측 구간. 일별·주별 사용량류에 맞다. */
|
|
1655
|
+
declare function ColumnChart({ data, color, showAverage, averageLabel, format, weekday, projectedLabel, height, className, }: ColumnChartProps): react_jsx_runtime.JSX.Element | null;
|
|
1656
|
+
interface DuoBarSide {
|
|
1657
|
+
value: number;
|
|
1658
|
+
label: string;
|
|
1659
|
+
color: string;
|
|
1660
|
+
}
|
|
1661
|
+
interface DuoBarProps {
|
|
1662
|
+
/** 위에 서는 제목. 오른쪽에 합계가 붙는다. */
|
|
1663
|
+
title?: string;
|
|
1664
|
+
a: DuoBarSide;
|
|
1665
|
+
b: DuoBarSide;
|
|
1666
|
+
format?: (n: number) => string;
|
|
1667
|
+
className?: string;
|
|
1668
|
+
}
|
|
1669
|
+
/** 두 값의 비율 스택 바 + 하단 범례. 입력/출력·모바일/데스크톱 같은 2분할에. */
|
|
1670
|
+
declare function DuoBar({ title, a, b, format, className }: DuoBarProps): react_jsx_runtime.JSX.Element;
|
|
1671
|
+
interface CumulativeCurveProps {
|
|
1672
|
+
/** 일별 증가량(누적이 아니라 그날 값). */
|
|
1673
|
+
daily: {
|
|
1674
|
+
date: string;
|
|
1675
|
+
count: number;
|
|
1676
|
+
}[];
|
|
1677
|
+
/** 지금까지의 총합 — 마일스톤 달성 판정에 쓴다. */
|
|
1678
|
+
total: number;
|
|
1679
|
+
/** 오늘 값이 있으면 끝점에 라이브 점을 찍는다. */
|
|
1680
|
+
todayCount?: number;
|
|
1681
|
+
/** 곡선·면적 색. */
|
|
1682
|
+
accent?: string;
|
|
1683
|
+
/** 교차점 배지를 세울 마일스톤. */
|
|
1684
|
+
milestones?: {
|
|
1685
|
+
value: number;
|
|
1686
|
+
label: string;
|
|
1687
|
+
}[];
|
|
1688
|
+
/** 데이터가 없을 때 보일 말. */
|
|
1689
|
+
empty?: React.ReactNode;
|
|
1690
|
+
className?: string;
|
|
1691
|
+
}
|
|
1692
|
+
/** 누적 성장 곡선 + 마일스톤 배지 + 다음 목표선. 방문자·판매·적립 총량류에. */
|
|
1693
|
+
declare function CumulativeCurve({ daily, total, todayCount, accent, milestones, empty, className, }: CumulativeCurveProps): react_jsx_runtime.JSX.Element | null;
|
|
1694
|
+
|
|
1591
1695
|
type PWAInstallState = "android-ready" | "ios-safari" | "installed" | "unsupported";
|
|
1592
1696
|
interface UsePWAInstallReturn {
|
|
1593
1697
|
state: PWAInstallState;
|
|
@@ -1778,6 +1882,48 @@ interface UsePollingResult<T> {
|
|
|
1778
1882
|
}
|
|
1779
1883
|
declare function usePolling<T>(fetcher: () => Promise<T>, options?: UsePollingOptions<T>): UsePollingResult<T>;
|
|
1780
1884
|
|
|
1885
|
+
/** epoch → 한국 시각의 달력 부분을 UTC 게터(getUTCFullYear 등)로 읽을 수 있는 Date */
|
|
1886
|
+
declare function toKst(ms?: number): Date;
|
|
1887
|
+
/** 그 시각이 속한 한국 날짜의 00:00 epoch */
|
|
1888
|
+
declare function kstMidnight(ms?: number): number;
|
|
1889
|
+
/** 한국 기준 오늘 날짜 "2026-09-03" */
|
|
1890
|
+
declare function kstToday(ms?: number): string;
|
|
1891
|
+
/** 한국 시각 파츠 — { date: "2026-09-03", weekday: "수", hhmm: "14:05" } */
|
|
1892
|
+
declare function kstNowParts(ms?: number): {
|
|
1893
|
+
date: string;
|
|
1894
|
+
weekday: string;
|
|
1895
|
+
hhmm: string;
|
|
1896
|
+
};
|
|
1897
|
+
/** epoch → 한국 기준 '일' 숫자 (날짜 스트립용) */
|
|
1898
|
+
declare function kstDayOfMonth(ms: number): number;
|
|
1899
|
+
/** 그 시각이 한국 기준 오늘인가 */
|
|
1900
|
+
declare function isKstToday(ms: number, now?: number): boolean;
|
|
1901
|
+
/** 이번주(월~일, 한국 달력) 시작 epoch — 이번주 월요일 00:00. weeksAgo=1 이면 지난주 */
|
|
1902
|
+
declare function startOfKstWeek(weeksAgo?: number, now?: number): number;
|
|
1903
|
+
/** weeksAgo → "7.6(월) ~ 7.12(일)" 주차 라벨 — 클라이언트·서버 공용 */
|
|
1904
|
+
declare function kstWeekLabel(weeksAgo?: number, now?: number): string;
|
|
1905
|
+
/** 그 주 월요일 시작 epoch → ISO 8601 { year, week }. 목요일이 속한 해가 ISO 연도 */
|
|
1906
|
+
declare function isoWeekOfStart(start: number): {
|
|
1907
|
+
year: number;
|
|
1908
|
+
week: number;
|
|
1909
|
+
};
|
|
1910
|
+
/** weeksAgo → "2026년 28주차" (ISO 8601 주번호) */
|
|
1911
|
+
declare function kstWeekTitle(weeksAgo?: number, now?: number): string;
|
|
1912
|
+
/** weeksAgo → URL 용 주차 키 "2026-28" */
|
|
1913
|
+
declare function kstWeekParam(weeksAgo?: number, now?: number): string;
|
|
1914
|
+
/** "2026-28" 주차 키 → weeksAgo. 형식이 안 맞으면 null */
|
|
1915
|
+
declare function weeksAgoFromKstWeekParam(param: string | null | undefined, now?: number): number | null;
|
|
1916
|
+
|
|
1917
|
+
/** 한글 음절을 초성으로 — "셀토스" → "ㅅㅌㅅ". 한글이 아니면 그대로 둔다. */
|
|
1918
|
+
declare function toChoseong(text: string): string;
|
|
1919
|
+
/**
|
|
1920
|
+
* 이름·브랜드를 부분일치로 찾는다. 질의가 초성만이면 초성끼리 비교한다.
|
|
1921
|
+
* 공백·점·하이픈은 무시한다. 빈 질의는 전부 통과.
|
|
1922
|
+
*
|
|
1923
|
+
* items.filter((c) => matchesQuery(q, c.name, c.brand, c.english))
|
|
1924
|
+
*/
|
|
1925
|
+
declare function matchesQuery(query: string, ...fields: (string | undefined)[]): boolean;
|
|
1926
|
+
|
|
1781
1927
|
declare function relativeTime(date: Date | string | number): string;
|
|
1782
1928
|
declare function formatNumber(n: number): string;
|
|
1783
1929
|
declare function formatPrice(amount: number, currency?: string, locale?: string): string;
|
|
@@ -1853,4 +1999,4 @@ declare function watermarkTint(accentHex: string, { saturation, lightness }?: {
|
|
|
1853
1999
|
lightness?: number | undefined;
|
|
1854
2000
|
}): string;
|
|
1855
2001
|
|
|
1856
|
-
export { APP_SHELL_HEADER_HEIGHT, 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, formatDollarEok, formatDuration, formatKoreanNumber, formatNumber, formatPrice, formatWon, formatWonTight, getFetchActiveCount, groupByDay, invalidateFetch, isoDurationToSec, mobileViewport, parseIsoDuration, particle, postJson, relativeTime, subscribeFetchActivity, svgIcon, useCopy, useDebounce, useEscapeKey, useFetch, useFocusTrap, useFormSubmit, useImageLoader, useInView, useLocalStorage, usePWAInstall, usePolling, usePortalTarget, useScrollLock, useShare, useToast, watermarkTint, withParticle };
|
|
2002
|
+
export { APP_SHELL_HEADER_HEIGHT, 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, ColumnChart, type ColumnChartProps, type ColumnDatum, CopyButton, type CopyButtonProps, Countdown, type CountdownLabels, type CountdownProps, CumulativeCurve, type CumulativeCurveProps, type DateCount, type DayGroup, Dialog, type DialogProps, Divider, type DividerProps, DuoBar, type DuoBarProps, type DuoBarSide, EmojiButton, type EmojiButtonProps, EmojiPicker, type EmojiPickerLabels, type EmojiPickerProps, EmptyState, type EmptyStateProps, EvidenceDialog, type EvidenceDialogProps, 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, formatDollarEok, formatDuration, formatKoreanNumber, formatNumber, formatPrice, formatWon, formatWonTight, getFetchActiveCount, groupByDay, invalidateFetch, isKstToday, isoDurationToSec, isoWeekOfStart, kstDayOfMonth, kstMidnight, kstNowParts, kstToday, kstWeekLabel, kstWeekParam, kstWeekTitle, matchesQuery, mobileViewport, parseIsoDuration, particle, postJson, relativeTime, startOfKstWeek, subscribeFetchActivity, svgIcon, toChoseong, toKst, useCopy, useDebounce, useEscapeKey, useFetch, useFocusTrap, useFormSubmit, useImageLoader, useInView, useLocalStorage, usePWAInstall, usePolling, usePortalTarget, useScrollLock, useShare, useToast, watermarkTint, weeksAgoFromKstWeekParam, withParticle };
|