@wpmoo/ui 1.0.0 → 1.1.0-dev.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/README.md CHANGED
@@ -59,6 +59,9 @@ head before this stylesheet loads.
59
59
 
60
60
  ## Install
61
61
 
62
+ Local development candidates use separate tarballs. Public install and license
63
+ links refer to the published stable release.
64
+
62
65
  ```bash
63
66
  npm install @wpmoo/ui bootstrap
64
67
  ```
@@ -191,6 +194,10 @@ calm.
191
194
 
192
195
  ## Status And Support
193
196
 
197
+ The current development snapshot is `1.1.0-dev.1`. It adds a shared Table of
198
+ Contents component and is not published to npm; use the locally packed tarball
199
+ when evaluating this snapshot.
200
+
194
201
  The stable public-contract release is `1.0.0`. Component certification remains
195
202
  `preview`, with its documented manual and browser/device limits. Public exports, package boundaries, browser support, and release evidence live in [Support & Evidence](https://ui.wpmoo.org/support/).
196
203
  Complete release notes are on
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": "0.1",
3
3
  "status": "preview",
4
- "coreVersion": "1.0.0",
4
+ "coreVersion": "1.1.0-dev.1",
5
5
  "bootstrap": {
6
6
  "canonicalVersion": "5.3.3",
7
7
  "targetRange": ">=5.3.0 <5.4",
@@ -28,6 +28,7 @@
28
28
  "./context-menu.js",
29
29
  "./datatable.js",
30
30
  "./slider.js",
31
+ "./table-of-contents.js",
31
32
  "./sheet.js",
32
33
  "./chart.js",
33
34
  "./chart.min.js",
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Moo UI v1.0.0 (https://wpmoo.org/)
2
+ * Moo UI v1.1.0-dev.1 (https://wpmoo.org/)
3
3
  * Copyright 2026 WPMoo Authors
4
4
  * Licensed under MIT (https://github.com/wpmoo-org/ui/blob/main/LICENSE)
5
5
  *
@@ -13724,6 +13724,53 @@ label.btn {
13724
13724
  border-color: var(--moo-primary);
13725
13725
  }
13726
13726
 
13727
+ /* Table of contents */
13728
+ [data-toc] > .fw-semibold {
13729
+ padding-inline-start: calc(0.75rem - var(--bs-border-width));
13730
+ }
13731
+ [data-toc]:has(> .nav) {
13732
+ position: relative;
13733
+ border-inline-start: calc(var(--bs-border-width) * 0.5) solid var(--bs-border-color);
13734
+ }
13735
+ [data-toc][data-toc-marker]::after {
13736
+ content: "";
13737
+ position: absolute;
13738
+ inset-block-start: 0;
13739
+ inset-inline-start: calc(var(--bs-border-width) * -1);
13740
+ block-size: var(--moo-toc-marker-height);
13741
+ border-inline-start: calc(var(--bs-border-width) * 3) solid var(--moo-primary);
13742
+ transform: translateY(var(--moo-toc-marker-offset));
13743
+ pointer-events: none;
13744
+ transition: all 0.2s ease-in-out;
13745
+ }
13746
+ @media (prefers-reduced-motion: reduce) {
13747
+ [data-toc][data-toc-marker]::after {
13748
+ transition: none;
13749
+ }
13750
+ }
13751
+ [data-toc] > .nav .nav-link {
13752
+ display: flex;
13753
+ position: relative;
13754
+ margin-inline-start: calc(var(--bs-border-width) * -1);
13755
+ color: var(--moo-muted-foreground);
13756
+ }
13757
+ [data-toc] > .nav .nav-link::before {
13758
+ content: "";
13759
+ position: absolute;
13760
+ inset-block: var(--bs-nav-link-padding-y);
13761
+ inset-inline-start: 0;
13762
+ border-inline-start: calc(var(--bs-border-width) * 3) solid transparent;
13763
+ }
13764
+ [data-toc] > .nav .nav-link.active {
13765
+ color: var(--moo-foreground);
13766
+ }
13767
+ [data-toc] > .nav .nav-link.active::before {
13768
+ border-inline-start-color: var(--moo-primary);
13769
+ }
13770
+ [data-toc][data-toc-marker] > .nav .nav-link.active::before {
13771
+ border-inline-start-color: transparent;
13772
+ }
13773
+
13727
13774
  /* Skeleton */
13728
13775
  .skeleton {
13729
13776
  color: var(--moo-border);
@@ -16922,6 +16969,14 @@ label.btn {
16922
16969
  --moo-scroll-fade-e: var(--moo-scroll-fade-e-size);
16923
16970
  }
16924
16971
  }
16972
+ .scroll-smooth {
16973
+ scroll-behavior: smooth;
16974
+ }
16975
+ @media (prefers-reduced-motion: reduce) {
16976
+ .scroll-smooth {
16977
+ scroll-behavior: auto;
16978
+ }
16979
+ }
16925
16980
 
16926
16981
  /* Application layout */
16927
16982
  .sidebar {
@@ -16956,9 +17011,6 @@ label.btn {
16956
17011
  background: transparent;
16957
17012
  transition: background 0.15s ease;
16958
17013
  }
16959
- .sidebar-rail:hover::after {
16960
- background: var(--moo-sidebar-border);
16961
- }
16962
17014
  .wrapper[data-layout="app"][data-shell-mode="contained"] .sidebar-inner {
16963
17015
  position: relative;
16964
17016
  height: 100%;