@sentry/junior-dashboard 0.141.0 → 0.142.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sentry/junior-dashboard",
3
- "version": "0.141.0",
3
+ "version": "0.142.0",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -34,8 +34,8 @@
34
34
  "react-router": "^7.16.0",
35
35
  "shiki": "4.1.0",
36
36
  "zod": "^4.4.3",
37
- "@sentry/junior": "0.141.0",
38
- "@sentry/junior-plugin-api": "0.141.0"
37
+ "@sentry/junior": "0.142.0",
38
+ "@sentry/junior-plugin-api": "0.142.0"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@tailwindcss/cli": "^4.3.0",
@@ -18,6 +18,7 @@ type TooltipProps = {
18
18
  content: ReactNode;
19
19
  label?: ReactNode;
20
20
  placement?: "above" | "below";
21
+ triggerClassName?: string;
21
22
  };
22
23
 
23
24
  const VIEWPORT_GAP = 8;
@@ -52,6 +53,7 @@ export function Tooltip({
52
53
  content,
53
54
  label,
54
55
  placement = "above",
56
+ triggerClassName,
55
57
  }: TooltipProps) {
56
58
  const tooltipId = useId();
57
59
  const rootRef = useRef<Element | null>(null);
@@ -160,7 +162,7 @@ export function Tooltip({
160
162
 
161
163
  return (
162
164
  <span
163
- className="inline-flex"
165
+ className={cn("inline-flex", triggerClassName)}
164
166
  ref={rootRef as RefObject<HTMLSpanElement | null>}
165
167
  >
166
168
  {card}
@@ -122,10 +122,11 @@ export function GuardianActivity(props: { days: GuardianMetricDay[] }) {
122
122
  }
123
123
  key={day.date}
124
124
  label={shortDate(day.date)}
125
+ triggerClassName="h-full min-w-0 flex-1 items-end"
125
126
  >
126
127
  <button
127
128
  aria-label={`${shortDate(day.date)}: ${day.allow} allowed, ${day.ask} asked, ${day.deny} denied, ${formatCostSummary({ total: day.costUsd ?? 0 })}`}
128
- className="flex min-w-0 flex-1 flex-col justify-end overflow-hidden rounded-t-sm bg-white/[0.035] focus-visible:outline-1 focus-visible:outline-cyan-300"
129
+ className="flex w-full min-w-0 flex-col justify-end overflow-hidden rounded-t-sm bg-white/[0.035] focus-visible:outline-1 focus-visible:outline-cyan-300"
129
130
  style={{ height: `${height}%` }}
130
131
  type="button"
131
132
  >
@@ -138,13 +138,13 @@ export function TaskDetailsDrawer(props: {
138
138
  <header className="relative border-b border-white/10 bg-dashboard-surface-raised px-4 py-3 md:px-5">
139
139
  <div className="min-w-0 pr-12">
140
140
  <h2
141
- className="m-0 font-display text-lg font-medium tracking-normal text-dashboard-text capitalize"
141
+ className="m-0 font-display text-lg font-medium tracking-normal text-dashboard-text"
142
142
  id={titleId}
143
143
  >
144
- {task.kind} task
144
+ {task.title}
145
145
  </h2>
146
- <div className="mt-1 break-words font-mono text-xs leading-snug text-dashboard-text-muted">
147
- {statusLabel} · {formatDate(task.createdAt)}
146
+ <div className="mt-1 break-words font-mono text-xs leading-snug text-dashboard-text-muted capitalize">
147
+ {task.kind} task · {statusLabel} · {formatDate(task.createdAt)}
148
148
  </div>
149
149
  </div>
150
150
  <div className="absolute top-3 right-4 md:right-5">
@@ -103,7 +103,7 @@ function TaskExecutionsView(props: {
103
103
  </Link>
104
104
  <PageHeader
105
105
  description={`${data.task.kind} task · ${data.task.destination.label} · ${statusSummary}`}
106
- title={data.task.instruction}
106
+ title={data.task.title}
107
107
  />
108
108
  </div>
109
109
 
@@ -140,7 +140,7 @@ function TaskExecutionsView(props: {
140
140
  {data.executions.map((execution) => (
141
141
  <ExecutionRow
142
142
  execution={execution}
143
- fallbackTitle={data.task.instruction}
143
+ fallbackTitle={data.task.title}
144
144
  key={execution.executionId}
145
145
  />
146
146
  ))}
@@ -63,6 +63,7 @@ function taskMatches(task: TaskSummary, search: string): boolean {
63
63
  task.destination.teamId,
64
64
  task.instruction,
65
65
  task.kind,
66
+ task.title,
66
67
  task.kind === "scheduled" ? task.schedule : task.resource,
67
68
  ...(task.kind === "event" ? [task.source] : []),
68
69
  ...(task.kind === "event" ? task.events : []),
@@ -176,7 +177,7 @@ export function TasksPage(props: { enabled: boolean }) {
176
177
  className="w-full lg:max-w-sm"
177
178
  label="Search tasks"
178
179
  onChange={setSearchText}
179
- placeholder="Instruction, location, or creator"
180
+ placeholder="Title, instruction, location, or creator"
180
181
  value={searchText}
181
182
  />
182
183
  </TaskFilterGroup>
@@ -331,7 +332,7 @@ function TaskRow(props: {
331
332
  <TaskSourceMark task={task} />
332
333
  <span className="min-w-0">
333
334
  <span className="block truncate font-display text-base font-medium text-dashboard-text">
334
- {task.instruction}
335
+ {task.title}
335
336
  </span>
336
337
  <span className="mt-1 block truncate font-mono text-xs uppercase tracking-[0.08em] text-dashboard-text-muted">
337
338
  <span className="md:hidden">{task.destination.label}</span>
@@ -363,7 +364,7 @@ function TaskRow(props: {
363
364
  </div>
364
365
  <button
365
366
  aria-expanded={props.selected}
366
- aria-label={`View task details: ${task.instruction}`}
367
+ aria-label={`View task details: ${task.title}`}
367
368
  className="grid size-8 cursor-pointer place-items-center rounded border border-transparent bg-transparent text-dashboard-text-muted transition-colors hover:border-white/10 hover:bg-white/[0.04] hover:text-dashboard-text"
368
369
  onClick={props.onSelect}
369
370
  type="button"
@@ -379,7 +380,7 @@ function TaskRow(props: {
379
380
  </button>
380
381
  {task.ownedByViewer ? (
381
382
  <Button
382
- aria-label={`Delete: ${task.instruction}`}
383
+ aria-label={`Delete: ${task.title}`}
383
384
  disabled={props.deleting}
384
385
  onClick={props.onDelete}
385
386
  size="icon"
@@ -1550,6 +1550,7 @@ function mockTasks(): TaskSummary[] {
1550
1550
  runsLast7Days: 3,
1551
1551
  schedule: "Every Monday at 9:00 AM",
1552
1552
  status: "active",
1553
+ title: "Weekly project summary",
1553
1554
  totalRuns: 48,
1554
1555
  },
1555
1556
  {
@@ -1570,6 +1571,7 @@ function mockTasks(): TaskSummary[] {
1570
1571
  resource: "Issue · ACME-42",
1571
1572
  runsLast7Days: 1,
1572
1573
  source: "github",
1574
+ title: "Closed issue summary",
1573
1575
  totalRuns: 7,
1574
1576
  triggerAvailable: true,
1575
1577
  },
@@ -1591,6 +1593,7 @@ function mockTasks(): TaskSummary[] {
1591
1593
  resource: "Incident · INC-17",
1592
1594
  runsLast7Days: 0,
1593
1595
  source: "pagerduty",
1596
+ title: "Incident change alerts",
1594
1597
  totalRuns: 0,
1595
1598
  triggerAvailable: false,
1596
1599
  },