@heyramzi/ui 2.11.0 → 2.11.2

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 (267) hide show
  1. package/dist/agents/helpers.js +38 -38
  2. package/dist/agents/page-state.js +49 -50
  3. package/dist/agents/vendor/color.js +146 -127
  4. package/dist/agents/vendor/draw.js +617 -508
  5. package/dist/agents/vendor/engine.js +698 -599
  6. package/dist/agents/vendor/mesh.js +653 -683
  7. package/dist/agents/vendor/plastic.js +3913 -3112
  8. package/dist/agents/vendor/presets.js +163 -164
  9. package/dist/agents/vendor/shapes.js +21 -20
  10. package/dist/agents/vendor/ticker.js +41 -42
  11. package/dist/agents/vendor/types.js +1 -0
  12. package/dist/agents/vendor/wear.js +1421 -1448
  13. package/dist/ai/confirmation/confirmation-context.svelte.js +6 -6
  14. package/dist/ai/confirmation/index.js +3 -1
  15. package/dist/ai/index.js +33 -0
  16. package/dist/ai/prompt-input/index.js +3 -1
  17. package/dist/ai/reasoning/index.js +3 -1
  18. package/dist/ai/reasoning/reasoning-context.svelte.js +6 -6
  19. package/dist/ai/suggestion/index.js +3 -1
  20. package/dist/ai/typing-dots/index.js +3 -1
  21. package/dist/animations/text-swap.js +24 -24
  22. package/dist/brand/index.js +54 -48
  23. package/dist/canvas/card/resize.js +5 -3
  24. package/dist/canvas/edges/edge-path.js +255 -242
  25. package/dist/canvas/editor/context-menu.js +39 -36
  26. package/dist/canvas/editor/dispatch.svelte.js +154 -151
  27. package/dist/canvas/editor/editor-context.js +7 -2
  28. package/dist/canvas/editor/editor-mode.js +1 -0
  29. package/dist/canvas/editor/frame.js +73 -76
  30. package/dist/canvas/editor/hand-context.js +5 -2
  31. package/dist/canvas/editor/history-core.js +163 -191
  32. package/dist/canvas/editor/keymap.js +95 -169
  33. package/dist/canvas/editor/layout-actions.js +143 -144
  34. package/dist/canvas/editor/lock.js +52 -51
  35. package/dist/canvas/editor/rebase.js +217 -240
  36. package/dist/canvas/editor/style.js +132 -137
  37. package/dist/canvas/editor/text-field-context.js +7 -2
  38. package/dist/canvas/editor/z-order.js +65 -70
  39. package/dist/canvas/headless/alignment.js +22 -16
  40. package/dist/canvas/headless/break-apart-find.js +286 -279
  41. package/dist/canvas/headless/break-apart-pieces.js +62 -58
  42. package/dist/canvas/headless/break-apart-plan.js +299 -325
  43. package/dist/canvas/headless/break-apart-style.js +75 -70
  44. package/dist/canvas/headless/break-apart.js +188 -181
  45. package/dist/canvas/headless/canvas-cleanup.js +78 -58
  46. package/dist/canvas/headless/edge-anchors.js +115 -116
  47. package/dist/canvas/headless/edge-memo.js +24 -22
  48. package/dist/canvas/headless/edge-serialization.js +17 -27
  49. package/dist/canvas/headless/figure-geometry.js +232 -264
  50. package/dist/canvas/headless/fit-viewport.js +84 -67
  51. package/dist/canvas/headless/grid.js +88 -86
  52. package/dist/canvas/headless/icon-node.js +44 -36
  53. package/dist/canvas/headless/index.js +1 -0
  54. package/dist/canvas/headless/linkify.js +17 -19
  55. package/dist/canvas/headless/pen-marks.js +101 -95
  56. package/dist/canvas/headless/sketch.js +231 -209
  57. package/dist/canvas/headless/snap-guides.js +99 -83
  58. package/dist/canvas/headless/svg-figure.js +133 -117
  59. package/dist/canvas/headless/table-layout.js +146 -107
  60. package/dist/canvas/index.js +2 -0
  61. package/dist/canvas/lod/lod-mode.svelte.js +20 -18
  62. package/dist/canvas/lod/render-all.svelte.js +36 -39
  63. package/dist/canvas/ops/arrange.js +78 -71
  64. package/dist/canvas/ops/ops.js +260 -255
  65. package/dist/canvas/pen/colors.js +37 -35
  66. package/dist/canvas/pen/eraser.js +28 -27
  67. package/dist/canvas/pen/geometry.js +120 -130
  68. package/dist/canvas/pen/index.js +1 -0
  69. package/dist/canvas/pen/ops.js +11 -11
  70. package/dist/canvas/pen/pen-session.js +150 -159
  71. package/dist/canvas/pen/plugin.js +107 -104
  72. package/dist/canvas/pen/shapes.js +73 -68
  73. package/dist/canvas/pen/stroke-path.js +32 -30
  74. package/dist/canvas/pen/types.js +21 -21
  75. package/dist/canvas/pen/ui.js +10 -8
  76. package/dist/canvas/plugin.js +46 -46
  77. package/dist/canvas/screen/glyphs.js +12 -11
  78. package/dist/canvas/screen/labels.js +22 -22
  79. package/dist/canvas/screen/parts.js +98 -111
  80. package/dist/canvas/screen/plugin.js +47 -56
  81. package/dist/canvas/screen/types.js +30 -35
  82. package/dist/canvas/screen/ui.js +7 -7
  83. package/dist/canvas/test-utils.js +14 -14
  84. package/dist/canvas/types.js +1 -0
  85. package/dist/canvas/ui/forward-wheel.js +24 -25
  86. package/dist/canvas/ui/icons.js +64 -131
  87. package/dist/canvas/ui/place-panel.js +58 -49
  88. package/dist/canvas/ui/shortcut-tip.js +14 -12
  89. package/dist/canvas/ui/tools.js +300 -385
  90. package/dist/charts/dashboard/chart.js +4 -0
  91. package/dist/charts/dashboard/data-table.js +11 -0
  92. package/dist/charts/dashboard/windows.js +8 -3
  93. package/dist/charts/edge-fade.js +10 -5
  94. package/dist/charts/hover-band.js +16 -11
  95. package/dist/charts/index.js +0 -1
  96. package/dist/charts/motion.js +11 -7
  97. package/dist/charts/primitives/chart-utils.js +12 -12
  98. package/dist/components/copy/clipboard.js +32 -32
  99. package/dist/components/copy/copied.svelte.js +31 -23
  100. package/dist/components/data-table/data-table.js +39 -39
  101. package/dist/components/docs/index.js +4 -0
  102. package/dist/components/docs/scroll-spy.svelte.js +73 -68
  103. package/dist/components/list-page/filter-section.js +4 -1
  104. package/dist/components/list-page/index.js +2 -0
  105. package/dist/components/list-page/list-table.js +7 -2
  106. package/dist/components/list-page/queue-rail.js +14 -0
  107. package/dist/components/list-page/section-host.js +4 -2
  108. package/dist/components/list-page/step.js +4 -3
  109. package/dist/components/list-page/types.js +1 -0
  110. package/dist/components/picker/trigger.js +48 -30
  111. package/dist/components/picker/types.js +1 -0
  112. package/dist/components/segmented/collapse.js +38 -27
  113. package/dist/components/segmented/index.js +8 -0
  114. package/dist/components/segmented/segmented.js +67 -42
  115. package/dist/components/star-rating-input/index.js +3 -1
  116. package/dist/components/table-view/types.js +1 -0
  117. package/dist/components/tags-input/tags.js +81 -69
  118. package/dist/components/theme/index.js +4 -0
  119. package/dist/components/toolbar/index.js +4 -0
  120. package/dist/components/toolbar/toolbar-trigger.js +14 -1
  121. package/dist/editor/anchors.js +17 -13
  122. package/dist/editor/block-id.js +52 -51
  123. package/dist/editor/block-ops.js +108 -80
  124. package/dist/editor/doc-blocks.js +155 -166
  125. package/dist/editor/extensions.js +139 -180
  126. package/dist/editor/index.js +4 -0
  127. package/dist/editor/markdown-test-helpers.js +4 -2
  128. package/dist/editor/markdown.js +420 -408
  129. package/dist/editor/serializer.js +204 -200
  130. package/dist/editor/slash-items.js +89 -101
  131. package/dist/editor/youtube-url.js +25 -20
  132. package/dist/effects/animated-beam/path-calculator.svelte.js +43 -38
  133. package/dist/effects/animated-beam/types.js +1 -0
  134. package/dist/effects/border-beam/css.js +92 -78
  135. package/dist/effects/border-beam/presets.js +1705 -1720
  136. package/dist/effects/border-beam/register-properties.js +43 -33
  137. package/dist/effects/border-beam/types.js +1 -0
  138. package/dist/effects/image-comparison/compare.js +3 -2
  139. package/dist/effects/image-reveal/types.js +1 -0
  140. package/dist/effects/magnetic/magnetic.js +58 -52
  141. package/dist/effects/reveal/observe.js +50 -40
  142. package/dist/effects/reveal/types.js +1 -0
  143. package/dist/effects/shader-gradient/color.js +36 -29
  144. package/dist/effects/shader-gradient/renderer.js +384 -295
  145. package/dist/effects/shader-gradient/shaders.js +31 -0
  146. package/dist/effects/shader-gradient/types.js +1 -0
  147. package/dist/icons/apple-symbol-exports.js +99 -124
  148. package/dist/icons/sf-symbols.js +357 -461
  149. package/dist/icons/trades.js +43 -28
  150. package/dist/inbox/index.js +1 -0
  151. package/dist/inbox/logic.js +126 -122
  152. package/dist/inbox/types.js +43 -43
  153. package/dist/lib/arrive.js +19 -12
  154. package/dist/lib/icon-types.js +1 -0
  155. package/dist/lib/initials.js +16 -10
  156. package/dist/lib/layout.js +5 -0
  157. package/dist/lib/panel.js +13 -0
  158. package/dist/lib/result.js +22 -22
  159. package/dist/lib/sliding-pill.js +59 -44
  160. package/dist/lib/theme-transition.js +43 -43
  161. package/dist/lib/tone.js +31 -24
  162. package/dist/lib/utils.js +3 -1
  163. package/dist/onboarding/define-tours.js +24 -23
  164. package/dist/onboarding/onboarding.svelte.js +16 -12
  165. package/dist/onboarding/pick.js +10 -6
  166. package/dist/onboarding/stores.js +40 -41
  167. package/dist/onboarding/wait.js +24 -23
  168. package/dist/panel/side-panel-types.js +1 -0
  169. package/dist/record/demo-data.js +459 -486
  170. package/dist/record/fields.js +129 -131
  171. package/dist/record/format.js +70 -82
  172. package/dist/record/gutter.js +1 -0
  173. package/dist/record/kinds.js +95 -105
  174. package/dist/record/logic.js +238 -219
  175. package/dist/record/types.js +49 -48
  176. package/dist/shadcn/accordion/index.js +3 -1
  177. package/dist/shadcn/alert/index.js +3 -1
  178. package/dist/shadcn/alert-dialog/index.js +3 -1
  179. package/dist/shadcn/attachment/index.js +3 -1
  180. package/dist/shadcn/avatar/index.js +3 -1
  181. package/dist/shadcn/breadcrumb/index.js +3 -1
  182. package/dist/shadcn/bubble/index.js +3 -1
  183. package/dist/shadcn/button/index.js +3 -1
  184. package/dist/shadcn/calendar/index.js +3 -1
  185. package/dist/shadcn/card/index.js +3 -1
  186. package/dist/shadcn/checkbox/index.js +3 -1
  187. package/dist/shadcn/code-block/index.js +3 -1
  188. package/dist/shadcn/collapsible/index.js +3 -1
  189. package/dist/shadcn/command/index.js +4 -1
  190. package/dist/shadcn/context-menu/index.js +3 -1
  191. package/dist/shadcn/dialog/index.js +3 -1
  192. package/dist/shadcn/dropdown-menu/menu-item.js +40 -20
  193. package/dist/shadcn/empty/index.js +3 -1
  194. package/dist/shadcn/field/index.js +3 -1
  195. package/dist/shadcn/hooks/highlighter.js +77 -75
  196. package/dist/shadcn/hooks/is-mobile.svelte.js +3 -3
  197. package/dist/shadcn/hooks/use-highlighted-code.svelte.js +62 -62
  198. package/dist/shadcn/input/index.js +3 -1
  199. package/dist/shadcn/kbd/index.js +3 -1
  200. package/dist/shadcn/label/index.js +3 -1
  201. package/dist/shadcn/marker/index.js +3 -1
  202. package/dist/shadcn/message/index.js +3 -1
  203. package/dist/shadcn/message-scroller/index.js +3 -1
  204. package/dist/shadcn/popover/index.js +3 -1
  205. package/dist/shadcn/progress/index.js +3 -1
  206. package/dist/shadcn/progress/tone.js +8 -7
  207. package/dist/shadcn/radio-group/index.js +3 -1
  208. package/dist/shadcn/scroll-area/index.js +3 -1
  209. package/dist/shadcn/select/index.js +3 -1
  210. package/dist/shadcn/separator/index.js +3 -1
  211. package/dist/shadcn/sheet/index.js +3 -1
  212. package/dist/shadcn/sidebar/context.svelte.js +42 -28
  213. package/dist/shadcn/sidebar/index.js +3 -1
  214. package/dist/shadcn/skeleton/index.js +3 -1
  215. package/dist/shadcn/slider/index.js +3 -1
  216. package/dist/shadcn/switch/index.js +3 -1
  217. package/dist/shadcn/table/index.js +3 -1
  218. package/dist/shadcn/tabs/index.js +3 -1
  219. package/dist/shadcn/textarea/index.js +3 -1
  220. package/dist/shadcn/toggle/index.js +3 -1
  221. package/dist/shadcn/toggle-group/index.js +3 -1
  222. package/dist/shadcn/tooltip/context.js +7 -2
  223. package/dist/shadcn/tooltip/index.js +3 -1
  224. package/dist/shadcn/trace/index.js +3 -1
  225. package/dist/slides/bridges.js +65 -59
  226. package/dist/slides/deck-controller.svelte.js +210 -207
  227. package/dist/slides/export/capture.js +66 -71
  228. package/dist/slides/export/ffmpeg.js +76 -72
  229. package/dist/slides/export/index.js +3 -0
  230. package/dist/slides/export/launch.js +9 -6
  231. package/dist/slides/export/pdf.js +60 -54
  232. package/dist/slides/export/types.js +1 -0
  233. package/dist/slides/labels.js +24 -24
  234. package/dist/slides/layout.js +39 -41
  235. package/dist/slides/model.js +9 -7
  236. package/dist/slides/navigation.js +78 -73
  237. package/dist/slides/types.js +2 -2
  238. package/dist/status/define-statuses.js +18 -14
  239. package/dist/status/status-types.js +1 -0
  240. package/dist/test-setup.js +24 -20
  241. package/dist/thread/logic.js +73 -77
  242. package/dist/thread/types.js +21 -21
  243. package/dist/work/board-order.js +94 -90
  244. package/dist/work/dates.js +16 -9
  245. package/dist/work/detail/detail-types.js +18 -18
  246. package/dist/work/docs/edited.js +32 -29
  247. package/dist/work/docs/index.js +4 -0
  248. package/dist/work/docs/labels.js +34 -34
  249. package/dist/work/docs/menu.js +113 -106
  250. package/dist/work/docs/outline.js +39 -29
  251. package/dist/work/gantt/logic.js +211 -235
  252. package/dist/work/inbox/inbox-logic.js +71 -75
  253. package/dist/work/inbox/inbox-statuses.js +75 -72
  254. package/dist/work/inbox/inbox-types.js +1 -0
  255. package/dist/work/kanban-drag.js +27 -22
  256. package/dist/work/kanban-types.js +1 -0
  257. package/dist/work/presets/sales.js +36 -32
  258. package/dist/work/reorder.js +9 -8
  259. package/dist/work/task-types.js +1 -0
  260. package/dist/work/time/duration.js +51 -46
  261. package/dist/work/time/time-types.js +23 -23
  262. package/dist/work/use-kanban-dnd.svelte.js +126 -125
  263. package/package.json +3 -1
  264. package/src/components/list-page/master-detail.svelte +3 -1
  265. package/src/components/list-page/rail-row.svelte +4 -4
  266. package/src/components/tags-input/tags-input.svelte +2 -0
  267. package/src/editor/markdown.ts +30 -35
