@brilo/base-blocks 0.1.28 → 0.1.29

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 (98) hide show
  1. package/build/.tsbuildinfo +1 -1
  2. package/build/blocks/career/career-header/edit.d.ts +6 -0
  3. package/build/blocks/career/career-header/edit.d.ts.map +1 -0
  4. package/build/blocks/career/career-header/edit.js +11 -0
  5. package/build/blocks/career/career-header/factory.d.ts +5 -0
  6. package/build/blocks/career/career-header/factory.d.ts.map +1 -0
  7. package/build/blocks/career/career-header/factory.js +24 -0
  8. package/build/blocks/career/career-header/icon.d.ts +2 -0
  9. package/build/blocks/career/career-header/icon.d.ts.map +1 -0
  10. package/build/blocks/career/career-header/icon.js +2 -0
  11. package/build/blocks/career/career-header/index.d.ts +5 -0
  12. package/build/blocks/career/career-header/index.d.ts.map +1 -0
  13. package/build/blocks/career/career-header/index.js +4 -0
  14. package/build/blocks/career/career-header/types.d.ts +10 -0
  15. package/build/blocks/career/career-header/types.d.ts.map +1 -0
  16. package/build/blocks/career/career-header/types.js +1 -0
  17. package/build/blocks/career/job-position-group/JobPositionsSelectModal.d.ts +9 -0
  18. package/build/blocks/career/job-position-group/JobPositionsSelectModal.d.ts.map +1 -0
  19. package/build/blocks/career/job-position-group/JobPositionsSelectModal.js +123 -0
  20. package/build/blocks/career/job-position-group/constants.d.ts +10 -0
  21. package/build/blocks/career/job-position-group/constants.d.ts.map +1 -0
  22. package/build/blocks/career/job-position-group/constants.js +9 -0
  23. package/build/blocks/career/job-position-group/edit.d.ts +6 -0
  24. package/build/blocks/career/job-position-group/edit.d.ts.map +1 -0
  25. package/build/blocks/career/job-position-group/edit.js +17 -0
  26. package/build/blocks/career/job-position-group/factory.d.ts +5 -0
  27. package/build/blocks/career/job-position-group/factory.d.ts.map +1 -0
  28. package/build/blocks/career/job-position-group/factory.js +44 -0
  29. package/build/blocks/career/job-position-group/icon.d.ts +2 -0
  30. package/build/blocks/career/job-position-group/icon.d.ts.map +1 -0
  31. package/build/blocks/career/job-position-group/icon.js +2 -0
  32. package/build/blocks/career/job-position-group/index.d.ts +6 -0
  33. package/build/blocks/career/job-position-group/index.d.ts.map +1 -0
  34. package/build/blocks/career/job-position-group/index.js +5 -0
  35. package/build/blocks/career/job-position-group/types.d.ts +20 -0
  36. package/build/blocks/career/job-position-group/types.d.ts.map +1 -0
  37. package/build/blocks/career/job-position-group/types.js +1 -0
  38. package/build/blocks/post/post-content/edit.d.ts +6 -0
  39. package/build/blocks/post/post-content/edit.d.ts.map +1 -0
  40. package/build/blocks/post/post-content/edit.js +9 -0
  41. package/build/blocks/post/post-content/factory.d.ts +5 -0
  42. package/build/blocks/post/post-content/factory.d.ts.map +1 -0
  43. package/build/blocks/post/post-content/factory.js +18 -0
  44. package/build/blocks/post/post-content/icon.d.ts +2 -0
  45. package/build/blocks/post/post-content/icon.d.ts.map +1 -0
  46. package/build/blocks/post/post-content/icon.js +2 -0
  47. package/build/blocks/post/post-content/index.d.ts +5 -0
  48. package/build/blocks/post/post-content/index.d.ts.map +1 -0
  49. package/build/blocks/post/post-content/index.js +4 -0
  50. package/build/blocks/post/post-content/types.d.ts +5 -0
  51. package/build/blocks/post/post-content/types.d.ts.map +1 -0
  52. package/build/blocks/post/post-content/types.js +1 -0
  53. package/build/blocks/share/share/constants.d.ts +2 -0
  54. package/build/blocks/share/share/constants.d.ts.map +1 -0
  55. package/build/blocks/share/share/constants.js +1 -0
  56. package/build/blocks/share/share/edit.d.ts +6 -0
  57. package/build/blocks/share/share/edit.d.ts.map +1 -0
  58. package/build/blocks/share/share/edit.js +18 -0
  59. package/build/blocks/share/share/factory.d.ts +5 -0
  60. package/build/blocks/share/share/factory.d.ts.map +1 -0
  61. package/build/blocks/share/share/factory.js +26 -0
  62. package/build/blocks/share/share/icon.d.ts +2 -0
  63. package/build/blocks/share/share/icon.d.ts.map +1 -0
  64. package/build/blocks/share/share/icon.js +2 -0
  65. package/build/blocks/share/share/index.d.ts +5 -0
  66. package/build/blocks/share/share/index.d.ts.map +1 -0
  67. package/build/blocks/share/share/index.js +4 -0
  68. package/build/blocks/share/share/types.d.ts +11 -0
  69. package/build/blocks/share/share/types.d.ts.map +1 -0
  70. package/build/blocks/share/share/types.js +1 -0
  71. package/build/index.d.ts +8 -0
  72. package/build/index.d.ts.map +1 -1
  73. package/build/index.js +4 -0
  74. package/package.json +1 -1
  75. package/src/blocks/career/career-header/edit.tsx +61 -0
  76. package/src/blocks/career/career-header/factory.tsx +28 -0
  77. package/src/blocks/career/career-header/icon.tsx +8 -0
  78. package/src/blocks/career/career-header/index.ts +8 -0
  79. package/src/blocks/career/career-header/types.ts +11 -0
  80. package/src/blocks/career/job-position-group/JobPositionsSelectModal.tsx +238 -0
  81. package/src/blocks/career/job-position-group/constants.ts +11 -0
  82. package/src/blocks/career/job-position-group/edit.tsx +93 -0
  83. package/src/blocks/career/job-position-group/factory.tsx +56 -0
  84. package/src/blocks/career/job-position-group/icon.tsx +7 -0
  85. package/src/blocks/career/job-position-group/index.ts +15 -0
  86. package/src/blocks/career/job-position-group/types.ts +23 -0
  87. package/src/blocks/post/post-content/edit.tsx +18 -0
  88. package/src/blocks/post/post-content/factory.tsx +22 -0
  89. package/src/blocks/post/post-content/icon.tsx +9 -0
  90. package/src/blocks/post/post-content/index.ts +8 -0
  91. package/src/blocks/post/post-content/types.ts +6 -0
  92. package/src/blocks/share/share/constants.ts +1 -0
  93. package/src/blocks/share/share/edit.tsx +57 -0
  94. package/src/blocks/share/share/factory.tsx +30 -0
  95. package/src/blocks/share/share/icon.tsx +9 -0
  96. package/src/blocks/share/share/index.ts +8 -0
  97. package/src/blocks/share/share/types.ts +12 -0
  98. package/src/index.ts +14 -0
