added mermaid and a lot of cmap changes

This commit is contained in:
2026-08-27 13:13:39 +02:00
parent 20c1584016
commit 2215d1d04a
35 changed files with 6442 additions and 350 deletions
+219 -121
View File
@@ -202,7 +202,7 @@
<dl class="cmap-shortcut-list">
<div><dt><kbd>Ctrl</kbd>/<kbd>Cmd</kbd>/<kbd>Shift</kbd> + <span data-tr="click">click</span></dt><dd data-tr="cmap-help-add-selection">Add to or remove from the selection</dd></div>
<div><dt><kbd>Ctrl</kbd>/<kbd>Cmd</kbd>+<kbd>A</kbd></dt><dd data-tr="select-all">Select all</dd></div>
<div><dt><kbd>Ctrl</kbd>/<kbd>Cmd</kbd>+<kbd>C</kbd>/<kbd>V</kbd></dt><dd data-tr="copy-paste-linked-concepts">Copy/paste linked concepts</dd></div>
<div><dt><kbd>Ctrl</kbd>/<kbd>Cmd</kbd>+<kbd>X</kbd>/<kbd>C</kbd>/<kbd>V</kbd></dt><dd data-tr="copy-paste-linked-concepts">Cut/copy/paste linked concepts</dd></div>
<div><dt><kbd>Ctrl</kbd>/<kbd>Cmd</kbd>+<kbd>G</kbd></dt><dd data-tr="group-selected">Group selection as sub-CMap</dd></div>
<div><dt><kbd>Ctrl</kbd>/<kbd>Cmd</kbd>+<kbd>Shift</kbd>+<kbd>G</kbd></dt><dd data-tr="ungroup-selected">Detach from sub-CMap</dd></div>
<div><dt><kbd>Ctrl</kbd>/<kbd>Cmd</kbd>+<kbd>Z</kbd></dt><dd data-tr="undo">Undo</dd></div>
@@ -217,14 +217,45 @@
</div>
</header>
<div class="cmap-workspace">
<aside id="cmap-selection-toolbar" class="cmap-selection-toolbar editor-only" aria-label="Selection and layout tools" data-tr-aria-label="selection-layout-tools">
<div class="cmap-selection-tool-group" role="group" aria-label="Selection tools" data-tr-aria-label="selection-tools">
<button type="button" data-cmap-selection-action="edit" title="Edit selected" data-tr-title="edit-selected-concept" aria-label="Edit selected" data-tr-aria-label="edit-selected-concept" disabled><i data-lucide="pencil" aria-hidden="true"></i></button>
<button type="button" data-cmap-selection-action="group" title="Group selection as sub-CMap" data-tr-title="group-selected" aria-label="Group selection as sub-CMap" data-tr-aria-label="group-selected" disabled><i data-lucide="group" aria-hidden="true"></i></button>
<button type="button" data-cmap-selection-action="ungroup" title="Detach from sub-CMap" data-tr-title="ungroup-selected" aria-label="Detach from sub-CMap" data-tr-aria-label="ungroup-selected" disabled><i data-lucide="ungroup" aria-hidden="true"></i></button>
<button type="button" data-cmap-selection-action="hide" title="Hide in this view" data-tr-title="hide-in-this-view" aria-label="Hide in this view" data-tr-aria-label="hide-in-this-view" disabled><i data-lucide="eye-off" aria-hidden="true"></i></button>
</div>
<div class="cmap-selection-tool-separator" aria-hidden="true"></div>
<div class="cmap-selection-tool-group" role="group" aria-label="Size tools" data-tr-aria-label="size-tools">
<button type="button" data-cmap-layout="same-width" title="Make same width" data-tr-title="make-same-width" aria-label="Make same width" data-tr-aria-label="make-same-width" disabled><i data-lucide="move-horizontal" aria-hidden="true"></i></button>
<button type="button" data-cmap-layout="same-height" title="Make same height" data-tr-title="make-same-height" aria-label="Make same height" data-tr-aria-label="make-same-height" disabled><i data-lucide="move-vertical" aria-hidden="true"></i></button>
<button type="button" data-cmap-layout="same-size" title="Make same width and height" data-tr-title="make-same-size" aria-label="Make same width and height" data-tr-aria-label="make-same-size" disabled><i data-lucide="maximize-2" aria-hidden="true"></i></button>
</div>
<div class="cmap-selection-tool-separator" aria-hidden="true"></div>
<div class="cmap-selection-tool-group" role="group" aria-label="Alignment tools" data-tr-aria-label="alignment-tools">
<button type="button" data-cmap-layout="align-left" title="Align left" data-tr-title="align-left" aria-label="Align left" data-tr-aria-label="align-left" disabled><i data-lucide="align-horizontal-justify-start" aria-hidden="true"></i></button>
<button type="button" data-cmap-layout="align-center" title="Align horizontal centers" data-tr-title="align-horizontal-centers" aria-label="Align horizontal centers" data-tr-aria-label="align-horizontal-centers" disabled><i data-lucide="align-horizontal-justify-center" aria-hidden="true"></i></button>
<button type="button" data-cmap-layout="align-right" title="Align right" data-tr-title="align-right" aria-label="Align right" data-tr-aria-label="align-right" disabled><i data-lucide="align-horizontal-justify-end" aria-hidden="true"></i></button>
<button type="button" data-cmap-layout="align-top" title="Align top" data-tr-title="align-top" aria-label="Align top" data-tr-aria-label="align-top" disabled><i data-lucide="align-vertical-justify-start" aria-hidden="true"></i></button>
<button type="button" data-cmap-layout="align-middle" title="Align vertical centers" data-tr-title="align-vertical-centers" aria-label="Align vertical centers" data-tr-aria-label="align-vertical-centers" disabled><i data-lucide="align-vertical-justify-center" aria-hidden="true"></i></button>
<button type="button" data-cmap-layout="align-bottom" title="Align bottom" data-tr-title="align-bottom" aria-label="Align bottom" data-tr-aria-label="align-bottom" disabled><i data-lucide="align-vertical-justify-end" aria-hidden="true"></i></button>
</div>
<div class="cmap-selection-tool-separator" aria-hidden="true"></div>
<div class="cmap-selection-tool-group" role="group" aria-label="Distribution tools" data-tr-aria-label="distribution-tools">
<button type="button" data-cmap-layout="distribute-horizontal" title="Distribute horizontally" data-tr-title="distribute-horizontally" aria-label="Distribute horizontally" data-tr-aria-label="distribute-horizontally" disabled><i data-lucide="align-horizontal-space-around" aria-hidden="true"></i></button>
<button type="button" data-cmap-layout="distribute-vertical" title="Distribute vertically" data-tr-title="distribute-vertically" aria-label="Distribute vertically" data-tr-aria-label="distribute-vertically" disabled><i data-lucide="align-vertical-space-around" aria-hidden="true"></i></button>
</div>
</aside>
<div id="cmap-canvas" class="cmap-canvas" aria-label="Concept map"></div>
<nav id="cmap-context-menu" class="cmap-context-menu hidden" role="menu" aria-label="Concept map tools">
<button id="cmap-new-map" class="editor-only" type="button" role="menuitem" data-tr="new-concept-map">New CMap</button>
<button id="cmap-save-map" class="editor-only" type="button" role="menuitem" data-tr="save-now">Save now</button>
<div class="cmap-context-separator" role="separator"></div>
<button id="cmap-rename-map" type="button" role="menuitem" data-tr="rename-concept-map" disabled>Rename CMap</button>
<button id="cmap-edit-metadata" class="editor-only" type="button" role="menuitem" data-tr="concept-map-details" disabled>CMap details</button>
<button id="cmap-export-markdown" type="button" role="menuitem" data-tr="export-markdown" disabled>Export CMap…</button>
<button id="cmap-import-json" class="editor-only" type="button" role="menuitem" data-tr="import-cmap-json">Import CMap JSON…</button>
<button id="cmap-manage-people" class="editor-only" type="button" role="menuitem" data-tr="manage-people">Manage people</button>
<button id="cmap-set-start-map" type="button" role="menuitem" data-tr="set-start-concept-map" disabled>Use as start CMap</button>
<button id="cmap-delete-map" class="danger" type="button" role="menuitem" data-tr="delete-concept-map" disabled>Delete CMap</button>
<button id="cmap-create-snapshot" type="button" role="menuitem" data-tr="create-concept-map-snapshot" disabled>Make snapshot…</button>
<button id="cmap-history" type="button" role="menuitem" data-tr="concept-map-history" disabled>CMap history</button>
<div class="cmap-context-separator" role="separator"></div>
@@ -233,6 +264,7 @@
<button id="cmap-add-submap" type="button" role="menuitem" data-tr="add-submap">Add sub-CMap</button>
<button id="cmap-promote-submap" type="button" role="menuitem" data-tr="promote-submap" disabled>Make separate CMap</button>
<button id="cmap-edit-selected" type="button" role="menuitem" data-tr="edit-selected-concept">Edit selected</button>
<button id="cmap-cut-selected" type="button" role="menuitem" data-tr="cut-linked-concepts" disabled>Cut concept reference</button>
<button id="cmap-copy-selected" type="button" role="menuitem" data-tr="copy-linked-concepts">Copy concept reference</button>
<button id="cmap-paste-concepts" type="button" role="menuitem" data-tr="paste-linked-concepts" disabled>Paste linked concept</button>
<div class="cmap-context-separator" role="separator"></div>
@@ -247,6 +279,8 @@
<div class="cmap-context-separator" role="separator"></div>
<button id="cmap-toggle-page-guides" type="button" role="menuitemcheckbox" aria-checked="true" data-tr="a4-page-boundaries">A4 page boundaries</button>
<button id="cmap-reset" type="button" role="menuitem" data-tr="reload-concept-map">Reload CMap</button>
<div class="cmap-context-separator" role="separator"></div>
<button id="cmap-delete-map" class="danger" type="button" role="menuitem" data-tr="archive-entire-concept-map" disabled>Archive entire CMap…</button>
</nav>
</div>
</section>
@@ -300,15 +334,26 @@
<h1 data-tr="admin">Admin</h1>
</header>
<p class="admin-version"><span data-tr="software-version">Software version</span>: <strong id="admin-software-version"></strong></p>
<p class="admin-version"><span data-tr="database-schema-version">Database schema version</span>: <strong id="admin-database-schema-version"></strong></p>
<nav class="admin-menu">
<a id="admin-users-link" href="#admin/users" data-tr="users">Users</a>
<a id="admin-mail-link" href="#admin/mail" data-tr="email-and-password-reset">Email and password reset</a>
<a id="admin-aliases-link" href="#admin/aliases" data-tr="page-aliases">Page aliases</a>
<a id="admin-translations-link" href="#" data-tr="translations">Translations</a>
<a id="admin-orphaned-uploads-link" href="#admin/orphaned-uploads" data-tr="orphaned-uploads">Orphaned uploads</a>
<a id="admin-archived-cmaps-link" href="#admin/archived-cmaps" data-tr="archived-concept-maps">Archived CMaps</a>
</nav>
</section>
<section id="archived-cmaps-view" class="hidden">
<header class="page-header">
<h1 data-tr="archived-concept-maps">Archived CMaps</h1>
<a id="close-archived-cmaps" href="#admin" data-tr="back">Back</a>
</header>
<p id="archived-cmaps-status" class="muted" role="status" aria-live="polite"></p>
<div id="archived-cmaps-list" class="archived-cmaps-list"></div>
</section>
<section id="orphaned-uploads-view" class="hidden">
<header class="page-header">
<h1 data-tr="orphaned-uploads">Orphaned uploads</h1>
@@ -394,134 +439,121 @@
</div>
<dialog id="cmap-concept-dialog" class="cmap-concept-dialog" aria-labelledby="cmap-concept-dialog-title">
<form id="cmap-concept-form">
<form id="cmap-concept-form" novalidate>
<h2 id="cmap-concept-dialog-title" data-tr="edit-concept">Edit concept</h2>
<label id="cmap-concept-page-row" class="cmap-concept-page-row">
<span data-tr="linked-page">Linked wiki page</span>
<div id="cmap-concept-page-combobox" class="wiki-combobox">
<input id="cmap-concept-page" type="search" role="combobox"
data-tr-placeholder="filter-pages" placeholder="Filter pages">
<button type="button" class="wiki-combobox-toggle" tabindex="-1" aria-label="Show wiki pages"></button>
<div id="cmap-concept-page-options" class="wiki-combobox-list hidden" role="listbox"></div>
</div>
</label>
<label id="cmap-concept-cmap-row" class="cmap-concept-page-row">
<span data-tr="linked-concept-map">Linked concept map</span>
<div id="cmap-concept-cmap-combobox" class="wiki-combobox">
<input id="cmap-concept-cmap" type="search" role="combobox"
data-tr-placeholder="filter-concept-maps" placeholder="Filter concept maps">
<button type="button" class="wiki-combobox-toggle" tabindex="-1" aria-label="Show concept maps"></button>
<div id="cmap-concept-cmap-options" class="wiki-combobox-list hidden" role="listbox"></div>
</div>
</label>
<label>
<span data-tr="label">Label</span>
<input id="cmap-concept-label" type="text" required>
</label>
<label>
<span data-tr="aspects">Aspects</span>
<input id="cmap-concept-aspects" type="text" data-tr-placeholder="aspects-placeholder" placeholder="Security, performance">
</label>
<label class="cmap-dialog-wide">
<span data-tr="concept-description-page">Concept description page</span>
<input id="cmap-concept-description-page" type="text" data-tr-placeholder="concept-description-page-placeholder" placeholder="cmap:concept-name">
<a id="cmap-concept-description-link" class="hidden" href="#" data-tr="view-description-page">View description page</a>
</label>
<label class="cmap-dialog-wide">
<span data-tr="synopsis">Synopsis</span>
<textarea id="cmap-concept-synopsis" rows="3"></textarea>
</label>
<fieldset class="cmap-appearance-fields cmap-dialog-wide">
<legend data-tr="appearance">Appearance</legend>
<label class="cmap-style-preset-row">
<span data-tr="style">Style</span>
<span class="cmap-inline-control">
<select id="cmap-concept-style-preset">
<option value="default" data-tr="style-default">Default</option>
<option value="subtle" data-tr="style-subtle">Subtle</option>
<option value="emphasis" data-tr="style-emphasis">Emphasis</option>
<option value="warning" data-tr="style-warning">Warning</option>
<option value="success" data-tr="style-success">Success</option>
</select>
<button id="cmap-apply-style" type="button" data-tr="apply-style">Apply</button>
</span>
</label>
<label>
<span id="cmap-concept-background-label" data-tr="background-color">Background color</span>
<span class="cmap-color-control"><input id="cmap-concept-background" class="cmap-color-input" type="text" value="#f3f6f8"><button type="button" class="cmap-color-swatch" aria-label="Choose background color"></button></span>
</label>
<fieldset class="cmap-typography-fields">
<legend data-tr="concept-heading-appearance">Heading</legend>
<div class="cmap-concept-tabs" role="tablist" aria-label="Concept properties">
<button id="cmap-concept-tab-content" type="button" role="tab" data-cmap-concept-tab="content" aria-controls="cmap-concept-panel-content" aria-selected="true" data-tr="content-and-links">Content &amp; links</button>
<button id="cmap-concept-tab-appearance" type="button" role="tab" data-cmap-concept-tab="appearance" aria-controls="cmap-concept-panel-appearance" aria-selected="false" data-tr="specific-appearance">Specific appearance</button>
</div>
<div class="cmap-concept-dialog-body">
<section id="cmap-concept-panel-content" class="cmap-concept-panel" role="tabpanel" aria-labelledby="cmap-concept-tab-content">
<label>
<span data-tr="text-color">Text color</span>
<span class="cmap-color-control"><input id="cmap-concept-text-color" class="cmap-color-input" type="text" value="#222222"><button type="button" class="cmap-color-swatch" aria-label="Choose heading text color"></button></span>
<span data-tr="label">Label</span>
<input id="cmap-concept-label" type="text" required>
</label>
<label>
<span data-tr="font-family">Font family</span>
<select id="cmap-concept-font-family">
<option value="Arial, Helvetica, sans-serif">Arial</option>
<option value="Verdana, Geneva, sans-serif">Verdana</option>
<option value="Tahoma, Geneva, sans-serif">Tahoma</option>
<option value="Trebuchet MS, Arial, sans-serif">Trebuchet MS</option>
<option value="Georgia, Times New Roman, serif">Georgia</option>
<option value="Times New Roman, Times, serif">Times New Roman</option>
<option value="Courier New, Courier, monospace">Courier New</option>
<option value="system-ui, sans-serif">System UI</option>
</select>
<span data-tr="aspects">Aspects</span>
<input id="cmap-concept-aspects" type="text" data-tr-placeholder="aspects-placeholder" placeholder="Security, performance">
</label>
<label>
<span data-tr="font-size">Font size</span>
<span class="cmap-font-size-input"><input id="cmap-concept-font-size" type="number" min="6" max="54" step="0.01"><span>pt</span></span>
<label class="cmap-person-tags-field">
<span data-tr="person-tags">People (special tags)</span>
<details id="cmap-person-tags-picker" class="cmap-person-picker">
<summary data-tr="select-people">Select people</summary>
<div id="cmap-person-tag-options" class="cmap-person-tag-options"></div>
<div class="cmap-person-add-row editor-only">
<input id="cmap-person-new-name" type="text" data-tr-placeholder="person-name" placeholder="Person name">
<button id="cmap-person-add" type="button" data-tr="add-person">Add person</button>
</div>
</details>
<small class="muted" data-tr="person-tags-help">These person tags mark who owns the responsibility or action represented by this concept.</small>
</label>
<label class="cmap-check-label"><input id="cmap-concept-bold" type="checkbox" checked><span data-tr="bold">Bold</span></label>
<label class="cmap-check-label"><input id="cmap-concept-italic" type="checkbox"><span data-tr="italic">Italic</span></label>
</fieldset>
<fieldset class="cmap-typography-fields">
<legend data-tr="concept-subtext-appearance">Subtext</legend>
<label>
<span data-tr="text-color">Text color</span>
<span class="cmap-color-control"><input id="cmap-concept-synopsis-text-color" class="cmap-color-input" type="text" value="#222222"><button type="button" class="cmap-color-swatch" aria-label="Choose subtext color"></button></span>
<label class="cmap-quick-style-field">
<span data-tr="style">Style</span>
<select id="cmap-concept-quick-style"></select>
</label>
<label>
<span data-tr="font-family">Font family</span>
<select id="cmap-concept-synopsis-font-family">
<option value="Arial, Helvetica, sans-serif">Arial</option>
<option value="Verdana, Geneva, sans-serif">Verdana</option>
<option value="Tahoma, Geneva, sans-serif">Tahoma</option>
<option value="Trebuchet MS, Arial, sans-serif">Trebuchet MS</option>
<option value="Georgia, Times New Roman, serif">Georgia</option>
<option value="Times New Roman, Times, serif">Times New Roman</option>
<option value="Courier New, Courier, monospace">Courier New</option>
<option value="system-ui, sans-serif">System UI</option>
</select>
<label class="cmap-dialog-wide">
<span data-tr="synopsis">Synopsis</span>
<textarea id="cmap-concept-synopsis" rows="5"></textarea>
</label>
<label>
<span data-tr="font-size">Font size</span>
<span class="cmap-font-size-input"><input id="cmap-concept-synopsis-font-size" type="number" min="6" max="54" step="0.01"><span>pt</span></span>
<label id="cmap-concept-page-row" class="cmap-concept-page-row">
<span data-tr="linked-page">Linked wiki page</span>
<div id="cmap-concept-page-combobox" class="wiki-combobox">
<input id="cmap-concept-page" type="search" role="combobox"
data-tr-placeholder="filter-pages" placeholder="Filter pages">
<button type="button" class="wiki-combobox-toggle" tabindex="-1" aria-label="Show wiki pages"></button>
<div id="cmap-concept-page-options" class="wiki-combobox-list hidden" role="listbox"></div>
</div>
</label>
<label class="cmap-check-label"><input id="cmap-concept-synopsis-bold" type="checkbox"><span data-tr="bold">Bold</span></label>
<label class="cmap-check-label"><input id="cmap-concept-synopsis-italic" type="checkbox"><span data-tr="italic">Italic</span></label>
</fieldset>
</fieldset>
<fieldset id="cmap-submap-style-fields" class="cmap-submap-style-fields hidden">
<legend data-tr="submap-appearance">Sub-CMap appearance</legend>
<label>
<span data-tr="submap-background-color">Sub-CMap background color</span>
<span class="cmap-color-control"><input id="cmap-submap-background" class="cmap-color-input" type="text" value="#edf7e8"><button type="button" class="cmap-color-swatch" aria-label="Choose submap background color"></button></span>
</label>
<label>
<span data-tr="submap-border-color">Sub-CMap border color</span>
<span class="cmap-color-control"><input id="cmap-submap-border" class="cmap-color-input" type="text" value="#57834a"><button type="button" class="cmap-color-swatch" aria-label="Choose submap border color"></button></span>
</label>
</fieldset>
<fieldset class="cmap-concept-image-fields cmap-dialog-wide">
<legend data-tr="concept-image">Concept image</legend>
<input id="cmap-concept-image" type="file" accept="image/*">
<div id="cmap-concept-image-preview-row" class="cmap-concept-image-preview-row hidden">
<img id="cmap-concept-image-preview" alt="">
<button id="cmap-concept-image-remove" type="button" data-tr="remove-image">Remove image</button>
</div>
</fieldset>
<label id="cmap-concept-cmap-row" class="cmap-concept-page-row">
<span data-tr="linked-concept-map">Linked concept map</span>
<div id="cmap-concept-cmap-combobox" class="wiki-combobox">
<input id="cmap-concept-cmap" type="search" role="combobox"
data-tr-placeholder="filter-concept-maps" placeholder="Filter concept maps">
<button type="button" class="wiki-combobox-toggle" tabindex="-1" aria-label="Show concept maps"></button>
<div id="cmap-concept-cmap-options" class="wiki-combobox-list hidden" role="listbox"></div>
</div>
</label>
<label class="cmap-dialog-wide">
<span data-tr="external-web-page">External web page</span>
<input id="cmap-concept-external-url" type="url" inputmode="url" placeholder="https://example.com">
<small class="muted" data-tr="external-web-page-help">Opens in a new browser tab. Only http and https addresses are accepted.</small>
</label>
<label class="cmap-dialog-wide">
<span data-tr="concept-description-page">Concept description page</span>
<input id="cmap-concept-description-page" type="text" data-tr-placeholder="concept-description-page-placeholder" placeholder="cmap:concept-name">
<a id="cmap-concept-description-link" class="hidden" href="#" data-tr="view-description-page">View description page</a>
</label>
<fieldset class="cmap-concept-image-fields cmap-dialog-wide">
<legend data-tr="concept-image">Concept image</legend>
<input id="cmap-concept-image" type="file" accept="image/*">
<div id="cmap-concept-image-preview-row" class="cmap-concept-image-preview-row hidden">
<img id="cmap-concept-image-preview" alt="">
<button id="cmap-concept-image-remove" type="button" data-tr="remove-image">Remove image</button>
</div>
</fieldset>
</section>
<section id="cmap-concept-panel-appearance" class="cmap-concept-panel hidden" role="tabpanel" aria-labelledby="cmap-concept-tab-appearance">
<div class="cmap-style-manager cmap-dialog-wide">
<label>
<span data-tr="styles">Styles</span>
<select id="cmap-concept-style-preset" aria-describedby="cmap-style-storage-help"></select>
</label>
<div class="cmap-style-manager-actions">
<button id="cmap-save-style" type="button" data-tr="save-as-style">Save as style…</button>
<button id="cmap-delete-style" type="button" data-tr="delete-style">Delete style</button>
</div>
<small id="cmap-style-storage-help" class="muted" data-tr="styles-database-storage-help">Styles are shared through this wiki's database.</small>
</div>
<fieldset class="cmap-appearance-fields cmap-dialog-wide">
<legend data-tr="appearance">Appearance</legend>
<label>
<span id="cmap-concept-background-label" data-tr="background-color">Background color</span>
<span class="cmap-color-control"><input id="cmap-concept-background" class="cmap-color-input" type="text" value="#f3f6f8"><button type="button" class="cmap-color-swatch" aria-label="Choose background color"></button></span>
</label>
<fieldset class="cmap-typography-fields">
<legend data-tr="concept-heading-appearance">Heading</legend>
<label><span data-tr="text-color">Text color</span><span class="cmap-color-control"><input id="cmap-concept-text-color" class="cmap-color-input" type="text" value="#222222"><button type="button" class="cmap-color-swatch" aria-label="Choose heading text color"></button></span></label>
<label><span data-tr="font-family">Font family</span><select id="cmap-concept-font-family"><option value="Arial, Helvetica, sans-serif">Arial</option><option value="Verdana, Geneva, sans-serif">Verdana</option><option value="Tahoma, Geneva, sans-serif">Tahoma</option><option value="Trebuchet MS, Arial, sans-serif">Trebuchet MS</option><option value="Georgia, Times New Roman, serif">Georgia</option><option value="Times New Roman, Times, serif">Times New Roman</option><option value="Courier New, Courier, monospace">Courier New</option><option value="system-ui, sans-serif">System UI</option></select></label>
<label><span data-tr="font-size">Font size</span><span class="cmap-font-size-input"><input id="cmap-concept-font-size" type="number" min="6" max="54" step="0.5"><span>pt</span></span></label>
<label class="cmap-check-label"><input id="cmap-concept-bold" type="checkbox" checked><span data-tr="bold">Bold</span></label>
<label class="cmap-check-label"><input id="cmap-concept-italic" type="checkbox"><span data-tr="italic">Italic</span></label>
</fieldset>
<fieldset class="cmap-typography-fields">
<legend data-tr="concept-subtext-appearance">Subtext</legend>
<label><span data-tr="text-color">Text color</span><span class="cmap-color-control"><input id="cmap-concept-synopsis-text-color" class="cmap-color-input" type="text" value="#222222"><button type="button" class="cmap-color-swatch" aria-label="Choose subtext color"></button></span></label>
<label><span data-tr="font-family">Font family</span><select id="cmap-concept-synopsis-font-family"><option value="Arial, Helvetica, sans-serif">Arial</option><option value="Verdana, Geneva, sans-serif">Verdana</option><option value="Tahoma, Geneva, sans-serif">Tahoma</option><option value="Trebuchet MS, Arial, sans-serif">Trebuchet MS</option><option value="Georgia, Times New Roman, serif">Georgia</option><option value="Times New Roman, Times, serif">Times New Roman</option><option value="Courier New, Courier, monospace">Courier New</option><option value="system-ui, sans-serif">System UI</option></select></label>
<label><span data-tr="font-size">Font size</span><span class="cmap-font-size-input"><input id="cmap-concept-synopsis-font-size" type="number" min="6" max="54" step="0.5"><span>pt</span></span></label>
<label class="cmap-check-label"><input id="cmap-concept-synopsis-bold" type="checkbox"><span data-tr="bold">Bold</span></label>
<label class="cmap-check-label"><input id="cmap-concept-synopsis-italic" type="checkbox"><span data-tr="italic">Italic</span></label>
</fieldset>
</fieldset>
<fieldset id="cmap-submap-style-fields" class="cmap-submap-style-fields hidden">
<legend data-tr="submap-appearance">Sub-CMap appearance</legend>
<label><span data-tr="submap-background-color">Sub-CMap background color</span><span class="cmap-color-control"><input id="cmap-submap-background" class="cmap-color-input" type="text" value="#edf7e8"><button type="button" class="cmap-color-swatch" aria-label="Choose submap background color"></button></span></label>
<label><span data-tr="submap-border-color">Sub-CMap border color</span><span class="cmap-color-control"><input id="cmap-submap-border" class="cmap-color-input" type="text" value="#57834a"><button type="button" class="cmap-color-swatch" aria-label="Choose submap border color"></button></span></label>
</fieldset>
</section>
</div>
<div class="cmap-concept-dialog-actions">
<button id="cmap-concept-cancel" type="button" data-tr="cancel">Cancel</button>
<button type="submit" class="primary" data-tr="save">Save</button>
@@ -550,6 +582,68 @@
</form>
</dialog>
<dialog id="cmap-people-dialog" class="cmap-concept-dialog" aria-labelledby="cmap-people-title">
<form id="cmap-people-form">
<h2 id="cmap-people-title" data-tr="manage-people">Manage people</h2>
<p class="muted" data-tr="manage-people-help">Inactive people remain on existing concepts but are hidden from the selection list for new tags.</p>
<div id="cmap-people-list" class="cmap-people-list"></div>
<div class="cmap-person-add-row">
<input id="cmap-people-new-name" type="text" data-tr-placeholder="person-name" placeholder="Person name">
<button id="cmap-people-add" type="button" data-tr="add-person">Add person</button>
</div>
<div class="cmap-concept-dialog-actions">
<button id="cmap-people-close" type="button" data-tr="close">Close</button>
</div>
</form>
</dialog>
<dialog id="cmap-metadata-dialog" class="cmap-concept-dialog" aria-labelledby="cmap-metadata-title">
<form id="cmap-metadata-form">
<h2 id="cmap-metadata-title" data-tr="concept-map-details">CMap details</h2>
<label>
<span data-tr="summary">Summary</span>
<textarea id="cmap-metadata-summary" rows="5"></textarea>
</label>
<label>
<span data-tr="tags">Tags (comma separated)</span>
<input id="cmap-metadata-tags" type="text" data-tr-placeholder="tags" placeholder="Tags (comma separated)">
</label>
<label>
<span data-tr="concept-map-explanation-page">CMap explanation page</span>
<input id="cmap-metadata-explanation-page" type="text" data-tr-placeholder="concept-map-explanation-placeholder" placeholder="cmap:explanation">
</label>
<p class="muted" data-tr="concept-map-details-help">These details are included in Markdown exports. The explanation page is always included when it exists.</p>
<div class="cmap-concept-dialog-actions">
<button id="cmap-metadata-cancel" type="button" data-tr="cancel">Cancel</button>
<button type="submit" class="primary" data-tr="save">Save</button>
</div>
</form>
</dialog>
<dialog id="cmap-export-dialog" class="cmap-concept-dialog" aria-labelledby="cmap-export-title">
<form id="cmap-export-form">
<h2 id="cmap-export-title" data-tr="export-markdown">Export CMap…</h2>
<label>
<span data-tr="linked-concept-map-depth">Depth of linked CMaps</span>
<input id="cmap-export-depth" type="number" min="0" max="10" step="1" value="1" required>
</label>
<label class="cmap-check-label">
<input id="cmap-export-pages" type="checkbox">
<span data-tr="include-linked-wiki-pages">Include linked wiki pages in Markdown (JSON always includes them)</span>
</label>
<p class="muted" data-tr="cmap-export-help">Markdown is a readable report. JSON is a complete importable bundle containing diagram layout, concepts and linked wiki pages. Level 0 exports only this CMap.</p>
<p id="cmap-export-status" class="muted" role="status"></p>
<div class="cmap-concept-dialog-actions">
<button id="cmap-export-cancel" type="button" data-tr="cancel">Cancel</button>
<button id="cmap-export-copy" type="button" data-tr="copy-markdown">Copy Markdown</button>
<button id="cmap-export-json" type="button" data-tr="download-cmap-json">Download JSON</button>
<button type="submit" class="primary" data-tr="download-markdown">Download Markdown</button>
</div>
</form>
</dialog>
<input id="cmap-import-file" class="hidden" type="file" accept=".json,application/json">
<dialog id="cmap-unsaved-dialog" class="cmap-unsaved-dialog" aria-labelledby="cmap-unsaved-title">
<form method="dialog">
<h2 id="cmap-unsaved-title" data-tr="unsaved-concept-map">Unsaved concept map</h2>
@@ -574,6 +668,7 @@
</dialog>
<script src="/vendor/purify.min.js"></script>
<script src="/vendor/mermaid.min.js"></script>
<script src="/vendor/highlight.min.js"></script>
<script src="/vendor/highlight-scheme.min.js"></script>
<script src="/vendor/easymde.min.js"></script>
@@ -582,6 +677,9 @@
<script src="/cmap/cmap.js?id=__CMAP_CACHE_ID__"></script>
<script src="/cmap/cmap-racket-wiki.js?id=__CMAP_CACHE_ID__"></script>
<script src="/js/combobox.js?id=__CMAP_CACHE_ID__"></script>
<script src="/js/mermaid-racket-wiki.js?id=__CMAP_CACHE_ID__"></script>
<script src="/js/cmap-export.js?id=__CMAP_CACHE_ID__"></script>
<script src="/js/cmap-interchange.js?id=__CMAP_CACHE_ID__"></script>
<script src="/js/wiki.js?id=__CMAP_CACHE_ID__"></script>
</body>
</html>