@@ -8,4 +8,6 @@ import Header from "../../../src/shadcn/sheet/sheet-header.svelte";
8
8
  import Footer from "../../../src/shadcn/sheet/sheet-footer.svelte";
9
9
  import Title from "../../../src/shadcn/sheet/sheet-title.svelte";
10
10
  import Description from "../../../src/shadcn/sheet/sheet-description.svelte";
11
- export { Root, Close, Trigger, Portal, Overlay, Content, Header, Footer, Title, Description, Root as Sheet, Close as SheetClose, Trigger as SheetTrigger, Portal as SheetPortal, Overlay as SheetOverlay, Content as SheetContent, Header as SheetHeader, Footer as SheetFooter, Title as SheetTitle, Description as SheetDescription };
11
+ export { Root, Close, Trigger, Portal, Overlay, Content, Header, Footer, Title, Description,
12
+ //
13
+ Root as Sheet, Close as SheetClose, Trigger as SheetTrigger, Portal as SheetPortal, Overlay as SheetOverlay, Content as SheetContent, Header as SheetHeader, Footer as SheetFooter, Title as SheetTitle, Description as SheetDescription };
@@ -2,37 +2,51 @@ import { IsMobile } from "../hooks/is-mobile.svelte.js";
2
2
  import { getContext, setContext } from "svelte";
