@torpor/ui 0.3.7 → 1.0.0

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 (346) hide show
  1. package/README.md +83 -7
  2. package/dist/Accordion/Accordion.torp +43 -165
  3. package/dist/Accordion/AccordionContent.torp +6 -6
  4. package/dist/Accordion/AccordionHeader.torp +7 -11
  5. package/dist/Accordion/AccordionItem.torp +24 -24
  6. package/dist/Accordion/AccordionTrigger.torp +17 -8
  7. package/dist/Accordion/AccordionTypes.ts +6 -6
  8. package/dist/Accordion/index.d.ts +23 -25
  9. package/dist/Accordion/index.js +6 -22
  10. package/dist/Breadcrumb/Breadcrumb.torp +12 -10
  11. package/dist/Breadcrumb/BreadcrumbItem.torp +6 -6
  12. package/dist/Breadcrumb/BreadcrumbList.torp +21 -0
  13. package/dist/Breadcrumb/BreadcrumbSeparator.torp +4 -4
  14. package/dist/Breadcrumb/index.d.ts +39 -15
  15. package/dist/Breadcrumb/index.js +5 -14
  16. package/dist/Calendar/Calendar.torp +163 -156
  17. package/dist/Calendar/CalendarDay.torp +91 -45
  18. package/dist/Calendar/CalendarDayHeader.torp +36 -0
  19. package/dist/Calendar/CalendarGrid.torp +104 -0
  20. package/dist/Calendar/CalendarGridHeader.torp +43 -0
  21. package/dist/Calendar/CalendarHeader.torp +48 -0
  22. package/dist/Calendar/CalendarHeaderTrigger.torp +54 -0
  23. package/dist/Calendar/CalendarTypes.ts +25 -4
  24. package/dist/Calendar/buildDays.ts +54 -0
  25. package/dist/Calendar/index.d.ts +191 -5
  26. package/dist/Calendar/index.js +8 -10
  27. package/dist/Carousel/Carousel.torp +180 -0
  28. package/dist/Carousel/CarouselIndicators.torp +65 -0
  29. package/dist/Carousel/CarouselNext.torp +43 -0
  30. package/dist/Carousel/CarouselPrevious.torp +44 -0
  31. package/dist/Carousel/CarouselSlide.torp +57 -0
  32. package/dist/Carousel/CarouselTypes.ts +28 -0
  33. package/dist/Carousel/index.d.ts +147 -0
  34. package/dist/Carousel/index.js +6 -0
  35. package/dist/Charts/BarChart.torp +70 -0
  36. package/dist/Charts/Chart.torp +120 -0
  37. package/dist/Charts/ChartBars.torp +78 -0
  38. package/dist/Charts/ChartColumns.torp +66 -0
  39. package/dist/Charts/ChartGrid.torp +54 -0
  40. package/dist/Charts/ChartLines.torp +60 -0
  41. package/dist/Charts/ChartTypes.ts +25 -0
  42. package/dist/Charts/ChartXAxis.torp +83 -0
  43. package/dist/Charts/ChartYAxis.torp +105 -0
  44. package/dist/Charts/ColumnChart.torp +70 -0
  45. package/dist/{Chart → Charts}/GridLines.torp +7 -4
  46. package/dist/Charts/LineChart.torp +73 -0
  47. package/dist/{Chart → Charts}/PieChart.torp +14 -20
  48. package/dist/{Chart → Charts}/ScatterChart.torp +45 -38
  49. package/dist/{Chart → Charts}/SparkLine.torp +16 -19
  50. package/dist/{Chart → Charts}/XAxis.torp +18 -12
  51. package/dist/{Chart → Charts}/YAxis.torp +15 -9
  52. package/dist/Charts/index.d.ts +469 -0
  53. package/dist/Charts/index.js +17 -0
  54. package/dist/ColorPicker/ColorPalette.torp +154 -0
  55. package/dist/ColorPicker/ColorPicker.torp +157 -0
  56. package/dist/ColorPicker/index.d.ts +85 -0
  57. package/dist/ColorPicker/index.js +3 -0
  58. package/dist/ComboBox/ComboBox.torp +205 -0
  59. package/dist/ComboBox/ComboBoxContent.torp +112 -0
  60. package/dist/ComboBox/ComboBoxInput.torp +145 -0
  61. package/dist/ComboBox/ComboBoxTrigger.torp +49 -0
  62. package/dist/ComboBox/ComboBoxTypes.ts +39 -0
  63. package/dist/ComboBox/index.d.ts +152 -0
  64. package/dist/ComboBox/index.js +6 -0
  65. package/dist/CommandPalette/CommandPalette.torp +220 -0
  66. package/dist/CommandPalette/CommandTypes.ts +14 -0
  67. package/dist/CommandPalette/index.d.ts +45 -0
  68. package/dist/CommandPalette/index.js +2 -0
  69. package/dist/Contextual/Contextual.torp +39 -52
  70. package/dist/Contextual/ContextualContent.torp +29 -73
  71. package/dist/Contextual/ContextualHover.torp +112 -0
  72. package/dist/Contextual/ContextualTrigger.torp +31 -42
  73. package/dist/Contextual/ContextualTypes.ts +5 -18
  74. package/dist/Contextual/index.d.ts +44 -27
  75. package/dist/Contextual/index.js +5 -14
  76. package/dist/DataGrid/DataGrid.torp +496 -0
  77. package/dist/DataGrid/DataGridTypes.ts +25 -0
  78. package/dist/DataGrid/index.d.ts +90 -0
  79. package/dist/DataGrid/index.js +3 -0
  80. package/dist/DataGrid/sortRows.ts +32 -0
  81. package/dist/DatePicker/DatePicker.torp +222 -0
  82. package/dist/DatePicker/DatePickerHeader.torp +20 -0
  83. package/dist/DatePicker/index.d.ts +55 -0
  84. package/dist/DatePicker/index.js +2 -0
  85. package/dist/DateRangePicker/DateRangePicker.torp +311 -0
  86. package/dist/DateRangePicker/DateRangePickerDay.torp +137 -0
  87. package/dist/DateRangePicker/DateRangePickerTypes.ts +21 -0
  88. package/dist/DateRangePicker/index.d.ts +76 -0
  89. package/dist/DateRangePicker/index.js +3 -0
  90. package/dist/Dialog/Dialog.torp +33 -30
  91. package/dist/Dialog/DialogBody.torp +5 -9
  92. package/dist/Dialog/DialogButton.torp +14 -11
  93. package/dist/Dialog/DialogFooter.torp +3 -7
  94. package/dist/Dialog/DialogHeader.torp +6 -10
  95. package/dist/Dialog/DialogTypes.ts +2 -2
  96. package/dist/Dialog/index.d.ts +28 -26
  97. package/dist/Dialog/index.js +6 -22
  98. package/dist/Disclosure/Disclosure.torp +18 -18
  99. package/dist/Disclosure/DisclosureContent.torp +5 -6
  100. package/dist/Disclosure/DisclosureHeader.torp +7 -11
  101. package/dist/Disclosure/DisclosureTrigger.torp +4 -5
  102. package/dist/Disclosure/DisclosureTypes.ts +1 -1
  103. package/dist/Disclosure/index.d.ts +14 -16
  104. package/dist/Disclosure/index.js +5 -18
  105. package/dist/Drawer/Drawer.torp +21 -51
  106. package/dist/Drawer/DrawerContent.torp +67 -13
  107. package/dist/Drawer/DrawerOverlay.torp +4 -4
  108. package/dist/Drawer/DrawerTrigger.torp +16 -4
  109. package/dist/Drawer/DrawerTypes.ts +4 -1
  110. package/dist/Drawer/index.d.ts +16 -20
  111. package/dist/Drawer/index.js +5 -18
  112. package/dist/FocusGroup/FocusGroup.torp +70 -0
  113. package/dist/FocusGroup/FocusGroupButton.torp +59 -0
  114. package/dist/FocusGroup/FocusGroupTypes.ts +14 -0
  115. package/dist/FocusGroup/index.d.ts +44 -0
  116. package/dist/FocusGroup/index.js +3 -0
  117. package/dist/Form/CheckBox.torp +28 -20
  118. package/dist/Form/Field.torp +17 -17
  119. package/dist/Form/File.torp +31 -22
  120. package/dist/Form/FileDrop.torp +187 -0
  121. package/dist/Form/Form.torp +24 -22
  122. package/dist/Form/FormTypes.ts +2 -0
  123. package/dist/Form/FormValues.torp +37 -0
  124. package/dist/Form/Hidden.torp +4 -12
  125. package/dist/Form/Input.torp +38 -32
  126. package/dist/Form/Label.torp +3 -3
  127. package/dist/Form/Message.torp +13 -5
  128. package/dist/Form/MessageSummary.torp +39 -0
  129. package/dist/Form/Option.torp +11 -7
  130. package/dist/Form/Select.torp +32 -28
  131. package/dist/Form/TextArea.torp +35 -31
  132. package/dist/Form/Toggle.torp +109 -0
  133. package/dist/Form/index.d.ts +198 -77
  134. package/dist/Form/index.js +16 -46
  135. package/dist/ListBox/ListBox.torp +374 -0
  136. package/dist/ListBox/ListBoxItem.torp +131 -0
  137. package/dist/ListBox/ListBoxSeparator.torp +29 -0
  138. package/dist/ListBox/ListBoxTypes.ts +41 -0
  139. package/dist/ListBox/LoadedListBoxItems.torp +41 -0
  140. package/dist/ListBox/index.d.ts +136 -0
  141. package/dist/ListBox/index.js +4 -0
  142. package/dist/MaskedInput/MaskedInput.torp +143 -0
  143. package/dist/MaskedInput/index.d.ts +52 -0
  144. package/dist/MaskedInput/index.js +2 -0
  145. package/dist/Menu/Menu.torp +90 -70
  146. package/dist/Menu/MenuButton.torp +17 -10
  147. package/dist/Menu/MenuCheck.torp +22 -18
  148. package/dist/Menu/MenuGroup.torp +4 -4
  149. package/dist/Menu/MenuIndicator.torp +5 -13
  150. package/dist/Menu/MenuPopout.torp +20 -50
  151. package/dist/Menu/MenuPopoutContent.torp +15 -66
  152. package/dist/Menu/MenuPopoutTrigger.torp +19 -100
  153. package/dist/Menu/MenuRadio.torp +25 -26
  154. package/dist/Menu/MenuRadioGroup.torp +25 -68
  155. package/dist/Menu/MenuSeparator.torp +3 -2
  156. package/dist/Menu/MenuTypes.ts +12 -21
  157. package/dist/Menu/index.d.ts +45 -51
  158. package/dist/Menu/index.js +12 -46
  159. package/dist/MenuBar/MenuBar.torp +31 -83
  160. package/dist/MenuBar/MenuBarItem.torp +34 -55
  161. package/dist/MenuBar/MenuBarItemContent.torp +15 -101
  162. package/dist/MenuBar/MenuBarItemTrigger.torp +20 -55
  163. package/dist/MenuBar/MenuBarTypes.ts +13 -12
  164. package/dist/MenuBar/index.d.ts +17 -19
  165. package/dist/MenuBar/index.js +5 -18
  166. package/dist/Modal/Modal.torp +28 -48
  167. package/dist/Modal/ModalContent.torp +21 -44
  168. package/dist/Modal/ModalOverlay.torp +4 -4
  169. package/dist/Modal/ModalTrigger.torp +16 -32
  170. package/dist/Modal/ModalTypes.ts +6 -17
  171. package/dist/Modal/index.d.ts +17 -29
  172. package/dist/Modal/index.js +29 -28
  173. package/dist/Modal/index.js.map +1 -1
  174. package/dist/Modal/showPrompt.ts +2 -2
  175. package/dist/NavMenu/NavMenu.torp +22 -104
  176. package/dist/NavMenu/NavMenuButton.torp +10 -8
  177. package/dist/NavMenu/NavMenuElement.torp +6 -7
  178. package/dist/NavMenu/NavMenuGroup.torp +5 -5
  179. package/dist/NavMenu/NavMenuGroupHeader.torp +5 -8
  180. package/dist/NavMenu/NavMenuLink.torp +7 -10
  181. package/dist/NavMenu/NavMenuPopout.torp +16 -61
  182. package/dist/NavMenu/NavMenuPopoutContent.torp +14 -73
  183. package/dist/NavMenu/NavMenuPopoutTrigger.torp +47 -0
  184. package/dist/NavMenu/NavMenuSeparator.torp +3 -6
  185. package/dist/NavMenu/NavMenuTypes.ts +6 -15
  186. package/dist/NavMenu/index.d.ts +55 -55
  187. package/dist/NavMenu/index.js +11 -42
  188. package/dist/Notification/Notification.torp +12 -24
  189. package/dist/Notification/NotificationClose.torp +6 -3
  190. package/dist/Notification/NotificationContainer.torp +3 -7
  191. package/dist/Notification/NotificationContent.torp +3 -7
  192. package/dist/Notification/NotificationTypes.ts +1 -1
  193. package/dist/Notification/index.d.ts +15 -12
  194. package/dist/Notification/index.js +22 -32
  195. package/dist/Notification/index.js.map +1 -1
  196. package/dist/NumberInput/NumberInput.torp +255 -0
  197. package/dist/NumberInput/index.d.ts +44 -0
  198. package/dist/NumberInput/index.js +2 -0
  199. package/dist/Pagination/Pagination.torp +152 -0
  200. package/dist/Pagination/PaginationItem.torp +137 -0
  201. package/dist/Pagination/PaginationTypes.ts +22 -0
  202. package/dist/Pagination/buildPages.ts +61 -0
  203. package/dist/Pagination/index.d.ts +63 -0
  204. package/dist/Pagination/index.js +3 -0
  205. package/dist/Popover/Popover.torp +39 -52
  206. package/dist/Popover/PopoverContent.torp +27 -76
  207. package/dist/Popover/PopoverHover.torp +90 -0
  208. package/dist/Popover/PopoverTrigger.torp +17 -40
  209. package/dist/Popover/PopoverTypes.ts +5 -18
  210. package/dist/Popover/index.d.ts +40 -25
  211. package/dist/Popover/index.js +18 -18
  212. package/dist/Popover/index.js.map +1 -1
  213. package/dist/Progress/Progress.torp +88 -0
  214. package/dist/Progress/index.d.ts +37 -0
  215. package/dist/Progress/index.js +2 -0
  216. package/dist/Rating/Rating.torp +225 -0
  217. package/dist/Rating/index.d.ts +44 -0
  218. package/dist/Rating/index.js +2 -0
  219. package/dist/SegmentedControl/SegmentedControl.torp +233 -0
  220. package/dist/SegmentedControl/SegmentedControlTypes.ts +26 -0
  221. package/dist/SegmentedControl/SegmentedItem.torp +78 -0
  222. package/dist/SegmentedControl/index.d.ts +74 -0
  223. package/dist/SegmentedControl/index.js +3 -0
  224. package/dist/SelectBox/SelectBox.torp +190 -0
  225. package/dist/SelectBox/SelectBoxContent.torp +107 -0
  226. package/dist/SelectBox/SelectBoxTrigger.torp +141 -0
  227. package/dist/SelectBox/SelectBoxTypes.ts +33 -0
  228. package/dist/SelectBox/index.d.ts +112 -0
  229. package/dist/SelectBox/index.js +5 -0
  230. package/dist/Slider/Slider.torp +248 -0
  231. package/dist/Slider/index.d.ts +45 -0
  232. package/dist/Slider/index.js +2 -0
  233. package/dist/Splitter/Splitter.torp +156 -0
  234. package/dist/Splitter/SplitterHandle.torp +161 -0
  235. package/dist/Splitter/SplitterPane.torp +63 -0
  236. package/dist/Splitter/SplitterTypes.ts +31 -0
  237. package/dist/Splitter/index.d.ts +103 -0
  238. package/dist/Splitter/index.js +4 -0
  239. package/dist/Stepper/Stepper.torp +146 -0
  240. package/dist/Stepper/StepperMarker.torp +24 -0
  241. package/dist/Stepper/StepperNext.torp +44 -0
  242. package/dist/Stepper/StepperPrevious.torp +44 -0
  243. package/dist/Stepper/StepperStep.torp +90 -0
  244. package/dist/Stepper/StepperTypes.ts +30 -0
  245. package/dist/Stepper/index.d.ts +149 -0
  246. package/dist/Stepper/index.js +6 -0
  247. package/dist/TabGroup/TabContent.torp +6 -6
  248. package/dist/TabGroup/TabGroup.torp +97 -113
  249. package/dist/TabGroup/TabGroupTypes.ts +3 -3
  250. package/dist/TabGroup/TabHeader.torp +23 -19
  251. package/dist/TabGroup/TabList.torp +8 -21
  252. package/dist/TabGroup/TabTrigger.torp +6 -7
  253. package/dist/TabGroup/index.d.ts +26 -26
  254. package/dist/TabGroup/index.js +6 -22
  255. package/dist/TagInput/TagInput.torp +378 -0
  256. package/dist/TagInput/index.d.ts +48 -0
  257. package/dist/TagInput/index.js +2 -0
  258. package/dist/TimePicker/TimePicker.torp +462 -0
  259. package/dist/TimePicker/index.d.ts +53 -0
  260. package/dist/TimePicker/index.js +2 -0
  261. package/dist/ToolBar/ToolBar.torp +117 -0
  262. package/dist/ToolBar/ToolBarButton.torp +56 -0
  263. package/dist/ToolBar/ToolBarElement.torp +51 -0
  264. package/dist/ToolBar/ToolBarPopout.torp +45 -0
  265. package/dist/ToolBar/ToolBarPopoutContent.torp +34 -0
  266. package/dist/ToolBar/ToolBarPopoutTrigger.torp +47 -0
  267. package/dist/ToolBar/ToolBarSeparator.torp +21 -0
  268. package/dist/ToolBar/ToolBarTypes.ts +28 -0
  269. package/dist/ToolBar/index.d.ts +210 -0
  270. package/dist/ToolBar/index.js +8 -0
  271. package/dist/Tree/Tree.torp +395 -0
  272. package/dist/Tree/TreeItem.torp +176 -0
  273. package/dist/Tree/TreeItemChildren.torp +60 -0
  274. package/dist/Tree/TreeItemContent.torp +46 -0
  275. package/dist/Tree/TreeItemLabel.torp +94 -0
  276. package/dist/Tree/TreeItemTrigger.torp +78 -0
  277. package/dist/Tree/TreeLoadedChildren.torp +122 -0
  278. package/dist/Tree/TreeTypes.ts +63 -0
  279. package/dist/Tree/index.d.ts +262 -0
  280. package/dist/Tree/index.js +7 -0
  281. package/dist/icons/ChevronDoubleLeft.torp +19 -0
  282. package/dist/icons/ChevronDoubleRight.torp +19 -0
  283. package/dist/icons/index.d.ts +61 -1
  284. package/dist/icons/index.js +17 -58
  285. package/dist/loader-DEeG5vFY.js +44 -0
  286. package/dist/loader-DEeG5vFY.js.map +1 -0
  287. package/dist/motion/index.d.ts +12 -8
  288. package/dist/motion/index.d.ts.map +1 -0
  289. package/dist/motion/index.js +72 -88
  290. package/dist/motion/index.js.map +1 -1
  291. package/dist/mount/draggable.ts +63 -0
  292. package/dist/mount/dropTarget.ts +108 -0
  293. package/dist/mount/hoverTrigger.ts +1 -1
  294. package/dist/utils/$handle.ts +23 -0
  295. package/dist/utils/LoadedItems.torp +47 -0
  296. package/dist/utils/PopoutClickTrigger.torp +99 -0
  297. package/dist/utils/PopoutTypes.ts +82 -0
  298. package/dist/utils/SubmenuPopout.torp +89 -0
  299. package/dist/utils/SubmenuPopoutContent.torp +87 -0
  300. package/dist/utils/SubmenuPopoutTrigger.torp +160 -0
  301. package/dist/utils/chartColors.ts +13 -13
  302. package/dist/utils/chartLayout.ts +143 -0
  303. package/dist/utils/chartUtils.ts +1 -1
  304. package/dist/utils/colorUtils.ts +103 -0
  305. package/dist/utils/createItemGroup.ts +152 -0
  306. package/dist/utils/dateUtils.ts +8 -7
  307. package/dist/utils/documentEvents.ts +4 -4
  308. package/dist/utils/dragState.ts +86 -0
  309. package/dist/utils/focusGroup.ts +204 -0
  310. package/dist/utils/focusItem.ts +44 -0
  311. package/dist/utils/formField.ts +70 -0
  312. package/dist/utils/hoverOpen.ts +50 -0
  313. package/dist/utils/hoverReveal.ts +194 -0
  314. package/dist/utils/loader.ts +113 -0
  315. package/dist/utils/maskUtils.ts +98 -0
  316. package/dist/utils/popoutContent.ts +137 -0
  317. package/dist/utils/reorderList.ts +52 -0
  318. package/package.json +116 -25
  319. package/dist/Accordion/index.js.map +0 -1
  320. package/dist/Breadcrumb/index.js.map +0 -1
  321. package/dist/Calendar/index.js.map +0 -1
  322. package/dist/Chart/BarChart.torp +0 -159
  323. package/dist/Chart/LineChart.torp +0 -196
  324. package/dist/Chart/index.d.ts +0 -220
  325. package/dist/Chart/index.js +0 -34
  326. package/dist/Chart/index.js.map +0 -1
  327. package/dist/Contextual/index.js.map +0 -1
  328. package/dist/Dialog/index.js.map +0 -1
  329. package/dist/Disclosure/index.js.map +0 -1
  330. package/dist/Drawer/index.js.map +0 -1
  331. package/dist/Form/index.js.map +0 -1
  332. package/dist/Menu/index.js.map +0 -1
  333. package/dist/MenuBar/index.js.map +0 -1
  334. package/dist/NavMenu/NavMenuPopoutButton.torp +0 -129
  335. package/dist/NavMenu/index.js.map +0 -1
  336. package/dist/TabGroup/index.js.map +0 -1
  337. package/dist/icons/index.js.map +0 -1
  338. package/dist/index.d.ts +0 -19
  339. package/dist/metafile-esm.json +0 -1
  340. package/dist/motion/fade.ts +0 -16
  341. package/dist/motion/grow.ts +0 -23
  342. package/dist/motion/measure.ts +0 -28
  343. package/dist/motion/slide.ts +0 -45
  344. package/dist/mount/index.d.ts +0 -2
  345. package/dist/utils/index.d.ts +0 -2
  346. /package/dist/{Chart → Charts}/DataSeries.ts +0 -0
