diff --git a/.gitignore b/.gitignore index 12a7e76..b67ac09 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ dist/ static/js/*.js static/js/*.js.map screenshots/*.png +mock-data.yml diff --git a/index.html b/index.html index 12e0001..1286063 100644 --- a/index.html +++ b/index.html @@ -6,31 +6,42 @@ Clock - Screenly Edge App - + -
+
-
-
-
--
-
- --:-- - -- +
+
+
--
+
+ --:-- + --
-
- -- -
+
+ -- +
weather icon - --° + --°
diff --git a/package.json b/package.json index 9b18253..701c5f2 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "dependencies": {}, "prettier": "./.prettierrc.json", "devDependencies": { - "@screenly/edge-apps": "^1.2.1", + "@screenly/edge-apps": "^1.3.0", "@playwright/test": "^1.60.0", "@types/bun": "^1.3.14", "@types/jsdom": "^28.0.3", diff --git a/screenshots/1080x1920.webp b/screenshots/1080x1920.webp index 21a5e68..19b9248 100644 Binary files a/screenshots/1080x1920.webp and b/screenshots/1080x1920.webp differ diff --git a/screenshots/1280x720.webp b/screenshots/1280x720.webp index 3d0df4a..e3d8445 100644 Binary files a/screenshots/1280x720.webp and b/screenshots/1280x720.webp differ diff --git a/screenshots/1920x1080.webp b/screenshots/1920x1080.webp index 1b2de67..7ccf737 100644 Binary files a/screenshots/1920x1080.webp and b/screenshots/1920x1080.webp differ diff --git a/screenshots/2160x3840.webp b/screenshots/2160x3840.webp index 2172827..d41d8fd 100644 Binary files a/screenshots/2160x3840.webp and b/screenshots/2160x3840.webp differ diff --git a/screenshots/2160x4096.webp b/screenshots/2160x4096.webp index 0c97b29..5f2e6fc 100644 Binary files a/screenshots/2160x4096.webp and b/screenshots/2160x4096.webp differ diff --git a/screenshots/3840x2160.webp b/screenshots/3840x2160.webp index 4436e27..7fe895a 100644 Binary files a/screenshots/3840x2160.webp and b/screenshots/3840x2160.webp differ diff --git a/screenshots/4096x2160.webp b/screenshots/4096x2160.webp index bf558ad..11f4e53 100644 Binary files a/screenshots/4096x2160.webp and b/screenshots/4096x2160.webp differ diff --git a/screenshots/480x800.webp b/screenshots/480x800.webp index 7d3f73a..ad438c3 100644 Binary files a/screenshots/480x800.webp and b/screenshots/480x800.webp differ diff --git a/screenshots/720x1280.webp b/screenshots/720x1280.webp index 83a3fc1..dba34f6 100644 Binary files a/screenshots/720x1280.webp and b/screenshots/720x1280.webp differ diff --git a/screenshots/800x480.webp b/screenshots/800x480.webp index ffffe32..027baab 100644 Binary files a/screenshots/800x480.webp and b/screenshots/800x480.webp differ diff --git a/src/css/style.css b/src/css/style.css index 952eb6e..4431213 100644 --- a/src/css/style.css +++ b/src/css/style.css @@ -1,5 +1,15 @@ -/* Import Screenly Design System */ -@import '@screenly/edge-apps/styles'; +/* Skip Tailwind's preflight: it resets `border` on every element (including + custom-element hosts like ), which strips their shadow-DOM + :host styling. The design system's own reset.css already normalizes + box-sizing/margin/padding, so preflight isn't needed here. */ +@layer theme, base, utilities; + +@import 'tailwindcss/theme.css' layer(theme); +/* @screenly/edge-apps/styles goes in the `base` layer so Tailwind utilities + (declared after `base` above) always win the cascade, regardless of + selector specificity — unlayered CSS otherwise beats layered CSS. */ +@import '@screenly/edge-apps/styles' layer(base); +@import 'tailwindcss/utilities.css' layer(utilities); /* App-specific styles */ @@ -10,153 +20,3 @@ font-style: normal; font-display: swap; } - -* { - box-sizing: border-box; -} - -body { - margin: 0; - padding: 0; - overflow: hidden; - color: white; - font-family: 'Inter', system-ui, sans-serif; - background: url('/static/images/bg.webp') no-repeat center center; - background-size: cover; - text-shadow: 0 2px 6px rgba(0, 0, 0, 0.25); -} - -body::before { - content: ''; - position: fixed; - inset: 0; - z-index: var(--z-index-backdrop); - pointer-events: none; - background: rgba(0, 0, 0, 0.2); - backdrop-filter: blur(7px); -} - -.text-shadow { - text-shadow: 0 2px 6px rgba(0, 0, 0, 0.25); -} - -auto-scaler { - position: relative; - z-index: var(--z-index-content); -} - -#app { - width: 100%; - height: 100%; -} - -.content { - margin-top: 160px; - margin-left: 300px; -} - -.current { - display: flex; - flex-direction: column; -} - -.city { - font-size: 32px; - text-shadow: 0 2px 6px rgba(0, 0, 0, 0.25); -} - -.time-wrapper { - display: flex; - align-items: baseline; - gap: 0.5rem; -} - -.time { - font-family: 'Kelly Slab', serif; - font-size: 160px; - font-weight: 400; - line-height: 1; - letter-spacing: -5px; - margin: 1rem 0; - text-shadow: 0 2px 6px rgba(0, 0, 0, 0.25); -} - -.clock-period { - font-size: 2.25rem; - opacity: 0.9; -} - -.status-row { - display: inline-flex; - align-items: center; - gap: 1rem; - padding: 0.625rem 1.25rem; - border-radius: 1rem; - border: 1px solid rgba(255, 255, 255, 0.06); - background: linear-gradient( - 135deg, - rgba(255, 255, 255, 0.06) 0%, - rgba(255, 255, 255, 0.01) 100% - ); - box-shadow: - 0 13.438px 40.315px 0 rgba(0, 0, 0, 0.15), - 0 1.68px 0 0 rgba(255, 255, 255, 0.1) inset, - 0 -1.68px 0 0 rgba(255, 255, 255, 0.03) inset; - width: fit-content; -} - -.date { - font-size: 1rem; - text-shadow: 0 2px 6px rgba(0, 0, 0, 0.25); -} - -.temperature-wrapper { - display: flex; - align-items: center; - gap: 0.375rem; -} - -.temperature { - font-size: 1rem; - text-shadow: 0 2px 6px rgba(0, 0, 0, 0.25); -} - -.temperature-icon { - width: 1rem; - height: 1rem; -} - -@media (orientation: portrait) { - #app { - display: flex; - flex-direction: column; - height: 100%; - } - - main.content { - margin: 0; - display: flex; - flex-direction: column; - justify-content: center; - align-items: flex-start; - flex: 1; - height: 100%; - padding-left: 60px; - } - - .current { - margin-left: 60px; - } - - .city { - font-size: 40px; - } - - .time { - font-size: 180px; - } - - .status-row { - font-size: 24px; - } -}