3
3
  import { SIDEBAR_KEYBOARD_SHORTCUT } from "./constants.js";
4
4
  class SidebarState {
5
- props;
6
- open = $derived.by(()=>this.props.open());
7
- openMobile = $state(false);
8
- setOpen;
9
- #isMobile;
10
- state = $derived.by(()=>this.open ? "expanded" : "collapsed");
11
- constructor(props){
12
- this.setOpen = props.setOpen;
13
- this.#isMobile = new IsMobile();
14
- this.props = props;
15
- }
16
- get isMobile() {
17
- return this.#isMobile.current;
18
- }
19
- handleShortcutKeydown = (e)=>{
20
- if (e.key === SIDEBAR_KEYBOARD_SHORTCUT && (e.metaKey || e.ctrlKey)) {
21
- e.preventDefault();
22
- this.toggle();
23
- }
24
- };
25
- setOpenMobile = (value)=>{
26
- this.openMobile = value;
27
- };
28
- toggle = ()=>{
29
- return this.#isMobile.current ? this.openMobile = !this.openMobile : this.setOpen(!this.open);
30
- };
5
+ props;
6
+ open = $derived.by(() => this.props.open());
7
+ openMobile = $state(false);
8
+ setOpen;
9
+ #isMobile;
10
+ state = $derived.by(() => this.open ? "expanded" : "collapsed");
11
+ constructor(props) {
12
+ this.setOpen = props.setOpen;
13
+ this.#isMobile = new IsMobile();
14
+ this.props = props;
15
+ }
16
+ // Convenience getter for checking if the sidebar is mobile
17
+ // without this, we would need to use `sidebar.isMobile.current` everywhere
18
+ get isMobile() {
19
+ return this.#isMobile.current;
20
+ }
21
+ // Event handler to apply to the `<svelte:window>`
22
+ handleShortcutKeydown = (e) => {
23
+ if (e.key === SIDEBAR_KEYBOARD_SHORTCUT && (e.metaKey || e.ctrlKey)) {
24
+ e.preventDefault();
25
+ this.toggle();
26
+ }
27
+ };
28
+ setOpenMobile = (value) => {
29
+ this.openMobile = value;
30
+ };
31
+ toggle = () => {
32
+ return this.#isMobile.current ? this.openMobile = !this.openMobile : this.setOpen(!this.open);
33
+ };
31
34
  }
