@514sid/signagekit 0.0.0-stage → 0.0.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/CHANGELOG.md +27 -0
- package/LICENSE +44 -0
- package/README.md +102 -2
- package/bin/signagekit.js +4 -0
- package/dist/chunks/chart-DT-Y4YWA.js +2 -0
- package/dist/chunks/empty--6iNLsra.js +2 -0
- package/dist/chunks/icon-paths-Dl0Rqja7.js +2 -0
- package/dist/chunks/lists-DYyvtVni.js +2 -0
- package/dist/chunks/measures-_ZIjSN7n.js +2 -0
- package/dist/chunks/media-DI-zWZSx.js +3 -0
- package/dist/chunks/qr-size-Dq23do6_.js +2 -0
- package/dist/chunks/ready-DI3QO8E5.js +2 -0
- package/dist/chunks/share-CtG_q4RM.js +2 -0
- package/dist/chunks/stat-DIAOyDND.js +2 -0
- package/dist/chunks/time-sq9LV8dr.js +2 -0
- package/dist/cli.js +10 -0
- package/dist/index.js +3 -0
- package/dist/style.css +2 -0
- package/dist/types/alert.d.ts +20 -0
- package/dist/types/binds.d.ts +6 -0
- package/dist/types/chart.d.ts +16 -0
- package/dist/types/check.d.ts +31 -0
- package/dist/types/checks.d.ts +30 -0
- package/dist/types/colors.d.ts +18 -0
- package/dist/types/components.d.ts +13 -0
- package/dist/types/cycle-fit.d.ts +6 -0
- package/dist/types/data.d.ts +19 -0
- package/dist/types/empty.d.ts +6 -0
- package/dist/types/fit.d.ts +3 -0
- package/dist/types/flow.d.ts +7 -0
- package/dist/types/icon-paths.d.ts +2 -0
- package/dist/types/icon.d.ts +7 -0
- package/dist/types/icons.d.ts +3 -0
- package/dist/types/index.d.ts +20 -0
- package/dist/types/lists.d.ts +28 -0
- package/dist/types/measure.d.ts +4 -0
- package/dist/types/measures.d.ts +22 -0
- package/dist/types/media.d.ts +15 -0
- package/dist/types/mount.d.ts +45 -0
- package/dist/types/parse.d.ts +11 -0
- package/dist/types/qr-size.d.ts +2 -0
- package/dist/types/ready.d.ts +3 -0
- package/dist/types/share.d.ts +33 -0
- package/dist/types/sizes.d.ts +15 -0
- package/dist/types/specs.d.ts +7 -0
- package/dist/types/stat.d.ts +38 -0
- package/dist/types/table-fit.d.ts +8 -0
- package/dist/types/table.d.ts +11 -0
- package/dist/types/time.d.ts +15 -0
- package/dist/types/trend-fit.d.ts +14 -0
- package/dist/types/type-scale.d.ts +10 -0
- package/dist/types/types.d.ts +271 -0
- package/dist/types/validate-layout.d.ts +2 -0
- package/dist/types/validate.d.ts +7 -0
- package/dist/types/version.d.ts +24 -0
- package/dist/types/views.d.ts +29 -0
- package/docs/api.md +106 -0
- package/docs/assistants.md +55 -0
- package/docs/format.md +183 -0
- package/docs/getting-started.md +77 -0
- package/docs/preview.md +84 -0
- package/examples/clinic-queue/data.json +17 -0
- package/examples/clinic-queue/layout.yml +43 -0
- package/examples/fire-alarm/data.yml +23 -0
- package/examples/fire-alarm/layout.yml +30 -0
- package/examples/gym-classes/data.yml +17 -0
- package/examples/gym-classes/layout.yml +47 -0
- package/examples/hotel-lobby/data.yml +2 -0
- package/examples/hotel-lobby/layout.yml +29 -0
- package/examples/lunch/data.yml +16 -0
- package/examples/lunch/layout.yml +43 -0
- package/examples/meeting-room/data.json +19 -0
- package/examples/meeting-room/layout.json +107 -0
- package/examples/noc-wall/data.yml +18 -0
- package/examples/noc-wall/layout.yml +63 -0
- package/examples/oee-line/data.yml +25 -0
- package/examples/oee-line/layout.yml +55 -0
- package/examples/office-air/data.yml +25 -0
- package/examples/office-air/layout.yml +71 -0
- package/examples/sales-today/data.json +28 -0
- package/examples/sales-today/layout.json +62 -0
- package/examples/snow-closure/data.yml +28 -0
- package/examples/snow-closure/layout.json +35 -0
- package/examples/station-departures/data.json +24 -0
- package/examples/station-departures/layout.json +34 -0
- package/examples/store-promo/data.yml +18 -0
- package/examples/store-promo/layout.yml +54 -0
- package/examples/storm-banner/data.json +20 -0
- package/examples/storm-banner/layout.json +33 -0
- package/examples/trading-floor/data.json +23 -0
- package/examples/trading-floor/layout.json +65 -0
- package/examples/warehouse/data.json +20 -0
- package/examples/warehouse/layout.json +50 -0
- package/package.json +100 -4
- package/schema.json +962 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"colors": { "scheme": "light", "background": "#ffffff", "accent": "#1d4ed8" },
|
|
3
|
+
"layout": {
|
|
4
|
+
"design": "landscape",
|
|
5
|
+
"flow": [
|
|
6
|
+
{ "zone": "head", "span": 5, "height": "150px" },
|
|
7
|
+
{ "zone": "revenue", "span": 4, "height": "150px" },
|
|
8
|
+
{ "zone": "target", "span": 3, "height": "150px" },
|
|
9
|
+
{ "zone": "hourly", "span": 8, "height": 3 },
|
|
10
|
+
{ "zone": "reps", "span": 4, "height": 3 },
|
|
11
|
+
{ "zone": "regions", "span": 12, "height": 2 }
|
|
12
|
+
]
|
|
13
|
+
},
|
|
14
|
+
"zones": {
|
|
15
|
+
"head": { "type": "heading", "text": "Sales today" },
|
|
16
|
+
"revenue": {
|
|
17
|
+
"type": "stat",
|
|
18
|
+
"surface": "raised",
|
|
19
|
+
"title": "Revenue",
|
|
20
|
+
"value": { "bind": "/kpi/revenue" },
|
|
21
|
+
"label": "Since midnight",
|
|
22
|
+
"format": "compact"
|
|
23
|
+
},
|
|
24
|
+
"target": {
|
|
25
|
+
"type": "stat",
|
|
26
|
+
"surface": "raised",
|
|
27
|
+
"title": "Against target",
|
|
28
|
+
"value": { "bind": "/kpi/vs_target" },
|
|
29
|
+
"unit": "%",
|
|
30
|
+
"label": { "bind": "/kpi/target_label" },
|
|
31
|
+
"state": { "bind": "/kpi/state", "fallback": "neutral" },
|
|
32
|
+
"trend": { "bind": "/kpi/trend" },
|
|
33
|
+
"delta": { "bind": "/kpi/delta" },
|
|
34
|
+
"good_when": "up"
|
|
35
|
+
},
|
|
36
|
+
"hourly": {
|
|
37
|
+
"type": "chart",
|
|
38
|
+
"kind": "column",
|
|
39
|
+
"title": "Revenue by hour, thousands",
|
|
40
|
+
"labels": { "bind": "/hourly/labels" },
|
|
41
|
+
"series": [
|
|
42
|
+
{ "name": "Revenue", "values": { "bind": "/hourly/revenue" } }
|
|
43
|
+
],
|
|
44
|
+
"target": 15,
|
|
45
|
+
"target_label": "Hourly target 15K"
|
|
46
|
+
},
|
|
47
|
+
"reps": {
|
|
48
|
+
"type": "bars",
|
|
49
|
+
"title": "Top reps, $K",
|
|
50
|
+
"items": { "bind": "/reps" },
|
|
51
|
+
"limit": 6
|
|
52
|
+
},
|
|
53
|
+
"regions": {
|
|
54
|
+
"type": "meters",
|
|
55
|
+
"title": "Quota attainment by region",
|
|
56
|
+
"items": { "bind": "/regions" },
|
|
57
|
+
"max": 120,
|
|
58
|
+
"unit": "%",
|
|
59
|
+
"thresholds": { "warning": 85, "danger": 70 }
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
lunch:
|
|
2
|
+
- [Monday, Pasta bake]
|
|
3
|
+
- [Tuesday, Chicken wrap]
|
|
4
|
+
- [Wednesday, Veggie chili]
|
|
5
|
+
- [Thursday, Fish fingers]
|
|
6
|
+
- [Friday, Pizza]
|
|
7
|
+
week:
|
|
8
|
+
- Picture day is Wednesday
|
|
9
|
+
- Library books due Thursday
|
|
10
|
+
- Parent evening Friday at 18:00
|
|
11
|
+
messages:
|
|
12
|
+
- Please sign the field trip form
|
|
13
|
+
- Lost property is by the gym
|
|
14
|
+
- Bake sale on Friday
|
|
15
|
+
|
|
16
|
+
alert:
|
|
17
|
+
level: warning
|
|
18
|
+
icon: snow
|
|
19
|
+
title: School closed tomorrow
|
|
20
|
+
message: 'Heavy snow is forecast overnight. Maple Ridge Elementary is closed on Tuesday.'
|
|
21
|
+
steps:
|
|
22
|
+
- School buses will not run
|
|
23
|
+
- Online lessons start at 9:00
|
|
24
|
+
- After-school club is cancelled
|
|
25
|
+
- Check the district app for updates
|
|
26
|
+
footer: 'Office 555-0178. Posted Monday at 15:10'
|
|
27
|
+
mode: takeover
|
|
28
|
+
until: '2026-11-15T00:00:00Z'
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"colors": { "scheme": "light", "accent": "#0f766e" },
|
|
4
|
+
"layout": {
|
|
5
|
+
"design": "landscape",
|
|
6
|
+
"flow": [
|
|
7
|
+
{ "zone": "head", "span": 9, "height": "170px" },
|
|
8
|
+
{ "zone": "clock", "span": 3, "height": "170px" },
|
|
9
|
+
{ "zone": "lunch", "span": 6, "height": 2 },
|
|
10
|
+
{ "zone": "info", "span": 6, "height": 2 },
|
|
11
|
+
{ "zone": "news", "height": "110px" }
|
|
12
|
+
]
|
|
13
|
+
},
|
|
14
|
+
"zones": {
|
|
15
|
+
"head": { "type": "heading", "text": "Maple Ridge Elementary" },
|
|
16
|
+
"clock": { "type": "clock", "surface": "raised", "show_date": true },
|
|
17
|
+
"lunch": {
|
|
18
|
+
"type": "table",
|
|
19
|
+
"title": "Lunch menu",
|
|
20
|
+
"columns": ["Day", "Main"],
|
|
21
|
+
"rows": { "bind": "/lunch" }
|
|
22
|
+
},
|
|
23
|
+
"info": {
|
|
24
|
+
"type": "list",
|
|
25
|
+
"title": "This week",
|
|
26
|
+
"items": { "bind": "/week" }
|
|
27
|
+
},
|
|
28
|
+
"news": {
|
|
29
|
+
"type": "cycle",
|
|
30
|
+
"surface": "raised",
|
|
31
|
+
"items": { "bind": "/messages" }
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"alert": { "bind": "/alert" }
|
|
35
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"alert": {
|
|
3
|
+
"level": "warning",
|
|
4
|
+
"icon": "delay",
|
|
5
|
+
"title": "Delays to Amsterdam",
|
|
6
|
+
"message": "Signal fault near Breukelen. Allow 15 minutes extra.",
|
|
7
|
+
"mode": "banner"
|
|
8
|
+
},
|
|
9
|
+
"departures": [
|
|
10
|
+
["14:08", "Amsterdam Centraal", 5, "+12 min"],
|
|
11
|
+
["14:12", "Rotterdam Centraal", 6, "On time"],
|
|
12
|
+
["14:17", "Arnhem Centraal", 4, "On time"],
|
|
13
|
+
["14:20", "Den Haag Centraal", 7, "Cancelled"],
|
|
14
|
+
["14:23", "Schiphol Airport", 5, "+12 min"],
|
|
15
|
+
["14:28", "Eindhoven Centraal", 6, "On time"],
|
|
16
|
+
["14:34", "Amersfoort Centraal", 4, "On time"],
|
|
17
|
+
["14:38", "Amsterdam Centraal", 5, "+8 min"]
|
|
18
|
+
],
|
|
19
|
+
"messages": [
|
|
20
|
+
"Lift to platform 6 out of service",
|
|
21
|
+
"Mind the gap",
|
|
22
|
+
"Lost property at the service desk, hall 2"
|
|
23
|
+
]
|
|
24
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"colors": { "scheme": "dark", "accent": "#facc15", "on_accent": "#111827" },
|
|
4
|
+
"alert": { "bind": "/alert" },
|
|
5
|
+
"layout": {
|
|
6
|
+
"design": "landscape",
|
|
7
|
+
"gap": 2,
|
|
8
|
+
"flow": [
|
|
9
|
+
{ "zone": "head", "span": 8, "height": "160px" },
|
|
10
|
+
{ "zone": "clock", "span": 4, "height": "160px" },
|
|
11
|
+
{ "zone": "board", "height": 6 },
|
|
12
|
+
{ "zone": "foot", "height": "110px" }
|
|
13
|
+
]
|
|
14
|
+
},
|
|
15
|
+
"zones": {
|
|
16
|
+
"head": { "type": "heading", "text": "Departures, platforms 4 to 7", "icon": "location" },
|
|
17
|
+
"clock": { "type": "clock", "surface": "accent", "hour12": false },
|
|
18
|
+
"board": {
|
|
19
|
+
"type": "table",
|
|
20
|
+
"columns": ["Time", "To", "Plat.", "Status"],
|
|
21
|
+
"align": ["start", "start", "end", "end"],
|
|
22
|
+
"widths": [1.2, 4, 1, 2.2],
|
|
23
|
+
"page_rows": 8,
|
|
24
|
+
"seconds": 10,
|
|
25
|
+
"rows": { "bind": "/departures" }
|
|
26
|
+
},
|
|
27
|
+
"foot": {
|
|
28
|
+
"type": "cycle",
|
|
29
|
+
"surface": "raised",
|
|
30
|
+
"seconds": 8,
|
|
31
|
+
"items": { "bind": "/messages" }
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
offer:
|
|
2
|
+
headline: Buy any two Northfield own-label snack multipacks and take the canvas tote home free while stocks last
|
|
3
|
+
ends: '2026-11-22T21:00:00Z'
|
|
4
|
+
promo:
|
|
5
|
+
images:
|
|
6
|
+
- /examples/images/snacks.svg
|
|
7
|
+
- /examples/images/tote.svg
|
|
8
|
+
- /examples/images/hamper.svg
|
|
9
|
+
featured:
|
|
10
|
+
src: /examples/images/kettle.svg
|
|
11
|
+
join:
|
|
12
|
+
url: https://example.com/club
|
|
13
|
+
ticker:
|
|
14
|
+
- Loyalty points are doubled every Thursday
|
|
15
|
+
- Returns accepted for 60 days with a receipt
|
|
16
|
+
- The bakery counter opens at 06:30 on weekdays
|
|
17
|
+
- ''
|
|
18
|
+
- Parking after 16:00 is free for members
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
colors:
|
|
2
|
+
scheme: dark
|
|
3
|
+
accent: '#f97316'
|
|
4
|
+
|
|
5
|
+
layout:
|
|
6
|
+
design: landscape
|
|
7
|
+
gap: 2
|
|
8
|
+
flow:
|
|
9
|
+
- { zone: hero, span: 8, height: 3 }
|
|
10
|
+
- { zone: clock, span: 4, height: 1 }
|
|
11
|
+
- { zone: offer, span: 4, height: 2 }
|
|
12
|
+
- { zone: featured, span: 4, height: 2 }
|
|
13
|
+
- { zone: join, span: 4, height: 2 }
|
|
14
|
+
- { zone: ticker, span: 12, height: 70px }
|
|
15
|
+
|
|
16
|
+
zones:
|
|
17
|
+
hero:
|
|
18
|
+
type: slideshow
|
|
19
|
+
images: { bind: /promo/images }
|
|
20
|
+
seconds: 8
|
|
21
|
+
fit: contain
|
|
22
|
+
clock:
|
|
23
|
+
type: clock
|
|
24
|
+
title: Store time
|
|
25
|
+
show_date: true
|
|
26
|
+
hour12: false
|
|
27
|
+
offer:
|
|
28
|
+
type: stack
|
|
29
|
+
title: This week
|
|
30
|
+
direction: column
|
|
31
|
+
items:
|
|
32
|
+
- type: text
|
|
33
|
+
text: { bind: /offer/headline }
|
|
34
|
+
fit: true
|
|
35
|
+
align: start
|
|
36
|
+
- type: countdown
|
|
37
|
+
to: { bind: /offer/ends }
|
|
38
|
+
label: Ends
|
|
39
|
+
featured:
|
|
40
|
+
type: image
|
|
41
|
+
title: Staff pick
|
|
42
|
+
src: { bind: /featured/src }
|
|
43
|
+
fit: contain
|
|
44
|
+
alt: Staff pick of the week
|
|
45
|
+
join:
|
|
46
|
+
type: qr
|
|
47
|
+
title: Join the club
|
|
48
|
+
value: { bind: /join/url }
|
|
49
|
+
label: Scan for double points
|
|
50
|
+
ticker:
|
|
51
|
+
type: cycle
|
|
52
|
+
items: { bind: /ticker }
|
|
53
|
+
seconds: 9
|
|
54
|
+
align: center
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"alert": {
|
|
3
|
+
"level": "warning",
|
|
4
|
+
"icon": "storm",
|
|
5
|
+
"title": "Storm warning",
|
|
6
|
+
"message": "Gusts up to 90 km/h until 18:00. Routes 14 and 22 may not run.",
|
|
7
|
+
"footer": "Check the operator app before you travel.",
|
|
8
|
+
"mode": "banner",
|
|
9
|
+
"until": "2026-11-14T18:00:00Z"
|
|
10
|
+
},
|
|
11
|
+
"departures": [
|
|
12
|
+
["09:40", "14", "Harbour Quay", "Late 10 min"],
|
|
13
|
+
["09:45", "22", "Ferndale", "Cancelled"],
|
|
14
|
+
["09:55", "7", "Canal Street", "On time"],
|
|
15
|
+
["10:05", "31", "Airport", "On time"],
|
|
16
|
+
["10:15", "9", "Westgate", "Cancelled"]
|
|
17
|
+
],
|
|
18
|
+
"running": 38,
|
|
19
|
+
"cancelled": 3
|
|
20
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"colors": { "scheme": "dark" },
|
|
4
|
+
"layout": {
|
|
5
|
+
"design": "landscape",
|
|
6
|
+
"flow": [
|
|
7
|
+
{ "zone": "head", "span": 9, "height": "130px" },
|
|
8
|
+
{ "zone": "clock", "span": 3, "height": "130px" },
|
|
9
|
+
{ "zone": "departures", "span": 9, "height": 1 },
|
|
10
|
+
{ "zone": "stats", "span": 3, "height": 1 }
|
|
11
|
+
]
|
|
12
|
+
},
|
|
13
|
+
"zones": {
|
|
14
|
+
"head": { "type": "heading", "text": "Eastbridge interchange" },
|
|
15
|
+
"clock": { "type": "clock", "surface": "raised" },
|
|
16
|
+
"departures": {
|
|
17
|
+
"type": "table",
|
|
18
|
+
"title": "Next departures",
|
|
19
|
+
"columns": ["Time", "Route", "Destination", "Status"],
|
|
20
|
+
"align": ["start", "start", "start", "start"],
|
|
21
|
+
"rows": { "bind": "/departures" }
|
|
22
|
+
},
|
|
23
|
+
"stats": {
|
|
24
|
+
"type": "stack",
|
|
25
|
+
"direction": "column",
|
|
26
|
+
"items": [
|
|
27
|
+
{ "type": "stat", "title": "Buses running", "value": { "bind": "/running" }, "state": "good" },
|
|
28
|
+
{ "type": "stat", "title": "Cancelled today", "value": { "bind": "/cancelled" }, "state": "warning" }
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"alert": { "bind": "/alert" }
|
|
33
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"idx": {
|
|
3
|
+
"ftse": { "value": 8342.17, "trend": "up", "delta": "+0.42%", "spark": [8290, 8301, 8288, 8310, 8325, 8338, 8342] },
|
|
4
|
+
"spx": { "value": 6104.55, "trend": "down", "delta": "-0.18%", "spark": [6130, 6125, 6118, 6110, 6112, 6107, 6104] }
|
|
5
|
+
},
|
|
6
|
+
"chart": {
|
|
7
|
+
"labels": ["08:00", "09:00", "10:00", "11:00", "12:00", "13:00", "14:00", "15:00"],
|
|
8
|
+
"ftse": [0, 0.1, 0.3, 0.2, 0.35, 0.4, 0.38, 0.42],
|
|
9
|
+
"spx": [0, -0.05, -0.1, 0.05, -0.12, -0.2, -0.15, -0.18]
|
|
10
|
+
},
|
|
11
|
+
"movers": [
|
|
12
|
+
["Rolls-Royce", "612.40", "+4.8"],
|
|
13
|
+
["Anglo American", "2,481.00", "-3.9"],
|
|
14
|
+
["Hargreaves Lansdown", "1,102.50", "+2.2"],
|
|
15
|
+
["BP", "421.15", "-1.4"],
|
|
16
|
+
["Scottish Mortgage", "892.00", "+1.1"]
|
|
17
|
+
],
|
|
18
|
+
"messages": [
|
|
19
|
+
"ECB rate decision 13:15 CET",
|
|
20
|
+
"Pre-trade compliance sign-off for orders above 10M",
|
|
21
|
+
"BoE governor speaks at 15:30"
|
|
22
|
+
]
|
|
23
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"colors": { "scheme": "dark" },
|
|
4
|
+
"layout": {
|
|
5
|
+
"design": "landscape",
|
|
6
|
+
"flow": [
|
|
7
|
+
{ "zone": "head", "span": 4, "height": "130px" },
|
|
8
|
+
{ "zone": "clocks", "span": 8, "height": "130px" },
|
|
9
|
+
{ "zone": "idx_ftse", "span": 6, "height": 2 },
|
|
10
|
+
{ "zone": "idx_spx", "span": 6, "height": 2 },
|
|
11
|
+
{ "zone": "chart", "span": 6, "height": 4 },
|
|
12
|
+
{ "zone": "movers", "span": 6, "height": 4 },
|
|
13
|
+
{ "zone": "news", "height": "100px" }
|
|
14
|
+
]
|
|
15
|
+
},
|
|
16
|
+
"zones": {
|
|
17
|
+
"head": { "type": "heading", "text": "Equities desk" },
|
|
18
|
+
"clocks": {
|
|
19
|
+
"type": "clocks",
|
|
20
|
+
"zones": [
|
|
21
|
+
{ "label": "London", "zone": "Europe/London" },
|
|
22
|
+
{ "label": "New York", "zone": "America/New_York" },
|
|
23
|
+
{ "label": "Tokyo", "zone": "Asia/Tokyo" }
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
"idx_ftse": {
|
|
27
|
+
"type": "stat",
|
|
28
|
+
"title": "FTSE 100",
|
|
29
|
+
"value": { "bind": "/idx/ftse/value" },
|
|
30
|
+
"trend": { "bind": "/idx/ftse/trend" },
|
|
31
|
+
"delta": { "bind": "/idx/ftse/delta" },
|
|
32
|
+
"good_when": "up",
|
|
33
|
+
"spark": { "bind": "/idx/ftse/spark" }
|
|
34
|
+
},
|
|
35
|
+
"idx_spx": {
|
|
36
|
+
"type": "stat",
|
|
37
|
+
"title": "S&P 500",
|
|
38
|
+
"value": { "bind": "/idx/spx/value" },
|
|
39
|
+
"trend": { "bind": "/idx/spx/trend" },
|
|
40
|
+
"delta": { "bind": "/idx/spx/delta" },
|
|
41
|
+
"good_when": "up",
|
|
42
|
+
"spark": { "bind": "/idx/spx/spark" }
|
|
43
|
+
},
|
|
44
|
+
"chart": {
|
|
45
|
+
"type": "chart",
|
|
46
|
+
"kind": "line",
|
|
47
|
+
"title": "Intraday index, % change",
|
|
48
|
+
"labels": { "bind": "/chart/labels" },
|
|
49
|
+
"series": [
|
|
50
|
+
{ "name": "FTSE 100", "values": { "bind": "/chart/ftse" } },
|
|
51
|
+
{ "name": "S&P 500", "values": { "bind": "/chart/spx" } }
|
|
52
|
+
]
|
|
53
|
+
},
|
|
54
|
+
"movers": {
|
|
55
|
+
"type": "table",
|
|
56
|
+
"title": "Biggest movers",
|
|
57
|
+
"columns": ["Name", "Last", "Chg %"],
|
|
58
|
+
"align": ["start", "end", "end"],
|
|
59
|
+
"rows": { "bind": "/movers" },
|
|
60
|
+
"page_rows": 5,
|
|
61
|
+
"seconds": 8
|
|
62
|
+
},
|
|
63
|
+
"news": { "type": "cycle", "surface": "raised", "seconds": 6, "items": { "bind": "/messages" } }
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"site": "Waalhaven DC, building 3",
|
|
3
|
+
"picks": 12907,
|
|
4
|
+
"dock": {
|
|
5
|
+
"current": "T-2291",
|
|
6
|
+
"recent": ["T-2290", "T-2289", "T-2288"]
|
|
7
|
+
},
|
|
8
|
+
"trucks": [
|
|
9
|
+
["DHL Freight", "Hamburg", "4", "14:10"],
|
|
10
|
+
["Van der Berg", "Antwerp", "7", "14:25"],
|
|
11
|
+
["DB Schenker", "Lyon", "2", "14:40"],
|
|
12
|
+
["Kuehne + Nagel", "Paris", "5", "15:05"],
|
|
13
|
+
["GEODIS", "Madrid", "6", "15:20"]
|
|
14
|
+
],
|
|
15
|
+
"forklifts": [
|
|
16
|
+
{ "label": "FLT-07", "value": 12 },
|
|
17
|
+
{ "label": "FLT-03", "value": 28 },
|
|
18
|
+
{ "label": "FLT-11", "value": 64 }
|
|
19
|
+
]
|
|
20
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"colors": { "scheme": "dark", "accent": "#a3e635", "on_accent": "#111827" },
|
|
3
|
+
"layout": {
|
|
4
|
+
"design": "landscape",
|
|
5
|
+
"flow": [
|
|
6
|
+
{ "zone": "head", "span": 9, "height": "120px" },
|
|
7
|
+
{ "zone": "clock", "span": 3, "height": "120px" },
|
|
8
|
+
{ "zone": "dock", "span": 4, "height": 3 },
|
|
9
|
+
{ "zone": "shipments", "span": 8, "height": 3 },
|
|
10
|
+
{ "zone": "picks", "span": 5, "height": 2 },
|
|
11
|
+
{ "zone": "forklifts", "span": 7, "height": 2 }
|
|
12
|
+
]
|
|
13
|
+
},
|
|
14
|
+
"zones": {
|
|
15
|
+
"head": { "type": "heading", "text": { "bind": "/site" } },
|
|
16
|
+
"clock": { "type": "clock", "surface": "raised" },
|
|
17
|
+
"dock": {
|
|
18
|
+
"type": "queue",
|
|
19
|
+
"title": "Dock call-up",
|
|
20
|
+
"label": "Door 4 loading",
|
|
21
|
+
"current": { "bind": "/dock/current" },
|
|
22
|
+
"recent": { "bind": "/dock/recent" }
|
|
23
|
+
},
|
|
24
|
+
"shipments": {
|
|
25
|
+
"type": "table",
|
|
26
|
+
"title": "Outbound trucks",
|
|
27
|
+
"columns": ["Carrier", "Destination", "Door", "ETD"],
|
|
28
|
+
"align": ["start", "start", "center", "end"],
|
|
29
|
+
"rows": { "bind": "/trucks" },
|
|
30
|
+
"page_rows": 5,
|
|
31
|
+
"seconds": 8
|
|
32
|
+
},
|
|
33
|
+
"picks": {
|
|
34
|
+
"type": "stat",
|
|
35
|
+
"title": "Picks today",
|
|
36
|
+
"value": { "bind": "/picks" },
|
|
37
|
+
"format": "full",
|
|
38
|
+
"trend": "up",
|
|
39
|
+
"delta": "+9%",
|
|
40
|
+
"good_when": "up"
|
|
41
|
+
},
|
|
42
|
+
"forklifts": {
|
|
43
|
+
"type": "meters",
|
|
44
|
+
"title": "Forklift battery",
|
|
45
|
+
"unit": "%",
|
|
46
|
+
"thresholds": { "warning": 30, "danger": 15 },
|
|
47
|
+
"items": { "bind": "/forklifts" }
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,102 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@514sid/signagekit",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "A toolkit for AI agents that build digital signage screens: dashboards, menus, schedules and alerts as JSON or YAML templates, laid out for any display.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"ai",
|
|
7
|
+
"ai-agents",
|
|
8
|
+
"dashboard",
|
|
9
|
+
"declarative",
|
|
10
|
+
"digital-signage",
|
|
11
|
+
"display",
|
|
12
|
+
"layout",
|
|
13
|
+
"llm",
|
|
14
|
+
"preact",
|
|
15
|
+
"signage",
|
|
16
|
+
"templates",
|
|
17
|
+
"yaml"
|
|
18
|
+
],
|
|
19
|
+
"license": "MIT",
|
|
20
|
+
"author": "514sid",
|
|
21
|
+
"homepage": "https://signagekit.514sid.com",
|
|
22
|
+
"repository": {
|
|
23
|
+
"type": "git",
|
|
24
|
+
"url": "git+https://github.com/514sid/signagekit.git"
|
|
25
|
+
},
|
|
26
|
+
"bugs": "https://github.com/514sid/signagekit/issues",
|
|
27
|
+
"type": "module",
|
|
28
|
+
"sideEffects": [
|
|
29
|
+
"*.css"
|
|
30
|
+
],
|
|
31
|
+
"exports": {
|
|
32
|
+
".": {
|
|
33
|
+
"types": "./dist/types/index.d.ts",
|
|
34
|
+
"import": "./dist/index.js"
|
|
35
|
+
},
|
|
36
|
+
"./style.css": "./dist/style.css",
|
|
37
|
+
"./schema.json": "./schema.json",
|
|
38
|
+
"./package.json": "./package.json"
|
|
39
|
+
},
|
|
40
|
+
"main": "./dist/index.js",
|
|
41
|
+
"types": "./dist/types/index.d.ts",
|
|
42
|
+
"bin": {
|
|
43
|
+
"signagekit": "./bin/signagekit.js"
|
|
44
|
+
},
|
|
45
|
+
"files": [
|
|
46
|
+
"dist",
|
|
47
|
+
"!dist/**/*.map",
|
|
48
|
+
"bin",
|
|
49
|
+
"schema.json",
|
|
50
|
+
"docs",
|
|
51
|
+
"examples",
|
|
52
|
+
"CHANGELOG.md"
|
|
53
|
+
],
|
|
54
|
+
"engines": {
|
|
55
|
+
"node": ">=18"
|
|
56
|
+
},
|
|
57
|
+
"scripts": {
|
|
58
|
+
"build": "vite build && tsc -p tsconfig.build.json",
|
|
59
|
+
"prepublishOnly": "bun run check-all && bun run build",
|
|
60
|
+
"check-all": "bun run type-check && bun run lint && bun run format:check && bun test",
|
|
61
|
+
"test": "bun test",
|
|
62
|
+
"type-check": "tsc --noEmit",
|
|
63
|
+
"lint": "eslint .",
|
|
64
|
+
"format": "prettier --write src stories scripts bin .storybook docs site README.md",
|
|
65
|
+
"format:check": "prettier --check src stories scripts bin .storybook docs site README.md",
|
|
66
|
+
"check": "bun run build && node bin/signagekit.js check",
|
|
67
|
+
"preview": "bun scripts/preview.ts",
|
|
68
|
+
"storybook": "storybook dev -p 6006",
|
|
69
|
+
"build-storybook": "storybook build",
|
|
70
|
+
"site:build": "cd site && astro build",
|
|
71
|
+
"site:dev": "cd site && astro dev"
|
|
72
|
+
},
|
|
73
|
+
"dependencies": {
|
|
74
|
+
"preact": "10.27.2",
|
|
75
|
+
"uplot": "1.6.32",
|
|
76
|
+
"uqr": "0.1.3",
|
|
77
|
+
"yaml": "2.9.1"
|
|
78
|
+
},
|
|
79
|
+
"devDependencies": {
|
|
80
|
+
"@eslint/js": "10.0.1",
|
|
81
|
+
"@playwright/test": "1.65.1",
|
|
82
|
+
"@storybook/preact-vite": "10.6.5",
|
|
83
|
+
"@tailwindcss/typography": "0.5.20",
|
|
84
|
+
"@tailwindcss/vite": "4.3.3",
|
|
85
|
+
"@types/bun": "1.3.13",
|
|
86
|
+
"@types/jsdom": "28.0.3",
|
|
87
|
+
"astro": "7.4.4",
|
|
88
|
+
"eslint": "10.15.0",
|
|
89
|
+
"jsdom": "28.1.0",
|
|
90
|
+
"marked": "18.1.2",
|
|
91
|
+
"prettier": "3.10.1",
|
|
92
|
+
"storybook": "10.6.5",
|
|
93
|
+
"tailwindcss": "4.3.3",
|
|
94
|
+
"typescript": "5.9.3",
|
|
95
|
+
"typescript-eslint": "8.72.2",
|
|
96
|
+
"vite": "8.3.8"
|
|
97
|
+
},
|
|
98
|
+
"prettier": "./.prettierrc.json",
|
|
99
|
+
"publishConfig": {
|
|
100
|
+
"access": "public"
|
|
101
|
+
}
|
|
102
|
+
}
|