@lukasmurdock/remix-ui-styles 0.3.0 → 0.4.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/README.md CHANGED
@@ -20,3 +20,26 @@ import "@lukasmurdock/remix-ui-styles/src/index.css"
20
20
  - `primitives`
21
21
  - `patterns`
22
22
  - `components`
23
+
24
+ ## Stable DataTable contract
25
+
26
+ DataTable styling hooks are semver-stable in this package:
27
+
28
+ - `data-part` hooks: `wrapper`, `header`, `row`, `sort-indicator`, `footer`, and related table parts
29
+ - `--rf-data-table-*` CSS variables, including:
30
+ - `--rf-data-table-header-bg`
31
+ - `--rf-data-table-cell-padding-y`
32
+ - `--rf-data-table-cell-padding-x`
33
+ - `--rf-data-table-row-selected-bg`
34
+ - `--rf-data-table-footer-border`
35
+
36
+ ```css
37
+ .rf-data-table-wrap {
38
+ --rf-data-table-header-bg: color-mix(in srgb, var(--rf-brand-default) 8%, var(--rf-surface-default));
39
+ --rf-data-table-cell-padding-y: 0.625rem;
40
+ }
41
+
42
+ .rf-data-table-wrap [data-part="sort-indicator"] {
43
+ opacity: 1;
44
+ }
45
+ ```
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@lukasmurdock/remix-ui-styles",
3
3
  "description": "Layered CSS tokens, primitives, and component styles for Remix Frame UI.",
4
- "version": "0.3.0",
4
+ "version": "0.4.0",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
@@ -2544,36 +2544,88 @@
2544
2544
  background: color-mix(in srgb, var(--rf-surface-default) 92%, var(--rf-color-gray-100));
2545
2545
  }
2546
2546
 
2547
+ .rf-data-table-wrap,
2548
+ .rf-data-table-loading,
2549
+ .rf-data-table-error {
2550
+ --rf-data-table-border-color: var(--rf-border-default);
2551
+ --rf-data-table-border-radius: 0.875rem;
2552
+ --rf-data-table-background: var(--rf-surface-default);
2553
+ --rf-data-table-min-width: 680px;
2554
+ --rf-data-table-header-bg: color-mix(in srgb, var(--rf-color-gray-100) 80%, var(--rf-surface-default));
2555
+ --rf-data-table-cell-border-color: color-mix(in srgb, var(--rf-border-default) 70%, transparent);
2556
+ --rf-data-table-cell-padding-y: 0.75rem;
2557
+ --rf-data-table-cell-padding-x: 1rem;
2558
+ --rf-data-table-caption-padding-top: 0.875rem;
2559
+ --rf-data-table-caption-padding-bottom: 0.4rem;
2560
+ --rf-data-table-caption-padding-x: 1rem;
2561
+ --rf-data-table-row-hover-bg: color-mix(in srgb, var(--rf-brand-default) 5%, var(--rf-surface-default));
2562
+ --rf-data-table-row-selected-bg: color-mix(in srgb, var(--rf-brand-default) 9%, var(--rf-surface-default));
2563
+ --rf-data-table-sort-indicator-size: 0.85rem;
2564
+ --rf-data-table-sort-indicator-opacity: 0.75;
2565
+ --rf-data-table-selection-column-width: 2.75rem;
2566
+ --rf-data-table-footer-border: color-mix(in srgb, var(--rf-border-default) 70%, transparent);
2567
+ --rf-data-table-footer-padding-y: 0.65rem;
2568
+ --rf-data-table-footer-padding-x: 0.875rem;
2569
+ --rf-data-table-pagination-font-size: 0.84rem;
2570
+ --rf-data-table-pagination-text: color-mix(in srgb, var(--rf-text-default) 72%, transparent);
2571
+ }
2572
+
2547
2573
  .rf-data-table-wrap {
2548
- border: 1px solid var(--rf-border-default);
2549
- border-radius: 0.875rem;
2550
- background: var(--rf-surface-default);
2574
+ border: 1px solid var(--rf-data-table-border-color);
2575
+ border-radius: var(--rf-data-table-border-radius);
2576
+ background: var(--rf-data-table-background);
2551
2577
  overflow: clip;
2552
2578
  display: grid;
2553
2579
  }
2554
2580
 
2581
+ .rf-data-table-wrap[data-density="compact"] {
2582
+ --rf-data-table-cell-padding-y: 0.5rem;
2583
+ --rf-data-table-cell-padding-x: 0.75rem;
2584
+ --rf-data-table-footer-padding-y: 0.5rem;
2585
+ --rf-data-table-footer-padding-x: 0.75rem;
2586
+ }
2587
+
2588
+ .rf-data-table-wrap[data-density="comfortable"] {
2589
+ --rf-data-table-cell-padding-y: 0.95rem;
2590
+ --rf-data-table-cell-padding-x: 1.125rem;
2591
+ --rf-data-table-footer-padding-y: 0.8rem;
2592
+ --rf-data-table-footer-padding-x: 1rem;
2593
+ }
2594
+
2595
+ .rf-data-table-wrap[data-surface="flat"] {
2596
+ --rf-data-table-border-radius: 0;
2597
+ }
2598
+
2599
+ .rf-data-table-wrap[data-surface="none"] {
2600
+ --rf-data-table-border-color: transparent;
2601
+ --rf-data-table-border-radius: 0;
2602
+ --rf-data-table-background: transparent;
2603
+ border: 0;
2604
+ }
2605
+
2555
2606
  .rf-data-table {
2556
2607
  width: 100%;
2557
2608
  border-collapse: collapse;
2558
- min-width: 680px;
2609
+ min-width: var(--rf-data-table-min-width);
2559
2610
  }
