@puredesktop/puredesktop-ui-bridge 2.1.6 → 2.1.8

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 (64) hide show
  1. package/package.json +55 -1
  2. package/src/bridge/agentTypes.ts +21 -1
  3. package/src/bridge/collectionImagePaste.ts +19 -1
  4. package/src/bridge/context.mjs +32 -0
  5. package/src/bridge/documents.d.mts +76 -0
  6. package/src/bridge/documents.mjs +40 -0
  7. package/src/bridge/methods.d.mts +23 -0
  8. package/src/bridge/methods.mjs +23 -0
  9. package/src/bridge/pureRender/base.css +44 -0
  10. package/src/bridge/pureRender/document.ts +29 -2
  11. package/src/bridge/pureRender/index.ts +3 -0
  12. package/src/bridge/pureRender/normalize.ts +167 -0
  13. package/src/bridge/pureRender/sanitizeExportBody.test.ts +51 -0
  14. package/src/bridge/pureRender/sanitizeExportBody.ts +61 -0
  15. package/src/bridge/pureRender/styles.ts +125 -5
  16. package/src/bridge/pureRender/theme.test.ts +259 -0
  17. package/src/bridge/pureRender/theme.ts +19 -1
  18. package/src/bridge/pureRender/types.ts +33 -0
  19. package/src/bridge/pureRender/visualLayoutInspection.test.ts +26 -0
  20. package/src/bridge/pureRender/visualLayoutInspection.ts +75 -0
  21. package/src/bridge/react/useDocumentHotkeys.ts +41 -0
  22. package/src/bridge/react/useDocumentLifecycle.tsx +359 -0
  23. package/src/bridge/react/usePlatformAppSettings.test.tsx +105 -0
  24. package/src/bridge/react/usePlatformAppSettings.tsx +104 -0
  25. package/src/bridge/react/usePlatformJsonStore.test.tsx +152 -0
  26. package/src/bridge/react/usePlatformJsonStore.tsx +149 -0
  27. package/src/bridge/storage.d.mts +3 -1
  28. package/src/bridge/storage.test.ts +2 -2
  29. package/src/bridge/types.ts +7 -0
  30. package/src/components/agents/AgentDrawerPanel.tsx +2 -0
  31. package/src/components/agents/AgentMessageList.tsx +6 -1
  32. package/src/components/agents/AgentToolCallCard.tsx +20 -20
  33. package/src/components/agents/ContextPicker.tsx +239 -0
  34. package/src/components/agents/agentPanelStyles.ts +3 -4
  35. package/src/components/agents/agentTypes.ts +2 -0
  36. package/src/components/chrome/WorkspaceTabStrip.tsx +18 -1
  37. package/src/components/chrome/workspaceTabTypes.ts +2 -0
  38. package/src/components/common/containers/AppFrame.test.tsx +4 -4
  39. package/src/components/common/containers/AppFrame.tsx +10 -1
  40. package/src/components/common/containers/AppHeader.tsx +22 -0
  41. package/src/components/common/documents/DocumentHeaderActions.tsx +206 -0
  42. package/src/components/common/documents/DocumentSwitcher.tsx +1176 -0
  43. package/src/components/common/documents/index.ts +8 -0
  44. package/src/components/common/research/EvidenceDossier.tsx +1232 -150
  45. package/src/components/common/research/index.ts +2 -0
  46. package/src/components/print-design/PrintDesignPanel.test.tsx +430 -40
  47. package/src/components/print-design/PrintDesignPanel.tsx +1770 -207
  48. package/src/components/print-design/index.ts +2 -0
  49. package/src/components/print-design/previewContent.test.ts +32 -0
  50. package/src/components/print-design/previewContent.ts +31 -0
  51. package/src/context/buildContextDocument.test.ts +240 -0
  52. package/src/context/buildContextDocument.ts +309 -0
  53. package/src/context/contextAccess.ts +66 -0
  54. package/src/context/contextConfig.ts +72 -0
  55. package/src/context/contextDocument.test.ts +155 -0
  56. package/src/context/contextDocument.ts +300 -0
  57. package/src/context/contextSections.test.ts +88 -0
  58. package/src/context/contextSections.ts +84 -0
  59. package/src/context/htmlToContextMarkdown.test.ts +134 -0
  60. package/src/context/htmlToContextMarkdown.ts +369 -0
  61. package/src/theme/appAccents.test.ts +36 -35
  62. package/src/theme/appAccents.ts +87 -104
  63. package/src/theme/appIdentityCss.mjs +169 -231
  64. package/src/theme/appIdentityCss.ts +213 -233
@@ -2,9 +2,13 @@ import type { PlatformTheme } from './tokens.js'
2
2
 
