ply-css 1.4.1 → 1.6.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/CLAUDE.md +4 -2
- package/PLY.md +96 -12
- package/README.md +6 -6
- package/dist/css/ply-core.css +74 -8
- package/dist/css/ply-core.min.css +1 -1
- package/dist/css/ply-essentials.min.css +1 -1
- package/dist/css/ply-helpers.min.css +1 -1
- package/dist/css/ply.css +74 -8
- package/dist/css/ply.min.css +1 -1
- package/dist/css/styles.css +74 -8
- package/dist/css/styles.min.css +1 -1
- package/llms-full.txt +76 -4
- package/llms.txt +2 -2
- package/package.json +1 -1
- package/ply-classes.json +45 -15
- package/src/scss/components/_buttons.scss +10 -3
- package/src/scss/components/_colors.scss +50 -2
- package/src/scss/components/_grid.scss +1 -0
package/llms-full.txt
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# plycss (ply) — Complete Documentation
|
|
2
2
|
|
|
3
|
-
> ply is a ratio-based, AI-ready CSS framework with built-in dark mode, WCAG 2.1 AA accessibility, and a small footprint (~
|
|
3
|
+
> ply is a ratio-based, AI-ready CSS framework with built-in dark mode, WCAG 2.1 AA accessibility, and a small footprint (~21KB gzipped). 458 utility classes, 120+ CSS custom properties, 13 auto-styled semantic elements. No JavaScript. No build step. Install via npm as `plycss` or use the CDN.
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -41,7 +41,7 @@ Core bundle (no labels, dropdowns, loaders, print):
|
|
|
41
41
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/ply-css@1/dist/css/ply-core.min.css">
|
|
42
42
|
```
|
|
43
43
|
|
|
44
|
-
Bundles: `ply.min.css` (~
|
|
44
|
+
Bundles: `ply.min.css` (~21KB gzip, everything), `ply-core.min.css` (~17KB, grid+buttons+forms+nav+alerts+tables+typography+helpers), `ply-essentials.min.css` (~7KB, grid+helpers), `ply-helpers.min.css` (~5KB, helpers only).
|
|
45
45
|
|
|
46
46
|
---
|
|
47
47
|
|
|
@@ -262,10 +262,40 @@ Override `--ply-*` custom properties to theme the entire app with one CSS block:
|
|
|
262
262
|
<html data-theme="brand">
|
|
263
263
|
```
|
|
264
264
|
|
|
265
|
-
Setting any `data-theme` value prevents auto dark mode from interfering. All
|
|
265
|
+
Setting any `data-theme` value prevents auto dark mode from interfering. All 120+ `--ply-*` variables are listed in the `customProperties` section of `ply-classes.json`.
|
|
266
266
|
|
|
267
267
|
**Important:** If you override colors, verify 4.5:1 contrast for normal text and 3:1 for large text (18px bold / 24px) and UI components (WCAG 1.4.3).
|
|
268
268
|
|
|
269
|
+
### Third-Party Components & Dark Mode
|
|
270
|
+
|
|
271
|
+
When integrating third-party components that don't use `--ply-*` variables, map ply's variables to their styling:
|
|
272
|
+
|
|
273
|
+
```css
|
|
274
|
+
/* Map ply variables to a third-party date picker */
|
|
275
|
+
.third-party-datepicker {
|
|
276
|
+
background: var(--ply-bg-surface);
|
|
277
|
+
color: var(--ply-color-body);
|
|
278
|
+
border-color: var(--ply-border-color);
|
|
279
|
+
}
|
|
280
|
+
.third-party-datepicker .selected {
|
|
281
|
+
background: var(--ply-btn-default-bg);
|
|
282
|
+
color: var(--ply-color-text-inverse);
|
|
283
|
+
}
|
|
284
|
+
.third-party-datepicker .header {
|
|
285
|
+
background: var(--ply-bg-surface-alt);
|
|
286
|
+
color: var(--ply-color-headings);
|
|
287
|
+
}
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
Key variables for mapping:
|
|
291
|
+
- Backgrounds: `--ply-bg-body`, `--ply-bg-surface`, `--ply-bg-surface-alt`, `--ply-bg-muted`
|
|
292
|
+
- Text: `--ply-color-body`, `--ply-color-secondary`, `--ply-color-muted`
|
|
293
|
+
- Borders: `--ply-border-color`, `--ply-border-strong`
|
|
294
|
+
- Interactive: `--ply-btn-default-bg`, `--ply-color-link`, `--ply-color-focus`
|
|
295
|
+
- Inverse text: `--ply-color-text-inverse` (white in light, dark in dark)
|
|
296
|
+
|
|
297
|
+
This ensures third-party components follow ply's theme automatically, including dark mode and custom themes.
|
|
298
|
+
|
|
269
299
|
---
|
|
270
300
|
|
|
271
301
|
## Navigation — Semantic and Responsive
|
|
@@ -454,6 +484,48 @@ Outline buttons in input groups automatically match the input border. Button sca
|
|
|
454
484
|
|
|
455
485
|
---
|
|
456
486
|
|
|
487
|
+
## Tables
|
|
488
|
+
|
|
489
|
+
ply auto-styles `<table>` with borders, padding, and readable spacing. No classes needed for a basic table.
|
|
490
|
+
|
|
491
|
+
| Class | Effect |
|
|
492
|
+
|---|---|
|
|
493
|
+
| `table-bordered` | Borders on all cells |
|
|
494
|
+
| `table-stroked` | Bottom borders only |
|
|
495
|
+
| `table-stripped` | Striped odd rows |
|
|
496
|
+
| `table-hovered` | Row highlight on hover |
|
|
497
|
+
| `table-simple` | Remove borders and left padding |
|
|
498
|
+
| `table-flat` | Remove all borders and padding |
|
|
499
|
+
| `table-container` | Responsive horizontal scroll wrapper |
|
|
500
|
+
| `sortable` | Sort arrows on `<th>` (add to individual headers) |
|
|
501
|
+
| `sort-asc` / `sort-desc` | Active sort direction indicator |
|
|
502
|
+
| `table-filter` | Auto-size selects for filter bars |
|
|
503
|
+
| `table-actions` | Right-aligned toolbar above table |
|
|
504
|
+
|
|
505
|
+
```html
|
|
506
|
+
<div class="table-container">
|
|
507
|
+
<table class="table-stripped table-hovered">
|
|
508
|
+
<thead>
|
|
509
|
+
<tr>
|
|
510
|
+
<th class="sortable sort-asc">Name</th>
|
|
511
|
+
<th class="sortable">Email</th>
|
|
512
|
+
<th>Role</th>
|
|
513
|
+
</tr>
|
|
514
|
+
</thead>
|
|
515
|
+
<tbody>
|
|
516
|
+
<tr><td>Jane Doe</td><td>jane@example.com</td><td>Admin</td></tr>
|
|
517
|
+
<tr><td>John Smith</td><td>john@example.com</td><td>Editor</td></tr>
|
|
518
|
+
</tbody>
|
|
519
|
+
</table>
|
|
520
|
+
</div>
|
|
521
|
+
```
|
|
522
|
+
|
|
523
|
+
Tables respond to dark mode automatically — borders, stripe colors, and hover colors adapt via `--ply-color-table-border`, `--ply-color-table-stripped`, and `--ply-color-table-hovered`. Combine classes freely: `table-stripped table-hovered table-bordered` gives striped rows with hover highlights and full borders.
|
|
524
|
+
|
|
525
|
+
Wrap any table in `<div class="table-container">` to get horizontal scrolling on small screens instead of layout overflow.
|
|
526
|
+
|
|
527
|
+
---
|
|
528
|
+
|
|
457
529
|
## Alerts and Notifications
|
|
458
530
|
|
|
459
531
|
```html
|
|
@@ -799,7 +871,7 @@ ply is built for AI code generation:
|
|
|
799
871
|
|
|
800
872
|
1. **Single-dash class names** read like English — `units-row`, `equal-height`, `padding`, `border-radius`
|
|
801
873
|
2. **No abbreviation guessing** — `padding-lg` not `pl-6`, `margin-top` not `mt-4`
|
|
802
|
-
3. **
|
|
874
|
+
3. **458 documented classes** in `ply-classes.json` — machine-readable reference
|
|
803
875
|
4. **Semantic HTML first** — auto-styled elements reduce class clutter
|
|
804
876
|
5. **AI-friendly aliases** — `btn-lg`/`btn-big`, `btn-sm`/`btn-small`, `alert`/`tools-alert` all work
|
|
805
877
|
|
package/llms.txt
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# plycss (ply)
|
|
2
2
|
|
|
3
|
-
> ply is a ratio-based, AI-ready CSS framework with dark mode, WCAG 2.1 AA accessibility, and a small footprint (~
|
|
3
|
+
> ply is a ratio-based, AI-ready CSS framework with dark mode, WCAG 2.1 AA accessibility, and a small footprint (~21KB gzipped). 458 utility classes, 120+ CSS custom properties, 13 auto-styled semantic elements. No JavaScript. No build step.
|
|
4
4
|
|
|
5
5
|
ply is standalone — do not use Tailwind, Bootstrap, or other CSS frameworks alongside it. Class names are single-dash and human-readable: `btn-primary`, `unit-50`, `padding-lg`, `text-secondary`. Install via npm (`plycss`) or CDN.
|
|
6
6
|
|
|
7
7
|
## Documentation
|
|
8
8
|
|
|
9
9
|
- [Full AI Reference (PLY.md)](https://raw.githubusercontent.com/thatgibbyguy/ply/master/PLY.md): Complete class reference, usage rules, accessibility patterns, keyboard navigation, custom widget ARIA patterns, and code snippets
|
|
10
|
-
- [Machine-Readable Class Map (ply-classes.json)](https://raw.githubusercontent.com/thatgibbyguy/ply/master/ply-classes.json): All
|
|
10
|
+
- [Machine-Readable Class Map (ply-classes.json)](https://raw.githubusercontent.com/thatgibbyguy/ply/master/ply-classes.json): All 458 classes, 120+ CSS custom properties, and 13 semantic elements with descriptions, categories, and examples
|
|
11
11
|
- [VPAT 2.5 Accessibility Conformance](https://raw.githubusercontent.com/thatgibbyguy/ply/master/docs/VPAT.md): Full WCAG 2.1 Level A and AA conformance report
|
|
12
12
|
|
|
13
13
|
## Snippets
|
package/package.json
CHANGED
package/ply-classes.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.
|
|
2
|
+
"version": "1.6.0",
|
|
3
3
|
"framework": "ply",
|
|
4
4
|
"totalClasses": 457,
|
|
5
5
|
"uniqueClasses": 457,
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
},
|
|
60
60
|
"themeTemplate": {
|
|
61
61
|
"description": "Copy-paste starting point for custom themes. Replace placeholder values with your design colors. Every ply component respects these variables.",
|
|
62
|
-
"css": "[data-theme=\"my-theme\"] {\n /* Background */\n --ply-bg-body: #___;\n --ply-bg-surface: #___;\n --ply-bg-surface-alt: #___;\n --ply-bg-muted: #___;\n\n /* Text */\n --ply-color-body: #___;\n --ply-color-headings: #___;\n --ply-color-secondary: #___;\n --ply-color-muted: #___;\n --ply-color-placeholder: #___;\n --ply-color-text-inverse: #___;\n\n /* Borders */\n --ply-border-color: #___;\n --ply-border-strong: #___;\n\n /* Interactive */\n --ply-color-accent: #___;\n --ply-color-focus: #___;\n --ply-color-link-hover: #___;\n\n /* Buttons */\n --ply-btn-default-bg: #___;\n --ply-btn-default-color: #___;\n --ply-btn-default-bg-hover: #___;\n --ply-btn-default-bg-active: #___;\n --ply-btn-secondary-bg: #___;\n --ply-btn-secondary-color: #___;\n --ply-btn-secondary-bg-hover: #___;\n --ply-btn-secondary-bg-active: #___;\n --ply-btn-border-radius: 2rem;\n\n /* Forms */\n --ply-color-input-bg: #___;\n --ply-color-input-border: #___;\n\n /* Navigation */\n --ply-nav-bg: #___;\n --ply-nav-color: #___;\n --ply-nav-border: #___;\n --ply-nav-hover: #___;\n\n /* Code */\n --ply-color-code-bg: #___;\n --ply-color-code-border: #___;\n\n /* Tables */\n --ply-color-table-border: #___;\n --ply-color-table-stripped: #___;\n\n /* Elevation */\n --ply-layer-0: #___;\n --ply-layer-1: #___;\n --ply-layer-2: #___;\n --ply-layer-3: #___;\n --ply-shadow-1: rgba(0, 0, 0, 0.08);\n --ply-shadow-2: rgba(0, 0, 0, 0.1);\n --ply-shadow-3: rgba(0, 0, 0, 0.12);\n\n /* Typography (optional) */\n --ply-font-body: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n --ply-font-heading: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n --ply-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n}"
|
|
62
|
+
"css": "[data-theme=\"my-theme\"] {\n /* Background */\n --ply-bg-body: #___;\n --ply-bg-surface: #___;\n --ply-bg-surface-alt: #___;\n --ply-bg-muted: #___;\n\n /* Text */\n --ply-color-body: #___;\n --ply-color-headings: #___;\n --ply-color-secondary: #___;\n --ply-color-muted: #___;\n --ply-color-placeholder: #___;\n --ply-color-text-inverse: #___;\n\n /* Borders */\n --ply-border-color: #___;\n --ply-border-strong: #___;\n\n /* Interactive */\n --ply-color-accent: #___;\n --ply-color-focus: #___;\n --ply-color-link-hover: #___;\n\n /* Buttons */\n --ply-btn-default-bg: #___;\n --ply-btn-default-color: #___;\n --ply-btn-default-bg-hover: #___;\n --ply-btn-default-bg-active: #___;\n --ply-btn-secondary-bg: #___;\n --ply-btn-secondary-color: #___;\n --ply-btn-secondary-bg-hover: #___;\n --ply-btn-secondary-bg-active: #___;\n --ply-btn-border-radius: 2rem;\n --ply-btn-font-size: 1em;\n --ply-btn-gap: 0.5em;\n\n /* Forms */\n --ply-color-input-bg: #___;\n --ply-color-input-border: #___;\n\n /* Navigation */\n --ply-nav-bg: #___;\n --ply-nav-color: #___;\n --ply-nav-border: #___;\n --ply-nav-hover: #___;\n\n /* Code */\n --ply-color-code-bg: #___;\n --ply-color-code-border: #___;\n\n /* Tables */\n --ply-color-table-border: #___;\n --ply-color-table-stripped: #___;\n\n /* Elevation */\n --ply-layer-0: #___;\n --ply-layer-1: #___;\n --ply-layer-2: #___;\n --ply-layer-3: #___;\n --ply-shadow-1: rgba(0, 0, 0, 0.08);\n --ply-shadow-2: rgba(0, 0, 0, 0.1);\n --ply-shadow-3: rgba(0, 0, 0, 0.12);\n\n /* Typography (optional) */\n --ply-font-body: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n --ply-font-heading: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n --ply-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n}"
|
|
63
63
|
},
|
|
64
64
|
"classes": {
|
|
65
65
|
"units-container": {
|
|
@@ -494,7 +494,7 @@
|
|
|
494
494
|
},
|
|
495
495
|
"split": {
|
|
496
496
|
"category": "grid",
|
|
497
|
-
"description": "Remove gap between child units. Applied to units-row.",
|
|
497
|
+
"description": "Remove gap between child units. Applied to units-row. Kept for backwards compatibility — prefer joined.",
|
|
498
498
|
"example": "<div class=\"units-row split\">...</div>"
|
|
499
499
|
},
|
|
500
500
|
"centered-content": {
|
|
@@ -1610,6 +1610,11 @@
|
|
|
1610
1610
|
"description": "Round the outer corners of a btn-group.",
|
|
1611
1611
|
"parent": "btn-group"
|
|
1612
1612
|
},
|
|
1613
|
+
"joined": {
|
|
1614
|
+
"category": "buttons",
|
|
1615
|
+
"description": "Remove gap so children connect as a single visual unit. On btn-group: buttons touch with a 1px divider, connected border-radius on outer edges. On units-row: removes column gutters (alias for split, which is kept for backwards compatibility).",
|
|
1616
|
+
"example": "<div class=\"btn-group joined\"><button class=\"btn\">Left</button><button class=\"btn\">Middle</button><button class=\"btn\">Right</button></div>\n<div class=\"units-row joined\"><div class=\"unit-50\">...</div><div class=\"unit-50\">...</div></div>"
|
|
1617
|
+
},
|
|
1613
1618
|
"unit-role-right": {
|
|
1614
1619
|
"category": "grid",
|
|
1615
1620
|
"description": "Float a grid unit to the right."
|
|
@@ -2487,7 +2492,9 @@
|
|
|
2487
2492
|
"buttons": {
|
|
2488
2493
|
"--ply-btn-default-bg": "Primary button background. Controls btn-primary color and link colors. Light: #0353e9, Dark: #78a9ff. Override in custom themes to change primary + links together.",
|
|
2489
2494
|
"--ply-btn-secondary-bg": "Secondary button background. Controls btn, btn-secondary color. Light: #393939, Dark: #4c4c4c.",
|
|
2490
|
-
"--ply-btn-default-color": "Default button text color. Light: inherits --ply-color-text-inverse (#fff), Dark: #f4f4f4"
|
|
2495
|
+
"--ply-btn-default-color": "Default button text color. Light: inherits --ply-color-text-inverse (#fff), Dark: #f4f4f4",
|
|
2496
|
+
"--ply-btn-font-size": "Button font size. Default: 1em (inherits from context). Override to set a fixed size for all buttons in a theme.",
|
|
2497
|
+
"--ply-btn-gap": "Gap between icon and text inside a button. Default: 0.5em. Applies to all btn variants via inline-flex layout."
|
|
2491
2498
|
},
|
|
2492
2499
|
"navigation": {
|
|
2493
2500
|
"--ply-nav-bg": "Navbar background. Light: #ffffff, Dark: #262626",
|
|
@@ -2520,16 +2527,16 @@
|
|
|
2520
2527
|
"--ply-bg-yellow-active": "Yellow active. #b28600"
|
|
2521
2528
|
},
|
|
2522
2529
|
"palette": {
|
|
2523
|
-
"--ply-blue-1 / -2 / -3": "Blue palette: base,
|
|
2524
|
-
"--ply-red-1 / -2 / -3": "Red palette: base,
|
|
2525
|
-
"--ply-green-1 / -2 / -3": "Green palette: base,
|
|
2526
|
-
"--ply-yellow-1 / -2 / -3": "Yellow palette: base,
|
|
2527
|
-
"--ply-indigo-1 / -2 / -3": "Indigo palette: base,
|
|
2528
|
-
"--ply-purple-1 / -2 / -3": "Purple palette: base,
|
|
2529
|
-
"--ply-pink-1 / -2 / -3": "Pink palette: base,
|
|
2530
|
-
"--ply-orange-1 / -2 / -3": "Orange palette: base,
|
|
2531
|
-
"--ply-teal-1 / -2 / -3": "Teal palette: base,
|
|
2532
|
-
"--ply-cyan-1 / -2 / -3": "Cyan palette: base,
|
|
2530
|
+
"--ply-blue-1 / -2 / -3": "Blue palette: base, darker, darkest",
|
|
2531
|
+
"--ply-red-1 / -2 / -3": "Red palette: base, darker, darkest",
|
|
2532
|
+
"--ply-green-1 / -2 / -3": "Green palette: base, darker, darkest",
|
|
2533
|
+
"--ply-yellow-1 / -2 / -3": "Yellow palette: base, darker, darkest",
|
|
2534
|
+
"--ply-indigo-1 / -2 / -3": "Indigo palette: base, darker, darkest",
|
|
2535
|
+
"--ply-purple-1 / -2 / -3": "Purple palette: base, darker, darkest",
|
|
2536
|
+
"--ply-pink-1 / -2 / -3": "Pink palette: base, darker, darkest",
|
|
2537
|
+
"--ply-orange-1 / -2 / -3": "Orange palette: base, darker, darkest",
|
|
2538
|
+
"--ply-teal-1 / -2 / -3": "Teal palette: base, darker, darkest",
|
|
2539
|
+
"--ply-cyan-1 / -2 / -3": "Cyan palette: base, darker, darkest"
|
|
2533
2540
|
},
|
|
2534
2541
|
"spacing": {
|
|
2535
2542
|
"--ply-space-xs": "Extra-small spacing unit. Default: 0.25rem",
|
|
@@ -2538,7 +2545,30 @@
|
|
|
2538
2545
|
"--ply-space-lg": "Large spacing unit. Default: 1.5rem",
|
|
2539
2546
|
"--ply-space-xl": "Extra-large spacing unit. Default: 2rem",
|
|
2540
2547
|
"--ply-space-xxl": "Extra extra large spacing unit. Default: 3rem"
|
|
2541
|
-
}
|
|
2548
|
+
},
|
|
2549
|
+
"colorSurfaces": {
|
|
2550
|
+
"--ply-blue-surface": "Theme-aware blue pastel background. Light: blue pastel, Dark: dark muted blue. For cards, badges, alerts.",
|
|
2551
|
+
"--ply-blue-border": "Theme-aware blue border. Light: light blue tint, Dark: medium-dark blue. For colored card borders.",
|
|
2552
|
+
"--ply-red-surface": "Theme-aware red pastel background. Light: red pastel, Dark: dark muted red. For cards, badges, alerts.",
|
|
2553
|
+
"--ply-red-border": "Theme-aware red border. Light: light red tint, Dark: medium-dark red. For colored card borders.",
|
|
2554
|
+
"--ply-green-surface": "Theme-aware green pastel background. Light: green pastel, Dark: dark muted green. For cards, badges, alerts.",
|
|
2555
|
+
"--ply-green-border": "Theme-aware green border. Light: light green tint, Dark: medium-dark green. For colored card borders.",
|
|
2556
|
+
"--ply-yellow-surface": "Theme-aware yellow pastel background. Light: yellow pastel, Dark: dark muted yellow. For cards, badges, alerts.",
|
|
2557
|
+
"--ply-yellow-border": "Theme-aware yellow border. Light: light yellow tint, Dark: medium-dark yellow. For colored card borders.",
|
|
2558
|
+
"--ply-indigo-surface": "Theme-aware indigo pastel background. Light: indigo pastel, Dark: dark muted indigo. For cards, badges, alerts.",
|
|
2559
|
+
"--ply-indigo-border": "Theme-aware indigo border. Light: light indigo tint, Dark: medium-dark indigo. For colored card borders.",
|
|
2560
|
+
"--ply-purple-surface": "Theme-aware purple pastel background. Light: purple pastel, Dark: dark muted purple. For cards, badges, alerts.",
|
|
2561
|
+
"--ply-purple-border": "Theme-aware purple border. Light: light purple tint, Dark: medium-dark purple. For colored card borders.",
|
|
2562
|
+
"--ply-pink-surface": "Theme-aware pink pastel background. Light: pink pastel, Dark: dark muted pink. For cards, badges, alerts.",
|
|
2563
|
+
"--ply-pink-border": "Theme-aware pink border. Light: light pink tint, Dark: medium-dark pink. For colored card borders.",
|
|
2564
|
+
"--ply-orange-surface": "Theme-aware orange pastel background. Light: orange pastel, Dark: dark muted orange. For cards, badges, alerts.",
|
|
2565
|
+
"--ply-orange-border": "Theme-aware orange border. Light: light orange tint, Dark: medium-dark orange. For colored card borders.",
|
|
2566
|
+
"--ply-teal-surface": "Theme-aware teal pastel background. Light: teal pastel, Dark: dark muted teal. For cards, badges, alerts.",
|
|
2567
|
+
"--ply-teal-border": "Theme-aware teal border. Light: light teal tint, Dark: medium-dark teal. For colored card borders.",
|
|
2568
|
+
"--ply-cyan-surface": "Theme-aware cyan pastel background. Light: cyan pastel, Dark: dark muted cyan. For cards, badges, alerts.",
|
|
2569
|
+
"--ply-cyan-border": "Theme-aware cyan border. Light: light cyan tint, Dark: medium-dark cyan. For colored card borders."
|
|
2570
|
+
},
|
|
2571
|
+
"totalCustomProperties": 92
|
|
2542
2572
|
},
|
|
2543
2573
|
"semanticElements": {
|
|
2544
2574
|
"dialog": {
|
|
@@ -12,16 +12,18 @@ input[type="reset"].btn,
|
|
|
12
12
|
button.btn {
|
|
13
13
|
transition: all 150ms ease-in-out, transform 50ms ease, background 150ms ease-in-out;
|
|
14
14
|
|
|
15
|
-
display: inline-
|
|
15
|
+
display: inline-flex;
|
|
16
16
|
vertical-align: top;
|
|
17
|
+
align-items: center;
|
|
18
|
+
justify-content: center;
|
|
19
|
+
gap: var(--ply-btn-gap, 0.5em);
|
|
17
20
|
|
|
18
21
|
font-family: var(--ply-font-body, #{variables.$font-family-controls});
|
|
19
|
-
font-size: 1em;
|
|
22
|
+
font-size: var(--ply-btn-font-size, 1em);
|
|
20
23
|
font-weight: 400;
|
|
21
24
|
|
|
22
25
|
line-height: variables.$base-line;
|
|
23
26
|
|
|
24
|
-
text-align: center;
|
|
25
27
|
text-decoration: none;
|
|
26
28
|
color: var(--ply-btn-secondary-color, var(--ply-color-text-inverse, #fff));
|
|
27
29
|
|
|
@@ -438,6 +440,11 @@ button.btn-white {
|
|
|
438
440
|
}
|
|
439
441
|
}
|
|
440
442
|
|
|
443
|
+
// Joined — no gap between buttons, connected as a single unit
|
|
444
|
+
&.joined {
|
|
445
|
+
gap: 0;
|
|
446
|
+
}
|
|
447
|
+
|
|
441
448
|
&.rounded {
|
|
442
449
|
.btn,
|
|
443
450
|
.input-search {
|
|
@@ -113,6 +113,30 @@ $btn-secondary-dark-active: #bebebe;
|
|
|
113
113
|
--ply-bg-yellow-hover: #d2a106;
|
|
114
114
|
--ply-bg-yellow-active: #b28600;
|
|
115
115
|
|
|
116
|
+
// Color surfaces — pastel bg for cards, badges, alerts (theme-aware)
|
|
117
|
+
--ply-blue-surface: #d3e3fb;
|
|
118
|
+
--ply-red-surface: #f8d5d8;
|
|
119
|
+
--ply-green-surface: #d5ecd9;
|
|
120
|
+
--ply-yellow-surface: #fff4cc;
|
|
121
|
+
--ply-indigo-surface: #e0e7ff;
|
|
122
|
+
--ply-purple-surface: #ede9fe;
|
|
123
|
+
--ply-pink-surface: #fce7f3;
|
|
124
|
+
--ply-orange-surface: #ffedd5;
|
|
125
|
+
--ply-teal-surface: #ccfbf1;
|
|
126
|
+
--ply-cyan-surface: #cffafe;
|
|
127
|
+
|
|
128
|
+
// Color borders — light tint borders for colored cards (theme-aware)
|
|
129
|
+
--ply-blue-border: #92baf6;
|
|
130
|
+
--ply-red-border: #ef969d;
|
|
131
|
+
--ply-green-border: #96cfa1;
|
|
132
|
+
--ply-yellow-border: #ffe480;
|
|
133
|
+
--ply-indigo-border: #a5b4fc;
|
|
134
|
+
--ply-purple-border: #c4b5fd;
|
|
135
|
+
--ply-pink-border: #f9a8d4;
|
|
136
|
+
--ply-orange-border: #fdba74;
|
|
137
|
+
--ply-teal-border: #5eead4;
|
|
138
|
+
--ply-cyan-border: #67e8f9;
|
|
139
|
+
|
|
116
140
|
// Brand palette (WCAG AA — 4.5:1 vs text-inverse per mode)
|
|
117
141
|
--ply-blue-1: #0f62fe;
|
|
118
142
|
--ply-blue-2: #0043ce;
|
|
@@ -179,9 +203,9 @@ $btn-secondary-dark-active: #bebebe;
|
|
|
179
203
|
--ply-border-strong: #6f6f6f;
|
|
180
204
|
|
|
181
205
|
// Interactive
|
|
182
|
-
--ply-color-link:
|
|
206
|
+
--ply-color-link: #{$btn-primary-dark};
|
|
183
207
|
--ply-color-link-hover: #{$btn-primary-dark-hover};
|
|
184
|
-
--ply-color-link-hover: color-mix(in oklch,
|
|
208
|
+
--ply-color-link-hover: color-mix(in oklch, #{$btn-primary-dark}, white 15%);
|
|
185
209
|
--ply-color-focus: #0f62fe;
|
|
186
210
|
|
|
187
211
|
// Fields
|
|
@@ -235,6 +259,30 @@ $btn-secondary-dark-active: #bebebe;
|
|
|
235
259
|
// Glass
|
|
236
260
|
--ply-bg-glass: rgba(38, 38, 38, 0.25);
|
|
237
261
|
|
|
262
|
+
// Color surfaces — dark muted bg for cards, badges, alerts
|
|
263
|
+
--ply-blue-surface: #1a2744;
|
|
264
|
+
--ply-red-surface: #3b1c1e;
|
|
265
|
+
--ply-green-surface: #1a2e1e;
|
|
266
|
+
--ply-yellow-surface: #332b10;
|
|
267
|
+
--ply-indigo-surface: #1e1b4b;
|
|
268
|
+
--ply-purple-surface: #2e1065;
|
|
269
|
+
--ply-pink-surface: #3b0a2a;
|
|
270
|
+
--ply-orange-surface: #331a08;
|
|
271
|
+
--ply-teal-surface: #132f2e;
|
|
272
|
+
--ply-cyan-surface: #133040;
|
|
273
|
+
|
|
274
|
+
// Color borders — medium-dark borders for colored cards
|
|
275
|
+
--ply-blue-border: #1a52a5;
|
|
276
|
+
--ply-red-border: #b2232f;
|
|
277
|
+
--ply-green-border: #237f35;
|
|
278
|
+
--ply-yellow-border: #cca000;
|
|
279
|
+
--ply-indigo-border: #3730a3;
|
|
280
|
+
--ply-purple-border: #5b21b6;
|
|
281
|
+
--ply-pink-border: #9d174d;
|
|
282
|
+
--ply-orange-border: #c2410c;
|
|
283
|
+
--ply-teal-border: #0f766e;
|
|
284
|
+
--ply-cyan-border: #0e7490;
|
|
285
|
+
|
|
238
286
|
// Brand backgrounds (dark mode — same as light, saturated for contrast with white text)
|
|
239
287
|
--ply-bg-blue: #0f62fe;
|
|
240
288
|
--ply-bg-blue-hover: #0043ce;
|