@brilo/base-blocks 0.1.1 → 0.1.3

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 (250) hide show
  1. package/build/blocks/form/form-group/edit.d.ts.map +1 -1
  2. package/build/blocks/form/form-group/edit.js +17 -3
  3. package/build/blocks/form/form-group/factory.d.ts.map +1 -1
  4. package/build/blocks/form/form-group/factory.js +1 -0
  5. package/build/blocks/form/form-group/types.d.ts +1 -0
  6. package/build/blocks/form/form-group/types.d.ts.map +1 -1
  7. package/package.json +3 -2
  8. package/src/blocks/column/column-group/edit.tsx +56 -0
  9. package/src/blocks/column/column-group/editor.scss +7 -0
  10. package/src/blocks/column/column-group/factory.tsx +29 -0
  11. package/src/blocks/column/column-group/index.ts +14 -0
  12. package/src/blocks/column/column-group/types.ts +8 -0
  13. package/src/blocks/column/column-item/constants.ts +1 -0
  14. package/src/blocks/column/column-item/edit.tsx +48 -0
  15. package/src/blocks/column/column-item/editor.scss +34 -0
  16. package/src/blocks/column/column-item/factory.tsx +25 -0
  17. package/src/blocks/column/column-item/index.ts +10 -0
  18. package/src/blocks/column/column-item/types.ts +7 -0
  19. package/src/blocks/compare/compare-group/constants.ts +1 -0
  20. package/src/blocks/compare/compare-group/edit.tsx +52 -0
  21. package/src/blocks/compare/compare-group/factory.tsx +29 -0
  22. package/src/blocks/compare/compare-group/icon.tsx +7 -0
  23. package/src/blocks/compare/compare-group/index.ts +13 -0
  24. package/src/blocks/compare/compare-group/types.ts +12 -0
  25. package/src/blocks/compare/compare-item/edit.tsx +38 -0
  26. package/src/blocks/compare/compare-item/editor.scss +15 -0
  27. package/src/blocks/compare/compare-item/factory.tsx +28 -0
  28. package/src/blocks/compare/compare-item/icon.tsx +9 -0
  29. package/src/blocks/compare/compare-item/index.ts +13 -0
  30. package/src/blocks/compare/compare-item/types.ts +9 -0
  31. package/src/blocks/compare/compare-option/constants.ts +7 -0
  32. package/src/blocks/compare/compare-option/edit.tsx +64 -0
  33. package/src/blocks/compare/compare-option/editor.scss +26 -0
  34. package/src/blocks/compare/compare-option/factory.tsx +35 -0
  35. package/src/blocks/compare/compare-option/icon.tsx +7 -0
  36. package/src/blocks/compare/compare-option/index.ts +8 -0
  37. package/src/blocks/compare/compare-option/types.ts +12 -0
  38. package/src/blocks/contact/contact-group/constants.ts +3 -0
  39. package/src/blocks/contact/contact-group/edit.tsx +57 -0
  40. package/src/blocks/contact/contact-group/editor.scss +20 -0
  41. package/src/blocks/contact/contact-group/factory.tsx +35 -0
  42. package/src/blocks/contact/contact-group/index.ts +12 -0
  43. package/src/blocks/contact/contact-group/types.ts +12 -0
  44. package/src/blocks/contact/contact-item/constants.ts +17 -0
  45. package/src/blocks/contact/contact-item/edit.tsx +93 -0
  46. package/src/blocks/contact/contact-item/editor.scss +38 -0
  47. package/src/blocks/contact/contact-item/factory.tsx +35 -0
  48. package/src/blocks/contact/contact-item/index.ts +23 -0
  49. package/src/blocks/contact/contact-item/types.ts +21 -0
  50. package/src/blocks/core/basic-button/constants.ts +17 -0
  51. package/src/blocks/core/basic-button/edit.tsx +107 -0
  52. package/src/blocks/core/basic-button/editor.scss +80 -0
  53. package/src/blocks/core/basic-button/factory.tsx +54 -0
  54. package/src/blocks/core/basic-button/index.ts +8 -0
  55. package/src/blocks/core/basic-button/types.ts +29 -0
  56. package/src/blocks/core/basic-heading/constants.ts +1 -0
  57. package/src/blocks/core/basic-heading/edit.tsx +76 -0
  58. package/src/blocks/core/basic-heading/editor.scss +8 -0
  59. package/src/blocks/core/basic-heading/factory.tsx +40 -0
  60. package/src/blocks/core/basic-heading/index.ts +8 -0
  61. package/src/blocks/core/basic-heading/types.ts +20 -0
  62. package/src/blocks/core/basic-overline/edit.tsx +28 -0
  63. package/src/blocks/core/basic-overline/editor.scss +14 -0
  64. package/src/blocks/core/basic-overline/factory.tsx +22 -0
  65. package/src/blocks/core/basic-overline/index.ts +8 -0
  66. package/src/blocks/core/basic-overline/types.ts +7 -0
  67. package/src/blocks/faq/faq-group/constants.ts +11 -0
  68. package/src/blocks/faq/faq-group/edit.tsx +55 -0
  69. package/src/blocks/faq/faq-group/editor.scss +11 -0
  70. package/src/blocks/faq/faq-group/factory.tsx +39 -0
  71. package/src/blocks/faq/faq-group/index.ts +11 -0
  72. package/src/blocks/faq/faq-group/types.ts +14 -0
  73. package/src/blocks/faq/faq-item/edit.tsx +50 -0
  74. package/src/blocks/faq/faq-item/editor.scss +57 -0
  75. package/src/blocks/faq/faq-item/factory.tsx +24 -0
  76. package/src/blocks/faq/faq-item/index.ts +9 -0
  77. package/src/blocks/faq/faq-item/types.ts +7 -0
  78. package/src/blocks/form/form-field/constants.ts +14 -0
  79. package/src/blocks/form/form-field/edit.tsx +178 -0
  80. package/src/blocks/form/form-field/editor.scss +71 -0
  81. package/src/blocks/form/form-field/factory.tsx +32 -0
  82. package/src/blocks/form/form-field/index.ts +10 -0
  83. package/src/blocks/form/form-field/types.ts +18 -0
  84. package/src/blocks/form/form-group/constants.ts +16 -0
  85. package/src/blocks/form/form-group/edit.tsx +214 -0
  86. package/src/blocks/form/form-group/editor.scss +41 -0
  87. package/src/blocks/form/form-group/factory.tsx +36 -0
  88. package/src/blocks/form/form-group/index.ts +18 -0
  89. package/src/blocks/form/form-group/types.ts +23 -0
  90. package/src/blocks/groups/banner-group/constants.ts +15 -0
  91. package/src/blocks/groups/banner-group/edit.tsx +122 -0
  92. package/src/blocks/groups/banner-group/editor.scss +18 -0
  93. package/src/blocks/groups/banner-group/factory.tsx +64 -0
  94. package/src/blocks/groups/banner-group/icon.tsx +13 -0
  95. package/src/blocks/groups/banner-group/index.ts +11 -0
  96. package/src/blocks/groups/banner-group/types.ts +30 -0
  97. package/src/blocks/groups/basic-header-group/constants.ts +9 -0
  98. package/src/blocks/groups/basic-header-group/edit.tsx +99 -0
  99. package/src/blocks/groups/basic-header-group/editor.scss +35 -0
  100. package/src/blocks/groups/basic-header-group/factory.tsx +46 -0
  101. package/src/blocks/groups/basic-header-group/icon.tsx +17 -0
  102. package/src/blocks/groups/basic-header-group/index.ts +9 -0
  103. package/src/blocks/groups/basic-header-group/types.ts +27 -0
  104. package/src/blocks/groups/button-group/constants.ts +7 -0
  105. package/src/blocks/groups/button-group/edit.tsx +52 -0
  106. package/src/blocks/groups/button-group/editor.scss +23 -0
  107. package/src/blocks/groups/button-group/factory.tsx +34 -0
  108. package/src/blocks/groups/button-group/index.ts +11 -0
  109. package/src/blocks/groups/button-group/types.ts +12 -0
  110. package/src/blocks/groups/text-and-media-group/constants.ts +43 -0
  111. package/src/blocks/groups/text-and-media-group/edit.tsx +241 -0
  112. package/src/blocks/groups/text-and-media-group/editor.scss +123 -0
  113. package/src/blocks/groups/text-and-media-group/factory.tsx +100 -0
  114. package/src/blocks/groups/text-and-media-group/icon.tsx +37 -0
  115. package/src/blocks/groups/text-and-media-group/index.ts +18 -0
  116. package/src/blocks/groups/text-and-media-group/types.ts +60 -0
  117. package/src/blocks/hero/hero-group/constants.ts +23 -0
  118. package/src/blocks/hero/hero-group/edit.tsx +85 -0
  119. package/src/blocks/hero/hero-group/editor.scss +0 -0
  120. package/src/blocks/hero/hero-group/factory.tsx +45 -0
  121. package/src/blocks/hero/hero-group/icon.tsx +28 -0
  122. package/src/blocks/hero/hero-group/index.ts +11 -0
  123. package/src/blocks/hero/hero-group/types.ts +22 -0
  124. package/src/blocks/hero/hero-item/constants.ts +15 -0
  125. package/src/blocks/hero/hero-item/edit.tsx +107 -0
  126. package/src/blocks/hero/hero-item/editor.scss +87 -0
  127. package/src/blocks/hero/hero-item/factory.tsx +49 -0
  128. package/src/blocks/hero/hero-item/index.ts +10 -0
  129. package/src/blocks/hero/hero-item/types.ts +38 -0
  130. package/src/blocks/map/map-group/constants.ts +20 -0
  131. package/src/blocks/map/map-group/edit.tsx +108 -0
  132. package/src/blocks/map/map-group/editor.scss +24 -0
  133. package/src/blocks/map/map-group/factory.tsx +51 -0
  134. package/src/blocks/map/map-group/index.ts +9 -0
  135. package/src/blocks/map/map-group/types.ts +16 -0
  136. package/src/blocks/newsletter/newsletter-form/constants.ts +5 -0
  137. package/src/blocks/newsletter/newsletter-form/edit.tsx +194 -0
  138. package/src/blocks/newsletter/newsletter-form/editor.scss +68 -0
  139. package/src/blocks/newsletter/newsletter-form/factory.tsx +59 -0
  140. package/src/blocks/newsletter/newsletter-form/index.ts +11 -0
  141. package/src/blocks/newsletter/newsletter-form/types.ts +45 -0
  142. package/src/blocks/post/post-slider-group/constants.ts +3 -0
  143. package/src/blocks/post/post-slider-group/edit.tsx +76 -0
  144. package/src/blocks/post/post-slider-group/factory.tsx +43 -0
  145. package/src/blocks/post/post-slider-group/icon.tsx +13 -0
  146. package/src/blocks/post/post-slider-group/index.ts +9 -0
  147. package/src/blocks/post/post-slider-group/types.ts +20 -0
  148. package/src/blocks/responsive-grid/responsive-grid-group/edit.tsx +95 -0
  149. package/src/blocks/responsive-grid/responsive-grid-group/factory.tsx +33 -0
  150. package/src/blocks/responsive-grid/responsive-grid-group/index.ts +13 -0
  151. package/src/blocks/responsive-grid/responsive-grid-group/types.ts +9 -0
  152. package/src/blocks/responsive-grid/responsive-grid-item/edit.tsx +19 -0
  153. package/src/blocks/responsive-grid/responsive-grid-item/factory.tsx +20 -0
  154. package/src/blocks/responsive-grid/responsive-grid-item/index.ts +9 -0
  155. package/src/blocks/responsive-grid/responsive-grid-item/types.ts +5 -0
  156. package/src/blocks/sections/base-section/attributes.ts +17 -0
  157. package/src/blocks/sections/base-section/constants.ts +18 -0
  158. package/src/blocks/sections/base-section/controls.tsx +70 -0
  159. package/src/blocks/sections/base-section/edit.tsx +34 -0
  160. package/src/blocks/sections/base-section/editor.scss +24 -0
  161. package/src/blocks/sections/base-section/factory.tsx +47 -0
  162. package/src/blocks/sections/base-section/icon.tsx +6 -0
  163. package/src/blocks/sections/base-section/index.ts +14 -0
  164. package/src/blocks/sections/base-section/types.ts +26 -0
  165. package/src/blocks/signpost/signpost-group/constants.ts +3 -0
  166. package/src/blocks/signpost/signpost-group/edit.tsx +75 -0
  167. package/src/blocks/signpost/signpost-group/editor.scss +0 -0
  168. package/src/blocks/signpost/signpost-group/factory.tsx +40 -0
  169. package/src/blocks/signpost/signpost-group/icon.tsx +19 -0
  170. package/src/blocks/signpost/signpost-group/index.ts +15 -0
  171. package/src/blocks/signpost/signpost-group/types.ts +9 -0
  172. package/src/blocks/signpost/signpost-item/constants.ts +4 -0
  173. package/src/blocks/signpost/signpost-item/edit.tsx +90 -0
  174. package/src/blocks/signpost/signpost-item/editor.scss +25 -0
  175. package/src/blocks/signpost/signpost-item/factory.tsx +29 -0
  176. package/src/blocks/signpost/signpost-item/icon.tsx +7 -0
  177. package/src/blocks/signpost/signpost-item/index.ts +10 -0
  178. package/src/blocks/signpost/signpost-item/types.ts +12 -0
  179. package/src/blocks/step/step-group/constants.ts +6 -0
  180. package/src/blocks/step/step-group/edit.tsx +64 -0
  181. package/src/blocks/step/step-group/editor.scss +19 -0
  182. package/src/blocks/step/step-group/factory.tsx +36 -0
  183. package/src/blocks/step/step-group/icon.tsx +27 -0
  184. package/src/blocks/step/step-group/index.ts +15 -0
  185. package/src/blocks/step/step-group/types.ts +13 -0
  186. package/src/blocks/step/step-item/constants.ts +6 -0
  187. package/src/blocks/step/step-item/edit.tsx +60 -0
  188. package/src/blocks/step/step-item/editor.scss +18 -0
  189. package/src/blocks/step/step-item/factory.tsx +27 -0
  190. package/src/blocks/step/step-item/index.ts +11 -0
  191. package/src/blocks/step/step-item/types.ts +12 -0
  192. package/src/blocks/testimonial/testimonial-group/constants.ts +27 -0
  193. package/src/blocks/testimonial/testimonial-group/edit.tsx +74 -0
  194. package/src/blocks/testimonial/testimonial-group/editor.scss +38 -0
  195. package/src/blocks/testimonial/testimonial-group/factory.tsx +44 -0
  196. package/src/blocks/testimonial/testimonial-group/icon.tsx +33 -0
  197. package/src/blocks/testimonial/testimonial-group/index.ts +15 -0
  198. package/src/blocks/testimonial/testimonial-group/types.ts +19 -0
  199. package/src/blocks/testimonial/testimonial-item/edit.tsx +48 -0
  200. package/src/blocks/testimonial/testimonial-item/editor.scss +20 -0
  201. package/src/blocks/testimonial/testimonial-item/factory.tsx +35 -0
  202. package/src/blocks/testimonial/testimonial-item/index.ts +9 -0
  203. package/src/blocks/testimonial/testimonial-item/types.ts +9 -0
  204. package/src/blocks/text-and-form/text-and-form-group/constants.ts +6 -0
  205. package/src/blocks/text-and-form/text-and-form-group/edit.tsx +59 -0
  206. package/src/blocks/text-and-form/text-and-form-group/editor.scss +21 -0
  207. package/src/blocks/text-and-form/text-and-form-group/factory.tsx +38 -0
  208. package/src/blocks/text-and-form/text-and-form-group/icon.tsx +23 -0
  209. package/src/blocks/text-and-form/text-and-form-group/index.ts +9 -0
  210. package/src/blocks/text-and-form/text-and-form-group/types.ts +23 -0
  211. package/src/blocks/text-and-form/text-and-form-text-column/constants.ts +10 -0
  212. package/src/blocks/text-and-form/text-and-form-text-column/edit.tsx +94 -0
  213. package/src/blocks/text-and-form/text-and-form-text-column/editor.scss +29 -0
  214. package/src/blocks/text-and-form/text-and-form-text-column/factory.tsx +41 -0
  215. package/src/blocks/text-and-form/text-and-form-text-column/index.ts +18 -0
  216. package/src/blocks/text-and-form/text-and-form-text-column/types.ts +23 -0
  217. package/src/blocks/usp/usp-group/constants.ts +54 -0
  218. package/src/blocks/usp/usp-group/edit.tsx +197 -0
  219. package/src/blocks/usp/usp-group/editor.scss +24 -0
  220. package/src/blocks/usp/usp-group/factory.tsx +113 -0
  221. package/src/blocks/usp/usp-group/icon.tsx +18 -0
  222. package/src/blocks/usp/usp-group/index.ts +15 -0
  223. package/src/blocks/usp/usp-group/types.ts +70 -0
  224. package/src/blocks/usp/usp-item/constants.ts +7 -0
  225. package/src/blocks/usp/usp-item/edit.tsx +65 -0
  226. package/src/blocks/usp/usp-item/editor.scss +17 -0
  227. package/src/blocks/usp/usp-item/factory.tsx +30 -0
  228. package/src/blocks/usp/usp-item/index.ts +11 -0
  229. package/src/blocks/usp/usp-item/types.ts +17 -0
  230. package/src/components/IconControl/IconControl.tsx +55 -0
  231. package/src/components/IconControl/editor.scss +53 -0
  232. package/src/components/IconControl/index.ts +2 -0
  233. package/src/components/IconControl/index.tsx +1 -0
  234. package/src/components/ImagePicker/ImagePicker.tsx +124 -0
  235. package/src/components/ImagePicker/editor.scss +79 -0
  236. package/src/components/ImagePicker/index.ts +2 -0
  237. package/src/components/ImagePicker/index.tsx +1 -0
  238. package/src/components/ItemIconControl/ItemIconControl.tsx +72 -0
  239. package/src/components/ItemIconControl/ItemIconModal.tsx +12 -0
  240. package/src/components/ItemIconControl/ItemIconPreview.tsx +93 -0
  241. package/src/components/ItemIconControl/editor.scss +52 -0
  242. package/src/components/ItemIconControl/index.ts +2 -0
  243. package/src/components/ItemIconControl/types.d.ts +30 -0
  244. package/src/constants.ts +20 -0
  245. package/src/editor.scss +34 -0
  246. package/src/globals.scss +237 -0
  247. package/src/hooks/useGroupBlock.ts +53 -0
  248. package/src/index.ts +122 -0
  249. package/src/types.ts +33 -0
  250. package/src/utils/createEditAdapter.ts +11 -0
