@roadlittledawn/docs-design-system-react 0.7.0 → 0.9.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/dist/components/Grid.d.ts +90 -0
- package/dist/components/Grid.js +95 -0
- package/dist/components/Grid.stories.d.ts +69 -0
- package/dist/components/Grid.stories.js +259 -0
- package/dist/components/Table.d.ts +81 -0
- package/dist/components/Table.js +93 -0
- package/dist/components/Table.stories.d.ts +44 -0
- package/dist/components/Table.stories.js +258 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/styles.css +304 -0
- package/package.json +1 -1
package/dist/styles.css
CHANGED
|
@@ -258,6 +258,34 @@
|
|
|
258
258
|
--dds-list-badge-shadow: inset 0 0 0 1px #bfc2c7;
|
|
259
259
|
--dds-list-connector-line: #eceef2; /* gray-200 */
|
|
260
260
|
--dds-list-text: #374151; /* gray-700 */
|
|
261
|
+
|
|
262
|
+
/* Table */
|
|
263
|
+
--dds-table-margin: 1rem 0;
|
|
264
|
+
--dds-table-radius: 0.5rem; /* rounded-lg */
|
|
265
|
+
--dds-table-font-size: 0.875rem; /* text-sm */
|
|
266
|
+
--dds-table-bg: transparent;
|
|
267
|
+
--dds-table-text: #374151; /* gray-700 */
|
|
268
|
+
--dds-table-border: #e5e7eb; /* gray-200 */
|
|
269
|
+
--dds-table-row-border: #e5e7eb; /* gray-200 */
|
|
270
|
+
--dds-table-row-hover-bg: #f9fafb; /* gray-50 */
|
|
271
|
+
--dds-table-header-bg: #f3f4f6; /* gray-100 */
|
|
272
|
+
--dds-table-sticky-bg: var(--dds-table-header-bg); /* used as sticky header background; should be opaque */
|
|
273
|
+
--dds-table-sticky-hover-bg: var(--dds-table-header-hover-bg); /* used as sticky sortable header hover; should be opaque */
|
|
274
|
+
--dds-table-header-text: #111827; /* gray-900 */
|
|
275
|
+
--dds-table-header-font-size: 0.8125rem; /* ~13px */
|
|
276
|
+
--dds-table-header-border: #d1d5db; /* gray-300 */
|
|
277
|
+
--dds-table-header-hover-bg: #e5e7eb; /* gray-200 */
|
|
278
|
+
--dds-table-header-hover-text: #111827; /* gray-900 */
|
|
279
|
+
--dds-table-header-active-text: #1d4ed8; /* blue-700 */
|
|
280
|
+
--dds-table-cell-padding: 0.75rem 1rem;
|
|
281
|
+
--dds-table-focus-ring: #3b82f6; /* blue-500 */
|
|
282
|
+
|
|
283
|
+
/* Grid */
|
|
284
|
+
--dds-grid-gap-sm: 1rem; /* gap-4 */
|
|
285
|
+
--dds-grid-gap-md: 1.5rem; /* gap-6 */
|
|
286
|
+
--dds-grid-gap-lg: 2.5rem; /* gap-10 */
|
|
287
|
+
--dds-grid-divider-color: #e5e7eb; /* gray-200 */
|
|
288
|
+
--dds-grid-sticky-top: 1rem;
|
|
261
289
|
}
|
|
262
290
|
/* ==========================================================================
|
|
263
291
|
Dark Mode Tokens
|
|
@@ -419,6 +447,25 @@
|
|
|
419
447
|
--dds-list-badge-shadow: inset 0 0 0 1px #353a42;
|
|
420
448
|
--dds-list-connector-line: #353a42; /* gray-600 */
|
|
421
449
|
--dds-list-text: #e5e7eb; /* gray-200 */
|
|
450
|
+
|
|
451
|
+
/* Table */
|
|
452
|
+
--dds-table-bg: transparent;
|
|
453
|
+
--dds-table-text: #d1d5db; /* gray-300 */
|
|
454
|
+
--dds-table-border: #4b5563; /* gray-600 */
|
|
455
|
+
--dds-table-row-border: #374151; /* gray-700 */
|
|
456
|
+
--dds-table-row-hover-bg: rgba(255, 255, 255, 0.04);
|
|
457
|
+
--dds-table-header-bg: rgba(255, 255, 255, 0.06);
|
|
458
|
+
--dds-table-sticky-bg: #1f2937; /* gray-800 — opaque fallback for sticky header */
|
|
459
|
+
--dds-table-sticky-hover-bg: #263347; /* slightly lighter opaque hover for sticky header */
|
|
460
|
+
--dds-table-header-text: #f9fafb; /* gray-50 */
|
|
461
|
+
--dds-table-header-border: #4b5563; /* gray-600 */
|
|
462
|
+
--dds-table-header-hover-bg: rgba(255, 255, 255, 0.1);
|
|
463
|
+
--dds-table-header-hover-text: #f9fafb; /* gray-50 */
|
|
464
|
+
--dds-table-header-active-text: #93c5fd; /* blue-300 */
|
|
465
|
+
--dds-table-focus-ring: #60a5fa; /* blue-400 */
|
|
466
|
+
|
|
467
|
+
/* Grid */
|
|
468
|
+
--dds-grid-divider-color: #4b5563; /* gray-600 */
|
|
422
469
|
}
|
|
423
470
|
/* Auto dark mode — follows OS preference, opt-out with .dds-light */
|
|
424
471
|
@media (prefers-color-scheme: dark) {
|
|
@@ -575,6 +622,25 @@
|
|
|
575
622
|
--dds-list-badge-shadow: inset 0 0 0 1px #353a42;
|
|
576
623
|
--dds-list-connector-line: #353a42; /* gray-600 */
|
|
577
624
|
--dds-list-text: #e5e7eb; /* gray-200 */
|
|
625
|
+
|
|
626
|
+
/* Table */
|
|
627
|
+
--dds-table-bg: transparent;
|
|
628
|
+
--dds-table-text: #d1d5db;
|
|
629
|
+
--dds-table-border: #4b5563;
|
|
630
|
+
--dds-table-row-border: #374151;
|
|
631
|
+
--dds-table-row-hover-bg: rgba(255, 255, 255, 0.04);
|
|
632
|
+
--dds-table-header-bg: rgba(255, 255, 255, 0.06);
|
|
633
|
+
--dds-table-sticky-bg: #1f2937;
|
|
634
|
+
--dds-table-sticky-hover-bg: #263347;
|
|
635
|
+
--dds-table-header-text: #f9fafb;
|
|
636
|
+
--dds-table-header-border: #4b5563;
|
|
637
|
+
--dds-table-header-hover-bg: rgba(255, 255, 255, 0.1);
|
|
638
|
+
--dds-table-header-hover-text: #f9fafb;
|
|
639
|
+
--dds-table-header-active-text: #93c5fd;
|
|
640
|
+
--dds-table-focus-ring: #60a5fa;
|
|
641
|
+
|
|
642
|
+
/* Grid */
|
|
643
|
+
--dds-grid-divider-color: #4b5563; /* gray-600 */
|
|
578
644
|
}
|
|
579
645
|
}
|
|
580
646
|
/* Explicit dark mode via data attribute (overrides OS preference) */
|
|
@@ -713,6 +779,22 @@
|
|
|
713
779
|
--dds-popover-eyebrow-color: #9ca3af;
|
|
714
780
|
--dds-popover-link-color: #60a5fa;
|
|
715
781
|
--dds-popover-link-color-hover: #93c5fd;
|
|
782
|
+
|
|
783
|
+
/* Table */
|
|
784
|
+
--dds-table-bg: transparent;
|
|
785
|
+
--dds-table-text: #d1d5db;
|
|
786
|
+
--dds-table-border: #4b5563;
|
|
787
|
+
--dds-table-row-border: #374151;
|
|
788
|
+
--dds-table-row-hover-bg: rgba(255, 255, 255, 0.04);
|
|
789
|
+
--dds-table-header-bg: rgba(255, 255, 255, 0.06);
|
|
790
|
+
--dds-table-sticky-bg: #1f2937;
|
|
791
|
+
--dds-table-sticky-hover-bg: #263347;
|
|
792
|
+
--dds-table-header-text: #f9fafb;
|
|
793
|
+
--dds-table-header-border: #4b5563;
|
|
794
|
+
--dds-table-header-hover-bg: rgba(255, 255, 255, 0.1);
|
|
795
|
+
--dds-table-header-hover-text: #f9fafb;
|
|
796
|
+
--dds-table-header-active-text: #93c5fd;
|
|
797
|
+
--dds-table-focus-ring: #60a5fa;
|
|
716
798
|
}
|
|
717
799
|
/* Import PrismJS theme */
|
|
718
800
|
/**
|
|
@@ -1832,4 +1914,226 @@ a.no-text-decoration {
|
|
|
1832
1914
|
}
|
|
1833
1915
|
}
|
|
1834
1916
|
}
|
|
1917
|
+
/* Table wrapper — enables responsive horizontal scroll */
|
|
1918
|
+
.dds-table-wrapper {
|
|
1919
|
+
width: 100%;
|
|
1920
|
+
overflow-x: auto;
|
|
1921
|
+
-webkit-overflow-scrolling: touch;
|
|
1922
|
+
border: 1px solid var(--dds-table-border);
|
|
1923
|
+
border-radius: var(--dds-table-radius);
|
|
1924
|
+
margin: var(--dds-table-margin);
|
|
1925
|
+
}
|
|
1926
|
+
/* When stickyHeader is true the wrapper also scrolls vertically so that
|
|
1927
|
+
position:sticky on th elements activates within the same scroll container. */
|
|
1928
|
+
.dds-table-scrollable {
|
|
1929
|
+
overflow-y: auto;
|
|
1930
|
+
}
|
|
1931
|
+
/* Remove outer border for borderless variant — only row borders remain */
|
|
1932
|
+
.dds-table-borderless {
|
|
1933
|
+
border: none;
|
|
1934
|
+
border-radius: 0;
|
|
1935
|
+
}
|
|
1936
|
+
.dds-table {
|
|
1937
|
+
width: 100%;
|
|
1938
|
+
border-collapse: collapse;
|
|
1939
|
+
font-size: var(--dds-table-font-size);
|
|
1940
|
+
color: var(--dds-table-text);
|
|
1941
|
+
background-color: var(--dds-table-bg);
|
|
1942
|
+
}
|
|
1943
|
+
/* -----------------------------------------------------------------------
|
|
1944
|
+
Header
|
|
1945
|
+
----------------------------------------------------------------------- */
|
|
1946
|
+
.dds-table-head {
|
|
1947
|
+
background-color: var(--dds-table-header-bg);
|
|
1948
|
+
}
|
|
1949
|
+
.dds-table-head-sticky th {
|
|
1950
|
+
position: sticky;
|
|
1951
|
+
top: 0;
|
|
1952
|
+
z-index: 2;
|
|
1953
|
+
background-color: var(--dds-table-sticky-bg, var(--dds-table-header-bg));
|
|
1954
|
+
}
|
|
1955
|
+
/* When headerBg is set via inline style, the sticky cells must inherit it */
|
|
1956
|
+
.dds-table-head-sticky[style] th {
|
|
1957
|
+
background-color: inherit;
|
|
1958
|
+
}
|
|
1959
|
+
/* Sticky sortable header hover: keep background opaque to avoid bleed-through
|
|
1960
|
+
when the global .dds-table-th-sortable:hover uses a semi-transparent color. */
|
|
1961
|
+
.dds-table-head-sticky th.dds-table-th-sortable:hover {
|
|
1962
|
+
background-color: var(
|
|
1963
|
+
--dds-table-sticky-hover-bg,
|
|
1964
|
+
var(--dds-table-sticky-bg, var(--dds-table-header-bg))
|
|
1965
|
+
);
|
|
1966
|
+
}
|
|
1967
|
+
/* -----------------------------------------------------------------------
|
|
1968
|
+
Cells — shared
|
|
1969
|
+
----------------------------------------------------------------------- */
|
|
1970
|
+
.dds-table-th,
|
|
1971
|
+
.dds-table-td {
|
|
1972
|
+
padding: var(--dds-table-cell-padding);
|
|
1973
|
+
text-align: left;
|
|
1974
|
+
vertical-align: top;
|
|
1975
|
+
}
|
|
1976
|
+
/* Alignment helpers */
|
|
1977
|
+
.dds-table-align-left { text-align: left; }
|
|
1978
|
+
.dds-table-align-center { text-align: center; }
|
|
1979
|
+
.dds-table-align-right { text-align: right; }
|
|
1980
|
+
/* -----------------------------------------------------------------------
|
|
1981
|
+
Header cell
|
|
1982
|
+
----------------------------------------------------------------------- */
|
|
1983
|
+
.dds-table-th {
|
|
1984
|
+
font-weight: var(--dds-font-semibold);
|
|
1985
|
+
font-size: var(--dds-table-header-font-size);
|
|
1986
|
+
color: var(--dds-table-header-text);
|
|
1987
|
+
border-bottom: 2px solid var(--dds-table-header-border);
|
|
1988
|
+
white-space: nowrap;
|
|
1989
|
+
}
|
|
1990
|
+
/* Default variant: left/right column borders */
|
|
1991
|
+
.dds-table-wrapper:not(.dds-table-borderless) .dds-table-th + .dds-table-th,
|
|
1992
|
+
.dds-table-wrapper:not(.dds-table-borderless) .dds-table-td + .dds-table-td {
|
|
1993
|
+
border-left: 1px solid var(--dds-table-border);
|
|
1994
|
+
}
|
|
1995
|
+
/* -----------------------------------------------------------------------
|
|
1996
|
+
Sortable column header
|
|
1997
|
+
----------------------------------------------------------------------- */
|
|
1998
|
+
.dds-table-th-sortable {
|
|
1999
|
+
cursor: pointer;
|
|
2000
|
+
user-select: none;
|
|
2001
|
+
}
|
|
2002
|
+
.dds-table-th-sortable:hover {
|
|
2003
|
+
background-color: var(--dds-table-header-hover-bg);
|
|
2004
|
+
color: var(--dds-table-header-hover-text);
|
|
2005
|
+
}
|
|
2006
|
+
.dds-table-th-sortable:focus-visible {
|
|
2007
|
+
outline: 2px solid var(--dds-table-focus-ring);
|
|
2008
|
+
outline-offset: -2px;
|
|
2009
|
+
}
|
|
2010
|
+
.dds-table-th-active {
|
|
2011
|
+
color: var(--dds-table-header-active-text);
|
|
2012
|
+
}
|
|
2013
|
+
.dds-table-th-content {
|
|
2014
|
+
display: inline-flex;
|
|
2015
|
+
align-items: center;
|
|
2016
|
+
gap: 0.375rem;
|
|
2017
|
+
}
|
|
2018
|
+
.dds-table-sort-icon {
|
|
2019
|
+
font-size: 0.75em;
|
|
2020
|
+
opacity: 0.7;
|
|
2021
|
+
flex-shrink: 0;
|
|
2022
|
+
}
|
|
2023
|
+
.dds-table-th-active .dds-table-sort-icon {
|
|
2024
|
+
opacity: 1;
|
|
2025
|
+
}
|
|
2026
|
+
/* -----------------------------------------------------------------------
|
|
2027
|
+
Body rows
|
|
2028
|
+
----------------------------------------------------------------------- */
|
|
2029
|
+
.dds-table-body .dds-table-row {
|
|
2030
|
+
border-top: 1px solid var(--dds-table-row-border);
|
|
2031
|
+
transition: background-color 150ms ease-in-out;
|
|
2032
|
+
}
|
|
2033
|
+
.dds-table-body .dds-table-row:hover {
|
|
2034
|
+
background-color: var(--dds-table-row-hover-bg);
|
|
2035
|
+
}
|
|
2036
|
+
/* =============================================================================
|
|
2037
|
+
Grid — multi-column layout component
|
|
2038
|
+
============================================================================= */
|
|
2039
|
+
/* Base grid container */
|
|
2040
|
+
.dds-grid {
|
|
2041
|
+
display: grid;
|
|
2042
|
+
grid-template-columns: var(--dds-grid-template-columns, repeat(2, 1fr));
|
|
2043
|
+
gap: var(--dds-grid-gap, var(--dds-grid-gap-md));
|
|
2044
|
+
align-items: var(--dds-grid-align, stretch);
|
|
2045
|
+
}
|
|
2046
|
+
/* Optional top border */
|
|
2047
|
+
.dds-grid-has-top-border {
|
|
2048
|
+
border-top: var(--dds-grid-top-border-thickness, 1px) solid
|
|
2049
|
+
var(--dds-grid-top-border-color, var(--dds-grid-divider-color));
|
|
2050
|
+
padding-top: var(--dds-grid-gap, var(--dds-grid-gap-md));
|
|
2051
|
+
}
|
|
2052
|
+
/* Optional bottom border */
|
|
2053
|
+
.dds-grid-has-bottom-border {
|
|
2054
|
+
border-bottom: var(--dds-grid-bottom-border-thickness, 1px) solid
|
|
2055
|
+
var(--dds-grid-bottom-border-color, var(--dds-grid-divider-color));
|
|
2056
|
+
padding-bottom: var(--dds-grid-gap, var(--dds-grid-gap-md));
|
|
2057
|
+
}
|
|
2058
|
+
/* Column divider — vertical line between columns */
|
|
2059
|
+
.dds-grid-has-column-divider .dds-grid-column + .dds-grid-column {
|
|
2060
|
+
border-left: var(--dds-grid-column-divider-thickness, 1px) solid
|
|
2061
|
+
var(--dds-grid-column-divider-color, var(--dds-grid-divider-color));
|
|
2062
|
+
padding-left: var(--dds-grid-gap, var(--dds-grid-gap-md));
|
|
2063
|
+
}
|
|
2064
|
+
/* Individual column */
|
|
2065
|
+
.dds-grid-column {
|
|
2066
|
+
/* Prevent grid cells from overflowing (e.g. wide code blocks) */
|
|
2067
|
+
min-width: 0;
|
|
2068
|
+
}
|
|
2069
|
+
/* Sticky column — column div stretches to full row height so that border-left
|
|
2070
|
+
covers the entire row. The CONTENT inside is what scrolls sticky, via the
|
|
2071
|
+
inner wrapper. */
|
|
2072
|
+
.dds-grid-column-sticky {
|
|
2073
|
+
/* No align-self override — stretches naturally to row height */
|
|
2074
|
+
}
|
|
2075
|
+
/* Inner wrapper that provides the actual sticky scroll behaviour */
|
|
2076
|
+
.dds-grid-column-sticky-inner {
|
|
2077
|
+
position: sticky;
|
|
2078
|
+
top: var(--dds-grid-sticky-top, 1rem);
|
|
2079
|
+
}
|
|
2080
|
+
/* =============================================================================
|
|
2081
|
+
Responsive stacking — columns collapse to a single vertical track
|
|
2082
|
+
============================================================================= */
|
|
2083
|
+
/* Stack at sm breakpoint (≤ 640 px) */
|
|
2084
|
+
@media (max-width: 640px) {
|
|
2085
|
+
.dds-grid-stack-sm {
|
|
2086
|
+
grid-template-columns: 1fr;
|
|
2087
|
+
}
|
|
2088
|
+
|
|
2089
|
+
/* Column divider becomes a horizontal rule when stacked */
|
|
2090
|
+
.dds-grid-stack-sm.dds-grid-has-column-divider .dds-grid-column + .dds-grid-column {
|
|
2091
|
+
border-left: none;
|
|
2092
|
+
padding-left: 0;
|
|
2093
|
+
border-top: var(--dds-grid-column-divider-thickness, 1px) solid
|
|
2094
|
+
var(--dds-grid-column-divider-color, var(--dds-grid-divider-color));
|
|
2095
|
+
padding-top: var(--dds-grid-gap, var(--dds-grid-gap-md));
|
|
2096
|
+
}
|
|
2097
|
+
|
|
2098
|
+
/* Sticky inner wrapper no-ops when stacked */
|
|
2099
|
+
.dds-grid-stack-sm .dds-grid-column-sticky-inner {
|
|
2100
|
+
position: static;
|
|
2101
|
+
}
|
|
2102
|
+
}
|
|
2103
|
+
/* Stack at md breakpoint (≤ 768 px) */
|
|
2104
|
+
@media (max-width: 768px) {
|
|
2105
|
+
.dds-grid-stack-md {
|
|
2106
|
+
grid-template-columns: 1fr;
|
|
2107
|
+
}
|
|
2108
|
+
|
|
2109
|
+
.dds-grid-stack-md.dds-grid-has-column-divider .dds-grid-column + .dds-grid-column {
|
|
2110
|
+
border-left: none;
|
|
2111
|
+
padding-left: 0;
|
|
2112
|
+
border-top: var(--dds-grid-column-divider-thickness, 1px) solid
|
|
2113
|
+
var(--dds-grid-column-divider-color, var(--dds-grid-divider-color));
|
|
2114
|
+
padding-top: var(--dds-grid-gap, var(--dds-grid-gap-md));
|
|
2115
|
+
}
|
|
2116
|
+
|
|
2117
|
+
.dds-grid-stack-md .dds-grid-column-sticky-inner {
|
|
2118
|
+
position: static;
|
|
2119
|
+
}
|
|
2120
|
+
}
|
|
2121
|
+
/* Stack at lg breakpoint (≤ 1024 px) */
|
|
2122
|
+
@media (max-width: 1024px) {
|
|
2123
|
+
.dds-grid-stack-lg {
|
|
2124
|
+
grid-template-columns: 1fr;
|
|
2125
|
+
}
|
|
2126
|
+
|
|
2127
|
+
.dds-grid-stack-lg.dds-grid-has-column-divider .dds-grid-column + .dds-grid-column {
|
|
2128
|
+
border-left: none;
|
|
2129
|
+
padding-left: 0;
|
|
2130
|
+
border-top: var(--dds-grid-column-divider-thickness, 1px) solid
|
|
2131
|
+
var(--dds-grid-column-divider-color, var(--dds-grid-divider-color));
|
|
2132
|
+
padding-top: var(--dds-grid-gap, var(--dds-grid-gap-md));
|
|
2133
|
+
}
|
|
2134
|
+
|
|
2135
|
+
.dds-grid-stack-lg .dds-grid-column-sticky-inner {
|
|
2136
|
+
position: static;
|
|
2137
|
+
}
|
|
2138
|
+
}
|
|
1835
2139
|
|