32
35
  const SYMBOL_KEY = "scn-sidebar";
36
+ /**
37
+ * Instantiates a new `SidebarState` instance and sets it in the context.
38
+ *
39
+ * @param props The constructor props for the `SidebarState` class.
40
+ * @returns The `SidebarState` instance.
41
+ */
33
42
  export function setSidebar(props) {
34
- return setContext(Symbol.for(SYMBOL_KEY), new SidebarState(props));
43
+ return setContext(Symbol.for(SYMBOL_KEY), new SidebarState(props));
35
44
  }
45
+ /**
46
+ * Retrieves the `SidebarState` instance from the context. This is a class instance,
47
+ * so you cannot destructure it.
48
+ * @returns The `SidebarState` instance.
49
+ */
36
50
  export function useSidebar() {
37
- return getContext(Symbol.for(SYMBOL_KEY));
51
+ return getContext(Symbol.for(SYMBOL_KEY));
38
52
  }
@@ -22,4 +22,6 @@ import Rail from "../../../src/shadcn/sidebar/sidebar-rail.svelte";
22
22
  import Separator from "../../../src/shadcn/sidebar/sidebar-separator.svelte";
23
23
  import Trigger from "../../../src/shadcn/sidebar/sidebar-trigger.svelte";
24
24
  import Root from "../../../src/shadcn/sidebar/sidebar.svelte";
