Skip to content

Commit 4ff7084

Browse files
authored
Merge branch 'main' into repo-assist/test-outputblock-anchorlink-2026-04-29-f38ec86010d3f790
2 parents 5a2d4f4 + 2204eb9 commit 4ff7084

3 files changed

Lines changed: 70 additions & 15 deletions

File tree

RELEASE_NOTES.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
* Fix `Markdown.ToMd` serialising unresolved indirect links as `[body](key)` (treating the reference key as a URL) instead of the correct `[body][key]` form. Unresolved indirect links are now preserved in their original indirect-reference form, consistent with how unresolved indirect images are handled.
2323

2424
### Added
25+
* Introduce `--panel-background` and `--panel-border` CSS custom properties in `fsdocs-default.css`. These decouple panel/component colours (copy-code button, blockquotes, sidebar, page menu, dialogs, tooltips, API tables) from `--header-background`/`--header-border`. Both variables default to the header values, so existing themes are unaffected; themes that need a different colour for content panels can now override `--panel-background` and `--panel-border` independently. [#1156](https://github.com/fsprojects/FSharp.Formatting/issues/1156)
2526
* Add tests for `Markdown.ToFsx` (direct serialisation to F# script format), which previously had no unit test coverage.
2627
* Add tests for `Markdown.ToPynb` (direct serialisation to Jupyter notebook format), which previously had no unit test coverage.
2728
* Add round-trip tests for `HardLineBreak` and `HorizontalRule` character preservation in `Markdown.ToMd`.

docs/content/fsdocs-default.css

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,11 @@
6363
--header-background: light-dark(#f9fbfc, #0c1318);
6464
--header-border: light-dark(#e8ecf1, #3a3a42);
6565
--header-link-color: var(--text-color);
66-
--mobile-menu-background: var(--header-background);
66+
/* Panel variables (--panel-background, --panel-border): override to customise menus, dialogs,
67+
blockquotes, copy buttons, and other UI panels independently from the page header. */
68+
--panel-background: var(--header-background);
69+
--panel-border: var(--header-border);
70+
--mobile-menu-background: var(--panel-background);
6771
--menu-color: var(--text-color);
6872
--menu-item-hover-background: light-dark(#eff0f1, #2c2624);
6973
--menu-item-hover-color: var(--menu-color);
@@ -77,16 +81,16 @@
7781
--scrollbar-thumb-background: #686868;
7882
--shadow-color: hsla(0, 0%, 0%, .1);
7983
--main-shadow-color: hsla(0, 0%, 0%, .025);
80-
--aside-background: var(--header-background);
81-
--blockquote-bacground-color: var(--header-background);
84+
--aside-background: var(--panel-background);
85+
--blockquote-background-color: var(--panel-background);
8286
--blockquote-color: var(--text-color);
8387
--on-this-page-color: var(--menu-color);
84-
--page-menu-background-color: var(--header-background);
85-
--page-menu-background-border-color: var(--header-border);
88+
--page-menu-background-color: var(--panel-background);
89+
--page-menu-background-border-color: var(--panel-border);
8690
--page-menu-background-hover-border-color: var(--text-color);
87-
--nav-item-border-color: var(--header-border);
91+
--nav-item-border-color: var(--panel-border);
8892
--nav-item-active-border-color: var(--text-color);
89-
--dialog-background-color: var(--header-background);
93+
--dialog-background-color: var(--panel-background);
9094
--dialog-empty-color: var(--nav-category);
9195
--dialog-icon-color: var(--text-color);
9296
--dialog-link-color: var(--link-color);
@@ -347,7 +351,7 @@ main {
347351
margin: 0;
348352

349353
& li {
350-
border-left: 1px solid var(--header-border);
354+
border-left: 1px solid var(--panel-border);
351355
margin: 0;
352356

353357
&:hover, &:focus {
@@ -468,7 +472,7 @@ main {
468472
padding: var(--spacing-300) var(--spacing-500);
469473
background-color: var(--aside-background);
470474
width: var(--main-menu-width);
471-
border-right: 1px solid var(--header-border);
475+
border-right: 1px solid var(--panel-border);
472476
grid-row: var(--main-menu-grid-row);
473477
grid-column: var(--main-menu-grid-column);
474478
overflow-y: auto;
@@ -666,7 +670,7 @@ blockquote {
666670
margin: var(--spacing-200) 0;
667671
margin-left: var(--spacing-200);
668672
padding: var(--spacing-100) var(--spacing-300);
669-
background-color: var(--blockquote-bacground-color);
673+
background-color: var(--blockquote-background-color);
670674
color: var(--blockquote-color);
671675

672676
> p {
@@ -731,8 +735,8 @@ pre.has-copy-button {
731735
top: var(--spacing-100);
732736
right: var(--spacing-100);
733737
padding: var(--spacing-50) var(--spacing-100);
734-
background-color: var(--header-background);
735-
border: 1px solid var(--header-border);
738+
background-color: var(--panel-background);
739+
border: 1px solid var(--panel-border);
736740
border-radius: var(--radius);
737741
color: var(--text-color);
738742
cursor: pointer;
@@ -989,7 +993,7 @@ table.pre, code, pre.fssnip {
989993
div.fsdocs-tip {
990994
background-color: var(--doc-tip-background);
991995
border-radius: var(--radius);
992-
border: 1px solid var(--header-border);
996+
border: 1px solid var(--panel-border);
993997
padding: var(--spacing-200);
994998
font-family: var(--monospace-font);
995999
font-variant-ligatures: none;
@@ -1070,7 +1074,7 @@ div.fsdocs-tip:popover-open {
10701074
}
10711075

10721076
& tbody td {
1073-
border-top: 1px solid var(--header-border);
1077+
border-top: 1px solid var(--panel-border);
10741078
padding: var(--spacing-300) 0;
10751079
}
10761080

@@ -1280,7 +1284,7 @@ dialog {
12801284

12811285
& li {
12821286
margin: 0;
1283-
border-bottom: 1px solid var(--header-border);
1287+
border-bottom: 1px solid var(--panel-border);
12841288

12851289
&:hover {
12861290
& a, & a iconify-icon {

tests/FSharp.Markdown.Tests/Markdown.fs

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1406,6 +1406,56 @@ let ``ToMd handles a table`` () =
14061406
result |> should contain "A"
14071407
result |> should contain "B"
14081408

1409+
// --------------------------------------------------------------------------------------
1410+
// ToMd table column alignment — left, center, right, default
1411+
// --------------------------------------------------------------------------------------
1412+
1413+
[<Test>]
1414+
let ``ToMd preserves left-aligned table columns`` () =
1415+
let md = "A | B\n:--- | :---\nX | Y"
1416+
let result = toMd md
1417+
result |> should contain ":---"
1418+
1419+
[<Test>]
1420+
let ``ToMd preserves center-aligned table columns`` () =
1421+
let md = "A | B\n:---: | :---:\nX | Y"
1422+
let result = toMd md
1423+
result |> should contain ":---:"
1424+
1425+
[<Test>]
1426+
let ``ToMd preserves right-aligned table columns`` () =
1427+
let md = "A | B\n---: | ---:\nX | Y"
1428+
let result = toMd md
1429+
result |> should contain "---:"
1430+
1431+
[<Test>]
1432+
let ``ToMd preserves default-aligned table columns`` () =
1433+
let md = "A | B\n--- | ---\nX | Y"
1434+
let result = toMd md
1435+
// default alignment renders as "---"
1436+
result |> should contain "---"
1437+
1438+
[<Test>]
1439+
let ``ToMd preserves table with mixed column alignments`` () =
1440+
let md = "Left | Center | Right | Default\n:--- | :---: | ---: | ---\na | b | c | d"
1441+
let result = toMd md
1442+
result |> should contain ":---:"
1443+
result |> should contain "---:"
1444+
result |> should contain "Left"
1445+
result |> should contain "Right"
1446+
1447+
// --------------------------------------------------------------------------------------
1448+
// ToMd InlineHtmlBlock round-trip
1449+
// --------------------------------------------------------------------------------------
1450+
1451+
[<Test>]
1452+
let ``ToMd preserves an inline HTML block`` () =
1453+
let md = "<div class=\"note\">\nThis is a note.\n</div>"
1454+
let result = toMd md
1455+
result |> should contain "<div"
1456+
result |> should contain "This is a note."
1457+
result |> should contain "</div>"
1458+
14091459
[<Test>]
14101460
let ``ToMd table rows each appear on their own line`` () =
14111461
// Previously, all data rows were joined into one string with a hardcoded "\n",

0 commit comments

Comments
 (0)