@brilo/base-blocks 0.1.7 → 0.1.8

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 (84) hide show
  1. package/build/blocks/groups/content-group/factory.d.ts +2 -2
  2. package/build/blocks/groups/content-group/factory.d.ts.map +1 -1
  3. package/build/blocks/groups/content-group/factory.js +8 -8
  4. package/build/blocks/groups/content-group/icon.d.ts.map +1 -1
  5. package/build/blocks/link/link-item/constants.d.ts +11 -0
  6. package/build/blocks/link/link-item/constants.d.ts.map +1 -0
  7. package/build/blocks/link/link-item/constants.js +6 -0
  8. package/build/blocks/link/link-item/edit.d.ts +6 -0
  9. package/build/blocks/link/link-item/edit.d.ts.map +1 -0
  10. package/build/blocks/link/link-item/edit.js +25 -0
  11. package/build/blocks/link/link-item/factory.d.ts +4 -0
  12. package/build/blocks/link/link-item/factory.d.ts.map +1 -0
  13. package/build/blocks/link/link-item/factory.js +27 -0
  14. package/build/blocks/link/link-item/icon.d.ts +2 -0
  15. package/build/blocks/link/link-item/icon.d.ts.map +1 -0
  16. package/build/blocks/link/link-item/icon.js +2 -0
  17. package/build/blocks/link/link-item/index.d.ts +5 -0
  18. package/build/blocks/link/link-item/index.d.ts.map +1 -0
  19. package/build/blocks/link/link-item/index.js +6 -0
  20. package/build/blocks/link/link-item/types.d.ts +25 -0
  21. package/build/blocks/link/link-item/types.d.ts.map +1 -0
  22. package/build/blocks/link/link-item/types.js +1 -0
  23. package/build/blocks/map/map-group/constants.d.ts +1 -0
  24. package/build/blocks/map/map-group/constants.d.ts.map +1 -1
  25. package/build/blocks/map/map-group/constants.js +2 -0
  26. package/build/blocks/map/map-group/edit.d.ts.map +1 -1
  27. package/build/blocks/map/map-group/edit.js +19 -11
  28. package/build/blocks/map/map-group/factory.d.ts +3 -1
  29. package/build/blocks/map/map-group/factory.d.ts.map +1 -1
  30. package/build/blocks/map/map-group/factory.js +24 -5
  31. package/build/blocks/map/map-group/index.d.ts.map +1 -1
  32. package/build/blocks/map/map-group/index.js +1 -0
  33. package/build/blocks/map/map-group/types.d.ts +18 -4
  34. package/build/blocks/map/map-group/types.d.ts.map +1 -1
  35. package/build/blocks/sections/base-section/attributes.d.ts +5 -1
  36. package/build/blocks/sections/base-section/attributes.d.ts.map +1 -1
  37. package/build/blocks/sections/base-section/attributes.js +5 -1
  38. package/build/blocks/sections/base-section/constants.d.ts +0 -16
  39. package/build/blocks/sections/base-section/constants.d.ts.map +1 -1
  40. package/build/blocks/sections/base-section/constants.js +0 -7
  41. package/build/blocks/sections/base-section/controls.d.ts.map +1 -1
  42. package/build/blocks/sections/base-section/controls.js +6 -3
  43. package/build/blocks/sections/base-section/edit.d.ts.map +1 -1
  44. package/build/blocks/sections/base-section/edit.js +8 -1
  45. package/build/blocks/sections/base-section/factory.d.ts.map +1 -1
  46. package/build/blocks/sections/base-section/factory.js +3 -8
  47. package/build/blocks/sections/base-section/index.d.ts +1 -1
  48. package/build/blocks/sections/base-section/index.d.ts.map +1 -1
  49. package/build/blocks/sections/base-section/index.js +1 -1
  50. package/build/blocks/sections/base-section/types.d.ts +1 -0
  51. package/build/blocks/sections/base-section/types.d.ts.map +1 -1
  52. package/build/hooks/useTenantColorPalette.d.ts +9 -0
  53. package/build/hooks/useTenantColorPalette.d.ts.map +1 -0
  54. package/build/hooks/useTenantColorPalette.js +12 -0
  55. package/build/index.d.ts +3 -1
  56. package/build/index.d.ts.map +1 -1
  57. package/build/index.js +2 -1
  58. package/package.json +2 -1
  59. package/src/blocks/groups/content-group/factory.tsx +11 -11
  60. package/src/blocks/groups/content-group/icon.tsx +1 -1
  61. package/src/blocks/link/link-item/constants.ts +7 -0
  62. package/src/blocks/link/link-item/edit.tsx +116 -0
  63. package/src/blocks/link/link-item/editor.scss +11 -0
  64. package/src/blocks/link/link-item/factory.tsx +29 -0
  65. package/src/blocks/link/link-item/icon.tsx +6 -0
  66. package/src/blocks/link/link-item/index.ts +10 -0
  67. package/src/blocks/link/link-item/types.ts +24 -0
  68. package/src/blocks/map/map-group/constants.ts +3 -0
  69. package/src/blocks/map/map-group/edit.tsx +74 -8
  70. package/src/blocks/map/map-group/editor.scss +7 -0
  71. package/src/blocks/map/map-group/factory.tsx +26 -4
  72. package/src/blocks/map/map-group/index.ts +1 -0
  73. package/src/blocks/map/map-group/types.ts +18 -4
  74. package/src/blocks/responsive-grid/responsive-grid-item/editor.scss +9 -0
  75. package/src/blocks/sections/base-section/attributes.ts +5 -1
  76. package/src/blocks/sections/base-section/constants.ts +0 -8
  77. package/src/blocks/sections/base-section/controls.tsx +18 -8
  78. package/src/blocks/sections/base-section/edit.tsx +8 -1
  79. package/src/blocks/sections/base-section/factory.tsx +3 -7
  80. package/src/blocks/sections/base-section/index.ts +1 -1
  81. package/src/blocks/sections/base-section/types.ts +1 -0
  82. package/src/editor.scss +2 -0
  83. package/src/hooks/useTenantColorPalette.ts +21 -0
  84. package/src/index.ts +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/blocks/sections/base-section/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAC,mBAAmB,EAAE,kBAAkB,EAAE,kBAAkB,EAAC,MAAM,SAAS,CAAA;AACxF,OAAO,EAAC,cAAc,EAAC,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAC,WAAW,EAAE,iBAAiB,EAAE,aAAa,EAAC,MAAM,aAAa,CAAA;AACzE,OAAO,EAAC,qBAAqB,EAAC,MAAM,QAAQ,CAAA;AAC5C,OAAO,EAAC,sBAAsB,EAAC,MAAM,WAAW,CAAA;AAEhD,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,SAAS,CAAA;AAE/C,eAAO,MAAM,mBAAmB,EAAE,kBAKjC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/blocks/sections/base-section/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAC,mBAAmB,EAAE,kBAAkB,EAAE,kBAAkB,EAAC,MAAM,SAAS,CAAA;AACxF,OAAO,EAAC,cAAc,EAAC,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAC,iBAAiB,EAAE,aAAa,EAAC,MAAM,aAAa,CAAA;AAC5D,OAAO,EAAC,qBAAqB,EAAC,MAAM,QAAQ,CAAA;AAC5C,OAAO,EAAC,sBAAsB,EAAC,MAAM,WAAW,CAAA;AAEhD,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,SAAS,CAAA;AAE/C,eAAO,MAAM,mBAAmB,EAAE,kBAKjC,CAAA"}
