@uniformdev/csk-components 6.0.123-alpha.1 → 6.1.63-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (256) hide show
  1. package/README.md +74 -81
  2. package/dist/ThemeSwitcher-EUDUX3QI.mjs +1 -0
  3. package/dist/accordion-item-7IKL6Z6Q.mjs +1 -0
  4. package/dist/accordion-item-MORC2F2Q.mjs +1 -0
  5. package/dist/banner-WOYK426U.mjs +1 -0
  6. package/dist/carousel-ALNEGOPM.mjs +1 -0
  7. package/dist/carousel-HKYR3ZBB.mjs +1 -0
  8. package/dist/chunk-27WJUZYR.mjs +1 -0
  9. package/dist/chunk-3JU2XCD2.mjs +1 -0
  10. package/dist/chunk-47YB4P2Q.mjs +1 -0
  11. package/dist/chunk-6CKVLOIH.mjs +1 -0
  12. package/dist/{chunk-PMMAALCQ.mjs → chunk-AOFJCDRO.mjs} +1 -1
  13. package/dist/{chunk-2BMAPB63.mjs → chunk-AWTML4I7.mjs} +1 -1
  14. package/dist/chunk-CZ4X5ZBK.mjs +1 -0
  15. package/dist/chunk-D673IM2U.mjs +1 -0
  16. package/dist/chunk-I6SUO5WR.mjs +1 -0
  17. package/dist/chunk-JT77BVIX.mjs +1 -0
  18. package/dist/chunk-LPAOEOU4.mjs +1 -0
  19. package/dist/chunk-MKOFM4XK.mjs +1 -0
  20. package/dist/chunk-NKINOJY6.mjs +1 -0
  21. package/dist/chunk-OKUDTS22.mjs +1 -0
  22. package/dist/chunk-OL6JBPZ4.mjs +1 -0
  23. package/dist/chunk-OY6ZJNCE.mjs +1 -0
  24. package/dist/chunk-PLKWUEFW.mjs +1 -0
  25. package/dist/chunk-QPQGRQKI.mjs +1 -0
  26. package/dist/chunk-VWWXSA5H.mjs +1 -0
  27. package/dist/chunk-XKCRANRQ.mjs +1 -0
  28. package/dist/chunk-XYU3TGOU.mjs +1 -0
  29. package/dist/chunk-Y337A266.mjs +7 -0
  30. package/dist/chunk-YQYDZJ65.mjs +1 -0
  31. package/dist/chunk-ZAHWFLY4.mjs +1 -0
  32. package/dist/{chunk-V4EBWEG4.mjs → chunk-ZWDCDE5W.mjs} +1 -1
  33. package/dist/components/canvas/emptyPlaceholders.d.mts +5 -4
  34. package/dist/components/canvas/emptyPlaceholders.mjs +1 -1
  35. package/dist/components/canvas/index.d.mts +4 -648
  36. package/dist/components/canvas/index.mjs +1 -1
  37. package/dist/components/canvas/serverClient.d.mts +694 -0
  38. package/dist/components/canvas/serverClient.mjs +1 -0
  39. package/dist/components/canvas/serverOnly.d.mts +41 -0
  40. package/dist/components/canvas/serverOnly.mjs +1 -0
  41. package/dist/components/ui/index.d.mts +24 -33
  42. package/dist/components/ui/index.mjs +1 -1
  43. package/dist/content/components/canvas/Accordion/accordion.tsx +8 -7
  44. package/dist/content/components/canvas/Accordion/index.tsx +2 -2
  45. package/dist/content/components/canvas/AccordionItem/accordion-item.tsx +9 -7
  46. package/dist/content/components/canvas/AccordionItem/index.tsx +4 -6
  47. package/dist/content/components/canvas/Badge/badge.tsx +12 -5
  48. package/dist/content/components/canvas/Badge/index.tsx +2 -3
  49. package/dist/content/components/canvas/Badge/style-utils.ts +6 -6
  50. package/dist/content/components/canvas/Banner/banner.tsx +24 -36
  51. package/dist/content/components/canvas/Banner/index.tsx +7 -11
  52. package/dist/content/components/canvas/Breadcrumbs/breadcrumbs.tsx +21 -22
  53. package/dist/content/components/canvas/Breadcrumbs/index.tsx +4 -7
  54. package/dist/content/components/canvas/Button/button.tsx +19 -11
  55. package/dist/content/components/canvas/Button/index.tsx +3 -5
  56. package/dist/content/components/canvas/Card/card.tsx +9 -9
  57. package/dist/content/components/canvas/Card/index.tsx +3 -3
  58. package/dist/content/components/canvas/Carousel/carousel.tsx +9 -7
  59. package/dist/content/components/canvas/Carousel/index.tsx +4 -4
  60. package/dist/content/components/canvas/Container/container.tsx +7 -6
  61. package/dist/content/components/canvas/Container/index.tsx +3 -3
  62. package/dist/content/components/canvas/CookieConsent/cookie-consent.tsx +126 -0
  63. package/dist/content/components/canvas/CookieConsent/empty-placeholder.tsx +12 -0
  64. package/dist/content/components/canvas/CookieConsent/index.tsx +26 -0
  65. package/dist/content/components/canvas/Countdown/countdown.tsx +9 -7
  66. package/dist/content/components/canvas/Countdown/index.tsx +2 -3
  67. package/dist/content/components/canvas/DemoHero/atoms.tsx +29 -32
  68. package/dist/content/components/canvas/DemoHero/columns-variant.tsx +4 -4
  69. package/dist/content/components/canvas/DemoHero/default-variant.tsx +4 -4
  70. package/dist/content/components/canvas/DemoHero/demo-hero.tsx +41 -18
  71. package/dist/content/components/canvas/DemoHero/fixed-hero.tsx +13 -6
  72. package/dist/content/components/canvas/DemoHero/flexible-hero.tsx +8 -2
  73. package/dist/content/components/canvas/DemoHero/index.tsx +3 -4
  74. package/dist/content/components/canvas/Divider/divider.tsx +5 -2
  75. package/dist/content/components/canvas/Divider/index.tsx +2 -2
  76. package/dist/content/components/canvas/Flex/flex.tsx +9 -6
  77. package/dist/content/components/canvas/Flex/index.tsx +6 -6
  78. package/dist/content/components/canvas/FlexItem/flex-item.tsx +7 -4
  79. package/dist/content/components/canvas/FlexItem/index.tsx +4 -5
  80. package/dist/content/components/canvas/Footer/footer.tsx +9 -8
  81. package/dist/content/components/canvas/Footer/index.tsx +2 -3
  82. package/dist/content/components/canvas/Grid/grid.tsx +9 -7
  83. package/dist/content/components/canvas/Grid/index.tsx +5 -5
  84. package/dist/content/components/canvas/GridItem/grid-item.tsx +10 -8
  85. package/dist/content/components/canvas/GridItem/index.tsx +5 -5
  86. package/dist/content/components/canvas/Header/header.tsx +10 -7
  87. package/dist/content/components/canvas/Header/index.tsx +2 -3
  88. package/dist/content/components/canvas/IconLabel/icon-label.tsx +16 -8
  89. package/dist/content/components/canvas/IconLabel/index.tsx +4 -5
  90. package/dist/content/components/canvas/Image/image.tsx +13 -7
  91. package/dist/content/components/canvas/Image/index.tsx +2 -3
  92. package/dist/content/components/canvas/ImageGallery/empty-placeholder.tsx +1 -1
  93. package/dist/content/components/canvas/ImageGallery/gallery-inner.tsx +6 -6
  94. package/dist/content/components/canvas/ImageGallery/image-gallery.tsx +20 -33
  95. package/dist/content/components/canvas/ImageGallery/index.tsx +11 -12
  96. package/dist/content/components/canvas/Link/index.tsx +2 -3
  97. package/dist/content/components/canvas/Link/link.tsx +7 -4
  98. package/dist/content/components/canvas/Modal/index.tsx +2 -2
  99. package/dist/content/components/canvas/Modal/modal.tsx +9 -10
  100. package/dist/content/components/canvas/NavigationFlyout/desktop.tsx +9 -13
  101. package/dist/content/components/canvas/NavigationFlyout/index.tsx +21 -3
  102. package/dist/content/components/canvas/NavigationFlyout/mobile.tsx +10 -13
  103. package/dist/content/components/canvas/NavigationFlyout/{navigation-flyout.tsx → navigation-flyout-client.tsx} +26 -20
  104. package/dist/content/components/canvas/NavigationGroup/desktop.tsx +7 -10
  105. package/dist/content/components/canvas/NavigationGroup/index.tsx +20 -3
  106. package/dist/content/components/canvas/NavigationGroup/mobile.tsx +9 -8
  107. package/dist/content/components/canvas/NavigationGroup/{navigation-group.tsx → navigation-group-client.tsx} +21 -18
  108. package/dist/content/components/canvas/NavigationLink/index.tsx +2 -4
  109. package/dist/content/components/canvas/NavigationLink/navigation-link.tsx +12 -9
  110. package/dist/content/components/canvas/Page/index.tsx +7 -7
  111. package/dist/content/components/canvas/Page/page.tsx +9 -18
  112. package/dist/content/components/canvas/Review/default-variant.tsx +2 -2
  113. package/dist/content/components/canvas/Review/empty-placeholder.tsx +6 -3
  114. package/dist/content/components/canvas/Review/index.tsx +6 -6
  115. package/dist/content/components/canvas/Review/multi-column-variant.tsx +2 -2
  116. package/dist/content/components/canvas/Review/review.tsx +11 -11
  117. package/dist/content/components/canvas/RichText/index.tsx +7 -6
  118. package/dist/content/components/canvas/RichText/rich-text.tsx +23 -6
  119. package/dist/content/components/canvas/Section/columns-variant.tsx +4 -4
  120. package/dist/content/components/canvas/Section/default-variant.tsx +6 -6
  121. package/dist/content/components/canvas/Section/empty-placeholder.tsx +5 -2
  122. package/dist/content/components/canvas/Section/index.tsx +2 -2
  123. package/dist/content/components/canvas/Section/section.tsx +11 -12
  124. package/dist/content/components/canvas/SimpleFooter/index.tsx +16 -0
  125. package/dist/content/components/canvas/SimpleFooter/simple-footer.tsx +85 -0
  126. package/dist/content/components/canvas/SimpleHeader/index.tsx +22 -0
  127. package/dist/content/components/canvas/SimpleHeader/simple-header.tsx +63 -0
  128. package/dist/content/components/canvas/Spacer/index.tsx +2 -2
  129. package/dist/content/components/canvas/Spacer/spacer.tsx +5 -2
  130. package/dist/content/components/canvas/Tab/index.tsx +2 -3
  131. package/dist/content/components/canvas/Tab/tab.tsx +6 -5
  132. package/dist/content/components/canvas/Table/index.tsx +2 -2
  133. package/dist/content/components/canvas/Table/table.tsx +8 -7
  134. package/dist/content/components/canvas/TableCustomCell/index.tsx +2 -2
  135. package/dist/content/components/canvas/TableCustomCell/table-custom-cell.tsx +7 -4
  136. package/dist/content/components/canvas/TableDataCell/index.tsx +2 -2
  137. package/dist/content/components/canvas/TableDataCell/table-data-cell.tsx +7 -4
  138. package/dist/content/components/canvas/TableHeaderCell/index.tsx +2 -2
  139. package/dist/content/components/canvas/TableHeaderCell/table-header-cell.tsx +7 -4
  140. package/dist/content/components/canvas/TableRow/index.tsx +5 -3
  141. package/dist/content/components/canvas/TableRow/table-row.tsx +6 -3
  142. package/dist/content/components/canvas/Tabs/index.tsx +7 -7
  143. package/dist/content/components/canvas/Tabs/style-utils.ts +12 -11
  144. package/dist/content/components/canvas/Tabs/tabs.tsx +44 -42
  145. package/dist/content/components/canvas/Testimonial/default-variant.tsx +7 -7
  146. package/dist/content/components/canvas/Testimonial/index.tsx +2 -2
  147. package/dist/content/components/canvas/Testimonial/testimonial.tsx +11 -13
  148. package/dist/content/components/canvas/Testimonial/with-large-avatar-variant.tsx +7 -7
  149. package/dist/content/components/canvas/Testimonial/with-overlapping-image-variant.tsx +7 -7
  150. package/dist/content/components/canvas/Text/index.tsx +2 -3
  151. package/dist/content/components/canvas/Text/text.tsx +21 -15
  152. package/dist/content/components/canvas/ThemeSwitcher/index.tsx +2 -2
  153. package/dist/content/components/canvas/ThemeSwitcher/theme-switcher.tsx +6 -3
  154. package/dist/content/components/canvas/Video/index.tsx +2 -3
  155. package/dist/content/components/canvas/Video/placeholder.tsx +1 -1
  156. package/dist/content/components/canvas/Video/video.tsx +8 -5
  157. package/dist/content/components/ui/Banner/banner.tsx +47 -0
  158. package/dist/content/components/ui/Banner/index.tsx +29 -0
  159. package/dist/content/components/{canvas → ui}/Banner/style-utils.ts +1 -2
  160. package/dist/content/components/ui/Carousel/index.ts +2 -2
  161. package/dist/content/components/ui/ComponentEmptyPlaceholder/component-empty-placeholder.tsx +13 -0
  162. package/dist/content/components/ui/ComponentEmptyPlaceholder/index.ts +6 -0
  163. package/dist/content/components/ui/Flex/flex.tsx +2 -0
  164. package/dist/content/components/ui/Flex/index.ts +2 -0
  165. package/dist/content/components/ui/FlexItem/index.ts +1 -1
  166. package/dist/content/components/ui/Footer/index.ts +4 -3
  167. package/dist/content/components/ui/Grid/grid.tsx +2 -0
  168. package/dist/content/components/ui/Grid/index.ts +3 -0
  169. package/dist/content/components/ui/GridItem/grid-item.tsx +10 -1
  170. package/dist/content/components/ui/GridItem/index.ts +3 -0
  171. package/dist/content/components/ui/IconLabel/icon-label.tsx +2 -0
  172. package/dist/content/components/ui/IconLabel/index.ts +1 -0
  173. package/dist/content/components/ui/InlineSVG/index.ts +3 -1
  174. package/dist/content/components/ui/InlineSVG/inline-svg.tsx +14 -3
  175. package/dist/content/components/ui/InlineSVG/utils.ts +66 -11
  176. package/dist/content/components/ui/Rating/index.tsx +1 -1
  177. package/dist/content/components/ui/Rating/rating.tsx +1 -1
  178. package/dist/content/types/cskTypes.ts +32 -9
  179. package/dist/content/utils/assets.ts +3 -18
  180. package/dist/content/utils/createComponentResolver.ts +7 -6
  181. package/dist/content/utils/createEmptyPlaceholderResolver.tsx +4 -8
  182. package/dist/content/utils/getSlotComponents.ts +15 -0
  183. package/dist/content/utils/routing.ts +60 -15
  184. package/dist/content/utils/useCookiesConsent.ts +17 -0
  185. package/dist/content/utils/withFlattenParameters.tsx +17 -0
  186. package/dist/content/utils/withSlotsDataValue.tsx +34 -0
  187. package/dist/cookie-consent-5QJUCW2K.mjs +1 -0
  188. package/dist/countdown-FRQZMVKW.mjs +1 -0
  189. package/dist/image-gallery-HWCMTJL3.mjs +1 -0
  190. package/dist/{index-D5cLtaIv.d.mts → index-CSSWgmI5.d.mts} +54 -28
  191. package/dist/index-CrBZatTs.d.mts +18 -0
  192. package/dist/index.mjs +3 -3
  193. package/dist/mobile-KBYNJEBM.mjs +1 -0
  194. package/dist/modal-4TVVGHWS.mjs +1 -0
  195. package/dist/modal-E5RMA4EO.mjs +1 -0
  196. package/dist/navigation-flyout-client-WUN4A34X.mjs +1 -0
  197. package/dist/navigation-group-client-Y72BOPIH.mjs +1 -0
  198. package/dist/parameters-B8w5Q6Pp.d.mts +29 -0
  199. package/dist/tabs-VMFTATOP.mjs +1 -0
  200. package/dist/theme-switcher-QTX46Z7E.mjs +1 -0
  201. package/dist/theme-switcher-RGY4D3KL.mjs +1 -0
  202. package/dist/types/cskTypes.d.mts +27 -9
  203. package/dist/utils/assets.d.mts +8 -17
  204. package/dist/utils/assets.mjs +1 -1
  205. package/dist/utils/createComponentResolver.d.mts +3 -9
  206. package/dist/utils/createComponentResolver.mjs +1 -1
  207. package/dist/utils/createEmptyPlaceholderResolver.d.mts +4 -2
  208. package/dist/utils/createEmptyPlaceholderResolver.mjs +1 -1
  209. package/dist/utils/getSlotComponents.d.mts +11 -0
  210. package/dist/utils/getSlotComponents.mjs +1 -0
  211. package/dist/utils/routing.d.mts +20 -7
  212. package/dist/utils/routing.mjs +1 -1
  213. package/dist/utils/sitemap.mjs +1 -1
  214. package/dist/utils/styling.d.mts +3 -0
  215. package/dist/utils/styling.mjs +1 -1
  216. package/dist/utils/withFlattenParameters.d.mts +10 -0
  217. package/dist/utils/withFlattenParameters.mjs +1 -0
  218. package/dist/utils/withSlotsDataValue.d.mts +12 -0
  219. package/dist/utils/withSlotsDataValue.mjs +1 -0
  220. package/dist/video-VG6ZQCKN.mjs +1 -0
  221. package/package.json +43 -14
  222. package/dist/ThemeSwitcher-6Q7LCO4Q.mjs +0 -1
  223. package/dist/accordion-item-QAVKQEB2.mjs +0 -1
  224. package/dist/accordion-item-Y4PSNOH4.mjs +0 -1
  225. package/dist/banner-EYII7V7X.mjs +0 -1
  226. package/dist/carousel-RZ2DV6QX.mjs +0 -1
  227. package/dist/carousel-YELQRJVB.mjs +0 -1
  228. package/dist/chunk-2UV7TQNF.mjs +0 -1
  229. package/dist/chunk-2YTACEBA.mjs +0 -1
  230. package/dist/chunk-56OQGKRM.mjs +0 -1
  231. package/dist/chunk-ABORGLS6.mjs +0 -2
  232. package/dist/chunk-B2O55EVA.mjs +0 -1
  233. package/dist/chunk-EOV2LPGC.mjs +0 -1
  234. package/dist/chunk-EUVKAE6M.mjs +0 -1
  235. package/dist/chunk-FIN5US3Q.mjs +0 -1
  236. package/dist/chunk-LZOK42EM.mjs +0 -1
  237. package/dist/chunk-MSXDLSXH.mjs +0 -1
  238. package/dist/chunk-RX4IAAQQ.mjs +0 -1
  239. package/dist/chunk-RYEXR67P.mjs +0 -1
  240. package/dist/chunk-TCQTXNKT.mjs +0 -1
  241. package/dist/chunk-TFA6HYP4.mjs +0 -7
  242. package/dist/chunk-VW2XC3SE.mjs +0 -1
  243. package/dist/chunk-YEKQJ4YC.mjs +0 -1
  244. package/dist/content/components/canvas/Banner/types.ts +0 -21
  245. package/dist/countdown-LYDXJLEE.mjs +0 -1
  246. package/dist/image-gallery-AMU6FS7N.mjs +0 -1
  247. package/dist/mobile-JGZBHQC2.mjs +0 -1
  248. package/dist/modal-43IHAVWB.mjs +0 -1
  249. package/dist/modal-5FNTFSTN.mjs +0 -1
  250. package/dist/navigation-flyout-EPIOXRWJ.mjs +0 -1
  251. package/dist/navigation-group-OCZ35QI2.mjs +0 -1
  252. package/dist/tabs-J23TEEQ7.mjs +0 -1
  253. package/dist/theme-switcher-76F2V343.mjs +0 -1
  254. package/dist/theme-switcher-WO5JIV2W.mjs +0 -1
  255. package/dist/video-RC2QHJS2.mjs +0 -1
  256. /package/dist/content/components/{canvas → ui}/Banner/close-button.tsx +0 -0
