@coldsmirk/ledger-mantine 0.2.0 → 0.3.0

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/styles.css CHANGED
@@ -35,7 +35,7 @@
35
35
  }
36
36
 
37
37
  /* The frame around header + body — the elastic middle; carries the outer table border
38
- (painted in the Borders section: three real sides + an inset overlay bottom). It clips its
38
+ (painted in the Borders section: four real sides). It clips its
39
39
  own content so a `radius` rounds the header tint, the rows, and the frame together — every
40
40
  positioned thing inside it (header actions, the empty state, the seam overlays) lives within
41
41
  its box, and the row-drag ghost is portaled to the body. */
@@ -608,11 +608,10 @@
608
608
  border-block-start: 1px solid var(--mantine-color-default-border);
609
609
  }
610
610
 
611
- /* The seam above the bar is owned by the table's own bottom edge (frame overlay, footer
612
- trailing border, or scroller seam — Borders section); the bar draws its own line only in
613
- the fully borderless look, where no other edge exists. */
614
- .ledger-root[data-with-row-borders] > .ledger-pagination-bar,
615
- .ledger-root[data-with-table-border] > .ledger-pagination-bar {
611
+ /* The seam above the bar is owned by the table's own bottom edge (the frame, or the closing
612
+ line — Borders section); the bar draws its own line only when no such edge exists. */
613
+ .ledger-root[data-with-table-border] > .ledger-pagination-bar,
614
+ .ledger-root[data-with-bottom-border] > .ledger-pagination-bar {
616
615
  border-block-start: 0;
617
616
  }
618
617
 
@@ -813,9 +812,18 @@
813
812
  * border-collapse: collapse, and Chrome does not repaint collapsed borders at stuck sticky
814
813
  * positions; our tables are border-collapse: separate (inline), so every cell carries its
815
814
  * border wherever it sticks.
815
+ *
816
+ * Three edges, one line each (docs/styling.md#borders): row separators sit BETWEEN rows and
817
+ * never under the last one (Mantine's Table rule — a bordered host closes the table with its
818
+ * own edge); the closing line under the body is the opt-in `withBottomBorder` seam; the
819
+ * `withTableBorder` frame is four real borders and owns every edge, so under it the body's
820
+ * seam and the footer's trailing line stay off.
816
821
  * ------------------------------------------------------------------------------------------ */
817
- .ledger-root[data-with-row-borders] .ledger-thead th,
818
- .ledger-root[data-with-row-borders] .ledger-tbody .ledger-row > td {
822
+
823
+ /* Row separators, header half: the header's bottom edge. (The body half follows the column
824
+ rule — the two share `th`/`td` targets with crossing specificities, and each half must sit
825
+ on its ascending side.) */
826
+ .ledger-root[data-with-row-borders] .ledger-thead th {
819
827
  border-block-end: 1px solid var(--ledger-border-color, var(--mantine-color-default-border));
820
828
  }
821
829
 
@@ -828,15 +836,20 @@
828
836
  border-inline-start: 1px solid var(--ledger-border-color, var(--mantine-color-default-border));
829
837
  }
830
838
 
831
- /* Seam ownership below the body (EP's inner-wrapper overlay technique): at scroll end the
832
- last row's border occupies the viewport's LAST pixel, so any line stacked outside the
833
- scroller would read as one thick border. Seam lines therefore paint as inset overlays that
834
- COINCIDE with that pixel — never as leading borders on the next region. */
839
+ /* Row separators, body half: every body row but the last (`data-last`, a `spanRows` anchor
840
+ ending there included). */
841
+ .ledger-root[data-with-row-borders] .ledger-tbody .ledger-row:not([data-last]) > td:not([data-last]) {
842
+ border-block-end: 1px solid var(--ledger-border-color, var(--mantine-color-default-border));
843
+ }
835
844
 
836
- /* z-index 2 = the pinned-cell tier: the overlay is generated after every cell, so it paints
837
- over scrolling pinned cells (their opaque backgrounds would erase the line mid-scroll)
838
- while staying under the scrollbars (3). */
839
- .ledger-root[data-with-row-borders] .ledger-scroller::after {
845
+ /* The body's bottom seam: an inset overlay on the scroller's last pixel — it adds no height
846
+ and stays put under scroll. It paints as the closing line (`withBottomBorder`, unframed: the
847
+ frame's own bottom border would stack under it) and, with row borders, as the separator
848
+ above a footer. z-index 2 = the pinned-cell tier: generated after every cell, so it paints
849
+ over scrolling pinned cells (their opaque backgrounds would erase the line mid-scroll) while
850
+ staying under the scrollbars (3). */
851
+ .ledger-root[data-with-bottom-border]:not([data-with-table-border]) .ledger-scroller::after,
852
+ .ledger-root[data-with-row-borders][data-with-footer] .ledger-scroller::after {
840
853
  position: absolute;
841
854
  inset-block-end: 0;
842
855
  inset-inline: 0;
@@ -847,28 +860,16 @@
847
860
  background-color: var(--ledger-border-color, var(--mantine-color-default-border));
848
861
  }
849
862
 
850
- /* The footer separates with its TRAILING edge only (the top seam is the scroller overlay);
851
- under the frame this pixel coincides with the frame's bottom overlay. */
852
- .ledger-root[data-with-row-borders] .ledger-footer {
863
+ /* The footer separates from the body with the seam above it; its trailing edge is the closing
864
+ line, on the body's own terms. */
865
+ .ledger-root[data-with-bottom-border]:not([data-with-table-border]) .ledger-footer {
853
866
  border-block-end: 1px solid var(--ledger-border-color, var(--mantine-color-default-border));
854
867
  }
855
868
 
856
- /* The frame: three real sides; the bottom edge is an inset overlay for the same coincidence
857
- reason — it lands on the scroller's (or footer's) last pixel instead of adding one below. */
869
+ /* The frame: four real borders, so a `radius` draws continuous corners; nothing inside paints
870
+ on its bottom pixel (no last-row separator, no closing seam, no footer trailing line). */
858
871
  .ledger-root[data-with-table-border] .ledger-main {
859
872
  border: 1px solid var(--ledger-border-color, var(--mantine-color-default-border));
860
- border-block-end: 0;
861
- }
862
-
863
- .ledger-root[data-with-table-border] .ledger-main::after {
864
- position: absolute;
865
- inset-block-end: 0;
866
- inset-inline: 0;
867
- z-index: 2;
868
- height: 1px;
869
- pointer-events: none;
870
- content: "";
871
- background-color: var(--ledger-border-color, var(--mantine-color-default-border));
872
873
  }
873
874
  }
874
875
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coldsmirk/ledger-mantine",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Mantine-native <DataTable> on TanStack Table and TanStack Virtual: sorting, filtering, pagination, selection, pinning, inline editing, and adaptive row virtualization.",
5
5
  "keywords": [
6
6
  "data-table",