@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.
Files changed (95) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/LICENSE +44 -0
  3. package/README.md +102 -2
  4. package/bin/signagekit.js +4 -0
  5. package/dist/chunks/chart-DT-Y4YWA.js +2 -0
  6. package/dist/chunks/empty--6iNLsra.js +2 -0
  7. package/dist/chunks/icon-paths-Dl0Rqja7.js +2 -0
  8. package/dist/chunks/lists-DYyvtVni.js +2 -0
  9. package/dist/chunks/measures-_ZIjSN7n.js +2 -0
  10. package/dist/chunks/media-DI-zWZSx.js +3 -0
  11. package/dist/chunks/qr-size-Dq23do6_.js +2 -0
  12. package/dist/chunks/ready-DI3QO8E5.js +2 -0
  13. package/dist/chunks/share-CtG_q4RM.js +2 -0
  14. package/dist/chunks/stat-DIAOyDND.js +2 -0
  15. package/dist/chunks/time-sq9LV8dr.js +2 -0
  16. package/dist/cli.js +10 -0
  17. package/dist/index.js +3 -0
  18. package/dist/style.css +2 -0
  19. package/dist/types/alert.d.ts +20 -0
  20. package/dist/types/binds.d.ts +6 -0
  21. package/dist/types/chart.d.ts +16 -0
  22. package/dist/types/check.d.ts +31 -0
  23. package/dist/types/checks.d.ts +30 -0
  24. package/dist/types/colors.d.ts +18 -0
  25. package/dist/types/components.d.ts +13 -0
  26. package/dist/types/cycle-fit.d.ts +6 -0
  27. package/dist/types/data.d.ts +19 -0
  28. package/dist/types/empty.d.ts +6 -0
  29. package/dist/types/fit.d.ts +3 -0
  30. package/dist/types/flow.d.ts +7 -0
  31. package/dist/types/icon-paths.d.ts +2 -0
  32. package/dist/types/icon.d.ts +7 -0
  33. package/dist/types/icons.d.ts +3 -0
  34. package/dist/types/index.d.ts +20 -0
  35. package/dist/types/lists.d.ts +28 -0
  36. package/dist/types/measure.d.ts +4 -0
  37. package/dist/types/measures.d.ts +22 -0
  38. package/dist/types/media.d.ts +15 -0
  39. package/dist/types/mount.d.ts +45 -0
  40. package/dist/types/parse.d.ts +11 -0
  41. package/dist/types/qr-size.d.ts +2 -0
  42. package/dist/types/ready.d.ts +3 -0
  43. package/dist/types/share.d.ts +33 -0
  44. package/dist/types/sizes.d.ts +15 -0
  45. package/dist/types/specs.d.ts +7 -0
  46. package/dist/types/stat.d.ts +38 -0
  47. package/dist/types/table-fit.d.ts +8 -0
  48. package/dist/types/table.d.ts +11 -0
  49. package/dist/types/time.d.ts +15 -0
  50. package/dist/types/trend-fit.d.ts +14 -0
  51. package/dist/types/type-scale.d.ts +10 -0
  52. package/dist/types/types.d.ts +271 -0
  53. package/dist/types/validate-layout.d.ts +2 -0
  54. package/dist/types/validate.d.ts +7 -0
  55. package/dist/types/version.d.ts +24 -0
  56. package/dist/types/views.d.ts +29 -0
  57. package/docs/api.md +106 -0
  58. package/docs/assistants.md +55 -0
  59. package/docs/format.md +183 -0
  60. package/docs/getting-started.md +77 -0
  61. package/docs/preview.md +84 -0
  62. package/examples/clinic-queue/data.json +17 -0
  63. package/examples/clinic-queue/layout.yml +43 -0
  64. package/examples/fire-alarm/data.yml +23 -0
  65. package/examples/fire-alarm/layout.yml +30 -0
  66. package/examples/gym-classes/data.yml +17 -0
  67. package/examples/gym-classes/layout.yml +47 -0
  68. package/examples/hotel-lobby/data.yml +2 -0
  69. package/examples/hotel-lobby/layout.yml +29 -0
  70. package/examples/lunch/data.yml +16 -0
  71. package/examples/lunch/layout.yml +43 -0
  72. package/examples/meeting-room/data.json +19 -0
  73. package/examples/meeting-room/layout.json +107 -0
  74. package/examples/noc-wall/data.yml +18 -0
  75. package/examples/noc-wall/layout.yml +63 -0
  76. package/examples/oee-line/data.yml +25 -0
  77. package/examples/oee-line/layout.yml +55 -0
  78. package/examples/office-air/data.yml +25 -0
  79. package/examples/office-air/layout.yml +71 -0
  80. package/examples/sales-today/data.json +28 -0
  81. package/examples/sales-today/layout.json +62 -0
  82. package/examples/snow-closure/data.yml +28 -0
  83. package/examples/snow-closure/layout.json +35 -0
  84. package/examples/station-departures/data.json +24 -0
  85. package/examples/station-departures/layout.json +34 -0
  86. package/examples/store-promo/data.yml +18 -0
  87. package/examples/store-promo/layout.yml +54 -0
  88. package/examples/storm-banner/data.json +20 -0
  89. package/examples/storm-banner/layout.json +33 -0
  90. package/examples/trading-floor/data.json +23 -0
  91. package/examples/trading-floor/layout.json +65 -0
  92. package/examples/warehouse/data.json +20 -0
  93. package/examples/warehouse/layout.json +50 -0
  94. package/package.json +100 -4
  95. 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.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
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
+ }