@formicoidea/labre-core 0.42.0 → 0.43.1
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.
- package/dist/_pkgs/affine-block-data-view/configs/tooltips.js +1 -1
- package/dist/_pkgs/affine-block-database/configs/tooltips.js +1 -1
- package/dist/_pkgs/affine-block-edgeless-text/edgeless-text-block.js +4 -2
- package/dist/_pkgs/affine-block-embed/common/iframe-sandbox.d.ts +39 -0
- package/dist/_pkgs/affine-block-embed/common/iframe-sandbox.js +39 -0
- package/dist/_pkgs/affine-block-embed/embed-figma-block/embed-figma-block.js +2 -0
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-error-card.d.ts +14 -1
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-error-card.js +21 -2
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/consts.d.ts +0 -2
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/consts.js +2 -5
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/embed-iframe-block.d.ts +1 -1
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/embed-iframe-block.js +14 -6
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/types.d.ts +16 -0
- package/dist/_pkgs/affine-block-embed/embed-iframe-block/types.js +17 -1
- package/dist/_pkgs/affine-block-embed/embed-loom-block/embed-loom-block.js +2 -0
- package/dist/_pkgs/affine-block-embed/embed-youtube-block/embed-youtube-block.js +2 -0
- package/dist/_pkgs/affine-block-embed/index.d.ts +1 -0
- package/dist/_pkgs/affine-block-embed/index.js +1 -0
- package/dist/_pkgs/affine-block-embed/translations.d.ts +8 -0
- package/dist/_pkgs/affine-block-embed/translations.js +28 -0
- package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/embed-linked-doc-block.js +4 -2
- package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-synced-doc-block.js +2 -2
- package/dist/_pkgs/affine-block-frame/frame-manager.js +5 -2
- package/dist/_pkgs/affine-block-list/utils/get-list-icon.js +3 -1
- package/dist/_pkgs/affine-block-note/configs/tooltips.js +1 -1
- package/dist/_pkgs/affine-block-root/adapters/html.js +2 -2
- package/dist/_pkgs/affine-block-root/commands/copy-link-commands.d.ts +2 -0
- package/dist/_pkgs/affine-block-root/commands/copy-link-commands.js +155 -0
- package/dist/_pkgs/affine-block-root/index.d.ts +1 -0
- package/dist/_pkgs/affine-block-root/index.js +1 -0
- package/dist/_pkgs/affine-block-root/view.js +2 -0
- package/dist/_pkgs/affine-block-surface/extensions/interchange-import.js +13 -1
- package/dist/_pkgs/affine-block-surface/extensions/legend.d.ts +8 -0
- package/dist/_pkgs/affine-block-surface/extensions/legend.js +59 -3
- package/dist/_pkgs/affine-block-surface/extensions/morph-toolbar.js +4 -0
- package/dist/_pkgs/affine-block-surface/extensions/svg-sketch-translations.d.ts +3 -0
- package/dist/_pkgs/affine-block-surface/extensions/svg-sketch-translations.js +23 -0
- package/dist/_pkgs/affine-block-surface/extensions/svg-sketch.d.ts +1 -1
- package/dist/_pkgs/affine-block-surface/extensions/svg-sketch.js +12 -4
- package/dist/_pkgs/affine-block-surface/framework-background/background-view.js +1 -1
- package/dist/_pkgs/affine-block-surface/framework-background/fit.d.ts +36 -0
- package/dist/_pkgs/affine-block-surface/framework-background/fit.js +30 -0
- package/dist/_pkgs/affine-block-surface/framework-background/index.d.ts +1 -0
- package/dist/_pkgs/affine-block-surface/framework-background/index.js +1 -0
- package/dist/_pkgs/affine-block-surface/renderer/element-highlight-overlay.js +2 -7
- package/dist/_pkgs/affine-block-surface-ref/configs/tooltips.js +2 -2
- package/dist/_pkgs/affine-components/color-picker/palette-carousel.js +5 -0
- package/dist/_pkgs/affine-components/color-picker/styles.js +1 -1
- package/dist/_pkgs/affine-components/context-menu/button.js +3 -1
- package/dist/_pkgs/affine-components/icons/ai.js +3 -3
- package/dist/_pkgs/affine-components/icons/list.js +7 -1
- package/dist/_pkgs/affine-components/size-dropdown-menu/dropdown-menu.js +6 -1
- package/dist/_pkgs/affine-components/toolbar/index.d.ts +1 -1
- package/dist/_pkgs/affine-components/toolbar/index.js +1 -1
- package/dist/_pkgs/affine-components/toolbar/menu-button.d.ts +7 -0
- package/dist/_pkgs/affine-components/toolbar/menu-button.js +30 -0
- package/dist/_pkgs/affine-components/toolbar/picker-menu.d.ts +16 -1
- package/dist/_pkgs/affine-components/toolbar/picker-menu.js +2 -2
- package/dist/_pkgs/affine-components/toolbar/toolbar.d.ts +1 -0
- package/dist/_pkgs/affine-components/toolbar/toolbar.js +67 -0
- package/dist/_pkgs/affine-fragment-frame-panel/card/frame-card-title-editor.js +1 -1
- package/dist/_pkgs/affine-fragment-frame-panel/card/frame-card.js +1 -1
- package/dist/_pkgs/affine-gfx-brush/toolbar/components/eraser/icons.js +1 -1
- package/dist/_pkgs/affine-gfx-connector/direction/direction-reveal.d.ts +11 -2
- package/dist/_pkgs/affine-gfx-connector/direction/direction-reveal.js +11 -2
- package/dist/_pkgs/affine-gfx-connector/text/edgeless-connector-label-editor.js +3 -2
- package/dist/_pkgs/affine-gfx-connector/toolbar/config.js +23 -7
- package/dist/_pkgs/affine-gfx-connector/translations.d.ts +3 -0
- package/dist/_pkgs/affine-gfx-connector/translations.js +23 -0
- package/dist/_pkgs/affine-gfx-mindmap/indicator-overlay/index.js +6 -2
- package/dist/_pkgs/affine-gfx-mindmap/toolbar/config.js +4 -2
- package/dist/_pkgs/affine-gfx-mindmap/translations.d.ts +6 -0
- package/dist/_pkgs/affine-gfx-mindmap/translations.js +10 -0
- package/dist/_pkgs/affine-gfx-shape/toolbar/config.js +4 -2
- package/dist/_pkgs/affine-gfx-shape/translations.d.ts +7 -0
- package/dist/_pkgs/affine-gfx-shape/translations.js +11 -0
- package/dist/_pkgs/affine-gfx-template/builtin/other.js +13 -7
- package/dist/_pkgs/affine-gfx-template/toolbar/template-loading.js +1 -1
- package/dist/_pkgs/affine-gfx-template/translations.d.ts +5 -0
- package/dist/_pkgs/affine-gfx-template/translations.js +38 -0
- package/dist/_pkgs/affine-gfx-text/edgeless-text-editor.js +3 -2
- package/dist/_pkgs/affine-gfx-text/toolbar/actions.js +3 -1
- package/dist/_pkgs/affine-gfx-text/translations.d.ts +8 -0
- package/dist/_pkgs/affine-gfx-text/translations.js +12 -0
- package/dist/_pkgs/affine-inline-latex/latex-node/latex-editor-menu.js +2 -1
- package/dist/_pkgs/affine-model/consts/text.d.ts +15 -2
- package/dist/_pkgs/affine-model/consts/text.js +25 -1
- package/dist/_pkgs/affine-shared/services/font-loader/config.d.ts +13 -2
- package/dist/_pkgs/affine-shared/services/font-loader/config.js +43 -54
- package/dist/_pkgs/affine-shared/services/theme-service.d.ts +19 -0
- package/dist/_pkgs/affine-shared/services/theme-service.js +24 -0
- package/dist/_pkgs/affine-shared/services/translation-service/chrome.d.ts +20 -0
- package/dist/_pkgs/affine-shared/services/translation-service/chrome.js +81 -0
- package/dist/_pkgs/affine-widget-edgeless-dragging-area/edgeless-dragging-area-rect.js +2 -2
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/utils.js +5 -1
- package/dist/_pkgs/affine-widget-edgeless-toolbar/config/types.d.ts +15 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/config/utils.d.ts +1 -1
- package/dist/_pkgs/affine-widget-edgeless-toolbar/config/utils.js +7 -2
- package/dist/_pkgs/affine-widget-edgeless-toolbar/panel/font-family-panel.d.ts +18 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/panel/font-family-panel.js +52 -6
- package/dist/_pkgs/affine-widget-edgeless-toolbar/translations.d.ts +6 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/translations.js +10 -0
- package/dist/_pkgs/affine-widget-frame-title/edgeless-frame-title-editor.js +2 -1
- package/dist/_pkgs/affine-widget-slash-menu/translations.d.ts +16 -0
- package/dist/_pkgs/affine-widget-slash-menu/translations.js +23 -1
- package/dist/_pkgs/affine-widget-toolbar/utils.js +57 -14
- package/dist/_pkgs/data-view/core/detail/field.js +2 -1
- package/dist/_pkgs/data-view/core/filter/literal/define.js +3 -1
- package/dist/_pkgs/data-view/core/group-by/renderer/boolean-group.js +1 -1
- package/dist/_pkgs/data-view/property-presets/checkbox/cell-renderer.js +8 -2
- package/dist/_pkgs/data-view/view-presets/kanban/pc/cell.js +1 -1
- package/dist/_pkgs/data-view/view-presets/kanban/pc/controller/drag.js +2 -1
- package/dist/_pkgs/data-view/view-presets/table/pc/controller/drag.js +2 -1
- package/dist/_pkgs/data-view/view-presets/table/pc/controller/selection.js +1 -1
- package/dist/_pkgs/data-view/view-presets/table/pc/header/vertical-indicator.js +2 -1
- package/dist/_pkgs/data-view/view-presets/table/pc/row/row-select-checkbox.js +3 -1
- package/dist/_pkgs/data-view/view-presets/table/pc-virtual/controller/drag.js +2 -1
- package/dist/_pkgs/data-view/view-presets/table/pc-virtual/controller/selection.js +1 -1
- package/dist/_pkgs/data-view/view-presets/table/pc-virtual/group/top/header/vertical-indicator.js +2 -1
- package/dist/_pkgs/data-view/view-presets/table/pc-virtual/row/row-header.js +3 -1
- package/dist/_pkgs/std/gfx/model/surface/role.d.ts +10 -5
- package/dist/commands.js +2 -1
- package/dist/translations.js +5 -0
- package/package.json +5 -1
|
@@ -21,6 +21,13 @@ export declare const SHAPE_TEXT_FIT_OVERFLOW: ChromeWording;
|
|
|
21
21
|
export declare const SHAPE_TEXT_FIT_ARIA: ChromeWording;
|
|
22
22
|
export declare const SHAPE_TEXT_FIT_TOOLTIP: ChromeWording;
|
|
23
23
|
export declare const SHAPE_SWITCH_TYPE_LABEL: ChromeWording;
|
|
24
|
+
/**
|
|
25
|
+
* The accessible name of the shape-type menu SHELL (#390) — its own wording,
|
|
26
|
+
* not `` `${SHAPE_SWITCH_TYPE_LABEL}-menu` ``, which is what produced
|
|
27
|
+
* "changer le type de forme-menu" on a French host. The fallback is the exact
|
|
28
|
+
* identifier that composition produced in English.
|
|
29
|
+
*/
|
|
30
|
+
export declare const SHAPE_SWITCH_TYPE_MENU_ARIA: ChromeWording;
|
|
24
31
|
export declare const SHAPE_ADD_TEXT_TOOLTIP: ChromeWording;
|
|
25
32
|
export declare const SHAPE_EDIT_VERTICES_TOOLTIP: ChromeWording;
|
|
26
33
|
export declare const SHAPE_NAME_SQUARE: ChromeWording;
|
|
@@ -41,6 +41,16 @@ export const SHAPE_SWITCH_TYPE_LABEL = [
|
|
|
41
41
|
'com.labre.shape.toolbar.switch-type',
|
|
42
42
|
'Switch shape type',
|
|
43
43
|
];
|
|
44
|
+
/**
|
|
45
|
+
* The accessible name of the shape-type menu SHELL (#390) — its own wording,
|
|
46
|
+
* not `` `${SHAPE_SWITCH_TYPE_LABEL}-menu` ``, which is what produced
|
|
47
|
+
* "changer le type de forme-menu" on a French host. The fallback is the exact
|
|
48
|
+
* identifier that composition produced in English.
|
|
49
|
+
*/
|
|
50
|
+
export const SHAPE_SWITCH_TYPE_MENU_ARIA = [
|
|
51
|
+
'com.labre.shape.toolbar.switch-type-menu',
|
|
52
|
+
'switch shape type-menu',
|
|
53
|
+
];
|
|
44
54
|
export const SHAPE_ADD_TEXT_TOOLTIP = ADD_TEXT_TOOLTIP;
|
|
45
55
|
export const SHAPE_EDIT_VERTICES_TOOLTIP = [
|
|
46
56
|
'com.labre.shape.toolbar.edit-vertices',
|
|
@@ -83,6 +93,7 @@ export const SHAPE_WORDINGS = [
|
|
|
83
93
|
SHAPE_TEXT_FIT_ARIA,
|
|
84
94
|
SHAPE_TEXT_FIT_TOOLTIP,
|
|
85
95
|
SHAPE_SWITCH_TYPE_LABEL,
|
|
96
|
+
SHAPE_SWITCH_TYPE_MENU_ARIA,
|
|
86
97
|
SHAPE_EDIT_VERTICES_TOOLTIP,
|
|
87
98
|
SHAPE_NAME_SQUARE,
|
|
88
99
|
SHAPE_NAME_ELLIPSE,
|
|
@@ -2,7 +2,7 @@ import { ConnectorMode, FontFamily, FontWeight, PointStyle, ShapeStyle, StrokeSt
|
|
|
2
2
|
import { NOTATION_NEUTRALS } from '../../affine-shared/consts/index.js';
|
|
3
3
|
import { fillPlaceholders, translateKey, } from '../../affine-shared/services/index.js';
|
|
4
4
|
import { makeTemplateSnapshot, surfaceText, } from '../make-snapshot.js';
|
|
5
|
-
import { BMC_SEED_CHANNELS, BMC_SEED_COST_STRUCTURE, BMC_SEED_CUSTOMER_RELATIONSHIPS, BMC_SEED_CUSTOMER_SEGMENTS, BMC_SEED_DATE, BMC_SEED_DESIGNED_BY, BMC_SEED_DESIGNED_FOR, BMC_SEED_KEY_ACTIVITIES, BMC_SEED_KEY_PARTNERSHIPS, BMC_SEED_KEY_RESOURCES, BMC_SEED_REVENUE_STREAMS, BMC_SEED_TITLE, BMC_SEED_VALUE_PROPOSITIONS, BMC_SEED_VERSION, FISHBONE_SEED_CATEGORY, FISHBONE_SEED_EFFECT, FISHBONE_SEED_ITEM_1, FISHBONE_SEED_ITEM_2, GANTT_SEED_BUILD, GANTT_SEED_DESIGN, GANTT_SEED_DISCOVERY, GANTT_SEED_LAUNCH, GANTT_SEED_WEEK, KANBAN_SEED_CARD, KANBAN_SEED_DOING, KANBAN_SEED_DONE, KANBAN_SEED_TODO, SWOT_SEED_OPPORTUNITIES, SWOT_SEED_STRENGTHS, SWOT_SEED_THREATS, SWOT_SEED_WEAKNESSES, TEMPLATE_PANEL_CATEGORY_OTHER, } from '../translations.js';
|
|
5
|
+
import { BMC_SEED_CHANNELS, BMC_SEED_COST_STRUCTURE, BMC_SEED_CUSTOMER_RELATIONSHIPS, BMC_SEED_CUSTOMER_SEGMENTS, BMC_SEED_DATE, BMC_SEED_DESIGNED_BY, BMC_SEED_DESIGNED_FOR, BMC_SEED_KEY_ACTIVITIES, BMC_SEED_KEY_PARTNERSHIPS, BMC_SEED_KEY_RESOURCES, BMC_SEED_REVENUE_STREAMS, BMC_SEED_TITLE, BMC_SEED_VALUE_PROPOSITIONS, BMC_SEED_VERSION, FISHBONE_SEED_CATEGORY, FISHBONE_SEED_EFFECT, FISHBONE_SEED_ITEM_1, FISHBONE_SEED_ITEM_2, GANTT_SEED_BUILD, GANTT_SEED_DESIGN, GANTT_SEED_DISCOVERY, GANTT_SEED_LAUNCH, GANTT_SEED_WEEK, KANBAN_SEED_CARD, KANBAN_SEED_DOING, KANBAN_SEED_DONE, KANBAN_SEED_TODO, SWOT_SEED_OPPORTUNITIES, SWOT_SEED_STRENGTHS, SWOT_SEED_THREATS, SWOT_SEED_WEAKNESSES, TEMPLATE_NAME_BUSINESS_MODEL_CANVAS, TEMPLATE_NAME_FISHBONE, TEMPLATE_NAME_GANTT_CHART, TEMPLATE_NAME_KANBAN_BOARD, TEMPLATE_NAME_SWOT, TEMPLATE_PANEL_CATEGORY_OTHER, } from '../translations.js';
|
|
6
6
|
/**
|
|
7
7
|
* The generic ("Other") diagrams: built ONLY from general BlockSuite shapes
|
|
8
8
|
* (`shape` rect/polygon, `text`, `connector`) per the composition principle —
|
|
@@ -261,9 +261,15 @@ const previews = {
|
|
|
261
261
|
* at placement (ADR 0023); `content` stays the English build, and `localize`
|
|
262
262
|
* rebuilds the same snapshot with translated seeds.
|
|
263
263
|
*/
|
|
264
|
-
function t(
|
|
264
|
+
function t(nameWording, preview, build) {
|
|
265
|
+
const [nameKey, name] = nameWording;
|
|
265
266
|
return {
|
|
266
267
|
name,
|
|
268
|
+
// `resolveTemplateName` reads this FIRST: nothing here derives from a
|
|
269
|
+
// command, so the tile's own key is the only way a host translates it
|
|
270
|
+
// (#390). `name` stays the stable English identity (drag payload, cache
|
|
271
|
+
// key) and doubles as the fallback.
|
|
272
|
+
nameKey,
|
|
267
273
|
type: 'template',
|
|
268
274
|
preview,
|
|
269
275
|
content: makeTemplateSnapshot(build(), name),
|
|
@@ -274,10 +280,10 @@ export const otherTemplateCategory = {
|
|
|
274
280
|
name: 'Other',
|
|
275
281
|
nameKey: TEMPLATE_PANEL_CATEGORY_OTHER[0],
|
|
276
282
|
templates: [
|
|
277
|
-
t(
|
|
278
|
-
t(
|
|
279
|
-
t(
|
|
280
|
-
t(
|
|
281
|
-
t(
|
|
283
|
+
t(TEMPLATE_NAME_SWOT, previews.swot, swot),
|
|
284
|
+
t(TEMPLATE_NAME_KANBAN_BOARD, previews.kanban, kanban),
|
|
285
|
+
t(TEMPLATE_NAME_BUSINESS_MODEL_CANVAS, previews.bmc, bmc),
|
|
286
|
+
t(TEMPLATE_NAME_FISHBONE, previews.fishbone, fishbone),
|
|
287
|
+
t(TEMPLATE_NAME_GANTT_CHART, previews.gantt, gantt),
|
|
282
288
|
],
|
|
283
289
|
};
|
|
@@ -22,7 +22,7 @@ export class AffineTemplateLoading extends LitElement {
|
|
|
22
22
|
height: 20px;
|
|
23
23
|
position: relative;
|
|
24
24
|
background: conic-gradient(
|
|
25
|
-
|
|
25
|
+
var(--affine-primary-color) 90deg,
|
|
26
26
|
rgba(0, 0, 0, 0.1) 90deg 360deg
|
|
27
27
|
);
|
|
28
28
|
border-radius: 50%;
|
|
@@ -20,6 +20,11 @@ export declare const TEMPLATE_PANEL_SEARCH_PLACEHOLDER: ChromeWording;
|
|
|
20
20
|
export declare const TEMPLATE_PANEL_CATEGORY_OTHER: ChromeWording;
|
|
21
21
|
/** The "Template" senior tool's own button name (`SeniorTool.labelKey`). */
|
|
22
22
|
export declare const TEMPLATE_SENIOR_TOOL_NAME: ChromeWording;
|
|
23
|
+
export declare const TEMPLATE_NAME_SWOT: ChromeWording;
|
|
24
|
+
export declare const TEMPLATE_NAME_KANBAN_BOARD: ChromeWording;
|
|
25
|
+
export declare const TEMPLATE_NAME_BUSINESS_MODEL_CANVAS: ChromeWording;
|
|
26
|
+
export declare const TEMPLATE_NAME_FISHBONE: ChromeWording;
|
|
27
|
+
export declare const TEMPLATE_NAME_GANTT_CHART: ChromeWording;
|
|
23
28
|
export declare const TEMPLATE_PACKAGE_WORDINGS: readonly ChromeWording[];
|
|
24
29
|
/**
|
|
25
30
|
* The generic ("Other") diagrams' own seeds: the captions painted onto the
|
|
@@ -29,10 +29,48 @@ export const TEMPLATE_SENIOR_TOOL_NAME = [
|
|
|
29
29
|
'com.labre.template.senior-tool.name',
|
|
30
30
|
'Template',
|
|
31
31
|
];
|
|
32
|
+
/* ── The five "Other" tiles' own names (#390) ─────────────────────────────
|
|
33
|
+
*
|
|
34
|
+
* A hand-composed template derives no tile name from a command, so it needs a
|
|
35
|
+
* `nameKey` of its own — the same seam every framework category already uses
|
|
36
|
+
* for its hand-written templates (`gfx/bpmn`, `gfx/edgy`, `gfx/mindmap`…).
|
|
37
|
+
* Only the NAME is chrome here; the captions painted into each scene are
|
|
38
|
+
* seeds, declared further down and resolved through `Template.localize`.
|
|
39
|
+
*
|
|
40
|
+
* `TEMPLATE_NAME_BUSINESS_MODEL_CANVAS` and `BMC_SEED_TITLE` share the same
|
|
41
|
+
* English words on purpose and do NOT collide: the seed is written once into
|
|
42
|
+
* the document, the tile is redrawn every time the panel opens, and the
|
|
43
|
+
* "un mot chrome, une clé" test groups `source: 'chrome'` only.
|
|
44
|
+
*/
|
|
45
|
+
export const TEMPLATE_NAME_SWOT = [
|
|
46
|
+
'com.labre.template.name.swot',
|
|
47
|
+
'SWOT',
|
|
48
|
+
];
|
|
49
|
+
export const TEMPLATE_NAME_KANBAN_BOARD = [
|
|
50
|
+
'com.labre.template.name.kanban-board',
|
|
51
|
+
'Kanban board',
|
|
52
|
+
];
|
|
53
|
+
export const TEMPLATE_NAME_BUSINESS_MODEL_CANVAS = [
|
|
54
|
+
'com.labre.template.name.business-model-canvas',
|
|
55
|
+
'Business model canvas',
|
|
56
|
+
];
|
|
57
|
+
export const TEMPLATE_NAME_FISHBONE = [
|
|
58
|
+
'com.labre.template.name.fishbone',
|
|
59
|
+
'Fishbone (Ishikawa)',
|
|
60
|
+
];
|
|
61
|
+
export const TEMPLATE_NAME_GANTT_CHART = [
|
|
62
|
+
'com.labre.template.name.gantt-chart',
|
|
63
|
+
'Gantt chart',
|
|
64
|
+
];
|
|
32
65
|
export const TEMPLATE_PACKAGE_WORDINGS = [
|
|
33
66
|
TEMPLATE_PANEL_ADD,
|
|
34
67
|
TEMPLATE_PANEL_SEARCH_PLACEHOLDER,
|
|
35
68
|
TEMPLATE_SENIOR_TOOL_NAME,
|
|
69
|
+
TEMPLATE_NAME_SWOT,
|
|
70
|
+
TEMPLATE_NAME_KANBAN_BOARD,
|
|
71
|
+
TEMPLATE_NAME_BUSINESS_MODEL_CANVAS,
|
|
72
|
+
TEMPLATE_NAME_FISHBONE,
|
|
73
|
+
TEMPLATE_NAME_GANTT_CHART,
|
|
36
74
|
];
|
|
37
75
|
/**
|
|
38
76
|
* The generic ("Other") diagrams' own seeds: the captions painted onto the
|
|
@@ -176,9 +176,10 @@ let EdgelessTextEditor = (() => {
|
|
|
176
176
|
transform-origin: left top;
|
|
177
177
|
font-kerning: none;
|
|
178
178
|
border: ${EdgelessTextEditor.BORDER_WIDTH}px solid
|
|
179
|
-
var(--affine-primary-color
|
|
179
|
+
var(--affine-primary-color);
|
|
180
180
|
border-radius: 4px;
|
|
181
|
-
box-shadow: 0px 0px 0px 2px
|
|
181
|
+
box-shadow: 0px 0px 0px 2px
|
|
182
|
+
color-mix(in srgb, var(--affine-primary-color) 30%, transparent);
|
|
182
183
|
padding: ${EdgelessTextEditor.PADDING_VERTICAL}px
|
|
183
184
|
${EdgelessTextEditor.PADDING_HORIZONTAL}px;
|
|
184
185
|
overflow: visible;
|
|
@@ -10,7 +10,7 @@ import { signal } from '@preact/signals-core';
|
|
|
10
10
|
import { html } from 'lit';
|
|
11
11
|
import { styleMap } from 'lit/directives/style-map.js';
|
|
12
12
|
import { isFontStyleSupported, isFontWeightSupported, } from '../element-renderer/utils.js';
|
|
13
|
-
import { TEXT_ALIGN_CENTER, TEXT_ALIGN_LEFT, TEXT_ALIGN_RIGHT, TEXT_TOOLBAR_ALIGNMENT, TEXT_TOOLBAR_FONT, TEXT_TOOLBAR_FONT_STYLE, TEXT_TOOLBAR_FONT_STYLE_ITALIC, TEXT_TOOLBAR_FONT_WEIGHT_BOLD, TEXT_TOOLBAR_FONT_WEIGHT_LIGHT, TEXT_TOOLBAR_FONT_WEIGHT_REGULAR, TEXT_TOOLBAR_FONT_WEIGHT_SEMIBOLD, TEXT_TOOLBAR_FONT_SIZE, TEXT_TOOLBAR_TEXT_COLOR, } from '../translations.js';
|
|
13
|
+
import { TEXT_ALIGN_CENTER, TEXT_ALIGN_LEFT, TEXT_ALIGN_RIGHT, TEXT_TOOLBAR_ALIGNMENT, TEXT_TOOLBAR_ALIGNMENT_MENU_ARIA, TEXT_TOOLBAR_FONT, TEXT_TOOLBAR_FONT_STYLE, TEXT_TOOLBAR_FONT_STYLE_ITALIC, TEXT_TOOLBAR_FONT_WEIGHT_BOLD, TEXT_TOOLBAR_FONT_WEIGHT_LIGHT, TEXT_TOOLBAR_FONT_WEIGHT_REGULAR, TEXT_TOOLBAR_FONT_WEIGHT_SEMIBOLD, TEXT_TOOLBAR_FONT_SIZE, TEXT_TOOLBAR_TEXT_COLOR, } from '../translations.js';
|
|
14
14
|
const FONT_WEIGHT_LIST = [
|
|
15
15
|
{
|
|
16
16
|
key: 'Light',
|
|
@@ -119,6 +119,7 @@ export function createTextActions(klass, type, update = (ctx, model, props) => c
|
|
|
119
119
|
<edgeless-font-family-panel
|
|
120
120
|
.value=${fontFamily}
|
|
121
121
|
.onSelect=${onPick}
|
|
122
|
+
.std=${ctx.std}
|
|
122
123
|
></edgeless-font-family-panel>
|
|
123
124
|
</editor-menu-button>
|
|
124
125
|
`;
|
|
@@ -295,6 +296,7 @@ export function createTextActions(klass, type, update = (ctx, model, props) => c
|
|
|
295
296
|
return renderMenu({
|
|
296
297
|
label: 'Alignment',
|
|
297
298
|
labelWording: TEXT_TOOLBAR_ALIGNMENT,
|
|
299
|
+
menuAriaWording: TEXT_TOOLBAR_ALIGNMENT_MENU_ARIA,
|
|
298
300
|
items: TEXT_ALIGN_LIST,
|
|
299
301
|
currentValue: textAlign,
|
|
300
302
|
onPick,
|
|
@@ -17,6 +17,14 @@ export declare const TEXT_TOOLBAR_FONT: ChromeWording;
|
|
|
17
17
|
export declare const TEXT_TOOLBAR_TEXT_COLOR: ChromeWording;
|
|
18
18
|
export declare const TEXT_TOOLBAR_FONT_STYLE: ChromeWording;
|
|
19
19
|
export declare const TEXT_TOOLBAR_ALIGNMENT: ChromeWording;
|
|
20
|
+
/**
|
|
21
|
+
* The accessible name of the alignment menu SHELL (#390) — its own wording,
|
|
22
|
+
* not `` `${TEXT_TOOLBAR_ALIGNMENT}-menu` ``, which read "alignement-menu" in
|
|
23
|
+
* French. Distinct from `ROOT_ALIGNMENT_MENU_ARIA`: that one names the
|
|
24
|
+
* edgeless menu that aligns ELEMENTS on the board, this one the menu that
|
|
25
|
+
* aligns TEXT inside an element. Two menus, two names.
|
|
26
|
+
*/
|
|
27
|
+
export declare const TEXT_TOOLBAR_ALIGNMENT_MENU_ARIA: ChromeWording;
|
|
20
28
|
/**
|
|
21
29
|
* The three alignment values — a different concept from a mindmap's own
|
|
22
30
|
* "Left" / "Right" layout direction (`gfx/mindmap`'s
|
|
@@ -29,6 +29,17 @@ export const TEXT_TOOLBAR_ALIGNMENT = [
|
|
|
29
29
|
'com.labre.text-toolbar.alignment',
|
|
30
30
|
'Alignment',
|
|
31
31
|
];
|
|
32
|
+
/**
|
|
33
|
+
* The accessible name of the alignment menu SHELL (#390) — its own wording,
|
|
34
|
+
* not `` `${TEXT_TOOLBAR_ALIGNMENT}-menu` ``, which read "alignement-menu" in
|
|
35
|
+
* French. Distinct from `ROOT_ALIGNMENT_MENU_ARIA`: that one names the
|
|
36
|
+
* edgeless menu that aligns ELEMENTS on the board, this one the menu that
|
|
37
|
+
* aligns TEXT inside an element. Two menus, two names.
|
|
38
|
+
*/
|
|
39
|
+
export const TEXT_TOOLBAR_ALIGNMENT_MENU_ARIA = [
|
|
40
|
+
'com.labre.text-toolbar.alignment-menu',
|
|
41
|
+
'text alignment-menu',
|
|
42
|
+
];
|
|
32
43
|
/**
|
|
33
44
|
* The three alignment values — a different concept from a mindmap's own
|
|
34
45
|
* "Left" / "Right" layout direction (`gfx/mindmap`'s
|
|
@@ -58,6 +69,7 @@ export const TEXT_WORDINGS = [
|
|
|
58
69
|
TEXT_TOOLBAR_TEXT_COLOR,
|
|
59
70
|
TEXT_TOOLBAR_FONT_STYLE,
|
|
60
71
|
TEXT_TOOLBAR_ALIGNMENT,
|
|
72
|
+
TEXT_TOOLBAR_ALIGNMENT_MENU_ARIA,
|
|
61
73
|
TEXT_ALIGN_LEFT,
|
|
62
74
|
TEXT_ALIGN_CENTER,
|
|
63
75
|
TEXT_ALIGN_RIGHT,
|
|
@@ -101,7 +101,8 @@ let LatexEditorMenu = (() => {
|
|
|
101
101
|
background: ${unsafeCSSVar('white10')};
|
|
102
102
|
|
|
103
103
|
/* light/activeShadow */
|
|
104
|
-
box-shadow: 0px 0px 0px 2px
|
|
104
|
+
box-shadow: 0px 0px 0px 2px
|
|
105
|
+
color-mix(in srgb, var(--affine-primary-color) 30%, transparent);
|
|
105
106
|
|
|
106
107
|
font-family: ${unsafeCSSVar('fontCodeFamily')};
|
|
107
108
|
border: 1px solid transparent;
|
|
@@ -31,17 +31,30 @@ export declare enum FontStyle {
|
|
|
31
31
|
Italic = "italic",
|
|
32
32
|
Normal = "normal"
|
|
33
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* A stored value: every member stays forever, whether or not a host still
|
|
36
|
+
* ships its files. `Satoshi` is in no default font list since #396 (its
|
|
37
|
+
* licence forbids offering it as a selectable font in a SaaS or design tool),
|
|
38
|
+
* but an element that carries it keeps loading and painting with the
|
|
39
|
+
* `sans-serif` fallback. `PlusJakartaSans` (SIL OFL 1.1) is its replacement.
|
|
40
|
+
*/
|
|
34
41
|
export declare enum FontFamily {
|
|
35
42
|
BebasNeue = "blocksuite:surface:BebasNeue",
|
|
36
43
|
Inter = "blocksuite:surface:Inter",
|
|
37
44
|
Kalam = "blocksuite:surface:Kalam",
|
|
38
45
|
Lora = "blocksuite:surface:Lora",
|
|
39
46
|
OrelegaOne = "blocksuite:surface:OrelegaOne",
|
|
47
|
+
PlusJakartaSans = "blocksuite:surface:PlusJakartaSans",
|
|
40
48
|
Poppins = "blocksuite:surface:Poppins",
|
|
41
49
|
Satoshi = "blocksuite:surface:Satoshi"
|
|
42
50
|
}
|
|
43
|
-
export declare const FontFamilyMap: Record<FontFamily, "BebasNeue" | "Inter" | "Kalam" | "Lora" | "OrelegaOne" | "Poppins" | "Satoshi">;
|
|
44
|
-
|
|
51
|
+
export declare const FontFamilyMap: Record<FontFamily, "BebasNeue" | "Inter" | "Kalam" | "Lora" | "OrelegaOne" | "PlusJakartaSans" | "Poppins" | "Satoshi">;
|
|
52
|
+
/**
|
|
53
|
+
* Every family with the name the picker shows, in declaration order. What a
|
|
54
|
+
* picker OFFERS is this list narrowed to the families the host configured
|
|
55
|
+
* (`FontConfig`, #396); this is the order and the names it keeps.
|
|
56
|
+
*/
|
|
57
|
+
export declare const FontFamilyList: [FontFamily, string][];
|
|
45
58
|
export declare enum TextResizing {
|
|
46
59
|
AUTO_WIDTH_AND_HEIGHT = 0,
|
|
47
60
|
AUTO_HEIGHT = 1
|
|
@@ -27,6 +27,13 @@ export var FontStyle;
|
|
|
27
27
|
FontStyle["Italic"] = "italic";
|
|
28
28
|
FontStyle["Normal"] = "normal";
|
|
29
29
|
})(FontStyle || (FontStyle = {}));
|
|
30
|
+
/**
|
|
31
|
+
* A stored value: every member stays forever, whether or not a host still
|
|
32
|
+
* ships its files. `Satoshi` is in no default font list since #396 (its
|
|
33
|
+
* licence forbids offering it as a selectable font in a SaaS or design tool),
|
|
34
|
+
* but an element that carries it keeps loading and painting with the
|
|
35
|
+
* `sans-serif` fallback. `PlusJakartaSans` (SIL OFL 1.1) is its replacement.
|
|
36
|
+
*/
|
|
30
37
|
export var FontFamily;
|
|
31
38
|
(function (FontFamily) {
|
|
32
39
|
FontFamily["BebasNeue"] = "blocksuite:surface:BebasNeue";
|
|
@@ -34,11 +41,28 @@ export var FontFamily;
|
|
|
34
41
|
FontFamily["Kalam"] = "blocksuite:surface:Kalam";
|
|
35
42
|
FontFamily["Lora"] = "blocksuite:surface:Lora";
|
|
36
43
|
FontFamily["OrelegaOne"] = "blocksuite:surface:OrelegaOne";
|
|
44
|
+
FontFamily["PlusJakartaSans"] = "blocksuite:surface:PlusJakartaSans";
|
|
37
45
|
FontFamily["Poppins"] = "blocksuite:surface:Poppins";
|
|
38
46
|
FontFamily["Satoshi"] = "blocksuite:surface:Satoshi";
|
|
39
47
|
})(FontFamily || (FontFamily = {}));
|
|
40
48
|
export const FontFamilyMap = createEnumMap(FontFamily);
|
|
41
|
-
|
|
49
|
+
/**
|
|
50
|
+
* The name a family goes by where its enum key cannot spell it: a proper name
|
|
51
|
+
* with spaces. Proper names carry no i18n key, like the other family names
|
|
52
|
+
* (ADR 0023).
|
|
53
|
+
*/
|
|
54
|
+
const SPACED_FONT_FAMILY_NAMES = {
|
|
55
|
+
[FontFamily.PlusJakartaSans]: 'Plus Jakarta Sans',
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Every family with the name the picker shows, in declaration order. What a
|
|
59
|
+
* picker OFFERS is this list narrowed to the families the host configured
|
|
60
|
+
* (`FontConfig`, #396); this is the order and the names it keeps.
|
|
61
|
+
*/
|
|
62
|
+
export const FontFamilyList = Object.entries(FontFamilyMap).map(([family, key]) => [
|
|
63
|
+
family,
|
|
64
|
+
SPACED_FONT_FAMILY_NAMES[family] ?? key,
|
|
65
|
+
]);
|
|
42
66
|
export var TextResizing;
|
|
43
67
|
(function (TextResizing) {
|
|
44
68
|
TextResizing[TextResizing["AUTO_WIDTH_AND_HEIGHT"] = 0] = "AUTO_WIDTH_AND_HEIGHT";
|
|
@@ -20,8 +20,19 @@ export type FontConfig = z.infer<typeof fontConfigSchema>;
|
|
|
20
20
|
* The AFFiNE-hosted mirror. It carries strictly fewer files than the community
|
|
21
21
|
* list: `cdn.affine.pro` answers 404 for every `Inter-Bold`, `Poppins-Bold`
|
|
22
22
|
* and `BebasNeue-Bold` spelling, so those three families offer no 700 weight
|
|
23
|
-
* here. The Kalam /
|
|
24
|
-
*
|
|
23
|
+
* here. The Kalam / Lora `SemiBold` entries below already point at the 700
|
|
24
|
+
* file — those families ship a single heavy face, not two.
|
|
25
|
+
*
|
|
26
|
+
* Satoshi is in neither list since #396: its licence (ITF Free Font License
|
|
27
|
+
* 2.0, section 02) forbids offering it as a selectable font in a SaaS or design
|
|
28
|
+
* tool, whoever hosts the files. `FontFamily.Satoshi` stays a valid stored
|
|
29
|
+
* value; an element that carries it paints with the fallback, and the family
|
|
30
|
+
* picker names it as unavailable instead of offering it.
|
|
25
31
|
*/
|
|
26
32
|
export declare const AffineCanvasTextFonts: FontConfig[];
|
|
33
|
+
/**
|
|
34
|
+
* The families on a public mirror, one `FontConfig` per face. A host that
|
|
35
|
+
* promises no third-party request passes the same list with its own `url`s;
|
|
36
|
+
* a host that drops a family drops it from the family picker too (#396).
|
|
37
|
+
*/
|
|
27
38
|
export declare const CommunityCanvasTextFonts: FontConfig[];
|
|
@@ -10,8 +10,14 @@ export const fontConfigSchema = z.object({
|
|
|
10
10
|
* The AFFiNE-hosted mirror. It carries strictly fewer files than the community
|
|
11
11
|
* list: `cdn.affine.pro` answers 404 for every `Inter-Bold`, `Poppins-Bold`
|
|
12
12
|
* and `BebasNeue-Bold` spelling, so those three families offer no 700 weight
|
|
13
|
-
* here. The Kalam /
|
|
14
|
-
*
|
|
13
|
+
* here. The Kalam / Lora `SemiBold` entries below already point at the 700
|
|
14
|
+
* file — those families ship a single heavy face, not two.
|
|
15
|
+
*
|
|
16
|
+
* Satoshi is in neither list since #396: its licence (ITF Free Font License
|
|
17
|
+
* 2.0, section 02) forbids offering it as a selectable font in a SaaS or design
|
|
18
|
+
* tool, whoever hosts the files. `FontFamily.Satoshi` stays a valid stored
|
|
19
|
+
* value; an element that carries it paints with the fallback, and the family
|
|
20
|
+
* picker names it as unavailable instead of offering it.
|
|
15
21
|
*/
|
|
16
22
|
export const AffineCanvasTextFonts = [
|
|
17
23
|
// Inter, https://fonts.cdnfonts.com/css/inter?styles=29139,29134,29135,29136,29140,29141
|
|
@@ -70,43 +76,6 @@ export const AffineCanvasTextFonts = [
|
|
|
70
76
|
weight: FontWeight.SemiBold,
|
|
71
77
|
style: FontStyle.Normal,
|
|
72
78
|
},
|
|
73
|
-
// Satoshi, https://fonts.cdnfonts.com/css/satoshi?styles=135009,135004,135005,135006,135002,135003
|
|
74
|
-
{
|
|
75
|
-
font: FontFamily.Satoshi,
|
|
76
|
-
url: 'https://cdn.affine.pro/fonts/Satoshi-Light.woff2',
|
|
77
|
-
weight: FontWeight.Light,
|
|
78
|
-
style: FontStyle.Normal,
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
font: FontFamily.Satoshi,
|
|
82
|
-
url: 'https://cdn.affine.pro/fonts/Satoshi-Regular.woff2',
|
|
83
|
-
weight: FontWeight.Regular,
|
|
84
|
-
style: FontStyle.Normal,
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
font: FontFamily.Satoshi,
|
|
88
|
-
url: 'https://cdn.affine.pro/fonts/Satoshi-Bold.woff2',
|
|
89
|
-
weight: FontWeight.SemiBold,
|
|
90
|
-
style: FontStyle.Normal,
|
|
91
|
-
},
|
|
92
|
-
{
|
|
93
|
-
font: FontFamily.Satoshi,
|
|
94
|
-
url: 'https://cdn.affine.pro/fonts/Satoshi-LightItalic.woff2',
|
|
95
|
-
weight: FontWeight.Light,
|
|
96
|
-
style: FontStyle.Italic,
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
font: FontFamily.Satoshi,
|
|
100
|
-
url: 'https://cdn.affine.pro/fonts/Satoshi-Italic.woff2',
|
|
101
|
-
weight: FontWeight.Regular,
|
|
102
|
-
style: FontStyle.Italic,
|
|
103
|
-
},
|
|
104
|
-
{
|
|
105
|
-
font: FontFamily.Satoshi,
|
|
106
|
-
url: 'https://cdn.affine.pro/fonts/Satoshi-BoldItalic.woff2',
|
|
107
|
-
weight: FontWeight.SemiBold,
|
|
108
|
-
style: FontStyle.Italic,
|
|
109
|
-
},
|
|
110
79
|
// Poppins, https://fonts.cdnfonts.com/css/poppins?styles=20394,20389,20390,20391,20395,20396
|
|
111
80
|
{
|
|
112
81
|
font: FontFamily.Poppins,
|
|
@@ -196,6 +165,11 @@ export const AffineCanvasTextFonts = [
|
|
|
196
165
|
style: FontStyle.Normal,
|
|
197
166
|
},
|
|
198
167
|
];
|
|
168
|
+
/**
|
|
169
|
+
* The families on a public mirror, one `FontConfig` per face. A host that
|
|
170
|
+
* promises no third-party request passes the same list with its own `url`s;
|
|
171
|
+
* a host that drops a family drops it from the family picker too (#396).
|
|
172
|
+
*/
|
|
199
173
|
export const CommunityCanvasTextFonts = [
|
|
200
174
|
// Inter, https://fonts.cdnfonts.com/css/inter?styles=29139,29134,29135,29136,29140,29141
|
|
201
175
|
{
|
|
@@ -267,43 +241,58 @@ export const CommunityCanvasTextFonts = [
|
|
|
267
241
|
weight: FontWeight.SemiBold,
|
|
268
242
|
style: FontStyle.Normal,
|
|
269
243
|
},
|
|
270
|
-
//
|
|
244
|
+
// PlusJakartaSans (SIL OFL 1.1), https://fonts.cdnfonts.com/css/plus-jakarta-sans
|
|
245
|
+
// The mirror serves the two variable files only (weights 200 to 800), so
|
|
246
|
+
// every face below points at one of them: a face declared with a single
|
|
247
|
+
// weight gets that weight from the file's `wght` axis.
|
|
271
248
|
{
|
|
272
|
-
font: FontFamily.
|
|
273
|
-
url: 'https://fonts.cdnfonts.com/s/
|
|
249
|
+
font: FontFamily.PlusJakartaSans,
|
|
250
|
+
url: 'https://fonts.cdnfonts.com/s/107199/PlusJakartaSans%5Bwght%5D.woff',
|
|
274
251
|
weight: FontWeight.Light,
|
|
275
252
|
style: FontStyle.Normal,
|
|
276
253
|
},
|
|
277
254
|
{
|
|
278
|
-
font: FontFamily.
|
|
279
|
-
url: 'https://fonts.cdnfonts.com/s/
|
|
255
|
+
font: FontFamily.PlusJakartaSans,
|
|
256
|
+
url: 'https://fonts.cdnfonts.com/s/107199/PlusJakartaSans%5Bwght%5D.woff',
|
|
280
257
|
weight: FontWeight.Regular,
|
|
281
258
|
style: FontStyle.Normal,
|
|
282
259
|
},
|
|
283
260
|
{
|
|
284
|
-
font: FontFamily.
|
|
285
|
-
url: 'https://fonts.cdnfonts.com/s/
|
|
261
|
+
font: FontFamily.PlusJakartaSans,
|
|
262
|
+
url: 'https://fonts.cdnfonts.com/s/107199/PlusJakartaSans%5Bwght%5D.woff',
|
|
286
263
|
weight: FontWeight.SemiBold,
|
|
287
264
|
style: FontStyle.Normal,
|
|
288
265
|
},
|
|
289
266
|
{
|
|
290
|
-
font: FontFamily.
|
|
291
|
-
url: 'https://fonts.cdnfonts.com/s/
|
|
267
|
+
font: FontFamily.PlusJakartaSans,
|
|
268
|
+
url: 'https://fonts.cdnfonts.com/s/107199/PlusJakartaSans%5Bwght%5D.woff',
|
|
269
|
+
weight: FontWeight.Bold,
|
|
270
|
+
style: FontStyle.Normal,
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
font: FontFamily.PlusJakartaSans,
|
|
274
|
+
url: 'https://fonts.cdnfonts.com/s/107199/PlusJakartaSans-Italic%5Bwght%5D.woff',
|
|
292
275
|
weight: FontWeight.Light,
|
|
293
276
|
style: FontStyle.Italic,
|
|
294
277
|
},
|
|
295
278
|
{
|
|
296
|
-
font: FontFamily.
|
|
297
|
-
url: 'https://fonts.cdnfonts.com/s/
|
|
279
|
+
font: FontFamily.PlusJakartaSans,
|
|
280
|
+
url: 'https://fonts.cdnfonts.com/s/107199/PlusJakartaSans-Italic%5Bwght%5D.woff',
|
|
298
281
|
weight: FontWeight.Regular,
|
|
299
282
|
style: FontStyle.Italic,
|
|
300
283
|
},
|
|
301
284
|
{
|
|
302
|
-
font: FontFamily.
|
|
303
|
-
url: 'https://fonts.cdnfonts.com/s/
|
|
285
|
+
font: FontFamily.PlusJakartaSans,
|
|
286
|
+
url: 'https://fonts.cdnfonts.com/s/107199/PlusJakartaSans-Italic%5Bwght%5D.woff',
|
|
304
287
|
weight: FontWeight.SemiBold,
|
|
305
288
|
style: FontStyle.Italic,
|
|
306
289
|
},
|
|
290
|
+
{
|
|
291
|
+
font: FontFamily.PlusJakartaSans,
|
|
292
|
+
url: 'https://fonts.cdnfonts.com/s/107199/PlusJakartaSans-Italic%5Bwght%5D.woff',
|
|
293
|
+
weight: FontWeight.Bold,
|
|
294
|
+
style: FontStyle.Italic,
|
|
295
|
+
},
|
|
307
296
|
// Poppins, https://fonts.cdnfonts.com/css/poppins?styles=20394,20389,20390,20391,20395,20396
|
|
308
297
|
{
|
|
309
298
|
font: FontFamily.Poppins,
|
|
@@ -360,8 +349,8 @@ export const CommunityCanvasTextFonts = [
|
|
|
360
349
|
style: FontStyle.Italic,
|
|
361
350
|
},
|
|
362
351
|
// Lora, https://fonts.cdnfonts.com/css/lora-4?styles=50357,50356,50354,50355
|
|
363
|
-
// Lora ships no 600 face either: as with Kalam
|
|
364
|
-
//
|
|
352
|
+
// Lora ships no 600 face either: as with Kalam, the entries below map the
|
|
353
|
+
// 700 file onto `SemiBold` and the family has a single heavy.
|
|
365
354
|
{
|
|
366
355
|
font: FontFamily.Lora,
|
|
367
356
|
url: 'https://fonts.cdnfonts.com/s/29883/Lora-Regular.woff',
|
|
@@ -59,6 +59,25 @@ export declare class ThemeService extends Extension {
|
|
|
59
59
|
getColorValue(color: Color, fallback?: Color, real?: boolean, theme?: ColorScheme): string;
|
|
60
60
|
getCssVariableColor(property: string, theme?: ColorScheme): string;
|
|
61
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* The CSS variable the chrome accent lives behind — the token `DESIGN.md`'s
|
|
64
|
+
* Borrowed Blue Rule names. Kept here so a canvas painter can reach the accent
|
|
65
|
+
* by NAME rather than by value.
|
|
66
|
+
*/
|
|
67
|
+
export declare const CHROME_ACCENT_CSS_VARIABLE = "--affine-primary-color";
|
|
68
|
+
/**
|
|
69
|
+
* The chrome accent resolved for the theme in force, ready to be handed to a
|
|
70
|
+
* `CanvasRenderingContext2D` (`strokeStyle`, `fillStyle`), which cannot take a
|
|
71
|
+
* `var(…)`.
|
|
72
|
+
*
|
|
73
|
+
* Canvas painters used to write the AFFiNE blue out as a hex, which made it
|
|
74
|
+
* unreachable for a host re-skin: the DOM followed `--affine-primary-color`
|
|
75
|
+
* while the canvas stayed on the literal. The last-resort value, for the case
|
|
76
|
+
* where no `ThemeProvider` is registered, is READ from the upstream theme
|
|
77
|
+
* rather than spelled out, so no module holds a copy of the hex
|
|
78
|
+
* (`brand-hex.unit.spec.ts` enforces that).
|
|
79
|
+
*/
|
|
80
|
+
export declare function getChromeAccentColor(std: BlockStdScope): string;
|
|
62
81
|
export declare class ThemeObserver {
|
|
63
82
|
private readonly observer;
|
|
64
83
|
theme$: Signal<ColorScheme>;
|
|
@@ -104,6 +104,30 @@ export class ThemeService extends Extension {
|
|
|
104
104
|
return property;
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
|
+
/**
|
|
108
|
+
* The CSS variable the chrome accent lives behind — the token `DESIGN.md`'s
|
|
109
|
+
* Borrowed Blue Rule names. Kept here so a canvas painter can reach the accent
|
|
110
|
+
* by NAME rather than by value.
|
|
111
|
+
*/
|
|
112
|
+
export const CHROME_ACCENT_CSS_VARIABLE = '--affine-primary-color';
|
|
113
|
+
/**
|
|
114
|
+
* The chrome accent resolved for the theme in force, ready to be handed to a
|
|
115
|
+
* `CanvasRenderingContext2D` (`strokeStyle`, `fillStyle`), which cannot take a
|
|
116
|
+
* `var(…)`.
|
|
117
|
+
*
|
|
118
|
+
* Canvas painters used to write the AFFiNE blue out as a hex, which made it
|
|
119
|
+
* unreachable for a host re-skin: the DOM followed `--affine-primary-color`
|
|
120
|
+
* while the canvas stayed on the literal. The last-resort value, for the case
|
|
121
|
+
* where no `ThemeProvider` is registered, is READ from the upstream theme
|
|
122
|
+
* rather than spelled out, so no module holds a copy of the hex
|
|
123
|
+
* (`brand-hex.unit.spec.ts` enforces that).
|
|
124
|
+
*/
|
|
125
|
+
export function getChromeAccentColor(std) {
|
|
126
|
+
return (std
|
|
127
|
+
.getOptional(ThemeProvider)
|
|
128
|
+
?.getCssVariableColor(CHROME_ACCENT_CSS_VARIABLE) ??
|
|
129
|
+
combinedLightCssVariables[CHROME_ACCENT_CSS_VARIABLE]);
|
|
130
|
+
}
|
|
107
131
|
export class ThemeObserver {
|
|
108
132
|
constructor() {
|
|
109
133
|
const COLOR_SCHEMES = Object.values(ColorScheme);
|
|
@@ -38,6 +38,18 @@ export declare const TOAST_LINKED_DOC_CREATED: ChromeWording;
|
|
|
38
38
|
export declare const TOAST_NOTE_REMOVED_FROM_PAGE: ChromeWording;
|
|
39
39
|
export declare const TOAST_FRAME_INSERTED_INTO_PAGE: ChromeWording;
|
|
40
40
|
export declare const TOAST_NO_LINK_FOUND: ChromeWording;
|
|
41
|
+
/**
|
|
42
|
+
* What the `doc.copyLink` command says once the document's URL is on the
|
|
43
|
+
* clipboard.
|
|
44
|
+
*
|
|
45
|
+
* Its own wording rather than {@link TOAST_COPIED_TO_CLIPBOARD}: that one
|
|
46
|
+
* reports a SLICE copy (blocks, elements, an image) and this one reports a
|
|
47
|
+
* link, and the two are told apart by nothing else on screen. Its own wording
|
|
48
|
+
* rather than the inline link toolbar's "Copied link to clipboard" too — that
|
|
49
|
+
* key belongs to `@labre/affine-inline-link` and names the `href` a delta
|
|
50
|
+
* already carried, not a document address the host just generated.
|
|
51
|
+
*/
|
|
52
|
+
export declare const TOAST_LINK_COPIED: ChromeWording;
|
|
41
53
|
export declare const TOOLBAR_BRING_TO_FRONT: ChromeWording;
|
|
42
54
|
export declare const TOOLBAR_SEND_TO_BACK: ChromeWording;
|
|
43
55
|
export declare const TOOLBAR_COPY: ChromeWording;
|
|
@@ -357,6 +369,13 @@ export declare const PALETTE_NAME_MEDIUM_BLUE: ChromeWording;
|
|
|
357
369
|
export declare const PALETTE_NAME_MEDIUM_PURPLE: ChromeWording;
|
|
358
370
|
export declare const PALETTE_NAME_MEDIUM_MAGENTA: ChromeWording;
|
|
359
371
|
export declare const PALETTE_NAME_MEDIUM_GREY: ChromeWording;
|
|
372
|
+
export declare const PALETTE_NAME_HEAVY_RED: ChromeWording;
|
|
373
|
+
export declare const PALETTE_NAME_HEAVY_ORANGE: ChromeWording;
|
|
374
|
+
export declare const PALETTE_NAME_HEAVY_YELLOW: ChromeWording;
|
|
375
|
+
export declare const PALETTE_NAME_HEAVY_GREEN: ChromeWording;
|
|
376
|
+
export declare const PALETTE_NAME_HEAVY_BLUE: ChromeWording;
|
|
377
|
+
export declare const PALETTE_NAME_HEAVY_PURPLE: ChromeWording;
|
|
378
|
+
export declare const PALETTE_NAME_HEAVY_MAGENTA: ChromeWording;
|
|
360
379
|
/**
|
|
361
380
|
* Keyed by the exact `Palette.key` string the default theme's tables produce
|
|
362
381
|
* (`buildPalettes`, `packages/affine/model/src/themes/{default,utils}.ts`) —
|
|
@@ -364,6 +383,7 @@ export declare const PALETTE_NAME_MEDIUM_GREY: ChromeWording;
|
|
|
364
383
|
* falls back to when a swatch declares no `labelWording` of its own.
|
|
365
384
|
*/
|
|
366
385
|
export declare const PALETTE_NAME_WORDINGS: Readonly<Record<string, ChromeWording>>;
|
|
386
|
+
export declare const MENU_ARIA_STYLE: ChromeWording;
|
|
367
387
|
export declare const CHROME_CLIPBOARD_FILE_TOO_LARGE: ChromeWording;
|
|
368
388
|
export declare const CHROME_CLIPBOARD_SIZE_LIMIT: ChromeWording;
|
|
369
389
|
export declare const TOOLBAR_CAPTION: ChromeWording;
|