@@ -0,0 +1,137 @@
1
+ import { type ClassValue, type StyleValue } from "@torpor/view";
2
+ import { areDatesEqual } from "../utils/dateUtils";
3
+ import { type CalendarContext, CalendarContextName } from "../Calendar/CalendarTypes";
4
+ import {
5
+ type DateRangePickerContext,
6
+ DateRangePickerContextName,
7
+ } from "./DateRangePickerTypes";
8
+
9
+ // TODO: Internationalization?? On the server and/or the client...
10
+ const formatDate = (date: Date): string => {
11
+ return new Intl.DateTimeFormat("en-US", {
12
+ year: "numeric",
13
+ month: "long",
14
+ day: "numeric",
15
+ }).format(date);
16
+ };
17
+
18
+ interface DateRangePickerDayProps {
19
+ /** An ID for the root element */
20
+ id?: string;
21
+ /** Classes for the root element */
22
+ class?: ClassValue;
23
+ /** Styles for the root element */
24
+ style?: StyleValue;
25
+ /** The date to display */
26
+ date: Date;
27
+ /** Whether the date is muted (i.e. not in the currently displayed month) */
28
+ muted?: boolean;
29
+ /** Whether the date is the active (keyboard cursor) date */
30
+ active?: boolean;
31
+ /** An ARIA label for describing the day to screen readers */
32
+ ariaLabel?: string | undefined;
33
+ }
34
+
35
+ /**
36
+ * A day in a DateRangePicker's calendar, which highlights the start and end
37
+ * of the range being selected, the dates in between, and a preview of the
38
+ * range while the user hovers.
39
+ */
40
+ export default function DateRangePickerDay($props: DateRangePickerDayProps | undefined) {
41
+ // Ensure the value is a reactive date -- assigning a plain date to
42
+ // watched props/state wraps it automatically
43
+ $props!.date = new Date($unwrap($props?.date ?? new Date()));
44
+ let reactiveDate = $props!.date;
45
+
46
+ // Get stuff out of the Calendar context
47
+ const calendarContext = $context[CalendarContextName] as CalendarContext;
48
+ if (!calendarContext) {
49
+ throw new Error("DateRangePickerDay must be contained within a Calendar");
50
+ }
51
+
52
+ // Get stuff out of the DateRangePicker context
53
+ const rangeContext = $context[DateRangePickerContextName] as DateRangePickerContext;
54
+ if (!rangeContext) {
55
+ throw new Error("DateRangePickerDay must be contained within a DateRangePicker");
56
+ }
57
+
58
+ // Register this day with the parent Calendar, which will handle setting
59
+ // the active (keyboard cursor) date
60
+ calendarContext.registerDay(reactiveDate, setActive);
61
+
62
+ // This function is called by the parent Calendar to set this item's active value
63
+ function setActive(value: boolean) {
64
+ $props!.active = value;
65
+ }
66
+
67
+ function isToday() {
68
+ const today = new Date();
69
+ return areDatesEqual($props!.date, today);
70
+ }
71
+
72
+ function isStart(): boolean {
73
+ const start = rangeContext.getStart();
74
+ return !!start && areDatesEqual($props!.date, start);
75
+ }
76
+
77
+ function isEnd(): boolean {
78
+ const end = rangeContext.getEnd();
79
+ return !!end && areDatesEqual($props!.date, end);
80
+ }
81
+
82
+ // The end of the preview range is the hovered date while a range is being
83
+ // selected, or the real end once it's complete
84
+ function getRangeEnd(): Date | undefined {
85
+ return rangeContext.getEnd() ?? rangeContext.getPreview();
86
+ }
87
+
88
+ function isInRange(): boolean {
89
+ const start = rangeContext.getStart();
90
+ const end = getRangeEnd();
91
+ if (!start || !end) return false;
92
+ if (areDatesEqual($props!.date, start) || areDatesEqual($props!.date, end)) return false;
93
+ return $props!.date > start && $props!.date < end;
94
+ }
95
+
96
+ function handleClick() {
97
+ calendarContext.handleDay(reactiveDate);
98
+ }
99
+
100
+ function handleEnter() {
101
+ rangeContext.setPreview(new Date($props!.date));
102
+ }
103
+
104
+ @render {
105
+ <button
106
+ {$props?.id}
107
+ class={buildClass()}
108
+ {$props?.style}
109
+ type="button"
110
+ tabindex="-1"
111
+ onclick={handleClick}
112
+ onmouseenter={handleEnter}
113
+ aria-label={$props?.ariaLabel ?? formatDate($props!.date)}
114
+ aria-current={isToday() ? "date" : undefined}
115
+ aria-disabled={$props?.muted ? "true" : undefined}
116
+ data-range={isStart() ? "start" : isEnd() ? "end" : isInRange() ? "inside" : undefined}
117
+ >
118
+ <slot>
119
+ {$props!.date.getDate()}
120
+ </slot>
121
+ </button>
122
+ }
123
+
124
+ function buildClass() {
125
+ return [
126
+ "torp-date-range-day",
127
+ $props?.class,
128
+ {
129
+ muted: $props?.muted,
130
+ today: isToday(),
131
+ active: $props?.active,
132
+ selected: isStart() || isEnd(),
133
+ "in-range": isInRange(),
134
+ },
135
+ ];
136
+ }
137
+ }
@@ -0,0 +1,21 @@
1
+ export const DateRangePickerContextName: unique symbol = Symbol.for("torp.DateRangePicker");
2
+
3
+ export interface DateRange {
4
+ /** The first date in the range */
5
+ start: Date;
6
+ /** The last date in the range */
7
+ end: Date;
8
+ }
9
+
10
+ export interface DateRangePickerContext {
11
+ /** The first date in the range being selected, as a plain (unwrapped) date */
12
+ getStart: () => Date | undefined;
13
+ /** The last date in the range, once the range is complete, as a plain date */
14
+ getEnd: () => Date | undefined;
15
+ /** The hovered date extending the preview range, as a plain date */
16
+ getPreview: () => Date | undefined;
17
+ /** Whether the user has picked a start date but not an end date yet */
18
+ isSelecting: () => boolean;
19
+ /** Sets the hovered date that extends the range preview */
20
+ setPreview: (date: Date | undefined) => void;
21
+ }
@@ -0,0 +1,76 @@
1
+ import { type SlotRender } from "@torpor/view";
2
+
3
+
4
+ interface DateRangePickerProps {
5
+ /** An ID for the root element */
6
+ id?: string;
7
+ /** Classes for the root element */
8
+ class?: ClassValue;
9
+ /** Styles for the root element */
10
+ style?: StyleValue;
11
+ /** The name of the date range picker's form data fields; "-start" and "-end" are appended */
12
+ name?: string;
13
+ /** The selected date range */
14
+ value?: Bindable<DateRange | undefined>;
15
+ /** Text to display when the value is empty */
16
+ placeholder?: string;
17
+ /** The format for the displayed dates (e.g. "d MMM yyyy") */
18
+ dateFormat?: string;
19
+ /** If set to true, the user cannot interact with this date range picker */
20
+ disabled?: boolean;
21
+ /** An accessible name for the trigger button */
22
+ ariaLabel?: string;
23
+ /** Raised when a complete range has been selected */
24
+ onchange?: (value: DateRange) => void;
25
+ }
26
+
27
+ /**
28
+ * An input for selecting a range of dates from a calendar popout. The first
29
+ * click sets the start of the range and the second sets its end; clicking a
30
+ * date before the start begins a new range there, and a third click starts
31
+ * over.
32
+ *
33
+ * The structure of a DateRangePicker is a trigger button that displays the
34
+ * selected range, with a selectable Calendar in a popout.
35
+ */
36
+ declare function DateRangePicker(
37
+ $parent: ParentNode,
38
+ $anchor: Node | null,
39
+ $props: DateRangePickerProps | undefined,
40
+ $context?: Record<PropertyKey, any>,
41
+ $slots?: Record<string, SlotRender>,
42
+ ): void;
43
+
44
+
45
+
46
+ interface DateRangePickerDayProps {
47
+ /** An ID for the root element */
48
+ id?: string;
49
+ /** Classes for the root element */
50
+ class?: ClassValue;
51
+ /** Styles for the root element */
52
+ style?: StyleValue;
53
+ /** The date to display */
54
+ date: Date;
55
+ /** Whether the date is muted (i.e. not in the currently displayed month) */
56
+ muted?: boolean;
57
+ /** Whether the date is the active (keyboard cursor) date */
58
+ active?: boolean;
59
+ /** An ARIA label for describing the day to screen readers */
60
+ ariaLabel?: string | undefined;
61
+ }
62
+
63
+ /**
64
+ * A day in a DateRangePicker's calendar, which highlights the start and end
65
+ * of the range being selected, the dates in between, and a preview of the
66
+ * range while the user hovers.
67
+ */
68
+ declare function DateRangePickerDay(
69
+ $parent: ParentNode,
70
+ $anchor: Node | null,
71
+ $props: DateRangePickerDayProps | undefined,
72
+ $context?: Record<PropertyKey, any>,
73
+ $slots?: Record<string, SlotRender>,
74
+ ): void;
75
+
76
+ export { DateRangePicker, DateRangePickerDay };
@@ -0,0 +1,3 @@
1
+ import DateRangePicker from "./DateRangePicker.torp";
2
+ import DateRangePickerDay from "./DateRangePickerDay.torp";
3
+ export { DateRangePicker, DateRangePickerDay };
@@ -1,32 +1,35 @@
1
1
  import type { ClassValue, StyleValue } from "@torpor/view";
