@puredesktop/puredesktop-ui-bridge 2.1.4 → 2.1.7

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 (183) hide show
  1. package/package.json +19 -1
  2. package/src/agents/runtime/mapAgentSnapshot.test.ts +1 -3
  3. package/src/agents/runtime/mapAgentSnapshot.ts +8 -4
  4. package/src/agents/runtime/mergeUsageTurn.ts +1 -2
  5. package/src/agents/runtime/pendingToolCalls.test.ts +1 -3
  6. package/src/agents/runtime/unresolvedToolCalls.ts +1 -2
  7. package/src/bridge/agentModelTiers.ts +9 -4
  8. package/src/bridge/agents.mjs +3 -1
  9. package/src/bridge/calendarDraftIntent.ts +12 -4
  10. package/src/bridge/calendarInviteIntent.ts +18 -5
  11. package/src/bridge/client.mjs +45 -45
  12. package/src/bridge/dialog.d.mts +8 -8
  13. package/src/bridge/dialog.mjs +40 -40
  14. package/src/bridge/dialog.test.ts +73 -73
  15. package/src/bridge/fs.d.mts +41 -41
  16. package/src/bridge/fs.mjs +56 -56
  17. package/src/bridge/fs.test.ts +83 -83
  18. package/src/bridge/fs.ts +28 -28
  19. package/src/bridge/googleAuth.ts +3 -1
  20. package/src/bridge/methods.d.mts +6 -0
  21. package/src/bridge/methods.mjs +7 -0
  22. package/src/bridge/network.d.mts +17 -17
  23. package/src/bridge/network.mjs +22 -22
  24. package/src/bridge/pureRender/base.css +324 -76
  25. package/src/bridge/pureRender/compiler.ts +1 -1
  26. package/src/bridge/pureRender/document.test.ts +2 -2
  27. package/src/bridge/pureRender/extraction.test.ts +24 -12
  28. package/src/bridge/pureRender/extraction.ts +10 -7
  29. package/src/bridge/pureRender/flow.css +17 -3
  30. package/src/bridge/pureRender/normalize.ts +28 -26
  31. package/src/bridge/pureRender/presets.ts +7 -7
  32. package/src/bridge/pureRender/profiles/book.css +122 -19
  33. package/src/bridge/pureRender/profiles/manuscript.css +57 -11
  34. package/src/bridge/pureRender/profiles/writer.css +48 -10
  35. package/src/bridge/pureRender/reset.css +20 -5
  36. package/src/bridge/pureRender/theme.ts +37 -9
  37. package/src/bridge/pureRender/tokens/default.css +45 -33
  38. package/src/bridge/react/usePlatformAgentRunLiveState.tsx +4 -1
  39. package/src/bridge/react/usePlatformAgentSessionDrive.tsx +13 -4
  40. package/src/bridge/screenAnnotation.test.ts +4 -1
  41. package/src/bridge/screenAnnotation.ts +6 -2
  42. package/src/bridge/storage.d.mts +26 -24
  43. package/src/bridge/storage.mjs +18 -18
  44. package/src/bridge/storage.test.ts +45 -45
  45. package/src/bridge/types.ts +62 -58
  46. package/src/bridge/window.d.mts +3 -1
  47. package/src/bridge/workspace.d.mts +7 -0
  48. package/src/bridge/workspace.mjs +8 -0
  49. package/src/bridge/workspace.ts +1 -0
  50. package/src/commitments/commitments.test.ts +10 -3
  51. package/src/commitments/commitments.ts +18 -4
  52. package/src/components/accessibility/AccessibilityReviewDialog.tsx +7 -2
  53. package/src/components/accessibility/accessibilityReview.test.ts +11 -4
  54. package/src/components/accessibility/accessibilityReview.ts +18 -10
  55. package/src/components/agent-feedback/ScreenAnnotationAgentDialog.tsx +9 -2
  56. package/src/components/agents/AgentContextUsageBar.tsx +5 -3
  57. package/src/components/agents/AgentDrawerPanel.test.tsx +15 -3
  58. package/src/components/agents/AgentMessageBubble.tsx +1 -3
  59. package/src/components/agents/AgentQuestionPromptList.tsx +3 -3
  60. package/src/components/agents/AgentToolApprovalActions.tsx +1 -3
  61. package/src/components/agents/agentPanelStyles.ts +1 -3
  62. package/src/components/agents/agentToolDisplay.ts +4 -1
  63. package/src/components/assets/asset-library/AssetLibraryDialog.tsx +2 -0
  64. package/src/components/assets/asset-library/AssetLibraryWorkspace.tsx +2 -0
  65. package/src/components/assets/asset-library/detail/AssetLibraryDetailHeader.test.tsx +40 -0
  66. package/src/components/assets/asset-library/detail/AssetLibraryDetailHeader.tsx +7 -3
  67. package/src/components/assets/asset-library/detail/AssetLibraryDetailPreview.tsx +8 -8
  68. package/src/components/assets/asset-library/hooks/useAssetLibraryDialog.ts +13 -2
  69. package/src/components/assets/asset-library/hooks/useAssetLibraryMutations.ts +18 -1
  70. package/src/components/assets/asset-library/sidebar/AssetLibraryListRow.tsx +9 -6
  71. package/src/components/assets/asset-library/sidebar/AssetLibrarySidebarToolbar.tsx +3 -1
  72. package/src/components/assets/asset-library/sidebar/AssetListThumbnail.tsx +1 -1
  73. package/src/components/assets/asset-library/types.ts +6 -0
  74. package/src/components/chrome/OverlayActionCapsule.tsx +2 -2
  75. package/src/components/chrome/PanelTabStrip.tsx +3 -2
  76. package/src/components/chrome/PureAppWordmark.tsx +15 -15
  77. package/src/components/chrome/WorkspaceTabStrip.tsx +19 -14
  78. package/src/components/chrome/documentChromePolicy.test.ts +34 -0
  79. package/src/components/chrome/documentChromePolicy.ts +15 -0
  80. package/src/components/chrome/index.ts +4 -0
  81. package/src/components/chrome/workspaceTabTypes.ts +2 -0
  82. package/src/components/common/buttons/Button.tsx +60 -10
  83. package/src/components/common/buttons/ChoiceChip.tsx +2 -2
  84. package/src/components/common/buttons/IconButton.tsx +26 -0
  85. package/src/components/common/buttons/SegmentedControl.tsx +23 -7
  86. package/src/components/common/canvas/CanvasElementFrame.tsx +37 -28
  87. package/src/components/common/canvas/canvasGeometry.test.ts +4 -5
  88. package/src/components/common/canvas/canvasGeometry.ts +1 -4
  89. package/src/components/common/canvas/useCanvasDragResize.test.tsx +10 -10
  90. package/src/components/common/canvas/useCanvasDragResize.ts +1 -4
  91. package/src/components/common/cards/OpenReviewCard.tsx +6 -6
  92. package/src/components/common/chat/ChatBox.test.tsx +9 -1
  93. package/src/components/common/chat/ChatBox.tsx +3 -4
  94. package/src/components/common/chat/ChatMarkdown.tsx +1 -1
  95. package/src/components/common/chat/ChatModelMenu.tsx +1 -1
  96. package/src/components/common/chat/ChatThinkingIndicator.tsx +1 -1
  97. package/src/components/common/chat/ChatThread.tsx +2 -1
  98. package/src/components/common/chat/ChatToolRow.tsx +2 -2
  99. package/src/components/common/chat/ChatUserBubble.tsx +1 -1
  100. package/src/components/common/connections/ConnectionSetup.tsx +6 -6
  101. package/src/components/common/containers/AppFrame.test.tsx +37 -36
  102. package/src/components/common/containers/AppFrame.tsx +15 -0
  103. package/src/components/common/containers/AppHeader.tsx +6 -3
  104. package/src/components/common/containers/SurfacePanel.tsx +1 -0
  105. package/src/components/common/containers/useOpacityPresence.ts +10 -15
  106. package/src/components/common/context/ContextSelector.tsx +10 -10
  107. package/src/components/common/desk/CreationDesk.tsx +23 -11
  108. package/src/components/common/desk/DailyBrief.tsx +18 -7
  109. package/src/components/common/desk/DeskCard.tsx +11 -6
  110. package/src/components/common/dropdown/MenuButtonDropdown.tsx +58 -6
  111. package/src/components/common/dropdown/MenuDropdownItem.tsx +23 -3
  112. package/src/components/common/dropdown/MenuPanel.tsx +8 -8
  113. package/src/components/common/dropdown/SelectMenu.tsx +8 -3
  114. package/src/components/common/dropdown/menuTypes.ts +2 -1
  115. package/src/components/common/evidence/StructuredEvidenceView.tsx +9 -5
  116. package/src/components/common/feedback/Badge.tsx +19 -5
  117. package/src/components/common/feedback/CapabilityPills.tsx +1 -1
  118. package/src/components/common/feedback/InfoHint.tsx +2 -2
  119. package/src/components/common/feedback/PlatformChip.tsx +9 -9
  120. package/src/components/common/feedback/QuietPill.tsx +5 -8
  121. package/src/components/common/feedback/WorkProgressPanel.tsx +14 -14
  122. package/src/components/common/files/FileTable.tsx +8 -2
  123. package/src/components/common/inputs/Checkbox.tsx +1 -1
  124. package/src/components/common/inputs/EditableSecretField.tsx +1 -3
  125. package/src/components/common/inputs/InlineComposer.tsx +2 -2
  126. package/src/components/common/inputs/PaletteDropdown.tsx +33 -23
  127. package/src/components/common/inputs/SurfacePalettePicker.tsx +1 -1
  128. package/src/components/common/inputs/ToggleSwitch.tsx +2 -2
  129. package/src/components/common/inputs/WorkspacePicker.tsx +3 -3
  130. package/src/components/common/lists/listRowStyles.ts +4 -2
  131. package/src/components/common/lists/quiet-ledger/index.ts +1 -4
  132. package/src/components/common/lists/reorderable/DragHandle.tsx +1 -1
  133. package/src/components/common/lists/reorderable/ReorderableSections.tsx +2 -1
  134. package/src/components/common/media/ImageReferencePicker.tsx +22 -14
  135. package/src/components/common/narrative/NarrativeMention.tsx +15 -9
  136. package/src/components/common/navigation/NavigationCardRow.tsx +2 -2
  137. package/src/components/common/navigation/UnderlineTabs.tsx +1 -0
  138. package/src/components/common/overlays/Modal.tsx +52 -3
  139. package/src/components/common/overlays/ObjectActionStrip.tsx +2 -2
  140. package/src/components/common/people/AutoUpdateReviewList.tsx +2 -2
  141. package/src/components/common/people/EntityList.tsx +7 -3
  142. package/src/components/common/people/EntityPortrait.tsx +6 -1
  143. package/src/components/common/people/LinkedDossierList.tsx +3 -1
  144. package/src/components/common/people/RelationshipMap.tsx +3 -9
  145. package/src/components/common/research/EvidenceDossier.tsx +24 -20
  146. package/src/components/common/tiles/CatalogCard.tsx +1 -1
  147. package/src/components/credentials/CredentialsPanel.tsx +2 -6
  148. package/src/components/data/DataChart.tsx +119 -94
  149. package/src/components/data/dataTable.ts +4 -1
  150. package/src/components/editor/DocumentAppChrome.tsx +172 -0
  151. package/src/components/editor/EditorCommentPromptDialog.tsx +1 -1
  152. package/src/components/editor/EditorLinkPromptDialog.tsx +1 -1
  153. package/src/components/print-design/PrintDesignPanel.test.tsx +8 -6
  154. package/src/components/print-design/PrintDesignPanel.tsx +18 -25
  155. package/src/components/proofing/PagedProofDialog.tsx +17 -4
  156. package/src/editor/EditorViewModeToggle.tsx +6 -2
  157. package/src/editor/index.ts +6 -0
  158. package/src/theme/ThemeProvider.tsx +5 -2
  159. package/src/theme/appAccents.test.ts +51 -0
  160. package/src/theme/appAccents.ts +151 -88
  161. package/src/theme/appIdentityCss.mjs +256 -0
  162. package/src/theme/appIdentityCss.ts +256 -0
  163. package/src/theme/composePlatformTheme.test.ts +43 -14
  164. package/src/theme/platformFont.d.mts +2 -2
  165. package/src/theme/platformFont.mjs +4 -3
  166. package/src/theme/reportsShellChromeSelectors.ts +14 -132
  167. package/src/theme/surfaceCss.mjs +37 -0
  168. package/src/theme/surfaceCss.ts +37 -0
  169. package/src/theme/surfacePalettes.ts +120 -79
  170. package/src/theme/surfaceRoleSelectors.ts +135 -71
  171. package/src/theme/themes/dark.ts +44 -43
  172. package/src/theme/themes/light.ts +40 -38
  173. package/src/theme/themes/palette.ts +32 -30
  174. package/src/theme/themes/shared.ts +17 -17
  175. package/src/theme/utils/GlobalStyles.ts +10 -6
  176. package/src/theme/utils/appFrameDocumentStyles.mjs +6 -1
  177. package/src/theme/utils/cssVariables.ts +169 -0
  178. package/src/writing/DraftAssistantDialog.tsx +85 -85
  179. package/src/writing/WritingStyleManager.tsx +6 -3
  180. package/src/writing/draftTextWithAgent.ts +47 -50
  181. package/src/writing/styleStore.ts +4 -3
  182. package/src/writing/writingStyle.test.ts +8 -2
  183. package/src/writing/writingStyle.ts +19 -8
