@plone/volto 19.0.0-alpha.2 → 19.0.0-alpha.20

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 (366) hide show
  1. package/.eslintignore +1 -0
  2. package/.eslintrc +37 -3
  3. package/CHANGELOG.md +338 -1
  4. package/README.md +20 -16
  5. package/babel.js +1 -3
  6. package/cypress/docker/prefixed-rules.yml +26 -0
  7. package/cypress/docker/prefixed.yml +24 -0
  8. package/cypress/support/commands.js +12 -6
  9. package/cypress/support/guillotina.js +1 -0
  10. package/cypress.config.js +1 -0
  11. package/global-test-setup.js +1 -2
  12. package/locales/af.json +1 -0
  13. package/locales/ar.json +1 -0
  14. package/locales/bg.json +1 -0
  15. package/locales/bn.json +1 -0
  16. package/locales/ca/LC_MESSAGES/volto.po +124 -17
  17. package/locales/ca.json +1 -1
  18. package/locales/cs.json +1 -0
  19. package/locales/cy.json +1 -0
  20. package/locales/da.json +1 -0
  21. package/locales/de/LC_MESSAGES/volto.po +135 -28
  22. package/locales/de.json +1 -1
  23. package/locales/el.json +1 -0
  24. package/locales/en/LC_MESSAGES/volto.po +125 -18
  25. package/locales/en.json +1 -1
  26. package/locales/en_AU.json +1 -0
  27. package/locales/en_GB.json +1 -0
  28. package/locales/eo.json +1 -0
  29. package/locales/es/LC_MESSAGES/volto.po +125 -18
  30. package/locales/es.json +1 -1
  31. package/locales/et.json +1 -0
  32. package/locales/eu/LC_MESSAGES/volto.po +124 -17
  33. package/locales/eu.json +1 -1
  34. package/locales/fa.json +1 -0
  35. package/locales/fi/LC_MESSAGES/volto.po +124 -17
  36. package/locales/fi.json +1 -1
  37. package/locales/fr/LC_MESSAGES/volto.po +125 -18
  38. package/locales/fr.json +1 -1
  39. package/locales/fu.json +1 -0
  40. package/locales/gl.json +1 -0
  41. package/locales/he.json +1 -0
  42. package/locales/hi/LC_MESSAGES/volto.po +128 -21
  43. package/locales/hi.json +1 -1
  44. package/locales/hr.json +1 -0
  45. package/locales/hu.json +1 -0
  46. package/locales/hy.json +1 -0
  47. package/locales/id.json +1 -0
  48. package/locales/it/LC_MESSAGES/volto.po +129 -22
  49. package/locales/it.json +1 -1
  50. package/locales/ja/LC_MESSAGES/volto.po +124 -17
  51. package/locales/ja.json +1 -1
  52. package/locales/ka.json +1 -0
  53. package/locales/kn.json +1 -0
  54. package/locales/ko.json +1 -0
  55. package/locales/lt.json +1 -0
  56. package/locales/lv.json +1 -0
  57. package/locales/mi.json +1 -0
  58. package/locales/mk.json +1 -0
  59. package/locales/my.json +1 -0
  60. package/locales/nb_NO.json +1 -0
  61. package/locales/nl/LC_MESSAGES/volto.po +128 -21
  62. package/locales/nl.json +1 -1
  63. package/locales/nn.json +1 -0
  64. package/locales/pl.json +1 -0
  65. package/locales/pt/LC_MESSAGES/volto.po +124 -17
  66. package/locales/pt.json +1 -1
  67. package/locales/pt_BR/LC_MESSAGES/volto.po +147 -40
  68. package/locales/pt_BR.json +1 -1
  69. package/locales/rm.json +1 -0
  70. package/locales/ro/LC_MESSAGES/volto.po +128 -21
  71. package/locales/ro.json +1 -1
  72. package/locales/ru/LC_MESSAGES/volto.po +128 -21
  73. package/locales/ru.json +1 -1
  74. package/locales/sk.json +1 -0
  75. package/locales/sl.json +1 -0
  76. package/locales/sm.json +1 -0
  77. package/locales/sq.json +1 -0
  78. package/locales/sr.json +1 -0
  79. package/locales/sr@cyrl.json +1 -0
  80. package/locales/sr@latn.json +1 -0
  81. package/locales/sv.json +1 -1
  82. package/locales/ta.json +1 -0
  83. package/locales/te.json +1 -0
  84. package/locales/th.json +1 -0
  85. package/locales/to.json +1 -0
  86. package/locales/tr.json +1 -0
  87. package/locales/uk.json +1 -0
  88. package/locales/vi.json +1 -0
  89. package/locales/volto.pot +125 -18
  90. package/locales/zh_CN/LC_MESSAGES/volto.po +124 -17
  91. package/locales/zh_CN.json +1 -1
  92. package/locales/zh_Hant.json +1 -0
  93. package/locales/zh_Hant_HK.json +1 -0
  94. package/package.json +43 -100
  95. package/razzle.config.js +21 -21
  96. package/src/actions/content/content.js +0 -1
  97. package/src/actions/controlpanels/controlpanels.js +13 -7
  98. package/src/actions/controlpanels/controlpanels.test.js +11 -5
  99. package/src/actions/users/users.js +2 -2
  100. package/src/components/manage/Actions/Actions.test.jsx +1 -5
  101. package/src/components/manage/Add/Add.jsx +5 -6
  102. package/src/components/manage/BlockChooser/BlockChooser.jsx +1 -0
  103. package/src/components/manage/Blocks/Block/BlocksForm.test.jsx +1 -5
  104. package/src/components/manage/Blocks/Block/Edit.jsx +1 -0
  105. package/src/components/manage/Blocks/Block/EditBlockWrapper.jsx +9 -4
  106. package/src/components/manage/Blocks/Block/Settings.test.jsx +1 -5
  107. package/src/components/manage/Blocks/HTML/Edit.test.jsx +1 -5
  108. package/src/components/manage/Blocks/Image/Edit.jsx +5 -1
  109. package/src/components/manage/Blocks/Image/ImageSidebar.test.jsx +1 -5
  110. package/src/components/manage/Blocks/LeadImage/Edit.jsx +2 -2
  111. package/src/components/manage/Blocks/LeadImage/LeadImageSidebar.jsx +1 -1
  112. package/src/components/manage/Blocks/LeadImage/LeadImageSidebar.test.jsx +1 -5
  113. package/src/components/manage/Blocks/Listing/ImageGallery.jsx +6 -4
  114. package/src/components/manage/Blocks/Maps/Edit.jsx +2 -1
  115. package/src/components/manage/Blocks/Maps/MapsSidebar.test.jsx +1 -5
  116. package/src/components/manage/Blocks/Search/SearchBlockView.jsx +21 -4
  117. package/src/components/manage/Blocks/Search/components/DateRangeFacet.test.jsx +1 -6
  118. package/src/components/manage/Blocks/Search/components/SelectFacet.test.jsx +1 -6
  119. package/src/components/manage/Blocks/Teaser/Data.jsx +21 -7
  120. package/src/components/manage/Blocks/Teaser/DefaultBody.jsx +1 -1
  121. package/src/components/manage/Blocks/Teaser/schema.js +8 -3
  122. package/src/components/manage/Blocks/Video/Edit.jsx +2 -1
  123. package/src/components/manage/Blocks/Video/VideoSidebar.test.jsx +1 -5
  124. package/src/components/manage/Contents/Contents.jsx +689 -654
  125. package/src/components/manage/Contents/Contents.test.jsx +8 -5
  126. package/src/components/manage/Contents/ContentsBreadcrumbs.Multilingual.test.jsx +18 -5
  127. package/src/components/manage/Contents/ContentsBreadcrumbs.jsx +20 -26
  128. package/src/components/manage/Contents/ContentsBreadcrumbs.test.jsx +14 -0
  129. package/src/components/manage/Contents/ContentsDeleteModal.jsx +258 -206
  130. package/src/components/manage/Contents/ContentsDeleteModal.stories.jsx +26 -8
  131. package/src/components/manage/Contents/ContentsItem.jsx +10 -2
  132. package/src/components/manage/Contents/ContentsPropertiesModal.test.jsx +1 -5
  133. package/src/components/manage/Contents/ContentsRenameModal.test.jsx +1 -5
  134. package/src/components/manage/Contents/ContentsTagsModal.test.jsx +1 -5
  135. package/src/components/manage/Contents/ContentsUploadModal.test.jsx +13 -22
  136. package/src/components/manage/Contents/ContentsWorkflowModal.test.jsx +1 -5
  137. package/src/components/manage/Contents/DropZoneContent.jsx +323 -0
  138. package/src/components/manage/Contents/__mocks__/index.tsx +2 -18
  139. package/src/components/manage/Controlpanels/Aliases.test.jsx +1 -5
  140. package/src/components/manage/Controlpanels/ContentType.jsx +1 -1
  141. package/src/components/manage/Controlpanels/ContentType.test.jsx +1 -5
  142. package/src/components/manage/Controlpanels/Groups/GroupsControlpanel.jsx +3 -2
  143. package/src/components/manage/Controlpanels/Relations/Relations.jsx +1 -1
  144. package/src/components/manage/Controlpanels/Rules/AddRule.test.jsx +1 -5
  145. package/src/components/manage/Controlpanels/Rules/EditRule.test.jsx +1 -5
  146. package/src/components/manage/Controlpanels/UndoControlpanel.test.jsx +1 -5
  147. package/src/components/manage/Controlpanels/Users/RenderUsers.jsx +156 -175
  148. package/src/components/manage/Controlpanels/Users/UsersControlpanel.jsx +575 -630
  149. package/src/components/manage/Controlpanels/Users/UsersControlpanel.test.jsx +4 -3
  150. package/src/components/manage/Diff/Diff.test.jsx +1 -6
  151. package/src/components/manage/Diff/DiffField.test.jsx +1 -6
  152. package/src/components/manage/Display/Display.test.jsx +2 -11
  153. package/src/components/manage/Edit/Edit.jsx +2 -3
  154. package/src/components/manage/Edit/Edit.test.jsx +1 -5
  155. package/src/components/manage/Form/BlockDataForm.test.jsx +1 -5
  156. package/src/components/manage/Form/Form.test.jsx +1 -5
  157. package/src/components/manage/Form/InlineForm.jsx +2 -2
  158. package/src/components/manage/Form/InlineForm.test.jsx +1 -5
  159. package/src/components/manage/Form/ModalForm.jsx +12 -10
  160. package/src/components/manage/Form/ModalForm.test.jsx +27 -5
  161. package/src/components/manage/Form/__mocks__/index.tsx +9 -27
  162. package/src/components/manage/Multilingual/CompareLanguages.jsx +2 -5
  163. package/src/components/manage/Multilingual/CreateTranslation.jsx +8 -8
  164. package/src/components/manage/Multilingual/ManageTranslations.jsx +4 -2
  165. package/src/components/manage/Multilingual/ManageTranslations.test.jsx +5 -1
  166. package/src/components/manage/Multilingual/TranslationObject.jsx +1 -1
  167. package/src/components/manage/Preferences/ChangePassword.test.jsx +1 -5
  168. package/src/components/manage/Preferences/PersonalPreferences.test.jsx +1 -17
  169. package/src/components/manage/Sidebar/ObjectBrowser.jsx +3 -0
  170. package/src/components/manage/Sidebar/ObjectBrowserBody.jsx +13 -1
  171. package/src/components/manage/Sidebar/ObjectBrowserNav.jsx +2 -1
  172. package/src/components/manage/Sidebar/SidebarPortal.test.tsx +42 -0
  173. package/src/components/manage/Sidebar/SidebarPortal.tsx +48 -0
  174. package/src/components/manage/TemplateChooser/TemplateChooser.jsx +2 -1
  175. package/src/components/manage/Toolbar/More.jsx +4 -1
  176. package/src/components/manage/Toolbar/More.test.jsx +3 -0
  177. package/src/components/manage/Toolbar/PersonalTools.jsx +2 -1
  178. package/src/components/manage/Toolbar/Toolbar.jsx +3 -4
  179. package/src/components/manage/Toolbar/Types.jsx +7 -7
  180. package/src/components/manage/UniversalLink/UniversalLink.tsx +1 -0
  181. package/src/components/manage/Widgets/AlignWidget.stories.jsx +9 -0
  182. package/src/components/manage/Widgets/AlignWidget.test.tsx +95 -0
  183. package/src/components/manage/Widgets/{AlignWidget.jsx → AlignWidget.tsx} +23 -7
  184. package/src/components/manage/Widgets/ArrayWidget.test.jsx +1 -6
  185. package/src/components/manage/Widgets/BlockAlignment.stories.tsx +104 -0
  186. package/src/components/manage/Widgets/BlockAlignment.test.tsx +104 -0
  187. package/src/components/manage/Widgets/BlockAlignment.tsx +88 -0
  188. package/src/components/manage/Widgets/BlockWidth.stories.tsx +69 -0
  189. package/src/components/manage/Widgets/BlockWidth.test.tsx +62 -0
  190. package/src/components/manage/Widgets/BlockWidth.tsx +101 -0
  191. package/src/components/manage/Widgets/ButtonsWidget.stories.jsx +61 -0
  192. package/src/components/manage/Widgets/ButtonsWidget.test.tsx +138 -0
  193. package/src/components/manage/Widgets/ButtonsWidget.tsx +176 -0
  194. package/src/components/manage/Widgets/CheckboxGroupWidget.test.jsx +1 -6
  195. package/src/components/manage/Widgets/DatetimeWidget.jsx +16 -1
  196. package/src/components/manage/Widgets/DatetimeWidget.test.jsx +1 -6
  197. package/src/components/manage/Widgets/FileWidget.jsx +14 -8
  198. package/src/components/manage/Widgets/FormFieldWrapper.jsx +146 -168
  199. package/src/components/manage/Widgets/ImageWidget.jsx +171 -38
  200. package/src/components/manage/Widgets/InternalUrlWidget.jsx +2 -0
  201. package/src/components/manage/Widgets/ObjectBrowserWidget.jsx +8 -0
  202. package/src/components/manage/Widgets/ObjectListWidget.test.jsx +2 -11
  203. package/src/components/manage/Widgets/ObjectWidget.test.jsx +1 -5
  204. package/src/components/manage/Widgets/QueryWidget.jsx +137 -9
  205. package/src/components/manage/Widgets/RadioGroupWidget.test.jsx +1 -6
  206. package/src/components/manage/Widgets/RecurrenceWidget/RecurrenceWidget.test.jsx +1 -6
  207. package/src/components/manage/Widgets/RegistryImageWidget.test.jsx +3 -2
  208. package/src/components/manage/Widgets/SchemaWidget.test.jsx +1 -6
  209. package/src/components/manage/Widgets/SchemaWidgetFieldset.test.jsx +1 -6
  210. package/src/components/manage/Widgets/SelectAutoComplete.jsx +29 -12
  211. package/src/components/manage/Widgets/SelectAutoComplete.test.jsx +1 -6
  212. package/src/components/manage/Widgets/SelectWidget.test.jsx +1 -6
  213. package/src/components/manage/Widgets/Size.stories.tsx +69 -0
  214. package/src/components/manage/Widgets/Size.test.tsx +59 -0
  215. package/src/components/manage/Widgets/Size.tsx +78 -0
  216. package/src/components/manage/Widgets/TimeWidget.test.jsx +1 -6
  217. package/src/components/manage/Widgets/TokenWidget.test.jsx +1 -6
  218. package/src/components/manage/Widgets/UrlWidget.jsx +2 -0
  219. package/src/components/manage/Widgets/VocabularyTermsWidget.test.jsx +2 -11
  220. package/src/components/manage/Widgets/__mocks__/index.tsx +33 -51
  221. package/src/components/manage/Widgets/index.tsx +21 -0
  222. package/src/components/manage/Workflow/Workflow.test.jsx +2 -11
  223. package/src/components/theme/AlternateHrefLangs/AlternateHrefLangs.jsx +1 -3
  224. package/src/components/theme/AlternateHrefLangs/AlternateHrefLangs.test.jsx +0 -4
  225. package/src/components/theme/App/App.jsx +5 -1
  226. package/src/components/theme/App/App.test.jsx +1 -0
  227. package/src/components/theme/Avatar/Avatar.jsx +2 -1
  228. package/src/components/theme/Comments/CommentEditModal.test.jsx +1 -5
  229. package/src/components/theme/Comments/Comments.test.jsx +2 -11
  230. package/src/components/theme/ContactForm/ContactForm.test.jsx +1 -5
  231. package/src/components/theme/FormattedDate/FormattedDate.stories.jsx +20 -2
  232. package/src/components/theme/Image/Image.jsx +11 -8
  233. package/src/components/theme/InjectPloneComponentsCSS/InjectPloneComponentsCSS.tsx +7 -0
  234. package/src/components/theme/LanguageSelector/{LanguageSelector.test.jsx → LanguageSelector.test.tsx} +6 -6
  235. package/src/components/theme/LanguageSelector/LanguageSelector.tsx +89 -0
  236. package/src/components/theme/Logo/Logo.Multilingual.test.jsx +0 -5
  237. package/src/components/theme/MultilingualRedirector/MultilingualRedirector.jsx +10 -14
  238. package/src/components/theme/MultilingualRedirector/MultilingualRedirector.test.jsx +3 -5
  239. package/src/components/theme/Navigation/NavItem.jsx +1 -5
  240. package/src/components/theme/Navigation/Navigation.Multilingual.test.jsx +0 -5
  241. package/src/components/theme/NotFound/NotFound.jsx +5 -2
  242. package/src/components/theme/NotFound/NotFound.test.jsx +3 -0
  243. package/src/components/theme/PasswordReset/RequestPasswordReset.test.jsx +1 -5
  244. package/src/components/theme/PreviewImage/PreviewImage.jsx +1 -1
  245. package/src/components/theme/Register/Register.test.jsx +1 -5
  246. package/src/components/theme/RequestTimeout/RequestTimeout.jsx +1 -1
  247. package/src/components/theme/Sitemap/Sitemap.jsx +6 -5
  248. package/src/components/theme/Sitemap/Sitemap.test.jsx +0 -1
  249. package/src/components/theme/Unauthorized/Unauthorized.jsx +5 -2
  250. package/src/components/theme/View/EventDatesInfo.test.jsx +1 -6
  251. package/src/components/theme/View/EventView.test.jsx +1 -6
  252. package/src/components/theme/View/FileView.jsx +9 -1
  253. package/src/components/theme/View/View.jsx +8 -1
  254. package/src/components/theme/Widgets/ImageWidget.jsx +2 -1
  255. package/src/config/ControlPanels.js +1 -0
  256. package/src/config/Widgets.jsx +7 -0
  257. package/src/config/index.js +18 -25
  258. package/src/config/server.js +0 -2
  259. package/src/config/slots.js +19 -0
  260. package/src/express-middleware/devproxy.js +20 -5
  261. package/src/helpers/Api/APIResourceWithAuth.js +8 -3
  262. package/src/helpers/Api/Api.js +7 -4
  263. package/src/helpers/AsyncConnect/ssr.js +4 -1
  264. package/src/helpers/Content/Content.js +23 -0
  265. package/src/helpers/Content/Content.test.js +39 -0
  266. package/src/helpers/Content/withClientSideContent.jsx +35 -0
  267. package/src/helpers/Extensions/withBlockSchemaEnhancer.jsx +4 -1
  268. package/src/helpers/Html/Html.jsx +13 -7
  269. package/src/helpers/LanguageMap/LanguageMap.js +115 -8
  270. package/src/helpers/Loadable/__mocks__/Loadable.jsx +7 -22
  271. package/src/helpers/MessageLabels/MessageLabels.js +5 -0
  272. package/src/helpers/Sitemap/Sitemap.js +4 -4
  273. package/src/helpers/Url/Url.js +33 -2
  274. package/src/helpers/Url/Url.test.js +62 -0
  275. package/src/hooks/user/useUser.js +1 -1
  276. package/src/internalChecks.test.ts +11 -0
  277. package/src/middleware/Api.test.js +4 -0
  278. package/src/middleware/api.js +82 -28
  279. package/src/middleware/storeProtectLoadUtils.test.js +3 -3
  280. package/src/reducers/content/content.js +3 -18
  281. package/src/reducers/diff/diff.js +5 -1
  282. package/src/reducers/diff/diff.test.js +60 -4
  283. package/src/reducers/querystring/querystring.js +8 -1
  284. package/src/routes.js +4 -2
  285. package/src/server.jsx +45 -14
  286. package/src/start-client.jsx +9 -6
  287. package/src/start-server.js +9 -3
  288. package/test-addons-loader.js +3 -0
  289. package/test-setup-config.jsx +0 -2
  290. package/test-setup-globals.js +30 -2
  291. package/theme/themes/pastanaga/extras/blocks.less +26 -0
  292. package/theme/themes/pastanaga/extras/contents.less +80 -5
  293. package/theme/themes/pastanaga/extras/main.less +17 -2
  294. package/theme/themes/pastanaga/extras/widgets.less +79 -0
  295. package/tsconfig.declarations.json +1 -1
  296. package/tsconfig.json +4 -5
  297. package/types/components/manage/Blocks/Teaser/schema.d.ts +1 -0
  298. package/types/components/manage/Contents/DropZoneContent.d.ts +2 -0
  299. package/types/components/manage/Contents/__mocks__/index.d.ts +2 -2
  300. package/types/components/manage/Controlpanels/Relations/RelationsMatrix.d.ts +1 -1
  301. package/types/components/manage/Controlpanels/Users/RenderUsers.d.ts +18 -2
  302. package/types/components/manage/Controlpanels/Users/UsersControlpanel.d.ts +6 -2
  303. package/types/components/manage/Controlpanels/index.d.ts +2 -2
  304. package/types/components/manage/Form/__mocks__/index.d.ts +8 -8
  305. package/types/components/manage/Multilingual/ManageTranslations.d.ts +1 -1
  306. package/types/components/manage/Sidebar/ObjectBrowser.d.ts +1 -1
  307. package/types/components/manage/Sidebar/SidebarPortal.d.ts +7 -15
  308. package/types/components/manage/Widgets/AlignWidget.d.ts +8 -10
  309. package/types/components/manage/Widgets/AlignWidget.stories.d.ts +1 -0
  310. package/types/components/manage/Widgets/BlockAlignment.d.ts +7 -0
  311. package/types/components/manage/Widgets/BlockAlignment.stories.d.ts +8 -0
  312. package/types/components/manage/Widgets/BlockWidth.d.ts +7 -0
  313. package/types/components/manage/Widgets/BlockWidth.stories.d.ts +6 -0
  314. package/types/components/manage/Widgets/ButtonsWidget.d.ts +48 -1
  315. package/types/components/manage/Widgets/ButtonsWidget.stories.d.ts +3 -0
  316. package/types/components/manage/Widgets/FormFieldWrapper.d.ts +28 -5
  317. package/types/components/manage/Widgets/ImageWidget.d.ts +41 -1
  318. package/types/components/manage/Widgets/InternalUrlWidget.d.ts +1 -1
  319. package/types/components/manage/Widgets/ObjectBrowserWidget.d.ts +2 -0
  320. package/types/components/manage/Widgets/QueryWidget.d.ts +5 -2
  321. package/types/components/manage/Widgets/RecurrenceWidget/Utils.d.ts +12 -18
  322. package/types/components/manage/Widgets/Size.d.ts +7 -0
  323. package/types/components/manage/Widgets/Size.stories.d.ts +6 -0
  324. package/types/components/manage/Widgets/UrlWidget.d.ts +1 -1
  325. package/types/components/manage/Widgets/__mocks__/index.d.ts +33 -33
  326. package/types/components/manage/Widgets/index.d.ts +11 -6
  327. package/types/components/theme/FormattedDate/FormattedDate.stories.d.ts +1 -1
  328. package/types/components/theme/InjectPloneComponentsCSS/InjectPloneComponentsCSS.d.ts +3 -0
  329. package/types/components/theme/LanguageSelector/LanguageSelector.d.ts +3 -10
  330. package/types/components/theme/Unauthorized/Unauthorized.d.ts +2 -2
  331. package/types/config/Widgets.d.ts +6 -0
  332. package/types/config/slots.d.ts +7 -0
  333. package/types/helpers/Content/Content.d.ts +7 -0
  334. package/types/helpers/Content/withClientSideContent.d.ts +1 -0
  335. package/types/helpers/Extensions/withBlockSchemaEnhancer.d.ts +4 -5
  336. package/types/helpers/Helmet/Helmet.d.ts +1 -1
  337. package/types/helpers/LanguageMap/LanguageMap.d.ts +428 -4
  338. package/types/helpers/Loadable/__mocks__/Loadable.d.ts +2 -2
  339. package/types/helpers/MessageLabels/MessageLabels.d.ts +68 -62
  340. package/types/helpers/Url/Url.d.ts +14 -0
  341. package/types/helpers/Url/bulkFlattenToAppURL.d.ts +5 -0
  342. package/types/middleware/api.d.ts +6 -9
  343. package/types/reducers/index.d.ts +1 -0
  344. package/types/start-client.d.ts +0 -1
  345. package/vitest.config.mjs +4 -4
  346. package/webpack-plugins/webpack-scss-plugin.js +172 -0
  347. package/jest-addons-loader.js +0 -3
  348. package/jest-extender-plugin.js +0 -39
  349. package/jest-setup-afterenv.js +0 -2
  350. package/jest-svgsystem-transform.js +0 -10
  351. package/package-why.json +0 -34
  352. package/patches/patchit.sh +0 -2
  353. package/patches/razzle-jest.patch +0 -10
  354. package/src/actions/content/content.multilingual.test.js +0 -17
  355. package/src/components/manage/Contents/__mocks__/index.vitest.tsx +0 -5
  356. package/src/components/manage/Form/__mocks__/index.vitest.tsx +0 -73
  357. package/src/components/manage/Sidebar/SidebarPortal.jsx +0 -47
  358. package/src/components/manage/Sidebar/SidebarPortal.test.jsx +0 -26
  359. package/src/components/manage/Widgets/AlignWidget.test.jsx +0 -59
  360. package/src/components/manage/Widgets/ButtonsWidget.jsx +0 -41
  361. package/src/components/manage/Widgets/ButtonsWidget.test.jsx +0 -70
  362. package/src/components/manage/Widgets/__mocks__/index.vitest.tsx +0 -41
  363. package/src/components/theme/LanguageSelector/LanguageSelector.jsx +0 -77
  364. package/src/helpers/Loadable/__mocks__/Loadable.vitest.jsx +0 -39
  365. package/test-setup-globals-vitest.js +0 -46
  366. package/theme/themes/pastanaga/extras/utils.less +0 -63