2
+ import { type TrapFocusOptions, trapFocus } from "../mount/trapFocus";
3
+ import {
4
+ type HandleButtonPress,
5
+ type PopoutContext,
6
+ PopoutContextName,
7
+ } from "../utils/PopoutTypes";
2
8
  import getId from "../utils/getId";
3
- import { trapFocus, type TrapFocusOptions } from "../mount/trapFocus";
4
- import { ModalContextName, type ModalContext } from "../Modal/ModalTypes";
5
- import { PopoverContextName } from "../Popover/PopoverTypes";
6
- import { DialogContextName, type DialogContext, type DialogState, type HandleButtonPress } from "./DialogTypes";
9
+ import { type DialogContext, DialogContextName, type DialogState } from "./DialogTypes";
7
10
 
8
11
  interface DialogProps {
9
12
  /** An ID for the root element */
10
13
  id?: string;
11
14
  /** Classes for the root element */
12
- class?: ClassValue,
15
+ class?: ClassValue;
13
16
  /** Styles for the root element */
14
- style?: StyleValue,
17
+ style?: StyleValue;
15
18
  /** An ARIA label for describing the popover to screen readers */
16
- ariaLabel?: string,
19
+ ariaLabel?: string;
17
20
  /** Whether the dialog should alert the user via the screen reader */
18
- alert?: boolean,
21
+ alert?: boolean;
19
22
  }
