@beyondwork/docx-react-component 1.0.122 → 1.0.124

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 (102) hide show
  1. package/dist/api/public-types.cjs +318 -32
  2. package/dist/api/public-types.d.cts +2 -2
  3. package/dist/api/public-types.d.ts +2 -2
  4. package/dist/api/public-types.js +3 -3
  5. package/dist/api/v3.cjs +351 -56
  6. package/dist/api/v3.d.cts +3 -3
  7. package/dist/api/v3.d.ts +3 -3
  8. package/dist/api/v3.js +10 -10
  9. package/dist/{canonical-document-ByIqTd4s.d.cts → canonical-document-CG2TgAzj.d.cts} +1 -1
  10. package/dist/{canonical-document-ByIqTd4s.d.ts → canonical-document-CG2TgAzj.d.ts} +1 -1
  11. package/dist/{chunk-B4YHWFE3.js → chunk-32ZAOQ54.js} +1 -1
  12. package/dist/{chunk-EMDH4IQN.js → chunk-4B74ETJI.js} +4 -3
  13. package/dist/{chunk-QNGJRZ2D.js → chunk-4IPEZYQX.js} +1 -1
  14. package/dist/{chunk-S4ANOS2M.js → chunk-7PC6XUNO.js} +2 -2
  15. package/dist/{chunk-TMU7JMXX.js → chunk-A74Y5NE4.js} +11 -15
  16. package/dist/{chunk-3OFSP2IX.js → chunk-BOHHIVQ2.js} +3 -3
  17. package/dist/{chunk-TFSXOIAI.js → chunk-FNWKE74J.js} +43 -3
  18. package/dist/{chunk-3TUQCHYT.js → chunk-H6IL5ABU.js} +47 -7
  19. package/dist/{chunk-GON2DNTE.js → chunk-HXHQA4BU.js} +1 -1
  20. package/dist/{chunk-3OHVK2D6.js → chunk-IR7QV2BX.js} +17 -1
  21. package/dist/{chunk-ZKSDVHGH.js → chunk-KOHQFZMM.js} +1 -1
  22. package/dist/{chunk-XVFENXLK.js → chunk-LGWNN3L2.js} +2 -2
  23. package/dist/{chunk-UHQOUTAX.js → chunk-MPH4ZQS4.js} +377 -50
  24. package/dist/{chunk-GZW2ERUO.js → chunk-N4VIXI2Z.js} +3 -3
  25. package/dist/{chunk-OBCP6VTG.js → chunk-NAMAWCXN.js} +1 -1
  26. package/dist/{chunk-QFU7ZOAD.js → chunk-PFYUJU3Q.js} +176 -36
  27. package/dist/{chunk-PCXTMEGY.js → chunk-Q76XPPTA.js} +24 -14
  28. package/dist/{chunk-37SEJQ3G.js → chunk-RSYN6FTS.js} +2 -2
  29. package/dist/{chunk-UWDWGQH5.js → chunk-TY4DIJO3.js} +1 -1
  30. package/dist/{chunk-IT2DK3A7.js → chunk-ZMRO6P3A.js} +9 -7
  31. package/dist/{chunk-G3B2OBCZ.js → chunk-ZRHLLPSJ.js} +271 -26
  32. package/dist/compare.d.cts +1 -1
  33. package/dist/compare.d.ts +1 -1
  34. package/dist/core/commands/formatting-commands.d.cts +2 -2
  35. package/dist/core/commands/formatting-commands.d.ts +2 -2
  36. package/dist/core/commands/image-commands.cjs +50 -9
  37. package/dist/core/commands/image-commands.d.cts +2 -2
  38. package/dist/core/commands/image-commands.d.ts +2 -2
  39. package/dist/core/commands/image-commands.js +5 -5
  40. package/dist/core/commands/section-layout-commands.d.cts +2 -2
  41. package/dist/core/commands/section-layout-commands.d.ts +2 -2
  42. package/dist/core/commands/style-commands.d.cts +2 -2
  43. package/dist/core/commands/style-commands.d.ts +2 -2
  44. package/dist/core/commands/table-structure-commands.cjs +50 -9
  45. package/dist/core/commands/table-structure-commands.d.cts +2 -2
  46. package/dist/core/commands/table-structure-commands.d.ts +2 -2
  47. package/dist/core/commands/table-structure-commands.js +4 -4
  48. package/dist/core/commands/text-commands.cjs +66 -9
  49. package/dist/core/commands/text-commands.d.cts +3 -2
  50. package/dist/core/commands/text-commands.d.ts +3 -2
  51. package/dist/core/commands/text-commands.js +5 -5
  52. package/dist/core/selection/mapping.d.cts +2 -2
  53. package/dist/core/selection/mapping.d.ts +2 -2
  54. package/dist/core/state/editor-state.d.cts +2 -2
  55. package/dist/core/state/editor-state.d.ts +2 -2
  56. package/dist/index.cjs +1198 -191
  57. package/dist/index.d.cts +5 -5
  58. package/dist/index.d.ts +5 -5
  59. package/dist/index.js +278 -85
  60. package/dist/io/docx-session.cjs +12 -15
  61. package/dist/io/docx-session.d.cts +4 -4
  62. package/dist/io/docx-session.d.ts +4 -4
  63. package/dist/io/docx-session.js +4 -4
  64. package/dist/legal.cjs +10 -14
  65. package/dist/legal.d.cts +1 -1
  66. package/dist/legal.d.ts +1 -1
  67. package/dist/legal.js +3 -3
  68. package/dist/{loader-BF8ju_LK.d.ts → loader-D9KCtj4m.d.cts} +4 -22
  69. package/dist/{loader-g54WRvj1.d.cts → loader-D9y4ZRjj.d.ts} +4 -22
  70. package/dist/{public-types-Dl1jiWjk.d.ts → public-types-CNnMHZM9.d.ts} +263 -213
  71. package/dist/{public-types-D_y4Ptcj.d.cts → public-types-DajNGKV4.d.cts} +263 -213
  72. package/dist/public-types.cjs +318 -32
  73. package/dist/public-types.d.cts +2 -2
  74. package/dist/public-types.d.ts +2 -2
  75. package/dist/public-types.js +3 -3
  76. package/dist/runtime/collab.d.cts +3 -3
  77. package/dist/runtime/collab.d.ts +3 -3
  78. package/dist/runtime/document-runtime.cjs +752 -77
  79. package/dist/runtime/document-runtime.d.cts +2 -2
  80. package/dist/runtime/document-runtime.d.ts +2 -2
  81. package/dist/runtime/document-runtime.js +14 -14
  82. package/dist/{session-C1EPAkcI.d.ts → session-DEmaOEjA.d.ts} +3 -3
  83. package/dist/{session-D15QOO0Q.d.cts → session-DyQGlryH.d.cts} +3 -3
  84. package/dist/session.cjs +14 -612
  85. package/dist/session.d.cts +5 -5
  86. package/dist/session.d.ts +5 -5
  87. package/dist/session.js +7 -9
  88. package/dist/tailwind.cjs +489 -63
  89. package/dist/tailwind.d.cts +2 -2
  90. package/dist/tailwind.d.ts +2 -2
  91. package/dist/tailwind.js +7 -7
  92. package/dist/{types-BoSRp2Vg.d.cts → types-CxE1aZiv.d.cts} +2 -2
  93. package/dist/{types-DEvRwq9C.d.ts → types-DjJNaE9c.d.ts} +2 -2
  94. package/dist/ui-tailwind/editor-surface/search-plugin.d.cts +3 -3
  95. package/dist/ui-tailwind/editor-surface/search-plugin.d.ts +3 -3
  96. package/dist/ui-tailwind/editor-surface/search-plugin.js +4 -4
  97. package/dist/ui-tailwind/theme/tokens.css +387 -0
  98. package/dist/ui-tailwind.cjs +489 -63
  99. package/dist/ui-tailwind.d.cts +3 -3
  100. package/dist/ui-tailwind.d.ts +3 -3
  101. package/dist/ui-tailwind.js +7 -7
  102. package/package.json +7 -3
