@bud.sh/app 0.3.0 → 0.4.1

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 (77) hide show
  1. package/dist/client/assets/bud/design.js +1 -1
  2. package/dist/client/assets/canvas-DIKX_HCJ.js +1 -0
  3. package/dist/client/assets/difference-worker-CwQNxTJL.js +8 -0
  4. package/dist/client/assets/files-BQ9O3Z8-.js +1 -0
  5. package/dist/client/assets/i18n-CL0jBP7Y.js +1 -0
  6. package/dist/client/assets/index-COvyj5zV.js +2 -0
  7. package/dist/client/assets/pages-BGl2Yuza.js +1 -0
  8. package/dist/client/assets/project-branches-DwKjCwZv.js +1 -0
  9. package/dist/client/assets/project-comments-Cdip2Y10.js +1 -0
  10. package/dist/client/assets/project-thread-links-BGIkGQeU.js +1 -0
  11. package/dist/client/assets/{project-threads-DezXiVK6.js → project-threads-DeKXNqeP.js} +104 -104
  12. package/dist/client/assets/{project-work-CB1JHqGW.js → project-work-B7PGQtV9.js} +1 -1
  13. package/dist/client/assets/task-design-DJp5yho1.js +23 -0
  14. package/dist/client/assets/tasks-BHXj727C.js +1 -0
  15. package/dist/client/assets/tasks-request-CsUB5__X.js +1 -0
  16. package/dist/client/assets/workspace-CbO7RsI2.js +2 -0
  17. package/dist/client/index.html +2 -1
  18. package/dist/hosted/assets/{canvas-C69-96GR.js → canvas-gWj_ocKK.js} +69 -41
  19. package/dist/hosted/assets/{comment-data-CiDuvXi2.js → comment-data-C-rNCB1n.js} +7323 -1068
  20. package/dist/hosted/assets/{files-DQL5hzs3.js → files-CAPvbavY.js} +92 -89
  21. package/dist/hosted/assets/{pages-DFs7jB6M.js → pages-DJiOvT-l.js} +31 -22
  22. package/dist/hosted/assets/{project-branches-CffV4IS1.js → project-branches-BgrfdvtL.js} +5 -5
  23. package/dist/hosted/assets/{project-thread-links-B1Y2bDUx.js → project-thread-links-B7uzThL9.js} +12 -12
  24. package/dist/hosted/assets/{screen-BroBb1Z_.js → screen-D4D9nh4V.js} +18 -18
  25. package/dist/hosted/assets/{tasks-mzmNhe2d.js → tasks-C7aGLzBw.js} +29 -29
  26. package/dist/hosted/assets/{tasks-request-Dcrpd2_8.js → tasks-request-CikFdCgP.js} +7 -7
  27. package/dist/hosted/hosted.js +58 -31
  28. package/dist/node/design.js +6355 -139
  29. package/dist/node/index.js +4 -2
  30. package/dist/node-host/assets/{canvas-BZhzizzt.js → canvas-kXzp80a5.js} +70 -42
  31. package/dist/node-host/assets/{comment-data-nUlI0szN.js → comment-data-CeuJbJKJ.js} +7349 -1094
  32. package/dist/node-host/assets/{files-CTzcWGjb.js → files-0YIuvKzb.js} +92 -89
  33. package/dist/node-host/assets/{pages-0aWH7z1j.js → pages-DOF22SyG.js} +31 -22
  34. package/dist/node-host/assets/{project-branches-1zs_0J_y.js → project-branches-BeEwMBIw.js} +5 -5
  35. package/dist/node-host/assets/{project-thread-links-LpUAGcDr.js → project-thread-links-Bs_MtfBC.js} +12 -12
  36. package/dist/node-host/assets/{screen-DQoTOWYR.js → screen-DRTAKkn3.js} +18 -18
  37. package/dist/node-host/assets/{tasks-C0WqnM7Q.js → tasks-BA_hcbj5.js} +30 -30
  38. package/dist/node-host/assets/{tasks-request-Bwky5ORf.js → tasks-request-Doc9y_20.js} +7 -7
  39. package/dist/node-host/node-host.js +58 -31
  40. package/dist/server/assets/{branch-previews-BryeA_kA.js → branch-previews-ClkoJ0lM.js} +4 -2
  41. package/dist/server/assets/{canvas-D6tIkONI.js → canvas-CiN6jNIZ.js} +70 -42
  42. package/dist/server/assets/{comment-data-BuArfgcc.js → comment-data-9SqALQjT.js} +7347 -1092
  43. package/dist/server/assets/{files-DkrEB48U.js → files-DBVqeLdL.js} +92 -89
  44. package/dist/server/assets/{listener-oKd5ETMj.js → listener-DGWKUc2o.js} +53 -31
  45. package/dist/server/assets/{pages-iEdmK_o2.js → pages-DJMLr6j9.js} +31 -22
  46. package/dist/server/assets/{project-branches-B7rtrvMl.js → project-branches-DbKEmiQT.js} +5 -5
  47. package/dist/server/assets/{project-thread-links-ue_ad9IX.js → project-thread-links-C0kV_Pcl.js} +12 -12
  48. package/dist/server/assets/{project-work-6aOyja4v.js → project-work-C0FN3w5Y.js} +2 -2
  49. package/dist/server/assets/{screen-DMUB9a-K.js → screen-BtvzEiIa.js} +18 -18
  50. package/dist/server/assets/{server-DN5uwE4k.js → server-CYvuOSBA.js} +1 -1
  51. package/dist/server/assets/{services-Ber8opFE.js → services-DK4fqrlF.js} +2 -2
  52. package/dist/server/assets/{tasks-C2oa2wSC.js → tasks-DX71x8f9.js} +31 -31
  53. package/dist/server/assets/{tasks-request-Bk5EoY_p.js → tasks-request-C3jk9Jyu.js} +7 -6
  54. package/dist/server/capture.js +1 -1
  55. package/dist/server/migration.js +3 -3
  56. package/dist/server/runtime.js +4 -4
  57. package/dist/server/server.js +3 -3
  58. package/dist/types/assets/{config-Cuauq8xY.d.ts → config-DIC2cf_S.d.ts} +3 -0
  59. package/dist/types/assets/{contract-BsCQbbxD.d.ts → contract-CAT-XFNq.d.ts} +3 -1
  60. package/dist/types/companion.d.ts +1 -1
  61. package/dist/types/hosted.d.ts +2 -2
  62. package/dist/types/index.d.ts +1 -1
  63. package/dist/types/node-host.d.ts +2 -2
  64. package/dist/types/screen.d.ts +1 -1
  65. package/package.json +1 -1
  66. package/dist/client/assets/canvas-DxaIItAs.js +0 -1
  67. package/dist/client/assets/difference-worker-BpqPBs5g.js +0 -8
  68. package/dist/client/assets/files-C-7xoSt4.js +0 -1
  69. package/dist/client/assets/index-GPPa1XPO.js +0 -2
  70. package/dist/client/assets/pages-BVrTX_Eq.js +0 -1
  71. package/dist/client/assets/project-branches-DpxQx-T4.js +0 -1
  72. package/dist/client/assets/project-comments-D897aU5O.js +0 -1
  73. package/dist/client/assets/project-thread-links-Bp_TseD0.js +0 -1
  74. package/dist/client/assets/task-design-bktfn_Ok.js +0 -23
  75. package/dist/client/assets/tasks-Cqfj4fQN.js +0 -1
  76. package/dist/client/assets/tasks-request-mWMk9pBo.js +0 -1
  77. package/dist/client/assets/workspace-CznMN7F6.js +0 -2
