wordmark 0.21.0 → 0.22.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -556
- data/README.md +17 -33
- data/art/blackbox.svg +6 -0
- data/art/data.svg +8 -0
- data/art/dataplate.svg +12 -0
- data/art/drive.svg +6 -0
- data/art/hangar.svg +6 -0
- data/art/index.html.erb +25 -25
- data/art/lens.svg +9 -0
- data/art/mirroring.svg +8 -0
- data/art/refinery.svg +9 -0
- data/art/rollaway.svg +12 -0
- data/art/stockroom.svg +12 -0
- data/art/tower.svg +12 -0
- data/art/wordmark.svg +3 -0
- data/lib/wordmark/engine.rb +7 -16
- data/lib/wordmark/helpers/heads.rb +6 -6
- data/lib/wordmark/marks.rb +14 -4
- data/lib/wordmark/version.rb +1 -1
- data/lib/wordmark.rb +1 -1
- data/public/_headers +0 -4
- data/public/bh/js/bh.js +15 -15
- data/public/down/{goldrush.html → blackbox.html} +5 -5
- data/public/down/{fountain.html → data.html} +5 -5
- data/public/down/dataplate.html +87 -0
- data/public/down/drive.html +87 -0
- data/public/down/{houston.html → hangar.html} +5 -5
- data/public/down/lens.html +87 -0
- data/public/down/{autopilot.html → mirroring.html} +5 -5
- data/public/down/refinery.html +87 -0
- data/public/down/rollaway.html +87 -0
- data/public/down/stockroom.html +87 -0
- data/public/down/tower.html +87 -0
- data/public/down/wordmark.html +87 -0
- data/public/favicon/blackbox-180.png +0 -0
- data/public/favicon/blackbox-192.png +0 -0
- data/public/favicon/blackbox-512.png +0 -0
- data/public/favicon/blackbox-96.png +0 -0
- data/public/favicon/blackbox-dev.svg +6 -0
- data/public/favicon/blackbox.ico +0 -0
- data/public/favicon/blackbox.svg +6 -0
- data/public/favicon/blackbox.webmanifest +12 -0
- data/public/favicon/data-180.png +0 -0
- data/public/favicon/data-192.png +0 -0
- data/public/favicon/data-512.png +0 -0
- data/public/favicon/data-96.png +0 -0
- data/public/favicon/data-dev.svg +8 -0
- data/public/favicon/data.ico +0 -0
- data/public/favicon/data.svg +8 -0
- data/public/favicon/data.webmanifest +12 -0
- data/public/favicon/dataplate-180.png +0 -0
- data/public/favicon/dataplate-192.png +0 -0
- data/public/favicon/dataplate-512.png +0 -0
- data/public/favicon/dataplate-96.png +0 -0
- data/public/favicon/dataplate-dev.svg +12 -0
- data/public/favicon/dataplate.ico +0 -0
- data/public/favicon/dataplate.svg +12 -0
- data/public/favicon/dataplate.webmanifest +12 -0
- data/public/favicon/drive-180.png +0 -0
- data/public/favicon/drive-192.png +0 -0
- data/public/favicon/drive-512.png +0 -0
- data/public/favicon/drive-96.png +0 -0
- data/public/favicon/drive-dev.svg +6 -0
- data/public/favicon/drive.ico +0 -0
- data/public/favicon/drive.svg +6 -0
- data/public/favicon/drive.webmanifest +12 -0
- data/public/favicon/hangar-180.png +0 -0
- data/public/favicon/hangar-192.png +0 -0
- data/public/favicon/hangar-512.png +0 -0
- data/public/favicon/hangar-96.png +0 -0
- data/public/favicon/hangar-dev.svg +6 -0
- data/public/favicon/hangar.ico +0 -0
- data/public/favicon/hangar.svg +6 -0
- data/public/favicon/hangar.webmanifest +12 -0
- data/public/favicon/lens-180.png +0 -0
- data/public/favicon/lens-192.png +0 -0
- data/public/favicon/lens-512.png +0 -0
- data/public/favicon/lens-96.png +0 -0
- data/public/favicon/lens-dev.svg +9 -0
- data/public/favicon/lens.ico +0 -0
- data/public/favicon/lens.svg +9 -0
- data/public/favicon/lens.webmanifest +12 -0
- data/public/favicon/mirroring-180.png +0 -0
- data/public/favicon/mirroring-192.png +0 -0
- data/public/favicon/mirroring-512.png +0 -0
- data/public/favicon/mirroring-96.png +0 -0
- data/public/favicon/mirroring-dev.svg +8 -0
- data/public/favicon/mirroring.ico +0 -0
- data/public/favicon/mirroring.svg +8 -0
- data/public/favicon/mirroring.webmanifest +12 -0
- data/public/favicon/refinery-180.png +0 -0
- data/public/favicon/refinery-192.png +0 -0
- data/public/favicon/refinery-512.png +0 -0
- data/public/favicon/refinery-96.png +0 -0
- data/public/favicon/refinery-dev.svg +9 -0
- data/public/favicon/refinery.ico +0 -0
- data/public/favicon/refinery.svg +9 -0
- data/public/favicon/refinery.webmanifest +12 -0
- data/public/favicon/rollaway-180.png +0 -0
- data/public/favicon/rollaway-192.png +0 -0
- data/public/favicon/rollaway-512.png +0 -0
- data/public/favicon/rollaway-96.png +0 -0
- data/public/favicon/rollaway-dev.svg +12 -0
- data/public/favicon/rollaway.ico +0 -0
- data/public/favicon/rollaway.svg +12 -0
- data/public/favicon/rollaway.webmanifest +12 -0
- data/public/favicon/stockroom-180.png +0 -0
- data/public/favicon/stockroom-192.png +0 -0
- data/public/favicon/stockroom-512.png +0 -0
- data/public/favicon/stockroom-96.png +0 -0
- data/public/favicon/stockroom-dev.svg +12 -0
- data/public/favicon/stockroom.ico +0 -0
- data/public/favicon/stockroom.svg +12 -0
- data/public/favicon/stockroom.webmanifest +12 -0
- data/public/favicon/tower-180.png +0 -0
- data/public/favicon/tower-192.png +0 -0
- data/public/favicon/tower-512.png +0 -0
- data/public/favicon/tower-96.png +0 -0
- data/public/favicon/tower-dev.svg +12 -0
- data/public/favicon/tower.ico +0 -0
- data/public/favicon/tower.svg +12 -0
- data/public/favicon/tower.webmanifest +12 -0
- data/public/favicon/wordmark-180.png +0 -0
- data/public/favicon/wordmark-192.png +0 -0
- data/public/favicon/wordmark-512.png +0 -0
- data/public/favicon/wordmark-96.png +0 -0
- data/public/favicon/wordmark-dev.svg +3 -0
- data/public/favicon/wordmark.ico +0 -0
- data/public/favicon/wordmark.svg +3 -0
- data/public/favicon/wordmark.webmanifest +12 -0
- data/public/index.html +49 -33
- data/public/logo/blackbox.png +0 -0
- data/public/logo/blackbox.svg +6 -0
- data/public/logo/data.png +0 -0
- data/public/logo/data.svg +8 -0
- data/public/logo/dataplate.png +0 -0
- data/public/logo/dataplate.svg +12 -0
- data/public/logo/drive.png +0 -0
- data/public/logo/drive.svg +6 -0
- data/public/logo/hangar.png +0 -0
- data/public/logo/hangar.svg +6 -0
- data/public/logo/lens.png +0 -0
- data/public/logo/lens.svg +9 -0
- data/public/logo/mirroring.png +0 -0
- data/public/logo/mirroring.svg +8 -0
- data/public/logo/refinery.png +0 -0
- data/public/logo/refinery.svg +9 -0
- data/public/logo/rollaway.png +0 -0
- data/public/logo/rollaway.svg +12 -0
- data/public/logo/stockroom.png +0 -0
- data/public/logo/stockroom.svg +12 -0
- data/public/logo/tower.png +0 -0
- data/public/logo/tower.svg +12 -0
- data/public/logo/wordmark.png +0 -0
- data/public/logo/wordmark.svg +3 -0
- metadata +146 -70
- data/art/autopilot.svg +0 -9
- data/art/fountain.svg +0 -9
- data/art/goldrush.svg +0 -7
- data/art/houston.svg +0 -8
- data/public/favicon/autopilot-180.png +0 -0
- data/public/favicon/autopilot-192.png +0 -0
- data/public/favicon/autopilot-512.png +0 -0
- data/public/favicon/autopilot-96.png +0 -0
- data/public/favicon/autopilot-dev.svg +0 -9
- data/public/favicon/autopilot.ico +0 -0
- data/public/favicon/autopilot.svg +0 -9
- data/public/favicon/autopilot.webmanifest +0 -12
- data/public/favicon/fountain-180.png +0 -0
- data/public/favicon/fountain-192.png +0 -0
- data/public/favicon/fountain-512.png +0 -0
- data/public/favicon/fountain-96.png +0 -0
- data/public/favicon/fountain-dev.svg +0 -9
- data/public/favicon/fountain.ico +0 -0
- data/public/favicon/fountain.svg +0 -9
- data/public/favicon/fountain.webmanifest +0 -12
- data/public/favicon/goldrush-180.png +0 -0
- data/public/favicon/goldrush-192.png +0 -0
- data/public/favicon/goldrush-512.png +0 -0
- data/public/favicon/goldrush-96.png +0 -0
- data/public/favicon/goldrush-dev.svg +0 -7
- data/public/favicon/goldrush.ico +0 -0
- data/public/favicon/goldrush.svg +0 -7
- data/public/favicon/goldrush.webmanifest +0 -12
- data/public/favicon/houston-180.png +0 -0
- data/public/favicon/houston-192.png +0 -0
- data/public/favicon/houston-512.png +0 -0
- data/public/favicon/houston-96.png +0 -0
- data/public/favicon/houston-dev.svg +0 -8
- data/public/favicon/houston.ico +0 -0
- data/public/favicon/houston.svg +0 -8
- data/public/favicon/houston.webmanifest +0 -12
- data/public/logo/autopilot.png +0 -0
- data/public/logo/autopilot.svg +0 -9
- data/public/logo/fountain.png +0 -0
- data/public/logo/fountain.svg +0 -9
- data/public/logo/goldrush.png +0 -0
- data/public/logo/goldrush.svg +0 -7
- data/public/logo/houston.png +0 -0
- data/public/logo/houston.svg +0 -8
- data/public/v0.21.0/bh/css/bh.css +0 -1
- data/public/v0.21.0/bh/js/bh.js +0 -152
- data/public/v0.21.0/bh/theme/bootstrap.css +0 -10
- data/public/v0.21.0/bh/theme/dawn.css +0 -189
- data/public/v0.21.0/bh/theme/dracula.css +0 -189
- data/public/v0.21.0/bh/theme/gruvbox.css +0 -189
- data/public/v0.21.0/bh/theme/monokai.css +0 -190
- data/public/v0.21.0/bh/theme/nord.css +0 -189
- data/public/v0.21.0/bh/theme/one_dark.css +0 -189
- data/public/v0.21.0/bh/theme/solarized.css +0 -188
- data/public/v0.21.0/bh/theme/tokyo_night.css +0 -189
- data/public/v0.21.0/css/easyfaa.css +0 -1
- data/public/v0.21.0/font/bootstrap-icons-FRBPO3H7.woff2 +0 -0
- data/public/v0.21.0/font/ibm-plex-sans-500-latin-LA7QXWWL.woff2 +0 -0
- data/public/v0.21.0/font/ibm-plex-sans-500-latin-ext-X4QHZICY.woff2 +0 -0
- data/public/v0.21.0/font/ibm-plex-sans-500-latin-ext.woff2 +0 -0
- data/public/v0.21.0/font/ibm-plex-sans-500-latin.woff2 +0 -0
- data/public/v0.21.0/font/ibm-plex-sans-500-vietnamese-24B6BSND.woff2 +0 -0
- data/public/v0.21.0/font/ibm-plex-sans-500-vietnamese.woff2 +0 -0
- data/public/v0.21.0/js/easyfaa.js +0 -1
data/README.md
CHANGED
|
@@ -16,7 +16,7 @@ Published three ways from this repo:
|
|
|
16
16
|
|
|
17
17
|
| Surface | Where | What it is for |
|
|
18
18
|
| --- | --- | --- |
|
|
19
|
-
| Site | https://design.easyfaa.com
|
|
19
|
+
| Site | https://design.easyfaa.com | A stable URL for every asset, and a showcase of them |
|
|
20
20
|
| Gem | `wordmark` on RubyGems | A Rails engine: serves the same tree from the gem, and the helpers |
|
|
21
21
|
| npm | `easyfaa` | The same built stylesheet and script, for any CDN that carries it |
|
|
22
22
|
|
|
@@ -63,21 +63,19 @@ after it, and nothing else. A host wanting more copies
|
|
|
63
63
|
it into its own `app/views/layouts/`, which wins on being earlier in the view paths.
|
|
64
64
|
|
|
65
65
|
Which of the family an app is, the gem reads off the Rails application's own name: the
|
|
66
|
-
`
|
|
66
|
+
`Tower` of `Tower::Application`. That is what its tab wears, what `easyfaa_head_tags`
|
|
67
67
|
links without an argument, and whose page the engine answers `/down.html` with — the app's
|
|
68
68
|
mark in the middle and the house's at the foot. An app the family has no mark for wears the
|
|
69
|
-
horizon. The same page stands at `https://design.easyfaa.com/down/
|
|
69
|
+
horizon. The same page stands at `https://design.easyfaa.com/down/tower` for Heroku's
|
|
70
70
|
`MAINTENANCE_PAGE_URL`, which has to be somewhere the app is not — without the `.html`,
|
|
71
71
|
which Pages redirects away from.
|
|
72
72
|
|
|
73
73
|
With the gem in the bundle an app serves `/css/easyfaa.css`, `/js/easyfaa.js`,
|
|
74
|
-
`/theme/*`, `/font/*`, `/logo/*` and `/favicon/*` itself
|
|
75
|
-
`/v0.15.0/`, which is what the head helper links, cached for a year — answers a 400, 404, 406,
|
|
76
|
-
422 or 500 with the house's own page, and answers `/down.html` with this app's.
|
|
74
|
+
`/theme/*`, `/font/*`, `/logo/*` and `/favicon/*` itself, answers a 400, 404, 406, 422 or 500 with the house's own page, and answers `/down.html` with this app's.
|
|
77
75
|
|
|
78
76
|
## Which app this is
|
|
79
77
|
|
|
80
|
-
Read off the Rails application's own name, the `
|
|
78
|
+
Read off the Rails application's own name, the `Tower` of `Tower::Application`. That is
|
|
81
79
|
what its tab wears, what `easyfaa_head_tags` links without an argument, and whose page the
|
|
82
80
|
engine answers `/down.html` with — the app's mark in the middle and the house's at the foot. An
|
|
83
81
|
app the family has no mark for wears the horizon.
|
|
@@ -98,10 +96,10 @@ app the family has no mark for wears the horizon.
|
|
|
98
96
|
differently, so equal sizes never align: every mark is rendered at a box of its own and
|
|
99
97
|
pushed down by its own nudge, and its ink then stands on the baseline. %>
|
|
100
98
|
<%= easyfaa_logo %>
|
|
101
|
-
<%= easyfaa_logo app: :
|
|
99
|
+
<%= easyfaa_logo app: :tower, href: root_path, class: 'fs-3' %>
|
|
102
100
|
|
|
103
101
|
<%# An asset on the design site, for a page this app does not serve — a mail, say. %>
|
|
104
|
-
<%= image_tag easyfaa_url('logo/
|
|
102
|
+
<%= image_tag easyfaa_url('logo/tower.png') %>
|
|
105
103
|
```
|
|
106
104
|
|
|
107
105
|
## The layout
|
|
@@ -181,24 +179,16 @@ A page not on the gem links the two files from the site, and nothing else:
|
|
|
181
179
|
<script type='module' src='https://design.easyfaa.com/js/easyfaa.js'></script>
|
|
182
180
|
```
|
|
183
181
|
|
|
184
|
-
Those follow the latest release.
|
|
185
|
-
|
|
182
|
+
Those follow the latest release. bh's layer goes under the house's, from the same place, since
|
|
183
|
+
the house is drawn on top of it and neither stands alone:
|
|
186
184
|
|
|
187
185
|
```html
|
|
188
|
-
<link rel='stylesheet' href='https://design.easyfaa.com/
|
|
189
|
-
<
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
bh's layer goes under the house's, from the same place, since the house is drawn on top of it
|
|
193
|
-
and neither stands alone:
|
|
194
|
-
|
|
195
|
-
```html
|
|
196
|
-
<link rel='stylesheet' href='https://design.easyfaa.com/v0.20.0/bh/css/bh.css'>
|
|
197
|
-
<link rel='stylesheet' href='https://design.easyfaa.com/v0.20.0/css/easyfaa.css'>
|
|
186
|
+
<link rel='stylesheet' href='https://design.easyfaa.com/bh/css/bh.css'>
|
|
187
|
+
<link rel='stylesheet' href='https://design.easyfaa.com/css/easyfaa.css'>
|
|
198
188
|
```
|
|
199
189
|
|
|
200
190
|
The palettes are beside it, at `bh/theme/nord.css` and the rest — bh's nine, copied out of the
|
|
201
|
-
gem at build time.
|
|
191
|
+
gem at build time.
|
|
202
192
|
|
|
203
193
|
A host with a Content Security Policy allows whichever origin it names for `style-src`,
|
|
204
194
|
`script-src` and `font-src`.
|
|
@@ -235,22 +225,16 @@ serves them, and `spec.files` is `git ls-files`. `rake assets` rebuilds and fail
|
|
|
235
225
|
result is committed, so a source edit cannot ship without its build.
|
|
236
226
|
|
|
237
227
|
While the gem is read from a path, an app in development serves every file `no-cache`, so a
|
|
238
|
-
rebuild shows on the next reload
|
|
239
|
-
|
|
240
|
-
Every build also writes `public/v<version>/`, whole, with every URL inside pointing under
|
|
241
|
-
that prefix, until the tag `v<version>` exists; from then on the folder is never written
|
|
242
|
-
again, and a page that pinned it is owed the same bytes for good.
|
|
228
|
+
rebuild shows on the next reload, and so does an app in production: only a font is kept.
|
|
243
229
|
|
|
244
|
-
A release, in order: `CHANGELOG.md`, the version in `lib/
|
|
245
|
-
`package.json`, `bundle exec rake
|
|
246
|
-
|
|
247
|
-
site carries both the latest and the versioned copy.
|
|
230
|
+
A release, in order: `CHANGELOG.md`, the version in `lib/wordmark/version.rb` and
|
|
231
|
+
`package.json`, `bundle exec rake`, then commit, tag `v<version>`, `gem build` and `gem push`,
|
|
232
|
+
and fast-forward `production` to `main` so the site carries it.
|
|
248
233
|
|
|
249
234
|
## Cloudflare
|
|
250
235
|
|
|
251
236
|
The site is a Cloudflare Pages project named `design` on this repo: production branch
|
|
252
237
|
`production`, no build command, output directory `public`, custom domain
|
|
253
|
-
`design.easyfaa.com`. `main` deploys as the branch alias `main.design.pages.dev
|
|
254
|
-
`design.houseparty.dev` is a CNAME to. `public/_headers` adds the CORS header a cross-origin
|
|
238
|
+
`design.easyfaa.com`. `main` deploys as the branch alias `main.design.pages.dev`. `public/_headers` adds the CORS header a cross-origin
|
|
255
239
|
module script and font need, and marks the hashed fonts immutable; everything else keeps
|
|
256
240
|
Pages' default of revalidating on every load, so a URL never has to change between versions.
|
data/art/blackbox.svg
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
|
2
|
+
<g fill="none" stroke="#7e6317" style="stroke: light-dark(#7e6317, #ffd352)" stroke-width="36" stroke-linecap="round" stroke-linejoin="round">
|
|
3
|
+
<rect x="56" y="104" width="400" height="304" rx="28"/>
|
|
4
|
+
<path d="M112 264H184L216 184L264 344L304 224L328 264H400"/>
|
|
5
|
+
</g>
|
|
6
|
+
</svg>
|
data/art/data.svg
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
|
2
|
+
<g fill="none" stroke="#5aa9e6" stroke-width="36" stroke-linecap="round" stroke-linejoin="round">
|
|
3
|
+
<ellipse cx="256" cy="112" rx="176" ry="56"/>
|
|
4
|
+
<path d="M80 112V400A176 56 0 0 0 432 400V112"/>
|
|
5
|
+
<path d="M80 208A176 56 0 0 0 432 208"/>
|
|
6
|
+
<path d="M80 304A176 56 0 0 0 432 304"/>
|
|
7
|
+
</g>
|
|
8
|
+
</svg>
|
data/art/dataplate.svg
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
|
2
|
+
<g fill="none" stroke="#0b1e3a" style="stroke: light-dark(#0b1e3a, #cfe3f6)" stroke-width="36" stroke-linecap="round" stroke-linejoin="round">
|
|
3
|
+
<rect x="48" y="104" width="416" height="304" rx="28"/>
|
|
4
|
+
<circle cx="104" cy="160" r="6"/>
|
|
5
|
+
<circle cx="408" cy="160" r="6"/>
|
|
6
|
+
<circle cx="104" cy="352" r="6"/>
|
|
7
|
+
<circle cx="408" cy="352" r="6"/>
|
|
8
|
+
<path d="M168 200H344"/>
|
|
9
|
+
<path d="M168 256H344"/>
|
|
10
|
+
<path d="M168 312H280"/>
|
|
11
|
+
</g>
|
|
12
|
+
</svg>
|
data/art/drive.svg
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
|
2
|
+
<g fill="none" stroke="#0b1e3a" style="stroke: light-dark(#0b1e3a, #cfe3f6)" stroke-width="36" stroke-linecap="round" stroke-linejoin="round">
|
|
3
|
+
<circle cx="256" cy="256" r="208"/>
|
|
4
|
+
<path d="M256 152 346 204V308L256 360 166 308V204Z"/>
|
|
5
|
+
</g>
|
|
6
|
+
</svg>
|
data/art/hangar.svg
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
|
2
|
+
<g fill="none" stroke="#1b5e55" style="stroke: light-dark(#1b5e55, #9fd9cf)" stroke-width="36" stroke-linecap="round" stroke-linejoin="round">
|
|
3
|
+
<path d="M48 456V264A208 208 0 0 1 464 264V456Z"/>
|
|
4
|
+
<path d="M160 456V304H352V456"/>
|
|
5
|
+
</g>
|
|
6
|
+
</svg>
|
data/art/index.html.erb
CHANGED
|
@@ -10,18 +10,16 @@
|
|
|
10
10
|
<link rel='icon' href='favicon/design-96.png' type='image/png' sizes='96x96'>
|
|
11
11
|
<link rel='apple-touch-icon' href='favicon/design-180.png'>
|
|
12
12
|
<link rel='manifest' href='site.webmanifest'>
|
|
13
|
-
<!-- The same files every easyfaa page loads,
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
<link rel='stylesheet' href='
|
|
18
|
-
<
|
|
19
|
-
<
|
|
20
|
-
<script type='module' src='v<%= version %>/bh/js/bh.js'></script>
|
|
21
|
-
<script type='module' src='v<%= version %>/js/easyfaa.js'></script>
|
|
13
|
+
<!-- The same files every easyfaa page loads. Relative, so it reads the same on staging,
|
|
14
|
+
on production and from a folder on disk. -->
|
|
15
|
+
<link rel='stylesheet' href='bh/css/bh.css'>
|
|
16
|
+
<link rel='stylesheet' href='css/easyfaa.css'>
|
|
17
|
+
<link rel='stylesheet' href='bh/theme/bootstrap.css' data-recourse-theme=''>
|
|
18
|
+
<script type='module' src='bh/js/bh.js'></script>
|
|
19
|
+
<script type='module' src='js/easyfaa.js'></script>
|
|
22
20
|
<style>
|
|
23
21
|
/* The page's own chrome and nothing else: everything shown below is styled by
|
|
24
|
-
|
|
22
|
+
easyfaa.css alone, which is the point of showing it. */
|
|
25
23
|
.design-section { padding-block: 2rem; border-block-end: var(--bs-border-width) solid var(--bs-border-color); }
|
|
26
24
|
.design-section > p { max-width: 48rem; margin-inline: auto; }
|
|
27
25
|
.design-subsection { margin-block-start: 2.5rem; padding-block-start: 1.5rem; border-block-start: var(--bs-border-width) dashed var(--bs-border-color); }
|
|
@@ -36,7 +34,7 @@
|
|
|
36
34
|
<body class='text-center'>
|
|
37
35
|
<header class='container-fluid px-3 py-3 border-bottom d-flex flex-wrap justify-content-center align-items-baseline gap-3'>
|
|
38
36
|
<a class='lockup plex' href='#'><svg aria-hidden='true' style='width: 1.0515em; height: 1.0515em; top: 0.18625em' viewBox='0 0 512 512'><g fill='none' stroke='#5aa9e6' stroke-width='28' stroke-linecap='round' stroke-linejoin='round' transform='rotate(45 256 256)'><path d='M196 60 L316 60 L316 372 L196 372 Z'/><path d='M196 120 L316 120'/><path d='M196 372 L256 470 L316 372'/><path d='M232 431 L256 470 L280 431 Z' fill='#0b1e3a'/></g></svg>design</a>
|
|
39
|
-
<nav class='fg-2'>the <a href='#lockup'>lockups</a>, <a href='#theme'>themes</a>, <a href='#page'>pages</a>, <a href='#favicon'>icons</a> shared by <a href='https://
|
|
37
|
+
<nav class='fg-2'>the <a href='#lockup'>lockups</a>, <a href='#theme'>themes</a>, <a href='#page'>pages</a>, <a href='#favicon'>icons</a> shared by <a href='https://easyfaa.com' title='Tower'><img class='design-mark' src='logo/tower.svg' alt='Tower'></a> <a href='https://beta.easyannual.com' title='Hangar'><img class='design-mark' src='logo/hangar.svg' alt='Hangar'></a></nav>
|
|
40
38
|
</header>
|
|
41
39
|
|
|
42
40
|
<main class='container-fluid px-3'>
|
|
@@ -57,12 +55,6 @@
|
|
|
57
55
|
<span class='small fg-2 mt-1'>bh's bundle, and the controller that paints the wall</span>
|
|
58
56
|
</div>
|
|
59
57
|
</div>
|
|
60
|
-
<div class='col-12'>
|
|
61
|
-
<div class='card p-3'>
|
|
62
|
-
<strong>Pinned to a version — the latest is <%= version %></strong>
|
|
63
|
-
<span class='design-url'><a href='v<%= version %>/css/easyfaa.css'>v<%= version %>/css/easyfaa.css</a> · <a href='v<%= version %>/js/easyfaa.js'>v<%= version %>/js/easyfaa.js</a> · <a href='v<%= version %>/bh/theme/nord.css'>v<%= version %>/bh/theme/nord.css</a></span>
|
|
64
|
-
</div>
|
|
65
|
-
</div>
|
|
66
58
|
</div>
|
|
67
59
|
</section>
|
|
68
60
|
|
|
@@ -70,7 +62,7 @@
|
|
|
70
62
|
<h2>Themes</h2>
|
|
71
63
|
<button type='button' class='btn btn-outline theme-primary' data-controller='scheme' data-action='scheme#rotate'
|
|
72
64
|
data-scheme-themes-value='["bootstrap","dawn","dracula","gruvbox","monokai","nord","one_dark","solarized","tokyo_night"]'
|
|
73
|
-
data-scheme-path-value='
|
|
65
|
+
data-scheme-path-value='bh/theme' data-scheme-storage-value='recourse-scheme'>
|
|
74
66
|
<span class='recourse-scheme-light'><i class='bi bi-moon-fill'></i> Switch to dark</span>
|
|
75
67
|
<span class='recourse-scheme-dark'><i class='bi bi-sun-fill'></i> Switch to light</span>
|
|
76
68
|
</button>
|
|
@@ -89,9 +81,9 @@
|
|
|
89
81
|
</div>
|
|
90
82
|
<p class='fg-2 mt-4 mb-0'>At three sizes, to show the seating holds:</p>
|
|
91
83
|
<div class='d-flex flex-wrap justify-content-center align-items-baseline gap-4 mt-2'>
|
|
92
|
-
<a class='lockup plex' href='#lockup' style='font-size: 14px'><%= mark[:
|
|
93
|
-
<a class='lockup plex' href='#lockup'><%= mark[:
|
|
94
|
-
<a class='lockup plex' href='#lockup' style='font-size: 34px'><%= mark[:
|
|
84
|
+
<a class='lockup plex' href='#lockup' style='font-size: 14px'><%= mark[:tower] %>tower</a>
|
|
85
|
+
<a class='lockup plex' href='#lockup'><%= mark[:tower] %>tower</a>
|
|
86
|
+
<a class='lockup plex' href='#lockup' style='font-size: 34px'><%= mark[:tower] %>tower</a>
|
|
95
87
|
</div>
|
|
96
88
|
</section>
|
|
97
89
|
|
|
@@ -134,11 +126,19 @@
|
|
|
134
126
|
<tbody>
|
|
135
127
|
<tr><td><img class='design-logo' src='logo/easyfaa.svg' alt=''></td><th scope='row'>easyfaa</th><td><img src='favicon/easyfaa.svg' width='24' alt=''></td><td><img src='favicon/easyfaa-dev.svg' width='24' alt=''></td><td><img src='favicon/easyfaa-96.png' width='24' alt=''></td><td><img src='favicon/easyfaa-180.png' width='24' alt=''></td><td><img src='favicon/easyfaa-192.png' width='24' alt=''></td><td><img src='favicon/easyfaa-512.png' width='24' alt=''></td><td><a href='favicon/easyfaa.ico'>ico</a></td><td><a href='favicon/easyfaa.webmanifest'>manifest</a></td></tr>
|
|
136
128
|
<tr><td><img class='design-logo' src='logo/cube.svg' alt=''></td><th scope='row'>cube</th><td><img src='favicon/cube.svg' width='24' alt=''></td><td><img src='favicon/cube-dev.svg' width='24' alt=''></td><td><img src='favicon/cube-96.png' width='24' alt=''></td><td><img src='favicon/cube-180.png' width='24' alt=''></td><td><img src='favicon/cube-192.png' width='24' alt=''></td><td><img src='favicon/cube-512.png' width='24' alt=''></td><td><a href='favicon/cube.ico'>ico</a></td><td><a href='favicon/cube.webmanifest'>manifest</a></td></tr>
|
|
137
|
-
<tr><td><img class='design-logo' src='logo/fountain.svg' alt=''></td><th scope='row'>fountain</th><td><img src='favicon/fountain.svg' width='24' alt=''></td><td><img src='favicon/fountain-dev.svg' width='24' alt=''></td><td><img src='favicon/fountain-96.png' width='24' alt=''></td><td><img src='favicon/fountain-180.png' width='24' alt=''></td><td><img src='favicon/fountain-192.png' width='24' alt=''></td><td><img src='favicon/fountain-512.png' width='24' alt=''></td><td><a href='favicon/fountain.ico'>ico</a></td><td><a href='favicon/fountain.webmanifest'>manifest</a></td></tr>
|
|
138
|
-
<tr><td><img class='design-logo' src='logo/goldrush.svg' alt=''></td><th scope='row'>goldrush</th><td><img src='favicon/goldrush.svg' width='24' alt=''></td><td><img src='favicon/goldrush-dev.svg' width='24' alt=''></td><td><img src='favicon/goldrush-96.png' width='24' alt=''></td><td><img src='favicon/goldrush-180.png' width='24' alt=''></td><td><img src='favicon/goldrush-192.png' width='24' alt=''></td><td><img src='favicon/goldrush-512.png' width='24' alt=''></td><td><a href='favicon/goldrush.ico'>ico</a></td><td><a href='favicon/goldrush.webmanifest'>manifest</a></td></tr>
|
|
139
|
-
<tr><td><img class='design-logo' src='logo/houston.svg' alt=''></td><th scope='row'>houston</th><td><img src='favicon/houston.svg' width='24' alt=''></td><td><img src='favicon/houston-dev.svg' width='24' alt=''></td><td><img src='favicon/houston-96.png' width='24' alt=''></td><td><img src='favicon/houston-180.png' width='24' alt=''></td><td><img src='favicon/houston-192.png' width='24' alt=''></td><td><img src='favicon/houston-512.png' width='24' alt=''></td><td><a href='favicon/houston.ico'>ico</a></td><td><a href='favicon/houston.webmanifest'>manifest</a></td></tr>
|
|
140
129
|
<tr><td><img class='design-logo' src='logo/design.svg' alt=''></td><th scope='row'>design</th><td><img src='favicon/design.svg' width='24' alt=''></td><td><img src='favicon/design-dev.svg' width='24' alt=''></td><td><img src='favicon/design-96.png' width='24' alt=''></td><td><img src='favicon/design-180.png' width='24' alt=''></td><td><img src='favicon/design-192.png' width='24' alt=''></td><td><img src='favicon/design-512.png' width='24' alt=''></td><td><a href='favicon/design.ico'>ico</a></td><td><a href='favicon/design.webmanifest'>manifest</a></td></tr>
|
|
141
|
-
<tr><td><img class='design-logo' src='logo/
|
|
130
|
+
<tr><td><img class='design-logo' src='logo/tower.svg' alt=''></td><th scope='row'>tower</th><td><img src='favicon/tower.svg' width='24' alt=''></td><td><img src='favicon/tower-dev.svg' width='24' alt=''></td><td><img src='favicon/tower-96.png' width='24' alt=''></td><td><img src='favicon/tower-180.png' width='24' alt=''></td><td><img src='favicon/tower-192.png' width='24' alt=''></td><td><img src='favicon/tower-512.png' width='24' alt=''></td><td><a href='favicon/tower.ico'>ico</a></td><td><a href='favicon/tower.webmanifest'>manifest</a></td></tr>
|
|
131
|
+
<tr><td><img class='design-logo' src='logo/hangar.svg' alt=''></td><th scope='row'>hangar</th><td><img src='favicon/hangar.svg' width='24' alt=''></td><td><img src='favicon/hangar-dev.svg' width='24' alt=''></td><td><img src='favicon/hangar-96.png' width='24' alt=''></td><td><img src='favicon/hangar-180.png' width='24' alt=''></td><td><img src='favicon/hangar-192.png' width='24' alt=''></td><td><img src='favicon/hangar-512.png' width='24' alt=''></td><td><a href='favicon/hangar.ico'>ico</a></td><td><a href='favicon/hangar.webmanifest'>manifest</a></td></tr>
|
|
132
|
+
<tr><td><img class='design-logo' src='logo/lens.svg' alt=''></td><th scope='row'>lens</th><td><img src='favicon/lens.svg' width='24' alt=''></td><td><img src='favicon/lens-dev.svg' width='24' alt=''></td><td><img src='favicon/lens-96.png' width='24' alt=''></td><td><img src='favicon/lens-180.png' width='24' alt=''></td><td><img src='favicon/lens-192.png' width='24' alt=''></td><td><img src='favicon/lens-512.png' width='24' alt=''></td><td><a href='favicon/lens.ico'>ico</a></td><td><a href='favicon/lens.webmanifest'>manifest</a></td></tr>
|
|
133
|
+
<tr><td><img class='design-logo' src='logo/rollaway.svg' alt=''></td><th scope='row'>rollaway</th><td><img src='favicon/rollaway.svg' width='24' alt=''></td><td><img src='favicon/rollaway-dev.svg' width='24' alt=''></td><td><img src='favicon/rollaway-96.png' width='24' alt=''></td><td><img src='favicon/rollaway-180.png' width='24' alt=''></td><td><img src='favicon/rollaway-192.png' width='24' alt=''></td><td><img src='favicon/rollaway-512.png' width='24' alt=''></td><td><a href='favicon/rollaway.ico'>ico</a></td><td><a href='favicon/rollaway.webmanifest'>manifest</a></td></tr>
|
|
134
|
+
<tr><td><img class='design-logo' src='logo/dataplate.svg' alt=''></td><th scope='row'>dataplate</th><td><img src='favicon/dataplate.svg' width='24' alt=''></td><td><img src='favicon/dataplate-dev.svg' width='24' alt=''></td><td><img src='favicon/dataplate-96.png' width='24' alt=''></td><td><img src='favicon/dataplate-180.png' width='24' alt=''></td><td><img src='favicon/dataplate-192.png' width='24' alt=''></td><td><img src='favicon/dataplate-512.png' width='24' alt=''></td><td><a href='favicon/dataplate.ico'>ico</a></td><td><a href='favicon/dataplate.webmanifest'>manifest</a></td></tr>
|
|
135
|
+
<tr><td><img class='design-logo' src='logo/data.svg' alt=''></td><th scope='row'>data</th><td><img src='favicon/data.svg' width='24' alt=''></td><td><img src='favicon/data-dev.svg' width='24' alt=''></td><td><img src='favicon/data-96.png' width='24' alt=''></td><td><img src='favicon/data-180.png' width='24' alt=''></td><td><img src='favicon/data-192.png' width='24' alt=''></td><td><img src='favicon/data-512.png' width='24' alt=''></td><td><a href='favicon/data.ico'>ico</a></td><td><a href='favicon/data.webmanifest'>manifest</a></td></tr>
|
|
136
|
+
<tr><td><img class='design-logo' src='logo/refinery.svg' alt=''></td><th scope='row'>refinery</th><td><img src='favicon/refinery.svg' width='24' alt=''></td><td><img src='favicon/refinery-dev.svg' width='24' alt=''></td><td><img src='favicon/refinery-96.png' width='24' alt=''></td><td><img src='favicon/refinery-180.png' width='24' alt=''></td><td><img src='favicon/refinery-192.png' width='24' alt=''></td><td><img src='favicon/refinery-512.png' width='24' alt=''></td><td><a href='favicon/refinery.ico'>ico</a></td><td><a href='favicon/refinery.webmanifest'>manifest</a></td></tr>
|
|
137
|
+
<tr><td><img class='design-logo' src='logo/stockroom.svg' alt=''></td><th scope='row'>stockroom</th><td><img src='favicon/stockroom.svg' width='24' alt=''></td><td><img src='favicon/stockroom-dev.svg' width='24' alt=''></td><td><img src='favicon/stockroom-96.png' width='24' alt=''></td><td><img src='favicon/stockroom-180.png' width='24' alt=''></td><td><img src='favicon/stockroom-192.png' width='24' alt=''></td><td><img src='favicon/stockroom-512.png' width='24' alt=''></td><td><a href='favicon/stockroom.ico'>ico</a></td><td><a href='favicon/stockroom.webmanifest'>manifest</a></td></tr>
|
|
138
|
+
<tr><td><img class='design-logo' src='logo/blackbox.svg' alt=''></td><th scope='row'>blackbox</th><td><img src='favicon/blackbox.svg' width='24' alt=''></td><td><img src='favicon/blackbox-dev.svg' width='24' alt=''></td><td><img src='favicon/blackbox-96.png' width='24' alt=''></td><td><img src='favicon/blackbox-180.png' width='24' alt=''></td><td><img src='favicon/blackbox-192.png' width='24' alt=''></td><td><img src='favicon/blackbox-512.png' width='24' alt=''></td><td><a href='favicon/blackbox.ico'>ico</a></td><td><a href='favicon/blackbox.webmanifest'>manifest</a></td></tr>
|
|
139
|
+
<tr><td><img class='design-logo' src='logo/drive.svg' alt=''></td><th scope='row'>drive</th><td><img src='favicon/drive.svg' width='24' alt=''></td><td><img src='favicon/drive-dev.svg' width='24' alt=''></td><td><img src='favicon/drive-96.png' width='24' alt=''></td><td><img src='favicon/drive-180.png' width='24' alt=''></td><td><img src='favicon/drive-192.png' width='24' alt=''></td><td><img src='favicon/drive-512.png' width='24' alt=''></td><td><a href='favicon/drive.ico'>ico</a></td><td><a href='favicon/drive.webmanifest'>manifest</a></td></tr>
|
|
140
|
+
<tr><td><img class='design-logo' src='logo/mirroring.svg' alt=''></td><th scope='row'>mirroring</th><td><img src='favicon/mirroring.svg' width='24' alt=''></td><td><img src='favicon/mirroring-dev.svg' width='24' alt=''></td><td><img src='favicon/mirroring-96.png' width='24' alt=''></td><td><img src='favicon/mirroring-180.png' width='24' alt=''></td><td><img src='favicon/mirroring-192.png' width='24' alt=''></td><td><img src='favicon/mirroring-512.png' width='24' alt=''></td><td><a href='favicon/mirroring.ico'>ico</a></td><td><a href='favicon/mirroring.webmanifest'>manifest</a></td></tr>
|
|
141
|
+
<tr><td><img class='design-logo' src='logo/wordmark.svg' alt=''></td><th scope='row'>wordmark</th><td><img src='favicon/wordmark.svg' width='24' alt=''></td><td><img src='favicon/wordmark-dev.svg' width='24' alt=''></td><td><img src='favicon/wordmark-96.png' width='24' alt=''></td><td><img src='favicon/wordmark-180.png' width='24' alt=''></td><td><img src='favicon/wordmark-192.png' width='24' alt=''></td><td><img src='favicon/wordmark-512.png' width='24' alt=''></td><td><a href='favicon/wordmark.ico'>ico</a></td><td><a href='favicon/wordmark.webmanifest'>manifest</a></td></tr>
|
|
142
142
|
</tbody>
|
|
143
143
|
</table>
|
|
144
144
|
</div>
|
data/art/lens.svg
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
|
2
|
+
<g fill="none" stroke="#5b2a86" style="stroke: light-dark(#5b2a86, #d6bdf2)" stroke-width="36" stroke-linecap="round" stroke-linejoin="round">
|
|
3
|
+
<path d="M72 168V72H168"/>
|
|
4
|
+
<path d="M344 72H440V168"/>
|
|
5
|
+
<path d="M440 344V440H344"/>
|
|
6
|
+
<path d="M168 440H72V344"/>
|
|
7
|
+
<circle cx="256" cy="256" r="104"/>
|
|
8
|
+
</g>
|
|
9
|
+
</svg>
|
data/art/mirroring.svg
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
|
2
|
+
<g fill="none" stroke="#5aa9e6" stroke-width="36" stroke-linecap="round" stroke-linejoin="round">
|
|
3
|
+
<ellipse cx="256" cy="192" rx="136" ry="152"/>
|
|
4
|
+
<path d="M200 120Q216 96 248 88"/>
|
|
5
|
+
<path d="M256 344V472"/>
|
|
6
|
+
<path d="M216 472H296"/>
|
|
7
|
+
</g>
|
|
8
|
+
</svg>
|
data/art/refinery.svg
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
|
2
|
+
<g fill="none" stroke="#6f4219" style="stroke: light-dark(#6f4219, #e8c29c)" stroke-width="36" stroke-linecap="round" stroke-linejoin="round">
|
|
3
|
+
<path d="M96 456V128A56 56 0 0 1 208 128V456"/>
|
|
4
|
+
<path d="M96 312H208"/>
|
|
5
|
+
<path d="M208 224H360V296"/>
|
|
6
|
+
<path d="M272 456V328Q360 280 448 328V456"/>
|
|
7
|
+
<path d="M48 456H464"/>
|
|
8
|
+
</g>
|
|
9
|
+
</svg>
|
data/art/rollaway.svg
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
|
2
|
+
<g fill="none" stroke="#b3261e" style="stroke: light-dark(#b3261e, #ff8a80)" stroke-width="36" stroke-linecap="round" stroke-linejoin="round">
|
|
3
|
+
<rect x="96" y="56" width="320" height="352" rx="20"/>
|
|
4
|
+
<path d="M96 176H416"/>
|
|
5
|
+
<path d="M96 292H416"/>
|
|
6
|
+
<path d="M216 116H296"/>
|
|
7
|
+
<path d="M216 234H296"/>
|
|
8
|
+
<path d="M216 350H296"/>
|
|
9
|
+
<circle cx="160" cy="448" r="24"/>
|
|
10
|
+
<circle cx="352" cy="448" r="24"/>
|
|
11
|
+
</g>
|
|
12
|
+
</svg>
|
data/art/stockroom.svg
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
|
2
|
+
<g fill="none" stroke="#19753e" style="stroke: light-dark(#19753e, #59c27a)" stroke-width="36" stroke-linecap="round" stroke-linejoin="round">
|
|
3
|
+
<path d="M72 40V472"/>
|
|
4
|
+
<path d="M440 40V472"/>
|
|
5
|
+
<path d="M72 200H440"/>
|
|
6
|
+
<path d="M72 360H440"/>
|
|
7
|
+
<path d="M120 200V112H240V200"/>
|
|
8
|
+
<path d="M280 200V144H392V200"/>
|
|
9
|
+
<path d="M120 360V280H200V360"/>
|
|
10
|
+
<path d="M240 360V248H392V360"/>
|
|
11
|
+
</g>
|
|
12
|
+
</svg>
|
data/art/tower.svg
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
|
2
|
+
<g fill="none" stroke="#1a70d0" style="stroke: light-dark(#1a70d0, #689dff)" stroke-width="36" stroke-linecap="round" stroke-linejoin="round">
|
|
3
|
+
<path d="M256 104V40"/>
|
|
4
|
+
<path d="M148 104H364"/>
|
|
5
|
+
<path d="M96 168H416L372 272H140Z"/>
|
|
6
|
+
<path d="M208 168 216 272"/>
|
|
7
|
+
<path d="M304 168 296 272"/>
|
|
8
|
+
<path d="M188 272 172 472"/>
|
|
9
|
+
<path d="M324 272 340 472"/>
|
|
10
|
+
<path d="M116 472H396"/>
|
|
11
|
+
</g>
|
|
12
|
+
</svg>
|
data/art/wordmark.svg
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
|
2
|
+
<path fill="#1a70d0" style="fill: light-dark(#1a70d0, #689dff)" d="M40 380.8 144.1 127.5H170.4L273.8 380.8H233.5L150 170.2H163.8L79.6 380.8ZM90.2 326.9V294.4H223.9V326.9ZM380.4 384.5Q356.6 384.5 337.5 372.6Q318.3 360.6 307.2 340.2Q296.1 319.8 296.1 294.4Q296.1 268.8 307.2 248.3Q318.3 227.9 337.4 215.8Q356.6 203.7 380.3 203.7Q400.2 203.7 415.7 212Q431.1 220.4 440.4 235Q449.7 249.6 450.3 268.4V319.7Q449.6 338.5 440.5 353.2Q431.4 367.8 415.8 376.1Q400.3 384.5 380.4 384.5ZM386.2 350.7Q409.8 350.7 424.1 334.9Q438.5 319.1 438.5 294.1Q438.5 277.4 432 264.6Q425.4 251.8 413.7 244.6Q401.9 237.4 386.1 237.4Q370.5 237.4 358.5 244.7Q346.5 251.9 339.6 264.7Q332.8 277.5 332.8 294.1Q332.8 310.7 339.6 323.5Q346.5 336.3 358.5 343.5Q370.6 350.7 386.2 350.7ZM436.3 380.8V334.2L442.7 291.8L436.3 249.9V207.3H472V380.8Z"/>
|
|
3
|
+
</svg>
|
data/lib/wordmark/engine.rb
CHANGED
|
@@ -5,33 +5,24 @@ module Wordmark
|
|
|
5
5
|
# Hooks the gem into a host app: serves its files, its error pages and its helpers.
|
|
6
6
|
class Engine < ::Rails::Engine
|
|
7
7
|
# The folders the design site publishes, served from this gem at the same paths so a
|
|
8
|
-
# page on an app and a page on the site link one file
|
|
9
|
-
#
|
|
10
|
-
|
|
11
|
-
PREFIXES = %W[/css/ /js/ /theme/ /font/ /logo/ /favicon/ /page/ /v#{VERSION}/].freeze
|
|
8
|
+
# page on an app and a page on the site link one file. Each keeps its slash:
|
|
9
|
+
# `Rack::Static` matches on `start_with?`, and `/page` would swallow `/pages` itself.
|
|
10
|
+
PREFIXES = %w[/css/ /js/ /theme/ /font/ /logo/ /favicon/ /page/].freeze
|
|
12
11
|
|
|
13
|
-
#
|
|
14
|
-
#
|
|
15
|
-
#
|
|
16
|
-
# at all, so a browser may keep them for good.
|
|
12
|
+
# A file is asked for again on every full load and answered `304 Not Modified` while it
|
|
13
|
+
# stands, since its URL never changes between versions. A font, whose name carries a hash
|
|
14
|
+
# of its bytes, never changes at all, so a browser may keep it for good.
|
|
17
15
|
HEADERS = [
|
|
18
16
|
[:all, { 'cache-control' => 'no-cache' }],
|
|
19
17
|
['/font/', { 'cache-control' => 'public, max-age=31536000, immutable' }],
|
|
20
|
-
['/v', { 'cache-control' => 'public, max-age=31536000, immutable' }],
|
|
21
18
|
].freeze
|
|
22
19
|
|
|
23
|
-
# What a file is kept for while the gem is being worked on: not at all, since the
|
|
24
|
-
# version's copy is rewritten under the same name until it is released, and a browser
|
|
25
|
-
# told to keep it for a year would show yesterday's stylesheet on today's page.
|
|
26
|
-
DEVELOPMENT_HEADERS = HEADERS.first 1
|
|
27
|
-
|
|
28
20
|
# Before `Rails::Rack::Logger`, so fetching a stylesheet writes no `Started GET` line, and
|
|
29
21
|
# cascading, so a host route under one of these prefixes still answers.
|
|
30
22
|
initializer 'wordmark.assets' do |app|
|
|
31
|
-
headers = Rails.env.development? ? DEVELOPMENT_HEADERS : HEADERS
|
|
32
23
|
app.middleware.insert_before Rails::Rack::Logger, Rack::Static,
|
|
33
24
|
urls: PREFIXES, root: Engine.root.join('public').to_s,
|
|
34
|
-
header_rules:
|
|
25
|
+
header_rules: HEADERS, cascade: true
|
|
35
26
|
end
|
|
36
27
|
|
|
37
28
|
# The branded error pages, read by status from `public/page` the way Rails reads a host's
|
|
@@ -8,8 +8,8 @@ module Wordmark
|
|
|
8
8
|
|
|
9
9
|
# The stylesheet and the script every page needs, and the icons `app` is known by —
|
|
10
10
|
# this app unless said, since a page a customer reads may wear the house's mark rather
|
|
11
|
-
# than the app's. Both files at
|
|
12
|
-
#
|
|
11
|
+
# than the app's. Both files at a path no release changes, asked for again on every
|
|
12
|
+
# full load. A page refresh Turbo is sent morphs the page in place and keeps the
|
|
13
13
|
# scroll, so an answer landing in a thread leaves the reader where they were.
|
|
14
14
|
def easyfaa_head_tags(app = Wordmark.app)
|
|
15
15
|
safe_join [
|
|
@@ -33,12 +33,12 @@ module Wordmark
|
|
|
33
33
|
], INDENT
|
|
34
34
|
end
|
|
35
35
|
|
|
36
|
-
# The house's own two files, for a page that already links bh's. At
|
|
37
|
-
# path
|
|
36
|
+
# The house's own two files, for a page that already links bh's. At the same
|
|
37
|
+
# path in every release, so a browser asks again on a full load and is answered 304.
|
|
38
38
|
def easyfaa_tags
|
|
39
39
|
safe_join [
|
|
40
|
-
tag.link(rel: 'stylesheet', href:
|
|
41
|
-
tag.script('', type: 'module', src:
|
|
40
|
+
tag.link(rel: 'stylesheet', href: '/css/easyfaa.css'),
|
|
41
|
+
tag.script('', type: 'module', src: '/js/easyfaa.js'),
|
|
42
42
|
], INDENT
|
|
43
43
|
end
|
|
44
44
|
|
data/lib/wordmark/marks.rb
CHANGED
|
@@ -4,13 +4,23 @@ module Wordmark
|
|
|
4
4
|
# and reaches IBM Plex Sans's ascender. Every drawing is a different shape inside its 512
|
|
5
5
|
# grid, so equal sizes never align; these do. The house's own is the one exception: 0.8em
|
|
6
6
|
# and dropped 0.16em, so the horizon centres on the lowercase rather than standing on it.
|
|
7
|
+
# A wide, short mark (blackbox, dataplate, wordmark) is held to about 50px, or
|
|
8
|
+
# reaching the ascender would make it twice as wide as its neighbours.
|
|
7
9
|
MARKS = {
|
|
8
|
-
|
|
10
|
+
blackbox: [50.00, 8.40],
|
|
9
11
|
cube: [38.96, 1.72],
|
|
12
|
+
data: [41.71, 3.10],
|
|
13
|
+
dataplate: [50.00, 8.40],
|
|
10
14
|
design: [50.47, 8.94],
|
|
15
|
+
drive: [41.84, 2.45],
|
|
11
16
|
easyfaa: [38.4, 7.68],
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
17
|
+
hangar: [41.71, 3.10],
|
|
18
|
+
lens: [45.02, 4.75],
|
|
19
|
+
mirroring: [38.86, 1.67],
|
|
20
|
+
refinery: [43.30, 3.21],
|
|
21
|
+
rollaway: [40.24, 1.73],
|
|
22
|
+
stockroom: [38.86, 1.67],
|
|
23
|
+
tower: [38.86, 1.67],
|
|
24
|
+
wordmark: [50.00, 12.40],
|
|
15
25
|
}.freeze
|
|
16
26
|
end
|
data/lib/wordmark/version.rb
CHANGED
data/lib/wordmark.rb
CHANGED
|
@@ -19,7 +19,7 @@ module Wordmark
|
|
|
19
19
|
Message = Bh::Message
|
|
20
20
|
|
|
21
21
|
# Which of the family this host is, read off the Rails application's own name — the
|
|
22
|
-
# `
|
|
22
|
+
# `Tower` of `Tower::Application` — and the house itself for any app not in `MARKS`.
|
|
23
23
|
# What a tab wears, what a logo says and whose page answers `/down.html`.
|
|
24
24
|
def self.app
|
|
25
25
|
name = Rails.application.class.module_parent_name.downcase.to_sym
|
data/public/_headers
CHANGED
|
@@ -17,10 +17,6 @@
|
|
|
17
17
|
/page/*
|
|
18
18
|
Cache-Control: public, max-age=0, must-revalidate
|
|
19
19
|
|
|
20
|
-
# A versioned copy never changes, so a browser may keep it for a year and the edge for good.
|
|
21
|
-
/v*
|
|
22
|
-
Cache-Control: public, max-age=31536000, immutable
|
|
23
|
-
|
|
24
20
|
# A font's name carries a hash of its bytes, so a browser may keep it for good; everything
|
|
25
21
|
# else keeps Pages' default, which is to revalidate on every load and answer 304 while it
|
|
26
22
|
# stands, so the URL of a file never has to change between versions.
|