@@ -1,9 +1,9 @@
1
1
  export { BreakpointMap, CollabAudienceChip, CollabAudienceChipProps, CollabNegotiationActionBar, CollabNegotiationActionBarProps, CollabPresenceStrip, CollabPresenceStripProps, CollabRoleChip, CollabRoleChipProps, CollabSendToSupplierButton, CollabSendToSupplierButtonProps, CollabSendToSupplierModal, CollabSendToSupplierModalProps, CollabSendToSupplierSubmitArgs, CollabTamperBanner, CollabTamperBannerProps, CommandPaletteGroup, CommandPaletteItem, CommentDecorationModel, CommentMarkdownRenderer, CommentMarkdownRendererProps, EditorKeyboardCallbacks, EditorKeyboardContext, MarkupDisplay, RailCardAvatar, RailCardCounter, RailCardProgress, RailCardTone, ReviewRailTab, RevisionDecorationModel, ShellHeaderIconAction, ShellHeaderMode, ShellHeaderModeOption, ShellHeaderPrimaryAction, TwAlertBanner, TwChromeOverlay, TwChromeOverlayProps, TwCommandPalette, TwCommandPaletteMount, TwCommandPaletteMountProps, TwCommandPaletteProps, TwCommentSidebar, TwCommentSidebarProps, TwEditorSurface, TwEditorSurfaceProps, TwHealthPanel, TwInlineToken, TwOpaqueBlock, TwParagraphBlock, TwPasteDropToast, TwPasteDropToastProps, TwRailCard, TwRailCardProps, TwReviewRail, TwReviewRailFooter, TwReviewRailFooterProps, TwReviewRailProps, TwReviewWorkspace, TwReviewWorkspaceProps, TwRevisionSidebar, TwScopeRailLayer, TwScopeRailLayerProps, TwSegmentView, TwSelectionToolbar, TwShellHeader, TwShellHeaderProps, TwStatusBar, TwToolbar, TwToolbarIconButton, TwToolbarProps, TwWorkflowTab, TwWorkflowTabProps, createCommentDecorationModel, createEditorKeyboardHandler, createRevisionDecorationModel, createSelectionSnapshot, getCommentHighlightClass, getCommentRangeState, getRevisionHighlightClass, getRevisionRangeState, isCommandPaletteOpenShortcut, renderTwCaret, resolveBreakpoint, selectionTouchesRange, shouldHideInCleanMode, useContainerBreakpoint } from './ui-tailwind.cjs';
