@f-ewald/components 1.7.0 → 1.9.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,44 @@
1
+ # `<card-grid>`
2
+
3
+ A responsive auto-filling grid shell for `link-card` (or any card-shaped
4
+ content) — each slotted child becomes a grid item, wrapping to a new row
5
+ once the container is too narrow for another `15rem` column.
6
+
7
+ ## Install
8
+
9
+ ```js
10
+ import "@f-ewald/components/card-grid.js";
11
+ ```
12
+
13
+ ## Usage
14
+
15
+ ```html
16
+ <card-grid>
17
+ <link-card
18
+ heading="Grafana"
19
+ description="Metrics dashboards."
20
+ href="https://grafana.example.com"
21
+ logo="/logos/grafana.svg"
22
+ status="up"
23
+ ></link-card>
24
+ <link-card heading="Plex" description="Media server." href="https://plex.example.com" status="up"></link-card>
25
+ </card-grid>
26
+ ```
27
+
28
+ ## Attributes / properties
29
+
30
+ _None._
31
+
32
+ ## Events
33
+
34
+ _None._
35
+
36
+ ## Slots
37
+
38
+ | Slot | Description |
39
+ | --- | --- |
40
+ | `(default)` | `link-card` elements (or other card-shaped content). |
41
+
42
+ ## CSS custom properties
43
+
44
+ _None._
@@ -0,0 +1,65 @@
1
+ # `<link-card>`
2
+
3
+ A single linked-resource tile — logo (or an initial-letter fallback),
4
+ heading, optional description, and an optional reachability status dot.
5
+ Renders as a real `<a>` (opening in a new tab) when `href` is set, or a
6
+ non-interactive `<div>` otherwise. Meant to be laid out inside
7
+ `card-grid`, mirroring how `gallery-item` pairs with `photo-gallery`.
8
+
9
+ ## Install
10
+
11
+ ```js
12
+ import "@f-ewald/components/link-card.js";
13
+ ```
14
+
15
+ ## Usage
16
+
17
+ ```html
18
+ <link-card
19
+ heading="Grafana"
20
+ description="Metrics dashboards."
21
+ href="https://grafana.example.com"
22
+ logo="/logos/grafana.svg"
23
+ status="up"
24
+ ></link-card>
25
+ <link-card heading="Backup Server" description="Nightly restic snapshots." status="checking"></link-card>
26
+ ```
27
+
28
+ ## Attributes / properties
29
+
30
+ | Property | Attribute | Type | Default | Description |
31
+ | --- | --- | --- | --- | --- |
32
+ | `heading` | `heading` | `string` | `""` | Card title. |
33
+ | `description` | `description` | `string` | `""` | Optional supporting text shown below the heading. |
34
+ | `href` | `href` | `string` | `""` | Destination URL. When set, the card renders as a link (opened in a new tab); when unset, a non-interactive tile. |
35
+ | `logo` | `logo` | `string` | `""` | Logo image URL. Falls back to the first letter of `heading` if unset or it fails to load. |
36
+ | `status` | `status` | `LinkCardStatus` | `""` | Reachability state for the corner status dot. `""` (default) renders no dot. |
37
+
38
+ ## Events
39
+
40
+ _None._
41
+
42
+ ## Slots
43
+
44
+ _None._
45
+
46
+ ## CSS custom properties
47
+
48
+ | Custom property |
49
+ | --- |
50
+ | `--ui-border` |
51
+ | `--ui-danger` |
52
+ | `--ui-focus-ring` |
53
+ | `--ui-font` |
54
+ | `--ui-font-size` |
55
+ | `--ui-font-size-lg` |
56
+ | `--ui-font-weight-semibold` |
57
+ | `--ui-line-height-normal` |
58
+ | `--ui-line-height-tight` |
59
+ | `--ui-radius` |
60
+ | `--ui-shadow` |
61
+ | `--ui-success` |
62
+ | `--ui-surface` |
63
+ | `--ui-surface-muted` |
64
+ | `--ui-text` |
65
+ | `--ui-text-muted` |
@@ -27,6 +27,7 @@ import "@f-ewald/components/stat-meter.js";
27
27
  | `label` | `label` | `string` | `""` | Short label shown before the bar, e.g. "CPU" or "MEM". |
