@forjacms/sections 1.2.6

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 (211) hide show
  1. package/README.md +185 -0
  2. package/dist/cjs/a11y-IAJPjMwx.js +27 -0
  3. package/dist/cjs/app-globals-V2Kpy_OQ.js +5 -0
  4. package/dist/cjs/forja-blog.cjs.entry.js +16 -0
  5. package/dist/cjs/forja-contact.cjs.entry.js +25 -0
  6. package/dist/cjs/forja-cta.cjs.entry.js +15 -0
  7. package/dist/cjs/forja-divider.cjs.entry.js +19 -0
  8. package/dist/cjs/forja-faq.cjs.entry.js +16 -0
  9. package/dist/cjs/forja-features.cjs.entry.js +16 -0
  10. package/dist/cjs/forja-footer.cjs.entry.js +38 -0
  11. package/dist/cjs/forja-gallery.cjs.entry.js +16 -0
  12. package/dist/cjs/forja-hero.cjs.entry.js +20 -0
  13. package/dist/cjs/forja-legal.cjs.entry.js +46 -0
  14. package/dist/cjs/forja-logo-cloud.cjs.entry.js +20 -0
  15. package/dist/cjs/forja-nav.cjs.entry.js +53 -0
  16. package/dist/cjs/forja-newsletter.cjs.entry.js +24 -0
  17. package/dist/cjs/forja-portfolio.cjs.entry.js +37 -0
  18. package/dist/cjs/forja-pricing.cjs.entry.js +16 -0
  19. package/dist/cjs/forja-projects.cjs.entry.js +16 -0
  20. package/dist/cjs/forja-section-renderer.cjs.entry.js +42 -0
  21. package/dist/cjs/forja-sections.cjs.js +25 -0
  22. package/dist/cjs/forja-stats.cjs.entry.js +20 -0
  23. package/dist/cjs/forja-tag-cloud.cjs.entry.js +16 -0
  24. package/dist/cjs/forja-team.cjs.entry.js +18 -0
  25. package/dist/cjs/forja-testimonials.cjs.entry.js +16 -0
  26. package/dist/cjs/forja-text-block.cjs.entry.js +22 -0
  27. package/dist/cjs/forja-timeline.cjs.entry.js +19 -0
  28. package/dist/cjs/forja-video.cjs.entry.js +30 -0
  29. package/dist/cjs/index-Bp-SZu2Y.js +1754 -0
  30. package/dist/cjs/index.cjs.js +15 -0
  31. package/dist/cjs/loader.cjs.js +13 -0
  32. package/dist/collection/collection-manifest.json +36 -0
  33. package/dist/collection/components/forja-blog/forja-blog.js +132 -0
  34. package/dist/collection/components/forja-contact/forja-contact.js +165 -0
  35. package/dist/collection/components/forja-cta/forja-cta.js +126 -0
  36. package/dist/collection/components/forja-divider/forja-divider.js +57 -0
  37. package/dist/collection/components/forja-faq/forja-faq.js +75 -0
  38. package/dist/collection/components/forja-features/forja-features.js +94 -0
  39. package/dist/collection/components/forja-footer/forja-footer.js +184 -0
  40. package/dist/collection/components/forja-gallery/forja-gallery.js +94 -0
  41. package/dist/collection/components/forja-hero/forja-hero.js +169 -0
  42. package/dist/collection/components/forja-legal/forja-legal.js +289 -0
  43. package/dist/collection/components/forja-logo-cloud/forja-logo-cloud.js +117 -0
  44. package/dist/collection/components/forja-nav/forja-nav.js +215 -0
  45. package/dist/collection/components/forja-newsletter/forja-newsletter.js +141 -0
  46. package/dist/collection/components/forja-portfolio/forja-portfolio.js +163 -0
  47. package/dist/collection/components/forja-pricing/forja-pricing.js +94 -0
  48. package/dist/collection/components/forja-projects/forja-projects.js +94 -0
  49. package/dist/collection/components/forja-section-renderer/forja-section-renderer.js +218 -0
  50. package/dist/collection/components/forja-stats/forja-stats.js +117 -0
  51. package/dist/collection/components/forja-tag-cloud/forja-tag-cloud.js +75 -0
  52. package/dist/collection/components/forja-team/forja-team.js +138 -0
  53. package/dist/collection/components/forja-testimonials/forja-testimonials.js +94 -0
  54. package/dist/collection/components/forja-text-block/forja-text-block.js +99 -0
  55. package/dist/collection/components/forja-timeline/forja-timeline.js +120 -0
  56. package/dist/collection/components/forja-video/forja-video.js +146 -0
  57. package/dist/collection/index.js +4 -0
  58. package/dist/collection/types.js +7 -0
  59. package/dist/collection/utils/a11y.js +22 -0
  60. package/dist/collection/utils/a11y.unit.js +46 -0
  61. package/dist/components/forja-blog.d.ts +11 -0
  62. package/dist/components/forja-blog.js +1 -0
  63. package/dist/components/forja-contact.d.ts +11 -0
  64. package/dist/components/forja-contact.js +1 -0
  65. package/dist/components/forja-cta.d.ts +11 -0
  66. package/dist/components/forja-cta.js +1 -0
  67. package/dist/components/forja-divider.d.ts +11 -0
  68. package/dist/components/forja-divider.js +1 -0
  69. package/dist/components/forja-faq.d.ts +11 -0
  70. package/dist/components/forja-faq.js +1 -0
  71. package/dist/components/forja-features.d.ts +11 -0
  72. package/dist/components/forja-features.js +1 -0
  73. package/dist/components/forja-footer.d.ts +11 -0
  74. package/dist/components/forja-footer.js +1 -0
  75. package/dist/components/forja-gallery.d.ts +11 -0
  76. package/dist/components/forja-gallery.js +1 -0
  77. package/dist/components/forja-hero.d.ts +11 -0
  78. package/dist/components/forja-hero.js +1 -0
  79. package/dist/components/forja-legal.d.ts +11 -0
  80. package/dist/components/forja-legal.js +1 -0
  81. package/dist/components/forja-logo-cloud.d.ts +11 -0
  82. package/dist/components/forja-logo-cloud.js +1 -0
  83. package/dist/components/forja-nav.d.ts +11 -0
  84. package/dist/components/forja-nav.js +1 -0
  85. package/dist/components/forja-newsletter.d.ts +11 -0
  86. package/dist/components/forja-newsletter.js +1 -0
  87. package/dist/components/forja-portfolio.d.ts +11 -0
  88. package/dist/components/forja-portfolio.js +1 -0
  89. package/dist/components/forja-pricing.d.ts +11 -0
  90. package/dist/components/forja-pricing.js +1 -0
  91. package/dist/components/forja-projects.d.ts +11 -0
  92. package/dist/components/forja-projects.js +1 -0
  93. package/dist/components/forja-section-renderer.d.ts +11 -0
  94. package/dist/components/forja-section-renderer.js +1 -0
  95. package/dist/components/forja-stats.d.ts +11 -0
  96. package/dist/components/forja-stats.js +1 -0
  97. package/dist/components/forja-tag-cloud.d.ts +11 -0
  98. package/dist/components/forja-tag-cloud.js +1 -0
  99. package/dist/components/forja-team.d.ts +11 -0
  100. package/dist/components/forja-team.js +1 -0
  101. package/dist/components/forja-testimonials.d.ts +11 -0
  102. package/dist/components/forja-testimonials.js +1 -0
  103. package/dist/components/forja-text-block.d.ts +11 -0
  104. package/dist/components/forja-text-block.js +1 -0
  105. package/dist/components/forja-timeline.d.ts +11 -0
  106. package/dist/components/forja-timeline.js +1 -0
  107. package/dist/components/forja-video.d.ts +11 -0
  108. package/dist/components/forja-video.js +1 -0
  109. package/dist/components/index.d.ts +35 -0
  110. package/dist/components/index.js +1 -0
  111. package/dist/components/p-CTbyYfdB.js +1 -0
  112. package/dist/components/p-DTKnQcqm.js +1 -0
  113. package/dist/define-all.d.ts +2 -0
  114. package/dist/define-all.js +24 -0
  115. package/dist/esm/a11y-CTbyYfdB.js +24 -0
  116. package/dist/esm/app-globals-DQuL1Twl.js +3 -0
  117. package/dist/esm/forja-blog.entry.js +14 -0
  118. package/dist/esm/forja-contact.entry.js +23 -0
  119. package/dist/esm/forja-cta.entry.js +13 -0
  120. package/dist/esm/forja-divider.entry.js +17 -0
  121. package/dist/esm/forja-faq.entry.js +14 -0
  122. package/dist/esm/forja-features.entry.js +14 -0
  123. package/dist/esm/forja-footer.entry.js +36 -0
  124. package/dist/esm/forja-gallery.entry.js +14 -0
  125. package/dist/esm/forja-hero.entry.js +18 -0
  126. package/dist/esm/forja-legal.entry.js +44 -0
  127. package/dist/esm/forja-logo-cloud.entry.js +18 -0
  128. package/dist/esm/forja-nav.entry.js +51 -0
  129. package/dist/esm/forja-newsletter.entry.js +22 -0
  130. package/dist/esm/forja-portfolio.entry.js +35 -0
  131. package/dist/esm/forja-pricing.entry.js +14 -0
  132. package/dist/esm/forja-projects.entry.js +14 -0
  133. package/dist/esm/forja-section-renderer.entry.js +40 -0
  134. package/dist/esm/forja-sections.js +21 -0
  135. package/dist/esm/forja-stats.entry.js +18 -0
  136. package/dist/esm/forja-tag-cloud.entry.js +14 -0
  137. package/dist/esm/forja-team.entry.js +16 -0
  138. package/dist/esm/forja-testimonials.entry.js +14 -0
  139. package/dist/esm/forja-text-block.entry.js +20 -0
  140. package/dist/esm/forja-timeline.entry.js +17 -0
  141. package/dist/esm/forja-video.entry.js +28 -0
  142. package/dist/esm/index-WdE4YutY.js +1747 -0
  143. package/dist/esm/index.js +11 -0
  144. package/dist/esm/loader.js +11 -0
  145. package/dist/forja-sections/forja-sections.esm.js +1 -0
  146. package/dist/forja-sections/index.esm.js +1 -0
  147. package/dist/forja-sections/p-0a820467.entry.js +1 -0
  148. package/dist/forja-sections/p-1b0b71f5.entry.js +1 -0
  149. package/dist/forja-sections/p-1e7249c1.entry.js +1 -0
  150. package/dist/forja-sections/p-27f014b1.entry.js +1 -0
  151. package/dist/forja-sections/p-2834de40.entry.js +1 -0
  152. package/dist/forja-sections/p-2a7f54c6.entry.js +1 -0
  153. package/dist/forja-sections/p-2b3d6388.entry.js +1 -0
  154. package/dist/forja-sections/p-4180bd91.entry.js +1 -0
  155. package/dist/forja-sections/p-57c10a67.entry.js +1 -0
  156. package/dist/forja-sections/p-6e48a255.entry.js +1 -0
  157. package/dist/forja-sections/p-6fa65e05.entry.js +1 -0
  158. package/dist/forja-sections/p-732e854c.entry.js +1 -0
  159. package/dist/forja-sections/p-8787f878.entry.js +1 -0
  160. package/dist/forja-sections/p-9b242e13.entry.js +1 -0
  161. package/dist/forja-sections/p-CTbyYfdB.js +1 -0
  162. package/dist/forja-sections/p-DQuL1Twl.js +1 -0
  163. package/dist/forja-sections/p-WdE4YutY.js +2 -0
  164. package/dist/forja-sections/p-a2cdb548.entry.js +1 -0
  165. package/dist/forja-sections/p-aa20264b.entry.js +1 -0
  166. package/dist/forja-sections/p-b5280312.entry.js +1 -0
  167. package/dist/forja-sections/p-c2c2e0ba.entry.js +1 -0
  168. package/dist/forja-sections/p-c4bccd7e.entry.js +1 -0
  169. package/dist/forja-sections/p-d1b739dd.entry.js +1 -0
  170. package/dist/forja-sections/p-d762878f.entry.js +1 -0
  171. package/dist/forja-sections/p-de808791.entry.js +1 -0
  172. package/dist/forja-sections/p-f24d6578.entry.js +1 -0
  173. package/dist/forja-sections/p-fd969566.entry.js +1 -0
  174. package/dist/index.cjs.js +1 -0
  175. package/dist/index.js +1 -0
  176. package/dist/types/components/forja-blog/forja-blog.d.ts +10 -0
  177. package/dist/types/components/forja-contact/forja-contact.d.ts +13 -0
  178. package/dist/types/components/forja-cta/forja-cta.d.ts +9 -0
  179. package/dist/types/components/forja-divider/forja-divider.d.ts +5 -0
  180. package/dist/types/components/forja-faq/forja-faq.d.ts +7 -0
  181. package/dist/types/components/forja-features/forja-features.d.ts +8 -0
  182. package/dist/types/components/forja-footer/forja-footer.d.ts +11 -0
  183. package/dist/types/components/forja-gallery/forja-gallery.d.ts +8 -0
  184. package/dist/types/components/forja-hero/forja-hero.d.ts +11 -0
  185. package/dist/types/components/forja-legal/forja-legal.d.ts +35 -0
  186. package/dist/types/components/forja-logo-cloud/forja-logo-cloud.d.ts +9 -0
  187. package/dist/types/components/forja-nav/forja-nav.d.ts +23 -0
  188. package/dist/types/components/forja-newsletter/forja-newsletter.d.ts +11 -0
  189. package/dist/types/components/forja-portfolio/forja-portfolio.d.ts +13 -0
  190. package/dist/types/components/forja-pricing/forja-pricing.d.ts +8 -0
  191. package/dist/types/components/forja-projects/forja-projects.d.ts +8 -0
  192. package/dist/types/components/forja-section-renderer/forja-section-renderer.d.ts +13 -0
  193. package/dist/types/components/forja-stats/forja-stats.d.ts +9 -0
  194. package/dist/types/components/forja-tag-cloud/forja-tag-cloud.d.ts +7 -0
  195. package/dist/types/components/forja-team/forja-team.d.ts +10 -0
  196. package/dist/types/components/forja-testimonials/forja-testimonials.d.ts +8 -0
  197. package/dist/types/components/forja-text-block/forja-text-block.d.ts +7 -0
  198. package/dist/types/components/forja-timeline/forja-timeline.d.ts +9 -0
  199. package/dist/types/components/forja-video/forja-video.d.ts +11 -0
  200. package/dist/types/components.d.ts +1010 -0
  201. package/dist/types/index.d.ts +3 -0
  202. package/dist/types/stencil-public-runtime.d.ts +1860 -0
  203. package/dist/types/types.d.ts +235 -0
  204. package/dist/types/utils/a11y.d.ts +11 -0
  205. package/dist/types/utils/a11y.unit.d.ts +1 -0
  206. package/loader/cdn.js +1 -0
  207. package/loader/index.cjs.js +1 -0
  208. package/loader/index.d.ts +24 -0
  209. package/loader/index.es2017.js +1 -0
  210. package/loader/index.js +2 -0
  211. package/package.json +66 -0