@@ -223,9 +223,14 @@ const StyledItem = styled.button<{
223
223
  min-height: var(--platform-select-menu-item-height, 30px);
224
224
  padding: var(--platform-select-menu-item-padding, 5px 8px);
225
225
  border: none;
226
- border-radius: var(--platform-select-menu-item-radius, var(--platform-radius-sm, 6px));
226
+ border-radius: var(
227
+ --platform-select-menu-item-radius,
228
+ var(--platform-radius-sm)
229
+ );
227
230
  background: ${({ $selected }) =>
228
- $selected ? 'var(--platform-colors-surface-hover, #f4f6f8)' : 'transparent'};
231
+ $selected
232
+ ? 'var(--platform-colors-surface-hover, #f0ede7)'
233
+ : 'transparent'};
229
234
  color: ${({ $tone }) =>
230
235
  $tone === 'danger'
231
236
  ? 'var(--platform-colors-text-danger, #b42318)'
@@ -241,6 +246,6 @@ const StyledItem = styled.button<{
241
246
  opacity: ${({ disabled }) => (disabled ? 0.45 : 1)};
242
247
 
243
248
  &:hover:not(:disabled) {
244
- background: var(--platform-colors-surface-hover, #f4f6f8);
249
+ background: var(--platform-colors-surface-hover, #f0ede7);
245
250
  }
246
251
  `
@@ -1,4 +1,4 @@
1
- import type { RefObject } from 'react'
1
+ import type { ReactNode, RefObject } from 'react'
2
2
  import type { MenuWidthMode } from './menuViewportPosition.js'
3
3
  import type { MenuPlacement } from './useMenuAnchorPosition.js'
4
4
 
@@ -10,6 +10,7 @@ export interface MenuActionItem {
10
10
  type?: 'action'
11
11
  id: string
12
12
  label: string
13
+ icon?: ReactNode
13
14
  disabled?: boolean
14
15
  tone?: MenuActionTone
15
16
  /** Display only until shell wires shortcuts */
@@ -72,7 +72,7 @@ const MetricCard = styled.div`
72
72
  min-width: 0;
73
73
  padding: 10px 12px;
74
74
  border: 1px solid currentColor;
75
- border-radius: 6px;
75
+ border-radius: var(--platform-radius-sm, 0px);
76
76
  background: color-mix(in srgb, currentColor 7%, transparent);
77
77
  `
78
78
 
@@ -106,7 +106,7 @@ const ChartRow = styled.div`
106
106
  const ChartTrack = styled.div`
107
107
  height: 8px;
108
108
  overflow: hidden;
109
- border-radius: 999px;
109
+ border-radius: var(--platform-radius-sm);
110
110
  background: color-mix(in srgb, currentColor 16%, transparent);
111
111
  `
112
112
 
@@ -150,7 +150,7 @@ const ClaimProofCell = styled.div`
150
150
  min-width: 0;
151
151
  padding: 10px;
152
152
  border: 1px solid color-mix(in srgb, currentColor 20%, transparent);
153
- border-radius: 6px;
153
+ border-radius: var(--platform-radius-sm, 0px);
154
154
  background: color-mix(in srgb, currentColor 6%, transparent);
155
155
  font-size: 0.56em;
156
156
  line-height: 1.2;
@@ -169,8 +169,12 @@ const FigureCallout = styled.div<{
169
169
  min-height: ${({ $h }) => `${$h * 100}%`};
170
170
  padding: 5px 7px;
171
171
  border: 1px solid currentColor;
172
- border-radius: 4px;
173
- background: color-mix(in srgb, var(--slides-panel, #ffffff) 82%, transparent);
172
+ border-radius: var(--platform-radius-sm, 0px);
173
+ background: color-mix(
174
+ in srgb,
175
+ var(--slides-panel, var(--platform-colors-surface, #ffffff)) 82%,
176
+ transparent
177
+ );
174
178
  color: inherit;
175
179
  font-size: 10px;
176
180
  font-weight: 720;
@@ -11,16 +11,26 @@ export interface BadgeProps {
11
11
  //#region styled-components
12
12
 
13
13
  const StyledBadge = styled.span<{ $tone: BadgeTone }>`
14
+ display: inline-flex;
15
+ align-items: center;
16
+ min-height: 22px;
14
17
  padding: 2px var(--platform-spacing-sm);
15
- border-radius: var(--platform-radius-full);
16
- font-size: var(--platform-typography-font-size-sm);
18
+ border: 1px solid
19
+ ${({ $tone }) =>
20
+ $tone === 'accent'
21
+ ? 'var(--platform-colors-semantic-green-border)'
22
+ : 'var(--platform-colors-border)'};
23
+ border-radius: var(--platform-radius-full, 999px);
24
+ font-family: var(--platform-typography-font-family-mono);
25
+ font-size: var(--platform-typography-font-size-xs);
26
+ letter-spacing: 0.06em;
17
27
  background: ${({ $tone }) =>
18
28
  $tone === 'accent'
19
- ? 'var(--platform-colors-accent-muted)'
29
+ ? 'var(--platform-colors-semantic-green-muted)'
20
30
  : 'var(--platform-colors-surface-hover)'};
21
31
  color: ${({ $tone }) =>
22
32
  $tone === 'accent'
23
- ? 'color-mix(in srgb, var(--platform-colors-accent) 62%, var(--platform-colors-text) 38%)'
33
+ ? 'var(--platform-colors-semantic-green-text)'
24
34
  : 'var(--platform-colors-text-secondary)'};
25
35
  `
26
36
 
@@ -31,5 +41,9 @@ export function Badge({
31
41
  className,
32
42
  children,
33
43
  }: BadgeProps): React.ReactElement {
34
- return <StyledBadge className={className} $tone={tone}>{children}</StyledBadge>
44
+ return (
45
+ <StyledBadge className={className} $tone={tone}>
46
+ {children}
47
+ </StyledBadge>
48
+ )
35
49
  }
@@ -15,7 +15,7 @@ const StyledList = styled.div`
15
15
 
16
16
  const StyledPill = styled.span`
17
17
  padding: 2px var(--platform-spacing-sm);
18
- border-radius: var(--platform-radius-full);
18
+ border-radius: var(--platform-radius-sm);
19
19
  background: var(--platform-colors-surface-active);
20
20
  color: var(--platform-colors-text-secondary);
21
21
  font-size: var(--platform-typography-font-size-sm);
@@ -23,7 +23,7 @@ const StyledWrap = styled.span`
23
23
  const StyledButton = styled.button`
24
24
  width: 26px;
25
25
  height: 26px;
26
- border: 1px solid var(--platform-colors-border, #e1e6ed);
26
+ border: 1px solid var(--platform-colors-border, #e7e4dd);
27
27
  border-radius: var(--platform-radius-full, 999px);
28
28
  background: var(--platform-colors-surface, #ffffff);
29
29
  color: var(--platform-colors-text-secondary, #6d7680);
@@ -44,7 +44,7 @@ const StyledPopover = styled.div<{ $align: 'left' | 'right' }>`
44
44
  background: var(--platform-colors-elevated, #ffffff);
45
45
  box-shadow: var(--platform-shadow-md, 0 18px 44px rgb(38 46 55 / 16%));
46
46
  padding: 12px 14px;
47
- color: var(--platform-colors-text, #2e3338);
47
+ color: var(--platform-colors-text, #1c1a17);
48
48
  opacity: 0;
49
49
  pointer-events: none;
50
50
  transform: translateY(-4px);
@@ -42,14 +42,14 @@ const toneMap: Record<
42
42
  border: 'var(--platform-colors-semantic-red-border, #ebcac8)',
43
43
  },
44
44
  neutral: {
45
- bg: 'var(--platform-colors-surface-hover, #e7eaee)',
46
- fg: 'var(--platform-colors-text-secondary, #6d7680)',
47
- border: 'var(--platform-colors-border, #d9dee5)',
45
+ bg: 'var(--platform-colors-surface-hover, #f0ede7)',
46
+ fg: 'var(--platform-colors-text-secondary, #6b665e)',
47
+ border: 'var(--platform-colors-border, #e7e4dd)',
48
48
  },
49
49
  meta: {
50
- bg: '#f8f9fb',
51
- fg: 'var(--platform-colors-text-secondary, #6d7680)',
52
- border: 'var(--platform-colors-border-soft, #e5e8ed)',
50
+ bg: 'var(--platform-colors-surface-subtle, #fbfbfc)',
51
+ fg: 'var(--platform-colors-text-secondary, #6b665e)',
52
+ border: 'var(--platform-colors-border-soft, #f0ede7)',
53
53
  },
54
54
  }
55
55
 
@@ -61,7 +61,7 @@ const StyledChip = styled.span<{ $tone: PlatformChipTone }>`
61
61
  min-height: 20px;
62
62
  padding: 0 8px;
63
63
  border: 1px solid ${({ $tone }) => toneMap[$tone].border};
64
- border-radius: ${({ $tone }) => ($tone === 'meta' ? '6px' : '0')};
64
+ border-radius: var(--platform-radius-full, 999px);
65
65
  background: ${({ $tone }) => toneMap[$tone].bg};
66
66
  color: ${({ $tone }) => toneMap[$tone].fg};
67
67
  font-size: var(--platform-typography-font-size-sm);
@@ -76,7 +76,7 @@ const StyledChip = styled.span<{ $tone: PlatformChipTone }>`
76
76
  `
77
77
 
78
78
  const StyledMetaLabel = styled.span`
79
- color: #8b939d;
79
+ color: var(--platform-colors-text-tertiary, #8f897f);
80
80
  font-size: 10px;
81
81
  font-weight: var(--platform-typography-font-weight-bold);
82
82
  letter-spacing: 0.04em;
@@ -84,7 +84,7 @@ const StyledMetaLabel = styled.span`
84
84
  `
85
85
 
86
86
  const StyledMetaValue = styled.span`
87
- color: #606a75;
87
+ color: var(--platform-colors-text-secondary, #6b665e);
88
88
  `
89
89
 
90
90
  //#endregion
@@ -1,12 +1,7 @@
1
1
  import type { ReactNode } from 'react'
2
2
  import { styled } from 'styled-components'
3
3
 
4
- export type QuietPillTone =
5
- | 'accent'
6
- | 'danger'
7
- | 'gold'
8
- | 'neutral'
9
- | 'success'
4
+ export type QuietPillTone = 'accent' | 'danger' | 'gold' | 'neutral' | 'success'
10
5
 
11
6
  export interface QuietPillProps {
12
7
  tone?: QuietPillTone
@@ -34,7 +29,7 @@ const StyledPill = styled.span<{ $tone: QuietPillTone }>`
34
29
  : $tone === 'success'
35
30
  ? 'rgb(from var(--platform-colors-success) r g b / 42%)'
36
31
  : 'var(--platform-colors-border)'};
37
- border-radius: var(--platform-radius-full);
32
+ border-radius: var(--platform-radius-full, 999px);
38
33
  background: ${({ $tone }) =>
39
34
  $tone === 'accent'
40
35
  ? 'rgb(from var(--quiet-accent, var(--platform-colors-accent)) r g b / 10%)'
@@ -52,7 +47,9 @@ const StyledPill = styled.span<{ $tone: QuietPillTone }>`
52
47
  ? 'var(--platform-colors-success)'
53
48
  : 'var(--platform-colors-text-secondary)'};
54
49
  font-size: var(--platform-typography-font-size-xs);
55
- font-weight: 650;
50
+ font-family: var(--platform-typography-font-family-mono);
51
+ font-weight: var(--platform-typography-font-weight-medium);
52
+ letter-spacing: 0.06em;
56
53
  transition: border-color var(--platform-transition-base),
57
54
  background var(--platform-transition-base),
58
55
  color var(--platform-transition-base),
@@ -15,9 +15,9 @@ export interface WorkProgressPanelProps {
15
15
  }
16
16
 
17
17
  const Panel = styled.div`
18
- border: 1px solid rgba(210, 217, 226, 0.92);
19
- border-radius: 8px;
20
- background: linear-gradient(180deg, #fff 0%, #f8fafc 100%);
18
+ border: 1px solid var(--platform-colors-border);
19
+ border-radius: var(--platform-radius-sm);
20
+ background: var(--platform-colors-surface);
21
21
  padding: 22px;
22
22
  display: grid;
23
23
  gap: 18px;
@@ -31,7 +31,7 @@ const Top = styled.div`
31
31
  `
32
32
 
33
33
  const Title = styled.div`
34
- color: #2e3338;
34
+ color: var(--platform-colors-text);
35
35
  font-size: 18px;
36
36
  font-weight: 800;
37
37
  line-height: 1.2;
@@ -39,7 +39,7 @@ const Title = styled.div`
39
39
 
40
40
  const Note = styled.div`
41
41
  margin-top: 5px;
42
- color: #65707d;
42
+ color: var(--platform-colors-text-secondary);
43
43
  font-size: 13px;
44
44
  line-height: 1.45;
45
45
  `
@@ -48,9 +48,9 @@ const Pulse = styled.div`
48
48
  width: 42px;
49
49
  height: 42px;
50
50
  flex: 0 0 auto;
51
- border-radius: 50%;
52
- border: 2px solid #d7dee7;
53
- border-top-color: #5f77a4;
51
+ border-radius: var(--platform-radius-sm);
52
+ border: 2px solid var(--platform-colors-border);
53
+ border-top-color: var(--platform-colors-accent);
54
54
  animation: work-progress-spin 1.1s linear infinite;
55
55
 
56
56
  @keyframes work-progress-spin {
@@ -74,9 +74,9 @@ const Metrics = styled.div<{ $count: number }>`
74
74
  `
75
75
 
76
76
  const Metric = styled.div`
77
- border-top: 1px solid #e2e7ee;
77
+ border-top: 1px solid var(--platform-colors-border);
78
78
  padding-top: 9px;
79
- color: #8a94a1;
79
+ color: var(--platform-colors-text-tertiary);
80
80
  font-size: 11px;
81
81
  font-weight: 800;
82
82
  letter-spacing: 0.05em;
@@ -84,7 +84,7 @@ const Metric = styled.div`
84
84
 
85
85
  strong {
86
86
  display: block;
87
- color: #2e3338;
87
+ color: var(--platform-colors-text);
88
88
  font-size: 22px;
89
89
  line-height: 1;
90
90
  letter-spacing: 0;
@@ -94,7 +94,7 @@ const Metric = styled.div`
94
94
  const Activity = styled.div`
95
95
  display: grid;
96
96
  gap: 7px;
97
- color: #65707d;
97
+ color: var(--platform-colors-text-secondary);
98
98
  font-size: 12px;
99
99
  line-height: 1.35;
100
100
  `
@@ -109,8 +109,8 @@ const ActivityItem = styled.div`
109
109
  content: '';
110
110
  width: 6px;
111
111
  height: 6px;
112
- border-radius: 999px;
113
- background: #7b91b8;
112
+ border-radius: 0;
113
+ background: var(--platform-colors-accent);
114
114
  transform: translateY(-1px);
115
115
  }
116
116
  `
@@ -29,7 +29,7 @@ export interface FileTableProps {
29
29
  const StyledFileTable = styled.div`
30
30
  min-width: 0;
31
31
  border: 1px solid var(--platform-colors-border);
32
- border-radius: 8px;
32
+ border-radius: var(--platform-radius-sm);
33
33
  background: var(--platform-colors-surface);
34
34
  overflow: hidden;
35
35
  `
@@ -172,7 +172,13 @@ function formatBytes(byteLength?: number): string {
172
172
 
173
173
  function formatDate(value?: string): string {
174
174
  if (!value) return '—'
175
- return new Date(value).toLocaleDateString()
175
+ const date = new Date(value)
176
+ if (Number.isNaN(date.getTime())) return '—'
177
+ return new Intl.DateTimeFormat('en-US', {
178
+ month: 'short',
179
+ day: 'numeric',
180
+ year: 'numeric',
181
+ }).format(date)
176
182
  }
177
183
 
178
184
  export function FileTable({
@@ -8,6 +8,6 @@ export const Checkbox = styled.input.attrs({ type: 'checkbox' })`
8
8
  width: 14px;
9
9
  height: 14px;
10
10
  margin: 0;
11
- accent-color: var(--platform-colors-accent, #525a65);
11
+ accent-color: var(--platform-colors-accent, #1c1a17);
12
12
  cursor: pointer;
13
13
  `
@@ -245,9 +245,7 @@ export function EditableSecretField({
245
245
  size="sm"
246
246
  variant="dangerHover"
247
247
  disabled={locked}
248
- aria-label={
249
- ariaLabel ? `Remove ${ariaLabel}` : 'Remove key'
250
- }
248
+ aria-label={ariaLabel ? `Remove ${ariaLabel}` : 'Remove key'}
251
249
  onClick={handleDelete}
252
250
  >
253
251
  <PlatformIcon icon={Trash2} size={14} strokeWidth={1.9} />
@@ -106,7 +106,7 @@ export const InlineSuggestions = styled.div`
106
106
  right: 0;
107
107
  overflow: hidden;
108
108
  border: 1px solid var(--platform-colors-divider);
109
- border-radius: 8px;
109
+ border-radius: var(--platform-radius-sm);
110
110
  background: var(--platform-colors-surface);
111
111
  box-shadow: var(--platform-shadow-lg, 0 12px 24px rgb(0 0 0 / 14%));
112
112
  `
@@ -172,7 +172,7 @@ const ComposerInput = styled.input`
172
172
  `
173
173
 
174
174
  const GhostAction = styled(CleanButton)`
175
- border-radius: 999px;
175
+ border-radius: var(--platform-radius-sm);
176
176
  color: var(--platform-colors-text-secondary);
177
177
  font-family: var(--platform-typography-font-family, inherit);
178
178
  font-size: var(--platform-typography-font-size-xs, 11px);
@@ -62,12 +62,17 @@ const StyledTrigger = styled.button<{ $variant: 'field' | 'circle' }>`
62
62
  ? '28px'
63
63
  : 'var(--platform-palette-dropdown-height, 34px)'};
64
64
  padding: ${({ $variant }) => ($variant === 'circle' ? '0' : '0 10px')};
65
- border: 1px solid var(--platform-colors-border);
65
+ border: 1px solid
66
+ ${({ $variant }) =>
67
+ $variant === 'circle' ? 'transparent' : 'var(--platform-colors-border)'};
66
68
  border-radius: ${({ $variant }) =>
67
69
  $variant === 'circle'
68
- ? '999px'
70
+ ? 'var(--platform-radius-sm)'
69
71
  : 'var(--platform-palette-dropdown-radius, 10px)'};
70
- background: var(--platform-colors-surface, #ffffff);
72
+ background: ${({ $variant }) =>
73
+ $variant === 'circle'
74
+ ? 'transparent'
75
+ : 'var(--platform-colors-surface, #ffffff)'};
71
76
  color: var(--platform-colors-text, #25292f);
72
77
  font: inherit;
73
78
  font-size: 12px;
@@ -76,8 +81,11 @@ const StyledTrigger = styled.button<{ $variant: 'field' | 'circle' }>`
76
81
 
77
82
  &:hover:not(:disabled),
78
83
  &[aria-expanded='true'] {
79
- border-color: var(--platform-colors-text-secondary, #68707a);
80
- background: var(--platform-colors-surface-hover, #f4f6f8);
84
+ border-color: ${({ $variant }) =>
85
+ $variant === 'circle'
86
+ ? 'transparent'
87
+ : 'var(--platform-colors-text-secondary, #68707a)'};
88
+ background: var(--platform-colors-surface-hover, #f0ede7);
81
89
  }
82
90
 
83
91
  &:disabled {
@@ -106,7 +114,7 @@ const StyledSwatch = styled.span<{ $color: string; $large?: boolean }>`
106
114
  height: ${({ $large }) => ($large ? '13px' : '10px')};
107
115
  margin-left: ${({ $large }) => ($large ? '-1px' : '-2px')};
108
116
  border: 1px solid rgba(255, 255, 255, 0.76);
109
- border-radius: 999px;
117
+ border-radius: var(--platform-radius-2xs, 0);
110
118
  background: ${({ $color }) => $color};
111
119
  box-shadow: 0 0 0 1px rgba(46, 51, 56, 0.08);
112
120
 
@@ -119,10 +127,10 @@ const StyledPrimarySwatch = styled.span<{ $color: string }>`
119
127
  display: block;
120
128
  width: 16px;
121
129
  height: 16px;
122
- border: 1px solid rgb(255 255 255 / 78%);
123
- border-radius: 999px;
130
+ border: 1px solid var(--platform-colors-border);
131
+ border-radius: var(--platform-radius-2xs, 0);
124
132
  background: ${({ $color }) => $color};
125
- box-shadow: 0 0 0 1px rgb(46 51 56 / 16%), inset 0 0 0 1px rgb(0 0 0 / 4%);
133
+ box-shadow: inset 0 0 0 1px rgb(255 255 255 / 36%);
126
134
  `
127
135
 
128
136
  const StyledCaret = styled.span`
@@ -139,9 +147,11 @@ const StyledOption = styled.button<{ $selected?: boolean }>`
139
147
  min-height: 34px;
140
148
  padding: 7px 8px;
141
149
  border: 0;
142
- border-radius: 8px;
150
+ border-radius: var(--platform-radius-sm);
143
151
  background: ${({ $selected }) =>
144
- $selected ? 'var(--platform-colors-surface-hover, #f4f6f8)' : 'transparent'};
152
+ $selected
153
+ ? 'var(--platform-colors-surface-hover, #f0ede7)'
154
+ : 'transparent'};
145
155
  color: var(--platform-colors-text, #25292f);
146
156
  font: inherit;
147
157
  font-size: 12px;
@@ -149,7 +159,7 @@ const StyledOption = styled.button<{ $selected?: boolean }>`
149
159
  cursor: pointer;
150
160
 
151
161
  &:hover {
152
- background: var(--platform-colors-surface-hover, #f4f6f8);
162
+ background: var(--platform-colors-surface-hover, #f0ede7);
153
163
  }
154
164
  `
155
165
 
@@ -164,7 +174,7 @@ const StyledOptionText = styled.span`
164
174
  const StyledDivider = styled.div`
165
175
  height: 1px;
166
176
  margin: 6px 2px;
167
- background: var(--platform-colors-border, #d8dde5);
177
+ background: var(--platform-colors-border, #e7e4dd);
168
178
  `
169
179
 
170
180
  const StyledCustomToggle = styled.button`
@@ -175,7 +185,7 @@ const StyledCustomToggle = styled.button`
175
185
  height: 32px;
176
186
  padding: 0 8px;
177
187
  border: 0;
178
- border-radius: 8px;
188
+ border-radius: var(--platform-radius-sm);
179
189
  background: transparent;
180
190
  color: var(--platform-colors-text-secondary, #68707a);
181
191
  font: inherit;
@@ -184,7 +194,7 @@ const StyledCustomToggle = styled.button`
184
194
  cursor: pointer;
185
195
 
186
196
  &:hover {
187
- background: var(--platform-colors-surface-hover, #f4f6f8);
197
+ background: var(--platform-colors-surface-hover, #f0ede7);
188
198
  color: var(--platform-colors-text, #25292f);
189
199
  }
190
200
  `
@@ -201,8 +211,8 @@ const StyledNameInput = styled.input`
201
211
  height: 32px;
202
212
  min-width: 0;
203
213
  padding: 0 9px;
204
- border: 1px solid var(--platform-colors-border, #d8dde5);
205
- border-radius: 8px;
214
+ border: 1px solid var(--platform-colors-border, #e7e4dd);
215
+ border-radius: var(--platform-radius-sm);
206
216
  background: var(--platform-colors-surface, #ffffff);
207
217
  color: var(--platform-colors-text, #25292f);
208
218
  font: inherit;
@@ -225,8 +235,8 @@ const StyledColorInput = styled.input`
225
235
  height: 28px;
226
236
  min-width: 0;
227
237
  padding: 2px;
228
- border: 1px solid var(--platform-colors-border, #d8dde5);
229
- border-radius: 8px;
238
+ border: 1px solid var(--platform-colors-border, #e7e4dd);
239
+ border-radius: var(--platform-radius-sm);
230
240
  background: var(--platform-colors-surface, #ffffff);
231
241
  cursor: pointer;
232
242
  `
@@ -235,8 +245,8 @@ const StyledSubmit = styled.button`
235
245
  justify-self: end;
236
246
  height: 30px;
237
247
  padding: 0 10px;
238
- border: 1px solid var(--platform-colors-border, #d8dde5);
239
- border-radius: 8px;
248
+ border: 1px solid var(--platform-colors-border, #e7e4dd);
249
+ border-radius: var(--platform-radius-sm);
240
250
  background: var(--platform-colors-surface, #ffffff);
241
251
  color: var(--platform-colors-text, #25292f);
242
252
  font: inherit;
@@ -245,7 +255,7 @@ const StyledSubmit = styled.button`
245
255
  cursor: pointer;
246
256
 
247
257
  &:hover:not(:disabled) {
248
- background: var(--platform-colors-surface-hover, #f4f6f8);
258
+ background: var(--platform-colors-surface-hover, #f0ede7);
249
259
  }
250
260
 
251
261
  &:disabled {
@@ -288,7 +298,7 @@ export function PaletteDropdown({
288
298
  () => palettes.find(palette => palette.id === value) ?? palettes[0],
289
299
  [palettes, value],
290
300
  )
291
- const primaryColor = selected?.colors[1] ?? selected?.colors[0] ?? '#2e3338'
301
+ const primaryColor = selected?.colors[1] ?? selected?.colors[0] ?? '#1c1a17'
292
302
 
293
303
  const close = useCallback(() => {
294
304
  closeMenu()
@@ -8,7 +8,7 @@ import {
8
8
  } from '../../../theme/surfacePalettes.js'
9
9
  import { PaletteCirclePicker } from './PaletteCirclePicker.js'
10
10
 
11
- const DEFAULT_SWATCHES = ['#2e3338', '#737b86', '#ffffff', '#f5f3ef']
11
+ const DEFAULT_SWATCHES = ['#1b1b1e', '#3a3a3e', '#ffffff', '#fbfbfc']
12
12
 
13
13
  export interface SurfacePalettePickerProps {
14
14
  label?: string
@@ -30,7 +30,7 @@ const StyledTrack = styled.span<{ $checked: boolean; $disabled?: boolean }>`
30
30
  $checked
31
31
  ? 'var(--platform-colors-accent)'
32
32
  : 'var(--platform-colors-border)'};
33
- border-radius: 999px;
33
+ border-radius: var(--platform-radius-sm);
34
34
  background: ${({ $checked }) =>
35
35
  $checked
36
36
  ? 'var(--platform-colors-accent)'
@@ -45,7 +45,7 @@ const StyledTrack = styled.span<{ $checked: boolean; $disabled?: boolean }>`
45
45
  left: ${({ $checked }) => ($checked ? '14px' : '2px')};
46
46
  width: 12px;
47
47
  height: 12px;
48
- border-radius: 50%;
48
+ border-radius: var(--platform-radius-2xs, 0);
49
49
  background: var(--platform-colors-surface);
50
50
  box-shadow: 0 1px 2px rgb(from var(--platform-colors-text) r g b / 0.22);
51
51
  transition: left 120ms ease;
@@ -60,7 +60,7 @@ const StyledControl = styled.div<{ $open: boolean }>`
60
60
  $open
61
61
  ? 'var(--platform-colors-border-strong)'
62
62
  : 'var(--platform-colors-border)'};
63
- border-radius: 9px;
63
+ border-radius: var(--platform-radius-sm, 0px);
64
64
  background: var(--platform-colors-surface);
65
65
  color: var(--platform-colors-text);
66
66
  `
@@ -101,7 +101,7 @@ const StyledOption = styled.button<{ $active?: boolean }>`
101
101
  min-height: 32px;
102
102
  padding: 6px 8px;
103
103
  border: 0;
104
- border-radius: 7px;
104
+ border-radius: var(--platform-radius-sm, 0px);
105
105
  background: ${({ $active }) =>
106
106
  $active ? 'var(--platform-colors-surface-active)' : 'transparent'};
107
107
  color: var(--platform-colors-text);
@@ -125,7 +125,7 @@ const StyledOptionName = styled.span`
125
125
  const StyledOptionMeta = styled.span`
126
126
  min-width: 22px;
127
127
  padding: 1px 7px;
128
- border-radius: var(--platform-radius-full);
128
+ border-radius: var(--platform-radius-sm);
129
129
  background: var(--platform-colors-bg);
130
130
  color: var(--platform-colors-text-secondary);
131
131
  font-size: var(--platform-typography-font-size-xs);
@@ -12,9 +12,11 @@ export const listRowBaseCss = css<{ $active?: boolean }>`
12
12
  padding: var(--platform-spacing-xs) var(--platform-spacing-sm);
13
13
  text-align: left;
14
14
  color: ${({ $active }) =>
15
- $active ? 'var(--platform-colors-accent)' : 'var(--platform-colors-text)'};
15
+ $active ? 'var(--app-text, var(--platform-colors-accent))' : 'var(--platform-colors-text)'};
16
16
  background: ${({ $active }) =>
17
- $active ? 'var(--platform-colors-accent-muted)' : 'transparent'};
17
+ $active ? 'var(--app-bg, var(--platform-colors-accent-muted))' : 'transparent'};
18
+ border-left: 3px solid
19
+ ${({ $active }) => ($active ? 'var(--app-acc, var(--platform-colors-accent))' : 'transparent')};
18
20
  `
19
21
 
20
22
  export const ListRow = styled.div<{ $active?: boolean }>`
@@ -3,7 +3,4 @@ export {
3
3
  type QuietActivityListItem,
4
4
  type QuietActivityListProps,
5
5
  } from './QuietActivityList.js'
6
- export {
7
- QuietLedgerRow,
8
- type QuietLedgerRowProps,
9
- } from './QuietLedgerRow.js'
6
+ export { QuietLedgerRow, type QuietLedgerRowProps } from './QuietLedgerRow.js'
@@ -26,7 +26,7 @@ const StyledDragHandle = styled.span`
26
26
  const StyledGripDot = styled.span`
27
27
  width: 3px;
28
28
  height: 3px;
29
- border-radius: 999px;
29
+ border-radius: 0;
30
30
  background: currentColor;
31
31
  `
32
32
 
@@ -68,7 +68,8 @@ const StyledEmpty = styled.li<{
68
68
  $active?: boolean
69
69
  $density: ReorderableSectionsDensity
70
70
  }>`
71
- padding: ${({ $density }) => ($density === 'compact' ? '7px 9px' : '12px 14px')};
71
+ padding: ${({ $density }) =>
72
+ $density === 'compact' ? '7px 9px' : '12px 14px'};
72
73
  border: 1px dashed
73
74
  ${({ $active }) =>
74
75
  $active