Skip to content

Commit 64f58d8

Browse files
authored
Dark mode in initializr and fixing build to update to latest version of plugin
1 parent 14625cd commit 64f58d8

19 files changed

Lines changed: 458 additions & 27 deletions

File tree

.github/workflows/initializr-cn1-version-pr.yml

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@ name: Initializr CN1 Version PR
33
on:
44
push:
55
tags:
6-
- "v*"
7-
- "[0-9]*"
6+
- "*"
7+
release:
8+
types:
9+
- published
810

911
permissions:
1012
contents: write
@@ -18,21 +20,22 @@ jobs:
1820
uses: actions/checkout@v4
1921

2022
- name: Update Initializr Codename One versions
21-
run: ./scripts/initializr/update-cn1-version.sh "${GITHUB_REF_NAME}"
23+
run: ./scripts/initializr/update-cn1-version.sh "${{ github.event.release.tag_name || github.ref_name }}"
2224

2325
- name: Create pull request
2426
uses: peter-evans/create-pull-request@v6
2527
with:
26-
commit-message: "scripts/initializr: bump Codename One versions to ${{ github.ref_name }}"
27-
title: "scripts/initializr: bump Codename One versions to ${{ github.ref_name }}"
28+
commit-message: "scripts/initializr: bump Codename One versions to ${{ github.event.release.tag_name || github.ref_name }}"
29+
title: "scripts/initializr: bump Codename One versions to ${{ github.event.release.tag_name || github.ref_name }}"
2830
body: |
29-
Automated update of Codename One versions in `scripts/initializr` after release `${{ github.ref_name }}`.
31+
Automated update of Codename One versions in `scripts/initializr` after release `${{ github.event.release.tag_name || github.ref_name }}`.
3032
3133
Updated:
3234
- All `scripts/initializr/**/pom.xml` files containing `cn1.plugin.version`
3335
- `scripts/initializr/common/src/main/java/com/codename1/initializr/model/GeneratorModel.java`
3436
- `scripts/initializr/common/src/test/java/com/codename1/initializr/model/GeneratorModelMatrixTest.java`
35-
branch: automation/initializr-cn1-version-${{ github.ref_name }}
37+
- Embedded root `pom.xml` in `scripts/initializr/common/src/main/resources/common.zip`
38+
branch: automation/initializr-cn1-version-${{ github.event.release.tag_name || github.ref_name }}
3639
delete-branch: true
3740
labels: |
3841
automation

.github/workflows/pr.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ on:
1313
- '**/*.md'
1414
- '.github/workflows/developer-guide-docs.yml'
1515
- '.github/workflows/website-docs.yml'
16+
- '.github/workflows/initializr-cn1-version-pr.yml'
1617
- 'CodenameOneDesigner/**'
1718
- 'Ports/IOSPort/**'
1819
push:
@@ -27,6 +28,7 @@ on:
2728
- '**/*.md'
2829
- '.github/workflows/developer-guide-docs.yml'
2930
- '.github/workflows/website-docs.yml'
31+
- '.github/workflows/initializr-cn1-version-pr.yml'
3032
- 'CodenameOneDesigner/**'
3133
- 'Ports/IOSPort/**'
3234

.github/workflows/website-docs.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@ on:
55
types: [opened, synchronize, reopened, ready_for_review]
66
paths:
77
- 'docs/website/**'
8+
- 'scripts/initializr/**'
89
- 'scripts/website/**'
910
- '.github/workflows/website-docs.yml'
1011
push:
1112
branches: [main, master]
1213
paths:
1314
- 'docs/website/**'
15+
- 'scripts/initializr/**'
1416
- 'scripts/website/**'
1517
- '.github/workflows/website-docs.yml'
1618
workflow_dispatch:

docs/website/layouts/_default/initializr.html

Lines changed: 66 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,30 @@
2020
</section>
2121

2222
<style>
23+
:root {
24+
--cn1-initializr-bg: #eef3ff;
25+
--cn1-initializr-loader-bg: #eef3ff;
26+
--cn1-initializr-loader-text: #1d2638;
27+
--cn1-initializr-loader-progress-bg: rgba(255, 255, 255, 0.72);
28+
--cn1-initializr-loader-progress-border: rgba(49, 105, 230, 0.25);
29+
}
30+
31+
body.dark,
32+
body.cn1-initializr-dark {
33+
--cn1-initializr-bg: #0a111d;
34+
--cn1-initializr-loader-bg: #0a111d;
35+
--cn1-initializr-loader-text: #d8e4ff;
36+
--cn1-initializr-loader-progress-bg: rgba(10, 18, 31, 0.86);
37+
--cn1-initializr-loader-progress-border: rgba(84, 128, 221, 0.45);
38+
}
39+
2340
.cn1-initializr-page {
2441
height: 100%;
2542
width: 100%;
2643
margin: 0;
2744
padding: 0;
2845
box-sizing: border-box;
46+
background: var(--cn1-initializr-bg);
2947
}
3048

