@wow-two-beta/ui 0.0.69 → 0.0.71
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/actions/button/Button.d.ts +1 -0
- package/dist/actions/button/Button.variants.d.ts +7 -0
- package/dist/actions/index.js +1 -1
- package/dist/actions/segmentedControl/SegmentedControl.d.ts +8 -3
- package/dist/actions/toggleButtonGroup/ToggleButtonGroup.d.ts +7 -0
- package/dist/{chunk-R5MOEUXM.js → chunk-3FJ7WWRB.js} +42 -20
- package/dist/chunk-3FJ7WWRB.js.map +1 -0
- package/dist/{chunk-SREWD3XJ.js → chunk-KD6MJOL5.js} +3 -3
- package/dist/{chunk-SREWD3XJ.js.map → chunk-KD6MJOL5.js.map} +1 -1
- package/dist/{chunk-EKGOQL75.js → chunk-SIAFOCT4.js} +36 -3
- package/dist/chunk-SIAFOCT4.js.map +1 -0
- package/dist/{chunk-X3JVVEUJ.js → chunk-UFTKE5U7.js} +143 -172
- package/dist/chunk-UFTKE5U7.js.map +1 -0
- package/dist/display/eventCalendar/EventCalendar.d.ts +9 -6
- package/dist/display/gantt/Gantt.d.ts +6 -5
- package/dist/display/heatmapCalendar/HeatmapCalendar.d.ts +4 -2
- package/dist/display/index.js +2 -2
- package/dist/display/scheduleView/ScheduleView.d.ts +6 -4
- package/dist/forms/DateExtensions.d.ts +26 -0
- package/dist/forms/index.js +2 -2
- package/dist/http/ApiError.d.ts +7 -0
- package/dist/http/ApiResponse.d.ts +4 -0
- package/dist/http/DateBrands.d.ts +8 -0
- package/dist/http/ProblemDetails.d.ts +9 -0
- package/dist/http/index.d.ts +5 -0
- package/dist/http/index.js +58 -0
- package/dist/http/index.js.map +1 -0
- package/dist/http/temporalReviver.d.ts +9 -0
- package/dist/index.js +5 -5
- package/dist/layout/index.js +1 -1
- package/package.json +6 -1
- package/dist/chunk-EKGOQL75.js.map +0 -1
- package/dist/chunk-R5MOEUXM.js.map +0 -1
- package/dist/chunk-X3JVVEUJ.js.map +0 -1
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { type HTMLAttributes, type ReactNode } from 'react';
|
|
2
|
+
import { Temporal } from '@js-temporal/polyfill';
|
|
2
3
|
export type EventCalendarView = 'month' | 'week' | 'day' | 'agenda';
|
|
3
4
|
export interface EventCalendarEvent {
|
|
4
5
|
id: string;
|
|
5
6
|
title?: ReactNode;
|
|
6
|
-
start:
|
|
7
|
-
end:
|
|
7
|
+
start: Temporal.ZonedDateTime;
|
|
8
|
+
end: Temporal.ZonedDateTime;
|
|
8
9
|
color?: string;
|
|
9
10
|
isAllDay?: boolean;
|
|
10
11
|
}
|
|
@@ -13,13 +14,15 @@ export interface EventCalendarProps extends HTMLAttributes<HTMLDivElement> {
|
|
|
13
14
|
view?: EventCalendarView;
|
|
14
15
|
defaultView?: EventCalendarView;
|
|
15
16
|
onViewChange?: (view: EventCalendarView) => void;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
/** The focused instant; its calendar day drives the visible month/week/day. */
|
|
18
|
+
date?: Temporal.ZonedDateTime;
|
|
19
|
+
defaultDate?: Temporal.ZonedDateTime;
|
|
20
|
+
onDateChange?: (date: Temporal.ZonedDateTime) => void;
|
|
19
21
|
weekStart?: 0 | 1;
|
|
20
22
|
hourRange?: [number, number];
|
|
21
23
|
onEventClick?: (event: EventCalendarEvent) => void;
|
|
22
|
-
|
|
24
|
+
/** Fired on an empty slot: `day` is the clicked calendar day, `hour` the grid hour (time views). */
|
|
25
|
+
onSlotClick?: (day: Temporal.PlainDate, hour?: number) => void;
|
|
23
26
|
}
|
|
24
27
|
/**
|
|
25
28
|
* First-generation EventCalendar — month / week / day / agenda views.
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { type HTMLAttributes, type ReactNode } from 'react';
|
|
2
|
+
import { Temporal } from '@js-temporal/polyfill';
|
|
2
3
|
export interface GanttTask {
|
|
3
4
|
id: string;
|
|
4
5
|
label: ReactNode;
|
|
5
|
-
start:
|
|
6
|
-
end:
|
|
6
|
+
start: Temporal.PlainDate;
|
|
7
|
+
end: Temporal.PlainDate;
|
|
7
8
|
color?: string;
|
|
8
9
|
/** 0..1 — fills the bar from the left. */
|
|
9
10
|
progress?: number;
|
|
@@ -15,14 +16,14 @@ export interface GanttDependency {
|
|
|
15
16
|
export interface GanttMilestone {
|
|
16
17
|
id: string;
|
|
17
18
|
label: ReactNode;
|
|
18
|
-
date:
|
|
19
|
+
date: Temporal.PlainDate;
|
|
19
20
|
}
|
|
20
21
|
export interface GanttProps extends HTMLAttributes<HTMLDivElement> {
|
|
21
22
|
tasks: GanttTask[];
|
|
22
23
|
dependencies?: GanttDependency[];
|
|
23
24
|
milestones?: GanttMilestone[];
|
|
24
|
-
from?:
|
|
25
|
-
to?:
|
|
25
|
+
from?: Temporal.PlainDate;
|
|
26
|
+
to?: Temporal.PlainDate;
|
|
26
27
|
cellWidth?: number;
|
|
27
28
|
rowHeight?: number;
|
|
28
29
|
labelWidth?: number;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { type HTMLAttributes } from 'react';
|
|
2
|
+
import { Temporal } from '@js-temporal/polyfill';
|
|
2
3
|
export type HeatmapCalendarTone = 'brand' | 'success' | 'warning' | 'danger' | 'muted';
|
|
3
4
|
export interface HeatmapCalendarProps extends HTMLAttributes<HTMLDivElement> {
|
|
4
|
-
|
|
5
|
+
/** Per-day counts, keyed by calendar date. */
|
|
6
|
+
values: Map<Temporal.PlainDate, number>;
|
|
5
7
|
year?: number;
|
|
6
8
|
weekStart?: 0 | 1;
|
|
7
9
|
cellSize?: number;
|
|
@@ -9,7 +11,7 @@ export interface HeatmapCalendarProps extends HTMLAttributes<HTMLDivElement> {
|
|
|
9
11
|
/** Intensity buckets (min 2, clamped). Buckets map proportionally onto the fixed 5-step tone palette — counts above 5 share palette classes between adjacent buckets. Default 5. */
|
|
10
12
|
levels?: number;
|
|
11
13
|
tone?: HeatmapCalendarTone;
|
|
12
|
-
onCellClick?: (date:
|
|
14
|
+
onCellClick?: (date: Temporal.PlainDate, value: number) => void;
|
|
13
15
|
monthLabels?: string[];
|
|
14
16
|
weekdayLabels?: string[];
|
|
15
17
|
hasLegend?: boolean;
|
package/dist/display/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityFeed, ActivityItem, AnimatedNumber, AnnotationMarker, AudioPlayer, AudioWaveform, Avatar, AvatarGroup, Badge, BadgeOverlay, Card, Carousel, CarouselDot, CarouselDots, CarouselNext, CarouselPrev, CarouselSlide, CarouselSlides, CarouselViewport, ChatBubble, Code, Collapsible, CollapsibleContent, CollapsibleTrigger, Comment, CommentThread, Confetti, CountBadge, CountUp, DataGrid, DataTable, DaySeparator, DescriptionList, DiffViewer, EmptyState, EventCalendar, Eyebrow, FeatureCard, Gantt, GradientText, Heading, HeatmapCalendar, Highlight, Image, InfoRow, KeyboardShortcut, List, ListItem, Mark, Marquee, MessageList, MetaInline, MetricChip, NodeEditor, NotificationDot, PDFViewer, PricingCard, Quote, ReactionBar, ScheduleView, ScrollReveal, SectionHeader, Separator, Snippet, Sortable, Sparkline, Stat, Status, StepCard, SwipeActions, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeaderCell, TableRow, Tabs, TabsList, TabsPanel, TabsTab, Text, ThreadView, Tilt, Timeline, TimelineDescription, TimelineItem, TimelineTitle, Tree, TreeGroup, TreeItem, Typewriter, VideoPlayer, avatarVariants, badgeVariants, codeVariants, headingVariants, textVariants } from '../chunk-
|
|
2
|
-
export { Kbd, Tag, tagVariants } from '../chunk-
|
|
1
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityFeed, ActivityItem, AnimatedNumber, AnnotationMarker, AudioPlayer, AudioWaveform, Avatar, AvatarGroup, Badge, BadgeOverlay, Card, Carousel, CarouselDot, CarouselDots, CarouselNext, CarouselPrev, CarouselSlide, CarouselSlides, CarouselViewport, ChatBubble, Code, Collapsible, CollapsibleContent, CollapsibleTrigger, Comment, CommentThread, Confetti, CountBadge, CountUp, DataGrid, DataTable, DaySeparator, DescriptionList, DiffViewer, EmptyState, EventCalendar, Eyebrow, FeatureCard, Gantt, GradientText, Heading, HeatmapCalendar, Highlight, Image, InfoRow, KeyboardShortcut, List, ListItem, Mark, Marquee, MessageList, MetaInline, MetricChip, NodeEditor, NotificationDot, PDFViewer, PricingCard, Quote, ReactionBar, ScheduleView, ScrollReveal, SectionHeader, Separator, Snippet, Sortable, Sparkline, Stat, Status, StepCard, SwipeActions, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeaderCell, TableRow, Tabs, TabsList, TabsPanel, TabsTab, Text, ThreadView, Tilt, Timeline, TimelineDescription, TimelineItem, TimelineTitle, Tree, TreeGroup, TreeItem, Typewriter, VideoPlayer, avatarVariants, badgeVariants, codeVariants, headingVariants, textVariants } from '../chunk-UFTKE5U7.js';
|
|
2
|
+
export { Kbd, Tag, tagVariants } from '../chunk-SIAFOCT4.js';
|
|
3
3
|
import '../chunk-WKVWOAQV.js';
|
|
4
4
|
export { Tooltip } from '../chunk-GPMNI5MG.js';
|
|
5
5
|
import '../chunk-RNHY33US.js';
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type HTMLAttributes, type ReactNode } from 'react';
|
|
2
|
+
import { Temporal } from '@js-temporal/polyfill';
|
|
2
3
|
export interface ScheduleResource {
|
|
3
4
|
id: string;
|
|
4
5
|
label: ReactNode;
|
|
@@ -7,19 +8,20 @@ export interface ScheduleResource {
|
|
|
7
8
|
export interface ScheduleBooking {
|
|
8
9
|
id: string;
|
|
9
10
|
resourceId: string;
|
|
10
|
-
start:
|
|
11
|
-
end:
|
|
11
|
+
start: Temporal.ZonedDateTime;
|
|
12
|
+
end: Temporal.ZonedDateTime;
|
|
12
13
|
label?: ReactNode;
|
|
13
14
|
color?: string;
|
|
14
15
|
}
|
|
15
16
|
export interface ScheduleViewProps extends HTMLAttributes<HTMLDivElement> {
|
|
16
17
|
resources: ScheduleResource[];
|
|
17
18
|
bookings: ScheduleBooking[];
|
|
18
|
-
date
|
|
19
|
+
/** The day to render; its calendar date + time zone anchor the grid. */
|
|
20
|
+
date?: Temporal.ZonedDateTime;
|
|
19
21
|
hourRange?: [number, number];
|
|
20
22
|
slotMinutes?: number;
|
|
21
23
|
onBookingClick?: (booking: ScheduleBooking) => void;
|
|
22
|
-
onSlotClick?: (resourceId: string, time:
|
|
24
|
+
onSlotClick?: (resourceId: string, time: Temporal.ZonedDateTime) => void;
|
|
23
25
|
renderBooking?: (booking: ScheduleBooking) => ReactNode;
|
|
24
26
|
}
|
|
25
27
|
/**
|
|
@@ -38,3 +38,29 @@ export declare function isDateDisabled(d: Temporal.PlainDate, options: {
|
|
|
38
38
|
isDisabled?: (d: Temporal.PlainDate) => boolean;
|
|
39
39
|
}): boolean;
|
|
40
40
|
export declare function isInRange(d: Temporal.PlainDate, start: Temporal.PlainDate | null | undefined, end: Temporal.PlainDate | null | undefined): boolean;
|
|
41
|
+
/** Signed whole-day count from `a` to `b` (positive when `b` is later). */
|
|
42
|
+
export declare function daysBetween(a: Temporal.PlainDate, b: Temporal.PlainDate): number;
|
|
43
|
+
/** True when `d` falls on a Saturday or Sunday. */
|
|
44
|
+
export declare function isWeekend(d: Temporal.PlainDate): boolean;
|
|
45
|
+
/** Now as a ZonedDateTime in the local (system) time zone. */
|
|
46
|
+
export declare function nowZoned(): Temporal.ZonedDateTime;
|
|
47
|
+
/** The calendar day a ZonedDateTime falls on (its wall-clock PlainDate). */
|
|
48
|
+
export declare function zonedToPlainDate(z: Temporal.ZonedDateTime): Temporal.PlainDate;
|
|
49
|
+
/** True when two ZonedDateTimes land on the same wall-clock day (same zone assumed). */
|
|
50
|
+
export declare function isSameZonedDay(a: Temporal.ZonedDateTime, b: Temporal.ZonedDateTime): boolean;
|
|
51
|
+
/** True when a ZonedDateTime falls on `day` (its wall-clock date equals `day`). */
|
|
52
|
+
export declare function isZonedOnDay(z: Temporal.ZonedDateTime, day: Temporal.PlainDate): boolean;
|
|
53
|
+
/** Start-of-day (00:00, zone-correct) for `day` in `z`'s time zone. */
|
|
54
|
+
export declare function startOfZonedDay(day: Temporal.PlainDate, timeZone: Temporal.TimeZoneLike): Temporal.ZonedDateTime;
|
|
55
|
+
/** `day` at hour `hour` (minutes/seconds zeroed), zone-correct, in `timeZone`. */
|
|
56
|
+
export declare function zonedAtHour(day: Temporal.PlainDate, hour: number, timeZone: Temporal.TimeZoneLike): Temporal.ZonedDateTime;
|
|
57
|
+
/** Signed minutes from `a` to `b` (positive when `b` is later). */
|
|
58
|
+
export declare function minutesBetween(a: Temporal.ZonedDateTime, b: Temporal.ZonedDateTime): number;
|
|
59
|
+
/** Later of two instants. */
|
|
60
|
+
export declare function maxZoned(a: Temporal.ZonedDateTime, b: Temporal.ZonedDateTime): Temporal.ZonedDateTime;
|
|
61
|
+
/** Earlier of two instants. */
|
|
62
|
+
export declare function minZoned(a: Temporal.ZonedDateTime, b: Temporal.ZonedDateTime): Temporal.ZonedDateTime;
|
|
63
|
+
/** True when `z`'s calendar day lies within [start, end] (inclusive, by day). */
|
|
64
|
+
export declare function isZonedDayInRange(z: Temporal.ZonedDateTime, start: Temporal.ZonedDateTime, end: Temporal.ZonedDateTime): boolean;
|
|
65
|
+
/** Format a ZonedDateTime's time-of-day as "HH:MM" (locale-aware). */
|
|
66
|
+
export declare function formatZonedTime(z: Temporal.ZonedDateTime): string;
|
package/dist/forms/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
export { ADDRESS_COUNTRIES, AddressForm, BUILT_IN_EMOJI, BUILT_IN_FONTS, Calendar, CharacterCount, ChatComposer, Checkbox, CheckboxField, CheckboxGroup, ChoiceCard, CodeEditor, ColorArea, ColorField, ColorPicker, ColorSlider, ColorSwatch, ColorSwatchPicker, ColorWheel, Combobox, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxSeparator, CronInput, CurrencyInput, DateField, DatePicker, DateRangePicker, Editable, EditableCancel, EditableInput, EditablePreview, EditableSubmit, EmailInput, EmojiPicker, Field, Fieldset, FilePicker, FileUpload, FontPicker, FormErrorMessage, Field as FormField, FormHelperText, GradientPicker, IconPicker, InputAddon, InputGroup, JSONEditor, KeyboardShortcutPicker, Knob, Label, LabeledInput, Legend, Listbox, ListboxEmpty, ListboxGroup, ListboxItem, ListboxSeparator, MarkdownEditor, MaskedInput, MultiSelect, MultiSelectContent, MultiSelectItem, MultiSelectTags, MultiSelectTrigger, NumberInput, PHONE_COUNTRIES, PasswordInput, PasswordStrength, PercentInput, PhoneInput, PinInput, Radio, RadioField, RadioGroup, RangeCalendar, ReactionPicker, RecurrenceEditor, SearchInput, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Slider, Stepper, StepperList, StepperPanel, StepperStep, Switch, SwitchField, TagsInput, TelInput, TextInput, TextareaInput as Textarea, TextareaInput, TimeField, TimePicker, UrlInput, Wizard, WizardFooter, WizardStep, WizardSteps, colorSwatchVariants, gradientToCss, useWizard } from '../chunk-
|
|
1
|
+
export { ADDRESS_COUNTRIES, AddressForm, BUILT_IN_EMOJI, BUILT_IN_FONTS, Calendar, CharacterCount, ChatComposer, Checkbox, CheckboxField, CheckboxGroup, ChoiceCard, CodeEditor, ColorArea, ColorField, ColorPicker, ColorSlider, ColorSwatch, ColorSwatchPicker, ColorWheel, Combobox, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxSeparator, CronInput, CurrencyInput, DateField, DatePicker, DateRangePicker, Editable, EditableCancel, EditableInput, EditablePreview, EditableSubmit, EmailInput, EmojiPicker, Field, Fieldset, FilePicker, FileUpload, FontPicker, FormErrorMessage, Field as FormField, FormHelperText, GradientPicker, IconPicker, InputAddon, InputGroup, JSONEditor, KeyboardShortcutPicker, Knob, Label, LabeledInput, Legend, Listbox, ListboxEmpty, ListboxGroup, ListboxItem, ListboxSeparator, MarkdownEditor, MaskedInput, MultiSelect, MultiSelectContent, MultiSelectItem, MultiSelectTags, MultiSelectTrigger, NumberInput, PHONE_COUNTRIES, PasswordInput, PasswordStrength, PercentInput, PhoneInput, PinInput, Radio, RadioField, RadioGroup, RangeCalendar, ReactionPicker, RecurrenceEditor, SearchInput, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Slider, Stepper, StepperList, StepperPanel, StepperStep, Switch, SwitchField, TagsInput, TelInput, TextInput, TextareaInput as Textarea, TextareaInput, TimeField, TimePicker, UrlInput, Wizard, WizardFooter, WizardStep, WizardSteps, colorSwatchVariants, gradientToCss, useWizard } from '../chunk-KD6MJOL5.js';
|
|
2
|
+
import '../chunk-SIAFOCT4.js';
|
|
2
3
|
import '../chunk-UMRRFZ4R.js';
|
|
3
4
|
import '../chunk-XFUD3RZK.js';
|
|
4
5
|
import '../chunk-X5JSX4PU.js';
|
|
5
6
|
import '../chunk-QTHKG7MQ.js';
|
|
6
7
|
import '../chunk-OZBLEOLZ.js';
|
|
7
8
|
import '../chunk-VYFPLQPV.js';
|
|
8
|
-
import '../chunk-EKGOQL75.js';
|
|
9
9
|
import '../chunk-RNHY33US.js';
|
|
10
10
|
import '../chunk-D7ZFCHX5.js';
|
|
11
11
|
import '../chunk-XSW3NZDD.js';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ProblemDetails } from './ProblemDetails';
|
|
2
|
+
/** Defines a typed transport error thrown on a non-2xx response (or network status `0`), carrying the HTTP status and parsed problem body. */
|
|
3
|
+
export declare class ApiError extends Error {
|
|
4
|
+
readonly status: number;
|
|
5
|
+
readonly problem: ProblemDetails | null;
|
|
6
|
+
constructor(status: number, problem: ProblemDetails | null, message?: string);
|
|
7
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Defines a branded alias for a raw ISO-8601 date-time string (`2026-07-04T12:00:00Z`) on a wire DTO. */
|
|
2
|
+
export type IsoDateTime = string & {
|
|
3
|
+
readonly __brand: 'IsoDateTime';
|
|
4
|
+
};
|
|
5
|
+
/** Defines a branded alias for a raw ISO-8601 calendar-date string (`2026-07-04`) on a wire DTO. */
|
|
6
|
+
export type IsoDate = string & {
|
|
7
|
+
readonly __brand: 'IsoDate';
|
|
8
|
+
};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import '../chunk-DCHYNTHI.js';
|
|
2
|
+
import { Temporal } from '@js-temporal/polyfill';
|
|
3
|
+
|
|
4
|
+
// src/http/ApiError.ts
|
|
5
|
+
var ApiError = class _ApiError extends Error {
|
|
6
|
+
status;
|
|
7
|
+
problem;
|
|
8
|
+
constructor(status, problem, message) {
|
|
9
|
+
super(message ?? problem?.title ?? problem?.detail ?? `Request failed with status ${status}`);
|
|
10
|
+
this.name = "ApiError";
|
|
11
|
+
this.status = status;
|
|
12
|
+
this.problem = problem;
|
|
13
|
+
Object.setPrototypeOf(this, _ApiError.prototype);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
var INSTANT = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})$/;
|
|
17
|
+
var PLAIN_DATE = /^\d{4}-\d{2}-\d{2}$/;
|
|
18
|
+
var PLAIN_TIME = /^\d{2}:\d{2}(:\d{2})?(\.\d+)?$/;
|
|
19
|
+
var DURATION = /^-?P(?=[\dT])(\d+Y)?(\d+M)?(\d+W)?(\d+D)?(T(\d+H)?(\d+M)?(\d+(\.\d+)?S)?)?$/;
|
|
20
|
+
function temporalReviver(_key, value) {
|
|
21
|
+
if (typeof value !== "string") return value;
|
|
22
|
+
if (INSTANT.test(value)) {
|
|
23
|
+
try {
|
|
24
|
+
return Temporal.Instant.from(value);
|
|
25
|
+
} catch {
|
|
26
|
+
return value;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
if (PLAIN_DATE.test(value)) {
|
|
30
|
+
try {
|
|
31
|
+
return Temporal.PlainDate.from(value);
|
|
32
|
+
} catch {
|
|
33
|
+
return value;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (PLAIN_TIME.test(value)) {
|
|
37
|
+
try {
|
|
38
|
+
return Temporal.PlainTime.from(value);
|
|
39
|
+
} catch {
|
|
40
|
+
return value;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (DURATION.test(value)) {
|
|
44
|
+
try {
|
|
45
|
+
return Temporal.Duration.from(value);
|
|
46
|
+
} catch {
|
|
47
|
+
return value;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return value;
|
|
51
|
+
}
|
|
52
|
+
function parseJson(text) {
|
|
53
|
+
return JSON.parse(text, temporalReviver);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export { ApiError, parseJson, temporalReviver };
|
|
57
|
+
//# sourceMappingURL=index.js.map
|
|
58
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/http/ApiError.ts","../../src/http/temporalReviver.ts"],"names":[],"mappings":";;;;AAGO,IAAM,QAAA,GAAN,MAAM,SAAA,SAAiB,KAAA,CAAM;AAAA,EACzB,MAAA;AAAA,EACA,OAAA;AAAA,EAET,WAAA,CAAY,MAAA,EAAgB,OAAA,EAAgC,OAAA,EAAkB;AAC5E,IAAA,KAAA,CAAM,WAAW,OAAA,EAAS,KAAA,IAAS,SAAS,MAAA,IAAU,CAAA,2BAAA,EAA8B,MAAM,CAAA,CAAE,CAAA;AAC5F,IAAA,IAAA,CAAK,IAAA,GAAO,UAAA;AACZ,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAEf,IAAA,MAAA,CAAO,cAAA,CAAe,IAAA,EAAM,SAAA,CAAS,SAAS,CAAA;AAAA,EAChD;AACF;ACXA,IAAM,OAAA,GAAU,qEAAA;AAChB,IAAM,UAAA,GAAa,qBAAA;AACnB,IAAM,UAAA,GAAa,gCAAA;AAEnB,IAAM,QAAA,GAAW,6EAAA;AAQV,SAAS,eAAA,CAAgB,MAAc,KAAA,EAAyB;AACrE,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,KAAA;AAEtC,EAAA,IAAI,OAAA,CAAQ,IAAA,CAAK,KAAK,CAAA,EAAG;AACvB,IAAA,IAAI;AACF,MAAA,OAAO,QAAA,CAAS,OAAA,CAAQ,IAAA,CAAK,KAAK,CAAA;AAAA,IACpC,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF;AACA,EAAA,IAAI,UAAA,CAAW,IAAA,CAAK,KAAK,CAAA,EAAG;AAC1B,IAAA,IAAI;AACF,MAAA,OAAO,QAAA,CAAS,SAAA,CAAU,IAAA,CAAK,KAAK,CAAA;AAAA,IACtC,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF;AACA,EAAA,IAAI,UAAA,CAAW,IAAA,CAAK,KAAK,CAAA,EAAG;AAC1B,IAAA,IAAI;AACF,MAAA,OAAO,QAAA,CAAS,SAAA,CAAU,IAAA,CAAK,KAAK,CAAA;AAAA,IACtC,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF;AACA,EAAA,IAAI,QAAA,CAAS,IAAA,CAAK,KAAK,CAAA,EAAG;AACxB,IAAA,IAAI;AACF,MAAA,OAAO,QAAA,CAAS,QAAA,CAAS,IAAA,CAAK,KAAK,CAAA;AAAA,IACrC,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF;AACA,EAAA,OAAO,KAAA;AACT;AAGO,SAAS,UAAa,IAAA,EAAiB;AAC5C,EAAA,OAAO,IAAA,CAAK,KAAA,CAAM,IAAA,EAAM,eAAe,CAAA;AACzC","file":"index.js","sourcesContent":["import type { ProblemDetails } from './ProblemDetails';\n\n/** Defines a typed transport error thrown on a non-2xx response (or network status `0`), carrying the HTTP status and parsed problem body. */\nexport class ApiError extends Error {\n readonly status: number;\n readonly problem: ProblemDetails | null;\n\n constructor(status: number, problem: ProblemDetails | null, message?: string) {\n super(message ?? problem?.title ?? problem?.detail ?? `Request failed with status ${status}`);\n this.name = 'ApiError';\n this.status = status;\n this.problem = problem;\n // Restore prototype chain — required when subclassing built-ins under transpiled targets.\n Object.setPrototypeOf(this, ApiError.prototype);\n }\n}\n","import { Temporal } from '@js-temporal/polyfill';\n\n// Strict ISO-8601 shapes. Anchored (^…$) so partial / lenient strings never match — only a\n// wire value that is unambiguously one Temporal kind is upgraded; everything else stays a string.\nconst INSTANT = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2})?(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$/;\nconst PLAIN_DATE = /^\\d{4}-\\d{2}-\\d{2}$/;\nconst PLAIN_TIME = /^\\d{2}:\\d{2}(:\\d{2})?(\\.\\d+)?$/;\n// ISO-8601 duration: sign, `P`, then at least one designator (lookahead rejects a bare `P`).\nconst DURATION = /^-?P(?=[\\dT])(\\d+Y)?(\\d+M)?(\\d+W)?(\\d+D)?(T(\\d+H)?(\\d+M)?(\\d+(\\.\\d+)?S)?)?$/;\n\n/**\n * Upgrades a matching ISO-8601 string to its `Temporal.*` value; returns everything else unchanged.\n * Intended as the reviver argument to `JSON.parse` so inbound date fields arrive as Temporal objects\n * (outbound is automatic via each `Temporal.*.toJSON()`). Each parse is guarded — an ISO-shaped but\n * invalid value (e.g. `2026-13-40`) falls back to the raw string rather than throwing.\n */\nexport function temporalReviver(_key: string, value: unknown): unknown {\n if (typeof value !== 'string') return value;\n\n if (INSTANT.test(value)) {\n try {\n return Temporal.Instant.from(value);\n } catch {\n return value;\n }\n }\n if (PLAIN_DATE.test(value)) {\n try {\n return Temporal.PlainDate.from(value);\n } catch {\n return value;\n }\n }\n if (PLAIN_TIME.test(value)) {\n try {\n return Temporal.PlainTime.from(value);\n } catch {\n return value;\n }\n }\n if (DURATION.test(value)) {\n try {\n return Temporal.Duration.from(value);\n } catch {\n return value;\n }\n }\n return value;\n}\n\n/** Parses a JSON string with {@link temporalReviver} applied, upgrading ISO date fields to `Temporal.*`. */\nexport function parseJson<T>(text: string): T {\n return JSON.parse(text, temporalReviver) as T;\n}\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Upgrades a matching ISO-8601 string to its `Temporal.*` value; returns everything else unchanged.
|
|
3
|
+
* Intended as the reviver argument to `JSON.parse` so inbound date fields arrive as Temporal objects
|
|
4
|
+
* (outbound is automatic via each `Temporal.*.toJSON()`). Each parse is guarded — an ISO-shaped but
|
|
5
|
+
* invalid value (e.g. `2026-13-40`) falls back to the raw string rather than throwing.
|
|
6
|
+
*/
|
|
7
|
+
export declare function temporalReviver(_key: string, value: unknown): unknown;
|
|
8
|
+
/** Parses a JSON string with {@link temporalReviver} applied, upgrading ISO date fields to `Temporal.*`. */
|
|
9
|
+
export declare function parseJson<T>(text: string): T;
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityFeed, ActivityItem, AnimatedNumber, AnnotationMarker, AudioPlayer, AudioWaveform, Avatar, AvatarGroup, Badge, BadgeOverlay, Card, Carousel, CarouselDot, CarouselDots, CarouselNext, CarouselPrev, CarouselSlide, CarouselSlides, CarouselViewport, ChatBubble, Code, Collapsible, CollapsibleContent, CollapsibleTrigger, Comment, CommentThread, Confetti, CountBadge, CountUp, DataGrid, DataTable, DaySeparator, DescriptionList, DiffViewer, EmptyState, EventCalendar, Eyebrow, FeatureCard, Gantt, GradientText, Heading, HeatmapCalendar, Highlight, Image, InfoRow, KeyboardShortcut, List, ListItem, Mark, Marquee, MessageList, MetaInline, MetricChip, NodeEditor, NotificationDot, PDFViewer, PricingCard, Quote, ReactionBar, ScheduleView, ScrollReveal, SectionHeader, Separator, Snippet, Sortable, Sparkline, Stat, Status, StepCard, SwipeActions, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeaderCell, TableRow, Tabs, TabsList, TabsPanel, TabsTab, Text, ThreadView, Tilt, Timeline, TimelineDescription, TimelineItem, TimelineTitle, Tree, TreeGroup, TreeItem, Typewriter, VideoPlayer, avatarVariants, badgeVariants, codeVariants, headingVariants, textVariants } from './chunk-UFTKE5U7.js';
|
|
1
2
|
export { Alert, AlertSimple, Banner, BannerSimple, Callout, InlineSpinner, LiveCursor, LoadingOverlay, LoadingState, MeterBar, NotificationCenter, NotificationItem, OnboardingChecklist, OnboardingChecklistTask, PresenceIndicator, ProgressBar, ProgressCircle, ProgressSteps, Skeleton, StatusIndicator, Toast, ToastSimple, Toaster, Tour, TrendIndicator, TypingIndicator, UndoBar, alertSimpleVariants, bannerSimpleVariants, progressFillVariants, progressTrackVariants, skeletonVariants, toastSimpleVariants, toaster, useOnboardingChecklist, useToaster } from './chunk-VTRPW2QQ.js';
|
|
2
|
-
export { ADDRESS_COUNTRIES, AddressForm, BUILT_IN_EMOJI, BUILT_IN_FONTS, Calendar, CharacterCount, ChatComposer, Checkbox, CheckboxField, CheckboxGroup, ChoiceCard, CodeEditor, ColorArea, ColorField, ColorPicker, ColorSlider, ColorSwatch, ColorSwatchPicker, ColorWheel, Combobox, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxSeparator, CronInput, CurrencyInput, DateField, DatePicker, DateRangePicker, Editable, EditableCancel, EditableInput, EditablePreview, EditableSubmit, EmailInput, EmojiPicker, Field, Fieldset, FilePicker, FileUpload, FontPicker, FormErrorMessage, Field as FormField, FormHelperText, GradientPicker, IconPicker, InputAddon, InputGroup, JSONEditor, KeyboardShortcutPicker, Knob, Label, LabeledInput, Legend, Listbox, ListboxEmpty, ListboxGroup, ListboxItem, ListboxSeparator, MarkdownEditor, MaskedInput, MultiSelect, MultiSelectContent, MultiSelectItem, MultiSelectTags, MultiSelectTrigger, NumberInput, PHONE_COUNTRIES, PasswordInput, PasswordStrength, PercentInput, PhoneInput, PinInput, Radio, RadioField, RadioGroup, RangeCalendar, ReactionPicker, RecurrenceEditor, SearchInput, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Slider, Stepper, StepperList, StepperPanel, StepperStep, Switch, SwitchField, TagsInput, TelInput, TextInput, TextareaInput as Textarea, TextareaInput, TimeField, TimePicker, UrlInput, Wizard, WizardFooter, WizardStep, WizardSteps, colorSwatchVariants, gradientToCss, useWizard } from './chunk-
|
|
3
|
+
export { ADDRESS_COUNTRIES, AddressForm, BUILT_IN_EMOJI, BUILT_IN_FONTS, Calendar, CharacterCount, ChatComposer, Checkbox, CheckboxField, CheckboxGroup, ChoiceCard, CodeEditor, ColorArea, ColorField, ColorPicker, ColorSlider, ColorSwatch, ColorSwatchPicker, ColorWheel, Combobox, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxSeparator, CronInput, CurrencyInput, DateField, DatePicker, DateRangePicker, Editable, EditableCancel, EditableInput, EditablePreview, EditableSubmit, EmailInput, EmojiPicker, Field, Fieldset, FilePicker, FileUpload, FontPicker, FormErrorMessage, Field as FormField, FormHelperText, GradientPicker, IconPicker, InputAddon, InputGroup, JSONEditor, KeyboardShortcutPicker, Knob, Label, LabeledInput, Legend, Listbox, ListboxEmpty, ListboxGroup, ListboxItem, ListboxSeparator, MarkdownEditor, MaskedInput, MultiSelect, MultiSelectContent, MultiSelectItem, MultiSelectTags, MultiSelectTrigger, NumberInput, PHONE_COUNTRIES, PasswordInput, PasswordStrength, PercentInput, PhoneInput, PinInput, Radio, RadioField, RadioGroup, RangeCalendar, ReactionPicker, RecurrenceEditor, SearchInput, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Slider, Stepper, StepperList, StepperPanel, StepperStep, Switch, SwitchField, TagsInput, TelInput, TextInput, TextareaInput as Textarea, TextareaInput, TimeField, TimePicker, UrlInput, Wizard, WizardFooter, WizardStep, WizardSteps, colorSwatchVariants, gradientToCss, useWizard } from './chunk-KD6MJOL5.js';
|
|
4
|
+
export { Kbd, Tag, tagVariants } from './chunk-SIAFOCT4.js';
|
|
3
5
|
export { AppShell, AppShellAside, AppShellContent, AppShellFooter, AppShellHeader, AppShellMain, AppShellSidebar, AspectRatio, Box, Center, Cluster, Container, Divider, Flex, Frame, Grid, HStack, Navbar, Overlay, PullToRefresh, ResizablePanel, ResizablePanels, ResizableSeparator, ScrollArea, Section, Spacer, Stack, Surface, TwoColumn, VStack, containerVariants, dividerVariants, gridVariants, navbarVariants, resolveGridColumns, resolveGridGap, sectionVariants, stackVariants, useAppShell } from './chunk-ORYO55KN.js';
|
|
6
|
+
export { Inline } from './chunk-WKVWOAQV.js';
|
|
4
7
|
export { Spinner, spinnerVariants } from './chunk-KZLEHWAJ.js';
|
|
5
8
|
export { Breadcrumb, CommandPalette, CommandPaletteContent, CommandPaletteEmpty, CommandPaletteGroup, CommandPaletteInput, CommandPaletteItem, CommandPaletteList, CommandPaletteSeparator, ContextMenu, ContextMenuContent, ContextMenuTrigger, DropdownMenu, DropdownMenuContent, DropdownMenuTrigger, Menu, MenuGroup, MenuItem, MenuLabel, MenuSeparator, Menubar, MenubarContent, MenubarMenu, MenubarTrigger, NavItem, NavigationMenu, NavigationMenuContent, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, Pagination, ScrollSpy, TableOfContents, menuItemVariants, menuLabelVariants, menuSeparatorVariants, menuVariants, useScrollSpy } from './chunk-XOUAFZ2E.js';
|
|
6
9
|
import './chunk-UMRRFZ4R.js';
|
|
@@ -10,10 +13,7 @@ export { Modal as Dialog, ModalBody as DialogBody, ModalClose as DialogClose, Mo
|
|
|
10
13
|
import './chunk-OZBLEOLZ.js';
|
|
11
14
|
export { Backdrop } from './chunk-VYFPLQPV.js';
|
|
12
15
|
export { themes_exports as themes } from './chunk-LS4EGKUK.js';
|
|
13
|
-
export { BackToTopButton, Button, ButtonGroup, CopyButton, DisclosureButton, FAB, Link, SegmentedControl, SpeedDial, SpeedDialAction, SpeedDialTrigger, ToggleButton, ToggleButtonGroup, Toolbar, ToolbarButton, ToolbarLink, ToolbarSeparator, buttonVariants, fabVariants, linkVariants, toggleButtonVariants } from './chunk-
|
|
14
|
-
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityFeed, ActivityItem, AnimatedNumber, AnnotationMarker, AudioPlayer, AudioWaveform, Avatar, AvatarGroup, Badge, BadgeOverlay, Card, Carousel, CarouselDot, CarouselDots, CarouselNext, CarouselPrev, CarouselSlide, CarouselSlides, CarouselViewport, ChatBubble, Code, Collapsible, CollapsibleContent, CollapsibleTrigger, Comment, CommentThread, Confetti, CountBadge, CountUp, DataGrid, DataTable, DaySeparator, DescriptionList, DiffViewer, EmptyState, EventCalendar, Eyebrow, FeatureCard, Gantt, GradientText, Heading, HeatmapCalendar, Highlight, Image, InfoRow, KeyboardShortcut, List, ListItem, Mark, Marquee, MessageList, MetaInline, MetricChip, NodeEditor, NotificationDot, PDFViewer, PricingCard, Quote, ReactionBar, ScheduleView, ScrollReveal, SectionHeader, Separator, Snippet, Sortable, Sparkline, Stat, Status, StepCard, SwipeActions, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeaderCell, TableRow, Tabs, TabsList, TabsPanel, TabsTab, Text, ThreadView, Tilt, Timeline, TimelineDescription, TimelineItem, TimelineTitle, Tree, TreeGroup, TreeItem, Typewriter, VideoPlayer, avatarVariants, badgeVariants, codeVariants, headingVariants, textVariants } from './chunk-X3JVVEUJ.js';
|
|
15
|
-
export { Kbd, Tag, tagVariants } from './chunk-EKGOQL75.js';
|
|
16
|
-
export { Inline } from './chunk-WKVWOAQV.js';
|
|
16
|
+
export { BackToTopButton, Button, ButtonGroup, CopyButton, DisclosureButton, FAB, Link, SegmentedControl, SpeedDial, SpeedDialAction, SpeedDialTrigger, ToggleButton, ToggleButtonGroup, Toolbar, ToolbarButton, ToolbarLink, ToolbarSeparator, buttonVariants, fabVariants, linkVariants, toggleButtonVariants } from './chunk-3FJ7WWRB.js';
|
|
17
17
|
export { Tooltip } from './chunk-GPMNI5MG.js';
|
|
18
18
|
export { hooks_exports as hooks } from './chunk-RNHY33US.js';
|
|
19
19
|
export { icons_exports as icons } from './chunk-D7ZFCHX5.js';
|
package/dist/layout/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export { AppShell, AppShellAside, AppShellContent, AppShellFooter, AppShellHeader, AppShellMain, AppShellSidebar, AspectRatio, Box, Center, Cluster, Container, Divider, Flex, Frame, Grid, HStack, Navbar, Overlay, PullToRefresh, ResizablePanel, ResizablePanels, ResizableSeparator, ScrollArea, Section, Spacer, Stack, Surface, TwoColumn, VStack, containerVariants, dividerVariants, gridVariants, navbarVariants, resolveGridColumns, resolveGridGap, sectionVariants, stackVariants, useAppShell } from '../chunk-ORYO55KN.js';
|
|
2
|
+
export { Inline } from '../chunk-WKVWOAQV.js';
|
|
2
3
|
import '../chunk-KZLEHWAJ.js';
|
|
3
4
|
import '../chunk-X5JSX4PU.js';
|
|
4
5
|
import '../chunk-OZBLEOLZ.js';
|
|
5
6
|
import '../chunk-VYFPLQPV.js';
|
|
6
|
-
export { Inline } from '../chunk-WKVWOAQV.js';
|
|
7
7
|
import '../chunk-RNHY33US.js';
|
|
8
8
|
import '../chunk-XSW3NZDD.js';
|
|
9
9
|
import '../chunk-B4X7XXSM.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wow-two-beta/ui",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.71",
|
|
4
4
|
"description": "Beta-forever React UI library for the wow-two ecosystem.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -62,6 +62,11 @@
|
|
|
62
62
|
"import": "./dist/themes/index.js",
|
|
63
63
|
"default": "./dist/themes/index.js"
|
|
64
64
|
},
|
|
65
|
+
"./http": {
|
|
66
|
+
"types": "./dist/http/index.d.ts",
|
|
67
|
+
"import": "./dist/http/index.js",
|
|
68
|
+
"default": "./dist/http/index.js"
|
|
69
|
+
},
|
|
65
70
|
"./actions": {
|
|
66
71
|
"types": "./dist/actions/index.d.ts",
|
|
67
72
|
"import": "./dist/actions/index.js",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/display/kbd/Kbd.tsx","../src/display/tag/Tag.variants.ts","../src/display/tag/Tag.tsx","../src/forms/DateExtensions.ts"],"names":["forwardRef","jsx"],"mappings":"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","file":"chunk-EKGOQL75.js","sourcesContent":["import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\n\nexport type KbdProps = ComponentPropsWithoutRef<'kbd'>;\n\n/**\n * Keyboard key affordance — `<kbd>` styled with subtle border and inset\n * shadow. Single key per `<Kbd>`; chain via `<Kbd>⌘</Kbd> + <Kbd>K</Kbd>`.\n */\nexport const Kbd = forwardRef<HTMLElement, KbdProps>(({ className, ...props }, ref) => (\n <kbd\n ref={ref}\n className={cn(\n 'inline-flex h-5 min-w-5 items-center justify-center rounded-sm border border-border',\n 'bg-muted px-1.5 font-mono text-xs text-muted-foreground shadow-[inset_0_-1px_0_0_rgb(0_0_0/0.05)]',\n className,\n )}\n {...props}\n />\n));\nKbd.displayName = 'Kbd';\n","import { tv, type VariantProps } from '../../utils';\n\nexport const tagVariants = tv({\n base: 'inline-flex items-center gap-1 rounded-md border border-border bg-card px-2 py-0.5 text-xs font-medium text-card-foreground',\n variants: {\n variant: {\n neutral: '',\n brand: 'border-transparent bg-primary-soft text-primary-soft-foreground',\n success: 'border-transparent bg-success-soft text-success-soft-foreground',\n warning: 'border-transparent bg-warning-soft text-warning-soft-foreground',\n danger: 'border-transparent bg-destructive-soft text-destructive-soft-foreground',\n info: 'border-transparent bg-info-soft text-info-soft-foreground',\n },\n },\n defaultVariants: {\n variant: 'neutral',\n },\n});\n\nexport type TagVariants = VariantProps<typeof tagVariants>;\n","import { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { X } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { Icon } from '../../icons';\nimport { tagVariants, type TagVariants } from './Tag.variants';\n\nexport interface TagProps\n extends Omit<ComponentPropsWithoutRef<'span'>, 'children'>,\n TagVariants {\n children?: ReactNode;\n /** Show a close (×) button. Pass a handler to receive the click. */\n onClose?: () => void;\n /** Accessible label for the close button. Default `\"Remove\"`. */\n closeLabel?: string;\n}\n\n/**\n * Pill with an optional close button. The close button is a raw `<button>`\n * to keep the strict atom rule (Tag is L3, so importing Button would make\n * this an atom-on-atom composition).\n */\nexport const Tag = forwardRef<HTMLSpanElement, TagProps>(\n ({ children, onClose, closeLabel = 'Remove', variant, className, ...props }, ref) => (\n <span ref={ref} className={cn(tagVariants({ variant }), className)} {...props}>\n {children}\n {onClose && (\n <button\n type=\"button\"\n aria-label={closeLabel}\n onClick={onClose}\n className=\"-mr-1 inline-flex h-4 w-4 items-center justify-center rounded-sm text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n >\n <Icon icon={X} size={12} />\n </button>\n )}\n </span>\n ),\n);\nTag.displayName = 'Tag';\n","// Shared date helpers for Calendar / DatePicker / DateField / RangeCalendar.\n// Co-located in `forms/` so imports stay within-domain.\n//\n// Temporal-based — the ecosystem standardizes on the Temporal API (dates =\n// `Temporal.*`). `Temporal.PlainDate` carries calendar math (no timezone), so\n// these helpers are inherently local/wall-clock, which is what calendar UIs want.\n// `Temporal.PlainTime` carries hour/minute for the time components.\n\nimport { Temporal } from '@js-temporal/polyfill';\n\nexport const WEEKDAYS_SHORT = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\nexport const MONTHS_LONG = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n];\n\n/** Sunday-anchored column index (0 = Sun … 6 = Sat) for a PlainDate. */\nexport function sundayIndex(d: Temporal.PlainDate): number {\n // Temporal `dayOfWeek` is 1 (Mon) … 7 (Sun); map Sunday to 0 for our Su-first grid.\n return d.dayOfWeek % 7;\n}\n\n/** Today as a PlainDate in the local time zone. */\nexport function today(): Temporal.PlainDate {\n return Temporal.Now.plainDateISO();\n}\n\nexport function isSameDay(\n a: Temporal.PlainDate | null | undefined,\n b: Temporal.PlainDate | null | undefined,\n): boolean {\n if (!a || !b) return false;\n return a.equals(b);\n}\n\nexport function isToday(d: Temporal.PlainDate): boolean {\n return d.equals(today());\n}\n\n/** Add `n` months; Temporal clamps to the target month's last day (Jan 31 +1 → Feb 28). */\nexport function addMonths(d: Temporal.PlainDate, n: number): Temporal.PlainDate {\n return d.add({ months: n });\n}\n\nexport function addDays(d: Temporal.PlainDate, n: number): Temporal.PlainDate {\n return d.add({ days: n });\n}\n\n/** First day of `d`'s month. */\nexport function startOfMonth(d: Temporal.PlainDate): Temporal.PlainDate {\n return d.with({ day: 1 });\n}\n\n/** Number of days in the given year/month (1-indexed month). */\nexport function daysInMonth(year: number, month: number): number {\n return Temporal.PlainDate.from({ year, month, day: 1 }).daysInMonth;\n}\n\n/**\n * Build the 6-week (42-cell) grid that the calendar UI renders.\n * `year`/`month` are 1-indexed (Temporal convention). Cells outside the target\n * month carry `outOfMonth: true`.\n */\nexport function buildMonthGrid(\n year: number,\n month: number,\n): { date: Temporal.PlainDate; outOfMonth: boolean }[] {\n const first = Temporal.PlainDate.from({ year, month, day: 1 });\n const start = first.subtract({ days: sundayIndex(first) });\n const cells: { date: Temporal.PlainDate; outOfMonth: boolean }[] = [];\n for (let i = 0; i < 42; i++) {\n const date = start.add({ days: i });\n cells.push({ date, outOfMonth: date.month !== month });\n }\n return cells;\n}\n\n/** Format PlainDate → \"YYYY-MM-DD\" for a native `<input type=\"date\">` value. */\nexport function formatISODate(d: Temporal.PlainDate | null | undefined): string {\n if (!d) return '';\n return d.toString();\n}\n\n/** Parse \"YYYY-MM-DD\" → PlainDate. Returns null for invalid input. */\nexport function parseISODate(s: string | null | undefined): Temporal.PlainDate | null {\n if (!s) return null;\n if (!/^\\d{4}-\\d{2}-\\d{2}$/.test(s)) return null;\n try {\n return Temporal.PlainDate.from(s, { overflow: 'reject' });\n } catch {\n return null;\n }\n}\n\n/** Format PlainTime → \"HH:MM\" for a native `<input type=\"time\">` value. */\nexport function formatISOTime(t: Temporal.PlainTime | null | undefined): string {\n if (!t) return '';\n return t.toString({ smallestUnit: 'minute' });\n}\n\n/** Parse \"HH:MM\" → PlainTime. Returns null for invalid input. */\nexport function parseISOTime(s: string | null | undefined): Temporal.PlainTime | null {\n if (!s) return null;\n if (!/^\\d{2}:\\d{2}$/.test(s)) return null;\n try {\n return Temporal.PlainTime.from(s, { overflow: 'reject' });\n } catch {\n return null;\n }\n}\n\nexport function clampDate(\n d: Temporal.PlainDate,\n min?: Temporal.PlainDate | null,\n max?: Temporal.PlainDate | null,\n): Temporal.PlainDate {\n if (min && Temporal.PlainDate.compare(d, min) < 0) return min;\n if (max && Temporal.PlainDate.compare(d, max) > 0) return max;\n return d;\n}\n\nexport function isDateDisabled(\n d: Temporal.PlainDate,\n options: {\n min?: Temporal.PlainDate | null;\n max?: Temporal.PlainDate | null;\n isDisabled?: (d: Temporal.PlainDate) => boolean;\n },\n): boolean {\n const { min, max, isDisabled } = options;\n if (min && Temporal.PlainDate.compare(d, min) < 0) return true;\n if (max && Temporal.PlainDate.compare(d, max) > 0) return true;\n if (isDisabled?.(d)) return true;\n return false;\n}\n\nexport function isInRange(\n d: Temporal.PlainDate,\n start: Temporal.PlainDate | null | undefined,\n end: Temporal.PlainDate | null | undefined,\n): boolean {\n if (!start || !end) return false;\n const lo = Temporal.PlainDate.compare(start, end) <= 0 ? start : end;\n const hi = Temporal.PlainDate.compare(start, end) <= 0 ? end : start;\n return Temporal.PlainDate.compare(d, lo) >= 0 && Temporal.PlainDate.compare(d, hi) <= 0;\n}\n"]}
|