@handled-ai/design-system 0.18.10 → 0.18.12

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 (43) hide show
  1. package/dist/components/account-contacts-popover.d.ts +5 -1
  2. package/dist/components/account-contacts-popover.js +25 -4
  3. package/dist/components/account-contacts-popover.js.map +1 -1
  4. package/dist/components/badge.d.ts +1 -1
  5. package/dist/components/button.d.ts +1 -1
  6. package/dist/components/data-table-condition-filter.d.ts +15 -3
  7. package/dist/components/data-table-condition-filter.js +199 -52
  8. package/dist/components/data-table-condition-filter.js.map +1 -1
  9. package/dist/components/data-table-filter.js +7 -8
  10. package/dist/components/data-table-filter.js.map +1 -1
  11. package/dist/components/entity-panel.d.ts +2 -1
  12. package/dist/components/entity-panel.js +52 -45
  13. package/dist/components/entity-panel.js.map +1 -1
  14. package/dist/components/pill.d.ts +1 -1
  15. package/dist/components/score-why-chips.d.ts +1 -1
  16. package/dist/components/signal-priority-popover.d.ts +1 -1
  17. package/dist/components/signal-priority-popover.js +4 -4
  18. package/dist/components/signal-priority-popover.js.map +1 -1
  19. package/dist/components/tabs.d.ts +1 -1
  20. package/dist/index.d.ts +2 -2
  21. package/dist/prototype/index.d.ts +1 -1
  22. package/dist/prototype/prototype-accounts-view.d.ts +1 -1
  23. package/dist/prototype/prototype-admin-view.d.ts +1 -1
  24. package/dist/prototype/prototype-config.d.ts +1 -1
  25. package/dist/prototype/prototype-inbox-view.d.ts +5 -3
  26. package/dist/prototype/prototype-inbox-view.js +11 -5
  27. package/dist/prototype/prototype-inbox-view.js.map +1 -1
  28. package/dist/prototype/prototype-insights-view.d.ts +1 -1
  29. package/dist/prototype/prototype-shell.d.ts +1 -1
  30. package/dist/{signal-priority-popover-BT6CPYNs.d.ts → signal-priority-popover-BEDoPsNE.d.ts} +6 -0
  31. package/package.json +1 -2
  32. package/src/components/__tests__/account-contacts-popover.test.tsx +79 -0
  33. package/src/components/__tests__/data-table-condition-filter.test.tsx +239 -7
  34. package/src/components/__tests__/entity-panel-header.test.tsx +44 -0
  35. package/src/components/__tests__/signal-priority-popover.test.tsx +30 -0
  36. package/src/components/account-contacts-popover.tsx +29 -1
  37. package/src/components/data-table-condition-filter.tsx +278 -68
  38. package/src/components/data-table-filter.tsx +6 -9
  39. package/src/components/entity-panel.tsx +56 -40
  40. package/src/components/signal-priority-popover.tsx +15 -4
  41. package/src/prototype/__tests__/detail-view-title-slots.test.tsx +15 -0
  42. package/src/prototype/prototype-config.ts +2 -0
  43. package/src/prototype/prototype-inbox-view.tsx +17 -5
@@ -62,4 +62,19 @@ describe("DetailView title slots", () => {
62
62
 
63
63
  expect(screen.getByRole("button", { name: "Quick action" })).toBeTruthy()
64
64
  })
65
+ it("renders a full-width title action row without replacing title extra or metadata", () => {
66
+ renderDetailView({
67
+ renderTitleExtra: () => <span data-testid="title-extra">Compact extra</span>,
68
+ renderTitleActionRow: () => (
69
+ <button type="button">Full-width quick action</button>
70
+ ),
71
+ renderMetadataExtra: () => <span data-testid="metadata-extra">Owner: Lee</span>,
72
+ })
73
+
74
+ expect(screen.getByTestId("title-extra").textContent).toBe("Compact extra")
75
+ expect(screen.getByRole("button", { name: "Full-width quick action" })).toBeTruthy()
76
+ expect(screen.getByTestId("metadata-extra").textContent).toBe("Owner: Lee")
77
+ expect(screen.getByTestId("priority-popover-trigger")).toBeTruthy()
78
+ })
79
+
65
80
  })