@@ -0,0 +1,235 @@
1
+ /**
2
+ * Section types — mirrors @forjacms/client SectionType.
3
+ * Duplicated here to avoid a hard dependency on @forjacms/client.
4
+ */
5
+ export type SectionType = 'Hero' | 'Features' | 'Cta' | 'Gallery' | 'Testimonials' | 'Pricing' | 'Faq' | 'Contact' | 'Custom' | 'Stats' | 'Team' | 'Timeline' | 'LogoCloud' | 'Newsletter' | 'Video' | 'Divider' | 'Text' | 'Portfolio' | 'TagCloud' | 'Projects' | 'Blog' | 'Legal';
6
+ /** Props common to all section components. */
7
+ export interface BaseSectionProps {
8
+ /** Section heading displayed in an <h2>. Also used as the aria-label fallback for the section landmark. */
9
+ title?: string;
10
+ /** Body text rendered below the heading. Supports inline HTML. */
11
+ text?: string;
12
+ /** Label for the primary call-to-action button. Button is hidden when omitted. */
13
+ buttonText?: string;
14
+ /** URL the primary CTA button links to. Button is hidden when omitted. */
15
+ buttonHref?: string;
16
+ /** URL of the section's primary image (hero background, inline illustration, etc.). */
17
+ imageUrl?: string;
18
+ /** Alt text for the section image. Falls back to an empty string for decorative images. */
19
+ imageAlt?: string;
20
+ /** Arbitrary key-value settings bag passed through from the CMS. Interpretation is component-specific. */
21
+ settings?: Record<string, unknown>;
22
+ }
23
+ /** Props for the SectionRenderer dispatcher. */
24
+ export interface SectionRendererProps extends BaseSectionProps {
25
+ /** Discriminator that determines which section component to render. */
26
+ sectionType: SectionType;
27
+ }
28
+ /** A single feature entry displayed in the Features grid. */
29
+ export interface FeatureItem {
30
+ /** Feature heading rendered as an <h3>. */
31
+ title: string;
32
+ /** Optional description displayed below the feature title. */
33
+ text?: string;
34
+ /** Icon string (emoji, ligature name, or SVG markup) rendered with aria-hidden="true". */
35
+ icon?: string;
36
+ }
37
+ /** A single image entry in the Gallery grid, rendered as a <figure>. */
38
+ export interface GalleryItem {
39
+ /** URL of the gallery image. Loaded with loading="lazy". */
40
+ imageUrl: string;
41
+ /** Alt text for the image. Falls back to empty string for decorative images. */
42
+ alt?: string;
43
+ /** Optional caption rendered inside a <figcaption>. */
44
+ caption?: string;
45
+ }
46
+ /** A single testimonial entry rendered as a <blockquote> with <cite>. */
47
+ export interface TestimonialItem {
48
+ /** The testimonial text displayed inside the blockquote. */
49
+ quote: string;
50
+ /** Author name rendered inside a <cite> element. */
51
+ author: string;
52
+ /** Author's role or job title, shown below the name. */
53
+ role?: string;
54
+ /** URL of the author's avatar image. Rendered with empty alt (decorative). */
55
+ avatarUrl?: string;
56
+ }
57
+ /** A pricing plan card rendered in the Pricing section grid. */
58
+ export interface PricingTier {
59
+ /** Plan name displayed as the card heading (<h3>). */
60
+ name: string;
61
+ /** Price string (e.g. "$19", "Free"). Displayed prominently. */
62
+ price: string;
63
+ /** Billing period label (e.g. "/month"). Shown next to the price. */
64
+ period?: string;
65
+ /** Short plan description rendered below the price. */
66
+ description?: string;
67
+ /** List of feature bullet points rendered as a <ul>. */
68
+ features?: string[];
69
+ /** When true, applies a visual emphasis modifier class to this tier card. */
70
+ highlighted?: boolean;
71
+ /** CTA button label for this tier. Button is hidden when omitted. */
72
+ buttonText?: string;
73
+ /** CTA button link for this tier. Button is hidden when omitted. */
74
+ buttonHref?: string;
75
+ }
76
+ /** A single FAQ entry rendered as a <details>/<summary> accordion item. */
77
+ export interface FaqItem {
78
+ /** The question text shown in the <summary> toggle. */
79
+ question: string;
80
+ /** The answer content revealed when the item is expanded. Supports HTML. */
81
+ answer: string;
82
+ }
83
+ /** Configuration for a single form field in the Contact section. */
84
+ export interface ContactField {
85
+ /** HTML name attribute for the input. Also used to generate a unique field id. */
86
+ name: string;
87
+ /** Visible label text associated with the input via <label for>. */
88
+ label: string;
89
+ /** Input type. "textarea" renders a multi-row <textarea> instead of an <input>. */
90
+ type: 'text' | 'email' | 'textarea';
91
+ /** When true, adds the required attribute and aria-required="true" to the input. */
92
+ required?: boolean;
93
+ /** Placeholder text shown inside the input when empty. */
94
+ placeholder?: string;
95
+ }
96
+ /** A single statistic rendered as a <dd>/<dt> pair inside a definition list. */
97
+ export interface StatItem {
98
+ /** The numeric or textual value (e.g. "99.9%", "10k+"). Rendered in a <dd>. */
99
+ value: string;
100
+ /** Descriptive label for the stat (e.g. "Uptime"). Rendered in a <dt>. */
101
+ label: string;
102
+ }
103
+ /** A single team member card in the Team section grid. */
104
+ export interface TeamMember {
105
+ /** Member's full name, rendered as an <h3> and used as alt text for their photo. */
106
+ name: string;
107
+ /** Job title or role. Visibility controlled by the showRole prop. */
108
+ role?: string;
109
+ /** Short biography paragraph. Visibility controlled by the showBio prop. */
110
+ bio?: string;
111
+ /** URL of the member's photo. Loaded lazily. */
112
+ imageUrl?: string;
113
+ }
114
+ /** A single event in the Timeline section, rendered as an <li> in an ordered list. */
115
+ export interface TimelineEvent {
116
+ /** Date string displayed in a <time> element. Visibility controlled by showDates. */
117
+ date?: string;
118
+ /** Event heading rendered as an <h3>. */
119
+ title: string;
120
+ /** Event description. Supports HTML. */
121
+ text?: string;
122
+ }
123
+ /** A single logo entry in the LogoCloud section grid. */
124
+ export interface LogoItem {
125
+ /** URL of the logo image. Loaded lazily. */
126
+ imageUrl: string;
127
+ /** Alt text for the logo image. Required for accessibility. */
128
+ alt: string;
129
+ /** Optional link wrapping the logo. Opens in a new tab with rel="noopener". */
130
+ href?: string;
131
+ }
132
+ /** A work experience entry in the Portfolio section. */
133
+ export interface PortfolioExperience {
134
+ /** Company or organization name. */
135
+ company: string;
136
+ /** Job title or role held. */
137
+ role: string;
138
+ /** Time period string (e.g. "2020 – 2023", "Jan 2021 – Present"). */
139
+ period?: string;
140
+ /** Description of responsibilities or achievements. Supports HTML. */
141
+ description?: string;
142
+ /** Company logo URL. Loaded lazily. */
143
+ logoUrl?: string;
144
+ }
145
+ /** An education entry in the Portfolio section. */
146
+ export interface EducationItem {
147
+ /** Educational institution name. */
148
+ institution: string;
149
+ /** Degree or certification title. */
150
+ degree: string;
151
+ /** Time period string (e.g. "2016 – 2020"). */
152
+ period?: string;
153
+ /** Additional details. Supports HTML. */
154
+ description?: string;
155
+ }
156
+ /** A skill entry in the Portfolio section. */
157
+ export interface SkillItem {
158
+ /** Skill name (e.g. "TypeScript", "Rust", "Project Management"). */
159
+ name: string;
160
+ /** Skill category for grouping (e.g. "Languages", "Frameworks", "Soft Skills"). */
161
+ category?: string;
162
+ }
163
+ /** A single tag in the TagCloud section. */
164
+ export interface TagItem {
165
+ /** Tag display label. */
166
+ label: string;
167
+ /** Link URL when the tag is clicked. */
168
+ href?: string;
169
+ /** Item count displayed next to the label (e.g. "(12)"). */
170
+ count?: number;
171
+ }
172
+ /** A project card in the Projects section grid. */
173
+ export interface ProjectItem {
174
+ /** Project name rendered as an <h3>. */
175
+ title: string;
176
+ /** Short project description. Supports HTML. */
177
+ description?: string;
178
+ /** Cover image URL. Loaded lazily. */
179
+ imageUrl?: string;
180
+ /** Link to the project page or repository. */
181
+ href?: string;
182
+ /** List of technology or topic tags. */
183
+ tags?: string[];
184
+ /** Project status label (e.g. "Active", "Archived", "In Progress"). */
185
+ status?: string;
186
+ }
187
+ /** A blog post preview in the Blog section grid. */
188
+ export interface BlogPostItem {
189
+ /** Post title rendered as an <h3>. */
190
+ title: string;
191
+ /** Short excerpt or summary text. Supports HTML. */
192
+ excerpt?: string;
193
+ /** Cover image URL. Loaded lazily. */
194
+ imageUrl?: string;
195
+ /** Link to the full blog post. */
196
+ href?: string;
197
+ /** Publication date string displayed in a <time> element. */
198
+ date?: string;
199
+ /** Author name. */
200
+ author?: string;
201
+ }
202
+ /**
203
+ * Legal document type identifier.
204
+ * Mirrors LegalDocType from the backend/client.
205
+ */
206
+ export type LegalDocType = 'CookieConsent' | 'PrivacyPolicy' | 'TermsOfService' | 'Imprint' | 'Disclaimer';
207
+ /** Human-readable labels for legal document types. */
208
+ /** A navigation item for the Nav and Footer components. */
209
+ export interface NavItem {
210
+ /** Display label for the link. */
211
+ title: string;
212
+ /** URL the link points to. */
213
+ href: string;
214
+ /** When true, opens in a new tab with rel="noopener noreferrer". */
215
+ openInNewTab?: boolean;
216
+ /** Nested child items rendered as a dropdown (Nav only). */
217
+ children?: NavItem[];
218
+ }
219
+ /** A social media link for the Footer component. */
220
+ export interface SocialLink {
221
+ /** Platform name (e.g. "GitHub", "Twitter"). */
222
+ title: string;
223
+ /** Full URL to the social profile. */
224
+ url: string;
225
+ /** Icon slug (e.g. "github", "twitter", "linkedin"). Used to select the SVG icon. */
226
+ icon: string;
227
+ }
228
+ /** A locale option for the language switcher in the Nav. */
229
+ export interface LocaleOption {
230
+ /** ISO locale code (e.g. "en", "de", "fr"). */
231
+ code: string;
232
+ /** Human-readable locale name (e.g. "English", "Deutsch"). */
233
+ name: string;
234
+ }
235
+ export declare const LEGAL_DOC_TYPE_LABELS: Record<LegalDocType, string>;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * ARIA and accessibility helpers for section components.
3
+ * These utilities help maintain consistent accessible markup across all sections.
4
+ */
5
+ /** Build an aria-label from a title, falling back to a generic section description. */
6
+ export declare function sectionLabel(title: string | undefined, fallback: string): string;
7
+ /**
8
+ * Generate a unique ID for linking headings to their content.
9
+ * Uses a slug derived from the title, or a random suffix if no title is provided.
10
+ */
11
+ export declare function sectionId(title: string | undefined, prefix: string): string;
@@ -0,0 +1 @@
1
+ export {};
package/loader/cdn.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require('../dist/cjs/loader.cjs.js');
@@ -0,0 +1 @@
1
+ module.exports = require('../dist/cjs/loader.cjs.js');
@@ -0,0 +1,24 @@
1
+ export * from '../dist/types/components';
2
+ export interface CustomElementsDefineOptions {
3
+ exclude?: string[];
4
+ resourcesUrl?: string;
5
+ syncQueue?: boolean;
6
+ jmp?: (c: Function) => any;
7
+ raf?: (c: FrameRequestCallback) => number;
8
+ ael?: (el: EventTarget, eventName: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions) => void;
9
+ rel?: (el: EventTarget, eventName: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions) => void;
10
+ }
11
+ export declare function defineCustomElements(win?: Window, opts?: CustomElementsDefineOptions): void;
12
+ /**
13
+ * @deprecated
14
+ */
15
+ export declare function applyPolyfills(): Promise<void>;
16
+
17
+ /**
18
+ * Used to specify a nonce value that corresponds with an application's CSP.
19
+ * When set, the nonce will be added to all dynamically created script and style tags at runtime.
20
+ * Alternatively, the nonce value can be set on a meta tag in the DOM head
21
+ * (<meta name="csp-nonce" content="{ nonce value here }" />) which
22
+ * will result in the same behavior.
23
+ */
24
+ export declare function setNonce(nonce: string): void;
@@ -0,0 +1 @@
1
+ export * from '../dist/esm/loader.js';
@@ -0,0 +1,2 @@
1
+ (function(){if("undefined"!==typeof window&&void 0!==window.Reflect&&void 0!==window.customElements){var a=HTMLElement;window.HTMLElement=function(){return Reflect.construct(a,[],this.constructor)};HTMLElement.prototype=a.prototype;HTMLElement.prototype.constructor=HTMLElement;Object.setPrototypeOf(HTMLElement,a)}})();
2
+ export * from '../dist/esm/loader.js';
package/package.json ADDED
@@ -0,0 +1,66 @@
1
+ {
2
+ "name": "@forjacms/sections",
3
+ "version": "1.2.6",
4
+ "description": "Framework-agnostic Web Components for rendering Forja page sections. Zero CSS — bring your own styles via BEM class hooks.",
5
+ "author": "Dominik Dorfstetter <dominik@dorfstetter.at>",
6
+ "type": "module",
7
+ "main": "dist/index.cjs.js",
8
+ "module": "dist/index.js",
9
+ "types": "dist/types/index.d.ts",
10
+ "collection": "dist/collection/collection-manifest.json",
11
+ "collection:main": "dist/collection/index.js",
12
+ "exports": {
13
+ ".": {
14
+ "import": "./dist/index.js",
15
+ "require": "./dist/index.cjs.js",
16
+ "types": "./dist/types/index.d.ts"
17
+ },
18
+ "./loader": {
19
+ "import": "./loader/index.js",
20
+ "require": "./loader/index.cjs.js",
21
+ "types": "./loader/index.d.ts"
22
+ },
23
+ "./define": {
24
+ "import": "./dist/define-all.js",
25
+ "types": "./dist/define-all.d.ts"
26
+ }
27
+ },
28
+ "files": [
29
+ "dist/",
30
+ "loader/"
31
+ ],
32
+ "scripts": {
33
+ "build": "stencil build && node scripts/generate-define-all.js",
34
+ "dev": "stencil build --dev --watch",
35
+ "test": "stencil-test",
36
+ "test:watch": "stencil-test --watch",
37
+ "test:spec": "stencil-test --project spec",
38
+ "test:unit": "stencil-test --project unit"
39
+ },
40
+ "keywords": [
41
+ "web-components",
42
+ "stencil",
43
+ "sections",
44
+ "headless",
45
+ "cms",
46
+ "forja",
47
+ "accessible",
48
+ "custom-elements"
49
+ ],
50
+ "license": "AGPL-3.0-or-later",
51
+ "repository": {
52
+ "type": "git",
53
+ "url": "https://github.com/dominikdorfstetter/forja.git",
54
+ "directory": "libs/sections"
55
+ },
56
+ "homepage": "https://github.com/dominikdorfstetter/forja/tree/main/libs/sections#readme",
57
+ "bugs": "https://github.com/dominikdorfstetter/forja/issues",
58
+ "dependencies": {
59
+ "@stencil/core": "^4.0.0"
60
+ },
61
+ "devDependencies": {
62
+ "@stencil/react-output-target": "^0.7.0",
63
+ "@stencil/vitest": "^1.9.2",
64
+ "vitest": "^4.1.2"
65
+ }
66
+ }