@torpor/ui 0.1.6 → 0.2.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 (278) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/dist/Accordion/Accordion.torp +2 -2
  3. package/dist/Accordion/AccordionContent.torp +2 -2
  4. package/dist/Accordion/AccordionHeader.torp +2 -2
  5. package/dist/Accordion/AccordionItem.torp +2 -2
  6. package/dist/Accordion/AccordionTrigger.torp +2 -2
  7. package/dist/Accordion/index.d.ts +92 -0
  8. package/dist/Breadcrumb/Breadcrumb.torp +33 -0
  9. package/dist/Breadcrumb/BreadcrumbItem.torp +19 -0
  10. package/dist/Breadcrumb/BreadcrumbSeparator.torp +16 -0
  11. package/dist/Breadcrumb/index.d.ts +56 -0
  12. package/dist/Breadcrumb/index.js +14 -0
  13. package/dist/Calendar/Calendar.torp +265 -0
  14. package/dist/Calendar/CalendarDay.torp +67 -0
  15. package/dist/Calendar/CalendarTypes.ts +22 -0
  16. package/dist/Calendar/index.d.ts +38 -0
  17. package/dist/Calendar/index.js +10 -0
  18. package/dist/Calendar/index.js.map +1 -0
  19. package/dist/Dialog/Dialog.torp +3 -3
  20. package/dist/Dialog/DialogBody.torp +2 -2
  21. package/dist/Dialog/DialogButton.torp +2 -2
  22. package/dist/Dialog/DialogFooter.torp +2 -2
  23. package/dist/Dialog/DialogHeader.torp +2 -2
  24. package/dist/Dialog/index.d.ts +92 -0
  25. package/dist/Disclosure/Disclosure.torp +69 -0
  26. package/dist/Disclosure/DisclosureContent.torp +36 -0
  27. package/dist/Disclosure/DisclosureHeader.torp +34 -0
  28. package/dist/Disclosure/DisclosureTrigger.torp +36 -0
  29. package/dist/Disclosure/DisclosureTypes.ts +14 -0
  30. package/dist/Disclosure/index.d.ts +74 -0
  31. package/dist/Disclosure/index.js +18 -0
  32. package/dist/Disclosure/index.js.map +1 -0
  33. package/{src/Offscreen/Offscreen.torp → dist/Drawer/Drawer.torp} +10 -19
  34. package/dist/Drawer/index.d.ts +20 -0
  35. package/dist/Drawer/index.js +6 -0
  36. package/dist/Drawer/index.js.map +1 -0
  37. package/dist/Menu/Menu.torp +160 -0
  38. package/dist/Menu/MenuButton.torp +53 -0
  39. package/dist/Menu/MenuCheck.torp +70 -0
  40. package/dist/Menu/MenuGroup.torp +19 -0
  41. package/dist/Menu/MenuIndicator.torp +29 -0
  42. package/dist/Menu/MenuPopout.torp +71 -0
  43. package/dist/Menu/MenuPopoutContent.torp +74 -0
  44. package/dist/Menu/MenuPopoutTrigger.torp +117 -0
  45. package/dist/Menu/MenuRadio.torp +88 -0
  46. package/dist/Menu/MenuRadioGroup.torp +86 -0
  47. package/dist/Menu/MenuSeparator.torp +14 -0
  48. package/dist/Menu/MenuTypes.ts +58 -0
  49. package/dist/Menu/index.d.ts +200 -0
  50. package/dist/Menu/index.js +46 -0
  51. package/dist/Menu/index.js.map +1 -0
  52. package/dist/MenuBar/MenuBar.torp +150 -0
  53. package/dist/MenuBar/MenuBarItem.torp +104 -0
  54. package/dist/MenuBar/MenuBarItemContent.torp +108 -0
  55. package/dist/MenuBar/MenuBarItemTrigger.torp +89 -0
  56. package/dist/MenuBar/MenuBarTypes.ts +36 -0
  57. package/dist/MenuBar/index.d.ts +74 -0
  58. package/dist/MenuBar/index.js +18 -0
  59. package/dist/MenuBar/index.js.map +1 -0
  60. package/dist/NavMenu/NavMenu.torp +2 -2
  61. package/dist/NavMenu/NavMenuButton.torp +2 -2
  62. package/dist/NavMenu/NavMenuElement.torp +2 -2
  63. package/dist/NavMenu/NavMenuGroup.torp +2 -2
  64. package/dist/NavMenu/NavMenuGroupHeader.torp +2 -2
  65. package/dist/NavMenu/NavMenuLink.torp +2 -2
  66. package/dist/NavMenu/NavMenuPopout.torp +2 -2
  67. package/dist/NavMenu/NavMenuPopoutButton.torp +3 -3
  68. package/dist/NavMenu/NavMenuPopoutContent.torp +29 -27
  69. package/dist/NavMenu/NavMenuSeparator.torp +2 -2
  70. package/dist/NavMenu/index.d.ts +182 -0
  71. package/dist/Notification/Notification.torp +48 -0
  72. package/dist/Notification/NotificationClose.torp +28 -0
  73. package/dist/Notification/NotificationContainer.torp +14 -0
  74. package/dist/Notification/NotificationContent.torp +13 -0
  75. package/dist/Notification/NotificationTypes.ts +5 -0
  76. package/dist/Notification/index.d.ts +74 -0
  77. package/dist/Notification/index.js +36 -0
  78. package/dist/Notification/index.js.map +1 -0
  79. package/dist/Notification/showNotification.ts +30 -0
  80. package/dist/Popover/Popover.torp +2 -2
  81. package/dist/Popover/PopoverContent.torp +31 -28
  82. package/dist/Popover/PopoverContentAnchored.torp +39 -38
  83. package/dist/Popover/PopoverContentContextual.torp +39 -36
  84. package/dist/Popover/PopoverOverlay.torp +3 -3
  85. package/dist/Popover/PopoverTrigger.torp +2 -2
  86. package/dist/Popover/PopoverTriggerContextual.torp +2 -2
  87. package/dist/Popover/PopoverTriggerHover.torp +3 -3
  88. package/dist/Popover/index.d.ts +146 -0
  89. package/dist/TabGroup/TabContent.torp +2 -2
  90. package/dist/TabGroup/TabGroup.torp +2 -2
  91. package/dist/TabGroup/TabHeader.torp +3 -3
  92. package/dist/TabGroup/TabList.torp +2 -2
  93. package/dist/TabGroup/TabTrigger.torp +2 -2
  94. package/dist/TabGroup/index.d.ts +92 -0
  95. package/dist/icons/ArrowDown.torp +15 -0
  96. package/dist/icons/ArrowLeft.torp +15 -0
  97. package/dist/icons/ArrowRight.torp +15 -0
  98. package/dist/icons/ArrowUp.torp +15 -0
  99. package/dist/icons/Bars.torp +17 -0
  100. package/dist/icons/Check.torp +15 -0
  101. package/dist/icons/ChevronDown.torp +15 -0
  102. package/dist/icons/ChevronLeft.torp +15 -0
  103. package/dist/icons/ChevronRight.torp +15 -0
  104. package/dist/icons/ChevronUp.torp +15 -0
  105. package/dist/icons/Cross.torp +16 -0
  106. package/dist/icons/Loading.torp +16 -0
  107. package/dist/icons/Minus.torp +15 -0
  108. package/dist/icons/Plus.torp +16 -0
  109. package/dist/icons/index.d.ts +254 -0
  110. package/dist/icons/index.js +58 -0
  111. package/dist/icons/index.js.map +1 -0
  112. package/dist/{motion.d.cts → index.d.ts} +2 -2
  113. package/dist/metafile-esm.json +1 -1
  114. package/dist/motion/fade.ts +7 -0
  115. package/dist/motion/index.d.ts +2 -0
  116. package/dist/{motion.js → motion/index.js} +1 -1
  117. package/dist/motion/index.js.map +1 -0
  118. package/dist/mount/index.d.ts +2 -0
  119. package/dist/utils/dateUtils.ts +244 -0
  120. package/dist/utils/index.d.ts +2 -0
  121. package/dist/utils/setPopoverPosition.ts +4 -0
  122. package/package.json +51 -35
  123. package/scripts/postbuild.ts +42 -5
  124. package/src/Accordion/Accordion.torp +2 -2
  125. package/src/Accordion/AccordionContent.torp +2 -2
  126. package/src/Accordion/AccordionHeader.torp +2 -2
  127. package/src/Accordion/AccordionItem.torp +2 -2
  128. package/src/Accordion/AccordionTrigger.torp +2 -2
  129. package/src/Breadcrumb/Breadcrumb.torp +33 -0
  130. package/src/Breadcrumb/BreadcrumbItem.torp +19 -0
  131. package/src/Breadcrumb/BreadcrumbSeparator.torp +16 -0
  132. package/src/Breadcrumb/index.ts +5 -0
  133. package/src/Calendar/Calendar.torp +265 -0
  134. package/src/Calendar/CalendarDay.torp +67 -0
  135. package/src/Calendar/CalendarTypes.ts +22 -0
  136. package/src/Calendar/index.ts +4 -0
  137. package/src/Dialog/Dialog.torp +3 -3
  138. package/src/Dialog/DialogBody.torp +2 -2
  139. package/src/Dialog/DialogButton.torp +2 -2
  140. package/src/Dialog/DialogFooter.torp +2 -2
  141. package/src/Dialog/DialogHeader.torp +2 -2
  142. package/src/Disclosure/Disclosure.torp +69 -0
  143. package/src/Disclosure/DisclosureContent.torp +36 -0
  144. package/src/Disclosure/DisclosureHeader.torp +34 -0
  145. package/src/Disclosure/DisclosureTrigger.torp +36 -0
  146. package/src/Disclosure/DisclosureTypes.ts +14 -0
  147. package/src/Disclosure/index.ts +6 -0
  148. package/{dist/Offscreen/Offscreen.torp → src/Drawer/Drawer.torp} +10 -19
  149. package/src/Drawer/index.ts +3 -0
  150. package/src/Menu/Menu.torp +160 -0
  151. package/src/Menu/MenuButton.torp +53 -0
  152. package/src/Menu/MenuCheck.torp +70 -0
  153. package/src/Menu/MenuGroup.torp +19 -0
  154. package/src/Menu/MenuIndicator.torp +29 -0
  155. package/src/Menu/MenuPopout.torp +71 -0
  156. package/src/Menu/MenuPopoutContent.torp +74 -0
  157. package/src/Menu/MenuPopoutTrigger.torp +117 -0
  158. package/src/Menu/MenuRadio.torp +88 -0
  159. package/src/Menu/MenuRadioGroup.torp +86 -0
  160. package/src/Menu/MenuSeparator.torp +14 -0
  161. package/src/Menu/MenuTypes.ts +58 -0
  162. package/src/Menu/index.ts +25 -0
  163. package/src/MenuBar/MenuBar.torp +150 -0
  164. package/src/MenuBar/MenuBarItem.torp +104 -0
  165. package/src/MenuBar/MenuBarItemContent.torp +108 -0
  166. package/src/MenuBar/MenuBarItemTrigger.torp +89 -0
  167. package/src/MenuBar/MenuBarTypes.ts +36 -0
  168. package/src/MenuBar/index.ts +6 -0
  169. package/src/NavMenu/NavMenu.torp +2 -2
  170. package/src/NavMenu/NavMenuButton.torp +2 -2
  171. package/src/NavMenu/NavMenuElement.torp +2 -2
  172. package/src/NavMenu/NavMenuGroup.torp +2 -2
  173. package/src/NavMenu/NavMenuGroupHeader.torp +2 -2
  174. package/src/NavMenu/NavMenuLink.torp +2 -2
  175. package/src/NavMenu/NavMenuPopout.torp +2 -2
  176. package/src/NavMenu/NavMenuPopoutButton.torp +3 -3
  177. package/src/NavMenu/NavMenuPopoutContent.torp +29 -27
  178. package/src/NavMenu/NavMenuSeparator.torp +2 -2
  179. package/src/Notification/Notification.torp +48 -0
  180. package/src/Notification/NotificationClose.torp +28 -0
  181. package/src/Notification/NotificationContainer.torp +14 -0
  182. package/src/Notification/NotificationContent.torp +13 -0
  183. package/src/Notification/NotificationTypes.ts +5 -0
  184. package/src/Notification/index.ts +13 -0
  185. package/src/Notification/showNotification.ts +30 -0
  186. package/src/Popover/Popover.torp +2 -2
  187. package/src/Popover/PopoverContent.torp +31 -28
  188. package/src/Popover/PopoverContentAnchored.torp +39 -38
  189. package/src/Popover/PopoverContentContextual.torp +39 -36
  190. package/src/Popover/PopoverOverlay.torp +3 -3
  191. package/src/Popover/PopoverTrigger.torp +2 -2
  192. package/src/Popover/PopoverTriggerContextual.torp +2 -2
  193. package/src/Popover/PopoverTriggerHover.torp +3 -3
  194. package/src/Slider/Slider.torp +83 -0
  195. package/src/Slider/index.ts +3 -0
  196. package/src/TabGroup/TabContent.torp +2 -2
  197. package/src/TabGroup/TabGroup.torp +2 -2
  198. package/src/TabGroup/TabHeader.torp +3 -3
  199. package/src/TabGroup/TabList.torp +2 -2
  200. package/src/TabGroup/TabTrigger.torp +2 -2
  201. package/src/icons/ArrowDown.torp +15 -0
  202. package/src/icons/ArrowLeft.torp +15 -0
  203. package/src/icons/ArrowRight.torp +15 -0
  204. package/src/icons/ArrowUp.torp +15 -0
  205. package/src/icons/Bars.torp +17 -0
  206. package/src/icons/Check.torp +15 -0
  207. package/src/icons/ChevronDown.torp +15 -0
  208. package/src/icons/ChevronLeft.torp +15 -0
  209. package/src/icons/ChevronRight.torp +15 -0
  210. package/src/icons/ChevronUp.torp +15 -0
  211. package/src/icons/Cross.torp +16 -0
  212. package/src/icons/Loading.torp +16 -0
  213. package/src/icons/Minus.torp +15 -0
  214. package/src/icons/Plus.torp +16 -0
  215. package/src/icons/index.ts +31 -0
  216. package/src/motion/fade.ts +2 -2
  217. package/src/motion/index.ts +3 -0
  218. package/src/utils/dateUtils.ts +244 -0
  219. package/src/utils/setPopoverPosition.ts +4 -0
  220. package/test/Breadcrumb/accessibility.test.ts +29 -0
  221. package/test/Breadcrumb/basic.test.ts +17 -0
  222. package/test/Breadcrumb/components/BreadcrumbTest.torp +15 -0
  223. package/test/Calendar/components/CalendarTest.torp +9 -0
  224. package/test/Calendar/default.test.ts +18 -0
  225. package/test/Dialog/components/DialogAccessibility.torp +5 -5
  226. package/test/Dialog/components/DialogFunction.torp +4 -6
  227. package/test/Dialog/components/DialogVariable.torp +19 -21
  228. package/test/Disclosure/accessibility.test.ts +30 -0
  229. package/test/Disclosure/components/DisclosureTest.torp +17 -0
  230. package/test/Disclosure/default.test.ts +15 -0
  231. package/test/Disclosure/toggle.test.ts +19 -0
  232. package/test/Menu/accessibility.test.ts +82 -0
  233. package/test/Menu/basic.test.ts +57 -0
  234. package/test/Menu/components/MenuAccessibility.torp +59 -0
  235. package/test/Menu/components/MenuBasic.torp +58 -0
  236. package/test/MenuBar/accessibility.test.ts +86 -0
  237. package/test/MenuBar/basic.test.ts +21 -0
  238. package/test/MenuBar/components/MenuBarAccessibility.torp +34 -0
  239. package/test/MenuBar/components/MenuBarBasic.torp +25 -0
  240. package/test/Notification/accessibility.test.ts +21 -0
  241. package/test/Notification/components/CustomNotification.torp +14 -0
  242. package/test/Notification/components/NotificationAccessibility.torp +14 -0
  243. package/test/Notification/components/NotificationFunction.torp +20 -0
  244. package/test/Notification/components/NotificationVariable.torp +22 -0
  245. package/test/Notification/function.test.ts +25 -0
  246. package/test/Notification/variable.test.ts +25 -0
  247. package/test/Popover/components/CustomDialog.torp +25 -0
  248. package/test/Popover/components/PromptFunction.torp +19 -0
  249. package/test/Popover/components/PromptVariable.torp +38 -0
  250. package/test/Popover/function.test.ts +26 -0
  251. package/test/Popover/variable.test.ts +27 -0
  252. package/tsup.config.ts +12 -4
  253. package/dist/Accordion/index.cjs +0 -53
  254. package/dist/Accordion/index.cjs.map +0 -1
  255. package/dist/Dialog/index.cjs +0 -53
  256. package/dist/Dialog/index.cjs.map +0 -1
  257. package/dist/NavMenu/index.cjs +0 -78
  258. package/dist/NavMenu/index.cjs.map +0 -1
  259. package/dist/Offscreen/index.cjs +0 -33
  260. package/dist/Offscreen/index.cjs.map +0 -1
  261. package/dist/Offscreen/index.js +0 -6
  262. package/dist/Popover/index.cjs +0 -222
  263. package/dist/Popover/index.cjs.map +0 -1
  264. package/dist/TabGroup/index.cjs +0 -53
  265. package/dist/TabGroup/index.cjs.map +0 -1
  266. package/dist/metafile-cjs.json +0 -1
  267. package/dist/motion.cjs +0 -34
  268. package/dist/motion.cjs.map +0 -1
  269. package/dist/motion.d.ts +0 -6
  270. package/dist/motion.js.map +0 -1
  271. package/src/Accordion.ts +0 -7
  272. package/src/Dialog.ts +0 -7
  273. package/src/NavMenu.ts +0 -23
  274. package/src/Offscreen/index.ts +0 -3
  275. package/src/Popover.ts +0 -29
  276. package/src/TabGroup.ts +0 -7
  277. package/src/motion.ts +0 -3
  278. /package/dist/{Offscreen → Breadcrumb}/index.js.map +0 -0
