mirror of
https://github.com/olehomelchenko/astrolabe.git
synced 2026-08-08 02:02:33 +00:00
Support: add a feedback email, rebrand from Donate, tighten privacy copy
This commit is contained in:
@@ -459,9 +459,10 @@ tablet tool; phones are out of scope. So the touch/installable surface we target
|
||||
IDB-transaction atomicity would require exposing a raw transaction from `db.ts` — see
|
||||
[arch 02](architecture/02-persistence.md)).
|
||||
- **A11y:** modal focus trap + return, labelled icon buttons, contrast in both themes (§10) — ✅ in place.
|
||||
- **About** and **Donate** modals ~~(§01)~~ ✅. The project solicits nothing for
|
||||
itself — **Donate** redirects to Ukraine's defense (`savelife.in.ua`, the Come Back
|
||||
Alive foundation), where the author forwards any project donations anyway.
|
||||
- **About** and **Support** modals ~~(§01)~~ ✅. The project solicits nothing for
|
||||
itself — **Support** offers feedback to the author and redirects donations to Ukraine's
|
||||
defense (`savelife.in.ua`, the Come Back Alive foundation), where the author forwards any
|
||||
project donations anyway.
|
||||
- **Offline/installable:** the manifest ships a full SVG icon set (favicon / maskable /
|
||||
monochrome) + a 180×180 `apple-touch-icon.png` (iPad add-to-home-screen) + `theme_color`,
|
||||
and the SW precaches the shell — the app is **installable**. ✅ Manual verification in a
|
||||
|
||||
@@ -124,7 +124,7 @@ UI by swapping one set of values. Borrowed from Carbon's layering model:
|
||||
`--accent-soft-hover` are `color-mix(in srgb, var(--accent) 12–20%, var(--bg))`,
|
||||
so the wash follows whatever accent + theme is active rather than carrying a
|
||||
per-accent value. Use it for a surface that should be _noticed_ without competing
|
||||
with a primary action (the header's **Donate** button).
|
||||
with a primary action (the header's **Support** button).
|
||||
- **Field-on-layer (Carbon layering).** A field's fill is **one step off the
|
||||
surface it sits on**, alternating like Carbon's field set: `--field-01` on the
|
||||
canvas (gray on white / near-black on black), `--field-02` on a `--layer-01`
|
||||
@@ -188,7 +188,7 @@ UI by swapping one set of values. Borrowed from Carbon's layering model:
|
||||
`--accent`), **secondary** (1px `--border-strong`, `--bg` fill —
|
||||
so a bordered control on a gray panel goes white, never a darker gray), **ghost** (text-only, borderless; a transparent
|
||||
border holds the box size), **soft-accent** (ghost on an `--accent-soft` wash —
|
||||
a low-emphasis solicitation, e.g. Donate), **danger** (filled
|
||||
a low-emphasis solicitation, e.g. Support), **danger** (filled
|
||||
`--support-error` — the confirm step), **danger-outline** (secondary geometry,
|
||||
red label, filling solid red on hover/focus — a destructive action sitting
|
||||
among peers, e.g. a detail view's Delete). 13px 600-weight label. Clear hover/active and a visible
|
||||
@@ -218,7 +218,7 @@ UI by swapping one set of values. Borrowed from Carbon's layering model:
|
||||
Import / Export / About are **icon-only** IconButtons per Carbon's UI-shell
|
||||
header — global actions as a right-aligned icon row — with accessible names
|
||||
that carry scope, e.g. "Export workspace" vs the preview's per-chart "Export";
|
||||
a divider then sets off the soft-accent Donate, which keeps its text label —
|
||||
a divider then sets off the soft-accent Support, which keeps its text label —
|
||||
a solicitation needs the word — and the ghost theme toggle).
|
||||
- **Hover is variant-specific:** filled buttons (primary/danger) **darken**
|
||||
(`--accent-hover` / a slight brightness drop); outlined/ghost buttons **gain a
|
||||
|
||||
@@ -466,7 +466,7 @@
|
||||
.btn-ghost-util:hover {
|
||||
background: var(--layer-02);
|
||||
}
|
||||
/* Soft-accent: a low-emphasis accent wash (Donate) — noticed, not shouting. */
|
||||
/* Soft-accent: a low-emphasis accent wash (Support) — noticed, not shouting. */
|
||||
.btn-soft {
|
||||
background: var(--accent-soft);
|
||||
color: var(--accent-hover);
|
||||
@@ -984,7 +984,7 @@
|
||||
<h3 style="margin-top: var(--space-6)">Emphasis hierarchy — a header cluster</h3>
|
||||
<p class="cap" style="margin-bottom: var(--space-4)">
|
||||
Utilities go <strong>ghost</strong> (icon + text, borderless) so they recede; a divider
|
||||
sets off <strong>Donate</strong> on a <strong>soft-accent</strong> wash — one low-key
|
||||
sets off <strong>Support</strong> on a <strong>soft-accent</strong> wash — one low-key
|
||||
solicitation, no border. (Carbon: one high-emphasis action per region; utilities at low
|
||||
emphasis.)
|
||||
</p>
|
||||
@@ -1024,7 +1024,7 @@
|
||||
>About
|
||||
</button>
|
||||
<span class="hdr-divider"></span>
|
||||
<button class="btn btn-soft">Donate</button>
|
||||
<button class="btn btn-soft">Support</button>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
@@ -25,21 +25,21 @@ Behavior:
|
||||
A fixed header spans the top of the app.
|
||||
|
||||
- **Left side**: the app icon, the app title ("Astrolabe"), and a version badge showing the current app version.
|
||||
- **Right side**: a row of **icon-only** utility entry points (each with a tooltip and an accessible name), then — set off by a divider — the text-labelled Donate button and the theme toggle. Each opens a destination:
|
||||
- **Right side**: a row of **icon-only** utility entry points (each with a tooltip and an accessible name), then — set off by a divider — the text-labelled Support button and the theme toggle. Each opens a destination:
|
||||
|
||||
| Entry point | Opens |
|
||||
| ---------------- | --------------------------------------------------------------------------------------------------------------- |
|
||||
| Datasets | The Datasets manager modal (see _Datasets_). |
|
||||
| Import workspace | A file-picker dialog to choose a previously exported file; the chosen file is imported (see _Import & Export_). |
|
||||
| Export workspace | Immediately produces a downloaded file containing all snippets and datasets (see _Import & Export_). |
|
||||
| About | The About & Help modal (keyboard shortcuts, about, and privacy information); privacy lives inside. |
|
||||
| Donate | The Donate modal. The one text-labelled, soft-accent button — the solicitation keeps its word. |
|
||||
| Entry point | Opens |
|
||||
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Datasets | The Datasets manager modal (see _Datasets_). |
|
||||
| Import workspace | A file-picker dialog to choose a previously exported file; the chosen file is imported (see _Import & Export_). |
|
||||
| Export workspace | Immediately produces a downloaded file containing all snippets and datasets (see _Import & Export_). |
|
||||
| About | The About & Help modal (keyboard shortcuts, about, and privacy information); privacy lives inside. |
|
||||
| Support | The Support modal — two ways to give back: feedback to the author, or a donation to Ukraine's defense. The one text-labelled, soft-accent button. |
|
||||
|
||||
Notes:
|
||||
|
||||
- The utilities are icon-only so the header reads as quiet chrome (Carbon UI-shell header: global actions are a right-aligned icon row). The accessible names scope the workspace-level Import/Export ("Export workspace") apart from the preview pane's per-chart "Export" — the two were previously both labelled "Export" at once.
|
||||
- Import and Export act directly (file dialog / file download); they do not open in-app modals.
|
||||
- The Datasets, About, and Donate entry points each open a modal (see _Modal System_).
|
||||
- The Datasets, About, and Support entry points each open a modal (see _Modal System_).
|
||||
- **Settings are not a header entry point.** A design review (see _Settings_) distributed
|
||||
preferences to the panes they affect — the appearance theme is a header toggle, and the
|
||||
Editor / Performance / Formatting clusters open from a gear control in their own pane. There
|
||||
@@ -47,7 +47,7 @@ Notes:
|
||||
|
||||
## C. Modal System
|
||||
|
||||
The app shows at most one modal at a time. The modal set is: Datasets, About & Help, Donate, Chart Builder, Extract-to-Dataset, and Theme Builder. (Settings are deliberately _not_ a modal — they are distributed to per-pane controls; see _Settings_.)
|
||||
The app shows at most one modal at a time. The modal set is: Datasets, About & Help, Support, Chart Builder, Extract-to-Dataset, and Theme Builder. (Settings are deliberately _not_ a modal — they are distributed to per-pane controls; see _Settings_.)
|
||||
|
||||
- Opening any modal closes whichever modal was previously open; the two never overlap.
|
||||
- Every modal can be dismissed by: clicking its close button, pressing **Escape**, or clicking the backdrop outside the modal body. Exception: modals holding in-progress work (the Chart Builder and Theme Builder) ignore backdrop clicks; Escape and the close button still dismiss them.
|
||||
|
||||
Reference in New Issue
Block a user