@@ -0,0 +1,52 @@
1
+ @layer base {
2
+ .i-item-icon,
3
+ .i-item-icon__placeholder {
4
+ width: 40px;
5
+ height: 40px;
6
+ display: flex;
7
+ align-items: center;
8
+ justify-content: center;
9
+ background: #f0f6fb;
10
+ border-radius: 4px;
11
+ font-size: 18px;
12
+ color: #0073aa;
13
+ flex-shrink: 0;
14
+ }
15
+
16
+ .i-item-icon {
17
+ img,
18
+ .i-item-icon__img {
19
+ max-width: 100%;
20
+ max-height: 100%;
21
+ object-fit: contain;
22
+ }
23
+ }
24
+
25
+ .i-item-icon__placeholder {
26
+ &.--clickable {
27
+ cursor: pointer;
28
+ background: none;
29
+ border: 1px dashed #0073aa;
30
+ }
31
+ }
32
+
33
+ .i-item-icon__preview {
34
+ display: flex;
35
+ align-items: center;
36
+ justify-content: center;
37
+ padding: 8px 0;
38
+ }
39
+
40
+ .i-item-icon__control-preselected {
41
+ display: flex;
42
+ flex-direction: column;
43
+ gap: 8px;
44
+ margin-top: 16px;
45
+ }
46
+
47
+ .i-item-icon__number {
48
+ font-size: 22px;
49
+ font-weight: 700;
50
+ color: #0073aa;
51
+ }
52
+ }
@@ -0,0 +1,2 @@
1
+ export * from './ItemIconControl'
2
+ export * from './ItemIconPreview'
@@ -0,0 +1,30 @@
1
+ import type {Icon, SelectOption} from '~/types'
2
+ import type {IconType} from '../IconControl/IconControl'
3
+ import {UspIconType} from '~/blocks/usp/usp-item/types'
4
+
5
+ export interface ItemIconOptions {
6
+ icons: IconType[]
7
+ iconsSrc: string
8
+ }
9
+
10
+ export interface ItemIconControlProps {
11
+ icon: Icon
12
+ setAttributes: (attributes: {icon: Icon}) => void
13
+ options: ItemIconOptions
14
+ iconTypes: readonly SelectOption[]
15
+ }
16
+
17
+ export interface ItemIconPreviewProps {
18
+ icon: Icon
19
+ className?: string
20
+ options: ItemIconOptions
21
+ setAttributes: (attributes: {icon: Icon}) => void
22
+ }
23
+
24
+ export interface ItemIconModalProps {
25
+ icon: Icon
26
+ options: ItemIconOptions
27
+ onClose: () => void
28
+ onChange: (selectedIcon: IconType) => void
29
+ className?: string
30
+ }
@@ -0,0 +1,20 @@
1
+ import {__} from '@wordpress/i18n'
2
+
3
+ export const HEADING_LEVELS = [1, 2, 3, 4] as const
4
+
5
+ export const HEADING_STYLES = ['h1', 'h2', 'h3', 'h4'] as const
6
+
7
+ export const HEADING_STYLE_OPTIONS = [
8
+ {value: 'h1', label: 'H1 styl'},
9
+ {value: 'h2', label: 'H2 styl'},
10
+ {value: 'h3', label: 'H3 styl'},
11
+ {value: 'h4', label: 'H4 styl'},
12
+ ] as const
13
+
14
+ export type HeadingStyleOption = (typeof HEADING_STYLE_OPTIONS)[number]['value']
15
+
16
+ export const CONTENT_SIZES = [
17
+ {value: 'sm', label: __('Malá', 'brilo-blocks')},
18
+ {value: 'default', label: __('Výchozí', 'brilo-blocks')},
19
+ {value: 'lg', label: __('Velká', 'brilo-blocks')},
20
+ ] as const
@@ -0,0 +1,34 @@
1
+ @forward "./globals";
2
+ @forward "./blocks/column/column-group/editor";
3
+ @forward "./blocks/column/column-item/editor";
4
+ @forward "./blocks/compare/compare-item/editor";
5
+ @forward "./blocks/compare/compare-option/editor";
6
+ @forward "./blocks/contact/contact-group/editor";
7
+ @forward "./blocks/contact/contact-item/editor";
8
+ @forward "./blocks/core/basic-button/editor";
9
+ @forward "./blocks/core/basic-heading/editor";
10
+ @forward "./blocks/core/basic-overline/editor";
11
+ @forward "./blocks/faq/faq-group/editor";
12
+ @forward "./blocks/faq/faq-item/editor";
13
+ @forward "./blocks/form/form-field/editor";
14
+ @forward "./blocks/form/form-group/editor";
15
+ @forward "./blocks/groups/banner-group/editor";
16
+ @forward "./blocks/groups/basic-header-group/editor";
17
+ @forward "./blocks/groups/button-group/editor";
18
+ @forward "./blocks/groups/text-and-media-group/editor";
19
+ @forward "./blocks/hero/hero-item/editor";
20
+ @forward "./blocks/map/map-group/editor";
21
+ @forward "./blocks/newsletter/newsletter-form/editor";
22
+ @forward "./blocks/sections/base-section/editor";
23
+ @forward "./blocks/signpost/signpost-item/editor";
24
+ @forward "./blocks/step/step-group/editor";
25
+ @forward "./blocks/step/step-item/editor";
26
+ @forward "./blocks/testimonial/testimonial-group/editor";
27
+ @forward "./blocks/testimonial/testimonial-item/editor";
28
+ @forward "./blocks/text-and-form/text-and-form-group/editor";
29
+ @forward "./blocks/text-and-form/text-and-form-text-column/editor";
30
+ @forward "./blocks/usp/usp-group/editor";
31
+ @forward "./blocks/usp/usp-item/editor";
32
+ @forward "./components/IconControl/editor";
33
+ @forward "./components/ImagePicker/editor";
34
+ @forward "./components/ItemIconControl/editor";
@@ -0,0 +1,237 @@
1
+ // WordPress overrides — outside layer to beat unlayered WP styles
2
+ html .wp-block {
3
+ max-width: 1200px;
4
+ }
5
+
6
+ @layer base {
7
+ .text-center {
8
+ text-align: center;
9
+ }
10
+
11
+ .wp-block-section {
12
+ --border-color: #ddd;
13
+
14
+ padding: 8px;
15
+ border: 1px solid var(--border-color);
16
+ cursor: pointer;
17
+ transition: border 0.3s ease;
18
+ max-width: 1200px;
19
+
20
+ &:hover {
21
+ --border-color: #0073aa;
22
+ }
23
+
24
+ &.--heading-style-h1 {
25
+ --heading-size: 32px;
26
+ }
27
+ &.--heading-style-h2 {
28
+ --heading-size: 28px;
29
+ }
30
+ &.--heading-style-h3 {
31
+ --heading-size: 24px;
32
+ }
33
+ &.--heading-style-h4 {
34
+ --heading-size: 20px;
35
+ }
36
+ &.--heading-style-h5 {
37
+ --heading-size: 18px;
38
+ }
39
+
40
+ &.--typo-size-sm {
41
+ --typo-size: 14px;
42
+ }
43
+ &.--typo-size-md {
44
+ --typo-size: 16px;
45
+ }
46
+ &.--typo-size-lg {
47
+ --typo-size: 18px;
48
+ }
49
+ &.--typo-size-xl {
50
+ --typo-size: 20px;
51
+ }
52
+ &.--typo-size-xxl {
53
+ --typo-size: 24px;
54
+ }
55
+
56
+ .wp-block-section__title {
57
+ font-size: var(--heading-size);
58
+ }
59
+ .wp-block-section__content {
60
+ font-size: var(--typo-size);
61
+ }
62
+ }
63
+
64
+ .wp-block-inner {
65
+ display: flex;
66
+ flex-direction: column;
67
+ gap: 8px;
68
+ padding: 12px;
69
+ border: 1px solid #eee;
70
+ border-radius: 4px;
71
+ }
72
+
73
+ .wp-block-inner-content {
74
+ --border-color: #ddd;
75
+
76
+ min-height: 64px;
77
+ margin-bottom: 16px;
78
+ padding: 8px;
79
+ border: 1px dashed var(--border-color);
80
+ }
81
+
82
+ .u-grid-responsive-blocks-list {
83
+ --grid-max-col-count: 2;
84
+ --grid-min-col-size: 150px;
85
+ --grid-gap: 1rem;
86
+ --grid-col-size-calc: calc((100% - var(--grid-gap) * var(--grid-max-col-count)) / var(--grid-max-col-count));
87
+ --grid-col-min-size-calc: min(100%, max(var(--grid-min-col-size), var(--grid-col-size-calc)));
88
+
89
+ display: grid;
90
+ gap: var(--grid-gap);
91
+ grid-template-columns: repeat(auto-fill, minmax(var(--grid-col-min-size-calc), 1fr));
92
+
93
+ &.--cols-2 {
94
+ --grid-max-col-count: 2;
95
+ }
96
+ &.--cols-3 {
97
+ --grid-max-col-count: 3;
98
+ }
99
+ &.--cols-4 {
100
+ --grid-max-col-count: 4;
101
+ }
102
+ &.--cols-5 {
103
+ --grid-max-col-count: 5;
104
+ }
105
+ &.--cols-6 {
106
+ --grid-max-col-count: 6;
107
+ }
108
+ &.--cols-8 {
109
+ --grid-max-col-count: 8;
110
+ }
111
+ &.--cols-10 {
112
+ --grid-max-col-count: 10;
113
+ }
114
+ &.--cols-12 {
115
+ --grid-max-col-count: 12;
116
+ }
117
+ }
118
+
119
+ .u-grid-responsive {
120
+ --grid-max-col-count: 2;
121
+ --grid-min-col-size: 150px;
122
+ --grid-gap: 0.5rem;
123
+ --grid-col-size-calc: calc((100% - var(--grid-gap) * var(--grid-max-col-count)) / var(--grid-max-col-count));
124
+ --grid-col-min-size-calc: min(100%, max(var(--grid-min-col-size), var(--grid-col-size-calc)));
125
+
126
+ display: grid;
127
+ gap: var(--grid-gap);
128
+ grid-template-columns: repeat(auto-fill, minmax(var(--grid-col-min-size-calc), 1fr));
129
+
130
+ &.--col-2 {
131
+ --grid-max-col-count: 2;
132
+ }
133
+ &.--col-3 {
134
+ --grid-max-col-count: 3;
135
+ }
136
+ &.--col-4 {
137
+ --grid-max-col-count: 4;
138
+ }
139
+ &.--col-5 {
140
+ --grid-max-col-count: 5;
141
+ }
142
+ &.--col-6 {
143
+ --grid-max-col-count: 6;
144
+ }
145
+ &.--col-12 {
146
+ --grid-max-col-count: 12;
147
+ }
148
+
149
+ &.--max-col-size-200px {
150
+ --grid-min-col-size: 200px;
151
+ }
152
+ &.--max-col-size-400px {
153
+ --grid-min-col-size: 400px;
154
+ }
155
+ }
156
+
157
+ .u-text-editable {
158
+ --border-color: #ccc;
159
+
160
+ border: 1px solid var(--border-color);
161
+ padding-inline: 4px;
162
+
163
+ &:focus {
164
+ --border-color: #0073aa;
165
+ }
166
+ }
167
+
168
+ .text-sm {
169
+ font-size: 14px;
170
+ }
171
+ .flex {
172
+ display: flex;
173
+ }
174
+ .column {
175
+ flex-direction: column;
176
+ }
177
+ .gap-1 {
178
+ gap: 4px;
179
+ }
180
+ .gap-2 {
181
+ gap: 8px;
182
+ }
183
+ .gap-3 {
184
+ gap: 16px;
185
+ }
186
+ .gap-4 {
187
+ gap: 24px;
188
+ }
189
+ .gap-5 {
190
+ gap: 32px;
191
+ }
192
+ .gap-6 {
193
+ gap: 40px;
194
+ }
195
+ .gap-7 {
196
+ gap: 48px;
197
+ }
198
+ .gap-8 {
199
+ gap: 64px;
200
+ }
201
+ .p-1 {
202
+ padding: 4px;
203
+ }
204
+ .p-2 {
205
+ padding: 8px;
206
+ }
207
+ .p-3 {
208
+ padding: 16px;
209
+ }
210
+ .cursor-pointer {
211
+ cursor: pointer;
212
+ }
213
+ .items-end {
214
+ align-items: end;
215
+ }
216
+ .items-center {
217
+ align-items: center;
218
+ }
219
+ .justify-center {
220
+ justify-content: center;
221
+ }
222
+ .justify-end {
223
+ justify-content: end;
224
+ }
225
+ .mt-4 {
226
+ margin-top: 16px;
227
+ }
228
+ .mb-4 {
229
+ margin-bottom: 16px;
230
+ }
231
+ .w-full {
232
+ width: 100%;
233
+ }
234
+ .grow {
235
+ flex-grow: 1;
236
+ }
237
+ }
@@ -0,0 +1,53 @@
1
+ import {useBlockProps, useInnerBlocksProps} from '@wordpress/block-editor'
2
+ import clsx, {type ClassValue} from 'clsx'
3
+ import type {ComponentType, CSSProperties} from 'react'
4
+
5
+ type BlockTemplate = [string, Record<string, unknown>][]
6
+ type StyleWithVars = CSSProperties & {[key: `--${string}`]: string | number}
7
+
8
+ export interface GroupBlockConfig {
9
+ blockClassName: ClassValue | ClassValue[]
10
+ containerClassName: ClassValue | ClassValue[]
11
+ containerStyle?: StyleWithVars
12
+ allowedBlocks?: string[]
13
+ template?: BlockTemplate
14
+ templateLock?: 'all' | 'insert' | false
15
+ orientation?: 'horizontal' | 'vertical'
16
+ layout?: {type: string; columnCount?: number; minimumColumnWidth?: string}
17
+ renderAppender?: ComponentType
18
+ }
19
+
20
+ type GroupBlockProps = Record<string, unknown>
21
+
22
+ interface GroupBlockResult {
23
+ blockProps: GroupBlockProps
24
+ innerBlocksProps: GroupBlockProps
25
+ }
26
+
27
+ export function useGroupBlock({
28
+ blockClassName,
29
+ containerClassName,
30
+ containerStyle,
31
+ allowedBlocks,
32
+ template,
33
+ templateLock,
34
+ orientation,
35
+ layout,
36
+ renderAppender,
37
+ }: GroupBlockConfig): GroupBlockResult {
38
+ const blockProps = useBlockProps({className: clsx(blockClassName)})
39
+
40
+ const innerBlocksProps = useInnerBlocksProps(
41
+ {
42
+ className: clsx(containerClassName),
43
+ ...(containerStyle && {style: containerStyle}),
44
+ },
45
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
46
+ {allowedBlocks, template, templateLock, orientation, layout, renderAppender} as any,
47
+ )
48
+
49
+ return {
50
+ blockProps: blockProps as unknown as GroupBlockProps,
51
+ innerBlocksProps: innerBlocksProps as unknown as GroupBlockProps,
52
+ }
53
+ }
package/src/index.ts ADDED
@@ -0,0 +1,122 @@
1
+ export type {
2
+ ContactColumns,
3
+ ContactGroupAttributes,
4
+ ContactGroupOptions,
5
+ } from './blocks/contact/contact-group'
6
+ export {
7
+ CONTACT_COLUMNS,
8
+ CONTACT_COLUMNS_CONTEXT,
9
+ contactGroupDefaults,
10
+ createContactGroupBlock,
11
+ } from './blocks/contact/contact-group'
12
+ export type {
13
+ ContactIconSize,
14
+ ContactIconSizeVariant,
15
+ ContactItemAttributes,
16
+ ContactItemOptions,
17
+ } from './blocks/contact/contact-item'
18
+ export {
19
+ CONTACT_ICON_SIZE_RANGE,
20
+ CONTACT_ICON_SIZES,
21
+ CONTACT_ICON_TYPES,
22
+ contactItemDefaults,
23
+ createContactItemBlock,
24
+ } from './blocks/contact/contact-item'
25
+ export type {FaqItemAttributes, FaqItemOptions} from './blocks/faq/faq-item'
26
+ export {createFaqItemBlock, faqItemDefaults} from './blocks/faq/faq-item'
27
+ export type {FaqGroupAttributes, FaqGroupOptions} from './blocks/faq/faq-group'
28
+ export {createFaqGroupBlock, faqGroupDefaults} from './blocks/faq/faq-group'
29
+ export type {BasicButtonAttributes, BasicButtonOptions} from './blocks/core/basic-button'
30
+ export {basicButtonDefaults, createBasicButtonBlock} from './blocks/core/basic-button'
31
+ export type {BasicHeadingAttributes, BasicHeadingOptions} from './blocks/core/basic-heading'
32
+ export {basicHeadingDefaults, createBasicHeadingBlock} from './blocks/core/basic-heading'
33
+ export type {BasicOverlineAttributes, BasicOverlineOptions} from './blocks/core/basic-overline'
34
+ export {basicOverlineDefaults, createBasicOverlineBlock} from './blocks/core/basic-overline'
35
+ export type {HeroItemAttributes, HeroItemOptions} from './blocks/hero/hero-item'
36
+ export {createHeroItemBlock, heroItemDefaults} from './blocks/hero/hero-item'
37
+ export type {HeroGroupAttributes, HeroGroupOptions} from './blocks/hero/hero-group'
38
+ export {createHeroGroupBlock, heroGroupDefaults} from './blocks/hero/hero-group'
39
+ export type {MapGroupAttributes, MapGroupOptions} from './blocks/map/map-group'
40
+ export {createMapGroupBlock, mapGroupDefaults} from './blocks/map/map-group'
41
+ export type {BasicHeaderGroupAttributes, BasicHeaderGroupOptions} from './blocks/groups/basic-header-group'
42
+ export {basicHeaderGroupDefaults, createBasicHeaderGroupBlock} from './blocks/groups/basic-header-group'
43
+ export type {ButtonGroupAttributes, ButtonGroupOptions} from './blocks/groups/button-group'
44
+ export {buttonGroupDefaults, createButtonGroupBlock} from './blocks/groups/button-group'
45
+ export type {BannerGroupAttributes, BannerGroupOptions} from './blocks/groups/banner-group'
46
+ export {createBannerGroupBlock, bannerGroupDefaults} from './blocks/groups/banner-group'
47
+ export type {TextAndMediaGroupAttributes, TextAndMediaGroupOptions} from './blocks/groups/text-and-media-group'
48
+ export {createTextAndMediaGroupBlock, textAndMediaGroupDefaults} from './blocks/groups/text-and-media-group'
49
+ export type {TextAndFormGroupAttributes, TextAndFormGroupOptions} from './blocks/text-and-form/text-and-form-group'
50
+ export {createTextAndFormGroupBlock, textAndFormGroupDefaults} from './blocks/text-and-form/text-and-form-group'
51
+ export type {TextAndFormTextColumnAttributes, TextAndFormTextColumnOptions} from './blocks/text-and-form/text-and-form-text-column'
52
+ export {createTextAndFormTextColumnBlock, textAndFormTextColumnDefaults} from './blocks/text-and-form/text-and-form-text-column'
53
+ export type {UspGroupAttributes, UspGroupOptions} from './blocks/usp/usp-group'
54
+ export {createUspGroupBlock, uspGroupDefaults} from './blocks/usp/usp-group'
55
+ export type {UspItemAttributes, UspItemOptions} from './blocks/usp/usp-item'
56
+ export {createUspItemBlock, uspItemDefaults} from './blocks/usp/usp-item'
57
+ export type {TestimonialGroupAttributes} from './blocks/testimonial/testimonial-group'
58
+ export {createTestimonialGroupBlock, testimonialGroupDefaults} from './blocks/testimonial/testimonial-group'
59
+ export type {TestimonialItemAttributes} from './blocks/testimonial/testimonial-item'
60
+ export {createTestimonialItemBlock, testimonialItemDefaults} from './blocks/testimonial/testimonial-item'
61
+ export type {CompareGroupAttributes, CompareGroupOptions} from './blocks/compare/compare-group'
62
+ export {createCompareGroupBlock, compareGroupDefaults} from './blocks/compare/compare-group'
63
+ export type {CompareItemAttributes, CompareItemOptions} from './blocks/compare/compare-item'
64
+ export {createCompareItemBlock, compareItemDefaults} from './blocks/compare/compare-item'
65
+ export type {CompareOptionAttributes, CompareOptionOptions} from './blocks/compare/compare-option'
66
+ export {createCompareOptionBlock, compareOptionDefaults} from './blocks/compare/compare-option'
67
+ export type {SignpostGroupAttributes, SignpostGroupOptions} from './blocks/signpost/signpost-group'
68
+ export {createSignpostGroupBlock, signpostGroupDefaults} from './blocks/signpost/signpost-group'
69
+ export type {SignpostItemAttributes, SignpostItemOptions} from './blocks/signpost/signpost-item'
70
+ export {createSignpostItemBlock, signpostItemDefaults} from './blocks/signpost/signpost-item'
71
+ export type {StepItemAttributes, StepItemOptions} from './blocks/step/step-item'
72
+ export {createStepItemBlock, stepItemDefaults} from './blocks/step/step-item'
73
+ export type {StepGroupAttributes, StepGroupOptions} from './blocks/step/step-group'
74
+ export {createStepGroupBlock, stepGroupDefaults} from './blocks/step/step-group'
75
+ export type {NewsletterFormAttributes, NewsletterFormOptions} from './blocks/newsletter/newsletter-form'
76
+ export {createNewsletterFormBlock, newsletterFormDefaults} from './blocks/newsletter/newsletter-form'
77
+ export type {ColumnGroupAttributes, ColumnGroupOptions} from './blocks/column/column-group'
78
+ export {createColumnGroupBlock, columnGroupDefaults} from './blocks/column/column-group'
79
+ export type {ColumnItemAttributes, ColumnItemOptions} from './blocks/column/column-item'
80
+ export {createColumnItemBlock, columnItemDefaults} from './blocks/column/column-item'
81
+ export type {BaseBlockAttributes, BaseSectionOptions, ExcludableBaseAttr} from './blocks/sections/base-section'
82
+ export {
83
+ BACKGROUNDS,
84
+ baseAttributes,
85
+ baseSectionDefaults,
86
+ createBaseSectionBlock,
87
+ createBaseSectionEdit,
88
+ SPACING_POSITIONS,
89
+ SPACING_SIZES,
90
+ } from './blocks/sections/base-section'
91
+ export type {IconType} from './components/IconControl'
92
+ export {IconControl} from './components/IconControl'
93
+ export type {ImageLabels, ImageValue} from './components/ImagePicker'
94
+ export {ImagePickerBody, ImagePickerControl, useMediaUrl} from './components/ImagePicker'
95
+ export type {GroupBlockConfig} from './hooks/useGroupBlock'
96
+ export {useGroupBlock} from './hooks/useGroupBlock'
97
+ export type {TypedEditComponent} from './utils/createEditAdapter'
98
+ export {HEADING_LEVELS, HEADING_STYLES, HEADING_STYLE_OPTIONS} from './constants'
99
+ export type {HeadingStyleOption} from './constants'
100
+ export {createEditAdapter} from './utils/createEditAdapter'
101
+ export type {
102
+ ExternalMethod,
103
+ FormGroupAttributes,
104
+ FormGroupOptions,
105
+ InternalSubmitBehavior,
106
+ ProcessingMode,
107
+ } from './blocks/form/form-group'
108
+ export {
109
+ createFormGroupBlock,
110
+ formGroupDefaults,
111
+ EXTERNAL_METHODS,
112
+ INTERNAL_SUBMIT_BEHAVIORS,
113
+ PROCESSING_MODES,
114
+ } from './blocks/form/form-group'
115
+ export type {FormFieldAttributes, FormFieldOptions, FormFieldType} from './blocks/form/form-field'
116
+ export {createFormFieldBlock, formFieldDefaults, FIELD_TYPES, FIELD_COLUMNS_RANGE, FIELD_COLUMNS_DEFAULT} from './blocks/form/form-field'
117
+ export type {ResponsiveGridGroupAttributes, ResponsiveGridGroupOptions} from './blocks/responsive-grid/responsive-grid-group'
118
+ export {createResponsiveGridGroupBlock, responsiveGridGroupDefaults} from './blocks/responsive-grid/responsive-grid-group'
119
+ export type {ResponsiveGridItemAttributes, ResponsiveGridItemOptions} from './blocks/responsive-grid/responsive-grid-item'
120
+ export {createResponsiveGridItemBlock, responsiveGridItemDefaults} from './blocks/responsive-grid/responsive-grid-item'
121
+ export type {PostSliderGroupAttributes, PostSliderGroupOptions} from './blocks/post/post-slider-group'
122
+ export {createPostSliderGroupBlock, postSliderGroupDefaults} from './blocks/post/post-slider-group'
package/src/types.ts ADDED
@@ -0,0 +1,33 @@
1
+ import {BlockTypeIconDescriptor} from '@wordpress/blocks'
2
+ export interface SelectOption {
3
+ value: string
4
+ label: string
5
+ }
6
+
7
+ export interface Media {
8
+ id: number
9
+ alt: string
10
+ }
11
+
12
+ export interface Icon {
13
+ type: string
14
+ src: string
15
+ media: Media
16
+ }
17
+
18
+ export type OptionArray = ReadonlyArray<{value: string; label: string}>
19
+ export type NumberArray = ReadonlyArray<number>
20
+ export type StringArray = ReadonlyArray<string>
21
+
22
+ export interface BriloBlockType {
23
+ name: string
24
+ title?: string
25
+ description?: string
26
+ category?: string
27
+ allowedBlocks?: string[]
28
+ template?: [string, Record<string, unknown>][]
29
+ blockClassName?: string
30
+ containerClassName?: string
31
+ icon?: BlockTypeIconDescriptor
32
+ parent?: string[]
33
+ }
@@ -0,0 +1,11 @@
1
+ import type {BlockEditProps, BlockType} from '@wordpress/blocks'
2
+
3
+ export type TypedEditComponent<Attributes extends Record<string, unknown>> = (props: BlockEditProps<Attributes>) => JSX.Element
4
+
5
+ export function createEditAdapter<Attributes extends Record<string, unknown>>(
6
+ EditComponent: TypedEditComponent<Attributes>,
7
+ ): NonNullable<Partial<BlockType>['edit']> {
8
+ return function EditAdapter(props) {
9
+ return EditComponent(props as BlockEditProps<Attributes>)
10
+ }
11
+ }