2
- export { e_ as SessionCapabilities, eI as WorkspaceMode, eJ as ZoomLevel, fh as deriveCapabilities } from './public-types-D_y4Ptcj.cjs';
2
+ export { e_ as SessionCapabilities, eI as WorkspaceMode, eJ as ZoomLevel, fh as deriveCapabilities } from './public-types-DajNGKV4.cjs';
3
3
  import 'react/jsx-runtime';
4
4
  import 'react';
5
5
  import 'yjs';
6
6
  import 'y-protocols/awareness';
7
- import './canonical-document-ByIqTd4s.cjs';
7
+ import './canonical-document-CG2TgAzj.cjs';
8
8
  import 'prosemirror-state';
9
9
  import 'prosemirror-model';
@@ -1,9 +1,9 @@
1
1
  export { BreakpointMap, CollabAudienceChip, CollabAudienceChipProps, CollabNegotiationActionBar, CollabNegotiationActionBarProps, CollabPresenceStrip, CollabPresenceStripProps, CollabRoleChip, CollabRoleChipProps, CollabSendToSupplierButton, CollabSendToSupplierButtonProps, CollabSendToSupplierModal, CollabSendToSupplierModalProps, CollabSendToSupplierSubmitArgs, CollabTamperBanner, CollabTamperBannerProps, CommandPaletteGroup, CommandPaletteItem, CommentDecorationModel, CommentMarkdownRenderer, CommentMarkdownRendererProps, EditorKeyboardCallbacks, EditorKeyboardContext, MarkupDisplay, RailCardAvatar, RailCardCounter, RailCardProgress, RailCardTone, ReviewRailTab, RevisionDecorationModel, ShellHeaderIconAction, ShellHeaderMode, ShellHeaderModeOption, ShellHeaderPrimaryAction, TwAlertBanner, TwChromeOverlay, TwChromeOverlayProps, TwCommandPalette, TwCommandPaletteMount, TwCommandPaletteMountProps, TwCommandPaletteProps, TwCommentSidebar, TwCommentSidebarProps, TwEditorSurface, TwEditorSurfaceProps, TwHealthPanel, TwInlineToken, TwOpaqueBlock, TwParagraphBlock, TwPasteDropToast, TwPasteDropToastProps, TwRailCard, TwRailCardProps, TwReviewRail, TwReviewRailFooter, TwReviewRailFooterProps, TwReviewRailProps, TwReviewWorkspace, TwReviewWorkspaceProps, TwRevisionSidebar, TwScopeRailLayer, TwScopeRailLayerProps, TwSegmentView, TwSelectionToolbar, TwShellHeader, TwShellHeaderProps, TwStatusBar, TwToolbar, TwToolbarIconButton, TwToolbarProps, TwWorkflowTab, TwWorkflowTabProps, createCommentDecorationModel, createEditorKeyboardHandler, createRevisionDecorationModel, createSelectionSnapshot, getCommentHighlightClass, getCommentRangeState, getRevisionHighlightClass, getRevisionRangeState, isCommandPaletteOpenShortcut, renderTwCaret, resolveBreakpoint, selectionTouchesRange, shouldHideInCleanMode, useContainerBreakpoint } from './ui-tailwind.js';
2
- export { e_ as SessionCapabilities, eI as WorkspaceMode, eJ as ZoomLevel, fh as deriveCapabilities } from './public-types-Dl1jiWjk.js';
2
+ export { e_ as SessionCapabilities, eI as WorkspaceMode, eJ as ZoomLevel, fh as deriveCapabilities } from './public-types-CNnMHZM9.js';
3
3
  import 'react/jsx-runtime';
4
4
  import 'react';
5
5
  import 'yjs';
6
6
  import 'y-protocols/awareness';
7
- import './canonical-document-ByIqTd4s.js';
7
+ import './canonical-document-CG2TgAzj.js';
8
8
  import 'prosemirror-state';
9
9
  import 'prosemirror-model';
