@webiny/admin-ui 6.3.0-beta.2 → 6.3.0-beta.3

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.
Files changed (134) hide show
  1. package/Accordion/components/AccordionItemAction.d.ts +1 -1
  2. package/Accordion/components/AccordionItemAction.js.map +1 -1
  3. package/Calendar/Calendar.d.ts +25 -0
  4. package/Calendar/Calendar.js +45 -0
  5. package/Calendar/Calendar.js.map +1 -0
  6. package/Calendar/calendarClassNames.d.ts +2 -0
  7. package/Calendar/calendarClassNames.js +33 -0
  8. package/Calendar/calendarClassNames.js.map +1 -0
  9. package/Calendar/index.d.ts +1 -0
  10. package/Calendar/index.js +3 -0
  11. package/Calendar/index.js.map +1 -0
  12. package/CodeEditor/CodeEditorPrimitive.js +1 -1
  13. package/CodeEditor/CodeEditorPrimitive.js.map +1 -1
  14. package/DatePicker/DatePicker.d.ts +24 -0
  15. package/DatePicker/DatePicker.js +46 -0
  16. package/DatePicker/DatePicker.js.map +1 -0
  17. package/DatePicker/DatePicker.mdx +153 -0
  18. package/DatePicker/DatePicker.stories.d.ts +25 -0
  19. package/DatePicker/DatePicker.stories.js +365 -0
  20. package/DatePicker/DatePicker.stories.js.map +1 -0
  21. package/DatePicker/index.d.ts +2 -0
  22. package/DatePicker/index.js +4 -0
  23. package/DatePicker/index.js.map +1 -0
  24. package/DatePicker/primitives/DateOnlyPicker.d.ts +4 -0
  25. package/DatePicker/primitives/DateOnlyPicker.js +78 -0
  26. package/DatePicker/primitives/DateOnlyPicker.js.map +1 -0
  27. package/DatePicker/primitives/DatePickerPrimitive.d.ts +22 -0
  28. package/DatePicker/primitives/DatePickerPrimitive.js +46 -0
  29. package/DatePicker/primitives/DatePickerPrimitive.js.map +1 -0
  30. package/DatePicker/primitives/DateRangePicker.d.ts +4 -0
  31. package/DatePicker/primitives/DateRangePicker.js +69 -0
  32. package/DatePicker/primitives/DateRangePicker.js.map +1 -0
  33. package/DatePicker/primitives/DateTimePicker.d.ts +7 -0
  34. package/DatePicker/primitives/DateTimePicker.js +129 -0
  35. package/DatePicker/primitives/DateTimePicker.js.map +1 -0
  36. package/DatePicker/primitives/MonthPicker.d.ts +4 -0
  37. package/DatePicker/primitives/MonthPicker.js +60 -0
  38. package/DatePicker/primitives/MonthPicker.js.map +1 -0
  39. package/DatePicker/primitives/MultipleDatesPicker.d.ts +4 -0
  40. package/DatePicker/primitives/MultipleDatesPicker.js +73 -0
  41. package/DatePicker/primitives/MultipleDatesPicker.js.map +1 -0
  42. package/DatePicker/primitives/MultipleMonthsPicker.d.ts +4 -0
  43. package/DatePicker/primitives/MultipleMonthsPicker.js +85 -0
  44. package/DatePicker/primitives/MultipleMonthsPicker.js.map +1 -0
  45. package/DatePicker/primitives/MultipleYearsPicker.d.ts +4 -0
  46. package/DatePicker/primitives/MultipleYearsPicker.js +75 -0
  47. package/DatePicker/primitives/MultipleYearsPicker.js.map +1 -0
  48. package/DatePicker/primitives/TimeOnlyPicker.d.ts +4 -0
  49. package/DatePicker/primitives/TimeOnlyPicker.js +24 -0
  50. package/DatePicker/primitives/TimeOnlyPicker.js.map +1 -0
  51. package/DatePicker/primitives/WeekPicker.d.ts +4 -0
  52. package/DatePicker/primitives/WeekPicker.js +97 -0
  53. package/DatePicker/primitives/WeekPicker.js.map +1 -0
  54. package/DatePicker/primitives/YearPicker.d.ts +4 -0
  55. package/DatePicker/primitives/YearPicker.js +54 -0
  56. package/DatePicker/primitives/YearPicker.js.map +1 -0
  57. package/DatePicker/primitives/components/DatePickerTrigger.d.ts +13 -0
  58. package/DatePicker/primitives/components/DatePickerTrigger.js +45 -0
  59. package/DatePicker/primitives/components/DatePickerTrigger.js.map +1 -0
  60. package/DatePicker/primitives/components/MonthGrid.d.ts +7 -0
  61. package/DatePicker/primitives/components/MonthGrid.js +23 -0
  62. package/DatePicker/primitives/components/MonthGrid.js.map +1 -0
  63. package/DatePicker/primitives/components/SelectedTagsList.d.ts +11 -0
  64. package/DatePicker/primitives/components/SelectedTagsList.js +23 -0
  65. package/DatePicker/primitives/components/SelectedTagsList.js.map +1 -0
  66. package/DatePicker/primitives/components/TimePicker.d.ts +13 -0
  67. package/DatePicker/primitives/components/TimePicker.js +33 -0
  68. package/DatePicker/primitives/components/TimePicker.js.map +1 -0
  69. package/DatePicker/primitives/components/YearGrid.d.ts +8 -0
  70. package/DatePicker/primitives/components/YearGrid.js +46 -0
  71. package/DatePicker/primitives/components/YearGrid.js.map +1 -0
  72. package/DatePicker/primitives/components/YearStepper.d.ts +7 -0
  73. package/DatePicker/primitives/components/YearStepper.js +36 -0
  74. package/DatePicker/primitives/components/YearStepper.js.map +1 -0
  75. package/DatePicker/primitives/components/index.d.ts +6 -0
  76. package/DatePicker/primitives/components/index.js +8 -0
  77. package/DatePicker/primitives/components/index.js.map +1 -0
  78. package/DatePicker/primitives/index.d.ts +1 -0
  79. package/DatePicker/primitives/index.js +3 -0
  80. package/DatePicker/primitives/index.js.map +1 -0
  81. package/DatePicker/utils/constants.d.ts +3 -0
  82. package/DatePicker/utils/constants.js +5 -0
  83. package/DatePicker/utils/constants.js.map +1 -0
  84. package/DatePicker/utils/dateHelpers.d.ts +24 -0
  85. package/DatePicker/utils/dateHelpers.js +184 -0
  86. package/DatePicker/utils/dateHelpers.js.map +1 -0
  87. package/DatePicker/utils/index.d.ts +3 -0
  88. package/DatePicker/utils/index.js +5 -0
  89. package/DatePicker/utils/index.js.map +1 -0
  90. package/DatePicker/utils/types.d.ts +81 -0
  91. package/DatePicker/utils/types.js +3 -0
  92. package/DatePicker/utils/types.js.map +1 -0
  93. package/Dialog/Dialog.d.ts +1 -0
  94. package/Dialog/Dialog.js +9 -3
  95. package/Dialog/Dialog.js.map +1 -1
  96. package/Dialog/components/DialogBody.d.ts +2 -2
  97. package/Dialog/components/DialogBody.js +10 -3
  98. package/Dialog/components/DialogBody.js.map +1 -1
  99. package/Dialog/components/DialogContent.d.ts +3 -0
  100. package/Dialog/components/DialogContent.js +11 -4
  101. package/Dialog/components/DialogContent.js.map +1 -1
  102. package/FilePicker/FilePicker.d.ts +1 -1
  103. package/FilePicker/FilePicker.js.map +1 -1
  104. package/FilePicker/FilePicker.stories.js +4 -5
  105. package/FilePicker/FilePicker.stories.js.map +1 -1
  106. package/FilePicker/domains/FileItem.js +2 -0
  107. package/FilePicker/domains/FileItem.js.map +1 -1
  108. package/List/components/ListItemAction.d.ts +1 -1
  109. package/List/components/ListItemAction.js.map +1 -1
  110. package/List/components/ListItemHandle.d.ts +1 -1
  111. package/List/components/ListItemHandle.js.map +1 -1
  112. package/MultiFilePicker/MultiFilePicker.stories.js +4 -5
  113. package/MultiFilePicker/MultiFilePicker.stories.js.map +1 -1
  114. package/RangeSlider/primitives/RangeSliderPrimitive.js +1 -1
  115. package/RangeSlider/primitives/RangeSliderPrimitive.js.map +1 -1
  116. package/Sidebar/Sidebar.js +1 -1
  117. package/Sidebar/Sidebar.js.map +1 -1
  118. package/Sidebar/components/SidebarContent.js +1 -1
  119. package/Sidebar/components/SidebarContent.js.map +1 -1
  120. package/Sidebar/components/items/SidebarMenuRootButton.js +1 -1
  121. package/Sidebar/components/items/SidebarMenuRootButton.js.map +1 -1
  122. package/Sidebar/components/items/SidebarMenuRootItem.js +2 -1
  123. package/Sidebar/components/items/SidebarMenuRootItem.js.map +1 -1
  124. package/Sidebar/components/items/SidebarMenuSubButton.js +1 -1
  125. package/Sidebar/components/items/SidebarMenuSubButton.js.map +1 -1
  126. package/Tabs/Tabs.js +1 -1
  127. package/Tabs/Tabs.js.map +1 -1
  128. package/exports/admin/ui.d.ts +1 -0
  129. package/exports/admin/ui.js +2 -0
  130. package/exports/admin/ui.js.map +1 -1
  131. package/index.d.ts +2 -0
  132. package/index.js +2 -0
  133. package/index.js.map +1 -1
  134. package/package.json +19 -15
