@tomorrowos/sdk 1.1.5 → 1.1.7

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 (37) hide show
  1. package/dist/index.d.ts +5 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -0
  4. package/dist/playlist-catalog.d.ts +5 -0
  5. package/dist/playlist-catalog.d.ts.map +1 -1
  6. package/dist/playlist-catalog.js +22 -1
  7. package/dist/screen-references.d.ts +37 -0
  8. package/dist/screen-references.d.ts.map +1 -0
  9. package/dist/screen-references.js +228 -0
  10. package/dist/screen-tags.d.ts +95 -0
  11. package/dist/screen-tags.d.ts.map +1 -0
  12. package/dist/screen-tags.js +835 -0
  13. package/dist/store/memory-store.d.ts +2 -0
  14. package/dist/store/memory-store.d.ts.map +1 -1
  15. package/dist/store/memory-store.js +11 -0
  16. package/dist/store/postgres-store.d.ts +2 -0
  17. package/dist/store/postgres-store.d.ts.map +1 -1
  18. package/dist/store/postgres-store.js +9 -0
  19. package/dist/store/sqlite-store.d.ts +2 -0
  20. package/dist/store/sqlite-store.d.ts.map +1 -1
  21. package/dist/store/sqlite-store.js +12 -0
  22. package/dist/store/types.d.ts +20 -0
  23. package/dist/store/types.d.ts.map +1 -1
  24. package/dist/tomorrowos.d.ts +7 -0
  25. package/dist/tomorrowos.d.ts.map +1 -1
  26. package/dist/tomorrowos.js +56 -1
  27. package/package.json +1 -1
  28. package/templates/cms-starter/package-lock.json +3 -3
  29. package/templates/cms-starter/package.json +2 -2
  30. package/templates/cms-starter/public/index.html +86 -1
  31. package/templates/cms-starter/public/methods.js +782 -11
  32. package/templates/cms-starter/public/panel.css +356 -0
  33. package/templates/cms-starter-v0/cms-panel/index.html +86 -1
  34. package/templates/cms-starter-v0/cms-panel/methods.js +782 -11
  35. package/templates/cms-starter-v0/cms-panel/panel.css +356 -0
  36. package/templates/cms-starter-v0/package-lock.json +3 -3
  37. package/templates/cms-starter-v0/package.json +2 -2
@@ -1144,3 +1144,359 @@ button.danger {
1144
1144
  justify-content: center;
1145
1145
  margin-top: 1.15rem;
1146
1146
  }