@@ -10,7 +10,7 @@ import { PopoverContextName, type PopoverContext } from "./PopoverTypes";
10
10
  */
11
11
  export default function PopoverContentContextual($props: any) {
12
12
  let div: HTMLDivElement;
13
-
13
+ let shown = false;
14
14
  let closeOnClick = false;
15
15
 
16
16
  // Get stuff out of the PopoverContext
@@ -20,42 +20,45 @@ export default function PopoverContentContextual($props: any) {
20
20
  }
21
21
  let $state = context.state;
22
22
 
23
- let first = true;
24
23
  $run(() => {
25
- let visible = $state.visible;
24
+ if (!$state.visible) {
25
+ hide();
26
+ }
27
+ });
28
+
29
+ function show() {
30
+ shown = true;
31
+
32
+ // HACK: Because this Contextual could be shown with a click, we need to wait for another mousedown
33
+ // before we close on click. Otherwise the click immediately bubbles to the document
34
+ closeOnClick = false;
35
+ addDocumentEvent("mousedown", handleDocumentMouseDown);
36
+ addDocumentEvent("click", handleDocumentClick);
26
37
 
27
- if (first) {
28
- first = false;
29
- return;
38
+ // Set the position and listen for window resize and scroll to reset the position
39
+ setPosition();
40
+ const scrollParent = getScrollParent(context.anchorElement)
41
+ scrollParent.addEventListener("resize", setPosition);
42
+ scrollParent.addEventListener("scroll", setPosition);
43
+ if (context.focusFirstElement) {
44
+ context.focusFirstElement();
30
45
  }
46
+ }
47
+
48
+ function hide() {
49
+ if (!shown) return;
50
+
51
+ removeDocumentEvent("mousedown", handleDocumentMouseDown);
52
+ removeDocumentEvent("click", handleDocumentClick);
31
53
 
32
- if (visible) {
33
- // HACK: Because this Contextual could be shown with a click, we need to wait for another mousedown
34
- // before we close on click. Otherwise the click immediately bubbles to the document
35
- closeOnClick = false;
36
- addDocumentEvent("mousedown", handleDocumentMouseDown);
37
- addDocumentEvent("click", handleDocumentClick);
38
- // Wait for the content div to be shown, set its position, and listen for window resize to re-position
39
- //await tick();
40
- setPosition();
41
- if (context.focusFirstElement) {
42
- context.focusFirstElement();
43
- }
44
- const scrollParent = getScrollParent(context.anchorElement)
45
- scrollParent.addEventListener("resize", setPosition);
46
- scrollParent.addEventListener("scroll", setPosition);
47
- } else {
48
- removeDocumentEvent("mousedown", handleDocumentMouseDown);
49
- removeDocumentEvent("click", handleDocumentClick);
50
- // Stop listening for window resize and focus the anchor element per WAI guidelines
51
- const scrollParent = getScrollParent(context.anchorElement)
52
- scrollParent.removeEventListener("resize", setPosition);
53
- scrollParent.removeEventListener("scroll", setPosition);
54
- if (context.anchorElement?.focus) {
55
- context.anchorElement.focus();
56
- }
54
+ // Stop listening for window resize and focus the anchor element per WAI guidelines
55
+ const scrollParent = getScrollParent(context.anchorElement)
56
+ scrollParent.removeEventListener("resize", setPosition);
57
+ scrollParent.removeEventListener("scroll", setPosition);
58
+ if (context.anchorElement?.focus) {
59
+ context.anchorElement.focus();
57
60
  }
58
- });
61
+ }
59
62
 
60
63
  function handleDocumentMouseDown() {
61
64
  closeOnClick = true;
@@ -77,7 +80,7 @@ export default function PopoverContentContextual($props: any) {
77
80
  throw new Error("ContextualContent must have an anchor element");
78
81
  }
79
82
 
80
- if (div && $state.position) {
83
+ if ($state.position) {
81
84
  setContextPosition(context.anchorElement, div, $state.position);
82
85
  }
83
86
  }
@@ -85,12 +88,12 @@ export default function PopoverContentContextual($props: any) {
85
88
  @render {
86
89
  @if ($state.visible) {
87
90
  <div
88
- id={$props.id}
91
+ {$props.id}
89
92
  class={`torp-popover-content-contextual ${$props.class ?? ""}`.trim()}
90
93
  &ref={div}
91
- :onmount={(el) => setContextPosition(context.anchorElement, el, $state.position)}
94
+ onmount={show}
92
95
  >
93
- <:slot />
96
+ <slot />
94
97
  </div>
95
98
  }
96
99
  }
@@ -18,12 +18,12 @@ export default function PopoverOverlay($props: any) {
18
18
  @render {
19
19
  @if ($state.visible) {
20
20
  <div
21
- id={$props.id}
21
+ {$props.id}
22
22
  class={`torp-popover-overlay ${$props.class ?? ""}`.trim()}
23
23
  tabindex="-1"
24
- :onmount={(el) => disableScroll(el)}
24
+ onmount={(el) => disableScroll(el)}
25
25
  >
26
- <:slot />
26
+ <slot />
27
27
  </div>
28
28
  }
29
29
  }
@@ -18,12 +18,12 @@ export default function PopoverTrigger($props: any) {
18
18
  @render {
19
19
  <button
20
20
  type="button"
21
- id={$props.id}
21
+ {$props.id}
22
22
  class={`torp-popover-trigger ${$props.class ?? ""}`.trim()}
23
23
  onclick={handleClick}
24
24
  &ref={context.anchorElement}
25
25
  >
26
- <:slot />
26
+ <slot />
27
27
  </button>
28
28
  }
29
29
  }
@@ -26,12 +26,12 @@ export default function PopoverTriggerContextual($props: any) {
26
26
 
27
27
  @render {
28
28
  <div
29
- id={$props.id}
29
+ {$props.id}
30
30
  class={`torp-popover-trigger-contextual ${$props.class ?? ""}`.trim()}
31
31
  oncontextmenu={handleContextual}
32
32
  &ref={context.anchorElement}
33
33
  >
34
- <:slot />
34
+ <slot />
35
35
  </div>
36
36
  }
37
37
  }
@@ -27,12 +27,12 @@ export default function PopoverTriggerHover($props: any) {
27
27
 
28
28
  @render {
29
29
  <div
30
- id={$props.id}
30
+ {$props.id}
31
31
  class={`torp-popover-trigger-hover ${$props.class ?? ""}`.trim()}
32
- :onmount={(el) => hoverTrigger(el, { onHover: handleHover, onExit: handleHover })}
32
+ onmount={(el) => hoverTrigger(el, { onHover: handleHover, onExit: handleHover })}
33
33
  &ref={context.anchorElement}
34
34
  >
35
- <:slot />
35
+ <slot />
36
36
  </div>
37
37
  }
38
38
  }
@@ -0,0 +1,83 @@
1
+ export default function Slider() {
2
+ //export let value = 0;
3
+ //export let total = 0;
4
+
5
+ let position = 0;
6
+ let dragging = false;
7
+ let background: HTMLElement;
8
+ let handle: HTMLElement;
9
+ let skipRecalc = false;
10
+
11
+ $mount(() => {
12
+ calculatePosition();
13
+ });
14
+
15
+ beforeUpdate(() => {
16
+ if (background && handle) {
17
+ if (skipRecalc) {
18
+ skipRecalc = false;
19
+ } else {
20
+ calculatePosition();
21
+ }
22
+ }
23
+ });
24
+
25
+ function calculatePosition() {
26
+ // Calculate the initial handle position
27
+ const handleRect = handle.getBoundingClientRect();
28
+ const backgroundRect = background.getBoundingClientRect();
29
+ const offsetX = (value / total) * backgroundRect.width;
30
+ position = offsetX - handleRect.width / 2;
31
+ }
32
+
33
+ function handleMouseDown() {
34
+ dragging = true;
35
+ }
36
+
37
+ function handleMouseUp() {
38
+ dragging = false;
39
+ }
40
+
41
+ function handleMouseMove(e: MouseEvent) {
42
+ if (!e.buttons) {
43
+ dragging = false;
44
+ }
45
+
46
+ if (dragging) {
47
+ const handleRect = handle.getBoundingClientRect();
48
+ const backgroundRect = background.getBoundingClientRect();
49
+ let offsetX = e.clientX - backgroundRect.left;
50
+
51
+ const minWidth = handleRect.width / 2;
52
+ const maxWidth = backgroundRect.width - handleRect.width / 2;
53
+
54
+ if (offsetX < minWidth) {
55
+ offsetX = minWidth;
56
+ value = 0;
57
+ } else if (offsetX > maxWidth) {
58
+ offsetX = maxWidth;
59
+ value = total;
60
+ } else {
61
+ const width = backgroundRect.width - handleRect.width;
62
+ value = Math.floor((total / width) * offsetX);
63
+ }
64
+
65
+ position = offsetX - handleRect.width / 2;
66
+ }
67
+
68
+ // Don't recalc with the value change - we know where everything should be
69
+ skipRecalc = true;
70
+ }
71
+
72
+ @render {
73
+ <div
74
+ id={$props.id}
75
+ class={`torp-slider ${$props.class ?? ""}`.trim()}
76
+ onmousemove={handleMouseMove}
77
+ onmouseup={handleMouseUp}
78
+ >
79
+ <div &ref={background} />
80
+ <div &ref={handle} style={`left: ${position}px;`} onmousedown={handleMouseDown} />
81
+ </div>
82
+ }
83
+ }
@@ -0,0 +1,3 @@
1
+ import Slider from "./Slider.torp";
2
+
3
+ export { Slider };
@@ -20,7 +20,7 @@ export default function TabContent($props: any) {
20
20
 
21
21
  @render {
22
22
  <div
23
- id={$props.id}
23
+ {$props.id}
24
24
  class={`torp-tab-content ${$props.class ?? ""}`.trim()}
25
25
  role="tabpanel"
26
26
  aria-labelledby={$state.headerId}
@@ -29,7 +29,7 @@ export default function TabContent($props: any) {
29
29
  data-disabled={$state.dataDisabled}
30
30
  >
31
31
  @if ($state.active) {
32
- <:slot />
32
+ <slot />
33
33
  }
34
34
  </div>
35
35
  }
@@ -218,11 +218,11 @@ export default function TabGroup($props: any) {
218
218
 
219
219
  @render {
220
220
  <div
221
- id={$props.id}
221
+ {$props.id}
222
222
  class={`torp-tab-group ${$props.class ?? ""}`.trim()}
223
223
  data-orientation={$props.orientation}
224
224
  >
225
- <:slot />
225
+ <slot />
226
226
  </div>
227
227
  }
228
228
  }
@@ -37,8 +37,8 @@ export default function TabHeader($props: any) {
37
37
  @render {
38
38
  @// TODO: $props.as
39
39
  <h4
40
- id={$props.id}
41
- :class={[
40
+ {$props.id}
41
+ class={[
42
42
  "torp-tab-header",
43
43
  $props.class,
44
44
  $state.orientation
@@ -46,7 +46,7 @@ export default function TabHeader($props: any) {
46
46
  data-state={$state.dataState}
47
47
  data-disabled={$state.dataDisabled}
48
48
  >
49
- <:slot />
49
+ <slot />
50
50
  </h4>
51
51
  }
52
52
 
@@ -35,7 +35,7 @@ export default function TabList($props: any) {
35
35
 
36
36
  @render {
37
37
  <div
38
- id={$props.id}
38
+ {$props.id}
39
39
  class={`torp-tab-list ${$props.class ?? ""}`.trim()}
40
40
  role="tablist"
41
41
  aria-label={$props.ariaLabel}
@@ -44,7 +44,7 @@ export default function TabList($props: any) {
44
44
  tabindex="0"
45
45
  onfocus={handleFocus}
46
46
  >
47
- <:slot />
47
+ <slot />
48
48
  </div>
49
49
  }
50
50
  }
@@ -44,7 +44,7 @@ export default function TabTrigger() {
44
44
  @render {
45
45
  <button
46
46
  type="button"
47
- id={$props.id}
47
+ {$props.id}
48
48
  class={`torp-tab-trigger ${$props.class ?? ""}`.trim()}
49
49
  role="tab"
50
50
  tabindex="-1"
@@ -59,7 +59,7 @@ export default function TabTrigger() {
59
59
  onclick={handleClick}
60
60
  onkeydown={handleKey}
61
61
  >
62
- <:slot />
62
+ <slot />
63
63
  </button>
64
64
  }
65
65
  }
@@ -0,0 +1,15 @@
1
+ export default function ArrowDown() {
2
+ @render {
3
+ <svg
4
+ {$props.id}
5
+ class={`torp-icon ${$props.class ?? ""}`.trim()}
6
+ viewBox="0 0 100 100"
7
+ stroke-linejoin="round"
8
+ stroke-width="12"
9
+ >
10
+ <g>
11
+ <polygon points="25,40 50,70 75,40" />
12
+ </g>
13
+ </svg>
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ export default function ArrowLeft() {
2
+ @render {
3
+ <svg
4
+ {$props.id}
5
+ class={`torp-icon ${$props.class ?? ""}`.trim()}
6
+ viewBox="0 0 100 100"
7
+ stroke-linejoin="round"
8
+ stroke-width="12"
9
+ >
10
+ <g>
11
+ <polygon points="60,25 30,50 60,75" />
12
+ </g>
13
+ </svg>
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ export default function ArrowRight() {
2
+ @render {
3
+ <svg
4
+ {$props.id}
5
+ class={`torp-icon ${$props.class ?? ""}`.trim()}
6
+ viewBox="0 0 100 100"
7
+ stroke-linejoin="round"
8
+ stroke-width="12"
9
+ >
10
+ <g>
11
+ <polygon points="40,25 70,50 40,75" />
12
+ </g>
13
+ </svg>
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ export default function ArrowUp() {
2
+ @render {
3
+ <svg
4
+ {$props.id}
5
+ class={`torp-icon ${$props.class ?? ""}`.trim()}
6
+ viewBox="0 0 100 100"
7
+ stroke-linejoin="round"
8
+ stroke-width="12"
9
+ >
10
+ <g>
11
+ <polygon points="25,60 50,30 75,60" />
12
+ </g>
13
+ </svg>
14
+ }
15
+ }
@@ -0,0 +1,17 @@
1
+ export default function Bars() {
2
+ @render {
3
+ <svg
4
+ {$props.id}
5
+ class={`torp-icon ${$props.class ?? ""}`.trim()}
6
+ viewBox="0 0 100 100"
7
+ stroke-linejoin="round"
8
+ stroke-width="12"
9
+ >
10
+ <g>
11
+ <path d="M10,25 L90,25" />
12
+ <path d="M10,50 L90,50" />
13
+ <path d="M10,75 L90,75" />
14
+ </g>
15
+ </svg>
16
+ }
17
+ }
@@ -0,0 +1,15 @@
1
+ export default function Check() {
2
+ @render {
3
+ <svg
4
+ {$props.id}
5
+ class={`torp-icon ${$props.class ?? ""}`.trim()}
6
+ viewBox="0 0 100 100"
7
+ stroke-linejoin="round"
8
+ stroke-width="12"
9
+ >
10
+ <g>
11
+ <path d="M10,55 L35,80 L90,25" fill="none" />
12
+ </g>
13
+ </svg>
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ export default function ChevronDown() {
2
+ @render {
3
+ <svg
4
+ {$props.id}
5
+ class={`torp-icon ${$props.class ?? ""}`.trim()}
6
+ viewBox="0 0 100 100"
7
+ stroke-linejoin="round"
8
+ stroke-width="12"
9
+ >
10
+ <g>
11
+ <path d="M10,30 L50,70 L90,30" fill="none" />
12
+ </g>
13
+ </svg>
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ export default function ChevronLeft() {
2
+ @render {
3
+ <svg
4
+ {$props.id}
5
+ class={`torp-icon ${$props.class ?? ""}`.trim()}
6
+ viewBox="0 0 100 100"
7
+ stroke-linejoin="round"
8
+ stroke-width="12"
9
+ >
10
+ <g>
11
+ <path d="M70,10 L30,50 L70,90" fill="none" />
12
+ </g>
13
+ </svg>
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ export default function ChevronRight() {
2
+ @render {
3
+ <svg
4
+ {$props.id}
5
+ class={`torp-icon ${$props.class ?? ""}`.trim()}
6
+ viewBox="0 0 100 100"
7
+ stroke-linejoin="round"
8
+ stroke-width="12"
9
+ >
10
+ <g>
11
+ <path d="M30,10 L70,50 L30,90" fill="none" />
12
+ </g>
13
+ </svg>
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ export default function ChevronUp() {
2
+ @render {
3
+ <svg
4
+ {$props.id}
5
+ class={`torp-icon ${$props.class ?? ""}`.trim()}
6
+ viewBox="0 0 100 100"
7
+ stroke-linejoin="round"
8
+ stroke-width="12"
9
+ >
10
+ <g>
11
+ <path d="M10,70 L50,30 L90,70" fill="none" />
12
+ </g>
13
+ </svg>
14
+ }
15
+ }
@@ -0,0 +1,16 @@
1
+ export default function Cross() {
2
+ @render {
3
+ <svg
4
+ {$props.id}
5
+ class={`torp-icon ${$props.class ?? ""}`.trim()}
6
+ viewBox="0 0 100 100"
7
+ stroke-linejoin="round"
8
+ stroke-width="12"
9
+ >
10
+ <g>
11
+ <path d="M15,15 L85,85" />
12
+ <path d="M15,85 L85,15" />
13
+ </g>
14
+ </svg>
15
+ }
16
+ }
@@ -0,0 +1,16 @@
1
+ export default function Loading() {
2
+ @render {
3
+ <svg
4
+ {$props.id}
5
+ class={`torp-icon ${$props.class ?? ""}`.trim()}
6
+ viewBox="0 0 100 100"
7
+ stroke-linejoin="round"
8
+ stroke-width="20"
9
+ >
10
+ <g>
11
+ <circle cx="50" cy="50" r="40" fill="none" opacity="0.3" />
12
+ <path d="M 22 22 A 40 40 0 0 1 78 22" fill="none" />
13
+ </g>
14
+ </svg>
15
+ }
16
+ }
@@ -0,0 +1,15 @@
1
+ export default function Minus() {
2
+ @render {
3
+ <svg
4
+ {$props.id}
5
+ class={`torp-icon ${$props.class ?? ""}`.trim()}
6
+ viewBox="0 0 100 100"
7
+ stroke-linejoin="round"
8
+ stroke-width="12"
9
+ >
10
+ <g>
11
+ <path d="M10,50 L90,50" />
12
+ </g>
13
+ </svg>
14
+ }
15
+ }
@@ -0,0 +1,16 @@
1
+ export default function Plus() {
2
+ @render {
3
+ <svg
4
+ {$props.id}
5
+ class={`torp-icon ${$props.class ?? ""}`.trim()}
6
+ viewBox="0 0 100 100"
7
+ stroke-linejoin="round"
8
+ stroke-width="12"
9
+ >
10
+ <g>
11
+ <path d="M50,10 L50,90" />
12
+ <path d="M10,50 L90,50" />
13
+ </g>
14
+ </svg>
15
+ }
16
+ }
@@ -0,0 +1,31 @@
1
+ import ArrowDown from "./ArrowDown.torp";
2
+ import ArrowLeft from "./ArrowLeft.torp";
3
+ import ArrowRight from "./ArrowRight.torp";
4
+ import ArrowUp from "./ArrowUp.torp";
5
+ import Bars from "./Bars.torp";
6
+ import Check from "./Check.torp";
7
+ import ChevronDown from "./ChevronDown.torp";
8
+ import ChevronLeft from "./ChevronLeft.torp";
9
+ import ChevronRight from "./ChevronRight.torp";
10
+ import ChevronUp from "./ChevronUp.torp";
11
+ import Cross from "./Cross.torp";
12
+ import Loading from "./Loading.torp";
13
+ import Minus from "./Minus.torp";
14
+ import Plus from "./Plus.torp";
15
+
16
+ export {
17
+ ArrowDown,
18
+ ArrowLeft,
19
+ ArrowRight,
20
+ ArrowUp,
21
+ Bars,
22
+ Check,
23
+ ChevronDown,
24
+ ChevronLeft,
25
+ ChevronRight,
26
+ ChevronUp,
27
+ Cross,
28
+ Loading,
29
+ Minus,
30
+ Plus,
31
+ };
@@ -1,6 +1,6 @@
1
- type AnimationFrame = {
1
+ interface AnimationFrame {
2
2
  opacity: number;
3
- };
3
+ }
4
4
 
5
5
  const animationFrames: AnimationFrame[] = [{ opacity: 0 }, { opacity: 1 }];
6
6
 
@@ -0,0 +1,3 @@
1
+ import fade from "./fade";
2
+
3
+ export { fade };