@arbidocs/blocks 0.4.97 → 0.4.99

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 (35) hide show
  1. package/dist/{chunk-RSUOOMPT.js → chunk-3ICWR3BK.js} +3 -3
  2. package/dist/{chunk-RSUOOMPT.js.map → chunk-3ICWR3BK.js.map} +1 -1
  3. package/dist/{chunk-HGJGALLN.cjs → chunk-44TPPPRJ.cjs} +462 -83
  4. package/dist/chunk-44TPPPRJ.cjs.map +1 -0
  5. package/dist/{chunk-QIEEFBZ5.js → chunk-4ZTIMQ7Z.js} +453 -85
  6. package/dist/chunk-4ZTIMQ7Z.js.map +1 -0
  7. package/dist/{chunk-YH6SSJDW.js → chunk-C5RF47LD.js} +3 -3
  8. package/dist/{chunk-YH6SSJDW.js.map → chunk-C5RF47LD.js.map} +1 -1
  9. package/dist/{chunk-EHB7J6SR.cjs → chunk-MABEOI4S.cjs} +5 -5
  10. package/dist/{chunk-EHB7J6SR.cjs.map → chunk-MABEOI4S.cjs.map} +1 -1
  11. package/dist/{chunk-GVOTXXZG.cjs → chunk-QBEUCOC7.cjs} +5 -5
  12. package/dist/{chunk-GVOTXXZG.cjs.map → chunk-QBEUCOC7.cjs.map} +1 -1
  13. package/dist/connect/docx.cjs +6 -6
  14. package/dist/connect/docx.js +4 -4
  15. package/dist/connect/index.cjs +3 -3
  16. package/dist/connect/index.js +2 -2
  17. package/dist/docx/NativeDocxEditor.d.ts +7 -0
  18. package/dist/docx/RibbonMenu.d.ts +3 -1
  19. package/dist/docx/definitions/fragment.d.ts +3 -1
  20. package/dist/docx/definitions/port.d.ts +6 -2
  21. package/dist/docx/index.cjs +68 -24
  22. package/dist/docx/index.d.ts +4 -0
  23. package/dist/docx/index.js +3 -3
  24. package/dist/docx/structural/trackedOrNoted.d.ts +51 -0
  25. package/dist/docx/structural/useTrackedOrNoted.d.ts +5 -0
  26. package/dist/docx/template/HouseTemplate.d.ts +64 -0
  27. package/dist/docx/template/HouseTemplatePanel.d.ts +6 -0
  28. package/dist/docx/template/QuickParts.d.ts +7 -0
  29. package/dist/docx/wordStyles.d.ts +3 -0
  30. package/dist/index.cjs +46 -46
  31. package/dist/index.js +3 -3
  32. package/package.json +4 -4
  33. package/src/docx/styles.css +102 -0
  34. package/dist/chunk-HGJGALLN.cjs.map +0 -1
  35. package/dist/chunk-QIEEFBZ5.js.map +0 -1