1147
+
1148
+ .playlist-item-rule-summary {
1149
+ margin: 0 0 0.45rem;
1150
+ font-size: 0.75rem;
1151
+ color: #444;
1152
+ white-space: pre-line;
1153
+ }
1154
+
1155
+ .playlist-item-add-rule {
1156
+ width: 100%;
1157
+ margin-bottom: 0.45rem;
1158
+ }
1159
+
1160
+ .tag-rule-modal-card {
1161
+ width: min(92vw, 480px);
1162
+ padding: 0;
1163
+ overflow: hidden;
1164
+ display: flex;
1165
+ flex-direction: column;
1166
+ }
1167
+
1168
+ .tag-rule-modal-body {
1169
+ overflow: auto;
1170
+ padding: 1.25rem;
1171
+ min-height: 0;
1172
+ }
1173
+
1174
+ .tag-rule-modal-actions {
1175
+ justify-content: flex-end;
1176
+ margin-top: 0.35rem;
1177
+ }
1178
+
1179
+ .tag-rule-divider {
1180
+ border: 0;
1181
+ border-top: 1px solid #e4e4e7;
1182
+ margin: 1.15rem 0 1rem;
1183
+ }
1184
+
1185
+ .item-schedule-heading {
1186
+ margin-top: 0;
1187
+ }
1188
+
1189
+ .item-schedule-grid {
1190
+ display: grid;
1191
+ grid-template-columns: 1fr 1fr;
1192
+ gap: 0.65rem 0.85rem;
1193
+ margin: 0.75rem 0;
1194
+ }
1195
+
1196
+ .item-schedule-grid label {
1197
+ display: flex;
1198
+ flex-direction: column;
1199
+ gap: 0.25rem;
1200
+ font-size: 0.8rem;
1201
+ color: #444;
1202
+ }
1203
+
1204
+ .item-schedule-grid input {
1205
+ font: inherit;
1206
+ padding: 0.4rem 0.45rem;
1207
+ border: 1px solid #d4d4d8;
1208
+ border-radius: 8px;
1209
+ background: #fff;
1210
+ }
1211
+
1212
+ .item-schedule-repeats {
1213
+ margin: 0.15rem 0 0.4rem;
1214
+ font-size: 0.8rem;
1215
+ color: #444;
1216
+ }
1217
+
1218
+ .item-schedule-days {
1219
+ display: flex;
1220
+ flex-wrap: wrap;
1221
+ gap: 0.35rem;
1222
+ }
1223
+
1224
+ .item-schedule-day {
1225
+ padding: 0.3rem 0.45rem;
1226
+ font-size: 0.78rem;
1227
+ border-radius: 999px;
1228
+ }
1229
+
1230
+ .item-schedule-day.is-on {
1231
+ background: var(--brand-primary);
1232
+ border-color: color-mix(in srgb, var(--brand-primary) 82%, #000);
1233
+ }
1234
+
1235
+ .tag-rule-modal-header {
1236
+ display: flex;
1237
+ align-items: flex-start;
1238
+ justify-content: space-between;
1239
+ gap: 0.75rem;
1240
+ }
1241
+
1242
+ .tag-rule-modal-header h2 {
1243
+ margin: 0;
1244
+ font-size: 1.15rem;
1245
+ }
1246
+
1247
+ .tag-rule-close {
1248
+ border: 0;
1249
+ background: transparent;
1250
+ font-size: 1.4rem;
1251
+ line-height: 1;
1252
+ padding: 0 0.15rem;
1253
+ cursor: pointer;
1254
+ color: #444;
1255
+ }
1256
+
1257
+ .tag-rule-asset-name {
1258
+ margin: 0.35rem 0 1rem;
1259
+ color: #6b7280;
1260
+ font-size: 0.92rem;
1261
+ word-break: break-all;
1262
+ }
1263
+
1264
+ .tag-rule-section {
1265
+ margin: 0 0 0.35rem;
1266
+ font-size: 1rem;
1267
+ }
1268
+
1269
+ .tag-rule-sentence {
1270
+ display: flex;
1271
+ flex-wrap: wrap;
1272
+ align-items: center;
1273
+ gap: 0.4rem;
1274
+ margin: 0.85rem 0 0.75rem;
1275
+ font-size: 0.95rem;
1276
+ }
1277
+
1278
+ .tag-rule-sentence select {
1279
+ font: inherit;
1280
+ padding: 0.28rem 0.4rem;
1281
+ border: 1px solid #d4d4d8;
1282
+ border-radius: 8px;
1283
+ background: #fff;
1284
+ }
1285
+
1286
+ .tag-rule-selected {
1287
+ display: flex;
1288
+ flex-wrap: wrap;
1289
+ gap: 0.35rem;
1290
+ margin-bottom: 0.55rem;
1291
+ }
1292
+
1293
+ .tag-rule-selected:empty {
1294
+ display: none;
1295
+ }
1296
+
1297
+ .tag-rule-add {
1298
+ position: relative;
1299
+ }
1300
+
1301
+ .tag-rule-add input {
1302
+ width: 100%;
1303
+ box-sizing: border-box;
1304
+ padding: 0.7rem 0.8rem;
1305
+ border: 1px solid #d4d4d8;
1306
+ border-radius: 10px;
1307
+ font: inherit;
1308
+ font-size: 0.95rem;
1309
+ }
1310
+
1311
+ .tag-rule-options {
1312
+ position: absolute;
1313
+ z-index: 2;
1314
+ left: 0;
1315
+ right: 0;
1316
+ top: calc(100% + 4px);
1317
+ margin: 0;
1318
+ padding: 0.25rem 0;
1319
+ list-style: none;
1320
+ background: #fff;
1321
+ border: 1px solid #e4e4e7;
1322
+ border-radius: 10px;
1323
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
1324
+ max-height: 180px;
1325
+ overflow: auto;
1326
+ }
1327
+
1328
+ .tag-rule-options button {
1329
+ display: block;
1330
+ width: 100%;
1331
+ text-align: left;
1332
+ border: 0;
1333
+ background: transparent;
1334
+ padding: 0.45rem 0.75rem;
1335
+ font: inherit;
1336
+ cursor: pointer;
1337
+ }
1338
+
1339
+ .tag-rule-options button:hover,
1340
+ .tag-rule-options button:focus {
1341
+ background: #f4f4f5;
1342
+ }
1343
+
1344
+ .playlist-item-rule {
1345
+ display: grid;
1346
+ gap: 0.35rem;
1347
+ margin: 0.45rem 0 0.55rem;
1348
+ }
1349
+
1350
+ .playlist-item-rule-label {
1351
+ display: grid;
1352
+ gap: 0.25rem;
1353
+ font-size: 0.75rem;
1354
+ font-weight: 600;
1355
+ }
1356
+
1357
+ .playlist-item-rule-op,
1358
+ .playlist-item-rule-tags,
1359
+ .device-tag-add input,
1360
+ #screenTagFilter {
1361
+ width: 100%;
1362
+ box-sizing: border-box;
1363
+ padding: 0.4rem 0.5rem;
1364
+ border: 1px solid #d6d3ce;
1365
+ border-radius: 6px;
1366
+ font: inherit;
1367
+ font-size: 0.8rem;
1368
+ background: #fff;
1369
+ }
1370
+
1371
+ .device-tags {
1372
+ margin-top: 0.75rem;
1373
+ padding-top: 0.75rem;
1374
+ border-top: 1px solid #e4e1dc;
1375
+ }
1376
+
1377
+ .device-tags-label {
1378
+ font-size: 0.75rem;
1379
+ font-weight: 600;
1380
+ margin-bottom: 0.35rem;
1381
+ }
1382
+
1383
+ .device-tag-chips {
1384
+ display: flex;
1385
+ flex-wrap: wrap;
1386
+ gap: 0.35rem;
1387
+ margin-bottom: 0.45rem;
1388
+ }
1389
+
1390
+ .device-tag-empty {
1391
+ font-size: 0.75rem;
1392
+ color: #71717a;
1393
+ }
1394
+
1395
+ .device-tag-chip {
1396
+ border: 1px solid #d6d3ce;
1397
+ background: #fff;
1398
+ border-radius: 999px;
1399
+ padding: 0.15rem 0.55rem;
1400
+ font-size: 0.75rem;
1401
+ cursor: pointer;
1402
+ }
1403
+
1404
+ .device-tag-add {
1405
+ display: flex;
1406
+ flex-wrap: wrap;
1407
+ align-items: center;
1408
+ gap: 0.4rem;
1409
+ margin-bottom: 0.85rem;
1410
+ }
1411
+
1412
+ .device-tag-add > button {
1413
+ padding: 0.4rem 0.65rem;
1414
+ font-size: 0.8rem;
1415
+ line-height: normal;
1416
+ border-radius: 6px;
1417
+ }
1418
+
1419
+ .device-tag-add input {
1420
+ flex: 1 1 8rem;
1421
+ width: auto;
1422
+ }
1423
+
1424
+ #pairedDevicesSection > .field-label,
1425
+ .screen-tag-toolbar .field-label {
1426
+ display: grid;
1427
+ gap: 0.3rem;
1428
+ margin: 0;
1429
+ max-width: 18rem;
1430
+ font-size: 0.85rem;
1431
+ font-weight: 600;
1432
+ }
1433
+
1434
+ .screen-tag-toolbar {
1435
+ display: flex;
1436
+ flex-wrap: wrap;
1437
+ align-items: flex-end;
1438
+ gap: 0.75rem;
1439
+ margin: 0.75rem 0 1rem;
1440
+ }
1441
+
1442
+ .manage-tag-list {
1443
+ list-style: none;
1444
+ margin: 0.75rem 0;
1445
+ padding: 0;
1446
+ display: grid;
1447
+ gap: 0.4rem;
1448
+ }
1449
+
1450
+ .manage-tag-row {
1451
+ display: flex;
1452
+ align-items: center;
1453
+ gap: 0.4rem;
1454
+ }
1455
+
1456
+ .manage-tag-row > span {
1457
+ flex: 1;
1458
+ min-width: 0;
1459
+ word-break: break-all;
1460
+ }
1461
+
1462
+ .manage-tag-rename,
1463
+ .manage-tag-create input {
1464
+ flex: 1;
1465
+ min-width: 0;
1466
+ box-sizing: border-box;
1467
+ padding: 0.4rem 0.5rem;
1468
+ border: 1px solid #d4d4d8;
1469
+ border-radius: 8px;
1470
+ font: inherit;
1471
+ }
1472
+
1473
+ .manage-tag-create {
1474
+ display: flex;
1475
+ gap: 0.4rem;
1476
+ }
1477
+
1478
+ .manage-tag-empty {
1479
+ color: #71717a;
1480
+ font-size: 0.85rem;
1481
+ }
1482
+
1483
+ .manage-tag-error {
1484
+ min-height: 1.2em;
1485
+ margin: 0.6rem 0 0;
1486
+ color: #b42318;
1487
+ font-size: 0.85rem;
1488
+ }
1489
+
1490
+ .device-tag-picker {
1491
+ position: relative;
1492
+ flex: 1 1 8rem;
1493
+ min-width: 0;
1494
+ }
1495
+
1496
+ .device-tag-picker input {
1497
+ width: 100%;
1498
+ }
1499
+
1500
+ .device-tag-picker .tag-rule-options {
1501
+ z-index: 5;
1502
+ }
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "my-cms",
3
- "version": "1.1.5",
3
+ "version": "1.1.7",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "my-cms",
9
- "version": "1.1.5",
9
+ "version": "1.1.7",
10
10
  "dependencies": {
11
- "@tomorrowos/sdk": "^1.1.5",
11
+ "@tomorrowos/sdk": "^1.1.7",
12
12
  "dotenv": "^17.2.3",
13
13
  "tsx": "^4.19.0"
14
14
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "my-cms",
3
- "version": "1.1.5",
3
+ "version": "1.1.7",
4
4
  "description": "TomorrowOS CMS for Vercel / v0 Publish (Fluid Function + WebSockets + optional Next Preview).",
5
5
  "private": true,
6
6
  "type": "module",
@@ -16,7 +16,7 @@
16
16
  "build": "node -e \"process.exit(0)\""
17
17
  },
18
18
  "dependencies": {
19
- "@tomorrowos/sdk": "^1.1.5",
19
+ "@tomorrowos/sdk": "^1.1.7",
20
20
  "dotenv": "^17.2.3",
21
21
  "tsx": "^4.19.0"
22
22
  },