From 624c9861b672cc5b67dffad9b1e0edc3ab76caf5 Mon Sep 17 00:00:00 2001 From: Florent EXBRAYAT Date: Tue, 12 Nov 2024 10:56:53 +0100 Subject: [PATCH] docs(blog): add roadmap 1.0 blog post --- .vscode/settings.json | 3 +- demo/src/lib/layout/Published.svelte | 5 ++ demo/src/resources/images/fexbrayat.webp | Bin 0 -> 5330 bytes demo/src/resources/images/reactivity.webp | Bin 38230 -> 0 bytes demo/src/routes/+layout.svelte | 2 +- demo/src/routes/blog/+layout.server.ts | 5 +- .../routes/blog/2024-11-06/+page.server.ts | 10 +++ demo/src/routes/blog/2024-11-06/+page.svelte | 14 ++++ demo/src/routes/blog/2024-11-06/roadmap1.0.md | 76 ++++++++++++++++++ demo/src/routes/menu/MobileMenu.svelte | 2 +- 10 files changed, 113 insertions(+), 4 deletions(-) create mode 100644 demo/src/resources/images/fexbrayat.webp delete mode 100644 demo/src/resources/images/reactivity.webp create mode 100644 demo/src/routes/blog/2024-11-06/+page.server.ts create mode 100644 demo/src/routes/blog/2024-11-06/+page.svelte create mode 100644 demo/src/routes/blog/2024-11-06/roadmap1.0.md diff --git a/.vscode/settings.json b/.vscode/settings.json index 63022ba437..9c0de3bcdd 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -15,5 +15,6 @@ "search.exclude": { "**/dist": true, "**/generated": true - } + }, + "cSpell.words": ["Tanstack", "Tansu"] } diff --git a/demo/src/lib/layout/Published.svelte b/demo/src/lib/layout/Published.svelte index 3114f20224..3ba65fcf08 100644 --- a/demo/src/lib/layout/Published.svelte +++ b/demo/src/lib/layout/Published.svelte @@ -7,6 +7,7 @@ import share from 'bootstrap-icons/icons/share.svg?raw'; import fbasso from '$resources/images/fbasso.webp'; + import fexbrayat from '$resources/images/fexbrayat.webp'; import {onMount} from 'svelte'; type AuthorInfo = { @@ -19,6 +20,10 @@ icon: fbasso, title: 'Fabrice Basso, Software engineer at Amadeus', }, + fexbrayat: { + icon: fexbrayat, + title: 'Florent Exbrayat, Principal engineer at Amadeus', + }, } satisfies Record; interface Props { diff --git a/demo/src/resources/images/fexbrayat.webp b/demo/src/resources/images/fexbrayat.webp new file mode 100644 index 0000000000000000000000000000000000000000..69e7ff49cc8618b2a2212958be05d3f01aac95e3 GIT binary patch literal 5330 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 G>wf?;2@NIy diff --git a/demo/src/routes/+layout.svelte b/demo/src/routes/+layout.svelte index 56b28e8f05..587911e3bd 100644 --- a/demo/src/routes/+layout.svelte +++ b/demo/src/routes/+layout.svelte @@ -119,7 +119,7 @@ {/if} Blog diff --git a/demo/src/routes/blog/+layout.server.ts b/demo/src/routes/blog/+layout.server.ts index 08eebc23ff..32bfedc852 100644 --- a/demo/src/routes/blog/+layout.server.ts +++ b/demo/src/routes/blog/+layout.server.ts @@ -3,7 +3,10 @@ export const load = () => { menu: [ { title: 'News 2024', - submenu: [{label: 'State management with Tansu', path: 'blog/2024-02-01', slug: 'blog/2024-02-01'}], + submenu: [ + {label: 'Roadmap to 1.0', path: 'blog/2024-11-06'}, + {label: 'State management with Tansu', path: 'blog/2024-02-01', slug: 'blog/2024-02-01'}, + ], }, ], since: 'v0.1.1', diff --git a/demo/src/routes/blog/2024-11-06/+page.server.ts b/demo/src/routes/blog/2024-11-06/+page.server.ts new file mode 100644 index 0000000000..8b8b2cd2bf --- /dev/null +++ b/demo/src/routes/blog/2024-11-06/+page.server.ts @@ -0,0 +1,10 @@ +export const load = () => ({ + pageMeta: { + title: 'Roadmap to 1.0', + description: + 'AgnosUI is currently in 0.X version, but we intend to progress to reach 1.0 by 2025. In this blog we explain the steps to go there.', + socialImage: 'https://www.agnosui.dev/static/roadmap1.0-social-share.png', + socialImageAlt: 'Blog roadmap 1.0 image', + shareUrl: 'https://www.agnosui.dev/latest/blog/2024-11-06', + }, +}); diff --git a/demo/src/routes/blog/2024-11-06/+page.svelte b/demo/src/routes/blog/2024-11-06/+page.svelte new file mode 100644 index 0000000000..59f9e9a0fd --- /dev/null +++ b/demo/src/routes/blog/2024-11-06/+page.svelte @@ -0,0 +1,14 @@ + + +
+ +frontend development + diff --git a/demo/src/routes/blog/2024-11-06/roadmap1.0.md b/demo/src/routes/blog/2024-11-06/roadmap1.0.md new file mode 100644 index 0000000000..5a4bff7564 --- /dev/null +++ b/demo/src/routes/blog/2024-11-06/roadmap1.0.md @@ -0,0 +1,76 @@ +It has been a year since our first commit, and we have made significant progress since the beginning of our library. We are getting closer to reaching our 1.0 version, and we want to provide a clearer vision of the library's future. + +## Tech Enablers + +### Pass the Demos to SSR + +We are working on delivering our demo examples using Server-Side Rendering (SSR) to enhance performance and user experience (UX). + +### Migrate the React Demo Site to Tanstack Start + +Currently, our React demos are built using Vite, but this doesn't reflect real-life usage of React. We intend to migrate our React demo site to Tanstack Start to benefit from a more realistic environment. + +### Upgrade to New Framework Versions + +We plan to update our library to React 19 and Angular 19 as soon as they are officially released. + +## Signal with Tansu 2.0 + +We are improving the performance of Tansu (our reactive state library) (see [this PR](https://github.com/AmadeusITGroup/tansu/pull/139)) while working closely with TC39 to integrate similar features into the future signal implementation. + +Here are our contributions to the ongoing work on signals: + +- [issue 227](https://github.com/tc39/proposal-signals/issues/227) +- [issue 226](https://github.com/tc39/proposal-signals/issues/226) +- [PR 197](https://github.com/tc39/proposal-signals/pull/197) + +## Components + +We plan to add several new components to AgnosUI. Here is a non-exhaustive list of the components we are targeting: + +- Carousel (already in progress for version 0.6) +- Dropdown +- Select +- Tree (already in progress for version 0.6) +- Stepper +- SideNav +- Tabs +- ScrollSpy +- Tooltip +- Popover + +For date/time components, we will need to evaluate the correct abstraction to use underneath. + +We will improve some of our current components by providing services to manage them (Modal, Toast) and evaluate the usage of the new native Popover API. + +## Documentation Review + +We intend to continue improving the documentation by adding examples of features and emphasizing the accessibility and good UX of our components. + +### Blog + +We will publish a few articles highlighting why our widget libraries are interesting and the best solution for users' needs. + +### Contribution Guide + +A detailed guide to help new contributors participate in the development of AgnosUI will be delivered. + +### Navigation Manager Service + +Documentation on our navigation manager service for better knowledge and user experience. + +### Intersection Service + +Explanation of our intersection service for efficient management of elements visible in the viewport. + +### Extension Capabilities + +Documentation on the extension capabilities of AgnosUI, including available configuration options. + +### Release Management + +We will provide clear documentation on our release management process for AgnosUI. As we have multiple libraries, we need to clarify this. + +## Conclusion + +We are excited to share these updates with you and continue improving AgnosUI to meet your development needs and to see the progress we've made this year and cannot wait to reach our first major release. We hope you are as excited as we are and will share more news regarding AgnosUI, where components shine. Stay tuned for more details and updates! diff --git a/demo/src/routes/menu/MobileMenu.svelte b/demo/src/routes/menu/MobileMenu.svelte index d9f5ced2b6..578bb5b340 100644 --- a/demo/src/routes/menu/MobileMenu.svelte +++ b/demo/src/routes/menu/MobileMenu.svelte @@ -48,7 +48,7 @@