includio-cms 0.1.4 → 0.5.0

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 (296) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/ROADMAP.md +18 -13
  3. package/dist/admin/api/accept-invite.js +1 -5
  4. package/dist/admin/api/invite.js +7 -16
  5. package/dist/admin/client/account/account-page.svelte +20 -50
  6. package/dist/admin/client/account/lang.d.ts +15 -23
  7. package/dist/admin/client/account/lang.js +51 -67
  8. package/dist/admin/client/account/preferences-section.svelte +26 -84
  9. package/dist/admin/client/account/profile-section.svelte +60 -40
  10. package/dist/admin/client/account/schema.d.ts +11 -3
  11. package/dist/admin/client/account/schema.js +25 -16
  12. package/dist/admin/client/account/security-section.svelte +139 -105
  13. package/dist/admin/client/account/sessions-section.svelte +35 -34
  14. package/dist/admin/client/admin/admin-after-login-layout-content.svelte +3 -5
  15. package/dist/admin/client/admin/admin-layout.svelte +3 -2
  16. package/dist/admin/client/admin/admin-preloader.svelte +36 -0
  17. package/dist/admin/client/admin/admin-preloader.svelte.d.ts +18 -0
  18. package/dist/admin/client/admin/dashboard-page.svelte +55 -41
  19. package/dist/admin/client/collection/a11y-score-cell.svelte +45 -0
  20. package/dist/admin/client/collection/a11y-score-cell.svelte.d.ts +6 -0
  21. package/dist/admin/client/collection/bulk-actions-bar.svelte +83 -0
  22. package/dist/admin/client/collection/bulk-actions-bar.svelte.d.ts +9 -0
  23. package/dist/admin/client/collection/collection-entries.svelte +255 -260
  24. package/dist/admin/client/collection/collection-view.svelte.d.ts +4 -3
  25. package/dist/admin/client/collection/collection-view.svelte.js +9 -5
  26. package/dist/admin/client/collection/collection.svelte +22 -12
  27. package/dist/admin/client/collection/data-table.svelte +50 -39
  28. package/dist/admin/client/collection/data-table.svelte.d.ts +1 -0
  29. package/dist/admin/client/collection/date-cell.svelte +7 -5
  30. package/dist/admin/client/collection/date-cell.svelte.d.ts +1 -1
  31. package/dist/admin/client/collection/empty-state.svelte +28 -0
  32. package/dist/admin/client/collection/empty-state.svelte.d.ts +9 -0
  33. package/dist/admin/client/collection/entry-link.svelte +10 -4
  34. package/dist/admin/client/collection/entry-link.svelte.d.ts +1 -0
  35. package/dist/admin/client/collection/grid-view.svelte +21 -23
  36. package/dist/admin/client/collection/grid-view.svelte.d.ts +1 -2
  37. package/dist/admin/client/collection/row-actions.svelte +60 -0
  38. package/dist/admin/client/collection/row-actions.svelte.d.ts +9 -0
  39. package/dist/admin/client/collection/status-badge.svelte +7 -8
  40. package/dist/admin/client/collection/table-pagination.svelte +122 -79
  41. package/dist/admin/client/collection/table-pagination.svelte.d.ts +1 -0
  42. package/dist/admin/client/collection/table-toolbar.svelte +108 -88
  43. package/dist/admin/client/collection/table-toolbar.svelte.d.ts +8 -9
  44. package/dist/admin/client/entry/entry-form.svelte +109 -1
  45. package/dist/admin/client/entry/entry-header.svelte +96 -37
  46. package/dist/admin/client/entry/entry-header.svelte.d.ts +5 -0
  47. package/dist/admin/client/entry/entry.svelte +171 -60
  48. package/dist/admin/client/entry/header/a11y-validator.d.ts +46 -0
  49. package/dist/admin/client/entry/header/a11y-validator.js +311 -0
  50. package/dist/admin/client/entry/header/publish-panel.svelte +373 -131
  51. package/dist/admin/client/entry/header/publish-panel.svelte.d.ts +4 -0
  52. package/dist/admin/client/entry/header/save-indicator.svelte +33 -23
  53. package/dist/admin/client/entry/header/schedule-popover.svelte +1 -1
  54. package/dist/admin/client/entry/header/status-badge.svelte +25 -118
  55. package/dist/admin/client/entry/header/version-history-sheet.svelte +314 -98
  56. package/dist/admin/client/form/form-submission/form-submission.svelte +271 -83
  57. package/dist/admin/client/form/form-submission/submission-field.svelte +12 -12
  58. package/dist/admin/client/form/form-submissions.svelte +421 -139
  59. package/dist/admin/client/form/submission-link.svelte +8 -2
  60. package/dist/admin/client/form/submission-link.svelte.d.ts +1 -0
  61. package/dist/admin/client/form/submission-status-badge.svelte +18 -4
  62. package/dist/admin/client/form/submission-status-badge.svelte.d.ts +1 -0
  63. package/dist/admin/client/login/lang.d.ts +32 -0
  64. package/dist/admin/client/login/lang.js +66 -2
  65. package/dist/admin/client/login/login-form.svelte +237 -95
  66. package/dist/admin/client/login/login-form.svelte.d.ts +2 -17
  67. package/dist/admin/client/login/login-page.svelte +34 -98
  68. package/dist/admin/client/login/reset-password-page.svelte +235 -0
  69. package/dist/admin/client/login/reset-password-page.svelte.d.ts +4 -0
  70. package/dist/admin/client/login/schema.d.ts +15 -0
  71. package/dist/admin/client/login/schema.js +21 -0
  72. package/dist/admin/client/users/accept-invite-page.svelte +166 -37
  73. package/dist/admin/client/users/create-user-dialog.svelte +15 -7
  74. package/dist/admin/client/users/delete-user-dialog.svelte +81 -16
  75. package/dist/admin/client/users/delete-user-dialog.svelte.d.ts +4 -1
  76. package/dist/admin/client/users/edit-user-dialog.svelte +3 -0
  77. package/dist/admin/client/users/invite-user-dialog.svelte +16 -3
  78. package/dist/admin/client/users/lang.d.ts +27 -0
  79. package/dist/admin/client/users/lang.js +64 -10
  80. package/dist/admin/client/users/pending-invitations.svelte +59 -23
  81. package/dist/admin/client/users/users-page.svelte +471 -72
  82. package/dist/admin/components/accessibility/accessibility-overview.svelte +2 -7
  83. package/dist/admin/components/dashboard/a11y-gauge.svelte +90 -0
  84. package/dist/admin/components/dashboard/a11y-gauge.svelte.d.ts +18 -0
  85. package/dist/admin/components/dashboard/accessibility-hub.svelte +13 -12
  86. package/dist/admin/components/dashboard/form-submissions-widget.svelte +71 -113
  87. package/dist/admin/components/dashboard/index.d.ts +4 -2
  88. package/dist/admin/components/dashboard/index.js +4 -2
  89. package/dist/admin/components/dashboard/recent-activity.svelte +53 -75
  90. package/dist/admin/components/dashboard/recent-entries.svelte +94 -0
  91. package/dist/admin/components/dashboard/recent-entries.svelte.d.ts +18 -0
  92. package/dist/admin/components/dashboard/stat-card.svelte +2 -2
  93. package/dist/admin/components/dashboard/tip-of-the-day.svelte +109 -0
  94. package/dist/admin/components/dashboard/tip-of-the-day.svelte.d.ts +3 -0
  95. package/dist/admin/components/dashboard/welcome-header.svelte +45 -0
  96. package/dist/admin/components/dashboard/welcome-header.svelte.d.ts +3 -0
  97. package/dist/admin/components/fields/{array-field.svelte → blocks-field.svelte} +4 -4
  98. package/dist/admin/components/fields/{array-field.svelte.d.ts → blocks-field.svelte.d.ts} +5 -5
  99. package/dist/admin/components/fields/content-field.svelte +27 -0
  100. package/dist/admin/components/fields/content-field.svelte.d.ts +31 -0
  101. package/dist/admin/components/fields/field-renderer.svelte +9 -7
  102. package/dist/admin/components/fields/image-field.svelte +2 -2
  103. package/dist/admin/components/fields/media-field.svelte +2 -2
  104. package/dist/admin/components/fields/seo-field.svelte +205 -25
  105. package/dist/admin/components/fields/simple-array-field.svelte +289 -0
  106. package/dist/admin/components/fields/simple-array-field.svelte.d.ts +30 -0
  107. package/dist/admin/components/fields/slug-field.svelte +3 -2
  108. package/dist/admin/components/fields/standalone-field-renderer.svelte +148 -0
  109. package/dist/admin/components/fields/standalone-field-renderer.svelte.d.ts +9 -0
  110. package/dist/admin/components/fields/text-field-wrapper.svelte +13 -1
  111. package/dist/admin/components/fields/text-field-wrapper.svelte.d.ts +2 -2
  112. package/dist/admin/components/fields/url-field.svelte +5 -4
  113. package/dist/admin/components/layout/app-sidebar.svelte +27 -24
  114. package/dist/admin/components/layout/lang.d.ts +6 -0
  115. package/dist/admin/components/layout/lang.js +13 -1
  116. package/dist/admin/components/layout/layout-renderer.svelte +352 -0
  117. package/dist/admin/components/layout/layout-renderer.svelte.d.ts +14 -0
  118. package/dist/admin/components/layout/nav-breadcrumbs.svelte +4 -4
  119. package/dist/admin/components/layout/nav-collections.svelte +65 -36
  120. package/dist/admin/components/layout/nav-footer.svelte +31 -0
  121. package/dist/admin/components/layout/nav-footer.svelte.d.ts +18 -0
  122. package/dist/admin/components/layout/nav-forms.svelte +55 -30
  123. package/dist/admin/components/layout/nav-main.svelte +14 -52
  124. package/dist/admin/components/layout/nav-search.svelte +4 -3
  125. package/dist/admin/components/layout/nav-singletons.svelte +59 -17
  126. package/dist/admin/components/layout/nav-singletons.svelte.d.ts +17 -8
  127. package/dist/admin/components/layout/site-header.svelte +74 -13
  128. package/dist/admin/components/media/alt-input.svelte +32 -22
  129. package/dist/admin/components/media/bulk-action-bar.svelte +139 -150
  130. package/dist/admin/components/media/file/file-details.svelte +299 -217
  131. package/dist/admin/components/media/file/file-miniature.svelte +54 -41
  132. package/dist/admin/components/media/file/file-miniature.svelte.d.ts +1 -0
  133. package/dist/admin/components/media/file/file-preview.svelte +1 -1
  134. package/dist/admin/components/media/file-upload.svelte +24 -26
  135. package/dist/admin/components/media/files-list.svelte +112 -40
  136. package/dist/admin/components/media/files-list.svelte.d.ts +2 -0
  137. package/dist/admin/components/media/focal-point-input.svelte +122 -26
  138. package/dist/admin/components/media/media-library.svelte +127 -70
  139. package/dist/admin/components/media/media-search.svelte +6 -6
  140. package/dist/admin/components/media/media-sort.svelte +3 -1
  141. package/dist/admin/components/media/multi-file-summary.svelte +88 -68
  142. package/dist/admin/components/media/tag-combobox.svelte +141 -66
  143. package/dist/admin/components/media/tag-combobox.svelte.d.ts +1 -0
  144. package/dist/admin/components/media/tag-sidebar.svelte +139 -121
  145. package/dist/admin/components/tiptap/FigureNodeView.svelte +144 -15
  146. package/dist/admin/components/tiptap/InlineBlockNodeView.svelte +254 -0
  147. package/dist/admin/components/tiptap/InlineBlockNodeView.svelte.d.ts +4 -0
  148. package/dist/admin/components/tiptap/SlashCommandPopup.svelte +212 -0
  149. package/dist/admin/components/tiptap/SlashCommandPopup.svelte.d.ts +8 -0
  150. package/dist/admin/components/tiptap/content-editor.svelte +280 -0
  151. package/dist/admin/components/tiptap/content-editor.svelte.d.ts +9 -0
  152. package/dist/admin/components/tiptap/editor-toolbar.svelte +230 -0
  153. package/dist/admin/components/tiptap/editor-toolbar.svelte.d.ts +16 -0
  154. package/dist/admin/components/tiptap/heading-a11y-plugin.d.ts +2 -0
  155. package/dist/admin/components/tiptap/heading-a11y-plugin.js +67 -0
  156. package/dist/admin/components/tiptap/image-dialog.svelte +172 -11
  157. package/dist/admin/components/tiptap/inline-block-node.d.ts +19 -0
  158. package/dist/admin/components/tiptap/inline-block-node.js +98 -0
  159. package/dist/admin/components/tiptap/link-dialog.svelte +9 -4
  160. package/dist/admin/components/tiptap/slash-command.d.ts +17 -0
  161. package/dist/admin/components/tiptap/slash-command.js +181 -0
  162. package/dist/admin/components/tiptap/structured-content-utils.d.ts +21 -0
  163. package/dist/admin/components/tiptap/structured-content-utils.js +150 -0
  164. package/dist/admin/components/tiptap/tiptap-editor.svelte +18 -190
  165. package/dist/admin/email/invite-template.d.ts +8 -0
  166. package/dist/admin/email/invite-template.js +99 -0
  167. package/dist/admin/email/reset-password-template.d.ts +7 -0
  168. package/dist/admin/email/reset-password-template.js +96 -0
  169. package/dist/admin/remote/ai.remote.d.ts +1 -0
  170. package/dist/admin/remote/ai.remote.js +4 -1
  171. package/dist/admin/remote/entry.remote.d.ts +8 -0
  172. package/dist/admin/remote/entry.remote.js +53 -4
  173. package/dist/admin/remote/preview.remote.js +2 -1
  174. package/dist/admin/shared/password-schema.d.ts +5 -0
  175. package/dist/admin/shared/password-schema.js +10 -0
  176. package/dist/admin/styles/admin.css +1530 -151
  177. package/dist/admin/utils/formatDate.d.ts +1 -0
  178. package/dist/admin/utils/formatDate.js +8 -0
  179. package/dist/admin/utils/roleLabel.d.ts +2 -0
  180. package/dist/admin/utils/roleLabel.js +13 -0
  181. package/dist/ai-claude/index.d.ts +2 -0
  182. package/dist/ai-claude/index.js +56 -0
  183. package/dist/cms/runtime/api.d.ts +6 -1
  184. package/dist/cms/runtime/api.js +3 -0
  185. package/dist/cms/runtime/schemas.d.ts +9 -1
  186. package/dist/cms/runtime/schemas.js +8 -0
  187. package/dist/cms/runtime/types.d.ts +82 -10
  188. package/dist/cms/runtime/types.js +4 -0
  189. package/dist/components/ui/accordion/accordion.stories.svelte +39 -0
  190. package/dist/components/ui/accordion/accordion.stories.svelte.d.ts +27 -0
  191. package/dist/components/ui/alert/alert.stories.svelte +53 -0
  192. package/dist/components/ui/alert/alert.stories.svelte.d.ts +27 -0
  193. package/dist/components/ui/alert/alert.svelte +5 -0
  194. package/dist/components/ui/alert/alert.svelte.d.ts +9 -0
  195. package/dist/components/ui/avatar/avatar.stories.svelte +16 -0
  196. package/dist/components/ui/avatar/avatar.stories.svelte.d.ts +27 -0
  197. package/dist/components/ui/badge/badge.stories.svelte +33 -0
  198. package/dist/components/ui/badge/badge.stories.svelte.d.ts +27 -0
  199. package/dist/components/ui/breadcrumb/breadcrumb.stories.svelte +33 -0
  200. package/dist/components/ui/breadcrumb/breadcrumb.stories.svelte.d.ts +27 -0
  201. package/dist/components/ui/button/button.stories.svelte +43 -0
  202. package/dist/components/ui/button/button.stories.svelte.d.ts +27 -0
  203. package/dist/components/ui/button/button.svelte +1 -2
  204. package/dist/components/ui/button/button.svelte.d.ts +0 -3
  205. package/dist/components/ui/button-group/button-group-separator.svelte.d.ts +1 -1
  206. package/dist/components/ui/card/card.stories.svelte +42 -0
  207. package/dist/components/ui/card/card.stories.svelte.d.ts +27 -0
  208. package/dist/components/ui/command/command.stories.svelte +51 -0
  209. package/dist/components/ui/command/command.stories.svelte.d.ts +27 -0
  210. package/dist/components/ui/dialog/dialog.stories.svelte +29 -0
  211. package/dist/components/ui/dialog/dialog.stories.svelte.d.ts +27 -0
  212. package/dist/components/ui/field/field-label.svelte.d.ts +1 -1
  213. package/dist/components/ui/field/field.stories.svelte +21 -0
  214. package/dist/components/ui/field/field.stories.svelte.d.ts +27 -0
  215. package/dist/components/ui/input/input.stories.svelte +40 -0
  216. package/dist/components/ui/input/input.stories.svelte.d.ts +27 -0
  217. package/dist/components/ui/input/input.svelte +2 -4
  218. package/dist/components/ui/item/item-separator.svelte.d.ts +1 -1
  219. package/dist/components/ui/label/label.stories.svelte +20 -0
  220. package/dist/components/ui/label/label.stories.svelte.d.ts +27 -0
  221. package/dist/components/ui/popover/popover.stories.svelte +29 -0
  222. package/dist/components/ui/popover/popover.stories.svelte.d.ts +27 -0
  223. package/dist/components/ui/select/select-group-heading.svelte.d.ts +1 -1
  224. package/dist/components/ui/select/select.stories.svelte +23 -0
  225. package/dist/components/ui/select/select.stories.svelte.d.ts +27 -0
  226. package/dist/components/ui/separator/separator.stories.svelte +24 -0
  227. package/dist/components/ui/separator/separator.stories.svelte.d.ts +27 -0
  228. package/dist/components/ui/sheet/sheet.stories.svelte +29 -0
  229. package/dist/components/ui/sheet/sheet.stories.svelte.d.ts +27 -0
  230. package/dist/components/ui/sidebar/sidebar-group.svelte +3 -3
  231. package/dist/components/ui/sidebar/sidebar-group.svelte.d.ts +2 -2
  232. package/dist/components/ui/sidebar/sidebar-menu-button.svelte +28 -30
  233. package/dist/components/ui/sidebar/sidebar-menu-button.svelte.d.ts +7 -7
  234. package/dist/components/ui/sidebar/sidebar-separator.svelte.d.ts +1 -1
  235. package/dist/components/ui/sidebar/sidebar-trigger.svelte +4 -4
  236. package/dist/components/ui/sonner/sonner.stories.svelte +22 -0
  237. package/dist/components/ui/sonner/sonner.stories.svelte.d.ts +26 -0
  238. package/dist/components/ui/sonner/sonner.svelte +8 -2
  239. package/dist/components/ui/sonner/toast-demo.svelte +29 -0
  240. package/dist/components/ui/sonner/toast-demo.svelte.d.ts +6 -0
  241. package/dist/components/ui/textarea/textarea.stories.svelte +22 -0
  242. package/dist/components/ui/textarea/textarea.stories.svelte.d.ts +27 -0
  243. package/dist/components/ui/textarea/textarea.svelte +0 -2
  244. package/dist/components/ui/toggle/toggle.stories.svelte +22 -0
  245. package/dist/components/ui/toggle/toggle.stories.svelte.d.ts +27 -0
  246. package/dist/components/ui/toggle-group/toggle-group.stories.svelte +17 -0
  247. package/dist/components/ui/toggle-group/toggle-group.stories.svelte.d.ts +27 -0
  248. package/dist/components/ui/tooltip/tooltip.stories.svelte +26 -0
  249. package/dist/components/ui/tooltip/tooltip.stories.svelte.d.ts +27 -0
  250. package/dist/core/fields/fieldSchemaToTs.d.ts +1 -0
  251. package/dist/core/fields/fieldSchemaToTs.js +133 -1
  252. package/dist/core/fields/layoutUtils.d.ts +17 -0
  253. package/dist/core/fields/layoutUtils.js +149 -0
  254. package/dist/core/fields/structuredToHtml.d.ts +9 -0
  255. package/dist/core/fields/structuredToHtml.js +161 -0
  256. package/dist/core/server/entries/operations/create.js +2 -1
  257. package/dist/core/server/entries/operations/get.js +8 -6
  258. package/dist/core/server/entries/operations/update.d.ts +3 -0
  259. package/dist/core/server/entries/operations/update.js +30 -2
  260. package/dist/core/server/fields/queryStructuredContent.d.ts +15 -0
  261. package/dist/core/server/fields/queryStructuredContent.js +65 -0
  262. package/dist/core/server/fields/resolveImageFields.js +51 -2
  263. package/dist/core/server/fields/resolveRelationFields.js +2 -2
  264. package/dist/core/server/fields/resolveRichtextLinks.js +80 -13
  265. package/dist/core/server/fields/resolveUrlFields.js +57 -6
  266. package/dist/core/server/fields/slugResolver.d.ts +10 -0
  267. package/dist/core/server/fields/slugResolver.js +34 -0
  268. package/dist/core/server/generator/fields.js +15 -4
  269. package/dist/core/server/generator/generator.js +3 -2
  270. package/dist/files-local/index.js +126 -64
  271. package/dist/server/auth.d.ts +5 -0
  272. package/dist/server/auth.js +12 -1
  273. package/dist/sveltekit/components/structured-content.svelte +204 -0
  274. package/dist/sveltekit/components/structured-content.svelte.d.ts +21 -0
  275. package/dist/sveltekit/config.d.ts +13 -3
  276. package/dist/sveltekit/index.d.ts +3 -0
  277. package/dist/sveltekit/index.js +3 -0
  278. package/dist/sveltekit/server/handle.js +1 -0
  279. package/dist/types/config.d.ts +3 -0
  280. package/dist/types/fields.d.ts +19 -2
  281. package/dist/types/index.d.ts +2 -0
  282. package/dist/types/index.js +2 -0
  283. package/dist/types/layout.d.ts +54 -0
  284. package/dist/types/layout.js +6 -0
  285. package/dist/types/structured-content.d.ts +63 -0
  286. package/dist/types/structured-content.js +1 -0
  287. package/dist/updates/0.1.5/index.d.ts +2 -0
  288. package/dist/updates/0.1.5/index.js +18 -0
  289. package/dist/updates/0.2.0/index.d.ts +2 -0
  290. package/dist/updates/0.2.0/index.js +11 -0
  291. package/dist/updates/0.2.2/index.d.ts +2 -0
  292. package/dist/updates/0.2.2/index.js +13 -0
  293. package/dist/updates/0.5.0/index.d.ts +2 -0
  294. package/dist/updates/0.5.0/index.js +14 -0
  295. package/dist/updates/index.js +5 -1
  296. package/package.json +16 -9
