valtech-components 2.0.712 → 2.0.714

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.
Files changed (54) hide show
  1. package/esm2022/lib/components/organisms/cards-carousel/cards-carousel.component.mjs +63 -16
  2. package/esm2022/lib/components/organisms/cards-carousel/types.mjs +1 -1
  3. package/esm2022/lib/components/templates/simple/simple.component.mjs +7 -9
  4. package/esm2022/lib/services/auth/auth.service.mjs +33 -17
  5. package/esm2022/lib/services/content/content-types/blog.mjs +275 -0
  6. package/esm2022/lib/services/content/content-types/documentation.mjs +303 -0
  7. package/esm2022/lib/services/content/content-types/news.mjs +277 -0
  8. package/esm2022/lib/services/content/index.mjs +51 -0
  9. package/esm2022/lib/services/content/transformer.mjs +265 -0
  10. package/esm2022/lib/services/content/types.mjs +41 -0
  11. package/esm2022/lib/services/firebase/firestore-collection.mjs +4 -5
  12. package/esm2022/lib/services/firebase/firestore.service.mjs +23 -9
  13. package/esm2022/lib/services/firebase/notifications.service.mjs +23 -18
  14. package/esm2022/lib/version.mjs +2 -2
  15. package/esm2022/public-api.mjs +2 -14
  16. package/fesm2022/valtech-components.mjs +9559 -10275
  17. package/fesm2022/valtech-components.mjs.map +1 -1
  18. package/lib/components/organisms/bottom-nav/bottom-nav.component.d.ts +1 -1
  19. package/lib/components/organisms/cards-carousel/cards-carousel.component.d.ts +12 -6
  20. package/lib/components/organisms/cards-carousel/types.d.ts +32 -3
  21. package/lib/services/content/content-types/blog.d.ts +148 -0
  22. package/lib/services/content/content-types/documentation.d.ts +183 -0
  23. package/lib/services/content/content-types/news.d.ts +162 -0
  24. package/lib/services/content/index.d.ts +49 -0
  25. package/lib/services/content/transformer.d.ts +96 -0
  26. package/lib/services/content/types.d.ts +220 -0
  27. package/lib/services/firebase/firestore-collection.d.ts +2 -2
  28. package/lib/services/firebase/firestore.service.d.ts +5 -0
  29. package/lib/services/firebase/notifications.service.d.ts +3 -2
  30. package/lib/version.d.ts +1 -1
  31. package/package.json +5 -5
  32. package/public-api.d.ts +1 -11
  33. package/esm2022/lib/components/molecules/participant-card/participant-card.component.mjs +0 -514
  34. package/esm2022/lib/components/molecules/participant-card/types.mjs +0 -21
  35. package/esm2022/lib/components/molecules/raffle-status-card/raffle-status-card.component.mjs +0 -476
  36. package/esm2022/lib/components/molecules/raffle-status-card/types.mjs +0 -23
  37. package/esm2022/lib/components/molecules/recap-card/recap-card.component.mjs +0 -78
  38. package/esm2022/lib/components/molecules/recap-card/types.mjs +0 -2
  39. package/esm2022/lib/components/molecules/ticket-grid/ticket-grid.component.mjs +0 -489
  40. package/esm2022/lib/components/molecules/ticket-grid/types.mjs +0 -11
  41. package/esm2022/lib/components/molecules/winner-display/types.mjs +0 -9
  42. package/esm2022/lib/components/molecules/winner-display/winner-display.component.mjs +0 -359
  43. package/esm2022/lib/components/templates/layout/layout.component.mjs +0 -19
  44. package/lib/components/molecules/participant-card/participant-card.component.d.ts +0 -34
  45. package/lib/components/molecules/participant-card/types.d.ts +0 -132
  46. package/lib/components/molecules/raffle-status-card/raffle-status-card.component.d.ts +0 -21
  47. package/lib/components/molecules/raffle-status-card/types.d.ts +0 -108
  48. package/lib/components/molecules/recap-card/recap-card.component.d.ts +0 -36
  49. package/lib/components/molecules/recap-card/types.d.ts +0 -30
  50. package/lib/components/molecules/ticket-grid/ticket-grid.component.d.ts +0 -40
  51. package/lib/components/molecules/ticket-grid/types.d.ts +0 -122
  52. package/lib/components/molecules/winner-display/types.d.ts +0 -103
  53. package/lib/components/molecules/winner-display/winner-display.component.d.ts +0 -36
  54. package/lib/components/templates/layout/layout.component.d.ts +0 -5
