@openwarelabs/blocks 0.9.0 → 0.10.1
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.
- package/README.md +36 -10
- package/dist/app-shells/Shell01/Shell01.d.cts +6 -0
- package/dist/app-shells/Shell01/Shell01.d.ts +6 -0
- package/dist/app-shells/Shell01/Shell01.types.d.cts +48 -0
- package/dist/app-shells/Shell01/Shell01.types.d.ts +48 -0
- package/dist/app-shells/Shell02/Shell02.d.cts +7 -0
- package/dist/app-shells/Shell02/Shell02.d.ts +7 -0
- package/dist/app-shells/Shell02/Shell02.types.d.cts +50 -0
- package/dist/app-shells/Shell02/Shell02.types.d.ts +50 -0
- package/dist/app-shells/Shell03/Shell03.d.cts +6 -0
- package/dist/app-shells/Shell03/Shell03.d.ts +6 -0
- package/dist/app-shells/Shell03/Shell03.types.d.cts +73 -0
- package/dist/app-shells/Shell03/Shell03.types.d.ts +73 -0
- package/dist/app-shells/Shell04/Shell04.d.cts +6 -0
- package/dist/app-shells/Shell04/Shell04.d.ts +6 -0
- package/dist/app-shells/Shell04/Shell04.types.d.cts +68 -0
- package/dist/app-shells/Shell04/Shell04.types.d.ts +68 -0
- package/dist/blog/Blog01/Blog01.d.cts +3 -0
- package/dist/blog/Blog01/Blog01.d.ts +3 -0
- package/dist/blog/Blog01/Blog01.types.d.cts +55 -0
- package/dist/blog/Blog01/Blog01.types.d.ts +55 -0
- package/dist/blog/Blog02/Blog02.d.cts +3 -0
- package/dist/blog/Blog02/Blog02.d.ts +3 -0
- package/dist/blog/Blog02/Blog02.types.d.cts +51 -0
- package/dist/blog/Blog02/Blog02.types.d.ts +51 -0
- package/dist/blog/Blog03/Blog03.d.cts +3 -0
- package/dist/blog/Blog03/Blog03.d.ts +3 -0
- package/dist/blog/Blog03/Blog03.types.d.cts +66 -0
- package/dist/blog/Blog03/Blog03.types.d.ts +66 -0
- package/dist/blog/Blog04/Blog04.d.cts +3 -0
- package/dist/blog/Blog04/Blog04.d.ts +3 -0
- package/dist/blog/Blog04/Blog04.types.d.cts +64 -0
- package/dist/blog/Blog04/Blog04.types.d.ts +64 -0
- package/dist/chat/Chat01/Chat01.d.cts +6 -0
- package/dist/chat/Chat01/Chat01.d.ts +6 -0
- package/dist/chat/Chat01/Chat01.types.d.cts +95 -0
- package/dist/chat/Chat01/Chat01.types.d.ts +95 -0
- package/dist/chat/Chat02/Chat02.d.cts +6 -0
- package/dist/chat/Chat02/Chat02.d.ts +6 -0
- package/dist/chat/Chat02/Chat02.types.d.cts +70 -0
- package/dist/chat/Chat02/Chat02.types.d.ts +70 -0
- package/dist/chat/Chat03/Chat03.d.cts +6 -0
- package/dist/chat/Chat03/Chat03.d.ts +6 -0
- package/dist/chat/Chat03/Chat03.types.d.cts +96 -0
- package/dist/chat/Chat03/Chat03.types.d.ts +96 -0
- package/dist/contact/Contact01/Contact01.d.cts +3 -0
- package/dist/contact/Contact01/Contact01.d.ts +3 -0
- package/dist/contact/Contact01/Contact01.types.d.cts +103 -0
- package/dist/contact/Contact01/Contact01.types.d.ts +103 -0
- package/dist/contact/Contact02/Contact02.d.cts +3 -0
- package/dist/contact/Contact02/Contact02.d.ts +3 -0
- package/dist/contact/Contact02/Contact02.types.d.cts +56 -0
- package/dist/contact/Contact02/Contact02.types.d.ts +56 -0
- package/dist/dashboards/Dashboard01/Dashboard01.d.cts +3 -0
- package/dist/dashboards/Dashboard01/Dashboard01.d.ts +3 -0
- package/dist/dashboards/Dashboard01/Dashboard01.types.d.cts +53 -0
- package/dist/dashboards/Dashboard01/Dashboard01.types.d.ts +53 -0
- package/dist/dashboards/Dashboard02/Dashboard02.d.cts +3 -0
- package/dist/dashboards/Dashboard02/Dashboard02.d.ts +3 -0
- package/dist/dashboards/Dashboard02/Dashboard02.types.d.cts +74 -0
- package/dist/dashboards/Dashboard02/Dashboard02.types.d.ts +74 -0
- package/dist/dashboards/Dashboard03/Dashboard03.d.cts +6 -0
- package/dist/dashboards/Dashboard03/Dashboard03.d.ts +6 -0
- package/dist/dashboards/Dashboard03/Dashboard03.types.d.cts +131 -0
- package/dist/dashboards/Dashboard03/Dashboard03.types.d.ts +131 -0
- package/dist/empty-states/Empty01/Empty01.d.cts +3 -0
- package/dist/empty-states/Empty01/Empty01.d.ts +3 -0
- package/dist/empty-states/Empty01/Empty01.types.d.cts +94 -0
- package/dist/empty-states/Empty01/Empty01.types.d.ts +94 -0
- package/dist/empty-states/Empty02/Empty02.d.cts +3 -0
- package/dist/empty-states/Empty02/Empty02.d.ts +3 -0
- package/dist/empty-states/Empty02/Empty02.types.d.cts +72 -0
- package/dist/empty-states/Empty02/Empty02.types.d.ts +72 -0
- package/dist/empty-states/Empty03/Empty03.d.cts +3 -0
- package/dist/empty-states/Empty03/Empty03.d.ts +3 -0
- package/dist/empty-states/Empty03/Empty03.types.d.cts +72 -0
- package/dist/empty-states/Empty03/Empty03.types.d.ts +72 -0
- package/dist/error-pages/ErrorPage01/ErrorPage01.d.cts +3 -0
- package/dist/error-pages/ErrorPage01/ErrorPage01.d.ts +3 -0
- package/dist/error-pages/ErrorPage01/ErrorPage01.types.d.cts +48 -0
- package/dist/error-pages/ErrorPage01/ErrorPage01.types.d.ts +48 -0
- package/dist/error-pages/ErrorPage02/ErrorPage02.d.cts +3 -0
- package/dist/error-pages/ErrorPage02/ErrorPage02.d.ts +3 -0
- package/dist/error-pages/ErrorPage02/ErrorPage02.types.d.cts +45 -0
- package/dist/error-pages/ErrorPage02/ErrorPage02.types.d.ts +45 -0
- package/dist/error-pages/ErrorPage03/ErrorPage03.d.cts +3 -0
- package/dist/error-pages/ErrorPage03/ErrorPage03.d.ts +3 -0
- package/dist/error-pages/ErrorPage03/ErrorPage03.types.d.cts +45 -0
- package/dist/error-pages/ErrorPage03/ErrorPage03.types.d.ts +45 -0
- package/dist/faq/Faq01/Faq01.d.cts +3 -0
- package/dist/faq/Faq01/Faq01.d.ts +3 -0
- package/dist/faq/Faq01/Faq01.types.d.cts +23 -0
- package/dist/faq/Faq01/Faq01.types.d.ts +23 -0
- package/dist/faq/Faq02/Faq02.d.cts +3 -0
- package/dist/faq/Faq02/Faq02.d.ts +3 -0
- package/dist/faq/Faq02/Faq02.types.d.cts +24 -0
- package/dist/faq/Faq02/Faq02.types.d.ts +24 -0
- package/dist/faq/Faq03/Faq03.d.cts +3 -0
- package/dist/faq/Faq03/Faq03.d.ts +3 -0
- package/dist/faq/Faq03/Faq03.types.d.cts +42 -0
- package/dist/faq/Faq03/Faq03.types.d.ts +42 -0
- package/dist/forms/Form01/Form01.d.cts +3 -0
- package/dist/forms/Form01/Form01.d.ts +3 -0
- package/dist/forms/Form01/Form01.types.d.cts +20 -0
- package/dist/forms/Form01/Form01.types.d.ts +20 -0
- package/dist/forms/Form02/Form02.d.cts +3 -0
- package/dist/forms/Form02/Form02.d.ts +3 -0
- package/dist/forms/Form02/Form02.types.d.cts +38 -0
- package/dist/forms/Form02/Form02.types.d.ts +38 -0
- package/dist/forms/Form03/Form03.d.cts +3 -0
- package/dist/forms/Form03/Form03.d.ts +3 -0
- package/dist/forms/Form03/Form03.types.d.cts +55 -0
- package/dist/forms/Form03/Form03.types.d.ts +55 -0
- package/dist/index.cjs +6190 -22
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.cts +135 -1
- package/dist/index.d.ts +135 -1
- package/dist/index.js +6220 -19
- package/dist/index.js.map +4 -4
- package/dist/lists-and-tables/List01/List01.d.cts +6 -0
- package/dist/lists-and-tables/List01/List01.d.ts +6 -0
- package/dist/lists-and-tables/List01/List01.types.d.cts +60 -0
- package/dist/lists-and-tables/List01/List01.types.d.ts +60 -0
- package/dist/lists-and-tables/List02/List02.d.cts +3 -0
- package/dist/lists-and-tables/List02/List02.d.ts +3 -0
- package/dist/lists-and-tables/List02/List02.types.d.cts +54 -0
- package/dist/lists-and-tables/List02/List02.types.d.ts +54 -0
- package/dist/lists-and-tables/List03/List03.d.cts +3 -0
- package/dist/lists-and-tables/List03/List03.d.ts +3 -0
- package/dist/lists-and-tables/List03/List03.types.d.cts +41 -0
- package/dist/lists-and-tables/List03/List03.types.d.ts +41 -0
- package/dist/lists-and-tables/List04/List04.d.cts +3 -0
- package/dist/lists-and-tables/List04/List04.d.ts +3 -0
- package/dist/lists-and-tables/List04/List04.types.d.cts +67 -0
- package/dist/lists-and-tables/List04/List04.types.d.ts +67 -0
- package/dist/logo-clouds/Logos01/Logos01.d.cts +3 -0
- package/dist/logo-clouds/Logos01/Logos01.d.ts +3 -0
- package/dist/logo-clouds/Logos01/Logos01.types.d.cts +13 -0
- package/dist/logo-clouds/Logos01/Logos01.types.d.ts +13 -0
- package/dist/logo-clouds/Logos02/Logos02.d.cts +3 -0
- package/dist/logo-clouds/Logos02/Logos02.d.ts +3 -0
- package/dist/logo-clouds/Logos02/Logos02.types.d.cts +28 -0
- package/dist/logo-clouds/Logos02/Logos02.types.d.ts +28 -0
- package/dist/logo-clouds/Logos03/Logos03.d.cts +3 -0
- package/dist/logo-clouds/Logos03/Logos03.d.ts +3 -0
- package/dist/logo-clouds/Logos03/Logos03.types.d.cts +23 -0
- package/dist/logo-clouds/Logos03/Logos03.types.d.ts +23 -0
- package/dist/newsletter/Newsletter01/Newsletter01.d.cts +3 -0
- package/dist/newsletter/Newsletter01/Newsletter01.d.ts +3 -0
- package/dist/newsletter/Newsletter01/Newsletter01.types.d.cts +39 -0
- package/dist/newsletter/Newsletter01/Newsletter01.types.d.ts +39 -0
- package/dist/newsletter/Newsletter02/Newsletter02.d.cts +3 -0
- package/dist/newsletter/Newsletter02/Newsletter02.d.ts +3 -0
- package/dist/newsletter/Newsletter02/Newsletter02.types.d.cts +42 -0
- package/dist/newsletter/Newsletter02/Newsletter02.types.d.ts +42 -0
- package/dist/notifications/Notifications01/Notifications01.d.cts +3 -0
- package/dist/notifications/Notifications01/Notifications01.d.ts +3 -0
- package/dist/notifications/Notifications01/Notifications01.types.d.cts +74 -0
- package/dist/notifications/Notifications01/Notifications01.types.d.ts +74 -0
- package/dist/notifications/Notifications02/Notifications02.d.cts +3 -0
- package/dist/notifications/Notifications02/Notifications02.d.ts +3 -0
- package/dist/notifications/Notifications02/Notifications02.types.d.cts +65 -0
- package/dist/notifications/Notifications02/Notifications02.types.d.ts +65 -0
- package/dist/notifications/Notifications03/Notifications03.d.cts +3 -0
- package/dist/notifications/Notifications03/Notifications03.d.ts +3 -0
- package/dist/notifications/Notifications03/Notifications03.types.d.cts +87 -0
- package/dist/notifications/Notifications03/Notifications03.types.d.ts +87 -0
- package/dist/onboarding/Onboarding01/Onboarding01.d.cts +3 -0
- package/dist/onboarding/Onboarding01/Onboarding01.d.ts +3 -0
- package/dist/onboarding/Onboarding01/Onboarding01.types.d.cts +46 -0
- package/dist/onboarding/Onboarding01/Onboarding01.types.d.ts +46 -0
- package/dist/onboarding/Onboarding02/Onboarding02.d.cts +3 -0
- package/dist/onboarding/Onboarding02/Onboarding02.d.ts +3 -0
- package/dist/onboarding/Onboarding02/Onboarding02.types.d.cts +68 -0
- package/dist/onboarding/Onboarding02/Onboarding02.types.d.ts +68 -0
- package/dist/onboarding/Onboarding03/Onboarding03.d.cts +3 -0
- package/dist/onboarding/Onboarding03/Onboarding03.d.ts +3 -0
- package/dist/onboarding/Onboarding03/Onboarding03.types.d.cts +38 -0
- package/dist/onboarding/Onboarding03/Onboarding03.types.d.ts +38 -0
- package/dist/page-headings/PageHeading01/PageHeading01.d.cts +6 -0
- package/dist/page-headings/PageHeading01/PageHeading01.d.ts +6 -0
- package/dist/page-headings/PageHeading01/PageHeading01.types.d.cts +35 -0
- package/dist/page-headings/PageHeading01/PageHeading01.types.d.ts +35 -0
- package/dist/page-headings/PageHeading02/PageHeading02.d.cts +3 -0
- package/dist/page-headings/PageHeading02/PageHeading02.d.ts +3 -0
- package/dist/page-headings/PageHeading02/PageHeading02.types.d.cts +49 -0
- package/dist/page-headings/PageHeading02/PageHeading02.types.d.ts +49 -0
- package/dist/page-headings/PageHeading03/PageHeading03.d.cts +6 -0
- package/dist/page-headings/PageHeading03/PageHeading03.d.ts +6 -0
- package/dist/page-headings/PageHeading03/PageHeading03.types.d.cts +83 -0
- package/dist/page-headings/PageHeading03/PageHeading03.types.d.ts +83 -0
- package/dist/section-headings/SectionHeading01/SectionHeading01.d.cts +3 -0
- package/dist/section-headings/SectionHeading01/SectionHeading01.d.ts +3 -0
- package/dist/section-headings/SectionHeading01/SectionHeading01.types.d.cts +9 -0
- package/dist/section-headings/SectionHeading01/SectionHeading01.types.d.ts +9 -0
- package/dist/section-headings/SectionHeading02/SectionHeading02.d.cts +3 -0
- package/dist/section-headings/SectionHeading02/SectionHeading02.d.ts +3 -0
- package/dist/section-headings/SectionHeading02/SectionHeading02.types.d.cts +12 -0
- package/dist/section-headings/SectionHeading02/SectionHeading02.types.d.ts +12 -0
- package/dist/section-headings/SectionHeading03/SectionHeading03.d.cts +3 -0
- package/dist/section-headings/SectionHeading03/SectionHeading03.d.ts +3 -0
- package/dist/section-headings/SectionHeading03/SectionHeading03.types.d.cts +12 -0
- package/dist/section-headings/SectionHeading03/SectionHeading03.types.d.ts +12 -0
- package/dist/settings/Settings01/Settings01.d.cts +3 -0
- package/dist/settings/Settings01/Settings01.d.ts +3 -0
- package/dist/settings/Settings01/Settings01.types.d.cts +46 -0
- package/dist/settings/Settings01/Settings01.types.d.ts +46 -0
- package/dist/settings/Settings02/Settings02.d.cts +3 -0
- package/dist/settings/Settings02/Settings02.d.ts +3 -0
- package/dist/settings/Settings02/Settings02.types.d.cts +45 -0
- package/dist/settings/Settings02/Settings02.types.d.ts +45 -0
- package/dist/settings/Settings03/Settings03.d.cts +3 -0
- package/dist/settings/Settings03/Settings03.d.ts +3 -0
- package/dist/settings/Settings03/Settings03.types.d.cts +132 -0
- package/dist/settings/Settings03/Settings03.types.d.ts +132 -0
- package/dist/settings/Settings04/Settings04.d.cts +3 -0
- package/dist/settings/Settings04/Settings04.d.ts +3 -0
- package/dist/settings/Settings04/Settings04.types.d.cts +124 -0
- package/dist/settings/Settings04/Settings04.types.d.ts +124 -0
- package/dist/settings/Settings05/Settings05.d.cts +3 -0
- package/dist/settings/Settings05/Settings05.d.ts +3 -0
- package/dist/settings/Settings05/Settings05.types.d.cts +94 -0
- package/dist/settings/Settings05/Settings05.types.d.ts +94 -0
- package/dist/shared/AppWorkspaceItems.d.cts +3 -0
- package/dist/shared/AppWorkspaceItems.d.ts +3 -0
- package/dist/shared/BlockActions.d.cts +1 -1
- package/dist/shared/BlockActions.d.ts +1 -1
- package/dist/shared/BlockMenuItems.d.cts +3 -0
- package/dist/shared/BlockMenuItems.d.ts +3 -0
- package/dist/shared/appShell.d.cts +19 -0
- package/dist/shared/appShell.d.ts +19 -0
- package/dist/shared/icons.d.cts +59 -13
- package/dist/shared/icons.d.ts +59 -13
- package/dist/shared/shared.types.d.cts +128 -0
- package/dist/shared/shared.types.d.ts +128 -0
- package/dist/shared/tableColumns.d.cts +10 -0
- package/dist/shared/tableColumns.d.ts +10 -0
- package/dist/sign-in/SignIn01/SignIn01.d.cts +3 -0
- package/dist/sign-in/SignIn01/SignIn01.d.ts +3 -0
- package/dist/sign-in/SignIn01/SignIn01.types.d.cts +52 -0
- package/dist/sign-in/SignIn01/SignIn01.types.d.ts +52 -0
- package/dist/sign-in/SignIn02/SignIn02.d.cts +3 -0
- package/dist/sign-in/SignIn02/SignIn02.d.ts +3 -0
- package/dist/sign-in/SignIn02/SignIn02.types.d.cts +79 -0
- package/dist/sign-in/SignIn02/SignIn02.types.d.ts +79 -0
- package/dist/sign-in/SignIn03/SignIn03.d.cts +3 -0
- package/dist/sign-in/SignIn03/SignIn03.d.ts +3 -0
- package/dist/sign-in/SignIn03/SignIn03.types.d.cts +51 -0
- package/dist/sign-in/SignIn03/SignIn03.types.d.ts +51 -0
- package/dist/sign-in/SignIn04/SignIn04.d.cts +3 -0
- package/dist/sign-in/SignIn04/SignIn04.d.ts +3 -0
- package/dist/sign-in/SignIn04/SignIn04.types.d.cts +56 -0
- package/dist/sign-in/SignIn04/SignIn04.types.d.ts +56 -0
- package/dist/sign-in/SignIn05/SignIn05.d.cts +3 -0
- package/dist/sign-in/SignIn05/SignIn05.d.ts +3 -0
- package/dist/sign-in/SignIn05/SignIn05.types.d.cts +86 -0
- package/dist/sign-in/SignIn05/SignIn05.types.d.ts +86 -0
- package/dist/stats/Stats01/Stats01.d.cts +3 -0
- package/dist/stats/Stats01/Stats01.d.ts +3 -0
- package/dist/stats/Stats01/Stats01.types.d.cts +19 -0
- package/dist/stats/Stats01/Stats01.types.d.ts +19 -0
- package/dist/stats/Stats02/Stats02.d.cts +3 -0
- package/dist/stats/Stats02/Stats02.d.ts +3 -0
- package/dist/stats/Stats02/Stats02.types.d.cts +30 -0
- package/dist/stats/Stats02/Stats02.types.d.ts +30 -0
- package/dist/stats/Stats03/Stats03.d.cts +3 -0
- package/dist/stats/Stats03/Stats03.d.ts +3 -0
- package/dist/stats/Stats03/Stats03.types.d.cts +24 -0
- package/dist/stats/Stats03/Stats03.types.d.ts +24 -0
- package/dist/styles.css +11992 -2727
- package/dist/team/Team01/Team01.d.cts +3 -0
- package/dist/team/Team01/Team01.d.ts +3 -0
- package/dist/team/Team01/Team01.types.d.cts +25 -0
- package/dist/team/Team01/Team01.types.d.ts +25 -0
- package/dist/team/Team02/Team02.d.cts +3 -0
- package/dist/team/Team02/Team02.d.ts +3 -0
- package/dist/team/Team02/Team02.types.d.cts +37 -0
- package/dist/team/Team02/Team02.types.d.ts +37 -0
- package/dist/testimonials/Testimonial01/Testimonial01.d.cts +3 -0
- package/dist/testimonials/Testimonial01/Testimonial01.d.ts +3 -0
- package/dist/testimonials/Testimonial01/Testimonial01.types.d.cts +21 -0
- package/dist/testimonials/Testimonial01/Testimonial01.types.d.ts +21 -0
- package/dist/testimonials/Testimonial02/Testimonial02.d.cts +3 -0
- package/dist/testimonials/Testimonial02/Testimonial02.d.ts +3 -0
- package/dist/testimonials/Testimonial02/Testimonial02.types.d.cts +25 -0
- package/dist/testimonials/Testimonial02/Testimonial02.types.d.ts +25 -0
- package/dist/testimonials/Testimonial03/Testimonial03.d.cts +3 -0
- package/dist/testimonials/Testimonial03/Testimonial03.d.ts +3 -0
- package/dist/testimonials/Testimonial03/Testimonial03.types.d.cts +45 -0
- package/dist/testimonials/Testimonial03/Testimonial03.types.d.ts +45 -0
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Whole page sections built from [Openware UI](https://github.com/openwarelabs/ui) (`@openwarelabs/ui`), as React components that take their content as props. Drop one in, pass your words, actions and screenshots, and it follows the theme, the brand colour and every screen width.
|
|
4
4
|
|
|
5
|
+
See every block live, at every width, with its props: [openwarelabs.github.io/ui/#/blocks](https://openwarelabs.github.io/ui/#/blocks).
|
|
6
|
+
|
|
5
7
|
```sh
|
|
6
8
|
npm install @openwarelabs/ui @openwarelabs/blocks
|
|
7
9
|
```
|
|
@@ -28,18 +30,42 @@ The page needs `data-theme` on `<html>` and `class="ow-app"` on `<body>`, as for
|
|
|
28
30
|
|
|
29
31
|
## Blocks
|
|
30
32
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
33
|
+
All 95, by group and category. Each one's props, with their types and descriptions, are on its page in the docs and in the MCP server.
|
|
34
|
+
|
|
35
|
+
### Marketing
|
|
36
|
+
|
|
37
|
+
- **Headers**: `Header01` floating pill, `Header02` full-width bar, `Header03` centred logo, `Header04` with an announcement, `Header05` phone menu
|
|
38
|
+
- **Heroes**: `Hero01` centred with a screenshot, `Hero02` split with an image, `Hero03` with an email field, `Hero04` on a dot grid, `Hero05` with logos below, `Hero06` download buttons
|
|
39
|
+
- **Section headings**: `SectionHeading01` centred, `SectionHeading02` with a link, `SectionHeading03` split
|
|
40
|
+
- **Features**: `Features01` three columns with icons, `Features02` alternating image and text, `Features03` bento grid, `Features04` tabs that change the screenshot, `Features05` checklist beside a screenshot
|
|
41
|
+
- **Logo clouds**: `Logos01` single row, `Logos02` grid, `Logos03` scrolling
|
|
42
|
+
- **Stats**: `Stats01` row of numbers, `Stats02` on cards, `Stats03` beside a heading
|
|
43
|
+
- **Testimonials**: `Testimonial01` single quote, `Testimonial02` grid of quotes, `Testimonial03` with a company logo
|
|
44
|
+
- **Pricing**: `Pricing01` three plans, `Pricing02` monthly or yearly, `Pricing03` comparison table, `Pricing04` one plan, `Pricing05` pay as you go
|
|
45
|
+
- **FAQs**: `Faq01` accordion, `Faq02` two columns, `Faq03` with a contact card
|
|
46
|
+
- **Calls to action**: `Cta01` banner, `Cta02` on the brand colour, `Cta03` split with an image
|
|
47
|
+
- **Newsletter sign-up**: `Newsletter01` inline, `Newsletter02` card
|
|
48
|
+
- **Blog and changelog**: `Blog01` post grid, `Blog02` featured post, `Blog03` changelog, `Blog04` article
|
|
49
|
+
- **Team**: `Team01` avatar grid, `Team02` cards
|
|
50
|
+
- **Contact**: `Contact01` form with details, `Contact02` support options
|
|
51
|
+
- **Footers**: `Footer01` columns of links, `Footer02` simple, `Footer03` with a newsletter field, `Footer04` big brand mark
|
|
52
|
+
|
|
53
|
+
### Application
|
|
39
54
|
|
|
40
|
-
|
|
55
|
+
- **App shells**: `Shell01` sidebar, `Shell02` top bar, `Shell03` three panes, `Shell04` collapsible sidebar
|
|
56
|
+
- **Page headings**: `PageHeading01` title and actions, `PageHeading02` with breadcrumbs and tabs, `PageHeading03` with search and filters
|
|
57
|
+
- **Dashboards**: `Dashboard01` stats and a chart, `Dashboard02` activity, `Dashboard03` usage and billing
|
|
58
|
+
- **Lists and tables**: `List01` table with a toolbar, `List02` bulk actions, `List03` stacked list, `List04` grid of cards
|
|
59
|
+
- **Form layouts**: `Form01` single column, `Form02` sections with descriptions, `Form03` multi-step
|
|
60
|
+
- **Settings**: `Settings01` settings dialog, `Settings02` settings page, `Settings03` API keys, `Settings04` members and roles, `Settings05` danger zone
|
|
61
|
+
- **Sign in and sign up**: `SignIn01` sign-in card, `SignIn02` split with a picture, `SignIn03` magic link, `SignIn04` two-factor code, `SignIn05` reset password
|
|
62
|
+
- **Onboarding**: `Onboarding01` checklist, `Onboarding02` choose how to start, `Onboarding03` welcome dialog
|
|
63
|
+
- **Empty states**: `Empty01` first run, `Empty02` no results, `Empty03` couldn't load
|
|
64
|
+
- **Error pages**: `ErrorPage01` not found, `ErrorPage02` something went wrong, `ErrorPage03` down for maintenance
|
|
65
|
+
- **Notifications and activity**: `Notifications01` inbox popover, `Notifications02` activity feed, `Notifications03` notification settings
|
|
66
|
+
- **Chat and agents**: `Chat01` chat thread, `Chat02` prompt box, `Chat03` agent run
|
|
41
67
|
|
|
42
|
-
|
|
68
|
+
Actions are `{ label, href?, onClick?, startIcon?, endIcon? }`: with `href` they're links styled as buttons, so they work with any router. Every block also takes the attributes of its root element (`className`, `id` and so on), and the words it shows itself (button labels, messages, aria labels) through an optional `labels` prop, with English defaults. Interactive blocks keep their own state and work with no callbacks; pass `onSubmit`, `onSelect` and the like to connect them, or `value` and `onChange` where a block can be controlled. Product pictures (`visual`, `cover`, a chart) are yours to pass in.
|
|
43
69
|
|
|
44
70
|
## With AI tools
|
|
45
71
|
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Shell01Props } from "./Shell01.types.cjs";
|
|
2
|
+
/**
|
|
3
|
+
* An app's frame: navigation down the left on the canvas, the account at the bottom, and the page on a raised panel
|
|
4
|
+
* beside it. On phones the sidebar folds into a drawer behind a bar at the top.
|
|
5
|
+
*/
|
|
6
|
+
export declare function Shell01({ workspace, logo, workspaces, onNewWorkspace, navigation, current, defaultCurrent, onNavigate, account, accountMenu, commands, children, labels, className, ...props }: Shell01Props): import("react").JSX.Element;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Shell01Props } from "./Shell01.types.js";
|
|
2
|
+
/**
|
|
3
|
+
* An app's frame: navigation down the left on the canvas, the account at the bottom, and the page on a raised panel
|
|
4
|
+
* beside it. On phones the sidebar folds into a drawer behind a bar at the top.
|
|
5
|
+
*/
|
|
6
|
+
export declare function Shell01({ workspace, logo, workspaces, onNewWorkspace, navigation, current, defaultCurrent, onNavigate, account, accountMenu, commands, children, labels, className, ...props }: Shell01Props): import("react").JSX.Element;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
import type { AppAccount, AppCommand, AppMenuItem, AppNavGroup, AppWorkspace } from "../../shared/shared.types.cjs";
|
|
3
|
+
export interface Shell01Labels {
|
|
4
|
+
/** The workspace menu's name and heading. @default "Workspaces" */
|
|
5
|
+
workspaces?: string;
|
|
6
|
+
/** The last item in the workspace menu. @default "New workspace" */
|
|
7
|
+
newWorkspace?: string;
|
|
8
|
+
/** The search button's words, and the phone bar's search button's name. @default "Search" */
|
|
9
|
+
search?: string;
|
|
10
|
+
/** The search box's placeholder. @default "Search…" */
|
|
11
|
+
searchPlaceholder?: string;
|
|
12
|
+
/** Names the sidebar for screen readers. @default "Main navigation" */
|
|
13
|
+
navigation?: string;
|
|
14
|
+
/** The account menu's name. @default "Account" */
|
|
15
|
+
account?: string;
|
|
16
|
+
/** The phone bar's menu button's name. @default "Open navigation" */
|
|
17
|
+
openNavigation?: string;
|
|
18
|
+
/** The phone drawer's title. @default "Menu" */
|
|
19
|
+
menu?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface Shell01Props extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
|
|
22
|
+
/** The workspace's name, at the top of the sidebar. */
|
|
23
|
+
workspace: string;
|
|
24
|
+
/** Its mark before the name, about 22px square. */
|
|
25
|
+
logo?: ReactNode;
|
|
26
|
+
/** The workspaces in its menu, the current one ticked. @default just this one */
|
|
27
|
+
workspaces?: AppWorkspace[];
|
|
28
|
+
/** Called by the workspace menu's last item, "New workspace". */
|
|
29
|
+
onNewWorkspace?(): void;
|
|
30
|
+
/** The places down the sidebar, in groups. On phones they move into a drawer behind a menu button. */
|
|
31
|
+
navigation: AppNavGroup[];
|
|
32
|
+
/** The current place's id, when you keep it yourself. */
|
|
33
|
+
current?: string;
|
|
34
|
+
/** The place that's current to start with. */
|
|
35
|
+
defaultCurrent?: string;
|
|
36
|
+
/** Called with a place's id when it's chosen, from the sidebar, a menu or the search. */
|
|
37
|
+
onNavigate?(id: string): void;
|
|
38
|
+
/** The person signed in, at the bottom of the sidebar. */
|
|
39
|
+
account: AppAccount;
|
|
40
|
+
/** The account menu: profile, settings, sign out. */
|
|
41
|
+
accountMenu?: AppMenuItem[];
|
|
42
|
+
/** What the search finds (⌘K). Without any, there's no search. */
|
|
43
|
+
commands?: AppCommand[];
|
|
44
|
+
/** The page, on a raised panel beside the sidebar. */
|
|
45
|
+
children?: ReactNode;
|
|
46
|
+
/** Words that aren't content (menus' names, buttons for screen readers), in English unless you pass your own. */
|
|
47
|
+
labels?: Shell01Labels;
|
|
48
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
import type { AppAccount, AppCommand, AppMenuItem, AppNavGroup, AppWorkspace } from "../../shared/shared.types.js";
|
|
3
|
+
export interface Shell01Labels {
|
|
4
|
+
/** The workspace menu's name and heading. @default "Workspaces" */
|
|
5
|
+
workspaces?: string;
|
|
6
|
+
/** The last item in the workspace menu. @default "New workspace" */
|
|
7
|
+
newWorkspace?: string;
|
|
8
|
+
/** The search button's words, and the phone bar's search button's name. @default "Search" */
|
|
9
|
+
search?: string;
|
|
10
|
+
/** The search box's placeholder. @default "Search…" */
|
|
11
|
+
searchPlaceholder?: string;
|
|
12
|
+
/** Names the sidebar for screen readers. @default "Main navigation" */
|
|
13
|
+
navigation?: string;
|
|
14
|
+
/** The account menu's name. @default "Account" */
|
|
15
|
+
account?: string;
|
|
16
|
+
/** The phone bar's menu button's name. @default "Open navigation" */
|
|
17
|
+
openNavigation?: string;
|
|
18
|
+
/** The phone drawer's title. @default "Menu" */
|
|
19
|
+
menu?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface Shell01Props extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
|
|
22
|
+
/** The workspace's name, at the top of the sidebar. */
|
|
23
|
+
workspace: string;
|
|
24
|
+
/** Its mark before the name, about 22px square. */
|
|
25
|
+
logo?: ReactNode;
|
|
26
|
+
/** The workspaces in its menu, the current one ticked. @default just this one */
|
|
27
|
+
workspaces?: AppWorkspace[];
|
|
28
|
+
/** Called by the workspace menu's last item, "New workspace". */
|
|
29
|
+
onNewWorkspace?(): void;
|
|
30
|
+
/** The places down the sidebar, in groups. On phones they move into a drawer behind a menu button. */
|
|
31
|
+
navigation: AppNavGroup[];
|
|
32
|
+
/** The current place's id, when you keep it yourself. */
|
|
33
|
+
current?: string;
|
|
34
|
+
/** The place that's current to start with. */
|
|
35
|
+
defaultCurrent?: string;
|
|
36
|
+
/** Called with a place's id when it's chosen, from the sidebar, a menu or the search. */
|
|
37
|
+
onNavigate?(id: string): void;
|
|
38
|
+
/** The person signed in, at the bottom of the sidebar. */
|
|
39
|
+
account: AppAccount;
|
|
40
|
+
/** The account menu: profile, settings, sign out. */
|
|
41
|
+
accountMenu?: AppMenuItem[];
|
|
42
|
+
/** What the search finds (⌘K). Without any, there's no search. */
|
|
43
|
+
commands?: AppCommand[];
|
|
44
|
+
/** The page, on a raised panel beside the sidebar. */
|
|
45
|
+
children?: ReactNode;
|
|
46
|
+
/** Words that aren't content (menus' names, buttons for screen readers), in English unless you pass your own. */
|
|
47
|
+
labels?: Shell01Labels;
|
|
48
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Shell02Props } from "./Shell02.types.cjs";
|
|
2
|
+
/**
|
|
3
|
+
* An app's frame for a few sections: the workspace, the sections and the account across the top on the canvas, and
|
|
4
|
+
* the page on a raised panel under them. Under 1024px the search folds to its icon; on phones the sections and the
|
|
5
|
+
* account move into a drawer.
|
|
6
|
+
*/
|
|
7
|
+
export declare function Shell02({ workspace, logo, workspaces, onNewWorkspace, navigation, current, defaultCurrent, onNavigate, account, accountMenu, commands, children, labels, className, ...props }: Shell02Props): import("react").JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Shell02Props } from "./Shell02.types.js";
|
|
2
|
+
/**
|
|
3
|
+
* An app's frame for a few sections: the workspace, the sections and the account across the top on the canvas, and
|
|
4
|
+
* the page on a raised panel under them. Under 1024px the search folds to its icon; on phones the sections and the
|
|
5
|
+
* account move into a drawer.
|
|
6
|
+
*/
|
|
7
|
+
export declare function Shell02({ workspace, logo, workspaces, onNewWorkspace, navigation, current, defaultCurrent, onNavigate, account, accountMenu, commands, children, labels, className, ...props }: Shell02Props): import("react").JSX.Element;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
import type { AppAccount, AppCommand, AppMenuItem, AppNavItem, AppWorkspace } from "../../shared/shared.types.cjs";
|
|
3
|
+
export interface Shell02Labels {
|
|
4
|
+
/** The workspace menu's name and heading. @default "Workspaces" */
|
|
5
|
+
workspaces?: string;
|
|
6
|
+
/** The last item in the workspace menu. @default "New workspace" */
|
|
7
|
+
newWorkspace?: string;
|
|
8
|
+
/** The search button's words, and the search icon's name. @default "Search" */
|
|
9
|
+
search?: string;
|
|
10
|
+
/** The search box's placeholder. @default "Search…" */
|
|
11
|
+
searchPlaceholder?: string;
|
|
12
|
+
/** Names the navigation for screen readers. @default "Main navigation" */
|
|
13
|
+
navigation?: string;
|
|
14
|
+
/** The account menu's name. @default "Account" */
|
|
15
|
+
account?: string;
|
|
16
|
+
/** The avatar button's name. @default "Account: Maya Chen" */
|
|
17
|
+
accountButton?(name: string): string;
|
|
18
|
+
/** The phone menu button's name. @default "Open navigation" */
|
|
19
|
+
openNavigation?: string;
|
|
20
|
+
/** The phone drawer's title. @default "Menu" */
|
|
21
|
+
menu?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface Shell02Props extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
|
|
24
|
+
/** The workspace's name, at the start of the bar. */
|
|
25
|
+
workspace: string;
|
|
26
|
+
/** Its mark before the name, about 22px square. */
|
|
27
|
+
logo?: ReactNode;
|
|
28
|
+
/** The workspaces in its menu, the current one ticked. @default just this one */
|
|
29
|
+
workspaces?: AppWorkspace[];
|
|
30
|
+
/** Called by the workspace menu's last item, "New workspace". */
|
|
31
|
+
onNewWorkspace?(): void;
|
|
32
|
+
/** The app's few sections, across the bar. Their icons show in the phone drawer only. */
|
|
33
|
+
navigation: AppNavItem[];
|
|
34
|
+
/** The current section's id, when you keep it yourself. */
|
|
35
|
+
current?: string;
|
|
36
|
+
/** The section that's current to start with. @default the first */
|
|
37
|
+
defaultCurrent?: string;
|
|
38
|
+
/** Called with a section's id when it's chosen, from the bar, the drawer, a menu or the search. */
|
|
39
|
+
onNavigate?(id: string): void;
|
|
40
|
+
/** The person signed in: an avatar at the end of the bar, and the foot of the phone drawer. */
|
|
41
|
+
account: AppAccount;
|
|
42
|
+
/** The account menu: profile, settings, sign out. */
|
|
43
|
+
accountMenu?: AppMenuItem[];
|
|
44
|
+
/** What the search finds (⌘K). Without any, there's no search. */
|
|
45
|
+
commands?: AppCommand[];
|
|
46
|
+
/** The page, in a centred column on a raised panel under the bar. */
|
|
47
|
+
children?: ReactNode;
|
|
48
|
+
/** Words that aren't content (menus' names, buttons for screen readers), in English unless you pass your own. */
|
|
49
|
+
labels?: Shell02Labels;
|
|
50
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
import type { AppAccount, AppCommand, AppMenuItem, AppNavItem, AppWorkspace } from "../../shared/shared.types.js";
|
|
3
|
+
export interface Shell02Labels {
|
|
4
|
+
/** The workspace menu's name and heading. @default "Workspaces" */
|
|
5
|
+
workspaces?: string;
|
|
6
|
+
/** The last item in the workspace menu. @default "New workspace" */
|
|
7
|
+
newWorkspace?: string;
|
|
8
|
+
/** The search button's words, and the search icon's name. @default "Search" */
|
|
9
|
+
search?: string;
|
|
10
|
+
/** The search box's placeholder. @default "Search…" */
|
|
11
|
+
searchPlaceholder?: string;
|
|
12
|
+
/** Names the navigation for screen readers. @default "Main navigation" */
|
|
13
|
+
navigation?: string;
|
|
14
|
+
/** The account menu's name. @default "Account" */
|
|
15
|
+
account?: string;
|
|
16
|
+
/** The avatar button's name. @default "Account: Maya Chen" */
|
|
17
|
+
accountButton?(name: string): string;
|
|
18
|
+
/** The phone menu button's name. @default "Open navigation" */
|
|
19
|
+
openNavigation?: string;
|
|
20
|
+
/** The phone drawer's title. @default "Menu" */
|
|
21
|
+
menu?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface Shell02Props extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
|
|
24
|
+
/** The workspace's name, at the start of the bar. */
|
|
25
|
+
workspace: string;
|
|
26
|
+
/** Its mark before the name, about 22px square. */
|
|
27
|
+
logo?: ReactNode;
|
|
28
|
+
/** The workspaces in its menu, the current one ticked. @default just this one */
|
|
29
|
+
workspaces?: AppWorkspace[];
|
|
30
|
+
/** Called by the workspace menu's last item, "New workspace". */
|
|
31
|
+
onNewWorkspace?(): void;
|
|
32
|
+
/** The app's few sections, across the bar. Their icons show in the phone drawer only. */
|
|
33
|
+
navigation: AppNavItem[];
|
|
34
|
+
/** The current section's id, when you keep it yourself. */
|
|
35
|
+
current?: string;
|
|
36
|
+
/** The section that's current to start with. @default the first */
|
|
37
|
+
defaultCurrent?: string;
|
|
38
|
+
/** Called with a section's id when it's chosen, from the bar, the drawer, a menu or the search. */
|
|
39
|
+
onNavigate?(id: string): void;
|
|
40
|
+
/** The person signed in: an avatar at the end of the bar, and the foot of the phone drawer. */
|
|
41
|
+
account: AppAccount;
|
|
42
|
+
/** The account menu: profile, settings, sign out. */
|
|
43
|
+
accountMenu?: AppMenuItem[];
|
|
44
|
+
/** What the search finds (⌘K). Without any, there's no search. */
|
|
45
|
+
commands?: AppCommand[];
|
|
46
|
+
/** The page, in a centred column on a raised panel under the bar. */
|
|
47
|
+
children?: ReactNode;
|
|
48
|
+
/** Words that aren't content (menus' names, buttons for screen readers), in English unless you pass your own. */
|
|
49
|
+
labels?: Shell02Labels;
|
|
50
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Shell03Props } from "./Shell03.types.cjs";
|
|
2
|
+
/**
|
|
3
|
+
* Three panes: a list on the canvas, and the open item with an inspector beside it on a raised panel. Under 1024px
|
|
4
|
+
* the inspector takes the item's place when asked for; on phones one pane shows at a time, each with a way back.
|
|
5
|
+
*/
|
|
6
|
+
export declare function Shell03({ workspace, logo, workspaces, onNewWorkspace, listTitle, items, selected, defaultSelected, onSelect, newItem, account, accountMenu, children, inspectorTitle, inspector, defaultInspectorOpen, labels, className, ...props }: Shell03Props): import("react").JSX.Element;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Shell03Props } from "./Shell03.types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Three panes: a list on the canvas, and the open item with an inspector beside it on a raised panel. Under 1024px
|
|
4
|
+
* the inspector takes the item's place when asked for; on phones one pane shows at a time, each with a way back.
|
|
5
|
+
*/
|
|
6
|
+
export declare function Shell03({ workspace, logo, workspaces, onNewWorkspace, listTitle, items, selected, defaultSelected, onSelect, newItem, account, accountMenu, children, inspectorTitle, inspector, defaultInspectorOpen, labels, className, ...props }: Shell03Props): import("react").JSX.Element;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
import type { AppAccount, AppMenuItem, AppWorkspace, BlockStatus } from "../../shared/shared.types.cjs";
|
|
3
|
+
/** One thing in the list on the left. */
|
|
4
|
+
export interface Shell03Item {
|
|
5
|
+
/** Unique in the list; what `selected` and `onSelect` use. */
|
|
6
|
+
id: string;
|
|
7
|
+
/** Its name. The list's filter matches it. */
|
|
8
|
+
label: string;
|
|
9
|
+
/** A small mark before the name: a coloured dot, a 15px icon. */
|
|
10
|
+
icon?: ReactNode;
|
|
11
|
+
/** A caption under the name: when it last changed. */
|
|
12
|
+
caption?: ReactNode;
|
|
13
|
+
/** Its state, as a badge at the item's end. */
|
|
14
|
+
status?: BlockStatus;
|
|
15
|
+
}
|
|
16
|
+
export interface Shell03Labels {
|
|
17
|
+
/** The workspace menu's name and heading. @default "Workspaces" */
|
|
18
|
+
workspaces?: string;
|
|
19
|
+
/** The last item in the workspace menu. @default "New workspace" */
|
|
20
|
+
newWorkspace?: string;
|
|
21
|
+
/** The filter field's placeholder and name. @default "Filter" */
|
|
22
|
+
filter?: string;
|
|
23
|
+
/** What the list says when the filter matches nothing. @default "Nothing matches “…”." */
|
|
24
|
+
noMatch?(query: string): ReactNode;
|
|
25
|
+
/** The account menu's name. @default "Account" */
|
|
26
|
+
account?: string;
|
|
27
|
+
/** The details button's name while the inspector shows. @default "Hide details" */
|
|
28
|
+
hideDetails?: string;
|
|
29
|
+
/** Its name while the inspector is hidden. @default "Show details" */
|
|
30
|
+
showDetails?: string;
|
|
31
|
+
/** The inspector's back button on tablets and phones. @default "Back to billing-api" */
|
|
32
|
+
backTo?(label: string): string;
|
|
33
|
+
}
|
|
34
|
+
export interface Shell03Props extends Omit<HTMLAttributes<HTMLDivElement>, "children" | "onSelect"> {
|
|
35
|
+
/** The workspace's name, at the top of the list. */
|
|
36
|
+
workspace: string;
|
|
37
|
+
/** Its mark before the name, about 22px square. */
|
|
38
|
+
logo?: ReactNode;
|
|
39
|
+
/** The workspaces in its menu, the current one ticked. @default just this one */
|
|
40
|
+
workspaces?: AppWorkspace[];
|
|
41
|
+
/** Called by the workspace menu's last item, "New workspace". */
|
|
42
|
+
onNewWorkspace?(): void;
|
|
43
|
+
/** What the list holds, as its heading, its crumb and its back button's words: "Projects". */
|
|
44
|
+
listTitle: string;
|
|
45
|
+
/** The things in the list, which a field above it filters. */
|
|
46
|
+
items: Shell03Item[];
|
|
47
|
+
/** The open item's id, when you keep it yourself. */
|
|
48
|
+
selected?: string;
|
|
49
|
+
/** The item open to start with. @default the first */
|
|
50
|
+
defaultSelected?: string;
|
|
51
|
+
/** Called with an item's id when it's opened. */
|
|
52
|
+
onSelect?(id: string): void;
|
|
53
|
+
/** An icon button beside the list's heading, with a tooltip: "New project". */
|
|
54
|
+
newItem?: {
|
|
55
|
+
label: string;
|
|
56
|
+
onClick?(): void;
|
|
57
|
+
};
|
|
58
|
+
/** The person signed in, at the bottom of the list. */
|
|
59
|
+
account: AppAccount;
|
|
60
|
+
/** The account menu: profile, settings, sign out. */
|
|
61
|
+
accountMenu?: AppMenuItem[];
|
|
62
|
+
/** The open item's page, in the middle. Its h1 takes focus when a narrow screen swaps to it. */
|
|
63
|
+
children?: ReactNode;
|
|
64
|
+
/** The inspector's heading. @default "Details" */
|
|
65
|
+
inspectorTitle?: ReactNode;
|
|
66
|
+
/** What the inspector on the right shows about the open item. Under 1024px wide it takes the item's place. */
|
|
67
|
+
inspector?: ReactNode;
|
|
68
|
+
/** Whether the inspector shows to start with, on wide screens. @default true */
|
|
69
|
+
defaultInspectorOpen?: boolean;
|
|
70
|
+
/** Words that aren't content (names for screen readers, the filter), in English unless you pass your own. */
|
|
71
|
+
labels?: Shell03Labels;
|
|
72
|
+
}
|
|
73
|
+
export type Shell03View = "list" | "item" | "inspector";
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
import type { AppAccount, AppMenuItem, AppWorkspace, BlockStatus } from "../../shared/shared.types.js";
|
|
3
|
+
/** One thing in the list on the left. */
|
|
4
|
+
export interface Shell03Item {
|
|
5
|
+
/** Unique in the list; what `selected` and `onSelect` use. */
|
|
6
|
+
id: string;
|
|
7
|
+
/** Its name. The list's filter matches it. */
|
|
8
|
+
label: string;
|
|
9
|
+
/** A small mark before the name: a coloured dot, a 15px icon. */
|
|
10
|
+
icon?: ReactNode;
|
|
11
|
+
/** A caption under the name: when it last changed. */
|
|
12
|
+
caption?: ReactNode;
|
|
13
|
+
/** Its state, as a badge at the item's end. */
|
|
14
|
+
status?: BlockStatus;
|
|
15
|
+
}
|
|
16
|
+
export interface Shell03Labels {
|
|
17
|
+
/** The workspace menu's name and heading. @default "Workspaces" */
|
|
18
|
+
workspaces?: string;
|
|
19
|
+
/** The last item in the workspace menu. @default "New workspace" */
|
|
20
|
+
newWorkspace?: string;
|
|
21
|
+
/** The filter field's placeholder and name. @default "Filter" */
|
|
22
|
+
filter?: string;
|
|
23
|
+
/** What the list says when the filter matches nothing. @default "Nothing matches “…”." */
|
|
24
|
+
noMatch?(query: string): ReactNode;
|
|
25
|
+
/** The account menu's name. @default "Account" */
|
|
26
|
+
account?: string;
|
|
27
|
+
/** The details button's name while the inspector shows. @default "Hide details" */
|
|
28
|
+
hideDetails?: string;
|
|
29
|
+
/** Its name while the inspector is hidden. @default "Show details" */
|
|
30
|
+
showDetails?: string;
|
|
31
|
+
/** The inspector's back button on tablets and phones. @default "Back to billing-api" */
|
|
32
|
+
backTo?(label: string): string;
|
|
33
|
+
}
|
|
34
|
+
export interface Shell03Props extends Omit<HTMLAttributes<HTMLDivElement>, "children" | "onSelect"> {
|
|
35
|
+
/** The workspace's name, at the top of the list. */
|
|
36
|
+
workspace: string;
|
|
37
|
+
/** Its mark before the name, about 22px square. */
|
|
38
|
+
logo?: ReactNode;
|
|
39
|
+
/** The workspaces in its menu, the current one ticked. @default just this one */
|
|
40
|
+
workspaces?: AppWorkspace[];
|
|
41
|
+
/** Called by the workspace menu's last item, "New workspace". */
|
|
42
|
+
onNewWorkspace?(): void;
|
|
43
|
+
/** What the list holds, as its heading, its crumb and its back button's words: "Projects". */
|
|
44
|
+
listTitle: string;
|
|
45
|
+
/** The things in the list, which a field above it filters. */
|
|
46
|
+
items: Shell03Item[];
|
|
47
|
+
/** The open item's id, when you keep it yourself. */
|
|
48
|
+
selected?: string;
|
|
49
|
+
/** The item open to start with. @default the first */
|
|
50
|
+
defaultSelected?: string;
|
|
51
|
+
/** Called with an item's id when it's opened. */
|
|
52
|
+
onSelect?(id: string): void;
|
|
53
|
+
/** An icon button beside the list's heading, with a tooltip: "New project". */
|
|
54
|
+
newItem?: {
|
|
55
|
+
label: string;
|
|
56
|
+
onClick?(): void;
|
|
57
|
+
};
|
|
58
|
+
/** The person signed in, at the bottom of the list. */
|
|
59
|
+
account: AppAccount;
|
|
60
|
+
/** The account menu: profile, settings, sign out. */
|
|
61
|
+
accountMenu?: AppMenuItem[];
|
|
62
|
+
/** The open item's page, in the middle. Its h1 takes focus when a narrow screen swaps to it. */
|
|
63
|
+
children?: ReactNode;
|
|
64
|
+
/** The inspector's heading. @default "Details" */
|
|
65
|
+
inspectorTitle?: ReactNode;
|
|
66
|
+
/** What the inspector on the right shows about the open item. Under 1024px wide it takes the item's place. */
|
|
67
|
+
inspector?: ReactNode;
|
|
68
|
+
/** Whether the inspector shows to start with, on wide screens. @default true */
|
|
69
|
+
defaultInspectorOpen?: boolean;
|
|
70
|
+
/** Words that aren't content (names for screen readers, the filter), in English unless you pass your own. */
|
|
71
|
+
labels?: Shell03Labels;
|
|
72
|
+
}
|
|
73
|
+
export type Shell03View = "list" | "item" | "inspector";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Shell04Props } from "./Shell04.types.cjs";
|
|
2
|
+
/**
|
|
3
|
+
* An app's frame with a sidebar that folds down to its icons, from a button in the page's toolbar: the labels fade
|
|
4
|
+
* and the edge closes over them, and each item is named in a tooltip. On phones the sidebar becomes a drawer.
|
|
5
|
+
*/
|
|
6
|
+
export declare function Shell04({ workspace, logo, workspaces, onNewWorkspace, navigation, current, defaultCurrent, onNavigate, defaultCollapsed, onCollapsedChange, account, accountMenu, commands, breadcrumbs, children, labels, className, ...props }: Shell04Props): import("react").JSX.Element;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Shell04Props } from "./Shell04.types.js";
|
|
2
|
+
/**
|
|
3
|
+
* An app's frame with a sidebar that folds down to its icons, from a button in the page's toolbar: the labels fade
|
|
4
|
+
* and the edge closes over them, and each item is named in a tooltip. On phones the sidebar becomes a drawer.
|
|
5
|
+
*/
|
|
6
|
+
export declare function Shell04({ workspace, logo, workspaces, onNewWorkspace, navigation, current, defaultCurrent, onNavigate, defaultCollapsed, onCollapsedChange, account, accountMenu, commands, breadcrumbs, children, labels, className, ...props }: Shell04Props): import("react").JSX.Element;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
import type { AppAccount, AppCommand, AppMenuItem, AppNavGroup, AppNavItem, AppWorkspace } from "../../shared/shared.types.cjs";
|
|
3
|
+
/** A place in the sidebar, which can mark something new on its icon while the sidebar is folded. */
|
|
4
|
+
export interface Shell04NavItem extends AppNavItem {
|
|
5
|
+
/** Puts a small brass dot on the icon while the sidebar is folded, where the count can't show. */
|
|
6
|
+
unread?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/** A group of places in the sidebar. */
|
|
9
|
+
export interface Shell04NavGroup extends Omit<AppNavGroup, "items"> {
|
|
10
|
+
/** Its places, in order. */
|
|
11
|
+
items: Shell04NavItem[];
|
|
12
|
+
}
|
|
13
|
+
export interface Shell04Labels {
|
|
14
|
+
/** The workspace menu's name and heading. @default "Workspaces" */
|
|
15
|
+
workspaces?: string;
|
|
16
|
+
/** The last item in the workspace menu. @default "New workspace" */
|
|
17
|
+
newWorkspace?: string;
|
|
18
|
+
/** The search button's words, and the phone bar's search button's name. @default "Search" */
|
|
19
|
+
search?: string;
|
|
20
|
+
/** The search box's placeholder. @default "Search…" */
|
|
21
|
+
searchPlaceholder?: string;
|
|
22
|
+
/** Names the sidebar for screen readers. @default "Main navigation" */
|
|
23
|
+
navigation?: string;
|
|
24
|
+
/** The account menu's name. @default "Account" */
|
|
25
|
+
account?: string;
|
|
26
|
+
/** The phone bar's menu button's name. @default "Open navigation" */
|
|
27
|
+
openNavigation?: string;
|
|
28
|
+
/** The phone drawer's title. @default "Menu" */
|
|
29
|
+
menu?: string;
|
|
30
|
+
/** The fold button's name while the sidebar is open. @default "Collapse sidebar" */
|
|
31
|
+
collapse?: string;
|
|
32
|
+
/** Its name while it's folded. @default "Expand sidebar" */
|
|
33
|
+
expand?: string;
|
|
34
|
+
}
|
|
35
|
+
export interface Shell04Props extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
|
|
36
|
+
/** The workspace's name, at the top of the sidebar. */
|
|
37
|
+
workspace: string;
|
|
38
|
+
/** Its mark before the name, about 22px square: it stays in view when the sidebar folds. */
|
|
39
|
+
logo?: ReactNode;
|
|
40
|
+
/** The workspaces in its menu, the current one ticked. @default just this one */
|
|
41
|
+
workspaces?: AppWorkspace[];
|
|
42
|
+
/** Called by the workspace menu's last item, "New workspace". */
|
|
43
|
+
onNewWorkspace?(): void;
|
|
44
|
+
/** The places down the sidebar, in groups. Folded, only their icons show, each named in a tooltip. */
|
|
45
|
+
navigation: Shell04NavGroup[];
|
|
46
|
+
/** The current place's id, when you keep it yourself. */
|
|
47
|
+
current?: string;
|
|
48
|
+
/** The place that's current to start with. */
|
|
49
|
+
defaultCurrent?: string;
|
|
50
|
+
/** Called with a place's id when it's chosen, from the sidebar, a menu or the search. */
|
|
51
|
+
onNavigate?(id: string): void;
|
|
52
|
+
/** Whether the sidebar starts folded to its icons. @default folded under 1024px wide, open above */
|
|
53
|
+
defaultCollapsed?: boolean;
|
|
54
|
+
/** Called when the sidebar folds or opens. */
|
|
55
|
+
onCollapsedChange?(collapsed: boolean): void;
|
|
56
|
+
/** The person signed in, at the bottom of the sidebar. */
|
|
57
|
+
account: AppAccount;
|
|
58
|
+
/** The account menu: profile, settings, sign out. */
|
|
59
|
+
accountMenu?: AppMenuItem[];
|
|
60
|
+
/** What the search finds (⌘K). Without any, there's no search. */
|
|
61
|
+
commands?: AppCommand[];
|
|
62
|
+
/** Where the page sits, in the toolbar beside the fold button: the last is the page itself. */
|
|
63
|
+
breadcrumbs?: ReactNode[];
|
|
64
|
+
/** The page, on a raised panel beside the sidebar. */
|
|
65
|
+
children?: ReactNode;
|
|
66
|
+
/** Words that aren't content (menus' names, buttons for screen readers), in English unless you pass your own. */
|
|
67
|
+
labels?: Shell04Labels;
|
|
68
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
import type { AppAccount, AppCommand, AppMenuItem, AppNavGroup, AppNavItem, AppWorkspace } from "../../shared/shared.types.js";
|
|
3
|
+
/** A place in the sidebar, which can mark something new on its icon while the sidebar is folded. */
|
|
4
|
+
export interface Shell04NavItem extends AppNavItem {
|
|
5
|
+
/** Puts a small brass dot on the icon while the sidebar is folded, where the count can't show. */
|
|
6
|
+
unread?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/** A group of places in the sidebar. */
|
|
9
|
+
export interface Shell04NavGroup extends Omit<AppNavGroup, "items"> {
|
|
10
|
+
/** Its places, in order. */
|
|
11
|
+
items: Shell04NavItem[];
|
|
12
|
+
}
|
|
13
|
+
export interface Shell04Labels {
|
|
14
|
+
/** The workspace menu's name and heading. @default "Workspaces" */
|
|
15
|
+
workspaces?: string;
|
|
16
|
+
/** The last item in the workspace menu. @default "New workspace" */
|
|
17
|
+
newWorkspace?: string;
|
|
18
|
+
/** The search button's words, and the phone bar's search button's name. @default "Search" */
|
|
19
|
+
search?: string;
|
|
20
|
+
/** The search box's placeholder. @default "Search…" */
|
|
21
|
+
searchPlaceholder?: string;
|
|
22
|
+
/** Names the sidebar for screen readers. @default "Main navigation" */
|
|
23
|
+
navigation?: string;
|
|
24
|
+
/** The account menu's name. @default "Account" */
|
|
25
|
+
account?: string;
|
|
26
|
+
/** The phone bar's menu button's name. @default "Open navigation" */
|
|
27
|
+
openNavigation?: string;
|
|
28
|
+
/** The phone drawer's title. @default "Menu" */
|
|
29
|
+
menu?: string;
|
|
30
|
+
/** The fold button's name while the sidebar is open. @default "Collapse sidebar" */
|
|
31
|
+
collapse?: string;
|
|
32
|
+
/** Its name while it's folded. @default "Expand sidebar" */
|
|
33
|
+
expand?: string;
|
|
34
|
+
}
|
|
35
|
+
export interface Shell04Props extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
|
|
36
|
+
/** The workspace's name, at the top of the sidebar. */
|
|
37
|
+
workspace: string;
|
|
38
|
+
/** Its mark before the name, about 22px square: it stays in view when the sidebar folds. */
|
|
39
|
+
logo?: ReactNode;
|
|
40
|
+
/** The workspaces in its menu, the current one ticked. @default just this one */
|
|
41
|
+
workspaces?: AppWorkspace[];
|
|
42
|
+
/** Called by the workspace menu's last item, "New workspace". */
|
|
43
|
+
onNewWorkspace?(): void;
|
|
44
|
+
/** The places down the sidebar, in groups. Folded, only their icons show, each named in a tooltip. */
|
|
45
|
+
navigation: Shell04NavGroup[];
|
|
46
|
+
/** The current place's id, when you keep it yourself. */
|
|
47
|
+
current?: string;
|
|
48
|
+
/** The place that's current to start with. */
|
|
49
|
+
defaultCurrent?: string;
|
|
50
|
+
/** Called with a place's id when it's chosen, from the sidebar, a menu or the search. */
|
|
51
|
+
onNavigate?(id: string): void;
|
|
52
|
+
/** Whether the sidebar starts folded to its icons. @default folded under 1024px wide, open above */
|
|
53
|
+
defaultCollapsed?: boolean;
|
|
54
|
+
/** Called when the sidebar folds or opens. */
|
|
55
|
+
onCollapsedChange?(collapsed: boolean): void;
|
|
56
|
+
/** The person signed in, at the bottom of the sidebar. */
|
|
57
|
+
account: AppAccount;
|
|
58
|
+
/** The account menu: profile, settings, sign out. */
|
|
59
|
+
accountMenu?: AppMenuItem[];
|
|
60
|
+
/** What the search finds (⌘K). Without any, there's no search. */
|
|
61
|
+
commands?: AppCommand[];
|
|
62
|
+
/** Where the page sits, in the toolbar beside the fold button: the last is the page itself. */
|
|
63
|
+
breadcrumbs?: ReactNode[];
|
|
64
|
+
/** The page, on a raised panel beside the sidebar. */
|
|
65
|
+
children?: ReactNode;
|
|
66
|
+
/** Words that aren't content (menus' names, buttons for screen readers), in English unless you pass your own. */
|
|
67
|
+
labels?: Shell04Labels;
|
|
68
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { Blog01Props } from "./Blog01.types.cjs";
|
|
2
|
+
/** A grid of post cards, each with a cover, its category and date, a title, an excerpt and the author, with a filter by category. */
|
|
3
|
+
export declare function Blog01({ eyebrow, title, description, posts, categories, moreAction, labels, className, ...props }: Blog01Props): import("react").JSX.Element;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { Blog01Props } from "./Blog01.types.js";
|
|
2
|
+
/** A grid of post cards, each with a cover, its category and date, a title, an excerpt and the author, with a filter by category. */
|
|
3
|
+
export declare function Blog01({ eyebrow, title, description, posts, categories, moreAction, labels, className, ...props }: Blog01Props): import("react").JSX.Element;
|