@@ -1,4 +1,5 @@
1
1
  import type { InterfaceLanguage } from '../../types/languages.js';
2
2
  export declare function toLocaleCode(lang: string): string;
3
3
  export declare function formatRelativeDate(date: Date | string, lang?: InterfaceLanguage): string;
4
+ export declare function formatShortDate(date: Date | string, lang?: InterfaceLanguage): string;
4
5
  export declare function formatAbsoluteDate(date: Date | string, lang?: InterfaceLanguage): string;
@@ -86,6 +86,14 @@ export function formatRelativeDate(date, lang = 'en') {
86
86
  }
87
87
  return labels[lang].justNow;
88
88
  }
89
+ export function formatShortDate(date, lang = 'en') {
90
+ const d = typeof date === 'string' ? new Date(date) : date;
91
+ return d.toLocaleDateString(toLocaleCode(lang), {
92
+ year: 'numeric',
93
+ month: 'short',
94
+ day: 'numeric'
95
+ });
96
+ }
89
97
  export function formatAbsoluteDate(date, lang = 'en') {
90
98
  const d = typeof date === 'string' ? new Date(date) : date;
91
99
  return d.toLocaleString(toLocaleCode(lang), {
@@ -0,0 +1,2 @@
1
+ import type { InterfaceLanguage } from '../../types/languages.js';
2
+ export declare function getRoleLabel(role: string, lang: InterfaceLanguage): string;
@@ -0,0 +1,13 @@
1
+ const roleLabels = {
2
+ pl: {
3
+ admin: 'Administrator',
4
+ user: 'Użytkownik'
5
+ },
6
+ en: {
7
+ admin: 'Administrator',
8
+ user: 'User'
9
+ }
10
+ };
11
+ export function getRoleLabel(role, lang) {
12
+ return roleLabels[lang]?.[role] ?? role;
13
+ }
@@ -0,0 +1,2 @@
1
+ import type { AIAdapter, AIConfig } from '../types/adapters/ai.js';
2
+ export declare function claudeAdapter(config: AIConfig): AIAdapter;
@@ -0,0 +1,56 @@
1
+ import { getCMS } from '../core/cms.js';
2
+ import Anthropic from '@anthropic-ai/sdk';
3
+ import sharp from 'sharp';
4
+ export function claudeAdapter(config) {
5
+ const client = new Anthropic({
6
+ apiKey: config.apiKey
7
+ });
8
+ return {
9
+ generateAltText: async (fileId) => {
10
+ const mediaFile = await getCMS().databaseAdapter.getMediaFile({
11
+ data: {
12
+ id: fileId
13
+ }
14
+ });
15
+ if (!mediaFile) {
16
+ throw new Error('Media file not found in database');
17
+ }
18
+ const file = await getCMS().filesAdapter.downloadFile(mediaFile.url.split('/').pop() || '');
19
+ if (!file) {
20
+ throw new Error('File not found');
21
+ }
22
+ const fileBuffer = Buffer.from(await file.arrayBuffer());
23
+ const pngBuffer = await sharp(fileBuffer).png().toBuffer();
24
+ const imageBase64 = pngBuffer.toString('base64');
25
+ const prompt = `Generate a concise and descriptive alt text for the following image file in polish language. The alt text should accurately describe the content and context of the image, be no longer than 125 characters, and avoid using phrases like "image of" or "picture of". Return only the alt text, nothing else.`;
26
+ const message = await client.messages.create({
27
+ model: 'claude-haiku-4-5-20251001',
28
+ max_tokens: 256,
29
+ messages: [
30
+ {
31
+ role: 'user',
32
+ content: [
33
+ {
34
+ type: 'text',
35
+ text: prompt
36
+ },
37
+ {
38
+ type: 'image',
39
+ source: {
40
+ type: 'base64',
41
+ media_type: 'image/png',
42
+ data: imageBase64
43
+ }
44
+ }
45
+ ]
46
+ }
47
+ ]
48
+ });
49
+ const textBlock = message.content.find((block) => block.type === 'text');
50
+ if (!textBlock || textBlock.type !== 'text') {
51
+ throw new Error('AI response did not contain text');
52
+ }
53
+ return textBlock.text.trim();
54
+ }
55
+ };
56
+ }
@@ -1,4 +1,4 @@
1
- import type { SingleEntryMap, SingleSlug, CollectionEntryMap, CollectionSlug, SiteLanguage } from './types';
1
+ import type { SingleEntryMap, SingleSlug, CollectionEntryMap, CollectionSlug, FormEntryMap, SiteLanguage } from './types';
2
2
  interface GetEntryQueryOptions<T extends {
3
3
  data: Record<string, unknown>;
4
4
  }> {
@@ -15,4 +15,9 @@ interface GetEntryOptions {
15
15
  export declare function getSingleEntry<K extends SingleSlug>(slug: K, data: GetEntryQueryOptions<SingleEntryMap[K]>, options: GetEntryOptions): Promise<SingleEntryMap[K] | null>;
16
16
  export declare function getCollectionEntry<K extends CollectionSlug>(slug: K, data: GetEntryQueryOptions<CollectionEntryMap[K]>, options: GetEntryOptions): Promise<CollectionEntryMap[K] | null>;
17
17
  export declare function getCollectionEntries<K extends CollectionSlug>(slug: K, options: GetEntryOptions): Promise<CollectionEntryMap[K][]>;
18
+ export interface SubmitFormOptions {
19
+ ip?: string;
20
+ userAgent?: string;
21
+ }
22
+ export declare function submitForm<K extends keyof FormEntryMap>(slug: K, data: FormEntryMap[K]['data'], options?: SubmitFormOptions): Promise<boolean>;
18
23
  export {};
@@ -17,3 +17,6 @@ export async function getCollectionEntry(slug, data, options) {
17
17
  export async function getCollectionEntries(slug, options) {
18
18
  return (await getEntries({ slug, ...options }));
19
19
  }
20
+ export async function submitForm(slug, data, options) {
21
+ return createFormSubmission({ slug, data, ...options });
22
+ }
@@ -1 +1,9 @@
1
- export {};
1
+ import { z } from 'zod';
2
+ export declare const contactFormSchema: z.ZodObject<{
3
+ name: z.ZodString;
4
+ email: z.ZodString;
5
+ phone: z.ZodString;
6
+ subject: z.ZodString;
7
+ message: z.ZodString;
8
+ consent: z.ZodBoolean;
9
+ }, z.core.$strip>;
@@ -1,2 +1,10 @@
1
1
  // This file is auto-generated. Do not edit directly.
2
2
  import { z } from 'zod';
3
+ export const contactFormSchema = z.object({
4
+ "name": z.string().min(1),
5
+ "email": z.string().min(1).email(),
6
+ "phone": z.string(),
7
+ "subject": z.string(),
8
+ "message": z.string().min(1),
9
+ "consent": z.boolean()
10
+ });
@@ -1,4 +1,4 @@
1
- import type { ImageFieldData } from 'includio-cms/types';
1
+ import type { ImageFieldData, StructuredContentDoc } from 'includio-cms/types';
2
2
  export type SingleSlug = "settings" | "image-showcase";
3
3
  export interface Settings {
4
4
  id: string;
@@ -6,6 +6,8 @@ export interface Settings {
6
6
  data: {
7
7
  siteName: string;
8
8
  description?: string;
9
+ logo?: ImageFieldData | null;
10
+ favicon?: ImageFieldData | null;
9
11
  socialLinks?: ({
10
12
  slug: 'socialLink';
11
13
  data: {
@@ -15,6 +17,9 @@ export interface Settings {
15
17
  };
16
18
  };
17
19
  })[];
20
+ footerText?: string;
21
+ analyticsId?: string;
22
+ customHeadCode?: string;
18
23
  };
19
24
  publishedAt: Date | null;
20
25
  }
@@ -29,27 +34,35 @@ export interface ImageShowcase {
29
34
  export type SingleEntryMap = {
30
35
  settings: Settings;
31
36
  };
32
- export type CollectionSlug = "blog-post" | "project";
37
+ export type CollectionSlug = "blog-post" | "project" | "array-test";
33
38
  export interface BlogPost {
34
39
  id: string;
35
40
  slug: string;
36
41
  data: {
37
42
  title: string;
38
43
  slug?: string;
44
+ cover?: ImageFieldData | null;
45
+ rating: number;
46
+ category?: string;
47
+ publishedAt?: string;
48
+ thumbnail?: ImageFieldData | null;
49
+ content?: StructuredContentDoc;
50
+ tags?: string[];
39
51
  seo: {
40
- slug?: string;
52
+ slug: string;
41
53
  canonicalUrl?: string;
42
- title?: string;
54
+ title: string;
43
55
  description?: string;
44
56
  ogImage?: string;
45
57
  keywords?: string;
46
58
  customCode?: string;
47
59
  };
48
- category?: string;
49
- cover?: ImageFieldData | null;
50
- thumbnail?: ImageFieldData | null;
51
- content?: string;
52
- publishedAt?: string;
60
+ test?: ({
61
+ slug: 'test-object';
62
+ data: {
63
+ dupa: string;
64
+ };
65
+ })[];
53
66
  };
54
67
  publishedAt: Date | null;
55
68
  }
@@ -59,6 +72,8 @@ export interface Project {
59
72
  data: {
60
73
  title: string;
61
74
  description?: string;
75
+ status?: string;
76
+ startDate?: string;
62
77
  url?: {
63
78
  url: string;
64
79
  };
@@ -69,8 +84,65 @@ export interface Project {
69
84
  name: string;
70
85
  };
71
86
  })[];
87
+ seo: {
88
+ slug: string;
89
+ canonicalUrl?: string;
90
+ title: string;
91
+ description?: string;
92
+ ogImage?: string;
93
+ keywords?: string;
94
+ customCode?: string;
95
+ };
96
+ };
97
+ publishedAt: Date | null;
98
+ }
99
+ export interface ArrayTest {
100
+ id: string;
101
+ slug: string;
102
+ data: {
103
+ name: string;
104
+ tags?: string[];
105
+ localizedTags?: Record<string, string>[];
106
+ scores?: number[];
107
+ links?: UrlFieldData[];
108
+ unlimited?: string[];
109
+ content?: ({
110
+ slug: 'text-block';
111
+ data: {
112
+ heading: string;
113
+ body?: string;
114
+ };
115
+ } | {
116
+ slug: 'image-block';
117
+ data: {
118
+ image: ImageFieldData;
119
+ caption?: string;
120
+ };
121
+ })[];
122
+ highlights?: ({
123
+ slug: 'highlight';
124
+ data: {
125
+ title: string;
126
+ value?: number;
127
+ };
128
+ })[];
72
129
  };
73
130
  publishedAt: Date | null;
74
131
  }
75
132
  export type CollectionEntryMap = {};
76
- export type SiteLanguage = "en";
133
+ export type FormSlug = "contact";
134
+ export interface Contact {
135
+ data: {
136
+ name: string;
137
+ email: string;
138
+ phone: string;
139
+ subject: string;
140
+ message: string;
141
+ consent: boolean;
142
+ };
143
+ publishedAt: Date | null;
144
+ }
145
+ export type FormMap = {
146
+ contact: Contact;
147
+ };
148
+ export type SiteLanguage = "en" | "pl";
@@ -5,7 +5,11 @@ image - showcase;
5
5
  ImageShowcase;
6
6
  ;
7
7
  ;
8
+ ;
8
9
  blog - post;
9
10
  BlogPost;
10
11
  project: Project;
12
+ array - test;
13
+ ArrayTest;
14
+ ;
11
15
  export {};
@@ -0,0 +1,39 @@
1
+ <script module>
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from './index.js';
4
+ import { Input } from '../input/index.js';
5
+ import { Textarea } from '../textarea/index.js';
6
+
7
+ const { Story } = defineMeta({
8
+ title: 'UI/Layout/Accordion',
9
+ component: Accordion,
10
+ tags: ['autodocs'],
11
+ });
12
+ </script>
13
+
14
+ <Story name="SEO Section">
15
+ <div style="max-width:320px;border:1px solid var(--border);border-radius:12px;overflow:hidden;">
16
+ <Accordion type="single" collapsible>
17
+ <AccordionItem value="seo">
18
+ <AccordionTrigger>
19
+ <span style="display:flex;align-items:center;gap:8px;">
20
+ <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>
21
+ SEO
22
+ </span>
23
+ </AccordionTrigger>
24
+ <AccordionContent>
25
+ <div style="display:flex;flex-direction:column;gap:12px;padding:0 4px;">
26
+ <div>
27
+ <div style="font-size:12px;font-weight:600;color:var(--muted-foreground);margin-bottom:4px;">Meta tytuł</div>
28
+ <Input value="Jak pisać dostępne treści | AriaCMS" />
29
+ </div>
30
+ <div>
31
+ <div style="font-size:12px;font-weight:600;color:var(--muted-foreground);margin-bottom:4px;">Meta opis</div>
32
+ <Textarea rows={2} value="Praktyczny przewodnik po tworzeniu treści dostępnych dla wszystkich." />
33
+ </div>
34
+ </div>
35
+ </AccordionContent>
36
+ </AccordionItem>
37
+ </Accordion>
38
+ </div>
39
+ </Story>
@@ -0,0 +1,27 @@
1
+ export default Accordion;
2
+ type Accordion = SvelteComponent<{
3
+ [x: string]: never;
4
+ }, {
5
+ [evt: string]: CustomEvent<any>;
6
+ }, {}> & {
7
+ $$bindings?: string | undefined;
8
+ };
9
+ declare const Accordion: $$__sveltets_2_IsomorphicComponent<{
10
+ [x: string]: never;
11
+ }, {
12
+ [evt: string]: CustomEvent<any>;
13
+ }, {}, {}, string>;
14
+ import { Accordion } from './index.js';
15
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
16
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
17
+ $$bindings?: Bindings;
18
+ } & Exports;
19
+ (internal: unknown, props: {
20
+ $$events?: Events;
21
+ $$slots?: Slots;
22
+ }): Exports & {
23
+ $set?: any;
24
+ $on?: any;
25
+ };
26
+ z_$$bindings?: Bindings;
27
+ }
@@ -0,0 +1,53 @@
1
+ <script module>
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import { Alert, AlertDescription } from './index.js';
4
+
5
+ const { Story } = defineMeta({
6
+ title: 'UI/Feedback/Alert',
7
+ component: Alert,
8
+ tags: ['autodocs'],
9
+ });
10
+ </script>
11
+
12
+ <Story name="Default">
13
+ <div style="max-width:500px;">
14
+ <Alert>
15
+ <AlertDescription>Domyślny alert z neutralnym stylem</AlertDescription>
16
+ </Alert>
17
+ </div>
18
+ </Story>
19
+
20
+ <Story name="Info">
21
+ <div style="max-width:500px;">
22
+ <Alert variant="info">
23
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="12"/><line x1="12" y1="16" x2="12.01" y2="16"/></svg>
24
+ <AlertDescription>Pominięty poziom nagłówka — rozważ H3 zamiast H4</AlertDescription>
25
+ </Alert>
26
+ </div>
27
+ </Story>
28
+
29
+ <Story name="Success">
30
+ <div style="max-width:500px;">
31
+ <Alert variant="success">
32
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"/><polyline points="22 4 12 14.01 9 11.01"/></svg>
33
+ <AlertDescription>Hierarchia nagłówków poprawna</AlertDescription>
34
+ </Alert>
35
+ </div>
36
+ </Story>
37
+
38
+ <Story name="Warning">
39
+ <div style="max-width:500px;">
40
+ <Alert variant="warning">
41
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>
42
+ <AlertDescription>1 obraz bez opisu alternatywnego</AlertDescription>
43
+ </Alert>
44
+ </div>
45
+ </Story>
46
+
47
+ <Story name="Destructive">
48
+ <div style="max-width:500px;">
49
+ <Alert variant="destructive">
50
+ <AlertDescription>Nie udało się zapisać — sprawdź wymagane pola</AlertDescription>
51
+ </Alert>
52
+ </div>
53
+ </Story>
@@ -0,0 +1,27 @@
1
+ export default Alert;
2
+ type Alert = SvelteComponent<{
3
+ [x: string]: never;
4
+ }, {
5
+ [evt: string]: CustomEvent<any>;
6
+ }, {}> & {
7
+ $$bindings?: string | undefined;
8
+ };
9
+ declare const Alert: $$__sveltets_2_IsomorphicComponent<{
10
+ [x: string]: never;
11
+ }, {
12
+ [evt: string]: CustomEvent<any>;
13
+ }, {}, {}, string>;
14
+ import { Alert } from './index.js';
15
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
16
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
17
+ $$bindings?: Bindings;
18
+ } & Exports;
19
+ (internal: unknown, props: {
20
+ $$events?: Events;
21
+ $$slots?: Slots;
22
+ }): Exports & {
23
+ $set?: any;
24
+ $on?: any;
25
+ };
26
+ z_$$bindings?: Bindings;
27
+ }
@@ -8,6 +8,11 @@
8
8
  default: "bg-card text-card-foreground",
9
9
  destructive:
10
10
  "text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 [&>svg]:text-current",
11
+ success:
12
+ "border-success/20 bg-success-bg text-success *:data-[slot=alert-description]:text-success/90 [&>svg]:text-current",
13
+ warning:
14
+ "border-warning/20 bg-warning-bg text-warning *:data-[slot=alert-description]:text-warning/90 [&>svg]:text-current",
15
+ info: "border-primary/15 bg-lavender-lighter text-plum-dark *:data-[slot=alert-description]:text-plum-dark/90 [&>svg]:text-current",
11
16
  },
12
17
  },
