@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
@@ -4,11 +4,11 @@ interface GridLinesProps {
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,
10
- showHLines?: boolean,
11
- showVLines?: boolean,
9
+ style?: StyleValue;
10
+ showHLines?: boolean;
11
+ showVLines?: boolean;
12
12
  width: number;
13
13
  labels: string[];
14
14
  xStepValue: number;
@@ -32,6 +32,7 @@ export default function GridLines($props: GridLinesProps) {
32
32
  y1={$props.chartBottom - i * $props.yStepValue * $props.valueHeight}
33
33
  x2={$props.width ?? 0}
34
34
  y2={$props.chartBottom - i * $props.yStepValue * $props.valueHeight}
35
+ stroke="currentcolor"
35
36
  />
36
37
  }
37
38
  }
@@ -44,6 +45,7 @@ export default function GridLines($props: GridLinesProps) {
44
45
  y1={$props.chartBottom}
45
46
  x2={$props.chartLeft + i * $props.xStepValue * $props.itemWidth}
46
47
  y2={0}
48
+ stroke="currentcolor"
47
49
  />
48
50
  }
49
51
  } else {
@@ -53,6 +55,7 @@ export default function GridLines($props: GridLinesProps) {
53
55
  y1={$props.chartBottom}
54
56
  x2={$props.chartLeft + i * $props.itemWidth + ($props.type === "bar" ? 0 : $props.itemWidth / 2)}
55
57
  y2={0}
58
+ stroke="currentcolor"
56
59
  />
57
60
  }
58
61
  }
@@ -0,0 +1,73 @@
1
+ import type { ClassValue, StyleValue } from "@torpor/view";
2
+ import Chart from "./Chart.torp";
3
+ import ChartXAxis from "./ChartXAxis.torp";
4
+ import ChartGrid from "./ChartGrid.torp";
5
+ import ChartLines from "./ChartLines.torp";
6
+ import ChartYAxis from "./ChartYAxis.torp";
7
+ import type DataSeries from "./DataSeries";
8
+
9
+ interface LineChartProps {
10
+ /** An ID for the root element */
11
+ id?: string;
12
+ /** Classes for the root element */
13
+ class?: ClassValue;
14
+ /** Styles for the root element */
15
+ style?: StyleValue;
16
+ /** An ARIA label describing the chart for screen readers */
17
+ ariaLabel?: string;
18
+ series: DataSeries[];
19
+ height?: number;
20
+ width?: number;
21
+ xLabel?: string;
22
+ yLabel?: string;
23
+ maxValue?: number;
24
+ stepCount?: number;
25
+ stepValue?: number;
26
+ showPoints?: boolean;
27
+ showHLines?: boolean;
28
+ showVLines?: boolean;
29
+ }
30
+
31
+ /**
32
+ * A line chart: each series drawn as a connected line across the category
33
+ * slots.
34
+ *
35
+ * This is a preset over the layered chart components:
36
+ *
37
+ * ```
38
+ * <Chart>
39
+ * <ChartValueAxis />
40
+ * <ChartGrid />
41
+ * <ChartXAxis />
42
+ * <ChartLines seriesIndex={0} />
43
+ * </Chart>
44
+ * ```
45
+ *
46
+ * Compose those directly for overlaid layers (columns plus a line, multiple
47
+ * separately-indexed lines etc).
48
+ */
49
+ export default function LineChart($props: LineChartProps) {
50
+ @render {
51
+ <Chart
52
+ {$props?.id}
53
+ class={["torp-line-chart", $props?.class]}
54
+ {$props?.style}
55
+ {$props?.ariaLabel}
56
+ {$props?.series}
57
+ {$props?.height}
58
+ {$props?.width}
59
+ {$props?.xLabel}
60
+ {$props?.yLabel}
61
+ {$props?.maxValue}
62
+ {$props?.stepCount}
63
+ {$props?.stepValue}
64
+ >
65
+ <ChartYAxis />
66
+ <ChartGrid hLines={$props.showHLines === true} vLines={$props.showVLines === true} />
67
+ <ChartXAxis />
68
+ @for (let i of $props.series.map((_, i) => i)) {
69
+ <ChartLines seriesIndex={i} showPoints={$props.showPoints} />
70
+ }
71
+ </Chart>
72
+ }
73
+ }
@@ -18,13 +18,15 @@ interface PieChartProps {
18
18
  /** An ID for the root element */
19
19
  id?: string;
20
20
  /** Classes for the root element */
21
- class?: ClassValue,
21
+ class?: ClassValue;
22
22
  /** Styles for the root element */
23
- style?: StyleValue,
24
- data: PieData[],
25
- size?: number,
26
- radius?: number,
27
- cutout?: number,
23
+ style?: StyleValue;
24
+ /** An ARIA label describing the chart for screen readers */
25
+ ariaLabel?: string;
26
+ data: PieData[];
27
+ size?: number;
28
+ radius?: number;
29
+ cutout?: number;
28
30
  }
