Commit graph

142 commits

Author SHA1 Message Date
Dirk
29bbe7355d
Translated using Weblate (German)
Currently translated at 46.3% (63 of 136 strings)

Translation: Anvil/Anvil
Translate-URL: https://translate.codeberg.org/projects/anvil/anvil/de/
2024-09-30 03:31:16 +00:00
André Jaenisch
4984938f40
chore: update all dependencies
I spotted an experimental vitest addon and configured most parts of it.
However due to given peer dependency in that addon I cannot install it.
Therefore everything was commented for now.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-08-21 08:30:49 +02:00
André Jaenisch
073bfaa2c9
fix: adding title and improve button labels
When I was reinstalling Orca to get it back working I noticed that Anvil
is not displaying any document.title. I did some research on how to
define it and added it on two pages. This is meant to discuss how we
want to structure the title. Once we settled on something it'll become
translateable, too.

Speaking of, when navigating through the Settings modal I noticed that
the Remove button for keys lacked context. So I added the key title for
screen readers. Nothing worse than deleting the wrong key!

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-08-21 08:29:18 +02:00
André Jaenisch
3f6c0e6fe4
chore: track screenshots for use in Weblate
We want to improve the translation experience by creating screenshots
that illustrate which part of the UI is to be translated.

There's one variant showing the keys and another one with the English
translation.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-08-20 08:28:22 +02:00
André Jaenisch
e95bb2e117
feat: add notifications to settings
This is currently a mock as we have no notification mechanism in place.
Also, I need to figure out how to talk to Vervis' API first.

That being said, this step allows for translations at least.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-08-15 17:51:09 +02:00
André Jaenisch
119b681d4d
chore: update REUSE
REUSE had a breaking change that changed the way they configure the
tool:
https://github.com/fsfe/reuse-tool/releases/tag/v4.0.0

This PR adjusts our code to get compliant again.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-08-15 17:44:46 +02:00
André Jaenisch
dd5bd6d96a
Translated using Weblate (German)
Currently translated at 49.2% (62 of 126 strings)

Translation: Anvil/Anvil
Translate-URL: https://translate.codeberg.org/projects/anvil/anvil/de/
2024-08-12 14:12:20 +00:00
André Jaenisch
5d9ffa8824
fix: proper dark mode
I missed a border. Easy to fix.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-08-12 15:05:55 +02:00
André Jaenisch
564d9bb6a7
test: update tests
I don't use events anymore but update a Svelte store.
Not sure how to test it.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-08-12 13:07:45 +02:00
André Jaenisch
c86902b2f8
fix: properly assign tokens or dark mode
When I was working on this I learned about

https://www.skeleton.dev/docs/tokens#color-pairing-chart

and how the different colour values of

https://www.skeleton.dev/docs/colors

relate to each other. I went off and augmented every colour class to the
respective dark mode according to the pairing.

There is no predefined mapping for text-white resp. bg-white to replace
it with black, so I had to fallback to dark:.
Likewise with the placeholder: assignments.

Another major aha moment came after studying

https://github.com/skeletonlabs/skeleton/blob/%40skeletonlabs/skeleton%402.10.2/packages/skeleton/src/lib/utilities/LightSwitch/lightswitch.ts

and realising, that I could put away my hack and instead use Svelte
stores - or rather the wrappers Skeleton provided for convenience.
This way, the LightSwitch I use in the Overlay popup now syncs up with
the Appearance radios in the Settings! Hooray!

I had to think a little bit harder how to handle Auto option. I feel
like it's not 100% where I would like to be but Skeleton is looking at
preferred colour scheme in a binary view and does not know anything
other than light or dark.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-08-09 18:23:05 +02:00
André Jaenisch
5af877bcaa
feat: add Appearance panel to Settings modal
This features two knobs: theming and indent.
I was curious whether I could actually hand the theme switching to the
parent, so I created an event dispatcher for it.

