enjanga-components-library 1.0.4

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 ADDED
@@ -0,0 +1,159 @@
1
+ # enjanga-components-library
2
+
3
+ [![npm version](https://img.shields.io/npm/v/enjanga-components-library?color=blue)](https://www.npmjs.com/package/enjanga-components-library)
4
+
5
+ A reusable React component library built for Next.js 13+ applications, implementing the IBM Carbon Design System. This library is designed for **consumption only** β€” JavaScript and CSS files are pre-built, minified, and optimized for production use.
6
+
7
+ > ⚠️ **Important:** This library is built on top of the [IBM Carbon Design System](https://carbondesignsystem.com/). To function correctly, **Carbon must be installed and configured** in the consuming project.
8
+
9
+ ## πŸ“š Live Storybook
10
+
11
+ Explore the interactive documentation and try all components in Storybook, hosted on Chromatic:
12
+ **[https://6856ac512f4faa67a7d9c5c2-ijmvkylkad.chromatic.com/](https://6856ac512f4faa67a7d9c5c2-ijmvkylkad.chromatic.com/)**
13
+
14
+ ## πŸš€ Stack & Features
15
+
16
+ - **Framework:** Next.js 13+ (App Router), React 18+
17
+ - **Language:** TypeScript
18
+ - **Design System:** IBM Carbon Design System
19
+ - **Styling:** SASS
20
+ - **Development & Testing:** Storybook, Chromatic, React Testing Library, Vitest
21
+ - **Build Tool:** Tsup
22
+
23
+ ## πŸ“¦ Installation
24
+
25
+ 1. **Install the library and peer dependencies:**
26
+
27
+ ```bash
28
+ npm install enjanga-components-library next@^15.0.0 react@^18.0.0 react-dom@^18.0.0
29
+ # or
30
+ yarn add enjanga-components-library next@^15.0.0 react@^18.0.0 react-dom@^18.0.0
31
+ ```
32
+
33
+ 2. **Install and configure IBM Carbon:**
34
+ Follow the [official Carbon React setup guide](https://carbondesignsystem.com/developing/frameworks/react#install).
35
+ ```bash
36
+ npm install @carbon/react @carbon/styles
37
+ # or
38
+ yarn add @carbon/react @carbon/styles
39
+ ```
40
+ Import Carbon’s global styles (e.g., in `app/layout.tsx`):
41
+ ```tsx
42
+ import '@carbon/styles/css/index.css';
43
+ ```
44
+
45
+ ## πŸ”§ Usage
46
+
47
+ Import components directly from the package. Only components listed in the public API (`src/components/index.ts`) are exposed.
48
+
49
+ ```tsx
50
+ // Example: Using the ContactButton component
51
+ import { ContactButton } from 'enjanga-components-library';
52
+
53
+ export default function MyPage() {
54
+ return <ContactButton text="Get in Touch" />;
55
+ }
56
+ ```
57
+
58
+ βœ… **Note:** Component CSS is automatically included β€” no manual CSS imports needed.
59
+
60
+ ## πŸ§ͺ Testing
61
+
62
+ This library is tested for quality and reliability:
63
+
64
+ - **Unit Tests**: React Testing Library + Vitest
65
+ - **Interaction Tests**: Covers complex user flows
66
+ - **Accessibility (a11y)**: Validated via Storybook’s a11y addon
67
+ - **Visual Regression**: Chromatic snapshots prevent UI regressions
68
+
69
+ Run tests locally:
70
+
71
+ ```bash
72
+ yarn test
73
+ # or in watch mode
74
+ yarn test:watch
75
+ ```
76
+
77
+ ## πŸ›  Development
78
+
79
+ For contributors and maintainers.
80
+
81
+ ### Prerequisites
82
+
83
+ - Node.js (LTS recommended)
84
+ - Yarn
85
+
86
+ ### Local Setup
87
+
88
+ ```bash
89
+ git clone https://github.com/ericnjanga/enjanga-components-library.git
90
+ cd enjanga-components-library
91
+ yarn install
92
+ yarn storybook
93
+ ```
94
+
95
+ Visit **http://localhost:6006** to start developing components.
96
+
97
+ ### Key Scripts
98
+
99
+ | Command | Description |
100
+ | ---------------------- | ------------------------------------ |
101
+ | `yarn storybook` | Start Storybook dev server |
102
+ | `yarn build` | Build the library (TypeScript + CSS) |
103
+ | `yarn build-storybook` | Export static Storybook site |
104
+ | `yarn chromatic` | Publish Storybook to Chromatic |
105
+ | `yarn lint` | Run ESLint + TypeScript checks |
106
+ | `yarn format` | Format code with Prettier |
107
+
108
+ ### Project Structure
109
+
110
+ ```txt
111
+ enjanga-components-library/
112
+ β”œβ”€β”€ .storybook/ # Storybook config
113
+ β”œβ”€β”€ src/
114
+ β”‚ β”œβ”€β”€ app/ # Next.js App Router setup
115
+ β”‚ β”œβ”€β”€ components/ # React components
116
+ β”‚ β”‚ β”œβ”€β”€ ContactButton/
117
+ β”‚ β”‚ β”‚ β”œβ”€β”€ ContactButton.tsx
118
+ β”‚ β”‚ β”‚ β”œβ”€β”€ _ContactButton.scss
119
+ β”‚ β”‚ β”‚ └── index.ts
120
+ β”‚ β”‚ └── index.ts # Public API (exports components)
121
+ β”‚ β”œβ”€β”€ stories/ # Storybook stories
122
+ β”‚ β”œβ”€β”€ tests/ # Component tests
123
+ β”‚ β”œβ”€β”€ styles/ # Global styles + SASS utilities
124
+ β”‚ └── utils/ # Shared utilities
125
+ β”œβ”€β”€ package.json
126
+ └── tsconfig.json
127
+ ```
128
+
129
+ ## 🧠 Philosophy
130
+
131
+ ### Carbon as Foundation
132
+
133
+ This library builds on [Carbon](https://carbondesignsystem.com/) to create opinionated, purpose-driven components.
134
+ For example, `ContactButton` wraps Carbon’s `Button`, exposing only a simplified prop API for consistency.
135
+
136
+ ### Design Principles
137
+
138
+ - **Modularity** – Components built in isolation, easily extended
139
+ - **Reusability** – Single-purpose, but broadly applicable
140
+ - **Robustness** – Strong typing & validated props
141
+ - **Performance** – Memoized components minimize re-renders
142
+ - **Flexibility** – Smart defaults, minimal configuration needed
143
+
144
+ ### Component Types
145
+
146
+ - **Public Components** – Exported via `src/components/index.ts` (documented, tested, stable)
147
+ - **Internal Components** – Used only inside the library (not exported)
148
+
149
+ ## πŸ“„ License
150
+
151
+ Licensed under the **Apache License 2.0**. See [LICENSE](./LICENSE).
152
+
153
+ ## 🀝 Contributing
154
+
155
+ This is primarily a personal portfolio/project library. Contributions are welcome β€” open an issue before major changes.
156
+
157
+ ## πŸ› Reporting Issues
158
+
159
+ Please report bugs or request features via [GitHub Issues](https://github.com/ericnjanga/enjanga-components-library/issues).
@@ -0,0 +1,208 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { Node } from '@contentful/rich-text-types';
3
+ import { ComponentType, SVGProps } from 'react';
4
+
5
+ interface AH_propsType {
6
+ brandLabel: string;
7
+ brandRoute: string;
8
+ brand: React.ReactNode;
9
+ navigation: React.ReactNode;
10
+ globalBarItems: React.ReactNode;
11
+ }
12
+
13
+ declare const AppHeader: ({ brand, brandLabel, brandRoute, navigation, }: AH_propsType) => react_jsx_runtime.JSX.Element;
14
+
15
+ declare const BL_roleOpt: readonly ["img", "presentation", "none"];
16
+ type BL_roleOptPropsType = (typeof BL_roleOpt)[number];
17
+ interface BL_propsType {
18
+ value: string | React.ReactNode | React.ReactElement;
19
+ className?: string;
20
+ style?: React.CSSProperties;
21
+ alt?: string;
22
+ role?: BL_roleOptPropsType;
23
+ }
24
+
25
+ declare const BrandLogo: ({ value, className, style, alt, role, }: BL_propsType) => react_jsx_runtime.JSX.Element;
26
+
27
+ declare const HDG_levelOpt: readonly [1, 2, 3, 4, 5, 6];
28
+ type HDG_levelPropsType = (typeof HDG_levelOpt)[number];
29
+ type HDG_propsType = {
30
+ className?: string;
31
+ level?: HDG_levelPropsType;
32
+ children?: React.ReactNode;
33
+ };
34
+
35
+ interface SMT_propsType {
36
+ className?: string;
37
+ plainText?: string;
38
+ richText?: {
39
+ json: {
40
+ content: Node[];
41
+ };
42
+ };
43
+ }
44
+
45
+ interface FTX_propsType {
46
+ className?: string;
47
+ heading: HDG_propsType;
48
+ smartText: SMT_propsType;
49
+ headingMaxLength?: number;
50
+ plainTextMaxLength?: number;
51
+ isHidden?: 'heading' | 'smartText';
52
+ }
53
+
54
+ declare const BNN_roleOpt: readonly ["banner", "presentation", "none"];
55
+ type BNN_roleOptPropsType = (typeof BNN_roleOpt)[number];
56
+ interface BNN_propsType {
57
+ className?: string;
58
+ featuredText: FTX_propsType;
59
+ isHuge?: boolean;
60
+ role?: BNN_roleOptPropsType;
61
+ }
62
+
63
+ declare const Banner: ({ className, featuredText, isHuge, role, }: BNN_propsType) => react_jsx_runtime.JSX.Element;
64
+
65
+ interface CBNN_propsType {
66
+ btnText: string;
67
+ btnIcon?: 'Email' | 'Chat' | 'CustomerService' | 'CommunicationUnified';
68
+ btnKind?: 'primary' | 'secondary';
69
+ btnSize?: 'sm' | 'md';
70
+ modalLabel: string;
71
+ modalHeading: string;
72
+ modalSubHeading: string;
73
+ modalPrimaryButtonText: string;
74
+ modalSecondaryButtonText: string;
75
+ }
76
+
77
+ declare const ContactButton: ({ btnText, btnIcon, btnKind, btnSize, modalLabel, modalHeading, modalSubHeading, modalPrimaryButtonText, modalSecondaryButtonText, }: CBNN_propsType) => react_jsx_runtime.JSX.Element;
78
+
79
+ declare const CP_nameOpt: readonly ["Hills", "App Developer", "Leadership", "DevicePairing", "CodeExplanation", "MagicWand", "Question", "User", "UserInterface", "Collaboration", "Presentation", "Transform_01", "Networking_04", "Goals", "TransactionalTrust", "Teacher", "Carbon", "Multitask", "PoughkeepsieBridge", "AssetManagement", "Presenter"];
80
+ declare const CP_sizeOpt: readonly ["sm", "md", "lg", "xl"];
81
+ type CP_nameType = (typeof CP_nameOpt)[number];
82
+ type CP_sizeType = (typeof CP_sizeOpt)[number];
83
+ interface CP_propsType {
84
+ name: CP_nameType;
85
+ size?: CP_sizeType;
86
+ className?: string;
87
+ }
88
+
89
+ declare const CustomPictogram: ({ name, size, className }: CP_propsType) => react_jsx_runtime.JSX.Element;
90
+
91
+ declare const CP_pictogramMap: Record<CP_nameType, // CP_propsType['name'],
92
+ ComponentType<SVGProps<SVGSVGElement>>>;
93
+ declare const CP_getPictogram: ({ name, }: {
94
+ name: string;
95
+ }) => ComponentType<SVGProps<SVGSVGElement>>;
96
+
97
+ /**
98
+ * Props validations rules
99
+ * ----------
100
+ * CustomTile must be either:
101
+ * - A link (provide 'linksTo' and optionally 'linkTarget')
102
+ * - A modal trigger (provide 'modalIsAvailable')
103
+ * But cannot be both at the same time
104
+ */
105
+ type ErrorMessage<T extends string> = `🚨 Prop Validation Error: ${T}`;
106
+ /** Normal link props (default case, modalIsAvailable omitted or false) */
107
+ interface LinkProps {
108
+ linksTo?: CTL_valid_linkTo;
109
+ linkTarget?: CTL_LinkTargetType;
110
+ modalIsAvailable?: false;
111
+ }
112
+ /** Strict modal props (only when true) */
113
+ interface ModalProps {
114
+ modalIsAvailable: true;
115
+ linksTo?: ErrorMessage<"Modal version cannot have 'linksTo' - remove this prop">;
116
+ linkTarget?: ErrorMessage<"Modal version cannot have 'linkTarget' - remove this prop">;
117
+ }
118
+ type CTL_propsType1Validation = LinkProps | ModalProps;
119
+
120
+ declare const CTL_LayoutStyleOpt: readonly ["card", "banner"];
121
+ declare const CTL_LinkTargetOpt: readonly ["_blank", "_self"];
122
+ declare const CTL_MediaOpt: readonly ["pictogram", "image"];
123
+ type CTL_LayoutStyleType = (typeof CTL_LayoutStyleOpt)[number];
124
+ type CTL_LinkTargetType = (typeof CTL_LinkTargetOpt)[number];
125
+ type CTL_MediaType = (typeof CTL_MediaOpt)[number];
126
+
127
+ type ValidRoute = `/${string}`;
128
+ type ExternalLink = `https://${string}` | `http://${string}`;
129
+ type CTL_valid_linkTo = ValidRoute | ExternalLink;
130
+ type CTL_propsType = {
131
+ className?: string;
132
+ featuredText: FTX_propsType;
133
+ layoutStyle?: CTL_LayoutStyleType;
134
+ media?: CTL_MediaType;
135
+ mediaPictogram?: CP_nameType;
136
+ mediaImage?: string;
137
+ modalIsAvailable?: boolean;
138
+ modalPlainDescription?: string;
139
+ modalRichDescription?: {
140
+ json: {
141
+ content: Node[];
142
+ };
143
+ };
144
+ linksTo?: CTL_valid_linkTo;
145
+ linkTarget?: CTL_LinkTargetType;
146
+ } & CTL_propsType1Validation;
147
+
148
+ declare const CustomTile: ({ className, featuredText, layoutStyle, media, mediaPictogram, mediaImage, modalIsAvailable, modalPlainDescription, modalRichDescription, linksTo, linkTarget, }: CTL_propsType) => react_jsx_runtime.JSX.Element;
149
+
150
+ interface LIT_propsType {
151
+ content?: string;
152
+ href?: string;
153
+ id?: string;
154
+ className?: string;
155
+ children?: React.ReactNode;
156
+ }
157
+
158
+ declare const LST_typeOpt: readonly ["unordered", "ordered"];
159
+ type LST_typePropsType = (typeof LST_typeOpt)[number];
160
+ interface LST_propsType {
161
+ type?: LST_typePropsType;
162
+ className?: string;
163
+ content?: LIT_propsType[];
164
+ }
165
+
166
+ declare const HDL_tagOpt: readonly ["div", "section"];
167
+ type HDL_tagPropsType = (typeof HDL_tagOpt)[number];
168
+ interface HDL_propsType {
169
+ wrapper?: {
170
+ tag: HDL_tagPropsType;
171
+ cssClass?: string;
172
+ };
173
+ heading: HDG_propsType;
174
+ list?: LST_propsType;
175
+ }
176
+
177
+ declare const HeadlinedList: ({ wrapper, heading, list, }: HDL_propsType) => react_jsx_runtime.JSX.Element;
178
+
179
+ declare const List: ({ type, className, content }: LST_propsType) => react_jsx_runtime.JSX.Element;
180
+
181
+ declare const SmartText: ({ className, plainText, richText }: SMT_propsType) => react_jsx_runtime.JSX.Element;
182
+
183
+ declare const FeatureText: ({ className, heading, smartText, headingMaxLength, plainTextMaxLength, isHidden, }: FTX_propsType) => react_jsx_runtime.JSX.Element;
184
+
185
+ interface CRT_propsType {
186
+ className?: string;
187
+ data?: {
188
+ json: {
189
+ content: Node[];
190
+ };
191
+ links?: {
192
+ assets: {
193
+ block: {
194
+ sys: {
195
+ id: string;
196
+ };
197
+ url: string;
198
+ title: string;
199
+ description?: string;
200
+ }[];
201
+ };
202
+ };
203
+ };
204
+ }
205
+
206
+ declare const CMSRichText: ({ data, className }: CRT_propsType) => react_jsx_runtime.JSX.Element;
207
+
208
+ export { AppHeader, Banner, BrandLogo, CMSRichText, CP_getPictogram, type CP_nameType, CP_pictogramMap, type CTL_valid_linkTo, ContactButton, CustomPictogram, CustomTile, FeatureText, HeadlinedList, List, SmartText };
@@ -0,0 +1,208 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { Node } from '@contentful/rich-text-types';
3
+ import { ComponentType, SVGProps } from 'react';
4
+
5
+ interface AH_propsType {
6
+ brandLabel: string;
7
+ brandRoute: string;
8
+ brand: React.ReactNode;
9
+ navigation: React.ReactNode;
10
+ globalBarItems: React.ReactNode;
11
+ }
12
+
13
+ declare const AppHeader: ({ brand, brandLabel, brandRoute, navigation, }: AH_propsType) => react_jsx_runtime.JSX.Element;
14
+
15
+ declare const BL_roleOpt: readonly ["img", "presentation", "none"];
16
+ type BL_roleOptPropsType = (typeof BL_roleOpt)[number];
17
+ interface BL_propsType {
18
+ value: string | React.ReactNode | React.ReactElement;
19
+ className?: string;
20
+ style?: React.CSSProperties;
21
+ alt?: string;
22
+ role?: BL_roleOptPropsType;
23
+ }
24
+
25
+ declare const BrandLogo: ({ value, className, style, alt, role, }: BL_propsType) => react_jsx_runtime.JSX.Element;
26
+
27
+ declare const HDG_levelOpt: readonly [1, 2, 3, 4, 5, 6];
28
+ type HDG_levelPropsType = (typeof HDG_levelOpt)[number];
29
+ type HDG_propsType = {
30
+ className?: string;
31
+ level?: HDG_levelPropsType;
32
+ children?: React.ReactNode;
33
+ };
34
+
35
+ interface SMT_propsType {
36
+ className?: string;
37
+ plainText?: string;
38
+ richText?: {
39
+ json: {
40
+ content: Node[];
41
+ };
42
+ };
43
+ }
44
+
45
+ interface FTX_propsType {
46
+ className?: string;
47
+ heading: HDG_propsType;
48
+ smartText: SMT_propsType;
49
+ headingMaxLength?: number;
50
+ plainTextMaxLength?: number;
51
+ isHidden?: 'heading' | 'smartText';
52
+ }
53
+
54
+ declare const BNN_roleOpt: readonly ["banner", "presentation", "none"];
55
+ type BNN_roleOptPropsType = (typeof BNN_roleOpt)[number];
56
+ interface BNN_propsType {
57
+ className?: string;
58
+ featuredText: FTX_propsType;
59
+ isHuge?: boolean;
60
+ role?: BNN_roleOptPropsType;
61
+ }
62
+
63
+ declare const Banner: ({ className, featuredText, isHuge, role, }: BNN_propsType) => react_jsx_runtime.JSX.Element;
64
+
65
+ interface CBNN_propsType {
66
+ btnText: string;
67
+ btnIcon?: 'Email' | 'Chat' | 'CustomerService' | 'CommunicationUnified';
68
+ btnKind?: 'primary' | 'secondary';
69
+ btnSize?: 'sm' | 'md';
70
+ modalLabel: string;
71
+ modalHeading: string;
72
+ modalSubHeading: string;
73
+ modalPrimaryButtonText: string;
74
+ modalSecondaryButtonText: string;
75
+ }
76
+
77
+ declare const ContactButton: ({ btnText, btnIcon, btnKind, btnSize, modalLabel, modalHeading, modalSubHeading, modalPrimaryButtonText, modalSecondaryButtonText, }: CBNN_propsType) => react_jsx_runtime.JSX.Element;
78
+
79
+ declare const CP_nameOpt: readonly ["Hills", "App Developer", "Leadership", "DevicePairing", "CodeExplanation", "MagicWand", "Question", "User", "UserInterface", "Collaboration", "Presentation", "Transform_01", "Networking_04", "Goals", "TransactionalTrust", "Teacher", "Carbon", "Multitask", "PoughkeepsieBridge", "AssetManagement", "Presenter"];
80
+ declare const CP_sizeOpt: readonly ["sm", "md", "lg", "xl"];
81
+ type CP_nameType = (typeof CP_nameOpt)[number];
82
+ type CP_sizeType = (typeof CP_sizeOpt)[number];
83
+ interface CP_propsType {
84
+ name: CP_nameType;
85
+ size?: CP_sizeType;
86
+ className?: string;
87
+ }
88
+
89
+ declare const CustomPictogram: ({ name, size, className }: CP_propsType) => react_jsx_runtime.JSX.Element;
90
+
91
+ declare const CP_pictogramMap: Record<CP_nameType, // CP_propsType['name'],
92
+ ComponentType<SVGProps<SVGSVGElement>>>;
93
+ declare const CP_getPictogram: ({ name, }: {
94
+ name: string;
95
+ }) => ComponentType<SVGProps<SVGSVGElement>>;
96
+
97
+ /**
98
+ * Props validations rules
99
+ * ----------
100
+ * CustomTile must be either:
101
+ * - A link (provide 'linksTo' and optionally 'linkTarget')
102
+ * - A modal trigger (provide 'modalIsAvailable')
103
+ * But cannot be both at the same time
104
+ */
105
+ type ErrorMessage<T extends string> = `🚨 Prop Validation Error: ${T}`;
106
+ /** Normal link props (default case, modalIsAvailable omitted or false) */
107
+ interface LinkProps {
108
+ linksTo?: CTL_valid_linkTo;
109
+ linkTarget?: CTL_LinkTargetType;
110
+ modalIsAvailable?: false;
111
+ }
112
+ /** Strict modal props (only when true) */
113
+ interface ModalProps {
114
+ modalIsAvailable: true;
115
+ linksTo?: ErrorMessage<"Modal version cannot have 'linksTo' - remove this prop">;
116
+ linkTarget?: ErrorMessage<"Modal version cannot have 'linkTarget' - remove this prop">;
117
+ }
118
+ type CTL_propsType1Validation = LinkProps | ModalProps;
119
+
120
+ declare const CTL_LayoutStyleOpt: readonly ["card", "banner"];
121
+ declare const CTL_LinkTargetOpt: readonly ["_blank", "_self"];
122
+ declare const CTL_MediaOpt: readonly ["pictogram", "image"];
123
+ type CTL_LayoutStyleType = (typeof CTL_LayoutStyleOpt)[number];
124
+ type CTL_LinkTargetType = (typeof CTL_LinkTargetOpt)[number];
125
+ type CTL_MediaType = (typeof CTL_MediaOpt)[number];
126
+
127
+ type ValidRoute = `/${string}`;
128
+ type ExternalLink = `https://${string}` | `http://${string}`;
129
+ type CTL_valid_linkTo = ValidRoute | ExternalLink;
130
+ type CTL_propsType = {
131
+ className?: string;
132
+ featuredText: FTX_propsType;
133
+ layoutStyle?: CTL_LayoutStyleType;
134
+ media?: CTL_MediaType;
135
+ mediaPictogram?: CP_nameType;
136
+ mediaImage?: string;
137
+ modalIsAvailable?: boolean;
138
+ modalPlainDescription?: string;
139
+ modalRichDescription?: {
140
+ json: {
141
+ content: Node[];
142
+ };
143
+ };
144
+ linksTo?: CTL_valid_linkTo;
145
+ linkTarget?: CTL_LinkTargetType;
146
+ } & CTL_propsType1Validation;
147
+
148
+ declare const CustomTile: ({ className, featuredText, layoutStyle, media, mediaPictogram, mediaImage, modalIsAvailable, modalPlainDescription, modalRichDescription, linksTo, linkTarget, }: CTL_propsType) => react_jsx_runtime.JSX.Element;
149
+
150
+ interface LIT_propsType {
151
+ content?: string;
152
+ href?: string;
153
+ id?: string;
154
+ className?: string;
155
+ children?: React.ReactNode;
156
+ }
157
+
158
+ declare const LST_typeOpt: readonly ["unordered", "ordered"];
159
+ type LST_typePropsType = (typeof LST_typeOpt)[number];
160
+ interface LST_propsType {
161
+ type?: LST_typePropsType;
162
+ className?: string;
163
+ content?: LIT_propsType[];
164
+ }
165
+
166
+ declare const HDL_tagOpt: readonly ["div", "section"];
167
+ type HDL_tagPropsType = (typeof HDL_tagOpt)[number];
168
+ interface HDL_propsType {
169
+ wrapper?: {
170
+ tag: HDL_tagPropsType;
171
+ cssClass?: string;
172
+ };
173
+ heading: HDG_propsType;
174
+ list?: LST_propsType;
175
+ }
176
+
177
+ declare const HeadlinedList: ({ wrapper, heading, list, }: HDL_propsType) => react_jsx_runtime.JSX.Element;
178
+
179
+ declare const List: ({ type, className, content }: LST_propsType) => react_jsx_runtime.JSX.Element;
180
+
181
+ declare const SmartText: ({ className, plainText, richText }: SMT_propsType) => react_jsx_runtime.JSX.Element;
182
+
183
+ declare const FeatureText: ({ className, heading, smartText, headingMaxLength, plainTextMaxLength, isHidden, }: FTX_propsType) => react_jsx_runtime.JSX.Element;
184
+
185
+ interface CRT_propsType {
186
+ className?: string;
187
+ data?: {
188
+ json: {
189
+ content: Node[];
190
+ };
191
+ links?: {
192
+ assets: {
193
+ block: {
194
+ sys: {
195
+ id: string;
196
+ };
197
+ url: string;
198
+ title: string;
199
+ description?: string;
200
+ }[];
201
+ };
202
+ };
203
+ };
204
+ }
205
+
206
+ declare const CMSRichText: ({ data, className }: CRT_propsType) => react_jsx_runtime.JSX.Element;
207
+
208
+ export { AppHeader, Banner, BrandLogo, CMSRichText, CP_getPictogram, type CP_nameType, CP_pictogramMap, type CTL_valid_linkTo, ContactButton, CustomPictogram, CustomTile, FeatureText, HeadlinedList, List, SmartText };