@@ -0,0 +1,64 @@
1
+ /**
2
+ * The house template inside the Word editor: which template applies (the workspace's, else the
3
+ * deployment's, else ARBI's built-in legal template), its Quick Parts, and where this document's
4
+ * styles have drifted from it. Mount `HouseTemplateProvider` inside `DocxEditor.Root`; the ribbon's
5
+ * Quick Parts, Design tab and the style box read it from context.
6
+ */
7
+ import React from 'react';
8
+ import { type LinkedLevel, type BuildingBlockInfo, type StyleDivergence } from '@arbidocs/coedit/template';
9
+ export type HouseTemplateSource = 'workspace' | 'deployment' | 'builtin';
10
+ export interface HouseTemplate {
11
+ /** The .dotx/.docx bytes. */
12
+ bytes: Uint8Array;
13
+ /** What to call it: its filename, or "ARBI legal template". */
14
+ name: string;
15
+ source: HouseTemplateSource;
16
+ /** The workspace document it is, when it is one. */
17
+ documentId?: string;
18
+ }
19
+ /** How the host stores and resolves house templates. */
20
+ export interface HouseTemplateHost {
21
+ /** The template that applies in this workspace. Falls back to the built-in one when it fails. */
22
+ load: () => Promise<HouseTemplate>;
23
+ /**
24
+ * Make a workspace document the workspace's house template. Present only when the user may
25
+ * (a workspace owner) and the server stores house templates.
26
+ */
27
+ setFromDocument?: (documentId: string) => Promise<void>;
28
+ }
29
+ export declare const BUILTIN_TEMPLATE_NAME = "ARBI legal template";
30
+ /** The file name a document records as its attached template (`w:attachedTemplate`). */
31
+ export declare const templateFileName: (t: Pick<HouseTemplate, "name">) => string;
32
+ /** ARBI's built-in UK legal template, with its Quick Parts. */
33
+ export declare function builtinHouseTemplate(): HouseTemplate;
34
+ /** The template a host resolves, or the built-in one when there is no host or it fails. */
35
+ export declare function resolveHouseTemplate(host?: HouseTemplateHost): Promise<HouseTemplate>;
36
+ interface HouseTemplateContextValue {
37
+ template: HouseTemplate;
38
+ blocks: readonly BuildingBlockInfo[];
39
+ /** Null until measured (or for a document that cannot be read). */
40
+ divergence: StyleDivergence | null;
41
+ /** The document was started from this template (it records it as attached). */
42
+ basedOnTemplate: boolean;
43
+ /** Outline levels linked to styles in this document (Level 1 → Level 2 …), by style id. */
44
+ levels: Readonly<Record<string, LinkedLevel>>;
45
+ /** Insert a Quick Part at the caret, with the styles, numbering and pictures it uses. */
46
+ insertBlock: (name: string) => boolean;
47
+ /** Measure the divergence again (after something brought styles in). */
48
+ refresh: () => void;
49
+ /** Present when this document may become the workspace's house template. */
50
+ setAsHouseTemplate?: () => Promise<void>;
51
+ editable: boolean;
52
+ }
53
+ export declare const useHouseTemplate: () => HouseTemplateContextValue | null;
54
+ export declare function HouseTemplateProvider({ host, documentId, editable, notify, enabled, children, }: {
55
+ /** False for a generating draft: no template chrome, no measuring. */
56
+ enabled?: boolean;
57
+ host?: HouseTemplateHost;
58
+ /** The stored document this editor shows; absent for an unsaved note. */
59
+ documentId?: string;
60
+ editable: boolean;
61
+ notify?: (message: string, kind: 'success' | 'error') => void;
62
+ children: React.ReactNode;
63
+ }): React.JSX.Element;
64
+ export {};
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Design › House template: which template new documents start from, whether this document's
3
+ * styles still match it, and — for a workspace owner — making this document the house template.
4
+ */
5
+ import React from 'react';
6
+ export declare function HouseTemplatePanel(): React.JSX.Element | null;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Insert › Quick Parts: the house template's building blocks (execution blocks, document markings,
3
+ * document skeletons) by category, each with a preview of its text; picking one inserts it at the
4
+ * caret with the styles, numbering and pictures it uses.
5
+ */
6
+ import React from 'react';
7
+ export declare function QuickParts(): React.JSX.Element | null;
@@ -4,6 +4,7 @@
4
4
  * styles and notes.
5
5
  */
6
6
  import type { ParagraphStyleOption } from '@docx-editor.dev/react';
7
+ import type { StyleDivergence } from '@arbidocs/coedit/template';
7
8
  /** Word's quick picks, by the built-in style names `styles.xml` gives them. */
8
9
  export declare const QUICK_STYLES: readonly ["Normal", "Title", "heading 1", "heading 2", "heading 3"];
9
10
  /**
@@ -19,3 +20,5 @@ export declare function styleLabel(name: string): string;
19
20
  * Ctrl+Shift+N; read from `code` so a keyboard layout cannot move them.
20
21
  */
21
22
  export declare function wordShortcut(event: Pick<KeyboardEvent, 'ctrlKey' | 'metaKey' | 'altKey' | 'shiftKey' | 'code'>): 'footnote' | 'endnote' | 'heading 1' | 'heading 2' | 'heading 3' | 'Normal' | null;