@@ -63,7 +63,7 @@ export declare class BottomNavComponent implements OnInit, OnDestroy {
63
63
  i18nNamespace?: string;
64
64
  hideLabels: boolean;
65
65
  safeArea: boolean;
66
- animation: "none" | "fade" | "slide" | "scale";
66
+ animation: "none" | "slide" | "fade" | "scale";
67
67
  }>;
68
68
  /** Computed tabs with FAB inserted if present */
69
69
  displayTabs: import("@angular/core").Signal<BottomNavTab[]>;
@@ -1,19 +1,19 @@
1
- import { CardsCarouselMetadata } from './types';
1
+ import { CardsCarouselMetadata, CarouselCardShape } from './types';
2
2
  import * as i0 from "@angular/core";
3
3
  /**
4
4
  * val-cards-carousel
5
5
  *
6
- * A horizontal carousel of recap cards with optional action header.
7
- * Combines HorizontalScroll for smooth horizontal scrolling with RecapCard
8
- * components for consistent card styling.
6
+ * A horizontal carousel of cards with optional action header.
7
+ * Combines HorizontalScroll for smooth horizontal scrolling with inline
8
+ * card rendering for consistent card styling.
9
9
  *
10
10
  * @example
11
11
  * <val-cards-carousel
12
12
  * [props]="{
13
13
  * header: { title: 'Featured Items', actionType: 'link', actionLabel: 'View All' },
14
14
  * cards: [
15
- * { title: 'Card 1', description: 'Description', href: '/item/1' },
16
- * { title: 'Card 2', description: 'Description', href: '/item/2' }
15
+ * { title: { title: 'Card 1' }, link: { text: 'Learn more', url: '/item/1' } },
16
+ * { title: { title: 'Card 2' }, link: { text: 'Learn more', url: '/item/2' } }
17
17
  * ]
18
18
  * }"
19
19
  * ></val-cards-carousel>
@@ -25,6 +25,12 @@ export declare class CardsCarouselComponent {
25
25
  * Carousel configuration with cards and optional header.
26
26
  */
27
27
  props: CardsCarouselMetadata;
28
+ /**
29
+ * Merges shape color with additional styles.
30
+ */
31
+ mergeShapeStyle(shape: CarouselCardShape): {
32
+ [key: string]: string | number;
33
+ };
28
34
  static ɵfac: i0.ɵɵFactoryDeclaration<CardsCarouselComponent, never>;
29
35
  static ɵcmp: i0.ɵɵComponentDeclaration<CardsCarouselComponent, "val-cards-carousel", never, { "props": { "alias": "props"; "required": false; }; }, {}, never, never, true, never>;
30
36
  }
@@ -1,11 +1,40 @@
1
1
  import { ActionHeaderMetadata } from '../../molecules/action-header/types';
2
- import { RecapCardMetadata } from '../../molecules/recap-card/types';
2
+ import { LinkMetadata } from '../../molecules/link/types';
3
+ import { TitleBlockMetada } from '../../molecules/title-block/types';
4
+ /**
5
+ * Configuration for a decorative shape within a carousel card.
6
+ */
7
+ export interface CarouselCardShape {
8
+ /** Background color of the shape */
9
+ color: string;
10
+ /** Additional CSS styles (position, size, etc.) */
11
+ style?: {
12
+ [key: string]: string | number;
13
+ };
14
+ }
15
+ /**
16
+ * Configuration for a single card inside the carousel.
17
+ */
18
+ export interface CarouselCardMetadata {
19
+ /** Title block configuration */
20
+ title: TitleBlockMetada;
21
+ /** Link configuration */
22
+ link: LinkMetadata;
23
+ /** Decorative shapes to display behind content */
24
+ shapes?: CarouselCardShape[];
25
+ /** Background color of the card (Ionic color) */
26
+ color?: string;
27
+ /** Minimum height of the card. Default: '400px' */
28
+ minHeight?: string;
29
+ /** Width of the card. Default: '280px' */
30
+ width?: string;
31
+ }
3
32
  /**
4
33
  * Configuration for the cards carousel component.
5
34
  */
6
35
  export interface CardsCarouselMetadata {
7
- /** Array of recap cards to display */
8
- cards: RecapCardMetadata[];
36
+ /** Array of cards to display */
37
+ cards: CarouselCardMetadata[];
9
38
  /** Optional action header configuration */
10
39
  header?: ActionHeaderMetadata;
11
40
  }