25
- export { Content, Footer, Group, GroupAction, GroupContent, GroupLabel, Header, Input, Inset, Menu, MenuAction, MenuBadge, MenuButton, MenuItem, MenuSkeleton, MenuSub, MenuSubButton, MenuSubItem, Provider, Rail, Root, Separator, Root as Sidebar, Content as SidebarContent, Footer as SidebarFooter, Group as SidebarGroup, GroupAction as SidebarGroupAction, GroupContent as SidebarGroupContent, GroupLabel as SidebarGroupLabel, Header as SidebarHeader, Input as SidebarInput, Inset as SidebarInset, Menu as SidebarMenu, MenuAction as SidebarMenuAction, MenuBadge as SidebarMenuBadge, MenuButton as SidebarMenuButton, MenuItem as SidebarMenuItem, MenuSkeleton as SidebarMenuSkeleton, MenuSub as SidebarMenuSub, MenuSubButton as SidebarMenuSubButton, MenuSubItem as SidebarMenuSubItem, Provider as SidebarProvider, Rail as SidebarRail, Separator as SidebarSeparator, Trigger as SidebarTrigger, Trigger, useSidebar };
25
+ export { Content, Footer, Group, GroupAction, GroupContent, GroupLabel, Header, Input, Inset, Menu, MenuAction, MenuBadge, MenuButton, MenuItem, MenuSkeleton, MenuSub, MenuSubButton, MenuSubItem, Provider, Rail, Root, Separator,
26
+ //
27
+ Root as Sidebar, Content as SidebarContent, Footer as SidebarFooter, Group as SidebarGroup, GroupAction as SidebarGroupAction, GroupContent as SidebarGroupContent, GroupLabel as SidebarGroupLabel, Header as SidebarHeader, Input as SidebarInput, Inset as SidebarInset, Menu as SidebarMenu, MenuAction as SidebarMenuAction, MenuBadge as SidebarMenuBadge, MenuButton as SidebarMenuButton, MenuItem as SidebarMenuItem, MenuSkeleton as SidebarMenuSkeleton, MenuSub as SidebarMenuSub, MenuSubButton as SidebarMenuSubButton, MenuSubItem as SidebarMenuSubItem, Provider as SidebarProvider, Rail as SidebarRail, Separator as SidebarSeparator, Trigger as SidebarTrigger, Trigger, useSidebar };
@@ -1,2 +1,4 @@
1
1
  import Root from "../../../src/shadcn/skeleton/skeleton.svelte";