29
31
 
30
32
  export default function PieChart($props: PieChartProps) {
@@ -42,14 +44,14 @@ export default function PieChart($props: PieChartProps) {
42
44
  },
43
45
  get segments() {
44
46
  return buildSegments($props.size!, $props.data, $props.radius!, $props.cutout!);
45
- }
47
+ },
46
48
  });
47
49
 
48
50
  function buildSegments(
49
51
  theSize: number,
50
52
  theData: PieData[],
51
53
  theRadiusSize: number,
52
- theCutoutSize: number
54
+ theCutoutSize: number,
53
55
  ): SegmentData[] {
54
56
  const segments = [];
55
57
  const x = theSize / 2;
@@ -67,7 +69,7 @@ export default function PieChart($props: PieChartProps) {
67
69
  name: theData[i].name,
68
70
  value: theData[i].value,
69
71
  color: theData[i].color,
70
- path: buildPath(x, y, theRadiusSize, theCutoutSize, startAngle, endAngle, largeArc)
72
+ path: buildPath(x, y, theRadiusSize, theCutoutSize, startAngle, endAngle, largeArc),
71
73
  });
72
74
  startAngle = endAngle;
73
75
  }
@@ -81,7 +83,7 @@ export default function PieChart($props: PieChartProps) {
81
83
  theCutoutSize: number,
82
84
  startAngle: number,
83
85
  endAngle: number,
84
- largeArc: number
86
+ largeArc: number,
85
87
  ): string {
86
88
  // HACK: Drawing an arc of 360 degrees doesn't work
87
89
  if (startAngle - endAngle === 360) {
@@ -122,16 +124,8 @@ A${theCutoutSize},${theCutoutSize} 0 ${largeArc} 0 ${cutoutstartx},${cutoutstart
122
124
  }
123
125
 
124
126
  @render {
125
- <div
126
- {$props?.id}
127
- class={["torp-pie-chart", $props?.class]}
128
- {$props?.style}
129
- >
130
- <svg
131
- version="1.1"
132
- width={$props.size}
133
- height={$props.size}
134
- >
127
+ <div {$props?.id} class={["torp-pie-chart", $props?.class]} {$props?.style}>
128
+ <svg role={$props?.ariaLabel ? "img" : undefined} aria-label={$props?.ariaLabel} version="1.1" width={$props.size} height={$props.size}>
135
129
  <g>
136
130
  @for (let [i, segment] of $state.segments.entries()) {
137
131
  <path d={segment.path} fill={segment.color || chartColors[i % chartColors.length]}>
@@ -1,15 +1,15 @@
1
1
  import type { ClassValue, StyleValue } from "@torpor/view";
2
- import XAxis from "./XAxis.torp";
3
- import YAxis from "./YAxis.torp";
4
- import GridLines from "./GridLines.torp";
2
+ import { chartColors } from "../utils/chartColors";
5
3
  import {
6
- calculateStepValue,
4
+ calculateChartBottom,
5
+ calculateChartLeft,
7
6
  calculateStepLabels,
7
+ calculateStepValue,
8
8
  calculateValueHeight,
9
- calculateChartBottom,
10
- calculateChartLeft
11
9
  } from "../utils/chartUtils";
12
- import { chartColors } from "../utils/chartColors";
10
+ import GridLines from "./GridLines.torp";
11
+ import XAxis from "./XAxis.torp";
12
+ import YAxis from "./YAxis.torp";
13
13
 
14
14
  interface Pair {
15
15
  x: number;
@@ -27,22 +27,24 @@ interface ScatterChartProps {
27
27
  /** An ID for the root element */
28
28
  id?: string;
29
29
  /** Classes for the root element */
30
- class?: ClassValue,
30
+ class?: ClassValue;
31
31
  /** Styles for the root element */
32
- style?: StyleValue,
33
- series: DataSeries[],
34
- height?: number,
35
- width?: number,
36
- xLabel?: string,
37
- yLabel?: string,
38
- xStepCount?: number,
39
- xStepValue?: number,
40
- yStepCount?: number,
41
- yStepValue?: number,
42
- hideXAxis?: boolean,
43
- hideYAxis?: boolean,
44
- showHLines?: boolean,
45
- showVLines?: boolean,
32
+ style?: StyleValue;
33
+ /** An ARIA label describing the chart for screen readers */
34
+ ariaLabel?: string;
35
+ series: DataSeries[];
36
+ height?: number;
37
+ width?: number;
38
+ xLabel?: string;
39
+ yLabel?: string;
40
+ xStepCount?: number;
41
+ xStepValue?: number;
42
+ yStepCount?: number;
43
+ yStepValue?: number;
44
+ hideXAxis?: boolean;
45
+ hideYAxis?: boolean;
46
+ showHLines?: boolean;
47
+ showVLines?: boolean;
46
48
  }
47
49
 
48
50
  export default function ScatterChart($props: ScatterChartProps) {
@@ -84,17 +86,27 @@ export default function ScatterChart($props: ScatterChartProps) {
84
86
  $state.calculatedWidth - $state.chartLeft,
85
87
  $state.textHeight,
86
88
  $state.calculatedXStepValue,
87
- $props.xStepCount || 2
89
+ $props.xStepCount || 2,
88
90
  );
89
91
  },
90
92
  get valueHeight() {
91
- return calculateValueHeight($state.chartBottom, $state.textHeight, $state.calculatedYStepValue, $props.yStepCount || 2);
93
+ return calculateValueHeight(
94
+ $state.chartBottom,
95
+ $state.textHeight,
96
+ $state.calculatedYStepValue,
97
+ $props.yStepCount || 2,
98
+ );
92
99
  },
93
100
  get chartBottom() {
94
101
  return calculateChartBottom($props.xLabel ?? "", $state.calculatedHeight, $state.textHeight);
95
102
  },
96
103
  get chartLeft() {
97
- return calculateChartLeft($state.yStepLabels, $props.yLabel ?? "", $state.textHeight, $state.textWidth);
104
+ return calculateChartLeft(
105
+ $state.yStepLabels,
106
+ $props.yLabel ?? "",
107
+ $state.textHeight,
108
+ $state.textWidth,
109
+ );
98
110
  },
99
111
  get pointSeries() {
100
112
  return buildPointSeries(
@@ -102,12 +114,12 @@ export default function ScatterChart($props: ScatterChartProps) {
102
114
  $state.chartLeft,
103
115
  $state.chartBottom,
104
116
  $state.itemWidth,
105
- $state.valueHeight
117
+ $state.valueHeight,
106
118
  );
107
119
  },
108
120
  });
109
121
 
110
- $mount(() => {
122
+ $onmount(() => {
111
123
  // HACK: Wait until the measurer is really available
112
124
  setTimeout(() => {
113
125
  const bbox = measurer.getBBox();
@@ -122,7 +134,7 @@ export default function ScatterChart($props: ScatterChartProps) {
122
134
  return series.reduce((a, b) => {
123
135
  return Math.max(
124
136
  a,
125
- b.data.reduce((c, d) => Math.max(c, field === "x" ? d.x : d.y), 0)
137
+ b.data.reduce((c, d) => Math.max(c, field === "x" ? d.x : d.y), 0),
126
138
  );
127
139
  }, 0);
128
140
  }
@@ -132,7 +144,7 @@ export default function ScatterChart($props: ScatterChartProps) {
132
144
  theChartLeft: number,
133
145
  theChartBottom: number,
134
146
  theItemWidth: number,
135
- theValueHeight: number
147
+ theValueHeight: number,
136
148
  ) {
137
149
  return theSeries.map((series) => {
138
150
  return series.data.map((item) => {
@@ -144,15 +156,10 @@ export default function ScatterChart($props: ScatterChartProps) {
144
156
  }
145
157
 
146
158
  @render {
147
- <div
148
- {$props?.id}
149
- class={["torp-scatter-chart", $props?.class]}
150
- {$props?.style}
151
- &ref={container}
152
- >
153
- <svg version="1.1" width={$state.calculatedWidth} height={$state.calculatedHeight}>
159
+ <div {$props?.id} class={["torp-scatter-chart", $props?.class]} {$props?.style} &ref={container}>
160
+ <svg role={$props?.ariaLabel ? "img" : undefined} aria-label={$props?.ariaLabel} version="1.1" width={$state.calculatedWidth} height={$state.calculatedHeight}>
154
161
  <g>
155
- <text &ref={measurer} x="-999" y="-999">8</text>
162
+ <text &ref={measurer} x="-999" y="-999">8</text>
156
163
 
157
164
  @if ($state.textWidth && $state.textHeight) {
158
165
  <XAxis
@@ -203,7 +210,7 @@ export default function ScatterChart($props: ScatterChartProps) {
203
210
  >
204
211
  <title>{
205
212
  `${[series.name, series.data[j].label, series.data[j].x].filter(Boolean).join("\n")}, ${series.data[j].y}`
206
- }</title>
213
+ }</title>
207
214
  </circle>
208
215
  }
209
216
  }
@@ -1,18 +1,20 @@
1
1
  import type { ClassValue, StyleValue } from "@torpor/view";
2
- import { calculateMaxValue } from "../utils/chartUtils";
3
2
  import { chartColors } from "../utils/chartColors";
3
+ import { calculateMaxValue } from "../utils/chartUtils";
4
4
 
5
5
  interface SparkLineProps {
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
+ /** An ARIA label describing the chart for screen readers */
13
+ ariaLabel?: string;
12
14
  data: number[];
13
- color?: string,
14
- height?: number,
15
- width?: number,
15
+ color?: string;
16
+ height?: number;
17
+ width?: number;
16
18
  }
17
19
 
18
20
  export default function SparkLine($props: SparkLineProps) {
@@ -25,19 +27,19 @@ export default function SparkLine($props: SparkLineProps) {
25
27
  get calculatedHeight() {
26
28
  return $props.height || defaultHeight;
27
29
  },
28
- get calculatedWidth() {
30
+ get calculatedWidth() {
29
31
  return $props.width || container?.clientWidth || defaultWidth;
30
32
  },
31
- get calculatedSeries() {
33
+ get calculatedSeries() {
32
34
  return [{ name: "", color: $props.color ?? "", data: $props.data }];
33
35
  },
34
- get maxValue() {
36
+ get maxValue() {
35
37
  return calculateMaxValue($state.calculatedSeries);
36
38
  },
37
- get itemWidth() {
39
+ get itemWidth() {
38
40
  return $state.calculatedWidth / $props.data.length;
39
41
  },
40
- get valueHeight() {
42
+ get valueHeight() {
41
43
  return ($state.calculatedHeight - 4) / $state.maxValue;
42
44
  },
43
45
  get pointSeries() {
@@ -46,17 +48,12 @@ export default function SparkLine($props: SparkLineProps) {
46
48
  const y = +($state.calculatedHeight - 2 - value * $state.valueHeight).toFixed(2);
47
49
  return { x, y };
48
50
  });
49
- }
51
+ },
50
52
  });
51
53
 
52
54
  @render {
53
- <div
54
- {$props?.id}
55
- class={["torp-spark-line", $props?.class]}
56
- {$props?.style}
57
- &ref={container}
58
- >
59
- <svg version="1.1" width={$state.calculatedWidth} height={$state.calculatedHeight}>
55
+ <div {$props?.id} class={["torp-spark-line", $props?.class]} {$props?.style} &ref={container}>
56
+ <svg role={$props?.ariaLabel ? "img" : undefined} aria-label={$props?.ariaLabel} version="1.1" width={$state.calculatedWidth} height={$state.calculatedHeight}>
60
57
  <g>
61
58
  <polyline
62
59
  points={$state.pointSeries.map((p) => `${p.x},${p.y}`).join(" ")}
@@ -1,15 +1,15 @@
1
1
  interface XAxisProps {
2
- showAxis: boolean,
3
- height: number,
4
- width: number,
5
- itemWidth: number,
6
- textHeight: number,
7
- xLabel: string,
8
- labels: string[] ,
9
- stepLabels:number[] ,
10
- stepValue: number,
11
- chartLeft: number,
12
- chartBottom: number,
2
+ showAxis: boolean;
3
+ height: number;
4
+ width: number;
5
+ itemWidth: number;
6
+ textHeight: number;
7
+ xLabel: string;
8
+ labels: string[];
9
+ stepLabels: number[];
10
+ stepValue: number;
11
+ chartLeft: number;
12
+ chartBottom: number;
13
13
  }
14
14
 
15
15
  export default function XAxis($props: XAxisProps) {
@@ -20,7 +20,13 @@ export default function XAxis($props: XAxisProps) {
20
20
  @render {
21
21
  <svg>
22
22
  @if ($props.showAxis) {
23
- <line x1={$props.chartLeft} y1={$props.chartBottom} x2={$props.width} y2={$props.chartBottom} />
23
+ <line
24
+ x1={$props.chartLeft}
25
+ y1={$props.chartBottom}
26
+ x2={$props.width}
27
+ y2={$props.chartBottom}
28
+ stroke="currentcolor"
29
+ />
24
30
  }
25
31
  @if ($props.xLabel) {
26
32
  <text
@@ -1,19 +1,25 @@
1
1
  interface YAxisProps {
2
- showAxis: boolean,
3
- valueHeight: number,
4
- textHeight: number,
5
- yLabel: string,
6
- stepLabels: number[],
7
- stepValue: number,
8
- chartLeft: number,
9
- chartBottom: number,
2
+ showAxis: boolean;
3
+ valueHeight: number;
4
+ textHeight: number;
5
+ yLabel: string;
6
+ stepLabels: number[];
7
+ stepValue: number;
8
+ chartLeft: number;
9
+ chartBottom: number;
10
10
  }
11
11
 
12
12
  export default function YAxis($props: YAxisProps) {
13
13
  @render {
14
14
  <svg>
15
15
  @if ($props.showAxis) {
16
- <line x1={$props.chartLeft} y1={$props.chartBottom} x2={$props.chartLeft} y2={0} />
16
+ <line
17
+ x1={$props.chartLeft}
18
+ y1={$props.chartBottom}
19
+ x2={$props.chartLeft}
20
+ y2={0}
21
+ stroke="currentcolor"
22
+ />
17
23
  }
18
24
  @if ($props.yLabel) {
19
25
  <text