@@ -0,0 +1,148 @@
1
+ /**
2
+ * Blog Post Content Type
3
+ *
4
+ * Represents a blog post with title, excerpt, cover image,
5
+ * and structured content blocks.
6
+ */
7
+ import { ArticleMetadata } from '../../../components/organisms/article/types';
8
+ import { ContentDocument, ContentConfig } from '../types';
9
+ /**
10
+ * Blog post document interface
11
+ */
12
+ export interface BlogPost extends ContentDocument<'blog'> {
13
+ /** Blog post title */
14
+ title: string;
15
+ /** Short excerpt/summary for listings */
16
+ excerpt: string;
17
+ /** Cover image URL */
18
+ coverImage?: string;
19
+ /** Estimated reading time in minutes */
20
+ readingTime?: number;
21
+ /** Featured post flag */
22
+ featured?: boolean;
23
+ }
24
+ /**
25
+ * BlogPostBuilder provides a fluent API for creating blog posts.
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * const post = new BlogPostBuilder()
30
+ * .title('My First Post')
31
+ * .excerpt('A brief introduction...')
32
+ * .author('John Doe', '/avatars/john.jpg')
33
+ * .coverImage('/images/post-cover.jpg')
34
+ * .heading('Introduction')
35
+ * .paragraph('Welcome to my blog...')
36
+ * .build();
37
+ *
38
+ * // Convert to ArticleMetadata
39
+ * const article = post.toArticle();
40
+ * ```
41
+ */
42
+ export declare class BlogPostBuilder {
43
+ private post;
44
+ /**
45
+ * Sets the blog post title
46
+ */
47
+ title(title: string): this;
48
+ /**
49
+ * Sets the blog post excerpt
50
+ */
51
+ excerpt(excerpt: string): this;
52
+ /**
53
+ * Sets the cover image URL
54
+ */
55
+ coverImage(url: string): this;
56
+ /**
57
+ * Marks the post as featured
58
+ */
59
+ featured(value?: boolean): this;
60
+ /**
61
+ * Sets the post author
62
+ */
63
+ author(name: string, avatar?: string, role?: string): this;
64
+ /**
65
+ * Sets the publication date
66
+ */
67
+ publishedAt(date: Date | string): this;
68
+ /**
69
+ * Sets tags for the post
70
+ */
71
+ tags(...tags: string[]): this;
72
+ /**
73
+ * Sets the category
74
+ */
75
+ category(category: string): this;
76
+ /**
77
+ * Sets the slug
78
+ */
79
+ slug(slug: string): this;
80
+ /**
81
+ * Sets the ID
82
+ */
83
+ id(id: string): this;
84
+ /**
85
+ * Adds a heading block
86
+ */
87
+ heading(text: string, level?: 1 | 2 | 3): this;
88
+ /**
89
+ * Adds a paragraph block
90
+ */
91
+ paragraph(text: string, emphasis?: boolean): this;
92
+ /**
93
+ * Adds a quote block
94
+ */
95
+ quote(text: string, author?: string, source?: string): this;
96
+ /**
97
+ * Adds a code block
98
+ */
99
+ code(code: string, language?: string): this;
100
+ /**
101
+ * Adds an unordered list
102
+ */
103
+ list(items: string[]): this;
104
+ /**
105
+ * Adds an ordered/numbered list
106
+ */
107
+ orderedList(items: string[]): this;
108
+ /**
109
+ * Adds a checklist
110
+ */
111
+ checklist(items: string[]): this;
112
+ /**
113
+ * Adds an image block
114
+ */
115
+ image(src: string, alt: string, caption?: string): this;
116
+ /**
117
+ * Adds a callout/note block
118
+ */
119
+ callout(text: string, variant?: 'info' | 'warning' | 'success' | 'error', title?: string): this;
120
+ /**
121
+ * Adds a divider
122
+ */
123
+ divider(style?: 'line' | 'dots' | 'space'): this;
124
+ /**
125
+ * Adds a button/CTA
126
+ */
127
+ button(text: string, href?: string, color?: 'primary' | 'secondary' | 'success'): this;
128
+ /**
129
+ * Configures rendering options
130
+ */
131
+ config(config: Partial<ContentConfig>): this;
132
+ /**
133
+ * Builds the final BlogPost object
134
+ */
135
+ build(): BlogPost;
136
+ /**
137
+ * Builds and converts to ArticleMetadata
138
+ */
139
+ toArticle(): ArticleMetadata;
140
+ /**
141
+ * Resets the builder for reuse
142
+ */
143
+ clear(): this;
144
+ }
145
+ /**
146
+ * Creates a new BlogPostBuilder instance
147
+ */
148
+ export declare function blogPost(): BlogPostBuilder;
@@ -0,0 +1,183 @@
1
+ /**
2
+ * Documentation Content Type
3
+ *
4
+ * Represents technical documentation with navigation,
5
+ * sections, and structured content blocks.
6
+ */
7
+ import { ArticleMetadata } from '../../../components/organisms/article/types';
8
+ import { ContentDocument, ContentConfig } from '../types';
9
+ /**
10
+ * Navigation link for prev/next page navigation
11
+ */
12
+ export interface DocNavLink {
13
+ /** Page title */
14
+ title: string;
15
+ /** Page slug/URL */
16
+ slug: string;
17
+ }
18
+ /**
19
+ * Documentation document interface
20
+ */
21
+ export interface Documentation extends ContentDocument<'docs'> {
22
+ /** Documentation page title */
23
+ title: string;
24
+ /** Section name (e.g., "Getting Started", "API Reference") */
25
+ section?: string;
26
+ /** Version of the documentation */
27
+ version?: string;
28
+ /** Previous page navigation */
29
+ prevPage?: DocNavLink;
30
+ /** Next page navigation */
31
+ nextPage?: DocNavLink;
32
+ /** Table of contents items (auto-generated from headings if not provided) */
33
+ toc?: {
34
+ text: string;
35
+ level: number;
36
+ id: string;
37
+ }[];
38
+ }
39
+ /**
40
+ * DocsBuilder provides a fluent API for creating documentation pages.
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * const docs = new DocsBuilder()
45
+ * .title('Installation Guide')
46
+ * .section('Getting Started')
47
+ * .version('1.0.0')
48
+ * .heading('Prerequisites', 1)
49
+ * .paragraph('Before you begin, ensure you have...')
50
+ * .callout('Node.js 18+ is required', 'warning')
51
+ * .heading('Installation', 1)
52
+ * .code('npm install valtech-components', 'bash')
53
+ * .prevPage('Introduction', '/docs/intro')
54
+ * .nextPage('Configuration', '/docs/config')
55
+ * .build();
56
+ *
57
+ * // Convert to ArticleMetadata
58
+ * const article = docs.toArticle();
59
+ * ```
60
+ */
61
+ export declare class DocsBuilder {
62
+ private doc;
63
+ /**
64
+ * Sets the documentation page title
65
+ */
66
+ title(title: string): this;
67
+ /**
68
+ * Sets the section name
69
+ */
70
+ section(section: string): this;
71
+ /**
72
+ * Sets the documentation version
73
+ */
74
+ version(version: string): this;
75
+ /**
76
+ * Sets the previous page navigation
77
+ */
78
+ prevPage(title: string, slug: string): this;
79
+ /**
80
+ * Sets the next page navigation
81
+ */
82
+ nextPage(title: string, slug: string): this;
83
+ /**
84
+ * Sets the slug for the page
85
+ */
86
+ slug(slug: string): this;
87
+ /**
88
+ * Sets the ID for the page
89
+ */
90
+ id(id: string): this;
91
+ /**
92
+ * Sets tags for the documentation page
93
+ */
94
+ tags(...tags: string[]): this;
95
+ /**
96
+ * Sets the category
97
+ */
98
+ category(category: string): this;
99
+ /**
100
+ * Adds a heading block
101
+ */
102
+ heading(text: string, level?: 1 | 2 | 3): this;
103
+ /**
104
+ * Adds a paragraph block
105
+ */
106
+ paragraph(text: string, emphasis?: boolean): this;
107
+ /**
108
+ * Adds a code block
109
+ */
110
+ code(code: string, language?: string): this;
111
+ /**
112
+ * Adds a command/terminal block
113
+ */
114
+ command(command: string): this;
115
+ /**
116
+ * Adds a callout/note block
117
+ */
118
+ callout(text: string, variant?: 'info' | 'warning' | 'success' | 'error', title?: string): this;
119
+ /**
120
+ * Adds an info callout (alias for callout with info variant)
121
+ */
122
+ info(text: string, title?: string): this;
123
+ /**
124
+ * Adds a warning callout
125
+ */
126
+ warning(text: string, title?: string): this;
127
+ /**
128
+ * Adds an error callout
129
+ */
130
+ error(text: string, title?: string): this;
131
+ /**
132
+ * Adds a success callout
133
+ */
134
+ success(text: string, title?: string): this;
135
+ /**
136
+ * Adds an unordered list
137
+ */
138
+ list(items: string[]): this;
139
+ /**
140
+ * Adds an ordered/numbered list
141
+ */
142
+ orderedList(items: string[]): this;
143
+ /**
144
+ * Adds a checklist
145
+ */
146
+ checklist(items: string[]): this;
147
+ /**
148
+ * Adds an image block
149
+ */
150
+ image(src: string, alt: string, caption?: string): this;
151
+ /**
152
+ * Adds a quote block
153
+ */
154
+ quote(text: string, author?: string, source?: string): this;
155
+ /**
156
+ * Adds a divider
157
+ */
158
+ divider(style?: 'line' | 'dots' | 'space'): this;
159
+ /**
160
+ * Adds a button/CTA
161
+ */
162
+ button(text: string, href?: string, color?: 'primary' | 'secondary' | 'success'): this;
163
+ /**
164
+ * Configures rendering options
165
+ */
166
+ config(config: Partial<ContentConfig>): this;
167
+ /**
168
+ * Builds the final Documentation object
169
+ */
170
+ build(): Documentation;
171
+ /**
172
+ * Builds and converts to ArticleMetadata
173
+ */
174
+ toArticle(): ArticleMetadata;
175
+ /**
176
+ * Resets the builder for reuse
177
+ */
178
+ clear(): this;
179
+ }
180
+ /**
181
+ * Creates a new DocsBuilder instance
182
+ */
183
+ export declare function docs(): DocsBuilder;
@@ -0,0 +1,162 @@
1
+ /**
2
+ * News Article Content Type
3
+ *
4
+ * Represents a news article or announcement with headline,
5
+ * summary, featured image, and structured content blocks.
6
+ */
7
+ import { ArticleMetadata } from '../../../components/organisms/article/types';
8
+ import { ContentDocument, ContentConfig } from '../types';
9
+ /**
10
+ * News article document interface
11
+ */
12
+ export interface NewsArticle extends ContentDocument<'news'> {
13
+ /** News headline */
14
+ headline: string;
15
+ /** Short summary for listings */
16
+ summary: string;
17
+ /** Featured image URL */
18
+ featuredImage?: string;
19
+ /** Breaking news flag */
20
+ breaking?: boolean;
21
+ /** News source/outlet */
22
+ source?: string;
23
+ /** Related articles */
24
+ relatedArticles?: {
25
+ title: string;
26
+ slug: string;
27
+ }[];
28
+ }
29
+ /**
30
+ * NewsBuilder provides a fluent API for creating news articles.
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * const news = new NewsBuilder()
35
+ * .headline('New Product Launch Announced')
36
+ * .summary('Company reveals groundbreaking new product...')
37
+ * .author('Jane Smith', '/avatars/jane.jpg', 'Technology Reporter')
38
+ * .publishedAt(new Date())
39
+ * .breaking()
40
+ * .featuredImage('/images/product-launch.jpg')
41
+ * .paragraph('In a surprise announcement today...')
42
+ * .quote('This is our most innovative product yet', 'CEO John Doe')
43
+ * .build();
44
+ *
45
+ * // Convert to ArticleMetadata
46
+ * const article = news.toArticle();
47
+ * ```
48
+ */
49
+ export declare class NewsBuilder {
50
+ private article;
51
+ /**
52
+ * Sets the news headline
53
+ */
54
+ headline(headline: string): this;
55
+ /**
56
+ * Sets the news summary
57
+ */
58
+ summary(summary: string): this;
59
+ /**
60
+ * Sets the featured image URL
61
+ */
62
+ featuredImage(url: string): this;
63
+ /**
64
+ * Marks the article as breaking news
65
+ */
66
+ breaking(value?: boolean): this;
67
+ /**
68
+ * Sets the news source/outlet
69
+ */
70
+ source(source: string): this;
71
+ /**
72
+ * Sets the article author
73
+ */
74
+ author(name: string, avatar?: string, role?: string): this;
75
+ /**
76
+ * Sets the publication date
77
+ */
78
+ publishedAt(date: Date | string): this;
79
+ /**
80
+ * Sets tags for the article
81
+ */
82
+ tags(...tags: string[]): this;
83
+ /**
84
+ * Sets the category
85
+ */
86
+ category(category: string): this;
87
+ /**
88
+ * Sets the slug
89
+ */
90
+ slug(slug: string): this;
91
+ /**
92
+ * Sets the ID
93
+ */
94
+ id(id: string): this;
95
+ /**
96
+ * Adds related articles
97
+ */
98
+ relatedArticles(articles: {
99
+ title: string;
100
+ slug: string;
101
+ }[]): this;
102
+ /**
103
+ * Adds a heading block
104
+ */
105
+ heading(text: string, level?: 1 | 2 | 3): this;
106
+ /**
107
+ * Adds a paragraph block
108
+ */
109
+ paragraph(text: string, emphasis?: boolean): this;
110
+ /**
111
+ * Adds a quote block
112
+ */
113
+ quote(text: string, author?: string, source?: string): this;
114
+ /**
115
+ * Adds an image block
116
+ */
117
+ image(src: string, alt: string, caption?: string): this;
118
+ /**
119
+ * Adds an unordered list
120
+ */
121
+ list(items: string[]): this;
122
+ /**
123
+ * Adds an ordered/numbered list
124
+ */
125
+ orderedList(items: string[]): this;
126
+ /**
127
+ * Adds a callout/note block
128
+ */
129
+ callout(text: string, variant?: 'info' | 'warning' | 'success' | 'error', title?: string): this;
130
+ /**
131
+ * Adds a divider
132
+ */
133
+ divider(style?: 'line' | 'dots' | 'space'): this;
134
+ /**
135
+ * Adds a button/CTA
136
+ */
137
+ button(text: string, href?: string, color?: 'primary' | 'secondary' | 'success'): this;
138
+ /**
139
+ * Configures rendering options
140
+ */
141
+ config(config: Partial<ContentConfig>): this;
142
+ /**
143
+ * Builds the final NewsArticle object
144
+ */
145
+ build(): NewsArticle;
146
+ /**
147
+ * Builds and converts to ArticleMetadata
148
+ */
149
+ toArticle(): ArticleMetadata;
150
+ /**
151
+ * Gets the estimated reading time in minutes
152
+ */
153
+ getReadingTime(): number;
154
+ /**
155
+ * Resets the builder for reuse
156
+ */
157
+ clear(): this;
158
+ }
159
+ /**
160
+ * Creates a new NewsBuilder instance
161
+ */
162
+ export declare function news(): NewsBuilder;
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Content Types Module
3
+ *
4
+ * Provides a flexible content abstraction layer that transforms
5
+ * structured content documents into ArticleMetadata for rendering
6
+ * with the val-article component.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * // Using BlogPostBuilder
11
+ * import { blogPost } from 'valtech-components';
12
+ *
13
+ * const post = blogPost()
14
+ * .title('My First Post')
15
+ * .author('John Doe')
16
+ * .heading('Introduction')
17
+ * .paragraph('Welcome to my blog...')
18
+ * .toArticle();
19
+ *
20
+ * // Using DocsBuilder
21
+ * import { docs } from 'valtech-components';
22
+ *
23
+ * const page = docs()
24
+ * .title('Installation')
25
+ * .section('Getting Started')
26
+ * .code('npm install valtech-components', 'bash')
27
+ * .toArticle();
28
+ *
29
+ * // Using NewsBuilder
30
+ * import { news } from 'valtech-components';
31
+ *
32
+ * const article = news()
33
+ * .headline('Breaking News')
34
+ * .summary('Important announcement...')
35
+ * .breaking()
36
+ * .toArticle();
37
+ *
38
+ * // From JSON/API response
39
+ * import { ContentTransformer, BlogPost } from 'valtech-components';
40
+ *
41
+ * const json: BlogPost = await fetch('/api/posts/1').then(r => r.json());
42
+ * const article = ContentTransformer.toArticle(json);
43
+ * ```
44
+ */
45
+ export { ContentAuthor, ContentMeta, ContentConfig, ContentDocument, ContentBlock, HeadingBlock, ParagraphBlock, QuoteBlock, CodeBlock, ListBlock, ImageBlock, CalloutBlock, DividerBlock, ButtonBlock, CommandBlock, } from './types';
46
+ export { ContentTransformer, toArticle } from './transformer';
47
+ export { BlogPost, BlogPostBuilder, blogPost } from './content-types/blog';
48
+ export { Documentation, DocNavLink, DocsBuilder, docs } from './content-types/documentation';
49
+ export { NewsArticle, NewsBuilder, news } from './content-types/news';