23
+ /** A summary of how the document differs, for a tooltip; null when it matches. */
24
+ export declare function divergenceSummary(divergence: StyleDivergence | null): string | null;
package/dist/index.cjs CHANGED
@@ -2,16 +2,16 @@
2
2
  'use strict';
3
3
 
4
4
  var chunkQI6AIHWP_cjs = require('./chunk-QI6AIHWP.cjs');
5
- var chunk46IU3UPF_cjs = require('./chunk-46IU3UPF.cjs');
6
5
  var chunkHBF4BDRU_cjs = require('./chunk-HBF4BDRU.cjs');
6
+ var chunk46IU3UPF_cjs = require('./chunk-46IU3UPF.cjs');
7
7
  var chunk65THHQVB_cjs = require('./chunk-65THHQVB.cjs');
8
8
  var chunk7QDX2CO4_cjs = require('./chunk-7QDX2CO4.cjs');
9
9
  var chunkMJCCBMM5_cjs = require('./chunk-MJCCBMM5.cjs');
10
10
  var chunkELR74ME6_cjs = require('./chunk-ELR74ME6.cjs');
11
11
  var chunkXAJIKT6Y_cjs = require('./chunk-XAJIKT6Y.cjs');
12
12
  var chunkLENXDIMY_cjs = require('./chunk-LENXDIMY.cjs');
13
- var chunkAOFATOT3_cjs = require('./chunk-AOFATOT3.cjs');
14
13
  var chunkD54JXTPG_cjs = require('./chunk-D54JXTPG.cjs');
14
+ var chunkAOFATOT3_cjs = require('./chunk-AOFATOT3.cjs');
15
15
  var chunkOUW6G4O2_cjs = require('./chunk-OUW6G4O2.cjs');
16
16
  var chunkVPPX5XUF_cjs = require('./chunk-VPPX5XUF.cjs');
17
17
  require('./chunk-RC25WMVB.cjs');
@@ -966,10 +966,6 @@ Object.defineProperty(exports, "stripMarkdownLinks", {
966
966
  enumerable: true,
967
967
  get: function () { return chunkQI6AIHWP_cjs.stripMarkdownLinks; }
968
968
  });