package/dist/tailwind.js CHANGED
@@ -9,7 +9,7 @@ import {
9
9
  TwShellHeader,
10
10
  createEditorKeyboardHandler,
11
11
  renderTwCaret
12
- } from "./chunk-B4YHWFE3.js";
12
+ } from "./chunk-32ZAOQ54.js";
13
13
  import {
14
14
  CollabAudienceChip,
15
15
  CollabNegotiationActionBar,
@@ -47,17 +47,17 @@ import {
47
47
  selectionTouchesRange,
48
48
  shouldHideInCleanMode,
49
49
  useContainerBreakpoint
50
- } from "./chunk-QFU7ZOAD.js";
51
- import "./chunk-GZW2ERUO.js";
52
- import "./chunk-GON2DNTE.js";
50
+ } from "./chunk-PFYUJU3Q.js";
51
+ import "./chunk-N4VIXI2Z.js";
52
+ import "./chunk-HXHQA4BU.js";
53
53
  import {
54
54
  deriveCapabilities
55
- } from "./chunk-G3B2OBCZ.js";
55
+ } from "./chunk-ZRHLLPSJ.js";
56
56
  import "./chunk-KFCQYZXR.js";
57
57
  import "./chunk-QIO6V46H.js";
58
- import "./chunk-3TUQCHYT.js";
58
+ import "./chunk-H6IL5ABU.js";
59
59
  import "./chunk-OYGMRRR7.js";
60
- import "./chunk-TFSXOIAI.js";
60
+ import "./chunk-FNWKE74J.js";
61
61
  import "./chunk-UFVDIR2C.js";
62
62
  import "./chunk-PGGPPZ65.js";
63
63
  import "./chunk-DNXYUIIS.js";
@@ -1,5 +1,5 @@
1
- import { C as CanonicalDocument, D as DocumentRootNode, d as PreservationStore } from './canonical-document-ByIqTd4s.cjs';
2
- import { E as EditorHostAdapter, L as LoadStage, o as EditorSurfaceSnapshot, p as LoadSchedulerBackend, a as EditorSessionState, q as CompatibilityReport, r as EditorError, t as ProtectionSnapshot, P as PersistedEditorSnapshot, b as ExportDocxOptions, c as ExportResult } from './public-types-D_y4Ptcj.cjs';
1
+ import { C as CanonicalDocument, D as DocumentRootNode, d as PreservationStore } from './canonical-document-CG2TgAzj.cjs';
2
+ import { E as EditorHostAdapter, L as LoadStage, o as EditorSurfaceSnapshot, p as LoadSchedulerBackend, a as EditorSessionState, q as CompatibilityReport, r as EditorError, t as ProtectionSnapshot, P as PersistedEditorSnapshot, b as ExportDocxOptions, c as ExportResult } from './public-types-DajNGKV4.cjs';
3
3
 