@@ -0,0 +1,24 @@
1
+ export declare function formatDateForDisplay(value: Date | string | number | {
2
+ from?: string;
3
+ to?: string;
4
+ } | Date[] | string[] | number[] | undefined, type: string, displayFormat?: string): string | undefined;
5
+ export declare function defaultYearRange(centerYear?: number): [number, number];
6
+ export declare function formatMonthValue(year: number, month: number): string;
7
+ export declare function parseMonthValue(value: string): {
8
+ year: number;
9
+ month: number;
10
+ } | undefined;
11
+ export declare function formatTimeValue(date: Date): string;
12
+ export declare function parseTimeValue(time: string): {
13
+ hours: number;
14
+ minutes: number;
15
+ } | undefined;
16
+ export declare function toIsoWithTz(date: Date, timezone?: string): string;
17
+ export declare function getLocalTimezone(): string;
18
+ export declare function extractTimezone(isoString: string): string | undefined;
19
+ export declare function toLocalNaive(isoString: string): Date;
20
+ export declare function formatWeekValue(date: Date): string;
21
+ export declare function parseWeekValue(value: string): {
22
+ year: number;
23
+ week: number;
24
+ } | undefined;
@@ -0,0 +1,184 @@
1
+ import { format, getISOWeek, getISOWeekYear, startOfISOWeek, endOfISOWeek } from "date-fns";
2
+ import { DEFAULT_YEAR_RANGE_SIZE, MONTH_NAMES_SHORT } from "./constants.js";
3
+ export function formatDateForDisplay(value, type, displayFormat) {
4
+ if (value === undefined || value === null) {
5
+ return undefined;
6
+ }
7
+ switch (type) {
8
+ case "date":
9
+ return format(new Date(value), displayFormat ?? "PPP");
10
+ case "time":
11
+ return value;
12
+ case "dateTimeLocal":
13
+ return format(new Date(value), displayFormat ?? "PPP p");
14
+ case "dateTimeTz":
15
+ {
16
+ if (!value) {
17
+ return undefined;
18
+ }
19
+ const isoStr = value;
20
+ const tzMatch = isoStr.match(/([+-]\d{2}:\d{2})$/);
21
+ const tz = tzMatch ? `UTC${tzMatch[1]}` : "";
22
+ const dateWithoutTz = isoStr.replace(/[+-]\d{2}:\d{2}$/, "");
23
+ const parts = dateWithoutTz.split("T");
24
+ if (parts.length < 2) {
25
+ return isoStr;
26
+ }
27
+ const datePart = new Date(parts[0] + "T00:00:00");
28
+ const timeParts = parts[1].split(":");
29
+ const hours = Number(timeParts[0]);
30
+ const minutes = timeParts[1] ?? "00";
31
+ const ampm = hours >= 12 ? "PM" : "AM";
32
+ const h12 = hours % 12 || 12;
33
+ if (displayFormat) {
34
+ return `${format(datePart, displayFormat)} ${h12}:${minutes} ${ampm} (${tz})`;
35
+ }
36
+ return `${format(datePart, "PPP")} ${h12}:${minutes} ${ampm} (${tz})`;
37
+ }
38
+ case "month":
39
+ {
40
+ if (displayFormat) {
41
+ const parsed = parseMonthValue(value);
42
+ if (!parsed) {
43
+ return undefined;
44
+ }
45
+ return format(new Date(parsed.year, parsed.month), displayFormat);
46
+ }
47
+ const parsed = parseMonthValue(value);
48
+ if (!parsed) {
49
+ return undefined;
50
+ }
51
+ return `${MONTH_NAMES_SHORT[parsed.month]} ${parsed.year}`;
52
+ }
53
+ case "week":
54
+ {
55
+ const parsed = parseWeekValue(value);
56
+ if (!parsed) {
57
+ return undefined;
58
+ }
59
+ const weekStart = startOfISOWeek(new Date(parsed.year, 0, 4 + (parsed.week - 1) * 7));
60
+ const weekEnd = endOfISOWeek(weekStart);
61
+ if (displayFormat) {
62
+ return `${format(weekStart, displayFormat)} – ${format(weekEnd, displayFormat)}`;
63
+ }
64
+ return `Week ${parsed.week}, ${format(weekStart, "MMM d")} – ${format(weekEnd, "MMM d, yyyy")}`;
65
+ }
66
+ case "year":
67
+ return String(value);
68
+ case "dateRange":
69
+ {
70
+ const range = value;
71
+ const fmt = displayFormat ?? "PPP";
72
+ if (!range.from) {
73
+ return undefined;
74
+ }
75
+ if (!range.to) {
76
+ return format(new Date(range.from), fmt);
77
+ }
78
+ return `${format(new Date(range.from), fmt)} – ${format(new Date(range.to), fmt)}`;
79
+ }
80
+ case "multipleDates":
81
+ {
82
+ const dates = value;
83
+ if (dates.length === 0) {
84
+ return undefined;
85
+ }
86
+ return `${dates.length} date${dates.length > 1 ? "s" : ""} selected`;
87
+ }
88
+ case "multipleMonths":
89
+ {
90
+ const months = value;
91
+ if (months.length === 0) {
92
+ return undefined;
93
+ }
94
+ return `${months.length} month${months.length > 1 ? "s" : ""} selected`;
95
+ }
96
+ case "multipleYears":
97
+ {
98
+ const years = value;
99
+ if (years.length === 0) {
100
+ return undefined;
101
+ }
102
+ return `${years.length} year${years.length > 1 ? "s" : ""} selected`;
103
+ }
104
+ default:
105
+ return undefined;
106
+ }
107
+ }
108
+ export function defaultYearRange(centerYear) {
109
+ const center = centerYear ?? new Date().getFullYear();
110
+ const half = Math.floor(DEFAULT_YEAR_RANGE_SIZE / 2);
111
+ return [center - half, center + half - 1];
112
+ }
113
+ export function formatMonthValue(year, month) {
114
+ return `${year}-${String(month + 1).padStart(2, "0")}`;
115
+ }
116
+ export function parseMonthValue(value) {
117
+ const match = value.match(/^(\d{4})-(\d{2})$/);
118
+ if (!match) {
119
+ return undefined;
120
+ }
121
+ return {
122
+ year: Number(match[1]),
123
+ month: Number(match[2]) - 1
124
+ };
125
+ }
126
+ export function formatTimeValue(date) {
127
+ return format(date, "HH:mm");
128
+ }
129
+ export function parseTimeValue(time) {
130
+ const match = time.match(/^(\d{2}):(\d{2})$/);
131
+ if (!match) {
132
+ return undefined;
133
+ }
134
+ return {
135
+ hours: Number(match[1]),
136
+ minutes: Number(match[2])
137
+ };
138
+ }
139
+ export function toIsoWithTz(date, timezone) {
140
+ if (timezone) {
141
+ return format(date, "yyyy-MM-dd'T'HH:mm:ss") + timezone;
142
+ }
143
+ const offset = -date.getTimezoneOffset();
144
+ const sign = offset >= 0 ? "+" : "-";
145
+ const absOffset = Math.abs(offset);
146
+ const hours = String(Math.floor(absOffset / 60)).padStart(2, "0");
147
+ const minutes = String(absOffset % 60).padStart(2, "0");
148
+ return format(date, "yyyy-MM-dd'T'HH:mm:ss") + `${sign}${hours}:${minutes}`;
149
+ }
150
+ export function getLocalTimezone() {
151
+ const offset = -new Date().getTimezoneOffset();
152
+ const sign = offset >= 0 ? "+" : "-";
153
+ const absOffset = Math.abs(offset);
154
+ const hours = String(Math.floor(absOffset / 60)).padStart(2, "0");
155
+ const minutes = String(absOffset % 60).padStart(2, "0");
156
+ return `${sign}${hours}:${minutes}`;
157
+ }
158
+ export function extractTimezone(isoString) {
159
+ const match = isoString.match(/([+-]\d{2}:\d{2})$/);
160
+ if (match) {
161
+ return match[1];
162
+ }
163
+ return undefined;
164
+ }
165
+ export function toLocalNaive(isoString) {
166
+ return new Date(isoString);
167
+ }
168
+ export function formatWeekValue(date) {
169
+ const week = getISOWeek(date);
170
+ const year = getISOWeekYear(date);
171
+ return `${year}-W${String(week).padStart(2, "0")}`;
172
+ }
173
+ export function parseWeekValue(value) {
174
+ const match = value.match(/^(\d{4})-W(\d{2})$/);
175
+ if (!match) {
176
+ return undefined;
177
+ }
178
+ return {
179
+ year: Number(match[1]),
180
+ week: Number(match[2])
181
+ };
182
+ }
183
+
184
+ //# sourceMappingURL=dateHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["format","getISOWeek","getISOWeekYear","startOfISOWeek","endOfISOWeek","DEFAULT_YEAR_RANGE_SIZE","MONTH_NAMES_SHORT","formatDateForDisplay","value","type","displayFormat","undefined","Date","isoStr","tzMatch","match","tz","dateWithoutTz","replace","parts","split","length","datePart","timeParts","hours","Number","minutes","ampm","h12","parsed","parseMonthValue","year","month","parseWeekValue","weekStart","week","weekEnd","String","range","fmt","from","to","dates","months","years","defaultYearRange","centerYear","center","getFullYear","half","Math","floor","formatMonthValue","padStart","formatTimeValue","date","parseTimeValue","time","toIsoWithTz","timezone","offset","getTimezoneOffset","sign","absOffset","abs","getLocalTimezone","extractTimezone","isoString","toLocalNaive","formatWeekValue"],"sources":["dateHelpers.ts"],"sourcesContent":["import { format, getISOWeek, getISOWeekYear, startOfISOWeek, endOfISOWeek } from \"date-fns\";\nimport { DEFAULT_YEAR_RANGE_SIZE, MONTH_NAMES_SHORT } from \"./constants.js\";\n\nexport function formatDateForDisplay(\n value:\n | Date\n | string\n | number\n | { from?: string; to?: string }\n | Date[]\n | string[]\n | number[]\n | undefined,\n type: string,\n displayFormat?: string\n): string | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n\n switch (type) {\n case \"date\":\n return format(new Date(value as string), displayFormat ?? \"PPP\");\n case \"time\":\n return value as string;\n case \"dateTimeLocal\":\n return format(new Date(value as string), displayFormat ?? \"PPP p\");\n case \"dateTimeTz\": {\n if (!value) {\n return undefined;\n }\n const isoStr = value as string;\n const tzMatch = isoStr.match(/([+-]\\d{2}:\\d{2})$/);\n const tz = tzMatch ? `UTC${tzMatch[1]}` : \"\";\n const dateWithoutTz = isoStr.replace(/[+-]\\d{2}:\\d{2}$/, \"\");\n const parts = dateWithoutTz.split(\"T\");\n if (parts.length < 2) {\n return isoStr;\n }\n const datePart = new Date(parts[0] + \"T00:00:00\");\n const timeParts = parts[1].split(\":\");\n const hours = Number(timeParts[0]);\n const minutes = timeParts[1] ?? \"00\";\n const ampm = hours >= 12 ? \"PM\" : \"AM\";\n const h12 = hours % 12 || 12;\n if (displayFormat) {\n return `${format(datePart, displayFormat)} ${h12}:${minutes} ${ampm} (${tz})`;\n }\n return `${format(datePart, \"PPP\")} ${h12}:${minutes} ${ampm} (${tz})`;\n }\n case \"month\": {\n if (displayFormat) {\n const parsed = parseMonthValue(value as string);\n if (!parsed) {\n return undefined;\n }\n return format(new Date(parsed.year, parsed.month), displayFormat);\n }\n const parsed = parseMonthValue(value as string);\n if (!parsed) {\n return undefined;\n }\n return `${MONTH_NAMES_SHORT[parsed.month]} ${parsed.year}`;\n }\n case \"week\": {\n const parsed = parseWeekValue(value as string);\n if (!parsed) {\n return undefined;\n }\n const weekStart = startOfISOWeek(new Date(parsed.year, 0, 4 + (parsed.week - 1) * 7));\n const weekEnd = endOfISOWeek(weekStart);\n if (displayFormat) {\n return `${format(weekStart, displayFormat)} – ${format(weekEnd, displayFormat)}`;\n }\n return `Week ${parsed.week}, ${format(weekStart, \"MMM d\")} – ${format(weekEnd, \"MMM d, yyyy\")}`;\n }\n case \"year\":\n return String(value);\n case \"dateRange\": {\n const range = value as { from?: string; to?: string };\n const fmt = displayFormat ?? \"PPP\";\n if (!range.from) {\n return undefined;\n }\n if (!range.to) {\n return format(new Date(range.from), fmt);\n }\n return `${format(new Date(range.from), fmt)} – ${format(new Date(range.to), fmt)}`;\n }\n case \"multipleDates\": {\n const dates = value as string[];\n if (dates.length === 0) {\n return undefined;\n }\n return `${dates.length} date${dates.length > 1 ? \"s\" : \"\"} selected`;\n }\n case \"multipleMonths\": {\n const months = value as string[];\n if (months.length === 0) {\n return undefined;\n }\n return `${months.length} month${months.length > 1 ? \"s\" : \"\"} selected`;\n }\n case \"multipleYears\": {\n const years = value as number[];\n if (years.length === 0) {\n return undefined;\n }\n return `${years.length} year${years.length > 1 ? \"s\" : \"\"} selected`;\n }\n default:\n return undefined;\n }\n}\n\nexport function defaultYearRange(centerYear?: number): [number, number] {\n const center = centerYear ?? new Date().getFullYear();\n const half = Math.floor(DEFAULT_YEAR_RANGE_SIZE / 2);\n return [center - half, center + half - 1];\n}\n\nexport function formatMonthValue(year: number, month: number): string {\n return `${year}-${String(month + 1).padStart(2, \"0\")}`;\n}\n\nexport function parseMonthValue(value: string): { year: number; month: number } | undefined {\n const match = value.match(/^(\\d{4})-(\\d{2})$/);\n if (!match) {\n return undefined;\n }\n return { year: Number(match[1]), month: Number(match[2]) - 1 };\n}\n\nexport function formatTimeValue(date: Date): string {\n return format(date, \"HH:mm\");\n}\n\nexport function parseTimeValue(time: string): { hours: number; minutes: number } | undefined {\n const match = time.match(/^(\\d{2}):(\\d{2})$/);\n if (!match) {\n return undefined;\n }\n return { hours: Number(match[1]), minutes: Number(match[2]) };\n}\n\nexport function toIsoWithTz(date: Date, timezone?: string): string {\n if (timezone) {\n return format(date, \"yyyy-MM-dd'T'HH:mm:ss\") + timezone;\n }\n const offset = -date.getTimezoneOffset();\n const sign = offset >= 0 ? \"+\" : \"-\";\n const absOffset = Math.abs(offset);\n const hours = String(Math.floor(absOffset / 60)).padStart(2, \"0\");\n const minutes = String(absOffset % 60).padStart(2, \"0\");\n return format(date, \"yyyy-MM-dd'T'HH:mm:ss\") + `${sign}${hours}:${minutes}`;\n}\n\nexport function getLocalTimezone(): string {\n const offset = -new Date().getTimezoneOffset();\n const sign = offset >= 0 ? \"+\" : \"-\";\n const absOffset = Math.abs(offset);\n const hours = String(Math.floor(absOffset / 60)).padStart(2, \"0\");\n const minutes = String(absOffset % 60).padStart(2, \"0\");\n return `${sign}${hours}:${minutes}`;\n}\n\nexport function extractTimezone(isoString: string): string | undefined {\n const match = isoString.match(/([+-]\\d{2}:\\d{2})$/);\n if (match) {\n return match[1];\n }\n return undefined;\n}\n\nexport function toLocalNaive(isoString: string): Date {\n return new Date(isoString);\n}\n\nexport function formatWeekValue(date: Date): string {\n const week = getISOWeek(date);\n const year = getISOWeekYear(date);\n return `${year}-W${String(week).padStart(2, \"0\")}`;\n}\n\nexport function parseWeekValue(value: string): { year: number; week: number } | undefined {\n const match = value.match(/^(\\d{4})-W(\\d{2})$/);\n if (!match) {\n return undefined;\n }\n return { year: Number(match[1]), week: Number(match[2]) };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ export * from "./types.js";
2
+ export * from "./dateHelpers.js";
3
+ export * from "./constants.js";
@@ -0,0 +1,5 @@
1
+ export * from "./types.js";
2
+ export * from "./dateHelpers.js";
3
+ export * from "./constants.js";
4
+
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./types.js\";\nexport * from \"./dateHelpers.js\";\nexport * from \"./constants.js\";\n"],"mappings":"AAAA;AACA;AACA","ignoreList":[]}
@@ -0,0 +1,81 @@
1
+ import type { InputPrimitiveProps } from "../../Input/index.js";
2
+ interface DatePickerPreset {
3
+ label: string;
4
+ value: () => Date;
5
+ }
6
+ interface DatePickerBaseProps {
7
+ placeholder?: string;
8
+ disabled?: boolean;
9
+ className?: string;
10
+ size?: InputPrimitiveProps["size"];
11
+ variant?: InputPrimitiveProps["variant"];
12
+ invalid?: InputPrimitiveProps["invalid"];
13
+ yearRange?: [number, number];
14
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
15
+ onOpenChange?: (open: boolean) => void;
16
+ displayFormat?: string;
17
+ }
18
+ interface DateOnlyPickerProps extends DatePickerBaseProps {
19
+ type: "date";
20
+ value?: string;
21
+ onChange?: (value: string | undefined) => void;
22
+ presets?: DatePickerPreset[];
23
+ }
24
+ interface TimeOnlyPickerProps extends DatePickerBaseProps {
25
+ type: "time";
26
+ value?: string;
27
+ onChange?: (value: string | undefined) => void;
28
+ }
29
+ interface DateTimeLocalPickerProps extends DatePickerBaseProps {
30
+ type: "dateTimeLocal";
31
+ value?: string;
32
+ onChange?: (value: string | undefined) => void;
33
+ }
34
+ interface DateTimeTzPickerProps extends DatePickerBaseProps {
35
+ type: "dateTimeTz";
36
+ value?: string;
37
+ onChange?: (value: string | undefined) => void;
38
+ }
39
+ interface MonthPickerProps extends DatePickerBaseProps {
40
+ type: "month";
41
+ value?: string;
42
+ onChange?: (value: string | undefined) => void;
43
+ }
44
+ interface WeekPickerProps extends DatePickerBaseProps {
45
+ type: "week";
46
+ value?: string;
47
+ onChange?: (value: string | undefined) => void;
48
+ }
49
+ interface YearPickerProps extends DatePickerBaseProps {
50
+ type: "year";
51
+ value?: number;
52
+ onChange?: (value: number | undefined) => void;
53
+ }
54
+ interface DateRangePickerProps extends DatePickerBaseProps {
55
+ type: "dateRange";
56
+ value?: {
57
+ from?: string;
58
+ to?: string;
59
+ };
60
+ onChange?: (value: {
61
+ from?: string;
62
+ to?: string;
63
+ } | undefined) => void;
64
+ }
65
+ interface MultipleDatesPickerProps extends DatePickerBaseProps {
66
+ type: "multipleDates";
67
+ value?: string[];
68
+ onChange?: (value: string[]) => void;
69
+ }
70
+ interface MultipleMonthsPickerProps extends DatePickerBaseProps {
71
+ type: "multipleMonths";
72
+ value?: string[];
73
+ onChange?: (value: string[]) => void;
74
+ }
75
+ interface MultipleYearsPickerProps extends DatePickerBaseProps {
76
+ type: "multipleYears";
77
+ value?: number[];
78
+ onChange?: (value: number[]) => void;
79
+ }
80
+ type DatePickerPrimitiveProps = DateOnlyPickerProps | TimeOnlyPickerProps | DateTimeLocalPickerProps | DateTimeTzPickerProps | MonthPickerProps | WeekPickerProps | YearPickerProps | DateRangePickerProps | MultipleDatesPickerProps | MultipleMonthsPickerProps | MultipleYearsPickerProps;
81
+ export { type DatePickerPreset, type DatePickerBaseProps, type DatePickerPrimitiveProps, type DateOnlyPickerProps, type TimeOnlyPickerProps, type DateTimeLocalPickerProps, type DateTimeTzPickerProps, type MonthPickerProps, type WeekPickerProps, type YearPickerProps, type DateRangePickerProps, type MultipleDatesPickerProps, type MultipleMonthsPickerProps, type MultipleYearsPickerProps };
@@ -0,0 +1,3 @@
1
+ export {};
2
+
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { InputPrimitiveProps } from \"~/Input/index.js\";\n\ninterface DatePickerPreset {\n label: string;\n value: () => Date;\n}\n\ninterface DatePickerBaseProps {\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n size?: InputPrimitiveProps[\"size\"];\n variant?: InputPrimitiveProps[\"variant\"];\n invalid?: InputPrimitiveProps[\"invalid\"];\n yearRange?: [number, number];\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n onOpenChange?: (open: boolean) => void;\n displayFormat?: string;\n}\n\ninterface DateOnlyPickerProps extends DatePickerBaseProps {\n type: \"date\";\n value?: string;\n onChange?: (value: string | undefined) => void;\n presets?: DatePickerPreset[];\n}\n\ninterface TimeOnlyPickerProps extends DatePickerBaseProps {\n type: \"time\";\n value?: string;\n onChange?: (value: string | undefined) => void;\n}\n\ninterface DateTimeLocalPickerProps extends DatePickerBaseProps {\n type: \"dateTimeLocal\";\n value?: string;\n onChange?: (value: string | undefined) => void;\n}\n\ninterface DateTimeTzPickerProps extends DatePickerBaseProps {\n type: \"dateTimeTz\";\n value?: string;\n onChange?: (value: string | undefined) => void;\n}\n\ninterface MonthPickerProps extends DatePickerBaseProps {\n type: \"month\";\n value?: string;\n onChange?: (value: string | undefined) => void;\n}\n\ninterface WeekPickerProps extends DatePickerBaseProps {\n type: \"week\";\n value?: string;\n onChange?: (value: string | undefined) => void;\n}\n\ninterface YearPickerProps extends DatePickerBaseProps {\n type: \"year\";\n value?: number;\n onChange?: (value: number | undefined) => void;\n}\n\ninterface DateRangePickerProps extends DatePickerBaseProps {\n type: \"dateRange\";\n value?: { from?: string; to?: string };\n onChange?: (value: { from?: string; to?: string } | undefined) => void;\n}\n\ninterface MultipleDatesPickerProps extends DatePickerBaseProps {\n type: \"multipleDates\";\n value?: string[];\n onChange?: (value: string[]) => void;\n}\n\ninterface MultipleMonthsPickerProps extends DatePickerBaseProps {\n type: \"multipleMonths\";\n value?: string[];\n onChange?: (value: string[]) => void;\n}\n\ninterface MultipleYearsPickerProps extends DatePickerBaseProps {\n type: \"multipleYears\";\n value?: number[];\n onChange?: (value: number[]) => void;\n}\n\ntype DatePickerPrimitiveProps =\n | DateOnlyPickerProps\n | TimeOnlyPickerProps\n | DateTimeLocalPickerProps\n | DateTimeTzPickerProps\n | MonthPickerProps\n | WeekPickerProps\n | YearPickerProps\n | DateRangePickerProps\n | MultipleDatesPickerProps\n | MultipleMonthsPickerProps\n | MultipleYearsPickerProps;\n\nexport {\n type DatePickerPreset,\n type DatePickerBaseProps,\n type DatePickerPrimitiveProps,\n type DateOnlyPickerProps,\n type TimeOnlyPickerProps,\n type DateTimeLocalPickerProps,\n type DateTimeTzPickerProps,\n type MonthPickerProps,\n type WeekPickerProps,\n type YearPickerProps,\n type DateRangePickerProps,\n type MultipleDatesPickerProps,\n type MultipleMonthsPickerProps,\n type MultipleYearsPickerProps\n};\n"],"mappings":"","ignoreList":[]}
@@ -8,6 +8,7 @@ interface DialogProps extends React.ComponentPropsWithoutRef<typeof DialogRoot>,
8
8
  showCloseButton?: boolean;