@@ -1,8 +1,8 @@
1
1
  import { kn as Icon } from "./events-6z5v7Uca.js";
2
- import { Bt as Button, Cn as Text, H as captureCanvasPoint, Rt as Loader, Sn as writePreference, V as CanvasWorkspace, W as BranchSidebar, fn as ToolbarSeparator, gn as IconButton, hn as Select, l as projectStore, pn as WorkspaceLayout, t as commentsUnavailable, ut as conversationHref, vn as Tooltip, xn as readPreference } from "./comment-data-BuArfgcc.js";
3
- import { n as createProjectComments, r as loadComments, t as defineScreen } from "./screen-DMUB9a-K.js";
4
- import { i as pictureKey, n as createProjectPreviews, t as createProjectBranches } from "./project-branches-B7rtrvMl.js";
5
- import { t as ProjectThreadLinks } from "./project-thread-links-ue_ad9IX.js";
2
+ import { Bt as Button, En as t, H as captureCanvasPoint, On as Text, Rt as Loader, Sn as writePreference, V as CanvasWorkspace, W as BranchSidebar, fn as ToolbarSeparator, gn as IconButton, hn as Select, l as projectStore, pn as WorkspaceLayout, t as commentsUnavailable, ut as conversationHref, vn as Tooltip, xn as readPreference } from "./comment-data-9SqALQjT.js";
3
+ import { n as createProjectComments, r as loadComments, t as defineScreen } from "./screen-BtvzEiIa.js";
4
+ import { i as pictureKey, n as createProjectPreviews, t as createProjectBranches } from "./project-branches-DbKEmiQT.js";
5
+ import { t as ProjectThreadLinks } from "./project-thread-links-C0kV_Pcl.js";
6
6
  import { on, ref } from "remix/component";