@@ -1,5 +1,5 @@
1
1
  export { baseAttributes } from './attributes';
2
- export { BACKGROUNDS, SPACING_POSITIONS, SPACING_SIZES } from './constants';
2
+ export { SPACING_POSITIONS, SPACING_SIZES } from './constants';
3
3
  export { createBaseSectionEdit } from './edit';
4
4
  export { createBaseSectionBlock } from './factory';
5
5
  export const baseSectionDefaults = {
@@ -8,6 +8,7 @@ export interface BaseBlockAttributes extends Record<string, unknown> {
8
8
  size: string;
9
9
  };
10
10
  background: string;
11
+ textColor: string;
11
12
  }
12
13
  export type ExcludableBaseAttr = 'spacing' | 'background' | 'id';
13
14
  export interface BaseSectionOptions<TExtra extends Record<string, unknown> = Record<string, never>> extends BriloBlockType {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/blocks/sections/base-section/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,kBAAkB,EAAE,cAAc,EAAC,MAAM,mBAAmB,CAAA;AACzE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAA;AACpC,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,SAAS,CAAA;AAE3C,MAAM,WAAW,mBAAoB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAClE,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAA;QAChB,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;IACD,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,YAAY,GAAG,IAAI,CAAA;AAEhE,MAAM,WAAW,kBAAkB,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAE,SAAQ,cAAc;IACxH,QAAQ,CAAC,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAA;IACzC,eAAe,CAAC,EAAE;SACf,CAAC,IAAI,MAAM,MAAM,GAAG;YACnB,IAAI,EAAE,MAAM,CAAA;YACZ,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;SACnB;KACF,CAAA;IACD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,mBAAmB,GAAG,MAAM,CAAC,KAAK,SAAS,CAAA;IAClF,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAA;CAC/B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/blocks/sections/base-section/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,kBAAkB,EAAE,cAAc,EAAC,MAAM,mBAAmB,CAAA;AACzE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAA;AACpC,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,SAAS,CAAA;AAE3C,MAAM,WAAW,mBAAoB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAClE,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAA;QAChB,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;IACD,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,YAAY,GAAG,IAAI,CAAA;AAEhE,MAAM,WAAW,kBAAkB,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAE,SAAQ,cAAc;IACxH,QAAQ,CAAC,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAA;IACzC,eAAe,CAAC,EAAE;SACf,CAAC,IAAI,MAAM,MAAM,GAAG;YACnB,IAAI,EAAE,MAAM,CAAA;YACZ,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;SACnB;KACF,CAAA;IACD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,mBAAmB,GAAG,MAAM,CAAC,KAAK,SAAS,CAAA;IAClF,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAA;CAC/B"}
@@ -0,0 +1,9 @@
1
+ export declare function useTenantColorPalette(): {
2
+ paletteColors: {
3
+ color: string;
4
+ name: string;
5
+ slug: string;
6
+ }[];
7
+ resolveHex: (value: string) => string;
8
+ };
9
+ //# sourceMappingURL=useTenantColorPalette.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTenantColorPalette.d.ts","sourceRoot":"","sources":["../../src/hooks/useTenantColorPalette.ts"],"names":[],"mappings":"AASA,wBAAgB,qBAAqB;;;cAL7B,MAAM;cACN,MAAM;;wBAWiB,MAAM;EAIpC"}
@@ -0,0 +1,12 @@
1
+ import { useSettings } from '@wordpress/block-editor';
2
+ import { useMemo } from '@wordpress/element';
3
+ export function useTenantColorPalette() {
4
+ const [rawColors] = useSettings('color.palette');
5
+ const colors = (rawColors !== null && rawColors !== void 0 ? rawColors : []);
6
+ return useMemo(() => {
7
+ const paletteColors = colors.map((c) => ({ ...c, color: `var(--${c.slug})` }));
8
+ const hexByValue = new Map(colors.map((c) => [`var(--${c.slug})`, c.color]));
9
+ const resolveHex = (value) => { var _a; return (_a = hexByValue.get(value)) !== null && _a !== void 0 ? _a : value; };
10
+ return { paletteColors, resolveHex };
11
+ }, [colors]);
12
+ }
package/build/index.d.ts CHANGED
@@ -61,7 +61,7 @@ export { createColumnGroupBlock, columnGroupDefaults } from './blocks/column/col
61
61
  export type { ColumnItemAttributes, ColumnItemOptions } from './blocks/column/column-item';
62
62
  export { createColumnItemBlock, columnItemDefaults } from './blocks/column/column-item';
63
63
  export type { BaseBlockAttributes, BaseSectionOptions, ExcludableBaseAttr } from './blocks/sections/base-section';
64
- export { BACKGROUNDS, baseAttributes, baseSectionDefaults, createBaseSectionBlock, createBaseSectionEdit, SPACING_POSITIONS, SPACING_SIZES, } from './blocks/sections/base-section';
64
+ export { baseAttributes, baseSectionDefaults, createBaseSectionBlock, createBaseSectionEdit, SPACING_POSITIONS, SPACING_SIZES, } from './blocks/sections/base-section';
65
65
  export type { IconType } from './components/IconControl';
66
66
  export { IconControl } from './components/IconControl';
67
67
  export type { ImageLabels, ImageValue } from './components/ImagePicker';
@@ -82,4 +82,6 @@ export type { ResponsiveGridItemAttributes, ResponsiveGridItemOptions } from './
82
82
  export { createResponsiveGridItemBlock, responsiveGridItemDefaults } from './blocks/responsive-grid/responsive-grid-item';
83
83
  export type { PostSliderGroupAttributes, PostSliderGroupOptions } from './blocks/post/post-slider-group';
84
84
  export { createPostSliderGroupBlock, postSliderGroupDefaults } from './blocks/post/post-slider-group';
85
+ export type { LinkItemAttributes, LinkItemIcon, LinkItemOptions } from './blocks/link/link-item';
86
+ export { createLinkItemBlock, linkItemDefaults } from './blocks/link/link-item';
85
87
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/build/index.js CHANGED
@@ -29,7 +29,7 @@ export { createStepGroupBlock, stepGroupDefaults } from './blocks/step/step-grou
29
29
  export { createNewsletterFormBlock, newsletterFormDefaults } from './blocks/newsletter/newsletter-form';
30
30
  export { createColumnGroupBlock, columnGroupDefaults } from './blocks/column/column-group';
31
31
  export { createColumnItemBlock, columnItemDefaults } from './blocks/column/column-item';
32
- export { BACKGROUNDS, baseAttributes, baseSectionDefaults, createBaseSectionBlock, createBaseSectionEdit, SPACING_POSITIONS, SPACING_SIZES, } from './blocks/sections/base-section';
32
+ export { baseAttributes, baseSectionDefaults, createBaseSectionBlock, createBaseSectionEdit, SPACING_POSITIONS, SPACING_SIZES, } from './blocks/sections/base-section';
33
33
  export { IconControl } from './components/IconControl';
34
34
  export { ImagePickerBody, ImagePickerControl, useMediaUrl } from './components/ImagePicker';
35
35
  export { useGroupBlock } from './hooks/useGroupBlock';
@@ -40,3 +40,4 @@ export { createFormFieldBlock, formFieldDefaults, FIELD_TYPES, FIELD_COLUMNS_RAN
40
40
  export { createResponsiveGridGroupBlock, responsiveGridGroupDefaults } from './blocks/responsive-grid/responsive-grid-group';
41
41
  export { createResponsiveGridItemBlock, responsiveGridItemDefaults } from './blocks/responsive-grid/responsive-grid-item';
42
42
  export { createPostSliderGroupBlock, postSliderGroupDefaults } from './blocks/post/post-slider-group';
43
+ export { createLinkItemBlock, linkItemDefaults } from './blocks/link/link-item';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brilo/base-blocks",
3
- "version": "0.1.7",
3
+ "version": "0.1.8",
4
4
  "author": "Brilo",
5
5
  "main": "./build/index.js",
6
6
  "types": "./build/index.d.ts",
@@ -9,6 +9,7 @@
9
9
  "watch": "tsc --watch",
10
10
  "lint": "biome lint ./src",
11
11
  "format": "biome format --write ./src && prettier --write \"./src/**/*.scss\"",
12
+ "lint:fix": "biome format --write ./src && prettier --write \"./src/**/*.scss\"",
12
13
  "check": "biome check --write ./src"
13
14
  },
14
15
  "peerDependencies": {
@@ -1,26 +1,26 @@
1
- import {InnerBlocks} from "@wordpress/block-editor";
2
- import type {BlockConfiguration} from "@wordpress/blocks";
3
- import {__} from "@wordpress/i18n";
4
- import {createContentGroupEdit} from "./edit";
5
- import type {ContentGroupAttributes, ContentGroupOptions} from "./types";
6
- import {icon as defaultIcon} from "./icon";
1
+ import {InnerBlocks} from '@wordpress/block-editor'
2
+ import type {BlockConfiguration} from '@wordpress/blocks'
3
+ import {__} from '@wordpress/i18n'
4
+ import {createContentGroupEdit} from './edit'
5
+ import type {ContentGroupAttributes, ContentGroupOptions} from './types'
6
+ import {icon as defaultIcon} from './icon'
7
7
 
8
8
  export function createContentGroupBlock(options: ContentGroupOptions): BlockConfiguration<ContentGroupAttributes> {
9
9
  return {
10
10
  name: options.name,
11
- title: options.title ?? __("Obsahová skupina", "brilo-blocks"),
11
+ title: options.title ?? __('Obsahová skupina', 'brilo-blocks'),
12
12
  description: options.description,
13
- category: options.category ?? "layout",
13
+ category: options.category ?? 'layout',
14
14
  icon: options.icon ?? {src: defaultIcon},
15
15
  ...(options.parent && {parent: options.parent}),
16
16
  supports: {html: false, customClassName: false},
17
17
  attributes: {
18
18
  size: {
19
- type: "string",
20
- default: "8",
19
+ type: 'string',
20
+ default: '8',
21
21
  },
22
22
  },
23
23
  edit: createContentGroupEdit(options),
24
24
  save: () => <InnerBlocks.Content />,
25
- } as BlockConfiguration<ContentGroupAttributes>;
25
+ } as BlockConfiguration<ContentGroupAttributes>
26
26
  }
@@ -20,4 +20,4 @@ export const icon = (
20
20
  />
21
21
  <path d="M1 1C1 0.447715 1.44772 0 2 0H6C6.55228 0 7 0.447715 7 1C7 1.55228 6.55228 2 6 2H2C1.44772 2 1 1.55228 1 1Z" fill="black" />
22
22
  </svg>
23
- );
23
+ )
@@ -0,0 +1,7 @@
1
+ import {__} from '@wordpress/i18n'
2
+
3
+ export const ICON_TYPES = [
4
+ {value: 'none', label: __('Žádná', 'brilo-blocks')},
5
+ {value: 'preselected', label: __('Předdefinovaná', 'brilo-blocks')},
6
+ {value: 'media', label: __('Médium', 'brilo-blocks')},
7
+ ] as const
@@ -0,0 +1,116 @@
1
+ import {ColorPalette, InspectorControls, RichText, useBlockProps} from '@wordpress/block-editor'
2
+ import {
3
+ PanelBody,
4
+ RangeControl,
5
+ TextControl,
6
+ ToggleControl,
7
+ __experimentalToggleGroupControl as ToggleGroupControl,
8
+ __experimentalToggleGroupControlOption as ToggleGroupControlOption,
9
+ } from '@wordpress/components'
10
+ import {__} from '@wordpress/i18n'
11
+ import clsx from 'clsx'
12
+ import {ItemIconControl, ItemIconPreview} from '~/components/ItemIconControl'
13
+ import {useTenantColorPalette} from '~/hooks/useTenantColorPalette'
14
+ import {ICON_TYPES} from './constants'
15
+ import type {LinkItemAttributes, LinkItemOptions} from './types'
16
+
17
+ export function createLinkItemEdit(options: LinkItemOptions) {
18
+ return function Edit({
19
+ attributes,
20
+ setAttributes,
21
+ }: {
22
+ attributes: LinkItemAttributes
23
+ setAttributes: (a: Partial<LinkItemAttributes>) => void
24
+ }) {
25
+ const {title, url, icon, color, underline_initial} = attributes
26
+ const {paletteColors} = useTenantColorPalette()
27
+ const hasIcon = icon.type !== 'none' && (icon.src || icon.media?.id)
28
+
29
+ const setIconBase = (attrs: {icon: import('~/types').Icon}) => {
30
+ setAttributes({icon: {...icon, ...attrs.icon} as typeof icon})
31
+ }
32
+
33
+ const blockProps = useBlockProps({
34
+ className: clsx('link-item', underline_initial && '--underline-initial'),
35
+ style: color ? {color} : undefined,
36
+ })
37
+
38
+ const iconPreviewStyle = {maxWidth: icon.size, flex: `0 0 ${icon.size}px`} as React.CSSProperties
39
+
40
+ return (
41
+ <>
42
+ <InspectorControls>
43
+ <PanelBody title={__('Odkaz', 'brilo-blocks')}>
44
+ <TextControl label={__('URL', 'brilo-blocks')} value={url.src} onChange={(v) => setAttributes({url: {...url, src: v}})} />
45
+ <ToggleControl
46
+ label={__('Otevřít v nové záložce', 'brilo-blocks')}
47
+ checked={url.blank}
48
+ onChange={(v) => setAttributes({url: {...url, blank: v}})}
49
+ />
50
+ </PanelBody>
51
+
52
+ <PanelBody title={__('Ikona', 'brilo-blocks')} initialOpen={false}>
53
+ <ItemIconControl
54
+ icon={icon as unknown as import('~/types').Icon}
55
+ setAttributes={setIconBase}
56
+ iconTypes={ICON_TYPES}
57
+ options={options}
58
+ />
59
+ {hasIcon && (
60
+ <>
61
+ <ToggleGroupControl
62
+ isBlock
63
+ label={__('Pozice', 'brilo-blocks')}
64
+ value={icon.position}
65
+ onChange={(v) => setAttributes({icon: {...icon, position: String(v) as 'before' | 'after'}})}
66
+ >
67
+ <ToggleGroupControlOption value="before" label={__('Před', 'brilo-blocks')} />
68
+ <ToggleGroupControlOption value="after" label={__('Za', 'brilo-blocks')} />
69
+ </ToggleGroupControl>
70
+ <RangeControl
71
+ label={__('Velikost (px)', 'brilo-blocks')}
72
+ value={icon.size}
73
+ onChange={(v) => setAttributes({icon: {...icon, size: v ?? 24}})}
74
+ min={8}
75
+ max={80}
76
+ step={1}
77
+ />
78
+ </>
79
+ )}
80
+ </PanelBody>
81
+
82
+ <PanelBody title={__('Styl', 'brilo-blocks')} initialOpen={false}>
83
+ <p>{__('Barva', 'brilo-blocks')}</p>
84
+ <ColorPalette colors={paletteColors} value={color || undefined} onChange={(v) => setAttributes({color: v ?? ''})} />
85
+ <ToggleControl
86
+ label={__('Podtržení výchozí', 'brilo-blocks')}
87
+ checked={underline_initial}
88
+ onChange={(v) => setAttributes({underline_initial: v})}
89
+ />
90
+ </PanelBody>
91
+ </InspectorControls>
92
+
93
+ <div {...blockProps}>
94
+ {hasIcon && icon.position === 'before' && (
95
+ <span className="link-item__icon" style={iconPreviewStyle}>
96
+ <ItemIconPreview icon={icon as unknown as import('~/types').Icon} setAttributes={setIconBase} options={options} />
97
+ </span>
98
+ )}
99
+ <RichText
100
+ tagName="span"
101
+ className="link-item__title"
102
+ value={title}
103
+ onChange={(v) => setAttributes({title: v})}
104
+ placeholder={__('Text odkazu...', 'brilo-blocks')}
105
+ allowedFormats={['core/bold', 'core/italic']}
106
+ />
107
+ {hasIcon && icon.position === 'after' && (
108
+ <span className="link-item__icon" style={iconPreviewStyle}>
109
+ <ItemIconPreview icon={icon as unknown as import('~/types').Icon} setAttributes={setIconBase} options={options} />
110
+ </span>
111
+ )}
112
+ </div>
113
+ </>
114
+ )
115
+ }
116
+ }
@@ -0,0 +1,11 @@
1
+ .link-item {
2
+ display: flex;
3
+ gap: 4px;
4
+ }
5
+
6
+ .link-item__icon {
7
+ .i-item-icon {
8
+ height: auto;
9
+ width: auto;
10
+ }
11
+ }
@@ -0,0 +1,29 @@
1
+ import {type BlockConfiguration} from '@wordpress/blocks'
2
+ import {__} from '@wordpress/i18n'
3
+ import {createLinkItemEdit} from './edit'
4
+ import {icon as defaultIcon} from './icon'
5
+ import type {LinkItemAttributes, LinkItemOptions} from './types'
6
+
7
+ export function createLinkItemBlock(options: LinkItemOptions): BlockConfiguration<LinkItemAttributes> {
8
+ return {
9
+ name: options.name,
10
+ title: options.title ?? __('Odkaz', 'brilo-blocks'),
11
+ description: options.description,
12
+ category: options.category ?? 'text',
13
+ ...(options.parent && {parent: options.parent}),
14
+ icon: options.icon ?? {src: defaultIcon},
15
+ supports: {html: false, customClassName: false},
16
+ attributes: {
17
+ title: {type: 'string', default: ''},
18
+ url: {type: 'object', default: {src: '', blank: false}},
19
+ icon: {
20
+ type: 'object',
21
+ default: {type: 'none', src: '', media: {}, position: 'after', size: 24},
22
+ },
23
+ color: {type: 'string', default: ''},
24
+ underline_initial: {type: 'boolean', default: false},
25
+ },
26
+ edit: createLinkItemEdit(options),
27
+ save: () => null,
28
+ } as BlockConfiguration<LinkItemAttributes>
29
+ }
@@ -0,0 +1,6 @@
1
+ export const icon = (
2
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
3
+ <path d="M8 4H4C2.895 4 2 4.895 2 6v10c0 1.105.895 2 2 2h10c1.105 0 2-.895 2-2v-4" stroke="black" strokeWidth="1.5" fill="none" />
4
+ <path d="M12 2h6v6M18 2L10 10" stroke="black" strokeWidth="1.5" strokeLinecap="round" />
5
+ </svg>
6
+ )
@@ -0,0 +1,10 @@
1
+ export type {LinkItemAttributes, LinkItemIcon, LinkItemOptions} from './types'
2
+ export {createLinkItemBlock} from './factory'
3
+
4
+ import type {LinkItemOptions} from './types'
5
+
6
+ export const linkItemDefaults: LinkItemOptions = {
7
+ name: 'brilo/link-item',
8
+ icons: [],
9
+ iconsSrc: '',
10
+ }
@@ -0,0 +1,24 @@
1
+ import type {Media} from '~/types'
2
+ import type {BriloBlockType} from '~/types'
3
+ import type {IconType} from '~/components/IconControl'
4
+
5
+ export interface LinkItemIcon {
6
+ type: 'preselected' | 'media' | 'none'
7
+ src: string
8
+ media: Media
9
+ position: 'before' | 'after'
10
+ size: number
11
+ }
12
+
13
+ export interface LinkItemAttributes extends Record<string, unknown> {
14
+ title: string
15
+ url: {src: string; blank: boolean}
16
+ icon: LinkItemIcon
17
+ color: string
18
+ underline_initial: boolean
19
+ }
20
+
21
+ export interface LinkItemOptions extends BriloBlockType {
22
+ icons: IconType[]
23
+ iconsSrc: string
24
+ }
@@ -1,4 +1,7 @@
1
1
  import {__} from '@wordpress/i18n'