9
9
  dismissible?: boolean;
10
10
  bodyPadding?: boolean;
11
+ scrollable?: boolean;
11
12
  description?: React.ReactNode;
12
13
  children: React.ReactNode;
13
14
  actions?: React.ReactNode;
package/Dialog/Dialog.js CHANGED
@@ -43,6 +43,7 @@ const DialogBase = props => {
43
43
  // Body props.
44
44
  children,
45
45
  bodyPadding,
46
+ scrollable,
46
47
  // Footer props.
47
48
  actions,
48
49
  info,
@@ -85,6 +86,7 @@ const DialogBase = props => {
85
86
  bodyProps: {
86
87
  children,
87
88
  bodyPadding,
89
+ scrollable,
88
90
  size
89
91
  },
90
92
  footerProps: {
@@ -107,9 +109,13 @@ const DialogBase = props => {
107
109
  })), /*#__PURE__*/React.createElement(DialogPortal, null, /*#__PURE__*/React.createElement("div", {
108
110
  "data-role": "dialog",
109
111
  className: "z-overlay absolute"
110
- }, /*#__PURE__*/React.createElement(DialogOverlay, null), /*#__PURE__*/React.createElement(DialogContent, contentProps, /*#__PURE__*/React.createElement(DialogHeader, headerProps), /*#__PURE__*/React.createElement(DialogBody, bodyProps), /*#__PURE__*/React.createElement(DialogFooter, footerProps), closeButtonProps.show && /*#__PURE__*/React.createElement(CloseDialogIconButton, {
111
- size: closeButtonProps.size
112
- })))));
112
+ }, /*#__PURE__*/React.createElement(DialogOverlay, null), /*#__PURE__*/React.createElement(DialogContent, Object.assign({}, contentProps, {
113
+ header: /*#__PURE__*/React.createElement(DialogHeader, headerProps),
114
+ footer: /*#__PURE__*/React.createElement(DialogFooter, footerProps),
115
+ closeButton: closeButtonProps.show ? /*#__PURE__*/React.createElement(CloseDialogIconButton, {
116
+ size: closeButtonProps.size
117
+ }) : undefined
118
+ }), /*#__PURE__*/React.createElement(DialogBody, bodyProps)))));
113
119
  };