3149
.cn1-initializr-shell {
@@ -34,7 +52,7 @@
3452
overflow: hidden;
3553
border: 0;
3654
border-radius: 0;
37-
background: transparent;
55+
background: var(--cn1-initializr-bg);
3856
box-shadow: none;
3957
}
4058

@@ -48,8 +66,9 @@
4866
z-index: 2;
4967
text-align: center;
5068
padding: 2rem;
51-
color: #1d2638;
52-
background:
69+
color: var(--cn1-initializr-loader-text);
70+
background-color: var(--cn1-initializr-loader-bg);
71+
background-image:
5372
radial-gradient(1000px 420px at 20% 0%, rgba(99, 142, 255, 0.22), rgba(99, 142, 255, 0) 65%),
5473
radial-gradient(720px 360px at 100% 100%, rgba(60, 173, 216, 0.2), rgba(60, 173, 216, 0) 65%);
5574
transition: opacity 220ms ease-out, visibility 220ms ease-out;
@@ -60,8 +79,11 @@
6079
visibility: hidden;
6180
}
6281

63-
body.dark .cn1-initializr-loader {
64-
color: #d8e4ff;
82+
body.dark .cn1-initializr-loader,
83+
body.cn1-initializr-dark .cn1-initializr-loader {
84+
background-image:
85+
radial-gradient(1000px 420px at 20% 0%, rgba(80, 120, 216, 0.26), rgba(80, 120, 216, 0) 65%),
86+
radial-gradient(720px 360px at 100% 100%, rgba(52, 168, 196, 0.24), rgba(52, 168, 196, 0) 65%);
6587
}
6688

6789
.cn1-initializr-loader .icon {
@@ -85,8 +107,8 @@
85107
height: 9px;
86108
border-radius: 999px;
87109
overflow: hidden;
88-
border: 1px solid rgba(49, 105, 230, 0.25);
89-
background: rgba(255, 255, 255, 0.7);
110+
border: 1px solid var(--cn1-initializr-loader-progress-border);
111+
background: var(--cn1-initializr-loader-progress-bg);
90112
}
91113

92114
.cn1-loader-progress-bar {
@@ -110,7 +132,7 @@
110132
width: 100%;
111133
height: 100%;
112134
border: 0;
113-
background: transparent;
135+
background: var(--cn1-initializr-bg);
114136
}
115137

116138
@keyframes cn1-spin {
@@ -143,15 +165,51 @@
143165
var frame = document.getElementById("cn1-initializr-frame");
144166
var loader = document.getElementById("cn1-initializr-loader");
145167
var siteHeader = document.querySelector(".header");
168+
var mediaQuery = window.matchMedia ? window.matchMedia("(prefers-color-scheme: dark)") : null;
146169

147170
function syncHeight() {
148171
var h = siteHeader ? siteHeader.offsetHeight : 76;
149172
root.style.setProperty("--cn1-initializr-header-height", h + "px");
150173
}
151174

175+
function syncInitializrTheme() {
176+
var pref = "";
177+
var dark = false;
178+
try {
179+
pref = localStorage.getItem("pref-theme") || "";
180+
} catch (e) {
181+
pref = "";
182+
}
183+
if (pref === "dark") {
184+
dark = true;
185+
} else if (pref === "light") {
186+
dark = false;
187+
} else {
188+
dark = body.classList.contains("dark") || !!(mediaQuery && mediaQuery.matches);
189+
}
190+
body.classList.toggle("cn1-initializr-dark", dark);
191+
}
192+
152193
body.classList.add("cn1-initializr-page-body");
153194
syncHeight();
195+
syncInitializrTheme();
154196
window.addEventListener("resize", syncHeight);
197+
document.addEventListener("click", function (evt) {
198+
if (evt.target && evt.target.id === "theme-toggle") {
199+
window.requestAnimationFrame(syncInitializrTheme);
200+
}
201+
});
202+
if (mediaQuery && mediaQuery.addEventListener) {
203+
mediaQuery.addEventListener("change", syncInitializrTheme);
204+
} else if (mediaQuery && mediaQuery.addListener) {
205+
mediaQuery.addListener(syncInitializrTheme);
206+
}
207+
if (window.MutationObserver) {
208+
new MutationObserver(syncInitializrTheme).observe(body, {
209+
attributes: true,
210+
attributeFilter: ["class"]
211+
});
212+
}
155213

156214
if (frame && loader) {
157215
frame.addEventListener("load", function () {
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.codename1.initializr;
2+
3+
public class WebsiteThemeNativeImpl {
4+
public boolean isDarkMode() {
5+
return false;
6+
}
7+
8+
public boolean isSupported() {
9+
return false;
10+
}
11+
12+
}

0 commit comments

Comments
 (0)