@@ -229,6 +229,8 @@ export interface InboxViewConfig {
229
229
  attentionCount?: number
230
230
  /** Render extra content inline with the detail title. */
231
231
  renderTitleExtra?: (item: QueueItem) => React.ReactNode
232
+ /** Render a full-width action row below the detail title row. */
233
+ renderTitleActionRow?: (item: QueueItem) => React.ReactNode
232
234
  /** Render supporting content below the detail title. */
233
235
  renderTitleSubtext?: (item: QueueItem) => React.ReactNode
234
236
  /** Sort options for the inbox. When provided, a sort dropdown is rendered in the split view toolbar. */
@@ -141,6 +141,8 @@ export interface DetailViewProps {
141
141
  lastActivityTime?: string
142
142
  /** Render extra content inline with the detail title. */
143
143
  renderTitleExtra?: (item: QueueItem) => React.ReactNode
144
+ /** Render a full-width action row below the detail title row. */
145
+ renderTitleActionRow?: (item: QueueItem) => React.ReactNode
144
146
  /** Render supporting content below the detail title. */
145
147
  renderTitleSubtext?: (item: QueueItem) => React.ReactNode
146
148
  /** Render extra metadata chips (e.g. assignee) inside the chips row below the title. */
@@ -321,6 +323,7 @@ export function DetailView({
321
323
  renderAfterScore,
322
324
  lastActivityTime,
323
325
  renderTitleExtra,
326
+ renderTitleActionRow,
324
327
  renderTitleSubtext,
325
328
  renderMetadataExtra,
326
329
  onOpenSignalBucket,
@@ -468,12 +471,19 @@ export function DetailView({
468
471
  <span className="text-xs text-muted-foreground">{item.company}</span>
469
472
  </div>
470
473
 
471
- <div className="mb-3 flex flex-wrap items-start gap-x-3 gap-y-2">
472
- <div className="min-w-0 flex-1">
473
- <h1 className="text-2xl font-bold tracking-tight text-foreground">{item.title}</h1>
474
- {renderTitleSubtext?.(item)}
474
+ <div className="mb-3 space-y-3">
475
+ <div className="flex flex-wrap items-start gap-x-3 gap-y-2">
476
+ <div className="min-w-0 flex-1">
477
+ <h1 className="text-2xl font-bold tracking-tight text-foreground">{item.title}</h1>
478
+ {renderTitleSubtext?.(item)}
479
+ </div>
480
+ {renderTitleExtra?.(item)}
475
481
  </div>
476
- {renderTitleExtra?.(item)}
482
+ {renderTitleActionRow ? (
483
+ <div className="flex w-full flex-wrap items-center gap-2">
484
+ {renderTitleActionRow(item)}
485
+ </div>
486
+ ) : null}
477
487
  </div>
478
488
 
479
489
  <div className="mb-6 flex flex-wrap items-center gap-2">
@@ -649,6 +659,7 @@ export function PrototypeInboxView({
649
659
  timelineSystemEventsConfig,
650
660
  attentionCount,
651
661
  renderTitleExtra,
662
+ renderTitleActionRow,
652
663
  renderTitleSubtext,
653
664
  sortOptions,
654
665
  activeSortId,
@@ -891,6 +902,7 @@ export function PrototypeInboxView({
891
902
  timelineSystemEventsConfig,
892
903
  attentionCount,
893
904
  renderTitleExtra,
905
+ renderTitleActionRow,
894
906
  renderTitleSubtext,
895
907
  onOpenSignalBucket,
896
908
  }