114
120
  DialogBase.displayName = "Dialog";
115
121
  const DecoratableDialog = makeDecoratable("Dialog", DialogBase);
@@ -1 +1 @@
1
- {"version":3,"names":["React","makeDecoratable","withStaticProps","DialogContent","DialogHeader","DialogBody","DialogFooter","DialogOverlay","DialogPortal","DialogRoot","DialogTrigger","Icon","ConfirmAction","CancelAction","CloseDialogIconButton","DialogClose","DialogBase","props","rootProps","triggerProps","contentProps","headerProps","bodyProps","footerProps","closeButtonProps","useMemo","defaultOpen","open","onOpenChange","originalOnOpenChange","onClose","onOpen","modal","dir","size","trigger","title","icon","description","children","bodyPadding","actions","info","showCloseButton","rest","createElement","show","Object","assign","asChild","className","displayName","DecoratableDialog","Dialog","Close"],"sources":["Dialog.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { makeDecoratable, withStaticProps } from \"~/utils.js\";\nimport { DialogContent } from \"./components/DialogContent.js\";\nimport { DialogHeader } from \"~/Dialog/components/DialogHeader.js\";\nimport { DialogBody } from \"~/Dialog/components/DialogBody.js\";\nimport { DialogFooter } from \"~/Dialog/components/DialogFooter.js\";\nimport { DialogOverlay } from \"~/Dialog/components/DialogOverlay.js\";\nimport { DialogPortal } from \"./components/DialogPortal.js\";\nimport { DialogRoot } from \"./components/DialogRoot.js\";\nimport { DialogTrigger } from \"./components/DialogTrigger.js\";\nimport { Icon } from \"./components/Icon.js\";\nimport { ConfirmAction } from \"./components/ConfirmAction.js\";\nimport { CancelAction } from \"./components/CancelAction.js\";\nimport { CloseDialogIconButton } from \"~/Dialog/components/CloseDialogIconButton.js\";\nimport { DialogClose } from \"~/Dialog/components/DialogClose.js\";\n\ninterface DialogProps\n extends\n React.ComponentPropsWithoutRef<typeof DialogRoot>,\n Omit<React.ComponentPropsWithoutRef<typeof DialogContent>, \"title\"> {\n trigger?: React.ReactNode;\n title?: React.ReactNode;\n icon?: React.ReactElement;\n showCloseButton?: boolean;\n dismissible?: boolean;\n bodyPadding?: boolean;\n description?: React.ReactNode;\n children: React.ReactNode;\n actions?: React.ReactNode;\n info?: React.ReactNode;\n onClose?: () => void;\n onOpen?: () => void;\n}\n\nconst DialogBase = (props: DialogProps) => {\n const {\n rootProps,\n triggerProps,\n contentProps,\n headerProps,\n bodyProps,\n footerProps,\n closeButtonProps\n } = React.useMemo(() => {\n const {\n // Root props.\n defaultOpen,\n open,\n onOpenChange: originalOnOpenChange,\n onClose,\n onOpen,\n modal,\n dir,\n\n // Shared props.\n size,\n\n // Trigger props.\n trigger,\n\n // Header props.\n title,\n icon,\n description,\n\n // Body props.\n children,\n bodyPadding,\n\n // Footer props.\n actions,\n info,\n\n // Close button props.\n showCloseButton = true,\n\n // Content props.\n ...rest\n } = props;\n\n // Handles dialog open state changes, calling original and onClose / onOpen callbacks as needed\n const onOpenChange = (open: boolean) => {\n originalOnOpenChange && originalOnOpenChange(open);\n\n if (onClose && !open) {\n onClose();\n }\n\n if (onOpen && open) {\n onOpen();\n }\n };\n\n return {\n rootProps: {\n defaultOpen,\n open,\n onOpenChange,\n modal,\n dir,\n size\n },\n triggerProps: {\n // Temporary fix. We need this because `ref` doesn't get passed to components\n // that are decorated with `makeDecoratable`. This will be fixed in the future.\n children: <div>{trigger}</div>\n },\n headerProps: { title, icon, description, size },\n bodyProps: { children, bodyPadding, size },\n footerProps: { info, actions, size },\n closeButtonProps: { show: showCloseButton, size },\n contentProps: { ...rest, size }\n };\n }, [props]);\n\n return (\n <DialogRoot {...rootProps}>\n {triggerProps.children && <DialogTrigger {...triggerProps} asChild />}\n <DialogPortal>\n <div data-role=\"dialog\" className={\"z-overlay absolute\"}>\n <DialogOverlay />\n <DialogContent {...contentProps}>\n <DialogHeader {...headerProps} />\n <DialogBody {...bodyProps} />\n <DialogFooter {...footerProps} />\n {closeButtonProps.show && (\n <CloseDialogIconButton size={closeButtonProps.size} />\n )}\n </DialogContent>\n </div>\n </DialogPortal>\n </DialogRoot>\n );\n};\n\nDialogBase.displayName = \"Dialog\";\n\nconst DecoratableDialog = makeDecoratable(\"Dialog\", DialogBase);\n\nconst Dialog = withStaticProps(DecoratableDialog, {\n ConfirmAction,\n CancelAction,\n Icon,\n Close: DialogClose\n});\n\nexport { Dialog, type DialogProps };\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","makeDecoratable","withStaticProps","DialogContent","DialogHeader","DialogBody","DialogFooter","DialogOverlay","DialogPortal","DialogRoot","DialogTrigger","Icon","ConfirmAction","CancelAction","CloseDialogIconButton","DialogClose","DialogBase","props","rootProps","triggerProps","contentProps","headerProps","bodyProps","footerProps","closeButtonProps","useMemo","defaultOpen","open","onOpenChange","originalOnOpenChange","onClose","onOpen","modal","dir","size","trigger","title","icon","description","children","bodyPadding","scrollable","actions","info","showCloseButton","rest","createElement","show","Object","assign","asChild","className","header","footer","closeButton","undefined","displayName","DecoratableDialog","Dialog","Close"],"sources":["Dialog.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { makeDecoratable, withStaticProps } from \"~/utils.js\";\nimport { DialogContent } from \"./components/DialogContent.js\";\nimport { DialogHeader } from \"~/Dialog/components/DialogHeader.js\";\nimport { DialogBody } from \"~/Dialog/components/DialogBody.js\";\nimport { DialogFooter } from \"~/Dialog/components/DialogFooter.js\";\nimport { DialogOverlay } from \"~/Dialog/components/DialogOverlay.js\";\nimport { DialogPortal } from \"./components/DialogPortal.js\";\nimport { DialogRoot } from \"./components/DialogRoot.js\";\nimport { DialogTrigger } from \"./components/DialogTrigger.js\";\nimport { Icon } from \"./components/Icon.js\";\nimport { ConfirmAction } from \"./components/ConfirmAction.js\";\nimport { CancelAction } from \"./components/CancelAction.js\";\nimport { CloseDialogIconButton } from \"~/Dialog/components/CloseDialogIconButton.js\";\nimport { DialogClose } from \"~/Dialog/components/DialogClose.js\";\n\ninterface DialogProps\n extends\n React.ComponentPropsWithoutRef<typeof DialogRoot>,\n Omit<React.ComponentPropsWithoutRef<typeof DialogContent>, \"title\"> {\n trigger?: React.ReactNode;\n title?: React.ReactNode;\n icon?: React.ReactElement;\n showCloseButton?: boolean;\n dismissible?: boolean;\n bodyPadding?: boolean;\n scrollable?: boolean;\n description?: React.ReactNode;\n children: React.ReactNode;\n actions?: React.ReactNode;\n info?: React.ReactNode;\n onClose?: () => void;\n onOpen?: () => void;\n}\n\nconst DialogBase = (props: DialogProps) => {\n const {\n rootProps,\n triggerProps,\n contentProps,\n headerProps,\n bodyProps,\n footerProps,\n closeButtonProps\n } = React.useMemo(() => {\n const {\n // Root props.\n defaultOpen,\n open,\n onOpenChange: originalOnOpenChange,\n onClose,\n onOpen,\n modal,\n dir,\n\n // Shared props.\n size,\n\n // Trigger props.\n trigger,\n\n // Header props.\n title,\n icon,\n description,\n\n // Body props.\n children,\n bodyPadding,\n scrollable,\n\n // Footer props.\n actions,\n info,\n\n // Close button props.\n showCloseButton = true,\n\n // Content props.\n ...rest\n } = props;\n\n // Handles dialog open state changes, calling original and onClose / onOpen callbacks as needed\n const onOpenChange = (open: boolean) => {\n originalOnOpenChange && originalOnOpenChange(open);\n\n if (onClose && !open) {\n onClose();\n }\n\n if (onOpen && open) {\n onOpen();\n }\n };\n\n return {\n rootProps: {\n defaultOpen,\n open,\n onOpenChange,\n modal,\n dir,\n size\n },\n triggerProps: {\n // Temporary fix. We need this because `ref` doesn't get passed to components\n // that are decorated with `makeDecoratable`. This will be fixed in the future.\n children: <div>{trigger}</div>\n },\n headerProps: { title, icon, description, size },\n bodyProps: { children, bodyPadding, scrollable, size },\n footerProps: { info, actions, size },\n closeButtonProps: { show: showCloseButton, size },\n contentProps: { ...rest, size }\n };\n }, [props]);\n\n return (\n <DialogRoot {...rootProps}>\n {triggerProps.children && <DialogTrigger {...triggerProps} asChild />}\n <DialogPortal>\n <div data-role=\"dialog\" className={\"z-overlay absolute\"}>\n <DialogOverlay />\n <DialogContent\n {...contentProps}\n header={<DialogHeader {...headerProps} />}\n footer={<DialogFooter {...footerProps} />}\n closeButton={\n closeButtonProps.show ? (\n <CloseDialogIconButton size={closeButtonProps.size} />\n ) : undefined\n }\n >\n <DialogBody {...bodyProps} />\n </DialogContent>\n </div>\n </DialogPortal>\n </DialogRoot>\n );\n};\n\nDialogBase.displayName = \"Dialog\";\n\nconst DecoratableDialog = makeDecoratable(\"Dialog\", DialogBase);\n\nconst Dialog = withStaticProps(DecoratableDialog, {\n ConfirmAction,\n CancelAction,\n Icon,\n Close: DialogClose\n});\n\nexport { Dialog, type DialogProps };\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
1
  import * as React from "react";
2
2
  import type { DialogProps } from "../../Dialog/index.js";
3
- export type DialogBodyProps = Pick<DialogProps, "children" | "bodyPadding" | "size">;
4
- export declare const DialogBody: ({ bodyPadding, size, children }: DialogBodyProps) => React.JSX.Element;
3
+ export type DialogBodyProps = Pick<DialogProps, "children" | "bodyPadding" | "scrollable" | "size">;
4
+ export declare const DialogBody: ({ bodyPadding, scrollable, size, children }: DialogBodyProps) => React.JSX.Element;
@@ -1,7 +1,7 @@
1
1
  import * as React from "react";
2
2
  import { cn, cva } from "../../utils.js";
3
- const dialogBodyVariants = cva("flex-1", {
4
- // Flex grows to fill available space - we need this for the body to expand in case of a "fullscreen" dialog.
3
+ import { ScrollArea } from "../../ScrollArea/index.js";
4
+ const dialogBodyVariants = cva("", {
5
5
  variants: {
6
6
  size: {
7
7
  sm: "px-md-extra",
@@ -22,15 +22,22 @@ const dialogBodyVariants = cva("flex-1", {
22
22
  });
23
23
  export const DialogBody = ({
24
24
  bodyPadding,
25
+ scrollable = true,
25
26
  size,
26
27
  children
27
28
  }) => {
28
- return /*#__PURE__*/React.createElement("div", {
29
+ const content = /*#__PURE__*/React.createElement("div", {
29
30
  className: cn(dialogBodyVariants({
30
31
  size,
31
32
  bodyPadding
32
33
  }))
33
34
  }, children);
35
+ if (!scrollable) {
36
+ return content;
37
+ }
38
+ return /*#__PURE__*/React.createElement(ScrollArea, {
39
+ className: "h-full"
40
+ }, content);
34
41
  };
35
42
 
36
43
  //# sourceMappingURL=DialogBody.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","cn","cva","dialogBodyVariants","variants","size","sm","md","lg","xl","full","bodyPadding","true","false","defaultVariants","DialogBody","children","createElement","className"],"sources":["DialogBody.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn, cva } from \"~/utils.js\";\nimport type { DialogProps } from \"~/Dialog/index.js\";\n\nconst dialogBodyVariants = cva(\"flex-1\", {\n // Flex grows to fill available space - we need this for the body to expand in case of a \"fullscreen\" dialog.\n variants: {\n size: {\n sm: \"px-md-extra\",\n md: \"px-md-extra\",\n lg: \"px-lg\",\n xl: \"px-lg\",\n full: \"px-lg\"\n },\n bodyPadding: {\n true: \"\",\n false: \"px-none! py-none!\"\n }\n },\n defaultVariants: {\n size: \"md\",\n bodyPadding: true\n }\n});\n\nexport type DialogBodyProps = Pick<DialogProps, \"children\" | \"bodyPadding\" | \"size\">;\n\nexport const DialogBody = ({ bodyPadding, size, children }: DialogBodyProps) => {\n return <div className={cn(dialogBodyVariants({ size, bodyPadding }))}>{children}</div>;\n};\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,EAAE,EAAEC,GAAG;AAGhB,MAAMC,kBAAkB,GAAGD,GAAG,CAAC,QAAQ,EAAE;EACrC;EACAE,QAAQ,EAAE;IACNC,IAAI,EAAE;MACFC,EAAE,EAAE,aAAa;MACjBC,EAAE,EAAE,aAAa;MACjBC,EAAE,EAAE,OAAO;MACXC,EAAE,EAAE,OAAO;MACXC,IAAI,EAAE;IACV,CAAC;IACDC,WAAW,EAAE;MACTC,IAAI,EAAE,EAAE;MACRC,KAAK,EAAE;IACX;EACJ,CAAC;EACDC,eAAe,EAAE;IACbT,IAAI,EAAE,IAAI;IACVM,WAAW,EAAE;EACjB;AACJ,CAAC,CAAC;AAIF,OAAO,MAAMI,UAAU,GAAGA,CAAC;EAAEJ,WAAW;EAAEN,IAAI;EAAEW;AAA0B,CAAC,KAAK;EAC5E,oBAAOhB,KAAA,CAAAiB,aAAA;IAAKC,SAAS,EAAEjB,EAAE,CAACE,kBAAkB,CAAC;MAAEE,IAAI;MAAEM;IAAY,CAAC,CAAC;EAAE,GAAEK,QAAc,CAAC;AAC1F,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","cn","cva","ScrollArea","dialogBodyVariants","variants","size","sm","md","lg","xl","full","bodyPadding","true","false","defaultVariants","DialogBody","scrollable","children","content","createElement","className"],"sources":["DialogBody.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn, cva } from \"~/utils.js\";\nimport type { DialogProps } from \"~/Dialog/index.js\";\nimport { ScrollArea } from \"~/ScrollArea/index.js\";\n\nconst dialogBodyVariants = cva(\"\", {\n variants: {\n size: {\n sm: \"px-md-extra\",\n md: \"px-md-extra\",\n lg: \"px-lg\",\n xl: \"px-lg\",\n full: \"px-lg\"\n },\n bodyPadding: {\n true: \"\",\n false: \"px-none! py-none!\"\n }\n },\n defaultVariants: {\n size: \"md\",\n bodyPadding: true\n }\n});\n\nexport type DialogBodyProps = Pick<DialogProps, \"children\" | \"bodyPadding\" | \"scrollable\" | \"size\">;\n\nexport const DialogBody = ({ bodyPadding, scrollable = true, size, children }: DialogBodyProps) => {\n const content = <div className={cn(dialogBodyVariants({ size, bodyPadding }))}>{children}</div>;\n\n if (!scrollable) {\n return content;\n }\n\n return <ScrollArea className=\"h-full\">{content}</ScrollArea>;\n};\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,EAAE,EAAEC,GAAG;AAEhB,SAASC,UAAU;AAEnB,MAAMC,kBAAkB,GAAGF,GAAG,CAAC,EAAE,EAAE;EAC/BG,QAAQ,EAAE;IACNC,IAAI,EAAE;MACFC,EAAE,EAAE,aAAa;MACjBC,EAAE,EAAE,aAAa;MACjBC,EAAE,EAAE,OAAO;MACXC,EAAE,EAAE,OAAO;MACXC,IAAI,EAAE;IACV,CAAC;IACDC,WAAW,EAAE;MACTC,IAAI,EAAE,EAAE;MACRC,KAAK,EAAE;IACX;EACJ,CAAC;EACDC,eAAe,EAAE;IACbT,IAAI,EAAE,IAAI;IACVM,WAAW,EAAE;EACjB;AACJ,CAAC,CAAC;AAIF,OAAO,MAAMI,UAAU,GAAGA,CAAC;EAAEJ,WAAW;EAAEK,UAAU,GAAG,IAAI;EAAEX,IAAI;EAAEY;AAA0B,CAAC,KAAK;EAC/F,MAAMC,OAAO,gBAAGnB,KAAA,CAAAoB,aAAA;IAAKC,SAAS,EAAEpB,EAAE,CAACG,kBAAkB,CAAC;MAAEE,IAAI;MAAEM;IAAY,CAAC,CAAC;EAAE,GAAEM,QAAc,CAAC;EAE/F,IAAI,CAACD,UAAU,EAAE;IACb,OAAOE,OAAO;EAClB;EAEA,oBAAOnB,KAAA,CAAAoB,aAAA,CAACjB,UAAU;IAACkB,SAAS,EAAC;EAAQ,GAAEF,OAAoB,CAAC;AAChE,CAAC","ignoreList":[]}
@@ -6,6 +6,9 @@ declare const dialogContentVariants: (props?: ({
6
6
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
7
  export interface DialogContentProps extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>, VariantProps<typeof dialogContentVariants> {
8
8
  dismissible?: boolean;
9
+ header?: React.ReactNode;
10
+ footer?: React.ReactNode;
11
+ closeButton?: React.ReactNode;
9
12
  }
10
13
  declare const DialogContent: React.ForwardRefExoticComponent<DialogContentProps & React.RefAttributes<HTMLDivElement>>;
11
14
  export { DialogContent };
@@ -1,7 +1,7 @@
1
1
  import * as React from "react";
2
2
  import { Dialog as DialogPrimitive } from "radix-ui";
3
3
  import { cn, cva } from "../../utils.js";
4
- const dialogContentVariants = cva(["fixed left-[50%] top-[50%] border-none bg-neutral-base shadow-lg focus-visible:outline-none rounded-xl text-md text-neutral-strong max-h-screen", "translate-x-[-50%] translate-y-[-50%] 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", "focus:outline-none focus-visible:outline-none", "max-w-[calc(100vw-var(--spacing-lg))] max-h-[calc(100vh-var(--spacing-lg))] z-dialog", "overflow-hidden"], {
4
+ const dialogContentVariants = cva(["fixed left-[50%] top-[50%] border-none bg-neutral-base shadow-lg focus-visible:outline-none rounded-xl text-md text-neutral-strong", "translate-x-[-50%] translate-y-[-50%] 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", "focus:outline-none focus-visible:outline-none", "max-w-[calc(100vw-var(--spacing-lg))] max-h-[calc(100vh-var(--spacing-lg))] z-dialog", "grid grid-rows-[auto_1fr_auto] overflow-hidden"], {
5
5
  variants: {
6
6
  size: {
7
7
  sm: "w-[384px]",
@@ -19,6 +19,9 @@ const DialogContent = /*#__PURE__*/React.forwardRef(({
19
19
  className,
20
20
  dismissible,
21
21
  size,
22
+ header,
23
+ footer,
24
+ closeButton,
22
25
  children,
23
26
  ...props
24
27
  }, ref) => {
@@ -39,9 +42,13 @@ const DialogContent = /*#__PURE__*/React.forwardRef(({
39
42
  // TODO: An optional accessible description to be announced when the dialog is opened. At the moment we skip this.
40
43
  ,
41
44
  "aria-describedby": undefined
42
- }), /*#__PURE__*/React.createElement("div", {
43
- className: cn([["flex flex-col justify-between", "w-full max-w-full", "h-full", "relative"]])
44
- }, children));
45
+ }), (header || closeButton) && /*#__PURE__*/React.createElement("div", {
46
+ className: "row-start-1 relative"
47
+ }, header, closeButton), /*#__PURE__*/React.createElement("div", {
48
+ className: "row-start-2 min-h-0 overflow-hidden pr-xs"
49
+ }, children), footer && /*#__PURE__*/React.createElement("div", {
50
+ className: "row-start-3"
51
+ }, footer));
45
52
  });
46
53
  DialogContent.displayName = DialogPrimitive.Content.displayName;
47
54
  export { DialogContent };
@@ -1 +1 @@
1
- {"version":3,"names":["React","Dialog","DialogPrimitive","cn","cva","dialogContentVariants","variants","size","sm","md","lg","xl","full","defaultVariants","DialogContent","forwardRef","className","dismissible","children","props","ref","dismissibleProps","useMemo","onInteractOutside","event","preventDefault","onEscapeKeyDown","createElement","Content","Object","assign","undefined","displayName"],"sources":["DialogContent.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Dialog as DialogPrimitive } from \"radix-ui\";\nimport { cn, cva, type VariantProps } from \"~/utils.js\";\n\nconst dialogContentVariants = cva(\n [\n \"fixed left-[50%] top-[50%] border-none bg-neutral-base shadow-lg focus-visible:outline-none rounded-xl text-md text-neutral-strong max-h-screen\",\n \"translate-x-[-50%] translate-y-[-50%] 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\",\n \"focus:outline-none focus-visible:outline-none\",\n \"max-w-[calc(100vw-var(--spacing-lg))] max-h-[calc(100vh-var(--spacing-lg))] z-dialog\",\n \"overflow-hidden\"\n ],\n {\n variants: {\n size: {\n sm: \"w-[384px]\",\n md: \"w-[520px]\",\n lg: \"w-[640px]\",\n xl: \"w-[800px]\",\n full: \"w-screen h-screen\"\n }\n },\n defaultVariants: {\n size: \"md\"\n }\n }\n);\n\nexport interface DialogContentProps\n extends\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>,\n VariantProps<typeof dialogContentVariants> {\n dismissible?: boolean;\n}\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n DialogContentProps\n>(({ className, dismissible, size, children, ...props }, ref) => {\n const dismissibleProps = React.useMemo<\n Pick<DialogPrimitive.DialogContentProps, \"onInteractOutside\" | \"onEscapeKeyDown\">\n >(() => {\n if (dismissible === false) {\n return {\n onInteractOutside: event => event.preventDefault(),\n onEscapeKeyDown: event => event.preventDefault()\n };\n }\n\n return {};\n }, [dismissible]);\n\n return (\n <DialogPrimitive.Content\n {...dismissibleProps}\n {...props}\n ref={ref}\n className={cn(dialogContentVariants({ size }), className)}\n // TODO: An optional accessible description to be announced when the dialog is opened. At the moment we skip this.\n aria-describedby={undefined}\n >\n <div\n className={cn([\n [\"flex flex-col justify-between\", \"w-full max-w-full\", \"h-full\", \"relative\"]\n ])}\n >\n {children}\n </div>\n </DialogPrimitive.Content>\n );\n});\n\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nexport { DialogContent };\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,MAAM,IAAIC,eAAe,QAAQ,UAAU;AACpD,SAASC,EAAE,EAAEC,GAAG;AAEhB,MAAMC,qBAAqB,GAAGD,GAAG,CAC7B,CACI,iJAAiJ,EACjJ,yOAAyO,EACzO,+CAA+C,EAC/C,sFAAsF,EACtF,iBAAiB,CACpB,EACD;EACIE,QAAQ,EAAE;IACNC,IAAI,EAAE;MACFC,EAAE,EAAE,WAAW;MACfC,EAAE,EAAE,WAAW;MACfC,EAAE,EAAE,WAAW;MACfC,EAAE,EAAE,WAAW;MACfC,IAAI,EAAE;IACV;EACJ,CAAC;EACDC,eAAe,EAAE;IACbN,IAAI,EAAE;EACV;AACJ,CACJ,CAAC;AASD,MAAMO,aAAa,gBAAGd,KAAK,CAACe,UAAU,CAGpC,CAAC;EAAEC,SAAS;EAAEC,WAAW;EAAEV,IAAI;EAAEW,QAAQ;EAAE,GAAGC;AAAM,CAAC,EAAEC,GAAG,KAAK;EAC7D,MAAMC,gBAAgB,GAAGrB,KAAK,CAACsB,OAAO,CAEpC,MAAM;IACJ,IAAIL,WAAW,KAAK,KAAK,EAAE;MACvB,OAAO;QACHM,iBAAiB,EAAEC,KAAK,IAAIA,KAAK,CAACC,cAAc,CAAC,CAAC;QAClDC,eAAe,EAAEF,KAAK,IAAIA,KAAK,CAACC,cAAc,CAAC;MACnD,CAAC;IACL;IAEA,OAAO,CAAC,CAAC;EACb,CAAC,EAAE,CAACR,WAAW,CAAC,CAAC;EAEjB,oBACIjB,KAAA,CAAA2B,aAAA,CAACzB,eAAe,CAAC0B,OAAO,EAAAC,MAAA,CAAAC,MAAA,KAChBT,gBAAgB,EAChBF,KAAK;IACTC,GAAG,EAAEA,GAAI;IACTJ,SAAS,EAAEb,EAAE,CAACE,qBAAqB,CAAC;MAAEE;IAAK,CAAC,CAAC,EAAES,SAAS;IACxD;IAAA;IACA,oBAAkBe;EAAU,iBAE5B/B,KAAA,CAAA2B,aAAA;IACIX,SAAS,EAAEb,EAAE,CAAC,CACV,CAAC,+BAA+B,EAAE,mBAAmB,EAAE,QAAQ,EAAE,UAAU,CAAC,CAC/E;EAAE,GAEFe,QACA,CACgB,CAAC;AAElC,CAAC,CAAC;AAEFJ,aAAa,CAACkB,WAAW,GAAG9B,eAAe,CAAC0B,OAAO,CAACI,WAAW;AAE/D,SAASlB,aAAa","ignoreList":[]}
1
+ {"version":3,"names":["React","Dialog","DialogPrimitive","cn","cva","dialogContentVariants","variants","size","sm","md","lg","xl","full","defaultVariants","DialogContent","forwardRef","className","dismissible","header","footer","closeButton","children","props","ref","dismissibleProps","useMemo","onInteractOutside","event","preventDefault","onEscapeKeyDown","createElement","Content","Object","assign","undefined","displayName"],"sources":["DialogContent.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Dialog as DialogPrimitive } from \"radix-ui\";\nimport { cn, cva, type VariantProps } from \"~/utils.js\";\n\nconst dialogContentVariants = cva(\n [\n \"fixed left-[50%] top-[50%] border-none bg-neutral-base shadow-lg focus-visible:outline-none rounded-xl text-md text-neutral-strong\",\n \"translate-x-[-50%] translate-y-[-50%] 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\",\n \"focus:outline-none focus-visible:outline-none\",\n \"max-w-[calc(100vw-var(--spacing-lg))] max-h-[calc(100vh-var(--spacing-lg))] z-dialog\",\n \"grid grid-rows-[auto_1fr_auto] overflow-hidden\"\n ],\n {\n variants: {\n size: {\n sm: \"w-[384px]\",\n md: \"w-[520px]\",\n lg: \"w-[640px]\",\n xl: \"w-[800px]\",\n full: \"w-screen h-screen\"\n }\n },\n defaultVariants: {\n size: \"md\"\n }\n }\n);\n\nexport interface DialogContentProps\n extends\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>,\n VariantProps<typeof dialogContentVariants> {\n dismissible?: boolean;\n header?: React.ReactNode;\n footer?: React.ReactNode;\n closeButton?: React.ReactNode;\n}\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n DialogContentProps\n>(({ className, dismissible, size, header, footer, closeButton, children, ...props }, ref) => {\n const dismissibleProps = React.useMemo<\n Pick<DialogPrimitive.DialogContentProps, \"onInteractOutside\" | \"onEscapeKeyDown\">\n >(() => {\n if (dismissible === false) {\n return {\n onInteractOutside: event => event.preventDefault(),\n onEscapeKeyDown: event => event.preventDefault()\n };\n }\n\n return {};\n }, [dismissible]);\n\n return (\n <DialogPrimitive.Content\n {...dismissibleProps}\n {...props}\n ref={ref}\n className={cn(dialogContentVariants({ size }), className)}\n // TODO: An optional accessible description to be announced when the dialog is opened. At the moment we skip this.\n aria-describedby={undefined}\n >\n {(header || closeButton) && (\n <div className=\"row-start-1 relative\">\n {header}\n {closeButton}\n </div>\n )}\n <div className=\"row-start-2 min-h-0 overflow-hidden pr-xs\">{children}</div>\n {footer && <div className=\"row-start-3\">{footer}</div>}\n </DialogPrimitive.Content>\n );\n});\n\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nexport { DialogContent };\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,MAAM,IAAIC,eAAe,QAAQ,UAAU;AACpD,SAASC,EAAE,EAAEC,GAAG;AAEhB,MAAMC,qBAAqB,GAAGD,GAAG,CAC7B,CACI,oIAAoI,EACpI,yOAAyO,EACzO,+CAA+C,EAC/C,sFAAsF,EACtF,gDAAgD,CACnD,EACD;EACIE,QAAQ,EAAE;IACNC,IAAI,EAAE;MACFC,EAAE,EAAE,WAAW;MACfC,EAAE,EAAE,WAAW;MACfC,EAAE,EAAE,WAAW;MACfC,EAAE,EAAE,WAAW;MACfC,IAAI,EAAE;IACV;EACJ,CAAC;EACDC,eAAe,EAAE;IACbN,IAAI,EAAE;EACV;AACJ,CACJ,CAAC;AAYD,MAAMO,aAAa,gBAAGd,KAAK,CAACe,UAAU,CAGpC,CAAC;EAAEC,SAAS;EAAEC,WAAW;EAAEV,IAAI;EAAEW,MAAM;EAAEC,MAAM;EAAEC,WAAW;EAAEC,QAAQ;EAAE,GAAGC;AAAM,CAAC,EAAEC,GAAG,KAAK;EAC1F,MAAMC,gBAAgB,GAAGxB,KAAK,CAACyB,OAAO,CAEpC,MAAM;IACJ,IAAIR,WAAW,KAAK,KAAK,EAAE;MACvB,OAAO;QACHS,iBAAiB,EAAEC,KAAK,IAAIA,KAAK,CAACC,cAAc,CAAC,CAAC;QAClDC,eAAe,EAAEF,KAAK,IAAIA,KAAK,CAACC,cAAc,CAAC;MACnD,CAAC;IACL;IAEA,OAAO,CAAC,CAAC;EACb,CAAC,EAAE,CAACX,WAAW,CAAC,CAAC;EAEjB,oBACIjB,KAAA,CAAA8B,aAAA,CAAC5B,eAAe,CAAC6B,OAAO,EAAAC,MAAA,CAAAC,MAAA,KAChBT,gBAAgB,EAChBF,KAAK;IACTC,GAAG,EAAEA,GAAI;IACTP,SAAS,EAAEb,EAAE,CAACE,qBAAqB,CAAC;MAAEE;IAAK,CAAC,CAAC,EAAES,SAAS;IACxD;IAAA;IACA,oBAAkBkB;EAAU,IAE3B,CAAChB,MAAM,IAAIE,WAAW,kBACnBpB,KAAA,CAAA8B,aAAA;IAAKd,SAAS,EAAC;EAAsB,GAChCE,MAAM,EACNE,WACA,CACR,eACDpB,KAAA,CAAA8B,aAAA;IAAKd,SAAS,EAAC;EAA2C,GAAEK,QAAc,CAAC,EAC1EF,MAAM,iBAAInB,KAAA,CAAA8B,aAAA;IAAKd,SAAS,EAAC;EAAa,GAAEG,MAAY,CAChC,CAAC;AAElC,CAAC,CAAC;AAEFL,aAAa,CAACqB,WAAW,GAAGjC,eAAe,CAAC6B,OAAO,CAACI,WAAW;AAE/D,SAASrB,aAAa","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
2
  import { type FilePickerPrimitiveProps } from "./primitives/index.js";
3
3
  import { type FormComponentProps } from "../FormComponent/index.js";
4
- type FilePickerProps = FilePickerPrimitiveProps & FormComponentProps;
4
+ type FilePickerProps = FilePickerPrimitiveProps & Omit<FormComponentProps, "value">;
5
5
  declare const FilePicker: (({ label, hint, description, note, required, disabled, validation, validate, onBlur: originalOnBlur, type, ...props }: FilePickerProps) => React.JSX.Element) & {
6
6
  original: ({ label, hint, description, note, required, disabled, validation, validate, onBlur: originalOnBlur, type, ...props }: FilePickerProps) => React.JSX.Element;
7
7
  originalName: string;
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useMemo","makeDecoratable","withStaticProps","FilePickerDescription","FilePickerLabel","FilePickerPrimitive","FormComponentErrorMessage","FormComponentNote","ImagePreview","RichItemPreview","TextOnlyPreview","BaseFilePicker","label","hint","description","note","required","disabled","validation","validate","onBlur","originalOnBlur","type","props","isValid","validationIsValid","message","validationMessage","invalid","e","persist","createElement","className","Fragment","Object","assign","text","DecoratableFilePicker","FilePicker","Preview","Image","RichItem","TextOnly"],"sources":["FilePicker.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from \"react\";\nimport { makeDecoratable, withStaticProps } from \"~/utils.js\";\nimport {\n FilePickerDescription,\n FilePickerLabel,\n FilePickerPrimitive,\n type FilePickerPrimitiveProps\n} from \"./primitives/index.js\";\nimport {\n FormComponentErrorMessage,\n FormComponentNote,\n type FormComponentProps\n} from \"~/FormComponent/index.js\";\nimport {\n ImagePreview,\n RichItemPreview,\n TextOnlyPreview\n} from \"~/FilePicker/primitives/components/index.js\";\n\ntype FilePickerProps = FilePickerPrimitiveProps & FormComponentProps;\n\nconst BaseFilePicker = ({\n label,\n hint,\n description,\n note,\n required,\n disabled,\n validation,\n validate,\n onBlur: originalOnBlur,\n type = \"area\",\n ...props\n}: FilePickerProps) => {\n const { isValid: validationIsValid, message: validationMessage } = validation || {};\n const invalid = useMemo(() => validationIsValid === false, [validationIsValid]);\n\n const onBlur = useCallback(\n async (e: React.FocusEvent<HTMLInputElement>) => {\n if (validate) {\n // Since we are accessing event in an async operation, we need to persist it.\n // See https://reactjs.org/docs/events.html#event-pooling.\n e.persist();\n await validate();\n }\n originalOnBlur && originalOnBlur(e);\n },\n [validate, originalOnBlur]\n );\n\n return (\n <div className={\"w-full\"}>\n {type !== \"area\" && (\n <>\n <FilePickerLabel\n label={label}\n hint={hint}\n required={required}\n disabled={disabled}\n invalid={invalid}\n />\n <FilePickerDescription description={description} disabled={disabled} />\n </>\n )}\n <FilePickerPrimitive\n {...props}\n label={label}\n description={description}\n disabled={disabled}\n invalid={invalid}\n onBlur={onBlur}\n type={type}\n />\n <FormComponentErrorMessage\n text={validationMessage}\n invalid={invalid}\n disabled={disabled}\n />\n <FormComponentNote text={note} disabled={disabled} />\n </div>\n );\n};\n\nconst DecoratableFilePicker = makeDecoratable(\"FilePicker\", BaseFilePicker);\n\nconst FilePicker = withStaticProps(DecoratableFilePicker, {\n Preview: {\n Image: ImagePreview,\n RichItem: RichItemPreview,\n TextOnly: TextOnlyPreview\n }\n});\nexport { FilePicker, type FilePickerProps };\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACnD,SAASC,eAAe,EAAEC,eAAe;AACzC,SACIC,qBAAqB,EACrBC,eAAe,EACfC,mBAAmB;AAGvB,SACIC,yBAAyB,EACzBC,iBAAiB;AAGrB,SACIC,YAAY,EACZC,eAAe,EACfC,eAAe;AAKnB,MAAMC,cAAc,GAAGA,CAAC;EACpBC,KAAK;EACLC,IAAI;EACJC,WAAW;EACXC,IAAI;EACJC,QAAQ;EACRC,QAAQ;EACRC,UAAU;EACVC,QAAQ;EACRC,MAAM,EAAEC,cAAc;EACtBC,IAAI,GAAG,MAAM;EACb,GAAGC;AACU,CAAC,KAAK;EACnB,MAAM;IAAEC,OAAO,EAAEC,iBAAiB;IAAEC,OAAO,EAAEC;EAAkB,CAAC,GAAGT,UAAU,IAAI,CAAC,CAAC;EACnF,MAAMU,OAAO,GAAG5B,OAAO,CAAC,MAAMyB,iBAAiB,KAAK,KAAK,EAAE,CAACA,iBAAiB,CAAC,CAAC;EAE/E,MAAML,MAAM,GAAGrB,WAAW,CACtB,MAAO8B,CAAqC,IAAK;IAC7C,IAAIV,QAAQ,EAAE;MACV;MACA;MACAU,CAAC,CAACC,OAAO,CAAC,CAAC;MACX,MAAMX,QAAQ,CAAC,CAAC;IACpB;IACAE,cAAc,IAAIA,cAAc,CAACQ,CAAC,CAAC;EACvC,CAAC,EACD,CAACV,QAAQ,EAAEE,cAAc,CAC7B,CAAC;EAED,oBACIvB,KAAA,CAAAiC,aAAA;IAAKC,SAAS,EAAE;EAAS,GACpBV,IAAI,KAAK,MAAM,iBACZxB,KAAA,CAAAiC,aAAA,CAAAjC,KAAA,CAAAmC,QAAA,qBACInC,KAAA,CAAAiC,aAAA,CAAC3B,eAAe;IACZQ,KAAK,EAAEA,KAAM;IACbC,IAAI,EAAEA,IAAK;IACXG,QAAQ,EAAEA,QAAS;IACnBC,QAAQ,EAAEA,QAAS;IACnBW,OAAO,EAAEA;EAAQ,CACpB,CAAC,eACF9B,KAAA,CAAAiC,aAAA,CAAC5B,qBAAqB;IAACW,WAAW,EAAEA,WAAY;IAACG,QAAQ,EAAEA;EAAS,CAAE,CACxE,CACL,eACDnB,KAAA,CAAAiC,aAAA,CAAC1B,mBAAmB,EAAA6B,MAAA,CAAAC,MAAA,KACZZ,KAAK;IACTX,KAAK,EAAEA,KAAM;IACbE,WAAW,EAAEA,WAAY;IACzBG,QAAQ,EAAEA,QAAS;IACnBW,OAAO,EAAEA,OAAQ;IACjBR,MAAM,EAAEA,MAAO;IACfE,IAAI,EAAEA;EAAK,EACd,CAAC,eACFxB,KAAA,CAAAiC,aAAA,CAACzB,yBAAyB;IACtB8B,IAAI,EAAET,iBAAkB;IACxBC,OAAO,EAAEA,OAAQ;IACjBX,QAAQ,EAAEA;EAAS,CACtB,CAAC,eACFnB,KAAA,CAAAiC,aAAA,CAACxB,iBAAiB;IAAC6B,IAAI,EAAErB,IAAK;IAACE,QAAQ,EAAEA;EAAS,CAAE,CACnD,CAAC;AAEd,CAAC;AAED,MAAMoB,qBAAqB,GAAGpC,eAAe,CAAC,YAAY,EAAEU,cAAc,CAAC;AAE3E,MAAM2B,UAAU,GAAGpC,eAAe,CAACmC,qBAAqB,EAAE;EACtDE,OAAO,EAAE;IACLC,KAAK,EAAEhC,YAAY;IACnBiC,QAAQ,EAAEhC,eAAe;IACzBiC,QAAQ,EAAEhC;EACd;AACJ,CAAC,CAAC;AACF,SAAS4B,UAAU","ignoreList":[]}
1
+ {"version":3,"names":["React","useCallback","useMemo","makeDecoratable","withStaticProps","FilePickerDescription","FilePickerLabel","FilePickerPrimitive","FormComponentErrorMessage","FormComponentNote","ImagePreview","RichItemPreview","TextOnlyPreview","BaseFilePicker","label","hint","description","note","required","disabled","validation","validate","onBlur","originalOnBlur","type","props","isValid","validationIsValid","message","validationMessage","invalid","e","persist","createElement","className","Fragment","Object","assign","text","DecoratableFilePicker","FilePicker","Preview","Image","RichItem","TextOnly"],"sources":["FilePicker.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from \"react\";\nimport { makeDecoratable, withStaticProps } from \"~/utils.js\";\nimport {\n FilePickerDescription,\n FilePickerLabel,\n FilePickerPrimitive,\n type FilePickerPrimitiveProps\n} from \"./primitives/index.js\";\nimport {\n FormComponentErrorMessage,\n FormComponentNote,\n type FormComponentProps\n} from \"~/FormComponent/index.js\";\nimport {\n ImagePreview,\n RichItemPreview,\n TextOnlyPreview\n} from \"~/FilePicker/primitives/components/index.js\";\n\ntype FilePickerProps = FilePickerPrimitiveProps & Omit<FormComponentProps, \"value\">;\n\nconst BaseFilePicker = ({\n label,\n hint,\n description,\n note,\n required,\n disabled,\n validation,\n validate,\n onBlur: originalOnBlur,\n type = \"area\",\n ...props\n}: FilePickerProps) => {\n const { isValid: validationIsValid, message: validationMessage } = validation || {};\n const invalid = useMemo(() => validationIsValid === false, [validationIsValid]);\n\n const onBlur = useCallback(\n async (e: React.FocusEvent<HTMLInputElement>) => {\n if (validate) {\n // Since we are accessing event in an async operation, we need to persist it.\n // See https://reactjs.org/docs/events.html#event-pooling.\n e.persist();\n await validate();\n }\n originalOnBlur && originalOnBlur(e);\n },\n [validate, originalOnBlur]\n );\n\n return (\n <div className={\"w-full\"}>\n {type !== \"area\" && (\n <>\n <FilePickerLabel\n label={label}\n hint={hint}\n required={required}\n disabled={disabled}\n invalid={invalid}\n />\n <FilePickerDescription description={description} disabled={disabled} />\n </>\n )}\n <FilePickerPrimitive\n {...props}\n label={label}\n description={description}\n disabled={disabled}\n invalid={invalid}\n onBlur={onBlur}\n type={type}\n />\n <FormComponentErrorMessage\n text={validationMessage}\n invalid={invalid}\n disabled={disabled}\n />\n <FormComponentNote text={note} disabled={disabled} />\n </div>\n );\n};\n\nconst DecoratableFilePicker = makeDecoratable(\"FilePicker\", BaseFilePicker);\n\nconst FilePicker = withStaticProps(DecoratableFilePicker, {\n Preview: {\n Image: ImagePreview,\n RichItem: RichItemPreview,\n TextOnly: TextOnlyPreview\n }\n});\nexport { FilePicker, type FilePickerProps };\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACnD,SAASC,eAAe,EAAEC,eAAe;AACzC,SACIC,qBAAqB,EACrBC,eAAe,EACfC,mBAAmB;AAGvB,SACIC,yBAAyB,EACzBC,iBAAiB;AAGrB,SACIC,YAAY,EACZC,eAAe,EACfC,eAAe;AAKnB,MAAMC,cAAc,GAAGA,CAAC;EACpBC,KAAK;EACLC,IAAI;EACJC,WAAW;EACXC,IAAI;EACJC,QAAQ;EACRC,QAAQ;EACRC,UAAU;EACVC,QAAQ;EACRC,MAAM,EAAEC,cAAc;EACtBC,IAAI,GAAG,MAAM;EACb,GAAGC;AACU,CAAC,KAAK;EACnB,MAAM;IAAEC,OAAO,EAAEC,iBAAiB;IAAEC,OAAO,EAAEC;EAAkB,CAAC,GAAGT,UAAU,IAAI,CAAC,CAAC;EACnF,MAAMU,OAAO,GAAG5B,OAAO,CAAC,MAAMyB,iBAAiB,KAAK,KAAK,EAAE,CAACA,iBAAiB,CAAC,CAAC;EAE/E,MAAML,MAAM,GAAGrB,WAAW,CACtB,MAAO8B,CAAqC,IAAK;IAC7C,IAAIV,QAAQ,EAAE;MACV;MACA;MACAU,CAAC,CAACC,OAAO,CAAC,CAAC;MACX,MAAMX,QAAQ,CAAC,CAAC;IACpB;IACAE,cAAc,IAAIA,cAAc,CAACQ,CAAC,CAAC;EACvC,CAAC,EACD,CAACV,QAAQ,EAAEE,cAAc,CAC7B,CAAC;EAED,oBACIvB,KAAA,CAAAiC,aAAA;IAAKC,SAAS,EAAE;EAAS,GACpBV,IAAI,KAAK,MAAM,iBACZxB,KAAA,CAAAiC,aAAA,CAAAjC,KAAA,CAAAmC,QAAA,qBACInC,KAAA,CAAAiC,aAAA,CAAC3B,eAAe;IACZQ,KAAK,EAAEA,KAAM;IACbC,IAAI,EAAEA,IAAK;IACXG,QAAQ,EAAEA,QAAS;IACnBC,QAAQ,EAAEA,QAAS;IACnBW,OAAO,EAAEA;EAAQ,CACpB,CAAC,eACF9B,KAAA,CAAAiC,aAAA,CAAC5B,qBAAqB;IAACW,WAAW,EAAEA,WAAY;IAACG,QAAQ,EAAEA;EAAS,CAAE,CACxE,CACL,eACDnB,KAAA,CAAAiC,aAAA,CAAC1B,mBAAmB,EAAA6B,MAAA,CAAAC,MAAA,KACZZ,KAAK;IACTX,KAAK,EAAEA,KAAM;IACbE,WAAW,EAAEA,WAAY;IACzBG,QAAQ,EAAEA,QAAS;IACnBW,OAAO,EAAEA,OAAQ;IACjBR,MAAM,EAAEA,MAAO;IACfE,IAAI,EAAEA;EAAK,EACd,CAAC,eACFxB,KAAA,CAAAiC,aAAA,CAACzB,yBAAyB;IACtB8B,IAAI,EAAET,iBAAkB;IACxBC,OAAO,EAAEA,OAAQ;IACjBX,QAAQ,EAAEA;EAAS,CACtB,CAAC,eACFnB,KAAA,CAAAiC,aAAA,CAACxB,iBAAiB;IAAC6B,IAAI,EAAErB,IAAK;IAACE,QAAQ,EAAEA;EAAS,CAAE,CACnD,CAAC;AAEd,CAAC;AAED,MAAMoB,qBAAqB,GAAGpC,eAAe,CAAC,YAAY,EAAEU,cAAc,CAAC;AAE3E,MAAM2B,UAAU,GAAGpC,eAAe,CAACmC,qBAAqB,EAAE;EACtDE,OAAO,EAAE;IACLC,KAAK,EAAEhC,YAAY;IACnBiC,QAAQ,EAAEhC,eAAe;IACzBiC,QAAQ,EAAEhC;EACd;AACJ,CAAC,CAAC;AACF,SAAS4B,UAAU","ignoreList":[]}