28
28
  | `percent` | `percent` | `number | null` | `null` | Percentage 0-100. `null` renders an empty bar and a "—" value instead of "0%". |
29
29
  | `color` | `color` | `string` | `""` | Fill color override; falls back to the `--ui-success` token. |
30
+ | `trackColor` | `track-color` | `string` | `""` | Track (inactive portion) background override; falls back to the `--ui-surface-muted` token. |
30
31
 
31
32
  ## Events
32
33
 
@@ -15,6 +15,10 @@ The dot's `color` types the entry using the shared status-pill palette —
15
15
  `primary` by default, plus `neutral`, `info`, `success`, `warning`, and
16
16
  `danger`.
17
17
 
18
+ Set `compact` for dense, one-line system-status entries (running spinners,
19
+ state changes): it tightens the vertical spacing and renders the content
20
+ smaller and muted.
21
+
18
22
  ## Install
19
23
 
20
24
  ```js
@@ -36,6 +40,7 @@ import "@f-ewald/components/timeline-entry.js";
36
40
  | --- | --- | --- | --- | --- |
37
41
  | `datetime` | `datetime` | `string | null` | `null` | ISO 8601 or SQLite datetime string, rendered as a relative time. |
38
42
  | `color` | `color` | `StatusPillColor` | `"primary"` | Visual type of the entry's dot, from the shared status-pill palette: `primary` (default), `neutral`, `info`, `success`, `warning`, or `danger`. |
43
+ | `compact` | `compact` | `boolean` | `false` | Dense, one-line presentation for system-status entries: tighter vertical spacing and smaller, muted content. |
39
44
 
40
45
  ## Events
41
46
 
package/llms.txt CHANGED
@@ -310,6 +310,32 @@ Example:
310
310
  </calendar-year>
311
311
  ```
312
312
 
313
+ ## <card-grid>
314
+
315
+ A responsive auto-filling grid shell for `link-card` (or any card-shaped
316
+ content) — each slotted child becomes a grid item, wrapping to a new row
317
+ once the container is too narrow for another `15rem` column.
318
+
319
+ Import: `import "@f-ewald/components/card-grid.js";`
320
+
321
+ Properties: none
322
+ Events: none
323
+ CSS custom properties: none
324
+
325
+ Example:
326
+ ```html
327
+ <card-grid>
328
+ <link-card
329
+ heading="Grafana"
330
+ description="Metrics dashboards."
331
+ href="https://grafana.example.com"
332
+ logo="/logos/grafana.svg"
333
+ status="up"
334
+ ></link-card>
335
+ <link-card heading="Plex" description="Media server." href="https://plex.example.com" status="up"></link-card>
336
+ </card-grid>
337
+ ```
338
+
313
339
  ## <chat-message>
314
340
 
315
341
  One conversation entry in a chat-style activity feed. Tool calls and
@@ -809,6 +835,32 @@ Example:
809
835
  <kbd-hint keys="Mod+Shift+Enter" platform="mac"></kbd-hint>
