@timebraid/vue 1.8.0 → 1.9.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.
package/README.md CHANGED
@@ -41,13 +41,13 @@ Import `@timebraid/tokens/styles.css` once in `main.ts` (or `@timebraid/vue/styl
41
41
  | `TDot` | Status dot with a pulsing ring when running |
42
42
  | `TDur` | Duration readout, mono and tabular |
43
43
  | `TWaterfall` | Parallel-time waterfall timeline for reports, one lane per task grouped under its project; `showWs` adds a workspace tag per project |
44
- | `TPill` | The floating always-visible timer pill: count first, the longest timer leads; the `popover` slot (scoped with `running`) replaces the popover body, grouped by workspace then project, and `open` is consumer-owned through `update:open` |
44
+ | `TPill` | The floating always-visible timer pill: count first, the longest timer leads; the `popover` slot (scoped with `running`) replaces the popover body, grouped by workspace then project, and `open` is consumer-owned through `update:open`; with several timers its stop control opens the popover, where Stop all sits top right |
45
45
  | `TWsIcon` | Workspace glyph: a coloured initial square, or the app mark when `all` |
46
46
  | `TWsTag` | Small workspace label, the square plus its name; appears only in the All-workspaces scope |
47
47
  | `TWorkspaceSwitcher` | Scope selector: All workspaces or one |
48
48
  | `TWorkspaceMenu` | The workspace list shared by the switcher's popover and the drawer; `embedded` drops its shadow for inline use |
49
49
  | `TWorkspaceDrawer` | Full-height phone workspace list; drag the panel to dismiss |
50
- | `TTimerBar` | Phone bottom timer bar: takes the full `timers` array, count first with the longest leading |
50
+ | `TTimerBar` | Phone bottom timer bar: takes the full `timers` array, count first with the longest leading; with several timers its stop control emits `open` for the running sheet instead of stopping them all |
51
51
  | `TStrokes` | Oversized faded tally strokes behind sign-in and empty states |
52
52
  | `TStartHero` | The pill-shaped start field that opens Today: "Start a timer" with "Quick start" chips on desktop when nothing runs, "Start another timer" with a "Runs in parallel" hint (chips kept) when `hasRunning`, the bare pill when `mobile` |
53
53
  | `TIOSNav` | iOS nav bar under the status-bar inset (`--inset-top`); the `leading` control, the large title and the `right` actions share one line and the title collapses in place on scroll |
@@ -1198,7 +1198,7 @@ const Ee = { style: { position: "relative", display: "inline-block" } }, he = {
1198
1198
  });
1199
1199
  const T = () => {
1200
1200
  if (e.paused) return l("start");
1201
- if (J.value) return l("stopAll");
1201
+ if (J.value) return l("update:open", !0);
1202
1202
  f.value && l("stop", f.value.id);
1203
1203
  }, O = { display: "flex", alignItems: "center", gap: "10px", width: "100%", padding: "9px 10px", borderRadius: "var(--r-btn)", fontSize: "13.5px", textAlign: "left" };
1204
1204
  return (h, Y) => (i(), n("div", Ee, [
@@ -1339,7 +1339,7 @@ const Ee = { style: { position: "relative", display: "inline-block" } }, he = {
1339
1339
  }, null, 8, ["label"])) : (i(), I(V, {
1340
1340
  key: 1,
1341
1341
  icon: A.paused ? "play" : "square",
1342
- label: A.paused ? "Resume" : J.value ? "Stop all" : "Stop",
1342
+ label: A.paused ? "Resume" : J.value ? "Stop timers" : "Stop",
1343
1343
  size: 30,
1344
1344
  tone: "accent",
1345
1345
  onClick: T
@@ -1694,7 +1694,7 @@ const Ee = { style: { position: "relative", display: "inline-block" } }, he = {
1694
1694
  var m, r;
1695
1695
  return x.value ? `Longest: ${((m = f.value) == null ? void 0 : m.task) ?? ""}` : ((r = f.value) == null ? void 0 : r.project) ?? "";
1696
1696
  }), a = () => {
1697
- if (x.value) return l("stopAll");
1697
+ if (x.value) return l("open");
1698
1698
  f.value && l("stop", f.value.id);
1699
1699
  }, E = (m) => {
1700
1700
  m.target instanceof Element && m.target.closest("button") !== null || l("open");
@@ -1746,8 +1746,8 @@ const Ee = { style: { position: "relative", display: "inline-block" } }, he = {
1746
1746
  c("button", {
1747
1747
  type: "button",
1748
1748
  class: "press",
1749
- "aria-label": x.value ? "Stop all" : "Stop",
1750
- title: x.value ? "Stop all" : "Stop",
1749
+ "aria-label": x.value ? "Stop timers" : "Stop",
1750
+ title: x.value ? "Stop timers" : "Stop",
1751
1751
  style: { width: "36px", height: "36px", "border-radius": "50%", background: "var(--accent)", display: "grid", "place-items": "center", flex: "none" },
1752
1752
  onClick: a
1753
1753
  }, [...r[0] || (r[0] = [