7
7
  import { Fragment, jsx, jsxs } from "remix/component/jsx-runtime";
8
8
  //#region app/client/preview-image.tsx
@@ -160,7 +160,7 @@ function PreviewImage(handle) {
160
160
  let { thumbnail, slices } = drawn(picture);
161
161
  return /* @__PURE__ */ jsxs("div", {
162
162
  role: "img",
163
- "aria-label": `${route.title} preview`,
163
+ "aria-label": t("app.client.previewImage.preview", { title: route.title }),
164
164
  "data-detail": !view.visible ? "hidden" : slices.length ? "slices" : thumbnail ? "thumbnail" : "pending",
165
165
  class: `relative select-none overflow-hidden ${mode === "comment" ? "cursor-crosshair" : ""}`,
166
166
  style: { height },
@@ -210,11 +210,11 @@ function PreviewImage(handle) {
210
210
  size: 24,
211
211
  class: "text-muted"
212
212
  }),
213
- /* @__PURE__ */ jsxs(Text, {
213
+ /* @__PURE__ */ jsx(Text, {
214
214
  variant: "title",
215
215
  weight: "semibold",
216
216
  class: "text-ink",
217
- children: [route.title, " couldn't be captured"]
217
+ children: t("app.client.previewImage.captureFailed", { title: route.title })
218
218
  }),
219
219
  failure ? /* @__PURE__ */ jsx(Text, {
220
220
  variant: "ui",
@@ -229,7 +229,7 @@ function PreviewImage(handle) {
229
229
  mix: [stopPan, on("click", () => void previews.refresh(page))],
230
230
  children: /* @__PURE__ */ jsx(Text, {
231
231
  variant: "ui",
232
- children: "Try again"
232
+ children: t("app.client.previewImage.tryAgain")
233
233
  })
234
234
  }), /* @__PURE__ */ jsx("a", {
235
235
  href: pageUrl,
@@ -239,7 +239,7 @@ function PreviewImage(handle) {
239
239
  mix: stopPan,
240
240
  children: /* @__PURE__ */ jsx(Text, {
241
241
  variant: "ui",
242
- children: "Open page"
242
+ children: t("app.client.previewImage.openPage")
243
243
  })
244
244
  })]
245
245
  })
@@ -247,7 +247,7 @@ function PreviewImage(handle) {
247
247
  });
248
248
  return /* @__PURE__ */ jsx("div", {
249
249
  class: "absolute inset-0 flex items-center justify-center",
250
- children: /* @__PURE__ */ jsx(Loader, { label: `Capturing ${route.title}…` })
250
+ children: /* @__PURE__ */ jsx(Loader, { label: t("app.client.previewImage.capturing", { title: route.title }) })
251
251
  });
252
252
  };
253
253
  }
@@ -280,7 +280,7 @@ function PreviewRefresh(handle) {
280
280
  })