2560
2611
 
2561
2612
  .rf-data-table caption {
2562
2613
  text-align: left;
2563
2614
  font-weight: 600;
2564
- padding: 0.875rem 1rem 0.4rem;
2615
+ padding: var(--rf-data-table-caption-padding-top) var(--rf-data-table-caption-padding-x)
2616
+ var(--rf-data-table-caption-padding-bottom);
2565
2617
  }
2566
2618
 
2567
2619
  .rf-data-table th,
2568
2620
  .rf-data-table td {
2569
- border-top: 1px solid color-mix(in srgb, var(--rf-border-default) 70%, transparent);
2570
- padding: 0.75rem 1rem;
2621
+ border-top: 1px solid var(--rf-data-table-cell-border-color);
2622
+ padding: var(--rf-data-table-cell-padding-y) var(--rf-data-table-cell-padding-x);
2571
2623
  text-align: left;
2572
2624
  vertical-align: top;
2573
2625
  }
2574
2626
 
2575
2627
  .rf-data-table th {
2576
- background: color-mix(in srgb, var(--rf-color-gray-100) 80%, var(--rf-surface-default));
2628
+ background: var(--rf-data-table-header-bg);
2577
2629
  font-weight: 600;
2578
2630
  border-top: 0;
2579
2631
  }
@@ -2594,22 +2646,35 @@
2594
2646
  background: transparent;
2595
2647
  color: inherit;
2596
2648
  font: inherit;
2649
+ line-height: 1.2;
2597
2650
  cursor: pointer;
2598
2651
  padding: 0;
2599
2652
  }
2600
2653
 
2601
2654
  .rf-data-table-sort-indicator {
2602
- font-size: 0.85rem;
2603
- opacity: 0.75;
2655
+ display: inline-flex;
2656
+ align-items: center;
2657
+ justify-content: center;
2658
+ min-width: 1.15em;
2659
+ font-size: var(--rf-data-table-sort-indicator-size);
2660
+ opacity: var(--rf-data-table-sort-indicator-opacity);
2604
2661
  }
2605
2662
 
2606
2663
  .rf-data-table-select-col {
2607
- width: 2.75rem;
2664
+ width: var(--rf-data-table-selection-column-width);
2608
2665
  text-align: center;
2609
2666
  }
2610
2667
 
2668
+ .rf-data-table [data-part="row"][data-interactive="true"] {
2669
+ cursor: pointer;
2670
+ }
2671
+
2672
+ .rf-data-table [data-part="row"][data-interactive="true"]:hover {
2673
+ background: var(--rf-data-table-row-hover-bg);
2674
+ }
2675
+
2611
2676
  .rf-data-table tbody tr[data-selected="true"] {
2612
- background: color-mix(in srgb, var(--rf-brand-default) 9%, var(--rf-surface-default));
2677
+ background: var(--rf-data-table-row-selected-bg);
2613
2678
  }
2614
2679
 
2615
2680
  .rf-data-table-empty {
@@ -2619,16 +2684,30 @@
2619
2684
 
2620
2685
  .rf-data-table-loading,
2621
2686
  .rf-data-table-error {
2622
- border: 1px solid var(--rf-border-default);
2623
- border-radius: 0.875rem;
2687
+ border: 1px solid var(--rf-data-table-border-color);
2688
+ border-radius: var(--rf-data-table-border-radius);
2624
2689
  padding: 1rem;
2625
2690
  color: color-mix(in srgb, var(--rf-text-default) 70%, transparent);
2626
- background: color-mix(in srgb, var(--rf-surface-default) 92%, var(--rf-color-gray-100));
2691
+ background: color-mix(in srgb, var(--rf-data-table-background) 92%, var(--rf-color-gray-100));
2692
+ }
2693
+
2694
+ .rf-data-table-loading[data-surface="flat"],
2695
+ .rf-data-table-error[data-surface="flat"] {
2696
+ --rf-data-table-border-radius: 0;
2697
+ }
2698
+
2699
+ .rf-data-table-loading[data-surface="none"],
2700
+ .rf-data-table-error[data-surface="none"] {
2701
+ --rf-data-table-border-color: transparent;
2702
+ --rf-data-table-border-radius: 0;
2703
+ --rf-data-table-background: transparent;
2704
+ border: 0;
2705
+ padding: 0;
2627
2706
  }
2628
2707
 
2629
2708
  .rf-data-table-footer {
2630
- border-top: 1px solid color-mix(in srgb, var(--rf-border-default) 70%, transparent);
2631
- padding: 0.65rem 0.875rem;
2709
+ border-top: 1px solid var(--rf-data-table-footer-border);
2710
+ padding: var(--rf-data-table-footer-padding-y) var(--rf-data-table-footer-padding-x);
2632
2711
  display: flex;
2633
2712
  justify-content: space-between;
2634
2713
  align-items: center;
@@ -2637,8 +2716,8 @@
2637
2716
  }
2638
2717
 
2639
2718
  .rf-data-table-pagination-status {
2640
- font-size: 0.84rem;
2641
- color: color-mix(in srgb, var(--rf-text-default) 72%, transparent);
2719
+ font-size: var(--rf-data-table-pagination-font-size);
2720
+ color: var(--rf-data-table-pagination-text);
2642
2721
  }
2643
2722
 
2644
2723
  .rf-data-table-pagination-actions {