2
+ import {HEADING_STYLES} from "~/constants";
3
+
4
+ export const DEFAULT_HEADING_STYLES = HEADING_STYLES
2
5
 
3
6
  export const MAP_TYPES = [
4
7
  {
@@ -1,28 +1,66 @@
1
- import {InspectorControls, useBlockProps} from '@wordpress/block-editor'
2
- import {PanelBody, BaseControl, TextControl, SelectControl, TextareaControl} from '@wordpress/components'
1
+ import {InspectorControls, RichText, useBlockProps} from '@wordpress/block-editor'
2
+ import {
3
+ PanelBody, BaseControl, TextControl, SelectControl, TextareaControl,
4
+ __experimentalToggleGroupControl as ToggleGroupControl,
5
+ __experimentalToggleGroupControlOption as ToggleGroupControlOption
6
+ } from '@wordpress/components'
3
7
  import {__} from '@wordpress/i18n'
4
8
  import {ImagePickerControl} from '~/components/ImagePicker'
5
9
  import {MAP_TYPES} from './constants'
6
10
  import type {MapGroupAttributes, MapGroupOptions} from './types'
7
11
  import {Icon, mapMarker} from '@wordpress/icons'
12
+ import {useGroupBlock} from "~/hooks/useGroupBlock";
13
+ import clsx from "clsx";
14
+ import type {HeadingLevels, HeadingStyles} from "~/blocks/groups/banner-group/types";
15
+ import {HEADING_LEVELS, HEADING_STYLES} from "~/constants";
8
16
 
9
17
  export function createMapGroupEdit(options: MapGroupOptions) {
10
18
  return function Edit({
11
- attributes,
12
- setAttributes,
13
- }: {
19
+ attributes,
20
+ setAttributes,
21
+ }: {
14
22
  attributes: MapGroupAttributes
15
23
  setAttributes: (a: Partial<MapGroupAttributes>) => void
16
24
  }) {
17
- const {mapType, iframeSrc, iframeElement, img, url, lat, long} = attributes
25
+ const {mapType, iframeSrc, iframeElement, img, url, address, lat, long, description, header} = attributes
18
26
 
19
- const blockProps = useBlockProps({
20
- className: options.blockClassName ?? 'g-map wp-block-section',
27
+ const {blockProps, innerBlocksProps} = useGroupBlock({
28
+ blockClassName: clsx(options.blockClassName ?? 'g-map wp-block-section'),
29
+ containerClassName: [options.containerClassName ?? 'g-map__button-wraper wp-block-inner-content'],
30
+ allowedBlocks: options.allowedBlocks,
31
+ orientation: 'vertical',
32
+ template: options.template,
33
+ layout: {type: 'default'},
21
34
  })
22
35
 
23
36
  return (
24
37
  <>
25
38
  <InspectorControls>
39
+ <PanelBody title={__('Nadpis', 'brilo-blocks')} initialOpen={false}>
40
+ <ToggleGroupControl
41
+ label={__('Úroveň nadpisu', 'brilo-blocks')}
42
+ value={String(header.heading.level)}
43
+ onChange={(value) =>
44
+ setAttributes({header: {...header, heading: {...header.heading, level: Number(value) as HeadingLevels}}})
45
+ }
46
+ isBlock
47
+ >
48
+ {HEADING_LEVELS.map((l) => (
49
+ <ToggleGroupControlOption key={l} value={String(l)} label={`H${l}`} />
50
+ ))}
51
+ </ToggleGroupControl>
52
+ <ToggleGroupControl
53
+ label={__('Styl nadpisu', 'brilo-blocks')}
54
+ value={header.heading.style}
55
+ onChange={(value) => setAttributes({header: {...header, heading: {...header.heading, style: value as HeadingStyles}}})}
56
+ isBlock
57
+ >
58
+ {HEADING_STYLES.map((s) => (
59
+ <ToggleGroupControlOption key={s} value={s} label={s} />
60
+ ))}
61
+ </ToggleGroupControl>
62
+ </PanelBody>
63
+
26
64
  <PanelBody title={__('Nastavení mapy', 'brilo-blocks')}>
27
65
  <SelectControl
28
66
  label={__('Typ mapy', 'brilo-blocks')}
@@ -74,12 +112,40 @@ export function createMapGroupEdit(options: MapGroupOptions) {
74
112
  value={url || ''}
75
113
  onChange={(value: string) => setAttributes({url: value})}
76
114
  />
115
+
116
+ <TextControl
117
+ label={__('Adresa:', 'brilo-blocks')}
118
+ value={address || ''}
119
+ onChange={(value: string) => setAttributes({address: value})}
120
+ />
77
121
  </>
78
122
  )}
79
123
  </PanelBody>
80
124
  </InspectorControls>
81
125
 
82
126
  <div {...blockProps}>
127
+ <div className="g-map__banner">
128
+ <div className="g-map__content">
129
+ <RichText
130
+ tagName={`h${header.heading.level}` as HeadingStyles}
131
+ className={clsx('g-map__heading', `--heading-style-${header.heading.style}`, 'u-text-editable')}
132
+ value={header.heading.title}
133
+ onChange={(value: string) => setAttributes({header: {...header, heading: {...header.heading, title: value}}})}
134
+ placeholder={__('Nadpis...', 'brilo-blocks')}
135
+ allowedFormats={['core/bold', 'core/italic']}
136
+ />
137
+ <RichText
138
+ tagName="div"
139
+ className="g-map__description u-text-editable"
140
+ value={description}
141
+ onChange={(value: string) => setAttributes({description: value})}
142
+ placeholder={__('Popis...', 'brilo-blocks')}
143
+ />
144
+ </div>
145
+
146
+ <div {...innerBlocksProps} />
147
+ </div>
148
+
83
149
  <div className="g-map__map">
84
150
  {mapType === 'gps' && (lat || long) && (
85
151
  <div>
@@ -1,4 +1,11 @@
1
1
  @layer base {
2
+ .g-map__banner {
3
+ display: grid;
4
+ grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
5
+ gap: 16px;
6
+ margin-bottom: 16px;
7
+ }
8
+
2
9
  .g-map__map {
3
10
  min-height: 200px;
4
11
  padding: 16px;
@@ -3,10 +3,18 @@ import {__} from '@wordpress/i18n'
3
3
  import {createMapGroupEdit} from './edit'
4
4
  import type {MapGroupAttributes, MapGroupOptions} from './types'
5
5
  import {MAP_TYPES} from './constants'
6
+ import type {StringArray} from "~/types";
7
+ import {DEFAULT_HEADING_STYLES, DEFAULT_VARIANTS} from "~/blocks/groups/banner-group/constants";
8
+ import {InnerBlocks} from "@wordpress/block-editor";
9
+ import {HEADING_LEVELS} from "~/constants";
6
10
 
7
11
  export type {MapGroupAttributes, MapGroupOptions}
8
12
 
9
- export function createMapGroupBlock(options: MapGroupOptions): BlockConfiguration<MapGroupAttributes> {
13
+ export function createMapGroupBlock<THeadingStyles extends StringArray = typeof DEFAULT_HEADING_STYLES>(
14
+ options: MapGroupOptions<THeadingStyles>
15
+ ): BlockConfiguration<MapGroupAttributes<THeadingStyles[number]>> {
16
+ const headingStyles = options.headingStyles ?? DEFAULT_HEADING_STYLES
17
+
10
18
  return {
11
19
  name: options.name,
12
20
  title: options.title ?? __('Mapa', 'brilo-blocks'),
@@ -16,6 +24,16 @@ export function createMapGroupBlock(options: MapGroupOptions): BlockConfiguratio
16
24
  icon: options.icon ?? 'location-alt',
17
25
  supports: {html: false, customClassName: false},
18
26
  attributes: {
27
+ header: {
28
+ type: 'object',
29
+ default: {
30
+ heading: {title: '', level: HEADING_LEVELS[1], style: headingStyles[1] ?? headingStyles[0]},
31
+ },
32
+ },
33
+ description: {
34
+ type: 'string',
35
+ default: '',
36
+ },
19
37
  mapType: {
20
38
  type: 'string',
21
39
  default: MAP_TYPES[0].value,
@@ -32,6 +50,10 @@ export function createMapGroupBlock(options: MapGroupOptions): BlockConfiguratio
32
50
  type: 'object',
33
51
  default: {id: 0, url: '', alt: ''},
34
52
  },
53
+ address: {
54
+ type: 'string',
55
+ default: '',
56
+ },
35
57
  url: {
36
58
  type: 'string',
37
59
  default: '',
@@ -45,7 +67,7 @@ export function createMapGroupBlock(options: MapGroupOptions): BlockConfiguratio
45
67
  default: '',
46
68
  },
47
69
  },
48
- edit: createMapGroupEdit(options),
49
- save: () => null,
50
- } as unknown as BlockConfiguration<MapGroupAttributes>
70
+ edit: createMapGroupEdit(options as unknown as MapGroupOptions),
71
+ save: () => <InnerBlocks.Content />,
72
+ } as unknown as BlockConfiguration<MapGroupAttributes<THeadingStyles[number]>>
51
73
  }
@@ -6,4 +6,5 @@ import type {MapGroupOptions} from './types'
6
6
  export const mapGroupDefaults: MapGroupOptions = {
7
7
  name: 'brilo/map-group',
8
8
  parent: ['brilo/base-section'],
9
+ allowedBlocks: ['brilo/button-group', 'brilo/basic-button']
9
10
  }
@@ -1,16 +1,30 @@
1
- import {BriloBlockType, Media} from '~/types'
2
- import {MAP_TYPES} from './constants'
1
+ import {BriloBlockType, Media, type OptionArray, type StringArray} from '~/types'
2
+ import {DEFAULT_HEADING_STYLES, MAP_TYPES} from './constants'
3
+ import {HEADING_LEVELS} from "~/constants";
3
4
 
4
5
  export type MapType = (typeof MAP_TYPES)[number]['value']
5
6
 
6
- export interface MapGroupAttributes extends Record<string, unknown> {
7
+ export type HeadingLevels = (typeof HEADING_LEVELS)[number]
8
+ export type HeadingStyles = (typeof DEFAULT_HEADING_STYLES)[number]
9
+
10
+ export interface MapGroupAttributes<THeadingStyle extends string = HeadingStyles> extends Record<string, unknown> {
11
+ header: {
12
+ heading: {title: string; level: HeadingLevels; style: THeadingStyle}
13
+ }
14
+ description: string
7
15
  mapType: MapType
8
16
  iframeSrc: string
9
17
  iframeElement: string
10
18
  img: Media
19
+ address: string
11
20
  url: string
12
21
  lat: string
13
22
  long: string
14
23
  }
15
24
 
16
- export interface MapGroupOptions extends BriloBlockType {}
25
+ export interface MapGroupOptions<
26
+ THeadingStyles extends StringArray = typeof DEFAULT_HEADING_STYLES,
27
+ > extends BriloBlockType {
28
+ headingStyles?: THeadingStyles
29
+ headingLevels?: HeadingLevels
30
+ }
@@ -0,0 +1,9 @@
1
+ .wp-block-brilo-responsive-grid-item {
2
+ width: 100%;
3
+ margin-block: 0;
4
+ }
5
+
6
+ .u-grid-responsive__item-inner {
7
+ padding: 8px;
8
+ outline: 1px solid var(--border-color);
9
+ }