datocms-plugin-sdk 1.1.1 → 2.0.0
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.
- package/dist/cjs/connect.js +75 -214
- package/dist/cjs/connect.js.map +1 -1
- package/dist/cjs/{types.js → ctx/base.js} +1 -1
- package/dist/cjs/ctx/base.js.map +1 -0
- package/dist/cjs/ctx/commonExtras/field.js +3 -0
- package/dist/cjs/ctx/commonExtras/field.js.map +1 -0
- package/dist/cjs/ctx/commonExtras/itemForm.js +3 -0
- package/dist/cjs/ctx/commonExtras/itemForm.js.map +1 -0
- package/dist/cjs/ctx/commonExtras/sizing.js +3 -0
- package/dist/cjs/ctx/commonExtras/sizing.js.map +1 -0
- package/dist/cjs/ctx/pluginFrame.js +3 -0
- package/dist/cjs/ctx/pluginFrame.js.map +1 -0
- package/dist/cjs/hooks/assetSources.js +3 -0
- package/dist/cjs/hooks/assetSources.js.map +1 -0
- package/dist/cjs/hooks/buildItemPresentationInfo.js +3 -0
- package/dist/cjs/hooks/buildItemPresentationInfo.js.map +1 -0
- package/dist/cjs/hooks/contentAreaSidebarItems.js +3 -0
- package/dist/cjs/hooks/contentAreaSidebarItems.js.map +1 -0
- package/dist/cjs/hooks/customBlockStylesForStructuredTextField.js +3 -0
- package/dist/cjs/hooks/customBlockStylesForStructuredTextField.js.map +1 -0
- package/dist/cjs/hooks/customMarksForStructuredTextField.js +3 -0
- package/dist/cjs/hooks/customMarksForStructuredTextField.js.map +1 -0
- package/dist/cjs/hooks/executeFieldDropdownAction.js +3 -0
- package/dist/cjs/hooks/executeFieldDropdownAction.js.map +1 -0
- package/dist/cjs/hooks/executeItemFormDropdownAction.js +3 -0
- package/dist/cjs/hooks/executeItemFormDropdownAction.js.map +1 -0
- package/dist/cjs/hooks/executeItemsDropdownAction.js +3 -0
- package/dist/cjs/hooks/executeItemsDropdownAction.js.map +1 -0
- package/dist/cjs/hooks/executeUploadsDropdownAction.js +3 -0
- package/dist/cjs/hooks/executeUploadsDropdownAction.js.map +1 -0
- package/dist/cjs/hooks/fieldDropdownActions.js +3 -0
- package/dist/cjs/hooks/fieldDropdownActions.js.map +1 -0
- package/dist/cjs/hooks/initialLocationQueryForItemSelector.js +3 -0
- package/dist/cjs/hooks/initialLocationQueryForItemSelector.js.map +1 -0
- package/dist/cjs/hooks/itemCollectionOutlets.js +3 -0
- package/dist/cjs/hooks/itemCollectionOutlets.js.map +1 -0
- package/dist/cjs/hooks/itemFormDropdownActions.js +3 -0
- package/dist/cjs/hooks/itemFormDropdownActions.js.map +1 -0
- package/dist/cjs/hooks/itemFormOutlets.js +3 -0
- package/dist/cjs/hooks/itemFormOutlets.js.map +1 -0
- package/dist/cjs/hooks/itemFormSidebarPanels.js +3 -0
- package/dist/cjs/hooks/itemFormSidebarPanels.js.map +1 -0
- package/dist/cjs/hooks/itemFormSidebars.js +3 -0
- package/dist/cjs/hooks/itemFormSidebars.js.map +1 -0
- package/dist/cjs/hooks/itemsDropdownActions.js +3 -0
- package/dist/cjs/hooks/itemsDropdownActions.js.map +1 -0
- package/dist/cjs/hooks/mainNavigationTabs.js +3 -0
- package/dist/cjs/hooks/mainNavigationTabs.js.map +1 -0
- package/dist/cjs/hooks/manualFieldExtensions.js +3 -0
- package/dist/cjs/hooks/manualFieldExtensions.js.map +1 -0
- package/dist/cjs/hooks/onBeforeItemUpsert.js +3 -0
- package/dist/cjs/hooks/onBeforeItemUpsert.js.map +1 -0
- package/dist/cjs/hooks/onBeforeItemsDestroy.js +3 -0
- package/dist/cjs/hooks/onBeforeItemsDestroy.js.map +1 -0
- package/dist/cjs/hooks/onBeforeItemsPublish.js +3 -0
- package/dist/cjs/hooks/onBeforeItemsPublish.js.map +1 -0
- package/dist/cjs/hooks/onBeforeItemsUnpublish.js +3 -0
- package/dist/cjs/hooks/onBeforeItemsUnpublish.js.map +1 -0
- package/dist/cjs/hooks/onBoot.js +3 -0
- package/dist/cjs/hooks/onBoot.js.map +1 -0
- package/dist/cjs/hooks/overrideFieldExtensions.js +3 -0
- package/dist/cjs/hooks/overrideFieldExtensions.js.map +1 -0
- package/dist/cjs/hooks/renderAssetSource.js +11 -0
- package/dist/cjs/hooks/renderAssetSource.js.map +1 -0
- package/dist/cjs/hooks/renderConfigScreen.js +11 -0
- package/dist/cjs/hooks/renderConfigScreen.js.map +1 -0
- package/dist/cjs/hooks/renderFieldExtension.js +11 -0
- package/dist/cjs/hooks/renderFieldExtension.js.map +1 -0
- package/dist/cjs/hooks/renderItemCollectionOutlet.js +11 -0
- package/dist/cjs/hooks/renderItemCollectionOutlet.js.map +1 -0
- package/dist/cjs/hooks/renderItemFormOutlet.js +11 -0
- package/dist/cjs/hooks/renderItemFormOutlet.js.map +1 -0
- package/dist/cjs/hooks/renderItemFormSidebar.js +11 -0
- package/dist/cjs/hooks/renderItemFormSidebar.js.map +1 -0
- package/dist/cjs/hooks/renderItemFormSidebarPanel.js +11 -0
- package/dist/cjs/hooks/renderItemFormSidebarPanel.js.map +1 -0
- package/dist/cjs/hooks/renderManualFieldExtensionConfigScreen.js +11 -0
- package/dist/cjs/hooks/renderManualFieldExtensionConfigScreen.js.map +1 -0
- package/dist/cjs/hooks/renderModal.js +11 -0
- package/dist/cjs/hooks/renderModal.js.map +1 -0
- package/dist/cjs/hooks/renderPage.js +11 -0
- package/dist/cjs/hooks/renderPage.js.map +1 -0
- package/dist/cjs/hooks/renderUploadSidebar.js +11 -0
- package/dist/cjs/hooks/renderUploadSidebar.js.map +1 -0
- package/dist/cjs/hooks/renderUploadSidebarPanel.js +11 -0
- package/dist/cjs/hooks/renderUploadSidebarPanel.js.map +1 -0
- package/dist/cjs/hooks/settingsAreaSidebarItemGroups.js +3 -0
- package/dist/cjs/hooks/settingsAreaSidebarItemGroups.js.map +1 -0
- package/dist/cjs/hooks/uploadSidebarPanels.js +3 -0
- package/dist/cjs/hooks/uploadSidebarPanels.js.map +1 -0
- package/dist/cjs/hooks/uploadSidebars.js +3 -0
- package/dist/cjs/hooks/uploadSidebars.js.map +1 -0
- package/dist/cjs/hooks/uploadsDropdownActions.js +3 -0
- package/dist/cjs/hooks/uploadsDropdownActions.js.map +1 -0
- package/dist/cjs/hooks/validateManualFieldExtensionParameters.js +3 -0
- package/dist/cjs/hooks/validateManualFieldExtensionParameters.js.map +1 -0
- package/dist/cjs/icon.js +3 -0
- package/dist/cjs/icon.js.map +1 -0
- package/dist/cjs/index.js +46 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/manifest.js +2909 -0
- package/dist/cjs/manifest.js.map +1 -0
- package/dist/cjs/manifestTypes.js +3 -0
- package/dist/cjs/manifestTypes.js.map +1 -0
- package/dist/cjs/shared.js +3 -0
- package/dist/cjs/shared.js.map +1 -0
- package/dist/cjs/utils.js +136 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/esm/connect.d.ts +44 -244
- package/dist/esm/connect.js +74 -212
- package/dist/esm/connect.js.map +1 -1
- package/dist/esm/ctx/base.d.ts +670 -0
- package/dist/esm/ctx/base.js +2 -0
- package/dist/esm/ctx/base.js.map +1 -0
- package/dist/esm/ctx/commonExtras/field.d.ts +29 -0
- package/dist/esm/ctx/commonExtras/field.js +2 -0
- package/dist/esm/ctx/commonExtras/field.js.map +1 -0
- package/dist/esm/ctx/commonExtras/itemForm.d.ts +148 -0
- package/dist/esm/ctx/commonExtras/itemForm.js +2 -0
- package/dist/esm/ctx/commonExtras/itemForm.js.map +1 -0
- package/dist/esm/ctx/commonExtras/sizing.d.ts +23 -0
- package/dist/esm/ctx/commonExtras/sizing.js +2 -0
- package/dist/esm/ctx/commonExtras/sizing.js.map +1 -0
- package/dist/esm/ctx/pluginFrame.d.ts +12 -0
- package/dist/esm/ctx/pluginFrame.js +2 -0
- package/dist/esm/ctx/pluginFrame.js.map +1 -0
- package/dist/esm/hooks/assetSources.d.ts +41 -0
- package/dist/esm/hooks/assetSources.js +2 -0
- package/dist/esm/hooks/assetSources.js.map +1 -0
- package/dist/esm/hooks/buildItemPresentationInfo.d.ts +28 -0
- package/dist/esm/hooks/buildItemPresentationInfo.js +2 -0
- package/dist/esm/hooks/buildItemPresentationInfo.js.map +1 -0
- package/dist/esm/hooks/contentAreaSidebarItems.d.ts +39 -0
- package/dist/esm/hooks/contentAreaSidebarItems.js +2 -0
- package/dist/esm/hooks/contentAreaSidebarItems.js.map +1 -0
- package/dist/esm/hooks/customBlockStylesForStructuredTextField.d.ts +36 -0
- package/dist/esm/hooks/customBlockStylesForStructuredTextField.js +2 -0
- package/dist/esm/hooks/customBlockStylesForStructuredTextField.js.map +1 -0
- package/dist/esm/hooks/customMarksForStructuredTextField.d.ts +57 -0
- package/dist/esm/hooks/customMarksForStructuredTextField.js +2 -0
- package/dist/esm/hooks/customMarksForStructuredTextField.js.map +1 -0
- package/dist/esm/hooks/executeFieldDropdownAction.d.ts +9 -0
- package/dist/esm/hooks/executeFieldDropdownAction.js +2 -0
- package/dist/esm/hooks/executeFieldDropdownAction.js.map +1 -0
- package/dist/esm/hooks/executeItemFormDropdownAction.d.ts +8 -0
- package/dist/esm/hooks/executeItemFormDropdownAction.js +2 -0
- package/dist/esm/hooks/executeItemFormDropdownAction.js.map +1 -0
- package/dist/esm/hooks/executeItemsDropdownAction.d.ts +10 -0
- package/dist/esm/hooks/executeItemsDropdownAction.js +2 -0
- package/dist/esm/hooks/executeItemsDropdownAction.js.map +1 -0
- package/dist/esm/hooks/executeUploadsDropdownAction.d.ts +10 -0
- package/dist/esm/hooks/executeUploadsDropdownAction.js +2 -0
- package/dist/esm/hooks/executeUploadsDropdownAction.js.map +1 -0
- package/dist/esm/hooks/fieldDropdownActions.d.ts +11 -0
- package/dist/esm/hooks/fieldDropdownActions.js +2 -0
- package/dist/esm/hooks/fieldDropdownActions.js.map +1 -0
- package/dist/esm/hooks/initialLocationQueryForItemSelector.d.ts +26 -0
- package/dist/esm/hooks/initialLocationQueryForItemSelector.js +2 -0
- package/dist/esm/hooks/initialLocationQueryForItemSelector.js.map +1 -0
- package/dist/esm/hooks/itemCollectionOutlets.d.ts +24 -0
- package/dist/esm/hooks/itemCollectionOutlets.js +2 -0
- package/dist/esm/hooks/itemCollectionOutlets.js.map +1 -0
- package/dist/esm/hooks/itemFormDropdownActions.d.ts +11 -0
- package/dist/esm/hooks/itemFormDropdownActions.js +2 -0
- package/dist/esm/hooks/itemFormDropdownActions.js.map +1 -0
- package/dist/esm/hooks/itemFormOutlets.d.ts +29 -0
- package/dist/esm/hooks/itemFormOutlets.js +2 -0
- package/dist/esm/hooks/itemFormOutlets.js.map +1 -0
- package/dist/esm/hooks/itemFormSidebarPanels.d.ts +47 -0
- package/dist/esm/hooks/itemFormSidebarPanels.js +2 -0
- package/dist/esm/hooks/itemFormSidebarPanels.js.map +1 -0
- package/dist/esm/hooks/itemFormSidebars.d.ts +37 -0
- package/dist/esm/hooks/itemFormSidebars.js +2 -0
- package/dist/esm/hooks/itemFormSidebars.js.map +1 -0
- package/dist/esm/hooks/itemsDropdownActions.d.ts +11 -0
- package/dist/esm/hooks/itemsDropdownActions.js +2 -0
- package/dist/esm/hooks/itemsDropdownActions.js.map +1 -0
- package/dist/esm/hooks/mainNavigationTabs.d.ts +43 -0
- package/dist/esm/hooks/mainNavigationTabs.js +2 -0
- package/dist/esm/hooks/mainNavigationTabs.js.map +1 -0
- package/dist/esm/hooks/manualFieldExtensions.d.ts +58 -0
- package/dist/esm/hooks/manualFieldExtensions.js +2 -0
- package/dist/esm/hooks/manualFieldExtensions.js.map +1 -0
- package/dist/esm/hooks/onBeforeItemUpsert.d.ts +15 -0
- package/dist/esm/hooks/onBeforeItemUpsert.js +2 -0
- package/dist/esm/hooks/onBeforeItemUpsert.js.map +1 -0
- package/dist/esm/hooks/onBeforeItemsDestroy.d.ts +14 -0
- package/dist/esm/hooks/onBeforeItemsDestroy.js +2 -0
- package/dist/esm/hooks/onBeforeItemsDestroy.js.map +1 -0
- package/dist/esm/hooks/onBeforeItemsPublish.d.ts +14 -0
- package/dist/esm/hooks/onBeforeItemsPublish.js +2 -0
- package/dist/esm/hooks/onBeforeItemsPublish.js.map +1 -0
- package/dist/esm/hooks/onBeforeItemsUnpublish.d.ts +14 -0
- package/dist/esm/hooks/onBeforeItemsUnpublish.js +2 -0
- package/dist/esm/hooks/onBeforeItemsUnpublish.js.map +1 -0
- package/dist/esm/hooks/onBoot.d.ts +11 -0
- package/dist/esm/hooks/onBoot.js +2 -0
- package/dist/esm/hooks/onBoot.js.map +1 -0
- package/dist/esm/hooks/overrideFieldExtensions.d.ts +88 -0
- package/dist/esm/hooks/overrideFieldExtensions.js +2 -0
- package/dist/esm/hooks/overrideFieldExtensions.js.map +1 -0
- package/dist/esm/hooks/renderAssetSource.d.ts +98 -0
- package/dist/esm/hooks/renderAssetSource.js +8 -0
- package/dist/esm/hooks/renderAssetSource.js.map +1 -0
- package/dist/esm/hooks/renderConfigScreen.d.ts +12 -0
- package/dist/esm/hooks/renderConfigScreen.js +8 -0
- package/dist/esm/hooks/renderConfigScreen.js.map +1 -0
- package/dist/esm/hooks/renderFieldExtension.d.ts +20 -0
- package/dist/esm/hooks/renderFieldExtension.js +8 -0
- package/dist/esm/hooks/renderFieldExtension.js.map +1 -0
- package/dist/esm/hooks/renderItemCollectionOutlet.d.ts +9 -0
- package/dist/esm/hooks/renderItemCollectionOutlet.js +8 -0
- package/dist/esm/hooks/renderItemCollectionOutlet.js.map +1 -0
- package/dist/esm/hooks/renderItemFormOutlet.d.ts +16 -0
- package/dist/esm/hooks/renderItemFormOutlet.js +8 -0
- package/dist/esm/hooks/renderItemFormOutlet.js.map +1 -0
- package/dist/esm/hooks/renderItemFormSidebar.d.ts +21 -0
- package/dist/esm/hooks/renderItemFormSidebar.js +8 -0
- package/dist/esm/hooks/renderItemFormSidebar.js.map +1 -0
- package/dist/esm/hooks/renderItemFormSidebarPanel.d.ts +21 -0
- package/dist/esm/hooks/renderItemFormSidebarPanel.js +8 -0
- package/dist/esm/hooks/renderItemFormSidebarPanel.js.map +1 -0
- package/dist/esm/hooks/renderManualFieldExtensionConfigScreen.d.ts +55 -0
- package/dist/esm/hooks/renderManualFieldExtensionConfigScreen.js +8 -0
- package/dist/esm/hooks/renderManualFieldExtensionConfigScreen.js.map +1 -0
- package/dist/esm/hooks/renderModal.d.ts +37 -0
- package/dist/esm/hooks/renderModal.js +8 -0
- package/dist/esm/hooks/renderModal.js.map +1 -0
- package/dist/esm/hooks/renderPage.d.ts +16 -0
- package/dist/esm/hooks/renderPage.js +8 -0
- package/dist/esm/hooks/renderPage.js.map +1 -0
- package/dist/esm/hooks/renderUploadSidebar.d.ts +25 -0
- package/dist/esm/hooks/renderUploadSidebar.js +8 -0
- package/dist/esm/hooks/renderUploadSidebar.js.map +1 -0
- package/dist/esm/hooks/renderUploadSidebarPanel.d.ts +25 -0
- package/dist/esm/hooks/renderUploadSidebarPanel.js +8 -0
- package/dist/esm/hooks/renderUploadSidebarPanel.js.map +1 -0
- package/dist/esm/hooks/settingsAreaSidebarItemGroups.d.ts +52 -0
- package/dist/esm/hooks/settingsAreaSidebarItemGroups.js +2 -0
- package/dist/esm/hooks/settingsAreaSidebarItemGroups.js.map +1 -0
- package/dist/esm/hooks/uploadSidebarPanels.d.ts +47 -0
- package/dist/esm/hooks/uploadSidebarPanels.js +2 -0
- package/dist/esm/hooks/uploadSidebarPanels.js.map +1 -0
- package/dist/esm/hooks/uploadSidebars.d.ts +34 -0
- package/dist/esm/hooks/uploadSidebars.js +2 -0
- package/dist/esm/hooks/uploadSidebars.js.map +1 -0
- package/dist/esm/hooks/uploadsDropdownActions.d.ts +5 -0
- package/dist/esm/hooks/uploadsDropdownActions.js +2 -0
- package/dist/esm/hooks/uploadsDropdownActions.js.map +1 -0
- package/dist/esm/hooks/validateManualFieldExtensionParameters.d.ts +9 -0
- package/dist/esm/hooks/validateManualFieldExtensionParameters.js +2 -0
- package/dist/esm/hooks/validateManualFieldExtensionParameters.js.map +1 -0
- package/dist/esm/icon.d.ts +6 -0
- package/dist/esm/icon.js +2 -0
- package/dist/esm/icon.js.map +1 -0
- package/dist/esm/index.d.ts +57 -12
- package/dist/esm/index.js +46 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/manifest.d.ts +2 -0
- package/dist/esm/manifest.js +2906 -0
- package/dist/esm/manifest.js.map +1 -0
- package/dist/esm/manifestTypes.d.ts +51 -0
- package/dist/esm/manifestTypes.js +2 -0
- package/dist/esm/manifestTypes.js.map +1 -0
- package/dist/esm/shared.d.ts +56 -0
- package/dist/esm/shared.js +2 -0
- package/dist/esm/shared.js.map +1 -0
- package/dist/esm/utils.d.ts +31 -0
- package/dist/esm/utils.js +129 -0
- package/dist/esm/utils.js.map +1 -0
- package/dist/types/connect.d.ts +44 -244
- package/dist/types/ctx/base.d.ts +670 -0
- package/dist/types/ctx/commonExtras/field.d.ts +29 -0
- package/dist/types/ctx/commonExtras/itemForm.d.ts +148 -0
- package/dist/types/ctx/commonExtras/sizing.d.ts +23 -0
- package/dist/types/ctx/pluginFrame.d.ts +12 -0
- package/dist/types/hooks/assetSources.d.ts +41 -0
- package/dist/types/hooks/buildItemPresentationInfo.d.ts +28 -0
- package/dist/types/hooks/contentAreaSidebarItems.d.ts +39 -0
- package/dist/types/hooks/customBlockStylesForStructuredTextField.d.ts +36 -0
- package/dist/types/hooks/customMarksForStructuredTextField.d.ts +57 -0
- package/dist/types/hooks/executeFieldDropdownAction.d.ts +9 -0
- package/dist/types/hooks/executeItemFormDropdownAction.d.ts +8 -0
- package/dist/types/hooks/executeItemsDropdownAction.d.ts +10 -0
- package/dist/types/hooks/executeUploadsDropdownAction.d.ts +10 -0
- package/dist/types/hooks/fieldDropdownActions.d.ts +11 -0
- package/dist/types/hooks/initialLocationQueryForItemSelector.d.ts +26 -0
- package/dist/types/hooks/itemCollectionOutlets.d.ts +24 -0
- package/dist/types/hooks/itemFormDropdownActions.d.ts +11 -0
- package/dist/types/hooks/itemFormOutlets.d.ts +29 -0
- package/dist/types/hooks/itemFormSidebarPanels.d.ts +47 -0
- package/dist/types/hooks/itemFormSidebars.d.ts +37 -0
- package/dist/types/hooks/itemsDropdownActions.d.ts +11 -0
- package/dist/types/hooks/mainNavigationTabs.d.ts +43 -0
- package/dist/types/hooks/manualFieldExtensions.d.ts +58 -0
- package/dist/types/hooks/onBeforeItemUpsert.d.ts +15 -0
- package/dist/types/hooks/onBeforeItemsDestroy.d.ts +14 -0
- package/dist/types/hooks/onBeforeItemsPublish.d.ts +14 -0
- package/dist/types/hooks/onBeforeItemsUnpublish.d.ts +14 -0
- package/dist/types/hooks/onBoot.d.ts +11 -0
- package/dist/types/hooks/overrideFieldExtensions.d.ts +88 -0
- package/dist/types/hooks/renderAssetSource.d.ts +98 -0
- package/dist/types/hooks/renderConfigScreen.d.ts +12 -0
- package/dist/types/hooks/renderFieldExtension.d.ts +20 -0
- package/dist/types/hooks/renderItemCollectionOutlet.d.ts +9 -0
- package/dist/types/hooks/renderItemFormOutlet.d.ts +16 -0
- package/dist/types/hooks/renderItemFormSidebar.d.ts +21 -0
- package/dist/types/hooks/renderItemFormSidebarPanel.d.ts +21 -0
- package/dist/types/hooks/renderManualFieldExtensionConfigScreen.d.ts +55 -0
- package/dist/types/hooks/renderModal.d.ts +37 -0
- package/dist/types/hooks/renderPage.d.ts +16 -0
- package/dist/types/hooks/renderUploadSidebar.d.ts +25 -0
- package/dist/types/hooks/renderUploadSidebarPanel.d.ts +25 -0
- package/dist/types/hooks/settingsAreaSidebarItemGroups.d.ts +52 -0
- package/dist/types/hooks/uploadSidebarPanels.d.ts +47 -0
- package/dist/types/hooks/uploadSidebars.d.ts +34 -0
- package/dist/types/hooks/uploadsDropdownActions.d.ts +5 -0
- package/dist/types/hooks/validateManualFieldExtensionParameters.d.ts +9 -0
- package/dist/types/icon.d.ts +6 -0
- package/dist/types/index.d.ts +57 -12
- package/dist/types/manifest.d.ts +2 -0
- package/dist/types/manifestTypes.d.ts +51 -0
- package/dist/types/shared.d.ts +56 -0
- package/dist/types/utils.d.ts +31 -0
- package/manifest.json +2905 -0
- package/package.json +7 -6
- package/src/connect.ts +207 -709
- package/src/ctx/base.ts +714 -0
- package/src/ctx/commonExtras/field.ts +27 -0
- package/src/ctx/commonExtras/itemForm.ts +155 -0
- package/src/ctx/commonExtras/sizing.ts +27 -0
- package/src/ctx/pluginFrame.ts +39 -0
- package/src/hooks/assetSources.ts +43 -0
- package/src/hooks/buildItemPresentationInfo.ts +33 -0
- package/src/hooks/contentAreaSidebarItems.ts +41 -0
- package/src/hooks/customBlockStylesForStructuredTextField.ts +42 -0
- package/src/hooks/customMarksForStructuredTextField.ts +64 -0
- package/src/hooks/executeFieldDropdownAction.ts +21 -0
- package/src/hooks/executeItemFormDropdownAction.ts +19 -0
- package/src/hooks/executeItemsDropdownAction.ts +16 -0
- package/src/hooks/executeUploadsDropdownAction.ts +15 -0
- package/src/hooks/fieldDropdownActions.ts +18 -0
- package/src/hooks/initialLocationQueryForItemSelector.ts +33 -0
- package/src/hooks/itemCollectionOutlets.ts +29 -0
- package/src/hooks/itemFormDropdownActions.ts +18 -0
- package/src/hooks/itemFormOutlets.ts +31 -0
- package/src/hooks/itemFormSidebarPanels.ts +52 -0
- package/src/hooks/itemFormSidebars.ts +39 -0
- package/src/hooks/itemsDropdownActions.ts +16 -0
- package/src/hooks/mainNavigationTabs.ts +45 -0
- package/src/hooks/manualFieldExtensions.ts +78 -0
- package/src/hooks/onBeforeItemUpsert.ts +19 -0
- package/src/hooks/onBeforeItemsDestroy.ts +15 -0
- package/src/hooks/onBeforeItemsPublish.ts +15 -0
- package/src/hooks/onBeforeItemsUnpublish.ts +15 -0
- package/src/hooks/onBoot.ts +13 -0
- package/src/hooks/overrideFieldExtensions.ts +95 -0
- package/src/hooks/renderAssetSource.ts +119 -0
- package/src/hooks/renderConfigScreen.ts +27 -0
- package/src/hooks/renderFieldExtension.ts +46 -0
- package/src/hooks/renderItemCollectionOutlet.ts +29 -0
- package/src/hooks/renderItemFormOutlet.ts +40 -0
- package/src/hooks/renderItemFormSidebar.ts +45 -0
- package/src/hooks/renderItemFormSidebarPanel.ts +46 -0
- package/src/hooks/renderManualFieldExtensionConfigScreen.ts +83 -0
- package/src/hooks/renderModal.ts +54 -0
- package/src/hooks/renderPage.ts +33 -0
- package/src/hooks/renderUploadSidebar.ts +44 -0
- package/src/hooks/renderUploadSidebarPanel.ts +47 -0
- package/src/hooks/settingsAreaSidebarItemGroups.ts +55 -0
- package/src/hooks/uploadSidebarPanels.ts +57 -0
- package/src/hooks/uploadSidebars.ts +36 -0
- package/src/hooks/uploadsDropdownActions.ts +8 -0
- package/src/hooks/validateManualFieldExtensionParameters.ts +12 -0
- package/src/{types.ts → icon.ts} +0 -1739
- package/src/index.ts +49 -4
- package/src/manifest.ts +3062 -0
- package/src/manifestTypes.ts +56 -0
- package/src/shared.ts +67 -0
- package/src/utils.ts +253 -0
- package/dist/cjs/guards.js +0 -19
- package/dist/cjs/guards.js.map +0 -1
- package/dist/cjs/types.js.map +0 -1
- package/dist/esm/guards.d.ts +0 -37
- package/dist/esm/guards.js +0 -16
- package/dist/esm/guards.js.map +0 -1
- package/dist/esm/types.d.ts +0 -1569
- package/dist/esm/types.js +0 -2
- package/dist/esm/types.js.map +0 -1
- package/dist/types/guards.d.ts +0 -37
- package/dist/types/types.d.ts +0 -1569
- package/src/guards.ts +0 -51
- package/types.json +0 -37437
package/dist/esm/types.d.ts
DELETED
|
@@ -1,1569 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
import type { SchemaTypes } from '@datocms/cma-client';
|
|
3
|
-
import type { BlockNodeTypeWithCustomStyle } from 'datocms-structured-text-utils';
|
|
4
|
-
declare type Account = SchemaTypes.Account;
|
|
5
|
-
declare type Organization = SchemaTypes.Organization;
|
|
6
|
-
declare type Field = SchemaTypes.Field;
|
|
7
|
-
declare type Fieldset = SchemaTypes.Fieldset;
|
|
8
|
-
declare type Item = SchemaTypes.Item;
|
|
9
|
-
declare type ItemType = SchemaTypes.ItemType;
|
|
10
|
-
declare type Plugin = SchemaTypes.Plugin;
|
|
11
|
-
declare type Role = SchemaTypes.Role;
|
|
12
|
-
declare type Site = SchemaTypes.Site;
|
|
13
|
-
declare type SsoUser = SchemaTypes.SsoUser;
|
|
14
|
-
declare type Upload = SchemaTypes.Upload;
|
|
15
|
-
declare type User = SchemaTypes.User;
|
|
16
|
-
export declare type Icon = AwesomeFontIconIdentifier | {
|
|
17
|
-
type: 'svg';
|
|
18
|
-
viewBox: string;
|
|
19
|
-
content: string;
|
|
20
|
-
};
|
|
21
|
-
export declare type ItemListLocationQuery = {
|
|
22
|
-
locale?: string;
|
|
23
|
-
filter?: {
|
|
24
|
-
query?: string;
|
|
25
|
-
fields?: Record<string, unknown>;
|
|
26
|
-
};
|
|
27
|
-
};
|
|
28
|
-
export declare type ItemPresentationInfo = {
|
|
29
|
-
/** The title to present the record */
|
|
30
|
-
title: string;
|
|
31
|
-
/** An image representative of the record */
|
|
32
|
-
imageUrl?: string;
|
|
33
|
-
/**
|
|
34
|
-
* If different plugins implement the `buildItemPresentationInfo` hook, the
|
|
35
|
-
* one with the lowest `rank` will be used. If you want to specify an explicit
|
|
36
|
-
* value for `rank`, make sure to offer a way for final users to customize it
|
|
37
|
-
* inside the plugin's settings form, otherwise the hardcoded value you choose
|
|
38
|
-
* might clash with the one of another plugin!
|
|
39
|
-
*/
|
|
40
|
-
rank?: number;
|
|
41
|
-
};
|
|
42
|
-
export declare type InitialLocationQueryForItemSelector = {
|
|
43
|
-
locationQuery: ItemListLocationQuery;
|
|
44
|
-
/**
|
|
45
|
-
* If different plugins implement the `initialLocationQueryForItemSelector`
|
|
46
|
-
* hook, the one with the lowest `rank` will be used. If you want to specify
|
|
47
|
-
* an explicit value for `rank`, make sure to offer a way for final users to
|
|
48
|
-
* customize it inside the plugin's settings form, otherwise the hardcoded
|
|
49
|
-
* value you choose might clash with the one of another plugin!
|
|
50
|
-
*/
|
|
51
|
-
rank?: number;
|
|
52
|
-
};
|
|
53
|
-
/** A tab to be displayed in the top-bar of the UI */
|
|
54
|
-
export declare type MainNavigationTab = {
|
|
55
|
-
/** Label to be shown. Must be unique. */
|
|
56
|
-
label: string;
|
|
57
|
-
/**
|
|
58
|
-
* Icon to be shown alongside the label. Can be a FontAwesome icon name (ie.
|
|
59
|
-
* `"address-book"`) or a custom SVG definition. To maintain visual
|
|
60
|
-
* consistency with the rest of the interface, try to use FontAwesome icons
|
|
61
|
-
* whenever possible.
|
|
62
|
-
*/
|
|
63
|
-
icon: Icon;
|
|
64
|
-
/** ID of the page linked to the tab */
|
|
65
|
-
pointsTo: {
|
|
66
|
-
pageId: string;
|
|
67
|
-
};
|
|
68
|
-
/**
|
|
69
|
-
* Expresses where you want to place the tab in the top-bar. If not specified,
|
|
70
|
-
* the tab will be placed after the standard tabs provided by DatoCMS itself.
|
|
71
|
-
*/
|
|
72
|
-
placement?: [
|
|
73
|
-
'before' | 'after',
|
|
74
|
-
'content' | 'media' | 'schema' | 'configuration' | 'cdaPlayground'
|
|
75
|
-
];
|
|
76
|
-
/**
|
|
77
|
-
* If different plugins specify the same `placement` for their tabs, they will
|
|
78
|
-
* be displayed by ascending `rank`. If you want to specify an explicit value
|
|
79
|
-
* for `rank`, make sure to offer a way for final users to customize it inside
|
|
80
|
-
* the plugin's settings form, otherwise the hardcoded value you choose might
|
|
81
|
-
* clash with the one of another plugin!
|
|
82
|
-
*/
|
|
83
|
-
rank?: number;
|
|
84
|
-
};
|
|
85
|
-
/** An item contained in a Settings Area group */
|
|
86
|
-
export declare type SettingsAreaSidebarItem = {
|
|
87
|
-
/** Label to be shown. Must be unique. */
|
|
88
|
-
label: string;
|
|
89
|
-
/**
|
|
90
|
-
* Icon to be shown alongside the label. Can be a FontAwesome icon name (ie.
|
|
91
|
-
* `"address-book"`) or a custom SVG definition. To maintain visual
|
|
92
|
-
* consistency with the rest of the interface, try to use FontAwesome icons
|
|
93
|
-
* whenever possible.
|
|
94
|
-
*/
|
|
95
|
-
icon: Icon;
|
|
96
|
-
/** ID of the page linked to the item */
|
|
97
|
-
pointsTo: {
|
|
98
|
-
pageId: string;
|
|
99
|
-
};
|
|
100
|
-
};
|
|
101
|
-
/**
|
|
102
|
-
* The sidebar in the Settings Area presents a number of pages grouped by topic.
|
|
103
|
-
* This object represents a new group to be added in the sideebar to the
|
|
104
|
-
* standard ones DatoCMS provides.
|
|
105
|
-
*/
|
|
106
|
-
export declare type SettingsAreaSidebarItemGroup = {
|
|
107
|
-
/** Label to be shown. Must be unique. */
|
|
108
|
-
label: string;
|
|
109
|
-
/** The list of items it contains * */
|
|
110
|
-
items: SettingsAreaSidebarItem[];
|
|
111
|
-
/**
|
|
112
|
-
* Expresses where you want the group to be placed inside the sidebar. If not
|
|
113
|
-
* specified, the item will be placed after the standard items provided by
|
|
114
|
-
* DatoCMS itself.
|
|
115
|
-
*/
|
|
116
|
-
placement?: ['before' | 'after', 'properties' | 'permissions'];
|
|
117
|
-
/**
|
|
118
|
-
* If different plugins specify the same `placement` for their sections, they
|
|
119
|
-
* will be displayed by ascending `rank`. If you want to specify an explicit
|
|
120
|
-
* value for `rank`, make sure to offer a way for final users to customize it
|
|
121
|
-
* inside the plugin's settings form, otherwise the hardcoded value you choose
|
|
122
|
-
* might clash with the one of another plugin!
|
|
123
|
-
*/
|
|
124
|
-
rank?: number;
|
|
125
|
-
};
|
|
126
|
-
/**
|
|
127
|
-
* The sidebar in the Content Area presents a number of user-defined menu-items.
|
|
128
|
-
* This object represents a new item to be added in the sidebar.
|
|
129
|
-
*/
|
|
130
|
-
export declare type ContentAreaSidebarItem = {
|
|
131
|
-
/** Label to be shown. Must be unique. */
|
|
132
|
-
label: string;
|
|
133
|
-
/**
|
|
134
|
-
* Icon to be shown alongside the label. Can be a FontAwesome icon name (ie.
|
|
135
|
-
* `"address-book"`) or a custom SVG definition. To maintain visual
|
|
136
|
-
* consistency with the rest of the interface, try to use FontAwesome icons
|
|
137
|
-
* whenever possible.
|
|
138
|
-
*/
|
|
139
|
-
icon: Icon;
|
|
140
|
-
/** ID of the page linked to the item */
|
|
141
|
-
pointsTo: {
|
|
142
|
-
pageId: string;
|
|
143
|
-
};
|
|
144
|
-
/**
|
|
145
|
-
* Expresses where you want the item to be placed inside the sidebar. If not
|
|
146
|
-
* specified, the item will be placed after the standard items provided by
|
|
147
|
-
* DatoCMS itself.
|
|
148
|
-
*/
|
|
149
|
-
placement?: ['before' | 'after', 'menuItems' | 'seoPreferences'];
|
|
150
|
-
/**
|
|
151
|
-
* If different plugins specify the same `placement` for their panels, they
|
|
152
|
-
* will be displayed by ascending `rank`. If you want to specify an explicit
|
|
153
|
-
* value for `rank`, make sure to offer a way for final users to customize it
|
|
154
|
-
* inside the plugin's settings form, otherwise the hardcoded value you choose
|
|
155
|
-
* might clash with the one of another plugin!
|
|
156
|
-
*/
|
|
157
|
-
rank?: number;
|
|
158
|
-
};
|
|
159
|
-
export declare type FieldExtensionType = 'editor' | 'addon';
|
|
160
|
-
export declare type FieldType = 'boolean' | 'color' | 'date_time' | 'date' | 'file' | 'float' | 'gallery' | 'integer' | 'json' | 'lat_lon' | 'link' | 'links' | 'rich_text' | 'seo' | 'slug' | 'string' | 'structured_text' | 'text' | 'video';
|
|
161
|
-
/**
|
|
162
|
-
* Field extensions extend the basic functionality of DatoCMS when it comes to
|
|
163
|
-
* presenting record's fields to the final user. Depending on the extension type
|
|
164
|
-
* (`editor` or `addon`) they will be shown in different places of the
|
|
165
|
-
* interface.
|
|
166
|
-
*/
|
|
167
|
-
export declare type ManualFieldExtension = {
|
|
168
|
-
/**
|
|
169
|
-
* ID of field extension. Will be the first argument for the
|
|
170
|
-
* `renderFieldExtension` function
|
|
171
|
-
*/
|
|
172
|
-
id: string;
|
|
173
|
-
/** Name to be shown when editing fields */
|
|
174
|
-
name: string;
|
|
175
|
-
/**
|
|
176
|
-
* Type of field extension. An `editor` extension replaces the default field
|
|
177
|
-
* editor that DatoCMS provides, while an `addon` extension is placed
|
|
178
|
-
* underneath the field editor to provide additional info/behaviour. You can
|
|
179
|
-
* setup multiple field addons for every field.
|
|
180
|
-
*/
|
|
181
|
-
type: FieldExtensionType;
|
|
182
|
-
/**
|
|
183
|
-
* For `editor` extensions: moves the field to the sidebar of the record
|
|
184
|
-
* editing page, mimicking a sidebar panel
|
|
185
|
-
*/
|
|
186
|
-
asSidebarPanel?: boolean | {
|
|
187
|
-
startOpen: boolean;
|
|
188
|
-
};
|
|
189
|
-
/**
|
|
190
|
-
* The type of fields that the field extension in compatible with. You can use
|
|
191
|
-
* the shortcut `all` to target all types of fields
|
|
192
|
-
*/
|
|
193
|
-
fieldTypes: 'all' | FieldType[];
|
|
194
|
-
/**
|
|
195
|
-
* Whether this field extension needs some configuration options before being
|
|
196
|
-
* installed in a field or not. Will trigger the
|
|
197
|
-
* `renderManualFieldExtensionConfigScreen` and
|
|
198
|
-
* `validateManualFieldExtensionParameters` methods
|
|
199
|
-
*/
|
|
200
|
-
configurable?: boolean | {
|
|
201
|
-
initialHeight: number;
|
|
202
|
-
};
|
|
203
|
-
/**
|
|
204
|
-
* The initial height to set for the iframe that will render the field
|
|
205
|
-
* extension
|
|
206
|
-
*/
|
|
207
|
-
initialHeight?: number;
|
|
208
|
-
};
|
|
209
|
-
export declare type ItemFormSidebarPanelPlacement = [
|
|
210
|
-
'before' | 'after',
|
|
211
|
-
'info' | 'publishedVersion' | 'schedule' | 'links' | 'history'
|
|
212
|
-
];
|
|
213
|
-
/** A sidebar panel to be shown inside the record's editing page */
|
|
214
|
-
export declare type ItemFormSidebarPanel = {
|
|
215
|
-
/**
|
|
216
|
-
* ID of the panel. Will be the first argument for the
|
|
217
|
-
* `renderItemFormSidebarPanel` function
|
|
218
|
-
*/
|
|
219
|
-
id: string;
|
|
220
|
-
/** Label to be shown on the collapsible sidebar panel handle */
|
|
221
|
-
label: string;
|
|
222
|
-
/**
|
|
223
|
-
* An arbitrary configuration object that will be passed as the `parameters`
|
|
224
|
-
* property of the second argument of the `renderItemFormSidebarPanel`
|
|
225
|
-
* function
|
|
226
|
-
*/
|
|
227
|
-
parameters?: Record<string, unknown>;
|
|
228
|
-
/** Whether the sidebar panel will start open or collapsed */
|
|
229
|
-
startOpen?: boolean;
|
|
230
|
-
/**
|
|
231
|
-
* Expresses where you want the item to be placed inside the sidebar. If not
|
|
232
|
-
* specified, the item will be placed after the standard panels provided by
|
|
233
|
-
* DatoCMS itself.
|
|
234
|
-
*/
|
|
235
|
-
placement?: ItemFormSidebarPanelPlacement;
|
|
236
|
-
/**
|
|
237
|
-
* If multiple sidebar panels specify the same `placement`, they will be
|
|
238
|
-
* sorted by ascending `rank`. If you want to specify an explicit value for
|
|
239
|
-
* `rank`, make sure to offer a way for final users to customize it inside the
|
|
240
|
-
* plugin's settings form, otherwise the hardcoded value you choose might
|
|
241
|
-
* clash with the one of another plugin!
|
|
242
|
-
*/
|
|
243
|
-
rank?: number;
|
|
244
|
-
/** The initial height to set for the iframe that will render the sidebar panel */
|
|
245
|
-
initialHeight?: number;
|
|
246
|
-
};
|
|
247
|
-
/** A sidebar to be shown inside the record's editing page */
|
|
248
|
-
export declare type ItemFormSidebar = {
|
|
249
|
-
/**
|
|
250
|
-
* ID of the sidebar. Will be the first argument for the
|
|
251
|
-
* `renderItemFormSidebar` function
|
|
252
|
-
*/
|
|
253
|
-
id: string;
|
|
254
|
-
/** Label to be shown on the collapsible sidebar handle */
|
|
255
|
-
label: string;
|
|
256
|
-
/**
|
|
257
|
-
* An arbitrary configuration object that will be passed as the `parameters`
|
|
258
|
-
* property of the second argument of the `renderItemFormSidebar` function
|
|
259
|
-
*/
|
|
260
|
-
parameters?: Record<string, unknown>;
|
|
261
|
-
/**
|
|
262
|
-
* If multiple sidebars specify the same `placement`, they will be sorted by
|
|
263
|
-
* ascending `rank`. If you want to specify an explicit value for `rank`, make
|
|
264
|
-
* sure to offer a way for final users to customize it inside the plugin's
|
|
265
|
-
* settings form, otherwise the hardcoded value you choose might clash with
|
|
266
|
-
* the one of another plugin!
|
|
267
|
-
*/
|
|
268
|
-
rank?: number;
|
|
269
|
-
/** The preferred width for the sidebar */
|
|
270
|
-
preferredWidth?: number;
|
|
271
|
-
};
|
|
272
|
-
/** An outlet to be shown at the top of a record's editing page */
|
|
273
|
-
export declare type ItemFormOutlet = {
|
|
274
|
-
/**
|
|
275
|
-
* ID of the outlet. Will be the first argument for the `renderItemFormOutlet`
|
|
276
|
-
* function
|
|
277
|
-
*/
|
|
278
|
-
id: string;
|
|
279
|
-
/**
|
|
280
|
-
* Multiple outlets will be sorted by ascending `rank`. If you want to specify
|
|
281
|
-
* an explicit value for `rank`, make sure to offer a way for final users to
|
|
282
|
-
* customize it inside the plugin's settings form, otherwise the hardcoded
|
|
283
|
-
* value you choose might clash with the one of another plugin!
|
|
284
|
-
*/
|
|
285
|
-
rank?: number;
|
|
286
|
-
/** The initial height to set for the iframe that will render the outlet */
|
|
287
|
-
initialHeight?: number;
|
|
288
|
-
};
|
|
289
|
-
/** A field editor/sidebar forced on a field */
|
|
290
|
-
export declare type EditorOverride = {
|
|
291
|
-
/**
|
|
292
|
-
* ID of field extension. Will be the first argument for the
|
|
293
|
-
* `renderFieldExtension` function
|
|
294
|
-
*/
|
|
295
|
-
id: string;
|
|
296
|
-
/**
|
|
297
|
-
* Moves the field to the sidebar of the record editing page, mimicking a
|
|
298
|
-
* sidebar panel
|
|
299
|
-
*/
|
|
300
|
-
asSidebarPanel?: boolean | {
|
|
301
|
-
startOpen?: boolean;
|
|
302
|
-
placement?: ItemFormSidebarPanelPlacement;
|
|
303
|
-
};
|
|
304
|
-
/**
|
|
305
|
-
* An arbitrary configuration object that will be passed as the `parameters`
|
|
306
|
-
* property of the second argument of the `renderFieldExtension` function
|
|
307
|
-
*/
|
|
308
|
-
parameters?: Record<string, unknown>;
|
|
309
|
-
/**
|
|
310
|
-
* If multiple plugins override a field, the one with the lowest `rank` will
|
|
311
|
-
* win. If you want to specify an explicit value for `rank`, make sure to
|
|
312
|
-
* offer a way for final users to customize it inside the plugin's settings
|
|
313
|
-
* form, otherwise the hardcoded value you choose might clash with the one of
|
|
314
|
-
* another plugin!
|
|
315
|
-
*/
|
|
316
|
-
rank?: number;
|
|
317
|
-
/**
|
|
318
|
-
* The initial height to set for the iframe that will render the field
|
|
319
|
-
* extension
|
|
320
|
-
*/
|
|
321
|
-
initialHeight?: number;
|
|
322
|
-
};
|
|
323
|
-
/** A field addon extension forced on a field */
|
|
324
|
-
export declare type AddonOverride = {
|
|
325
|
-
/**
|
|
326
|
-
* ID of field extension. Will be the first argument for the
|
|
327
|
-
* `renderFieldExtension` function
|
|
328
|
-
*/
|
|
329
|
-
id: string;
|
|
330
|
-
/**
|
|
331
|
-
* An arbitrary configuration object that will be passed as the `parameters`
|
|
332
|
-
* property of the second argument of the `renderFieldExtension` function
|
|
333
|
-
*/
|
|
334
|
-
parameters?: Record<string, unknown>;
|
|
335
|
-
/**
|
|
336
|
-
* If multiple addons are present for a field, they will be sorted by
|
|
337
|
-
* ascending `rank`. If you want to specify an explicit value for `rank`, make
|
|
338
|
-
* sure to offer a way for final users to customize it inside the plugin's
|
|
339
|
-
* settings form, otherwise the hardcoded value you choose might clash with
|
|
340
|
-
* the one of another plugin!
|
|
341
|
-
*/
|
|
342
|
-
rank?: number;
|
|
343
|
-
/**
|
|
344
|
-
* The initial height to set for the iframe that will render the field
|
|
345
|
-
* extension
|
|
346
|
-
*/
|
|
347
|
-
initialHeight?: number;
|
|
348
|
-
};
|
|
349
|
-
export declare type StructuredTextCustomMarkPlacement = [
|
|
350
|
-
'before' | 'after',
|
|
351
|
-
'strong' | 'emphasis' | 'underline' | 'code' | 'highlight' | 'strikethrough'
|
|
352
|
-
];
|
|
353
|
-
/** An object expressing a custom mark for a Structured Text field */
|
|
354
|
-
export declare type StructuredTextCustomMark = {
|
|
355
|
-
/** ID of mark */
|
|
356
|
-
id: string;
|
|
357
|
-
/** Label representing the custom mark */
|
|
358
|
-
label: string;
|
|
359
|
-
/**
|
|
360
|
-
* Icon to be shown alongside the label. Can be a FontAwesome icon name (ie.
|
|
361
|
-
* `"address-book"`) or a custom SVG definition. To maintain visual
|
|
362
|
-
* consistency with the rest of the interface, try to use FontAwesome icons
|
|
363
|
-
* whenever possible
|
|
364
|
-
*/
|
|
365
|
-
icon: Icon;
|
|
366
|
-
/**
|
|
367
|
-
* Expresses where you want the custom mark button to be placed inside the
|
|
368
|
-
* toolbar. If not specified, the item will be placed after the standard marks
|
|
369
|
-
* provided by DatoCMS itself.
|
|
370
|
-
*/
|
|
371
|
-
placement?: StructuredTextCustomMarkPlacement;
|
|
372
|
-
/**
|
|
373
|
-
* If multiple custom marks specify the same `placement` for their toolbar
|
|
374
|
-
* button, they will be sorted by ascending `rank`. If you want to specify an
|
|
375
|
-
* explicit value for `rank`, make sure to offer a way for final users to
|
|
376
|
-
* customize it inside the plugin's settings form, otherwise the hardcoded
|
|
377
|
-
* value you choose might clash with the one of another plugin!
|
|
378
|
-
*/
|
|
379
|
-
rank?: number;
|
|
380
|
-
/**
|
|
381
|
-
* Keyboard shortcut associated with the custom mark, expressed using the
|
|
382
|
-
* https://github.com/ianstormtaylor/is-hotkey syntax (ie. `mod+shift+x`)
|
|
383
|
-
*/
|
|
384
|
-
keyboardShortcut?: string;
|
|
385
|
-
/** How the custom mark will be styled inside the editor */
|
|
386
|
-
appliedStyle: React.CSSProperties;
|
|
387
|
-
};
|
|
388
|
-
/** An object expressing a custom block style for a Structured Text field */
|
|
389
|
-
export declare type StructuredTextCustomBlockStyle = {
|
|
390
|
-
/** ID of custom block style */
|
|
391
|
-
id: string;
|
|
392
|
-
/** The block node that can apply this style */
|
|
393
|
-
node: BlockNodeTypeWithCustomStyle;
|
|
394
|
-
/** ID of custom block style */
|
|
395
|
-
label: string;
|
|
396
|
-
/** How the block will be styled inside the editor to represent the style */
|
|
397
|
-
appliedStyle: React.CSSProperties;
|
|
398
|
-
/**
|
|
399
|
-
* Custom styles for a block node will be sorted by ascending `rank`. If you
|
|
400
|
-
* want to specify an explicit value for `rank`, make sure to offer a way for
|
|
401
|
-
* final users to customize it inside the plugin's settings form, otherwise
|
|
402
|
-
* the hardcoded value you choose might clash with the one of another plugin!
|
|
403
|
-
*/
|
|
404
|
-
rank?: number;
|
|
405
|
-
};
|
|
406
|
-
/**
|
|
407
|
-
* An object expressing some field extensions you want to force on a particular
|
|
408
|
-
* field
|
|
409
|
-
*/
|
|
410
|
-
export declare type FieldExtensionOverride = {
|
|
411
|
-
/** Force a field editor/sidebar extension on a field */
|
|
412
|
-
editor?: EditorOverride;
|
|
413
|
-
/** One or more field sidebar extensions to forcefully add to a field */
|
|
414
|
-
addons?: AddonOverride[];
|
|
415
|
-
};
|
|
416
|
-
/** An object containing the theme colors for the current DatoCMS project */
|
|
417
|
-
export declare type Theme = {
|
|
418
|
-
primaryColor: string;
|
|
419
|
-
accentColor: string;
|
|
420
|
-
semiTransparentAccentColor: string;
|
|
421
|
-
lightColor: string;
|
|
422
|
-
darkColor: string;
|
|
423
|
-
};
|
|
424
|
-
/** Focal point of an image asset */
|
|
425
|
-
export declare type FocalPoint = {
|
|
426
|
-
/** Horizontal position expressed as float between 0 and 1 */
|
|
427
|
-
x: number;
|
|
428
|
-
/** Vertical position expressed as float between 0 and 1 */
|
|
429
|
-
y: number;
|
|
430
|
-
};
|
|
431
|
-
/** The structure contained in a "single asset" field */
|
|
432
|
-
export declare type FileFieldValue = {
|
|
433
|
-
/** ID of the asset */
|
|
434
|
-
upload_id: string;
|
|
435
|
-
/** Alternate text for the asset */
|
|
436
|
-
alt: string | null;
|
|
437
|
-
/** Title for the asset */
|
|
438
|
-
title: string | null;
|
|
439
|
-
/** Focal point of an asset */
|
|
440
|
-
focal_point: FocalPoint | null;
|
|
441
|
-
/** Object with arbitrary metadata related to the asset */
|
|
442
|
-
custom_data: Record<string, string>;
|
|
443
|
-
};
|
|
444
|
-
/** A modal to present to the user */
|
|
445
|
-
export declare type Modal = {
|
|
446
|
-
/** ID of the modal. Will be the first argument for the `renderModal` function */
|
|
447
|
-
id: string;
|
|
448
|
-
/** Title for the modal. Ignored by `fullWidth` modals */
|
|
449
|
-
title?: string;
|
|
450
|
-
/** Whether to present a close button for the modal or not */
|
|
451
|
-
closeDisabled?: boolean;
|
|
452
|
-
/** Width of the modal. Can be a number, or one of the predefined sizes */
|
|
453
|
-
width?: 's' | 'm' | 'l' | 'xl' | 'fullWidth' | number;
|
|
454
|
-
/**
|
|
455
|
-
* An arbitrary configuration object that will be passed as the `parameters`
|
|
456
|
-
* property of the second argument of the `renderModal` function
|
|
457
|
-
*/
|
|
458
|
-
parameters?: Record<string, unknown>;
|
|
459
|
-
/** The initial height to set for the iframe that will render the modal content */
|
|
460
|
-
initialHeight?: number;
|
|
461
|
-
};
|
|
462
|
-
/** An additional asset source */
|
|
463
|
-
export declare type AssetSource = {
|
|
464
|
-
/**
|
|
465
|
-
* ID of the asset source. Will be the first argument for the
|
|
466
|
-
* `renderAssetSource` function
|
|
467
|
-
*/
|
|
468
|
-
id: string;
|
|
469
|
-
/** Name of the asset that will be shown to the user */
|
|
470
|
-
name: string;
|
|
471
|
-
/**
|
|
472
|
-
* Icon to be shown alongside the name. Can be a FontAwesome icon name (ie.
|
|
473
|
-
* `"address-book"`) or a custom SVG definition. To maintain visual
|
|
474
|
-
* consistency with the rest of the interface, try to use FontAwesome icons
|
|
475
|
-
* whenever possible.
|
|
476
|
-
*/
|
|
477
|
-
icon: Icon;
|
|
478
|
-
/**
|
|
479
|
-
* Configuration options for the modal that will be opened to select a media
|
|
480
|
-
* file from this source
|
|
481
|
-
*/
|
|
482
|
-
modal?: {
|
|
483
|
-
/** Width of the modal. Can be a number, or one of the predefined sizes */
|
|
484
|
-
width?: 's' | 'm' | 'l' | 'xl' | number;
|
|
485
|
-
/**
|
|
486
|
-
* The initial height to set for the iframe that will render the modal
|
|
487
|
-
* content
|
|
488
|
-
*/
|
|
489
|
-
initialHeight?: number;
|
|
490
|
-
};
|
|
491
|
-
};
|
|
492
|
-
/** A toast notification to present to the user */
|
|
493
|
-
export declare type Toast<CtaValue = unknown> = {
|
|
494
|
-
/** Message of the notification */
|
|
495
|
-
message: string;
|
|
496
|
-
/** Type of notification. Will present the toast in a different color accent. */
|
|
497
|
-
type: 'notice' | 'alert' | 'warning';
|
|
498
|
-
/** An optional button to show inside the toast */
|
|
499
|
-
cta?: {
|
|
500
|
-
/** Label for the button */
|
|
501
|
-
label: string;
|
|
502
|
-
/**
|
|
503
|
-
* The value to be returned by the `customToast` promise if the button is
|
|
504
|
-
* clicked by the user
|
|
505
|
-
*/
|
|
506
|
-
value: CtaValue;
|
|
507
|
-
};
|
|
508
|
-
/** Whether the toast is to be automatically closed if the user changes page */
|
|
509
|
-
dismissOnPageChange?: boolean;
|
|
510
|
-
/**
|
|
511
|
-
* Whether the toast is to be automatically closed after some time (`true`
|
|
512
|
-
* will use the default DatoCMS time interval)
|
|
513
|
-
*/
|
|
514
|
-
dismissAfterTimeout?: boolean | number;
|
|
515
|
-
};
|
|
516
|
-
/** A choice presented in a `openConfirm` panel */
|
|
517
|
-
export declare type ConfirmChoice = {
|
|
518
|
-
/** The label to be shown for the choice */
|
|
519
|
-
label: string;
|
|
520
|
-
/**
|
|
521
|
-
* The value to be returned by the `openConfirm` promise if the button is
|
|
522
|
-
* clicked by the user
|
|
523
|
-
*/
|
|
524
|
-
value: unknown;
|
|
525
|
-
/**
|
|
526
|
-
* The intent of the button. Will present the button in a different color
|
|
527
|
-
* accent.
|
|
528
|
-
*/
|
|
529
|
-
intent?: 'positive' | 'negative';
|
|
530
|
-
};
|
|
531
|
-
/** Options for the `openConfirm` function */
|
|
532
|
-
export declare type ConfirmOptions = {
|
|
533
|
-
/** The title to be shown inside the confirmation panel */
|
|
534
|
-
title: string;
|
|
535
|
-
/** The main message to be shown inside the confirmation panel */
|
|
536
|
-
content: string;
|
|
537
|
-
/** The different options the user can choose from */
|
|
538
|
-
choices: ConfirmChoice[];
|
|
539
|
-
/** The cancel option to present to the user */
|
|
540
|
-
cancel: ConfirmChoice;
|
|
541
|
-
};
|
|
542
|
-
/** Generic properties available in all the hooks */
|
|
543
|
-
export declare type CommonProperties = {
|
|
544
|
-
/** The current DatoCMS project */
|
|
545
|
-
site: Site;
|
|
546
|
-
/** The ID of the current environment */
|
|
547
|
-
environment: string;
|
|
548
|
-
/** All the models of the current DatoCMS project, indexed by ID */
|
|
549
|
-
itemTypes: Partial<Record<string, ItemType>>;
|
|
550
|
-
/**
|
|
551
|
-
* The current DatoCMS user. It can either be the owner or one of the
|
|
552
|
-
* collaborators (regular or SSO).
|
|
553
|
-
*/
|
|
554
|
-
currentUser: User | SsoUser | Account | Organization;
|
|
555
|
-
/** The role for the current DatoCMS user */
|
|
556
|
-
currentRole: Role;
|
|
557
|
-
/**
|
|
558
|
-
* The access token to perform API calls on behalf of the current user. Only
|
|
559
|
-
* available if `currentUserAccessToken` additional permission is granted
|
|
560
|
-
*/
|
|
561
|
-
currentUserAccessToken: string | undefined;
|
|
562
|
-
/** The current plugin */
|
|
563
|
-
plugin: Plugin;
|
|
564
|
-
/**
|
|
565
|
-
* UI preferences of the current user (right now, only the preferred locale is
|
|
566
|
-
* available)
|
|
567
|
-
*/
|
|
568
|
-
ui: {
|
|
569
|
-
/** Preferred locale */
|
|
570
|
-
locale: string;
|
|
571
|
-
};
|
|
572
|
-
};
|
|
573
|
-
export declare type InitAdditionalProperties = {
|
|
574
|
-
mode: 'init';
|
|
575
|
-
};
|
|
576
|
-
export declare type InitProperties = CommonProperties & InitAdditionalProperties;
|
|
577
|
-
export declare type InitMethods = {
|
|
578
|
-
getSettings: () => Promise<InitProperties>;
|
|
579
|
-
};
|
|
580
|
-
export declare type InitPropertiesAndMethods = InitMethods & InitProperties;
|
|
581
|
-
/** Additional properties available in all `renderXXX` hooks */
|
|
582
|
-
export declare type RenderAdditionalProperties = {
|
|
583
|
-
/**
|
|
584
|
-
* All the fields currently loaded for the current DatoCMS project, indexed by
|
|
585
|
-
* ID. It will always contain the current model fields and all the fields of
|
|
586
|
-
* the blocks it might contain via Modular Content/Structured Text fields. If
|
|
587
|
-
* some fields you need are not present, use the `loadItemTypeFields` function
|
|
588
|
-
* to load them.
|
|
589
|
-
*/
|
|
590
|
-
fields: Partial<Record<string, Field>>;
|
|
591
|
-
/**
|
|
592
|
-
* All the fieldsets currently loaded for the current DatoCMS project, indexed
|
|
593
|
-
* by ID. It will always contain the current model fields and all the fields
|
|
594
|
-
* of the blocks it might contain via Modular Content/Structured Text fields.
|
|
595
|
-
* If some fields you need are not present, use the `loadItemTypeFieldsets`
|
|
596
|
-
* function to load them.
|
|
597
|
-
*/
|
|
598
|
-
fieldsets: Partial<Record<string, Fieldset>>;
|
|
599
|
-
/** An object containing the theme colors for the current DatoCMS project */
|
|
600
|
-
theme: Theme;
|
|
601
|
-
/**
|
|
602
|
-
* All the regular users currently loaded for the current DatoCMS project,
|
|
603
|
-
* indexed by ID. It will always contain the current user. If some users you
|
|
604
|
-
* need are not present, use the `loadUsers` function to load them.
|
|
605
|
-
*/
|
|
606
|
-
users: Partial<Record<string, User>>;
|
|
607
|
-
/**
|
|
608
|
-
* All the SSO users currently loaded for the current DatoCMS project, indexed
|
|
609
|
-
* by ID. It will always contain the current user. If some users you need are
|
|
610
|
-
* not present, use the `loadSsoUsers` function to load them.
|
|
611
|
-
*/
|
|
612
|
-
ssoUsers: Partial<Record<string, SsoUser>>;
|
|
613
|
-
/**
|
|
614
|
-
* The account that is the project owner
|
|
615
|
-
*
|
|
616
|
-
* @deprecated Please use `.owner` instead, as the project owner can also be
|
|
617
|
-
* an organization
|
|
618
|
-
*/
|
|
619
|
-
account: Account | undefined;
|
|
620
|
-
/** The account that is the project owner */
|
|
621
|
-
owner: Account | Organization;
|
|
622
|
-
/** The padding in px that must be applied to the body */
|
|
623
|
-
bodyPadding: [number, number, number, number];
|
|
624
|
-
};
|
|
625
|
-
export declare type RenderProperties = CommonProperties & RenderAdditionalProperties;
|
|
626
|
-
export declare type FieldAppearanceChange = {
|
|
627
|
-
operation: 'removeEditor';
|
|
628
|
-
} | {
|
|
629
|
-
operation: 'updateEditor';
|
|
630
|
-
newFieldExtensionId?: string;
|
|
631
|
-
newParameters?: Record<string, unknown>;
|
|
632
|
-
} | {
|
|
633
|
-
operation: 'setEditor';
|
|
634
|
-
fieldExtensionId: string;
|
|
635
|
-
parameters: Record<string, unknown>;
|
|
636
|
-
} | {
|
|
637
|
-
operation: 'removeAddon';
|
|
638
|
-
index: number;
|
|
639
|
-
} | {
|
|
640
|
-
operation: 'updateAddon';
|
|
641
|
-
index: number;
|
|
642
|
-
newFieldExtensionId?: string;
|
|
643
|
-
newParameters?: Record<string, unknown>;
|
|
644
|
-
} | {
|
|
645
|
-
operation: 'insertAddon';
|
|
646
|
-
index: number;
|
|
647
|
-
fieldExtensionId: string;
|
|
648
|
-
parameters: Record<string, unknown>;
|
|
649
|
-
};
|
|
650
|
-
/**
|
|
651
|
-
* These methods can be used to update both plugin parameters and manual field
|
|
652
|
-
* extensions configuration.
|
|
653
|
-
*/
|
|
654
|
-
export declare type UpdateParametersMethods = {
|
|
655
|
-
/**
|
|
656
|
-
* Updates the plugin parameters.
|
|
657
|
-
*
|
|
658
|
-
* Always check `ctx.currentRole.meta.final_permissions.can_edit_schema`
|
|
659
|
-
* before calling this, as the user might not have the permission to perform
|
|
660
|
-
* the operation.
|
|
661
|
-
*
|
|
662
|
-
* @example
|
|
663
|
-
*
|
|
664
|
-
* ```js
|
|
665
|
-
* await ctx.updatePluginParameters({ debugMode: true });
|
|
666
|
-
* await ctx.notice('Plugin parameters successfully updated!');
|
|
667
|
-
* ```
|
|
668
|
-
*/
|
|
669
|
-
updatePluginParameters: (params: Record<string, unknown>) => Promise<void>;
|
|
670
|
-
/**
|
|
671
|
-
* Performs changes in the appearance of a field. You can install/remove a
|
|
672
|
-
* manual field extension, or tweak their parameters. If multiple changes are
|
|
673
|
-
* passed, they will be applied sequencially.
|
|
674
|
-
*
|
|
675
|
-
* Always check `ctx.currentRole.meta.final_permissions.can_edit_schema`
|
|
676
|
-
* before calling this, as the user might not have the permission to perform
|
|
677
|
-
* the operation.
|
|
678
|
-
*
|
|
679
|
-
* @example
|
|
680
|
-
*
|
|
681
|
-
* ```js
|
|
682
|
-
* const fields = await ctx.loadFieldsUsingPlugin();
|
|
683
|
-
*
|
|
684
|
-
* if (fields.length === 0) {
|
|
685
|
-
* ctx.alert('No field is using this plugin as a manual extension!');
|
|
686
|
-
* return;
|
|
687
|
-
* }
|
|
688
|
-
*
|
|
689
|
-
* for (const field of fields) {
|
|
690
|
-
* const { appearance } = field.attributes;
|
|
691
|
-
* const operations = [];
|
|
692
|
-
*
|
|
693
|
-
* if (appearance.editor === ctx.plugin.id) {
|
|
694
|
-
* operations.push({
|
|
695
|
-
* operation: 'updateEditor',
|
|
696
|
-
* newParameters: {
|
|
697
|
-
* ...appearance.parameters,
|
|
698
|
-
* foo: 'bar',
|
|
699
|
-
* },
|
|
700
|
-
* });
|
|
701
|
-
* }
|
|
702
|
-
*
|
|
703
|
-
* appearance.addons.forEach((addon, i) => {
|
|
704
|
-
* if (addon.id !== ctx.plugin.id) {
|
|
705
|
-
* return;
|
|
706
|
-
* }
|
|
707
|
-
*
|
|
708
|
-
* operations.push({
|
|
709
|
-
* operation: 'updateAddon',
|
|
710
|
-
* index: i,
|
|
711
|
-
* newParameters: { ...addon.parameters, foo: 'bar' },
|
|
712
|
-
* });
|
|
713
|
-
* });
|
|
714
|
-
*
|
|
715
|
-
* await ctx.updateFieldAppearance(field.id, operations);
|
|
716
|
-
* ctx.notice(`Successfully edited field ${field.attributes.api_key}`);
|
|
717
|
-
* }
|
|
718
|
-
* ```
|
|
719
|
-
*/
|
|
720
|
-
updateFieldAppearance: (fieldId: string, changes: FieldAppearanceChange[]) => Promise<void>;
|
|
721
|
-
};
|
|
722
|
-
/**
|
|
723
|
-
* These methods can be used to asyncronously load additional information your
|
|
724
|
-
* plugin needs to work
|
|
725
|
-
*/
|
|
726
|
-
export declare type LoadDataMethods = {
|
|
727
|
-
/**
|
|
728
|
-
* Loads all the fields for a specific model (or block). Fields will be
|
|
729
|
-
* returned and will also be available in the the `fields` property.
|
|
730
|
-
*
|
|
731
|
-
* @example
|
|
732
|
-
*
|
|
733
|
-
* ```js
|
|
734
|
-
* const itemTypeId = prompt('Please insert a model ID:');
|
|
735
|
-
*
|
|
736
|
-
* const fields = await ctx.loadItemTypeFields(itemTypeId);
|
|
737
|
-
*
|
|
738
|
-
* ctx.notice(
|
|
739
|
-
* `Success! ${fields
|
|
740
|
-
* .map((field) => field.attributes.api_key)
|
|
741
|
-
* .join(', ')}`,
|
|
742
|
-
* );
|
|
743
|
-
* ```
|
|
744
|
-
*/
|
|
745
|
-
loadItemTypeFields: (itemTypeId: string) => Promise<Field[]>;
|
|
746
|
-
/**
|
|
747
|
-
* Loads all the fieldsets for a specific model (or block). Fieldsets will be
|
|
748
|
-
* returned and will also be available in the the `fieldsets` property.
|
|
749
|
-
*
|
|
750
|
-
* @example
|
|
751
|
-
*
|
|
752
|
-
* ```js
|
|
753
|
-
* const itemTypeId = prompt('Please insert a model ID:');
|
|
754
|
-
*
|
|
755
|
-
* const fieldsets = await ctx.loadItemTypeFieldsets(itemTypeId);
|
|
756
|
-
*
|
|
757
|
-
* ctx.notice(
|
|
758
|
-
* `Success! ${fieldsets
|
|
759
|
-
* .map((fieldset) => fieldset.attributes.title)
|
|
760
|
-
* .join(', ')}`,
|
|
761
|
-
* );
|
|
762
|
-
* ```
|
|
763
|
-
*/
|
|
764
|
-
loadItemTypeFieldsets: (itemTypeId: string) => Promise<Fieldset[]>;
|
|
765
|
-
/**
|
|
766
|
-
* Loads all the fields in the project that are currently using the plugin for
|
|
767
|
-
* one of its manual field extensions.
|
|
768
|
-
*
|
|
769
|
-
* @example
|
|
770
|
-
*
|
|
771
|
-
* ```js
|
|
772
|
-
* const fields = await ctx.loadFieldsUsingPlugin();
|
|
773
|
-
*
|
|
774
|
-
* ctx.notice(
|
|
775
|
-
* `Success! ${fields
|
|
776
|
-
* .map((field) => field.attributes.api_key)
|
|
777
|
-
* .join(', ')}`,
|
|
778
|
-
* );
|
|
779
|
-
* ```
|
|
780
|
-
*/
|
|
781
|
-
loadFieldsUsingPlugin: () => Promise<Field[]>;
|
|
782
|
-
/**
|
|
783
|
-
* Loads all regular users. Users will be returned and will also be available
|
|
784
|
-
* in the the `users` property.
|
|
785
|
-
*
|
|
786
|
-
* @example
|
|
787
|
-
*
|
|
788
|
-
* ```js
|
|
789
|
-
* const users = await ctx.loadUsers();
|
|
790
|
-
*
|
|
791
|
-
* ctx.notice(`Success! ${users.map((user) => user.id).join(', ')}`);
|
|
792
|
-
* ```
|
|
793
|
-
*/
|
|
794
|
-
loadUsers: () => Promise<User[]>;
|
|
795
|
-
/**
|
|
796
|
-
* Loads all SSO users. Users will be returned and will also be available in
|
|
797
|
-
* the the `ssoUsers` property.
|
|
798
|
-
*
|
|
799
|
-
* @example
|
|
800
|
-
*
|
|
801
|
-
* ```js
|
|
802
|
-
* const users = await ctx.loadSsoUsers();
|
|
803
|
-
*
|
|
804
|
-
* ctx.notice(`Success! ${users.map((user) => user.id).join(', ')}`);
|
|
805
|
-
* ```
|
|
806
|
-
*/
|
|
807
|
-
loadSsoUsers: () => Promise<SsoUser[]>;
|
|
808
|
-
};
|
|
809
|
-
/**
|
|
810
|
-
* These methods let you open the standard DatoCMS dialogs needed to interact
|
|
811
|
-
* with records
|
|
812
|
-
*/
|
|
813
|
-
export declare type ItemDialogMethods = {
|
|
814
|
-
/**
|
|
815
|
-
* Opens a dialog for creating a new record. It returns a promise resolved
|
|
816
|
-
* with the newly created record or `null` if the user closes the dialog
|
|
817
|
-
* without creating anything.
|
|
818
|
-
*
|
|
819
|
-
* @example
|
|
820
|
-
*
|
|
821
|
-
* ```js
|
|
822
|
-
* const itemTypeId = prompt('Please insert a model ID:');
|
|
823
|
-
*
|
|
824
|
-
* const item = await ctx.createNewItem(itemTypeId);
|
|
825
|
-
*
|
|
826
|
-
* if (item) {
|
|
827
|
-
* ctx.notice(`Success! ${item.id}`);
|
|
828
|
-
* } else {
|
|
829
|
-
* ctx.alert('Closed!');
|
|
830
|
-
* }
|
|
831
|
-
* ```
|
|
832
|
-
*/
|
|
833
|
-
createNewItem: (itemTypeId: string) => Promise<Item | null>;
|
|
834
|
-
/**
|
|
835
|
-
* Opens a dialog for selecting one (or multiple) record(s) from a list of
|
|
836
|
-
* existing records of type `itemTypeId`. It returns a promise resolved with
|
|
837
|
-
* the selected record(s), or `null` if the user closes the dialog without
|
|
838
|
-
* choosing any record.
|
|
839
|
-
*
|
|
840
|
-
* @example
|
|
841
|
-
*
|
|
842
|
-
* ```js
|
|
843
|
-
* const itemTypeId = prompt('Please insert a model ID:');
|
|
844
|
-
*
|
|
845
|
-
* const items = await ctx.selectItem(itemTypeId, { multiple: true });
|
|
846
|
-
*
|
|
847
|
-
* if (items) {
|
|
848
|
-
* ctx.notice(`Success! ${items.map((i) => i.id).join(', ')}`);
|
|
849
|
-
* } else {
|
|
850
|
-
* ctx.alert('Closed!');
|
|
851
|
-
* }
|
|
852
|
-
* ```
|
|
853
|
-
*/
|
|
854
|
-
selectItem: {
|
|
855
|
-
(itemTypeId: string, options: {
|
|
856
|
-
multiple: true;
|
|
857
|
-
initialLocationQuery?: ItemListLocationQuery;
|
|
858
|
-
}): Promise<Item[] | null>;
|
|
859
|
-
(itemTypeId: string, options?: {
|
|
860
|
-
multiple: false;
|
|
861
|
-
initialLocationQuery?: ItemListLocationQuery;
|
|
862
|
-
}): Promise<Item | null>;
|
|
863
|
-
};
|
|
864
|
-
/**
|
|
865
|
-
* Opens a dialog for editing an existing record. It returns a promise
|
|
866
|
-
* resolved with the edited record, or `null` if the user closes the dialog
|
|
867
|
-
* without persisting any change.
|
|
868
|
-
*
|
|
869
|
-
* @example
|
|
870
|
-
*
|
|
871
|
-
* ```js
|
|
872
|
-
* const itemId = prompt('Please insert a record ID:');
|
|
873
|
-
*
|
|
874
|
-
* const item = await ctx.editItem(itemId);
|
|
875
|
-
*
|
|
876
|
-
* if (item) {
|
|
877
|
-
* ctx.notice(`Success! ${item.id}`);
|
|
878
|
-
* } else {
|
|
879
|
-
* ctx.alert('Closed!');
|
|
880
|
-
* }
|
|
881
|
-
* ```
|
|
882
|
-
*/
|
|
883
|
-
editItem: (itemId: string) => Promise<Item | null>;
|
|
884
|
-
};
|
|
885
|
-
/**
|
|
886
|
-
* These methods can be used to show UI-consistent toast notifications to the
|
|
887
|
-
* end-user
|
|
888
|
-
*/
|
|
889
|
-
export declare type ToastMethods = {
|
|
890
|
-
/**
|
|
891
|
-
* Triggers an "error" toast displaying the selected message
|
|
892
|
-
*
|
|
893
|
-
* @example
|
|
894
|
-
*
|
|
895
|
-
* ```js
|
|
896
|
-
* const message = prompt(
|
|
897
|
-
* 'Please insert a message:',
|
|
898
|
-
* 'This is an alert message!',
|
|
899
|
-
* );
|
|
900
|
-
*
|
|
901
|
-
* await ctx.alert(message);
|
|
902
|
-
* ```
|
|
903
|
-
*/
|
|
904
|
-
alert: (message: string) => Promise<void>;
|
|
905
|
-
/**
|
|
906
|
-
* Triggers a "success" toast displaying the selected message
|
|
907
|
-
*
|
|
908
|
-
* @example
|
|
909
|
-
*
|
|
910
|
-
* ```js
|
|
911
|
-
* const message = prompt(
|
|
912
|
-
* 'Please insert a message:',
|
|
913
|
-
* 'This is a notice message!',
|
|
914
|
-
* );
|
|
915
|
-
*
|
|
916
|
-
* await ctx.notice(message);
|
|
917
|
-
* ```
|
|
918
|
-
*/
|
|
919
|
-
notice: (message: string) => Promise<void>;
|
|
920
|
-
/**
|
|
921
|
-
* Triggers a custom toast displaying the selected message (and optionally a
|
|
922
|
-
* CTA)
|
|
923
|
-
*
|
|
924
|
-
* @example
|
|
925
|
-
*
|
|
926
|
-
* ```js
|
|
927
|
-
* const result = await ctx.customToast({
|
|
928
|
-
* type: 'warning',
|
|
929
|
-
* message: 'Just a sample warning notification!',
|
|
930
|
-
* dismissOnPageChange: true,
|
|
931
|
-
* dismissAfterTimeout: 5000,
|
|
932
|
-
* cta: {
|
|
933
|
-
* label: 'Execute call-to-action',
|
|
934
|
-
* value: 'cta',
|
|
935
|
-
* },
|
|
936
|
-
* });
|
|
937
|
-
*
|
|
938
|
-
* if (result === 'cta') {
|
|
939
|
-
* ctx.notice(`Clicked CTA!`);
|
|
940
|
-
* }
|
|
941
|
-
* ```
|
|
942
|
-
*/
|
|
943
|
-
customToast: <CtaValue = unknown>(toast: Toast<CtaValue>) => Promise<CtaValue | null>;
|
|
944
|
-
};
|
|
945
|
-
/**
|
|
946
|
-
* These methods let you open the standard DatoCMS dialogs needed to interact
|
|
947
|
-
* with Media Area assets
|
|
948
|
-
*/
|
|
949
|
-
export declare type UploadDialogMethods = {
|
|
950
|
-
/**
|
|
951
|
-
* Opens a dialog for selecting one (or multiple) existing asset(s). It
|
|
952
|
-
* returns a promise resolved with the selected asset(s), or `null` if the
|
|
953
|
-
* user closes the dialog without selecting any upload.
|
|
954
|
-
*
|
|
955
|
-
* @example
|
|
956
|
-
*
|
|
957
|
-
* ```js
|
|
958
|
-
* const item = await ctx.selectUpload({ multiple: false });
|
|
959
|
-
*
|
|
960
|
-
* if (item) {
|
|
961
|
-
* ctx.notice(`Success! ${item.id}`);
|
|
962
|
-
* } else {
|
|
963
|
-
* ctx.alert('Closed!');
|
|
964
|
-
* }
|
|
965
|
-
* ```
|
|
966
|
-
*/
|
|
967
|
-
selectUpload: {
|
|
968
|
-
(options: {
|
|
969
|
-
multiple: true;
|
|
970
|
-
}): Promise<Upload[] | null>;
|
|
971
|
-
(options?: {
|
|
972
|
-
multiple: false;
|
|
973
|
-
}): Promise<Upload | null>;
|
|
974
|
-
};
|
|
975
|
-
/**
|
|
976
|
-
* Opens a dialog for editing a Media Area asset. It returns a promise
|
|
977
|
-
* resolved with:
|
|
978
|
-
*
|
|
979
|
-
* - The updated asset, if the user persists some changes to the asset itself
|
|
980
|
-
* - `null`, if the user closes the dialog without persisting any change
|
|
981
|
-
* - An asset structure with an additional `deleted` property set to true, if
|
|
982
|
-
* the user deletes the asset
|
|
983
|
-
*
|
|
984
|
-
* @example
|
|
985
|
-
*
|
|
986
|
-
* ```js
|
|
987
|
-
* const uploadId = prompt('Please insert an asset ID:');
|
|
988
|
-
*
|
|
989
|
-
* const item = await ctx.editUpload(uploadId);
|
|
990
|
-
*
|
|
991
|
-
* if (item) {
|
|
992
|
-
* ctx.notice(`Success! ${item.id}`);
|
|
993
|
-
* } else {
|
|
994
|
-
* ctx.alert('Closed!');
|
|
995
|
-
* }
|
|
996
|
-
* ```
|
|
997
|
-
*/
|
|
998
|
-
editUpload: (uploadId: string) => Promise<(Upload & {
|
|
999
|
-
deleted?: true;
|
|
1000
|
-
}) | null>;
|
|
1001
|
-
/**
|
|
1002
|
-
* Opens a dialog for editing a "single asset" field structure. It returns a
|
|
1003
|
-
* promise resolved with the updated structure, or `null` if the user closes
|
|
1004
|
-
* the dialog without persisting any change.
|
|
1005
|
-
*
|
|
1006
|
-
* @example
|
|
1007
|
-
*
|
|
1008
|
-
* ```js
|
|
1009
|
-
* const uploadId = prompt('Please insert an asset ID:');
|
|
1010
|
-
*
|
|
1011
|
-
* const result = await ctx.editUploadMetadata({
|
|
1012
|
-
* upload_id: uploadId,
|
|
1013
|
-
* alt: null,
|
|
1014
|
-
* title: null,
|
|
1015
|
-
* custom_data: {},
|
|
1016
|
-
* focal_point: null,
|
|
1017
|
-
* });
|
|
1018
|
-
*
|
|
1019
|
-
* if (result) {
|
|
1020
|
-
* ctx.notice(`Success! ${JSON.stringify(result)}`);
|
|
1021
|
-
* } else {
|
|
1022
|
-
* ctx.alert('Closed!');
|
|
1023
|
-
* }
|
|
1024
|
-
* ```
|
|
1025
|
-
*/
|
|
1026
|
-
editUploadMetadata: (
|
|
1027
|
-
/** The "single asset" field structure */
|
|
1028
|
-
fileFieldValue: FileFieldValue,
|
|
1029
|
-
/** Shows metadata information for a specific locale */
|
|
1030
|
-
locale?: string) => Promise<FileFieldValue | null>;
|
|
1031
|
-
};
|
|
1032
|
-
/** These methods can be used to open custom dialogs/confirmation panels */
|
|
1033
|
-
export declare type CustomDialogMethods = {
|
|
1034
|
-
/**
|
|
1035
|
-
* Opens a custom modal. Returns a promise resolved with what the modal itself
|
|
1036
|
-
* returns calling the `resolve()` function
|
|
1037
|
-
*
|
|
1038
|
-
* @example
|
|
1039
|
-
*
|
|
1040
|
-
* ```js
|
|
1041
|
-
* const result = await ctx.openModal({
|
|
1042
|
-
* id: 'regular',
|
|
1043
|
-
* title: 'Custom title!',
|
|
1044
|
-
* width: 'l',
|
|
1045
|
-
* parameters: { foo: 'bar' },
|
|
1046
|
-
* });
|
|
1047
|
-
*
|
|
1048
|
-
* if (result) {
|
|
1049
|
-
* ctx.notice(`Success! ${JSON.stringify(result)}`);
|
|
1050
|
-
* } else {
|
|
1051
|
-
* ctx.alert('Closed!');
|
|
1052
|
-
* }
|
|
1053
|
-
* ```
|
|
1054
|
-
*/
|
|
1055
|
-
openModal: (modal: Modal) => Promise<unknown>;
|
|
1056
|
-
/**
|
|
1057
|
-
* Opens a UI-consistent confirmation dialog. Returns a promise resolved with
|
|
1058
|
-
* the value of the choice made by the user
|
|
1059
|
-
*
|
|
1060
|
-
* @example
|
|
1061
|
-
*
|
|
1062
|
-
* ```js
|
|
1063
|
-
* const result = await ctx.openConfirm({
|
|
1064
|
-
* title: 'Custom title',
|
|
1065
|
-
* content:
|
|
1066
|
-
* 'Lorem Ipsum is simply dummy text of the printing and typesetting industry',
|
|
1067
|
-
* choices: [
|
|
1068
|
-
* {
|
|
1069
|
-
* label: 'Positive',
|
|
1070
|
-
* value: 'positive',
|
|
1071
|
-
* intent: 'positive',
|
|
1072
|
-
* },
|
|
1073
|
-
* {
|
|
1074
|
-
* label: 'Negative',
|
|
1075
|
-
* value: 'negative',
|
|
1076
|
-
* intent: 'negative',
|
|
1077
|
-
* },
|
|
1078
|
-
* ],
|
|
1079
|
-
* cancel: {
|
|
1080
|
-
* label: 'Cancel',
|
|
1081
|
-
* value: false,
|
|
1082
|
-
* },
|
|
1083
|
-
* });
|
|
1084
|
-
*
|
|
1085
|
-
* if (result) {
|
|
1086
|
-
* ctx.notice(`Success! ${result}`);
|
|
1087
|
-
* } else {
|
|
1088
|
-
* ctx.alert('Cancelled!');
|
|
1089
|
-
* }
|
|
1090
|
-
* ```
|
|
1091
|
-
*/
|
|
1092
|
-
openConfirm: (options: ConfirmOptions) => Promise<unknown>;
|
|
1093
|
-
};
|
|
1094
|
-
/** These methods can be used to take the user to different pages */
|
|
1095
|
-
export declare type NavigateMethods = {
|
|
1096
|
-
/**
|
|
1097
|
-
* Moves the user to another URL internal to the backend
|
|
1098
|
-
*
|
|
1099
|
-
* @example
|
|
1100
|
-
*
|
|
1101
|
-
* ```js
|
|
1102
|
-
* await ctx.navigateTo('/');
|
|
1103
|
-
* ```
|
|
1104
|
-
*/
|
|
1105
|
-
navigateTo: (path: string) => Promise<void>;
|
|
1106
|
-
};
|
|
1107
|
-
/** These methods can be used to set various properties of the containing iframe */
|
|
1108
|
-
export declare type IframeMethods = {
|
|
1109
|
-
/** Sets the height for the iframe */
|
|
1110
|
-
setHeight: (number: number) => Promise<void>;
|
|
1111
|
-
};
|
|
1112
|
-
export declare type RenderMethods = LoadDataMethods & UpdateParametersMethods & ToastMethods & ItemDialogMethods & UploadDialogMethods & CustomDialogMethods & NavigateMethods;
|
|
1113
|
-
/**
|
|
1114
|
-
* These information describe the current state of the form that's being shown
|
|
1115
|
-
* to the end-user to edit a record
|
|
1116
|
-
*/
|
|
1117
|
-
export declare type ItemFormAdditionalProperties = {
|
|
1118
|
-
/** The currently active locale for the record */
|
|
1119
|
-
locale: string;
|
|
1120
|
-
/**
|
|
1121
|
-
* If an already persisted record is being edited, returns the full record
|
|
1122
|
-
* entity
|
|
1123
|
-
*/
|
|
1124
|
-
item: Item | null;
|
|
1125
|
-
/** The model for the record being edited */
|
|
1126
|
-
itemType: ItemType;
|
|
1127
|
-
/** The complete internal form state */
|
|
1128
|
-
formValues: Record<string, unknown>;
|
|
1129
|
-
/** The current status of the record being edited */
|
|
1130
|
-
itemStatus: 'new' | 'draft' | 'updated' | 'published';
|
|
1131
|
-
/** Whether the form is currently submitting itself or not */
|
|
1132
|
-
isSubmitting: boolean;
|
|
1133
|
-
/** Whether the form has some non-persisted changes or not */
|
|
1134
|
-
isFormDirty: boolean;
|
|
1135
|
-
/** Current number of blocks present in form state */
|
|
1136
|
-
blocksAnalysis: {
|
|
1137
|
-
usage: {
|
|
1138
|
-
/** Total number of blocks present in form state */
|
|
1139
|
-
total: number;
|
|
1140
|
-
/** Total number of blocks present in non-localized fields */
|
|
1141
|
-
nonLocalized: number;
|
|
1142
|
-
/** Total number of blocks present in localized fields, per locale */
|
|
1143
|
-
perLocale: Record<string, number>;
|
|
1144
|
-
};
|
|
1145
|
-
/** Maximum number of blocks per item */
|
|
1146
|
-
maximumPerItem: number;
|
|
1147
|
-
};
|
|
1148
|
-
};
|
|
1149
|
-
export declare type ItemFormProperties = RenderProperties & ItemFormAdditionalProperties;
|
|
1150
|
-
/**
|
|
1151
|
-
* These methods can be used to interact with the form that's being shown to the
|
|
1152
|
-
* end-user to edit a record
|
|
1153
|
-
*/
|
|
1154
|
-
export declare type ItemFormAdditionalMethods = {
|
|
1155
|
-
/**
|
|
1156
|
-
* Hides/shows a specific field in the form. Please be aware that when a field
|
|
1157
|
-
* is hidden, the field editor for that field will be removed from the DOM
|
|
1158
|
-
* itself, including any associated plugins. When it is shown again, its
|
|
1159
|
-
* plugins will be reinitialized.
|
|
1160
|
-
*
|
|
1161
|
-
* @example
|
|
1162
|
-
*
|
|
1163
|
-
* ```js
|
|
1164
|
-
* const fieldPath = prompt(
|
|
1165
|
-
* 'Please insert the path of a field in the form',
|
|
1166
|
-
* ctx.fieldPath,
|
|
1167
|
-
* );
|
|
1168
|
-
*
|
|
1169
|
-
* await ctx.toggleField(fieldPath, true);
|
|
1170
|
-
* ```
|
|
1171
|
-
*/
|
|
1172
|
-
toggleField: (path: string, show: boolean) => Promise<void>;
|
|
1173
|
-
/**
|
|
1174
|
-
* Disables/re-enables a specific field in the form
|
|
1175
|
-
*
|
|
1176
|
-
* @example
|
|
1177
|
-
*
|
|
1178
|
-
* ```js
|
|
1179
|
-
* const fieldPath = prompt(
|
|
1180
|
-
* 'Please insert the path of a field in the form',
|
|
1181
|
-
* ctx.fieldPath,
|
|
1182
|
-
* );
|
|
1183
|
-
*
|
|
1184
|
-
* await ctx.disableField(fieldPath, true);
|
|
1185
|
-
* ```
|
|
1186
|
-
*/
|
|
1187
|
-
disableField: (path: string, disable: boolean) => Promise<void>;
|
|
1188
|
-
/**
|
|
1189
|
-
* Smoothly navigates to a specific field in the form. If the field is
|
|
1190
|
-
* localized it will switch language tab and then navigate to the chosen
|
|
1191
|
-
* field.
|
|
1192
|
-
*
|
|
1193
|
-
* @example
|
|
1194
|
-
*
|
|
1195
|
-
* ```js
|
|
1196
|
-
* const fieldPath = prompt(
|
|
1197
|
-
* 'Please insert the path of a field in the form',
|
|
1198
|
-
* ctx.fieldPath,
|
|
1199
|
-
* );
|
|
1200
|
-
*
|
|
1201
|
-
* await ctx.scrollToField(fieldPath);
|
|
1202
|
-
* ```
|
|
1203
|
-
*/
|
|
1204
|
-
scrollToField: (path: string, locale?: string) => Promise<void>;
|
|
1205
|
-
/**
|
|
1206
|
-
* Changes a specific path of the `formValues` object
|
|
1207
|
-
*
|
|
1208
|
-
* @example
|
|
1209
|
-
*
|
|
1210
|
-
* ```js
|
|
1211
|
-
* const fieldPath = prompt(
|
|
1212
|
-
* 'Please insert the path of a field in the form',
|
|
1213
|
-
* ctx.fieldPath,
|
|
1214
|
-
* );
|
|
1215
|
-
*
|
|
1216
|
-
* await ctx.setFieldValue(fieldPath, 'new value');
|
|
1217
|
-
* ```
|
|
1218
|
-
*/
|
|
1219
|
-
setFieldValue: (path: string, value: unknown) => Promise<void>;
|
|
1220
|
-
/**
|
|
1221
|
-
* Takes the internal form state, and transforms it into an Item entity
|
|
1222
|
-
* compatible with DatoCMS API.
|
|
1223
|
-
*
|
|
1224
|
-
* When `skipUnchangedFields`, only the fields that changed value will be
|
|
1225
|
-
* serialized.
|
|
1226
|
-
*
|
|
1227
|
-
* If the required nested blocks are still not loaded, this method will return
|
|
1228
|
-
* `undefined`.
|
|
1229
|
-
*
|
|
1230
|
-
* @example
|
|
1231
|
-
*
|
|
1232
|
-
* ```js
|
|
1233
|
-
* await ctx.formValuesToItem(ctx.formValues, false);
|
|
1234
|
-
* ```
|
|
1235
|
-
*/
|
|
1236
|
-
formValuesToItem: (formValues: Record<string, unknown>, skipUnchangedFields?: boolean) => Promise<Omit<Item, 'id' | 'meta'> | undefined>;
|
|
1237
|
-
/**
|
|
1238
|
-
* Takes an Item entity, and converts it into the internal form state
|
|
1239
|
-
*
|
|
1240
|
-
* @example
|
|
1241
|
-
*
|
|
1242
|
-
* ```js
|
|
1243
|
-
* await ctx.itemToFormValues(ctx.item);
|
|
1244
|
-
* ```
|
|
1245
|
-
*/
|
|
1246
|
-
itemToFormValues: (item: Omit<Item, 'id' | 'meta'>) => Promise<Record<string, unknown>>;
|
|
1247
|
-
/**
|
|
1248
|
-
* Triggers a submit form for current record
|
|
1249
|
-
*
|
|
1250
|
-
* @example
|
|
1251
|
-
*
|
|
1252
|
-
* ```js
|
|
1253
|
-
* await ctx.saveCurrentItem();
|
|
1254
|
-
* ```
|
|
1255
|
-
*/
|
|
1256
|
-
saveCurrentItem: (showToast?: boolean) => Promise<void>;
|
|
1257
|
-
};
|
|
1258
|
-
export declare type ItemFormMethods = RenderMethods & IframeMethods & ItemFormAdditionalMethods;
|
|
1259
|
-
/** Information regarding the specific sidebar panel that you need to render */
|
|
1260
|
-
export declare type RenderSidebarPanelAdditionalProperties = {
|
|
1261
|
-
mode: 'renderItemFormSidebarPanel';
|
|
1262
|
-
/** The ID of the sidebar panel that needs to be rendered */
|
|
1263
|
-
sidebarPaneId: string;
|
|
1264
|
-
/**
|
|
1265
|
-
* The arbitrary `parameters` of the panel declared in the
|
|
1266
|
-
* `itemFormSidebarPanels` function
|
|
1267
|
-
*/
|
|
1268
|
-
parameters: Record<string, unknown>;
|
|
1269
|
-
};
|
|
1270
|
-
export declare type RenderSidebarPanelProperties = ItemFormProperties & RenderSidebarPanelAdditionalProperties;
|
|
1271
|
-
export declare type RenderSidebarPanelAdditionalMethods = {
|
|
1272
|
-
getSettings: () => Promise<RenderSidebarPanelProperties>;
|
|
1273
|
-
};
|
|
1274
|
-
export declare type RenderSidebarPanelMethods = ItemFormMethods & RenderSidebarPanelAdditionalMethods;
|
|
1275
|
-
export declare type RenderSidebarPanelPropertiesAndMethods = RenderSidebarPanelMethods & RenderSidebarPanelProperties;
|
|
1276
|
-
/** Information regarding the specific sidebar panel that you need to render */
|
|
1277
|
-
export declare type RenderSidebarAdditionalProperties = {
|
|
1278
|
-
mode: 'renderItemFormSidebar';
|
|
1279
|
-
/** The ID of the sidebar that needs to be rendered */
|
|
1280
|
-
sidebarId: string;
|
|
1281
|
-
/**
|
|
1282
|
-
* The arbitrary `parameters` of the declared in the `itemFormSidebars`
|
|
1283
|
-
* function
|
|
1284
|
-
*/
|
|
1285
|
-
parameters: Record<string, unknown>;
|
|
1286
|
-
};
|
|
1287
|
-
export declare type RenderSidebarProperties = ItemFormProperties & RenderSidebarAdditionalProperties;
|
|
1288
|
-
export declare type RenderSidebarAdditionalMethods = {
|
|
1289
|
-
getSettings: () => Promise<RenderSidebarProperties>;
|
|
1290
|
-
};
|
|
1291
|
-
export declare type RenderSidebarMethods = ItemFormMethods & RenderSidebarAdditionalMethods;
|
|
1292
|
-
export declare type RenderSidebarPropertiesAndMethods = RenderSidebarMethods & RenderSidebarProperties;
|
|
1293
|
-
/** Information regarding the specific outlet that you need to render */
|
|
1294
|
-
export declare type RenderItemFormOutletAdditionalProperties = {
|
|
1295
|
-
mode: 'renderItemFormOutlet';
|
|
1296
|
-
/** The ID of the outlet that needs to be rendered */
|
|
1297
|
-
itemFormOutletId: string;
|
|
1298
|
-
};
|
|
1299
|
-
export declare type RenderItemFormOutletProperties = ItemFormProperties & RenderItemFormOutletAdditionalProperties;
|
|
1300
|
-
export declare type RenderItemFormOutletAdditionalMethods = {
|
|
1301
|
-
getSettings: () => Promise<RenderItemFormOutletProperties>;
|
|
1302
|
-
};
|
|
1303
|
-
export declare type RenderItemFormOutletMethods = ItemFormMethods & RenderItemFormOutletAdditionalMethods;
|
|
1304
|
-
export declare type RenderItemFormOutletPropertiesAndMethods = RenderItemFormOutletMethods & RenderItemFormOutletProperties;
|
|
1305
|
-
/**
|
|
1306
|
-
* Information regarding the state of a specific field where you need to render
|
|
1307
|
-
* the field extension
|
|
1308
|
-
*/
|
|
1309
|
-
export declare type RenderFieldExtensionAdditionalProperties = {
|
|
1310
|
-
mode: 'renderFieldExtension';
|
|
1311
|
-
/** The ID of the field extension that needs to be rendered */
|
|
1312
|
-
fieldExtensionId: string;
|
|
1313
|
-
/** The arbitrary `parameters` of the field extension */
|
|
1314
|
-
parameters: Record<string, unknown>;
|
|
1315
|
-
/** Whether the field is currently disabled or not */
|
|
1316
|
-
disabled: boolean;
|
|
1317
|
-
/**
|
|
1318
|
-
* The path in the `formValues` object where to find the current value for the
|
|
1319
|
-
* field
|
|
1320
|
-
*/
|
|
1321
|
-
fieldPath: string;
|
|
1322
|
-
/** The field where the field extension is installed to */
|
|
1323
|
-
field: Field;
|
|
1324
|
-
/**
|
|
1325
|
-
* If the field extension is installed in a field of a block, returns the top
|
|
1326
|
-
* level Modular Content/Structured Text field containing the block itself
|
|
1327
|
-
*/
|
|
1328
|
-
parentField: Field | undefined;
|
|
1329
|
-
/**
|
|
1330
|
-
* If the field extension is installed in a field of a block, returns the ID
|
|
1331
|
-
* of the block — or `undefined` if the block is still not persisted — and the
|
|
1332
|
-
* block model.
|
|
1333
|
-
*/
|
|
1334
|
-
block: undefined | {
|
|
1335
|
-
id: string | undefined;
|
|
1336
|
-
blockModel: ItemType;
|
|
1337
|
-
};
|
|
1338
|
-
};
|
|
1339
|
-
export declare type RenderFieldExtensionProperties = ItemFormProperties & RenderFieldExtensionAdditionalProperties;
|
|
1340
|
-
export declare type RenderFieldExtensionAdditionalMethods = {
|
|
1341
|
-
getSettings: () => Promise<RenderFieldExtensionProperties>;
|
|
1342
|
-
};
|
|
1343
|
-
export declare type RenderFieldExtensionMethods = ItemFormMethods & RenderFieldExtensionAdditionalMethods;
|
|
1344
|
-
export declare type RenderFieldExtensionPropertiesAndMethods = RenderFieldExtensionMethods & RenderFieldExtensionProperties;
|
|
1345
|
-
/** Information regarding the specific custom modal that you need to render */
|
|
1346
|
-
export declare type RenderModalAdditionalProperties = {
|
|
1347
|
-
mode: 'renderModal';
|
|
1348
|
-
/** The ID of the modal that needs to be rendered */
|
|
1349
|
-
modalId: string;
|
|
1350
|
-
/**
|
|
1351
|
-
* The arbitrary `parameters` of the modal declared in the `openModal`
|
|
1352
|
-
* function
|
|
1353
|
-
*/
|
|
1354
|
-
parameters: Record<string, unknown>;
|
|
1355
|
-
};
|
|
1356
|
-
export declare type RenderModalProperties = RenderProperties & RenderModalAdditionalProperties;
|
|
1357
|
-
/** These methods can be used to close the modal */
|
|
1358
|
-
export declare type RenderModalAdditionalMethods = {
|
|
1359
|
-
getSettings: () => Promise<RenderModalProperties>;
|
|
1360
|
-
/**
|
|
1361
|
-
* A function to be called by the plugin to close the modal. The `openModal`
|
|
1362
|
-
* call will be resolved with the passed return value
|
|
1363
|
-
*
|
|
1364
|
-
* @example
|
|
1365
|
-
*
|
|
1366
|
-
* ```js
|
|
1367
|
-
* const returnValue = prompt(
|
|
1368
|
-
* 'Please specify the value to return to the caller:',
|
|
1369
|
-
* 'success',
|
|
1370
|
-
* );
|
|
1371
|
-
*
|
|
1372
|
-
* await ctx.resolve(returnValue);
|
|
1373
|
-
* ```
|
|
1374
|
-
*/
|
|
1375
|
-
resolve: (returnValue: unknown) => Promise<void>;
|
|
1376
|
-
};
|
|
1377
|
-
export declare type RenderModalMethods = RenderMethods & IframeMethods & RenderModalAdditionalMethods;
|
|
1378
|
-
export declare type RenderModalPropertiesAndMethods = RenderModalMethods & RenderModalProperties;
|
|
1379
|
-
/**
|
|
1380
|
-
* Information regarding the specific asset source browser that you need to
|
|
1381
|
-
* render
|
|
1382
|
-
*/
|
|
1383
|
-
export declare type RenderAssetSourceAdditionalProperties = {
|
|
1384
|
-
mode: 'renderAssetSource';
|
|
1385
|
-
/** The ID of the assetSource that needs to be rendered */
|
|
1386
|
-
assetSourceId: string;
|
|
1387
|
-
};
|
|
1388
|
-
export declare type RenderAssetSourceProperties = RenderProperties & RenderAssetSourceAdditionalProperties;
|
|
1389
|
-
export declare type NewUploadResourceAsUrl = {
|
|
1390
|
-
/**
|
|
1391
|
-
* URL for the resource. The URL must respond with a
|
|
1392
|
-
* `Access-Control-Allow-Origin` header — for instance `*`, which will allow
|
|
1393
|
-
* all hosts — allowing the image to be read by DatoCMS
|
|
1394
|
-
*/
|
|
1395
|
-
url: string;
|
|
1396
|
-
/** Any additional headers to pass when making the request to the URL */
|
|
1397
|
-
headers?: Record<string, string>;
|
|
1398
|
-
/**
|
|
1399
|
-
* Optional filename to be used to generate the final DatoCMS URL. If not
|
|
1400
|
-
* passed, the URL will be used
|
|
1401
|
-
*/
|
|
1402
|
-
filename?: string;
|
|
1403
|
-
};
|
|
1404
|
-
export declare type NewUploadResourceAsBase64 = {
|
|
1405
|
-
/**
|
|
1406
|
-
* Base64 encoded data URI for the resource.
|
|
1407
|
-
*
|
|
1408
|
-
* Format:
|
|
1409
|
-
*
|
|
1410
|
-
* `data:[<mime type>][;charset=<charset>];base64,<encoded data>`
|
|
1411
|
-
*/
|
|
1412
|
-
base64: string;
|
|
1413
|
-
/** Filename to be used to generate the final DatoCMS URL */
|
|
1414
|
-
filename: string;
|
|
1415
|
-
};
|
|
1416
|
-
export declare type NewUpload = {
|
|
1417
|
-
/** The actual resource that will be uploaded */
|
|
1418
|
-
resource: NewUploadResourceAsUrl | NewUploadResourceAsBase64;
|
|
1419
|
-
/** Copyright to apply to the asset */
|
|
1420
|
-
copyright?: string;
|
|
1421
|
-
/** Author to apply to the asset */
|
|
1422
|
-
author?: string;
|
|
1423
|
-
/** Notes to apply to the asset */
|
|
1424
|
-
notes?: string;
|
|
1425
|
-
/** Tags to apply to the asset */
|
|
1426
|
-
tags?: string[];
|
|
1427
|
-
/**
|
|
1428
|
-
* An hash containing, for each locale of the project, the default metadata to
|
|
1429
|
-
* apply to the asset
|
|
1430
|
-
*/
|
|
1431
|
-
default_field_metadata?: {
|
|
1432
|
-
[k: string]: {
|
|
1433
|
-
/** Alternate text for the asset */
|
|
1434
|
-
alt: string | null;
|
|
1435
|
-
/** Title for the asset */
|
|
1436
|
-
title: string | null;
|
|
1437
|
-
/** Object with arbitrary metadata */
|
|
1438
|
-
custom_data: {
|
|
1439
|
-
[k: string]: unknown;
|
|
1440
|
-
};
|
|
1441
|
-
/** Focal point (only for image assets) */
|
|
1442
|
-
focal_point?: {
|
|
1443
|
-
/** Horizontal position expressed as float between 0 and 1 */
|
|
1444
|
-
x: number;
|
|
1445
|
-
/** Vertical position expressed as float between 0 and 1 */
|
|
1446
|
-
y: number;
|
|
1447
|
-
} | null;
|
|
1448
|
-
};
|
|
1449
|
-
};
|
|
1450
|
-
};
|
|
1451
|
-
/** Use these methods to confirm */
|
|
1452
|
-
export declare type RenderAssetSourceAdditionalMethods = {
|
|
1453
|
-
getSettings: () => Promise<RenderAssetSourceProperties>;
|
|
1454
|
-
/**
|
|
1455
|
-
* Function to be called when the user selects the asset: it will trigger the
|
|
1456
|
-
* creation of a new `Upload` that will be added in the Media Area.
|
|
1457
|
-
*
|
|
1458
|
-
* @example
|
|
1459
|
-
*
|
|
1460
|
-
* ```js
|
|
1461
|
-
* await ctx.select({
|
|
1462
|
-
* resource: {
|
|
1463
|
-
* url: 'https://images.unsplash.com/photo-1416339306562-f3d12fefd36f',
|
|
1464
|
-
* filename: 'man-drinking-coffee.jpg',
|
|
1465
|
-
* },
|
|
1466
|
-
* copyright: 'Royalty free (Unsplash)',
|
|
1467
|
-
* author: 'Jeff Sheldon',
|
|
1468
|
-
* notes: 'A man drinking a coffee',
|
|
1469
|
-
* tags: ['man', 'coffee'],
|
|
1470
|
-
* });
|
|
1471
|
-
* ```
|
|
1472
|
-
*/
|
|
1473
|
-
select: (newUpload: NewUpload) => void;
|
|
1474
|
-
};
|
|
1475
|
-
export declare type RenderAssetSourceMethods = RenderMethods & IframeMethods & RenderAssetSourceAdditionalMethods;
|
|
1476
|
-
export declare type RenderAssetSourcePropertiesAndMethods = RenderAssetSourceMethods & RenderAssetSourceProperties;
|
|
1477
|
-
/** Information regarding the specific page that you need to render */
|
|
1478
|
-
export declare type RenderPageAdditionalProperties = {
|
|
1479
|
-
mode: 'renderPage';
|
|
1480
|
-
/** The ID of the page that needs to be rendered */
|
|
1481
|
-
pageId: string;
|
|
1482
|
-
};
|
|
1483
|
-
export declare type RenderPageProperties = RenderProperties & RenderPageAdditionalProperties;
|
|
1484
|
-
export declare type RenderPageAdditionalMethods = {
|
|
1485
|
-
getSettings: () => Promise<RenderPageProperties>;
|
|
1486
|
-
};
|
|
1487
|
-
export declare type RenderPageMethods = RenderMethods & RenderPageAdditionalMethods;
|
|
1488
|
-
export declare type RenderPagePropertiesAndMethods = RenderPageMethods & RenderPageProperties;
|
|
1489
|
-
export declare type PendingField = {
|
|
1490
|
-
id?: string;
|
|
1491
|
-
type: 'field';
|
|
1492
|
-
attributes: {
|
|
1493
|
-
api_key: Field['attributes']['api_key'];
|
|
1494
|
-
appearance: Field['attributes']['appearance'];
|
|
1495
|
-
default_value: Field['attributes']['default_value'];
|
|
1496
|
-
field_type: Field['attributes']['field_type'];
|
|
1497
|
-
hint: Field['attributes']['hint'];
|
|
1498
|
-
label: Field['attributes']['label'];
|
|
1499
|
-
localized: Field['attributes']['localized'];
|
|
1500
|
-
validators: Field['attributes']['validators'];
|
|
1501
|
-
};
|
|
1502
|
-
};
|
|
1503
|
-
/**
|
|
1504
|
-
* Information regarding the specific form that you need to render to let the
|
|
1505
|
-
* end-user edit the configuration object of a field extension
|
|
1506
|
-
*/
|
|
1507
|
-
export declare type RenderManualFieldExtensionConfigScreenAdditionalProperties = {
|
|
1508
|
-
mode: 'renderManualFieldExtensionConfigScreen';
|
|
1509
|
-
/**
|
|
1510
|
-
* The ID of the field extension for which we need to render the parameters
|
|
1511
|
-
* form
|
|
1512
|
-
*/
|
|
1513
|
-
fieldExtensionId: string;
|
|
1514
|
-
/**
|
|
1515
|
-
* The current value of the parameters (you can change the value with the
|
|
1516
|
-
* `setParameters` function)
|
|
1517
|
-
*/
|
|
1518
|
-
parameters: Record<string, unknown>;
|
|
1519
|
-
/**
|
|
1520
|
-
* The current validation errors for the parameters (you can set them
|
|
1521
|
-
* implementing the `validateManualFieldExtensionParameters` function)
|
|
1522
|
-
*/
|
|
1523
|
-
errors: Record<string, unknown>;
|
|
1524
|
-
/** The field entity that is being edited in the form */
|
|
1525
|
-
pendingField: PendingField;
|
|
1526
|
-
/** The model for the field being edited */
|
|
1527
|
-
itemType: ItemType;
|
|
1528
|
-
};
|
|
1529
|
-
export declare type RenderManualFieldExtensionConfigScreenProperties = RenderProperties & RenderManualFieldExtensionConfigScreenAdditionalProperties;
|
|
1530
|
-
/**
|
|
1531
|
-
* These methods can be used to update the configuration object of a specific
|
|
1532
|
-
* field extension
|
|
1533
|
-
*/
|
|
1534
|
-
export declare type RenderManualFieldExtensionConfigScreenAdditionalMethods = {
|
|
1535
|
-
getSettings: () => Promise<RenderManualFieldExtensionConfigScreenProperties>;
|
|
1536
|
-
/**
|
|
1537
|
-
* Sets a new value for the parameters
|
|
1538
|
-
*
|
|
1539
|
-
* @example
|
|
1540
|
-
*
|
|
1541
|
-
* ```js
|
|
1542
|
-
* await ctx.setParameters({ color: '#ff0000' });
|
|
1543
|
-
* ```
|
|
1544
|
-
*/
|
|
1545
|
-
setParameters: (params: Record<string, unknown>) => Promise<void>;
|
|
1546
|
-
};
|
|
1547
|
-
export declare type RenderManualFieldExtensionConfigScreenMethods = RenderMethods & IframeMethods & RenderManualFieldExtensionConfigScreenAdditionalMethods;
|
|
1548
|
-
export declare type RenderManualFieldExtensionConfigScreenPropertiesAndMethods = RenderManualFieldExtensionConfigScreenMethods & RenderManualFieldExtensionConfigScreenProperties;
|
|
1549
|
-
export declare type RenderConfigScreenAdditionalProperties = {
|
|
1550
|
-
mode: 'renderConfigScreen';
|
|
1551
|
-
};
|
|
1552
|
-
export declare type RenderConfigScreenProperties = RenderProperties & RenderConfigScreenAdditionalProperties;
|
|
1553
|
-
/** These methods can be used to update the configuration object of your plugin */
|
|
1554
|
-
export declare type RenderConfigScreenAdditionalMethods = {
|
|
1555
|
-
getSettings: () => Promise<RenderConfigScreenProperties>;
|
|
1556
|
-
};
|
|
1557
|
-
export declare type RenderConfigScreenMethods = RenderMethods & IframeMethods & RenderConfigScreenAdditionalMethods;
|
|
1558
|
-
export declare type RenderConfigScreenPropertiesAndMethods = RenderConfigScreenMethods & RenderConfigScreenProperties;
|
|
1559
|
-
export declare type OnBootAdditionalProperties = {
|
|
1560
|
-
mode: 'onBoot';
|
|
1561
|
-
};
|
|
1562
|
-
export declare type OnBootProperties = RenderProperties & OnBootAdditionalProperties;
|
|
1563
|
-
export declare type OnBootAdditionalMethods = {
|
|
1564
|
-
getSettings: () => Promise<OnBootProperties>;
|
|
1565
|
-
};
|
|
1566
|
-
export declare type OnBootMethods = RenderMethods & OnBootAdditionalMethods;
|
|
1567
|
-
export declare type OnBootPropertiesAndMethods = OnBootMethods & OnBootProperties;
|
|
1568
|
-
export declare type AwesomeFontIconIdentifier = '0' | '00' | '1' | '100' | '2' | '3' | '360-degrees' | '4' | '5' | '6' | '7' | '8' | '9' | 'a' | 'abacus' | 'accent-grave' | 'acorn' | 'ad' | 'add' | 'address-book' | 'address-card' | 'adjust' | 'air-conditioner' | 'air-freshener' | 'airplay' | 'alarm-clock' | 'alarm-exclamation' | 'alarm-plus' | 'alarm-snooze' | 'album-circle-plus' | 'album-circle-user' | 'album-collection-circle-plus' | 'album-collection-circle-user' | 'album-collection' | 'album' | 'alicorn' | 'alien-8bit' | 'alien-monster' | 'alien' | 'align-center' | 'align-justify' | 'align-left' | 'align-right' | 'align-slash' | 'allergies' | 'alt' | 'ambulance' | 'american-sign-language-interpreting' | 'amp-guitar' | 'ampersand' | 'analytics' | 'anchor-circle-check' | 'anchor-circle-exclamation' | 'anchor-circle-xmark' | 'anchor-lock' | 'anchor' | 'angel' | 'angle-90' | 'angle-double-down' | 'angle-double-left' | 'angle-double-right' | 'angle-double-up' | 'angle-down' | 'angle-left' | 'angle-right' | 'angle-up' | 'angle' | 'angles-down' | 'angles-left' | 'angles-right' | 'angles-up' | 'angry' | 'ankh' | 'apartment' | 'aperture' | 'apostrophe' | 'apple-alt' | 'apple-core' | 'apple-crate' | 'apple-whole' | 'archive' | 'archway' | 'area-chart' | 'arrow-alt-circle-down' | 'arrow-alt-circle-left' | 'arrow-alt-circle-right' | 'arrow-alt-circle-up' | 'arrow-alt-down' | 'arrow-alt-from-bottom' | 'arrow-alt-from-left' | 'arrow-alt-from-right' | 'arrow-alt-from-top' | 'arrow-alt-left' | 'arrow-alt-right' | 'arrow-alt-square-down' | 'arrow-alt-square-left' | 'arrow-alt-square-right' | 'arrow-alt-square-up' | 'arrow-alt-to-bottom' | 'arrow-alt-to-left' | 'arrow-alt-to-right' | 'arrow-alt-to-top' | 'arrow-alt-up' | 'arrow-circle-down' | 'arrow-circle-left' | 'arrow-circle-right' | 'arrow-circle-up' | 'arrow-down-1-9' | 'arrow-down-9-1' | 'arrow-down-a-z' | 'arrow-down-arrow-up' | 'arrow-down-big-small' | 'arrow-down-from-dotted-line' | 'arrow-down-from-line' | 'arrow-down-left-and-arrow-up-right-to-center' | 'arrow-down-left' | 'arrow-down-long' | 'arrow-down-right' | 'arrow-down-short-wide' | 'arrow-down-small-big' | 'arrow-down-square-triangle' | 'arrow-down-to-arc' | 'arrow-down-to-bracket' | 'arrow-down-to-dotted-line' | 'arrow-down-to-line' | 'arrow-down-to-square' | 'arrow-down-triangle-square' | 'arrow-down-up-across-line' | 'arrow-down-up-lock' | 'arrow-down-wide-short' | 'arrow-down-z-a' | 'arrow-down' | 'arrow-from-bottom' | 'arrow-from-left' | 'arrow-from-right' | 'arrow-from-top' | 'arrow-left-from-line' | 'arrow-left-long-to-line' | 'arrow-left-long' | 'arrow-left-rotate' | 'arrow-left-to-line' | 'arrow-left' | 'arrow-pointer' | 'arrow-progress' | 'arrow-right-arrow-left' | 'arrow-right-from-arc' | 'arrow-right-from-bracket' | 'arrow-right-from-file' | 'arrow-right-from-line' | 'arrow-right-long-to-line' | 'arrow-right-long' | 'arrow-right-rotate' | 'arrow-right-to-arc' | 'arrow-right-to-bracket' | 'arrow-right-to-city' | 'arrow-right-to-file' | 'arrow-right-to-line' | 'arrow-right' | 'arrow-rotate-back' | 'arrow-rotate-backward' | 'arrow-rotate-forward' | 'arrow-rotate-left' | 'arrow-rotate-right' | 'arrow-square-down' | 'arrow-square-left' | 'arrow-square-right' | 'arrow-square-up' | 'arrow-to-bottom' | 'arrow-to-left' | 'arrow-to-right' | 'arrow-to-top' | 'arrow-trend-down' | 'arrow-trend-up' | 'arrow-turn-down-left' | 'arrow-turn-down-right' | 'arrow-turn-down' | 'arrow-turn-right' | 'arrow-turn-up' | 'arrow-up-1-9' | 'arrow-up-9-1' | 'arrow-up-a-z' | 'arrow-up-arrow-down' | 'arrow-up-big-small' | 'arrow-up-from-arc' | 'arrow-up-from-bracket' | 'arrow-up-from-dotted-line' | 'arrow-up-from-ground-water' | 'arrow-up-from-line' | 'arrow-up-from-square' | 'arrow-up-from-water-pump' | 'arrow-up-left-from-circle' | 'arrow-up-left' | 'arrow-up-long' | 'arrow-up-right-and-arrow-down-left-from-center' | 'arrow-up-right-dots' | 'arrow-up-right-from-square' | 'arrow-up-right' | 'arrow-up-short-wide' | 'arrow-up-small-big' | 'arrow-up-square-triangle' | 'arrow-up-to-dotted-line' | 'arrow-up-to-line' | 'arrow-up-triangle-square' | 'arrow-up-wide-short' | 'arrow-up-z-a' | 'arrow-up' | 'arrows-alt-h' | 'arrows-alt-v' | 'arrows-alt' | 'arrows-cross' | 'arrows-down-to-line' | 'arrows-down-to-people' | 'arrows-from-dotted-line' | 'arrows-from-line' | 'arrows-h' | 'arrows-left-right-to-line' | 'arrows-left-right' | 'arrows-maximize' | 'arrows-minimize' | 'arrows-repeat-1' | 'arrows-repeat' | 'arrows-retweet' | 'arrows-rotate' | 'arrows-spin' | 'arrows-split-up-and-left' | 'arrows-to-circle' | 'arrows-to-dot' | 'arrows-to-dotted-line' | 'arrows-to-eye' | 'arrows-to-line' | 'arrows-turn-right' | 'arrows-turn-to-dots' | 'arrows-up-down-left-right' | 'arrows-up-down' | 'arrows-up-to-line' | 'arrows-v' | 'arrows' | 'asl-interpreting' | 'assistive-listening-systems' | 'asterisk' | 'at' | 'atlas' | 'atom-alt' | 'atom-simple' | 'atom' | 'audio-description-slash' | 'audio-description' | 'austral-sign' | 'automobile' | 'avocado' | 'award-simple' | 'award' | 'axe-battle' | 'axe' | 'b' | 'baby-carriage' | 'baby' | 'backpack' | 'backspace' | 'backward-fast' | 'backward-step' | 'backward' | 'bacon' | 'bacteria' | 'bacterium' | 'badge-check' | 'badge-dollar' | 'badge-percent' | 'badge-sheriff' | 'badge' | 'badger-honey' | 'badminton' | 'bag-seedling' | 'bag-shopping' | 'bagel' | 'bags-shopping' | 'baguette' | 'bahai' | 'baht-sign' | 'balance-scale-left' | 'balance-scale-right' | 'balance-scale' | 'ball-pile' | 'balloon' | 'balloons' | 'ballot-check' | 'ballot' | 'ban-bug' | 'ban-parking' | 'ban-smoking' | 'ban' | 'banana' | 'band-aid' | 'bandage' | 'bangladeshi-taka-sign' | 'banjo' | 'bank' | 'bar-chart' | 'barcode-alt' | 'barcode-read' | 'barcode-scan' | 'barcode' | 'barn-silo' | 'bars-filter' | 'bars-progress' | 'bars-sort' | 'bars-staggered' | 'bars' | 'baseball-ball' | 'baseball-bat-ball' | 'baseball' | 'basket-shopping-simple' | 'basket-shopping' | 'basketball-ball' | 'basketball-hoop' | 'basketball' | 'bat' | 'bath' | 'bathtub' | 'battery-0' | 'battery-1' | 'battery-2' | 'battery-3' | 'battery-4' | 'battery-5' | 'battery-bolt' | 'battery-car' | 'battery-empty' | 'battery-exclamation' | 'battery-full' | 'battery-half' | 'battery-low' | 'battery-quarter' | 'battery-slash' | 'battery-three-quarters' | 'battery' | 'bed-alt' | 'bed-bunk' | 'bed-empty' | 'bed-front' | 'bed-pulse' | 'bed' | 'bee' | 'beer-foam' | 'beer-mug-empty' | 'beer-mug' | 'beer' | 'bell-concierge' | 'bell-exclamation' | 'bell-on' | 'bell-plus' | 'bell-school-slash' | 'bell-school' | 'bell-slash' | 'bell' | 'bells' | 'bench-tree' | 'betamax' | 'bezier-curve' | 'bible' | 'bicycle' | 'biking-mountain' | 'biking' | 'billboard' | 'bin-bottles-recycle' | 'bin-bottles' | 'bin-recycle' | 'binary-circle-check' | 'binary-lock' | 'binary-slash' | 'binary' | 'binoculars' | 'biohazard' | 'bird' | 'birthday-cake' | 'bitcoin-sign' | 'blackboard' | 'blanket-fire' | 'blanket' | 'blender-phone' | 'blender' | 'blind' | 'blinds-open' | 'blinds-raised' | 'blinds' | 'block-brick-fire' | 'block-brick' | 'block-question' | 'block-quote' | 'block' | 'blog' | 'blueberries' | 'bluetooth' | 'bold' | 'bolt-auto' | 'bolt-lightning' | 'bolt-slash' | 'bolt' | 'bomb' | 'bone-break' | 'bone' | 'bong' | 'book-alt' | 'book-arrow-right' | 'book-arrow-up' | 'book-atlas' | 'book-bible' | 'book-blank' | 'book-bookmark' | 'book-circle-arrow-right' | 'book-circle-arrow-up' | 'book-circle' | 'book-copy' | 'book-dead' | 'book-font' | 'book-heart' | 'book-journal-whills' | 'book-law' | 'book-medical' | 'book-open-alt' | 'book-open-cover' | 'book-open-reader' | 'book-open' | 'book-quran' | 'book-reader' | 'book-section' | 'book-skull' | 'book-sparkles' | 'book-spells' | 'book-tanakh' | 'book-user' | 'book' | 'bookmark-circle' | 'bookmark-slash' | 'bookmark' | 'books-medical' | 'books' | 'boombox' | 'boot-heeled' | 'boot' | 'booth-curtain' | 'border-all' | 'border-bottom-right' | 'border-bottom' | 'border-center-h' | 'border-center-v' | 'border-inner' | 'border-left' | 'border-none' | 'border-outer' | 'border-right' | 'border-style-alt' | 'border-style' | 'border-top-left' | 'border-top' | 'bore-hole' | 'bottle-droplet' | 'bottle-water' | 'bow-arrow' | 'bowl-chopsticks-noodles' | 'bowl-chopsticks' | 'bowl-food' | 'bowl-hot' | 'bowl-rice' | 'bowl-salad' | 'bowl-scoop' | 'bowl-scoops' | 'bowl-shaved-ice' | 'bowl-soft-serve' | 'bowl-spoon' | 'bowling-ball-pin' | 'bowling-ball' | 'bowling-pins' | 'box-alt' | 'box-archive' | 'box-ballot' | 'box-check' | 'box-circle-check' | 'box-dollar' | 'box-fragile' | 'box-full' | 'box-heart' | 'box-open-full' | 'box-open' | 'box-taped' | 'box-tissue' | 'box-up' | 'box-usd' | 'box' | 'boxes-alt' | 'boxes-packing' | 'boxes-stacked' | 'boxes' | 'boxing-glove' | 'bracket-curly-left' | 'bracket-curly-right' | 'bracket-curly' | 'bracket-left' | 'bracket-round-right' | 'bracket-round' | 'bracket-square-right' | 'bracket-square' | 'bracket' | 'brackets-curly' | 'brackets-round' | 'brackets-square' | 'brackets' | 'braille' | 'brain-arrow-curved-right' | 'brain-circuit' | 'brain' | 'brake-warning' | 'brazilian-real-sign' | 'bread-loaf' | 'bread-slice-butter' | 'bread-slice' | 'bridge-circle-check' | 'bridge-circle-exclamation' | 'bridge-circle-xmark' | 'bridge-lock' | 'bridge-suspension' | 'bridge-water' | 'bridge' | 'briefcase-arrow-right' | 'briefcase-blank' | 'briefcase-clock' | 'briefcase-medical' | 'briefcase' | 'brightness-low' | 'brightness' | 'bring-forward' | 'bring-front' | 'broadcast-tower' | 'broccoli' | 'broom-ball' | 'broom-wide' | 'broom' | 'browser' | 'browsers' | 'brush' | 'bucket' | 'bug-slash' | 'bug' | 'bugs' | 'building-circle-arrow-right' | 'building-circle-check' | 'building-circle-exclamation' | 'building-circle-xmark' | 'building-columns' | 'building-flag' | 'building-lock' | 'building-ngo' | 'building-shield' | 'building-un' | 'building-user' | 'building-wheat' | 'building' | 'buildings' | 'bullhorn' | 'bullseye-arrow' | 'bullseye-pointer' | 'bullseye' | 'buoy-mooring' | 'buoy' | 'burger-cheese' | 'burger-fries' | 'burger-glass' | 'burger-lettuce' | 'burger-soda' | 'burger' | 'burn' | 'burrito' | 'burst' | 'bus-alt' | 'bus-school' | 'bus-simple' | 'bus' | 'business-front' | 'business-time' | 'butter' | 'c' | 'cab' | 'cabin' | 'cabinet-filing' | 'cable-car' | 'cactus' | 'cake-candles' | 'cake-slice' | 'cake' | 'calculator-alt' | 'calculator-simple' | 'calculator' | 'calendar-alt' | 'calendar-arrow-down' | 'calendar-arrow-up' | 'calendar-check' | 'calendar-circle-exclamation' | 'calendar-circle-minus' | 'calendar-circle-plus' | 'calendar-circle-user' | 'calendar-circle' | 'calendar-clock' | 'calendar-day' | 'calendar-days' | 'calendar-download' | 'calendar-edit' | 'calendar-exclamation' | 'calendar-heart' | 'calendar-image' | 'calendar-lines-pen' | 'calendar-lines' | 'calendar-minus' | 'calendar-note' | 'calendar-pen' | 'calendar-plus' | 'calendar-range' | 'calendar-star' | 'calendar-time' | 'calendar-times' | 'calendar-upload' | 'calendar-users' | 'calendar-week' | 'calendar-xmark' | 'calendar' | 'calendars' | 'camcorder' | 'camera-alt' | 'camera-cctv' | 'camera-circle' | 'camera-home' | 'camera-movie' | 'camera-polaroid' | 'camera-retro' | 'camera-rotate' | 'camera-security' | 'camera-slash' | 'camera-viewfinder' | 'camera-web-slash' | 'camera-web' | 'camera' | 'campfire' | 'campground' | 'can-food' | 'cancel' | 'candle-holder' | 'candy-bar' | 'candy-cane' | 'candy-corn' | 'candy' | 'cannabis' | 'capsules' | 'car-alt' | 'car-battery' | 'car-bolt' | 'car-building' | 'car-bump' | 'car-burst' | 'car-bus' | 'car-circle-bolt' | 'car-crash' | 'car-garage' | 'car-mechanic' | 'car-mirrors' | 'car-on' | 'car-rear' | 'car-side-bolt' | 'car-side' | 'car-tilt' | 'car-tunnel' | 'car-wash' | 'car-wrench' | 'car' | 'caravan-alt' | 'caravan-simple' | 'caravan' | 'card-club' | 'card-diamond' | 'card-heart' | 'card-spade' | 'cards-blank' | 'cards' | 'caret-circle-down' | 'caret-circle-left' | 'caret-circle-right' | 'caret-circle-up' | 'caret-down' | 'caret-left' | 'caret-right' | 'caret-square-down' | 'caret-square-left' | 'caret-square-right' | 'caret-square-up' | 'caret-up' | 'carriage-baby' | 'carrot' | 'cars' | 'cart-arrow-down' | 'cart-arrow-up' | 'cart-circle-arrow-down' | 'cart-circle-arrow-up' | 'cart-circle-check' | 'cart-circle-exclamation' | 'cart-circle-plus' | 'cart-circle-xmark' | 'cart-flatbed-boxes' | 'cart-flatbed-empty' | 'cart-flatbed-suitcase' | 'cart-flatbed' | 'cart-minus' | 'cart-plus' | 'cart-shopping-fast' | 'cart-shopping' | 'cart-xmark' | 'cash-register' | 'cassette-betamax' | 'cassette-tape' | 'cassette-vhs' | 'castle' | 'cat-space' | 'cat' | 'cauldron' | 'cctv' | 'cedi-sign' | 'cent-sign' | 'certificate' | 'chain-broken' | 'chain-horizontal-slash' | 'chain-horizontal' | 'chain-slash' | 'chain' | 'chair-office' | 'chair' | 'chalkboard-teacher' | 'chalkboard-user' | 'chalkboard' | 'champagne-glass' | 'champagne-glasses' | 'charging-station' | 'chart-area' | 'chart-bar' | 'chart-bullet' | 'chart-candlestick' | 'chart-column' | 'chart-gantt' | 'chart-line-down' | 'chart-line-up-down' | 'chart-line-up' | 'chart-line' | 'chart-mixed-up-circle-currency' | 'chart-mixed-up-circle-dollar' | 'chart-mixed' | 'chart-network' | 'chart-pie-alt' | 'chart-pie-simple-circle-currency' | 'chart-pie-simple-circle-dollar' | 'chart-pie-simple' | 'chart-pie' | 'chart-pyramid' | 'chart-radar' | 'chart-scatter-3d' | 'chart-scatter-bubble' | 'chart-scatter' | 'chart-simple-horizontal' | 'chart-simple' | 'chart-tree-map' | 'chart-user' | 'chart-waterfall' | 'check-circle' | 'check-double' | 'check-square' | 'check-to-slot' | 'check' | 'cheese-swiss' | 'cheese' | 'cheeseburger' | 'cherries' | 'chess-bishop-alt' | 'chess-bishop-piece' | 'chess-bishop' | 'chess-board' | 'chess-clock-alt' | 'chess-clock-flip' | 'chess-clock' | 'chess-king-alt' | 'chess-king-piece' | 'chess-king' | 'chess-knight-alt' | 'chess-knight-piece' | 'chess-knight' | 'chess-pawn-alt' | 'chess-pawn-piece' | 'chess-pawn' | 'chess-queen-alt' | 'chess-queen-piece' | 'chess-queen' | 'chess-rook-alt' | 'chess-rook-piece' | 'chess-rook' | 'chess' | 'chestnut' | 'chevron-circle-down' | 'chevron-circle-left' | 'chevron-circle-right' | 'chevron-circle-up' | 'chevron-double-down' | 'chevron-double-left' | 'chevron-double-right' | 'chevron-double-up' | 'chevron-down' | 'chevron-left' | 'chevron-right' | 'chevron-square-down' | 'chevron-square-left' | 'chevron-square-right' | 'chevron-square-up' | 'chevron-up' | 'chevrons-down' | 'chevrons-left' | 'chevrons-right' | 'chevrons-up' | 'chf-sign' | 'child-combatant' | 'child-dress' | 'child-reaching' | 'child-rifle' | 'child' | 'children' | 'chimney' | 'chocolate-bar' | 'chopsticks' | 'church' | 'circle-0' | 'circle-1' | 'circle-2' | 'circle-3' | 'circle-4' | 'circle-5' | 'circle-6' | 'circle-7' | 'circle-8' | 'circle-9' | 'circle-a' | 'circle-ampersand' | 'circle-arrow-down-left' | 'circle-arrow-down-right' | 'circle-arrow-down' | 'circle-arrow-left' | 'circle-arrow-right' | 'circle-arrow-up-left' | 'circle-arrow-up-right' | 'circle-arrow-up' | 'circle-b' | 'circle-bolt' | 'circle-book-open' | 'circle-bookmark' | 'circle-c' | 'circle-calendar' | 'circle-camera' | 'circle-caret-down' | 'circle-caret-left' | 'circle-caret-right' | 'circle-caret-up' | 'circle-check' | 'circle-chevron-down' | 'circle-chevron-left' | 'circle-chevron-right' | 'circle-chevron-up' | 'circle-d' | 'circle-dashed' | 'circle-divide' | 'circle-dollar-to-slot' | 'circle-dollar' | 'circle-dot' | 'circle-down-left' | 'circle-down-right' | 'circle-down' | 'circle-e' | 'circle-ellipsis-vertical' | 'circle-ellipsis' | 'circle-envelope' | 'circle-euro' | 'circle-exclamation-check' | 'circle-exclamation' | 'circle-f' | 'circle-g' | 'circle-h' | 'circle-half-stroke' | 'circle-half' | 'circle-heart' | 'circle-i' | 'circle-info' | 'circle-j' | 'circle-k' | 'circle-l' | 'circle-left' | 'circle-location-arrow' | 'circle-m' | 'circle-microphone-lines' | 'circle-microphone' | 'circle-minus' | 'circle-n' | 'circle-nodes' | 'circle-notch' | 'circle-o' | 'circle-p' | 'circle-parking' | 'circle-pause' | 'circle-phone-flip' | 'circle-phone-hangup' | 'circle-phone' | 'circle-play' | 'circle-plus' | 'circle-q' | 'circle-quarter-stroke' | 'circle-quarter' | 'circle-quarters' | 'circle-question' | 'circle-r' | 'circle-radiation' | 'circle-right' | 'circle-s' | 'circle-small' | 'circle-sort-down' | 'circle-sort-up' | 'circle-sort' | 'circle-star' | 'circle-sterling' | 'circle-stop' | 'circle-t' | 'circle-three-quarters-stroke' | 'circle-three-quarters' | 'circle-trash' | 'circle-u' | 'circle-up-left' | 'circle-up-right' | 'circle-up' | 'circle-user' | 'circle-v' | 'circle-video' | 'circle-w' | 'circle-waveform-lines' | 'circle-x' | 'circle-xmark' | 'circle-y' | 'circle-yen' | 'circle-z' | 'circle' | 'circles-overlap' | 'citrus-slice' | 'citrus' | 'city' | 'clapperboard-play' | 'clapperboard' | 'clarinet' | 'claw-marks' | 'clinic-medical' | 'clipboard-check' | 'clipboard-list-check' | 'clipboard-list' | 'clipboard-medical' | 'clipboard-prescription' | 'clipboard-question' | 'clipboard-user' | 'clipboard' | 'clock-desk' | 'clock-eight-thirty' | 'clock-eight' | 'clock-eleven-thirty' | 'clock-eleven' | 'clock-five-thirty' | 'clock-five' | 'clock-four-thirty' | 'clock-four' | 'clock-nine-thirty' | 'clock-nine' | 'clock-one-thirty' | 'clock-one' | 'clock-rotate-left' | 'clock-seven-thirty' | 'clock-seven' | 'clock-six-thirty' | 'clock-six' | 'clock-ten-thirty' | 'clock-ten' | 'clock-three-thirty' | 'clock-three' | 'clock-twelve-thirty' | 'clock-twelve' | 'clock-two-thirty' | 'clock-two' | 'clock' | 'clone' | 'close' | 'closed-captioning-slash' | 'closed-captioning' | 'clothes-hanger' | 'cloud-arrow-down' | 'cloud-arrow-up' | 'cloud-binary' | 'cloud-bolt-moon' | 'cloud-bolt-sun' | 'cloud-bolt' | 'cloud-check' | 'cloud-download-alt' | 'cloud-download' | 'cloud-drizzle' | 'cloud-exclamation' | 'cloud-fog' | 'cloud-hail-mixed' | 'cloud-hail' | 'cloud-meatball' | 'cloud-minus' | 'cloud-moon-rain' | 'cloud-moon' | 'cloud-music' | 'cloud-plus' | 'cloud-question' | 'cloud-rain' | 'cloud-rainbow' | 'cloud-showers-heavy' | 'cloud-showers-water' | 'cloud-showers' | 'cloud-slash' | 'cloud-sleet' | 'cloud-snow' | 'cloud-sun-rain' | 'cloud-sun' | 'cloud-upload-alt' | 'cloud-upload' | 'cloud-word' | 'cloud-xmark' | 'cloud' | 'clouds-moon' | 'clouds-sun' | 'clouds' | 'clover' | 'club' | 'cny' | 'cocktail' | 'coconut' | 'code-branch' | 'code-commit' | 'code-compare' | 'code-fork' | 'code-merge' | 'code-pull-request-closed' | 'code-pull-request-draft' | 'code-pull-request' | 'code-simple' | 'code' | 'coffee-bean' | 'coffee-beans' | 'coffee-pot' | 'coffee-togo' | 'coffee' | 'coffin-cross' | 'coffin' | 'cog' | 'cogs' | 'coin-blank' | 'coin-front' | 'coin-vertical' | 'coin' | 'coins' | 'colon-sign' | 'colon' | 'columns-3' | 'columns' | 'comet' | 'comma' | 'command' | 'comment-alt-arrow-down' | 'comment-alt-arrow-up' | 'comment-alt-captions' | 'comment-alt-check' | 'comment-alt-dollar' | 'comment-alt-dots' | 'comment-alt-edit' | 'comment-alt-exclamation' | 'comment-alt-image' | 'comment-alt-lines' | 'comment-alt-medical' | 'comment-alt-minus' | 'comment-alt-music' | 'comment-alt-plus' | 'comment-alt-quote' | 'comment-alt-slash' | 'comment-alt-smile' | 'comment-alt-text' | 'comment-alt-times' | 'comment-alt' | 'comment-arrow-down' | 'comment-arrow-up-right' | 'comment-arrow-up' | 'comment-captions' | 'comment-check' | 'comment-code' | 'comment-dollar' | 'comment-dots' | 'comment-edit' | 'comment-exclamation' | 'comment-heart' | 'comment-image' | 'comment-lines' | 'comment-medical' | 'comment-middle-alt' | 'comment-middle-top-alt' | 'comment-middle-top' | 'comment-middle' | 'comment-minus' | 'comment-music' | 'comment-pen' | 'comment-plus' | 'comment-question' | 'comment-quote' | 'comment-slash' | 'comment-smile' | 'comment-sms' | 'comment-text' | 'comment-times' | 'comment-xmark' | 'comment' | 'commenting' | 'comments-alt-dollar' | 'comments-alt' | 'comments-dollar' | 'comments-question-check' | 'comments-question' | 'comments' | 'compact-disc' | 'compass-drafting' | 'compass-slash' | 'compass' | 'compress-alt' | 'compress-arrows-alt' | 'compress-arrows' | 'compress-wide' | 'compress' | 'computer-classic' | 'computer-mouse-scrollwheel' | 'computer-mouse' | 'computer-speaker' | 'computer' | 'concierge-bell' | 'construction' | 'contact-book' | 'contact-card' | 'container-storage' | 'conveyor-belt-alt' | 'conveyor-belt-arm' | 'conveyor-belt-boxes' | 'conveyor-belt-empty' | 'conveyor-belt' | 'cookie-bite' | 'cookie' | 'copy' | 'copyright' | 'corn' | 'corner' | 'couch-small' | 'couch' | 'cow' | 'cowbell-circle-plus' | 'cowbell-more' | 'cowbell' | 'crab' | 'crate-apple' | 'crate-empty' | 'credit-card-alt' | 'credit-card-blank' | 'credit-card-front' | 'credit-card' | 'creemee' | 'cricket-bat-ball' | 'cricket' | 'croissant' | 'crop-alt' | 'crop-simple' | 'crop' | 'cross' | 'crosshairs-simple' | 'crosshairs' | 'crow' | 'crown' | 'crutch' | 'crutches' | 'cruzeiro-sign' | 'crystal-ball' | 'cube' | 'cubes-stacked' | 'cubes' | 'cucumber' | 'cup-straw-swoosh' | 'cup-straw' | 'cup-togo' | 'cupcake' | 'curling-stone' | 'curling' | 'custard' | 'cut' | 'cutlery' | 'd' | 'dagger' | 'dash' | 'dashboard' | 'database' | 'deaf' | 'deafness' | 'debug' | 'dedent' | 'deer-rudolph' | 'deer' | 'delete-left' | 'delete-right' | 'democrat' | 'desktop-alt' | 'desktop-arrow-down' | 'desktop-code' | 'desktop-medical' | 'desktop-slash' | 'desktop' | 'dewpoint' | 'dharmachakra' | 'diagnoses' | 'diagram-cells' | 'diagram-lean-canvas' | 'diagram-nested' | 'diagram-next' | 'diagram-predecessor' | 'diagram-previous' | 'diagram-project' | 'diagram-sankey' | 'diagram-subtask' | 'diagram-successor' | 'diagram-venn' | 'dial-high' | 'dial-low' | 'dial-max' | 'dial-med-high' | 'dial-med-low' | 'dial-med' | 'dial-min' | 'dial-off' | 'dial' | 'diamond-exclamation' | 'diamond-half-stroke' | 'diamond-half' | 'diamond-turn-right' | 'diamond' | 'dice-d10' | 'dice-d12' | 'dice-d20' | 'dice-d4' | 'dice-d6' | 'dice-d8' | 'dice-five' | 'dice-four' | 'dice-one' | 'dice-six' | 'dice-three' | 'dice-two' | 'dice' | 'digging' | 'digital-tachograph' | 'dinosaur' | 'diploma' | 'directions' | 'disc-drive' | 'disease' | 'display-arrow-down' | 'display-chart-up-circle-currency' | 'display-chart-up-circle-dollar' | 'display-chart-up' | 'display-code' | 'display-medical' | 'display-slash' | 'display' | 'distribute-spacing-horizontal' | 'distribute-spacing-vertical' | 'ditto' | 'divide' | 'dizzy' | 'dna' | 'do-not-enter' | 'dog-leashed' | 'dog' | 'dollar-circle' | 'dollar-sign' | 'dollar-square' | 'dollar' | 'dolly-box' | 'dolly-empty' | 'dolly-flatbed-alt' | 'dolly-flatbed-empty' | 'dolly-flatbed' | 'dolly' | 'dolphin' | 'donate' | 'dong-sign' | 'donut' | 'door-closed' | 'door-open' | 'dot-circle' | 'doughnut' | 'dove' | 'down-from-dotted-line' | 'down-from-line' | 'down-left-and-up-right-to-center' | 'down-left' | 'down-long' | 'down-right' | 'down-to-bracket' | 'down-to-dotted-line' | 'down-to-line' | 'down' | 'download' | 'drafting-compass' | 'dragon' | 'draw-circle' | 'draw-polygon' | 'draw-square' | 'dreidel' | 'drivers-license' | 'drone-alt' | 'drone-front' | 'drone' | 'droplet-degree' | 'droplet-percent' | 'droplet-slash' | 'droplet' | 'drum-steelpan' | 'drum' | 'drumstick-bite' | 'drumstick' | 'dryer-alt' | 'dryer-heat' | 'dryer' | 'duck' | 'dumbbell' | 'dumpster-fire' | 'dumpster' | 'dungeon' | 'e' | 'ear-deaf' | 'ear-listen' | 'ear-muffs' | 'ear' | 'earth-africa' | 'earth-america' | 'earth-americas' | 'earth-asia' | 'earth-europe' | 'earth-oceania' | 'earth' | 'eclipse-alt' | 'eclipse' | 'edit' | 'egg-fried' | 'egg' | 'eggplant' | 'eject' | 'elephant' | 'elevator' | 'ellipsis-h-alt' | 'ellipsis-h' | 'ellipsis-stroke-vertical' | 'ellipsis-stroke' | 'ellipsis-v-alt' | 'ellipsis-v' | 'ellipsis-vertical' | 'ellipsis' | 'empty-set' | 'engine-exclamation' | 'engine-warning' | 'engine' | 'envelope-badge' | 'envelope-circle-check' | 'envelope-circle' | 'envelope-dot' | 'envelope-open-dollar' | 'envelope-open-text' | 'envelope-open' | 'envelope-square' | 'envelope' | 'envelopes-bulk' | 'envelopes' | 'equals' | 'eraser' | 'escalator' | 'ethernet' | 'eur' | 'euro-sign' | 'euro' | 'exchange-alt' | 'exchange' | 'exclamation-circle' | 'exclamation-square' | 'exclamation-triangle' | 'exclamation' | 'expand-alt' | 'expand-arrows-alt' | 'expand-arrows' | 'expand-wide' | 'expand' | 'exploding-head' | 'explosion' | 'external-link-alt' | 'external-link-square-alt' | 'external-link-square' | 'external-link' | 'eye-dropper-empty' | 'eye-dropper-full' | 'eye-dropper-half' | 'eye-dropper' | 'eye-evil' | 'eye-low-vision' | 'eye-slash' | 'eye' | 'eyedropper' | 'eyes' | 'f' | 'face-angry-horns' | 'face-angry' | 'face-anguished' | 'face-anxious-sweat' | 'face-astonished' | 'face-awesome' | 'face-beam-hand-over-mouth' | 'face-clouds' | 'face-confounded' | 'face-confused' | 'face-cowboy-hat' | 'face-diagonal-mouth' | 'face-disappointed' | 'face-disguise' | 'face-dizzy' | 'face-dotted' | 'face-downcast-sweat' | 'face-drooling' | 'face-exhaling' | 'face-explode' | 'face-expressionless' | 'face-eyes-xmarks' | 'face-fearful' | 'face-flushed' | 'face-frown-open' | 'face-frown-slight' | 'face-frown' | 'face-glasses' | 'face-grimace' | 'face-grin-beam-sweat' | 'face-grin-beam' | 'face-grin-hearts' | 'face-grin-squint-tears' | 'face-grin-squint' | 'face-grin-stars' | 'face-grin-tears' | 'face-grin-tongue-squint' | 'face-grin-tongue-wink' | 'face-grin-tongue' | 'face-grin-wide' | 'face-grin-wink' | 'face-grin' | 'face-hand-over-mouth' | 'face-hand-peeking' | 'face-hand-yawn' | 'face-head-bandage' | 'face-holding-back-tears' | 'face-hushed' | 'face-icicles' | 'face-kiss-beam' | 'face-kiss-closed-eyes' | 'face-kiss-wink-heart' | 'face-kiss' | 'face-laugh-beam' | 'face-laugh-squint' | 'face-laugh-wink' | 'face-laugh' | 'face-lying' | 'face-mask' | 'face-meh-blank' | 'face-meh' | 'face-melting' | 'face-monocle' | 'face-nauseated' | 'face-nose-steam' | 'face-party' | 'face-pensive' | 'face-persevering' | 'face-pleading' | 'face-pouting' | 'face-raised-eyebrow' | 'face-relieved' | 'face-rolling-eyes' | 'face-sad-cry' | 'face-sad-sweat' | 'face-sad-tear' | 'face-saluting' | 'face-scream' | 'face-shush' | 'face-sleeping' | 'face-sleepy' | 'face-smile-beam' | 'face-smile-halo' | 'face-smile-hearts' | 'face-smile-horns' | 'face-smile-plus' | 'face-smile-relaxed' | 'face-smile-tear' | 'face-smile-tongue' | 'face-smile-upside-down' | 'face-smile-wink' | 'face-smile' | 'face-smiling-hands' | 'face-smirking' | 'face-spiral-eyes' | 'face-sunglasses' | 'face-surprise' | 'face-swear' | 'face-thermometer' | 'face-thinking' | 'face-tired' | 'face-tissue' | 'face-tongue-money' | 'face-tongue-sweat' | 'face-unamused' | 'face-viewfinder' | 'face-vomit' | 'face-weary' | 'face-woozy' | 'face-worried' | 'face-zany' | 'face-zipper' | 'falafel' | 'family-dress' | 'family-pants' | 'family' | 'fan-table' | 'fan' | 'farm' | 'fast-backward' | 'fast-forward' | 'faucet-drip' | 'faucet' | 'fax' | 'feather-alt' | 'feather-pointed' | 'feather' | 'feed' | 'female' | 'fence' | 'ferris-wheel' | 'ferry' | 'field-hockey-stick-ball' | 'field-hockey' | 'fighter-jet' | 'file-alt' | 'file-archive' | 'file-arrow-down' | 'file-arrow-up' | 'file-audio' | 'file-award' | 'file-binary' | 'file-caret-down' | 'file-caret-up' | 'file-certificate' | 'file-chart-column' | 'file-chart-line' | 'file-chart-pie' | 'file-check' | 'file-circle-check' | 'file-circle-exclamation' | 'file-circle-info' | 'file-circle-minus' | 'file-circle-plus' | 'file-circle-question' | 'file-circle-xmark' | 'file-clipboard' | 'file-code' | 'file-contract' | 'file-csv' | 'file-dashed-line' | 'file-doc' | 'file-download' | 'file-edit' | 'file-excel' | 'file-exclamation' | 'file-export' | 'file-heart' | 'file-image' | 'file-import' | 'file-invoice-dollar' | 'file-invoice' | 'file-lines' | 'file-lock' | 'file-magnifying-glass' | 'file-medical-alt' | 'file-medical' | 'file-minus' | 'file-music' | 'file-pdf' | 'file-pen' | 'file-plus-minus' | 'file-plus' | 'file-powerpoint' | 'file-prescription' | 'file-search' | 'file-shield' | 'file-signature' | 'file-slash' | 'file-spreadsheet' | 'file-text' | 'file-times' | 'file-upload' | 'file-user' | 'file-video' | 'file-waveform' | 'file-word' | 'file-xmark' | 'file-zip' | 'file-zipper' | 'file' | 'files-medical' | 'files' | 'fill-drip' | 'fill' | 'film-alt' | 'film-canister' | 'film-cannister' | 'film-simple' | 'film-slash' | 'film' | 'films' | 'filter-circle-dollar' | 'filter-circle-xmark' | 'filter-list' | 'filter-slash' | 'filter' | 'filters' | 'fingerprint' | 'fire-alt' | 'fire-burner' | 'fire-extinguisher' | 'fire-flame-curved' | 'fire-flame-simple' | 'fire-flame' | 'fire-hydrant' | 'fire-smoke' | 'fire' | 'fireplace' | 'firewall' | 'first-aid' | 'fish-bones' | 'fish-cooked' | 'fish-fins' | 'fish' | 'fishing-rod' | 'fist-raised' | 'flag-alt' | 'flag-checkered' | 'flag-pennant' | 'flag-swallowtail' | 'flag-usa' | 'flag' | 'flame' | 'flashlight' | 'flask-gear' | 'flask-poison' | 'flask-potion' | 'flask-round-poison' | 'flask-round-potion' | 'flask-vial' | 'flask' | 'flatbread-stuffed' | 'flatbread' | 'floppy-disk-circle-arrow-right' | 'floppy-disk-circle-xmark' | 'floppy-disk-pen' | 'floppy-disk-times' | 'floppy-disk' | 'floppy-disks' | 'florin-sign' | 'flower-daffodil' | 'flower-tulip' | 'flower' | 'flushed' | 'flute' | 'flux-capacitor' | 'flying-disc' | 'fog' | 'folder-arrow-down' | 'folder-arrow-up' | 'folder-blank' | 'folder-bookmark' | 'folder-closed' | 'folder-cog' | 'folder-download' | 'folder-gear' | 'folder-grid' | 'folder-heart' | 'folder-image' | 'folder-magnifying-glass' | 'folder-medical' | 'folder-minus' | 'folder-music' | 'folder-open' | 'folder-plus' | 'folder-search' | 'folder-times' | 'folder-tree' | 'folder-upload' | 'folder-user' | 'folder-xmark' | 'folder' | 'folders' | 'fondue-pot' | 'font-awesome-flag' | 'font-awesome-logo-full' | 'font-awesome' | 'font-case' | 'font' | 'football-ball' | 'football-helmet' | 'football' | 'fork-knife' | 'fork' | 'forklift' | 'fort' | 'forward-fast' | 'forward-step' | 'forward' | 'fragile' | 'frame' | 'franc-sign' | 'french-fries' | 'frog' | 'frosty-head' | 'frown-open' | 'frown' | 'function' | 'funnel-dollar' | 'futbol-ball' | 'futbol' | 'g' | 'galaxy' | 'gallery-thumbnails' | 'game-board-alt' | 'game-board-simple' | 'game-board' | 'game-console-handheld-crank' | 'game-console-handheld' | 'gamepad-alt' | 'gamepad-modern' | 'gamepad' | 'garage-car' | 'garage-open' | 'garage' | 'garlic' | 'gas-pump-slash' | 'gas-pump' | 'gauge-circle-bolt' | 'gauge-circle-minus' | 'gauge-circle-plus' | 'gauge-high' | 'gauge-low' | 'gauge-max' | 'gauge-med' | 'gauge-min' | 'gauge-simple-high' | 'gauge-simple-low' | 'gauge-simple-max' | 'gauge-simple-med' | 'gauge-simple-min' | 'gauge-simple' | 'gauge' | 'gave-dandy' | 'gavel' | 'gbp' | 'gear-code' | 'gear-complex-code' | 'gear-complex' | 'gear' | 'gears' | 'gem' | 'genderless' | 'ghost' | 'gif' | 'gift-card' | 'gift' | 'gifts' | 'gingerbread-man' | 'glass-champagne' | 'glass-cheers' | 'glass-citrus' | 'glass-empty' | 'glass-half-empty' | 'glass-half-full' | 'glass-half' | 'glass-martini-alt' | 'glass-martini' | 'glass-water-droplet' | 'glass-water' | 'glass-whiskey-rocks' | 'glass-whiskey' | 'glass' | 'glasses-alt' | 'glasses-round' | 'glasses' | 'globe-africa' | 'globe-americas' | 'globe-asia' | 'globe-europe' | 'globe-oceania' | 'globe-snow' | 'globe-stand' | 'globe' | 'glove-boxing' | 'goal-net' | 'golf-ball-tee' | 'golf-ball' | 'golf-club' | 'golf-flag-hole' | 'gopuram' | 'graduation-cap' | 'gramophone' | 'grapes' | 'grate-droplet' | 'grate' | 'greater-than-equal' | 'greater-than' | 'grid-2-plus' | 'grid-2' | 'grid-3' | 'grid-4' | 'grid-5' | 'grid-dividers' | 'grid-horizontal' | 'grid-round-2-plus' | 'grid-round-2' | 'grid-round-4' | 'grid-round-5' | 'grid-round' | 'grid' | 'grill-fire' | 'grill-hot' | 'grill' | 'grimace' | 'grin-alt' | 'grin-beam-sweat' | 'grin-beam' | 'grin-hearts' | 'grin-squint-tears' | 'grin-squint' | 'grin-stars' | 'grin-tears' | 'grin-tongue-squint' | 'grin-tongue-wink' | 'grin-tongue' | 'grin-wink' | 'grin' | 'grip-dots-vertical' | 'grip-dots' | 'grip-horizontal' | 'grip-lines-vertical' | 'grip-lines' | 'grip-vertical' | 'grip' | 'group-arrows-rotate' | 'guarani-sign' | 'guitar-electric' | 'guitar' | 'guitars' | 'gun-slash' | 'gun-squirt' | 'gun' | 'h-square' | 'h' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'hamburger' | 'hammer-crash' | 'hammer-war' | 'hammer' | 'hamsa' | 'hand-back-fist' | 'hand-back-point-down' | 'hand-back-point-left' | 'hand-back-point-ribbon' | 'hand-back-point-right' | 'hand-back-point-up' | 'hand-dots' | 'hand-fingers-crossed' | 'hand-fist' | 'hand-heart' | 'hand-holding-box' | 'hand-holding-dollar' | 'hand-holding-droplet' | 'hand-holding-hand' | 'hand-holding-heart' | 'hand-holding-magic' | 'hand-holding-medical' | 'hand-holding-seedling' | 'hand-holding-skull' | 'hand-holding-usd' | 'hand-holding-water' | 'hand-holding' | 'hand-horns' | 'hand-lizard' | 'hand-love' | 'hand-middle-finger' | 'hand-paper' | 'hand-peace' | 'hand-point-down' | 'hand-point-left' | 'hand-point-ribbon' | 'hand-point-right' | 'hand-point-up' | 'hand-pointer' | 'hand-receiving' | 'hand-rock' | 'hand-scissors' | 'hand-sparkles' | 'hand-spock' | 'hand-wave' | 'hand' | 'handcuffs' | 'hands-american-sign-language-interpreting' | 'hands-asl-interpreting' | 'hands-bound' | 'hands-bubbles' | 'hands-clapping' | 'hands-heart' | 'hands-helping' | 'hands-holding-child' | 'hands-holding-circle' | 'hands-holding-diamond' | 'hands-holding-dollar' | 'hands-holding-heart' | 'hands-holding' | 'hands-praying' | 'hands-usd' | 'hands-wash' | 'hands' | 'handshake-alt-slash' | 'handshake-alt' | 'handshake-angle' | 'handshake-simple-slash' | 'handshake-simple' | 'handshake-slash' | 'handshake' | 'hanukiah' | 'hard-drive' | 'hard-hat' | 'hard-of-hearing' | 'hashtag-lock' | 'hashtag' | 'hat-beach' | 'hat-chef' | 'hat-cowboy-side' | 'hat-cowboy' | 'hat-hard' | 'hat-santa' | 'hat-winter' | 'hat-witch' | 'hat-wizard' | 'haykal' | 'hdd' | 'head-side-brain' | 'head-side-cough-slash' | 'head-side-cough' | 'head-side-goggles' | 'head-side-headphones' | 'head-side-heart' | 'head-side-mask' | 'head-side-medical' | 'head-side-virus' | 'head-side' | 'head-vr' | 'header' | 'heading' | 'headphones-alt' | 'headphones-simple' | 'headphones' | 'headset' | 'heart-broken' | 'heart-circle-bolt' | 'heart-circle-check' | 'heart-circle-exclamation' | 'heart-circle-minus' | 'heart-circle-plus' | 'heart-circle-xmark' | 'heart-circle' | 'heart-crack' | 'heart-half-alt' | 'heart-half-stroke' | 'heart-half' | 'heart-music-camera-bolt' | 'heart-pulse' | 'heart-rate' | 'heart-square' | 'heart' | 'heartbeat' | 'heat' | 'helicopter-symbol' | 'helicopter' | 'helmet-battle' | 'helmet-safety' | 'helmet-un' | 'hexagon-check' | 'hexagon-divide' | 'hexagon-exclamation' | 'hexagon-image' | 'hexagon-minus' | 'hexagon-plus' | 'hexagon-vertical-nft-slanted' | 'hexagon-vertical-nft' | 'hexagon-xmark' | 'hexagon' | 'high-definition' | 'highlighter-line' | 'highlighter' | 'hiking' | 'hill-avalanche' | 'hill-rockslide' | 'hippo' | 'history' | 'hockey-mask' | 'hockey-puck' | 'hockey-stick-puck' | 'hockey-sticks' | 'holly-berry' | 'home-alt' | 'home-blank' | 'home-heart' | 'home-lg-alt' | 'home-lg' | 'home-user' | 'home' | 'honey-pot' | 'hood-cloak' | 'horizontal-rule' | 'horse-head' | 'horse-saddle' | 'horse' | 'hose-reel' | 'hose' | 'hospital-alt' | 'hospital-symbol' | 'hospital-user' | 'hospital-wide' | 'hospital' | 'hospitals' | 'hot-tub-person' | 'hot-tub' | 'hotdog' | 'hotel' | 'hourglass-1' | 'hourglass-2' | 'hourglass-3' | 'hourglass-clock' | 'hourglass-empty' | 'hourglass-end' | 'hourglass-half' | 'hourglass-start' | 'hourglass' | 'house-blank' | 'house-building' | 'house-chimney-blank' | 'house-chimney-crack' | 'house-chimney-heart' | 'house-chimney-medical' | 'house-chimney-user' | 'house-chimney-window' | 'house-chimney' | 'house-circle-check' | 'house-circle-exclamation' | 'house-circle-xmark' | 'house-crack' | 'house-damage' | 'house-day' | 'house-fire' | 'house-flag' | 'house-flood-water-circle-arrow-right' | 'house-flood-water' | 'house-flood' | 'house-heart' | 'house-laptop' | 'house-leave' | 'house-lock' | 'house-medical-circle-check' | 'house-medical-circle-exclamation' | 'house-medical-circle-xmark' | 'house-medical-flag' | 'house-medical' | 'house-night' | 'house-person-arrive' | 'house-person-depart' | 'house-person-leave' | 'house-person-return' | 'house-return' | 'house-signal' | 'house-tree' | 'house-tsunami' | 'house-turret' | 'house-user' | 'house-water' | 'house-window' | 'house' | 'hryvnia-sign' | 'hryvnia' | 'humidity' | 'hundred-points' | 'hurricane' | 'hyphen' | 'i-cursor' | 'i' | 'ice-cream' | 'ice-skate' | 'icicles' | 'icons-alt' | 'icons' | 'id-badge' | 'id-card-alt' | 'id-card-clip' | 'id-card' | 'igloo' | 'ils' | 'image-landscape' | 'image-polaroid-user' | 'image-polaroid' | 'image-portrait' | 'image-slash' | 'image-user' | 'image' | 'images-user' | 'images' | 'inbox-arrow-down' | 'inbox-arrow-up' | 'inbox-full' | 'inbox-in' | 'inbox-out' | 'inbox' | 'inboxes' | 'indent' | 'indian-rupee-sign' | 'indian-rupee' | 'industry-alt' | 'industry-windows' | 'industry' | 'infinity' | 'info-circle' | 'info-square' | 'info' | 'inhaler' | 'input-numeric' | 'input-pipe' | 'input-text' | 'inr' | 'institution' | 'integral' | 'interrobang' | 'intersection' | 'inventory' | 'island-tree-palm' | 'island-tropical' | 'italic' | 'j' | 'jack-o-lantern' | 'jar-wheat' | 'jar' | 'jedi' | 'jet-fighter-up' | 'jet-fighter' | 'joint' | 'journal-whills' | 'joystick' | 'jpy' | 'jug-bottle' | 'jug-detergent' | 'jug' | 'k' | 'kaaba' | 'kazoo' | 'kerning' | 'key-skeleton-left-right' | 'key-skeleton' | 'key' | 'keyboard-brightness-low' | 'keyboard-brightness' | 'keyboard-down' | 'keyboard-left' | 'keyboard' | 'keynote' | 'khanda' | 'kidneys' | 'kip-sign' | 'kiss-beam' | 'kiss-wink-heart' | 'kiss' | 'kit-medical' | 'kitchen-set' | 'kite' | 'kiwi-bird' | 'kiwi-fruit' | 'knife-kitchen' | 'knife' | 'krw' | 'l' | 'lacrosse-stick-ball' | 'lacrosse-stick' | 'ladder-water' | 'lambda' | 'lamp-desk' | 'lamp-floor' | 'lamp-street' | 'lamp' | 'land-mine-on' | 'landmark-alt' | 'landmark-dome' | 'landmark-flag' | 'landmark' | 'landscape' | 'language' | 'laptop-arrow-down' | 'laptop-binary' | 'laptop-code' | 'laptop-file' | 'laptop-house' | 'laptop-medical' | 'laptop-mobile' | 'laptop-slash' | 'laptop' | 'lari-sign' | 'lasso-sparkles' | 'lasso' | 'laugh-beam' | 'laugh-squint' | 'laugh-wink' | 'laugh' | 'layer-group-minus' | 'layer-group-plus' | 'layer-group' | 'layer-minus' | 'layer-plus' | 'leaf-heart' | 'leaf-maple' | 'leaf-oak' | 'leaf' | 'leafy-green' | 'left-from-line' | 'left-long-to-line' | 'left-long' | 'left-right' | 'left-to-line' | 'left' | 'legal' | 'lemon' | 'less-than-equal' | 'less-than' | 'level-down-alt' | 'level-down' | 'level-up-alt' | 'level-up' | 'life-ring' | 'light-ceiling' | 'light-emergency-on' | 'light-emergency' | 'light-switch-off' | 'light-switch-on' | 'light-switch' | 'lightbulb-cfl-on' | 'lightbulb-cfl' | 'lightbulb-dollar' | 'lightbulb-exclamation-on' | 'lightbulb-exclamation' | 'lightbulb-gear' | 'lightbulb-on' | 'lightbulb-slash' | 'lightbulb' | 'lights-holiday' | 'line-chart' | 'line-columns' | 'line-height' | 'lines-leaning' | 'link-horizontal-slash' | 'link-horizontal' | 'link-simple-slash' | 'link-simple' | 'link-slash' | 'link' | 'lips' | 'lira-sign' | 'list-1-2' | 'list-alt' | 'list-check' | 'list-dots' | 'list-dropdown' | 'list-music' | 'list-numeric' | 'list-ol' | 'list-radio' | 'list-squares' | 'list-timeline' | 'list-tree' | 'list-ul' | 'list' | 'litecoin-sign' | 'loader' | 'lobster' | 'location-arrow' | 'location-check' | 'location-circle' | 'location-crosshairs-slash' | 'location-crosshairs' | 'location-dot-slash' | 'location-dot' | 'location-exclamation' | 'location-minus' | 'location-pen' | 'location-pin-lock' | 'location-pin-slash' | 'location-pin' | 'location-plus' | 'location-question' | 'location-slash' | 'location-smile' | 'location-xmark' | 'location' | 'lock-a' | 'lock-alt' | 'lock-hashtag' | 'lock-keyhole-open' | 'lock-keyhole' | 'lock-open-alt' | 'lock-open' | 'lock' | 'locust' | 'lollipop' | 'lollypop' | 'long-arrow-alt-down' | 'long-arrow-alt-left' | 'long-arrow-alt-right' | 'long-arrow-alt-up' | 'long-arrow-down' | 'long-arrow-left' | 'long-arrow-right' | 'long-arrow-up' | 'loveseat' | 'low-vision' | 'luchador-mask' | 'luchador' | 'luggage-cart' | 'lungs-virus' | 'lungs' | 'm' | 'mace' | 'magic-wand-sparkles' | 'magic' | 'magnet' | 'magnifying-glass-arrow-right' | 'magnifying-glass-chart' | 'magnifying-glass-dollar' | 'magnifying-glass-location' | 'magnifying-glass-minus' | 'magnifying-glass-plus' | 'magnifying-glass' | 'mail-bulk' | 'mail-forward' | 'mail-reply-all' | 'mail-reply' | 'mailbox-flag-up' | 'mailbox' | 'maki-roll' | 'makizushi' | 'male' | 'manat-sign' | 'mandolin' | 'mango' | 'manhole' | 'map-location-dot' | 'map-location' | 'map-marked-alt' | 'map-marked' | 'map-marker-alt-slash' | 'map-marker-alt' | 'map-marker-check' | 'map-marker-edit' | 'map-marker-exclamation' | 'map-marker-minus' | 'map-marker-plus' | 'map-marker-question' | 'map-marker-slash' | 'map-marker-smile' | 'map-marker-times' | 'map-marker-xmark' | 'map-marker' | 'map-pin' | 'map-signs' | 'map' | 'marker' | 'mars-and-venus-burst' | 'mars-and-venus' | 'mars-double' | 'mars-stroke-h' | 'mars-stroke-right' | 'mars-stroke-up' | 'mars-stroke-v' | 'mars-stroke' | 'mars' | 'martini-glass-citrus' | 'martini-glass-empty' | 'martini-glass' | 'mask-face' | 'mask-luchador' | 'mask-snorkel' | 'mask-ventilator' | 'mask' | 'masks-theater' | 'mattress-pillow' | 'maximize' | 'meat' | 'medal' | 'medkit' | 'megaphone' | 'meh-blank' | 'meh-rolling-eyes' | 'meh' | 'melon-slice' | 'melon' | 'memo-circle-check' | 'memo-circle-info' | 'memo-pad' | 'memo' | 'memory' | 'menorah' | 'mercury' | 'merge' | 'message-arrow-down' | 'message-arrow-up-right' | 'message-arrow-up' | 'message-bot' | 'message-captions' | 'message-check' | 'message-code' | 'message-dollar' | 'message-dots' | 'message-edit' | 'message-exclamation' | 'message-heart' | 'message-image' | 'message-lines' | 'message-medical' | 'message-middle-top' | 'message-middle' | 'message-minus' | 'message-music' | 'message-pen' | 'message-plus' | 'message-question' | 'message-quote' | 'message-slash' | 'message-smile' | 'message-sms' | 'message-text' | 'message-times' | 'message-xmark' | 'message' | 'messages-dollar' | 'messages-question' | 'messages' | 'messaging' | 'meteor' | 'meter-bolt' | 'meter-droplet' | 'meter-fire' | 'meter' | 'microchip-ai' | 'microchip' | 'microphone-alt-slash' | 'microphone-alt' | 'microphone-circle-alt' | 'microphone-circle' | 'microphone-lines-slash' | 'microphone-lines' | 'microphone-slash' | 'microphone-stand' | 'microphone' | 'microscope' | 'microwave' | 'mill-sign' | 'mind-share' | 'minimize' | 'minus-circle' | 'minus-hexagon' | 'minus-large' | 'minus-octagon' | 'minus-square' | 'minus' | 'mistletoe' | 'mitten' | 'mobile-alt' | 'mobile-android-alt' | 'mobile-android' | 'mobile-button' | 'mobile-iphone' | 'mobile-notch' | 'mobile-phone' | 'mobile-retro' | 'mobile-screen-button' | 'mobile-screen' | 'mobile-signal-out' | 'mobile-signal' | 'mobile' | 'money-bill-1-wave' | 'money-bill-1' | 'money-bill-alt' | 'money-bill-simple-wave' | 'money-bill-simple' | 'money-bill-transfer' | 'money-bill-trend-up' | 'money-bill-wave-alt' | 'money-bill-wave' | 'money-bill-wheat' | 'money-bill' | 'money-bills-alt' | 'money-bills-simple' | 'money-bills' | 'money-check-alt' | 'money-check-dollar-pen' | 'money-check-dollar' | 'money-check-edit-alt' | 'money-check-edit' | 'money-check-pen' | 'money-check' | 'money-from-bracket' | 'money-simple-from-bracket' | 'monitor-heart-rate' | 'monitor-waveform' | 'monkey' | 'monument' | 'moon-cloud' | 'moon-over-sun' | 'moon-stars' | 'moon' | 'moped' | 'mortar-board' | 'mortar-pestle' | 'mosque' | 'mosquito-net' | 'mosquito' | 'motorcycle' | 'mound' | 'mountain-city' | 'mountain-sun' | 'mountain' | 'mountains' | 'mouse-alt' | 'mouse-field' | 'mouse-pointer' | 'mouse' | 'mp3-player' | 'mug-hot' | 'mug-marshmallows' | 'mug-saucer' | 'mug-tea-saucer' | 'mug-tea' | 'mug' | 'multiply' | 'museum' | 'mushroom' | 'music-alt-slash' | 'music-alt' | 'music-note-slash' | 'music-note' | 'music-slash' | 'music' | 'mustache' | 'n' | 'naira-sign' | 'narwhal' | 'navicon' | 'nesting-dolls' | 'network-wired' | 'neuter' | 'newspaper' | 'nfc-lock' | 'nfc-magnifying-glass' | 'nfc-pen' | 'nfc-signal' | 'nfc-slash' | 'nfc-symbol' | 'nfc-trash' | 'nfc' | 'nigiri' | 'nose' | 'not-equal' | 'notdef' | 'note-medical' | 'note-sticky' | 'note' | 'notebook' | 'notes-medical' | 'notes' | 'o' | 'object-exclude' | 'object-group' | 'object-intersect' | 'object-subtract' | 'object-ungroup' | 'object-union' | 'objects-align-bottom' | 'objects-align-center-horizontal' | 'objects-align-center-vertical' | 'objects-align-left' | 'objects-align-right' | 'objects-align-top' | 'objects-column' | 'octagon-check' | 'octagon-divide' | 'octagon-exclamation' | 'octagon-minus' | 'octagon-plus' | 'octagon-xmark' | 'octagon' | 'oil-can-drip' | 'oil-can' | 'oil-temp' | 'oil-temperature' | 'oil-well' | 'olive-branch' | 'olive' | 'om' | 'omega' | 'onion' | 'option' | 'ornament' | 'otter' | 'outdent' | 'outlet' | 'oven' | 'overline' | 'p' | 'page-break' | 'page-caret-down' | 'page-caret-up' | 'page' | 'pager' | 'paint-brush-alt' | 'paint-brush-fine' | 'paint-brush' | 'paint-roller' | 'paintbrush-alt' | 'paintbrush-fine' | 'paintbrush-pencil' | 'paintbrush' | 'palette-boxes' | 'palette' | 'pallet-alt' | 'pallet-box' | 'pallet-boxes' | 'pallet' | 'pan-food' | 'pan-frying' | 'pancakes' | 'panel-ews' | 'panel-fire' | 'panorama' | 'paper-plane-alt' | 'paper-plane-top' | 'paper-plane' | 'paperclip-vertical' | 'paperclip' | 'parachute-box' | 'paragraph-left' | 'paragraph-rtl' | 'paragraph' | 'parentheses' | 'parenthesis' | 'parking-circle-slash' | 'parking-circle' | 'parking-slash' | 'parking' | 'party-back' | 'party-bell' | 'party-horn' | 'passport' | 'pastafarianism' | 'paste' | 'pause-circle' | 'pause' | 'paw-alt' | 'paw-claws' | 'paw-simple' | 'paw' | 'peace' | 'peach' | 'peanut' | 'peanuts' | 'peapod' | 'pear' | 'pedestal' | 'pegasus' | 'pen-alt-slash' | 'pen-alt' | 'pen-circle' | 'pen-clip-slash' | 'pen-clip' | 'pen-fancy-slash' | 'pen-fancy' | 'pen-field' | 'pen-line' | 'pen-nib-slash' | 'pen-nib' | 'pen-paintbrush' | 'pen-ruler' | 'pen-slash' | 'pen-square' | 'pen-swirl' | 'pen-to-square' | 'pen' | 'pencil-alt' | 'pencil-mechanical' | 'pencil-paintbrush' | 'pencil-ruler' | 'pencil-slash' | 'pencil-square' | 'pencil' | 'pennant' | 'people-arrows-left-right' | 'people-arrows' | 'people-carry-box' | 'people-carry' | 'people-dress-simple' | 'people-dress' | 'people-group' | 'people-line' | 'people-pants-simple' | 'people-pants' | 'people-pulling' | 'people-robbery' | 'people-roof' | 'people-simple' | 'people' | 'pepper-hot' | 'pepper' | 'percent' | 'percentage' | 'period' | 'person-arrow-down-to-line' | 'person-arrow-up-from-line' | 'person-biking-mountain' | 'person-biking' | 'person-booth' | 'person-breastfeeding' | 'person-burst' | 'person-cane' | 'person-carry-box' | 'person-carry' | 'person-chalkboard' | 'person-circle-check' | 'person-circle-exclamation' | 'person-circle-minus' | 'person-circle-plus' | 'person-circle-question' | 'person-circle-xmark' | 'person-digging' | 'person-dolly-empty' | 'person-dolly' | 'person-dots-from-line' | 'person-dress-burst' | 'person-dress-simple' | 'person-dress' | 'person-drowning' | 'person-falling-burst' | 'person-falling' | 'person-from-portal' | 'person-half-dress' | 'person-harassing' | 'person-hiking' | 'person-military-pointing' | 'person-military-rifle' | 'person-military-to-person' | 'person-pinball' | 'person-praying' | 'person-pregnant' | 'person-rays' | 'person-rifle' | 'person-running-fast' | 'person-running' | 'person-seat-reclined' | 'person-seat' | 'person-shelter' | 'person-sign' | 'person-simple' | 'person-skating' | 'person-ski-jumping' | 'person-ski-lift' | 'person-skiing-nordic' | 'person-skiing' | 'person-sledding' | 'person-snowboarding' | 'person-snowmobiling' | 'person-swimming' | 'person-through-window' | 'person-to-door' | 'person-to-portal' | 'person-walking-arrow-loop-left' | 'person-walking-arrow-right' | 'person-walking-dashed-line-arrow-right' | 'person-walking-luggage' | 'person-walking-with-cane' | 'person-walking' | 'person' | 'peseta-sign' | 'peso-sign' | 'phone-alt' | 'phone-arrow-down-left' | 'phone-arrow-down' | 'phone-arrow-right' | 'phone-arrow-up-right' | 'phone-arrow-up' | 'phone-circle-alt' | 'phone-circle-down' | 'phone-circle' | 'phone-flip' | 'phone-hangup' | 'phone-incoming' | 'phone-intercom' | 'phone-laptop' | 'phone-missed' | 'phone-office' | 'phone-outgoing' | 'phone-plus' | 'phone-rotary' | 'phone-slash' | 'phone-square-alt' | 'phone-square-down' | 'phone-square' | 'phone-volume' | 'phone-xmark' | 'phone' | 'photo-film-music' | 'photo-film' | 'photo-video' | 'pi' | 'piano-keyboard' | 'piano' | 'pickaxe' | 'pickleball' | 'pie-chart' | 'pie' | 'pig' | 'piggy-bank' | 'pills' | 'pinata' | 'pinball' | 'pineapple' | 'ping-pong-paddle-ball' | 'pipe-circle-check' | 'pipe-collar' | 'pipe-section' | 'pipe-smoking' | 'pipe-valve' | 'pipe' | 'pizza-slice' | 'pizza' | 'place-of-worship' | 'plane-alt' | 'plane-arrival' | 'plane-circle-check' | 'plane-circle-exclamation' | 'plane-circle-xmark' | 'plane-departure' | 'plane-engines' | 'plane-lock' | 'plane-prop' | 'plane-slash' | 'plane-tail' | 'plane-up-slash' | 'plane-up' | 'plane' | 'planet-moon' | 'planet-ringed' | 'plant-wilt' | 'plate-utensils' | 'plate-wheat' | 'play-circle' | 'play-pause' | 'play' | 'plug-circle-bolt' | 'plug-circle-check' | 'plug-circle-exclamation' | 'plug-circle-minus' | 'plug-circle-plus' | 'plug-circle-xmark' | 'plug' | 'plus-circle' | 'plus-hexagon' | 'plus-large' | 'plus-minus' | 'plus-octagon' | 'plus-square' | 'plus' | 'podcast' | 'podium-star' | 'podium' | 'police-box' | 'poll-h' | 'poll-people' | 'poll' | 'pompebled' | 'poo-bolt' | 'poo-storm' | 'poo' | 'pool-8-ball' | 'poop' | 'popcorn' | 'popsicle' | 'portal-enter' | 'portal-exit' | 'portrait' | 'pot-food' | 'potato' | 'pound-sign' | 'power-off' | 'pray' | 'praying-hands' | 'prescription-bottle-alt' | 'prescription-bottle-medical' | 'prescription-bottle-pill' | 'prescription-bottle' | 'prescription' | 'presentation-screen' | 'presentation' | 'pretzel' | 'print-magnifying-glass' | 'print-search' | 'print-slash' | 'print' | 'pro' | 'procedures' | 'project-diagram' | 'projector' | 'pump-medical' | 'pump-soap' | 'pump' | 'pumpkin' | 'puzzle-piece-alt' | 'puzzle-piece-simple' | 'puzzle-piece' | 'puzzle' | 'q' | 'qrcode' | 'question-circle' | 'question-square' | 'question' | 'quidditch-broom-ball' | 'quidditch' | 'quote-left-alt' | 'quote-left' | 'quote-right-alt' | 'quote-right' | 'quotes' | 'quran' | 'r' | 'rabbit-fast' | 'rabbit-running' | 'rabbit' | 'racquet' | 'radar' | 'radiation-alt' | 'radiation' | 'radio-alt' | 'radio-tuner' | 'radio' | 'rainbow' | 'raindrops' | 'ram' | 'ramp-loading' | 'random' | 'ranking-star' | 'raygun' | 'receipt' | 'record-vinyl' | 'rectangle-ad' | 'rectangle-barcode' | 'rectangle-code' | 'rectangle-hd' | 'rectangle-history-circle-plus' | 'rectangle-history-circle-user' | 'rectangle-history' | 'rectangle-landscape' | 'rectangle-list' | 'rectangle-portrait' | 'rectangle-pro' | 'rectangle-sd' | 'rectangle-terminal' | 'rectangle-times' | 'rectangle-vertical-history' | 'rectangle-vertical' | 'rectangle-wide' | 'rectangle-xmark' | 'rectangle' | 'rectangles-mixed' | 'recycle' | 'redo-alt' | 'redo' | 'reel' | 'refresh' | 'refrigerator' | 'registered' | 'remove-format' | 'remove' | 'reorder' | 'repeat-1-alt' | 'repeat-1' | 'repeat-alt' | 'repeat' | 'reply-all' | 'reply-clock' | 'reply-time' | 'reply' | 'republican' | 'restroom-simple' | 'restroom' | 'retweet-alt' | 'retweet' | 'rhombus' | 'ribbon' | 'right-from-bracket' | 'right-from-line' | 'right-left-large' | 'right-left' | 'right-long-to-line' | 'right-long' | 'right-to-bracket' | 'right-to-line' | 'right' | 'ring-diamond' | 'ring' | 'rings-wedding' | 'rmb' | 'road-barrier' | 'road-bridge' | 'road-circle-check' | 'road-circle-exclamation' | 'road-circle-xmark' | 'road-lock' | 'road-spikes' | 'road' | 'robot-astromech' | 'robot' | 'rocket-launch' | 'rocket' | 'rod-asclepius' | 'rod-snake' | 'roller-coaster' | 'rotate-back' | 'rotate-backward' | 'rotate-exclamation' | 'rotate-forward' | 'rotate-left' | 'rotate-right' | 'rotate' | 'rouble' | 'route-highway' | 'route-interstate' | 'route' | 'router' | 'rows' | 'rss-square' | 'rss' | 'rub' | 'ruble-sign' | 'ruble' | 'rug' | 'rugby-ball' | 'ruler-combined' | 'ruler-horizontal' | 'ruler-triangle' | 'ruler-vertical' | 'ruler' | 'running' | 'rupee-sign' | 'rupee' | 'rupiah-sign' | 'rv' | 's' | 'sack-dollar' | 'sack-xmark' | 'sack' | 'sad-cry' | 'sad-tear' | 'sailboat' | 'salad' | 'salt-shaker' | 'sandwich' | 'satellite-dish' | 'satellite' | 'sausage' | 'save-circle-arrow-right' | 'save-circle-xmark' | 'save-times' | 'save' | 'sax-hot' | 'saxophone-fire' | 'saxophone' | 'scale-balanced' | 'scale-unbalanced-flip' | 'scale-unbalanced' | 'scalpel-line-dashed' | 'scalpel-path' | 'scalpel' | 'scanner-gun' | 'scanner-image' | 'scanner-keyboard' | 'scanner-touchscreen' | 'scanner' | 'scarecrow' | 'scarf' | 'school-circle-check' | 'school-circle-exclamation' | 'school-circle-xmark' | 'school-flag' | 'school-lock' | 'school' | 'scissors' | 'screen-users' | 'screencast' | 'screenshot' | 'screwdriver-wrench' | 'screwdriver' | 'scribble' | 'scroll-old' | 'scroll-ribbon' | 'scroll-torah' | 'scroll' | 'scrubber' | 'scythe' | 'sd-card' | 'sd-cards' | 'seal-exclamation' | 'seal-question' | 'seal' | 'search-dollar' | 'search-location' | 'search-minus' | 'search-plus' | 'search' | 'seat-airline' | 'section' | 'seedling' | 'semicolon' | 'send-back' | 'send-backward' | 'send' | 'sensor-alert' | 'sensor-cloud' | 'sensor-fire' | 'sensor-on' | 'sensor-smoke' | 'sensor-triangle-exclamation' | 'sensor' | 'server' | 'shapes' | 'share-all' | 'share-alt-square' | 'share-alt' | 'share-from-square' | 'share-nodes' | 'share-square' | 'share' | 'sheep' | 'sheet-plastic' | 'shekel-sign' | 'shekel' | 'shelves-empty' | 'shelves' | 'sheqel-sign' | 'sheqel' | 'shield-alt' | 'shield-blank' | 'shield-cat' | 'shield-check' | 'shield-cross' | 'shield-dog' | 'shield-exclamation' | 'shield-halved' | 'shield-heart' | 'shield-keyhole' | 'shield-minus' | 'shield-plus' | 'shield-quartered' | 'shield-slash' | 'shield-times' | 'shield-virus' | 'shield-xmark' | 'shield' | 'ship' | 'shipping-fast' | 'shipping-timed' | 'shirt-long-sleeve' | 'shirt-running' | 'shirt-tank-top' | 'shirt' | 'shish-kebab' | 'shoe-prints' | 'shop-lock' | 'shop-slash' | 'shop' | 'shopping-bag' | 'shopping-basket-alt' | 'shopping-basket' | 'shopping-cart' | 'shortcake' | 'shovel-snow' | 'shovel' | 'shower-alt' | 'shower-down' | 'shower' | 'shredder' | 'shrimp' | 'shuffle' | 'shutters' | 'shuttle-space' | 'shuttle-van' | 'shuttlecock' | 'sickle' | 'sidebar-flip' | 'sidebar' | 'sigma' | 'sign-hanging' | 'sign-in-alt' | 'sign-in' | 'sign-language' | 'sign-out-alt' | 'sign-out' | 'sign' | 'signal-1' | 'signal-2' | 'signal-3' | 'signal-4' | 'signal-5' | 'signal-alt-1' | 'signal-alt-2' | 'signal-alt-3' | 'signal-alt-4' | 'signal-alt-slash' | 'signal-alt' | 'signal-bars-fair' | 'signal-bars-good' | 'signal-bars-slash' | 'signal-bars-strong' | 'signal-bars-weak' | 'signal-bars' | 'signal-fair' | 'signal-good' | 'signal-perfect' | 'signal-slash' | 'signal-stream-slash' | 'signal-stream' | 'signal-strong' | 'signal-weak' | 'signal' | 'signature-lock' | 'signature-slash' | 'signature' | 'signing' | 'signs-post' | 'sim-card' | 'sim-cards' | 'sink' | 'siren-on' | 'siren' | 'sitemap' | 'skating' | 'skeleton-ribs' | 'skeleton' | 'ski-boot-ski' | 'ski-boot' | 'ski-jump' | 'ski-lift' | 'skiing-nordic' | 'skiing' | 'skull-cow' | 'skull-crossbones' | 'skull' | 'slash-back' | 'slash-forward' | 'slash' | 'sledding' | 'sleigh' | 'slider' | 'sliders-h-square' | 'sliders-h' | 'sliders-simple' | 'sliders-up' | 'sliders-v-square' | 'sliders-v' | 'sliders' | 'slot-machine' | 'smile-beam' | 'smile-plus' | 'smile-wink' | 'smile' | 'smog' | 'smoke' | 'smoking-ban' | 'smoking' | 'sms' | 'snake' | 'snooze' | 'snow-blowing' | 'snowboarding' | 'snowflake-droplets' | 'snowflake' | 'snowflakes' | 'snowman-head' | 'snowman' | 'snowmobile' | 'snowplow' | 'soap' | 'soccer-ball' | 'socks' | 'soft-serve' | 'solar-panel' | 'solar-system' | 'sort-alpha-asc' | 'sort-alpha-desc' | 'sort-alpha-down-alt' | 'sort-alpha-down' | 'sort-alpha-up-alt' | 'sort-alpha-up' | 'sort-alt' | 'sort-amount-asc' | 'sort-amount-desc' | 'sort-amount-down-alt' | 'sort-amount-down' | 'sort-amount-up-alt' | 'sort-amount-up' | 'sort-asc' | 'sort-circle-down' | 'sort-circle-up' | 'sort-circle' | 'sort-desc' | 'sort-down' | 'sort-numeric-asc' | 'sort-numeric-desc' | 'sort-numeric-down-alt' | 'sort-numeric-down' | 'sort-numeric-up-alt' | 'sort-numeric-up' | 'sort-shapes-down-alt' | 'sort-shapes-down' | 'sort-shapes-up-alt' | 'sort-shapes-up' | 'sort-size-down-alt' | 'sort-size-down' | 'sort-size-up-alt' | 'sort-size-up' | 'sort-up-down' | 'sort-up' | 'sort' | 'soup' | 'spa' | 'space-shuttle' | 'space-station-moon-alt' | 'space-station-moon-construction' | 'space-station-moon' | 'spade' | 'spaghetti-monster-flying' | 'sparkle' | 'sparkles' | 'speaker' | 'speakers' | 'spell-check' | 'spider-black-widow' | 'spider-web' | 'spider' | 'spinner-third' | 'spinner' | 'split' | 'splotch' | 'spoon' | 'sportsball' | 'spray-can-sparkles' | 'spray-can' | 'sprinkler-ceiling' | 'sprinkler' | 'sprout' | 'square-0' | 'square-1' | 'square-2' | 'square-3' | 'square-4' | 'square-5' | 'square-6' | 'square-7' | 'square-8' | 'square-9' | 'square-a-lock' | 'square-a' | 'square-ampersand' | 'square-arrow-down-left' | 'square-arrow-down-right' | 'square-arrow-down' | 'square-arrow-left' | 'square-arrow-right' | 'square-arrow-up-left' | 'square-arrow-up-right' | 'square-arrow-up' | 'square-b' | 'square-bolt' | 'square-c' | 'square-caret-down' | 'square-caret-left' | 'square-caret-right' | 'square-caret-up' | 'square-check' | 'square-chevron-down' | 'square-chevron-left' | 'square-chevron-right' | 'square-chevron-up' | 'square-code' | 'square-d' | 'square-dashed-circle-plus' | 'square-dashed' | 'square-divide' | 'square-dollar' | 'square-down-left' | 'square-down-right' | 'square-down' | 'square-e' | 'square-ellipsis-vertical' | 'square-ellipsis' | 'square-envelope' | 'square-exclamation' | 'square-f' | 'square-fragile' | 'square-full' | 'square-g' | 'square-h' | 'square-heart' | 'square-i' | 'square-info' | 'square-j' | 'square-k' | 'square-kanban' | 'square-l' | 'square-left' | 'square-list' | 'square-m' | 'square-minus' | 'square-n' | 'square-nfi' | 'square-o' | 'square-p' | 'square-parking-slash' | 'square-parking' | 'square-pen' | 'square-person-confined' | 'square-phone-flip' | 'square-phone-hangup' | 'square-phone' | 'square-plus' | 'square-poll-horizontal' | 'square-poll-vertical' | 'square-q' | 'square-quarters' | 'square-question' | 'square-quote' | 'square-r' | 'square-right' | 'square-ring' | 'square-root-alt' | 'square-root-variable' | 'square-root' | 'square-rss' | 'square-s' | 'square-share-nodes' | 'square-sliders-vertical' | 'square-sliders' | 'square-small' | 'square-star' | 'square-t' | 'square-terminal' | 'square-this-way-up' | 'square-u' | 'square-up-left' | 'square-up-right' | 'square-up' | 'square-user' | 'square-v' | 'square-virus' | 'square-w' | 'square-wine-glass-crack' | 'square-x' | 'square-xmark' | 'square-y' | 'square-z' | 'square' | 'squid' | 'squirrel' | 'staff-aesculapius' | 'staff-snake' | 'staff' | 'stairs' | 'stamp' | 'standard-definition' | 'stapler' | 'star-and-crescent' | 'star-christmas' | 'star-circle' | 'star-exclamation' | 'star-half-alt' | 'star-half-stroke' | 'star-half' | 'star-of-david' | 'star-of-life' | 'star-sharp-half-alt' | 'star-sharp-half-stroke' | 'star-sharp-half' | 'star-sharp' | 'star-shooting' | 'star' | 'starfighter-alt-advanced' | 'starfighter-alt' | 'starfighter-twin-ion-engine-advanced' | 'starfighter-twin-ion-engine' | 'starfighter' | 'stars' | 'starship-freighter' | 'starship' | 'steak' | 'steering-wheel' | 'step-backward' | 'step-forward' | 'sterling-sign' | 'stethoscope' | 'sticky-note' | 'stocking' | 'stomach' | 'stop-circle' | 'stop' | 'stopwatch-20' | 'stopwatch' | 'store-alt-slash' | 'store-alt' | 'store-lock' | 'store-slash' | 'store' | 'strawberry' | 'stream' | 'street-view' | 'stretcher' | 'strikethrough' | 'stroopwafel' | 'subscript' | 'subtract' | 'subway-tunnel' | 'subway' | 'suitcase-medical' | 'suitcase-rolling' | 'suitcase' | 'sun-alt' | 'sun-bright' | 'sun-cloud' | 'sun-dust' | 'sun-haze' | 'sun-plant-wilt' | 'sun' | 'sunglasses' | 'sunrise' | 'sunset' | 'superscript' | 'surprise' | 'sushi-roll' | 'sushi' | 'swatchbook' | 'swimmer' | 'swimming-pool' | 'sword-laser-alt' | 'sword-laser' | 'sword' | 'swords-laser' | 'swords' | 'symbols' | 'synagogue' | 'sync-alt' | 'sync' | 'syringe' | 't-shirt' | 't' | 'table-cells-large' | 'table-cells' | 'table-columns' | 'table-layout' | 'table-list' | 'table-picnic' | 'table-pivot' | 'table-rows' | 'table-tennis-paddle-ball' | 'table-tennis' | 'table-tree' | 'table' | 'tablet-alt' | 'tablet-android-alt' | 'tablet-android' | 'tablet-button' | 'tablet-rugged' | 'tablet-screen-button' | 'tablet-screen' | 'tablet' | 'tablets' | 'tachograph-digital' | 'tachometer-alt-average' | 'tachometer-alt-fast' | 'tachometer-alt-fastest' | 'tachometer-alt-slow' | 'tachometer-alt-slowest' | 'tachometer-alt' | 'tachometer-average' | 'tachometer-fast' | 'tachometer-fastest' | 'tachometer-slow' | 'tachometer-slowest' | 'tachometer' | 'taco' | 'tag' | 'tags' | 'tally-1' | 'tally-2' | 'tally-3' | 'tally-4' | 'tally-5' | 'tally' | 'tamale' | 'tanakh' | 'tank-water' | 'tape' | 'tarp-droplet' | 'tarp' | 'tasks-alt' | 'tasks' | 'taxi-bus' | 'taxi' | 'teddy-bear' | 'teeth-open' | 'teeth' | 'telescope' | 'teletype-answer' | 'teletype' | 'television' | 'temperature-0' | 'temperature-1' | 'temperature-2' | 'temperature-3' | 'temperature-4' | 'temperature-arrow-down' | 'temperature-arrow-up' | 'temperature-down' | 'temperature-empty' | 'temperature-frigid' | 'temperature-full' | 'temperature-half' | 'temperature-high' | 'temperature-hot' | 'temperature-list' | 'temperature-low' | 'temperature-quarter' | 'temperature-snow' | 'temperature-sun' | 'temperature-three-quarters' | 'temperature-up' | 'tenge-sign' | 'tenge' | 'tennis-ball' | 'tent-arrow-down-to-line' | 'tent-arrow-left-right' | 'tent-arrow-turn-left' | 'tent-arrows-down' | 'tent' | 'tents' | 'terminal' | 'text-height' | 'text-size' | 'text-slash' | 'text-width' | 'text' | 'th-large' | 'th-list' | 'th' | 'theater-masks' | 'thermometer-0' | 'thermometer-1' | 'thermometer-2' | 'thermometer-3' | 'thermometer-4' | 'thermometer-empty' | 'thermometer-full' | 'thermometer-half' | 'thermometer-quarter' | 'thermometer-three-quarters' | 'thermometer' | 'theta' | 'thought-bubble' | 'thumb-tack' | 'thumbs-down' | 'thumbs-up' | 'thumbtack' | 'thunderstorm-moon' | 'thunderstorm-sun' | 'thunderstorm' | 'tick' | 'ticket-airline' | 'ticket-alt' | 'ticket-simple' | 'ticket' | 'tickets-airline' | 'tilde' | 'timeline-arrow' | 'timeline' | 'timer' | 'times-circle' | 'times-hexagon' | 'times-octagon' | 'times-rectangle' | 'times-square' | 'times-to-slot' | 'times' | 'tint-slash' | 'tint' | 'tire-flat' | 'tire-pressure-warning' | 'tire-rugged' | 'tire' | 'tired' | 'toggle-large-off' | 'toggle-large-on' | 'toggle-off' | 'toggle-on' | 'toilet-paper-alt' | 'toilet-paper-blank-under' | 'toilet-paper-blank' | 'toilet-paper-check' | 'toilet-paper-reverse-alt' | 'toilet-paper-reverse-slash' | 'toilet-paper-reverse' | 'toilet-paper-slash' | 'toilet-paper-under-slash' | 'toilet-paper-under' | 'toilet-paper-xmark' | 'toilet-paper' | 'toilet-portable' | 'toilet' | 'toilets-portable' | 'tomato' | 'tombstone-alt' | 'tombstone-blank' | 'tombstone' | 'toolbox' | 'tools' | 'tooth' | 'toothbrush' | 'torah' | 'torii-gate' | 'tornado' | 'tower-broadcast' | 'tower-cell' | 'tower-control' | 'tower-observation' | 'tractor' | 'trademark' | 'traffic-cone' | 'traffic-light-go' | 'traffic-light-slow' | 'traffic-light-stop' | 'traffic-light' | 'trailer' | 'train-subway-tunnel' | 'train-subway' | 'train-track' | 'train-tram' | 'train-tunnel' | 'train' | 'tram' | 'transformer-bolt' | 'transgender-alt' | 'transgender' | 'transporter-1' | 'transporter-2' | 'transporter-3' | 'transporter-4' | 'transporter-5' | 'transporter-6' | 'transporter-7' | 'transporter-empty' | 'transporter' | 'trash-alt-slash' | 'trash-alt' | 'trash-arrow-turn-left' | 'trash-arrow-up' | 'trash-can-arrow-turn-left' | 'trash-can-arrow-up' | 'trash-can-check' | 'trash-can-clock' | 'trash-can-list' | 'trash-can-plus' | 'trash-can-slash' | 'trash-can-undo' | 'trash-can-xmark' | 'trash-can' | 'trash-check' | 'trash-circle' | 'trash-clock' | 'trash-list' | 'trash-plus' | 'trash-restore-alt' | 'trash-restore' | 'trash-slash' | 'trash-undo-alt' | 'trash-undo' | 'trash-xmark' | 'trash' | 'treasure-chest' | 'tree-alt' | 'tree-christmas' | 'tree-city' | 'tree-deciduous' | 'tree-decorated' | 'tree-large' | 'tree-palm' | 'tree' | 'trees' | 'trian-balbot' | 'triangle-circle-square' | 'triangle-exclamation' | 'triangle-instrument' | 'triangle-music' | 'triangle-person-digging' | 'triangle' | 'tricycle-adult' | 'tricycle' | 'trillium' | 'trophy-alt' | 'trophy-star' | 'trophy' | 'trowel-bricks' | 'trowel' | 'truck-arrow-right' | 'truck-bolt' | 'truck-clock' | 'truck-container-empty' | 'truck-container' | 'truck-couch' | 'truck-droplet' | 'truck-fast' | 'truck-field-un' | 'truck-field' | 'truck-flatbed' | 'truck-front' | 'truck-loading' | 'truck-medical' | 'truck-monster' | 'truck-moving' | 'truck-pickup' | 'truck-plane' | 'truck-plow' | 'truck-ramp-box' | 'truck-ramp-couch' | 'truck-ramp' | 'truck-tow' | 'truck' | 'trumpet' | 'try' | 'tshirt' | 'tty-answer' | 'tty' | 'tugrik-sign' | 'turkey' | 'turkish-lira-sign' | 'turkish-lira' | 'turn-down-left' | 'turn-down-right' | 'turn-down' | 'turn-up' | 'turntable' | 'turtle' | 'tv-alt' | 'tv-music' | 'tv-retro' | 'tv' | 'typewriter' | 'u' | 'ufo-beam' | 'ufo' | 'umbrella-alt' | 'umbrella-beach' | 'umbrella-simple' | 'umbrella' | 'underline' | 'undo-alt' | 'undo' | 'unicorn' | 'uniform-martial-arts' | 'union' | 'universal-access' | 'university' | 'unlink' | 'unlock-alt' | 'unlock-keyhole' | 'unlock' | 'unsorted' | 'up-down-left-right' | 'up-down' | 'up-from-bracket' | 'up-from-dotted-line' | 'up-from-line' | 'up-left' | 'up-long' | 'up-right-and-down-left-from-center' | 'up-right-from-square' | 'up-right' | 'up-to-dotted-line' | 'up-to-line' | 'up' | 'upload' | 'usb-drive' | 'usd-circle' | 'usd-square' | 'usd' | 'user-alien' | 'user-alt-slash' | 'user-alt' | 'user-astronaut' | 'user-bounty-hunter' | 'user-chart' | 'user-check' | 'user-chef' | 'user-circle' | 'user-clock' | 'user-cog' | 'user-construction' | 'user-cowboy' | 'user-crown' | 'user-doctor-hair-long' | 'user-doctor-hair' | 'user-doctor-message' | 'user-doctor' | 'user-edit' | 'user-friends' | 'user-gear' | 'user-graduate' | 'user-group-crown' | 'user-group-simple' | 'user-group' | 'user-hair-buns' | 'user-hair-long' | 'user-hair-mullet' | 'user-hair' | 'user-hard-hat' | 'user-headset' | 'user-helmet-safety' | 'user-injured' | 'user-large-slash' | 'user-large' | 'user-lock' | 'user-magnifying-glass' | 'user-md-chat' | 'user-md' | 'user-minus' | 'user-music' | 'user-ninja' | 'user-nurse-hair-long' | 'user-nurse-hair' | 'user-nurse' | 'user-pen' | 'user-pilot-tie' | 'user-pilot' | 'user-plus' | 'user-police-tie' | 'user-police' | 'user-robot-xmarks' | 'user-robot' | 'user-secret' | 'user-shakespeare' | 'user-shield' | 'user-slash' | 'user-tag' | 'user-tie-hair-long' | 'user-tie-hair' | 'user-tie' | 'user-times' | 'user-unlock' | 'user-visor' | 'user-vneck-hair-long' | 'user-vneck-hair' | 'user-vneck' | 'user-xmark' | 'user' | 'users-between-lines' | 'users-class' | 'users-cog' | 'users-crown' | 'users-gear' | 'users-line' | 'users-medical' | 'users-rays' | 'users-rectangle' | 'users-slash' | 'users-viewfinder' | 'users' | 'utensil-fork' | 'utensil-knife' | 'utensil-spoon' | 'utensils-alt' | 'utensils-slash' | 'utensils' | 'utility-pole-double' | 'utility-pole' | 'v' | 'vacuum-robot' | 'vacuum' | 'value-absolute' | 'van-shuttle' | 'vault' | 'vcard' | 'vector-circle' | 'vector-polygon' | 'vector-square' | 'vent-damper' | 'venus-double' | 'venus-mars' | 'venus' | 'vest-patches' | 'vest' | 'vhs' | 'vial-circle-check' | 'vial-virus' | 'vial' | 'vials' | 'video-arrow-down-left' | 'video-arrow-up-right' | 'video-camera' | 'video-circle' | 'video-handheld' | 'video-plus' | 'video-slash' | 'video' | 'vihara' | 'violin' | 'virus-covid-slash' | 'virus-covid' | 'virus-slash' | 'virus' | 'viruses' | 'voicemail' | 'volcano' | 'volleyball-ball' | 'volleyball' | 'volume-control-phone' | 'volume-down' | 'volume-high' | 'volume-low' | 'volume-medium' | 'volume-mute' | 'volume-off' | 'volume-slash' | 'volume-times' | 'volume-up' | 'volume-xmark' | 'volume' | 'vote-nay' | 'vote-yea' | 'vr-cardboard' | 'w' | 'waffle' | 'wagon-covered' | 'walker' | 'walkie-talkie' | 'walking' | 'wall-brick' | 'wallet' | 'wand-magic-sparkles' | 'wand-magic' | 'wand-sparkles' | 'wand' | 'warehouse-alt' | 'warehouse-full' | 'warehouse' | 'warning' | 'washer' | 'washing-machine' | 'watch-apple' | 'watch-calculator' | 'watch-fitness' | 'watch-smart' | 'watch' | 'water-arrow-down' | 'water-arrow-up' | 'water-ladder' | 'water-lower' | 'water-rise' | 'water' | 'watermelon-slice' | 'wave-pulse' | 'wave-sine' | 'wave-square' | 'wave-triangle' | 'waveform-circle' | 'waveform-lines' | 'waveform-path' | 'waveform' | 'webcam-slash' | 'webcam' | 'webhook' | 'weight-hanging' | 'weight-scale' | 'weight' | 'whale' | 'wheat-alt' | 'wheat-awn-circle-exclamation' | 'wheat-awn-slash' | 'wheat-awn' | 'wheat-slash' | 'wheat' | 'wheelchair-alt' | 'wheelchair-move' | 'wheelchair' | 'whiskey-glass-ice' | 'whiskey-glass' | 'whistle' | 'wifi-1' | 'wifi-2' | 'wifi-3' | 'wifi-exclamation' | 'wifi-fair' | 'wifi-slash' | 'wifi-strong' | 'wifi-weak' | 'wifi' | 'wind-circle-exclamation' | 'wind-turbine' | 'wind-warning' | 'wind' | 'window-alt' | 'window-close' | 'window-flip' | 'window-frame-open' | 'window-frame' | 'window-maximize' | 'window-minimize' | 'window-restore' | 'window' | 'windsock' | 'wine-bottle' | 'wine-glass-alt' | 'wine-glass-crack' | 'wine-glass-empty' | 'wine-glass' | 'won-sign' | 'won' | 'worm' | 'wreath-laurel' | 'wreath' | 'wrench-simple' | 'wrench' | 'x-ray' | 'x' | 'xmark-circle' | 'xmark-hexagon' | 'xmark-large' | 'xmark-octagon' | 'xmark-square' | 'xmark-to-slot' | 'xmark' | 'xmarks-lines' | 'y' | 'yen-sign' | 'yen' | 'yin-yang' | 'z' | 'zap' | 'zzz';
|
|
1569
|
-
export {};
|