@ryanhelsing/ry-ui 1.0.14 → 1.0.15
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/.claude/skills/ry-ui-builder/SKILL.md +4 -6
- package/README.md +21 -26
- package/dist/components/ry-dropdown.d.ts +1 -1
- package/dist/components/ry-heading.d.ts +1 -5
- package/dist/components/ry-heading.d.ts.map +1 -1
- package/dist/components/ry-logo-bar.d.ts +25 -0
- package/dist/components/ry-logo-bar.d.ts.map +1 -0
- package/dist/components/ry-modal.d.ts +1 -1
- package/dist/components/ry-pricing.d.ts +4 -4
- package/dist/components/ry-pricing.d.ts.map +1 -1
- package/dist/components/ry-search-list.d.ts +30 -0
- package/dist/components/ry-search-list.d.ts.map +1 -0
- package/dist/components/ry-stat.d.ts +1 -4
- package/dist/components/ry-stat.d.ts.map +1 -1
- package/dist/components/ry-testimonial.d.ts +2 -5
- package/dist/components/ry-testimonial.d.ts.map +1 -1
- package/dist/components/ry-theme-panel.d.ts.map +1 -1
- package/dist/core/ry-transform.d.ts.map +1 -1
- package/dist/css/ry-structure.css +516 -28
- package/dist/css/ry-theme.css +186 -40
- package/dist/css/ry-tokens.css +4 -4
- package/dist/css/ry-ui.css +706 -72
- package/dist/pages/components.html +19 -82
- package/dist/pages/landing.html +13 -40
- package/dist/ry-ui.d.ts +2 -1
- package/dist/ry-ui.d.ts.map +1 -1
- package/dist/ry-ui.js +936 -667
- package/dist/ry-ui.js.map +1 -1
- package/docs/components/dropdown.md +2 -2
- package/docs/components/modal.md +2 -2
- package/package.json +1 -1
- package/docs/components/button-group.md +0 -36
package/dist/css/ry-theme.css
CHANGED
|
@@ -16,6 +16,46 @@ html {
|
|
|
16
16
|
background-color: var(--ry-color-bg);
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
+
/* ═══════════════════════════════════════════════════════════════
|
|
20
|
+
SECTION — INVERTED
|
|
21
|
+
═══════════════════════════════════════════════════════════════ */
|
|
22
|
+
|
|
23
|
+
ry-section[inverted] {
|
|
24
|
+
background-color: var(--ry-color-text);
|
|
25
|
+
color: var(--ry-color-bg);
|
|
26
|
+
border-radius: var(--ry-radius-lg);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
ry-section[inverted] :is(h1, h2, h3, h4, p, span, a) {
|
|
30
|
+
color: inherit;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
ry-section[inverted] p {
|
|
34
|
+
opacity: 0.7;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/* ═══════════════════════════════════════════════════════════════
|
|
38
|
+
FOOTER — INVERTED
|
|
39
|
+
═══════════════════════════════════════════════════════════════ */
|
|
40
|
+
|
|
41
|
+
ry-footer[inverted] {
|
|
42
|
+
background-color: var(--ry-color-text);
|
|
43
|
+
color: var(--ry-color-bg);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
ry-footer[inverted] :is(a, strong, p, span, nav) {
|
|
47
|
+
color: inherit;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
ry-footer[inverted] a {
|
|
51
|
+
opacity: 0.7;
|
|
52
|
+
transition: opacity var(--ry-duration-fast);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
ry-footer[inverted] a:hover {
|
|
56
|
+
opacity: 1;
|
|
57
|
+
}
|
|
58
|
+
|
|
19
59
|
/* ═══════════════════════════════════════════════════════════════
|
|
20
60
|
FOCUS STYLES
|
|
21
61
|
═══════════════════════════════════════════════════════════════ */
|
|
@@ -176,7 +216,7 @@ ry-split [data-ry-target="handle"]:focus-visible::after {
|
|
|
176
216
|
BUTTONS
|
|
177
217
|
═══════════════════════════════════════════════════════════════ */
|
|
178
218
|
|
|
179
|
-
:is(.ry-btn, ry-button) {
|
|
219
|
+
:is(:where(.ry-btn), ry-button) {
|
|
180
220
|
font-family: var(--ry-font-sans);
|
|
181
221
|
font-size: var(--ry-text-sm);
|
|
182
222
|
font-weight: var(--ry-font-medium);
|
|
@@ -193,93 +233,88 @@ ry-split [data-ry-target="handle"]:focus-visible::after {
|
|
|
193
233
|
transition-timing-function: var(--ry-ease);
|
|
194
234
|
}
|
|
195
235
|
|
|
196
|
-
:is(.ry-btn, ry-button):hover {
|
|
236
|
+
:is(:where(.ry-btn), ry-button):hover {
|
|
197
237
|
background-color: var(--ry-color-primary-hover);
|
|
198
238
|
}
|
|
199
239
|
|
|
200
|
-
:is(.ry-btn, ry-button):active {
|
|
240
|
+
:is(:where(.ry-btn), ry-button):active {
|
|
201
241
|
background-color: var(--ry-color-primary-active);
|
|
202
242
|
}
|
|
203
243
|
|
|
204
|
-
:is(.ry-btn:disabled, .ry-btn[aria-disabled="true"], ry-button[disabled]) {
|
|
244
|
+
:is(:where(.ry-btn:disabled, .ry-btn[aria-disabled="true"]), ry-button[disabled]) {
|
|
205
245
|
opacity: 0.5;
|
|
206
246
|
}
|
|
207
247
|
|
|
208
248
|
/* Button variants */
|
|
209
|
-
:is(.ry-btn--secondary, ry-button[variant="secondary"]) {
|
|
249
|
+
:is(:where(.ry-btn--secondary), ry-button[variant="secondary"]) {
|
|
210
250
|
background-color: var(--ry-color-secondary);
|
|
211
251
|
}
|
|
212
|
-
:is(.ry-btn--secondary, ry-button[variant="secondary"]):hover {
|
|
252
|
+
:is(:where(.ry-btn--secondary), ry-button[variant="secondary"]):hover {
|
|
213
253
|
background-color: var(--ry-color-secondary-hover);
|
|
214
254
|
}
|
|
215
255
|
|
|
216
|
-
:is(.ry-btn--outline, ry-button[variant="outline"]) {
|
|
256
|
+
:is(:where(.ry-btn--outline), ry-button[variant="outline"]) {
|
|
217
257
|
background-color: transparent;
|
|
218
258
|
color: var(--ry-color-primary);
|
|
219
259
|
border-color: var(--ry-color-primary);
|
|
220
260
|
}
|
|
221
|
-
:is(.ry-btn--outline, ry-button[variant="outline"]):hover {
|
|
261
|
+
:is(:where(.ry-btn--outline), ry-button[variant="outline"]):hover {
|
|
222
262
|
background-color: var(--ry-color-primary);
|
|
223
263
|
color: var(--ry-color-text-inverse);
|
|
224
264
|
}
|
|
225
265
|
|
|
226
|
-
:is(.ry-btn--ghost, ry-button[variant="ghost"]) {
|
|
266
|
+
:is(:where(.ry-btn--ghost), ry-button[variant="ghost"]) {
|
|
227
267
|
background-color: transparent;
|
|
228
268
|
color: var(--ry-color-text);
|
|
229
269
|
}
|
|
230
|
-
:is(.ry-btn--ghost, ry-button[variant="ghost"]):hover {
|
|
270
|
+
:is(:where(.ry-btn--ghost), ry-button[variant="ghost"]):hover {
|
|
231
271
|
background-color: var(--ry-color-bg-muted);
|
|
232
272
|
}
|
|
233
273
|
|
|
234
|
-
:is(.ry-btn--danger, ry-button[variant="danger"]) {
|
|
274
|
+
:is(:where(.ry-btn--danger), ry-button[variant="danger"]) {
|
|
235
275
|
background-color: var(--ry-color-danger);
|
|
236
276
|
}
|
|
237
|
-
:is(.ry-btn--danger, ry-button[variant="danger"]):hover {
|
|
277
|
+
:is(:where(.ry-btn--danger), ry-button[variant="danger"]):hover {
|
|
238
278
|
background-color: var(--ry-color-danger-hover);
|
|
239
279
|
}
|
|
240
280
|
|
|
241
|
-
:is(.ry-btn--accent, ry-button[variant="accent"]) {
|
|
281
|
+
:is(:where(.ry-btn--accent), ry-button[variant="accent"]) {
|
|
242
282
|
background-color: var(--ry-color-accent);
|
|
243
283
|
}
|
|
244
|
-
:is(.ry-btn--accent, ry-button[variant="accent"]):hover {
|
|
284
|
+
:is(:where(.ry-btn--accent), ry-button[variant="accent"]):hover {
|
|
245
285
|
background-color: var(--ry-color-accent-hover);
|
|
246
286
|
}
|
|
247
287
|
|
|
288
|
+
/* Link variant — inline text link */
|
|
289
|
+
:is(:where(.ry-btn--link), ry-button[variant="link"]) {
|
|
290
|
+
background: none;
|
|
291
|
+
color: var(--ry-color-primary);
|
|
292
|
+
font-weight: var(--ry-font-semibold);
|
|
293
|
+
text-decoration: none;
|
|
294
|
+
border: none;
|
|
295
|
+
}
|
|
296
|
+
:is(:where(.ry-btn--link), ry-button[variant="link"]):hover {
|
|
297
|
+
text-decoration: underline;
|
|
298
|
+
}
|
|
299
|
+
|
|
248
300
|
/* Pressed/active toggle state */
|
|
249
|
-
:is(.ry-btn[aria-pressed="true"], ry-button[pressed]) {
|
|
301
|
+
:is(:where(.ry-btn[aria-pressed="true"]), ry-button[pressed]) {
|
|
250
302
|
background-color: var(--ry-color-primary);
|
|
251
303
|
color: var(--ry-color-text-inverse);
|
|
252
304
|
border-color: var(--ry-color-primary);
|
|
253
305
|
}
|
|
254
|
-
:is(.ry-btn[aria-pressed="true"], ry-button[pressed]):hover {
|
|
306
|
+
:is(:where(.ry-btn[aria-pressed="true"]), ry-button[pressed]):hover {
|
|
255
307
|
background-color: var(--ry-color-primary-hover);
|
|
256
308
|
border-color: var(--ry-color-primary-hover);
|
|
257
309
|
}
|
|
258
310
|
|
|
259
|
-
/* ═══════════════════════════════════════════════════════════════
|
|
260
|
-
BUTTON GROUP
|
|
261
|
-
═══════════════════════════════════════════════════════════════ */
|
|
262
|
-
|
|
263
|
-
ry-button-group {
|
|
264
|
-
background-color: var(--ry-color-bg-muted);
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
ry-button-group > :is(ry-button, ry-toggle-button) {
|
|
268
|
-
border-color: transparent;
|
|
269
|
-
background-color: transparent;
|
|
270
|
-
color: var(--ry-color-text-muted);
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
ry-button-group > :is(ry-button, ry-toggle-button):hover:not([pressed]) {
|
|
274
|
-
color: var(--ry-color-text);
|
|
275
|
-
}
|
|
276
311
|
|
|
277
312
|
/* Button sizes (typography only - padding is structural) */
|
|
278
|
-
:is(.ry-btn--sm, ry-button[size="sm"]) {
|
|
313
|
+
:is(:where(.ry-btn--sm), ry-button[size="sm"]) {
|
|
279
314
|
font-size: var(--ry-text-xs);
|
|
280
315
|
}
|
|
281
316
|
|
|
282
|
-
:is(.ry-btn--lg, ry-button[size="lg"]) {
|
|
317
|
+
:is(:where(.ry-btn--lg), ry-button[size="lg"]) {
|
|
283
318
|
font-size: var(--ry-text-base);
|
|
284
319
|
}
|
|
285
320
|
|
|
@@ -728,6 +763,10 @@ ry-card p {
|
|
|
728
763
|
color: var(--ry-color-text-muted);
|
|
729
764
|
}
|
|
730
765
|
|
|
766
|
+
ry-card > img:first-child {
|
|
767
|
+
border-radius: var(--ry-radius-md);
|
|
768
|
+
}
|
|
769
|
+
|
|
731
770
|
/* ═══════════════════════════════════════════════════════════════
|
|
732
771
|
BADGES
|
|
733
772
|
═══════════════════════════════════════════════════════════════ */
|
|
@@ -805,7 +844,7 @@ ry-badge[style*="--ry-badge-color"] {
|
|
|
805
844
|
color: var(--ry-color-danger-text);
|
|
806
845
|
}
|
|
807
846
|
|
|
808
|
-
|
|
847
|
+
.ry-alert__title {
|
|
809
848
|
font-weight: var(--ry-font-semibold);
|
|
810
849
|
}
|
|
811
850
|
|
|
@@ -2149,13 +2188,13 @@ ry-pricing-card h3 {
|
|
|
2149
2188
|
color: var(--ry-color-text);
|
|
2150
2189
|
}
|
|
2151
2190
|
|
|
2152
|
-
ry-pricing-
|
|
2191
|
+
.ry-pricing-card__price {
|
|
2153
2192
|
font-size: var(--ry-text-4xl);
|
|
2154
2193
|
font-weight: var(--ry-font-bold);
|
|
2155
2194
|
color: var(--ry-color-text);
|
|
2156
2195
|
}
|
|
2157
2196
|
|
|
2158
|
-
ry-pricing-
|
|
2197
|
+
.ry-pricing-card__price span {
|
|
2159
2198
|
font-size: var(--ry-text-base);
|
|
2160
2199
|
font-weight: var(--ry-font-normal);
|
|
2161
2200
|
color: var(--ry-color-text-muted);
|
|
@@ -2325,18 +2364,34 @@ ry-combobox[data-ry-state="open"] .ry-combobox__input-wrapper {
|
|
|
2325
2364
|
LOGO BAR
|
|
2326
2365
|
═══════════════════════════════════════════════════════════════ */
|
|
2327
2366
|
|
|
2328
|
-
|
|
2367
|
+
ry-logo-bar > p {
|
|
2329
2368
|
color: var(--ry-color-text-muted);
|
|
2330
2369
|
font-size: var(--ry-text-sm);
|
|
2370
|
+
font-family: var(--ry-font-sans);
|
|
2331
2371
|
text-transform: uppercase;
|
|
2332
2372
|
letter-spacing: 0.1em;
|
|
2333
2373
|
}
|
|
2334
2374
|
|
|
2335
|
-
|
|
2375
|
+
ry-logo-bar span {
|
|
2336
2376
|
font-size: var(--ry-text-2xl);
|
|
2337
2377
|
font-weight: var(--ry-font-bold);
|
|
2378
|
+
font-family: var(--ry-font-sans);
|
|
2338
2379
|
color: var(--ry-color-text);
|
|
2339
2380
|
opacity: 0.5;
|
|
2381
|
+
transition: opacity var(--ry-duration-fast) var(--ry-ease);
|
|
2382
|
+
}
|
|
2383
|
+
|
|
2384
|
+
ry-logo-bar span:hover {
|
|
2385
|
+
opacity: 0.8;
|
|
2386
|
+
}
|
|
2387
|
+
|
|
2388
|
+
ry-logo-bar img {
|
|
2389
|
+
opacity: 0.5;
|
|
2390
|
+
transition: opacity var(--ry-duration-fast) var(--ry-ease);
|
|
2391
|
+
}
|
|
2392
|
+
|
|
2393
|
+
ry-logo-bar img:hover {
|
|
2394
|
+
opacity: 0.8;
|
|
2340
2395
|
}
|
|
2341
2396
|
|
|
2342
2397
|
/* ═══════════════════════════════════════════════════════════════
|
|
@@ -2487,4 +2542,95 @@ ry-heading[divider] {
|
|
|
2487
2542
|
border-bottom: var(--ry-border-width) solid var(--ry-color-border);
|
|
2488
2543
|
}
|
|
2489
2544
|
|
|
2545
|
+
/* ═══════════════════════════════════════════════════════════════
|
|
2546
|
+
SEARCH LIST
|
|
2547
|
+
═══════════════════════════════════════════════════════════════ */
|
|
2548
|
+
|
|
2549
|
+
.ry-search-list__search {
|
|
2550
|
+
background-color: var(--ry-color-bg);
|
|
2551
|
+
border-bottom: var(--ry-border-width) solid var(--ry-color-border);
|
|
2552
|
+
}
|
|
2553
|
+
|
|
2554
|
+
.ry-search-list__input {
|
|
2555
|
+
font-family: var(--ry-font-sans);
|
|
2556
|
+
font-size: var(--ry-text-sm);
|
|
2557
|
+
color: var(--ry-color-text);
|
|
2558
|
+
}
|
|
2559
|
+
|
|
2560
|
+
.ry-search-list__input::placeholder {
|
|
2561
|
+
color: var(--ry-color-text-muted);
|
|
2562
|
+
}
|
|
2563
|
+
|
|
2564
|
+
.ry-search-list__item {
|
|
2565
|
+
font-size: var(--ry-text-sm);
|
|
2566
|
+
color: var(--ry-color-text);
|
|
2567
|
+
border-radius: var(--ry-radius-md);
|
|
2568
|
+
transition: background-color var(--ry-duration-fast) var(--ry-ease);
|
|
2569
|
+
}
|
|
2570
|
+
|
|
2571
|
+
.ry-search-list__item[data-highlighted] {
|
|
2572
|
+
background-color: var(--ry-color-bg-muted);
|
|
2573
|
+
}
|
|
2574
|
+
|
|
2575
|
+
.ry-search-list__item[aria-selected="true"] {
|
|
2576
|
+
background-color: var(--ry-color-primary);
|
|
2577
|
+
color: var(--ry-color-text-inverse);
|
|
2578
|
+
}
|
|
2579
|
+
|
|
2580
|
+
.ry-search-list__item[aria-selected="true"][data-highlighted] {
|
|
2581
|
+
background-color: var(--ry-color-primary-hover);
|
|
2582
|
+
}
|
|
2583
|
+
|
|
2584
|
+
.ry-search-list__group-header {
|
|
2585
|
+
font-family: var(--ry-font-sans);
|
|
2586
|
+
font-weight: 600;
|
|
2587
|
+
color: var(--ry-color-text-muted);
|
|
2588
|
+
}
|
|
2589
|
+
|
|
2590
|
+
.ry-search-list__empty {
|
|
2591
|
+
font-size: var(--ry-text-sm);
|
|
2592
|
+
color: var(--ry-color-text-muted);
|
|
2593
|
+
}
|
|
2594
|
+
|
|
2595
|
+
.ry-search-list__item mark {
|
|
2596
|
+
background-color: transparent;
|
|
2597
|
+
color: var(--ry-color-primary);
|
|
2598
|
+
font-weight: 600;
|
|
2599
|
+
}
|
|
2600
|
+
|
|
2601
|
+
.ry-search-list__item[aria-selected="true"] mark {
|
|
2602
|
+
color: inherit;
|
|
2603
|
+
text-decoration: underline;
|
|
2604
|
+
}
|
|
2605
|
+
|
|
2606
|
+
/* ═══════════════════════════════════════════════════════════════
|
|
2607
|
+
UTILITIES
|
|
2608
|
+
═══════════════════════════════════════════════════════════════ */
|
|
2609
|
+
|
|
2610
|
+
.ry-eyebrow {
|
|
2611
|
+
text-transform: uppercase;
|
|
2612
|
+
letter-spacing: 0.1em;
|
|
2613
|
+
font-weight: var(--ry-font-semibold);
|
|
2614
|
+
font-size: var(--ry-text-sm);
|
|
2615
|
+
color: var(--ry-color-text-muted);
|
|
2616
|
+
}
|
|
2617
|
+
|
|
2618
|
+
.ry-avatar {
|
|
2619
|
+
border-radius: var(--ry-radius-full);
|
|
2620
|
+
object-fit: cover;
|
|
2621
|
+
}
|
|
2622
|
+
|
|
2623
|
+
.ry-bg-subtle {
|
|
2624
|
+
background-color: var(--ry-color-bg-subtle);
|
|
2625
|
+
}
|
|
2626
|
+
|
|
2627
|
+
.ry-bg-inverted {
|
|
2628
|
+
background-color: var(--ry-color-text);
|
|
2629
|
+
color: var(--ry-color-bg);
|
|
2630
|
+
}
|
|
2631
|
+
|
|
2632
|
+
.ry-bg-inverted p {
|
|
2633
|
+
opacity: 0.7;
|
|
2634
|
+
}
|
|
2635
|
+
|
|
2490
2636
|
} /* @layer ry-theme */
|
package/dist/css/ry-tokens.css
CHANGED
|
@@ -106,13 +106,13 @@
|
|
|
106
106
|
--ry-color-hover-overlay: color-mix(in oklch, var(--ry-color-text) 4%, transparent);
|
|
107
107
|
|
|
108
108
|
/* Semantic backgrounds & text — derived from base semantic colors */
|
|
109
|
-
--ry-color-info-bg: color-mix(in
|
|
109
|
+
--ry-color-info-bg: color-mix(in srgb, var(--ry-color-info) 12%, var(--ry-color-bg));
|
|
110
110
|
--ry-color-info-text: color-mix(in oklch, var(--ry-color-info) 70%, var(--ry-color-text));
|
|
111
|
-
--ry-color-success-bg: color-mix(in
|
|
111
|
+
--ry-color-success-bg: color-mix(in srgb, var(--ry-color-success) 12%, var(--ry-color-bg));
|
|
112
112
|
--ry-color-success-text: color-mix(in oklch, var(--ry-color-success) 70%, var(--ry-color-text));
|
|
113
|
-
--ry-color-warning-bg: color-mix(in
|
|
113
|
+
--ry-color-warning-bg: color-mix(in srgb, var(--ry-color-warning) 12%, var(--ry-color-bg));
|
|
114
114
|
--ry-color-warning-text: color-mix(in oklch, var(--ry-color-warning) 70%, var(--ry-color-text));
|
|
115
|
-
--ry-color-danger-bg: color-mix(in
|
|
115
|
+
--ry-color-danger-bg: color-mix(in srgb, var(--ry-color-danger) 12%, var(--ry-color-bg));
|
|
116
116
|
--ry-color-danger-text: color-mix(in oklch, var(--ry-color-danger) 70%, var(--ry-color-text));
|
|
117
117
|
|
|
118
118
|
/* ═══════════════════════════════════════════════════════════════
|