It works! But I had to hack the Svelte component a little.
I also need to sync it two the theme switcher in the popup and go over
every component that is focused on light mode only at the moment. To
limit the work I will constraint myself to the Profile page here. If the
theme is meant to apply to other pages as well, we will need to persist
the setting. That means a database in Anvil, I guess. I'm not willing to
take that step right now. It must come at some point (e.g. when talking
to Vervis to actually inform about changes made in Anvil).

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-08-09 08:32:15 +02:00
timedin
b5fed52bc5
Translated using Weblate (German)
Currently translated at 42.0% (50 of 119 strings)

Translation: Anvil/Anvil
Translate-URL: https://translate.codeberg.org/projects/anvil/anvil/de/
2024-08-08 13:18:24 +00:00
André Jaenisch
4d81bd5e0d
chore: add funding section to README
In July 2024 the first batch of donations was wired for working on
Anvil. As a token of gratitude and for the sake of transparency, the
project README should shout out to NLnet.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-08-07 11:10:23 +02:00
André Jaenisch
55602e359a
feat: add new settings view for Keys
Currently the SSH and GPG keys are hardcoded. In a refactoring those
will be passed down as prop to the component. But I would need to query
Vervis to receive the real keys. Likewise I am not talking to Vervis
when updating (remove, add) a key.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-08-06 09:36:27 +02:00
André Jaenisch
03c8334338
feat: add Account Settings view
This is not interacting with Vervis at this point in time.
I clarified that changes should be persisted on moving away from a view.
I'm going to implement that once I have all views in place.

On top of that, persisting changes to Vervis requires me to study the
now documented Vervis API in more detail. I'm going to postpone this for
now but will revisit it in a few weeks.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-31 10:58:36 +02:00
André Jaenisch
be727a6d9c
chore: update dependencies
Turns out most Storybook Addons expect React and won't be installable in
a Svelte(Kit) project. But I could figure out how to use the play
functions. So I have an example for it.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-30 12:55:35 +02:00
André Jaenisch
018bf809fc
docs: add story for MainMenu
This allows for studying the MainMenu in isolation.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-28 12:15:12 +02:00
André Jaenisch
f20587cf1f
feat: bringing it all together
This is now showing the MainMenu on the profile page which in turn
pulls in the Settings modal.

I wasn't able to register the modal on Storybook yet, which means
that there won't be any on the Profile template or page story.

The implementation in Skeleton is causing some accessibility
warnings. However, since there next version is taking a radical
different approach I'm inclined to let it be for now. We should
document it somewhere, I guess.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-27 14:12:08 +02:00
André Jaenisch
581ab76ca7
feat: extract SettingsProfile into component
This is taking care of the view when the Settings is selected for a profile.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-26 16:40:27 +02:00
André Jaenisch
841ddd5a17
refactor: extract sidebar to component
I realised that I must not show the sidebar everywhere. So to not move
code around I extracted it into its own component. This one is not
matching the design (because of the links etc.) but is a step in the
direction.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-22 09:46:57 +02:00
André Jaenisch
ead9d281d0
feat: extract SettingsSidebar into component
This is in need of at least one refactoring. Skeleton is redesigning
the AppRail we are using here. The layout is hard to style.
This implementation interacts with a drawer, but it will likely be
dropped in the final version.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-22 09:34:27 +02:00
André Jaenisch
5d1bada084
refactor: extract MainMenuDetails into component
This way, MainMenu is only responsible for aggregating the UI.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-12 08:02:24 +02:00
André Jaenisch
26b3fc3ff0
feat: extract MainMenuActions into component
This represents the lower part of the main menu with actions I can have
on a project.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-10 12:15:47 +02:00
André Jaenisch
67d7a70ec9
chore: add floating-ui as dependency
This is a hard requirement for Popups I'm going to use to implment the
specified Overlays.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-10 12:15:40 +02:00
André Jaenisch
0ca5d963f3
feat: extract MainMenuSummary into component
This is the top part of the main menu which includes the Avatar overlay.
I'm not quite sure how to label each part.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-09 20:49:58 +02:00
André Jaenisch
179db76b5a
refactor: extract OverlayAvatar into component
I'm going to break up my MainMenu into smaller components, starting with
the OverlayAvatar. Testing it taught me how to handle stores in Vitest.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-08 20:34:06 +02:00
André Jaenisch
c779fad4b1
refactor: extract first page into a component
It is a component now which allows for inspection in Storybook.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-07 13:57:33 +02:00
André Jaenisch
99a8ebea95
fix: ensure screen is full size
I noticed that I do not cover the whole height.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-07 13:56:03 +02:00
André Jaenisch
7484bfeb1a
refactor: extract Welcome page into component
This allows for proper testing and documentation in Storybook.
I also moved the image into its own component. This required me to
adjust the vitest.config.ts slightly because it wasn't finding the image
during tests.

