@heyramzi/ui 2.11.1 → 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 (266) 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/editor/markdown.ts +30 -35
@@ -1,115 +1,121 @@
1
+ // Pen marks written as JSON, built into the same nodes the pen tool draws,
2
+ // so a CLI can import a whole drawing in one call.
1
3
  import { z } from "zod";
2
4
  import { buildStrokeNode } from "../pen/geometry.js";
3
5
  import { buildShapeNode, buildTextNode } from "../pen/shapes.js";
4
6
  import { PEN_COLORS, SHAPE_KINDS } from "../pen/types.js";
7
+ // =========================
8
+ // SCHEMAS
9
+ // =========================
5
10
  const colorSchema = z.enum(PEN_COLORS);
6
- const pointSchema = z.tuple([
7
- z.number(),
8
- z.number()
9
- ]);
10
- const MAX_POINTS = 5000;
11
+ const pointSchema = z.tuple([z.number(), z.number()]);
12
+ /** One stroke past this is a scribble pasted from a file, not a drawing. */
13
+ const MAX_POINTS = 5e3;
14
+ /** The frame this mark sits in: its id, with the mark's coordinates still on the page. */
11
15
  const inFrame = z.string().min(1).optional();
12
16
  const strokeMark = z.object({
13
- kind: z.literal("stroke"),
14
- id: z.string().min(1).optional(),
15
- in: inFrame,
16
- points: z.array(z.tuple([
17
- z.number(),
18
- z.number()
19
- ]).rest(z.number())).min(1).max(MAX_POINTS),
20
- color: colorSchema.optional(),
21
- size: z.number().positive().optional(),
22
- tool: z.enum([
23
- "pen",
24
- "highlighter"
25
- ]).optional()
17
+ kind: z.literal("stroke"),
18
+ id: z.string().min(1).optional(),
19
+ in: inFrame,
20
+ /** Flow coordinates: x, y, then an optional 0 to 1 pressure. Simplified on the way in. */
21
+ points: z.array(z.tuple([z.number(), z.number()]).rest(z.number())).min(1).max(MAX_POINTS),
22
+ color: colorSchema.optional(),
23
+ size: z.number().positive().optional(),
24
+ tool: z.enum(["pen", "highlighter"]).optional()
26
25
  });
27
26
  const textMark = z.object({
28
- kind: z.literal("text"),
29
- id: z.string().min(1).optional(),
30
- in: inFrame,
31
- at: pointSchema,
32
- text: z.string().min(1),
33
- color: colorSchema.optional(),
34
- fontSize: z.number().positive().optional()
27
+ kind: z.literal("text"),
28
+ id: z.string().min(1).optional(),
29
+ in: inFrame,
30
+ /** Top-left of the first line, as [x, y]. */
31
+ at: pointSchema,
32
+ text: z.string().min(1),
33
+ color: colorSchema.optional(),
34
+ fontSize: z.number().positive().optional()
35
35
  });
36
36
  const shapeMark = z.object({
37
- kind: z.literal("shape"),
38
- id: z.string().min(1).optional(),
39
- in: inFrame,
40
- shape: z.enum(SHAPE_KINDS),
41
- box: z.tuple([
42
- z.number(),
43
- z.number(),
44
- z.number().nonnegative(),
45
- z.number().nonnegative()
46
- ]),
47
- color: colorSchema.optional(),
48
- filled: z.boolean().optional(),
49
- label: z.string().optional()
37
+ kind: z.literal("shape"),
38
+ id: z.string().min(1).optional(),
39
+ in: inFrame,
40
+ shape: z.enum(SHAPE_KINDS),
41
+ /** [x, y, width, height]. */
42
+ box: z.tuple([
43
+ z.number(),
44
+ z.number(),
45
+ z.number().nonnegative(),
46
+ z.number().nonnegative()
47
+ ]),
48
+ color: colorSchema.optional(),
49
+ filled: z.boolean().optional(),
50
+ label: z.string().optional()
50
51
  });