281
281
  }) : null, /* @__PURE__ */ jsx(IconButton, {
282
282
  icon: "sync",
283
- label: `Refresh ${route.title}`,
283
+ label: t("app.client.previewImage.refresh", { title: route.title }),
284
284
  tooltip: true,
285
285
  size: "small",
286
286
  iconSize: 13,
@@ -389,7 +389,7 @@ function compareProjectPictures(options) {
389
389
  let result = await compare(route.page, route.size).catch((cause) => ({
390
390
  state: "failed",
391
391
  regions: [],
392
- error: cause instanceof Error ? cause.message : "The pictures could not be compared."
392
+ error: cause instanceof Error ? cause.message : t("app.client.projectDifferences.comparisonFailed")
393
393
  }));
394
394
  if (signal.aborted) return;
395
395
  states.set(route.id, result);
@@ -429,11 +429,9 @@ function differenceSlots(regions) {
429
429
  height: Math.max(1, top - gap)
430
430
  };
431
431
  }
432
- var kinds = {
433
- changed: "Changed",
434
- added: "Added",
435
- removed: "Removed"
436
- };
432
+ function kindLabel(kind) {
433
+ return kind === "changed" ? t("app.client.differenceView.changed") : kind === "added" ? t("app.client.differenceView.added") : t("app.client.differenceView.removed");
434
+ }
437
435
  function crops(signal) {
438
436
  let urls = /* @__PURE__ */ new Map();
439
437
  signal.addEventListener("abort", () => {
@@ -468,7 +466,10 @@ function DifferenceArtboard(handle) {
468
466
  let visible = viewport?.get(route.id)?.visible ?? true;
469
467
  return /* @__PURE__ */ jsx("div", {
470
468
  role: "img",
471
- "aria-label": `${route.title}, ${label}`,
469
+ "aria-label": t("app.client.differenceView.artboardLabel", {
470
+ title: route.title,
471
+ label
472
+ }),
472
473
  "data-difference": side,
473
474
  "data-changes": regions.length,
474
475
  class: "relative select-none bg-[var(--bud-main)]",
@@ -491,11 +492,11 @@ function DifferenceArtboard(handle) {
491
492
  children: [/* @__PURE__ */ jsx(Text, {
492
493
  variant: "ui",
493
494
  weight: "medium",
494
- children: `Change ${index + 1}`
495
+ children: t("app.client.differenceView.changeNumber", { count: index + 1 })
495
496
  }), /* @__PURE__ */ jsx(Text, {
496
497
  variant: "ui",
497
498
  tone: "muted",
498
- children: kinds[region.kind]
499
+ children: kindLabel(region.kind)
499
500
  })]
500
501
  }), crop && span.height > 0 ? /* @__PURE__ */ jsxs("div", {
501
502
  class: "relative overflow-hidden",
@@ -518,7 +519,7 @@ function DifferenceArtboard(handle) {
518
519
  children: /* @__PURE__ */ jsx(Text, {
519
520
  variant: "ui",
520
521
  tone: "muted",
521
- children: `Not in ${label}`
522
+ children: t("app.client.differenceView.notIn", { label })
522
523
  })
523
524
  })]
524
525
  }, index);
@@ -552,7 +553,10 @@ function DifferenceSlideshow(handle) {
552
553
  }) }), crop && slide.region[which].height > 0 ? /* @__PURE__ */ jsxs("div", {
553
554
  class: "relative",
554
555
  children: [/* @__PURE__ */ jsx("img", {
555
- alt: `${slide.route.title}, ${label}`,
556
+ alt: t("app.client.differenceView.artboardLabel", {
557
+ title: slide.route.title,
558
+ label
559
+ }),
556
560
  src: url(crop),
557
561
  class: "block w-full rounded-lg ring-1 ring-line"
558
562
  }), slide.region.kind === "changed" ? /* @__PURE__ */ jsx("div", {
@@ -568,14 +572,14 @@ function DifferenceSlideshow(handle) {
568
572
  children: /* @__PURE__ */ jsx(Text, {
569
573
  variant: "ui",
570
574
  tone: "muted",
571
- children: `Not in ${label}`
575
+ children: t("app.client.differenceView.notIn", { label })
572
576
  })
573
577
  })]
574
578
  });
575
579
  };
576
580
  return /* @__PURE__ */ jsxs("section", {
577
581
  role: "dialog",
578
- "aria-label": "Differences slideshow",
582
+ "aria-label": t("app.client.differenceView.slideshowLabel"),
579
583
  class: "bud-surface absolute inset-0 z-40 flex flex-col bg-[var(--bud-main)]",
580
584
  mix: ref((node, signal) => {
581
585
  node.focus();
@@ -597,33 +601,39 @@ function DifferenceSlideshow(handle) {
597
601
  variant: "ui",
598
602
  weight: "medium",
599
603
  class: "truncate",
600
- children: slide?.route.title ?? "No differences"
604
+ children: slide?.route.title ?? t("app.client.differenceView.noDifferences")
601
605
  }), slide ? /* @__PURE__ */ jsx(Text, {
602
606
  variant: "ui",
603
607
  tone: "muted",
604
608
  class: "shrink-0 tabular-nums",
605
609
  role: "status",
606
- children: `${kinds[slide.region.kind]} · change ${slide.index + 1} of ${slide.count} · ${index + 1} / ${slides.length}`
610
+ children: t("app.client.differenceView.slideStatus", {
611
+ kind: kindLabel(slide.region.kind),
612
+ change: slide.index + 1,
613
+ count: slide.count,
614
+ index: index + 1,
615
+ total: slides.length
616
+ })
607
617
  }) : null]
608
618
  }),
609
619
  /* @__PURE__ */ jsx(IconButton, {
610
620
  tooltip: true,
611
621
  icon: "chevron-left",
612
- label: "Previous change",
622
+ label: t("app.client.differenceView.previousChange"),
613
623
  disabled: slides.length < 2,
614
624
  mix: on("click", () => step(-1))
615
625
  }),
616
626
  /* @__PURE__ */ jsx(IconButton, {
617
627
  tooltip: true,
618
628
  icon: "chevron-right",
619
- label: "Next change",
629
+ label: t("app.client.differenceView.nextChange"),
620
630
  disabled: slides.length < 2,
621
631
  mix: on("click", () => step(1))
622
632
  }),
623
633
  /* @__PURE__ */ jsx(IconButton, {
624
634
  tooltip: true,
625
635
  icon: "close",
626
- label: "Close slideshow",
636
+ label: t("app.client.differenceView.closeSlideshow"),
627
637
  shortcut: "escape",
628
638
  mix: on("click", () => handle.props.onClose())
629
639
  })
@@ -737,7 +747,7 @@ function ProjectCanvas(handle) {
737
747
  function others() {
738
748
  let sets = project.workingTree ? [{
739
749
  value: "",
740
- label: "Working tree"
750
+ label: t("app.client.projectCanvas.workingTree")
741
751
  }] : [];
742
752
  for (let branch of branches.list.branches) if (branch.active && branch.captured) sets.push({
743
753
  value: branch.name,
@@ -746,7 +756,7 @@ function ProjectCanvas(handle) {
746
756
  return sets.filter((set) => set.value !== (selected ?? ""));
747
757
  }
748
758
  function label(set) {
749
- return set ? set : "Working tree";
759
+ return set ? set : t("app.client.projectCanvas.workingTree");
750
760
  }
751
761
  function startComparing() {
752
762
  let sets = others();
@@ -812,7 +822,7 @@ function ProjectCanvas(handle) {
812
822
  comments.loadThread(id);
813
823
  });
814
824
  }
815
- if (!branches.loaded && !branches.error) return /* @__PURE__ */ jsx(Loader, { label: "Loading branches…" });
825
+ if (!branches.loaded && !branches.error) return /* @__PURE__ */ jsx(Loader, { label: t("app.client.projectCanvas.loadingBranches") });
816
826
  let projectKey = `${project.id}:${project.targetOrigin}:${project.routes.map((route) => route.path).join("|")}`;
817
827
  let snapshot = {
818
828
  ...comments.snapshot,
@@ -859,8 +869,23 @@ function ProjectCanvas(handle) {
859
869
  if (differences) {
860
870
  let { compared: done, total } = differences.progress;
861
871
  let missing = artboards.filter(({ artboard }) => differences.get(artboard.id).state === "missing").length;
862
- status = !differences.done ? `Comparing with ${beforeLabel}… ${done} of ${total} pages` : changed.length ? `${changed.length} of ${total} pages differ from ${beforeLabel}` : `No differences from ${beforeLabel}`;
863
- if (differences.done && missing) status += ` · ${missing} without pictures on both sides`;
872
+ status = !differences.done ? t("app.client.projectCanvas.comparingPages", {
873
+ name: beforeLabel,
874
+ done,
875
+ count: total
876
+ }) : changed.length ? missing ? t("app.client.projectCanvas.differentPagesWithMissing", {
877
+ changed: changed.length,
878
+ count: total,
879
+ name: beforeLabel,
880
+ missing
881
+ }) : t("app.client.projectCanvas.differentPages", {
882
+ changed: changed.length,
883
+ count: total,
884
+ name: beforeLabel
885
+ }) : missing ? t("app.client.projectCanvas.noDifferencesWithMissing", {
886
+ name: beforeLabel,
887
+ count: missing
888
+ }) : t("app.client.projectCanvas.noDifferences", { name: beforeLabel });
864
889
  }
865
890
  let sets = others();
866
891
  let icon = (size) => size.mobile || size.width < 600 ? "mobile" : size.width < 1100 ? "tablet" : "desktop";
@@ -869,14 +894,17 @@ function ProjectCanvas(handle) {
869
894
  sizes.map((size) => /* @__PURE__ */ jsx(IconButton, {
870
895
  tooltip: true,
871
896
  icon: icon(size),
872
- label: `Show ${size.name} (${size.width})`,
897
+ label: t("app.client.projectCanvas.showViewport", {
898
+ name: size.name,
899
+ width: size.width
900
+ }),
873
901
  active: viewport === size.id,
874
902
  mix: on("click", () => show(size.id))
875
903
  })),
876
904
  /* @__PURE__ */ jsx(IconButton, {
877
905
  tooltip: true,
878
906
  icon: "columns",
879
- label: "Show every viewport side by side",
907
+ label: t("app.client.projectCanvas.showEveryViewport"),
880
908
  active: viewport === "all",
881
909
  mix: on("click", () => show("all"))
882
910
  }),
@@ -885,13 +913,13 @@ function ProjectCanvas(handle) {
885
913
  /* @__PURE__ */ jsx(IconButton, {
886
914
  tooltip: true,
887
915
  icon: "compare",
888
- label: differences ? "Stop comparing" : "Show differences with another branch",
916
+ label: differences ? t("app.client.projectCanvas.stopComparing") : t("app.client.projectCanvas.showDifferences"),
889
917
  active: Boolean(differences),
890
918
  disabled: !differences && !sets.length,
891
919
  mix: on("click", () => differences ? stopComparing() : startComparing())
892
920
  }),
893
921
  differences ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Select, {
894
- label: "Compare with",
922
+ label: t("app.client.projectCanvas.compareWith"),
895
923
  value: comparing ?? "",
896
924
  options: sets,
897
925
  class: "max-w-48",
@@ -904,7 +932,7 @@ function ProjectCanvas(handle) {
904
932
  }), /* @__PURE__ */ jsx(IconButton, {
905
933
  tooltip: true,
906
934
  icon: "play",
907
- label: "Step through the differences",
935
+ label: t("app.client.projectCanvas.stepThroughDifferences"),
908
936
  disabled: !slides.length,
909
937
  mix: on("click", () => {
910
938
  slide = 0;
@@ -914,8 +942,8 @@ function ProjectCanvas(handle) {
914
942
  ] });
915
943
  return /* @__PURE__ */ jsx(WorkspaceLayout, {
916
944
  class: "h-full min-h-0",
917
- sidebarLabel: "Branches",
918
- mainLabel: "Canvas",
945
+ sidebarLabel: t("app.client.projectCanvas.branches"),
946
+ mainLabel: t("app.client.projectCanvas.canvas"),
919
947
  drawerOpen: drawer,
920
948
  onDrawerOpenChange: (open) => {
921
949
  drawer = open;
@@ -1025,7 +1053,7 @@ function ProjectCanvas(handle) {
1025
1053
  drawer = true;
1026
1054
  handle.update();
1027
1055
  },
1028
- sidebarLabel: "Branches",
1056
+ sidebarLabel: t("app.client.projectCanvas.branches"),
1029
1057
  renderArtboard: (route, state) => {
1030
1058
  let side = sides.get(route.id);
1031
1059
  if (side) return /* @__PURE__ */ jsx(DifferenceArtboard, {