pict-section-flow 0.0.17 → 0.0.19
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/README.md +18 -18
- package/docs/Architecture.md +1 -1
- package/docs/Data_Model.md +2 -2
- package/docs/Getting_Started.md +5 -5
- package/docs/Implementation_Reference.md +6 -6
- package/docs/Layout_Persistence.md +3 -3
- package/docs/README.md +12 -12
- package/docs/Theme_Integration.md +150 -0
- package/docs/_cover.md +1 -1
- package/docs/_sidebar.md +7 -6
- package/docs/_version.json +7 -0
- package/docs/api/PictFlowCard.md +6 -6
- package/docs/api/PictFlowCardPropertiesPanel.md +2 -2
- package/docs/api/addConnection.md +4 -4
- package/docs/api/addNode.md +6 -6
- package/docs/api/autoLayout.md +2 -2
- package/docs/api/getFlowData.md +5 -5
- package/docs/api/marshalToView.md +3 -3
- package/docs/api/openPanel.md +2 -2
- package/docs/api/registerHandler.md +3 -3
- package/docs/api/registerNodeType.md +3 -3
- package/docs/api/removeConnection.md +5 -5
- package/docs/api/removeNode.md +6 -6
- package/docs/api/saveLayout.md +2 -2
- package/docs/api/screenToSVGCoords.md +2 -2
- package/docs/api/selectNode.md +3 -3
- package/docs/api/setTheme.md +2 -2
- package/docs/api/setZoom.md +3 -3
- package/docs/api/toggleFullscreen.md +2 -2
- package/docs/card-help/EACH.md +3 -3
- package/docs/card-help/FREAD.md +5 -5
- package/docs/card-help/FWRITE.md +5 -5
- package/docs/card-help/GET.md +2 -2
- package/docs/card-help/ITE.md +3 -3
- package/docs/card-help/LOG.md +4 -4
- package/docs/card-help/NOTE.md +1 -1
- package/docs/card-help/PREV.md +2 -2
- package/docs/card-help/SET.md +5 -5
- package/docs/card-help/SPKL.md +2 -2
- package/docs/card-help/STAT.md +3 -3
- package/docs/card-help/SW.md +4 -4
- package/docs/css/docuserve.css +277 -23
- package/docs/index.html +2 -2
- package/docs/retold-catalog.json +1 -1
- package/docs/retold-keyword-index.json +1 -1
- package/example_applications/simple_cards/css/flowexample.css +2 -2
- package/example_applications/simple_cards/source/card-help-content.js +12 -12
- package/example_applications/simple_cards/source/cards/FlowCard-DataPreview.js +1 -1
- package/example_applications/simple_cards/source/sample-flows.js +410 -0
- package/example_applications/simple_cards/source/views/PictView-FlowExample-About.js +5 -5
- package/example_applications/simple_cards/source/views/PictView-FlowExample-Documentation.js +5 -5
- package/example_applications/simple_cards/source/views/PictView-FlowExample-FileWriteInfo.js +4 -4
- package/example_applications/simple_cards/source/views/PictView-FlowExample-MainWorkspace.js +141 -8
- package/example_applications/simple_cards/source/views/PictView-FlowExample-TopBar.js +2 -2
- package/package.json +8 -7
- package/source/Pict-Section-Flow.js +26 -0
- package/source/providers/PictProvider-Flow-CSS.js +435 -61
- package/source/providers/PictProvider-Flow-ConnectorShapes.js +9 -5
- package/source/providers/PictProvider-Flow-NodeTypes.js +10 -0
- package/source/providers/PictProvider-Flow-PanelChrome.js +7 -17
- package/source/providers/PictProvider-Flow-Theme.js +7 -7
- package/source/providers/edges/Edge-Bezier.js +41 -0
- package/source/providers/edges/Edge-Orthogonal.js +37 -0
- package/source/providers/edges/Edge-OrthogonalSnap.js +72 -0
- package/source/providers/edges/Edge-Perimeter-Linear.js +31 -0
- package/source/providers/edges/Edge-Perimeter-Orthogonal.js +39 -0
- package/source/providers/edges/Edge-Perimeter.js +48 -0
- package/source/providers/edges/Edge-PerimeterMath.js +92 -0
- package/source/providers/edges/Edge-Straight.js +24 -0
- package/source/providers/layouts/Layout-Circular.js +203 -0
- package/source/providers/layouts/Layout-Coerce.js +40 -0
- package/source/providers/layouts/Layout-Columnar.js +134 -0
- package/source/providers/layouts/Layout-Custom.js +27 -0
- package/source/providers/layouts/Layout-ForcedFromCenter.js +256 -0
- package/source/providers/layouts/Layout-Grid.js +134 -0
- package/source/providers/layouts/Layout-Layered.js +209 -0
- package/source/providers/layouts/Layout-Tabular.js +94 -0
- package/source/services/PictService-Flow-ConnectionRenderer.js +532 -28
- package/source/services/PictService-Flow-DataManager.js +12 -1
- package/source/services/PictService-Flow-InteractionManager.js +39 -42
- package/source/services/PictService-Flow-Layout.js +305 -121
- package/source/services/PictService-Flow-PortRenderer.js +108 -26
- package/source/services/PictService-Flow-RenderManager.js +41 -11
- package/source/views/PictView-Flow-FloatingToolbar.js +69 -61
- package/source/views/PictView-Flow-Node.js +47 -6
- package/source/views/PictView-Flow-PropertiesPanel.js +46 -53
- package/source/views/PictView-Flow-Toolbar.js +1065 -485
- package/source/views/PictView-Flow.js +455 -7
- package/test/Layout_tests.js +1400 -0
- package/test/PortRenderer_tests.js +11 -2
|
@@ -16,12 +16,12 @@ flowView.removeConnection(pConnectionHash)
|
|
|
16
16
|
|
|
17
17
|
## Returns
|
|
18
18
|
|
|
19
|
-
`boolean`
|
|
19
|
+
`boolean` -- `true` if the connection was found and removed, `false` otherwise.
|
|
20
20
|
|
|
21
21
|
## Events Fired
|
|
22
22
|
|
|
23
|
-
- `onConnectionRemoved`
|
|
24
|
-
- `onFlowChanged`
|
|
23
|
+
- `onConnectionRemoved` -- with the removed connection object
|
|
24
|
+
- `onFlowChanged` -- with the updated flow data
|
|
25
25
|
|
|
26
26
|
## Examples
|
|
27
27
|
|
|
@@ -53,5 +53,5 @@ tmpFlowData.Connections.forEach((pConn) =>
|
|
|
53
53
|
|
|
54
54
|
## See Also
|
|
55
55
|
|
|
56
|
-
- [addConnection](addConnection.md)
|
|
57
|
-
- [removeNode](removeNode.md)
|
|
56
|
+
- [addConnection](addConnection.md) -- Create a connection
|
|
57
|
+
- [removeNode](removeNode.md) -- Remove a node (cascades connections)
|
package/docs/api/removeNode.md
CHANGED
|
@@ -16,13 +16,13 @@ flowView.removeNode(pNodeHash)
|
|
|
16
16
|
|
|
17
17
|
## Returns
|
|
18
18
|
|
|
19
|
-
`boolean`
|
|
19
|
+
`boolean` -- `true` if the node was found and removed, `false` otherwise.
|
|
20
20
|
|
|
21
21
|
## Events Fired
|
|
22
22
|
|
|
23
|
-
- `onNodeRemoved`
|
|
24
|
-
- `onConnectionRemoved`
|
|
25
|
-
- `onFlowChanged`
|
|
23
|
+
- `onNodeRemoved` -- with the removed node object
|
|
24
|
+
- `onConnectionRemoved` -- for each connection that was cascaded
|
|
25
|
+
- `onFlowChanged` -- with the updated flow data
|
|
26
26
|
|
|
27
27
|
## Examples
|
|
28
28
|
|
|
@@ -76,5 +76,5 @@ tmpFlowData.Nodes.forEach((pNode) =>
|
|
|
76
76
|
|
|
77
77
|
## See Also
|
|
78
78
|
|
|
79
|
-
- [addNode](addNode.md)
|
|
80
|
-
- [deleteSelected](selectNode.md)
|
|
79
|
+
- [addNode](addNode.md) -- Create a node
|
|
80
|
+
- [deleteSelected](selectNode.md) -- Delete the currently selected element
|
package/docs/api/saveLayout.md
CHANGED
|
@@ -148,5 +148,5 @@ tmpLayoutProvider.loadPersistedLayouts();
|
|
|
148
148
|
|
|
149
149
|
## See Also
|
|
150
150
|
|
|
151
|
-
- [Layout Persistence](../Layout_Persistence.md)
|
|
152
|
-
- [autoLayout](autoLayout.md)
|
|
151
|
+
- [Layout Persistence](../Layout_Persistence.md) -- Detailed guide on storage backends
|
|
152
|
+
- [autoLayout](autoLayout.md) -- Automatic topological layout
|
|
@@ -64,5 +64,5 @@ document.getElementById('flow-container').addEventListener('mousemove', (pEvent)
|
|
|
64
64
|
|
|
65
65
|
## See Also
|
|
66
66
|
|
|
67
|
-
- [setZoom](setZoom.md)
|
|
68
|
-
- [addNode](addNode.md)
|
|
67
|
+
- [setZoom](setZoom.md) -- Viewport zoom (affects coordinate mapping)
|
|
68
|
+
- [addNode](addNode.md) -- Create nodes at specific coordinates
|
package/docs/api/selectNode.md
CHANGED
|
@@ -50,7 +50,7 @@ Clear all selection state (node, connection, and tether).
|
|
|
50
50
|
|
|
51
51
|
Delete the currently selected node or connection. If a node is selected, its connections are also removed.
|
|
52
52
|
|
|
53
|
-
**Returns:** `boolean`
|
|
53
|
+
**Returns:** `boolean` -- `true` if something was deleted.
|
|
54
54
|
|
|
55
55
|
## Examples
|
|
56
56
|
|
|
@@ -112,5 +112,5 @@ function handleDelete()
|
|
|
112
112
|
|
|
113
113
|
## See Also
|
|
114
114
|
|
|
115
|
-
- [addNode](addNode.md) / [removeNode](removeNode.md)
|
|
116
|
-
- [registerHandler](registerHandler.md)
|
|
115
|
+
- [addNode](addNode.md) / [removeNode](removeNode.md) -- Node CRUD
|
|
116
|
+
- [registerHandler](registerHandler.md) -- Event hooks
|
package/docs/api/setTheme.md
CHANGED
|
@@ -164,5 +164,5 @@ flowView._ThemeProvider.registerTheme('corporate',
|
|
|
164
164
|
|
|
165
165
|
## See Also
|
|
166
166
|
|
|
167
|
-
- [Custom Styling](../Custom-Styling.md)
|
|
168
|
-
- [registerHandler](registerHandler.md)
|
|
167
|
+
- [Custom Styling](../Custom-Styling.md) -- Full CSS custom properties reference
|
|
168
|
+
- [registerHandler](registerHandler.md) -- Listen for `onThemeChanged` events
|
package/docs/api/setZoom.md
CHANGED
|
@@ -92,6 +92,6 @@ Zoom bounds are set in the view configuration:
|
|
|
92
92
|
|
|
93
93
|
## See Also
|
|
94
94
|
|
|
95
|
-
- [screenToSVGCoords](screenToSVGCoords.md)
|
|
96
|
-
- [toggleFullscreen](toggleFullscreen.md)
|
|
97
|
-
- [autoLayout](autoLayout.md)
|
|
95
|
+
- [screenToSVGCoords](screenToSVGCoords.md) -- Coordinate conversion
|
|
96
|
+
- [toggleFullscreen](toggleFullscreen.md) -- Fullscreen mode
|
|
97
|
+
- [autoLayout](autoLayout.md) -- Automatic node arrangement
|
|
@@ -13,7 +13,7 @@ flowView.exitFullscreen();
|
|
|
13
13
|
|
|
14
14
|
Toggles between normal and fullscreen modes.
|
|
15
15
|
|
|
16
|
-
**Returns:** `boolean`
|
|
16
|
+
**Returns:** `boolean` -- the new fullscreen state (`true` if now fullscreen).
|
|
17
17
|
|
|
18
18
|
## exitFullscreen
|
|
19
19
|
|
|
@@ -65,4 +65,4 @@ setTimeout(() =>
|
|
|
65
65
|
|
|
66
66
|
## See Also
|
|
67
67
|
|
|
68
|
-
- [setZoom / zoomToFit](setZoom.md)
|
|
68
|
+
- [setZoom / zoomToFit](setZoom.md) -- Viewport controls
|
package/docs/card-help/EACH.md
CHANGED
|
@@ -4,9 +4,9 @@ The **Each** node iterates over a collection, executing connected downstream nod
|
|
|
4
4
|
|
|
5
5
|
## Ports
|
|
6
6
|
|
|
7
|
-
- **Collection** (input)
|
|
8
|
-
- **Item** (output)
|
|
9
|
-
- **Done** (output)
|
|
7
|
+
- **Collection** (input) -- an array or iterable to loop over
|
|
8
|
+
- **Item** (output) -- fires once per element with the current item
|
|
9
|
+
- **Done** (output) -- fires after all items have been processed
|
|
10
10
|
|
|
11
11
|
## Behavior
|
|
12
12
|
|
package/docs/card-help/FREAD.md
CHANGED
|
@@ -4,14 +4,14 @@ The **File Read** node reads the contents of a file from the filesystem and outp
|
|
|
4
4
|
|
|
5
5
|
## Ports
|
|
6
6
|
|
|
7
|
-
- **Path** (input)
|
|
8
|
-
- **Data** (output)
|
|
9
|
-
- **Error** (output)
|
|
7
|
+
- **Path** (input) -- the filesystem path to read
|
|
8
|
+
- **Data** (output) -- the file contents on success
|
|
9
|
+
- **Error** (output) -- fires if the read operation fails
|
|
10
10
|
|
|
11
11
|
## Properties
|
|
12
12
|
|
|
13
|
-
- **FilePath**
|
|
14
|
-
- **Encoding**
|
|
13
|
+
- **FilePath** -- the path to the file to read
|
|
14
|
+
- **Encoding** -- character encoding for text files (e.g. `utf8`, `ascii`)
|
|
15
15
|
|
|
16
16
|
## Behavior
|
|
17
17
|
|
package/docs/card-help/FWRITE.md
CHANGED
|
@@ -4,10 +4,10 @@ The **File Write** node writes data to a file on the filesystem.
|
|
|
4
4
|
|
|
5
5
|
## Ports
|
|
6
6
|
|
|
7
|
-
- **Path** (input)
|
|
8
|
-
- **Data** (input)
|
|
9
|
-
- **Done** (output)
|
|
10
|
-
- **Error** (output)
|
|
7
|
+
- **Path** (input) -- the destination filesystem path
|
|
8
|
+
- **Data** (input) -- the content to write
|
|
9
|
+
- **Done** (output) -- fires after a successful write
|
|
10
|
+
- **Error** (output) -- fires if the write operation fails
|
|
11
11
|
|
|
12
12
|
## Behavior
|
|
13
13
|
|
|
@@ -19,6 +19,6 @@ The properties panel shows a View-based info panel with details about the config
|
|
|
19
19
|
|
|
20
20
|
## Tips
|
|
21
21
|
|
|
22
|
-
- Directories in the path are not created automatically
|
|
22
|
+
- Directories in the path are not created automatically -- ensure they exist before writing
|
|
23
23
|
- Combine with a Set Value node to format data before writing
|
|
24
24
|
- Connect the **Error** output to a Log Values node to capture write failures
|
package/docs/card-help/GET.md
CHANGED
|
@@ -4,8 +4,8 @@ The **Get Value** node retrieves a named variable from the flow context and emit
|
|
|
4
4
|
|
|
5
5
|
## Ports
|
|
6
6
|
|
|
7
|
-
- **In** (input)
|
|
8
|
-
- **Value** (output)
|
|
7
|
+
- **In** (input) -- trigger to read the value
|
|
8
|
+
- **Value** (output) -- the retrieved value
|
|
9
9
|
|
|
10
10
|
## Behavior
|
|
11
11
|
|
package/docs/card-help/ITE.md
CHANGED
|
@@ -4,9 +4,9 @@ The **If-Then-Else** node evaluates a boolean condition expression and routes th
|
|
|
4
4
|
|
|
5
5
|
## Ports
|
|
6
6
|
|
|
7
|
-
- **In** (input)
|
|
8
|
-
- **Then** (output)
|
|
9
|
-
- **Else** (output)
|
|
7
|
+
- **In** (input) -- trigger that starts the evaluation
|
|
8
|
+
- **Then** (output) -- activated when the condition is **true**
|
|
9
|
+
- **Else** (output) -- activated when the condition is **false**
|
|
10
10
|
|
|
11
11
|
## Behavior
|
|
12
12
|
|
package/docs/card-help/LOG.md
CHANGED
|
@@ -4,13 +4,13 @@ The **Log Values** node writes incoming data to the console or log output for de
|
|
|
4
4
|
|
|
5
5
|
## Ports
|
|
6
6
|
|
|
7
|
-
- **Values** (input, multi)
|
|
8
|
-
- **Pass** (output)
|
|
7
|
+
- **Values** (input, multi) -- accepts one or more connections carrying values to log
|
|
8
|
+
- **Pass** (output) -- passes the last received value through unchanged
|
|
9
9
|
|
|
10
10
|
## Properties
|
|
11
11
|
|
|
12
|
-
- **LogLevel**
|
|
13
|
-
- **Format**
|
|
12
|
+
- **LogLevel** -- the severity level for the log entry (e.g. `info`, `warn`, `error`, `trace`)
|
|
13
|
+
- **Format** -- an optional format string controlling how values are serialized
|
|
14
14
|
|
|
15
15
|
## Behavior
|
|
16
16
|
|
package/docs/card-help/NOTE.md
CHANGED
package/docs/card-help/PREV.md
CHANGED
|
@@ -4,8 +4,8 @@ The **Data Preview** node displays a tabular summary of the data flowing through
|
|
|
4
4
|
|
|
5
5
|
## Ports
|
|
6
6
|
|
|
7
|
-
- **Data** (input)
|
|
8
|
-
- **Pass** (output)
|
|
7
|
+
- **Data** (input) -- the data object to inspect
|
|
8
|
+
- **Pass** (output) -- passes the data through unchanged
|
|
9
9
|
|
|
10
10
|
## Behavior
|
|
11
11
|
|
package/docs/card-help/SET.md
CHANGED
|
@@ -4,13 +4,13 @@ The **Set Value** node assigns a value to a named variable in the flow context.
|
|
|
4
4
|
|
|
5
5
|
## Ports
|
|
6
6
|
|
|
7
|
-
- **In** (input)
|
|
8
|
-
- **Out** (output)
|
|
7
|
+
- **In** (input) -- trigger to perform the assignment
|
|
8
|
+
- **Out** (output) -- fires after the value has been set
|
|
9
9
|
|
|
10
10
|
## Properties
|
|
11
11
|
|
|
12
|
-
- **Variable Name**
|
|
13
|
-
- **Value Expression**
|
|
12
|
+
- **Variable Name** -- the key under which the value will be stored
|
|
13
|
+
- **Value Expression** -- the expression to evaluate and assign
|
|
14
14
|
|
|
15
15
|
## Behavior
|
|
16
16
|
|
|
@@ -22,6 +22,6 @@ Open the properties panel to configure the variable name and value expression us
|
|
|
22
22
|
|
|
23
23
|
## Tips
|
|
24
24
|
|
|
25
|
-
- Variable names are case-sensitive
|
|
25
|
+
- Variable names are case-sensitive -- use consistent naming conventions
|
|
26
26
|
- Value expressions have access to the current flow context
|
|
27
27
|
- Use Set Value at the beginning of a flow to initialize default variables
|
package/docs/card-help/SPKL.md
CHANGED
|
@@ -4,8 +4,8 @@ The **Sparkline** node renders a live sparkline chart visualizing numeric throug
|
|
|
4
4
|
|
|
5
5
|
## Ports
|
|
6
6
|
|
|
7
|
-
- **Values** (input)
|
|
8
|
-
- **Stats** (output)
|
|
7
|
+
- **Values** (input) -- a numeric array or stream of values to plot
|
|
8
|
+
- **Stats** (output) -- emits computed statistics (min, max, mean) for the data set
|
|
9
9
|
|
|
10
10
|
## Behavior
|
|
11
11
|
|
package/docs/card-help/STAT.md
CHANGED
|
@@ -4,9 +4,9 @@ The **Status Monitor** node monitors the health status of upstream services and
|
|
|
4
4
|
|
|
5
5
|
## Ports
|
|
6
6
|
|
|
7
|
-
- **Check** (input, multi)
|
|
8
|
-
- **Healthy** (output)
|
|
9
|
-
- **Degraded** (output)
|
|
7
|
+
- **Check** (input, multi) -- accepts connections from one or more services to monitor
|
|
8
|
+
- **Healthy** (output) -- fires when all monitored services report healthy
|
|
9
|
+
- **Degraded** (output) -- fires when one or more services report degraded status
|
|
10
10
|
|
|
11
11
|
## Behavior
|
|
12
12
|
|
package/docs/card-help/SW.md
CHANGED
|
@@ -4,10 +4,10 @@ The **Switch** node routes execution to one of multiple outputs based on a match
|
|
|
4
4
|
|
|
5
5
|
## Ports
|
|
6
6
|
|
|
7
|
-
- **In** (input)
|
|
8
|
-
- **Case A** (output)
|
|
9
|
-
- **Case B** (output)
|
|
10
|
-
- **Default** (output)
|
|
7
|
+
- **In** (input) -- the value to match against cases
|
|
8
|
+
- **Case A** (output) -- fires when the input matches case A
|
|
9
|
+
- **Case B** (output) -- fires when the input matches case B
|
|
10
|
+
- **Default** (output) -- fires when the input does not match any defined case
|
|
11
11
|
|
|
12
12
|
## Behavior
|
|
13
13
|
|
package/docs/css/docuserve.css
CHANGED
|
@@ -1,73 +1,327 @@
|
|
|
1
1
|
/* ============================================================================
|
|
2
|
-
Pict Docuserve - Base Styles
|
|
2
|
+
Pict Docuserve - Base Styles & Theme Variables
|
|
3
3
|
============================================================================ */
|
|
4
4
|
|
|
5
|
-
/*
|
|
6
|
-
|
|
5
|
+
/* ----------------------------------------------------------------------------
|
|
6
|
+
Theme variables — light defaults on :root.
|
|
7
|
+
Dark mode applies when either:
|
|
8
|
+
(a) the user explicitly selected dark via <html data-theme="dark">
|
|
9
|
+
(b) the user hasn't chosen anything AND the system prefers dark
|
|
10
|
+
An explicit <html data-theme="light"> pins the light palette regardless.
|
|
11
|
+
---------------------------------------------------------------------------- */
|
|
12
|
+
|
|
13
|
+
:root
|
|
14
|
+
{
|
|
15
|
+
/* Surfaces */
|
|
16
|
+
--docuserve-bg: #FDFBF7;
|
|
17
|
+
--docuserve-bg-elevated: #FFFFFF;
|
|
18
|
+
--docuserve-border: #DDD6CA;
|
|
19
|
+
--docuserve-border-soft: #EAE3D8;
|
|
20
|
+
|
|
21
|
+
/* Text */
|
|
22
|
+
--docuserve-text: #2A241E;
|
|
23
|
+
--docuserve-text-strong: #3D3229;
|
|
24
|
+
--docuserve-text-muted: #5E5549;
|
|
25
|
+
--docuserve-text-dim: #8A7F72;
|
|
26
|
+
|
|
27
|
+
/* Accent / links */
|
|
28
|
+
--docuserve-accent: #2E7D74;
|
|
29
|
+
--docuserve-accent-hover: #236660;
|
|
30
|
+
|
|
31
|
+
/* Top bar */
|
|
32
|
+
--docuserve-topbar-bg: #3D3229;
|
|
33
|
+
--docuserve-topbar-text: #E8E0D4;
|
|
34
|
+
--docuserve-topbar-text-muted: #B5AA9A;
|
|
35
|
+
--docuserve-topbar-text-dim: #8A7F72;
|
|
36
|
+
--docuserve-topbar-hover-bg: #524438;
|
|
37
|
+
--docuserve-topbar-version-bg: rgba(255, 255, 255, 0.06);
|
|
38
|
+
--docuserve-topbar-version-border: rgba(255, 255, 255, 0.08);
|
|
39
|
+
--docuserve-topbar-version-text: #B5AA9A;
|
|
40
|
+
|
|
41
|
+
/* Sidebar */
|
|
42
|
+
--docuserve-sidebar-bg: #FAF7F1;
|
|
43
|
+
--docuserve-sidebar-border: #DDD6CA;
|
|
44
|
+
--docuserve-sidebar-border-soft: #E5DED1;
|
|
45
|
+
--docuserve-sidebar-text: #423D37;
|
|
46
|
+
--docuserve-sidebar-group-title: #3D3229;
|
|
47
|
+
--docuserve-sidebar-module-text: #5E5549;
|
|
48
|
+
--docuserve-sidebar-hover-bg: #EAE3D8;
|
|
49
|
+
--docuserve-sidebar-hover-text: #2E7D74;
|
|
50
|
+
--docuserve-sidebar-active-bg: #E5DED1;
|
|
51
|
+
--docuserve-sidebar-active-text: #2E7D74;
|
|
52
|
+
--docuserve-sidebar-search-bg: #FFFFFF;
|
|
53
|
+
--docuserve-sidebar-search-border: #DDD6CA;
|
|
54
|
+
|
|
55
|
+
/* Inline code */
|
|
56
|
+
--docuserve-inline-code-bg: #F0ECE4;
|
|
57
|
+
--docuserve-inline-code-text: #9E3A50;
|
|
58
|
+
|
|
59
|
+
/* Code block panel */
|
|
60
|
+
--docuserve-code-bg: #F6F3EE;
|
|
61
|
+
--docuserve-code-border: #E5DED1;
|
|
62
|
+
--docuserve-code-gutter-bg: #EFEAE0;
|
|
63
|
+
--docuserve-code-gutter-border: #DDD6CA;
|
|
64
|
+
--docuserve-code-gutter-text: #A59986;
|
|
65
|
+
--docuserve-code-text: #2A241E;
|
|
66
|
+
|
|
67
|
+
/* Syntax tokens — low-chroma dark-on-light palette */
|
|
68
|
+
--docuserve-tok-keyword: #A03472;
|
|
69
|
+
--docuserve-tok-string: #1A6640;
|
|
70
|
+
--docuserve-tok-number: #B25A00;
|
|
71
|
+
--docuserve-tok-comment: #8A7F72;
|
|
72
|
+
--docuserve-tok-operator: #2E7D74;
|
|
73
|
+
--docuserve-tok-punctuation: #2A241E;
|
|
74
|
+
--docuserve-tok-function: #2A5DB0;
|
|
75
|
+
--docuserve-tok-property: #9E3A50;
|
|
76
|
+
--docuserve-tok-tag: #9E3A50;
|
|
77
|
+
--docuserve-tok-attr-name: #B25A00;
|
|
78
|
+
--docuserve-tok-attr-value: #1A6640;
|
|
79
|
+
|
|
80
|
+
/* Tables, blockquotes, mermaid */
|
|
81
|
+
--docuserve-table-header-bg: #F5F0E8;
|
|
82
|
+
--docuserve-table-row-alt-bg: #F9F6F0;
|
|
83
|
+
--docuserve-blockquote-bg: #F7F5F0;
|
|
84
|
+
--docuserve-blockquote-border: #2E7D74;
|
|
85
|
+
--docuserve-blockquote-text: #5E5549;
|
|
86
|
+
--docuserve-mermaid-bg: #FFFFFF;
|
|
87
|
+
|
|
88
|
+
/* Scrollbars */
|
|
89
|
+
--docuserve-scrollbar-track: #F5F0E8;
|
|
90
|
+
--docuserve-scrollbar-thumb: #D4CCBE;
|
|
91
|
+
--docuserve-scrollbar-thumb-hover: #B5AA9A;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
@media (prefers-color-scheme: dark)
|
|
95
|
+
{
|
|
96
|
+
:root:not([data-theme="light"])
|
|
97
|
+
{
|
|
98
|
+
--docuserve-bg: #15120F;
|
|
99
|
+
--docuserve-bg-elevated: #1B1814;
|
|
100
|
+
--docuserve-border: #2F2823;
|
|
101
|
+
--docuserve-border-soft: #26211C;
|
|
102
|
+
|
|
103
|
+
--docuserve-text: #E8E0D4;
|
|
104
|
+
--docuserve-text-strong: #F2ECE0;
|
|
105
|
+
--docuserve-text-muted: #B5AA9A;
|
|
106
|
+
--docuserve-text-dim: #7A6F62;
|
|
107
|
+
|
|
108
|
+
--docuserve-accent: #5DB8A8;
|
|
109
|
+
--docuserve-accent-hover: #7FCCB8;
|
|
110
|
+
|
|
111
|
+
--docuserve-topbar-bg: #1A1612;
|
|
112
|
+
--docuserve-topbar-text: #E8E0D4;
|
|
113
|
+
--docuserve-topbar-text-muted: #B5AA9A;
|
|
114
|
+
--docuserve-topbar-text-dim: #7A6F62;
|
|
115
|
+
--docuserve-topbar-hover-bg: #2A241E;
|
|
116
|
+
--docuserve-topbar-version-bg: rgba(255, 255, 255, 0.05);
|
|
117
|
+
--docuserve-topbar-version-border: rgba(255, 255, 255, 0.09);
|
|
118
|
+
--docuserve-topbar-version-text: #B5AA9A;
|
|
119
|
+
|
|
120
|
+
--docuserve-sidebar-bg: #1B1814;
|
|
121
|
+
--docuserve-sidebar-border: #2F2823;
|
|
122
|
+
--docuserve-sidebar-border-soft: #26211C;
|
|
123
|
+
--docuserve-sidebar-text: #C9C0B3;
|
|
124
|
+
--docuserve-sidebar-group-title: #F2ECE0;
|
|
125
|
+
--docuserve-sidebar-module-text: #B5AA9A;
|
|
126
|
+
--docuserve-sidebar-hover-bg: #2A241E;
|
|
127
|
+
--docuserve-sidebar-hover-text: #7FCCB8;
|
|
128
|
+
--docuserve-sidebar-active-bg: #2F2823;
|
|
129
|
+
--docuserve-sidebar-active-text: #7FCCB8;
|
|
130
|
+
--docuserve-sidebar-search-bg: #26211C;
|
|
131
|
+
--docuserve-sidebar-search-border: #2F2823;
|
|
132
|
+
|
|
133
|
+
--docuserve-inline-code-bg: #2A241E;
|
|
134
|
+
--docuserve-inline-code-text: #E8B07A;
|
|
135
|
+
|
|
136
|
+
--docuserve-code-bg: #1E1A17;
|
|
137
|
+
--docuserve-code-border: #2F2823;
|
|
138
|
+
--docuserve-code-gutter-bg: #17130F;
|
|
139
|
+
--docuserve-code-gutter-border: #2F2823;
|
|
140
|
+
--docuserve-code-gutter-text: #6A6052;
|
|
141
|
+
--docuserve-code-text: #E8E0D4;
|
|
142
|
+
|
|
143
|
+
--docuserve-tok-keyword: #C678DD;
|
|
144
|
+
--docuserve-tok-string: #98C379;
|
|
145
|
+
--docuserve-tok-number: #D19A66;
|
|
146
|
+
--docuserve-tok-comment: #7F848E;
|
|
147
|
+
--docuserve-tok-operator: #56B6C2;
|
|
148
|
+
--docuserve-tok-punctuation: #E8E0D4;
|
|
149
|
+
--docuserve-tok-function: #61AFEF;
|
|
150
|
+
--docuserve-tok-property: #E06C75;
|
|
151
|
+
--docuserve-tok-tag: #E06C75;
|
|
152
|
+
--docuserve-tok-attr-name: #D19A66;
|
|
153
|
+
--docuserve-tok-attr-value: #98C379;
|
|
154
|
+
|
|
155
|
+
--docuserve-table-header-bg: #26211C;
|
|
156
|
+
--docuserve-table-row-alt-bg: #1F1B17;
|
|
157
|
+
--docuserve-blockquote-bg: #1F1B17;
|
|
158
|
+
--docuserve-blockquote-border: #5DB8A8;
|
|
159
|
+
--docuserve-blockquote-text: #C9C0B3;
|
|
160
|
+
--docuserve-mermaid-bg: #E8E0D4;
|
|
161
|
+
|
|
162
|
+
--docuserve-scrollbar-track: #1B1814;
|
|
163
|
+
--docuserve-scrollbar-thumb: #3A322B;
|
|
164
|
+
--docuserve-scrollbar-thumb-hover: #524438;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
:root[data-theme="dark"]
|
|
169
|
+
{
|
|
170
|
+
--docuserve-bg: #15120F;
|
|
171
|
+
--docuserve-bg-elevated: #1B1814;
|
|
172
|
+
--docuserve-border: #2F2823;
|
|
173
|
+
--docuserve-border-soft: #26211C;
|
|
174
|
+
|
|
175
|
+
--docuserve-text: #E8E0D4;
|
|
176
|
+
--docuserve-text-strong: #F2ECE0;
|
|
177
|
+
--docuserve-text-muted: #B5AA9A;
|
|
178
|
+
--docuserve-text-dim: #7A6F62;
|
|
179
|
+
|
|
180
|
+
--docuserve-accent: #5DB8A8;
|
|
181
|
+
--docuserve-accent-hover: #7FCCB8;
|
|
182
|
+
|
|
183
|
+
--docuserve-topbar-bg: #1A1612;
|
|
184
|
+
--docuserve-topbar-text: #E8E0D4;
|
|
185
|
+
--docuserve-topbar-text-muted: #B5AA9A;
|
|
186
|
+
--docuserve-topbar-text-dim: #7A6F62;
|
|
187
|
+
--docuserve-topbar-hover-bg: #2A241E;
|
|
188
|
+
--docuserve-topbar-version-bg: rgba(255, 255, 255, 0.05);
|
|
189
|
+
--docuserve-topbar-version-border: rgba(255, 255, 255, 0.09);
|
|
190
|
+
--docuserve-topbar-version-text: #B5AA9A;
|
|
191
|
+
|
|
192
|
+
--docuserve-sidebar-bg: #1B1814;
|
|
193
|
+
--docuserve-sidebar-border: #2F2823;
|
|
194
|
+
--docuserve-sidebar-border-soft: #26211C;
|
|
195
|
+
--docuserve-sidebar-text: #C9C0B3;
|
|
196
|
+
--docuserve-sidebar-group-title: #F2ECE0;
|
|
197
|
+
--docuserve-sidebar-module-text: #B5AA9A;
|
|
198
|
+
--docuserve-sidebar-hover-bg: #2A241E;
|
|
199
|
+
--docuserve-sidebar-hover-text: #7FCCB8;
|
|
200
|
+
--docuserve-sidebar-active-bg: #2F2823;
|
|
201
|
+
--docuserve-sidebar-active-text: #7FCCB8;
|
|
202
|
+
--docuserve-sidebar-search-bg: #26211C;
|
|
203
|
+
--docuserve-sidebar-search-border: #2F2823;
|
|
204
|
+
|
|
205
|
+
--docuserve-inline-code-bg: #2A241E;
|
|
206
|
+
--docuserve-inline-code-text: #E8B07A;
|
|
207
|
+
|
|
208
|
+
--docuserve-code-bg: #1E1A17;
|
|
209
|
+
--docuserve-code-border: #2F2823;
|
|
210
|
+
--docuserve-code-gutter-bg: #17130F;
|
|
211
|
+
--docuserve-code-gutter-border: #2F2823;
|
|
212
|
+
--docuserve-code-gutter-text: #6A6052;
|
|
213
|
+
--docuserve-code-text: #E8E0D4;
|
|
214
|
+
|
|
215
|
+
--docuserve-tok-keyword: #C678DD;
|
|
216
|
+
--docuserve-tok-string: #98C379;
|
|
217
|
+
--docuserve-tok-number: #D19A66;
|
|
218
|
+
--docuserve-tok-comment: #7F848E;
|
|
219
|
+
--docuserve-tok-operator: #56B6C2;
|
|
220
|
+
--docuserve-tok-punctuation: #E8E0D4;
|
|
221
|
+
--docuserve-tok-function: #61AFEF;
|
|
222
|
+
--docuserve-tok-property: #E06C75;
|
|
223
|
+
--docuserve-tok-tag: #E06C75;
|
|
224
|
+
--docuserve-tok-attr-name: #D19A66;
|
|
225
|
+
--docuserve-tok-attr-value: #98C379;
|
|
226
|
+
|
|
227
|
+
--docuserve-table-header-bg: #26211C;
|
|
228
|
+
--docuserve-table-row-alt-bg: #1F1B17;
|
|
229
|
+
--docuserve-blockquote-bg: #1F1B17;
|
|
230
|
+
--docuserve-blockquote-border: #5DB8A8;
|
|
231
|
+
--docuserve-blockquote-text: #C9C0B3;
|
|
232
|
+
--docuserve-mermaid-bg: #E8E0D4;
|
|
233
|
+
|
|
234
|
+
--docuserve-scrollbar-track: #1B1814;
|
|
235
|
+
--docuserve-scrollbar-thumb: #3A322B;
|
|
236
|
+
--docuserve-scrollbar-thumb-hover: #524438;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/* ----------------------------------------------------------------------------
|
|
240
|
+
Reset and base
|
|
241
|
+
---------------------------------------------------------------------------- */
|
|
242
|
+
|
|
243
|
+
*, *::before, *::after
|
|
244
|
+
{
|
|
7
245
|
box-sizing: border-box;
|
|
8
246
|
}
|
|
9
247
|
|
|
10
|
-
html, body
|
|
248
|
+
html, body
|
|
249
|
+
{
|
|
11
250
|
margin: 0;
|
|
12
251
|
padding: 0;
|
|
13
252
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
14
253
|
font-size: 16px;
|
|
15
254
|
line-height: 1.5;
|
|
16
|
-
color:
|
|
17
|
-
background-color:
|
|
255
|
+
color: var(--docuserve-text);
|
|
256
|
+
background-color: var(--docuserve-bg);
|
|
18
257
|
-webkit-font-smoothing: antialiased;
|
|
19
258
|
-moz-osx-font-smoothing: grayscale;
|
|
259
|
+
transition: background-color 0.15s ease, color 0.15s ease;
|
|
20
260
|
}
|
|
21
261
|
|
|
22
262
|
/* Typography */
|
|
23
|
-
h1, h2, h3, h4, h5, h6
|
|
263
|
+
h1, h2, h3, h4, h5, h6
|
|
264
|
+
{
|
|
24
265
|
margin-top: 0;
|
|
25
266
|
line-height: 1.3;
|
|
267
|
+
color: var(--docuserve-text-strong);
|
|
26
268
|
}
|
|
27
269
|
|
|
28
|
-
a
|
|
29
|
-
|
|
270
|
+
a
|
|
271
|
+
{
|
|
272
|
+
color: var(--docuserve-accent);
|
|
30
273
|
text-decoration: none;
|
|
31
274
|
}
|
|
32
275
|
|
|
33
|
-
a:hover
|
|
34
|
-
|
|
276
|
+
a:hover
|
|
277
|
+
{
|
|
278
|
+
color: var(--docuserve-accent-hover);
|
|
35
279
|
}
|
|
36
280
|
|
|
37
281
|
/* Application container */
|
|
38
|
-
#Docuserve-Application-Container
|
|
282
|
+
#Docuserve-Application-Container
|
|
283
|
+
{
|
|
39
284
|
min-height: 100vh;
|
|
40
285
|
}
|
|
41
286
|
|
|
42
287
|
/* Utility: scrollbar styling */
|
|
43
|
-
::-webkit-scrollbar
|
|
288
|
+
::-webkit-scrollbar
|
|
289
|
+
{
|
|
44
290
|
width: 8px;
|
|
291
|
+
height: 8px;
|
|
45
292
|
}
|
|
46
293
|
|
|
47
|
-
::-webkit-scrollbar-track
|
|
48
|
-
|
|
294
|
+
::-webkit-scrollbar-track
|
|
295
|
+
{
|
|
296
|
+
background: var(--docuserve-scrollbar-track);
|
|
49
297
|
}
|
|
50
298
|
|
|
51
|
-
::-webkit-scrollbar-thumb
|
|
52
|
-
|
|
299
|
+
::-webkit-scrollbar-thumb
|
|
300
|
+
{
|
|
301
|
+
background: var(--docuserve-scrollbar-thumb);
|
|
53
302
|
border-radius: 4px;
|
|
54
303
|
}
|
|
55
304
|
|
|
56
|
-
::-webkit-scrollbar-thumb:hover
|
|
57
|
-
|
|
305
|
+
::-webkit-scrollbar-thumb:hover
|
|
306
|
+
{
|
|
307
|
+
background: var(--docuserve-scrollbar-thumb-hover);
|
|
58
308
|
}
|
|
59
309
|
|
|
60
310
|
/* Responsive adjustments */
|
|
61
|
-
@media (max-width: 768px)
|
|
62
|
-
|
|
311
|
+
@media (max-width: 768px)
|
|
312
|
+
{
|
|
313
|
+
html
|
|
314
|
+
{
|
|
63
315
|
font-size: 14px;
|
|
64
316
|
}
|
|
65
317
|
|
|
66
|
-
#Docuserve-Sidebar-Container
|
|
318
|
+
#Docuserve-Sidebar-Container
|
|
319
|
+
{
|
|
67
320
|
display: none;
|
|
68
321
|
}
|
|
69
322
|
|
|
70
|
-
.docuserve-body
|
|
323
|
+
.docuserve-body
|
|
324
|
+
{
|
|
71
325
|
flex-direction: column;
|
|
72
326
|
}
|
|
73
327
|
}
|