51
52
  export const penMarkSchema = z.discriminatedUnion("kind", [
52
- strokeMark,
53
- textMark,
54
- shapeMark
53
+ strokeMark,
54
+ textMark,
55
+ shapeMark
55
56
  ]);
57
+ /** An unknown frame throws, so a typo in `in` stops the import instead of misplacing the mark. */
56
58
  export function placeInFrame(node, frameId, frames, where) {
57
- const frame = frames.get(frameId);
58
- if (!frame) throw new Error(`${where}: no frame "${frameId}" to put it in`);
59
- return {
60
- ...node,
61
- parentId: frameId,
62
- extent: "parent",
63
- position: {
64
- x: node.position.x - frame.x,
65
- y: node.position.y - frame.y
66
- }
67
- };
59
+ const frame = frames.get(frameId);
60
+ if (!frame) throw new Error(`${where}: no frame "${frameId}" to put it in`);
61
+ return {
62
+ ...node,
63
+ parentId: frameId,
64
+ extent: "parent",
65
+ position: {
66
+ x: node.position.x - frame.x,
67
+ y: node.position.y - frame.y
68
+ }
69
+ };
68
70
  }
69
71
  function toNode(node, id) {
70
- return {
71
- id,
72
- type: node.type,
73
- position: node.position,
74
- data: node.data,
75
- width: node.width,
76
- height: node.height
77
- };
72
+ return {
73
+ id,
74
+ type: node.type,
75
+ position: node.position,
76
+ data: node.data,
77
+ width: node.width,
78
+ height: node.height
79
+ };
78
80
  }
81
+ /**
82
+ * Builds the node for one mark. A mark with no id gets `pen-<n>` from its place in the list,
83
+ * so a rerun of the same file writes the same ids.
84
+ */
79
85
  export function compilePenMark(mark, index, frames) {
80
- const where = `marks[${index}]`;
81
- const id = mark.id ?? `pen-${index + 1}`;
82
- let node;
83
- if (mark.kind === "stroke") {
84
- const built = buildStrokeNode(mark.points, {
85
- color: mark.color,
86
- size: mark.size,
87
- tool: mark.tool
88
- });
89
- if (!built) throw new Error(`${where}: a stroke needs at least one point`);
90
- node = toNode(built, id);
91
- } else if (mark.kind === "text") {
92
- const [x, y] = mark.at;
93
- node = toNode(buildTextNode({
94
- x,
95
- y
96
- }, {
97
- text: mark.text,
98
- color: mark.color,
99
- fontSize: mark.fontSize
100
- }), id);
101
- } else {
102
- const [x, y, width, height] = mark.box;
103
- node = toNode(buildShapeNode(mark.shape, {
104
- x,
105
- y,
106
- width,
107
- height
108
- }, {
109
- color: mark.color,
110
- filled: mark.filled,
111
- label: mark.label
112
- }), id);
113
- }
114
- return mark.in ? placeInFrame(node, mark.in, frames, where) : node;
86
+ const where = `marks[${index}]`;
87
+ const id = mark.id ?? `pen-${index + 1}`;
88
+ let node;
89
+ if (mark.kind === "stroke") {
90
+ const built = buildStrokeNode(mark.points, {
91
+ color: mark.color,
92
+ size: mark.size,
93
+ tool: mark.tool
94
+ });
95
+ if (!built) throw new Error(`${where}: a stroke needs at least one point`);
96
+ node = toNode(built, id);
97
+ } else if (mark.kind === "text") {
98
+ const [x, y] = mark.at;
99
+ node = toNode(buildTextNode({
100
+ x,
101
+ y
102
+ }, {
103
+ text: mark.text,
104
+ color: mark.color,
105
+ fontSize: mark.fontSize
106
+ }), id);
107
+ } else {
108
+ const [x, y, width, height] = mark.box;
109
+ node = toNode(buildShapeNode(mark.shape, {
110
+ x,
111
+ y,
112
+ width,
113
+ height
114
+ }, {
115
+ color: mark.color,
116
+ filled: mark.filled,
117
+ label: mark.label
118
+ }), id);
119
+ }
120
+ return mark.in ? placeInFrame(node, mark.in, frames, where) : node;
115
121
  }