2
- export { Root, Root as Skeleton };
2
+ export { Root,
3
+ //
4
+ Root as Skeleton };
@@ -1,2 +1,4 @@
1
1
  import Root from "../../../src/shadcn/slider/slider.svelte";
2
- export { Root, Root as Slider };
2
+ export { Root,
3
+ //
4
+ Root as Slider };
@@ -1,2 +1,4 @@
1
1
  import Root from "../../../src/shadcn/switch/switch.svelte";
2
- export { Root, Root as Switch };
2
+ export { Root,
3
+ //
4
+ Root as Switch };
@@ -6,4 +6,6 @@ import Footer from "../../../src/shadcn/table/table-footer.svelte";
6
6
  import Head from "../../../src/shadcn/table/table-head.svelte";
7
7
  import Header from "../../../src/shadcn/table/table-header.svelte";
8
8
  import Row from "../../../src/shadcn/table/table-row.svelte";
9
- export { Root, Body, Caption, Cell, Footer, Head, Header, Row, Root as Table, Body as TableBody, Caption as TableCaption, Cell as TableCell, Footer as TableFooter, Head as TableHead, Header as TableHeader, Row as TableRow };
9
+ export { Root, Body, Caption, Cell, Footer, Head, Header, Row,
10
+ //
11
+ Root as Table, Body as TableBody, Caption as TableCaption, Cell as TableCell, Footer as TableFooter, Head as TableHead, Header as TableHeader, Row as TableRow };
@@ -2,4 +2,6 @@ import Root from "../../../src/shadcn/tabs/tabs.svelte";
2
2
  import Content from "../../../src/shadcn/tabs/tabs-content.svelte";
3
3
  import List from "../../../src/shadcn/tabs/tabs-list.svelte";
4
4
  import Trigger from "../../../src/shadcn/tabs/tabs-trigger.svelte";
5
- export { Root, Content, List, Trigger, Root as Tabs, Content as TabsContent, List as TabsList, Trigger as TabsTrigger };
5
+ export { Root, Content, List, Trigger,
6
+ //
7
+ Root as Tabs, Content as TabsContent, List as TabsList, Trigger as TabsTrigger };
@@ -1,2 +1,4 @@
1
1
  import Root from "../../../src/shadcn/textarea/textarea.svelte";