@@ -1,5 +1,5 @@
1
- import { ComponentProps } from '@uniformdev/canvas-next-rsc/component';
2
1
  import { ContainerParameters } from '@/components/canvas/Container/parameters';
2
+ import { ComponentProps } from '@/types/cskTypes';
3
3
 
4
4
  export enum TestimonialVariants {
5
5
  WithLargeAvatar = 'withLargeAvatar',
@@ -17,5 +17,5 @@ export enum TestimonialSlots {
17
17
 
18
18
  export type TestimonialProps = ComponentProps<TestimonialParameters, TestimonialSlots>;
19
19
 
20
- export { Testimonial as default } from './testimonial';
20
+ export { default } from './testimonial';
21
21
  export { TestimonialEmptyPlaceholder } from './empty-placeholder';
@@ -1,34 +1,30 @@
1
1
  import { FC } from 'react';
2
- import { UniformSlot } from '@uniformdev/canvas-next-rsc/component';
3
- import { TestimonialVariants, TestimonialProps } from '.';
2
+ import { UniformSlot } from '@uniformdev/next-app-router/component';
3
+ import { withFlattenParameters } from '@/utils/withFlattenParameters';
4
+ import { TestimonialVariants, TestimonialProps, TestimonialParameters } from '.';
4
5
  import { DefaultVariant } from './default-variant';
5
6
  import { WithLargeAvatarVariant } from './with-large-avatar-variant';
6
7
  import { WithOverlappingImageVariant } from './with-overlapping-image-variant';
7
8
 
8
- export const Testimonial: FC<TestimonialProps> = ({
9
- context,
10
- component,
9
+ const Testimonial: FC<TestimonialProps & TestimonialParameters> = ({
11
10
  slots,
12
11
  backgroundColor,
13
12
  spacing,
14
13
  border,
15
14
  fluidContent,
16
15
  height,
16
+ variant,
17
17
  }) => {
18
- const variant = component.variant as TestimonialVariants | undefined;
19
-
20
18
  const variantProps = {
21
19
  backgroundColor,
22
20
  spacing,
23
21
  border,
24
22
  fluidContent,
25
23
  height,
26
- testimonialPrimaryImage: <UniformSlot context={context} data={component} slot={slots.testimonialPrimaryImage} />,
27
- testimonialContent: <UniformSlot context={context} data={component} slot={slots.testimonialContent} />,
28
- testimonialAuthor: <UniformSlot context={context} data={component} slot={slots.testimonialAuthor} />,
29
- testimonialSecondaryImage: (
30
- <UniformSlot context={context} data={component} slot={slots.testimonialSecondaryImage} />
31
- ),
24
+ testimonialPrimaryImage: <UniformSlot slot={slots.testimonialPrimaryImage} />,
25
+ testimonialContent: <UniformSlot slot={slots.testimonialContent} />,
26
+ testimonialAuthor: <UniformSlot slot={slots.testimonialAuthor} />,
27
+ testimonialSecondaryImage: <UniformSlot slot={slots.testimonialSecondaryImage} />,
32
28
  };
33
29
 
34
30
  switch (variant) {
@@ -42,3 +38,5 @@ export const Testimonial: FC<TestimonialProps> = ({
42
38
  return <DefaultVariant {...variantProps} />;
43
39
  }
44
40
  };
41
+
42
+ export default withFlattenParameters(Testimonial);
@@ -1,15 +1,15 @@
1
- import { FC } from 'react';
1
+ import { FC, ReactNode } from 'react';
2
2
  import Container from '@/components/ui/Container';
3
- import { TestimonialProps } from '.';
3
+ import { TestimonialParameters } from '.';
4
4
 
5
5
  type WithLargeAvatarVariantProps = Pick<
6
- TestimonialProps,
6
+ TestimonialParameters,
7
7
  'backgroundColor' | 'spacing' | 'border' | 'fluidContent' | 'height'
8
8
  > & {
9
- testimonialPrimaryImage: React.ReactNode;
10
- testimonialContent: React.ReactNode;
11
- testimonialAuthor: React.ReactNode;
12
- testimonialSecondaryImage: React.ReactNode;
9
+ testimonialPrimaryImage: ReactNode;
10
+ testimonialContent: ReactNode;
11
+ testimonialAuthor: ReactNode;
12
+ testimonialSecondaryImage: ReactNode;
13
13
  };
14
14
 
15
15
  export const WithLargeAvatarVariant: FC<WithLargeAvatarVariantProps> = ({
@@ -1,15 +1,15 @@
1
- import { FC } from 'react';
1
+ import { FC, ReactNode } from 'react';
2
2
  import Container from '@/components/ui/Container';
3
- import { TestimonialProps } from '.';
3
+ import { TestimonialParameters } from '.';
4
4
 
5
5
  type WithLargeAvatarVariantProps = Pick<
6
- TestimonialProps,
6
+ TestimonialParameters,
7
7
  'backgroundColor' | 'spacing' | 'border' | 'fluidContent' | 'height'
8
8
  > & {
9
- testimonialPrimaryImage: React.ReactNode;
10
- testimonialContent: React.ReactNode;
11
- testimonialAuthor: React.ReactNode;
12
- testimonialSecondaryImage: React.ReactNode;
9
+ testimonialPrimaryImage: ReactNode;
10
+ testimonialContent: ReactNode;
11
+ testimonialAuthor: ReactNode;
12
+ testimonialSecondaryImage: ReactNode;
13
13
  };
14
14
 
15
15
  export const WithOverlappingImageVariant: FC<WithLargeAvatarVariantProps> = ({
@@ -1,8 +1,7 @@
1
- import { ComponentProps } from '@uniformdev/canvas-next-rsc/component';
1
+ import { ComponentProps } from '@/types/cskTypes';
2
2
  import { TextParameters } from './parameters';
3
- import { Text } from './text';
4
3
 
5
4
  export type TextProps = ComponentProps<TextParameters>;
6
5
 
7
6
  export { type TextParameters } from './parameters';
8
- export default Text;
7
+ export { default } from './text';
@@ -1,9 +1,10 @@
1
1
  import { FC } from 'react';
2
- import { UniformText } from '@uniformdev/canvas-next-rsc/component';
2
+ import { UniformText, ComponentParameter } from '@uniformdev/next-app-router/component';
3
3
  import BaseText from '@/components/ui/Text';
4
- import { TextProps } from '.';
4
+ import { withFlattenParameters } from '@/utils/withFlattenParameters';
5
+ import { TextParameters, TextProps } from '.';
5
6
 
6
- export const Text: FC<TextProps> = ({
7
+ const Text: FC<TextProps & TextParameters> = ({
7
8
  tag,
8
9
  size,
9
10
  color,
@@ -15,15 +16,20 @@ export const Text: FC<TextProps> = ({
15
16
  lineCountRestrictions,
16
17
  alignment,
17
18
  component,
18
- context,
19
- }) => (
20
- <BaseText {...{ color, size, font, weight, transform, decoration, letterSpacing, alignment, lineCountRestrictions }}>
21
- <UniformText
22
- placeholder="Text goes here"
23
- parameterId="text"
24
- as={tag || undefined}
25
- component={component}
26
- context={context}
27
- />
28
- </BaseText>
29
- );
19
+ parameters,
20
+ }) => {
21
+ return (
22
+ <BaseText
23
+ {...{ color, size, font, weight, transform, decoration, letterSpacing, alignment, lineCountRestrictions }}
24
+ >
25
+ <UniformText
26
+ placeholder="Text goes here"
27
+ parameter={parameters.text as ComponentParameter<string>}
28
+ as={tag || undefined}
29
+ component={component}
30
+ />
31
+ </BaseText>
32
+ );
33
+ };
34
+
35
+ export default withFlattenParameters(Text);
@@ -1,5 +1,5 @@
1
1
  import dynamic from 'next/dynamic';
2
- import { ComponentProps } from '@uniformdev/canvas-next-rsc/component';
2
+ import { ComponentProps } from '@/types/cskTypes';
3
3
 
4
4
  export type ThemeSwitcherParameters = {
5
5
  iconColor?: string;
@@ -7,4 +7,4 @@ export type ThemeSwitcherParameters = {
7
7
 
8
8
  export type ThemeSwitcherProps = ComponentProps<ThemeSwitcherParameters>;
9
9
 
10
- export default dynamic(() => import('./theme-switcher').then(mod => mod.ThemeSwitcher));
10
+ export default dynamic(() => import('./theme-switcher').then(mod => mod.default));
@@ -2,14 +2,15 @@
2
2
 
3
3
  import { FC } from 'react';
4
4
  import dynamic from 'next/dynamic';
5
- import { useUniformContext } from '@uniformdev/canvas-next-rsc/component';
6
- import { ThemeSwitcherProps } from '.';
5
+ import { useUniformContext } from '@uniformdev/next-app-router/component';
6
+ import { withFlattenParameters } from '@/utils/withFlattenParameters';
7
+ import { ThemeSwitcherParameters, ThemeSwitcherProps } from '.';
7
8
 
8
9
  const BaseThemeSwitcher = dynamic(() => import('@/components/ui/ThemeSwitcher').then(mod => mod.default), {
9
10
  ssr: false,
10
11
  });
11
12
 
12
- export const ThemeSwitcher: FC<ThemeSwitcherProps> = ({ iconColor }) => {
13
+ export const ThemeSwitcher: FC<ThemeSwitcherProps & ThemeSwitcherParameters> = ({ iconColor }) => {
13
14
  const { context } = useUniformContext();
14
15
 
15
16
  const onChangeTheme = (theme: string) => {
@@ -22,3 +23,5 @@ export const ThemeSwitcher: FC<ThemeSwitcherProps> = ({ iconColor }) => {
22
23
 
23
24
  return <BaseThemeSwitcher iconColor={iconColor} onChange={onChangeTheme} />;
24
25
  };
26
+
27
+ export default withFlattenParameters(ThemeSwitcher);
@@ -1,6 +1,5 @@
1
1
  import { AssetParamValue } from '@uniformdev/assets';
2
- import { ComponentProps } from '@uniformdev/canvas-next-rsc/component';
3
- import { ViewPort } from '@/types/cskTypes';
2
+ import { ComponentProps, ViewPort } from '@/types/cskTypes';
4
3
 
5
4
  export type VideoParameters = {
6
5
  video?: AssetParamValue;
@@ -17,4 +16,4 @@ export type VideoParameters = {
17
16
 
18
17
  export type VideoProps = ComponentProps<VideoParameters>;
19
18
 
20
- export { Video as default } from './video';
19
+ export { default } from './video';
@@ -5,7 +5,7 @@ import { VideoProps } from '.';
5
5
  type VideoPlaceholderProps = Pick<VideoProps, 'component' | 'context'>;
6
6
 
7
7
  export const VideoPlaceholder: FC<VideoPlaceholderProps> = ({ context, component }) => {
8
- const isEditorPreviewMode = context.previewMode === 'editor' && context.isContextualEditing;
8
+ const isEditorPreviewMode = context.isContextualEditing;
9
9
  const isPlaceholder = component?._id?.includes('placeholder_');
10
10
 
11
11
  if (!isEditorPreviewMode || isPlaceholder) {
@@ -2,11 +2,12 @@
2
2
 
3
3
  import { FC } from 'react';
4
4
  import BaseVideo from '@/components/ui/Video';
5
- import { resolveAsset } from '@/utils/assets';
6
- import { VideoProps } from '.';
5
+ import { ReplaceFieldsWithAssets } from '@/types/cskTypes';
6
+ import { withFlattenParameters } from '@/utils/withFlattenParameters';
7
+ import { VideoParameters, VideoProps } from '.';
7
8
  import { VideoPlaceholder } from './placeholder';
8
9
 
9
- export const Video: FC<VideoProps> = ({
10
+ const Video: FC<VideoProps & ReplaceFieldsWithAssets<VideoParameters, 'video' | 'placeholderImage'>> = ({
10
11
  video,
11
12
  placeholderImage,
12
13
  autoPlay,
@@ -20,8 +21,8 @@ export const Video: FC<VideoProps> = ({
20
21
  component,
21
22
  context,
22
23
  }) => {
23
- const [resolvedVideo] = resolveAsset(video);
24
- const [resolvedImage] = resolveAsset(placeholderImage);
24
+ const [resolvedVideo] = video || [];
25
+ const [resolvedImage] = placeholderImage || [];
25
26
 
26
27
  const resolvedVideoUrl = resolvedVideo?.url;
27
28
 
@@ -37,3 +38,5 @@ export const Video: FC<VideoProps> = ({
37
38
  />
38
39
  );
39
40
  };
41
+
42
+ export default withFlattenParameters(Video);
@@ -0,0 +1,47 @@
1
+ 'use client';
2
+
3
+ import { FC, useCallback, useState } from 'react';
4
+ import Container from '@/components/ui/Container';
5
+ import { cn } from '@/utils/styling';
6
+ import { ContentAlignment, BannerProps, BannerVariants } from '.';
7
+ import CloseButton from './close-button';
8
+ import { getContentClasses, getPositionClasses } from './style-utils';
9
+
10
+ const Banner: FC<BannerProps> = ({
11
+ backgroundColor,
12
+ spacing,
13
+ border,
14
+ fluidContent,
15
+ iconColor,
16
+ contentAlignment = ContentAlignment.Center,
17
+ floating = false,
18
+ children,
19
+ variant,
20
+ }) => {
21
+ const [isOpen, setIsOpen] = useState(true);
22
+
23
+ const handleClose = useCallback(() => {
24
+ setIsOpen(false);
25
+ }, []);
26
+
27
+ if (!isOpen) return null;
28
+
29
+ const positionClasses = getPositionClasses({ variant: variant as BannerVariants, floating });
30
+ const contentClasses = getContentClasses({ contentAlignment, iconColor, fluidContent, floating });
31
+
32
+ return (
33
+ <Container className={positionClasses} fluidContent={fluidContent} border={border}>
34
+ <Container
35
+ className={cn('relative w-full', contentClasses)}
36
+ backgroundColor={backgroundColor}
37
+ spacing={spacing}
38
+ fluidContent={fluidContent}
39
+ >
40
+ {children}
41
+ {iconColor && <CloseButton onClose={handleClose} iconColor={iconColor} />}
42
+ </Container>
43
+ </Container>
44
+ );
45
+ };
46
+
47
+ export default Banner;
@@ -0,0 +1,29 @@
1
+ import dynamic from 'next/dynamic';
2
+ import { ContainerProps } from '@/components/ui/Container';
3
+
4
+ export enum ContentAlignment {
5
+ Left = 'left',
6
+ Center = 'center',
7
+ Right = 'right',
8
+ }
9
+
10
+ export enum BannerVariants {
11
+ None = '',
12
+ Top = 'top',
13
+ Bottom = 'bottom',
14
+ }
15
+
16
+ export type BannerProps = ContainerProps & {
17
+ iconColor?: string;
18
+ contentAlignment?: ContentAlignment;
19
+ floating?: boolean;
20
+ variant?: BannerVariants;
21
+ };
22
+
23
+ export type PositionClassesProps = {
24
+ variant?: BannerVariants;
25
+ } & Pick<BannerProps, 'floating'>;
26
+
27
+ export type ContentClassesProps = Pick<BannerProps, 'floating' | 'iconColor' | 'fluidContent' | 'contentAlignment'>;
28
+
29
+ export default dynamic(() => import('./banner').then(mod => mod.default));
@@ -1,6 +1,5 @@
1
1
  import { cn } from '@/utils/styling';
2
- import { ContentAlignment } from '.';
3
- import { BannerVariants, ContentClassesProps, PositionClassesProps } from './types';
2
+ import { BannerVariants, ContentClassesProps, PositionClassesProps, ContentAlignment } from '.';
4
3
 
5
4
  export const getPositionClasses = ({ variant, floating }: PositionClassesProps) =>
6
5
  cn({
@@ -1,4 +1,4 @@
1
- import { ReactElement } from 'react';
1
+ import { CSSProperties, ReactElement } from 'react';
2
2
  import dynamic from 'next/dynamic';
3
3
  import { ContainerProps as BaseContainerProps } from '@/components/ui/Container';
4
4
 
@@ -7,7 +7,7 @@ export type CarouselProps = Pick<
7
7
  'title' | 'backgroundColor' | 'spacing' | 'border' | 'fluidContent' | 'height'
8
8
  > & {
9
9
  countOfItems?: number;
10
- children: (options: { className?: string; style?: React.CSSProperties }) => ReactElement;
10
+ children: (options: { className?: string; style?: CSSProperties }) => ReactElement;
11
11
  itemsPerPage?: string;
12
12
  gapX?: string;
13
13
  variant?: string;
@@ -0,0 +1,13 @@
1
+ import { FC } from 'react';
2
+ import { withFlattenParameters } from '@/utils/withFlattenParameters';
3
+ import { ComponentEmptyPlaceholderParameters, ComponentEmptyPlaceholderProps } from '.';
4
+
5
+ export const ComponentEmptyPlaceholder: FC<
6
+ ComponentEmptyPlaceholderProps & ComponentEmptyPlaceholderParameters
7
+ > = () => (
8
+ <div className="p-4 bg-white text-black rounded-md border border-black">
9
+ <p className="font-medium">Component not found</p>
10
+ </div>
11
+ );
12
+
13
+ export default withFlattenParameters(ComponentEmptyPlaceholder);
@@ -0,0 +1,6 @@
1
+ import { ComponentProps } from '@/types/cskTypes';
2
+
3
+ export type ComponentEmptyPlaceholderParameters = unknown;
4
+ export type ComponentEmptyPlaceholderProps = ComponentProps<ComponentEmptyPlaceholderParameters>;
5
+
6
+ export { ComponentEmptyPlaceholder as default } from './component-empty-placeholder';
@@ -16,6 +16,7 @@ export const Flex: FC<FlexProps> = ({
16
16
  fluidContent,
17
17
  height,
18
18
  children,
19
+ wrap,
19
20
  }) => (
20
21
  <BaseContainer {...{ backgroundColor, spacing, border, fluidContent, height, wrapperClassName }}>
21
22
  <div
@@ -27,6 +28,7 @@ export const Flex: FC<FlexProps> = ({
27
28
  [resolveViewPort(gap, 'gap-{value}')]: gap,
28
29
  [resolveViewPort(alignItems, 'items-{value}')]: alignItems,
29
30
  [resolveViewPort(height, 'h-{value}')]: height,
31
+ [resolveViewPort(wrap, 'flex-{value}')]: wrap,
30
32
  },
31
33
  className
32
34
  )}
@@ -4,6 +4,7 @@ import { ViewPort } from '@/types/cskTypes';
4
4
  type Direction = 'row' | 'row-reverse' | 'col' | 'col-reverse';
5
5
  type Justify = 'normal' | 'start' | 'end' | 'center' | 'between' | 'around' | 'evenly' | 'stretch';
6
6
  type Align = 'start' | 'end' | 'center' | 'baseline' | 'stretch';
7
+ type Wrap = 'nowrap' | 'wrap' | 'wrap-reverse';
7
8
 
8
9
  export type FlexProps = Pick<
9
10
  BaseContainerProps,
@@ -21,6 +22,7 @@ export type FlexProps = Pick<
21
22
  justifyContent?: Justify | ViewPort<Justify>;
22
23
  gap?: string | ViewPort<string>;
23
24
  alignItems?: Align | ViewPort<Align>;
25
+ wrap?: Wrap | ViewPort<Wrap>;
24
26
  };
25
27
 
26
28
  export { Flex as default } from './flex';
@@ -6,7 +6,7 @@ type AvailableShrink = '0' | '1';
6
6
 
7
7
  export type FlexItemProps = HTMLAttributes<HTMLDivElement> & {
8
8
  alignSelf?: AvailableAlignSelf | ViewPort<AvailableAlignSelf>;
9
- shrink: AvailableShrink;
9
+ shrink?: AvailableShrink;
10
10
  };
11
11
 
12
12
  export { FlexItem as default } from './flex-item';
@@ -1,9 +1,10 @@
1
+ import { ReactNode } from 'react';
1
2
  import { ContainerProps as BaseContainerProps } from '@/components/ui/Container';
2
3
 
3
4
  export type FooterProps = Omit<BaseContainerProps, 'height' | 'content'> & {
4
- logo?: React.ReactNode;
5
- copyright?: React.ReactNode;
6
- content?: React.ReactNode;
5
+ logo?: ReactNode;
6
+ copyright?: ReactNode;
7
+ content?: ReactNode;
7
8
  };
8
9
 
9
10
  export { Footer as default } from './footer';
@@ -14,6 +14,7 @@ export const Grid: FC<GridProps> = ({
14
14
  fluidContent,
15
15
  height,
16
16
  children,
17
+ alignItems,
17
18
  }) => (
18
19
  <BaseContainer {...{ backgroundColor, spacing, border, fluidContent, height }}>
19
20
  <div
@@ -24,6 +25,7 @@ export const Grid: FC<GridProps> = ({
24
25
  [resolveViewPort(gapX, 'gap-x-{value}')]: gapX,
25
26
  [resolveViewPort(gapY, 'gap-y-{value}')]: gapY,
26
27
  [resolveViewPort(height, 'h-{value}')]: height,
28
+ [resolveViewPort(alignItems, 'items-{value}')]: alignItems,
27
29
  },
28
30
  className
29
31
  )}
@@ -1,6 +1,8 @@
1
1
  import { ContainerProps as BaseContainerProps } from '@/components/ui/Container';
2
2
  import { ViewPort } from '@/types/cskTypes';
3
3
 
4
+ type Align = 'start' | 'end' | 'center' | 'baseline' | 'stretch';
5
+
4
6
  export type GridProps = Pick<
5
7
  BaseContainerProps,
6
8
  'title' | 'backgroundColor' | 'spacing' | 'border' | 'fluidContent' | 'children' | 'height'
@@ -8,6 +10,7 @@ export type GridProps = Pick<
8
10
  columnsCount?: string | ViewPort<string>;
9
11
  gapY?: string | ViewPort<string>;
10
12
  gapX?: string | ViewPort<string>;
13
+ alignItems?: Align | ViewPort<Align>;
11
14
  className?: string;
12
15
  };
13
16
 
@@ -2,7 +2,15 @@ import { FC } from 'react';
2
2
  import { cn, resolveViewPort } from '@/utils/styling';
3
3
  import { GridItemProps } from '.';
4
4
 
5
- export const GridItem: FC<GridItemProps> = ({ className, columnStart, columnSpan, rowStart, rowSpan, children }) => (
5
+ export const GridItem: FC<GridItemProps> = ({
6
+ className,
7
+ columnStart,
8
+ columnSpan,
9
+ rowStart,
10
+ rowSpan,
11
+ children,
12
+ alignSelf,
13
+ }) => (
6
14
  <div
7
15
  className={cn(
8
16
  {
@@ -10,6 +18,7 @@ export const GridItem: FC<GridItemProps> = ({ className, columnStart, columnSpan
10
18
  [resolveViewPort(columnSpan, 'col-{value}')]: columnSpan,
11
19
  [resolveViewPort(rowStart, 'row-start-{value}')]: rowStart,
12
20
  [resolveViewPort(rowSpan, 'row-{value}')]: rowSpan,
21
+ [resolveViewPort(alignSelf, 'self-{value}')]: alignSelf,
13
22
  },
14
23
  className
15
24
  )}
@@ -1,12 +1,15 @@
1
1
  import { HTMLAttributes } from 'react';
2
2
  import { ViewPort } from '@/types/cskTypes';
3
3
 
4
+ type Align = 'start' | 'end' | 'center' | 'baseline' | 'stretch';
5
+
4
6
  export type GridItemProps = HTMLAttributes<HTMLDivElement> & {
5
7
  columnStart?: string | ViewPort<string>;
6
8
  columnSpan?: string | ViewPort<string>;
7
9
  rowStart?: string | ViewPort<string>;
8
10
  rowSpan?: string | ViewPort<string>;
9
11
  className?: string;
12
+ alignSelf?: Align | ViewPort<Align>;
10
13
  };
11
14
 
12
15
  export { GridItem as default } from './grid-item';
@@ -18,6 +18,7 @@ export const IconLabel: FC<IconLabelProps> = ({
18
18
  textClassName,
19
19
  iconClassName,
20
20
  className,
21
+ iconPosition,
21
22
  }) => (
22
23
  <div
23
24
  className={cn(
@@ -25,6 +26,7 @@ export const IconLabel: FC<IconLabelProps> = ({
25
26
  {
26
27
  [`text-${size}`]: !!size,
27
28
  [`text-${color}`]: !!color,
29
+ 'flex-row-reverse': icon && iconPosition === 'right',
28
30
  },
29
31
  className
30
32
  )}
@@ -17,6 +17,7 @@ export type IconLabelProps = {
17
17
  transform?: BaseTextProps['transform'];
18
18
  decoration?: BaseTextProps['decoration'];
19
19
  letterSpacing?: BaseTextProps['letterSpacing'];
20
+ iconPosition?: 'left' | 'right';
20
21
  lineCountRestrictions?: string;
21
22
  };
22
23
 
@@ -1,3 +1,5 @@
1
+ import { ReactNode } from 'react';
2
+
1
3
  export type InlineSVGProps = {
2
4
  src: string;
3
5
  className?: string;
@@ -5,7 +7,7 @@ export type InlineSVGProps = {
5
7
  width?: number;
6
8
  height?: number;
7
9
  sanitize?: boolean;
8
- fallback?: React.ReactNode;
10
+ fallback?: ReactNode;
9
11
  useCurrentColor?: boolean;
10
12
  alt?: string;
11
13
  };
@@ -1,7 +1,15 @@
1
+ /* eslint-disable react-hooks/error-boundaries */
1
2
  import { FC, SVGProps } from 'react';
2
3
  import { cn } from '@/utils/styling';
3
4
  import { InlineSVGProps } from '.';
4
- import { fetchSvg, sanitizeSvg, applyCurrentColor, getSvgAttributes, getSvgInnerContent } from './utils';
5
+ import {
6
+ fetchSvg,
7
+ sanitizeSvg,
8
+ applyCurrentColor,
9
+ getSvgAttributes,
10
+ getSvgInnerContent,
11
+ convertSvgAttributesToReactProps,
12
+ } from './utils';
5
13
 
6
14
  export const InlineSVG: FC<InlineSVGProps> = async ({
7
15
  src,
@@ -31,13 +39,16 @@ export const InlineSVG: FC<InlineSVGProps> = async ({
31
39
  const attrs = getSvgAttributes(cleaned);
32
40
  const content = getSvgInnerContent(cleaned);
33
41
 
42
+ const reactProps = convertSvgAttributesToReactProps(attrs);
43
+
34
44
  const svgProps: SVGProps<SVGSVGElement> = {
35
- ...attrs,
45
+ ...reactProps,
36
46
  role: 'img',
37
47
  'aria-label': alt,
48
+ focusable: false,
38
49
  width: fill ? '100%' : width,
39
50
  height: fill ? '100%' : height,
40
- className: cn(attrs.className, className, {
51
+ className: cn(reactProps.className, className, {
41
52
  'absolute inset-0': fill,
42
53
  }),
43
54
  };