969
- Object.defineProperty(exports, "UsageMeter", {
970
- enumerable: true,
971
- get: function () { return chunk46IU3UPF_cjs.UsageMeter; }
972
- });
973
969
  Object.defineProperty(exports, "ActionCluster", {
974
970
  enumerable: true,
975
971
  get: function () { return chunkHBF4BDRU_cjs.ActionCluster; }
@@ -1146,6 +1142,10 @@ Object.defineProperty(exports, "workspaceKindMeta", {
1146
1142
  enumerable: true,
1147
1143
  get: function () { return chunkHBF4BDRU_cjs.workspaceKindMeta; }
1148
1144
  });
1145
+ Object.defineProperty(exports, "UsageMeter", {
1146
+ enumerable: true,
1147
+ get: function () { return chunk46IU3UPF_cjs.UsageMeter; }
1148
+ });
1149
1149
  Object.defineProperty(exports, "ArticleList", {
1150
1150
  enumerable: true,
1151
1151
  get: function () { return chunk65THHQVB_cjs.ArticleList; }
@@ -1514,6 +1514,46 @@ Object.defineProperty(exports, "workspaceActivityTarget", {
1514
1514
  enumerable: true,
1515
1515
  get: function () { return chunkLENXDIMY_cjs.workspaceActivityTarget; }
1516
1516
  });
1517
+ Object.defineProperty(exports, "DEFAULT_DETAIL_PANEL_LABELS", {
1518
+ enumerable: true,
1519
+ get: function () { return chunkD54JXTPG_cjs.DEFAULT_DETAIL_PANEL_LABELS; }
1520
+ });
1521
+ Object.defineProperty(exports, "DetailBody", {
1522
+ enumerable: true,
1523
+ get: function () { return chunkD54JXTPG_cjs.DetailBody; }
1524
+ });
1525
+ Object.defineProperty(exports, "DetailEmpty", {
1526
+ enumerable: true,
1527
+ get: function () { return chunkD54JXTPG_cjs.DetailEmpty; }
1528
+ });
1529
+ Object.defineProperty(exports, "DetailField", {
1530
+ enumerable: true,
1531
+ get: function () { return chunkD54JXTPG_cjs.DetailField; }
1532
+ });
1533
+ Object.defineProperty(exports, "DetailFields", {
1534
+ enumerable: true,
1535
+ get: function () { return chunkD54JXTPG_cjs.DetailFields; }
1536
+ });
1537
+ Object.defineProperty(exports, "DetailLinkItem", {
1538
+ enumerable: true,
1539
+ get: function () { return chunkD54JXTPG_cjs.DetailLinkItem; }
1540
+ });
1541
+ Object.defineProperty(exports, "DetailLinkList", {
1542
+ enumerable: true,
1543
+ get: function () { return chunkD54JXTPG_cjs.DetailLinkList; }
1544
+ });
1545
+ Object.defineProperty(exports, "DetailLoading", {
1546
+ enumerable: true,
1547
+ get: function () { return chunkD54JXTPG_cjs.DetailLoading; }
1548
+ });
1549
+ Object.defineProperty(exports, "DetailPanel", {
1550
+ enumerable: true,
1551
+ get: function () { return chunkD54JXTPG_cjs.DetailPanel; }
1552
+ });
1553
+ Object.defineProperty(exports, "DetailSection", {
1554
+ enumerable: true,
1555
+ get: function () { return chunkD54JXTPG_cjs.DetailSection; }
1556
+ });
1517
1557
  Object.defineProperty(exports, "DEFINITIONS_LABEL", {
1518
1558
  enumerable: true,
1519
1559
  get: function () { return chunkAOFATOT3_cjs.DEFINITIONS_LABEL; }
@@ -1562,46 +1602,6 @@ Object.defineProperty(exports, "toDefinition", {
1562
1602
  enumerable: true,
1563
1603
  get: function () { return chunkAOFATOT3_cjs.toDefinition; }
1564
1604
  });
1565
- Object.defineProperty(exports, "DEFAULT_DETAIL_PANEL_LABELS", {
1566
- enumerable: true,
1567
- get: function () { return chunkD54JXTPG_cjs.DEFAULT_DETAIL_PANEL_LABELS; }
1568
- });
1569
- Object.defineProperty(exports, "DetailBody", {
1570
- enumerable: true,
1571
- get: function () { return chunkD54JXTPG_cjs.DetailBody; }
1572
- });
1573
- Object.defineProperty(exports, "DetailEmpty", {
1574
- enumerable: true,
1575
- get: function () { return chunkD54JXTPG_cjs.DetailEmpty; }
1576
- });
1577
- Object.defineProperty(exports, "DetailField", {
1578
- enumerable: true,
1579
- get: function () { return chunkD54JXTPG_cjs.DetailField; }
1580
- });
1581
- Object.defineProperty(exports, "DetailFields", {
1582
- enumerable: true,
1583
- get: function () { return chunkD54JXTPG_cjs.DetailFields; }
1584
- });
1585
- Object.defineProperty(exports, "DetailLinkItem", {
1586
- enumerable: true,
1587
- get: function () { return chunkD54JXTPG_cjs.DetailLinkItem; }
1588
- });
1589
- Object.defineProperty(exports, "DetailLinkList", {
1590
- enumerable: true,
1591
- get: function () { return chunkD54JXTPG_cjs.DetailLinkList; }
1592
- });
1593
- Object.defineProperty(exports, "DetailLoading", {
1594
- enumerable: true,
1595
- get: function () { return chunkD54JXTPG_cjs.DetailLoading; }
1596
- });
1597
- Object.defineProperty(exports, "DetailPanel", {
1598
- enumerable: true,
1599
- get: function () { return chunkD54JXTPG_cjs.DetailPanel; }
1600
- });
1601
- Object.defineProperty(exports, "DetailSection", {
1602
- enumerable: true,
1603
- get: function () { return chunkD54JXTPG_cjs.DetailSection; }
1604
- });
1605
1605
  Object.defineProperty(exports, "DEFAULT_SEARCH_HIT_LABELS", {
1606
1606
  enumerable: true,
1607
1607
  get: function () { return chunkOUW6G4O2_cjs.DEFAULT_SEARCH_HIT_LABELS; }
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  export { ApplyLabelButton, ApplyLabelDialog, DEFAULT_APPLY_LABEL_DIALOG_LABELS, DEFAULT_RELEVANCE_STEPS, DEFAULT_SEARCH_BAR_LABELS, DEFAULT_SEARCH_EMPTY_STATE_LABELS, DEFAULT_SEARCH_GROUP_HEADER_LABELS, DEFAULT_SEARCH_NO_RESULTS_LABELS, DEFAULT_SEARCH_PAGINATION_LABELS, DEFAULT_SEARCH_TOTALS_LABELS, DOCUMENT_SEARCH_NOUNS, Highlight, RelevanceThreshold, SearchBar, SearchControlsBar, SearchEmptyState, SearchErrorBanner, SearchGroupCard, SearchGroupHeader, SearchNoResults, SearchPageBody, SearchPageFrame, SearchPageHeader, SearchPagination, SearchPillToggle, SearchResultList, SearchResultsInner, SearchResultsMain, SearchToolbarRow, SearchTotalsHeadline, getPageNumbers, highlightTerms, searchNouns, splitByTerms, stripMarkdownLinks } from './chunk-2MJWWPHY.js';
3
- export { UsageMeter } from './chunk-D5T53XCL.js';
4
3
  export { ActionCluster, AskField, AskRow, AskTrigger, DEFAULT_ASK_FIELD_LABELS, DEFAULT_INSTALL_PROMPT_LABELS, DEFAULT_MOBILE_BARS_LABELS, DEFAULT_OFFLINE_PILL_LABELS, DEFAULT_REMOTE_CONTROL_PILL_LABELS, DEFAULT_SIDEBAR_LABELS, DEFAULT_TIP_CARD_LABELS, DEFAULT_WORKSPACE_KIND_LABELS, DEFAULT_WORKSPACE_SWITCHER_LABELS, INSTALL_PROMPT_DISMISSED_KEY, InfoBar, InstallPrompt, MobileAppBar, MobileTabBar, NotificationBell, OfflinePill, RemoteControlPill, STATUS_ROW_BASE_CLASS, STATUS_ROW_TONES, Sidebar, SidebarBadgeRow, SidebarRowAction, SidebarRowHoverContext, SplitLayout, StatusBadge, StatusRow, TipCard, UserMenu, WorkspaceIdentity, WorkspaceSwitcher, getInstallInstructions, initInstallPrompt, isIosDevice, promptAppInstall, resolveSidebarLayout, useInstallPrompt, useSidebarContext, useSidebarSettle, workspaceKindColor, workspaceKindMeta } from './chunk-VLOPZHFH.js';
4
+ export { UsageMeter } from './chunk-D5T53XCL.js';
5
5
  export { ArticleList, Chart, CheckList, CollectionDetail, CtaBand, DefinitionList, EditorialHeading, EditorialHero, EditorialProse, EditorialSection, Eyebrow, PanelGrid, ProofStrip, PullQuote, Reveal, TagList } from './chunk-LYUO3E6V.js';
6
6
  export { DataTable, DataTableBlock, MetricCard, PageHeader, StatGroup } from './chunk-ZCF2JJFA.js';
7
7
  export { Accordion, AvatarBlock, Banner, BlockImage, BlockLink, CTABanner, Columns, ContactForm, Container, FAQ, FONT_PAIRINGS, FeatureGrid, Footer, Gallery, Hero, ListBlock, LogoCloud, MediaText, Navbar, PricingTable, ProfileCard, RichTextBlock, SectionHeading, Spacer, Steps, THEME_STYLE_ID, Tabs, TeamGrid, Testimonial, TestimonialGrid, ThemeEditor, VideoEmbed, applyFontVars, applyStoredTheme, applyThemeVars, clearFontVars, clearThemeVars, createThemeStore, fontPackages, getFontPairing, matchFontPairing, tid, toEmbedUrl, toHslTriplet } from './chunk-DLBUFHLY.js';
@@ -9,10 +9,10 @@ export { Timeline } from './chunk-OVEQERPO.js';
9
9
  export { MemberAvatarStack } from './chunk-XNOASBGW.js';
10
10
  import { DEFAULT_TAG_TABLE_LABELS, rowLinks, TagTableCell } from './chunk-Z3G65XHZ.js';
11
11
  export { DEFAULT_TAG_COLUMNS_EDITOR_LABELS, DEFAULT_TAG_TABLE_DOCX_LABELS, DEFAULT_TAG_TABLE_LABELS, DEFAULT_THREAD_FOLLOW_LABELS, DEFAULT_WORKSPACE_ACTIVITY_LABELS, DEFAULT_WORKSPACE_NOTIFICATION_MENU_LABELS, TAG_TABLE_DOCX_LANDSCAPE_AFTER, TagColumnsEditor, TagTable, TagTableCell, ThreadFollowButton, ThreadFollowMenuItem, WorkspaceActivityList, WorkspaceNotificationMenu, cellText, cellValue, fieldWrites, isGap, parseCell, rowLinks, tagTableDocumentXml, tagTableDocx, tagTableMarkdown, workspaceActivityHeadline, workspaceActivityTarget } from './chunk-Z3G65XHZ.js';
12
- import { groupDefinitions, compareDefinitions, minuteUtc, page, cell, documentXml, paragraph, docxPackage, TABLE_DOCUMENT_STYLES } from './chunk-D3QPYKZG.js';
13
- export { DEFINITIONS_LABEL, DEFINITION_BOOKMARK_PREFIX, compareDefinitions, compareTerms, definitionBookmark, definitionIdOfBookmark, definitionLabels, filterTermGroups, groupDefinitions, parseDefinition, termKey, toDefinition } from './chunk-D3QPYKZG.js';
14
12
  import { DetailLoading, DetailBody, DetailSection, DetailFields, DetailField, DetailLinkList, DetailLinkItem, DetailEmpty } from './chunk-ZCOVDK2E.js';
15
13
  export { DEFAULT_DETAIL_PANEL_LABELS, DetailBody, DetailEmpty, DetailField, DetailFields, DetailLinkItem, DetailLinkList, DetailLoading, DetailPanel, DetailSection } from './chunk-ZCOVDK2E.js';
14
+ import { groupDefinitions, compareDefinitions, minuteUtc, page, cell, documentXml, paragraph, docxPackage, TABLE_DOCUMENT_STYLES } from './chunk-D3QPYKZG.js';
15
+ export { DEFINITIONS_LABEL, DEFINITION_BOOKMARK_PREFIX, compareDefinitions, compareTerms, definitionBookmark, definitionIdOfBookmark, definitionLabels, filterTermGroups, groupDefinitions, parseDefinition, termKey, toDefinition } from './chunk-D3QPYKZG.js';
16
16
  export { DEFAULT_SEARCH_HIT_LABELS, SearchHit } from './chunk-A2YAC22G.js';
17
17
  export { TIMELINE_ZOOM, TimelineCalendar, TimelineGantt, TimelineZoomControl, dayKey, formatSpan, monthLabel, parseIso, utcDay } from './chunk-4EZVCGRL.js';
18
18
  import './chunk-AF6RDAJF.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arbidocs/blocks",
3
- "version": "0.4.97",
3
+ "version": "0.4.99",
4
4
  "description": "Composable, domain-neutral UI blocks for ARBI apps, organised by capability (retrieval, facts, agents, workspaces, citations, collaboration) plus shell, theme and site primitives, on top of @arbidocs/react.",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
@@ -266,8 +266,8 @@
266
266
  "example:test:e2e": "playwright test -c examples/custom-ui/playwright.config.ts"
267
267
  },
268
268
  "dependencies": {
269
- "@arbidocs/client": "0.4.97",
270
- "@arbidocs/coedit": "0.4.97",
269
+ "@arbidocs/client": "0.4.99",
270
+ "@arbidocs/coedit": "0.4.99",
271
271
  "@dnd-kit/core": "^6.3.1",
272
272
  "@dnd-kit/sortable": "^10.0.0",
273
273
  "@dnd-kit/utilities": "^3.2.2",
@@ -293,7 +293,7 @@
293
293
  "zustand": "^5.0.14"
294
294
  },
295
295
  "peerDependencies": {
296
- "@arbidocs/react": "0.4.97",
296
+ "@arbidocs/react": "0.4.99",
297
297
  "@docx-editor.dev/core": "2.28.0",
298
298
  "@docx-editor.dev/react": "2.28.0",
299
299
  "@lexical/html": "0.35.0",
@@ -966,3 +966,105 @@
966
966
  color: hsl(var(--muted-foreground));
967
967
  font-size: 13px;
968
968
  }
969
+
970
+ /* House template: a dot on the style box (and on a style) that differs from the house template. */
971
+ .native-docx-style-diverged {
972
+ flex: none;
973
+ width: 6px;
974
+ height: 6px;
975
+ margin-left: auto;
976
+ border-radius: 50%;
977
+ background: hsl(var(--warning, 38 92% 50%));
978
+ }
979
+ .native-docx-style-list > li {
980
+ display: flex;
981
+ align-items: center;
982
+ gap: 6px;
983
+ }
984
+
985
+ /* Insert › Quick Parts and Design › House template panels. */
986
+ .native-docx-ribbon-menu:has([data-testid='docx-quick-parts']) .native-docx-ribbon-popover,
987
+ .native-docx-ribbon-menu:has([data-testid='docx-house-template']) .native-docx-ribbon-popover {
988
+ width: 340px;
989
+ padding: 8px;
990
+ }
991
+ .native-docx-quick-parts {
992
+ display: flex;
993
+ flex-direction: column;
994
+ gap: 8px;
995
+ width: 100%;
996
+ max-height: 60vh;
997
+ overflow-y: auto;
998
+ }
999
+ .native-docx-quick-parts h3 {
1000
+ margin: 0 0 4px;
1001
+ color: hsl(var(--muted-foreground));
1002
+ font-size: 11px;
1003
+ font-weight: 600;
1004
+ text-transform: uppercase;
1005
+ letter-spacing: 0.04em;
1006
+ }
1007
+ .native-docx-quick-parts ul {
1008
+ margin: 0;
1009
+ padding: 0;
1010
+ list-style: none;
1011
+ }
1012
+ .native-docx-quick-parts button {
1013
+ display: flex;
1014
+ flex-direction: column;
1015
+ width: 100%;
1016
+ padding: 6px 8px;
1017
+ border: 0;
1018
+ border-radius: 4px;
1019
+ background: transparent;
1020
+ color: inherit;
1021
+ text-align: left;
1022
+ cursor: pointer;
1023
+ }
1024
+ .native-docx-quick-parts button:hover:not(:disabled) {
1025
+ background: hsl(var(--muted));
1026
+ }
1027
+ .native-docx-quick-part-name {
1028
+ font-size: 13px;
1029
+ font-weight: 500;
1030
+ }
1031
+ .native-docx-quick-part-preview {
1032
+ overflow: hidden;
1033
+ color: hsl(var(--muted-foreground));
1034
+ font-size: 12px;
1035
+ text-overflow: ellipsis;
1036
+ white-space: nowrap;
1037
+ }
1038
+ .native-docx-quick-parts-source,
1039
+ .native-docx-house-template p {
1040
+ margin: 0;
1041
+ color: hsl(var(--muted-foreground));
1042
+ font-size: 12px;
1043
+ }
1044
+ .native-docx-house-template {
1045
+ display: flex;
1046
+ flex-direction: column;
1047
+ gap: 8px;
1048
+ width: 100%;
1049
+ }
1050
+ .native-docx-house-template strong {
1051
+ color: hsl(var(--foreground));
1052
+ font-size: 13px;
1053
+ }
1054
+ .native-docx-house-template-actions {
1055
+ display: flex;
1056
+ flex-wrap: wrap;
1057
+ gap: 6px;
1058
+ }
1059
+ .native-docx-house-template-actions button {
1060
+ display: inline-flex;
1061
+ align-items: center;
1062
+ gap: 4px;
1063
+ padding: 4px 8px;
1064
+ border: 1px solid hsl(var(--border));
1065
+ border-radius: 4px;
1066
+ background: hsl(var(--background));
1067
+ color: inherit;
1068
+ font-size: 12px;
1069
+ cursor: pointer;
1070
+ }