Since components are fully translatable, this means we have new keys
now.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-06 18:29:39 +02:00
André Jaenisch
a8097d3363
fix: don't break the layout
I was so focused on the welcome screen that I accidentally broke the
profile.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-06 17:26:26 +02:00
André Jaenisch
0d1b0454ef
refactor: extract first page into a component
It is a component now which allows for inspection in Storybook.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-06 17:25:21 +02:00
André Jaenisch
c89f9d6f1b
feat: replace skull with Anvil logo
When I refactor the homepage I can also get closer to the design
specification.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-06 17:22:59 +02:00
André Jaenisch
b95702ad7d
chore: remove dead code
This markup was commented. In case we ever need it, git will have it
stored in the repo history.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-06 17:17:46 +02:00
André Jaenisch
7b4703b044
fix: remove doubled entry
I'm also annoyed that we mix CommonJS with ESM here but one step at a
time.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-06 17:17:09 +02:00
André Jaenisch
fe39bab2f0
chore: update dependencies
Always a good idea to start with the latest versions.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-06 17:13:17 +02:00
André Jaenisch
a1f5b69704
chore: add new locales to Storybook
In order for others to inspect their translations I have added new
locales to Storybook.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-04 08:21:35 +02:00
André Jaenisch
5297ea175f
docs: create stories for new components
I have added atoms, molecules and icons.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-04 08:21:35 +02:00
André Jaenisch
019c6cf90e
docs: create stories for new components
I also introduce Person24 as fallback avatar and grant it a new icon in
Storybook as consequence.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-04 08:21:35 +02:00
André Jaenisch
f807bf69b3
chore: update dependencies
I cannot upgrade ESLint to latest due to TypeScript parser dependency.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-04 08:21:35 +02:00
André Jaenisch
91f6e24280
fix: add stories for Projects
I noticed that I missed stories for one or two projects in Storybook.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-04 08:21:35 +02:00
André Jaenisch
769e3bcab3
feat: add new components to Storybook
I included stories for the new components introduced by the Projects
page.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-04 08:21:35 +02:00
André Jaenisch
07007b0016
chore: add license banner to stories
I dropped the examples while at it.
Since Svelte-Octicons are used as-is I have to declare the license as
MIT.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-04 08:21:35 +02:00
André Jaenisch
30edc92522
feat: link between stories
Right now this works with Template stories but not with Page stories to
collect feedback.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-04 08:21:35 +02:00
André Jaenisch
87af757874
feat: load Inter as Webfont
I received confirmation that Inter is meant to be used for the whole
application. Therefore I'm loading it from a remote server.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-04 08:21:35 +02:00
André Jaenisch
6e03027b4c
feat: apply locale and writing direction
FINALLY! I can look into translated UIs in Storybook with Svelte!

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-04 08:21:35 +02:00
André Jaenisch
dc707869b4
docs: write Story for LoginForm
As it is visible here, part of the layout is deferred to the parent
component. See Login template.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-04 08:21:35 +02:00
André Jaenisch
98f9f724ce
chore: update storybook dependencies
There is a v8 in the beta, so I update the dependencies to check whether
I need to adjust something.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-04 08:21:35 +02:00
André Jaenisch
390c54a2bf
docs: create stories for Login page
This is the second form I have touched. Here, I even have a light
validation implemented on the server.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-04 08:21:35 +02:00
André Jaenisch
b0366f26ed
feat: create stories for Profile
I also updated the icons to reflect all in use.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-04 08:21:35 +02:00
André Jaenisch
21a7fc1b54
docs: create Stories for new pages and templates
I also extracted the Icons we use into a story and looked into how I
could potentially allow for changing the locale.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-04 08:21:35 +02:00