20
23
 
21
24
  /**
22
25
  * A dialog that can be used to show a message to the user, or get information from the user.
23
- *
26
+ *
24
27
  * Dialogs are typically shown within a Modal or Popover.
25
- *
28
+ *
26
29
  * See [the WAI ARIA guidelines for Dialogs](https://www.w3.org/WAI/ARIA/apg/patterns/dialogmodal/).
27
- *
30
+ *
28
31
  * The structure of a Dialog is:
29
- *
32
+ *
30
33
  * ```
31
34
  * <Dialog>
32
35
  * <ModalOverlay /> (optional -- will set `modal` to true)
@@ -37,7 +40,7 @@ interface DialogProps {
37
40
  * </DialogFooter>
38
41
  * </Dialog>
39
42
  * ```
40
- *
43
+ *
41
44
  */
42
45
  export default function Dialog($props: DialogProps | undefined) {
43
46
  let defaultId = getId();
@@ -45,23 +48,26 @@ export default function Dialog($props: DialogProps | undefined) {
45
48
  //let div: HTMLDivElement;
46
49
 
47
50
  let trapFocusOptions: TrapFocusOptions = {
48
- focusableElements: []
51
+ focusableElements: [],
49
52
  };
50
53
 
51
- // Maybe get stuff out of a Modal context
54
+ // Maybe get stuff out of a popout context
52
55
  let modal = false;
53
- let visible = true;
54
56
  let handleButton: HandleButtonPress | undefined = undefined;
55
- const modalContext = $context[ModalContextName] ?? $context[PopoverContextName] as ModalContext;
56
- if (modalContext) {
57
+ const popoutContext = $context[PopoutContextName] as PopoutContext;
58
+ if (popoutContext) {
57
59
  modal = true;
58
- visible = modalContext.state.visible;
59
- handleButton = modalContext.handleButton;
60
+ handleButton = popoutContext.handleButton;
60
61
 
61
- modalContext.handleClickOutside = handleClickOutside;
62
- // Set the focusFirstElement method in the ModalContext so that it can be
62
+ popoutContext.handleClickOutside = handleClickOutside;
63
+ // Set the focusFirstElement method in the PopoutContext so that it can be
63
64
  // called after everything has been shown
64
- modalContext.focusFirstElement = focusFirstElement;
65
+ popoutContext.focusFirstElement = focusFirstElement;
66
+
67
+ // Set the content ID and role so that triggers can use them with
68
+ // aria-controls / aria-haspopup
69
+ popoutContext.state.contentId = $props?.id ?? defaultId;
70
+ popoutContext.state.contentRole = "dialog";
65
71
  }
66
72
 
67
73
  // Set the IDs for using in the Dialog's ARIA attributes
@@ -69,14 +75,13 @@ export default function Dialog($props: DialogProps | undefined) {
69
75
  dialogId: $props?.id ?? defaultId,
70
76
  headerId: "",
71
77
  bodyId: "",
72
- visible
73
- })
78
+ });
74
79
 