2
- export { Root, Root as Textarea };
2
+ export { Root,
3
+ //
4
+ Root as Textarea };
@@ -1,3 +1,5 @@
1
1
  import Root from "../../../src/shadcn/toggle/toggle.svelte";
2
2
  export { toggleVariants } from "../../../src/shadcn/toggle/toggle.svelte";
3
- export { Root, Root as Toggle };
3
+ export { Root,
4
+ //
5
+ Root as Toggle };
@@ -1,3 +1,5 @@
1
1
  import Root from "../../../src/shadcn/toggle-group/toggle-group.svelte";
2
2
  import Item from "../../../src/shadcn/toggle-group/toggle-group-item.svelte";
3
- export { Root, Item, Root as ToggleGroup, Item as ToggleGroupItem };
3
+ export { Root, Item,
4
+ //
5
+ Root as ToggleGroup, Item as ToggleGroupItem };
@@ -1,8 +1,13 @@
1
1
  import { getContext, hasContext, setContext } from "svelte";
2
2
  const KEY = Symbol.for("upsys.tooltip.provider");
3
+ /** Marks the subtree as already inside a Tooltip.Provider. */
3
4
  export function markTooltipProvider() {
4
- setContext(KEY, true);
5
+ setContext(KEY, true);
5
6
  }
7
+ /**
8
+ * bits-ui keeps the delay and the skip window on the provider, so tooltips share
9
+ * a group only when they share one. The root used to mount its own every time.
10
+ */
6
11
  export function hasTooltipProvider() {
7
- return hasContext(KEY) && getContext(KEY) === true;
12
+ return hasContext(KEY) && getContext(KEY) === true;
8
13
  }
@@ -3,4 +3,6 @@ import Trigger from "../../../src/shadcn/tooltip/tooltip-trigger.svelte";
3
3
  import Content from "../../../src/shadcn/tooltip/tooltip-content.svelte";
4
4
  import Provider from "../../../src/shadcn/tooltip/tooltip-provider.svelte";
5
5
  import Portal from "../../../src/shadcn/tooltip/tooltip-portal.svelte";
6
- export { Root, Trigger, Content, Provider, Portal, Root as Tooltip, Content as TooltipContent, Trigger as TooltipTrigger, Provider as TooltipProvider, Portal as TooltipPortal };
6
+ export { Root, Trigger, Content, Provider, Portal,
7
+ //
8
+ Root as Tooltip, Content as TooltipContent, Trigger as TooltipTrigger, Provider as TooltipProvider, Portal as TooltipPortal };
@@ -6,4 +6,6 @@ import Icon from "../../../src/shadcn/trace/trace-icon.svelte";
6
6
  import Title from "../../../src/shadcn/trace/trace-title.svelte";
7
7
  import Root from "../../../src/shadcn/trace/trace.svelte";
8
8
  import Line from "../../../src/shadcn/trace/trace-line.svelte";
9
- export { Root, Line, Icon, Title, Description, Collapsible, CollapsibleTrigger, CollapsibleContent, Root as Trace, Line as TraceLine, Icon as TraceIcon, Title as TraceTitle, Description as TraceDescription, Collapsible as TraceCollapsible, CollapsibleTrigger as TraceCollapsibleTrigger, CollapsibleContent as TraceCollapsibleContent };
9
+ export { Root, Line, Icon, Title, Description, Collapsible, CollapsibleTrigger, CollapsibleContent,
10
+ //
11
+ Root as Trace, Line as TraceLine, Icon as TraceIcon, Title as TraceTitle, Description as TraceDescription, Collapsible as TraceCollapsible, CollapsibleTrigger as TraceCollapsibleTrigger, CollapsibleContent as TraceCollapsibleContent };
@@ -1,66 +1,72 @@
1
1
  import { parseSlideParam } from "./navigation.js";
2
+ /** Reads `?s=` once, then keeps it at the current slide. The write is a replace, so Back skips it. */
2
3
  export function attachUrlSync(deck, { param = "s", write } = {}) {
3
- const initial = parseSlideParam(new URL(location.href).searchParams.get(param), deck.entries.length);
4
- if (initial !== null) deck.go(initial, 0, "remote");
5
- return deck.listen(({ index })=>{
6
- const url = new URL(location.href);
7
- url.searchParams.set(param, String(index + 1));
8
- if (write) write(url);
9
- else history.replaceState(history.state, "", url);
10
- });
4
+ const initial = parseSlideParam(new URL(location.href).searchParams.get(param), deck.entries.length);
5
+ if (initial !== null) deck.go(initial, 0, "remote");
6
+ return deck.listen(({ index }) => {
7
+ const url = new URL(location.href);
8
+ url.searchParams.set(param, String(index + 1));
9
+ if (write) write(url);
10
+ else history.replaceState(history.state, "", url);
11
+ });
11
12
  }