@@ -18,8 +18,6 @@ import Api from '@plone/volto/helpers/Api/Api';
18
18
  import { persistAuthToken } from '@plone/volto/helpers/AuthToken/AuthToken';
19
19
  import ScrollToTop from '@plone/volto/helpers/ScrollToTop/ScrollToTop';
20
20
 
21
- export const history = createBrowserHistory();
22
-
23
21
  function reactIntlErrorHandler(error) {
24
22
  debug('i18n')(error);
25
23
  }
@@ -27,6 +25,15 @@ function reactIntlErrorHandler(error) {
27
25
  export default function client() {
28
26
  const api = new Api();
29
27
 
28
+ if (window.env.RAZZLE_SUBPATH_PREFIX) {
29
+ config.settings.subpathPrefix = window.env.RAZZLE_SUBPATH_PREFIX;
30
+ }
31
+ const history = createBrowserHistory({
32
+ basename: config.settings.subpathPrefix
33
+ ? config.settings.subpathPrefix
34
+ : '/',
35
+ });
36
+
30
37
  const store = configureStore(window.__data, history, api);
31
38
  persistAuthToken(store);
32
39
 
@@ -58,10 +65,6 @@ export default function client() {
58
65
  if (window.env.RAZZLE_LEGACY_TRAVERSE) {
59
66
  config.settings.legacyTraverse = true;
60
67
  }
61
- // Support for setting the default language from a server environment variable
62
- if (window.env.defaultLanguage) {
63
- config.settings.defaultLanguage = window.env.defaultLanguage;
64
- }
65
68
 
66
69
  loadableReady(() => {
67
70
  hydrateRoot(
@@ -18,14 +18,20 @@ export default function server() {
18
18
 
19
19
  server
20
20
  .listen(port, bind_address, () => {
21
- console.log(`API server (API_PATH) is set to: ${app.apiPath}`);
22
-
23
- if (app.devProxyToApiPath)
21
+ console.log(
22
+ `The Volto server will make API requests to: ${app.internalApiPath || app.apiPath}/++api++`,
23
+ );
24
+ console.log(
25
+ `The Volto client will make API requests to: ${app.apiPath}/++api++`,
26
+ );
27
+
28
+ if (app.devProxyToApiPath) {
24
29
  console.log(
25
30
  `Proxying API requests from ${app.publicURL}/++api++ to ${
26
31
  app.devProxyToApiPath
27
32
  }${app.proxyRewriteTarget || ''}`,
28
33
  );
34
+ }
29
35
  console.log(`🎭 Volto started at ${bind_address}:${port} 🚀`);
30
36
 
31
37
  if (!process.env.RAZZLE_PUBLIC_URL)
@@ -0,0 +1,3 @@
1
+ export default function install(config) {
2
+ return config;
3
+ }
@@ -30,12 +30,10 @@ import { registerValidators } from '@plone/volto/config/validation';
30
30
  config.set('settings', {
31
31
  apiPath: 'http://localhost:8080/Plone',
32
32
  publicURL: 'http://localhost:3000',
33
- defaultLanguage: 'en',
34
33
  supportedLanguages: ['en'],
35
34
  defaultPageSize: 25,
36
35
  showTags: true,
37
36
  showRelatedItems: true,
38
- isMultilingual: false,
39
37
  nonContentRoutes,
40
38
  nonContentRoutesPublic,
41
39
  contentIcons: contentIcons,
@@ -1,12 +1,40 @@
1
+ import '@testing-library/jest-dom';
2
+
1
3
  global.__CLIENT__ = true;
2
4
  global.__DEVELOPMENT__ = false;
5
+ global.__SERVER__ = false;
6
+ global.__TEST__ = true;
3
7
 
4
8
  window.matchMedia =
5
9
  window.matchMedia ||
6
- function () {
10
+ function (query) {
7
11
  return {
8
- matches: false,
12
+ matches: query === '(min-width: 1024px)',
9
13
  addListener: function () {},
10
14
  removeListener: function () {},
11
15
  };
12
16
  };
17
+
18
+ vi.stubGlobal(
19
+ 'fetch',
20
+ vi.fn(() =>
21
+ Promise.resolve({
22
+ json: () => Promise.resolve({}),
23
+ text: () => Promise.resolve(''),
24
+ }),
25
+ ),
26
+ );
27
+
28
+ vi.stubGlobal('localStorage', {
29
+ getItem: vi.fn(),
30
+ setItem: vi.fn(),
31
+ removeItem: vi.fn(),
32
+ clear: vi.fn(),
33
+ });
34
+
35
+ vi.stubGlobal('sessionStorage', {
36
+ getItem: vi.fn(),
37
+ setItem: vi.fn(),
38
+ removeItem: vi.fn(),
39
+ clear: vi.fn(),
40
+ });
@@ -56,6 +56,13 @@
56
56
  background-color: rgba(120, 192, 215, 0.375);
57
57
  }
58
58
 
59
+ .block.selected.error::before,
60
+ .block.selected.error:hover::before,
61
+ .block.error:hover::before,
62
+ .block.error::before {
63
+ border-color: #ff0000 !important;
64
+ }
65
+
59
66
  #toolbar .toolbar-actions .blockCount {
60
67
  position: absolute;
61
68
  margin-top: 18px;
@@ -427,10 +434,18 @@ body.has-toolbar.has-sidebar-collapsed .ui.wrapper > .ui.inner.block.full {
427
434
  top: 1em;
428
435
  right: 1em;
429
436
 
437
+ .sidebar-container & .ui.icon.button:hover {
438
+ background: transparent !important;
439
+ }
440
+
430
441
  .icon.circled {
431
442
  border: 1px solid #e4e8ec;
432
443
  background: #f3f5f7;
433
444
  box-shadow: inset 0 0 0 0.14285714rem transparent !important;
445
+
446
+ &:hover {
447
+ background-color: #e4e8ec;
448
+ }
434
449
  }
435
450
  }
436
451
 
@@ -983,6 +998,17 @@ div.image-upload-widget-image {
983
998
  }
984
999
  }
985
1000
 
1001
+ // In the sidebar, the height is forced on all .ui.input T_T
1002
+ .ui.form .ui.input.input-anchorlink-theme,
1003
+ .ui.form
1004
+ .inline.field
1005
+ .link-form-container
1006
+ .wrapper
1007
+ .ui.input.input-anchorlink-theme
1008
+ input {
1009
+ height: 34px;
1010
+ }
1011
+
986
1012
  .block.image.align.left,
987
1013
  .block.image.align.right {
988
1014
  img {
@@ -107,6 +107,18 @@
107
107
  top: auto;
108
108
  bottom: 100%;
109
109
  }
110
+
111
+ .search-feedback {
112
+ position: absolute;
113
+ overflow: hidden;
114
+ width: 1px;
115
+ height: 1px;
116
+ padding: 0;
117
+ border: 0;
118
+ margin: -1px;
119
+ clip: rect(0, 0, 0, 0);
120
+ white-space: nowrap;
121
+ }
110
122
  }
111
123
 
112
124
  .ui.table .icon-align,
@@ -149,8 +161,12 @@
149
161
  .ui.table .button-margin {
150
162
  padding: 4px;
151
163
  margin-right: 1em;
152
- background-color: rgb(228, 1, 102);
164
+ background-color: #007eb1;
153
165
  color: white;
166
+
167
+ &.expired-past {
168
+ background-color: rgb(228, 1, 102);
169
+ }
154
170
  }
155
171
  }
156
172
 
@@ -185,10 +201,6 @@
185
201
  white-space: normal;
186
202
  word-break: break-all;
187
203
  }
188
-
189
- .broken-links-list {
190
- margin-top: 30px;
191
- }
192
204
  }
193
205
 
194
206
  .contenttype-event {
@@ -255,3 +267,66 @@
255
267
  overflow: auto;
256
268
  max-height: 75vh;
257
269
  }
270
+
271
+ .contents-dropzone {
272
+ position: relative;
273
+
274
+ &.drag-over {
275
+ overflow: hidden;
276
+ }
277
+ }
278
+
279
+ .dropzone-overlay {
280
+ position: absolute;
281
+ z-index: 10;
282
+ display: flex;
283
+ align-items: center;
284
+ justify-content: center;
285
+ border: 3px dashed black;
286
+ animation: fadeIn 0.3s ease-in;
287
+ backdrop-filter: blur(2px);
288
+ inset: 0;
289
+ }
290
+
291
+ .dropzone-content {
292
+ animation: scaleIn 0.3s ease-out;
293
+ color: black;
294
+ text-align: center;
295
+
296
+ h3 {
297
+ margin-top: 16px;
298
+ font-size: 24px;
299
+ font-weight: 600;
300
+ }
301
+
302
+ p {
303
+ font-size: 18px;
304
+ }
305
+
306
+ h3,
307
+ p {
308
+ color: black;
309
+ }
310
+ }
311
+
312
+ @keyframes fadeIn {
313
+ from {
314
+ opacity: 0;
315
+ }
316
+
317
+ to {
318
+ opacity: 1;
319
+ }
320
+ }
321
+
322
+ @keyframes scaleIn {
323
+ from {
324
+ opacity: 0;
325
+ transform: scale(0.9);
326
+ }
327
+
328
+ to {
329
+ opacity: 1;
330
+ transform: scale(1);
331
+ }
332
+ }
@@ -443,6 +443,10 @@ fieldset.invisible {
443
443
  padding: 0;
444
444
  border: none;
445
445
  margin: 0;
446
+ // Reset visibility, this 'invisible' is not meant to hide the fieldset
447
+ // This prevents issues when used along other CSS framworks that might
448
+ // have this utility class defined (e.g. TailwindCSS)
449
+ visibility: initial;
446
450
  }
447
451
 
448
452
  .vertical-form {
@@ -674,8 +678,19 @@ img.responsive {
674
678
  }
675
679
  }
676
680
 
677
- // Deprecated as per https://github.com/plone/volto/issues/1265
678
- // @import 'utils';
681
+ .visually-hidden {
682
+ position: absolute;
683
+ overflow: hidden;
684
+ width: 1px;
685
+ height: 1px;
686
+ padding: 0;
687
+ border: 0;
688
+ margin: -1px;
689
+ clip: rect(1px, 1px, 1px, 1px); /* IE-style CSS for compatibility */
690
+ white-space: nowrap;
691
+ word-wrap: normal;
692
+ }
693
+
679
694
  @import (multiple) '../extras/fonts';
680
695
  @import 'toolbar';
681
696
  @import 'draftjs';
@@ -292,3 +292,82 @@ body.babel-view .field.language-independent-field {
292
292
  margin-left: 8px;
293
293
  }
294
294
  }
295
+
296
+ // ButtonsWidget and friends 2025
297
+ :root {
298
+ --border-color-hover: var(--quanta-sapphire);
299
+ --border-color-pressed: var(--quanta-sapphire);
300
+ --border-color-disabled: #d4d4d5;
301
+ --text-color-disabled: #a8a8a8;
302
+ }
303
+
304
+ .field.widget {
305
+ .buttons-widget {
306
+ display: flex;
307
+ align-items: center;
308
+ gap: 4px;
309
+
310
+ .buttons-widget-option {
311
+ padding: 5px;
312
+ border-radius: 3px;
313
+ aspect-ratio: 1/1;
314
+ font-size: 1em;
315
+ line-height: initial;
316
+
317
+ &[data-hovered='true'] {
318
+ box-shadow: inset 0 0 0 1px var(--border-color-hover, #2996da);
319
+ }
320
+
321
+ &[data-selected='true'] {
322
+ box-shadow: inset 0 0 0 1px var(--border-color-pressed, #2996da);
323
+ }
324
+
325
+ svg.icon {
326
+ margin: 0 !important;
327
+ opacity: 0.9;
328
+ vertical-align: top;
329
+ }
330
+ }
331
+ }
332
+ }
333
+
334
+ .buttons-widget-option {
335
+ &[data-disabled='true'] {
336
+ border-color: var(--border-color-disabled);
337
+ color: var(--text-color-disabled);
338
+ }
339
+ }
340
+
341
+ .ui.form .query-widget {
342
+ .location-object-browser {
343
+ display: flex;
344
+ flex-flow: column;
345
+ flex-grow: 1;
346
+
347
+ .object-browser-field {
348
+ min-height: 60px;
349
+ flex: 1 0 auto;
350
+ padding-right: 1em;
351
+ padding-left: 1em;
352
+ margin-bottom: 0px;
353
+ }
354
+
355
+ .object-browser-field + .field {
356
+ margin-bottom: 0px;
357
+ }
358
+
359
+ .objectbrowser-field {
360
+ height: 100%;
361
+ }
362
+
363
+ .reference-widget-depth {
364
+ .field {
365
+ margin-bottom: 0px;
366
+ }
367
+ }
368
+ }
369
+
370
+ .location-object-browser + button.ui.button {
371
+ padding-top: 0;
372
+ }
373
+ }
@@ -10,7 +10,7 @@
10
10
  "jsx": "react-jsx",
11
11
  "preserveSymlinks": true,
12
12
  "downlevelIteration": true,
13
- "types": ["vitest/globals", "jest"],
13
+ "types": ["vitest/globals"],
14
14
  "paths": {
15
15
  "@plone/volto/*": ["./src/*"],
16
16
  "react": ["./node_modules/@types/react"],
package/tsconfig.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "compilerOptions": {
3
- "target": "ESNext",
4
- "lib": ["DOM", "DOM.Iterable", "ESNext"],
5
- "types": ["vitest/globals", "jest"],
6
- "module": "commonjs",
3
+ "target": "es2022",
4
+ "lib": ["es2022", "dom", "dom.iterable"],
5
+ "types": ["vitest/globals"],
6
+ "module": "preserve",
7
7
  "allowJs": true,
8
8
  "skipLibCheck": true,
9
9
  "esModuleInterop": true,
@@ -11,7 +11,6 @@
11
11
  "strict": true,
12
12
  "forceConsistentCasingInFileNames": true,
13
13
  "strictPropertyInitialization": false,
14
- "moduleResolution": "Node",
15
14
  "resolveJsonModule": true,
16
15
  "isolatedModules": true,
17
16
  "noEmit": true,
@@ -27,6 +27,7 @@ export function TeaserSchema({ data, intl }: {
27
27
  };
28
28
  head_title: {
29
29
  title: any;
30
+ description: any;
30
31
  };
31
32
  description: {
32
33
  title: any;
@@ -0,0 +1,2 @@
1
+ export default DropZoneContent;
2
+ declare function DropZoneContent(props: any): import("react/jsx-runtime").JSX.Element;
@@ -1,2 +1,2 @@
1
- export declare const Contents: jest.Mock<import("react/jsx-runtime").JSX.Element, [], any>;
2
- export declare const ContentsRenameModal: jest.Mock<import("react/jsx-runtime").JSX.Element, [], any>;
1
+ export declare const Contents: any;
2
+ export declare const ContentsRenameModal: any;
@@ -3,7 +3,7 @@ declare const _default: {
3
3
  state: {
4
4
  isObjectBrowserOpen: boolean;
5
5
  };
6
- openObjectBrowser: ({ mode, onSelectItem, dataName, overlay, propDataName, searchableTypes, selectableTypes, maximumSelectionSize, currentPath, }?: {
6
+ openObjectBrowser: ({ mode, onSelectItem, dataName, overlay, propDataName, searchableTypes, selectableTypes, maximumSelectionSize, currentPath, onlyFolderishSelectable, }?: {
7
7
  mode: string;
8
8
  dataName: string;
9
9
  onSelectItem: string;
@@ -1,2 +1,18 @@
1
- declare const _default: any;
2
- export default _default;
1
+ export default RenderUsers;
2
+ /**
3
+ * RenderUsers functional component.
4
+ * @function RenderUsers
5
+ */
6
+ declare function RenderUsers(props: any): import("react/jsx-runtime").JSX.Element;
7
+ declare namespace RenderUsers {
8
+ namespace propTypes {
9
+ let user: any;
10
+ let roles: any;
11
+ let onDelete: any;
12
+ let isUserManager: any;
13
+ let listUsers: any;
14
+ let updateUser: any;
15
+ let inheritedRole: any;
16
+ let userschema: any;
17
+ }
18
+ }
@@ -1,2 +1,6 @@
1
- declare const _default: any;
2
- export default _default;
1
+ export default UsersControlpanel;
2
+ /**
3
+ * UsersControlpanel functional component.
4
+ * @function UsersControlpanel
5
+ */
6
+ declare function UsersControlpanel(): import("react/jsx-runtime").JSX.Element;
@@ -4,8 +4,8 @@ export declare const RulesControlpanel: import("@loadable/component").LoadableCl
4
4
  export declare const AddRuleControlpanel: import("@loadable/component").LoadableClassComponent<any>;
5
5
  export declare const EditRuleControlpanel: import("@loadable/component").LoadableClassComponent<any>;
6
6
  export declare const ConfigureRuleControlpanel: import("@loadable/component").LoadableClassComponent<any>;
7
- export declare const UsersControlpanel: import("@loadable/component").LoadableClassComponent<any>;
8
- export declare const RenderUsers: import("@loadable/component").LoadableClassComponent<any>;
7
+ export declare const UsersControlpanel: import("@loadable/component").LoadableComponent<unknown>;
8
+ export declare const RenderUsers: import("@loadable/component").LoadableComponent<any>;
9
9
  export declare const UserGroupMembershipControlPanel: import("@loadable/component").LoadableComponent<unknown>;
10
10
  export declare const GroupsControlpanel: import("@loadable/component").LoadableClassComponent<any>;
11
11
  export declare const RenderGroups: import("@loadable/component").LoadableComponent<any>;
@@ -1,8 +1,8 @@
1
- export declare const Field: jest.Mock<import("react/jsx-runtime").JSX.Element, [props: any], any>;
2
- export declare const InlineForm: jest.Mock<import("react/jsx-runtime").JSX.Element, [props: any], any>;
3
- export declare const ModalForm: jest.Mock<import("react/jsx-runtime").JSX.Element, [props: any], any>;
4
- export declare const UndoToolbar: jest.Mock<import("react/jsx-runtime").JSX.Element, [], any>;
5
- export declare const BlocksToolbar: jest.Mock<import("react/jsx-runtime").JSX.Element, [], any>;
6
- export declare const BlockDataForm: jest.Mock<import("react/jsx-runtime").JSX.Element, [props: any], any>;
7
- export declare const BlocksForm: jest.Mock<import("react/jsx-runtime").JSX.Element, [props: any], any>;
8
- export declare const Form: jest.Mock<import("react/jsx-runtime").JSX.Element, [props: any], any>;
1
+ export declare const Field: any;
2
+ export declare const InlineForm: any;
3
+ export declare const ModalForm: any;
4
+ export declare const UndoToolbar: any;
5
+ export declare const BlocksToolbar: any;
6
+ export declare const BlockDataForm: any;
7
+ export declare const BlocksForm: any;
8
+ export declare const Form: any;
@@ -3,7 +3,7 @@ declare const _default: {
3
3
  state: {
4
4
  isObjectBrowserOpen: boolean;
5
5
  };
6
- openObjectBrowser: ({ mode, onSelectItem, dataName, overlay, propDataName, searchableTypes, selectableTypes, maximumSelectionSize, currentPath, }?: {
6
+ openObjectBrowser: ({ mode, onSelectItem, dataName, overlay, propDataName, searchableTypes, selectableTypes, maximumSelectionSize, currentPath, onlyFolderishSelectable, }?: {
7
7
  mode: string;
8
8
  dataName: string;
9
9
  onSelectItem: string;
@@ -31,7 +31,7 @@ declare function withObjectBrowser(WrappedComponent: any): {
31
31
  * }),
32
32
  * });
33
33
  */
34
- openObjectBrowser: ({ mode, onSelectItem, dataName, overlay, propDataName, searchableTypes, selectableTypes, maximumSelectionSize, currentPath, }?: {
34
+ openObjectBrowser: ({ mode, onSelectItem, dataName, overlay, propDataName, searchableTypes, selectableTypes, maximumSelectionSize, currentPath, onlyFolderishSelectable, }?: {
35
35
  mode: string;
36
36
  dataName: string;
37
37
  onSelectItem: string;
@@ -1,16 +1,8 @@
1
- export default SidebarPortal;
2
- /**
3
- * Portal that wraps Sidebar components
4
- * @param {React.ReactNode} children Sidebar content
5
- * @param {bool} selected Sidebar needs to know when the related block is selected
6
- * @param {string} tab Element id where to insert sidebar content, default: sidebar-properties
7
- * @returns {string} Rendered sidebar
8
- */
9
- declare function SidebarPortal({ children, selected, tab }: React.ReactNode): string;
10
- declare namespace SidebarPortal {
11
- namespace propTypes {
12
- let children: any;
13
- let selected: any;
14
- }
15
- }
16
1
  import React from 'react';
2
+ type SidebarPortalProps = {
3
+ children?: React.ReactNode;
4
+ selected: boolean;
5
+ tab?: string;
6
+ };
7
+ declare const SidebarPortal: ({ children, selected, tab, }: SidebarPortalProps) => React.ReactPortal;
8
+ export default SidebarPortal;
@@ -1,12 +1,10 @@
1
- export function defaultActionsInfo({ intl }: {
2
- intl: any;
3
- }): {
4
- left: any[];
5
- right: any[];
6
- center: any[];
7
- narrow: any[];
8
- wide: any[];
9
- full: any[];
1
+ import { type ActionInfo, type ButtonsWidgetProps } from './ButtonsWidget';
2
+ import type { IntlShape } from 'react-intl';
3
+ export declare const defaultActionsInfo: ({ intl, }: {
4
+ intl: IntlShape;
5
+ }) => Record<string, ActionInfo>;
6
+ type AlignWidgetProps = ButtonsWidgetProps & {
7
+ defaultAction?: string;
10
8
  };
9
+ declare const AlignWidget: (props: AlignWidgetProps) => import("react/jsx-runtime").JSX.Element;
11
10
  export default AlignWidget;
12
- declare function AlignWidget(props: any): import("react/jsx-runtime").JSX.Element;
@@ -1,4 +1,5 @@
1
1
  export const Align: any;
2
+ export const AlignDefaultLeft: any;
2
3
  declare namespace _default {
3
4
  export let title: string;
4
5
  export { AlignWidget as component };
@@ -0,0 +1,7 @@
1
+ import { type ActionInfo, type ButtonsWidgetProps } from './ButtonsWidget';
2
+ import type { IntlShape } from 'react-intl';
3
+ export declare const defaultActionsInfo: ({ intl, }: {
4
+ intl: IntlShape;
5
+ }) => Record<string, ActionInfo>;
6
+ declare const BlockAlignmentWidget: (props: ButtonsWidgetProps) => import("react/jsx-runtime").JSX.Element;
7
+ export default BlockAlignmentWidget;
@@ -0,0 +1,8 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import BlockAlignment from './BlockAlignment';
3
+ declare const meta: Meta<typeof BlockAlignment>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof BlockAlignment>;
6
+ export declare const DefaultAlignment: Story;
7
+ export declare const CustomActions: Story;
8
+ export declare const FilteredActions: Story;
@@ -0,0 +1,7 @@
1
+ import type { IntlShape } from 'react-intl';
2
+ import { type ActionInfo, type ButtonsWidgetProps } from './ButtonsWidget';
3
+ export declare const defaultActionsInfo: ({ intl, }: {
4
+ intl: IntlShape;
5
+ }) => Record<string, ActionInfo>;
6
+ declare const BlockWidthWidget: (props: ButtonsWidgetProps) => import("react/jsx-runtime").JSX.Element;
7
+ export default BlockWidthWidget;
@@ -0,0 +1,6 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import BlockWidth from './BlockWidth';
3
+ declare const meta: Meta<typeof BlockWidth>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof BlockWidth>;
6
+ export declare const DefaultWidth: Story;