4
4
  /**
5
5
  * Embedded-object classifier (hotfix/ole-digestibility-guard).
@@ -1,5 +1,5 @@
1
- import { C as CanonicalDocument, D as DocumentRootNode, d as PreservationStore } from './canonical-document-ByIqTd4s.js';
2
- import { E as EditorHostAdapter, L as LoadStage, o as EditorSurfaceSnapshot, p as LoadSchedulerBackend, a as EditorSessionState, q as CompatibilityReport, r as EditorError, t as ProtectionSnapshot, P as PersistedEditorSnapshot, b as ExportDocxOptions, c as ExportResult } from './public-types-Dl1jiWjk.js';
1
+ import { C as CanonicalDocument, D as DocumentRootNode, d as PreservationStore } from './canonical-document-CG2TgAzj.js';
2
+ import { E as EditorHostAdapter, L as LoadStage, o as EditorSurfaceSnapshot, p as LoadSchedulerBackend, a as EditorSessionState, q as CompatibilityReport, r as EditorError, t as ProtectionSnapshot, P as PersistedEditorSnapshot, b as ExportDocxOptions, c as ExportResult } from './public-types-CNnMHZM9.js';
3
3
 
4
4
  /**
5
5
  * Embedded-object classifier (hotfix/ole-digestibility-guard).
@@ -1,10 +1,10 @@
1
1
  import { EditorState, Transaction, Plugin, PluginKey } from 'prosemirror-state';
2
- import { j as SearchOptions$1, k as SearchTextOptions } from '../../public-types-D_y4Ptcj.cjs';
3
- export { l as SecondaryStorySearchResult, m as createSearchExcerpt, n as findSearchMatches, s as searchSecondaryStories } from '../../public-types-D_y4Ptcj.cjs';
2
+ import { j as SearchOptions$1, k as SearchTextOptions } from '../../public-types-DajNGKV4.cjs';
3
+ export { l as SecondaryStorySearchResult, m as createSearchExcerpt, n as findSearchMatches, s as searchSecondaryStories } from '../../public-types-DajNGKV4.cjs';
4
4
  import 'react';
5
5
  import 'yjs';
6
6
  import 'y-protocols/awareness';
7
- import '../../canonical-document-ByIqTd4s.cjs';
7
+ import '../../canonical-document-CG2TgAzj.cjs';
8
8
  import 'prosemirror-model';
9
9
 
10
10
  /**
@@ -1,10 +1,10 @@
1
1
  import { EditorState, Transaction, Plugin, PluginKey } from 'prosemirror-state';
2
- import { j as SearchOptions$1, k as SearchTextOptions } from '../../public-types-Dl1jiWjk.js';
3
- export { l as SecondaryStorySearchResult, m as createSearchExcerpt, n as findSearchMatches, s as searchSecondaryStories } from '../../public-types-Dl1jiWjk.js';
2
+ import { j as SearchOptions$1, k as SearchTextOptions } from '../../public-types-CNnMHZM9.js';
3
+ export { l as SecondaryStorySearchResult, m as createSearchExcerpt, n as findSearchMatches, s as searchSecondaryStories } from '../../public-types-CNnMHZM9.js';
4
4
  import 'react';
5
5
  import 'yjs';
6
6
  import 'y-protocols/awareness';
7
- import '../../canonical-document-ByIqTd4s.js';
7
+ import '../../canonical-document-CG2TgAzj.js';
8
8
  import 'prosemirror-model';
9
9
 
10
10
  /**
@@ -4,17 +4,17 @@ import {
4
4
  createSearchPlugin,
5
5
  performSearch,
6
6
  searchPluginKey
7
- } from "../../chunk-QNGJRZ2D.js";
7
+ } from "../../chunk-4IPEZYQX.js";
8
8
  import {
9
9
  createSearchExcerpt,
10
10
  findSearchMatches,
11
11
  searchSecondaryStories
12
- } from "../../chunk-G3B2OBCZ.js";
12
+ } from "../../chunk-ZRHLLPSJ.js";
13
13
  import "../../chunk-KFCQYZXR.js";
14
14
  import "../../chunk-QIO6V46H.js";
15
- import "../../chunk-3TUQCHYT.js";
15
+ import "../../chunk-H6IL5ABU.js";
16
16
  import "../../chunk-OYGMRRR7.js";
17
- import "../../chunk-TFSXOIAI.js";
17
+ import "../../chunk-FNWKE74J.js";
18
18
  import "../../chunk-UFVDIR2C.js";
19
19
  import "../../chunk-PGGPPZ65.js";
20
20
  import "../../chunk-DNXYUIIS.js";
@@ -0,0 +1,387 @@
1
+ /*
2
+ * @beyondwork/docx-react-component — canonical design tokens
3
+ *
4
+ * Source of truth for every color, shadow, radius, space, and motion value
5
+ * consumed by the chrome and document surface. Values are copied verbatim
6
+ * from `docs/reference/designsystem.md` §10 (starter CSS). Any hex change
7
+ * happens HERE and in `tokens.ts` — never in a component file.
8
+ *
9
+ * Two-layer model:
10
+ * 1. Product names (TypeScript) — `BRAND_TOKENS.color.accent.primary`
11
+ * 2. CSS variables (this file) — `var(--color-accent-primary)`
12
+ *
13
+ * See `docs/wiki/design-tokens.md` for narrative + eviction policy.
14
+ *
15
+ * Host overrides:
16
+ * Allowed — accent family, `--color-bg-app`, `--radius-*`, `--motion-*`
17
+ * Locked — semantic, change, comment, canvas, focus-ring
18
+ * See `docs/reference/designsystem.md` §8.5 + §9.
19
+ */
20
+
21
+ :root {
22
+ /*
23
+ * Backgrounds — neutralized chrome family. Canvas is the only pure
24
+ * white; chrome surfaces are true light grays (no green undertone).
25
+ * Mint is reserved for the accent family — chrome reads as paper +
26
+ * neutral, accent appears only on intentional state.
27
+ */
28
+ --color-bg-app: #F6F6F6;
29
+ --color-bg-chrome: #FBFBFB;
30
+ --color-bg-sidebar: #F4F4F4;
31
+ --color-bg-canvas: #FFFFFF;
32
+ --color-bg-elevated: #FFFFFF;
33
+ --color-bg-hover: #F0F0F0;
34
+ --color-bg-selected: #E8E8E8;
35
+ --color-bg-muted: #F5F5F5;
36
+ --color-bg-overlay: rgba(17, 17, 17, 0.10);
37
+
38
+ /* Borders — neutral grays, no green undertone (accent border kept for true accent affordances). */
39
+ --color-border-subtle: #E6E6E6;
40
+ --color-border-default: #D6D6D6;
41
+ --color-border-strong: #BFBFBF;
42
+ --color-border-accent: #8FC9AD;
43
+
44
+ /* Text — near-black + neutral gray scale (drops greenish hint from secondary/tertiary). */
45
+ --color-text-primary: #111111;
46
+ --color-text-secondary: #555555;
47
+ --color-text-tertiary: #888888;
48
+ --color-text-quiet: #A8A8A8;
49
+ --color-text-inverse: #FAFAFA;
50
+ --color-text-on-accent: #FAFAFA;
51
+ --color-text-on-soft-accent: #18563F;
52
+
53
+ /* Accent (host-overridable) */
54
+ --color-accent-primary: #1F6B4F;
55
+ --color-accent-primary-hover: #18563F;
56
+ --color-accent-primary-active: #124432;
57
+ --color-accent-secondary: #72D6AE;
58
+ --color-accent-secondary-hover: #5FC79C;
59
+ --color-accent-secondary-active: #49B785;
60
+ --color-accent-soft: #DDF1E4;
61
+ --color-accent-soft-hover: #CEEAD8;
62
+
63
+ /* Semantic (locked) */
64
+ --color-semantic-success: #1F8A5B;
65
+ --color-semantic-success-soft: #DDF3E8;
66
+ --color-semantic-warning: #D58B1E;
67
+ --color-semantic-warning-soft: #FBEFD8;
68
+ --color-semantic-error: #D95C67;
69
+ --color-semantic-error-soft: #FBE3E6;
70
+ --color-semantic-info: #2F8FCE;
71
+ --color-semantic-info-soft: #DCEFFC;
72
+
73
+ /* Field */
74
+ --color-field-fill: #F6FAF7;
75
+ --color-field-editable: #EEF8F0;
76
+ --color-field-focus: #DDF1E4;
77
+ --color-field-invalid: #FBE3E6;
78
+ --color-field-warning: #FBEFD8;
79
+
80
+ /* Status */
81
+ --color-status-ready: #1F8A5B;
82
+ --color-status-in-progress: #2F8FCE;
83
+ --color-status-paused: #8A978F;
84
+ --color-status-blocked: #D95C67;
85
+ --color-status-review: #1F6B4F;
86
+ --color-status-draft: #72907E;
87
+
88
+ /* Comment (locked) */
89
+ --color-comment-marker: #1F6B4F;
90
+ --color-comment-marker-hover: #18563F;
91
+ --color-comment-thread-bg: #F3FAF6;
92
+
93
+ /* Change (locked) */
94
+ --color-change-insertion: #DDF3E8;
95
+ --color-change-deletion: #FBE3E6;
96
+ --color-change-comment: #E8F4EC;
97
+ --color-change-selection: #DDF1E4;
98
+
99
+ /* Highlight (user-driven content, stable across themes — §3 cell-fill + text-highlight family) */
100
+ --color-highlight-default: #FFF59D;
101
+
102
+ /* Chart — categorical */
103
+ --color-chart-categorical-1: #1F6B4F;
104
+ --color-chart-categorical-2: #72D6AE;
105
+ --color-chart-categorical-3: #2F8FCE;
106
+ --color-chart-categorical-4: #D58B1E;
107
+ --color-chart-categorical-5: #7A6AF0;
108
+ --color-chart-categorical-6: #D95C67;
109
+ --color-chart-categorical-7: #5E8E7A;
110
+ --color-chart-categorical-8: #A7D9C1;
111
+
112
+ /* Chart — sequential */
113
+ --color-chart-sequential-1: #EAF6EF;
114
+ --color-chart-sequential-2: #D4EEDD;
115
+ --color-chart-sequential-3: #B4DFC8;
116
+ --color-chart-sequential-4: #8FC9AD;
117
+ --color-chart-sequential-5: #5FA985;
118
+ --color-chart-sequential-6: #1F6B4F;
119
+
120
+ /* Chart — diverging */
121
+ --color-chart-diverging-neg-strong: #C94B57;
122
+ --color-chart-diverging-neg: #E9979F;
123
+ --color-chart-diverging-neutral: #E9EFEA;
124
+ --color-chart-diverging-pos: #97D1B3;
125
+ --color-chart-diverging-pos-strong: #1F6B4F;
126
+
127
+ /* Scope tints (§3.7.1) */
128
+ --color-scope-tint-blocked: #FBE3E6;
129
+ --color-scope-tint-in-scope: #E2F2E8;
130
+ --color-scope-tint-suggest: #FBEFD8;
131
+ --color-scope-tint-comment: #F3FAF6;
132
+ --color-scope-tint-scheduled: #DCEFFC;
133
+ --color-scope-tint-proposed: #EAF6EF;
134
+
135
+ /* Shadows */
136
+ --shadow-soft: 0 6px 20px rgba(21, 26, 23, 0.06);
137
+ --shadow-float: 0 12px 32px rgba(21, 26, 23, 0.12);
138
+ --shadow-focus: 0 0 0 3px rgba(114, 214, 174, 0.28);
139
+
140
+ /* Radius (§4.3) */
141
+ --radius-sm: 10px;
142
+ --radius-md: 12px;
143
+ --radius-lg: 14px;
144
+ --radius-xl: 16px;
145
+ --radius-pill: 9999px;
146
+
147
+ /* Spacing (4px base) */
148
+ --space-1: 4px;
149
+ --space-2: 8px;
150
+ --space-3: 12px;
151
+ --space-4: 16px;
152
+ --space-5: 20px;
153
+ --space-6: 24px;
154
+ --space-8: 32px;
155
+ --space-10: 40px;
156
+ --space-12: 48px;
157
+ --space-16: 64px;
158
+
159
+ /* Motion (host-overridable) */
160
+ --motion-fast: 120ms;
161
+ --motion-default: 160ms;
162
+ --motion-slow: 220ms;
163
+
164
+ /*
165
+ * Type scale (designsystem.md v2.0 §4.1).
166
+ * Five fixed steps + tracking + leading + font families. Components
167
+ * that must read the design-system scale (status bar, eyebrows,
168
+ * keyboard hints) read these vars; Tailwind's default text-* utilities
169
+ * are unchanged.
170
+ */
171
+ --text-xs: 11px;
172
+ --text-sm: 13px;
173
+ --text-md: 14px;
174
+ --text-lg: 16px;
175
+ --text-xl: 22px;
176
+
177
+ --leading-tight: 1.25;
178
+ --leading-snug: 1.4;
179
+ --leading-normal: 1.55;
180
+
181
+ --tracking-eyebrow: 0.18em;
182
+ --tracking-badge: 0.08em;
183
+ --tracking-status: 0.12em;
184
+ --tracking-shortcut: 0.04em;
185
+
186
+ /*
187
+ * Font families (designsystem.md v2.0 §4.1). Aliases of the
188
+ * `--font-legal-*` family that ships in editor-theme.css; both names
189
+ * resolve to the same stack so chrome code may use either.
190
+ */
191
+ --font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
192
+ --font-serif: "Source Serif 4", "Source Serif Pro", Georgia, "Times New Roman", serif;
193
+ --font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;
194
+ }
195
+
196
+ /*
197
+ * Dark palette (designsystem §3.4).
198
+ *
199
+ * Canonical selector is `[data-theme="dark"]`; `.dark` class is retained
200
+ * as a compat selector for one release cycle (existing harness markup
201
+ * uses it alongside the attribute). Remove `.dark` after an explicit
202
+ * consumer audit.
203
+ */
204
+ [data-theme="dark"],
205
+ .dark {
206
+ /* Backgrounds — neutral graphite scale; canvas keeps a faint green-black for paper warmth. */
207
+ --color-bg-app: #0E0E0E;
208
+ --color-bg-chrome: #131313;
209
+ --color-bg-sidebar: #161616;
210
+ --color-bg-canvas: #1B2620;
211
+ --color-bg-elevated: #1E1E1E;
212
+ --color-bg-hover: #232323;
213
+ --color-bg-selected: #2A2A2A;
214
+ --color-bg-muted: #181818;
215
+ --color-bg-overlay: rgba(0, 0, 0, 0.40);
216
+
217
+ /* Borders — neutral graphite. */
218
+ --color-border-subtle: #262626;
219
+ --color-border-default: #353535;
220
+ --color-border-strong: #4A4A4A;
221
+ --color-border-accent: #4F8E70;
222
+
223
+ /* Text */
224
+ --color-text-primary: #F2F2F2;
225
+ --color-text-secondary: #A8A8A8;
226
+ --color-text-tertiary: #7F7F7F;
227
+ --color-text-quiet: #5E5E5E;
228
+ --color-text-inverse: #111111;
229
+ --color-text-on-accent: #0F1713;
230
+ --color-text-on-soft-accent: #DDF7E9;
231
+
232
+ /* Accent */
233
+ --color-accent-primary: #53B487;
234
+ --color-accent-primary-hover: #69C598;
235
+ --color-accent-primary-active: #84D8AE;
236
+ --color-accent-secondary: #9AE7C7;
237
+ --color-accent-secondary-hover: #B2F0D5;
238
+ --color-accent-secondary-active: #C7F6E0;
239
+ --color-accent-soft: #294235;
240
+ --color-accent-soft-hover: #31503F;
241
+
242
+ /* Semantic */
243
+ --color-semantic-success: #45C787;
244
+ --color-semantic-success-soft: #1E3A2C;
245
+ --color-semantic-warning: #E7B04D;
246
+ --color-semantic-warning-soft: #3E3117;
247
+ --color-semantic-error: #F07A84;
248
+ --color-semantic-error-soft: #3D2024;
249
+ --color-semantic-info: #64B6E8;
250
+ --color-semantic-info-soft: #183444;
251
+
252
+ /* Field */
253
+ --color-field-fill: #202D25;
254
+ --color-field-editable: #23372B;
255
+ --color-field-focus: #294235;
256
+ --color-field-invalid: #3D2024;
257
+ --color-field-warning: #3E3117;
258
+
259
+ /* Status */
260
+ --color-status-ready: #45C787;
261
+ --color-status-in-progress: #64B6E8;
262
+ --color-status-paused: #7F9187;
263
+ --color-status-blocked: #F07A84;
264
+ --color-status-review: #53B487;
265
+ --color-status-draft: #7DA38F;
266
+
267
+ /* Comment */
268
+ --color-comment-marker: #53B487;
269
+ --color-comment-marker-hover: #69C598;
270
+ --color-comment-thread-bg: #1A2A22;
271
+
272
+ /* Change */
273
+ --color-change-insertion: #1E3A2C;
274
+ --color-change-deletion: #3D2024;
275
+ --color-change-comment: #21342A;
276
+ --color-change-selection: #294235;
277
+
278
+ /* Highlight (dimmed to avoid glare; same chroma family as light-mode yellow) */
279
+ --color-highlight-default: #B8A829;
280
+
281
+ /* Chart — categorical */
282
+ --color-chart-categorical-1: #53B487;
283
+ --color-chart-categorical-2: #9AE7C7;
284
+ --color-chart-categorical-3: #64B6E8;
285
+ --color-chart-categorical-4: #E7B04D;
286
+ --color-chart-categorical-5: #A996FF;
287
+ --color-chart-categorical-6: #F07A84;
288
+ --color-chart-categorical-7: #7DA38F;
289
+ --color-chart-categorical-8: #355746;
290
+
291
+ /* Chart — sequential */
292
+ --color-chart-sequential-1: #16211B;
293
+ --color-chart-sequential-2: #1D2E25;
294
+ --color-chart-sequential-3: #274234;
295
+ --color-chart-sequential-4: #35654F;
296
+ --color-chart-sequential-5: #53B487;
297
+ --color-chart-sequential-6: #9AE7C7;
298
+
299
+ /* Chart — diverging */
300
+ --color-chart-diverging-neg-strong: #F07A84;
301
+ --color-chart-diverging-neg: #C76069;
302
+ --color-chart-diverging-neutral: #2A3530;
303
+ --color-chart-diverging-pos: #69C598;
304
+ --color-chart-diverging-pos-strong: #9AE7C7;
305
+
306
+ /* Scope tints (§3.7.2) */
307
+ --color-scope-tint-blocked: #3D2024;
308
+ --color-scope-tint-in-scope: #274234;
309
+ --color-scope-tint-suggest: #3E3117;
310
+ --color-scope-tint-comment: #1A2A22;
311
+ --color-scope-tint-scheduled: #183444;
312
+ --color-scope-tint-proposed: #21342A;
313
+
314
+ /* Shadows */
315
+ --shadow-soft: 0 8px 24px rgba(0, 0, 0, 0.28);
316
+ --shadow-float: 0 16px 40px rgba(0, 0, 0, 0.4);
317
+ --shadow-focus: 0 0 0 3px rgba(154, 231, 199, 0.22);
318
+ }
319
+
320
+ /*
321
+ * Reduced-motion contract (designsystem §4.6 / §7.3).
322
+ * Collapses every motion token so any transition consuming `var(--motion-*)`
323
+ * becomes functionally instant. Components MUST read these tokens — never
324
+ * hardcode a numeric duration.
325
+ */
326
+ @media (prefers-reduced-motion: reduce) {
327
+ :root {
328
+ --motion-fast: 1ms;
329
+ --motion-default: 1ms;
330
+ --motion-slow: 1ms;
331
+ }
332
+ }
333
+
334
+ /*
335
+ * Density scale (designsystem §4.2 / Lane 6b.U5 consumer wiring).
336
+ *
337
+ * Components multiply spacing by `--space-density-multiplier`.
338
+ * Standard (1.0) is the default; compact (0.85) and comfortable (1.15)
339
+ * are opt-in via `data-density` on the root element.
340
+ * The hook `use-density.ts` reads and writes this attribute.
341
+ */
342
+ :root {
343
+ --space-density-multiplier: 1;
344
+ }
345
+ :root[data-density="compact"] {
346
+ --space-density-multiplier: 0.85;
347
+ }
348
+ :root[data-density="standard"] {
349
+ --space-density-multiplier: 1;
350
+ }
351
+ :root[data-density="comfortable"] {
352
+ --space-density-multiplier: 1.15;
353
+ }
354
+
355
+ /*
356
+ * Back-compat aliases (temporary — remove after full consumer sweep).
357
+ *
358
+ * These bind pre-6a names to their post-6a equivalents so that the
359
+ * existing @theme {} block in editor-theme.css and already-shipped
360
+ * component markup continue to resolve during the phased migration.
361
+ */
362
+ :root {
363
+ /* Legacy accent seed (was teal) → forest-green primary family */
364
+ --color-accent: var(--color-accent-primary);
365
+ /* Legacy single-name semantic tokens → canonical semantic family */
366
+ --color-danger: var(--color-semantic-error);
367
+ --color-danger-soft: var(--color-semantic-error-soft);
368
+ --color-warning: var(--color-semantic-warning);
369
+ --color-warning-soft: var(--color-semantic-warning-soft);
370
+ --color-success: var(--color-semantic-success);
371
+ --color-success-soft: var(--color-semantic-success-soft);
372
+ --color-info: var(--color-semantic-info);
373
+ --color-info-soft: var(--color-semantic-info-soft);
374
+ /* Legacy review markup names → change family */
375
+ --color-insert: var(--color-accent-primary);
376
+ --color-insert-soft: var(--color-change-insertion);
377
+ --color-delete: var(--color-semantic-error);
378
+ --color-delete-soft: var(--color-change-deletion);
379
+ --color-comment: var(--color-comment-marker);
380
+ --color-comment-soft: var(--color-change-comment);
381
+ --color-comment-strong: var(--color-comment-marker-hover);
382
+ /* Legacy L8 Phase A radius names → §4.3 scale */
383
+ --radius-panel: var(--radius-md);
384
+ --radius-card: var(--radius-sm);
385
+ --radius-control: var(--radius-sm);
386
+ --radius-page: 2px;
387
+ }