@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
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
import type { BlockAction } from "../../shared/shared.types.cjs";
|
|
3
|
+
/** Who wrote a post. */
|
|
4
|
+
export interface Blog01Author {
|
|
5
|
+
/** Their name, which also gives the avatar's initials. */
|
|
6
|
+
name: string;
|
|
7
|
+
/** A line under it: "Product lead". */
|
|
8
|
+
jobTitle?: ReactNode;
|
|
9
|
+
/** A photo URL; the initials show without one. */
|
|
10
|
+
avatar?: string;
|
|
11
|
+
}
|
|
12
|
+
/** A post in the grid. */
|
|
13
|
+
export interface Blog01Post {
|
|
14
|
+
/** The post's title, which links to it. */
|
|
15
|
+
title: ReactNode;
|
|
16
|
+
/** Where the post is. The whole card opens it. */
|
|
17
|
+
href: string;
|
|
18
|
+
/** A sentence or two under the title. */
|
|
19
|
+
excerpt?: ReactNode;
|
|
20
|
+
/** Its category, shown as a tag and matched against `categories` by the filter: "Product". */
|
|
21
|
+
category?: string;
|
|
22
|
+
/** When it was published, as people read it: "8 Oct 2026". */
|
|
23
|
+
date: ReactNode;
|
|
24
|
+
/** The same date for machines, as in <time dateTime>: "2026-10-08". */
|
|
25
|
+
dateTime?: string;
|
|
26
|
+
/** How long it takes to read: "4 min read". */
|
|
27
|
+
readingTime?: ReactNode;
|
|
28
|
+
/** Who wrote it, along the card's foot. */
|
|
29
|
+
author?: Blog01Author;
|
|
30
|
+
/** The image at the card's top, which fills a 16:10 frame: an `<img alt="">` or a drawing. */
|
|
31
|
+
cover?: ReactNode;
|
|
32
|
+
}
|
|
33
|
+
/** The words around the posts that aren't content, in English unless you pass your own. */
|
|
34
|
+
export interface Blog01Labels {
|
|
35
|
+
/** The filter's first option, which shows every post. @default "All" */
|
|
36
|
+
all?: string;
|
|
37
|
+
/** The filter's accessible name. @default "Show posts about" */
|
|
38
|
+
filter?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface Blog01Props extends Omit<HTMLAttributes<HTMLElement>, "title" | "children"> {
|
|
41
|
+
/** A short line in a Chip above the title, such as "Blog". */
|
|
42
|
+
eyebrow?: ReactNode;
|
|
43
|
+
/** The section's heading. */
|
|
44
|
+
title: ReactNode;
|
|
45
|
+
/** A sentence under the title. */
|
|
46
|
+
description?: ReactNode;
|
|
47
|
+
/** The posts, newest first, three to a row. */
|
|
48
|
+
posts: Blog01Post[];
|
|
49
|
+
/** Categories to filter the posts by, beside the heading; "All" comes first. Leave out for no filter. */
|
|
50
|
+
categories?: string[];
|
|
51
|
+
/** A button under the posts: "Browse every post". */
|
|
52
|
+
moreAction?: BlockAction;
|
|
53
|
+
/** Words that aren't content (field labels, names for screen readers, messages), in English unless you pass your own. */
|
|
54
|
+
labels?: Blog01Labels;
|
|
55
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
import type { BlockAction } from "../../shared/shared.types.js";
|
|
3
|
+
/** Who wrote a post. */
|
|
4
|
+
export interface Blog01Author {
|
|
5
|
+
/** Their name, which also gives the avatar's initials. */
|
|
6
|
+
name: string;
|
|
7
|
+
/** A line under it: "Product lead". */
|
|
8
|
+
jobTitle?: ReactNode;
|
|
9
|
+
/** A photo URL; the initials show without one. */
|
|
10
|
+
avatar?: string;
|
|
11
|
+
}
|
|
12
|
+
/** A post in the grid. */
|
|
13
|
+
export interface Blog01Post {
|
|
14
|
+
/** The post's title, which links to it. */
|
|
15
|
+
title: ReactNode;
|
|
16
|
+
/** Where the post is. The whole card opens it. */
|
|
17
|
+
href: string;
|
|
18
|
+
/** A sentence or two under the title. */
|
|
19
|
+
excerpt?: ReactNode;
|
|
20
|
+
/** Its category, shown as a tag and matched against `categories` by the filter: "Product". */
|
|
21
|
+
category?: string;
|
|
22
|
+
/** When it was published, as people read it: "8 Oct 2026". */
|
|
23
|
+
date: ReactNode;
|
|
24
|
+
/** The same date for machines, as in <time dateTime>: "2026-10-08". */
|
|
25
|
+
dateTime?: string;
|
|
26
|
+
/** How long it takes to read: "4 min read". */
|
|
27
|
+
readingTime?: ReactNode;
|
|
28
|
+
/** Who wrote it, along the card's foot. */
|
|
29
|
+
author?: Blog01Author;
|
|
30
|
+
/** The image at the card's top, which fills a 16:10 frame: an `<img alt="">` or a drawing. */
|
|
31
|
+
cover?: ReactNode;
|
|
32
|
+
}
|
|
33
|
+
/** The words around the posts that aren't content, in English unless you pass your own. */
|
|
34
|
+
export interface Blog01Labels {
|
|
35
|
+
/** The filter's first option, which shows every post. @default "All" */
|
|
36
|
+
all?: string;
|
|
37
|
+
/** The filter's accessible name. @default "Show posts about" */
|
|
38
|
+
filter?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface Blog01Props extends Omit<HTMLAttributes<HTMLElement>, "title" | "children"> {
|
|
41
|
+
/** A short line in a Chip above the title, such as "Blog". */
|
|
42
|
+
eyebrow?: ReactNode;
|
|
43
|
+
/** The section's heading. */
|
|
44
|
+
title: ReactNode;
|
|
45
|
+
/** A sentence under the title. */
|
|
46
|
+
description?: ReactNode;
|
|
47
|
+
/** The posts, newest first, three to a row. */
|
|
48
|
+
posts: Blog01Post[];
|
|
49
|
+
/** Categories to filter the posts by, beside the heading; "All" comes first. Leave out for no filter. */
|
|
50
|
+
categories?: string[];
|
|
51
|
+
/** A button under the posts: "Browse every post". */
|
|
52
|
+
moreAction?: BlockAction;
|
|
53
|
+
/** Words that aren't content (field labels, names for screen readers, messages), in English unless you pass your own. */
|
|
54
|
+
labels?: Blog01Labels;
|
|
55
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { Blog02Props } from "./Blog02.types.cjs";
|
|
2
|
+
/** One post large, with its cover, excerpt, figures and author, and the next few in a row below it. */
|
|
3
|
+
export declare function Blog02({ title, allLink, featured, posts, className, ...props }: Blog02Props): import("react").JSX.Element;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { Blog02Props } from "./Blog02.types.js";
|
|
2
|
+
/** One post large, with its cover, excerpt, figures and author, and the next few in a row below it. */
|
|
3
|
+
export declare function Blog02({ title, allLink, featured, posts, className, ...props }: Blog02Props): import("react").JSX.Element;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
import type { BlockLink } from "../../shared/shared.types.cjs";
|
|
3
|
+
/** Who wrote a post. */
|
|
4
|
+
export interface Blog02Author {
|
|
5
|
+
/** Their name, which also gives the avatar's initials. */
|
|
6
|
+
name: string;
|
|
7
|
+
/** A line under it, on the featured post: "Customer success". */
|
|
8
|
+
jobTitle?: ReactNode;
|
|
9
|
+
/** A photo URL; the initials show without one. */
|
|
10
|
+
avatar?: string;
|
|
11
|
+
}
|
|
12
|
+
/** A figure on the featured post, such as "Deploys a day: 2.3". */
|
|
13
|
+
export interface Blog02Fact {
|
|
14
|
+
/** What it measures, under the figure. */
|
|
15
|
+
label: ReactNode;
|
|
16
|
+
/** The figure. */
|
|
17
|
+
value: ReactNode;
|
|
18
|
+
}
|
|
19
|
+
/** A post: the featured one, or one of those below it. */
|
|
20
|
+
export interface Blog02Post {
|
|
21
|
+
/** The post's title, which links to it. */
|
|
22
|
+
title: ReactNode;
|
|
23
|
+
/** Where the post is. The whole post opens it. */
|
|
24
|
+
href: string;
|
|
25
|
+
/** Its category: a tag on the featured post, a word before the date on the others. */
|
|
26
|
+
category?: ReactNode;
|
|
27
|
+
/** When it was published, as people read it: "15 Sep 2026". */
|
|
28
|
+
date: ReactNode;
|
|
29
|
+
/** The same date for machines, as in <time dateTime>: "2026-09-15". */
|
|
30
|
+
dateTime?: string;
|
|
31
|
+
/** Who wrote it. */
|
|
32
|
+
author?: Blog02Author;
|
|
33
|
+
/** The post's image, which fills its frame: an `<img alt="">` or a drawing. A 16:10 thumbnail on the smaller posts. */
|
|
34
|
+
cover?: ReactNode;
|
|
35
|
+
/** A sentence or two under the title. Featured post only. */
|
|
36
|
+
excerpt?: ReactNode;
|
|
37
|
+
/** Up to three figures in a row under the excerpt. Featured post only. */
|
|
38
|
+
facts?: Blog02Fact[];
|
|
39
|
+
/** How long it takes to read: "6 min read". Featured post only. */
|
|
40
|
+
readingTime?: ReactNode;
|
|
41
|
+
}
|
|
42
|
+
export interface Blog02Props extends Omit<HTMLAttributes<HTMLElement>, "title" | "children"> {
|
|
43
|
+
/** The section's heading. */
|
|
44
|
+
title: ReactNode;
|
|
45
|
+
/** A link beside it, with an arrow: "All posts". */
|
|
46
|
+
allLink?: BlockLink;
|
|
47
|
+
/** The post in the large card: its cover on the left, the story on the right. */
|
|
48
|
+
featured: Blog02Post;
|
|
49
|
+
/** The next few posts in a row below it, with a small cover beside each title. Three fit best. */
|
|
50
|
+
posts?: Blog02Post[];
|
|
51
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
import type { BlockLink } from "../../shared/shared.types.js";
|
|
3
|
+
/** Who wrote a post. */
|
|
4
|
+
export interface Blog02Author {
|
|
5
|
+
/** Their name, which also gives the avatar's initials. */
|
|
6
|
+
name: string;
|
|
7
|
+
/** A line under it, on the featured post: "Customer success". */
|
|
8
|
+
jobTitle?: ReactNode;
|
|
9
|
+
/** A photo URL; the initials show without one. */
|
|
10
|
+
avatar?: string;
|
|
11
|
+
}
|
|
12
|
+
/** A figure on the featured post, such as "Deploys a day: 2.3". */
|
|
13
|
+
export interface Blog02Fact {
|
|
14
|
+
/** What it measures, under the figure. */
|
|
15
|
+
label: ReactNode;
|
|
16
|
+
/** The figure. */
|
|
17
|
+
value: ReactNode;
|
|
18
|
+
}
|
|
19
|
+
/** A post: the featured one, or one of those below it. */
|
|
20
|
+
export interface Blog02Post {
|
|
21
|
+
/** The post's title, which links to it. */
|
|
22
|
+
title: ReactNode;
|
|
23
|
+
/** Where the post is. The whole post opens it. */
|
|
24
|
+
href: string;
|
|
25
|
+
/** Its category: a tag on the featured post, a word before the date on the others. */
|
|
26
|
+
category?: ReactNode;
|
|
27
|
+
/** When it was published, as people read it: "15 Sep 2026". */
|
|
28
|
+
date: ReactNode;
|
|
29
|
+
/** The same date for machines, as in <time dateTime>: "2026-09-15". */
|
|
30
|
+
dateTime?: string;
|
|
31
|
+
/** Who wrote it. */
|
|
32
|
+
author?: Blog02Author;
|
|
33
|
+
/** The post's image, which fills its frame: an `<img alt="">` or a drawing. A 16:10 thumbnail on the smaller posts. */
|
|
34
|
+
cover?: ReactNode;
|
|
35
|
+
/** A sentence or two under the title. Featured post only. */
|
|
36
|
+
excerpt?: ReactNode;
|
|
37
|
+
/** Up to three figures in a row under the excerpt. Featured post only. */
|
|
38
|
+
facts?: Blog02Fact[];
|
|
39
|
+
/** How long it takes to read: "6 min read". Featured post only. */
|
|
40
|
+
readingTime?: ReactNode;
|
|
41
|
+
}
|
|
42
|
+
export interface Blog02Props extends Omit<HTMLAttributes<HTMLElement>, "title" | "children"> {
|
|
43
|
+
/** The section's heading. */
|
|
44
|
+
title: ReactNode;
|
|
45
|
+
/** A link beside it, with an arrow: "All posts". */
|
|
46
|
+
allLink?: BlockLink;
|
|
47
|
+
/** The post in the large card: its cover on the left, the story on the right. */
|
|
48
|
+
featured: Blog02Post;
|
|
49
|
+
/** The next few posts in a row below it, with a small cover beside each title. Three fit best. */
|
|
50
|
+
posts?: Blog02Post[];
|
|
51
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { Blog03Props } from "./Blog03.types.cjs";
|
|
2
|
+
/** A changelog: releases down a timeline, the date and version on the left, the headline and its changes by group on the right. */
|
|
3
|
+
export declare function Blog03({ eyebrow, title, description, links, releases, initialCount, labels, className, ...props }: Blog03Props): import("react").JSX.Element;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { Blog03Props } from "./Blog03.types.js";
|
|
2
|
+
/** A changelog: releases down a timeline, the date and version on the left, the headline and its changes by group on the right. */
|
|
3
|
+
export declare function Blog03({ eyebrow, title, description, links, releases, initialCount, labels, className, ...props }: Blog03Props): import("react").JSX.Element;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
import type { BadgeVariant } from "@openwarelabs/ui";
|
|
3
|
+
/** A group of a release's changes under a badge, such as New, Improved or Fixed. */
|
|
4
|
+
export interface Blog03Change {
|
|
5
|
+
/** The group's badge: "New". */
|
|
6
|
+
label: string;
|
|
7
|
+
/** The badge's colour: "active" for new, "success" for improved, "neutral" for fixed.
|
|
8
|
+
* @default "neutral" */
|
|
9
|
+
variant?: BadgeVariant;
|
|
10
|
+
/** The changes, a sentence each. */
|
|
11
|
+
items: ReactNode[];
|
|
12
|
+
}
|
|
13
|
+
/** A release on the timeline. */
|
|
14
|
+
export interface Blog03Release {
|
|
15
|
+
/** Its version, shown in code type after `labels.versionPrefix`: "2.14". */
|
|
16
|
+
version: string;
|
|
17
|
+
/** When it shipped, as people read it: "8 Oct 2026". */
|
|
18
|
+
date: ReactNode;
|
|
19
|
+
/** The same date for machines, as in <time dateTime>: "2026-10-08". */
|
|
20
|
+
dateTime?: string;
|
|
21
|
+
/** The headline change. */
|
|
22
|
+
title: ReactNode;
|
|
23
|
+
/** A sentence or two about it. */
|
|
24
|
+
summary?: ReactNode;
|
|
25
|
+
/** A picture of the headline change under the summary: a screenshot, or a drawing of it. */
|
|
26
|
+
visual?: ReactNode;
|
|
27
|
+
/** The changes, group by group. */
|
|
28
|
+
changes?: Blog03Change[];
|
|
29
|
+
}
|
|
30
|
+
/** A way to follow the changelog, beside the heading. */
|
|
31
|
+
export interface Blog03Link {
|
|
32
|
+
/** The link's words: "RSS feed". */
|
|
33
|
+
label: ReactNode;
|
|
34
|
+
/** Where it goes. */
|
|
35
|
+
href: string;
|
|
36
|
+
/** A 15px icon before the words. */
|
|
37
|
+
icon?: ReactNode;
|
|
38
|
+
}
|
|
39
|
+
/** The words around the releases that aren't content, in English unless you pass your own. */
|
|
40
|
+
export interface Blog03Labels {
|
|
41
|
+
/** What goes before each version. @default "v" */
|
|
42
|
+
versionPrefix?: string;
|
|
43
|
+
/** The badge on the newest release. @default "Latest" */
|
|
44
|
+
latest?: string;
|
|
45
|
+
/** The button that shows the rest, given how many are hidden. @default `Show ${count} older releases` */
|
|
46
|
+
showOlder?(count: number): string;
|
|
47
|
+
/** A group's list's accessible name. @default `${label} in ${version}` */
|
|
48
|
+
changes?(label: string, version: string): string;
|
|
49
|
+
}
|
|
50
|
+
export interface Blog03Props extends Omit<HTMLAttributes<HTMLElement>, "title" | "children"> {
|
|
51
|
+
/** A short line in a Chip above the title, such as "Changelog". */
|
|
52
|
+
eyebrow?: ReactNode;
|
|
53
|
+
/** The section's heading. */
|
|
54
|
+
title: ReactNode;
|
|
55
|
+
/** A sentence under the title. */
|
|
56
|
+
description?: ReactNode;
|
|
57
|
+
/** Ways to follow along, beside the heading: a feed, an email. */
|
|
58
|
+
links?: Blog03Link[];
|
|
59
|
+
/** The releases, newest first, down a timeline. */
|
|
60
|
+
releases: Blog03Release[];
|
|
61
|
+
/** How many releases show before the button that shows the rest.
|
|
62
|
+
* @default 3 */
|
|
63
|
+
initialCount?: number;
|
|
64
|
+
/** Words that aren't content (field labels, names for screen readers, messages), in English unless you pass your own. */
|
|
65
|
+
labels?: Blog03Labels;
|
|
66
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
import type { BadgeVariant } from "@openwarelabs/ui";
|
|
3
|
+
/** A group of a release's changes under a badge, such as New, Improved or Fixed. */
|
|
4
|
+
export interface Blog03Change {
|
|
5
|
+
/** The group's badge: "New". */
|
|
6
|
+
label: string;
|
|
7
|
+
/** The badge's colour: "active" for new, "success" for improved, "neutral" for fixed.
|
|
8
|
+
* @default "neutral" */
|
|
9
|
+
variant?: BadgeVariant;
|
|
10
|
+
/** The changes, a sentence each. */
|
|
11
|
+
items: ReactNode[];
|
|
12
|
+
}
|
|
13
|
+
/** A release on the timeline. */
|
|
14
|
+
export interface Blog03Release {
|
|
15
|
+
/** Its version, shown in code type after `labels.versionPrefix`: "2.14". */
|
|
16
|
+
version: string;
|
|
17
|
+
/** When it shipped, as people read it: "8 Oct 2026". */
|
|
18
|
+
date: ReactNode;
|
|
19
|
+
/** The same date for machines, as in <time dateTime>: "2026-10-08". */
|
|
20
|
+
dateTime?: string;
|
|
21
|
+
/** The headline change. */
|
|
22
|
+
title: ReactNode;
|
|
23
|
+
/** A sentence or two about it. */
|
|
24
|
+
summary?: ReactNode;
|
|
25
|
+
/** A picture of the headline change under the summary: a screenshot, or a drawing of it. */
|
|
26
|
+
visual?: ReactNode;
|
|
27
|
+
/** The changes, group by group. */
|
|
28
|
+
changes?: Blog03Change[];
|
|
29
|
+
}
|
|
30
|
+
/** A way to follow the changelog, beside the heading. */
|
|
31
|
+
export interface Blog03Link {
|
|
32
|
+
/** The link's words: "RSS feed". */
|
|
33
|
+
label: ReactNode;
|
|
34
|
+
/** Where it goes. */
|
|
35
|
+
href: string;
|
|
36
|
+
/** A 15px icon before the words. */
|
|
37
|
+
icon?: ReactNode;
|
|
38
|
+
}
|
|
39
|
+
/** The words around the releases that aren't content, in English unless you pass your own. */
|
|
40
|
+
export interface Blog03Labels {
|
|
41
|
+
/** What goes before each version. @default "v" */
|
|
42
|
+
versionPrefix?: string;
|
|
43
|
+
/** The badge on the newest release. @default "Latest" */
|
|
44
|
+
latest?: string;
|
|
45
|
+
/** The button that shows the rest, given how many are hidden. @default `Show ${count} older releases` */
|
|
46
|
+
showOlder?(count: number): string;
|
|
47
|
+
/** A group's list's accessible name. @default `${label} in ${version}` */
|
|
48
|
+
changes?(label: string, version: string): string;
|
|
49
|
+
}
|
|
50
|
+
export interface Blog03Props extends Omit<HTMLAttributes<HTMLElement>, "title" | "children"> {
|
|
51
|
+
/** A short line in a Chip above the title, such as "Changelog". */
|
|
52
|
+
eyebrow?: ReactNode;
|
|
53
|
+
/** The section's heading. */
|
|
54
|
+
title: ReactNode;
|
|
55
|
+
/** A sentence under the title. */
|
|
56
|
+
description?: ReactNode;
|
|
57
|
+
/** Ways to follow along, beside the heading: a feed, an email. */
|
|
58
|
+
links?: Blog03Link[];
|
|
59
|
+
/** The releases, newest first, down a timeline. */
|
|
60
|
+
releases: Blog03Release[];
|
|
61
|
+
/** How many releases show before the button that shows the rest.
|
|
62
|
+
* @default 3 */
|
|
63
|
+
initialCount?: number;
|
|
64
|
+
/** Words that aren't content (field labels, names for screen readers, messages), in English unless you pass your own. */
|
|
65
|
+
labels?: Blog03Labels;
|
|
66
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { Blog04Props } from "./Blog04.types.cjs";
|
|
2
|
+
/** An article's page: the title, author and date, a wide cover, then the text at a readable width with On this page beside it. */
|
|
3
|
+
export declare function Blog04({ backLink, category, topic, title, description, author, date, dateTime, readingTime, cover, children, sections, tags, shareUrl, labels, className, ...props }: Blog04Props): import("react").JSX.Element;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { Blog04Props } from "./Blog04.types.js";
|
|
2
|
+
/** An article's page: the title, author and date, a wide cover, then the text at a readable width with On this page beside it. */
|
|
3
|
+
export declare function Blog04({ backLink, category, topic, title, description, author, date, dateTime, readingTime, cover, children, sections, tags, shareUrl, labels, className, ...props }: Blog04Props): import("react").JSX.Element;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
import type { BlockLink } from "../../shared/shared.types.cjs";
|
|
3
|
+
/** Who wrote the article. */
|
|
4
|
+
export interface Blog04Author {
|
|
5
|
+
/** Their name, which also gives the avatar's initials. */
|
|
6
|
+
name: string;
|
|
7
|
+
/** A line under it: "Product lead". */
|
|
8
|
+
jobTitle?: ReactNode;
|
|
9
|
+
/** A photo URL; the initials show without one. */
|
|
10
|
+
avatar?: string;
|
|
11
|
+
}
|
|
12
|
+
/** A heading in the article, for On this page. */
|
|
13
|
+
export interface Blog04Section {
|
|
14
|
+
/** The id of the heading in the article's text, which the link scrolls to. */
|
|
15
|
+
id: string;
|
|
16
|
+
/** The link's words, usually the heading's. */
|
|
17
|
+
title: ReactNode;
|
|
18
|
+
}
|
|
19
|
+
/** The words around the article that aren't content, in English unless you pass your own. */
|
|
20
|
+
export interface Blog04Labels {
|
|
21
|
+
/** The heading over the list of sections, beside the text and in the fold above it. @default "On this page" */
|
|
22
|
+
contents?: string;
|
|
23
|
+
/** The tags' accessible name. @default "Topics" */
|
|
24
|
+
topics?: string;
|
|
25
|
+
/** The button that copies `shareUrl`. @default "Copy link" */
|
|
26
|
+
copyLink?: string;
|
|
27
|
+
/** What it says once it has. @default "Link copied" */
|
|
28
|
+
linkCopied?: string;
|
|
29
|
+
}
|
|
30
|
+
export interface Blog04Props extends Omit<HTMLAttributes<HTMLElement>, "title" | "children"> {
|
|
31
|
+
/** A link back above the title, with an arrow: "All posts". */
|
|
32
|
+
backLink?: BlockLink;
|
|
33
|
+
/** The article's category, as a tag above the title: "Product". */
|
|
34
|
+
category?: ReactNode;
|
|
35
|
+
/** A word beside it: "Agents". */
|
|
36
|
+
topic?: ReactNode;
|
|
37
|
+
/** The article's title: the page's h1. */
|
|
38
|
+
title: ReactNode;
|
|
39
|
+
/** A sentence or two under the title. */
|
|
40
|
+
description?: ReactNode;
|
|
41
|
+
/** Who wrote it. */
|
|
42
|
+
author?: Blog04Author;
|
|
43
|
+
/** When it was published, as people read it: "8 Oct 2026". */
|
|
44
|
+
date?: ReactNode;
|
|
45
|
+
/** The same date for machines, as in <time dateTime>: "2026-10-08". */
|
|
46
|
+
dateTime?: string;
|
|
47
|
+
/** How long it takes to read: "4 min read". */
|
|
48
|
+
readingTime?: ReactNode;
|
|
49
|
+
/** A wide image under the header, which fills a 12:5 frame (16:10 on phones): an `<img alt="">` or a drawing. */
|
|
50
|
+
cover?: ReactNode;
|
|
51
|
+
/**
|
|
52
|
+
* The text, at a readable width: `Text variant="prose"` paragraphs, `h2` headings (with the ids in `sections`), lists,
|
|
53
|
+
* a `blockquote`, a `CodeBlock`.
|
|
54
|
+
*/
|
|
55
|
+
children: ReactNode;
|
|
56
|
+
/** The article's headings, listed in On this page beside the text (folded above it on smaller screens), the one being read marked. */
|
|
57
|
+
sections?: Blog04Section[];
|
|
58
|
+
/** Tags at the end of the text: "Agents", "Reviews". */
|
|
59
|
+
tags?: ReactNode[];
|
|
60
|
+
/** The article's address, which Copy link copies, at the end of the text and under On this page. */
|
|
61
|
+
shareUrl?: string;
|
|
62
|
+
/** Words that aren't content (field labels, names for screen readers, messages), in English unless you pass your own. */
|
|
63
|
+
labels?: Blog04Labels;
|
|
64
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
import type { BlockLink } from "../../shared/shared.types.js";
|
|
3
|
+
/** Who wrote the article. */
|
|
4
|
+
export interface Blog04Author {
|
|
5
|
+
/** Their name, which also gives the avatar's initials. */
|
|
6
|
+
name: string;
|
|
7
|
+
/** A line under it: "Product lead". */
|
|
8
|
+
jobTitle?: ReactNode;
|
|
9
|
+
/** A photo URL; the initials show without one. */
|
|
10
|
+
avatar?: string;
|
|
11
|
+
}
|
|
12
|
+
/** A heading in the article, for On this page. */
|
|
13
|
+
export interface Blog04Section {
|
|
14
|
+
/** The id of the heading in the article's text, which the link scrolls to. */
|
|
15
|
+
id: string;
|
|
16
|
+
/** The link's words, usually the heading's. */
|
|
17
|
+
title: ReactNode;
|
|
18
|
+
}
|
|
19
|
+
/** The words around the article that aren't content, in English unless you pass your own. */
|
|
20
|
+
export interface Blog04Labels {
|
|
21
|
+
/** The heading over the list of sections, beside the text and in the fold above it. @default "On this page" */
|
|
22
|
+
contents?: string;
|
|
23
|
+
/** The tags' accessible name. @default "Topics" */
|
|
24
|
+
topics?: string;
|
|
25
|
+
/** The button that copies `shareUrl`. @default "Copy link" */
|
|
26
|
+
copyLink?: string;
|
|
27
|
+
/** What it says once it has. @default "Link copied" */
|
|
28
|
+
linkCopied?: string;
|
|
29
|
+
}
|
|
30
|
+
export interface Blog04Props extends Omit<HTMLAttributes<HTMLElement>, "title" | "children"> {
|
|
31
|
+
/** A link back above the title, with an arrow: "All posts". */
|
|
32
|
+
backLink?: BlockLink;
|
|
33
|
+
/** The article's category, as a tag above the title: "Product". */
|
|
34
|
+
category?: ReactNode;
|
|
35
|
+
/** A word beside it: "Agents". */
|
|
36
|
+
topic?: ReactNode;
|
|
37
|
+
/** The article's title: the page's h1. */
|
|
38
|
+
title: ReactNode;
|
|
39
|
+
/** A sentence or two under the title. */
|
|
40
|
+
description?: ReactNode;
|
|
41
|
+
/** Who wrote it. */
|
|
42
|
+
author?: Blog04Author;
|
|
43
|
+
/** When it was published, as people read it: "8 Oct 2026". */
|
|
44
|
+
date?: ReactNode;
|
|
45
|
+
/** The same date for machines, as in <time dateTime>: "2026-10-08". */
|
|
46
|
+
dateTime?: string;
|
|
47
|
+
/** How long it takes to read: "4 min read". */
|
|
48
|
+
readingTime?: ReactNode;
|
|
49
|
+
/** A wide image under the header, which fills a 12:5 frame (16:10 on phones): an `<img alt="">` or a drawing. */
|
|
50
|
+
cover?: ReactNode;
|
|
51
|
+
/**
|
|
52
|
+
* The text, at a readable width: `Text variant="prose"` paragraphs, `h2` headings (with the ids in `sections`), lists,
|
|
53
|
+
* a `blockquote`, a `CodeBlock`.
|
|
54
|
+
*/
|
|
55
|
+
children: ReactNode;
|
|
56
|
+
/** The article's headings, listed in On this page beside the text (folded above it on smaller screens), the one being read marked. */
|
|
57
|
+
sections?: Blog04Section[];
|
|
58
|
+
/** Tags at the end of the text: "Agents", "Reviews". */
|
|
59
|
+
tags?: ReactNode[];
|
|
60
|
+
/** The article's address, which Copy link copies, at the end of the text and under On this page. */
|
|
61
|
+
shareUrl?: string;
|
|
62
|
+
/** Words that aren't content (field labels, names for screen readers, messages), in English unless you pass your own. */
|
|
63
|
+
labels?: Blog04Labels;
|
|
64
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Chat01Props } from "./Chat01.types.cjs";
|
|
2
|
+
/**
|
|
3
|
+
* A chat with an agent that fills its frame: a header with the chat's name, then the messages, which scroll and keep
|
|
4
|
+
* the reply box docked below them. The person's messages can be copied and edited; the agent's copied and rated.
|
|
5
|
+
*/
|
|
6
|
+
export declare function Chat01({ title, context, messages, user, agentName, day, thinking, onSend, onStop, onNewChat, onRate, menu, menuHeading, empty, draft: draftProp, onDraftChange, locale, labels, className, ...props }: Chat01Props): import("react").JSX.Element;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Chat01Props } from "./Chat01.types.js";
|
|
2
|
+
/**
|
|
3
|
+
* A chat with an agent that fills its frame: a header with the chat's name, then the messages, which scroll and keep
|
|
4
|
+
* the reply box docked below them. The person's messages can be copied and edited; the agent's copied and rated.
|
|
5
|
+
*/
|
|
6
|
+
export declare function Chat01({ title, context, messages, user, agentName, day, thinking, onSend, onStop, onNewChat, onRate, menu, menuHeading, empty, draft: draftProp, onDraftChange, locale, labels, className, ...props }: Chat01Props): import("react").JSX.Element;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
import type { ChatRating } from "@openwarelabs/ui";
|
|
3
|
+
import type { BlockMenuItem } from "../../shared/shared.types.cjs";
|
|
4
|
+
/** One message in the thread. */
|
|
5
|
+
export interface Chat01Message {
|
|
6
|
+
/** Unique in the thread. */
|
|
7
|
+
id: string;
|
|
8
|
+
/** The person's own message, or the agent's reply. */
|
|
9
|
+
from: "user" | "assistant";
|
|
10
|
+
/** When it was sent, shown beside the name. */
|
|
11
|
+
time: Date | string;
|
|
12
|
+
/** The words as plain text: what Copy copies, what Edit puts back in the box, and what a reply shows while it streams in. */
|
|
13
|
+
text: string;
|
|
14
|
+
/** How a reply shows, when that's more than its text: code in blocks, a pull request. */
|
|
15
|
+
body?: ReactNode;
|
|
16
|
+
/** `streaming` while a reply is still arriving: the box shows Stop until it's done. */
|
|
17
|
+
status?: "streaming" | "done";
|
|
18
|
+
}
|
|
19
|
+
/** An idea to start from in an empty thread: choosing it puts its words in the box. */
|
|
20
|
+
export interface Chat01Suggestion {
|
|
21
|
+
/** The words it puts in the box. */
|
|
22
|
+
label: string;
|
|
23
|
+
/** A 16px icon before them, usually from lucide-react. */
|
|
24
|
+
icon?: ReactNode;
|
|
25
|
+
}
|
|
26
|
+
/** What an empty thread shows: a title, a line, and ideas to start from. */
|
|
27
|
+
export interface Chat01Empty {
|
|
28
|
+
/** A 20px icon over the title, usually from lucide-react. */
|
|
29
|
+
icon?: ReactNode;
|
|
30
|
+
/** "Ask the Acme agent". */
|
|
31
|
+
title: ReactNode;
|
|
32
|
+
/** What the agent can do. */
|
|
33
|
+
description?: ReactNode;
|
|
34
|
+
/** Ideas to start from. */
|
|
35
|
+
suggestions?: Chat01Suggestion[];
|
|
36
|
+
}
|
|
37
|
+
export interface Chat01Labels {
|
|
38
|
+
/** The new chat button's name. @default "New chat" */
|
|
39
|
+
newChat?: string;
|
|
40
|
+
/** The menu button's name. @default "More" */
|
|
41
|
+
more?: string;
|
|
42
|
+
/** The menu's name for screen readers. @default "Chat" */
|
|
43
|
+
menu?: string;
|
|
44
|
+
/** The box's placeholder. @default "Reply to the agent…" */
|
|
45
|
+
placeholder?: string;
|
|
46
|
+
/** Names the box for screen readers. @default "Reply to the agent" */
|
|
47
|
+
input?: string;
|
|
48
|
+
/** A muted line under the box. @default how to send and start a new line */
|
|
49
|
+
hint?: ReactNode;
|
|
50
|
+
/** What the agent is doing while the reply hasn't started. @default "Thinking…" */
|
|
51
|
+
thinking?: string;
|
|
52
|
+
/** Names the ideas for screen readers. @default "Ideas to start from" */
|
|
53
|
+
suggestions?: string;
|
|
54
|
+
}
|
|
55
|
+
export interface Chat01Props extends Omit<HTMLAttributes<HTMLDivElement>, "title" | "children"> {
|
|
56
|
+
/** The chat's name, as the page's h1. */
|
|
57
|
+
title: ReactNode;
|
|
58
|
+
/** A caption under it, after a green dot: the agent and what it's working in. */
|
|
59
|
+
context?: ReactNode;
|
|
60
|
+
/** The messages, oldest first. */
|
|
61
|
+
messages: Chat01Message[];
|
|
62
|
+
/** The person, beside their messages. */
|
|
63
|
+
user: {
|
|
64
|
+
name: string;
|
|
65
|
+
avatar?: string;
|
|
66
|
+
};
|
|
67
|
+
/** The agent's name, beside its replies and while it thinks. @default "Agent" */
|
|
68
|
+
agentName?: string;
|
|
69
|
+
/** A line above the first message, such as the day. */
|
|
70
|
+
day?: ReactNode;
|
|
71
|
+
/** Shows the agent thinking, before its reply starts. */
|
|
72
|
+
thinking?: boolean;
|
|
73
|
+
/** Called with the text when the person sends a message. The box clears itself. */
|
|
74
|
+
onSend?(text: string): void;
|
|
75
|
+
/** Called by Stop while the agent is thinking or replying. */
|
|
76
|
+
onStop?(): void;
|
|
77
|
+
/** Shows a new chat button in the header; called when it's pressed. The box clears and takes focus. */
|
|
78
|
+
onNewChat?(): void;
|
|
79
|
+
/** Called when the person rates a reply. */
|
|
80
|
+
onRate?(message: Chat01Message, rating: ChatRating | null): void;
|
|
81
|
+
/** More actions in a menu in the header: earlier chats, a link to what the chat made. */
|
|
82
|
+
menu?: BlockMenuItem[];
|
|
83
|
+
/** A small heading at the top of the menu: "Earlier chats". */
|
|
84
|
+
menuHeading?: ReactNode;
|
|
85
|
+
/** What an empty thread shows. */
|
|
86
|
+
empty?: Chat01Empty;
|
|
87
|
+
/** The text in the box, when you keep it yourself. */
|
|
88
|
+
draft?: string;
|
|
89
|
+
/** Called with the text in the box on every change. */
|
|
90
|
+
onDraftChange?(draft: string): void;
|
|
91
|
+
/** The locale for the messages' times, such as "en-GB". Defaults to the browser's. */
|
|
92
|
+
locale?: string;
|
|
93
|
+
/** Words that aren't content (names for screen readers, the box's placeholder), in English unless you pass your own. */
|
|
94
|
+
labels?: Chat01Labels;
|
|
95
|
+
}
|