810
836
  ```
811
837
 
838
+ ## <link-card>
839
+
840
+ A single linked-resource tile — logo (or an initial-letter fallback),
841
+ heading, optional description, and an optional reachability status dot.
842
+ Renders as a real `<a>` (opening in a new tab) when `href` is set, or a
843
+ non-interactive `<div>` otherwise. Meant to be laid out inside
844
+ `card-grid`, mirroring how `gallery-item` pairs with `photo-gallery`.
845
+
846
+ Import: `import "@f-ewald/components/link-card.js";`
847
+
848
+ Properties: `heading` (attribute `heading`) : string, default ""; `description` (attribute `description`) : string, default ""; `href` (attribute `href`) : string, default ""; `logo` (attribute `logo`) : string, default ""; `status` (attribute `status`) : LinkCardStatus, default ""
849
+ Events: none
850
+ CSS custom properties: `--ui-border`, `--ui-danger`, `--ui-focus-ring`, `--ui-font`, `--ui-font-size`, `--ui-font-size-lg`, `--ui-font-weight-semibold`, `--ui-line-height-normal`, `--ui-line-height-tight`, `--ui-radius`, `--ui-shadow`, `--ui-success`, `--ui-surface`, `--ui-surface-muted`, `--ui-text`, `--ui-text-muted`
851
+
852
+ Example:
853
+ ```html
854
+ <link-card
855
+ heading="Grafana"
856
+ description="Metrics dashboards."
857
+ href="https://grafana.example.com"
858
+ logo="/logos/grafana.svg"
859
+ status="up"
860
+ ></link-card>
861
+ <link-card heading="Backup Server" description="Nightly restic snapshots." status="checking"></link-card>
862
+ ```
863
+
812
864
  ## <live-timer>
813
865
 
814
866
  Per-second ticking count-up timer, e.g. a live "running for 12s" or
@@ -1235,7 +1287,7 @@ bar then renders empty and the value shows an em dash instead of "0%".
1235
1287
 
1236
1288
  Import: `import "@f-ewald/components/stat-meter.js";`
1237
1289
 
1238
- Properties: `label` (attribute `label`) : string, default ""; `percent` (attribute `percent`) : number | null, default null; `color` (attribute `color`) : string, default ""
1290
+ Properties: `label` (attribute `label`) : string, default ""; `percent` (attribute `percent`) : number | null, default null; `color` (attribute `color`) : string, default ""; `trackColor` (attribute `track-color`) : string, default ""
1239
1291
  Events: none
1240
1292
  CSS custom properties: `--ui-font`, `--ui-font-size-sm`, `--ui-font-weight-medium`, `--ui-font-weight-semibold`, `--ui-success`, `--ui-surface-muted`, `--ui-text`, `--ui-text-muted`, `--ui-tracking-wide`
1241
1293
 
@@ -1369,9 +1421,13 @@ The dot's `color` types the entry using the shared status-pill palette —
1369
1421
  `primary` by default, plus `neutral`, `info`, `success`, `warning`, and
1370
1422
  `danger`.
1371
1423
 
1424
+ Set `compact` for dense, one-line system-status entries (running spinners,
1425
+ state changes): it tightens the vertical spacing and renders the content
1426
+ smaller and muted.
1427
+
1372
1428
  Import: `import "@f-ewald/components/timeline-entry.js";`
1373
1429
 
1374
- Properties: `datetime` (attribute `datetime`) : string | null, default null; `color` (attribute `color`) : StatusPillColor, default "primary"
1430
+ Properties: `datetime` (attribute `datetime`) : string | null, default null; `color` (attribute `color`) : StatusPillColor, default "primary"; `compact` (attribute `compact`) : boolean, default false
1375
1431
  Events: none
1376
1432
  CSS custom properties: `--ui-border`, `--ui-danger`, `--ui-font`, `--ui-font-size`, `--ui-font-size-sm`, `--ui-font-weight-semibold`, `--ui-info`, `--ui-line-height-normal`, `--ui-line-height-tight`, `--ui-primary`, `--ui-success`, `--ui-text`, `--ui-text-muted`, `--ui-warning`
1377
1433
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@f-ewald/components",
3
3
  "private": false,
4
- "version": "1.7.0",
4
+ "version": "1.9.0",
5
5
  "description": "A collection of universally usable web components for various tasks.",
6
6
  "type": "module",
7
7
  "main": "dist/index.js",