@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,469 @@
1
+ import { type SlotRender } from "@torpor/view";
2
+
3
+
4
+ interface BarChartProps {
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
+ /** An ARIA label describing the chart for screen readers */
12
+ ariaLabel?: string;
13
+ series: DataSeries[];
14
+ height?: number;
15
+ width?: number;
16
+ xLabel?: string;
17
+ yLabel?: string;
18
+ maxValue?: number;
19
+ stepCount?: number;
20
+ stepValue?: number;
21
+ showHLines?: boolean;
22
+ showVLines?: boolean;
23
+ }
24
+
25
+ /**
26
+ * A bar chart: one thick horizontal bar per series, drawn from the left
27
+ * edge towards its first value, with category labels down the side and the
28
+ * value scale along the bottom.
29
+ *
30
+ * This is a preset over the layered chart components:
31
+ *
32
+ * ```
33
+ * <Chart>
34
+ * <ChartYAxis />
35
+ * <ChartGrid />
36
+ * <ChartXAxis />
37
+ * <ChartBars />
38
+ * </Chart>
39
+ * ```
40
+ *
41
+ * For a vertical column per value, use ColumnChart instead.
42
+ */
43
+ declare function BarChart(
44
+ $parent: ParentNode,
45
+ $anchor: Node | null,
46
+ $props: BarChartProps,
47
+ $context?: Record<PropertyKey, any>,
48
+ $slots?: Record<string, SlotRender>,
49
+ ): void;
50
+
51
+
52
+
53
+ interface ChartProps {
54
+ /** An ID for the root element */
55
+ id?: string;
56
+ /** Classes for the root element */
57
+ class?: ClassValue;
58
+ /** Styles for the root element */
59
+ style?: StyleValue;
60
+ /** An ARIA label describing the chart for screen readers */
61
+ ariaLabel?: string;
62
+ /** The series that layers draw from (layers reference them by index) */
63
+ series: DataSeries[];
64
+ /** Fixed height in pixels (default 200) */
65
+ height?: number;
66
+ /** Fixed width in pixels (default: fills the container, minimum 400) */
67
+ width?: number;
68
+ /** Label under the x axis */
69
+ xLabel?: string;
70
+ /** Label beside the y axis */
71
+ yLabel?: string;
72
+ /** The value at the top of the value axis, instead of the series' maximum */
73
+ maxValue?: number;
74
+ /** The number of steps between 0 and the maximum value (default 2) */
75
+ stepCount?: number;
76
+ /** The size of each step, instead of being calculated */
77
+ stepValue?: number;
78
+ }
79
+
80
+ /**
81
+ * A container for layered chart components. It measures its text, works out
82
+ * the plot geometry and provides it to whatever axes, grid lines and marks
83
+ * are slotted inside:
84
+ *
85
+ * ```
86
+ * <Chart ariaLabel="Revenue" series={revenue}>
87
+ * <ChartYAxis side="right" />
88
+ * <ChartGrid />
89
+ * <ChartXAxis />
90
+ * <ChartColumns />
91
+ * <ChartLines seriesIndex={1} showPoints />
92
+ * </Chart>
93
+ * ```
94
+ *
95
+ * Layers can be mixed freely -- columns with a line overlaid, an axis on
96
+ * either side, only a y axis with no x axis -- so a preset like LineChart is
97
+ * just one such combination.
98
+ *
99
+ * See also the ready-made presets: BarChart, ColumnChart, LineChart,
100
+ * ScatterChart.
101
+ */
102
+ declare function Chart(
103
+ $parent: ParentNode,
104
+ $anchor: Node | null,
105
+ $props: ChartProps | undefined,
106
+ $context?: Record<PropertyKey, any>,
107
+ $slots?: Record<string, SlotRender>,
108
+ ): void;
109
+
110
+
111
+
112
+ /**
113
+ * Horizontal bar marks for a Chart: one thick horizontal bar per series,
114
+ * drawn from the left edge of the plot towards its value.
115
+ *
116
+ * For a column per value grouped under each label, use ChartColumns --
117
+ * those run vertically.
118
+ */
119
+ declare function ChartBars(
120
+ $parent: ParentNode,
121
+ $anchor: Node | null,
122
+ $props?: ChartBarsProps,
123
+ $context?: Record<PropertyKey, any>,
124
+ $slots?: Record<string, SlotRender>,
125
+ ): void;
126
+
127
+
128
+
129
+ /**
130
+ * Vertical column marks for a Chart: every value in the chosen series is
131
+ * drawn as a vertical column, grouped under its label.
132
+ *
133
+ * For one thick bar per series, use ChartBars -- those run horizontally.
134
+ */
135
+ declare function ChartColumns(
136
+ $parent: ParentNode,
137
+ $anchor: Node | null,
138
+ $props?: ChartColumnsProps,
139
+ $context?: Record<PropertyKey, any>,
140
+ $slots?: Record<string, SlotRender>,
141
+ ): void;
142
+
143
+
144
+
145
+ /**
146
+ * Grid lines for a Chart: horizontal lines at each value step and/or
147
+ * vertical lines through each category slot.
148
+ */
149
+ declare function ChartGrid(
150
+ $parent: ParentNode,
151
+ $anchor: Node | null,
152
+ $props?: ChartGridProps,
153
+ $context?: Record<PropertyKey, any>,
154
+ $slots?: Record<string, SlotRender>,
155
+ ): void;
156
+
157
+
158
+
159
+ /**
160
+ * Line marks for a Chart: draws the chosen series as a connected line
161
+ * across the category slots.
162
+ *
163
+ * Add alongside ChartColumns or ChartBars for overlaid layers -- or use two
164
+ * ChartLines with different `seriesIndex` to compare series.
165
+ */
166
+ declare function ChartLines(
167
+ $parent: ParentNode,
168
+ $anchor: Node | null,
169
+ $props?: ChartLinesProps,
170
+ $context?: Record<PropertyKey, any>,
171
+ $slots?: Record<string, SlotRender>,
172
+ ): void;
173
+
174
+
175
+
176
+ /**
177
+ * The x axis for a chart. For vertical marks (columns, lines) it runs along
178
+ * the bottom with each series' label centered under its slot; for
179
+ * horizontal marks (bars) it becomes the value scale, with a tick for each
180
+ * step along the bottom.
181
+ */
182
+ declare function ChartXAxis(
183
+ $parent: ParentNode,
184
+ $anchor: Node | null,
185
+ $props?: ChartXAxisProps,
186
+ $context?: Record<PropertyKey, any>,
187
+ $slots?: Record<string, SlotRender>,
188
+ ): void;
189
+
190
+
191
+
192
+ /**
193
+ * The y axis for a chart. For vertical marks (columns, lines) it is the
194
+ * value scale -- a line down the `side` edge with a tick for each step
195
+ * between 0 and the maximum value. For horizontal marks (bars) it carries
196
+ * the category labels, one per band down the left.
197
+ *
198
+ * Drawing it on either side does not change the plot geometry; overlaying
199
+ * an axis is purely presentational.
200
+ */
201
+ declare function ChartYAxis(
202
+ $parent: ParentNode,
203
+ $anchor: Node | null,
204
+ $props?: ChartYAxisProps,
205
+ $context?: Record<PropertyKey, any>,
206
+ $slots?: Record<string, SlotRender>,
207
+ ): void;
208
+
209
+
210
+
211
+ interface ColumnChartProps {
212
+ /** An ID for the root element */
213
+ id?: string;
214
+ /** Classes for the root element */
215
+ class?: ClassValue;
216
+ /** Styles for the root element */
217
+ style?: StyleValue;
218
+ /** An ARIA label describing the chart for screen readers */
219
+ ariaLabel?: string;
220
+ series: DataSeries[];
221
+ height?: number;
222
+ width?: number;
223
+ xLabel?: string;
224
+ yLabel?: string;
225
+ maxValue?: number;
226
+ stepCount?: number;
227
+ stepValue?: number;
228
+ showHLines?: boolean;
229
+ showVLines?: boolean;
230
+ }
231
+
232
+ /**
233
+ * A column chart: each value in each series is drawn as a vertical column,
234
+ * grouped under the series' label along the bottom axis.
235
+ *
236
+ * This is a preset over the layered chart components:
237
+ *
238
+ * ```
239
+ * <Chart>
240
+ * <ChartValueAxis />
241
+ * <ChartGrid />
242
+ * <ChartXAxis />
243
+ * <ChartColumns />
244
+ * </Chart>
245
+ * ```
246
+ *
247
+ * Compose those directly to customize -- e.g. the value axis on the right,
248
+ * or a line overlaid with ChartLines.
249
+ */
250
+ declare function ColumnChart(
251
+ $parent: ParentNode,
252
+ $anchor: Node | null,
253
+ $props: ColumnChartProps,
254
+ $context?: Record<PropertyKey, any>,
255
+ $slots?: Record<string, SlotRender>,
256
+ ): void;
257
+
258
+
259
+
260
+ interface GridLinesProps {
261
+ /** An ID for the root element */
262
+ id?: string;
263
+ /** Classes for the root element */
264
+ class?: ClassValue;
265
+ /** Styles for the root element */
266
+ style?: StyleValue;
267
+ showHLines?: boolean;
268
+ showVLines?: boolean;
269
+ width: number;
270
+ labels: string[];
271
+ xStepValue: number;
272
+ xStepLabels: number[];
273
+ yStepValue: number;
274
+ yStepLabels: number[];
275
+ itemWidth: number;
276
+ valueHeight: number;
277
+ chartLeft: number;
278
+ chartBottom: number;
279
+ type: string;
280
+ }
281
+
282
+ declare function GridLines(
283
+ $parent: ParentNode,
284
+ $anchor: Node | null,
285
+ $props: GridLinesProps,
286
+ $context?: Record<PropertyKey, any>,
287
+ $slots?: Record<string, SlotRender>,
288
+ ): void;
289
+
290
+
291
+
292
+ interface LineChartProps {
293
+ /** An ID for the root element */
294
+ id?: string;
295
+ /** Classes for the root element */
296
+ class?: ClassValue;
297
+ /** Styles for the root element */
298
+ style?: StyleValue;
299
+ /** An ARIA label describing the chart for screen readers */
300
+ ariaLabel?: string;
301
+ series: DataSeries[];
302
+ height?: number;
303
+ width?: number;
304
+ xLabel?: string;
305
+ yLabel?: string;
306
+ maxValue?: number;
307
+ stepCount?: number;
308
+ stepValue?: number;
309
+ showPoints?: boolean;
310
+ showHLines?: boolean;
311
+ showVLines?: boolean;
312
+ }
313
+
314
+ /**
315
+ * A line chart: each series drawn as a connected line across the category
316
+ * slots.
317
+ *
318
+ * This is a preset over the layered chart components:
319
+ *
320
+ * ```
321
+ * <Chart>
322
+ * <ChartValueAxis />
323
+ * <ChartGrid />
324
+ * <ChartXAxis />
325
+ * <ChartLines seriesIndex={0} />
326
+ * </Chart>
327
+ * ```
328
+ *
329
+ * Compose those directly for overlaid layers (columns plus a line, multiple
330
+ * separately-indexed lines etc).
331
+ */
332
+ declare function LineChart(
333
+ $parent: ParentNode,
334
+ $anchor: Node | null,
335
+ $props: LineChartProps,
336
+ $context?: Record<PropertyKey, any>,
337
+ $slots?: Record<string, SlotRender>,
338
+ ): void;
339
+
340
+
341
+
342
+ interface PieChartProps {
343
+ /** An ID for the root element */
344
+ id?: string;
345
+ /** Classes for the root element */
346
+ class?: ClassValue;
347
+ /** Styles for the root element */
348
+ style?: StyleValue;
349
+ /** An ARIA label describing the chart for screen readers */
350
+ ariaLabel?: string;
351
+ data: PieData[];
352
+ size?: number;
353
+ radius?: number;
354
+ cutout?: number;
355
+ }
356
+
357
+ declare function PieChart(
358
+ $parent: ParentNode,
359
+ $anchor: Node | null,
360
+ $props: PieChartProps,
361
+ $context?: Record<PropertyKey, any>,
362
+ $slots?: Record<string, SlotRender>,
363
+ ): void;
364
+
365
+
366
+
367
+ interface ScatterChartProps {
368
+ /** An ID for the root element */
369
+ id?: string;
370
+ /** Classes for the root element */
371
+ class?: ClassValue;
372
+ /** Styles for the root element */
373
+ style?: StyleValue;
374
+ /** An ARIA label describing the chart for screen readers */
375
+ ariaLabel?: string;
376
+ series: DataSeries[];
377
+ height?: number;
378
+ width?: number;
379
+ xLabel?: string;
380
+ yLabel?: string;
381
+ xStepCount?: number;
382
+ xStepValue?: number;
383
+ yStepCount?: number;
384
+ yStepValue?: number;
385
+ hideXAxis?: boolean;
386
+ hideYAxis?: boolean;
387
+ showHLines?: boolean;
388
+ showVLines?: boolean;
389
+ }
390
+
391
+ declare function ScatterChart(
392
+ $parent: ParentNode,
393
+ $anchor: Node | null,
394
+ $props: ScatterChartProps,
395
+ $context?: Record<PropertyKey, any>,
396
+ $slots?: Record<string, SlotRender>,
397
+ ): void;
398
+
399
+
400
+
401
+ interface SparkLineProps {
402
+ /** An ID for the root element */
403
+ id?: string;
404
+ /** Classes for the root element */
405
+ class?: ClassValue;
406
+ /** Styles for the root element */
407
+ style?: StyleValue;
408
+ /** An ARIA label describing the chart for screen readers */
409
+ ariaLabel?: string;
410
+ data: number[];
411
+ color?: string;
412
+ height?: number;
413
+ width?: number;
414
+ }
415
+
416
+ declare function SparkLine(
417
+ $parent: ParentNode,
418
+ $anchor: Node | null,
419
+ $props: SparkLineProps,
420
+ $context?: Record<PropertyKey, any>,
421
+ $slots?: Record<string, SlotRender>,
422
+ ): void;
423
+
424
+
425
+
426
+ interface XAxisProps {
427
+ showAxis: boolean;
428
+ height: number;
429
+ width: number;
430
+ itemWidth: number;
431
+ textHeight: number;
432
+ xLabel: string;
433
+ labels: string[];
434
+ stepLabels: number[];
435
+ stepValue: number;
436
+ chartLeft: number;
437
+ chartBottom: number;
438
+ }
439
+
440
+ declare function XAxis(
441
+ $parent: ParentNode,
442
+ $anchor: Node | null,
443
+ $props: XAxisProps,
444
+ $context?: Record<PropertyKey, any>,
445
+ $slots?: Record<string, SlotRender>,
446
+ ): void;
447
+
448
+
449
+
450
+ interface YAxisProps {
451
+ showAxis: boolean;
452
+ valueHeight: number;
453
+ textHeight: number;
454
+ yLabel: string;
455
+ stepLabels: number[];
456
+ stepValue: number;
457
+ chartLeft: number;
458
+ chartBottom: number;
459
+ }
460
+
461
+ declare function YAxis(
462
+ $parent: ParentNode,
463
+ $anchor: Node | null,
464
+ $props: YAxisProps,
465
+ $context?: Record<PropertyKey, any>,
466
+ $slots?: Record<string, SlotRender>,
467
+ ): void;
468
+
469
+ export { BarChart, Chart, ChartBars, ChartColumns, ChartGrid, ChartLines, ChartXAxis, ChartYAxis, ColumnChart, GridLines, LineChart, PieChart, ScatterChart, SparkLine, XAxis, YAxis };
@@ -0,0 +1,17 @@
1
+ import BarChart from "./BarChart.torp";
2
+ import Chart from "./Chart.torp";
3
+ import ChartBars from "./ChartBars.torp";
4
+ import ChartColumns from "./ChartColumns.torp";
5
+ import ChartGrid from "./ChartGrid.torp";
6
+ import ChartLines from "./ChartLines.torp";
7
+ import ChartXAxis from "./ChartXAxis.torp";
8
+ import ChartYAxis from "./ChartYAxis.torp";
9
+ import ColumnChart from "./ColumnChart.torp";
10
+ import GridLines from "./GridLines.torp";
11
+ import LineChart from "./LineChart.torp";
12
+ import PieChart from "./PieChart.torp";
13
+ import ScatterChart from "./ScatterChart.torp";
14
+ import SparkLine from "./SparkLine.torp";
15
+ import XAxis from "./XAxis.torp";
16
+ import YAxis from "./YAxis.torp";
17
+ export { BarChart, Chart, ChartBars, ChartColumns, ChartGrid, ChartLines, ChartXAxis, ChartYAxis, ColumnChart, GridLines, LineChart, PieChart, ScatterChart, SparkLine, XAxis, YAxis };
@@ -0,0 +1,154 @@
1
+ import type { Bindable, ClassValue, StyleValue } from "@torpor/view";
2
+ import {
3
+ type FieldContext,
4
+ FieldContextName,
5
+ type FormContext,
6
+ FormContextName,
7
+ } from "../Form/FormTypes";
8
+ import FormValues from "../Form/FormValues.torp";
9
+ import { createFocusGroup, type FocusItemState } from "../utils/focusGroup";
10
+ import { defaultPalette, parseHex } from "../utils/colorUtils";
11
+ import createFormField from "../utils/formField";
12
+
13
+ interface ColorPaletteProps {
14
+ /** An ID for the root element */
15
+ id?: string;
16
+ /** Classes for the root element */
17
+ class?: ClassValue;
18
+ /** Styles for the root element */
19
+ style?: StyleValue;
20
+ /** The selected color as "#rrggbb"; undefined if nothing is selected */
21
+ value?: Bindable<string | undefined>;
22
+ /** The colors to offer (default: a built-in gray + hue palette) */
23
+ colors?: string[];
24
+ /** If set to true, the user cannot interact with this palette */
25
+ disabled?: boolean;
26
+ /** An accessible name for the palette */
27
+ ariaLabel?: string;
28
+ /** The name of the component's form data field */
29
+ name?: string;
30
+ /** Raised when a color has been selected or deselected */
31
+ onchange?: (value: string | undefined) => void;
32
+ }
33
+
34
+ /**
35
+ * A grid of color swatches that behaves like a radio group: one swatch can
36
+ * be selected, clicking it again deselects, and the arrow keys move through
37
+ * the swatches selecting as they go.
38
+ *
39
+ * Use ColorPicker instead when arbitrary hex values should be enterable
40
+ * alongside the palette.
41
+ */
42
+ export default function ColorPalette($props: ColorPaletteProps | undefined) {
43
+ let root: HTMLElement;
44
+
45
+ // Wire up the enclosing Form and Field, if any
46
+ const form = createFormField(
47
+ $props?.name,
48
+ $context[FormContextName] as FormContext | undefined,
49
+ $context[FieldContextName] as FieldContext | undefined,
50
+ );
51
+
52
+ function getDisabled(): boolean {
53
+ return $props?.disabled === true;
54
+ }
55
+
56
+ function getColors(): string[] {
57
+ return $props?.colors ?? defaultPalette;
58
+ }
59
+
60
+ let $state = $watch({
61
+ value: undefined as string | undefined,
62
+ });
63
+
64
+ $bind($state, $props, "value");
65
+
66
+ const group = createFocusGroup<FocusItemState>();
67
+
68
+ function normalized(color: string | undefined | null): string {
69
+ return parseHex(color) ?? "";
70
+ }
71
+
72
+ function isSelected(color: string): boolean {
73
+ return $state.value !== undefined && normalized($state.value) === normalized(color);
74
+ }
75
+
76
+ function select(color: string) {
77
+ if (getDisabled()) return;
78
+ const next = normalized(color);
79
+ // Selecting the current swatch clears it, like Rating's allowClear
80
+ $state.value = isSelected(color) ? undefined : next || undefined;
81
+ form.handleInput();
82
+ $props?.onchange?.($state.value);
83
+ }
84
+
85
+ function handleKey(index: number, e: KeyboardEvent) {
86
+ if (getDisabled()) return;
87
+ switch (e.key) {
88
+ case "Enter":
89
+ case " ": {
90
+ e.preventDefault();
91
+ select(getColors()[index]);
92
+ break;
93
+ }
94
+ default: {
95
+ const before = group.getFocusIndex();
96
+ group.handleGroupKey(index, e);
97
+ const after = group.getFocusIndex();
98
+ if (after !== before && after >= 0) {
99
+ group.handleItemFocus(after);
100
+ select(getColors()[after]);
101
+ }
102
+ break;
103
+ }
104
+ }
105
+ }
106
+
107
+ // Only blur when focus leaves the whole palette
108
+ function handleFocusOut(e: FocusEvent) {
109
+ if (!root.contains(e.relatedTarget as Node | null)) {
110
+ form.handleBlur();
111
+ }
112
+ }
113
+
114
+ @render {
115
+ <div
116
+ {$props?.id}
117
+ class={["torp-color-palette", $props?.class]}
118
+ {$props?.style}
119
+ role="radiogroup"
120
+ aria-label={$props?.ariaLabel}
121
+ aria-disabled={getDisabled() ? "true" : undefined}
122
+ data-valid={form.valid ? "valid" : "invalid"}
123
+ aria-describedby={form.messageId}
124
+ onfocusout={handleFocusOut}
125
+ &ref={root}
126
+ >
127
+ @for (let [i, color] of getColors().entries()) {
128
+ @key = color
129
+ <button
130
+ type="button"
131
+ class="torp-color-palette-swatch"
132
+ role="radio"
133
+ tabindex={group.isTabStop(i) ? 0 : -1}
134
+ aria-checked={isSelected(color) ? "true" : "false"}
135
+ aria-label={normalized(color)}
136
+ aria-disabled={getDisabled() ? "true" : undefined}
137
+ data-color={color}
138
+ data-selected={isSelected(color) ? "selected" : undefined}
139
+ disabled={getDisabled()}
140
+ style={`background-color:${color}`}
141
+ onclick={() => select(color)}
142
+ onkeydown={(e: KeyboardEvent) => handleKey(i, e)}
143
+ onmount={(el: HTMLElement) => {
144
+ const item: FocusItemState = { setFocused: () => el.focus() };
145
+ group.registerItem(item);
146
+ return () => group.removeItem(item.index!);
147
+ }}
148
+ />
149
+ }
150
+ </div>
151
+
152
+ <FormValues name={form.name} value={$state.value} />
153
+ }
154
+ }