@@ -0,0 +1,56 @@
1
+ import type {BlockConfiguration} from '@wordpress/blocks'
2
+ import {__} from '@wordpress/i18n'
3
+ import {
4
+ JOB_POSITION_GROUP_MODE,
5
+ JOB_POSITION_GROUP_MODES,
6
+ JOB_POSITION_GROUP_PER_PAGE,
7
+ JOB_POSITION_GROUP_SORT_BY,
8
+ JOB_POSITION_GROUP_SORT_BYS,
9
+ JOB_POSITION_GROUP_SORT_ORDER,
10
+ JOB_POSITION_GROUP_SORT_ORDERS,
11
+ } from './constants'
12
+ import {createJobPositionGroupEdit} from './edit'
13
+ import {icon as defaultIcon} from './icon'
14
+ import type {JobPositionGroupAttributes, JobPositionGroupOptions} from './types'
15
+
16
+ export type {JobPositionGroupAttributes, JobPositionGroupOptions}
17
+
18
+ export function createJobPositionGroupBlock(options: JobPositionGroupOptions): BlockConfiguration<JobPositionGroupAttributes> {
19
+ return {
20
+ name: options.name,
21
+ title: options.title ?? __('Pracovní pozice', 'brilo-blocks'),
22
+ description: options.description,
23
+ category: options.category ?? 'widgets',
24
+ ...(options.parent && {parent: options.parent}),
25
+ icon: options.icon ?? {src: defaultIcon},
26
+ supports: {html: false, customClassName: false},
27
+ attributes: {
28
+ mode: {
29
+ type: 'string',
30
+ default: JOB_POSITION_GROUP_MODE,
31
+ enum: [...JOB_POSITION_GROUP_MODES],
32
+ },
33
+ selectedPositions: {
34
+ type: 'array',
35
+ default: [],
36
+ items: {type: 'number'},
37
+ },
38
+ perPage: {
39
+ type: 'number',
40
+ default: JOB_POSITION_GROUP_PER_PAGE,
41
+ },
42
+ sortBy: {
43
+ type: 'string',
44
+ default: JOB_POSITION_GROUP_SORT_BY,
45
+ enum: [...JOB_POSITION_GROUP_SORT_BYS],
46
+ },
47
+ sortOrder: {
48
+ type: 'string',
49
+ default: JOB_POSITION_GROUP_SORT_ORDER,
50
+ enum: [...JOB_POSITION_GROUP_SORT_ORDERS],
51
+ },
52
+ },
53
+ edit: createJobPositionGroupEdit(options),
54
+ save: () => null,
55
+ } as unknown as BlockConfiguration<JobPositionGroupAttributes>
56
+ }
@@ -0,0 +1,7 @@
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
+ <rect x="2" y="6" width="16" height="11" rx="1" stroke="black" fill="none" />
4
+ <path d="M7 6V4C7 3.44772 7.44772 3 8 3H12C12.5523 3 13 3.44772 13 4V6" stroke="black" fill="none" />
5
+ <line x1="2" y1="11" x2="18" y2="11" stroke="black" />
6
+ </svg>
7
+ )
@@ -0,0 +1,15 @@
1
+ export type {
2
+ JobPositionGroupAttributes,
3
+ JobPositionGroupOptions,
4
+ JobPositionGroupMode,
5
+ JobPositionGroupSortBy,
6
+ JobPositionGroupSortOrder,
7
+ } from './types'
8
+ export {createJobPositionGroupBlock} from './factory'
9
+ export {JobPositionsSelectModal} from './JobPositionsSelectModal'
10
+
11
+ import type {JobPositionGroupOptions} from './types'
12
+
13
+ export const jobPositionGroupDefaults: JobPositionGroupOptions = {
14
+ name: 'brilo/job-position-group',
15
+ }
@@ -0,0 +1,23 @@
1
+ import type {BriloBlockType} from '~/types'
2
+ import type {JOB_POSITION_GROUP_MODES, JOB_POSITION_GROUP_SORT_BYS, JOB_POSITION_GROUP_SORT_ORDERS} from './constants'
3
+
4
+ export type JobPositionGroupMode = (typeof JOB_POSITION_GROUP_MODES)[number]
5
+ export type JobPositionGroupSortBy = (typeof JOB_POSITION_GROUP_SORT_BYS)[number]
6
+ export type JobPositionGroupSortOrder = (typeof JOB_POSITION_GROUP_SORT_ORDERS)[number]
7
+
8
+ export interface JobPositionGroupAttributes extends Record<string, unknown> {
9
+ mode: JobPositionGroupMode
10
+ selectedPositions: number[]
11
+ perPage: number
12
+ sortBy: JobPositionGroupSortBy
13
+ sortOrder: JobPositionGroupSortOrder
14
+ }
15
+
16
+ export interface SelectControlProps {
17
+ selectedItems: number[]
18
+ onChange: (ids: number[]) => void
19
+ }
20
+
21
+ export interface JobPositionGroupOptions extends BriloBlockType {
22
+ renderPositionsControl?: (props: SelectControlProps) => JSX.Element
23
+ }
@@ -0,0 +1,18 @@
1
+ import {useBlockProps} from '@wordpress/block-editor'
2
+ import {__} from '@wordpress/i18n'
3
+ import type {PostContentAttributes, PostContentOptions} from './types'
4
+
5
+ export function createPostContentEdit(_options: PostContentOptions) {
6
+ return function Edit(_props: {attributes: PostContentAttributes; setAttributes: (a: Partial<PostContentAttributes>) => void}) {
7
+ const blockProps = useBlockProps({className: 'wp-block-section'})
8
+
9
+ return (
10
+ <div {...blockProps}>
11
+ <div className="components-placeholder">
12
+ <div className="components-placeholder__label">{__('Obsah postu', 'brilo-blocks')}</div>
13
+ <div className="components-placeholder__instructions">{__('Zobrazí obsah aktuální postu.', 'brilo-blocks')}</div>
14
+ </div>
15
+ </div>
16
+ )
17
+ }
18
+ }
@@ -0,0 +1,22 @@
1
+ import type {BlockConfiguration} from '@wordpress/blocks'
2
+ import {__} from '@wordpress/i18n'
3
+ import {createPostContentEdit} from './edit'
4
+ import {icon as defaultIcon} from './icon'
5
+ import type {PostContentAttributes, PostContentOptions} from './types'
6
+
7
+ export type {PostContentAttributes, PostContentOptions}
8
+
9
+ export function createPostContentBlock(options: PostContentOptions): BlockConfiguration<PostContentAttributes> {
10
+ return {
11
+ name: options.name,
12
+ title: options.title ?? __('Content postu', 'brilo-blocks'),
13
+ description: options.description,
14
+ category: options.category ?? 'widgets',
15
+ ...(options.parent && {parent: options.parent}),
16
+ icon: options.icon ?? {src: defaultIcon},
17
+ supports: {html: false, customClassName: false},
18
+ attributes: {},
19
+ edit: createPostContentEdit(options),
20
+ save: () => null,
21
+ } as unknown as BlockConfiguration<PostContentAttributes>
22
+ }
@@ -0,0 +1,9 @@
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
+ <rect x="3" y="2" width="14" height="16" rx="1" stroke="black" fill="none" />
4
+ <line x1="6" y1="6" x2="14" y2="6" stroke="black" />
5
+ <line x1="6" y1="9" x2="14" y2="9" stroke="black" />
6
+ <line x1="6" y1="12" x2="14" y2="12" stroke="black" />
7
+ <line x1="6" y1="15" x2="10" y2="15" stroke="black" />
8
+ </svg>
9
+ )
@@ -0,0 +1,8 @@
1
+ export type {PostContentAttributes, PostContentOptions} from './types'
2
+ export {createPostContentBlock} from './factory'
3
+
4
+ import type {PostContentOptions} from './types'
5
+
6
+ export const postContentDefaults: PostContentOptions = {
7
+ name: 'brilo/post-content',
8
+ }
@@ -0,0 +1,6 @@
1
+ import type {BriloBlockType} from '~/types'
2
+
3
+ // biome-ignore lint/complexity/noBannedTypes: no block-specific attributes, matches BriloBlockType's generic constraint shape
4
+ export interface PostContentAttributes extends Record<string, unknown> {}
5
+
6
+ export type PostContentOptions = BriloBlockType
@@ -0,0 +1 @@
1
+ export const SHARE_TITLE_DEFAULT = 'Sdílejte tento obsah'
@@ -0,0 +1,57 @@
1
+ import {InspectorControls, useBlockProps} from '@wordpress/block-editor'
2
+ import {PanelBody, TextControl, ToggleControl} from '@wordpress/components'
3
+ import {__} from '@wordpress/i18n'
4
+ import type {ShareAttributes, ShareOptions} from './types'
5
+
6
+ export function createShareEdit(_options: ShareOptions) {
7
+ return function Edit({attributes, setAttributes}: {attributes: ShareAttributes; setAttributes: (a: Partial<ShareAttributes>) => void}) {
8
+ const {title, showFacebook, showLinkedin, showX, showEmail, showCopyLink} = attributes
9
+
10
+ const blockProps = useBlockProps({className: 'wp-block-section'})
11
+
12
+ const enabledNetworks = [
13
+ showFacebook && 'Facebook',
14
+ showLinkedin && 'LinkedIn',
15
+ showX && 'X',
16
+ showEmail && __('E-mail', 'brilo-blocks'),
17
+ showCopyLink && __('Kopírovat odkaz', 'brilo-blocks'),
18
+ ].filter(Boolean)
19
+
20
+ return (
21
+ <>
22
+ <InspectorControls>
23
+ <PanelBody title={__('Nastavení sdílení', 'brilo-blocks')} initialOpen>
24
+ <TextControl
25
+ label={__('Titulek', 'brilo-blocks')}
26
+ value={title}
27
+ onChange={(value) => setAttributes({title: value})}
28
+ __next40pxDefaultSize
29
+ />
30
+ <ToggleControl label="Facebook" checked={showFacebook} onChange={(value) => setAttributes({showFacebook: value})} />
31
+ <ToggleControl label="LinkedIn" checked={showLinkedin} onChange={(value) => setAttributes({showLinkedin: value})} />
32
+ <ToggleControl label="X" checked={showX} onChange={(value) => setAttributes({showX: value})} />
33
+ <ToggleControl
34
+ label={__('E-mail', 'brilo-blocks')}
35
+ checked={showEmail}
36
+ onChange={(value) => setAttributes({showEmail: value})}
37
+ />
38
+ <ToggleControl
39
+ label={__('Kopírovat odkaz', 'brilo-blocks')}
40
+ checked={showCopyLink}
41
+ onChange={(value) => setAttributes({showCopyLink: value})}
42
+ />
43
+ </PanelBody>
44
+ </InspectorControls>
45
+
46
+ <div {...blockProps}>
47
+ <div className="components-placeholder">
48
+ <div className="components-placeholder__label">{title || __('Blok na sdílení', 'brilo-blocks')}</div>
49
+ <div className="components-placeholder__instructions">
50
+ {enabledNetworks.length > 0 ? enabledNetworks.join(', ') : __('Žádné sítě nejsou povoleny.', 'brilo-blocks')}
51
+ </div>
52
+ </div>
53
+ </div>
54
+ </>
55
+ )
56
+ }
57
+ }
@@ -0,0 +1,30 @@
1
+ import type {BlockConfiguration} from '@wordpress/blocks'
2
+ import {__} from '@wordpress/i18n'
3
+ import {SHARE_TITLE_DEFAULT} from './constants'
4
+ import {createShareEdit} from './edit'
5
+ import {icon as defaultIcon} from './icon'
6
+ import type {ShareAttributes, ShareOptions} from './types'
7
+
8
+ export type {ShareAttributes, ShareOptions}
9
+
10
+ export function createShareBlock(options: ShareOptions): BlockConfiguration<ShareAttributes> {
11
+ return {
12
+ name: options.name,
13
+ title: options.title ?? __('Blok na sdílení', 'brilo-blocks'),
14
+ description: options.description,
15
+ category: options.category ?? 'widgets',
16
+ ...(options.parent && {parent: options.parent}),
17
+ icon: options.icon ?? {src: defaultIcon},
18
+ supports: {html: false, customClassName: false},
19
+ attributes: {
20
+ title: {type: 'string', default: SHARE_TITLE_DEFAULT},
21
+ showFacebook: {type: 'boolean', default: true},
22
+ showLinkedin: {type: 'boolean', default: true},
23
+ showX: {type: 'boolean', default: true},
24
+ showEmail: {type: 'boolean', default: true},
25
+ showCopyLink: {type: 'boolean', default: true},
26
+ },
27
+ edit: createShareEdit(options),
28
+ save: () => null,
29
+ } as unknown as BlockConfiguration<ShareAttributes>
30
+ }
@@ -0,0 +1,9 @@
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
+ <circle cx="5" cy="10" r="2" stroke="black" fill="none" />
4
+ <circle cx="15" cy="4" r="2" stroke="black" fill="none" />
5
+ <circle cx="15" cy="16" r="2" stroke="black" fill="none" />
6
+ <line x1="6.7" y1="9" x2="13.3" y2="5" stroke="black" />
7
+ <line x1="6.7" y1="11" x2="13.3" y2="15" stroke="black" />
8
+ </svg>
9
+ )
@@ -0,0 +1,8 @@
1
+ export type {ShareAttributes, ShareOptions} from './types'
2
+ export {createShareBlock} from './factory'
3
+
4
+ import type {ShareOptions} from './types'
5
+
6
+ export const shareDefaults: ShareOptions = {
7
+ name: 'brilo/share',
8
+ }
@@ -0,0 +1,12 @@
1
+ import type {BriloBlockType} from '~/types'
2
+
3
+ export interface ShareAttributes extends Record<string, unknown> {
4
+ title: string
5
+ showFacebook: boolean
6
+ showLinkedin: boolean
7
+ showX: boolean
8
+ showEmail: boolean
9
+ showCopyLink: boolean
10
+ }
11
+
12
+ export type ShareOptions = BriloBlockType
package/src/index.ts CHANGED
@@ -165,3 +165,17 @@ export type {ContentAttributes, ContentOptions} from './blocks/layout/layout-con
165
165
  export {createContentBlock, contentDefaults} from './blocks/layout/layout-content'
166
166
  export type {AsideAttributes, AsideOptions} from './blocks/layout/layout-aside'
167
167
  export {createAsideBlock, asideDefaults} from './blocks/layout/layout-aside'
168
+ export type {
169
+ JobPositionGroupAttributes,
170
+ JobPositionGroupOptions,
171
+ JobPositionGroupMode,
172
+ JobPositionGroupSortBy,
173
+ JobPositionGroupSortOrder,
174
+ } from './blocks/career/job-position-group'
175
+ export {createJobPositionGroupBlock, jobPositionGroupDefaults, JobPositionsSelectModal} from './blocks/career/job-position-group'
176
+ export type {CareerHeaderAttributes, CareerHeaderOptions} from './blocks/career/career-header'
177
+ export {createCareerHeaderBlock, careerHeaderDefaults} from './blocks/career/career-header'
178
+ export type {PostContentAttributes, PostContentOptions} from './blocks/post/post-content'
179
+ export {createPostContentBlock, postContentDefaults} from './blocks/post/post-content'
180
+ export type {ShareAttributes, ShareOptions} from './blocks/share/share'
181
+ export {createShareBlock, shareDefaults} from './blocks/share/share'