@proofhound/ui 0.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/LICENSE +190 -0
- package/dist/brand/index.d.ts +2 -0
- package/dist/brand/index.d.ts.map +1 -0
- package/dist/brand/index.js +2 -0
- package/dist/brand/index.js.map +1 -0
- package/dist/brand/proofhound-logo.d.ts +21 -0
- package/dist/brand/proofhound-logo.d.ts.map +1 -0
- package/dist/brand/proofhound-logo.js +58 -0
- package/dist/brand/proofhound-logo.js.map +1 -0
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +2 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/use-mobile.d.ts +2 -0
- package/dist/hooks/use-mobile.d.ts.map +1 -0
- package/dist/hooks/use-mobile.js +20 -0
- package/dist/hooks/use-mobile.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/layout/index.d.ts +2 -0
- package/dist/layout/index.d.ts.map +1 -0
- package/dist/layout/index.js +2 -0
- package/dist/layout/index.js.map +1 -0
- package/dist/layout/main.d.ts +9 -0
- package/dist/layout/main.d.ts.map +1 -0
- package/dist/layout/main.js +6 -0
- package/dist/layout/main.js.map +1 -0
- package/dist/lib/index.d.ts +2 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +2 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/utils.d.ts +3 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +6 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/primitives/avatar.d.ts +7 -0
- package/dist/primitives/avatar.d.ts.map +1 -0
- package/dist/primitives/avatar.js +13 -0
- package/dist/primitives/avatar.js.map +1 -0
- package/dist/primitives/badge.d.ts +10 -0
- package/dist/primitives/badge.d.ts.map +1 -0
- package/dist/primitives/badge.js +21 -0
- package/dist/primitives/badge.js.map +1 -0
- package/dist/primitives/button.d.ts +12 -0
- package/dist/primitives/button.d.ts.map +1 -0
- package/dist/primitives/button.js +34 -0
- package/dist/primitives/button.js.map +1 -0
- package/dist/primitives/collapsible.d.ts +6 -0
- package/dist/primitives/collapsible.d.ts.map +1 -0
- package/dist/primitives/collapsible.js +7 -0
- package/dist/primitives/collapsible.js.map +1 -0
- package/dist/primitives/date-range-segmented.d.ts +50 -0
- package/dist/primitives/date-range-segmented.d.ts.map +1 -0
- package/dist/primitives/date-range-segmented.js +214 -0
- package/dist/primitives/date-range-segmented.js.map +1 -0
- package/dist/primitives/detail-page-skeleton.d.ts +9 -0
- package/dist/primitives/detail-page-skeleton.d.ts.map +1 -0
- package/dist/primitives/detail-page-skeleton.js +8 -0
- package/dist/primitives/detail-page-skeleton.js.map +1 -0
- package/dist/primitives/dialog.d.ts +20 -0
- package/dist/primitives/dialog.d.ts.map +1 -0
- package/dist/primitives/dialog.js +32 -0
- package/dist/primitives/dialog.js.map +1 -0
- package/dist/primitives/dropdown-menu.d.ts +28 -0
- package/dist/primitives/dropdown-menu.d.ts.map +1 -0
- package/dist/primitives/dropdown-menu.js +37 -0
- package/dist/primitives/dropdown-menu.js.map +1 -0
- package/dist/primitives/image-preview-dialog.d.ts +11 -0
- package/dist/primitives/image-preview-dialog.d.ts.map +1 -0
- package/dist/primitives/image-preview-dialog.js +34 -0
- package/dist/primitives/image-preview-dialog.js.map +1 -0
- package/dist/primitives/index.d.ts +32 -0
- package/dist/primitives/index.d.ts.map +1 -0
- package/dist/primitives/index.js +32 -0
- package/dist/primitives/index.js.map +1 -0
- package/dist/primitives/input.d.ts +4 -0
- package/dist/primitives/input.d.ts.map +1 -0
- package/dist/primitives/input.js +9 -0
- package/dist/primitives/input.js.map +1 -0
- package/dist/primitives/kanban-scroll-area.d.ts +5 -0
- package/dist/primitives/kanban-scroll-area.d.ts.map +1 -0
- package/dist/primitives/kanban-scroll-area.js +6 -0
- package/dist/primitives/kanban-scroll-area.js.map +1 -0
- package/dist/primitives/label.d.ts +6 -0
- package/dist/primitives/label.d.ts.map +1 -0
- package/dist/primitives/label.js +11 -0
- package/dist/primitives/label.js.map +1 -0
- package/dist/primitives/list-page-skeleton.d.ts +13 -0
- package/dist/primitives/list-page-skeleton.d.ts.map +1 -0
- package/dist/primitives/list-page-skeleton.js +11 -0
- package/dist/primitives/list-page-skeleton.js.map +1 -0
- package/dist/primitives/modality-icon.d.ts +22 -0
- package/dist/primitives/modality-icon.d.ts.map +1 -0
- package/dist/primitives/modality-icon.js +45 -0
- package/dist/primitives/modality-icon.js.map +1 -0
- package/dist/primitives/multi-select.d.ts +20 -0
- package/dist/primitives/multi-select.d.ts.map +1 -0
- package/dist/primitives/multi-select.js +60 -0
- package/dist/primitives/multi-select.js.map +1 -0
- package/dist/primitives/platform-loader.d.ts +18 -0
- package/dist/primitives/platform-loader.d.ts.map +1 -0
- package/dist/primitives/platform-loader.js +27 -0
- package/dist/primitives/platform-loader.js.map +1 -0
- package/dist/primitives/popover.d.ts +8 -0
- package/dist/primitives/popover.d.ts.map +1 -0
- package/dist/primitives/popover.js +12 -0
- package/dist/primitives/popover.js.map +1 -0
- package/dist/primitives/progress.d.ts +20 -0
- package/dist/primitives/progress.d.ts.map +1 -0
- package/dist/primitives/progress.js +28 -0
- package/dist/primitives/progress.js.map +1 -0
- package/dist/primitives/resource-pagination-footer.d.ts +13 -0
- package/dist/primitives/resource-pagination-footer.d.ts.map +1 -0
- package/dist/primitives/resource-pagination-footer.js +11 -0
- package/dist/primitives/resource-pagination-footer.js.map +1 -0
- package/dist/primitives/segmented.d.ts +15 -0
- package/dist/primitives/segmented.d.ts.map +1 -0
- package/dist/primitives/segmented.js +15 -0
- package/dist/primitives/segmented.js.map +1 -0
- package/dist/primitives/select.d.ts +14 -0
- package/dist/primitives/select.d.ts.map +1 -0
- package/dist/primitives/select.js +27 -0
- package/dist/primitives/select.js.map +1 -0
- package/dist/primitives/separator.d.ts +5 -0
- package/dist/primitives/separator.d.ts.map +1 -0
- package/dist/primitives/separator.js +9 -0
- package/dist/primitives/separator.js.map +1 -0
- package/dist/primitives/sheet.d.ts +27 -0
- package/dist/primitives/sheet.d.ts.map +1 -0
- package/dist/primitives/sheet.js +38 -0
- package/dist/primitives/sheet.js.map +1 -0
- package/dist/primitives/sidebar.d.ts +68 -0
- package/dist/primitives/sidebar.d.ts.map +1 -0
- package/dist/primitives/sidebar.js +224 -0
- package/dist/primitives/sidebar.js.map +1 -0
- package/dist/primitives/skeleton.d.ts +3 -0
- package/dist/primitives/skeleton.d.ts.map +1 -0
- package/dist/primitives/skeleton.js +7 -0
- package/dist/primitives/skeleton.js.map +1 -0
- package/dist/primitives/sliding-view-toggle.d.ts +14 -0
- package/dist/primitives/sliding-view-toggle.d.ts.map +1 -0
- package/dist/primitives/sliding-view-toggle.js +12 -0
- package/dist/primitives/sliding-view-toggle.js.map +1 -0
- package/dist/primitives/switch.d.ts +5 -0
- package/dist/primitives/switch.d.ts.map +1 -0
- package/dist/primitives/switch.js +9 -0
- package/dist/primitives/switch.js.map +1 -0
- package/dist/primitives/table-action.d.ts +52 -0
- package/dist/primitives/table-action.d.ts.map +1 -0
- package/dist/primitives/table-action.js +47 -0
- package/dist/primitives/table-action.js.map +1 -0
- package/dist/primitives/table.d.ts +78 -0
- package/dist/primitives/table.d.ts.map +1 -0
- package/dist/primitives/table.js +131 -0
- package/dist/primitives/table.js.map +1 -0
- package/dist/primitives/tooltip.d.ts +8 -0
- package/dist/primitives/tooltip.d.ts.map +1 -0
- package/dist/primitives/tooltip.js +12 -0
- package/dist/primitives/tooltip.js.map +1 -0
- package/dist/primitives/unused-images-badge.d.ts +9 -0
- package/dist/primitives/unused-images-badge.d.ts.map +1 -0
- package/dist/primitives/unused-images-badge.js +10 -0
- package/dist/primitives/unused-images-badge.js.map +1 -0
- package/dist/strings/index.d.ts +3 -0
- package/dist/strings/index.d.ts.map +1 -0
- package/dist/strings/index.js +2 -0
- package/dist/strings/index.js.map +1 -0
- package/dist/strings/ui-strings-context.d.ts +33 -0
- package/dist/strings/ui-strings-context.d.ts.map +1 -0
- package/dist/strings/ui-strings-context.js +19 -0
- package/dist/strings/ui-strings-context.js.map +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
|
|
3
|
+
const Collapsible = CollapsiblePrimitive.Root;
|
|
4
|
+
const CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;
|
|
5
|
+
const CollapsibleContent = CollapsiblePrimitive.CollapsibleContent;
|
|
6
|
+
export { Collapsible, CollapsibleTrigger, CollapsibleContent };
|
|
7
|
+
//# sourceMappingURL=collapsible.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collapsible.js","sourceRoot":"","sources":["../../src/primitives/collapsible.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,KAAK,oBAAoB,MAAM,6BAA6B,CAAA;AAEnE,MAAM,WAAW,GAAG,oBAAoB,CAAC,IAAI,CAAA;AAE7C,MAAM,kBAAkB,GAAG,oBAAoB,CAAC,kBAAkB,CAAA;AAElE,MAAM,kBAAkB,GAAG,oBAAoB,CAAC,kBAAkB,CAAA;AAElE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,CAAA"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export type DateRangePreset = 'h1' | 'h24' | 'd7' | 'd30' | 'custom';
|
|
2
|
+
export interface DateRangeValue {
|
|
3
|
+
preset: DateRangePreset;
|
|
4
|
+
from: string;
|
|
5
|
+
to: string;
|
|
6
|
+
}
|
|
7
|
+
export interface DateRangePresetOption {
|
|
8
|
+
value: DateRangePreset;
|
|
9
|
+
label: string;
|
|
10
|
+
}
|
|
11
|
+
export interface DateRangeSegmentedLabels {
|
|
12
|
+
ariaLabel: string;
|
|
13
|
+
customRangeAriaLabel: string;
|
|
14
|
+
fromLabel: string;
|
|
15
|
+
toLabel: string;
|
|
16
|
+
dateLabel: string;
|
|
17
|
+
timeLabel: string;
|
|
18
|
+
previousMonth: string;
|
|
19
|
+
nextMonth: string;
|
|
20
|
+
cancel: string;
|
|
21
|
+
apply: string;
|
|
22
|
+
invalidRange: string;
|
|
23
|
+
}
|
|
24
|
+
export interface LocalDateTimeParts {
|
|
25
|
+
date: string;
|
|
26
|
+
time: string;
|
|
27
|
+
}
|
|
28
|
+
export interface CalendarDay {
|
|
29
|
+
date: string;
|
|
30
|
+
day: number;
|
|
31
|
+
inCurrentMonth: boolean;
|
|
32
|
+
isToday: boolean;
|
|
33
|
+
}
|
|
34
|
+
export declare function resolveDateRangePreset(preset: DateRangePreset, now?: Date): {
|
|
35
|
+
from: string;
|
|
36
|
+
to: string;
|
|
37
|
+
} | null;
|
|
38
|
+
export declare function resolveRollingDateRangeValue(value: DateRangeValue, now?: Date): DateRangeValue;
|
|
39
|
+
export declare function DateRangeSegmented({ value, onChange, presetLabels, labels, locale, className, }: {
|
|
40
|
+
value: DateRangeValue;
|
|
41
|
+
onChange: (next: DateRangeValue) => void;
|
|
42
|
+
presetLabels?: ReadonlyArray<DateRangePresetOption>;
|
|
43
|
+
labels?: DateRangeSegmentedLabels;
|
|
44
|
+
locale?: string;
|
|
45
|
+
className?: string;
|
|
46
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
47
|
+
export declare function toLocalDateTimeParts(iso: string): LocalDateTimeParts;
|
|
48
|
+
export declare function localDateTimePartsToIso(parts: LocalDateTimeParts): string | null;
|
|
49
|
+
export declare function buildCalendarDays(month: Date): CalendarDay[];
|
|
50
|
+
//# sourceMappingURL=date-range-segmented.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-range-segmented.d.ts","sourceRoot":"","sources":["../../src/primitives/date-range-segmented.tsx"],"names":[],"mappings":"AAQA,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,QAAQ,CAAC;AAErE,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,eAAe,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,eAAe,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;CAClB;AAmCD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,eAAe,EACvB,GAAG,GAAE,IAAiB,GACrB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAWrC;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,cAAc,EACrB,GAAG,GAAE,IAAiB,GACrB,cAAc,CAGhB;AAED,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,QAAQ,EACR,YAAsB,EACtB,MAAuB,EACvB,MAAgB,EAChB,SAAS,GACV,EAAE;IACD,KAAK,EAAE,cAAc,CAAC;IACtB,QAAQ,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IACzC,YAAY,CAAC,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;IACpD,MAAM,CAAC,EAAE,wBAAwB,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,2CA0BA;AAqPD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAQpE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,GAAG,IAAI,CAkChF;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,GAAG,WAAW,EAAE,CAgB5D"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useMemo, useState } from 'react';
|
|
4
|
+
import { CalendarRange, ChevronLeft, ChevronRight, Clock } from 'lucide-react';
|
|
5
|
+
import { Popover, PopoverContent, PopoverTrigger } from './popover';
|
|
6
|
+
import { Segmented } from './segmented';
|
|
7
|
+
import { cn } from '../lib/utils';
|
|
8
|
+
const PRESETS = [
|
|
9
|
+
{ value: 'h1', label: '近 1 小时' },
|
|
10
|
+
{ value: 'h24', label: '近 24 小时' },
|
|
11
|
+
{ value: 'd7', label: '近 7 天' },
|
|
12
|
+
{ value: 'd30', label: '近 30 天' },
|
|
13
|
+
{ value: 'custom', label: '自定义' },
|
|
14
|
+
];
|
|
15
|
+
const DEFAULT_LABELS = {
|
|
16
|
+
ariaLabel: '时间范围',
|
|
17
|
+
customRangeAriaLabel: '自定义时间范围',
|
|
18
|
+
fromLabel: '开始',
|
|
19
|
+
toLabel: '结束',
|
|
20
|
+
dateLabel: '日期',
|
|
21
|
+
timeLabel: '时间',
|
|
22
|
+
previousMonth: '上个月',
|
|
23
|
+
nextMonth: '下个月',
|
|
24
|
+
cancel: '取消',
|
|
25
|
+
apply: '应用',
|
|
26
|
+
invalidRange: '结束时间必须晚于开始时间',
|
|
27
|
+
};
|
|
28
|
+
const WEEKDAY_REFERENCE_DATES = [
|
|
29
|
+
'2024-01-07T00:00:00',
|
|
30
|
+
'2024-01-08T00:00:00',
|
|
31
|
+
'2024-01-09T00:00:00',
|
|
32
|
+
'2024-01-10T00:00:00',
|
|
33
|
+
'2024-01-11T00:00:00',
|
|
34
|
+
'2024-01-12T00:00:00',
|
|
35
|
+
'2024-01-13T00:00:00',
|
|
36
|
+
];
|
|
37
|
+
// Compute [from, to) from a preset. to uses now to make monitoring display convenient
|
|
38
|
+
export function resolveDateRangePreset(preset, now = new Date()) {
|
|
39
|
+
if (preset === 'custom')
|
|
40
|
+
return null;
|
|
41
|
+
const ms = {
|
|
42
|
+
h1: 60 * 60_000,
|
|
43
|
+
h24: 24 * 60 * 60_000,
|
|
44
|
+
d7: 7 * 24 * 60 * 60_000,
|
|
45
|
+
d30: 30 * 24 * 60 * 60_000,
|
|
46
|
+
}[preset];
|
|
47
|
+
const to = now;
|
|
48
|
+
const from = new Date(to.getTime() - ms);
|
|
49
|
+
return { from: from.toISOString(), to: to.toISOString() };
|
|
50
|
+
}
|
|
51
|
+
export function resolveRollingDateRangeValue(value, now = new Date()) {
|
|
52
|
+
const resolved = resolveDateRangePreset(value.preset, now);
|
|
53
|
+
return resolved ? { preset: value.preset, ...resolved } : value;
|
|
54
|
+
}
|
|
55
|
+
export function DateRangeSegmented({ value, onChange, presetLabels = PRESETS, labels = DEFAULT_LABELS, locale = 'zh-CN', className, }) {
|
|
56
|
+
return (_jsxs("div", { className: cn('inline-flex items-center gap-2', className), children: [_jsx(Segmented, { ariaLabel: labels.ariaLabel, value: value.preset, options: presetLabels, onChange: (preset) => {
|
|
57
|
+
if (preset === 'custom') {
|
|
58
|
+
onChange({ ...value, preset });
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const resolved = resolveDateRangePreset(preset);
|
|
62
|
+
if (resolved)
|
|
63
|
+
onChange({ preset, ...resolved });
|
|
64
|
+
} }), value.preset === 'custom' && (_jsx(CustomRangePopover, { value: value, labels: labels, locale: locale, onChange: (from, to) => onChange({ preset: 'custom', from, to }) }))] }));
|
|
65
|
+
}
|
|
66
|
+
function CustomRangePopover({ value, labels, locale, onChange, }) {
|
|
67
|
+
const [open, setOpen] = useState(false);
|
|
68
|
+
const fromLabel = formatDisplay(value.from);
|
|
69
|
+
const toLabel = formatDisplay(value.to);
|
|
70
|
+
return (_jsxs(Popover, { open: open, onOpenChange: setOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs("button", { type: "button", "aria-label": labels.customRangeAriaLabel, className: "inline-flex h-8 max-w-[min(42rem,calc(100vw-2rem))] min-w-0 items-center gap-1.5 rounded-lg border bg-background px-2.5 text-[12.5px] font-medium text-foreground hover:bg-accent cursor-pointer", children: [_jsx(CalendarRange, { className: "size-3.5 shrink-0 text-muted-foreground" }), _jsxs("span", { className: "min-w-0 truncate font-mono", children: [fromLabel, " \u2192 ", toLabel] })] }) }), _jsx(PopoverContent, { align: "end", sideOffset: 6, className: "w-[calc(100vw-2rem)] p-3 sm:w-[640px]", children: open && (_jsx(CustomRangeForm, { initialFrom: value.from, initialTo: value.to, labels: labels, locale: locale, onCancel: () => setOpen(false), onApply: (from, to) => {
|
|
71
|
+
onChange(from, to);
|
|
72
|
+
setOpen(false);
|
|
73
|
+
} })) })] }));
|
|
74
|
+
}
|
|
75
|
+
function CustomRangeForm({ initialFrom, initialTo, labels, locale, onApply, onCancel, }) {
|
|
76
|
+
const [from, setFrom] = useState(() => toLocalDateTimeParts(initialFrom));
|
|
77
|
+
const [to, setTo] = useState(() => toLocalDateTimeParts(initialTo));
|
|
78
|
+
const [fromMonth, setFromMonth] = useState(() => monthStartFromParts(toLocalDateTimeParts(initialFrom)));
|
|
79
|
+
const [toMonth, setToMonth] = useState(() => monthStartFromParts(toLocalDateTimeParts(initialTo)));
|
|
80
|
+
const fromIso = localDateTimePartsToIso(from);
|
|
81
|
+
const toIso = localDateTimePartsToIso(to);
|
|
82
|
+
const hasRangeError = Boolean(fromIso && toIso && new Date(fromIso) >= new Date(toIso));
|
|
83
|
+
const canApply = Boolean(fromIso && toIso && !hasRangeError);
|
|
84
|
+
return (_jsxs("div", { className: "space-y-3", children: [_jsxs("div", { className: "grid gap-3 sm:grid-cols-2", children: [_jsx(CalendarPanel, { scope: "from", label: labels.fromLabel, labels: labels, locale: locale, parts: from, month: fromMonth, onMonthChange: setFromMonth, onDateChange: (date) => {
|
|
85
|
+
setFrom((prev) => ({ ...prev, date }));
|
|
86
|
+
setFromMonth(monthStartFromDateValue(date));
|
|
87
|
+
}, onTimeChange: (time) => setFrom((prev) => ({ ...prev, time })) }), _jsx(CalendarPanel, { scope: "to", label: labels.toLabel, labels: labels, locale: locale, parts: to, month: toMonth, onMonthChange: setToMonth, onDateChange: (date) => {
|
|
88
|
+
setTo((prev) => ({ ...prev, date }));
|
|
89
|
+
setToMonth(monthStartFromDateValue(date));
|
|
90
|
+
}, onTimeChange: (time) => setTo((prev) => ({ ...prev, time })) })] }), _jsxs("div", { className: "flex min-h-5 items-center justify-between gap-3", children: [_jsx("div", { className: "text-[12px] text-destructive", role: hasRangeError ? 'alert' : undefined, children: hasRangeError ? labels.invalidRange : null }), _jsxs("div", { className: "flex justify-end gap-2", children: [_jsx("button", { type: "button", onClick: onCancel, className: "rounded-md border bg-background px-3 py-1.5 text-[12.5px] text-muted-foreground hover:bg-accent cursor-pointer", children: labels.cancel }), _jsx("button", { type: "button", disabled: !canApply, onClick: () => {
|
|
91
|
+
if (fromIso && toIso && !hasRangeError)
|
|
92
|
+
onApply(fromIso, toIso);
|
|
93
|
+
}, className: "rounded-md bg-primary px-3 py-1.5 text-[12.5px] font-medium text-primary-foreground hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-50 cursor-pointer", children: labels.apply })] })] })] }));
|
|
94
|
+
}
|
|
95
|
+
function CalendarPanel({ scope, label, labels, locale, parts, month, onMonthChange, onDateChange, onTimeChange, }) {
|
|
96
|
+
const days = useMemo(() => buildCalendarDays(month), [month]);
|
|
97
|
+
const weekdayLabels = useMemo(() => buildWeekdayLabels(locale), [locale]);
|
|
98
|
+
return (_jsxs("section", { className: "rounded-lg border bg-background p-2.5", "aria-label": label, "data-testid": `date-range-panel-${scope}`, children: [_jsxs("div", { className: "mb-2 flex items-center justify-between gap-2", children: [_jsxs("div", { children: [_jsx("div", { className: "text-[12.5px] font-semibold text-foreground", children: label }), _jsx("div", { className: "font-mono text-[11px] text-muted-foreground", children: formatDisplayDate(parts.date) })] }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx("button", { type: "button", "aria-label": `${label} ${labels.previousMonth}`, onClick: () => onMonthChange(shiftMonth(month, -1)), className: "inline-flex size-7 items-center justify-center rounded-md text-muted-foreground hover:bg-accent hover:text-foreground cursor-pointer", children: _jsx(ChevronLeft, { className: "size-3.5" }) }), _jsx("div", { className: "min-w-24 text-center text-[12px] font-medium text-foreground", children: formatMonth(month, locale) }), _jsx("button", { type: "button", "aria-label": `${label} ${labels.nextMonth}`, onClick: () => onMonthChange(shiftMonth(month, 1)), className: "inline-flex size-7 items-center justify-center rounded-md text-muted-foreground hover:bg-accent hover:text-foreground cursor-pointer", children: _jsx(ChevronRight, { className: "size-3.5" }) })] })] }), _jsxs("div", { className: "grid grid-cols-7 gap-1", "data-testid": `date-range-calendar-${scope}`, children: [weekdayLabels.map((weekday, index) => (_jsx("div", { className: "h-6 text-center text-[11px] font-medium leading-6 text-muted-foreground", children: weekday }, WEEKDAY_REFERENCE_DATES[index]))), days.map((day) => {
|
|
99
|
+
const selected = day.date === parts.date;
|
|
100
|
+
return (_jsx("button", { type: "button", "aria-label": `${label} ${labels.dateLabel} ${formatDisplayDate(day.date)}`, "aria-pressed": selected, onClick: () => onDateChange(day.date), className: cn('inline-flex size-8 items-center justify-center rounded-md border text-[12px] font-medium transition-colors cursor-pointer', selected
|
|
101
|
+
? 'border-primary bg-primary text-primary-foreground'
|
|
102
|
+
: 'border-transparent text-foreground hover:border-border hover:bg-accent', !selected && !day.inCurrentMonth && 'text-muted-foreground/50', !selected && day.isToday && 'border-primary text-foreground'), children: day.day }, day.date));
|
|
103
|
+
})] }), _jsxs("label", { className: "mt-2 flex items-center gap-2 border-t pt-2 text-[12px] text-muted-foreground", children: [_jsx(Clock, { className: "size-3.5", "aria-hidden": true }), _jsx("span", { className: "shrink-0", children: labels.timeLabel }), _jsx("input", { "data-testid": `date-range-time-${scope}`, type: "time", step: 60, value: parts.time, onChange: (event) => onTimeChange(event.target.value), className: "h-8 min-w-0 flex-1 rounded-md border bg-background px-2 font-mono text-[13px] text-foreground outline-none focus:border-ring" })] })] }));
|
|
104
|
+
}
|
|
105
|
+
export function toLocalDateTimeParts(iso) {
|
|
106
|
+
const d = new Date(iso);
|
|
107
|
+
if (Number.isNaN(d.getTime()))
|
|
108
|
+
return { date: '', time: '' };
|
|
109
|
+
const pad = (n) => String(n).padStart(2, '0');
|
|
110
|
+
return {
|
|
111
|
+
date: `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`,
|
|
112
|
+
time: `${pad(d.getHours())}:${pad(d.getMinutes())}`,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
export function localDateTimePartsToIso(parts) {
|
|
116
|
+
if (!/^\d{4}-\d{2}-\d{2}$/.test(parts.date) || !/^\d{2}:\d{2}$/.test(parts.time))
|
|
117
|
+
return null;
|
|
118
|
+
const dateParts = parts.date.split('-').map(Number);
|
|
119
|
+
const timeParts = parts.time.split(':').map(Number);
|
|
120
|
+
const year = dateParts[0];
|
|
121
|
+
const month = dateParts[1];
|
|
122
|
+
const day = dateParts[2];
|
|
123
|
+
const hour = timeParts[0];
|
|
124
|
+
const minute = timeParts[1];
|
|
125
|
+
if (month < 1 ||
|
|
126
|
+
month > 12 ||
|
|
127
|
+
day < 1 ||
|
|
128
|
+
hour < 0 ||
|
|
129
|
+
hour > 23 ||
|
|
130
|
+
minute < 0 ||
|
|
131
|
+
minute > 59) {
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
const date = new Date(year, month - 1, day, hour, minute, 0, 0);
|
|
135
|
+
if (date.getFullYear() !== year ||
|
|
136
|
+
date.getMonth() !== month - 1 ||
|
|
137
|
+
date.getDate() !== day ||
|
|
138
|
+
date.getHours() !== hour ||
|
|
139
|
+
date.getMinutes() !== minute) {
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
return date.toISOString();
|
|
143
|
+
}
|
|
144
|
+
export function buildCalendarDays(month) {
|
|
145
|
+
const monthStart = new Date(month.getFullYear(), month.getMonth(), 1);
|
|
146
|
+
const gridStart = new Date(monthStart);
|
|
147
|
+
gridStart.setDate(monthStart.getDate() - monthStart.getDay());
|
|
148
|
+
return Array.from({ length: 42 }, (_, index) => {
|
|
149
|
+
const date = new Date(gridStart);
|
|
150
|
+
date.setDate(gridStart.getDate() + index);
|
|
151
|
+
const value = formatDateValue(date);
|
|
152
|
+
return {
|
|
153
|
+
date: value,
|
|
154
|
+
day: date.getDate(),
|
|
155
|
+
inCurrentMonth: date.getMonth() === monthStart.getMonth(),
|
|
156
|
+
isToday: value === formatDateValue(new Date()),
|
|
157
|
+
};
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
function buildWeekdayLabels(locale) {
|
|
161
|
+
const formatter = new Intl.DateTimeFormat(locale, { weekday: 'narrow' });
|
|
162
|
+
return WEEKDAY_REFERENCE_DATES.map((value) => formatter.format(new Date(value)));
|
|
163
|
+
}
|
|
164
|
+
function monthStartFromParts(parts) {
|
|
165
|
+
return monthStartFromDateValue(parts.date);
|
|
166
|
+
}
|
|
167
|
+
function monthStartFromDateValue(value) {
|
|
168
|
+
const parsed = parseDateValue(value);
|
|
169
|
+
if (!parsed) {
|
|
170
|
+
const now = new Date();
|
|
171
|
+
return new Date(now.getFullYear(), now.getMonth(), 1);
|
|
172
|
+
}
|
|
173
|
+
return new Date(parsed.year, parsed.month - 1, 1);
|
|
174
|
+
}
|
|
175
|
+
function parseDateValue(value) {
|
|
176
|
+
if (!/^\d{4}-\d{2}-\d{2}$/.test(value))
|
|
177
|
+
return null;
|
|
178
|
+
const parts = value.split('-').map(Number);
|
|
179
|
+
const year = parts[0];
|
|
180
|
+
const month = parts[1];
|
|
181
|
+
const day = parts[2];
|
|
182
|
+
if (month < 1 || month > 12 || day < 1)
|
|
183
|
+
return null;
|
|
184
|
+
const date = new Date(year, month - 1, day);
|
|
185
|
+
if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {
|
|
186
|
+
return null;
|
|
187
|
+
}
|
|
188
|
+
return { year, month, day };
|
|
189
|
+
}
|
|
190
|
+
function shiftMonth(month, offset) {
|
|
191
|
+
return new Date(month.getFullYear(), month.getMonth() + offset, 1);
|
|
192
|
+
}
|
|
193
|
+
function formatMonth(month, locale) {
|
|
194
|
+
return new Intl.DateTimeFormat(locale, { year: 'numeric', month: 'long' }).format(month);
|
|
195
|
+
}
|
|
196
|
+
function formatDateValue(date) {
|
|
197
|
+
const pad = (n) => String(n).padStart(2, '0');
|
|
198
|
+
return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`;
|
|
199
|
+
}
|
|
200
|
+
function formatDisplayDate(value) {
|
|
201
|
+
const parsed = parseDateValue(value);
|
|
202
|
+
if (!parsed)
|
|
203
|
+
return '—';
|
|
204
|
+
const pad = (n) => String(n).padStart(2, '0');
|
|
205
|
+
return `${parsed.year}/${pad(parsed.month)}/${pad(parsed.day)}`;
|
|
206
|
+
}
|
|
207
|
+
function formatDisplay(iso) {
|
|
208
|
+
const d = new Date(iso);
|
|
209
|
+
if (Number.isNaN(d.getTime()))
|
|
210
|
+
return '—';
|
|
211
|
+
const pad = (n) => String(n).padStart(2, '0');
|
|
212
|
+
return `${d.getFullYear()}/${pad(d.getMonth() + 1)}/${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`;
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=date-range-segmented.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-range-segmented.js","sourceRoot":"","sources":["../../src/primitives/date-range-segmented.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
interface DetailPageSkeletonProps {
|
|
2
|
+
className?: string;
|
|
3
|
+
blocks?: number;
|
|
4
|
+
showBack?: boolean;
|
|
5
|
+
showAction?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function DetailPageSkeleton({ className, blocks, showBack, showAction, }: DetailPageSkeletonProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=detail-page-skeleton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detail-page-skeleton.d.ts","sourceRoot":"","sources":["../../src/primitives/detail-page-skeleton.tsx"],"names":[],"mappings":"AAIA,UAAU,uBAAuB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,kBAAkB,CAAC,EACjC,SAAS,EACT,MAAU,EACV,QAAe,EACf,UAAiB,GAClB,EAAE,uBAAuB,2CAsBzB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { PlatformLoaderOverlay } from './platform-loader';
|
|
3
|
+
import { Skeleton } from './skeleton';
|
|
4
|
+
import { cn } from '../lib/utils';
|
|
5
|
+
export function DetailPageSkeleton({ className, blocks = 3, showBack = true, showAction = true, }) {
|
|
6
|
+
return (_jsxs("div", { className: cn('relative', className), "aria-busy": "true", children: [showBack ? _jsx(Skeleton, { className: "mb-4 h-5 w-24" }) : null, _jsxs("div", { className: "mb-5 flex flex-wrap items-start justify-between gap-4", children: [_jsxs("div", { className: "min-w-0 space-y-2", children: [_jsx(Skeleton, { className: "h-7 w-56" }), _jsx(Skeleton, { className: "h-3.5 w-80" })] }), showAction ? _jsx(Skeleton, { className: "h-9 w-28" }) : null] }), _jsx("div", { className: "space-y-4", children: Array.from({ length: blocks }).map((_, index) => (_jsx(Skeleton, { className: "h-40 rounded-lg" }, index))) }), _jsx(PlatformLoaderOverlay, {})] }));
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=detail-page-skeleton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detail-page-skeleton.js","sourceRoot":"","sources":["../../src/primitives/detail-page-skeleton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AASlC,MAAM,UAAU,kBAAkB,CAAC,EACjC,SAAS,EACT,MAAM,GAAG,CAAC,EACV,QAAQ,GAAG,IAAI,EACf,UAAU,GAAG,IAAI,GACO;IACxB,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,eAAY,MAAM,aACxD,QAAQ,CAAC,CAAC,CAAC,KAAC,QAAQ,IAAC,SAAS,EAAC,eAAe,GAAG,CAAC,CAAC,CAAC,IAAI,EAEzD,eAAK,SAAS,EAAC,uDAAuD,aACpE,eAAK,SAAS,EAAC,mBAAmB,aAChC,KAAC,QAAQ,IAAC,SAAS,EAAC,UAAU,GAAG,EACjC,KAAC,QAAQ,IAAC,SAAS,EAAC,YAAY,GAAG,IAC/B,EACL,UAAU,CAAC,CAAC,CAAC,KAAC,QAAQ,IAAC,SAAS,EAAC,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,IAClD,EAEN,cAAK,SAAS,EAAC,WAAW,YACvB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAChD,KAAC,QAAQ,IAAa,SAAS,EAAC,iBAAiB,IAAlC,KAAK,CAAgC,CACrD,CAAC,GACE,EAEN,KAAC,qBAAqB,KAAG,IACrB,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import * as DialogPrimitive from '@radix-ui/react-dialog';
|
|
3
|
+
declare const Dialog: React.FC<DialogPrimitive.DialogProps>;
|
|
4
|
+
declare const DialogTrigger: React.ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
5
|
+
declare const DialogPortal: React.FC<DialogPrimitive.DialogPortalProps>;
|
|
6
|
+
declare const DialogClose: React.ForwardRefExoticComponent<DialogPrimitive.DialogCloseProps & React.RefAttributes<HTMLButtonElement>>;
|
|
7
|
+
declare const DialogOverlay: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogOverlayProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
8
|
+
declare const DialogContent: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
9
|
+
declare function DialogHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
declare namespace DialogHeader {
|
|
11
|
+
var displayName: string;
|
|
12
|
+
}
|
|
13
|
+
declare function DialogFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
declare namespace DialogFooter {
|
|
15
|
+
var displayName: string;
|
|
16
|
+
}
|
|
17
|
+
declare const DialogTitle: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogTitleProps & React.RefAttributes<HTMLHeadingElement>, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
|
|
18
|
+
declare const DialogDescription: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogDescriptionProps & React.RefAttributes<HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
|
|
19
|
+
export { Dialog, DialogPortal, DialogOverlay, DialogClose, DialogTrigger, DialogContent, DialogHeader, DialogFooter, DialogTitle, DialogDescription, };
|
|
20
|
+
//# sourceMappingURL=dialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../src/primitives/dialog.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAM1D,QAAA,MAAM,MAAM,uCAAuB,CAAC;AACpC,QAAA,MAAM,aAAa,8GAA0B,CAAC;AAC9C,QAAA,MAAM,YAAY,6CAAyB,CAAC;AAC5C,QAAA,MAAM,WAAW,4GAAwB,CAAC;AAE1C,QAAA,MAAM,aAAa,8JAYjB,CAAC;AAGH,QAAA,MAAM,aAAa,8JAyBjB,CAAC;AAGH,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,2CAIlF;kBAJQ,YAAY;;;AAOrB,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,2CAOlF;kBAPQ,YAAY;;;AAUrB,QAAA,MAAM,WAAW,oKASf,CAAC;AAGH,QAAA,MAAM,iBAAiB,8KASrB,CAAC;AAGH,OAAO,EACL,MAAM,EACN,YAAY,EACZ,aAAa,EACb,WAAW,EACX,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,iBAAiB,GAClB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import * as DialogPrimitive from '@radix-ui/react-dialog';
|
|
5
|
+
import { X } from 'lucide-react';
|
|
6
|
+
import { useUiStrings } from '../strings';
|
|
7
|
+
import { cn } from '../lib/utils';
|
|
8
|
+
const Dialog = DialogPrimitive.Root;
|
|
9
|
+
const DialogTrigger = DialogPrimitive.Trigger;
|
|
10
|
+
const DialogPortal = DialogPrimitive.Portal;
|
|
11
|
+
const DialogClose = DialogPrimitive.Close;
|
|
12
|
+
const DialogOverlay = React.forwardRef(({ className, ...props }, ref) => (_jsx(DialogPrimitive.Overlay, { ref: ref, className: cn('fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0', className), ...props })));
|
|
13
|
+
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
14
|
+
const DialogContent = React.forwardRef(({ className, children, ...props }, ref) => {
|
|
15
|
+
const s = useUiStrings();
|
|
16
|
+
return (_jsxs(DialogPortal, { children: [_jsx(DialogOverlay, {}), _jsxs(DialogPrimitive.Content, { ref: ref, className: cn('fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg', className), ...props, children: [children, _jsxs(DialogPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", children: [_jsx(X, { className: "h-4 w-4" }), _jsx("span", { className: "sr-only", children: s.dialogClose })] })] })] }));
|
|
17
|
+
});
|
|
18
|
+
DialogContent.displayName = DialogPrimitive.Content.displayName;
|
|
19
|
+
function DialogHeader({ className, ...props }) {
|
|
20
|
+
return (_jsx("div", { className: cn('flex flex-col space-y-1.5 text-center sm:text-left', className), ...props }));
|
|
21
|
+
}
|
|
22
|
+
DialogHeader.displayName = 'DialogHeader';
|
|
23
|
+
function DialogFooter({ className, ...props }) {
|
|
24
|
+
return (_jsx("div", { className: cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className), ...props }));
|
|
25
|
+
}
|
|
26
|
+
DialogFooter.displayName = 'DialogFooter';
|
|
27
|
+
const DialogTitle = React.forwardRef(({ className, ...props }, ref) => (_jsx(DialogPrimitive.Title, { ref: ref, className: cn('text-lg font-semibold leading-none tracking-tight', className), ...props })));
|
|
28
|
+
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
|
29
|
+
const DialogDescription = React.forwardRef(({ className, ...props }, ref) => (_jsx(DialogPrimitive.Description, { ref: ref, className: cn('text-sm text-muted-foreground', className), ...props })));
|
|
30
|
+
DialogDescription.displayName = DialogPrimitive.Description.displayName;
|
|
31
|
+
export { Dialog, DialogPortal, DialogOverlay, DialogClose, DialogTrigger, DialogContent, DialogHeader, DialogFooter, DialogTitle, DialogDescription, };
|
|
32
|
+
//# sourceMappingURL=dialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialog.js","sourceRoot":"","sources":["../../src/primitives/dialog.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
3
|
+
declare const DropdownMenu: React.FC<DropdownMenuPrimitive.DropdownMenuProps>;
|
|
4
|
+
declare const DropdownMenuTrigger: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
5
|
+
declare const DropdownMenuGroup: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuGroupProps & React.RefAttributes<HTMLDivElement>>;
|
|
6
|
+
declare const DropdownMenuPortal: React.FC<DropdownMenuPrimitive.DropdownMenuPortalProps>;
|
|
7
|
+
declare const DropdownMenuSub: React.FC<DropdownMenuPrimitive.DropdownMenuSubProps>;
|
|
8
|
+
declare const DropdownMenuRadioGroup: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuRadioGroupProps & React.RefAttributes<HTMLDivElement>>;
|
|
9
|
+
declare const DropdownMenuSubTrigger: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSubTriggerProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
|
|
10
|
+
inset?: boolean;
|
|
11
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
12
|
+
declare const DropdownMenuSubContent: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSubContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
13
|
+
declare const DropdownMenuContent: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
14
|
+
declare const DropdownMenuItem: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
|
|
15
|
+
inset?: boolean;
|
|
16
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
17
|
+
declare const DropdownMenuCheckboxItem: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuCheckboxItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
18
|
+
declare const DropdownMenuRadioItem: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuRadioItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
19
|
+
declare const DropdownMenuLabel: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuLabelProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
|
|
20
|
+
inset?: boolean;
|
|
21
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
22
|
+
declare const DropdownMenuSeparator: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSeparatorProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
23
|
+
declare const DropdownMenuShortcut: {
|
|
24
|
+
({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>): import("react/jsx-runtime").JSX.Element;
|
|
25
|
+
displayName: string;
|
|
26
|
+
};
|
|
27
|
+
export { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuGroup, DropdownMenuPortal, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuRadioGroup, };
|
|
28
|
+
//# sourceMappingURL=dropdown-menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropdown-menu.d.ts","sourceRoot":"","sources":["../../src/primitives/dropdown-menu.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,qBAAqB,MAAM,+BAA+B,CAAA;AAKtE,QAAA,MAAM,YAAY,mDAA6B,CAAA;AAE/C,QAAA,MAAM,mBAAmB,0HAAgC,CAAA;AAEzD,QAAA,MAAM,iBAAiB,qHAA8B,CAAA;AAErD,QAAA,MAAM,kBAAkB,yDAA+B,CAAA;AAEvD,QAAA,MAAM,eAAe,sDAA4B,CAAA;AAEjD,QAAA,MAAM,sBAAsB,0HAAmC,CAAA;AAE/D,QAAA,MAAM,sBAAsB;YAGhB,OAAO;wCAejB,CAAA;AAIF,QAAA,MAAM,sBAAsB,6KAY1B,CAAA;AAIF,QAAA,MAAM,mBAAmB,0KAevB,CAAA;AAGF,QAAA,MAAM,gBAAgB;YAGV,OAAO;wCAYjB,CAAA;AAGF,QAAA,MAAM,wBAAwB,+KAoB5B,CAAA;AAIF,QAAA,MAAM,qBAAqB,4KAmBzB,CAAA;AAGF,QAAA,MAAM,iBAAiB;YAGX,OAAO;wCAYjB,CAAA;AAGF,QAAA,MAAM,qBAAqB,4KASzB,CAAA;AAGF,QAAA,MAAM,oBAAoB;8BAGvB,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC;;CAOvC,CAAA;AAGD,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GACvB,CAAA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
5
|
+
import { Check, ChevronRight, Circle } from "lucide-react";
|
|
6
|
+
import { cn } from '../lib/utils';
|
|
7
|
+
const DropdownMenu = DropdownMenuPrimitive.Root;
|
|
8
|
+
const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
|
|
9
|
+
const DropdownMenuGroup = DropdownMenuPrimitive.Group;
|
|
10
|
+
const DropdownMenuPortal = DropdownMenuPrimitive.Portal;
|
|
11
|
+
const DropdownMenuSub = DropdownMenuPrimitive.Sub;
|
|
12
|
+
const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
|
|
13
|
+
const DropdownMenuSubTrigger = React.forwardRef(({ className, inset, children, ...props }, ref) => (_jsxs(DropdownMenuPrimitive.SubTrigger, { ref: ref, className: cn("flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", inset && "pl-8", className), ...props, children: [children, _jsx(ChevronRight, { className: "ml-auto" })] })));
|
|
14
|
+
DropdownMenuSubTrigger.displayName =
|
|
15
|
+
DropdownMenuPrimitive.SubTrigger.displayName;
|
|
16
|
+
const DropdownMenuSubContent = React.forwardRef(({ className, ...props }, ref) => (_jsx(DropdownMenuPrimitive.SubContent, { ref: ref, className: cn("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]", className), ...props })));
|
|
17
|
+
DropdownMenuSubContent.displayName =
|
|
18
|
+
DropdownMenuPrimitive.SubContent.displayName;
|
|
19
|
+
const DropdownMenuContent = React.forwardRef(({ className, sideOffset = 4, ...props }, ref) => (_jsx(DropdownMenuPrimitive.Portal, { children: _jsx(DropdownMenuPrimitive.Content, { ref: ref, sideOffset: sideOffset, className: cn("z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]", className), ...props }) })));
|
|
20
|
+
DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
|
|
21
|
+
const DropdownMenuItem = React.forwardRef(({ className, inset, ...props }, ref) => (_jsx(DropdownMenuPrimitive.Item, { ref: ref, className: cn("relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", inset && "pl-8", className), ...props })));
|
|
22
|
+
DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
|
|
23
|
+
const DropdownMenuCheckboxItem = React.forwardRef(({ className, children, checked, ...props }, ref) => (_jsxs(DropdownMenuPrimitive.CheckboxItem, { ref: ref, className: cn("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", className), checked: checked, ...props, children: [_jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: _jsx(DropdownMenuPrimitive.ItemIndicator, { children: _jsx(Check, { className: "h-4 w-4" }) }) }), children] })));
|
|
24
|
+
DropdownMenuCheckboxItem.displayName =
|
|
25
|
+
DropdownMenuPrimitive.CheckboxItem.displayName;
|
|
26
|
+
const DropdownMenuRadioItem = React.forwardRef(({ className, children, ...props }, ref) => (_jsxs(DropdownMenuPrimitive.RadioItem, { ref: ref, className: cn("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", className), ...props, children: [_jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: _jsx(DropdownMenuPrimitive.ItemIndicator, { children: _jsx(Circle, { className: "h-2 w-2 fill-current" }) }) }), children] })));
|
|
27
|
+
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
|
|
28
|
+
const DropdownMenuLabel = React.forwardRef(({ className, inset, ...props }, ref) => (_jsx(DropdownMenuPrimitive.Label, { ref: ref, className: cn("px-2 py-1.5 text-sm font-semibold", inset && "pl-8", className), ...props })));
|
|
29
|
+
DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
|
|
30
|
+
const DropdownMenuSeparator = React.forwardRef(({ className, ...props }, ref) => (_jsx(DropdownMenuPrimitive.Separator, { ref: ref, className: cn("-mx-1 my-1 h-px bg-muted", className), ...props })));
|
|
31
|
+
DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
|
|
32
|
+
const DropdownMenuShortcut = ({ className, ...props }) => {
|
|
33
|
+
return (_jsx("span", { className: cn("ml-auto text-xs tracking-widest opacity-60", className), ...props }));
|
|
34
|
+
};
|
|
35
|
+
DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
|
|
36
|
+
export { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuGroup, DropdownMenuPortal, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuRadioGroup, };
|
|
37
|
+
//# sourceMappingURL=dropdown-menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropdown-menu.js","sourceRoot":"","sources":["../../src/primitives/dropdown-menu.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare function ImageZoomHoverOverlay({ className }: {
|
|
2
|
+
className?: string;
|
|
3
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export declare function isRenderableImage(value: string): boolean;
|
|
5
|
+
export declare function ImagePreviewDialog({ open, onOpenChange, fieldName, value, }: {
|
|
6
|
+
open: boolean;
|
|
7
|
+
onOpenChange: (open: boolean) => void;
|
|
8
|
+
fieldName: string;
|
|
9
|
+
value: string;
|
|
10
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
//# sourceMappingURL=image-preview-dialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-preview-dialog.d.ts","sourceRoot":"","sources":["../../src/primitives/image-preview-dialog.tsx"],"names":[],"mappings":"AASA,wBAAgB,qBAAqB,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,2CAe1E;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,WAI9C;AAED,wBAAgB,kBAAkB,CAAC,EACjC,IAAI,EACJ,YAAY,EACZ,SAAS,EACT,KAAK,GACN,EAAE;IACD,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf,2CAiDA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useState } from 'react';
|
|
4
|
+
import { ZoomIn } from 'lucide-react';
|
|
5
|
+
import { Dialog, DialogContent, DialogHeader, DialogTitle } from './dialog';
|
|
6
|
+
import { ModalityIcon } from './modality-icon';
|
|
7
|
+
import { useUiStrings } from '../strings';
|
|
8
|
+
import { cn } from '../lib/utils';
|
|
9
|
+
export function ImageZoomHoverOverlay({ className }) {
|
|
10
|
+
return (_jsx("span", { "aria-hidden": "true", "data-testid": "image-zoom-overlay", className: cn('pointer-events-none absolute inset-0 flex items-center justify-center bg-foreground/35 opacity-0 transition-opacity duration-150 group-hover:opacity-100 group-focus-visible:opacity-100', className), children: _jsx("span", { className: "inline-flex size-7 items-center justify-center rounded-full border border-border bg-background/95 text-foreground shadow-sm", children: _jsx(ZoomIn, { className: "size-3.5" }) }) }));
|
|
11
|
+
}
|
|
12
|
+
export function isRenderableImage(value) {
|
|
13
|
+
const trimmed = value.trim();
|
|
14
|
+
if (!trimmed)
|
|
15
|
+
return false;
|
|
16
|
+
return /^https?:\/\//iu.test(trimmed) || /^data:image\//iu.test(trimmed);
|
|
17
|
+
}
|
|
18
|
+
export function ImagePreviewDialog({ open, onOpenChange, fieldName, value, }) {
|
|
19
|
+
const s = useUiStrings();
|
|
20
|
+
const trimmed = value.trim();
|
|
21
|
+
const [lastTrimmed, setLastTrimmed] = useState(trimmed);
|
|
22
|
+
const [failed, setFailed] = useState(false);
|
|
23
|
+
if (lastTrimmed !== trimmed) {
|
|
24
|
+
setLastTrimmed(trimmed);
|
|
25
|
+
setFailed(false);
|
|
26
|
+
}
|
|
27
|
+
const renderable = isRenderableImage(trimmed) && !failed;
|
|
28
|
+
return (_jsx(Dialog, { open: open, onOpenChange: (next) => {
|
|
29
|
+
if (!next)
|
|
30
|
+
setFailed(false);
|
|
31
|
+
onOpenChange(next);
|
|
32
|
+
}, children: _jsxs(DialogContent, { className: "max-h-[90vh] w-full max-w-[min(90vw,1200px)] gap-0 overflow-hidden p-0", "data-testid": "image-preview-dialog", children: [_jsx(DialogHeader, { className: "border-b border-border px-4 py-3 text-left", children: _jsx(DialogTitle, { className: "truncate font-mono text-sm", children: fieldName }) }), _jsx("div", { className: "flex items-center justify-center bg-muted/40 p-4", children: renderable ? (_jsx("img", { src: trimmed, alt: fieldName, onError: () => setFailed(true), className: "max-h-[70vh] w-full object-contain" })) : (_jsxs("div", { className: "flex flex-col items-center gap-2 py-12 text-sm text-muted-foreground", children: [_jsx(ModalityIcon, { kind: "image", size: "md" }), _jsx("span", { children: s.imagePreviewFailed })] })) }), _jsx("div", { className: "border-t border-border bg-background px-4 py-3", children: _jsx("code", { className: "block max-h-24 overflow-auto break-all font-mono text-[11.5px] text-muted-foreground", children: trimmed || '-' }) })] }) }));
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=image-preview-dialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-preview-dialog.js","sourceRoot":"","sources":["../../src/primitives/image-preview-dialog.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,MAAM,UAAU,qBAAqB,CAAC,EAAE,SAAS,EAA0B;IACzE,OAAO,CACL,8BACc,MAAM,iBACN,oBAAoB,EAChC,SAAS,EAAE,EAAE,CACX,0LAA0L,EAC1L,SAAS,CACV,YAED,eAAM,SAAS,EAAC,6HAA6H,YAC3I,KAAC,MAAM,IAAC,SAAS,EAAC,UAAU,GAAG,GAC1B,GACF,CACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,OAAO,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EACjC,IAAI,EACJ,YAAY,EACZ,SAAS,EACT,KAAK,GAMN;IACC,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC;IACzB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,WAAW,KAAK,OAAO,EAAE,CAAC;QAC5B,cAAc,CAAC,OAAO,CAAC,CAAC;QACxB,SAAS,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IACD,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;IAEzD,OAAO,CACL,KAAC,MAAM,IACL,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;YACrB,IAAI,CAAC,IAAI;gBAAE,SAAS,CAAC,KAAK,CAAC,CAAC;YAC5B,YAAY,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC,YAED,MAAC,aAAa,IACZ,SAAS,EAAC,wEAAwE,iBACtE,sBAAsB,aAElC,KAAC,YAAY,IAAC,SAAS,EAAC,4CAA4C,YAClE,KAAC,WAAW,IAAC,SAAS,EAAC,4BAA4B,YAAE,SAAS,GAAe,GAChE,EACf,cAAK,SAAS,EAAC,kDAAkD,YAC9D,UAAU,CAAC,CAAC,CAAC,CACZ,cACE,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,SAAS,EACd,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAC9B,SAAS,EAAC,oCAAoC,GAC9C,CACH,CAAC,CAAC,CAAC,CACF,eAAK,SAAS,EAAC,sEAAsE,aACnF,KAAC,YAAY,IAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAC,IAAI,GAAG,EACvC,yBAAO,CAAC,CAAC,kBAAkB,GAAQ,IAC/B,CACP,GACG,EACN,cAAK,SAAS,EAAC,gDAAgD,YAC7D,eAAM,SAAS,EAAC,sFAAsF,YACnG,OAAO,IAAI,GAAG,GACV,GACH,IACQ,GACT,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export * from './avatar';
|
|
2
|
+
export * from './badge';
|
|
3
|
+
export * from './button';
|
|
4
|
+
export * from './collapsible';
|
|
5
|
+
export * from './date-range-segmented';
|
|
6
|
+
export * from './detail-page-skeleton';
|
|
7
|
+
export * from './dialog';
|
|
8
|
+
export * from './dropdown-menu';
|
|
9
|
+
export * from './image-preview-dialog';
|
|
10
|
+
export * from './input';
|
|
11
|
+
export * from './kanban-scroll-area';
|
|
12
|
+
export * from './label';
|
|
13
|
+
export * from './list-page-skeleton';
|
|
14
|
+
export * from './modality-icon';
|
|
15
|
+
export * from './multi-select';
|
|
16
|
+
export * from './platform-loader';
|
|
17
|
+
export * from './popover';
|
|
18
|
+
export * from './progress';
|
|
19
|
+
export * from './resource-pagination-footer';
|
|
20
|
+
export * from './segmented';
|
|
21
|
+
export * from './select';
|
|
22
|
+
export * from './separator';
|
|
23
|
+
export * from './sheet';
|
|
24
|
+
export * from './sidebar';
|
|
25
|
+
export * from './skeleton';
|
|
26
|
+
export * from './sliding-view-toggle';
|
|
27
|
+
export * from './switch';
|
|
28
|
+
export * from './table';
|
|
29
|
+
export * from './table-action';
|
|
30
|
+
export * from './tooltip';
|
|
31
|
+
export * from './unused-images-badge';
|
|
32
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/primitives/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,SAAS,CAAC;AACxB,cAAc,sBAAsB,CAAC;AACrC,cAAc,SAAS,CAAC;AACxB,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,uBAAuB,CAAC"}
|