13
+ /**
14
+ * Lets a host page drive a deck in an iframe. In: `{type:'deck:nav', delta}` and
15
+ * `{type:'deck:go', index, step?}`. Out to the parent: `{type:'deck:change', index, step, total}`.
16
+ */
12
17
  export function attachBridge(deck, { origin = location.origin } = {}) {
13
- const onMessage = (event)=>{
14
- if (origin !== "*" && event.origin !== origin) return;
15
- const data = event.data;
16
- if (data?.type === "deck:nav") {
17
- if (data.delta === -1) deck.prev();
18
- else if (data.delta === 1) deck.next();
19
- } else if (data?.type === "deck:go" && Number.isInteger(data.index)) {
20
- deck.go(data.index, Number.isInteger(data.step) ? data.step : 0, "remote");
21
- }
22
- };
23
- window.addEventListener("message", onMessage);
24
- const stop = deck.listen(({ index, step }, source)=>{
25
- if (source === "local" && window.parent !== window) {
26
- window.parent.postMessage({
27
- type: "deck:change",
28
- index,
29
- step,
30
- total: deck.visible.length
31
- }, origin);
32
- }
33
- });
34
- return ()=>{
35
- window.removeEventListener("message", onMessage);
36
- stop();
37
- };
18
+ const onMessage = (event) => {
19
+ if (origin !== "*" && event.origin !== origin) return;
20
+ const data = event.data;
21
+ if (data?.type === "deck:nav") {
22
+ if (data.delta === -1) deck.prev();
23
+ else if (data.delta === 1) deck.next();
24
+ } else if (data?.type === "deck:go" && Number.isInteger(data.index)) {
25
+ deck.go(data.index, Number.isInteger(data.step) ? data.step : 0, "remote");
26
+ }
27
+ };
28
+ window.addEventListener("message", onMessage);
29
+ const stop = deck.listen(({ index, step }, source) => {
30
+ if (source === "local" && window.parent !== window) {
31
+ window.parent.postMessage({
32
+ type: "deck:change",
33
+ index,
34
+ step,
35
+ total: deck.visible.length
36
+ }, origin);
37
+ }
38
+ });
39
+ return () => {
40
+ window.removeEventListener("message", onMessage);
41
+ stop();
42
+ };
38
43
  }
44
+ /** Mirrors the deck across windows of one origin: the audience screen and a presenter view. */
39
45
  export function attachChannel(deck, name) {
40
- if (typeof BroadcastChannel === "undefined") return ()=>{};
41
- const channel = new BroadcastChannel(`heyramzi-slides:${name}`);
42
- const self = crypto.randomUUID();
43
- const send = (message)=>channel.postMessage(message);
44
- const state = ({ index, step } = deck.position)=>({
45
- type: "state",
46
- from: self,
47
- index,
48
- step
49
- });
50
- channel.onmessage = ({ data })=>{
51
- if (data.from === self) return;
52
- if (data.type === "hello") send(state());
53
- else deck.go(data.index, data.step, "remote");
54
- };
55
- const stop = deck.listen((position, source)=>{
56
- if (source === "local") send(state(position));
57
- });
58
- send({
59
- type: "hello",
60
- from: self
61
- });
62
- return ()=>{
63
- stop();
64
- channel.close();
65
- };
46
+ if (typeof BroadcastChannel === "undefined") return () => {};
47
+ const channel = new BroadcastChannel(`heyramzi-slides:${name}`);
48
+ const self = crypto.randomUUID();
49
+ const send = (message) => channel.postMessage(message);
50
+ const state = ({ index, step } = deck.position) => ({
51
+ type: "state",
52
+ from: self,
53
+ index,
54
+ step
55
+ });
56
+ channel.onmessage = ({ data }) => {
57
+ if (data.from === self) return;
58
+ if (data.type === "hello") send(state());
59
+ else deck.go(data.index, data.step, "remote");
60
+ };
61
+ const stop = deck.listen((position, source) => {
62
+ if (source === "local") send(state(position));
63
+ });
64
+ send({
65
+ type: "hello",
66
+ from: self
67
+ });
68
+ return () => {
69
+ stop();
70
+ channel.close();
71
+ };
66
72
  }