3
3
  /**
4
4
  * App identity is a chrome-only layer. It is exposed through CSS variables
5
- * (`--app-acc`, `--app-bg`, `--app-text`, `--app-block`) and deliberately
6
- * does not override `--platform-colors-accent`, which belongs to theme/status
7
- * meaning.
5
+ * (`--app-acc`, `--app-bg`, `--app-text`) and deliberately does not override
6
+ * `--platform-colors-accent`, which belongs to theme/status meaning.
7
+ *
8
+ * Every app owns one hue on a 20-step ring (even ~18deg spacing, matched
9
+ * lightness/chroma in oklch). Writing and output apps are included; the
10
+ * `desktop` shell carries indigo. Keep these values in sync with
11
+ * `appIdentityCss.ts`.
8
12
  */
9
13
 
10
14
  export interface DerivedAppAccent {
@@ -12,149 +16,128 @@ export interface DerivedAppAccent {
12
16
  accentHover: string
13
17
  accentMuted: string
14
18
  accentText: string
15
- accentBlock: string
16
19
  }
17
20
 
18
21
  const APP_IDENTITY_ACCENTS: Record<string, DerivedAppAccent> = {
19
22
  teams: {
20
- accent: 'oklch(0.58 0.13 8)',
21
- accentHover: 'oklch(0.40 0.06 8)',
22
- accentMuted: 'oklch(0.955 0.03 8)',
23
- accentText: 'oklch(0.40 0.12 8)',
24
- accentBlock: 'oklch(0.40 0.06 8)',
23
+ accent: 'oklch(0.55 0.125 12)',
24
+ accentHover: 'oklch(0.43 0.12 12)',
25
+ accentMuted: 'oklch(0.955 0.03 12)',
26
+ accentText: 'oklch(0.43 0.12 12)',
25
27
  },
26
28
  vibes: {
27
- accent: 'oklch(0.50 0.14 26)',
28
- accentHover: 'oklch(0.40 0.06 26)',
29
- accentMuted: 'oklch(0.955 0.03 26)',
30
- accentText: 'oklch(0.40 0.12 26)',
31
- accentBlock: 'oklch(0.40 0.06 26)',
29
+ accent: 'oklch(0.55 0.125 30)',
30
+ accentHover: 'oklch(0.43 0.12 30)',
31
+ accentMuted: 'oklch(0.955 0.03 30)',
32
+ accentText: 'oklch(0.43 0.12 30)',
32
33
  },
33
34
  mail: {
34
- accent: 'oklch(0.60 0.12 44)',
35
- accentHover: 'oklch(0.40 0.06 44)',
36
- accentMuted: 'oklch(0.93 0.05 44)',
37
- accentText: 'oklch(0.40 0.12 44)',
38
- accentBlock: 'oklch(0.40 0.06 44)',
35
+ accent: 'oklch(0.55 0.125 48)',
36
+ accentHover: 'oklch(0.43 0.12 48)',
37
+ accentMuted: 'oklch(0.93 0.05 48)',
38
+ accentText: 'oklch(0.43 0.12 48)',
39
39
  },
40
40
  files: {
41
- accent: 'oklch(0.50 0.13 64)',
42
- accentHover: 'oklch(0.40 0.06 64)',
43
- accentMuted: 'oklch(0.955 0.03 64)',
44
- accentText: 'oklch(0.40 0.12 64)',
45
- accentBlock: 'oklch(0.40 0.06 64)',
41
+ accent: 'oklch(0.55 0.125 66)',
42
+ accentHover: 'oklch(0.43 0.12 66)',
43
+ accentMuted: 'oklch(0.955 0.03 66)',
44
+ accentText: 'oklch(0.43 0.12 66)',
46
45
  },
47
46
  slides: {
48
- accent: 'oklch(0.61 0.11 84)',
49
- accentHover: 'oklch(0.40 0.06 84)',
47
+ accent: 'oklch(0.55 0.125 84)',
48
+ accentHover: 'oklch(0.43 0.12 84)',
50
49
  accentMuted: 'oklch(0.955 0.03 84)',
51
- accentText: 'oklch(0.40 0.11 84)',
52
- accentBlock: 'oklch(0.40 0.06 84)',
50
+ accentText: 'oklch(0.43 0.12 84)',
53
51
  },
54
52
  writer: {
55
- accent: 'oklch(0.50 0.12 102)',
56
- accentHover: 'oklch(0.40 0.06 102)',
53
+ accent: 'oklch(0.55 0.125 102)',
54
+ accentHover: 'oklch(0.43 0.12 102)',
57
55
  accentMuted: 'oklch(0.955 0.03 102)',
58
- accentText: 'oklch(0.40 0.12 102)',
59
- accentBlock: 'oklch(0.40 0.06 102)',
56
+ accentText: 'oklch(0.43 0.12 102)',
60
57
  },
61
58
  manuscript: {
62
- accent: 'oklch(0.61 0.12 124)',
63
- accentHover: 'oklch(0.40 0.06 124)',
64
- accentMuted: 'oklch(0.955 0.03 124)',
65
- accentText: 'oklch(0.40 0.12 124)',
66
- accentBlock: 'oklch(0.40 0.06 124)',
59
+ accent: 'oklch(0.55 0.125 120)',
60
+ accentHover: 'oklch(0.43 0.12 120)',
61
+ accentMuted: 'oklch(0.955 0.03 120)',
62
+ accentText: 'oklch(0.43 0.12 120)',
67
63
  },
68
64
  book: {
69
- accent: 'oklch(0.48 0.14 148)',
70
- accentHover: 'oklch(0.40 0.06 148)',
71
- accentMuted: 'oklch(0.955 0.03 148)',
72
- accentText: 'oklch(0.40 0.12 148)',
73
- accentBlock: 'oklch(0.40 0.06 148)',
65
+ accent: 'oklch(0.55 0.125 138)',
66
+ accentHover: 'oklch(0.43 0.12 138)',
67
+ accentMuted: 'oklch(0.955 0.03 138)',
68
+ accentText: 'oklch(0.43 0.12 138)',
74
69
  },
75
70
  reports: {
76
- accent: 'oklch(0.61 0.12 166)',
77
- accentHover: 'oklch(0.40 0.06 166)',
78
- accentMuted: 'oklch(0.955 0.03 166)',
79
- accentText: 'oklch(0.40 0.12 166)',
80
- accentBlock: 'oklch(0.40 0.06 166)',
71
+ accent: 'oklch(0.55 0.125 156)',
72
+ accentHover: 'oklch(0.43 0.12 156)',
73
+ accentMuted: 'oklch(0.955 0.03 156)',
74
+ accentText: 'oklch(0.43 0.12 156)',
81
75
  },
82
76
  chart: {
83
- accent: 'oklch(0.48 0.13 184)',
84
- accentHover: 'oklch(0.40 0.06 184)',
85
- accentMuted: 'oklch(0.955 0.03 184)',
86
- accentText: 'oklch(0.40 0.12 184)',
87
- accentBlock: 'oklch(0.40 0.06 184)',
77
+ accent: 'oklch(0.55 0.125 174)',
78
+ accentHover: 'oklch(0.43 0.12 174)',
79
+ accentMuted: 'oklch(0.955 0.03 174)',
80
+ accentText: 'oklch(0.43 0.12 174)',
88
81
  },
89
82
  knowledge: {
90
- accent: 'oklch(0.46 0.11 198)',
91
- accentHover: 'oklch(0.40 0.06 198)',
92
- accentMuted: 'oklch(0.955 0.03 198)',
93
- accentText: 'oklch(0.40 0.11 198)',
94
- accentBlock: 'oklch(0.40 0.06 198)',
83
+ accent: 'oklch(0.55 0.125 192)',
84
+ accentHover: 'oklch(0.43 0.12 192)',
85
+ accentMuted: 'oklch(0.955 0.03 192)',
86
+ accentText: 'oklch(0.43 0.12 192)',
95
87
  },
96
88
  research: {
97
- accent: 'oklch(0.63 0.12 222)',
98
- accentHover: 'oklch(0.40 0.06 222)',
99
- accentMuted: 'oklch(0.955 0.03 222)',
100
- accentText: 'oklch(0.40 0.12 222)',
101
- accentBlock: 'oklch(0.40 0.06 222)',
89
+ accent: 'oklch(0.55 0.125 210)',
90
+ accentHover: 'oklch(0.43 0.12 210)',
91
+ accentMuted: 'oklch(0.955 0.03 210)',
92
+ accentText: 'oklch(0.43 0.12 210)',
102
93
  },
103
94
  sheets: {
104
- accent: 'oklch(0.50 0.13 244)',
105
- accentHover: 'oklch(0.40 0.06 244)',
106
- accentMuted: 'oklch(0.955 0.03 244)',
107
- accentText: 'oklch(0.40 0.12 244)',
108
- accentBlock: 'oklch(0.40 0.06 244)',
95
+ accent: 'oklch(0.55 0.125 228)',
96
+ accentHover: 'oklch(0.43 0.12 228)',
97
+ accentMuted: 'oklch(0.955 0.03 228)',
98
+ accentText: 'oklch(0.43 0.12 228)',
109
99
  },
110
100
  calendar: {
111
- accent: 'oklch(0.63 0.13 258)',
112
- accentHover: 'oklch(0.40 0.06 258)',
113
- accentMuted: 'oklch(0.955 0.03 258)',
114
- accentText: 'oklch(0.40 0.12 258)',
115
- accentBlock: 'oklch(0.40 0.06 258)',
101
+ accent: 'oklch(0.55 0.125 246)',
102
+ accentHover: 'oklch(0.43 0.12 246)',
103
+ accentMuted: 'oklch(0.955 0.03 246)',
104
+ accentText: 'oklch(0.43 0.12 246)',
116
105
  },
117
106
  desktop: {
118
- accent: 'oklch(0.48 0.13 274)',
119
- accentHover: 'oklch(0.40 0.06 274)',
120
- accentMuted: 'oklch(0.955 0.03 274)',
121
- accentText: 'oklch(0.40 0.12 274)',
122
- accentBlock: 'oklch(0.40 0.06 274)',
123
- },
124
- plan: {
125
- accent: 'oklch(0.61 0.14 290)',
126
- accentHover: 'oklch(0.40 0.06 290)',
127
- accentMuted: 'oklch(0.955 0.03 290)',
128
- accentText: 'oklch(0.40 0.12 290)',
129
- accentBlock: 'oklch(0.40 0.06 290)',
107
+ accent: 'oklch(0.55 0.125 264)',
108
+ accentHover: 'oklch(0.43 0.12 264)',
109
+ accentMuted: 'oklch(0.955 0.03 264)',
110
+ accentText: 'oklch(0.43 0.12 264)',
111
+ },
112
+ whiteboard: {
113
+ accent: 'oklch(0.55 0.125 282)',
114
+ accentHover: 'oklch(0.43 0.12 282)',
115
+ accentMuted: 'oklch(0.955 0.03 282)',
116
+ accentText: 'oklch(0.43 0.12 282)',
130
117
  },
131
118
  review: {
132
- accent: 'oklch(0.50 0.15 308)',
133
- accentHover: 'oklch(0.40 0.06 308)',
134
- accentMuted: 'oklch(0.955 0.03 308)',
135
- accentText: 'oklch(0.40 0.12 308)',
136
- accentBlock: 'oklch(0.40 0.06 308)',
119
+ accent: 'oklch(0.55 0.125 300)',
120
+ accentHover: 'oklch(0.43 0.12 300)',
121
+ accentMuted: 'oklch(0.955 0.03 300)',
122
+ accentText: 'oklch(0.43 0.12 300)',
137
123
  },
138
124
  tasks: {
139
- accent: 'oklch(0.63 0.15 324)',
140
- accentHover: 'oklch(0.40 0.06 324)',
141
- accentMuted: 'oklch(0.955 0.03 324)',
142
- accentText: 'oklch(0.40 0.12 324)',
143
- accentBlock: 'oklch(0.40 0.06 324)',
125
+ accent: 'oklch(0.55 0.125 318)',
126
+ accentHover: 'oklch(0.43 0.12 318)',
127
+ accentMuted: 'oklch(0.955 0.03 318)',
128
+ accentText: 'oklch(0.43 0.12 318)',
144
129
  },
145
130
  assistant: {
146
- accent: 'oklch(0.50 0.15 340)',
147
- accentHover: 'oklch(0.40 0.06 340)',
148
- accentMuted: 'oklch(0.955 0.03 340)',
149
- accentText: 'oklch(0.40 0.12 340)',
150
- accentBlock: 'oklch(0.40 0.06 340)',
131
+ accent: 'oklch(0.55 0.125 336)',
132
+ accentHover: 'oklch(0.43 0.12 336)',
133
+ accentMuted: 'oklch(0.955 0.03 336)',
134
+ accentText: 'oklch(0.43 0.12 336)',
151
135
  },
152
136
  people: {
153
- accent: 'oklch(0.61 0.14 356)',
154
- accentHover: 'oklch(0.40 0.06 356)',
155
- accentMuted: 'oklch(0.955 0.03 356)',
156
- accentText: 'oklch(0.40 0.12 356)',
157
- accentBlock: 'oklch(0.40 0.06 356)',
137
+ accent: 'oklch(0.55 0.125 354)',
138
+ accentHover: 'oklch(0.43 0.12 354)',
139
+ accentMuted: 'oklch(0.955 0.03 354)',
140
+ accentText: 'oklch(0.43 0.12 354)',
158
141
  },
159
142
  }
160
143
 
@@ -1,256 +1,194 @@
1
1
  export const appIdentityCss = `
2
- /*
3
- * Pure app identity layer.
4
- *
5
- * Identity owns only chrome: wordmark name, active tab marker, primary button,
6
- * and one live/selected region. Theme/status colors remain separate. Hues are
7
- * perceptually spaced and lightness-staggered so neighbouring apps differ by
8
- * value as well as hue.
9
- */
10
2
  :root,
11
3
  :where([data-app]) {
12
- --pure-identity-default: #1f9d57;
13
- --pure-identity-default-bg: #eef7f1;
14
- --pure-identity-default-tx: #15703f;
15
- --pure-identity-default-block: #235240;
16
- --app-acc: var(--pure-identity-default);
17
- --app-bg: var(--pure-identity-default-bg);
18
- --app-text: var(--pure-identity-default-tx);
19
- --app-block: var(--pure-identity-default-block);
20
- --app-primary-fill: var(--app-acc);
4
+ /* App identity ring — 20 hues, one per app, evenly spaced (~18deg) at
5
+ matched lightness/chroma in oklch. Chrome-only; never overrides
6
+ --platform-colors-accent (theme/status meaning). */
7
+ --pure-coral: oklch(0.55 0.125 12);
8
+ --pure-coral-bg: oklch(0.955 0.03 12);
9
+ --pure-coral-tx: oklch(0.43 0.12 12);
10
+ --pure-redclay: oklch(0.55 0.125 30);
11
+ --pure-redclay-bg: oklch(0.955 0.03 30);
12
+ --pure-redclay-tx: oklch(0.43 0.12 30);
13
+ --pure-terracotta: oklch(0.55 0.125 48);
14
+ --pure-terracotta-bg: oklch(0.93 0.05 48);
15
+ --pure-terracotta-tx: oklch(0.43 0.12 48);
16
+ --pure-bronze: oklch(0.55 0.125 66);
17
+ --pure-bronze-bg: oklch(0.955 0.03 66);
18
+ --pure-bronze-tx: oklch(0.43 0.12 66);
19
+ --pure-gold: oklch(0.55 0.125 84);
20
+ --pure-gold-bg: oklch(0.955 0.03 84);
21
+ --pure-gold-tx: oklch(0.43 0.12 84);
22
+ --pure-citron: oklch(0.55 0.125 102);
23
+ --pure-citron-bg: oklch(0.955 0.03 102);
24
+ --pure-citron-tx: oklch(0.43 0.12 102);
25
+ --pure-olive: oklch(0.55 0.125 120);
26
+ --pure-olive-bg: oklch(0.955 0.03 120);
27
+ --pure-olive-tx: oklch(0.43 0.12 120);
28
+ --pure-leaf: oklch(0.55 0.125 138);
29
+ --pure-leaf-bg: oklch(0.955 0.03 138);
30
+ --pure-leaf-tx: oklch(0.43 0.12 138);
31
+ --pure-fern: oklch(0.55 0.125 156);
32
+ --pure-fern-bg: oklch(0.955 0.03 156);
33
+ --pure-fern-tx: oklch(0.43 0.12 156);
34
+ --pure-spruce: oklch(0.55 0.125 174);
35
+ --pure-spruce-bg: oklch(0.955 0.03 174);
36
+ --pure-spruce-tx: oklch(0.43 0.12 174);
37
+ --pure-teal: oklch(0.55 0.125 192);
38
+ --pure-teal-bg: oklch(0.955 0.03 192);
39
+ --pure-teal-tx: oklch(0.43 0.12 192);
40
+ --pure-ocean: oklch(0.55 0.125 210);
41
+ --pure-ocean-bg: oklch(0.955 0.03 210);
42
+ --pure-ocean-tx: oklch(0.43 0.12 210);
43
+ --pure-azure: oklch(0.55 0.125 228);
44
+ --pure-azure-bg: oklch(0.955 0.03 228);
45
+ --pure-azure-tx: oklch(0.43 0.12 228);
46
+ --pure-cerulean: oklch(0.55 0.125 246);
47
+ --pure-cerulean-bg: oklch(0.955 0.03 246);
48
+ --pure-cerulean-tx: oklch(0.43 0.12 246);
49
+ --pure-indigo: oklch(0.55 0.125 264);
50
+ --pure-indigo-bg: oklch(0.955 0.03 264);
51
+ --pure-indigo-tx: oklch(0.43 0.12 264);
52
+ --pure-violet: oklch(0.55 0.125 282);
53
+ --pure-violet-bg: oklch(0.955 0.03 282);
54
+ --pure-violet-tx: oklch(0.43 0.12 282);
55
+ --pure-purple: oklch(0.55 0.125 300);
56
+ --pure-purple-bg: oklch(0.955 0.03 300);
57
+ --pure-purple-tx: oklch(0.43 0.12 300);
58
+ --pure-orchid: oklch(0.55 0.125 318);
59
+ --pure-orchid-bg: oklch(0.955 0.03 318);
60
+ --pure-orchid-tx: oklch(0.43 0.12 318);
61
+ --pure-magenta: oklch(0.55 0.125 336);
62
+ --pure-magenta-bg: oklch(0.955 0.03 336);
63
+ --pure-magenta-tx: oklch(0.43 0.12 336);
64
+ --pure-raspberry: oklch(0.55 0.125 354);
65
+ --pure-raspberry-bg: oklch(0.955 0.03 354);
66
+ --pure-raspberry-tx: oklch(0.43 0.12 354);
67
+ --pure-house: #1f9d57;
68
+ --pure-house-bg: #eef7f1;
69
+ --pure-house-tx: #15703f;
70
+ --app-acc: var(--pure-house);
71
+ --app-bg: var(--pure-house-bg);
72
+ --app-text: var(--pure-house-tx);
73
+ }
74
+
75
+ [data-app='teams'] {
76
+ --app-acc: var(--pure-coral);
77
+ --app-bg: var(--pure-coral-bg);
78
+ --app-text: var(--pure-coral-tx);
79
+ }
80
+
81
+ [data-app='vibes'] {
82
+ --app-acc: var(--pure-redclay);
83
+ --app-bg: var(--pure-redclay-bg);
84
+ --app-text: var(--pure-redclay-tx);
85
+ }
86
+
87
+ [data-app='mail'] {
88
+ --app-acc: var(--pure-terracotta);
89
+ --app-bg: var(--pure-terracotta-bg);
90
+ --app-text: var(--pure-terracotta-tx);
91
+ }
92
+
93
+ [data-app='files'] {
94
+ --app-acc: var(--pure-bronze);
95
+ --app-bg: var(--pure-bronze-bg);
96
+ --app-text: var(--pure-bronze-tx);
97
+ }
98
+
99
+ [data-app='slides'] {
100
+ --app-acc: var(--pure-gold);
101
+ --app-bg: var(--pure-gold-bg);
102
+ --app-text: var(--pure-gold-tx);
103
+ }
104
+
105
+ [data-app='writer'] {
106
+ --app-acc: var(--pure-citron);
107
+ --app-bg: var(--pure-citron-bg);
108
+ --app-text: var(--pure-citron-tx);
109
+ }
110
+
111
+ [data-app='manuscript'] {
112
+ --app-acc: var(--pure-olive);
113
+ --app-bg: var(--pure-olive-bg);
114
+ --app-text: var(--pure-olive-tx);
115
+ }
116
+
117
+ [data-app='book'] {
118
+ --app-acc: var(--pure-leaf);
119
+ --app-bg: var(--pure-leaf-bg);
120
+ --app-text: var(--pure-leaf-tx);
121
+ }
122
+
123
+ [data-app='reports'] {
124
+ --app-acc: var(--pure-fern);
125
+ --app-bg: var(--pure-fern-bg);
126
+ --app-text: var(--pure-fern-tx);
127
+ }
128
+
129
+ [data-app='chart'] {
130
+ --app-acc: var(--pure-spruce);
131
+ --app-bg: var(--pure-spruce-bg);
132
+ --app-text: var(--pure-spruce-tx);
21
133
  }
22
134
 
23
- [data-app='teams'],
24
- [data-app='pureteams'] {
25
- --app-acc: oklch(0.58 0.13 8);
26
- --app-bg: oklch(0.955 0.03 8);
27
- --app-text: oklch(0.40 0.12 8);
28
- --app-block: oklch(0.40 0.06 8);
135
+ [data-app='knowledge'] {
136
+ --app-acc: var(--pure-teal);
137
+ --app-bg: var(--pure-teal-bg);
138
+ --app-text: var(--pure-teal-tx);
29
139
  }
30
140
 
31
- [data-app='vibes'],
32
- [data-app='purevibes'] {
33
- --app-acc: oklch(0.50 0.14 26);
34
- --app-bg: oklch(0.955 0.03 26);
35
- --app-text: oklch(0.40 0.12 26);
36
- --app-block: oklch(0.40 0.06 26);
141
+ [data-app='research'] {
142
+ --app-acc: var(--pure-ocean);
143
+ --app-bg: var(--pure-ocean-bg);
144
+ --app-text: var(--pure-ocean-tx);
37
145
  }
38
146
 
39
- [data-app='mail'],
40
- [data-app='puremail'] {
41
- --app-acc: oklch(0.60 0.12 44);
42
- --app-bg: oklch(0.93 0.05 44);
43
- --app-text: oklch(0.40 0.12 44);
44
- --app-block: oklch(0.40 0.06 44);
147
+ [data-app='sheets'] {
148
+ --app-acc: var(--pure-azure);
149
+ --app-bg: var(--pure-azure-bg);
150
+ --app-text: var(--pure-azure-tx);
45
151
  }
46
152
 
47
- [data-app='files'],
48
- [data-app='purefiles'] {
49
- --app-acc: oklch(0.50 0.13 64);
50
- --app-bg: oklch(0.955 0.03 64);
51
- --app-text: oklch(0.40 0.12 64);
52
- --app-block: oklch(0.40 0.06 64);
153
+ [data-app='calendar'] {
154
+ --app-acc: var(--pure-cerulean);
155
+ --app-bg: var(--pure-cerulean-bg);
156
+ --app-text: var(--pure-cerulean-tx);
53
157
  }
54
158
 
55
- [data-app='slides'],
56
- [data-app='pureslides'] {
57
- --app-acc: oklch(0.61 0.11 84);
58
- --app-bg: oklch(0.955 0.03 84);
59
- --app-text: oklch(0.40 0.11 84);
60
- --app-block: oklch(0.40 0.06 84);
159
+ [data-app='desktop'] {
160
+ --app-acc: var(--pure-indigo);
161
+ --app-bg: var(--pure-indigo-bg);
162
+ --app-text: var(--pure-indigo-tx);
61
163
  }
62
164
 
63
- [data-app='writer'],
64
- [data-app='purewriter'] {
65
- --app-acc: oklch(0.50 0.12 102);
66
- --app-bg: oklch(0.955 0.03 102);
67
- --app-text: oklch(0.40 0.12 102);
68
- --app-block: oklch(0.40 0.06 102);
165
+ [data-app='whiteboard'] {
166
+ --app-acc: var(--pure-violet);
167
+ --app-bg: var(--pure-violet-bg);
168
+ --app-text: var(--pure-violet-tx);
69
169
  }
70
170
 
71
- [data-app='manuscript'],
72
- [data-app='puremanuscript'] {
73
- --app-acc: oklch(0.61 0.12 124);
74
- --app-bg: oklch(0.955 0.03 124);
75
- --app-text: oklch(0.40 0.12 124);
76
- --app-block: oklch(0.40 0.06 124);
171
+ [data-app='review'] {
172
+ --app-acc: var(--pure-purple);
173
+ --app-bg: var(--pure-purple-bg);
174
+ --app-text: var(--pure-purple-tx);
77
175
  }
78
176
 
79
- [data-app='book'],
80
- [data-app='purebook'] {
81
- --app-acc: oklch(0.48 0.14 148);
82
- --app-bg: oklch(0.955 0.03 148);
83
- --app-text: oklch(0.40 0.12 148);
84
- --app-block: oklch(0.40 0.06 148);
177
+ [data-app='tasks'] {
178
+ --app-acc: var(--pure-orchid);
179
+ --app-bg: var(--pure-orchid-bg);
180
+ --app-text: var(--pure-orchid-tx);
85
181
  }
86
182
 
87
- [data-app='reports'],
88
- [data-app='purereports'] {
89
- --app-acc: oklch(0.61 0.12 166);
90
- --app-bg: oklch(0.955 0.03 166);
91
- --app-text: oklch(0.40 0.12 166);
92
- --app-block: oklch(0.40 0.06 166);
183
+ [data-app='assistant'] {
184
+ --app-acc: var(--pure-magenta);
185
+ --app-bg: var(--pure-magenta-bg);
186
+ --app-text: var(--pure-magenta-tx);
93
187
  }
94
188
 
95
- [data-app='chart'],
96
- [data-app='purechart'] {
97
- --app-acc: oklch(0.48 0.13 184);
98
- --app-bg: oklch(0.955 0.03 184);
99
- --app-text: oklch(0.40 0.12 184);
100
- --app-block: oklch(0.40 0.06 184);
101
- }
102
-
103
- [data-app='knowledge'],
104
- [data-app='pureknowledge'] {
105
- --app-acc: oklch(0.46 0.11 198);
106
- --app-bg: oklch(0.955 0.03 198);
107
- --app-text: oklch(0.40 0.11 198);
108
- --app-block: oklch(0.40 0.06 198);
109
- }
110
-
111
- [data-app='research'],
112
- [data-app='pureresearch'] {
113
- --app-acc: oklch(0.63 0.12 222);
114
- --app-bg: oklch(0.955 0.03 222);
115
- --app-text: oklch(0.40 0.12 222);
116
- --app-block: oklch(0.40 0.06 222);
117
- }
118
-
119
- [data-app='sheets'],
120
- [data-app='puresheets'] {
121
- --app-acc: oklch(0.50 0.13 244);
122
- --app-bg: oklch(0.955 0.03 244);
123
- --app-text: oklch(0.40 0.12 244);
124
- --app-block: oklch(0.40 0.06 244);
125
- }
126
-
127
- [data-app='calendar'],
128
- [data-app='purecalendar'] {
129
- --app-acc: oklch(0.63 0.13 258);
130
- --app-bg: oklch(0.955 0.03 258);
131
- --app-text: oklch(0.40 0.12 258);
132
- --app-block: oklch(0.40 0.06 258);
133
- }
134
-
135
- [data-app='desktop'],
136
- [data-app='puredesktop'] {
137
- --app-acc: oklch(0.48 0.13 274);
138
- --app-bg: oklch(0.955 0.03 274);
139
- --app-text: oklch(0.40 0.12 274);
140
- --app-block: oklch(0.40 0.06 274);
141
- }
142
-
143
- [data-app='plan'],
144
- [data-app='pureplan'] {
145
- --app-acc: oklch(0.61 0.14 290);
146
- --app-bg: oklch(0.955 0.03 290);
147
- --app-text: oklch(0.40 0.12 290);
148
- --app-block: oklch(0.40 0.06 290);
149
- }
150
-
151
- [data-app='review'],
152
- [data-app='purereview'] {
153
- --app-acc: oklch(0.50 0.15 308);
154
- --app-bg: oklch(0.955 0.03 308);
155
- --app-text: oklch(0.40 0.12 308);
156
- --app-block: oklch(0.40 0.06 308);
157
- }
158
-
159
- [data-app='tasks'],
160
- [data-app='puretasks'] {
161
- --app-acc: oklch(0.63 0.15 324);
162
- --app-bg: oklch(0.955 0.03 324);
163
- --app-text: oklch(0.40 0.12 324);
164
- --app-block: oklch(0.40 0.06 324);
165
- }
166
-
167
- [data-app='assistant'],
168
- [data-app='pureassistant'] {
169
- --app-acc: oklch(0.50 0.15 340);
170
- --app-bg: oklch(0.955 0.03 340);
171
- --app-text: oklch(0.40 0.12 340);
172
- --app-block: oklch(0.40 0.06 340);
173
- }
174
-
175
- [data-app='people'],
176
- [data-app='purepeople'] {
177
- --app-acc: oklch(0.61 0.14 356);
178
- --app-bg: oklch(0.955 0.03 356);
179
- --app-text: oklch(0.40 0.12 356);
180
- --app-block: oklch(0.40 0.06 356);
181
- }
182
-
183
- [data-app='slides'],
184
- [data-app='pureslides'],
185
- [data-app='manuscript'],
186
- [data-app='puremanuscript'],
187
- [data-app='reports'],
188
- [data-app='purereports'],
189
- [data-app='research'],
190
- [data-app='pureresearch'],
191
- [data-app='calendar'],
192
- [data-app='purecalendar'],
193
- [data-app='plan'],
194
- [data-app='pureplan'],
195
- [data-app='tasks'],
196
- [data-app='puretasks'],
197
- [data-app='people'],
198
- [data-app='purepeople'] {
199
- --app-primary-fill: var(--app-block);
200
- }
201
-
202
- .pure-wordmark__prefix {
203
- color: var(--platform-colors-text-tertiary, #9a9aa0);
204
- }
205
-
206
- .pure-wordmark__name {
207
- color: var(--app-acc, var(--platform-colors-text));
208
- font-weight: 700;
209
- }
210
-
211
- .pure-tab.is-active {
212
- box-shadow: inset 0 -2px 0 0 var(--app-acc, var(--platform-colors-text));
213
- }
214
-
215
- .pure-viewtab.is-active {
216
- border-bottom-color: var(--app-acc, var(--platform-colors-text));
217
- }
218
-
219
- .pure-btn--primary {
220
- background: var(--app-primary-fill, var(--app-acc, var(--platform-colors-text)));
221
- border-color: var(--app-primary-fill, var(--app-acc, var(--platform-colors-text)));
222
- color: #fff;
223
- }
224
-
225
- .pure-btn--primary.is-light {
226
- background: var(--app-block, var(--platform-colors-text));
227
- border-color: var(--app-block, var(--platform-colors-text));
228
- }
229
-
230
- .pure-btn--bordered {
231
- background: var(--platform-colors-surface, #fff);
232
- border-color: var(--app-acc, var(--platform-colors-text));
233
- color: var(--app-text, var(--platform-colors-text));
234
- }
235
-
236
- .pure-selected {
237
- border-left-color: var(--app-acc, var(--platform-colors-accent));
238
- background: var(--platform-colors-surface, #fff);
239
- }
240
-
241
- .pure-selected--chip {
242
- background: var(--app-bg, var(--platform-colors-surface-muted));
243
- }
244
-
245
- .pure-active-col {
246
- border-color: var(--app-acc, var(--platform-colors-accent));
247
- border-top-color: var(--app-acc, var(--platform-colors-accent));
248
- border-radius: 0;
249
- background: var(--platform-colors-surface, #fff);
250
- }
251
-
252
- .pure-block {
253
- background: var(--app-block, var(--platform-colors-text));
254
- color: #fff;
189
+ [data-app='people'] {
190
+ --app-acc: var(--pure-raspberry);
191
+ --app-bg: var(--pure-raspberry-bg);
192
+ --app-text: var(--pure-raspberry-tx);
255
193
  }
256
194
  `