@zvndev/yable-themes 0.1.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.
@@ -0,0 +1,209 @@
1
+ /* ============================================================================
2
+ @zvndev/yable-themes — Ocean Theme
3
+ Calm and fluid. Desaturated sage-teal palette with gentle transitions.
4
+ Think soft tide pools, not bright Caribbean. Muted teal headers,
5
+ borders that blend into backgrounds.
6
+
7
+ Usage:
8
+ import '@zvndev/yable-themes'
9
+ import '@zvndev/yable-themes/ocean.css'
10
+ <Table theme="ocean" />
11
+ ============================================================================ */
12
+
13
+ .yable-theme-ocean,
14
+ .yable[data-theme="ocean"] {
15
+ /* Surface — barely tinted white, calm */
16
+ --yable-bg: #fafcfb;
17
+ --yable-bg-header: #f2f7f6;
18
+ --yable-bg-footer: #f2f7f6;
19
+ --yable-bg-row: transparent;
20
+ --yable-bg-row-alt: rgba(107, 142, 135, 0.02);
21
+ --yable-bg-row-hover: rgba(107, 142, 135, 0.04);
22
+ --yable-bg-row-selected: rgba(94, 162, 155, 0.07);
23
+ --yable-bg-row-expanded: rgba(107, 142, 135, 0.02);
24
+ --yable-bg-cell-editing: #ffffff;
25
+ --yable-bg-pinned: #f5f9f8;
26
+ --yable-bg-row-drag-over: rgba(94, 162, 155, 0.1);
27
+
28
+ /* Text — muted sage, not bright teal */
29
+ --yable-text-primary: #1a2421;
30
+ --yable-text-secondary: #5f756e;
31
+ --yable-text-tertiary: #8fa39c;
32
+ --yable-text-header: #4a736a;
33
+ --yable-text-disabled: #c5d1cd;
34
+ --yable-text-link: #3d7a73;
35
+ --yable-text-placeholder: #8fa39c;
36
+
37
+ /* Borders — blend into the surface, barely there */
38
+ --yable-border-color: #e3ece9;
39
+ --yable-border-color-strong: #c9d9d4;
40
+ --yable-border-radius: 8px;
41
+ --yable-border-radius-lg: 12px;
42
+
43
+ /* Accent — muted sage-teal, not cyan */
44
+ --yable-accent: #3d8b80;
45
+ --yable-accent-hover: #327268;
46
+ --yable-accent-light: rgba(61, 139, 128, 0.06);
47
+ --yable-accent-text: #ffffff;
48
+
49
+ /* Focus */
50
+ --yable-focus-ring: 0 0 0 2px #fafcfb, 0 0 0 4px rgba(61, 139, 128, 0.3);
51
+
52
+ /* Shadows — cool and subtle */
53
+ --yable-shadow: 0 1px 2px rgba(61, 90, 82, 0.05);
54
+ --yable-shadow-lg: 0 6px 20px rgba(61, 90, 82, 0.07);
55
+ --yable-shadow-pinned: 4px 0 10px -2px rgba(61, 90, 82, 0.06);
56
+
57
+ /* Scrollbar */
58
+ --yable-scrollbar-thumb: rgba(61, 139, 128, 0.15);
59
+ --yable-scrollbar-track: transparent;
60
+
61
+ /* Spacing */
62
+ --yable-cell-padding-x: 14px;
63
+ --yable-cell-padding-y: 10px;
64
+ --yable-header-padding-x: 14px;
65
+ --yable-header-padding-y: 11px;
66
+
67
+ /* Form */
68
+ --yable-input-border: #c9d9d4;
69
+ --yable-input-border-hover: #9bb8b0;
70
+ --yable-input-shadow-focus: 0 0 0 3px rgba(61, 139, 128, 0.08);
71
+
72
+ /* Checkbox */
73
+ --yable-checkbox-border: #c9d9d4;
74
+ --yable-checkbox-radius: 4px;
75
+
76
+ /* Pagination */
77
+ --yable-pagination-button-radius: 6px;
78
+ --yable-pagination-button-bg-hover: rgba(61, 139, 128, 0.06);
79
+
80
+ /* Loading */
81
+ --yable-loading-shimmer: linear-gradient(
82
+ 90deg,
83
+ rgba(61, 139, 128, 0.025) 25%,
84
+ rgba(61, 139, 128, 0.05) 37%,
85
+ rgba(61, 139, 128, 0.025) 63%
86
+ );
87
+
88
+ /* Transitions — slightly slower for fluidity */
89
+ --yable-transition-fast: 120ms ease;
90
+ --yable-transition: 180ms ease;
91
+ --yable-transition-slow: 280ms ease;
92
+ }
93
+
94
+ /* Header — muted sage, understated authority */
95
+ .yable-theme-ocean .yable-th,
96
+ .yable[data-theme="ocean"] .yable-th {
97
+ text-transform: none;
98
+ letter-spacing: normal;
99
+ font-size: var(--yable-font-size-sm);
100
+ font-weight: var(--yable-font-weight-medium);
101
+ color: var(--yable-text-header);
102
+ }
103
+
104
+ .yable-theme-ocean .yable-tr:not(:last-child) .yable-td,
105
+ .yable[data-theme="ocean"] .yable-tr:not(:last-child) .yable-td {
106
+ border-bottom-color: var(--yable-border-color);
107
+ }
108
+
109
+ /* ── Ocean Dark Mode ────────────────────────────────────────────────────── */
110
+
111
+ @media (prefers-color-scheme: dark) {
112
+ .yable-theme-ocean:not([data-yable-theme="light"]),
113
+ .yable[data-theme="ocean"]:not([data-yable-theme="light"]) {
114
+ --yable-bg: #0b1210;
115
+ --yable-bg-header: #0f1916;
116
+ --yable-bg-footer: #0f1916;
117
+ --yable-bg-row-alt: rgba(94, 162, 155, 0.025);
118
+ --yable-bg-row-hover: rgba(94, 162, 155, 0.05);
119
+ --yable-bg-row-selected: rgba(94, 162, 155, 0.1);
120
+ --yable-bg-row-expanded: rgba(94, 162, 155, 0.02);
121
+ --yable-bg-cell-editing: #121e1b;
122
+ --yable-bg-pinned: #0d1613;
123
+ --yable-bg-row-drag-over: rgba(94, 162, 155, 0.12);
124
+
125
+ --yable-text-primary: #dce8e5;
126
+ --yable-text-secondary: #7d9e96;
127
+ --yable-text-tertiary: #506b64;
128
+ --yable-text-header: #82c0b6;
129
+
130
+ --yable-border-color: #1a2b27;
131
+ --yable-border-color-strong: #253d37;
132
+
133
+ --yable-accent: #5eb8ab;
134
+ --yable-accent-hover: #7ecec3;
135
+ --yable-accent-light: rgba(94, 184, 171, 0.1);
136
+
137
+ --yable-focus-ring: 0 0 0 2px #0b1210, 0 0 0 4px rgba(94, 184, 171, 0.35);
138
+
139
+ --yable-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
140
+ --yable-shadow-lg: 0 6px 20px rgba(0, 0, 0, 0.5);
141
+
142
+ --yable-scrollbar-thumb: rgba(94, 184, 171, 0.18);
143
+ --yable-scrollbar-track: rgba(255, 255, 255, 0.02);
144
+
145
+ --yable-input-border: #253d37;
146
+ --yable-input-border-hover: #356a60;
147
+ --yable-input-bg-focus: #121e1b;
148
+ --yable-checkbox-border: #356a60;
149
+ --yable-checkbox-bg: #1a2b27;
150
+
151
+ --yable-pagination-button-bg-hover: rgba(94, 184, 171, 0.08);
152
+
153
+ --yable-loading-shimmer: linear-gradient(
154
+ 90deg,
155
+ rgba(94, 184, 171, 0.02) 25%,
156
+ rgba(94, 184, 171, 0.05) 37%,
157
+ rgba(94, 184, 171, 0.02) 63%
158
+ );
159
+ }
160
+ }
161
+
162
+ [data-yable-theme="dark"] .yable-theme-ocean,
163
+ [data-yable-theme="dark"] .yable[data-theme="ocean"] {
164
+ --yable-bg: #0b1210;
165
+ --yable-bg-header: #0f1916;
166
+ --yable-bg-footer: #0f1916;
167
+ --yable-bg-row-alt: rgba(94, 162, 155, 0.025);
168
+ --yable-bg-row-hover: rgba(94, 162, 155, 0.05);
169
+ --yable-bg-row-selected: rgba(94, 162, 155, 0.1);
170
+ --yable-bg-row-expanded: rgba(94, 162, 155, 0.02);
171
+ --yable-bg-cell-editing: #121e1b;
172
+ --yable-bg-pinned: #0d1613;
173
+ --yable-bg-row-drag-over: rgba(94, 162, 155, 0.12);
174
+
175
+ --yable-text-primary: #dce8e5;
176
+ --yable-text-secondary: #7d9e96;
177
+ --yable-text-tertiary: #506b64;
178
+ --yable-text-header: #82c0b6;
179
+
180
+ --yable-border-color: #1a2b27;
181
+ --yable-border-color-strong: #253d37;
182
+
183
+ --yable-accent: #5eb8ab;
184
+ --yable-accent-hover: #7ecec3;
185
+ --yable-accent-light: rgba(94, 184, 171, 0.1);
186
+
187
+ --yable-focus-ring: 0 0 0 2px #0b1210, 0 0 0 4px rgba(94, 184, 171, 0.35);
188
+
189
+ --yable-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
190
+ --yable-shadow-lg: 0 6px 20px rgba(0, 0, 0, 0.5);
191
+
192
+ --yable-scrollbar-thumb: rgba(94, 184, 171, 0.18);
193
+ --yable-scrollbar-track: rgba(255, 255, 255, 0.02);
194
+
195
+ --yable-input-border: #253d37;
196
+ --yable-input-border-hover: #356a60;
197
+ --yable-input-bg-focus: #121e1b;
198
+ --yable-checkbox-border: #356a60;
199
+ --yable-checkbox-bg: #1a2b27;
200
+
201
+ --yable-pagination-button-bg-hover: rgba(94, 184, 171, 0.08);
202
+
203
+ --yable-loading-shimmer: linear-gradient(
204
+ 90deg,
205
+ rgba(94, 184, 171, 0.02) 25%,
206
+ rgba(94, 184, 171, 0.05) 37%,
207
+ rgba(94, 184, 171, 0.02) 63%
208
+ );
209
+ }
@@ -0,0 +1,204 @@
1
+ /* ============================================================================
2
+ @zvndev/yable-themes — Rose Theme
3
+ Elegant editorial warmth. Sophisticated, not sweet. Rose-500 accent
4
+ over warm stone grays. Think Notion's rose variant — subtle, warm,
5
+ with an editorial quality that feels intentional.
6
+
7
+ Usage:
8
+ import '@zvndev/yable-themes'
9
+ import '@zvndev/yable-themes/rose.css'
10
+ <Table theme="rose" />
11
+ ============================================================================ */
12
+
13
+ .yable-theme-rose,
14
+ .yable[data-theme="rose"] {
15
+ /* Surface — warm parchment, not pink */
16
+ --yable-bg: #fefcfb;
17
+ --yable-bg-header: #faf5f3;
18
+ --yable-bg-footer: #faf5f3;
19
+ --yable-bg-row: transparent;
20
+ --yable-bg-row-alt: rgba(168, 126, 118, 0.015);
21
+ --yable-bg-row-hover: rgba(168, 126, 118, 0.03);
22
+ --yable-bg-row-selected: rgba(244, 63, 94, 0.06);
23
+ --yable-bg-row-expanded: rgba(168, 126, 118, 0.015);
24
+ --yable-bg-cell-editing: #ffffff;
25
+ --yable-bg-pinned: #fcf8f7;
26
+ --yable-bg-row-drag-over: rgba(244, 63, 94, 0.08);
27
+
28
+ /* Text — warm stone, not cool gray */
29
+ --yable-text-primary: #292524;
30
+ --yable-text-secondary: #78716c;
31
+ --yable-text-tertiary: #a8a29e;
32
+ --yable-text-header: #8b5c59;
33
+ --yable-text-disabled: #d6d3d1;
34
+ --yable-text-link: #e11d48;
35
+ --yable-text-placeholder: #a8a29e;
36
+
37
+ /* Borders — warm blush that fades into surface */
38
+ --yable-border-color: #f0e6e3;
39
+ --yable-border-color-strong: #e0cdc8;
40
+ --yable-border-radius: 8px;
41
+ --yable-border-radius-lg: 12px;
42
+
43
+ /* Accent — rose-500, warm and confident */
44
+ --yable-accent: #f43f5e;
45
+ --yable-accent-hover: #e11d48;
46
+ --yable-accent-light: rgba(244, 63, 94, 0.05);
47
+ --yable-accent-text: #ffffff;
48
+
49
+ /* Focus */
50
+ --yable-focus-ring: 0 0 0 2px #fefcfb, 0 0 0 4px rgba(244, 63, 94, 0.25);
51
+
52
+ /* Shadows — warm undertone */
53
+ --yable-shadow: 0 1px 2px rgba(120, 80, 70, 0.05);
54
+ --yable-shadow-lg: 0 6px 20px rgba(120, 80, 70, 0.07);
55
+ --yable-shadow-pinned: 4px 0 10px -2px rgba(120, 80, 70, 0.05);
56
+
57
+ /* Scrollbar */
58
+ --yable-scrollbar-thumb: rgba(168, 126, 118, 0.18);
59
+ --yable-scrollbar-track: transparent;
60
+
61
+ /* Spacing */
62
+ --yable-cell-padding-x: 14px;
63
+ --yable-cell-padding-y: 10px;
64
+ --yable-header-padding-x: 14px;
65
+ --yable-header-padding-y: 11px;
66
+
67
+ /* Form */
68
+ --yable-input-border: #e0cdc8;
69
+ --yable-input-border-hover: #c4a8a0;
70
+ --yable-input-shadow-focus: 0 0 0 3px rgba(244, 63, 94, 0.06);
71
+
72
+ /* Checkbox */
73
+ --yable-checkbox-border: #e0cdc8;
74
+ --yable-checkbox-radius: 3px;
75
+
76
+ /* Pagination */
77
+ --yable-pagination-button-radius: 6px;
78
+ --yable-pagination-button-bg-hover: rgba(168, 126, 118, 0.06);
79
+
80
+ /* Loading */
81
+ --yable-loading-shimmer: linear-gradient(
82
+ 90deg,
83
+ rgba(168, 126, 118, 0.025) 25%,
84
+ rgba(168, 126, 118, 0.05) 37%,
85
+ rgba(168, 126, 118, 0.025) 63%
86
+ );
87
+ }
88
+
89
+ /* Header — warm muted rose, editorial feel */
90
+ .yable-theme-rose .yable-th,
91
+ .yable[data-theme="rose"] .yable-th {
92
+ text-transform: none;
93
+ letter-spacing: normal;
94
+ font-size: var(--yable-font-size-sm);
95
+ font-weight: var(--yable-font-weight-medium);
96
+ color: var(--yable-text-header);
97
+ }
98
+
99
+ .yable-theme-rose .yable-tr:not(:last-child) .yable-td,
100
+ .yable[data-theme="rose"] .yable-tr:not(:last-child) .yable-td {
101
+ border-bottom-color: var(--yable-border-color);
102
+ }
103
+
104
+ /* ── Rose Dark Mode ─────────────────────────────────────────────────────── */
105
+
106
+ @media (prefers-color-scheme: dark) {
107
+ .yable-theme-rose:not([data-yable-theme="light"]),
108
+ .yable[data-theme="rose"]:not([data-yable-theme="light"]) {
109
+ --yable-bg: #110d0d;
110
+ --yable-bg-header: #1a1414;
111
+ --yable-bg-footer: #1a1414;
112
+ --yable-bg-row-alt: rgba(244, 63, 94, 0.02);
113
+ --yable-bg-row-hover: rgba(244, 63, 94, 0.04);
114
+ --yable-bg-row-selected: rgba(244, 63, 94, 0.1);
115
+ --yable-bg-row-expanded: rgba(244, 63, 94, 0.02);
116
+ --yable-bg-cell-editing: #1e1616;
117
+ --yable-bg-pinned: #151010;
118
+ --yable-bg-row-drag-over: rgba(244, 63, 94, 0.12);
119
+
120
+ --yable-text-primary: #f0e4e4;
121
+ --yable-text-secondary: #b09090;
122
+ --yable-text-tertiary: #7a5a5a;
123
+ --yable-text-header: #e88d9a;
124
+
125
+ --yable-border-color: #2d1f1f;
126
+ --yable-border-color-strong: #3d2b2b;
127
+
128
+ --yable-accent: #f43f5e;
129
+ --yable-accent-hover: #fb7185;
130
+ --yable-accent-light: rgba(244, 63, 94, 0.12);
131
+
132
+ --yable-focus-ring: 0 0 0 2px #110d0d, 0 0 0 4px rgba(244, 63, 94, 0.35);
133
+
134
+ --yable-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
135
+ --yable-shadow-lg: 0 6px 20px rgba(0, 0, 0, 0.5);
136
+
137
+ --yable-scrollbar-thumb: rgba(244, 63, 94, 0.18);
138
+ --yable-scrollbar-track: rgba(255, 255, 255, 0.02);
139
+
140
+ --yable-input-border: #3d2b2b;
141
+ --yable-input-border-hover: #5c3e3e;
142
+ --yable-input-bg-focus: #1e1616;
143
+ --yable-checkbox-border: #5c3e3e;
144
+ --yable-checkbox-bg: #2d1f1f;
145
+
146
+ --yable-pagination-button-bg-hover: rgba(244, 63, 94, 0.08);
147
+
148
+ --yable-loading-shimmer: linear-gradient(
149
+ 90deg,
150
+ rgba(244, 63, 94, 0.02) 25%,
151
+ rgba(244, 63, 94, 0.05) 37%,
152
+ rgba(244, 63, 94, 0.02) 63%
153
+ );
154
+ }
155
+ }
156
+
157
+ [data-yable-theme="dark"] .yable-theme-rose,
158
+ [data-yable-theme="dark"] .yable[data-theme="rose"] {
159
+ --yable-bg: #110d0d;
160
+ --yable-bg-header: #1a1414;
161
+ --yable-bg-footer: #1a1414;
162
+ --yable-bg-row-alt: rgba(244, 63, 94, 0.02);
163
+ --yable-bg-row-hover: rgba(244, 63, 94, 0.04);
164
+ --yable-bg-row-selected: rgba(244, 63, 94, 0.1);
165
+ --yable-bg-row-expanded: rgba(244, 63, 94, 0.02);
166
+ --yable-bg-cell-editing: #1e1616;
167
+ --yable-bg-pinned: #151010;
168
+ --yable-bg-row-drag-over: rgba(244, 63, 94, 0.12);
169
+
170
+ --yable-text-primary: #f0e4e4;
171
+ --yable-text-secondary: #b09090;
172
+ --yable-text-tertiary: #7a5a5a;
173
+ --yable-text-header: #e88d9a;
174
+
175
+ --yable-border-color: #2d1f1f;
176
+ --yable-border-color-strong: #3d2b2b;
177
+
178
+ --yable-accent: #f43f5e;
179
+ --yable-accent-hover: #fb7185;
180
+ --yable-accent-light: rgba(244, 63, 94, 0.12);
181
+
182
+ --yable-focus-ring: 0 0 0 2px #110d0d, 0 0 0 4px rgba(244, 63, 94, 0.35);
183
+
184
+ --yable-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
185
+ --yable-shadow-lg: 0 6px 20px rgba(0, 0, 0, 0.5);
186
+
187
+ --yable-scrollbar-thumb: rgba(244, 63, 94, 0.18);
188
+ --yable-scrollbar-track: rgba(255, 255, 255, 0.02);
189
+
190
+ --yable-input-border: #3d2b2b;
191
+ --yable-input-border-hover: #5c3e3e;
192
+ --yable-input-bg-focus: #1e1616;
193
+ --yable-checkbox-border: #5c3e3e;
194
+ --yable-checkbox-bg: #2d1f1f;
195
+
196
+ --yable-pagination-button-bg-hover: rgba(244, 63, 94, 0.08);
197
+
198
+ --yable-loading-shimmer: linear-gradient(
199
+ 90deg,
200
+ rgba(244, 63, 94, 0.02) 25%,
201
+ rgba(244, 63, 94, 0.05) 37%,
202
+ rgba(244, 63, 94, 0.02) 63%
203
+ );
204
+ }
@@ -0,0 +1,167 @@
1
+ /* ============================================================================
2
+ @zvndev/yable-themes — Stripe Theme
3
+ Inspired by Stripe's dashboard — warm grays, crisp typography,
4
+ refined borders, and a professional polish.
5
+
6
+ Usage:
7
+ import '@zvndev/yable-themes'
8
+ import '@zvndev/yable-themes/stripe.css'
9
+ <Table className="yable-theme-stripe" />
10
+ ============================================================================ */
11
+
12
+ .yable-theme-stripe,
13
+ .yable[data-theme="stripe"] {
14
+ /* Surface — warm gray palette */
15
+ --yable-bg: #ffffff;
16
+ --yable-bg-header: #f6f8fa;
17
+ --yable-bg-footer: #f6f8fa;
18
+ --yable-bg-row-alt: transparent;
19
+ --yable-bg-row-hover: #f6f8fa;
20
+ --yable-bg-row-selected: rgba(99, 91, 255, 0.05);
21
+ --yable-bg-pinned: #ffffff;
22
+
23
+ /* Text — Stripe's characteristic dark + purple tones */
24
+ --yable-text-primary: #1a1f36;
25
+ --yable-text-secondary: #697386;
26
+ --yable-text-tertiary: #a3acb9;
27
+ --yable-text-header: #697386;
28
+
29
+ /* Borders — visible but refined */
30
+ --yable-border-color: #e3e8ee;
31
+ --yable-border-color-strong: #d8dee4;
32
+ --yable-border-radius: 8px;
33
+
34
+ /* Accent — Stripe's signature indigo/purple */
35
+ --yable-accent: #635bff;
36
+ --yable-accent-hover: #5851eb;
37
+ --yable-accent-light: rgba(99, 91, 255, 0.06);
38
+ --yable-accent-text: #ffffff;
39
+
40
+ /* Shadows — crisp, defined */
41
+ --yable-shadow: 0 1px 3px rgba(0, 0, 0, 0.06), 0 0 0 1px rgba(0, 0, 0, 0.04);
42
+ --yable-shadow-lg: 0 6px 20px rgba(0, 0, 0, 0.08);
43
+ --yable-shadow-pinned: 3px 0 6px -2px rgba(0, 0, 0, 0.08);
44
+
45
+ /* Spacing — slightly more generous */
46
+ --yable-cell-padding-x: 16px;
47
+ --yable-cell-padding-y: 12px;
48
+ --yable-header-padding-x: 16px;
49
+ --yable-header-padding-y: 10px;
50
+
51
+ /* Sizing */
52
+ --yable-row-min-height: 44px;
53
+ --yable-header-min-height: 40px;
54
+
55
+ /* Typography — Stripe's characteristic weights */
56
+ --yable-font-size: 14px;
57
+ --yable-font-size-sm: 13px;
58
+ --yable-font-size-header: 12px;
59
+
60
+ /* Form controls — clean, precise */
61
+ --yable-input-border: #d8dee4;
62
+ --yable-input-border-hover: #a3acb9;
63
+ --yable-input-border-radius: 6px;
64
+ --yable-input-height: 30px;
65
+ --yable-input-shadow-focus: 0 0 0 3px rgba(99, 91, 255, 0.1), 0 0 0 1px rgba(99, 91, 255, 0.3);
66
+
67
+ /* Checkbox — Stripe-style */
68
+ --yable-checkbox-radius: 3px;
69
+ --yable-checkbox-bg-checked: var(--yable-accent);
70
+ --yable-checkbox-border-checked: var(--yable-accent);
71
+
72
+ /* Pagination */
73
+ --yable-pagination-button-radius: 6px;
74
+ --yable-pagination-button-bg-active: var(--yable-accent);
75
+ }
76
+
77
+ /* Header — uppercase labels with Stripe's signature style */
78
+ .yable-theme-stripe .yable-th,
79
+ .yable[data-theme="stripe"] .yable-th {
80
+ text-transform: uppercase;
81
+ letter-spacing: 0.05em;
82
+ font-size: 11px;
83
+ font-weight: var(--yable-font-weight-semibold);
84
+ color: var(--yable-text-secondary);
85
+ border-bottom: var(--yable-border-width) solid var(--yable-border-color-strong);
86
+ }
87
+
88
+ /* Rows — clean separators */
89
+ .yable-theme-stripe .yable-tr:not(:last-child) .yable-td,
90
+ .yable[data-theme="stripe"] .yable-tr:not(:last-child) .yable-td {
91
+ border-bottom: var(--yable-border-width) solid var(--yable-border-color);
92
+ }
93
+
94
+ /* Outer border: crisp box-shadow instead of border for cleaner look */
95
+ .yable-theme-stripe,
96
+ .yable[data-theme="stripe"] {
97
+ border: none;
98
+ box-shadow: var(--yable-shadow);
99
+ }
100
+
101
+ /* ── Stripe Dark Mode ────────────────────────────────────────────────────── */
102
+
103
+ @media (prefers-color-scheme: dark) {
104
+ .yable-theme-stripe:not([data-yable-theme="light"]),
105
+ .yable[data-theme="stripe"]:not([data-yable-theme="light"]) {
106
+ --yable-bg: #0a0d16;
107
+ --yable-bg-header: #0f1221;
108
+ --yable-bg-footer: #0f1221;
109
+ --yable-bg-row-hover: rgba(255, 255, 255, 0.03);
110
+ --yable-bg-row-selected: rgba(99, 91, 255, 0.1);
111
+ --yable-bg-pinned: #0d1019;
112
+
113
+ --yable-text-primary: #e6e9ef;
114
+ --yable-text-secondary: #8792a2;
115
+ --yable-text-tertiary: #5e6b80;
116
+ --yable-text-header: #8792a2;
117
+
118
+ --yable-border-color: #1c2033;
119
+ --yable-border-color-strong: #2a2f45;
120
+
121
+ --yable-shadow: 0 1px 3px rgba(0, 0, 0, 0.4), 0 0 0 1px rgba(255, 255, 255, 0.04);
122
+ --yable-shadow-lg: 0 6px 20px rgba(0, 0, 0, 0.5);
123
+ --yable-shadow-pinned: 3px 0 6px -2px rgba(0, 0, 0, 0.4);
124
+
125
+ --yable-accent: #7a73ff;
126
+ --yable-accent-hover: #9c96ff;
127
+ --yable-accent-light: rgba(122, 115, 255, 0.12);
128
+
129
+ --yable-input-border: #2a2f45;
130
+ --yable-input-border-hover: #3d4460;
131
+ --yable-input-bg-focus: #131729;
132
+ --yable-checkbox-border: #3d4460;
133
+ --yable-checkbox-bg: #1c2033;
134
+ }
135
+ }
136
+
137
+ [data-yable-theme="dark"] .yable-theme-stripe,
138
+ [data-yable-theme="dark"] .yable[data-theme="stripe"] {
139
+ --yable-bg: #0a0d16;
140
+ --yable-bg-header: #0f1221;
141
+ --yable-bg-footer: #0f1221;
142
+ --yable-bg-row-hover: rgba(255, 255, 255, 0.03);
143
+ --yable-bg-row-selected: rgba(99, 91, 255, 0.1);
144
+ --yable-bg-pinned: #0d1019;
145
+
146
+ --yable-text-primary: #e6e9ef;
147
+ --yable-text-secondary: #8792a2;
148
+ --yable-text-tertiary: #5e6b80;
149
+ --yable-text-header: #8792a2;
150
+
151
+ --yable-border-color: #1c2033;
152
+ --yable-border-color-strong: #2a2f45;
153
+
154
+ --yable-shadow: 0 1px 3px rgba(0, 0, 0, 0.4), 0 0 0 1px rgba(255, 255, 255, 0.04);
155
+ --yable-shadow-lg: 0 6px 20px rgba(0, 0, 0, 0.5);
156
+ --yable-shadow-pinned: 3px 0 6px -2px rgba(0, 0, 0, 0.4);
157
+
158
+ --yable-accent: #7a73ff;
159
+ --yable-accent-hover: #9c96ff;
160
+ --yable-accent-light: rgba(122, 115, 255, 0.12);
161
+
162
+ --yable-input-border: #2a2f45;
163
+ --yable-input-border-hover: #3d4460;
164
+ --yable-input-bg-focus: #131729;
165
+ --yable-checkbox-border: #3d4460;
166
+ --yable-checkbox-bg: #1c2033;
167
+ }