13
18
  defaultVariants: {
@@ -3,16 +3,25 @@ export declare const alertVariants: import("tailwind-variants").TVReturnType<{
3
3
  variant: {
4
4
  default: string;
5
5
  destructive: string;
6
+ success: string;
7
+ warning: string;
8
+ info: string;
6
9
  };
7
10
  }, undefined, "relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current", {
8
11
  variant: {
9
12
  default: string;
10
13
  destructive: string;
14
+ success: string;
15
+ warning: string;
16
+ info: string;
11
17
  };
12
18
  }, undefined, import("tailwind-variants").TVReturnType<{
13
19
  variant: {
14
20
  default: string;
15
21
  destructive: string;
22
+ success: string;
23
+ warning: string;
24
+ info: string;
16
25
  };
17
26
  }, undefined, "relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current", unknown, unknown, undefined>>;
18
27
  export type AlertVariant = VariantProps<typeof alertVariants>["variant"];
@@ -0,0 +1,16 @@
1
+ <script module>
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import { Avatar, AvatarFallback } from './index.js';
4
+
5
+ const { Story } = defineMeta({
6
+ title: 'UI/Data/Avatar',
7
+ component: Avatar,
8
+ tags: ['autodocs'],
9
+ });
10
+ </script>
11
+
12
+ <Story name="Gradient">
13
+ <Avatar style="background:linear-gradient(135deg, var(--lavender), var(--primary));">
14
+ <AvatarFallback style="background:transparent;color:white;font-weight:700;font-size:12px;">PK</AvatarFallback>
15
+ </Avatar>
16
+ </Story>
@@ -0,0 +1,27 @@
1
+ export default Avatar;
2
+ type Avatar = SvelteComponent<{
3
+ [x: string]: never;
4
+ }, {
5
+ [evt: string]: CustomEvent<any>;
6
+ }, {}> & {
7
+ $$bindings?: string | undefined;
8
+ };
9
+ declare const Avatar: $$__sveltets_2_IsomorphicComponent<{
10
+ [x: string]: never;
11
+ }, {
12
+ [evt: string]: CustomEvent<any>;
13
+ }, {}, {}, string>;
14
+ import { Avatar } from './index.js';
15
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
16
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
17
+ $$bindings?: Bindings;
18
+ } & Exports;
19
+ (internal: unknown, props: {
20
+ $$events?: Events;
21
+ $$slots?: Slots;
22
+ }): Exports & {
23
+ $set?: any;
24
+ $on?: any;
25
+ };
26
+ z_$$bindings?: Bindings;
27
+ }
@@ -0,0 +1,33 @@
1
+ <script module>
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import { Badge } from './index.js';
4
+
5
+ const { Story } = defineMeta({
6
+ title: 'UI/Feedback/Badge',
7
+ component: Badge,
8
+ tags: ['autodocs'],
9
+ });
10
+ </script>
11
+
12
+ <Story name="Draft">
13
+ <Badge variant="secondary">
14
+ <span style="display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--text-light);"></span>
15
+ Wersja robocza
16
+ </Badge>
17
+ </Story>
18
+
19
+ <Story name="Published">
20
+ <Badge variant="secondary">
21
+ <span style="display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--success);"></span>
22
+ Opublikowany
23
+ </Badge>
24
+ </Story>
25
+
26
+ <Story name="Tag Chip">
27
+ <div style="display:flex;gap:6px;flex-wrap:wrap;">
28
+ <Badge variant="secondary">dostępność</Badge>
29
+ <Badge variant="secondary">WCAG</Badge>
30
+ <Badge variant="secondary">a11y</Badge>
31
+ <Badge variant="secondary">treści</Badge>
32
+ </div>
33
+ </Story>
@@ -0,0 +1,27 @@
1
+ export default Badge;
2
+ type Badge = SvelteComponent<{
3
+ [x: string]: never;
4
+ }, {
5
+ [evt: string]: CustomEvent<any>;
6
+ }, {}> & {
7
+ $$bindings?: string | undefined;
8
+ };
9
+ declare const Badge: $$__sveltets_2_IsomorphicComponent<{
10
+ [x: string]: never;
11
+ }, {
12
+ [evt: string]: CustomEvent<any>;
13
+ }, {}, {}, string>;
14
+ import { Badge } from './index.js';
15
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
16
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
17
+ $$bindings?: Bindings;
18
+ } & Exports;
19
+ (internal: unknown, props: {
20
+ $$events?: Events;
21
+ $$slots?: Slots;
22
+ }): Exports & {
23
+ $set?: any;
24
+ $on?: any;
25
+ };
26
+ z_$$bindings?: Bindings;
27
+ }
@@ -0,0 +1,33 @@
1
+ <script module>
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import { Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator } from './index.js';
4
+
5
+ const { Story } = defineMeta({
6
+ title: 'UI/Navigation/Breadcrumb',
7
+ component: Breadcrumb,
8
+ tags: ['autodocs'],
9
+ });
10
+ </script>
11
+
12
+ <Story name="With Brand">
13
+ <Breadcrumb>
14
+ <BreadcrumbList>
15
+ <BreadcrumbItem>
16
+ <BreadcrumbLink href="#">
17
+ <span style="display:flex;align-items:baseline;gap:1px;">
18
+ <span style="font-weight:800;font-size:16px;color:var(--primary);">Aria</span>
19
+ <span style="font-weight:300;font-size:11px;letter-spacing:0.15em;color:var(--primary);text-transform:uppercase;">CMS</span>
20
+ </span>
21
+ </BreadcrumbLink>
22
+ </BreadcrumbItem>
23
+ <BreadcrumbSeparator />
24
+ <BreadcrumbItem>
25
+ <BreadcrumbLink href="#">Articles</BreadcrumbLink>
26
+ </BreadcrumbItem>
27
+ <BreadcrumbSeparator />
28
+ <BreadcrumbItem>
29
+ <BreadcrumbPage>Jak pisać dostępne treści</BreadcrumbPage>
30
+ </BreadcrumbItem>
31
+ </BreadcrumbList>
32
+ </Breadcrumb>
33
+ </Story>
@@ -0,0 +1,27 @@
1
+ export default Breadcrumb;
2
+ type Breadcrumb = SvelteComponent<{
3
+ [x: string]: never;
4
+ }, {
5
+ [evt: string]: CustomEvent<any>;
6
+ }, {}> & {
7
+ $$bindings?: string | undefined;
8
+ };
9
+ declare const Breadcrumb: $$__sveltets_2_IsomorphicComponent<{
10
+ [x: string]: never;
11
+ }, {
12
+ [evt: string]: CustomEvent<any>;
13
+ }, {}, {}, string>;
14
+ import { Breadcrumb } from './index.js';
15
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
16
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
17
+ $$bindings?: Bindings;
18
+ } & Exports;
19
+ (internal: unknown, props: {
20
+ $$events?: Events;
21
+ $$slots?: Slots;
22
+ }): Exports & {
23
+ $set?: any;
24
+ $on?: any;
25
+ };
26
+ z_$$bindings?: Bindings;
27
+ }