75
80
  // Set the context to pass down to items
76
81
  let context: DialogContext = {
77
82
  handleButton,
78
83
  state: $state,
79
- anchorElement: modalContext ? modalContext.anchorElement : undefined
84
+ anchorElement: popoutContext ? popoutContext.anchorElement : undefined,
80
85
  };
81
86
  $context[DialogContextName] = context;
82
87
 
@@ -86,18 +91,17 @@ export default function Dialog($props: DialogProps | undefined) {
86
91
  }
87
92
  }
88
93
 
89
- function handleClickOutside(e: MouseEvent) {
94
+ function handleClickOutside(e: MouseEvent | KeyboardEvent) {
90
95
  // Don't allow the user to click outside -- they must press a button or
91
96
  // the Esc key
92
97
  e.preventDefault();
93
98
  if (!modal) {
94
- modalContext.state.visible = false;
99
+ popoutContext.state.visible = false;
95
100
  }
96
101
  }
97
102
 
98
103
  function handleKey(e: KeyboardEvent) {
99
104
  switch (e.key) {
100
- case "Esc":
101
105
  case "Escape": {
102
106
  if (context.cancelButton) {
103
107
  context.cancelButton.click();
@@ -128,7 +132,6 @@ export default function Dialog($props: DialogProps | undefined) {
128
132
  aria-describedby={$state.bodyId ? $state.bodyId : undefined}
129
133
  onkeydown={handleKey}
130
134
  onmount={(el) => trapFocus(el, trapFocusOptions)}
131
- @//&ref={div}
132
135
  >
133
136
  <slot />
134
137
  </div>
@@ -1,16 +1,16 @@
1
1
  import type { ClassValue, StyleValue } from "@torpor/view";
2
2
  import getId from "../utils/getId";
3
- import { DialogContextName, type DialogContext } from "./DialogTypes";
3
+ import { type DialogContext, DialogContextName } from "./DialogTypes";
4
4
 
5
5
  interface DialogBodyProps {
6
6
  /** An ID for the root element */
7
7
  id?: string;
8
8
  /** Classes for the root element */
9
- class?: ClassValue,
9
+ class?: ClassValue;
10
10
  /** Styles for the root element */
11
- style?: StyleValue,
11
+ style?: StyleValue;
12
12
  /** Whether the body content will be announced by screen readers when the Dialog is opened */
13
- ariaAnnounce?: boolean,
13
+ ariaAnnounce?: boolean;
14
14
  }
15
15
 
16
16
  /**
@@ -33,11 +33,7 @@ export default function DialogBody($props: DialogBodyProps | undefined) {
33
33
  }
34
34
 
35
35
  @render {
36
- <div
37
- id={$props?.id ?? defaultId}
38
- class={["torp-dialog-body", $props?.class]}
39
- {$props?.style}
40
- >
36
+ <div id={$props?.id ?? defaultId} class={["torp-dialog-body", $props?.class]} {$props?.style}>
41
37
  <slot />
42
38
  </div>
43
39
  }
@@ -1,26 +1,28 @@
1
1
  import type { ClassValue, StyleValue } from "@torpor/view";
2
- import { DialogContextName, type DialogContext } from "./DialogTypes";
2
+ import { type DialogContext, DialogContextName } from "./DialogTypes";
3
3
 
4
4
  interface DialogButtonProps {
5
5
  /** An ID for the root element */
6
6
  id?: string;
7
7
  /** Classes for the root element */
8
- class?: ClassValue,
8
+ class?: ClassValue;
9
9
  /** Styles for the root element */
10
- style?: StyleValue,
10
+ style?: StyleValue;
11
11
  /** The value that should be returned when this button is pressed and the Dialog was invoked by calling showContextual, showPrompt or showPopover */
12
- value?: any,
12
+ value?: any;
13
13
  /** "confirm" if the button should respond to the Enter key or "cancel" if the button should respond to the Escape key */
14
- type?: "confirm" | "cancel",
14
+ type?: "confirm" | "cancel";
15
15
  /** Whether this button is disabled */
16
- disabled?: boolean,
16
+ disabled?: boolean;
17
17
  /** Raised when the button is clicked */
18
- onclick?: (e: MouseEvent) => void,
18
+ onclick?: (e: MouseEvent) => void;
19
+ /** Raised when a key is pressed down */
20
+ onkeydown?: (e: KeyboardEvent) => void;
19
21
  }
20
22
 
21
23
  /**
22
24
  * A button that is placed in a DialogFooter and signals a response by a user.
23
- *
25
+ *
24
26
  */
25
27
  export default function DialogButton($props: DialogButtonProps | undefined) {
26
28
  let button: HTMLButtonElement;
@@ -32,7 +34,7 @@ export default function DialogButton($props: DialogButtonProps | undefined) {
32
34
  }
33
35
  const handleButton = context.handleButton;
34
36
 
35
- $mount(() => {
37
+ $onmount(() => {
36
38
  // Store the confirm or cancel button in the DialogContext
37
39
  if ($props?.type === "confirm") {
38
40
  context.confirmButton = button;
@@ -43,7 +45,7 @@ export default function DialogButton($props: DialogButtonProps | undefined) {
43
45
 
44
46
  function handleClick(e: MouseEvent) {
45
47
  if ($props?.onclick) {
46
- $props?.onclick(e)
48
+ $props?.onclick(e);
47
49
  }
48
50
  if (handleButton) {
49
51
  handleButton($props?.type, $props?.value);
@@ -56,8 +58,9 @@ export default function DialogButton($props: DialogButtonProps | undefined) {
56
58
  {$props?.id}
57
59
  class={["torp-dialog-button", $props?.class]}
58
60
  {$props?.style}
59
- disabled={$props?.disabled}
61
+ {$props?.disabled}
60
62
  onclick={handleClick}
63
+ {$props?.onkeydown}
61
64
  &ref={button}
62
65
  >
63
66
  <slot />
@@ -4,9 +4,9 @@ interface DialogFooterProps {
4
4
  /** An ID for the root element */
5
5
  id?: string;
6
6
  /** Classes for the root element */
7
- class?: ClassValue,
7
+ class?: ClassValue;
8
8
  /** Styles for the root element */
9
- style?: StyleValue,
9
+ style?: StyleValue;
10
10
  }
11
11
 
12
12
  /**
@@ -14,11 +14,7 @@ interface DialogFooterProps {
14
14
  */
15
15
  export default function DialogFooter($props: DialogFooterProps | undefined) {
16
16
  @render {
17
- <div
18
- {$props?.id}
19
- class={["torp-dialog-footer", $props?.class]}
20
- {$props?.style}
21
- >
17
+ <div {$props?.id} class={["torp-dialog-footer", $props?.class]} {$props?.style}>
22
18
  <slot />
23
19
  </div>
24
20
  }
@@ -1,22 +1,22 @@
1
1
  import type { ClassValue, StyleValue } from "@torpor/view";
2
2
  import getId from "../utils/getId";
3
- import { DialogContextName, type DialogContext } from "./DialogTypes";
3
+ import { type DialogContext, DialogContextName } from "./DialogTypes";
4
4
 
5
5
  interface DialogHeaderProps {
6
6
  /** An ID for the root element */
7
7
  id?: string;
8
8
  /** Classes for the root element */
9
- class?: ClassValue,
9
+ class?: ClassValue;
10
10
  /** Styles for the root element */
11
- style?: StyleValue,
11
+ style?: StyleValue;
12
12
  /** Whether the header will be announced by screen readers when the Dialog is opened */
13
- ariaAnnounce?: boolean,
13
+ ariaAnnounce?: boolean;
14
14
  }
15
15
 
16
16
  /**
17
17
  * The header for a Dialog. Content in the header will be announced by screen
18
18
  * readers when the Dialog is opened, unless ariaAnnounce is false.
19
- *
19
+ *
20
20
  */
21
21
  export default function DialogHeader($props: DialogHeaderProps | undefined) {
22
22
  let defaultId = getId();
@@ -34,11 +34,7 @@ export default function DialogHeader($props: DialogHeaderProps | undefined) {
34
34
  }
35
35
 
36
36
  @render {
37
- <div
38
- id={$props?.id ?? defaultId}
39
- class={["torp-dialog-footer", $props?.class]}
40
- {$props?.style}
41
- >
37
+ <div id={$props?.id ?? defaultId} class={["torp-dialog-footer", $props?.class]} {$props?.style}>
42
38
  <slot />
43
39
  </div>
44
40
  }
@@ -1,6 +1,6 @@
1
- export const DialogContextName = "Dialog";
1
+ import { type HandleButtonPress } from "../utils/PopoutTypes";
2
2
 
3
- export type HandleButtonPress = (type: "confirm" | "cancel" | undefined, value?: any) => void;
3
+ export const DialogContextName: unique symbol = Symbol.for("torp.Dialog");
4
4
 
5
5
  export interface DialogContext {
6
6
  handleButton?: HandleButtonPress;
@@ -5,24 +5,24 @@ interface DialogProps {
5
5
  /** An ID for the root element */
6
6
  id?: string;
7
7
  /** Classes for the root element */
8
- class?: ClassValue,
8
+ class?: ClassValue;
9
9
  /** Styles for the root element */
10
- style?: StyleValue,
10
+ style?: StyleValue;
11
11
  /** An ARIA label for describing the popover to screen readers */
12
- ariaLabel?: string,
12
+ ariaLabel?: string;
13
13
  /** Whether the dialog should alert the user via the screen reader */
14
- alert?: boolean,
14
+ alert?: boolean;
15
15
  }
16
16
 
17
17
  /**
18
18
  * A dialog that can be used to show a message to the user, or get information from the user.
19
- *
19
+ *
20
20
  * Dialogs are typically shown within a Modal or Popover.
21
- *
21
+ *
22
22
  * See [the WAI ARIA guidelines for Dialogs](https://www.w3.org/WAI/ARIA/apg/patterns/dialogmodal/).
23
- *
23
+ *
24
24
  * The structure of a Dialog is:
25
- *
25
+ *
26
26
  * ```
27
27
  * <Dialog>
28
28
  * <ModalOverlay /> (optional -- will set `modal` to true)
@@ -33,7 +33,7 @@ interface DialogProps {
33
33
  * </DialogFooter>
34
34
  * </Dialog>
35
35
  * ```
36
- *
36
+ *
37
37
  */
38
38
  declare function Dialog(
39
39
  $parent: ParentNode,
@@ -49,11 +49,11 @@ interface DialogBodyProps {
49
49
  /** An ID for the root element */
50
50
  id?: string;
51
51
  /** Classes for the root element */
52
- class?: ClassValue,
52
+ class?: ClassValue;
53
53
  /** Styles for the root element */
54
- style?: StyleValue,
54
+ style?: StyleValue;
55
55
  /** Whether the body content will be announced by screen readers when the Dialog is opened */
56
- ariaAnnounce?: boolean,
56
+ ariaAnnounce?: boolean;
57
57
  }
58
58
 
59
59
  /**
@@ -74,22 +74,24 @@ interface DialogButtonProps {
74
74
  /** An ID for the root element */
75
75
  id?: string;
76
76
  /** Classes for the root element */
77
- class?: ClassValue,
77
+ class?: ClassValue;
78
78
  /** Styles for the root element */
79
- style?: StyleValue,
79
+ style?: StyleValue;
80
80
  /** The value that should be returned when this button is pressed and the Dialog was invoked by calling showContextual, showPrompt or showPopover */
81
- value?: any,
81
+ value?: any;
82
82
  /** "confirm" if the button should respond to the Enter key or "cancel" if the button should respond to the Escape key */
83
- type?: "confirm" | "cancel",
83
+ type?: "confirm" | "cancel";
84
84
  /** Whether this button is disabled */
85
- disabled?: boolean,
85
+ disabled?: boolean;
86
86
  /** Raised when the button is clicked */
87
- onclick?: (e: MouseEvent) => void,
87
+ onclick?: (e: MouseEvent) => void;
88
+ /** Raised when a key is pressed down */
89
+ onkeydown?: (e: KeyboardEvent) => void;
88
90
  }
89
91
 
90
92
  /**
91
93
  * A button that is placed in a DialogFooter and signals a response by a user.
92
- *
94
+ *
93
95
  */
94
96
  declare function DialogButton(
95
97
  $parent: ParentNode,
@@ -105,9 +107,9 @@ interface DialogFooterProps {
105
107
  /** An ID for the root element */
106
108
  id?: string;
107
109
  /** Classes for the root element */
108
- class?: ClassValue,
110
+ class?: ClassValue;
109
111
  /** Styles for the root element */
110
- style?: StyleValue,
112
+ style?: StyleValue;
111
113
  }
112
114
 
113
115
  /**
@@ -127,17 +129,17 @@ interface DialogHeaderProps {
127
129
  /** An ID for the root element */
128
130
  id?: string;
129
131
  /** Classes for the root element */
130
- class?: ClassValue,
132
+ class?: ClassValue;
131
133
  /** Styles for the root element */
132
- style?: StyleValue,
134
+ style?: StyleValue;
133
135
  /** Whether the header will be announced by screen readers when the Dialog is opened */
134
- ariaAnnounce?: boolean,
136
+ ariaAnnounce?: boolean;
135
137
  }
136
138
 
137
139
  /**
138
140
  * The header for a Dialog. Content in the header will be announced by screen
139
141
  * readers when the Dialog is opened, unless ariaAnnounce is false.
140
- *
142
+ *
141
143
  */
142
144
  declare function DialogHeader(
143
145
  $parent: ParentNode,
@@ -147,4 +149,4 @@ declare function DialogHeader(
147
149
  $slots?: Record<string, SlotRender>,
148
150
  ): void;
149
151
 
150
- export { Dialog, DialogBody, DialogButton, DialogFooter, DialogHeader };
152
+ export { Dialog, DialogBody, DialogButton, DialogFooter, DialogHeader };