sanity-plugin-media 2.2.2 → 2.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +21 -16
- package/lib/index.esm.js +0 -1
- package/lib/index.esm.js.map +0 -1
- package/lib/index.js +0 -1
- package/lib/index.js.map +0 -1
- package/lib/src/index.d.ts +0 -8
package/lib/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../node_modules/@sanity/icons/dist/index.js","../src/hooks/useKeyPress.ts","../src/config/searchFacets.ts","../src/constants.ts","../src/contexts/AssetSourceDispatchContext.tsx","../src/hooks/useVersionedClient.ts","../src/config/orders.ts","../src/operators/debugThrottle.ts","../src/utils/constructFilter.ts","../src/operators/checkTagName.ts","../src/utils/getTagSelectOptions.ts","../src/modules/assets/actions.ts","../src/modules/dialog/actions.ts","../src/modules/tags/index.ts","../src/modules/search/index.ts","../src/modules/uploads/actions.ts","../src/modules/assets/index.ts","../src/styled/GlobalStyles/index.tsx","../src/hooks/useTypedSelector.ts","../src/modules/dialog/index.ts","../src/components/ButtonViewGroup/index.tsx","../src/hooks/usePortalPopoverProps.ts","../src/components/OrderSelect/index.tsx","../src/components/Progress/index.tsx","../node_modules/@sanity/color/dist/index.js","../src/utils/getSchemeColor.ts","../src/components/SearchFacet/index.tsx","../src/components/TextInputNumber/index.tsx","../src/components/SearchFacetNumber/index.tsx","../src/components/SearchFacetSelect/index.tsx","../src/components/SearchFacetString/index.tsx","../src/styled/react-select/single.tsx","../src/components/SearchFacetTags/index.tsx","../src/components/SearchFacets/index.tsx","../src/components/SearchFacetsControl/index.tsx","../src/components/TagIcon/index.tsx","../src/components/TextInputSearch/index.tsx","../src/components/Controls/index.tsx","../src/modules/debug/index.ts","../src/components/DebugControls/index.tsx","../src/formSchema/index.ts","../src/utils/getUniqueDocuments.ts","../src/utils/imageDprUrl.ts","../src/utils/sanitizeFormData.ts","../src/utils/typeGuards.ts","../src/utils/getAssetResolution.ts","../src/components/ButtonAssetCopy/index.tsx","../src/components/AssetMetadata/index.tsx","../src/components/Dialog/index.tsx","../src/components/DocumentList/index.tsx","../src/components/FileIcon/index.tsx","../src/components/FileAssetPreview/index.tsx","../src/styled/react-select/creatable.tsx","../src/components/FormFieldInputLabel/index.tsx","../src/components/FormFieldInputTags/index.tsx","../src/components/FormFieldInputText/index.tsx","../src/components/FormFieldInputTextarea/index.tsx","../src/components/FormSubmitButton/index.tsx","../src/components/Image/index.tsx","../src/components/DialogAssetEdit/index.tsx","../src/components/DialogConfirm/index.tsx","../src/components/DialogSearchFacets/index.tsx","../src/components/DialogTagCreate/index.tsx","../src/components/DialogTagEdit/index.tsx","../src/components/Tag/index.tsx","../src/components/TagsVirtualized/index.tsx","../src/components/TagViewHeader/index.tsx","../src/components/TagView/index.tsx","../src/components/DialogTags/index.tsx","../src/components/Dialogs/index.tsx","../src/contexts/DropzoneDispatchContext.tsx","../src/components/Header/index.tsx","../src/modules/selectors.ts","../src/components/CardAsset/index.tsx","../src/utils/generatePreviewBlobUrl.ts","../src/utils/withMaxConcurrency.ts","../src/utils/uploadSanityAsset.ts","../src/modules/uploads/index.ts","../src/components/CardUpload/index.tsx","../src/components/AssetGridVirtualized/index.tsx","../src/components/TableHeaderItem/index.tsx","../src/components/TableHeader/index.tsx","../src/components/TableRowAsset/index.tsx","../src/components/TableRowUpload/index.tsx","../src/components/AssetTableVirtualized/index.tsx","../src/components/Items/index.tsx","../src/hooks/useBreakpointIndex.ts","../src/components/Notifications/index.tsx","../src/components/PickedBar/index.tsx","../src/modules/selected/index.ts","../src/modules/notifications/index.ts","../src/modules/index.ts","../src/utils/getDocumentAssetIds.ts","../src/components/ReduxProvider/index.tsx","../src/components/TagsPanel/index.tsx","../src/components/UploadDropzone/index.tsx","../src/components/Browser/index.tsx","../src/components/FormBuilderTool/index.tsx","../src/schemas/tag.ts","../src/index.ts","../src/components/Tool/index.tsx"],"sourcesContent":["import { forwardRef, createElement } from 'react';\nimport { jsx, jsxs } from 'react/jsx-runtime';\nconst AccessDeniedIcon = forwardRef(function AccessDeniedIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"access-denied\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M18.1568 6.84315C21.281 9.96734 21.281 15.0327 18.1568 18.1569C15.0326 21.281 9.96733 21.281 6.84313 18.1569C3.71894 15.0327 3.71894 9.96734 6.84313 6.84315C9.96733 3.71895 15.0326 3.71895 18.1568 6.84315ZM18.1568 6.84315L6.844 18.156\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst ActivityIcon = forwardRef(function ActivityIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"activity\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M21 15H19L15.5 7L11 18L8 12L6 15H4\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst AddCircleIcon = forwardRef(function AddCircleIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"add-circle\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M8 12.4H17M12.5 8V17M20.5 12.5C20.5 16.9183 16.9183 20.5 12.5 20.5C8.08172 20.5 4.5 16.9183 4.5 12.5C4.5 8.08172 8.08172 4.5 12.5 4.5C16.9183 4.5 20.5 8.08172 20.5 12.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst AddIcon = forwardRef(function AddIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"add\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M12.5 5V20M5 12.5H20\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst ApiIcon = forwardRef(function ApiIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"api\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M5.93047 13.2107L6.66782 10.3728H6.73089L7.45854 13.2107H5.93047ZM8.17164 16H9.66089L7.56041 9H5.93047L3.82999 16H5.20767L5.65396 14.2876H7.73505L8.17164 16Z\",\n fill: \"currentColor\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M10.5389 9V16H11.9166V13.7782H13.0323C14.541 13.7782 15.5015 12.8517 15.5015 11.3964C15.5015 9.92654 14.5701 9 13.1003 9H10.5389ZM11.9166 10.1303H12.751C13.6533 10.1303 14.1044 10.5475 14.1044 11.3867C14.1044 12.2308 13.6533 12.6431 12.751 12.6431H11.9166V10.1303Z\",\n fill: \"currentColor\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M21.1675 16V14.8164H19.717V10.1836H21.1675V9H16.8889V10.1836H18.3393V14.8164H16.8889V16H21.1675Z\",\n fill: \"currentColor\"\n })]\n });\n});\nconst ArchiveIcon = forwardRef(function ArchiveIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"archive\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M12.5 10.5V17M20.5 7.5V20.5H4.5V7.5L7.5 4.5H17.5L20.5 7.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M4.5 7.5H20.5M16 14L12.5 17.5L9 14\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst ArrowDownIcon = forwardRef(function ArrowDownIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"arrow-down\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M12.5 19.5V5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M18 14L12.5 19.5L7 14\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst ArrowLeftIcon = forwardRef(function ArrowLeftIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"arrow-left\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M5.5 12.5H20\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M11 18L5.5 12.5L11 7\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst ArrowRightIcon = forwardRef(function ArrowRightIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"arrow-right\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M19.5 12.5H5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M14 7L19.5 12.5L14 18\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst ArrowTopRightIcon = forwardRef(function ArrowTopRightIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"arrow-top-right\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M16.5 8.5L7 18\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M9 8.5H16.5V16\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst ArrowUpIcon = forwardRef(function ArrowUpIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"arrow-up\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M7 11L12.5 5.5L18 11\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M12.5 5.5V20\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst BarChartIcon = forwardRef(function BarChartIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"bar-chart\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M5.5 5V19.5H20M8.5 18V13M11.5 18V9M14.5 18V11M17.5 18V7\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst BasketIcon = forwardRef(function BasketIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"basket\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M8.5 10.5H5L6.5 19.5H18.5L20 10.5H16.5M8.5 10.5L10.2721 5.18377C10.4082 4.77543 10.7903 4.5 11.2208 4.5H13.7792C14.2097 4.5 14.5918 4.77543 14.7279 5.18377L16.5 10.5M8.5 10.5H16.5M8.5 10.5L9.5 19.5M16.5 10.5L15.5 19.5M12.5 10.5V19.5M19.5 13.5H5.5M19 16.5H6\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst BellIcon = forwardRef(function BellIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"bell\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M10.5 17.5V18.5C10.5 20 11.5 20.5 12.5 20.5C13.5 20.5 14.5 20 14.5 18.5V17.5M5.5 17.5C6.5 16 6.5 15 6.5 12C6.5 8 8.5 5.5 12.5 5.5C16.5 5.5 18.5 8 18.5 12C18.5 15 18.5 16 19.5 17.5H5.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst BillIcon = forwardRef(function BillIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"bill\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M6.50001 5.5C8.50003 5.5 8.50003 8 8.50003 8V9.5M6.50001 5.5C4.5 5.5 4.5 8 4.5 8L4.50001 9.5H8.50003M6.50001 5.5C6.50001 5.5 15.8333 5.5 17.6667 5.5C19.5 5.5 19.5 8.5 19.5 8.5V20L17.6667 19L15.8333 20L14 19L12.1667 20L10.3334 19L8.50003 20V9.5M11 12.5H15M11 9.5H16M11 15.5H16\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst BinaryDocumentIcon = forwardRef(function BinaryDocumentIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"binary-document\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M11.5 4.5V9.5H6.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M9.5 12.5V17.5M11.5 4.5H18.5V20.5H6.5V9.5L11.5 4.5ZM12.5 12.5V17.5H15.5V12.5H12.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinecap: \"square\",\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst BlockContentIcon = forwardRef(function BlockContentIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"block-content\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M21 7.60002L11 7.60003V6.40003L21 6.40002V7.60002Z\",\n fill: \"currentColor\"\n }), /* @__PURE__ */jsx(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M21 11.2667L12.4833 11.2667V10.0667L21 10.0667V11.2667Z\",\n fill: \"currentColor\"\n }), /* @__PURE__ */jsx(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M21 14.9334H13.9254V13.7334L21 13.7334V14.9334Z\",\n fill: \"currentColor\"\n }), /* @__PURE__ */jsx(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M21 18.6002H4V17.4002H21V18.6002Z\",\n fill: \"currentColor\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M9.86438 15.6H11.2L8.27623 7.60003H6.92377L4 15.6H5.29072L6.0371 13.4767H9.12362L9.86438 15.6ZM7.53546 9.05255H7.63086L8.80374 12.4344H6.35698L7.53546 9.05255Z\",\n fill: \"currentColor\"\n })]\n });\n});\nconst BlockElementIcon = forwardRef(function BlockElementIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"block-element\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M5 19.5H20M5 5.5H20M6.5 8.5H18.5V16.5H6.5V8.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst BlockquoteIcon = forwardRef(function BlockquoteIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"blockquote\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M10 17.5H19M6 7.5H19M10 12.5H17M6.5 12V18\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst BoldIcon = forwardRef(function BoldIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"bold\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M13.2087 18C15.5322 18 16.9731 16.793 16.9731 14.8844C16.9731 13.4812 15.9245 12.3949 14.4836 12.2892V12.1534C15.6001 11.9875 16.4526 10.9841 16.4526 9.82991C16.4526 8.14761 15.1927 7.11409 13.0804 7.11409H8.32019V18H13.2087ZM10.5985 8.85674H12.4995C13.5859 8.85674 14.212 9.37727 14.212 10.2448C14.212 11.1199 13.5406 11.6254 12.3109 11.6254H10.5985V8.85674ZM10.5985 16.2574V13.1643H12.575C13.9178 13.1643 14.6496 13.6924 14.6496 14.6882C14.6496 15.7066 13.9404 16.2574 12.6278 16.2574H10.5985Z\",\n fill: \"currentColor\"\n })\n });\n});\nconst BookIcon = forwardRef(function BookIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"book\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M20.5 17.5V5.5L12.5 6.5M20.5 17.5L12.5 18.5M20.5 17.5V18.5M4.5 17.5V5.5L12.5 6.5M4.5 17.5L12.5 18.5M4.5 17.5V18.5M12.5 18.5L4.5 19.5V18.5M12.5 18.5L20.5 19.5V18.5M12.5 18.5V6.5M12.5 18.5H4.5M12.5 18.5H20.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst BottleIcon = forwardRef(function BottleIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"bottle\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M7.5 17.5L17.5 17.5M17.5 13C17.5 12.087 17.5 11.3518 17.5 11C17.5 8.5 14.5 9 14.5 7.37494L14.5 5.5M17.5 13C17.5 15.1229 17.5 18.7543 17.5 20.5022C17.5 21.0545 17.0523 21.5 16.5 21.5L8.5 21.5C7.94772 21.5 7.5 21.0547 7.5 20.5024C7.5 18.8157 7.5 15.3546 7.5 13M17.5 13L7.5 13M7.5 13C7.5 12.2538 7.5 11.5648 7.5 11C7.5 8.5 10.5 9 10.5 7.37494L10.5 5.5M10.5 5.5L10.5 3.99999C10.5 3.72385 10.7239 3.49999 11 3.49999L14 3.49999C14.2761 3.49999 14.5 3.72385 14.5 3.99999L14.5 5.5M10.5 5.5L14.5 5.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst BulbFilledIcon = forwardRef(function BulbFilledIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"bulb-filled\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M16.4272 14.3368C15.8273 15.1773 15.5 16.1794 15.5 17.212V18.5C15.5 19.0523 15.0523 19.5 14.5 19.5H14V20.5C14 21.0523 13.5523 21.5 13 21.5H12C11.4477 21.5 11 21.0523 11 20.5V19.5H10.5C9.94772 19.5 9.5 19.0523 9.5 18.5V17.212C9.5 16.1794 9.17266 15.1773 8.57284 14.3368C7.60216 12.9767 7 11.94 7 10C7 7 9.5 4.5 12.5 4.5C15.5 4.5 18 7 18 10C18 11.94 17.3978 12.9767 16.4272 14.3368Z\",\n fill: \"currentColor\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M16.4272 14.3368L15.9388 13.9883L16.4272 14.3368ZM14 19.5V18.9H13.4V19.5H14ZM11 19.5H11.6V18.9H11V19.5ZM8.57284 14.3368L9.06122 13.9883H9.06122L8.57284 14.3368ZM16.1 17.212C16.1 16.3069 16.3868 15.4261 16.9155 14.6853L15.9388 13.9883C15.2678 14.9284 14.9 16.0519 14.9 17.212H16.1ZM16.1 18.5V17.212H14.9V18.5H16.1ZM14.5 20.1C15.3837 20.1 16.1 19.3837 16.1 18.5H14.9C14.9 18.7209 14.7209 18.9 14.5 18.9V20.1ZM14 20.1H14.5V18.9H14V20.1ZM13.4 19.5V20.5H14.6V19.5H13.4ZM13.4 20.5C13.4 20.7209 13.2209 20.9 13 20.9V22.1C13.8837 22.1 14.6 21.3837 14.6 20.5H13.4ZM13 20.9H12V22.1H13V20.9ZM12 20.9C11.7791 20.9 11.6 20.7209 11.6 20.5H10.4C10.4 21.3837 11.1163 22.1 12 22.1V20.9ZM11.6 20.5V19.5H10.4V20.5H11.6ZM10.5 20.1H11V18.9H10.5V20.1ZM8.9 18.5C8.9 19.3837 9.61634 20.1 10.5 20.1V18.9C10.2791 18.9 10.1 18.7209 10.1 18.5H8.9ZM8.9 17.212V18.5H10.1V17.212H8.9ZM8.08446 14.6853C8.61315 15.4261 8.9 16.3069 8.9 17.212H10.1C10.1 16.0519 9.73217 14.9284 9.06122 13.9883L8.08446 14.6853ZM6.4 10C6.4 11.0377 6.56208 11.8595 6.86624 12.611C7.16624 13.3521 7.59495 13.9995 8.08446 14.6853L9.06122 13.9883C8.58004 13.314 8.22233 12.7629 7.97858 12.1607C7.739 11.5688 7.6 10.9023 7.6 10H6.4ZM12.5 3.9C9.16863 3.9 6.4 6.66863 6.4 10H7.6C7.6 7.33137 9.83137 5.1 12.5 5.1V3.9ZM18.6 10C18.6 6.66863 15.8314 3.9 12.5 3.9V5.1C15.1686 5.1 17.4 7.33137 17.4 10H18.6ZM16.9155 14.6853C17.4051 13.9995 17.8338 13.3521 18.1338 12.611C18.4379 11.8595 18.6 11.0377 18.6 10H17.4C17.4 10.9023 17.261 11.5688 17.0214 12.1607C16.7777 12.7629 16.42 13.314 15.9388 13.9883L16.9155 14.6853Z\",\n fill: \"currentColor\"\n })]\n });\n});\nconst BulbOutlineIcon = forwardRef(function BulbOutlineIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"bulb-outline\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M9.5 16.5H15.5M11 20V20.5C11 21.0523 11.4477 21.5 12 21.5H13C13.5523 21.5 14 21.0523 14 20.5V20M18 10C18 11.94 17.3978 12.9767 16.4272 14.3368C15.8273 15.1773 15.5 16.1794 15.5 17.212V18.5C15.5 19.0523 15.0523 19.5 14.5 19.5H10.5C9.94772 19.5 9.5 19.0523 9.5 18.5V17.212C9.5 16.1794 9.17266 15.1773 8.57284 14.3368C7.60216 12.9767 7 11.94 7 10C7 7 9.5 4.5 12.5 4.5C15.5 4.5 18 7 18 10Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2\n })\n });\n});\nconst CalendarIcon = forwardRef(function CalendarIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"calendar\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M4.5 10.5V19.5H20.5V10.5M4.5 10.5V5.5H20.5V10.5M4.5 10.5H12.5H20.5M20.5 13.5H16.5M16.5 13.5H12.5M16.5 13.5V10.5M16.5 13.5V16.5M12.5 13.5H8.5M12.5 13.5V16.5M12.5 13.5V10.5M8.5 13.5H4.5M8.5 13.5V10.5M8.5 13.5V16.5M20.5 16.5H16.5M16.5 16.5H12.5M16.5 16.5V19.5M12.5 16.5H8.5M12.5 16.5V19.5M8.5 16.5H4.5M8.5 16.5V19.5M17.5 8V3M7.5 8V3\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst CaseIcon = forwardRef(function CaseIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"case\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M9 8.5122V6C9 5.44772 9.44772 5 10 5H15C15.5523 5 16 5.44772 16 6V8.5122M4.5 12V18.5C4.5 19.0523 4.94772 19.5 5.5 19.5H19.5C20.0523 19.5 20.5 19.0523 20.5 18.5V12M4.5 12V9.5122C4.5 8.95991 4.94772 8.5122 5.5 8.5122H19.5C20.0523 8.5122 20.5 8.95991 20.5 9.5122V12M4.5 12L11.7978 14.7367C12.2505 14.9064 12.7495 14.9064 13.2022 14.7367L20.5 12\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst ChartUpwardIcon = forwardRef(function ChartUpwardIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"chart-upward\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M5.5 5V19.5H20M7.5 16L11.5 11.5L15.5 14L19.5 8.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst CheckmarkCircleIcon = forwardRef(function CheckmarkCircleIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"checkmark-circle\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M9.5 12.1316L11.7414 14.5L16 10M20.5 12.5C20.5 16.9183 16.9183 20.5 12.5 20.5C8.08172 20.5 4.5 16.9183 4.5 12.5C4.5 8.08172 8.08172 4.5 12.5 4.5C16.9183 4.5 20.5 8.08172 20.5 12.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst CheckmarkIcon = forwardRef(function CheckmarkIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"checkmark\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M5.5 11.5L10.5 16.5L19.5 7.60001\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst ChevronDownIcon = forwardRef(function ChevronDownIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"chevron-down\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M17 10.5L12.5 15L8 10.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst ChevronLeftIcon = forwardRef(function ChevronLeftIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"chevron-left\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M14.5 17L10 12.5L14.5 8\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst ChevronRightIcon = forwardRef(function ChevronRightIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"chevron-right\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M10.5 8L15 12.5L10.5 17\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst ChevronUpIcon = forwardRef(function ChevronUpIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"chevron-up\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M8 14.5L12.5 10L17 14.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst CircleIcon = forwardRef(function CircleIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"circle\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"circle\", {\n cx: 12.5,\n cy: 12.5,\n r: 8,\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst ClipboardIcon = forwardRef(function ClipboardIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"clipboard\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M8 5.5H6.5V19.5H18.5V5.5H17M12.5 3C11.5 3 11.5 4.5 11 4.5C10 4.5 9.5 5 9.5 6.5H15.6C15.6 5 15 4.5 14 4.5C13.5 4.5 13.5 3 12.5 3Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst ClipboardImageIcon = forwardRef(function ClipboardImageIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"clipboard-image\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M8 5.5H6.5V19.5H10.5M17 5.5H18.5V11.5M10.5 18.5L12.73 15.8983C13.1327 15.4285 13.8613 15.4335 14.2575 15.909L15.299 17.1588C15.6754 17.6105 16.3585 17.6415 16.7743 17.2257L16.9903 17.0097C17.2947 16.7053 17.7597 16.6298 18.1447 16.8223L20.5 18M10.5 11.5H20.5V21.5H10.5V11.5ZM12.5 3C11.5 3 11.5 4.5 11 4.5C10 4.5 9.5 5 9.5 6.5H15.6C15.6 5 15 4.5 14 4.5C13.5 4.5 13.5 3 12.5 3Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst ClockIcon = forwardRef(function ClockIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"clock\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M12.5 8V12.5L15.5 15.5M20.5 12.5C20.5 16.9183 16.9183 20.5 12.5 20.5C8.08172 20.5 4.5 16.9183 4.5 12.5C4.5 8.08172 8.08172 4.5 12.5 4.5C16.9183 4.5 20.5 8.08172 20.5 12.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst CloseCircleIcon = forwardRef(function CloseCircleIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"close-circle\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M9.5 15.5L12.5 12.5M12.5 12.5L15.5 9.5M12.5 12.5L9.5 9.5M12.5 12.5L15.5 15.5M20.5 12.5C20.5 16.9183 16.9183 20.5 12.5 20.5C8.08172 20.5 4.5 16.9183 4.5 12.5C4.5 8.08172 8.08172 4.5 12.5 4.5C16.9183 4.5 20.5 8.08172 20.5 12.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst CloseIcon = forwardRef(function CloseIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"close\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M18 7L7 18M7 7L18 18\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst CodeBlockIcon = forwardRef(function CodeBlockIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"code-block\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M11 15L8.5 12.5L11 10M14 10L16.5 12.5L14 15M5.5 6.5H19.5V18.5H5.5V6.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst CodeIcon = forwardRef(function CodeIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"code\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M11 16L7.5 12.5L11 9M14 9L17.5 12.5L14 16\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst CogIcon = forwardRef(function CogIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"cog\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M14.2624 5.40607L13.8714 4.42848C13.6471 3.86771 13.104 3.5 12.5 3.5C11.896 3.5 11.3529 3.86771 11.1286 4.42848L10.7376 5.40607C10.5857 5.78585 10.2869 6.08826 9.90901 6.2448C9.53111 6.40133 9.10603 6.39874 8.73006 6.23761L7.76229 5.82285C7.20716 5.58494 6.56311 5.70897 6.13604 6.13604C5.70897 6.56311 5.58494 7.20716 5.82285 7.76229L6.23761 8.73006C6.39874 9.10602 6.40133 9.53111 6.2448 9.90901C6.08826 10.2869 5.78585 10.5857 5.40607 10.7376L4.42848 11.1286C3.86771 11.3529 3.5 11.896 3.5 12.5C3.5 13.104 3.86771 13.6471 4.42848 13.8714L5.40607 14.2624C5.78585 14.4143 6.08826 14.7131 6.2448 15.091C6.40133 15.4689 6.39874 15.894 6.23761 16.2699L5.82285 17.2377C5.58494 17.7928 5.70897 18.4369 6.13604 18.864C6.56311 19.291 7.20716 19.4151 7.76229 19.1772L8.73006 18.7624C9.10603 18.6013 9.53111 18.5987 9.90901 18.7552C10.2869 18.9117 10.5857 19.2141 10.7376 19.5939L11.1286 20.5715C11.3529 21.1323 11.896 21.5 12.5 21.5C13.104 21.5 13.6471 21.1323 13.8714 20.5715L14.2624 19.5939C14.4143 19.2141 14.7131 18.9117 15.091 18.7552C15.4689 18.5987 15.894 18.6013 16.2699 18.7624L17.2377 19.1771C17.7928 19.4151 18.4369 19.291 18.864 18.864C19.291 18.4369 19.4151 17.7928 19.1771 17.2377L18.7624 16.2699C18.6013 15.894 18.5987 15.4689 18.7552 15.091C18.9117 14.7131 19.2141 14.4143 19.5939 14.2624L20.5715 13.8714C21.1323 13.6471 21.5 13.104 21.5 12.5C21.5 11.896 21.1323 11.3529 20.5715 11.1286L19.5939 10.7376C19.2141 10.5857 18.9117 10.2869 18.7552 9.90901C18.5987 9.53111 18.6013 9.10602 18.7624 8.73006L19.1772 7.76229C19.4151 7.20716 19.291 6.56311 18.864 6.13604C18.4369 5.70897 17.7928 5.58494 17.2377 5.82285L16.2699 6.23761C15.894 6.39874 15.4689 6.40133 15.091 6.2448C14.7131 6.08826 14.4143 5.78585 14.2624 5.40607Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M16.5 12.5C16.5 14.7091 14.7091 16.5 12.5 16.5C10.2909 16.5 8.5 14.7091 8.5 12.5C8.5 10.2909 10.2909 8.5 12.5 8.5C14.7091 8.5 16.5 10.2909 16.5 12.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst CollapseIcon = forwardRef(function CollapseIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"collapse\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M6 14.5L10.5 14.5V19M19 10.5H14.5L14.5 6\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M10.5 14.5L6 19M14.5 10.5L19 6\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst ColorWheelIcon = forwardRef(function ColorWheelIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"color-wheel\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M9.43853 5.10896L11.1606 9.26642M13.8394 15.7336L15.5615 19.891M15.7336 11.1606L19.891 9.43853M9.26642 13.8394L5.10896 15.5615M5.3139 9.52342L9.23359 11.147M15.7664 13.853L19.6861 15.4766M13.853 9.23359L15.4766 5.3139M9.52342 19.6861L11.147 15.7664M20.5 12.5C20.5 16.9183 16.9183 20.5 12.5 20.5C8.08172 20.5 4.5 16.9183 4.5 12.5C4.5 8.08172 8.08172 4.5 12.5 4.5C16.9183 4.5 20.5 8.08172 20.5 12.5ZM16 12.5C16 14.433 14.433 16 12.5 16C10.567 16 9 14.433 9 12.5C9 10.567 10.567 9 12.5 9C14.433 9 16 10.567 16 12.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst CommentIcon = forwardRef(function CommentIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"comment\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M7.5 16.5H9.5V20.5L13.5 16.5H17.5C18.6046 16.5 19.5 15.6046 19.5 14.5V8.5C19.5 7.39543 18.6046 6.5 17.5 6.5H7.5C6.39543 6.5 5.5 7.39543 5.5 8.5V14.5C5.5 15.6046 6.39543 16.5 7.5 16.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst ComponentIcon = forwardRef(function ComponentIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"component\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M8.5 8.5L12.5 12.5M12.5 12.5L16.5 16.5M12.5 12.5L16.5 8.5M12.5 12.5L8.5 16.5M12.5 4L21 12.5L12.5 21L4 12.5L12.5 4Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst ComposeIcon = forwardRef(function ComposeIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"compose\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M17 6L19 8M14 5.5H5.5V19.5H19.5V11M9 16L9.5 13.5L19 4L21 6L11.5 15.5L9 16Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst ControlsIcon = forwardRef(function ControlsIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"controls\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M6.5 5V7.5M6.5 7.5C5.39543 7.5 4.5 8.39543 4.5 9.5C4.5 10.6046 5.39543 11.5 6.5 11.5M6.5 7.5C7.60457 7.5 8.5 8.39543 8.5 9.5C8.5 10.6046 7.60457 11.5 6.5 11.5M6.5 11.5V20M12.5 5V13.5M12.5 13.5C11.3954 13.5 10.5 14.3954 10.5 15.5C10.5 16.6046 11.3954 17.5 12.5 17.5M12.5 13.5C13.6046 13.5 14.5 14.3954 14.5 15.5C14.5 16.6046 13.6046 17.5 12.5 17.5M12.5 17.5V20M18.5 5V7.5M18.5 7.5C17.3954 7.5 16.5 8.39543 16.5 9.5C16.5 10.6046 17.3954 11.5 18.5 11.5M18.5 7.5C19.6046 7.5 20.5 8.39543 20.5 9.5C20.5 10.6046 19.6046 11.5 18.5 11.5M18.5 11.5V20\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst CopyIcon = forwardRef(function CopyIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"copy\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M8.5 8.5H5.5V20.5H16.5V16.5M19.5 4.5H8.5V16.5H19.5V4.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst CreditCardIcon = forwardRef(function CreditCardIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"credit-card\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M20.5 9.5H4.5V11.5H20.5V9.5Z\",\n fill: \"currentColor\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M7 15.5H14M5.5 18.5H19.5C20.0523 18.5 20.5 18.0523 20.5 17.5V7.5C20.5 6.94772 20.0523 6.5 19.5 6.5H5.5C4.94772 6.5 4.5 6.94772 4.5 7.5V17.5C4.5 18.0523 4.94772 18.5 5.5 18.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst CropIcon = forwardRef(function CropIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"crop\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M9.5 5V15.5H20M5 9.5H15.5V20\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst DashboardIcon = forwardRef(function DashboardIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"dashboard\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M14.5 19.5V12.5M10.5 12.5V5.5M5.5 12.5H19.5M5.5 19.5H19.5V5.5H5.5V19.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst DatabaseIcon = forwardRef(function DatabaseIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"database\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M18.5 7V17.5C18.5 19.0594 16.0504 20.5 12.5 20.5C8.9496 20.5 6.5 19.0594 6.5 17.5V7M18.5 7C18.5 8.45543 15.8137 9.5 12.5 9.5C9.18629 9.5 6.5 8.45543 6.5 7C6.5 5.54457 9.18629 4.5 12.5 4.5C15.8137 4.5 18.5 5.54457 18.5 7Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst DesktopIcon = forwardRef(function DesktopIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"desktop\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M4.5 13.5V15.5C4.5 16.0523 4.94772 16.5 5.5 16.5H12.5M4.5 13.5V6.5C4.5 5.94772 4.94772 5.5 5.5 5.5H19.5C20.0523 5.5 20.5 5.94772 20.5 6.5V13.5M4.5 13.5H20.5M20.5 13.5V15.5C20.5 16.0523 20.0523 16.5 19.5 16.5H12.5M12.5 16.5V19.5M12.5 19.5H8M12.5 19.5H17\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst DocumentIcon = forwardRef(function DocumentIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"document\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M11.5 4.5V9.5H6.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M11.5 4.5H18.5V20.5H6.5L6.5 9.5M11.5 4.5L6.5 9.5M11.5 4.5V9.5H6.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst DocumentPdfIcon = forwardRef(function DocumentPdfIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"document-pdf\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M12.7127 13.8012L12.7193 13.77C12.8488 13.2366 13.0117 12.5716 12.8845 11.969C12.7997 11.4937 12.4493 11.3084 12.1503 11.295C11.7977 11.2794 11.483 11.4803 11.4049 11.7726C11.2576 12.3082 11.3893 13.0402 11.6303 13.973C11.3268 14.6961 10.8425 15.7472 10.4877 16.3721C9.8271 16.7135 8.94113 17.2402 8.80946 17.9053C8.78268 18.028 8.81392 18.1842 8.88757 18.3248C8.97014 18.481 9.10181 18.6015 9.25579 18.6596C9.32274 18.6841 9.40308 18.7042 9.49681 18.7042C9.88959 18.7042 10.5256 18.3873 11.3736 16.9322C11.5031 16.8898 11.637 16.8452 11.7664 16.8006C12.3734 16.5953 13.0028 16.381 13.5718 16.2851C14.2012 16.622 14.9175 16.8385 15.404 16.8385C15.8861 16.8385 16.0758 16.5529 16.1472 16.381C16.2722 16.0797 16.2119 15.7004 16.0088 15.4973C15.7143 15.2072 14.9979 15.1313 13.882 15.2696C13.3331 14.9349 12.9738 14.4796 12.7127 13.8012ZM10.2645 17.1911C9.95431 17.6419 9.71998 17.8673 9.59278 17.9655C9.7423 17.691 10.0346 17.4009 10.2645 17.1911ZM12.2195 11.9355C12.3355 12.1341 12.3199 12.7345 12.2306 13.038C12.1213 12.5939 12.1056 11.9645 12.1704 11.8909L12.2195 11.9355ZM12.1837 14.6247C12.4225 15.0376 12.7238 15.3924 13.0563 15.6557C12.5743 15.7651 12.1346 15.9458 11.7419 16.1065C11.6481 16.1445 11.5566 16.1824 11.4674 16.2181C11.7642 15.6803 12.0119 15.071 12.1837 14.6247ZM15.6562 16.0864L15.6428 16.1065C15.6428 16.1065 15.4375 16.2315 14.6497 15.9213C15.5558 15.8789 15.6562 16.0864 15.6562 16.0864Z\",\n fill: \"currentColor\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M11.5 4.5V9.5H6.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M11.5 4.5H18.5V20.5H6.5V9.5L11.5 4.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst DocumentRemoveIcon = forwardRef(function DocumentRemoveIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"document-remove\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M11.5 4.5V9.5H6.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M6.5 14V20.5H18.5V14M6.5 11V9.5L11.5 4.5H18.5V11M3 12.5H22\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst DocumentSheetIcon = forwardRef(function DocumentSheetIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"document-sheet\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M11.5 4.5V9.5H6.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M10.4 19V16.4M10.4 16.4L10.4 13.4M10.4 16.4H8M10.4 16.4H14.4M10.4 13.4V11M10.4 13.4H8M10.4 13.4H14.4M14.4 19V16.4M14.4 16.4V13.4M14.4 16.4H17M14.4 13.4V11M14.4 13.4H17M11.5 4.5H18.5V20.5H6.5V9.5L11.5 4.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst DocumentTextIcon = forwardRef(function DocumentTextIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"document-text\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M11.5 4.5V9.5H6.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M16 13H9M14 16H9M11.5 4.5H18.5V20.5H6.5V9.5L11.5 4.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst DocumentVideoIcon = forwardRef(function DocumentVideoIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"document-video\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M11.5 16.5V13.5L14 15L11.5 16.5Z\",\n fill: \"currentColor\",\n stroke: \"currentColor\",\n strokeWidth: 1.2\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M11.5 4.5V9.5H6.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M11.5 4.5H18.5V20.5H6.5V9.5L11.5 4.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst DocumentWordIcon = forwardRef(function DocumentWordIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"document-word\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M12.4699 13.4588H12.5263L13.6328 17H14.5435L16 12H14.9952L14.0656 15.7214H14.0129L12.929 12H12.0672L10.9984 15.7214H10.9419L10.0124 12H9L10.4565 17H11.371L12.4699 13.4588Z\",\n fill: \"currentColor\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M11.5 4.5V9.5H6.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M11.5 4.5H18.5V20.5H6.5V9.5L11.5 4.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst DocumentZipIcon = forwardRef(function DocumentZipIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"document-zip\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M11.5 4.5V9.5H6.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M15 4.5L13.5 5L15.5 6L13.5 7L15.5 8L13.5 9L15.5 10L13.5 11L14.5 11.5V13M11.5 4.5H18.5V20.5H6.5V9.5L11.5 4.5ZM13.5 13H15.5L16 17H13L13.5 13Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst DocumentsIcon = forwardRef(function DocumentsIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"documents\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M10.5 4.5V9.5H5.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M16.5 7.5H19.5V21.5H8.5V18.5M10.5 4.5H16.5V18.5H5.5V9.5L10.5 4.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst DotIcon = forwardRef(function DotIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"dot\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"circle\", {\n cx: 12.5,\n cy: 12.5,\n r: 1.5,\n fill: \"currentColor\",\n stroke: \"currentColor\",\n strokeWidth: 1.2\n })\n });\n});\nconst DoubleChevronDownIcon = forwardRef(function DoubleChevronDownIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"double-chevron-down\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M17 8.5L12.5 13L8 8.5M17 12.5L12.5 17L8 12.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst DoubleChevronLeftIcon = forwardRef(function DoubleChevronLeftIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"double-chevron-left\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M12.5 17L8 12.5L12.5 8M16.5 17L12 12.5L16.5 8\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst DoubleChevronRightIcon = forwardRef(function DoubleChevronRightIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"double-chevron-right\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M12.5 8L17 12.5L12.5 17M8.5 8L13 12.5L8.5 17\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst DoubleChevronUpIcon = forwardRef(function DoubleChevronUpIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"double-chevron-up\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M8 12.5L12.5 8L17 12.5M8 16.5L12.5 12L17 16.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst DownloadIcon = forwardRef(function DownloadIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"download\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M19.5 17V19.5H5.5V17M12.5 16L12.5 5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M17.5 11L12.5 16L7.5 11\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst DragHandleIcon = forwardRef(function DragHandleIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"drag-handle\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M9.5 8C10.3284 8 11 7.32843 11 6.5C11 5.67157 10.3284 5 9.5 5C8.67157 5 8 5.67157 8 6.5C8 7.32843 8.67157 8 9.5 8Z\",\n fill: \"currentColor\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M9.5 14C10.3284 14 11 13.3284 11 12.5C11 11.6716 10.3284 11 9.5 11C8.67157 11 8 11.6716 8 12.5C8 13.3284 8.67157 14 9.5 14Z\",\n fill: \"currentColor\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M11 18.5C11 19.3284 10.3284 20 9.5 20C8.67157 20 8 19.3284 8 18.5C8 17.6716 8.67157 17 9.5 17C10.3284 17 11 17.6716 11 18.5Z\",\n fill: \"currentColor\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M15.5 8C16.3284 8 17 7.32843 17 6.5C17 5.67157 16.3284 5 15.5 5C14.6716 5 14 5.67157 14 6.5C14 7.32843 14.6716 8 15.5 8Z\",\n fill: \"currentColor\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M17 12.5C17 13.3284 16.3284 14 15.5 14C14.6716 14 14 13.3284 14 12.5C14 11.6716 14.6716 11 15.5 11C16.3284 11 17 11.6716 17 12.5Z\",\n fill: \"currentColor\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M15.5 20C16.3284 20 17 19.3284 17 18.5C17 17.6716 16.3284 17 15.5 17C14.6716 17 14 17.6716 14 18.5C14 19.3284 14.6716 20 15.5 20Z\",\n fill: \"currentColor\"\n })]\n });\n});\nconst DropIcon = forwardRef(function DropIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"drop\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M18.5 14.5C18.5 18 16 20.5 12.5 20.5C9 20.5 6.5 18 6.5 14.5C6.5 11 9.5 7.50001 12.5 4.5C15.5 7.5 18.5 11 18.5 14.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst EarthAmericasIcon = forwardRef(function EarthAmericasIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"earth-americas\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M7 13L5.5 9L10 5H15V10L14 9H11L9.5 11L10.5 12H12V13L13 14.5H15.5L18.5 17L15.5 19.5L10.5 20V17L12.5 15L9 13L7 10.5V13Z\",\n fill: \"currentColor\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"circle\", {\n cx: 12.5,\n cy: 12.5,\n r: 8,\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst EarthGlobeIcon = forwardRef(function EarthGlobeIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"earth-globe\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M5.5 16.5H19.5M5.5 8.5H19.5M4.5 12.5H20.5M12.5 20.5C12.5 20.5 8 18.5 8 12.5C8 6.5 12.5 4.5 12.5 4.5M12.5 4.5C12.5 4.5 17 6.5 17 12.5C17 18.5 12.5 20.5 12.5 20.5M12.5 4.5V20.5M20.5 12.5C20.5 16.9183 16.9183 20.5 12.5 20.5C8.08172 20.5 4.5 16.9183 4.5 12.5C4.5 8.08172 8.08172 4.5 12.5 4.5C16.9183 4.5 20.5 8.08172 20.5 12.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst EditIcon = forwardRef(function EditIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"edit\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M15 7L18 10M6 19L7 15L17 5L20 8L10 18L6 19Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst EllipsisHorizontalIcon = forwardRef(function EllipsisHorizontalIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"ellipsis-horizontal\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M6.5 11C7.32843 11 8 11.6716 8 12.5C8 13.3284 7.32843 14 6.5 14C5.67157 14 5 13.3284 5 12.5C5 11.6716 5.67157 11 6.5 11Z\",\n fill: \"currentColor\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M12.5 11C13.3284 11 14 11.6716 14 12.5C14 13.3284 13.3284 14 12.5 14C11.6716 14 11 13.3284 11 12.5C11 11.6716 11.6716 11 12.5 11Z\",\n fill: \"currentColor\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M18.5 11C19.3284 11 20 11.6716 20 12.5C20 13.3284 19.3284 14 18.5 14C17.6716 14 17 13.3284 17 12.5C17 11.6716 17.6716 11 18.5 11Z\",\n fill: \"currentColor\"\n })]\n });\n});\nconst EllipsisVerticalIcon = forwardRef(function EllipsisVerticalIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"ellipsis-vertical\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M14 6.5C14 7.32843 13.3284 8 12.5 8C11.6716 8 11 7.32843 11 6.5C11 5.67157 11.6716 5 12.5 5C13.3284 5 14 5.67157 14 6.5Z\",\n fill: \"currentColor\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M14 12.5C14 13.3284 13.3284 14 12.5 14C11.6716 14 11 13.3284 11 12.5C11 11.6716 11.6716 11 12.5 11C13.3284 11 14 11.6716 14 12.5Z\",\n fill: \"currentColor\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M14 18.5C14 19.3284 13.3284 20 12.5 20C11.6716 20 11 19.3284 11 18.5C11 17.6716 11.6716 17 12.5 17C13.3284 17 14 17.6716 14 18.5Z\",\n fill: \"currentColor\"\n })]\n });\n});\nconst EnterIcon = forwardRef(function EnterIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"enter\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M6 14.5H19.5V7\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M10 18.5L6 14.5L10 10.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst EnterRightIcon = forwardRef(function EnterRightIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"enter-right\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M19 14.5H5.5V7\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M15 18.5L19 14.5L15 10.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst EnvelopeIcon = forwardRef(function EnvelopeIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"envelope\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M20.5 18.5H4.5V6.5H20.5V18.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M20.5 18.5L17.75 15.5L15 12.5M4.5 18.5L10 12.5M20.5 6.5L12.5 15L4.5 6.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst EqualIcon = forwardRef(function EqualIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"equal\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M7.5 4.5H3.5V20.5H7.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M17.5 20.5L21.5 20.5L21.5 4.5L17.5 4.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M9 10.5H16\",\n stroke: \"currentColor\",\n strokeWidth: 1.2\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M9 14.5H16\",\n stroke: \"currentColor\",\n strokeWidth: 1.2\n })]\n });\n});\nconst ErrorFilledIcon = forwardRef(function ErrorFilledIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"error-filled\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M4 12.5C4 7.80558 7.80558 4 12.5 4C17.1944 4 21 7.80558 21 12.5C21 17.1944 17.1944 21 12.5 21C7.80558 21 4 17.1944 4 12.5ZM13 14.5V16H12V14.5H13ZM12 9V13H13V9H12Z\",\n fill: \"currentColor\"\n })\n });\n});\nconst ErrorOutlineIcon = forwardRef(function ErrorOutlineIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"error-outline\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M12.5 16V14.5M12.5 9V13M20.5 12.5C20.5 16.9183 16.9183 20.5 12.5 20.5C8.08172 20.5 4.5 16.9183 4.5 12.5C4.5 8.08172 8.08172 4.5 12.5 4.5C16.9183 4.5 20.5 8.08172 20.5 12.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst ExpandIcon = forwardRef(function ExpandIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"expand\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M14 6.5H18.5V11M11 18.5H6.5V14\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M18.5 6.5L14 11M6.5 18.5L11 14\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst EyeClosedIcon = forwardRef(function EyeClosedIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"eye-closed\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M7 15.5L5.5 17.5M20.5 12.5C19.8612 13.5647 19.041 14.6294 18.0008 15.501M18.0008 15.501C16.5985 16.676 14.7965 17.5 12.5 17.5M18.0008 15.501L18 15.5M18.0008 15.501L19.5 17.5M12.5 17.5C8.5 17.5 6 15 4.5 12.5M12.5 17.5V20M15.5 17L16.5 19.5M9.5 17L8.5 19.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst EyeOpenIcon = forwardRef(function EyeOpenIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"eye-open\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M9.39999 12.5C9.39999 10.7879 10.7879 9.39999 12.5 9.39999C14.2121 9.39999 15.6 10.7879 15.6 12.5C15.6 14.2121 14.2121 15.6 12.5 15.6C10.7879 15.6 9.39999 14.2121 9.39999 12.5Z\",\n fill: \"currentColor\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M12.5 7.5C8.5 7.5 6 10 4.5 12.5C6 15 8.5 17.5 12.5 17.5C16.5 17.5 19 15 20.5 12.5C19 10 16.5 7.5 12.5 7.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst FilterIcon = forwardRef(function FilterIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"filter\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M11 12L6 7V6L19 6L19 7L14 12V17L11 19V12Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinecap: \"square\",\n strokeLinejoin: \"round\"\n })\n });\n});\nconst FolderIcon = forwardRef(function FolderIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"folder\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M11.5 8.5H19.5V18.5H5.5V5.5H10.5L11.5 8.5ZM11.5 8.5H5.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst GenerateIcon = forwardRef(function GenerateIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"generate\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M9 5.30423C6.33576 6.60253 4.5 9.33688 4.5 12.5C4.5 16.9183 8.08172 20.5 12.5 20.5C16.9183 20.5 20.5 16.9183 20.5 12.5C20.5 8.08172 16.9183 4.5 12.5 4.5V14.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M16 11L12.5 14.5L9 11\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst GroqIcon = forwardRef(function GroqIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"groq\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M13 13H21L13 21L13 13Z\",\n fill: \"currentColor\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M12 12V4L4 12H12Z\",\n fill: \"currentColor\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M12 13H4L12 21V13Z\",\n fill: \"currentColor\"\n })]\n });\n});\nconst HeartFilledIcon = forwardRef(function HeartFilledIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"heart-filled\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M17 16C15.8 17.3235 12.5 20.5 12.5 20.5C12.5 20.5 9.2 17.3235 8 16C5.2 12.9118 4.5 11.7059 4.5 9.5C4.5 7.29412 6.1 5.5 8.5 5.5C10.5 5.5 11.7 6.82353 12.5 8.14706C13.3 6.82353 14.5 5.5 16.5 5.5C18.9 5.5 20.5 7.29412 20.5 9.5C20.5 11.7059 19.8 12.9118 17 16Z\",\n fill: \"currentColor\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst HeartIcon = forwardRef(function HeartIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"heart\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M17 16C15.8 17.3235 12.5 20.5 12.5 20.5C12.5 20.5 9.2 17.3235 8 16C5.2 12.9118 4.5 11.7059 4.5 9.5C4.5 7.29412 6.1 5.5 8.5 5.5C10.5 5.5 11.7 6.82353 12.5 8.14706C13.3 6.82353 14.5 5.5 16.5 5.5C18.9 5.5 20.5 7.29412 20.5 9.5C20.5 11.7059 19.8 12.9118 17 16Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst HelpCircleIcon = forwardRef(function HelpCircleIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"help-circle\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M12.5 13C12.5 11 14 11.5 14 10C14 9.34375 13.5 8.5 12.5 8.5C11.5 8.5 11 9 10.5 9.5M12.5 16V14.5M20.5 12.5C20.5 16.9183 16.9183 20.5 12.5 20.5C8.08172 20.5 4.5 16.9183 4.5 12.5C4.5 8.08172 8.08172 4.5 12.5 4.5C16.9183 4.5 20.5 8.08172 20.5 12.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst HomeIcon = forwardRef(function HomeIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"home\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M6.5 8.75V18.5H18.5V8.75M4.5 10L12.5 5L20.5 10M14.5 18.5V11.5H10.5V18.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst IceCreamIcon = forwardRef(function IceCreamIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"ice-cream\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M9.5 13.5L12.5 20.5L15.5 13.5M12.5 8.26389C11.9692 7.78885 11.2684 7.5 10.5 7.5C8.84315 7.5 7.5 8.84315 7.5 10.5C7.5 12.1569 8.84315 13.5 10.5 13.5C11.2684 13.5 11.9692 13.2111 12.5 12.7361M9.5 7.5C9.5 5.84315 10.8431 4.5 12.5 4.5C14.1569 4.5 15.5 5.84315 15.5 7.5M17.5 10.5C17.5 12.1569 16.1569 13.5 14.5 13.5C12.8431 13.5 11.5 12.1569 11.5 10.5C11.5 8.84315 12.8431 7.5 14.5 7.5C16.1569 7.5 17.5 8.84315 17.5 10.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst ImageIcon = forwardRef(function ImageIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"image\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M5.5 15.5L8.79289 12.2071C9.18342 11.8166 9.81658 11.8166 10.2071 12.2071L12.8867 14.8867C13.2386 15.2386 13.7957 15.2782 14.1938 14.9796L15.1192 14.2856C15.3601 14.1049 15.6696 14.0424 15.9618 14.1154L19.5 15M5.5 6.5H19.5V18.5H5.5V6.5ZM15.5 10.5C15.5 11.0523 15.0523 11.5 14.5 11.5C13.9477 11.5 13.5 11.0523 13.5 10.5C13.5 9.94772 13.9477 9.5 14.5 9.5C15.0523 9.5 15.5 9.94772 15.5 10.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst ImageRemoveIcon = forwardRef(function ImageRemoveIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"image-remove\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M5.5 11V6.5H19.5V11M5.5 14V18.5H19.5V14M3 12.5H22\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst ImagesIcon = forwardRef(function ImagesIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"images\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M18.5 7.5H20.5V19.5H6.5V17.5M4.5 14.5L7.79289 11.2071C8.18342 10.8166 8.81658 10.8166 9.20711 11.2071L11.8867 13.8867C12.2386 14.2386 12.7957 14.2782 13.1938 13.9796L14.1192 13.2856C14.3601 13.1049 14.6696 13.0424 14.9618 13.1154L18.5 14M4.5 5.5H18.5V17.5H4.5V5.5ZM14.5 9.5C14.5 10.0523 14.0523 10.5 13.5 10.5C12.9477 10.5 12.5 10.0523 12.5 9.5C12.5 8.94772 12.9477 8.5 13.5 8.5C14.0523 8.5 14.5 8.94772 14.5 9.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst InfoFilledIcon = forwardRef(function InfoFilledIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"info-filled\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M21 12.5C21 17.1944 17.1944 21 12.5 21C7.80558 21 4 17.1944 4 12.5C4 7.80558 7.80558 4 12.5 4C17.1944 4 21 7.80558 21 12.5ZM12 10.5V9H13V10.5H12ZM13 16V12H12V16H13Z\",\n fill: \"currentColor\"\n })\n });\n});\nconst InfoOutlineIcon = forwardRef(function InfoOutlineIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"info-outline\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M12.5 10.5V9M12.5 12V16M20.5 12.5C20.5 16.9183 16.9183 20.5 12.5 20.5C8.08172 20.5 4.5 16.9183 4.5 12.5C4.5 8.08172 8.08172 4.5 12.5 4.5C16.9183 4.5 20.5 8.08172 20.5 12.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst InlineElementIcon = forwardRef(function InlineElementIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"inline-element\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M5.5 5V20M19.5 5V20M8.5 6.5H16.5V18.5H8.5V6.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst InlineIcon = forwardRef(function InlineIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"inline\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M12.5 6.5H19.5V18.5H12.5M12.5 6.5H5.5V18.5H12.5M12.5 6.5V18.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst InsertAboveIcon = forwardRef(function InsertAboveIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"insert-above\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M14.5 10.5556L10.5 10.5556M12.5 12.5L12.5 8.5M18.5 5.5L6.5 5.5M18.5 19.5L6.5 19.5L6.5 15.5L18.5 15.5L18.5 19.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinecap: \"square\",\n strokeLinejoin: \"round\"\n })\n });\n});\nconst InsertBelowIcon = forwardRef(function InsertBelowIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"insert-below\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M10.5 14.5H14.5M12.5 12.5V16.5M6.5 19.5H18.5M6.5 5.5H18.5V9.5H6.5V5.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinecap: \"square\",\n strokeLinejoin: \"round\"\n })\n });\n});\nconst ItalicIcon = forwardRef(function ItalicIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"italic\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M10.43 18H11.7276L13.4551 9.86763H12.1576L10.43 18ZM13.3043 8.29849C13.8022 8.29849 14.2095 7.89112 14.2095 7.39322C14.2095 6.89532 13.8022 6.48795 13.3043 6.48795C12.8064 6.48795 12.399 6.89532 12.399 7.39322C12.399 7.89112 12.8064 8.29849 13.3043 8.29849Z\",\n fill: \"currentColor\"\n })\n });\n});\nconst JoystickIcon = forwardRef(function JoystickIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"joystick\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M9.5 16V14.5H15.5V16M13.5 10.5V14.5M11.5 10.5V14.5M15.5 7.5C15.5 9.15685 14.1569 10.5 12.5 10.5C10.8431 10.5 9.5 9.15685 9.5 7.5C9.5 5.84315 10.8431 4.5 12.5 4.5C14.1569 4.5 15.5 5.84315 15.5 7.5ZM18.5 19.5H6.5C5.94772 19.5 5.5 19.0523 5.5 18.5V17.5C5.5 16.9477 5.94772 16.5 6.5 16.5H18.5C19.0523 16.5 19.5 16.9477 19.5 17.5V18.5C19.5 19.0523 19.0523 19.5 18.5 19.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst LaunchIcon = forwardRef(function LaunchIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"launch\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M14 6.5H5.5V19.5H18.5V11M20.5 4.5L10.5 14.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M16 4.5H20.5V9\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst LeaveIcon = forwardRef(function LeaveIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"leave\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M15.5 15V18.5H5.5V6.5H15.5V10M9 12.5H21.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M18.5 9.5L21.5 12.5L18.5 15.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst LemonIcon = forwardRef(function LemonIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"lemon\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M10.6569 10.3431L6.41422 14.5858C7.58579 15.7574 9.12132 16.3431 10.6569 16.3431M10.6569 10.3431L14.8995 6.1005C16.0711 7.27208 16.6569 8.80761 16.6569 10.3431M10.6569 10.3431L10.6569 16.3431M10.6569 10.3431L16.6569 10.3431M10.6569 10.3431L14.8995 14.5858M14.8995 14.5858C13.7279 15.7574 12.1924 16.3431 10.6569 16.3431M14.8995 14.5858C16.0711 13.4142 16.6569 11.8787 16.6569 10.3431M16.3137 4.68629C19.4379 7.81049 19.4379 12.8758 16.3137 16C13.1895 19.1242 8.12419 19.1242 5 16L16.3137 4.68629Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst LinkIcon = forwardRef(function LinkIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"link\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M11 12.5L12.5 14C13.281 14.781 14.719 14.781 15.5 14L18.5 11C19.281 10.219 19.281 8.78105 18.5 8L18 7.5C17.2189 6.71895 15.781 6.71895 15 7.5L13 9.5M12 15.5L10 17.5C9.21895 18.281 7.78105 18.281 7 17.5L6.5 17C5.71895 16.219 5.71896 14.781 6.5 14L9.50001 11C10.2811 10.219 11.719 10.2189 12.5 11L14 12.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst LinkRemovedIcon = forwardRef(function LinkRemovedIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"link-removed\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M18.5 11C19.281 10.219 19.281 8.78108 18.5 8.00003L18 7.50003C17.2189 6.71898 15.781 6.71898 15 7.50003L13 9.50003M15.5 14C14.7189 14.7811 13.281 14.7811 12.5 14M6.5 14C5.71895 14.7811 5.71894 16.219 6.49999 17L6.99999 17.5C7.78104 18.2811 9.21894 18.2811 9.99999 17.5L12 15.5M12.5 11C11.719 10.219 10.281 10.219 9.5 11M3 12.5H22\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst LockIcon = forwardRef(function LockIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"lock\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M15.5 11.5V8.5C15.5 6.5 14 5.5 12.5 5.5C11 5.5 9.5 6.5 9.5 8.5V11.5M7.5 11.5H17.5V19.5H7.5V11.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst LogoJsIcon = forwardRef(function LogoJsIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"logo-js\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M20 5H5V20H20V5ZM12.5254 16.1572C12.5254 17.4189 11.7742 18.1536 10.4792 18.1536C9.24243 18.1536 8.49121 17.4189 8.45801 16.2942V16.261H9.67407V16.2859C9.69897 16.7466 9.9729 17.0703 10.4626 17.0703C10.9939 17.0703 11.272 16.7507 11.272 16.1489V12.011H12.5254V16.1572ZM18.2893 16.2153C18.2893 17.4023 17.3679 18.1536 15.8738 18.1536C14.4419 18.1536 13.5371 17.4688 13.4666 16.4062L13.4624 16.3398H14.6702L14.6743 16.3813C14.72 16.8296 15.2056 17.1326 15.907 17.1326C16.5752 17.1326 17.0359 16.813 17.0359 16.3523V16.3481C17.0359 15.9539 16.7412 15.7339 15.9983 15.5803L15.3674 15.4517C14.1223 15.1985 13.5869 14.6174 13.5869 13.7085V13.7043C13.5869 12.592 14.5415 11.8574 15.8696 11.8574C17.2683 11.8574 18.0901 12.5962 18.1689 13.5964L18.1731 13.6504H16.9944L16.9861 13.6006C16.9155 13.1731 16.5005 12.8743 15.8696 12.8743C15.2512 12.8784 14.8403 13.1606 14.8403 13.6089V13.613C14.8403 14.0032 15.1309 14.2356 15.8364 14.3809L16.4714 14.5095C17.7373 14.771 18.2893 15.2773 18.2893 16.2112V16.2153Z\",\n fill: \"currentColor\"\n })\n });\n});\nconst LogoTsIcon = forwardRef(function LogoTsIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"logo-ts\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M20 5H5V20H20V5ZM11.0769 18H9.82349V13.0444H8.02637V12.011H12.874V13.0444H11.0769V18ZM18.2893 16.2153C18.2893 17.4023 17.3679 18.1536 15.8738 18.1536C14.4419 18.1536 13.5371 17.4688 13.4666 16.4062L13.4624 16.3398H14.6702L14.6743 16.3813C14.72 16.8296 15.2056 17.1326 15.907 17.1326C16.5752 17.1326 17.0359 16.813 17.0359 16.3523V16.3481C17.0359 15.9539 16.7412 15.7339 15.9983 15.5803L15.3674 15.4517C14.1223 15.1985 13.5869 14.6174 13.5869 13.7085V13.7043C13.5869 12.592 14.5415 11.8574 15.8696 11.8574C17.2683 11.8574 18.0901 12.5962 18.1689 13.5964L18.1731 13.6504H16.9944L16.9861 13.6006C16.9155 13.1731 16.5005 12.8743 15.8696 12.8743C15.2512 12.8784 14.8403 13.1606 14.8403 13.6089V13.613C14.8403 14.0032 15.1309 14.2356 15.8364 14.3809L16.4714 14.5095C17.7373 14.771 18.2893 15.2773 18.2893 16.2112V16.2153Z\",\n fill: \"currentColor\"\n })\n });\n});\nconst MasterDetailIcon = forwardRef(function MasterDetailIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"master-detail\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M7 9.5H10M11.5 6.5V18.5M7 12.5H10M13 9.5H18M7 15.5H10M5.5 6.5H19.5V18.5H5.5V6.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst MenuIcon = forwardRef(function MenuIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"menu\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M6 7.5H19M6 17.5H19M6 12.5H19\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst MobileDeviceIcon = forwardRef(function MobileDeviceIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"mobile-device\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M7.5 6.5C7.5 5.39543 8.39543 4.5 9.5 4.5H15.5C16.6046 4.5 17.5 5.39543 17.5 6.5V18.5C17.5 19.6046 16.6046 20.5 15.5 20.5H9.5C8.39543 20.5 7.5 19.6046 7.5 18.5V6.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M13.5 17.5C13.5 18.0523 13.0523 18.5 12.5 18.5C11.9477 18.5 11.5 18.0523 11.5 17.5C11.5 16.9477 11.9477 16.5 12.5 16.5C13.0523 16.5 13.5 16.9477 13.5 17.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst MoonIcon = forwardRef(function MoonIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"moon\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M19.6065 16.1775C18.9417 16.387 18.234 16.5 17.5 16.5C13.634 16.5 10.5 13.366 10.5 9.5C10.5 7.54163 11.3042 5.77109 12.6004 4.50062C12.567 4.50021 12.5335 4.5 12.5 4.5C8.08172 4.5 4.5 8.08172 4.5 12.5C4.5 16.9183 8.08172 20.5 12.5 20.5C15.5924 20.5 18.275 18.7454 19.6065 16.1775Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst NumberIcon = forwardRef(function NumberIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"number\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M21.0165 17.6336H3.83636V16.4336H21.0165V17.6336Z\",\n fill: \"currentColor\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M7.09808 13.3967V7.508H5.74066L3.83636 8.78241V10.091L5.65277 8.88495H5.74066V13.3967H3.84125V14.5539H8.89984V13.3967H7.09808Z\",\n fill: \"currentColor\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M9.81781 9.63202V9.66132H11.1069V9.62714C11.1069 8.95331 11.5756 8.49432 12.2739 8.49432C12.9575 8.49432 13.4018 8.89471 13.4018 9.50507C13.4018 9.9787 13.1528 10.3498 12.1909 11.3117L9.89594 13.5822V14.5539H14.8618V13.3869H11.7807V13.299L13.1577 11.9855C14.3491 10.843 14.7543 10.1838 14.7543 9.41229C14.7543 8.19159 13.7729 7.36639 12.3178 7.36639C10.8383 7.36639 9.81781 8.28436 9.81781 9.63202Z\",\n fill: \"currentColor\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M17.6694 11.4631H18.5092C19.3198 11.4631 19.8422 11.8683 19.8422 12.4982C19.8422 13.1183 19.3295 13.5139 18.5239 13.5139C17.767 13.5139 17.2592 13.133 17.2104 12.5324H15.9262C15.9897 13.8508 17.0248 14.6955 18.5629 14.6955C20.1401 14.6955 21.2192 13.841 21.2192 12.591C21.2192 11.6584 20.6528 11.0334 19.7006 10.9211V10.8332C20.4721 10.6769 20.9457 10.0666 20.9457 9.23651C20.9457 8.12323 19.9741 7.36639 18.5434 7.36639C17.0541 7.36639 16.1118 8.17694 16.0629 9.50018H17.2983C17.3422 8.88007 17.8061 8.48456 18.4995 8.48456C19.2075 8.48456 19.6567 8.85565 19.6567 9.44159C19.6567 10.0324 19.1977 10.4182 18.4946 10.4182H17.6694V11.4631Z\",\n fill: \"currentColor\"\n })]\n });\n});\nconst OkHandIcon = forwardRef(function OkHandIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"ok-hand\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M15.9957 11.5C14.8197 10.912 11.9957 9 10.4957 9C8.9957 9 5.17825 11.7674 6 13C7 14.5 9.15134 11.7256 10.4957 12C11.8401 12.2744 13 13.5 13 14.5C13 15.5 11.8401 16.939 10.4957 16.5C9.15134 16.061 8.58665 14.3415 7.4957 14C6.21272 13.5984 5.05843 14.6168 5.5 15.5C5.94157 16.3832 7.10688 17.6006 8.4957 19C9.74229 20.2561 11.9957 21.5 14.9957 20C17.9957 18.5 18.5 16.2498 18.5 13C18.5 11.5 13.7332 5.36875 11.9957 4.5C10.9957 4 10 5 10.9957 6.5C11.614 7.43149 13.5 9.27705 14 10.3751M15.5 8C15.5 8 15.3707 7.5 14.9957 6C14.4957 4 15.9957 3.5 16.4957 4.5C17.1281 5.76491 18.2872 10.9147 18.4957 13\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst OlistIcon = forwardRef(function OlistIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"olist\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M10 7.5H19M10 12.5H19M10 17.5H19M5 18.5H7.5L7 17.5L7.5 16.5H5M5 6.5H6.5V8.5M5 8.5H6.5M6.5 8.5H8M8 13.5H6L7 11.5H5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst OverageIcon = forwardRef(function OverageIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"overage\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M18.5 11V6.5H14\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M6.5 18.5L9 16L12 13L18.5 6.5M3 13.5H22\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst PackageIcon = forwardRef(function PackageIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"package\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M12.5 13V22M12.5 13L4.5 8M12.5 13L20.5 8M8.5 5.5L16.5 10.5M4.5 8L12.5 3L20.5 8V17L12.5 22L4.5 17V8Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst PauseIcon = forwardRef(function PauseIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"pause\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M10.5 7.5H8.5V17.5H10.5V7.5Z\",\n fill: \"currentColor\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M16.5 7.5H14.5V17.5H16.5V7.5Z\",\n fill: \"currentColor\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M10.5 7.5H8.5V17.5H10.5V7.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M16.5 7.5H14.5V17.5H16.5V7.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2\n })]\n });\n});\nconst PinIcon = forwardRef(function PinIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"pin\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M6.5 10.5C6.5 7 9 4.5 12.5 4.5C16 4.5 18.5 7 18.5 10.5C18.5 14 15.5 17.5 12.5 20.5C9.5 17.5 6.5 14 6.5 10.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M14 10.5C14 11.3284 13.3284 12 12.5 12C11.6716 12 11 11.3284 11 10.5C11 9.67157 11.6716 9 12.5 9C13.3284 9 14 9.67157 14 10.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst PinRemovedIcon = forwardRef(function PinRemovedIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"pin-removed\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M7.39787 14C8.51075 16.2897 10.5054 18.5054 12.5 20.5C14.4946 18.5054 16.4892 16.2897 17.6021 14M6.52009 11C6.50681 10.8334 6.5 10.6667 6.5 10.5C6.5 7 9 4.5 12.5 4.5C16 4.5 18.5 7 18.5 10.5C18.5 10.6667 18.4932 10.8334 18.4799 11M3 12.5H22\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst PlayIcon = forwardRef(function PlayIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"play\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M7.5 18.5V6.5L17.5 12.5L7.5 18.5Z\",\n fill: \"currentColor\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst PlugIcon = forwardRef(function PlugIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"plug\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M13.25 8.5L16.75 5M16.25 11.5L19.75 8M9.25 15.5L5.25 19.5M7.75 14L9.75 12C8.25 10 8.75 9 9.75 8C10.15 7.6 11.25 6.5 11.25 6.5L18.25 13.5C18.25 13.5 17.3825 14.3675 16.75 15C15.75 16 14.75 16.5 12.75 15L10.75 17L7.75 14Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst PresentationIcon = forwardRef(function PresentationIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"presentation\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M10.5 18H5.5V8.5H19.5V18H14.5M10.5 18L9 22M10.5 18H14.5M14.5 18L16 22M4.5 8.5H20.5V6.5H4.5V8.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst PublishIcon = forwardRef(function PublishIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"publish\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M4.99997 5.50006H20M12.5 9.00005V20\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M7.5 14L12.5 9.00006L17.5 14\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst ReadOnlyIcon = forwardRef(function ReadOnlyIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"read-only\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M15 7L18 10M10 12L7 15L6 19L10 18L13 15M12 10L17 5L20 8L15 13M19 19L5 5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst RemoveCircleIcon = forwardRef(function RemoveCircleIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"remove-circle\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M8 12.4H17M20.5 12.5C20.5 16.9183 16.9183 20.5 12.5 20.5C8.08172 20.5 4.5 16.9183 4.5 12.5C4.5 8.08172 8.08172 4.5 12.5 4.5C16.9183 4.5 20.5 8.08172 20.5 12.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst RemoveIcon = forwardRef(function RemoveIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"remove\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M5 12.5H20\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst ResetIcon = forwardRef(function ResetIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"reset\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M4.56189 13.5L4.14285 13.9294C4.25676 14.0406 4.41017 14.1019 4.56932 14.1C4.72847 14.098 4.88032 14.0329 4.99144 13.9189L4.56189 13.5ZM9.92427 15.9243L15.9243 9.92427L15.0757 9.07574L9.07574 15.0757L9.92427 15.9243ZM9.07574 9.92426L15.0757 15.9243L15.9243 15.0757L9.92426 9.07574L9.07574 9.92426ZM19.9 12.5C19.9 16.5869 16.5869 19.9 12.5 19.9V21.1C17.2496 21.1 21.1 17.2496 21.1 12.5H19.9ZM5.1 12.5C5.1 8.41309 8.41309 5.1 12.5 5.1V3.9C7.75035 3.9 3.9 7.75035 3.9 12.5H5.1ZM12.5 5.1C16.5869 5.1 19.9 8.41309 19.9 12.5H21.1C21.1 7.75035 17.2496 3.9 12.5 3.9V5.1ZM5.15728 13.4258C5.1195 13.1227 5.1 12.8138 5.1 12.5H3.9C3.9 12.8635 3.92259 13.2221 3.9665 13.5742L5.15728 13.4258ZM12.5 19.9C9.9571 19.9 7.71347 18.6179 6.38048 16.6621L5.38888 17.3379C6.93584 19.6076 9.54355 21.1 12.5 21.1V19.9ZM4.99144 13.9189L7.42955 11.4189L6.57045 10.5811L4.13235 13.0811L4.99144 13.9189ZM4.98094 13.0706L2.41905 10.5706L1.58095 11.4294L4.14285 13.9294L4.98094 13.0706Z\",\n fill: \"currentColor\"\n })\n });\n});\nconst RestoreIcon = forwardRef(function RestoreIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"restore\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M5.88468 17C7.32466 19.1128 9.75033 20.5 12.5 20.5C16.9183 20.5 20.5 16.9183 20.5 12.5C20.5 8.08172 16.9183 4.5 12.5 4.5C8.08172 4.5 4.5 8.08172 4.5 12.5V13.5M12.5 8V12.5L15.5 15.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M7 11L4.5 13.5L2 11\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst RetrieveIcon = forwardRef(function RetrieveIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"retrieve\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M16 14L12.5 10.5L9 14M5.5 7.5H19.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M12.5 10.5L12.5 17.5M19.5 7.5V19.5H5.5V7.5L7.5 5.5H17.5L19.5 7.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst RetryIcon = forwardRef(function RetryIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"retry\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M20 9L10 9C7.51472 9 5.5 11.0147 5.5 13.5C5.5 15.9853 7.51472 18 10 18H20\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M16 13L20 9L16 5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst RevertIcon = forwardRef(function RevertIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"revert\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M5 9L15 9C17.4853 9 19.5 11.0147 19.5 13.5C19.5 15.9853 17.4853 18 15 18H5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M9 13L5 9L9 5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst RobotIcon = forwardRef(function RobotIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"robot\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M12.5 15.5V17.5M12.5 8.5V6.5M12.5 6.5C13.3284 6.5 14 5.82843 14 5C14 4.17157 13.3284 3.5 12.5 3.5C11.6716 3.5 11 4.17157 11 5C11 5.82843 11.6716 6.5 12.5 6.5ZM20.5 20.5V19.5C20.5 18.3954 19.6046 17.5 18.5 17.5H6.5C5.39543 17.5 4.5 18.3954 4.5 19.5V20.5H20.5ZM11.5 12C11.5 12.5523 11.0523 13 10.5 13C9.94772 13 9.5 12.5523 9.5 12C9.5 11.4477 9.94772 11 10.5 11C11.0523 11 11.5 11.4477 11.5 12ZM15.5 12C15.5 12.5523 15.0523 13 14.5 13C13.9477 13 13.5 12.5523 13.5 12C13.5 11.4477 13.9477 11 14.5 11C15.0523 11 15.5 11.4477 15.5 12ZM8.5 15.5H16.5C17.6046 15.5 18.5 14.6046 18.5 13.5V10.5C18.5 9.39543 17.6046 8.5 16.5 8.5H8.5C7.39543 8.5 6.5 9.39543 6.5 10.5V13.5C6.5 14.6046 7.39543 15.5 8.5 15.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst RocketIcon = forwardRef(function RocketIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"rocket\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M12.5 20.5L15.5 14M11 9.49999L4.5 12.5M9 14C9 14 7.54688 14.9531 6.5 16C5.5 17 4.5 20.5 4.5 20.5C4.5 20.5 8 19.5 9 18.5C10 17.5 11 16 11 16M9 14C9 14 10.1 9.9 12.5 7.5C15.5 4.5 20.5 4.5 20.5 4.5C20.5 4.5 20.5 9.5 17.5 12.5C15.7492 14.2508 11 16 11 16L9 14ZM16.5 9.99999C16.5 10.8284 15.8284 11.5 15 11.5C14.1716 11.5 13.5 10.8284 13.5 9.99999C13.5 9.17157 14.1716 8.49999 15 8.49999C15.8284 8.49999 16.5 9.17157 16.5 9.99999Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst SchemaIcon = forwardRef(function SchemaIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"schema\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M12.5 9.5V12.5M12.5 12.5H8.5V15.5M12.5 12.5H16.5V15.5M10.5 5.5H14.5V9.5H10.5V5.5ZM6.5 15.5H10.5V19.5H6.5V15.5ZM14.5 15.5H18.5V19.5H14.5V15.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst SearchIcon = forwardRef(function SearchIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"search\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M15.0355 15.0355L19 19M16.5 11.5C16.5 14.2614 14.2614 16.5 11.5 16.5C8.73858 16.5 6.5 14.2614 6.5 11.5C6.5 8.73858 8.73858 6.5 11.5 6.5C14.2614 6.5 16.5 8.73858 16.5 11.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst SelectIcon = forwardRef(function SelectIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"select\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M16.5 15.5L12.5 19.5L8.5 15.5M8.5 9.5L12.5 5.5L16.5 9.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst ShareIcon = forwardRef(function ShareIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"share\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M15 9.5H18.5V19.5H6.5L6.5 9.5H10M12.5 16V3.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M9.5 6.5L12.5 3.5L15.5 6.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst SortIcon = forwardRef(function SortIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"sort\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M8.5 18.5V6M16.5 19V6.5M12 15L8.5 18.5L5 15M13 10L16.5 6.5L20 10\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst SparkleIcon = forwardRef(function SparkleIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"sparkle\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M10.5 10.5C8.5 12.5 5 12.5 5 12.5C5 12.5 8.5 12.5 10.5 14.5C12.5 16.5 12.5 20 12.5 20C12.5 20 12.5 16.5 14.5 14.5C16.5 12.5 20 12.5 20 12.5C20 12.5 16.5 12.5 14.5 10.5C12.5 8.5 12.5 5 12.5 5C12.5 5 12.5 8.5 10.5 10.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst SparklesIcon = forwardRef(function SparklesIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"sparkles\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M11 3.5V5M11 5V6.5M11 5H12.5M11 5H9.5M9.5 15C9.5 15 12.2308 14.7692 13.5 13.5C14.7692 12.2308 15 9.5 15 9.5C15 9.5 15.2308 12.2308 16.5 13.5C17.7692 14.7692 20.5 15 20.5 15C20.5 15 17.7692 15.2308 16.5 16.5C15.2308 17.7692 15 20.5 15 20.5C15 20.5 14.7692 17.7692 13.5 16.5C12.2308 15.2308 9.5 15 9.5 15ZM4.5 10C4.5 10 5.72308 9.87692 6.3 9.3C6.87692 8.72308 7 7.5 7 7.5C7 7.5 7.12308 8.72308 7.7 9.3C8.27692 9.87692 9.5 10 9.5 10C9.5 10 8.27692 10.1231 7.7 10.7C7.12308 11.2769 7 12.5 7 12.5C7 12.5 6.87692 11.2769 6.3 10.7C5.72308 10.1231 4.5 10 4.5 10Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })\n });\n});\nconst SpinnerIcon = forwardRef(function SpinnerIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"spinner\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M4.5 12.5C4.5 16.9183 8.08172 20.5 12.5 20.5C16.9183 20.5 20.5 16.9183 20.5 12.5C20.5 8.08172 16.9183 4.5 12.5 4.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst SplitHorizontalIcon = forwardRef(function SplitHorizontalIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"split-horizontal\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M19.5 10.5V20.5H5.5V10.5M19.5 10.5H5.5M19.5 10.5V4.5H5.5V10.5M12.5 13V15.5M12.5 18V15.5M12.5 15.5H15M12.5 15.5H10\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst SplitVerticalIcon = forwardRef(function SplitVerticalIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"split-vertical\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M10.5 5.5V19.5M13 12.5H15.5M18 12.5H15.5M15.5 12.5V15M15.5 12.5V10M4.5 5.5H20.5V19.5H4.5V5.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst SquareIcon = forwardRef(function SquareIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"square\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"rect\", {\n x: 5.5,\n y: 5.5,\n width: 14,\n height: 14,\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst StackCompactIcon = forwardRef(function StackCompactIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"stack-compact\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M5.5 15.5V18.5H19.5V15.5M5.5 15.5H19.5M5.5 15.5V9.5M19.5 15.5V9.5M5.5 9.5V6.5H19.5V9.5M5.5 9.5H19.5M5.5 12.5H19.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst StackIcon = forwardRef(function StackIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"stack\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M5.5 12.5H19.5M5.5 18.5H19.5V6.5H5.5V18.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst StarIcon = forwardRef(function StarIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"star\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M13 4L15.2747 9.8691L21.5595 10.2188L16.6806 14.1959L18.2901 20.2812L13 16.87L7.70993 20.2812L9.31941 14.1959L4.44049 10.2188L10.7253 9.8691L13 4Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst StopIcon = forwardRef(function StopIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"stop\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"rect\", {\n x: 7.5,\n y: 7.5,\n width: 10,\n height: 10,\n fill: \"currentColor\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst StrikethroughIcon = forwardRef(function StrikethroughIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"strikethrough\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M12.5656 7.73438C11.0656 7.73438 10.0734 8.48438 10.0734 9.625C10.0734 10.2317 10.3649 10.6613 11.0519 11H8.90358C8.71703 10.6199 8.62813 10.1801 8.62813 9.67188C8.62813 7.75781 10.2297 6.46094 12.6125 6.46094C14.7922 6.46094 16.4172 7.75781 16.5344 9.57812H15.1203C14.925 8.42188 13.9719 7.73438 12.5656 7.73438Z\",\n fill: \"currentColor\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M12.4875 18.2656C10.0969 18.2656 8.44844 17 8.3 15.0547H9.72188C9.89375 16.2344 11.0188 16.9844 12.6203 16.9844C14.1359 16.9844 15.2531 16.1641 15.2531 15.0469C15.2531 14.6375 15.1255 14.292 14.8589 14H16.5912C16.6638 14.266 16.6984 14.5566 16.6984 14.875C16.6984 16.9453 15.0656 18.2656 12.4875 18.2656Z\",\n fill: \"currentColor\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M7 13.1H18V11.9H7V13.1Z\",\n fill: \"currentColor\"\n })]\n });\n});\nconst StringIcon = forwardRef(function StringIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"string\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M11.6748 15.5227H13.1855L9.87842 6.36304H8.34863L5.0415 15.5227H6.50146L7.3457 13.0916H10.8369L11.6748 15.5227ZM9.04053 8.02612H9.14844L10.4751 11.8982H7.70752L9.04053 8.02612Z\",\n fill: \"currentColor\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M16.8101 14.488C16.0674 14.488 15.5278 14.1262 15.5278 13.5042C15.5278 12.8948 15.9595 12.571 16.9116 12.5076L18.6001 12.3997V12.9773C18.6001 13.8342 17.8384 14.488 16.8101 14.488ZM16.4609 15.637C17.3687 15.637 18.124 15.2434 18.5366 14.5515H18.6445V15.5227H19.9585V10.8C19.9585 9.34009 18.981 8.47681 17.248 8.47681C15.6802 8.47681 14.563 9.23853 14.4233 10.4255H15.7437C15.896 9.93677 16.4229 9.65747 17.1846 9.65747C18.1177 9.65747 18.6001 10.0701 18.6001 10.8V11.3967L16.7275 11.5046C15.0835 11.6062 14.1567 12.3235 14.1567 13.5676C14.1567 14.8308 15.1279 15.637 16.4609 15.637Z\",\n fill: \"currentColor\"\n }), /* @__PURE__ */jsx(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M19.9585 18.637L5.0415 18.637V17.437L19.9585 17.437V18.637Z\",\n fill: \"currentColor\"\n })]\n });\n});\nconst SunIcon = forwardRef(function SunIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"sun\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M19 12.5H22M3 12.5H6M12.5 6V3M12.5 22V19M17.3891 7.61091L19.5104 5.48959M5.48959 19.5104L7.61091 17.3891M7.61091 7.61091L5.48959 5.48959M19.5104 19.5104L17.3891 17.3891M16 12.5C16 14.433 14.433 16 12.5 16C10.567 16 9 14.433 9 12.5C9 10.567 10.567 9 12.5 9C14.433 9 16 10.567 16 12.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst SyncIcon = forwardRef(function SyncIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"sync\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M13.5 4.5H12.5C8.08172 4.5 4.5 8.08172 4.5 12.5C4.5 15.6631 6.33576 18.3975 9 19.6958M11.5 20.5H12.5C16.9183 20.5 20.5 16.9183 20.5 12.5C20.5 9.33688 18.6642 6.60253 16 5.30423\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M14 17.5619L11.5 20.5L14.5 23.0619M11 7.43811L13.5 4.50001L10.5 1.93811\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst TagIcon = forwardRef(function TagIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"tag\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M12.5 20L5 20L5 12.5L12.5 5L20 12.5L12.5 20Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M11 15.5C11 16.3284 10.3284 17 9.5 17C8.67157 17 8 16.3284 8 15.5C8 14.6716 8.67157 14 9.5 14C10.3284 14 11 14.6716 11 15.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst TagsIcon = forwardRef(function TagsIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"tags\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M12.1562 7.93179L13.9717 6.11633L20.3553 12.5L13.9717 18.8836L10.6855 18.8836M11.0283 18.8836L17.4119 12.5L11.0283 6.11633L4.64462 12.5L4.64462 18.8836L11.0283 18.8836ZM9.75153 15.0534C9.75153 15.7585 9.17992 16.3302 8.47481 16.3302C7.76969 16.3302 7.19808 15.7585 7.19808 15.0534C7.19808 14.3483 7.76969 13.7767 8.47481 13.7767C9.17992 13.7767 9.75153 14.3483 9.75153 15.0534Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst TerminalIcon = forwardRef(function TerminalIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"terminal\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M8.5 9.5L11.5 12.5L8.5 15.5M13 15.5H17M5.5 6.5H19.5V18.5H5.5V6.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst ThLargeIcon = forwardRef(function ThLargeIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"th-large\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M12.5 6.5V12.5M12.5 12.5V18.5M12.5 12.5H20.5M12.5 12.5H4.5M4.5 6.5H20.5V18.5H4.5V6.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst ThListIcon = forwardRef(function ThListIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"th-list\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M9.5 6.5V10.5M9.5 10.5V14.5M9.5 10.5H20.5M9.5 10.5H4.5M9.5 14.5V18.5M9.5 14.5H20.5M9.5 14.5H4.5M4.5 6.5H20.5V18.5H4.5V6.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst TiersIcon = forwardRef(function TiersIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"tiers\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M16.5 14.5L20.5 16.5L12.5 20.5L4.5 16.5L8.5 14.5M16.5 10.5L20.5 12.5L12.5 16.5L4.5 12.5L8.5 10.5M12.5 12.5L20.5 8.5L12.5 4.5L4.5 8.5L12.5 12.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst ToggleArrowRightIcon = forwardRef(function ToggleArrowRightIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"toggle-arrow-right\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M10 16.5V8.5L16 12.5L10 16.5Z\",\n fill: \"currentColor\",\n stroke: \"currentColor\",\n strokeLinejoin: \"round\"\n })\n });\n});\nconst TokenIcon = forwardRef(function TokenIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"token\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M17.5711 12.5C17.5711 15.2614 15.3325 17.5 12.5711 17.5M7.57107 12.5C7.57107 9.73858 9.80964 7.5 12.5711 7.5M20.5 12.5C20.5 16.9183 16.9183 20.5 12.5 20.5C8.08172 20.5 4.5 16.9183 4.5 12.5C4.5 8.08172 8.08172 4.5 12.5 4.5C16.9183 4.5 20.5 8.08172 20.5 12.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst TransferIcon = forwardRef(function TransferIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"transfer\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M19.5 16.5H6M5.5 8.5L19 8.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M16 13L19.5 16.5L16 20M9 12L5.5 8.5L9 5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst TranslateIcon = forwardRef(function TranslateIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"translate\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M9.4 5.4H4V6.6H13.2189C13.1612 6.78478 13.0895 6.99578 13.0025 7.22211C12.7032 8.00031 12.2402 8.91125 11.5757 9.57574L10 11.1515L9.42426 10.5757C8.72102 9.8725 8.25297 9.16987 7.96199 8.64611C7.81668 8.38455 7.71617 8.16874 7.65305 8.02146C7.62151 7.94787 7.59937 7.89154 7.5857 7.85534C7.57886 7.83725 7.57415 7.8242 7.57144 7.81657L7.56886 7.80922C7.56886 7.80922 7.56921 7.81026 7 8C6.43079 8.18974 6.43091 8.19009 6.43091 8.19009L6.43133 8.19135L6.43206 8.19351L6.4341 8.19948L6.44052 8.21786C6.44587 8.23292 6.45336 8.25357 6.46313 8.27942C6.48266 8.33112 6.5113 8.40369 6.55008 8.49416C6.62758 8.67501 6.74582 8.92795 6.91301 9.22889C7.24703 9.83013 7.77898 10.6275 8.57574 11.4243L9.15147 12L4.57964 16.5718L4.57655 16.5749L4.57577 16.5757L5.4243 17.4242L5.42688 17.4216L10.0368 12.8117L12.6159 14.9609L13.3841 14.0391L10.8888 11.9597L12.4243 10.4243C13.2598 9.58875 13.7968 8.49969 14.1225 7.65289C14.2818 7.23863 14.395 6.87072 14.4696 6.6H16V5.4H10.6V4H9.4V5.4ZM17.4405 10L21.553 19.7672H20.2509L19.1279 17.1H14.8721L13.7491 19.7672H12.447L16.5595 10H17.4405ZM15.3773 15.9H18.6227L17 12.0462L15.3773 15.9Z\",\n fill: \"currentColor\"\n })\n });\n});\nconst TrashIcon = forwardRef(function TrashIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"trash\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M5 6.5H20M10 6.5V4.5C10 3.94772 10.4477 3.5 11 3.5H14C14.5523 3.5 15 3.94772 15 4.5V6.5M12.5 9V17M15.5 9L15 17M9.5 9L10 17M18.5 6.5L17.571 18.5767C17.5309 19.0977 17.0965 19.5 16.574 19.5H8.42603C7.90349 19.5 7.46905 19.0977 7.42898 18.5767L6.5 6.5H18.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst TrendUpwardIcon = forwardRef(function TrendUpwardIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"trend-upward\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M4.5 18.5L11.5 10.5L13.5 14.5L20.5 6.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M20.5 11V6.5H16\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst TriangleOutlineIcon = forwardRef(function TriangleOutlineIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"triangle-outline\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M20.5 18.5H4.5L12.5 5.5L20.5 18.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst TrolleyIcon = forwardRef(function TrolleyIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"trolley\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M8 17.5L5.81763 6.26772C5.71013 5.81757 5.30779 5.5 4.84498 5.5H3M8 17.5H17M8 17.5C8.82843 17.5 9.5 18.1716 9.5 19C9.5 19.8284 8.82843 20.5 8 20.5C7.17157 20.5 6.5 19.8284 6.5 19C6.5 18.1716 7.17157 17.5 8 17.5ZM17 17.5C17.8284 17.5 18.5 18.1716 18.5 19C18.5 19.8284 17.8284 20.5 17 20.5C16.1716 20.5 15.5 19.8284 15.5 19C15.5 18.1716 16.1716 17.5 17 17.5ZM7.78357 14.5H17.5L19 7.5H6\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst TruncateIcon = forwardRef(function TruncateIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"truncate\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M5 12.5H20M8.5 19.5L12.5 15.5L16.5 19.5M16.5 5.5L12.5 9.5L8.5 5.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst TwitterIcon = forwardRef(function TwitterIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"twitter\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M18.8738 6.65751C18.1994 5.9447 17.2445 5.5 16.1857 5.5C14.1423 5.5 12.4857 7.15655 12.4857 9.2C12.4857 9.55263 12.535 9.89374 12.6272 10.2168C7.0826 9.56422 4.55703 6.02857 4.55703 6.02857C4.55703 6.02857 4.02846 9.2 6.14274 11.3143C5.08571 11.3143 4.55703 10.7857 4.55703 10.7857C4.55703 10.7857 4.55703 13.4286 7.19989 14.4857C6.67143 15.0143 5.61417 14.4857 5.61417 14.4857C5.97533 15.9303 7.45606 16.8562 8.82133 17.1358C6.67298 19.1676 3.5 18.7143 3.5 18.7143C5.14562 19.771 7.21334 20.3 9.31429 20.3C16.1214 20.3 19.8162 15.6315 19.8848 9.37762C20.8722 8.58943 22 7.08571 22 7.08571C22 7.08571 21.277 7.45458 19.6913 7.98315C21.277 6.92601 21.4714 5.5 21.4714 5.5C21.4714 5.5 20.4135 6.55789 18.8738 6.65751Z\",\n fill: \"currentColor\"\n })\n });\n});\nconst UlistIcon = forwardRef(function UlistIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"ulist\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M7.10153 17.5001C7.10153 17.8323 6.83221 18.1016 6.5 18.1016C6.16778 18.1016 5.89847 17.8323 5.89847 17.5001C5.89847 17.1678 6.16778 16.8985 6.5 16.8985C6.83221 16.8985 7.10153 17.1678 7.10153 17.5001Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M7.10153 7.5C7.10153 7.83221 6.83221 8.10153 6.5 8.10153C6.16778 8.10153 5.89847 7.83221 5.89847 7.5C5.89847 7.16778 6.16778 6.89847 6.5 6.89847C6.83221 6.89847 7.10153 7.16778 7.10153 7.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M7.10153 12.5C7.10153 12.8322 6.83221 13.1015 6.5 13.1015C6.16778 13.1015 5.89847 12.8322 5.89847 12.5C5.89847 12.1678 6.16778 11.8985 6.5 11.8985C6.83221 11.8985 7.10153 12.1678 7.10153 12.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M10 7.5H19M10 17.5H19M10 12.5H19\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst UnderlineIcon = forwardRef(function UnderlineIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"underline\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M9.52791 7.11407H8.17V14.2582C8.17 16.5817 9.79195 18.2565 12.4927 18.2565C15.1934 18.2565 16.8154 16.5817 16.8154 14.2582V7.11407H15.4574V14.1677C15.4574 15.8122 14.3787 17.0042 12.4927 17.0042C10.6067 17.0042 9.52791 15.8122 9.52791 14.1677V7.11407Z\",\n fill: \"currentColor\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M7 20.5H18\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst UndoIcon = forwardRef(function UndoIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"undo\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M5.88468 17C7.32466 19.1128 9.75033 20.5 12.5 20.5C16.9183 20.5 20.5 16.9183 20.5 12.5C20.5 8.08172 16.9183 4.5 12.5 4.5C8.08172 4.5 4.5 8.08172 4.5 12.5V13.5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M7 11L4.5 13.5L2 11\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst UnknownIcon = forwardRef(function UnknownIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"unknown\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M12.5 13C12.5 11 14 11.5 14 10C14 9.34375 13.5 8.5 12.5 8.5C11.5 8.5 11 9 10.5 9.5M12.5 16V14.5M5.5 5.5H19.5V19.5H5.5V5.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst UnlockIcon = forwardRef(function UnlockIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"unlock\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M9.5 11.5V8.5C9.5 6.5 8 5.5 6.5 5.5C5 5.5 3.5 6.5 3.5 8.5V11.5M7.5 11.5H17.5V19.5H7.5V11.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst UnpublishIcon = forwardRef(function UnpublishIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"unpublish\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M5 19.5H20M12.5 16V5\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M17.5 11L12.5 16L7.5 11\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst UploadIcon = forwardRef(function UploadIcon2(props, ref) {\n return /* @__PURE__ */jsxs(\"svg\", {\n \"data-sanity-icon\": \"upload\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"M12.5 6.00003V15.5M5.5 15.5H19.5V19.5H5.5V15.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"M7.5 11L12.5 6.00003L17.5 11\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })]\n });\n});\nconst UserIcon = forwardRef(function UserIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"user\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M8 14.5C7 15 5.5 16 5.5 19.5H19.5C19.5 16 18.3416 15.1708 17 14.5C16 14 14 14 14 12.5C14 11 15 10.25 15 8.25C15 6.25 14 5.25 12.5 5.25C11 5.25 10 6.25 10 8.25C10 10.25 11 11 11 12.5C11 14 9 14 8 14.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst UsersIcon = forwardRef(function UsersIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"users\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M17.5 18.5H21.5C21.5 15 20.8416 14.1708 19.5 13.5C18.5 13 16.5 12.5 16.5 11C16.5 9.5 17.5 9 17.5 7C17.5 5 16.5 4 15 4C13.6628 4 12.723 4.79472 12.5347 6.38415M4.5 20.5C4.5 17 5.5 16 6.5 15.5C7.5 15 9.5 14.5 9.5 13C9.5 11.5 8.5 11 8.5 9C8.5 7 9.5 6 11 6C12.5 6 13.5 7 13.5 9C13.5 11 12.5 11.5 12.5 13C12.5 14.5 14.5 15 15.5 15.5C16.8416 16.1708 17.5 17 17.5 20.5H4.5Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst WarningFilledIcon = forwardRef(function WarningFilledIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"warning-filled\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M14.741 5.12637C13.7357 3.41737 11.2643 3.41737 10.259 5.12637L3.7558 16.1818C2.73624 17.915 3.98595 20.1 5.99683 20.1H19.0032C21.014 20.1 22.2637 17.915 21.2442 16.1818L14.741 5.12637ZM11.9 9V13H13.1V9H11.9ZM13.1 16V14.5H11.9V16H13.1Z\",\n fill: \"currentColor\"\n })\n });\n});\nconst WarningOutlineIcon = forwardRef(function WarningOutlineIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"warning-outline\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M12.5 9V13M12.5 16V14.5M14.2239 5.43058L20.727 16.486C21.5113 17.8192 20.55 19.5 19.0032 19.5H5.99683C4.45 19.5 3.48869 17.8192 4.27297 16.486L10.7761 5.43058C11.5494 4.11596 13.4506 4.11596 14.2239 5.43058Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.2,\n strokeLinejoin: \"round\"\n })\n });\n});\nconst WrenchIcon = forwardRef(function WrenchIcon2(props, ref) {\n return /* @__PURE__ */jsx(\"svg\", {\n \"data-sanity-icon\": \"wrench\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref,\n ...props,\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"M17.0407 5.14624L17.4649 5.57051C17.6166 5.41887 17.6757 5.19783 17.6202 4.99071C17.5646 4.78359 17.4027 4.62189 17.1955 4.56656L17.0407 5.14624ZM14.4013 7.7856L13.977 7.36134C13.8288 7.50959 13.7687 7.72447 13.8185 7.92813L14.4013 7.7856ZM12.8778 6.26211L12.4535 5.83784V5.83784L12.8778 6.26211ZM11.8309 10.6568L12.2552 11.0811C12.4152 10.9211 12.4716 10.6847 12.401 10.4697L11.8309 10.6568ZM5.63925 16.8485L5.21498 16.4242H5.21498L5.63925 16.8485ZM5.63925 19.935L6.06351 19.5108H6.06351L5.63925 19.935ZM8.72581 19.935L9.15007 20.3593L8.72581 19.935ZM15.1184 13.5425L15.2301 12.953C15.0351 12.916 14.8344 12.9779 14.6941 13.1182L15.1184 13.5425ZM18.9718 12.3561L19.3961 12.7804L18.9718 12.3561ZM20.0877 8.19324L20.6674 8.03843C20.612 7.83125 20.4503 7.66934 20.2432 7.61375C20.0361 7.55816 19.815 7.61734 19.6634 7.76898L20.0877 8.19324ZM17.4483 10.8326L17.3058 11.4154C17.5094 11.4652 17.7243 11.4051 17.8726 11.2569L17.4483 10.8326ZM15 10.2339L14.4172 10.3764C14.4704 10.5938 14.6401 10.7635 14.8575 10.8167L15 10.2339ZM16.6164 4.72198L13.977 7.36134L14.8256 8.20986L17.4649 5.57051L16.6164 4.72198ZM13.3021 6.68637C14.2723 5.71612 15.6467 5.39501 16.8859 5.72593L17.1955 4.56656C15.5595 4.12966 13.7389 4.55245 12.4535 5.83784L13.3021 6.68637ZM12.401 10.4697C11.9779 9.18109 12.2794 7.70907 13.3021 6.68637L12.4535 5.83784C11.0985 7.19284 10.7021 9.14218 11.2608 10.844L12.401 10.4697ZM11.4066 10.2326L5.21498 16.4242L6.06351 17.2727L12.2552 11.0811L11.4066 10.2326ZM5.21498 16.4242C4.12834 17.5109 4.12834 19.2727 5.21498 20.3593L6.06351 19.5108C5.4455 18.8928 5.4455 17.8908 6.06351 17.2727L5.21498 16.4242ZM5.21498 20.3593C6.30163 21.446 8.06343 21.446 9.15007 20.3593L8.30155 19.5108C7.68353 20.1288 6.68153 20.1288 6.06351 19.5108L5.21498 20.3593ZM9.15007 20.3593L15.5426 13.9668L14.6941 13.1182L8.30155 19.5108L9.15007 20.3593ZM18.5475 11.9318C17.6463 12.8331 16.3968 13.1742 15.2301 12.953L15.0066 14.132C16.5466 14.4239 18.2023 13.9741 19.3961 12.7804L18.5475 11.9318ZM19.508 8.34804C19.8389 9.58721 19.5178 10.9616 18.5475 11.9318L19.3961 12.7804C20.6815 11.495 21.1043 9.67445 20.6674 8.03843L19.508 8.34804ZM17.8726 11.2569L20.5119 8.6175L19.6634 7.76898L17.024 10.4083L17.8726 11.2569ZM14.8575 10.8167L17.3058 11.4154L17.5908 10.2498L15.1426 9.65106L14.8575 10.8167ZM13.8185 7.92813L14.4172 10.3764L15.5829 10.0914L14.9841 7.64307L13.8185 7.92813Z\",\n fill: \"currentColor\"\n })\n });\n});\nconst icons = {\n \"access-denied\": AccessDeniedIcon,\n activity: ActivityIcon,\n \"add-circle\": AddCircleIcon,\n add: AddIcon,\n api: ApiIcon,\n archive: ArchiveIcon,\n \"arrow-down\": ArrowDownIcon,\n \"arrow-left\": ArrowLeftIcon,\n \"arrow-right\": ArrowRightIcon,\n \"arrow-top-right\": ArrowTopRightIcon,\n \"arrow-up\": ArrowUpIcon,\n \"bar-chart\": BarChartIcon,\n basket: BasketIcon,\n bell: BellIcon,\n bill: BillIcon,\n \"binary-document\": BinaryDocumentIcon,\n \"block-content\": BlockContentIcon,\n \"block-element\": BlockElementIcon,\n blockquote: BlockquoteIcon,\n bold: BoldIcon,\n book: BookIcon,\n bottle: BottleIcon,\n \"bulb-filled\": BulbFilledIcon,\n \"bulb-outline\": BulbOutlineIcon,\n calendar: CalendarIcon,\n case: CaseIcon,\n \"chart-upward\": ChartUpwardIcon,\n \"checkmark-circle\": CheckmarkCircleIcon,\n checkmark: CheckmarkIcon,\n \"chevron-down\": ChevronDownIcon,\n \"chevron-left\": ChevronLeftIcon,\n \"chevron-right\": ChevronRightIcon,\n \"chevron-up\": ChevronUpIcon,\n circle: CircleIcon,\n clipboard: ClipboardIcon,\n \"clipboard-image\": ClipboardImageIcon,\n clock: ClockIcon,\n \"close-circle\": CloseCircleIcon,\n close: CloseIcon,\n \"code-block\": CodeBlockIcon,\n code: CodeIcon,\n cog: CogIcon,\n collapse: CollapseIcon,\n \"color-wheel\": ColorWheelIcon,\n comment: CommentIcon,\n component: ComponentIcon,\n compose: ComposeIcon,\n controls: ControlsIcon,\n copy: CopyIcon,\n \"credit-card\": CreditCardIcon,\n crop: CropIcon,\n dashboard: DashboardIcon,\n database: DatabaseIcon,\n desktop: DesktopIcon,\n document: DocumentIcon,\n \"document-pdf\": DocumentPdfIcon,\n \"document-remove\": DocumentRemoveIcon,\n \"document-sheet\": DocumentSheetIcon,\n \"document-text\": DocumentTextIcon,\n \"document-video\": DocumentVideoIcon,\n \"document-word\": DocumentWordIcon,\n \"document-zip\": DocumentZipIcon,\n documents: DocumentsIcon,\n dot: DotIcon,\n \"double-chevron-down\": DoubleChevronDownIcon,\n \"double-chevron-left\": DoubleChevronLeftIcon,\n \"double-chevron-right\": DoubleChevronRightIcon,\n \"double-chevron-up\": DoubleChevronUpIcon,\n download: DownloadIcon,\n \"drag-handle\": DragHandleIcon,\n drop: DropIcon,\n \"earth-americas\": EarthAmericasIcon,\n \"earth-globe\": EarthGlobeIcon,\n edit: EditIcon,\n \"ellipsis-horizontal\": EllipsisHorizontalIcon,\n \"ellipsis-vertical\": EllipsisVerticalIcon,\n enter: EnterIcon,\n \"enter-right\": EnterRightIcon,\n envelope: EnvelopeIcon,\n equal: EqualIcon,\n \"error-filled\": ErrorFilledIcon,\n \"error-outline\": ErrorOutlineIcon,\n expand: ExpandIcon,\n \"eye-closed\": EyeClosedIcon,\n \"eye-open\": EyeOpenIcon,\n filter: FilterIcon,\n folder: FolderIcon,\n generate: GenerateIcon,\n groq: GroqIcon,\n \"heart-filled\": HeartFilledIcon,\n heart: HeartIcon,\n \"help-circle\": HelpCircleIcon,\n home: HomeIcon,\n \"ice-cream\": IceCreamIcon,\n image: ImageIcon,\n \"image-remove\": ImageRemoveIcon,\n images: ImagesIcon,\n \"info-filled\": InfoFilledIcon,\n \"info-outline\": InfoOutlineIcon,\n \"inline-element\": InlineElementIcon,\n inline: InlineIcon,\n \"insert-above\": InsertAboveIcon,\n \"insert-below\": InsertBelowIcon,\n italic: ItalicIcon,\n joystick: JoystickIcon,\n launch: LaunchIcon,\n leave: LeaveIcon,\n lemon: LemonIcon,\n link: LinkIcon,\n \"link-removed\": LinkRemovedIcon,\n lock: LockIcon,\n \"logo-js\": LogoJsIcon,\n \"logo-ts\": LogoTsIcon,\n \"master-detail\": MasterDetailIcon,\n menu: MenuIcon,\n \"mobile-device\": MobileDeviceIcon,\n moon: MoonIcon,\n number: NumberIcon,\n \"ok-hand\": OkHandIcon,\n olist: OlistIcon,\n overage: OverageIcon,\n package: PackageIcon,\n pause: PauseIcon,\n pin: PinIcon,\n \"pin-removed\": PinRemovedIcon,\n play: PlayIcon,\n plug: PlugIcon,\n presentation: PresentationIcon,\n publish: PublishIcon,\n \"read-only\": ReadOnlyIcon,\n \"remove-circle\": RemoveCircleIcon,\n remove: RemoveIcon,\n reset: ResetIcon,\n restore: RestoreIcon,\n retrieve: RetrieveIcon,\n retry: RetryIcon,\n revert: RevertIcon,\n robot: RobotIcon,\n rocket: RocketIcon,\n schema: SchemaIcon,\n search: SearchIcon,\n select: SelectIcon,\n share: ShareIcon,\n sort: SortIcon,\n sparkle: SparkleIcon,\n sparkles: SparklesIcon,\n spinner: SpinnerIcon,\n \"split-horizontal\": SplitHorizontalIcon,\n \"split-vertical\": SplitVerticalIcon,\n square: SquareIcon,\n \"stack-compact\": StackCompactIcon,\n stack: StackIcon,\n star: StarIcon,\n stop: StopIcon,\n strikethrough: StrikethroughIcon,\n string: StringIcon,\n sun: SunIcon,\n sync: SyncIcon,\n tag: TagIcon,\n tags: TagsIcon,\n terminal: TerminalIcon,\n \"th-large\": ThLargeIcon,\n \"th-list\": ThListIcon,\n tiers: TiersIcon,\n \"toggle-arrow-right\": ToggleArrowRightIcon,\n token: TokenIcon,\n transfer: TransferIcon,\n translate: TranslateIcon,\n trash: TrashIcon,\n \"trend-upward\": TrendUpwardIcon,\n \"triangle-outline\": TriangleOutlineIcon,\n trolley: TrolleyIcon,\n truncate: TruncateIcon,\n twitter: TwitterIcon,\n ulist: UlistIcon,\n underline: UnderlineIcon,\n undo: UndoIcon,\n unknown: UnknownIcon,\n unlock: UnlockIcon,\n unpublish: UnpublishIcon,\n upload: UploadIcon,\n user: UserIcon,\n users: UsersIcon,\n \"warning-filled\": WarningFilledIcon,\n \"warning-outline\": WarningOutlineIcon,\n wrench: WrenchIcon\n};\nconst Icon = forwardRef(function Icon2(props, ref) {\n const {\n symbol,\n ...restProps\n } = props;\n const iconComponent = icons[symbol];\n if (!iconComponent) {\n return null;\n }\n return createElement(iconComponent, {\n ...restProps,\n ref\n });\n});\nexport { AccessDeniedIcon, ActivityIcon, AddCircleIcon, AddIcon, ApiIcon, ArchiveIcon, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowTopRightIcon, ArrowUpIcon, BarChartIcon, BasketIcon, BellIcon, BillIcon, BinaryDocumentIcon, BlockContentIcon, BlockElementIcon, BlockquoteIcon, BoldIcon, BookIcon, BottleIcon, BulbFilledIcon, BulbOutlineIcon, CalendarIcon, CaseIcon, ChartUpwardIcon, CheckmarkCircleIcon, CheckmarkIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, CircleIcon, ClipboardIcon, ClipboardImageIcon, ClockIcon, CloseCircleIcon, CloseIcon, CodeBlockIcon, CodeIcon, CogIcon, CollapseIcon, ColorWheelIcon, CommentIcon, ComponentIcon, ComposeIcon, ControlsIcon, CopyIcon, CreditCardIcon, CropIcon, DashboardIcon, DatabaseIcon, DesktopIcon, DocumentIcon, DocumentPdfIcon, DocumentRemoveIcon, DocumentSheetIcon, DocumentTextIcon, DocumentVideoIcon, DocumentWordIcon, DocumentZipIcon, DocumentsIcon, DotIcon, DoubleChevronDownIcon, DoubleChevronLeftIcon, DoubleChevronRightIcon, DoubleChevronUpIcon, DownloadIcon, DragHandleIcon, DropIcon, EarthAmericasIcon, EarthGlobeIcon, EditIcon, EllipsisHorizontalIcon, EllipsisVerticalIcon, EnterIcon, EnterRightIcon, EnvelopeIcon, EqualIcon, ErrorFilledIcon, ErrorOutlineIcon, ExpandIcon, EyeClosedIcon, EyeOpenIcon, FilterIcon, FolderIcon, GenerateIcon, GroqIcon, HeartFilledIcon, HeartIcon, HelpCircleIcon, HomeIcon, IceCreamIcon, Icon, ImageIcon, ImageRemoveIcon, ImagesIcon, InfoFilledIcon, InfoOutlineIcon, InlineElementIcon, InlineIcon, InsertAboveIcon, InsertBelowIcon, ItalicIcon, JoystickIcon, LaunchIcon, LeaveIcon, LemonIcon, LinkIcon, LinkRemovedIcon, LockIcon, LogoJsIcon, LogoTsIcon, MasterDetailIcon, MenuIcon, MobileDeviceIcon, MoonIcon, NumberIcon, OkHandIcon, OlistIcon, OverageIcon, PackageIcon, PauseIcon, PinIcon, PinRemovedIcon, PlayIcon, PlugIcon, PresentationIcon, PublishIcon, ReadOnlyIcon, RemoveCircleIcon, RemoveIcon, ResetIcon, RestoreIcon, RetrieveIcon, RetryIcon, RevertIcon, RobotIcon, RocketIcon, SchemaIcon, SearchIcon, SelectIcon, ShareIcon, SortIcon, SparkleIcon, SparklesIcon, SpinnerIcon, SplitHorizontalIcon, SplitVerticalIcon, SquareIcon, StackCompactIcon, StackIcon, StarIcon, StopIcon, StrikethroughIcon, StringIcon, SunIcon, SyncIcon, TagIcon, TagsIcon, TerminalIcon, ThLargeIcon, ThListIcon, TiersIcon, ToggleArrowRightIcon, TokenIcon, TransferIcon, TranslateIcon, TrashIcon, TrendUpwardIcon, TriangleOutlineIcon, TrolleyIcon, TruncateIcon, TwitterIcon, UlistIcon, UnderlineIcon, UndoIcon, UnknownIcon, UnlockIcon, UnpublishIcon, UploadIcon, UserIcon, UsersIcon, WarningFilledIcon, WarningOutlineIcon, WrenchIcon, icons };\n//# sourceMappingURL=index.js.map\n","import isHotkey from 'is-hotkey'\nimport {RefObject, useCallback, useEffect, useRef} from 'react'\n\nconst useKeyPress = (hotkey: string, onPress?: () => void): RefObject<boolean> => {\n const keyPressed = useRef(false)\n\n // If pressed key is our target key then set to true\n const downHandler = useCallback(\n (e: KeyboardEvent) => {\n if (isHotkey(hotkey, e)) {\n keyPressed.current = true\n if (onPress) {\n onPress()\n }\n }\n },\n [hotkey, onPress]\n )\n\n // If released key is our target key then set to false\n const upHandler = useCallback(() => {\n keyPressed.current = false\n }, [])\n\n // Add event listeners\n useEffect(() => {\n window.addEventListener('keydown', downHandler)\n window.addEventListener('keyup', upHandler)\n // Remove event listeners on cleanup\n return () => {\n window.removeEventListener('keydown', downHandler)\n window.removeEventListener('keyup', upHandler)\n }\n }, [downHandler, upHandler])\n\n return keyPressed\n}\n\nexport default useKeyPress\n","import {\n SearchFacetDivider,\n SearchFacetInputProps,\n SearchFacetName,\n SearchFacetOperators\n} from '@types'\nimport groq from 'groq'\n\nexport const divider: SearchFacetDivider = {type: 'divider'}\n\nexport const inputs: Record<SearchFacetName, SearchFacetInputProps> = {\n altText: {\n assetTypes: ['file', 'image'],\n field: 'altText',\n name: 'altText',\n operatorType: 'empty',\n operatorTypes: ['empty', 'notEmpty', null, 'includes', 'doesNotInclude'],\n title: 'Alt text',\n type: 'string',\n value: ''\n },\n description: {\n assetTypes: ['file', 'image'],\n field: 'description',\n name: 'description',\n operatorType: 'empty',\n operatorTypes: ['empty', 'notEmpty', null, 'includes', 'doesNotInclude'],\n title: 'Description',\n type: 'string',\n value: ''\n },\n fileName: {\n assetTypes: ['file', 'image'],\n field: 'originalFilename',\n name: 'filename',\n operatorType: 'includes',\n operatorTypes: ['includes', 'doesNotInclude'],\n title: 'File name',\n type: 'string',\n value: ''\n },\n height: {\n assetTypes: ['image'],\n field: 'metadata.dimensions.height',\n name: 'height',\n operatorType: 'greaterThan',\n operatorTypes: [\n 'greaterThan',\n 'greaterThanOrEqualTo',\n 'lessThan',\n 'lessThanOrEqualTo',\n null,\n 'equalTo'\n ],\n title: 'Height',\n type: 'number',\n value: 400\n },\n inCurrentDocument: {\n assetTypes: ['file', 'image'],\n name: 'inCurrentDocument',\n operatorType: 'is',\n options: [\n {\n name: 'true',\n title: 'True',\n value: groq`_id in $documentAssetIds`\n },\n {\n name: 'false',\n title: 'False',\n value: groq`!(_id in $documentAssetIds)`\n }\n ],\n selectOnly: true,\n title: 'In use in current document',\n type: 'select',\n value: 'true'\n },\n inUse: {\n assetTypes: ['file', 'image'],\n name: 'inUse',\n operatorType: 'is',\n options: [\n {\n name: 'true',\n title: 'True',\n value: groq`count(*[references(^._id)]) > 0`\n },\n {\n name: 'false',\n title: 'False',\n value: groq`count(*[references(^._id)]) == 0`\n }\n ],\n title: 'In use',\n type: 'select',\n value: 'true'\n },\n isOpaque: {\n assetTypes: ['image'],\n field: 'metadata.isOpaque',\n name: 'isOpaque',\n operatorType: 'equalTo',\n options: [\n {\n name: 'true',\n title: 'True',\n value: `false`\n },\n {\n name: 'false',\n title: 'False',\n value: `true`\n }\n ],\n title: 'Has transparency',\n type: 'select',\n value: 'true'\n },\n orientation: {\n assetTypes: ['image'],\n name: 'orientation',\n operatorType: 'is',\n operatorTypes: ['is', 'isNot'],\n options: [\n {\n name: 'portrait',\n title: 'Portrait',\n value: 'metadata.dimensions.aspectRatio < 1'\n },\n {\n name: 'landscape',\n title: 'Landscape',\n value: 'metadata.dimensions.aspectRatio > 1'\n },\n {\n name: 'square',\n title: 'Square',\n value: 'metadata.dimensions.aspectRatio == 1'\n }\n ],\n title: 'Orientation',\n type: 'select',\n value: 'portrait'\n },\n size: {\n assetTypes: ['file', 'image'],\n field: 'size',\n modifier: 'kb',\n modifiers: [\n {\n name: 'kb',\n title: 'KB',\n fieldModifier: fieldName => `round(${fieldName} / 1000)`\n },\n {\n name: 'mb',\n title: 'MB',\n fieldModifier: fieldName => `round(${fieldName} / 1000000)`\n }\n ],\n name: 'size',\n operatorType: 'greaterThan',\n operatorTypes: [\n 'greaterThan',\n 'greaterThanOrEqualTo',\n 'lessThan',\n 'lessThanOrEqualTo',\n null,\n 'equalTo'\n ],\n title: 'File size',\n type: 'number',\n value: 0\n },\n tag: {\n assetTypes: ['file', 'image'],\n field: 'opt.media.tags',\n name: 'tag',\n operatorType: 'references',\n operatorTypes: ['references', 'doesNotReference', null, 'empty', 'notEmpty'],\n title: 'Tags',\n type: 'searchable'\n },\n title: {\n assetTypes: ['file', 'image'],\n field: 'title',\n name: 'title',\n operatorType: 'empty',\n operatorTypes: ['empty', 'notEmpty', null, 'includes', 'doesNotInclude'],\n title: 'Title',\n type: 'string',\n value: ''\n },\n type: {\n assetTypes: ['file', 'image'],\n name: 'type',\n operatorType: 'is',\n operatorTypes: ['is', 'isNot'],\n options: [\n {\n name: 'image',\n title: 'Image',\n value: 'mimeType match \"image*\"'\n },\n {\n name: 'video',\n title: 'Video',\n value: 'mimeType match \"video*\"'\n },\n {\n name: 'audio',\n title: 'Audio',\n value: 'mimeType match \"audio*\"'\n },\n {\n name: 'pdf',\n title: 'PDF',\n value: 'mimeType == \"application/pdf\"'\n }\n ],\n title: 'File type',\n type: 'select',\n value: 'image'\n },\n width: {\n assetTypes: ['image'],\n field: 'metadata.dimensions.width',\n name: 'width',\n operatorType: 'greaterThan',\n operatorTypes: [\n 'greaterThan',\n 'greaterThanOrEqualTo',\n 'lessThan',\n 'lessThanOrEqualTo',\n null,\n 'equalTo'\n ],\n title: 'Width',\n type: 'number',\n value: 400\n }\n}\n\nexport const operators: SearchFacetOperators = {\n doesNotInclude: {\n fn: (value, field) => (value ? `!(${field} match '*${value}*')` : undefined),\n label: 'does not include'\n },\n doesNotReference: {\n fn: (value, _field) => (value ? `!references('${value}')` : undefined),\n label: 'does not include'\n },\n empty: {\n fn: (_value, field) => `!defined(${field})`,\n hideInput: true,\n label: 'is empty'\n },\n equalTo: {\n fn: (value, field) => (value ? `${field} == ${value}` : undefined),\n label: 'is equal to'\n },\n greaterThan: {\n fn: (value, field) => (value ? `${field} > ${value}` : undefined),\n label: 'is greater than'\n },\n greaterThanOrEqualTo: {\n fn: (value, field) => (value ? `${field} >= ${value}` : undefined),\n label: 'is greater than or equal to'\n },\n includes: {\n fn: (value, field) => (value ? `${field} match '*${value}*'` : undefined),\n label: 'includes'\n },\n is: {\n fn: (value, _field) => `${value}`,\n label: 'is'\n },\n isNot: {\n fn: (value, _field) => `!(${value})`,\n label: 'is not'\n },\n lessThan: {\n fn: (value, field) => (value ? `${field} < ${value}` : undefined),\n label: 'is less than'\n },\n lessThanOrEqualTo: {\n fn: (value, field) => (value ? `${field} <= ${value}` : undefined),\n label: 'is less than or equal to'\n },\n notEmpty: {\n fn: (_value, field) => `defined(${field})`,\n hideInput: true,\n label: 'is not empty'\n },\n references: {\n fn: (value, _field) => (value ? `references('${value}')` : undefined),\n label: 'includes'\n }\n}\n","import {SearchFacetInputProps, SearchFacetDivider, SearchFacetGroup, OrderDirection} from '@types'\nimport {divider, inputs} from './config/searchFacets'\n\n// Sort order dropdown options\n// null values are represented as menu dividers\nexport const ORDER_OPTIONS: ({direction: OrderDirection; field: string} | null)[] = [\n {\n direction: 'desc',\n field: '_createdAt'\n },\n {\n direction: 'asc',\n field: '_createdAt'\n },\n // Divider\n null,\n {\n direction: 'desc',\n field: '_updatedAt'\n },\n {\n direction: 'asc' as OrderDirection,\n field: '_updatedAt'\n },\n // Divider\n null,\n {\n direction: 'asc',\n field: 'originalFilename'\n },\n {\n direction: 'desc',\n field: 'originalFilename'\n },\n // Divider\n null,\n {\n direction: 'desc',\n field: 'size'\n },\n {\n direction: 'asc',\n field: 'size'\n }\n]\n\nexport const FACETS: (SearchFacetDivider | SearchFacetGroup | SearchFacetInputProps)[] = [\n inputs.tag,\n divider,\n inputs.inUse,\n inputs.inCurrentDocument,\n divider,\n inputs.title,\n inputs.altText,\n inputs.description,\n divider,\n inputs.isOpaque,\n divider,\n inputs.fileName,\n inputs.size,\n inputs.type,\n divider,\n inputs.orientation,\n inputs.width,\n inputs.height\n]\n\nexport const GRID_TEMPLATE_COLUMNS = {\n SMALL: '3rem 100px auto 1.5rem',\n LARGE: '3rem 100px auto 5.5rem 5.5rem 3.5rem 8.5rem 4.75rem 2rem'\n}\nexport const PANEL_HEIGHT = 32 // px\nexport const TAG_DOCUMENT_NAME = 'media.tag'\nexport const TAGS_PANEL_WIDTH = 250 // px\n","import React, {ReactNode, createContext, useContext} from 'react'\nimport type {AssetSourceComponentProps} from 'sanity'\n\ntype ContextProps = {\n onSelect?: AssetSourceComponentProps['onSelect']\n}\n\ntype Props = {\n children: ReactNode\n onSelect?: AssetSourceComponentProps['onSelect']\n}\n\nconst AssetSourceDispatchContext = createContext<ContextProps | undefined>(undefined)\n\nexport const AssetBrowserDispatchProvider = (props: Props) => {\n const {children, onSelect} = props\n\n const contextValue: ContextProps = {\n onSelect\n }\n\n return (\n <AssetSourceDispatchContext.Provider value={contextValue}>\n {children}\n </AssetSourceDispatchContext.Provider>\n )\n}\n\nexport const useAssetSourceActions = () => {\n const context = useContext(AssetSourceDispatchContext)\n if (context === undefined) {\n throw new Error('useAssetSourceActions must be used within an AssetSourceDispatchProvider')\n }\n return context\n}\n\nexport default AssetSourceDispatchContext\n","import type {SanityClient} from '@sanity/client'\nimport {useClient} from 'sanity'\n\nconst useVersionedClient = (): SanityClient => useClient({apiVersion: '2022-10-01'})\n\nexport default useVersionedClient\n","import type {OrderDirection} from '../types'\n\nconst ORDER_DICTIONARY: Record<string, {asc: string; desc: string}> = {\n _createdAt: {\n asc: 'Last created: Oldest first',\n desc: 'Last created: Newest first'\n },\n _updatedAt: {\n asc: 'Last updated: Oldest first',\n desc: 'Last updated: Newest first'\n },\n mimeType: {\n asc: 'MIME type: A to Z',\n desc: 'MIME type: Z to A'\n },\n originalFilename: {\n asc: 'File name: A to Z',\n desc: 'File name: Z to A'\n },\n size: {\n asc: 'File size: Smallest first',\n desc: 'File size: Largest first'\n }\n}\n\nexport const getOrderTitle = (field: string, direction: OrderDirection): string => {\n return ORDER_DICTIONARY[field][direction]\n}\n","import {iif, Observable, of, throwError} from 'rxjs'\nimport {delay, mergeMap} from 'rxjs/operators'\n\nconst debugThrottle = (throttled?: boolean) => {\n return function <T>(source: Observable<T>): Observable<T> {\n return iif(\n () => !!throttled,\n source.pipe(\n delay(3000),\n mergeMap(v => {\n if (Math.random() > 0.5) {\n return throwError({\n message: 'Test error',\n statusCode: 500\n })\n }\n return of(v)\n })\n ),\n source\n )\n }\n}\n\nexport default debugThrottle\n","import {AssetType, SearchFacetInputProps} from '@types'\nimport groq from 'groq'\n\nimport {operators} from '../config/searchFacets'\n\nconst constructFilter = ({\n assetTypes,\n searchFacets,\n searchQuery\n}: {\n assetTypes: AssetType[]\n searchFacets: SearchFacetInputProps[]\n searchQuery?: string\n}): string => {\n // Fetch asset types depending on current context.\n // Either limit to a specific type (if being used as a custom asset source) or fetch both files and images (if being used as a tool)\n // Sanity will crash if you try and insert incompatible asset types into fields!\n const documentAssetTypes = assetTypes.map(type => `sanity.${type}Asset`)\n\n const baseFilter = groq`\n _type in ${JSON.stringify(documentAssetTypes)} && !(_id in path(\"drafts.**\"))\n `\n\n const searchFacetFragments = searchFacets.reduce((acc: string[], facet) => {\n if (facet.type === 'number') {\n const {field, modifier, modifiers, operatorType, value} = facet\n const operator = operators[operatorType]\n\n // Get current modifier\n const currentModifier = modifiers?.find(m => m.name === modifier)\n\n // Apply field modifier function (if present)\n const facetField = currentModifier?.fieldModifier\n ? currentModifier.fieldModifier(field)\n : field\n\n const fragment = operator.fn(value, facetField)\n if (fragment) {\n acc.push(fragment)\n }\n }\n\n if (facet.type === 'searchable') {\n const {field, operatorType, value} = facet\n const operator = operators[operatorType]\n\n const fragment = operator.fn(value?.value, field)\n if (fragment) {\n acc.push(fragment)\n }\n }\n\n if (facet.type === 'select') {\n const {field, operatorType, options, value} = facet\n const operator = operators[operatorType]\n\n const currentOptionValue = options?.find(l => l.name === value)?.value\n\n const fragment = operator.fn(currentOptionValue, field)\n if (fragment) {\n acc.push(fragment)\n }\n }\n\n if (facet.type === 'string') {\n const {field, operatorType, value} = facet\n const operator = operators[operatorType]\n\n const fragment = operator.fn(value, field)\n if (fragment) {\n acc.push(fragment)\n }\n }\n\n return acc\n }, [])\n\n // Join separate filter fragments\n const constructedQuery = [\n // Base filter\n baseFilter,\n // Search query (if present)\n // NOTE: Currently this only searches direct fields on sanity.fileAsset/sanity.imageAsset and NOT referenced tags\n // It's possible to add this by adding the following line to the searchQuery, but it's quite slow\n // references(*[_type == \"media.tag\" && name.current == \"${searchQuery.trim()}\"]._id)\n ...(searchQuery\n ? [\n groq`[_id, altText, assetId, description, originalFilename, title, url] match '*${searchQuery.trim()}*'`\n ]\n : []),\n // Search facets\n ...searchFacetFragments\n ].join(' && ')\n\n return constructedQuery\n}\n\nexport default constructFilter\n","import type {SanityClient} from '@sanity/client'\nimport type {HttpError} from '@types'\nimport groq from 'groq'\nimport {from, Observable, of, throwError} from 'rxjs'\nimport {mergeMap} from 'rxjs/operators'\nimport {TAG_DOCUMENT_NAME} from '../constants'\n\nconst checkTagName = (client: SanityClient, name: string) => {\n return function <T>(source: Observable<T>): Observable<boolean> {\n return source.pipe(\n mergeMap(() => {\n return from(\n client.fetch(groq`count(*[_type == \"${TAG_DOCUMENT_NAME}\" && name.current == $name])`, {\n name\n })\n ) as Observable<number>\n }),\n mergeMap((existingTagCount: number) => {\n if (existingTagCount > 0) {\n return throwError({\n message: 'Tag already exists',\n statusCode: 409\n } as HttpError)\n }\n\n return of(true)\n })\n )\n }\n}\n\nexport default checkTagName\n","import {TagSelectOption, TagItem} from '@types'\n\nconst getTagSelectOptions = (tags: TagItem[]): TagSelectOption[] => {\n return tags.reduce((acc: TagSelectOption[], val) => {\n const tag = val?.tag\n if (tag) {\n acc.push({\n label: tag?.name?.current,\n value: tag?._id\n })\n }\n return acc\n }, [])\n}\n\nexport default getTagSelectOptions\n","import {createAction} from '@reduxjs/toolkit'\nimport {AssetItem, HttpError, Tag} from '../../types'\n\nexport const ASSETS_ACTIONS = {\n tagsAddComplete: createAction(\n 'actions/tagsAddComplete',\n function prepare({assets, tag}: {assets: AssetItem[]; tag: Tag}) {\n return {payload: {assets, tag}}\n }\n ),\n tagsAddError: createAction(\n 'actions/tagsAddError',\n function prepare({assets, error, tag}: {assets: AssetItem[]; error: HttpError; tag: Tag}) {\n return {payload: {assets, error, tag}}\n }\n ),\n tagsAddRequest: createAction(\n 'actions/tagsAddRequest',\n function prepare({assets, tag}: {assets: AssetItem[]; tag: Tag}) {\n return {payload: {assets, tag}}\n }\n ),\n tagsRemoveComplete: createAction(\n 'actions/tagsRemoveComplete',\n function prepare({assets, tag}: {assets: AssetItem[]; tag: Tag}) {\n return {payload: {assets, tag}}\n }\n ),\n tagsRemoveError: createAction(\n 'actions/tagsRemoveError',\n function prepare({assets, error, tag}: {assets: AssetItem[]; error: HttpError; tag: Tag}) {\n return {payload: {assets, error, tag}}\n }\n ),\n tagsRemoveRequest: createAction(\n 'actions/tagsRemoveRequest',\n function prepare({assets, tag}: {assets: AssetItem[]; tag: Tag}) {\n return {payload: {assets, tag}}\n }\n )\n}\n","import {createAction} from '@reduxjs/toolkit'\n\nexport const DIALOG_ACTIONS = {\n showTagCreate: createAction('dialog/showTagCreate'),\n showTagEdit: createAction('dialog/showTagEdit', function prepare({tagId}: {tagId: string}) {\n return {\n payload: {tagId}\n }\n })\n}\n","import {createSelector, createSlice, PayloadAction} from '@reduxjs/toolkit'\nimport type {ClientError, Transaction} from '@sanity/client'\nimport type {Asset, HttpError, MyEpic, TagSelectOption, Tag, TagItem} from '@types'\nimport groq from 'groq'\nimport {Selector} from 'react-redux'\nimport {ofType} from 'redux-observable'\nimport {from, Observable, of} from 'rxjs'\nimport {bufferTime, catchError, filter, mergeMap, switchMap, withLatestFrom} from 'rxjs/operators'\nimport {TAG_DOCUMENT_NAME} from '../../constants'\nimport checkTagName from '../../operators/checkTagName'\nimport debugThrottle from '../../operators/debugThrottle'\nimport getTagSelectOptions from '../../utils/getTagSelectOptions'\nimport {ASSETS_ACTIONS} from '../assets/actions'\nimport {DIALOG_ACTIONS} from '../dialog/actions'\nimport type {RootReducerState} from '../types'\n\ntype TagsReducerState = {\n allIds: string[]\n byIds: Record<string, TagItem>\n creating: boolean\n creatingError?: HttpError\n fetchCount: number\n fetching: boolean\n fetchingError?: HttpError\n // totalCount: number\n panelVisible: boolean\n}\n\nconst initialState = {\n allIds: [],\n byIds: {},\n creating: false,\n creatingError: undefined,\n fetchCount: -1,\n fetching: false,\n fetchingError: undefined,\n panelVisible: true\n} as TagsReducerState\n\nconst tagsSlice = createSlice({\n name: 'tags',\n initialState,\n extraReducers: builder => {\n builder\n .addCase(DIALOG_ACTIONS.showTagCreate, state => {\n delete state.creatingError\n })\n .addCase(DIALOG_ACTIONS.showTagEdit, (state, action) => {\n const {tagId} = action.payload\n delete state.byIds[tagId].error\n })\n .addMatcher(\n action =>\n [\n ASSETS_ACTIONS.tagsAddComplete.type,\n ASSETS_ACTIONS.tagsAddError.type,\n ASSETS_ACTIONS.tagsRemoveComplete.type,\n ASSETS_ACTIONS.tagsRemoveError.type\n ].includes(action.type),\n (state, action) => {\n const {tag} = action.payload\n state.byIds[tag._id].updating = false\n }\n )\n .addMatcher(\n action =>\n [\n ASSETS_ACTIONS.tagsAddRequest.type, //\n ASSETS_ACTIONS.tagsRemoveRequest.type\n ].includes(action.type),\n (state, action) => {\n const {tag} = action.payload\n state.byIds[tag._id].updating = true\n }\n )\n },\n reducers: {\n createComplete(state, action: PayloadAction<{assetId?: string; tag: Tag}>) {\n const {tag} = action.payload\n state.creating = false\n if (!state.allIds.includes(tag._id)) {\n state.allIds.push(tag._id)\n }\n state.byIds[tag._id] = {\n _type: 'tag',\n picked: false,\n tag,\n updating: false\n }\n },\n createError(state, action: PayloadAction<{error: HttpError; name: string}>) {\n state.creating = false\n state.creatingError = action.payload.error\n },\n createRequest(state, _action: PayloadAction<{assetId?: string; name: string}>) {\n state.creating = true\n delete state.creatingError\n },\n deleteComplete(state, action: PayloadAction<{tagId: string}>) {\n const {tagId} = action.payload\n const deleteIndex = state.allIds.indexOf(tagId)\n if (deleteIndex >= 0) {\n state.allIds.splice(deleteIndex, 1)\n }\n delete state.byIds[tagId]\n },\n deleteError(state, action: PayloadAction<{error: HttpError; tag: Tag}>) {\n const {error, tag} = action.payload\n\n const tagId = tag?._id\n state.byIds[tagId].error = error\n state.byIds[tagId].updating = false\n },\n deleteRequest(state, action: PayloadAction<{tag: Tag}>) {\n const tagId = action.payload?.tag?._id\n state.byIds[tagId].picked = false\n state.byIds[tagId].updating = true\n\n Object.keys(state.byIds).forEach(key => {\n delete state.byIds[key].error\n })\n },\n fetchComplete(state, action: PayloadAction<{tags: Tag[]}>) {\n const {tags} = action.payload\n\n tags?.forEach(tag => {\n state.allIds.push(tag._id)\n state.byIds[tag._id] = {\n _type: 'tag',\n picked: false,\n tag,\n updating: false\n }\n })\n\n state.fetching = false\n state.fetchCount = tags.length || 0\n delete state.fetchingError\n },\n fetchError(state, action: PayloadAction<{error: HttpError}>) {\n const {error} = action.payload\n state.fetching = false\n state.fetchingError = error\n },\n fetchRequest: {\n reducer: (state, _action: PayloadAction<{query: string}>) => {\n state.fetching = true\n delete state.fetchingError\n },\n prepare: () => {\n // Construct query\n const query = groq`\n {\n \"items\": *[\n _type == \"${TAG_DOCUMENT_NAME}\"\n && !(_id in path(\"drafts.**\"))\n ] {\n _createdAt,\n _updatedAt,\n _id,\n _rev,\n _type,\n name\n } | order(name.current asc),\n }\n `\n return {payload: {query}}\n }\n },\n // Queue batch tag creation\n listenerCreateQueue(_state, _action: PayloadAction<{tag: Tag}>) {\n //\n },\n // Apply created tags (via sanity real-time events)\n listenerCreateQueueComplete(state, action: PayloadAction<{tags: Tag[]}>) {\n const {tags} = action.payload\n\n tags?.forEach(tag => {\n state.byIds[tag._id] = {\n _type: 'tag',\n picked: false,\n tag,\n updating: false\n }\n if (!state.allIds.includes(tag._id)) {\n state.allIds.push(tag._id)\n }\n })\n },\n // Queue batch tag deletion\n listenerDeleteQueue(_state, _action: PayloadAction<{tagId: string}>) {\n //\n },\n // Apply deleted tags (via sanity real-time events)\n listenerDeleteQueueComplete(state, action: PayloadAction<{tagIds: string[]}>) {\n const {tagIds} = action.payload\n\n tagIds?.forEach(tagId => {\n const deleteIndex = state.allIds.indexOf(tagId)\n if (deleteIndex >= 0) {\n state.allIds.splice(deleteIndex, 1)\n }\n delete state.byIds[tagId]\n })\n },\n // Queue batch tag updates\n listenerUpdateQueue(_state, _action: PayloadAction<{tag: Tag}>) {\n //\n },\n // Apply updated tags (via sanity real-time events)\n listenerUpdateQueueComplete(state, action: PayloadAction<{tags: Tag[]}>) {\n const {tags} = action.payload\n\n tags?.forEach(tag => {\n if (state.byIds[tag._id]) {\n state.byIds[tag._id].tag = tag\n }\n })\n },\n // Set tag panel visibility\n panelVisibleSet(state, action: PayloadAction<{panelVisible: boolean}>) {\n const {panelVisible} = action.payload\n state.panelVisible = panelVisible\n },\n // Sort all tags by name\n sort(state) {\n state.allIds.sort((a, b) => {\n const tagA = state.byIds[a].tag.name.current\n const tagB = state.byIds[b].tag.name.current\n\n if (tagA < tagB) {\n return -1\n } else if (tagA > tagB) {\n return 1\n }\n return 0\n })\n },\n updateComplete(state, action: PayloadAction<{closeDialogId?: string; tag: Tag}>) {\n const {tag} = action.payload\n state.byIds[tag._id].tag = tag\n state.byIds[tag._id].updating = false\n },\n updateError(state, action: PayloadAction<{tag: Tag; error: HttpError}>) {\n const {error, tag} = action.payload\n const tagId = tag?._id\n state.byIds[tagId].error = error\n state.byIds[tagId].updating = false\n },\n updateRequest(\n state,\n action: PayloadAction<{\n closeDialogId?: string\n formData: Record<string, any>\n tag: Tag\n }>\n ) {\n const {tag} = action.payload\n state.byIds[tag?._id].updating = true\n }\n }\n})\n\n// Epics\n\n// On tag create request:\n// - async check to see if tag already exists\n// - throw if tag already exists\n// - otherwise, create new tag\nexport const tagsCreateEpic: MyEpic = (action$, state$, {client}) =>\n action$.pipe(\n filter(tagsSlice.actions.createRequest.match),\n withLatestFrom(state$),\n mergeMap(([action, state]) => {\n const {assetId, name} = action.payload\n\n return of(action).pipe(\n debugThrottle(state.debug.badConnection),\n checkTagName(client, name),\n mergeMap(() =>\n client.observable.create({\n _type: TAG_DOCUMENT_NAME,\n name: {\n _type: 'slug',\n current: name\n }\n })\n ),\n mergeMap(result => of(tagsSlice.actions.createComplete({assetId, tag: result as Tag}))),\n catchError((error: ClientError) =>\n of(\n tagsSlice.actions.createError({\n error: {\n message: error?.message || 'Internal error',\n statusCode: error?.statusCode || 500\n },\n name\n })\n )\n )\n )\n })\n )\n\n// On tag delete request\n// - find referenced assets\n// - remove tag from referenced assets in a sanity transaction\nexport const tagsDeleteEpic: MyEpic = (action$, state$, {client}) =>\n action$.pipe(\n filter(tagsSlice.actions.deleteRequest.match),\n withLatestFrom(state$),\n mergeMap(([action, state]) => {\n const {tag} = action.payload\n return of(action).pipe(\n // Optionally throttle\n debugThrottle(state.debug.badConnection),\n // Fetch assets which reference this tag\n mergeMap(() =>\n client.observable.fetch<Asset[]>(\n groq`*[\n _type in [\"sanity.fileAsset\", \"sanity.imageAsset\"]\n && references(*[_type == \"media.tag\" && name.current == $tagName]._id)\n ] {\n _id,\n _rev,\n opt\n }`,\n {tagName: tag.name.current}\n )\n ),\n // Create transaction which remove tag references from all matched assets and delete tag\n mergeMap(assets => {\n const patches = assets.map(asset => ({\n id: asset._id,\n patch: {\n // this will cause the transaction to fail if the document has been modified since it was fetched.\n ifRevisionID: asset._rev,\n unset: [`opt.media.tags[_ref == \"${tag._id}\"]`]\n }\n }))\n\n const transaction: Transaction = patches.reduce(\n (tx, patch) => tx.patch(patch.id, patch.patch),\n client.transaction()\n )\n\n transaction.delete(tag._id)\n\n return from(transaction.commit())\n }),\n // Dispatch complete action\n mergeMap(() => of(tagsSlice.actions.deleteComplete({tagId: tag._id}))),\n catchError((error: ClientError) =>\n of(\n tagsSlice.actions.deleteError({\n error: {\n message: error?.message || 'Internal error',\n statusCode: error?.statusCode || 500\n },\n tag\n })\n )\n )\n )\n })\n )\n\n// Async fetch tags\nexport const tagsFetchEpic: MyEpic = (action$, state$, {client}) =>\n action$.pipe(\n filter(tagsSlice.actions.fetchRequest.match),\n withLatestFrom(state$),\n switchMap(([action, state]) => {\n const {query} = action.payload\n\n return of(action).pipe(\n // Optionally throttle\n debugThrottle(state.debug.badConnection),\n // Fetch tags\n mergeMap(() =>\n client.observable.fetch<{\n items: Tag[]\n }>(query)\n ),\n // Dispatch complete action\n mergeMap(result => {\n const {items} = result\n return of(tagsSlice.actions.fetchComplete({tags: items}))\n }),\n catchError((error: ClientError) =>\n of(\n tagsSlice.actions.fetchError({\n error: {\n message: error?.message || 'Internal error',\n statusCode: error?.statusCode || 500\n }\n })\n )\n )\n )\n })\n )\n\n// TODO: merge all buffer epics\n// Buffer tag creation via sanity subscriber\nexport const tagsListenerCreateQueueEpic: MyEpic = action$ =>\n action$.pipe(\n filter(tagsSlice.actions.listenerCreateQueue.match),\n bufferTime(2000),\n filter(actions => actions.length > 0),\n mergeMap(actions => {\n const tags = actions?.map(action => action.payload.tag)\n return of(tagsSlice.actions.listenerCreateQueueComplete({tags}))\n })\n )\n\n// TODO: merge all buffer epics\n// Buffer tag deletion via sanity subscriber\nexport const tagsListenerDeleteQueueEpic: MyEpic = action$ =>\n action$.pipe(\n filter(tagsSlice.actions.listenerDeleteQueue.match),\n bufferTime(2000),\n filter(actions => actions.length > 0),\n mergeMap(actions => {\n const tagIds = actions?.map(action => action.payload.tagId)\n return of(tagsSlice.actions.listenerDeleteQueueComplete({tagIds}))\n })\n )\n\n// TODO: merge all buffer epics\n// Buffer tag update via sanity subscriber\nexport const tagsListenerUpdateQueueEpic: MyEpic = action$ =>\n action$.pipe(\n filter(tagsSlice.actions.listenerUpdateQueue.match),\n bufferTime(2000),\n filter(actions => actions.length > 0),\n mergeMap(actions => {\n const tags = actions?.map(action => action.payload.tag)\n return of(tagsSlice.actions.listenerUpdateQueueComplete({tags}))\n })\n )\n\n// On successful tag creation or updates:\n// - Re-sort all tags\nexport const tagsSortEpic: MyEpic = action$ =>\n action$.pipe(\n ofType(\n tagsSlice.actions.listenerCreateQueueComplete.type,\n tagsSlice.actions.listenerUpdateQueueComplete.type\n ),\n bufferTime(1000),\n filter(actions => actions.length > 0),\n mergeMap(() => of(tagsSlice.actions.sort()))\n )\n\n// On tag update request\n// - check if tag name already exists\n// - throw if tag already exists\n// - otherwise, patch document\nexport const tagsUpdateEpic: MyEpic = (action$, state$, {client}) =>\n action$.pipe(\n filter(tagsSlice.actions.updateRequest.match),\n withLatestFrom(state$),\n mergeMap(([action, state]) => {\n const {closeDialogId, formData, tag} = action.payload\n\n return of(action).pipe(\n // Optionally throttle\n debugThrottle(state.debug.badConnection),\n // Check if tag name is available, throw early if not\n checkTagName(client, formData?.name?.current),\n // Patch document (Update tag)\n mergeMap(\n () =>\n from(\n client\n .patch(tag._id)\n .set({name: {_type: 'slug', current: formData?.name.current}})\n .commit()\n ) as Observable<Tag>\n ),\n // Dispatch complete action\n mergeMap((updatedTag: Tag) => {\n return of(\n tagsSlice.actions.updateComplete({\n closeDialogId,\n tag: updatedTag\n })\n )\n }),\n catchError((error: ClientError) =>\n of(\n tagsSlice.actions.updateError({\n error: {\n message: error?.message || 'Internal error',\n statusCode: error?.statusCode || 500\n },\n tag\n })\n )\n )\n )\n })\n )\n\n// Selectors\n\nconst selectTagsByIds = (state: RootReducerState) => state.tags.byIds\n\nconst selectTagsAllIds = (state: RootReducerState) => state.tags.allIds\n\nexport const selectTags: Selector<RootReducerState, TagItem[]> = createSelector(\n [selectTagsByIds, selectTagsAllIds],\n (byIds, allIds) => allIds.map(id => byIds[id])\n)\n\nexport const selectTagById = createSelector(\n [selectTagsByIds, (_state: RootReducerState, tagId: string) => tagId],\n (byIds, tagId) => byIds[tagId]\n)\n\n// TODO: use createSelector\n// Map tag references to react-select options, skipping over items with no linked tags\nexport const selectTagSelectOptions =\n (asset?: Asset) =>\n (state: RootReducerState): TagSelectOption[] | null => {\n const tags = asset?.opt?.media?.tags?.reduce((acc: TagItem[], v) => {\n const tagItem = state.tags.byIds[v._ref]\n if (tagItem?.tag) {\n acc.push(tagItem)\n }\n return acc\n }, [])\n\n if (tags && tags?.length > 0) {\n return getTagSelectOptions(tags)\n }\n\n return null\n }\n\nexport const tagsActions = tagsSlice.actions\n\nexport default tagsSlice.reducer\n","import {PayloadAction, createSelector, createSlice} from '@reduxjs/toolkit'\nimport type {MyEpic, SearchFacetInputProps, SearchFacetOperatorType, WithId} from '@types'\nimport {empty, of} from 'rxjs'\nimport {filter, mergeMap, withLatestFrom} from 'rxjs/operators'\nimport {uuid} from '@sanity/uuid'\n\nimport {tagsActions} from '../tags'\nimport type {RootReducerState} from '../types'\n\n// TODO: don't store non-serializable data in the search store\n// (The main offender is `fieldModifier` which is currently a function)\n\ntype SearchState = {\n facets: WithId<SearchFacetInputProps>[]\n query: string\n}\n\nconst initialState = {\n facets: [],\n query: ''\n} as SearchState\n\nconst searchSlice = createSlice({\n name: 'search',\n initialState,\n reducers: {\n // Add search facet\n facetsAdd(state, action: PayloadAction<{facet: SearchFacetInputProps}>) {\n state.facets.push({...action.payload.facet, id: uuid()})\n },\n // Clear all search facets\n facetsClear(state) {\n state.facets = []\n },\n // Remove search facet by name\n facetsRemoveByName(state, action: PayloadAction<{facetName: string}>) {\n state.facets = state.facets.filter(facet => facet.name !== action.payload.facetName)\n },\n // Remove search facet by name\n facetsRemoveByTag(state, action: PayloadAction<{tagId: string}>) {\n state.facets = state.facets.filter(\n facet =>\n !(\n facet.name === 'tag' &&\n facet.type === 'searchable' &&\n (facet.operatorType === 'references' || facet.operatorType === 'doesNotReference') &&\n facet.value?.value === action.payload.tagId\n )\n )\n },\n // Remove search facet by name\n facetsRemoveById(state, action: PayloadAction<{facetId: string}>) {\n state.facets = state.facets.filter(facet => facet.id !== action.payload.facetId)\n },\n // Update an existing search facet\n facetsUpdate(\n state,\n action: PayloadAction<{\n modifier?: string\n name: string\n operatorType?: SearchFacetOperatorType\n value?: any // TODO: type correctly\n }>\n ) {\n const {modifier, name, operatorType, value} = action.payload\n\n const facet = state.facets.find(f => f.name === name)\n\n if (!facet) {\n return\n }\n\n if (facet.type === 'number' && modifier) {\n facet.modifier = modifier\n }\n if (operatorType) {\n facet.operatorType = operatorType\n }\n if (typeof value !== 'undefined') {\n facet.value = value\n }\n\n state.facets = state.facets.filter(f => f.name !== facet.name || f.id === facet.id)\n },\n // Update an existing search facet\n facetsUpdateById(\n state,\n action: PayloadAction<{\n modifier?: string\n id: string\n operatorType?: SearchFacetOperatorType\n value?: any // TODO: type correctly\n }>\n ) {\n const {modifier, id, operatorType, value} = action.payload\n\n state.facets.forEach((facet, index) => {\n if (facet.id === id) {\n if (facet.type === 'number' && modifier) {\n facet.modifier = modifier\n }\n if (operatorType) {\n facet.operatorType = operatorType\n }\n if (typeof value !== 'undefined') {\n state.facets[index].value = value\n }\n }\n })\n },\n // Update existing search query\n querySet(state, action: PayloadAction<{searchQuery: string}>) {\n state.query = action.payload?.searchQuery\n }\n }\n})\n\n// Epics\n\n// On tag update success -> update existing tag search facet (if present)\nexport const searchFacetTagUpdateEpic: MyEpic = (action$, state$) =>\n action$.pipe(\n filter(tagsActions.updateComplete.match),\n withLatestFrom(state$),\n mergeMap(([action, state]) => {\n const {tag} = action.payload\n\n const currentSearchFacetTag = state.search.facets?.find(facet => facet.name === 'tag')\n const tagItem = state.tags.byIds[tag._id]\n\n if (currentSearchFacetTag?.type === 'searchable') {\n if (currentSearchFacetTag.value?.value === tag._id) {\n return of(\n searchSlice.actions.facetsUpdate({\n name: 'tag',\n value: {\n label: tagItem?.tag?.name?.current,\n value: tagItem?.tag?._id\n }\n })\n )\n }\n }\n\n return empty()\n })\n )\n\n// Selectors\nexport const selectIsSearchFacetTag = createSelector(\n [\n (state: RootReducerState) => state.search.facets,\n (_state: RootReducerState, tagId: string) => tagId\n ],\n (searchFacets, tagId) =>\n searchFacets.some(\n facet =>\n facet.name === 'tag' &&\n facet.type === 'searchable' &&\n (facet.operatorType === 'references' || facet.operatorType === 'doesNotReference') &&\n facet.value?.value === tagId\n )\n)\n\nexport const searchActions = searchSlice.actions\n\nexport default searchSlice.reducer\n","import {createAction} from '@reduxjs/toolkit'\nimport type {SanityAssetDocument, SanityImageAssetDocument} from '@sanity/client'\n\nexport const UPLOADS_ACTIONS = {\n uploadComplete: createAction(\n 'uploads/uploadComplete',\n function prepare({asset}: {asset: SanityAssetDocument | SanityImageAssetDocument}) {\n return {\n payload: {asset}\n }\n }\n )\n}\n","import {createSelector, createSlice, PayloadAction} from '@reduxjs/toolkit'\nimport type {ClientError, Patch, Transaction} from '@sanity/client'\nimport {\n Asset,\n AssetItem,\n AssetType,\n BrowserView,\n HttpError,\n MyEpic,\n Order,\n OrderDirection,\n Tag\n} from '@types'\nimport groq from 'groq'\nimport {nanoid} from 'nanoid'\nimport {Selector} from 'react-redux'\nimport {ofType} from 'redux-observable'\nimport {empty, from, of} from 'rxjs'\nimport {\n bufferTime,\n catchError,\n debounceTime,\n filter,\n mergeMap,\n switchMap,\n withLatestFrom\n} from 'rxjs/operators'\nimport {getOrderTitle} from '../../config/orders'\nimport {ORDER_OPTIONS} from '../../constants'\nimport debugThrottle from '../../operators/debugThrottle'\nimport constructFilter from '../../utils/constructFilter'\nimport {searchActions} from '../search'\nimport type {RootReducerState} from '../types'\nimport {UPLOADS_ACTIONS} from '../uploads/actions'\nimport {ASSETS_ACTIONS} from './actions'\ntype ItemError = {\n description: string\n id: string\n referencingIDs: string[]\n type: string // 'documentHasExistingReferencesError'\n}\n\nexport type AssetsReducerState = {\n allIds: string[]\n assetTypes: AssetType[]\n byIds: Record<string, AssetItem>\n fetchCount: number\n fetching: boolean\n fetchingError?: HttpError\n lastPicked?: string\n order: Order\n pageIndex: number\n pageSize: number\n view: BrowserView\n // totalCount: number\n}\n\nconst defaultOrder = ORDER_OPTIONS[0] as {\n direction: OrderDirection\n field: string\n}\n\n/**\n * NOTE:\n * `fetchCount` returns the number of items retrieved in the most recent fetch.\n * This is a temporary workaround to be able to determine when there are no more items to retrieve.\n * Typically this would be done by deriving the total number of assets upfront, but currently such\n * queries in GROQ aren't fast enough to use on large datasets (1000s of entries).\n *\n * TODO:\n * When the query engine has been improved and above queries are faster, remove all instances of\n * of `fetchCount` and reinstate `totalCount` across the board.\n */\n\nexport const initialState = {\n allIds: [],\n assetTypes: [],\n byIds: {},\n fetchCount: -1,\n fetching: false,\n fetchingError: undefined,\n lastPicked: undefined,\n order: {\n direction: defaultOrder.direction,\n field: defaultOrder.field,\n title: getOrderTitle(defaultOrder.field, defaultOrder.direction)\n },\n pageIndex: 0,\n pageSize: 100,\n // totalCount: -1,\n view: 'grid'\n} as AssetsReducerState\n\nconst assetsSlice = createSlice({\n name: 'assets',\n initialState,\n extraReducers: builder => {\n builder //\n .addCase(UPLOADS_ACTIONS.uploadComplete, (state, action) => {\n const {asset} = action.payload\n\n state.byIds[asset._id] = {\n _type: 'asset',\n asset: asset as Asset,\n picked: false,\n updating: false\n }\n })\n .addCase(ASSETS_ACTIONS.tagsAddComplete, (state, action) => {\n const {assets} = action.payload\n assets.forEach(asset => {\n state.byIds[asset.asset._id].updating = false\n })\n })\n .addCase(ASSETS_ACTIONS.tagsAddError, (state, action) => {\n const {assets} = action.payload\n assets.forEach(asset => {\n state.byIds[asset.asset._id].updating = false\n })\n })\n .addCase(ASSETS_ACTIONS.tagsAddRequest, (state, action) => {\n const {assets} = action.payload\n assets.forEach(asset => {\n state.byIds[asset.asset._id].updating = true\n })\n })\n .addCase(ASSETS_ACTIONS.tagsRemoveComplete, (state, action) => {\n const {assets} = action.payload\n assets.forEach(asset => {\n state.byIds[asset.asset._id].updating = false\n })\n })\n .addCase(ASSETS_ACTIONS.tagsRemoveError, (state, action) => {\n const {assets} = action.payload\n assets.forEach(asset => {\n state.byIds[asset.asset._id].updating = false\n })\n })\n .addCase(ASSETS_ACTIONS.tagsRemoveRequest, (state, action) => {\n const {assets} = action.payload\n assets.forEach(asset => {\n state.byIds[asset.asset._id].updating = true\n })\n })\n },\n reducers: {\n // Clear asset order\n clear(state) {\n state.allIds = []\n },\n // Remove assets and update page index\n deleteComplete(state, action: PayloadAction<{assetIds: string[]}>) {\n const {assetIds} = action.payload\n\n assetIds?.forEach(id => {\n const deleteIndex = state.allIds.indexOf(id)\n if (deleteIndex >= 0) {\n state.allIds.splice(deleteIndex, 1)\n }\n delete state.byIds[id]\n })\n\n state.pageIndex = Math.floor(state.allIds.length / state.pageSize) - 1\n },\n deleteError(state, action: PayloadAction<{assetIds: string[]; error: ClientError}>) {\n const {assetIds, error} = action.payload\n const itemErrors: ItemError[] = error?.response?.body?.error?.items?.map(\n (item: any) => item.error\n )\n\n assetIds?.forEach(id => {\n state.byIds[id].updating = false\n })\n itemErrors?.forEach(item => {\n state.byIds[item.id].error = item.description\n })\n },\n deleteRequest(state, action: PayloadAction<{assets: Asset[]; closeDialogId?: string}>) {\n const {assets} = action.payload\n assets.forEach(asset => {\n state.byIds[asset?._id].updating = true\n })\n\n Object.keys(state.byIds).forEach(key => {\n delete state.byIds[key].error\n })\n },\n fetchComplete(state, action: PayloadAction<{assets: Asset[]}>) {\n const assets = action.payload?.assets || []\n\n if (assets) {\n assets.forEach(asset => {\n if (!state.allIds.includes(asset._id)) {\n state.allIds.push(asset._id)\n }\n state.byIds[asset._id] = {\n _type: 'asset',\n asset: asset,\n picked: false,\n updating: false\n }\n })\n }\n\n state.fetching = false\n state.fetchCount = assets.length || 0\n delete state.fetchingError\n },\n fetchError(state, action: PayloadAction<HttpError>) {\n const error = action.payload\n state.fetching = false\n state.fetchingError = error\n },\n fetchRequest: {\n reducer: (state, _action: PayloadAction<{params: Record<string, any>; query: string}>) => {\n state.fetching = true\n delete state.fetchingError\n },\n prepare: ({\n params = {},\n queryFilter,\n selector = ``,\n sort = groq`order(_updatedAt desc)`\n }: {\n params?: Record<string, any>\n queryFilter: string\n replace?: boolean\n selector?: string\n sort?: string\n }) => {\n const pipe = sort || selector ? '|' : ''\n\n // Construct query\n const query = groq`\n {\n \"items\": *[${queryFilter}] {\n _id,\n _type,\n _createdAt,\n _updatedAt,\n altText,\n description,\n extension,\n metadata {\n dimensions,\n exif,\n isOpaque,\n },\n mimeType,\n opt {\n media\n },\n originalFilename,\n size,\n title,\n url\n } ${pipe} ${sort} ${selector},\n }\n `\n\n return {payload: {params, query}}\n }\n },\n insertUploads(state, action: PayloadAction<{results: Record<string, string | null>}>) {\n const {results} = action.payload\n\n Object.entries(results).forEach(([hash, assetId]) => {\n if (assetId && !state.allIds.includes(hash)) {\n state.allIds.push(assetId)\n }\n })\n },\n listenerCreateQueue(_state, _action: PayloadAction<{asset: Asset}>) {\n //\n },\n listenerCreateQueueComplete(state, action: PayloadAction<{assets: Asset[]}>) {\n const {assets} = action.payload\n assets?.forEach(asset => {\n if (state.byIds[asset?._id]?.asset) {\n state.byIds[asset._id].asset = asset\n }\n })\n },\n listenerDeleteQueue(_state, _action: PayloadAction<{assetId: string}>) {\n //\n },\n listenerDeleteQueueComplete(state, action: PayloadAction<{assetIds: string[]}>) {\n const {assetIds} = action.payload\n assetIds?.forEach(assetId => {\n const deleteIndex = state.allIds.indexOf(assetId)\n if (deleteIndex >= 0) {\n state.allIds.splice(deleteIndex, 1)\n }\n delete state.byIds[assetId]\n })\n },\n listenerUpdateQueue(_state, _action: PayloadAction<{asset: Asset}>) {\n //\n },\n listenerUpdateQueueComplete(state, action: PayloadAction<{assets: Asset[]}>) {\n const {assets} = action.payload\n assets?.forEach(asset => {\n if (state.byIds[asset?._id]?.asset) {\n state.byIds[asset._id].asset = asset\n }\n })\n },\n loadNextPage() {\n //\n },\n loadPageIndex(state, action: PayloadAction<{pageIndex: number}>) {\n //\n state.pageIndex = action.payload.pageIndex\n },\n orderSet(state, action: PayloadAction<{order: Order}>) {\n state.order = action.payload?.order\n state.pageIndex = 0\n },\n pick(state, action: PayloadAction<{assetId: string; picked: boolean}>) {\n const {assetId, picked} = action.payload\n\n state.byIds[assetId].picked = picked\n state.lastPicked = picked ? assetId : undefined\n },\n pickAll(state) {\n state.allIds.forEach(id => {\n state.byIds[id].picked = true\n })\n },\n pickClear(state) {\n state.lastPicked = undefined\n Object.values(state.byIds).forEach(asset => {\n state.byIds[asset.asset._id].picked = false\n })\n },\n pickRange(state, action: PayloadAction<{endId: string; startId: string}>) {\n const startIndex = state.allIds.findIndex(id => id === action.payload.startId)\n const endIndex = state.allIds.findIndex(id => id === action.payload.endId)\n\n // Sort numerically, ascending order\n const indices = [startIndex, endIndex].sort((a, b) => a - b)\n\n state.allIds.slice(indices[0], indices[1] + 1).forEach(key => {\n state.byIds[key].picked = true\n })\n state.lastPicked = state.allIds[endIndex]\n },\n sort(state) {\n state.allIds.sort((a, b) => {\n const tagA = state.byIds[a].asset[state.order.field]\n const tagB = state.byIds[b].asset[state.order.field]\n\n if (tagA < tagB) {\n return state.order.direction === 'asc' ? -1 : 1\n } else if (tagA > tagB) {\n return state.order.direction === 'asc' ? 1 : -1\n }\n return 0\n })\n },\n updateComplete(state, action: PayloadAction<{asset: Asset; closeDialogId?: string}>) {\n const {asset} = action.payload\n state.byIds[asset._id].updating = false\n state.byIds[asset._id].asset = asset\n },\n updateError(state, action: PayloadAction<{asset: Asset; error: HttpError}>) {\n const {asset, error} = action.payload\n\n const assetId = asset?._id\n state.byIds[assetId].error = error.message\n state.byIds[assetId].updating = false\n },\n updateRequest(\n state,\n action: PayloadAction<{asset: Asset; closeDialogId?: string; formData: Record<string, any>}>\n ) {\n const assetId = action.payload?.asset?._id\n state.byIds[assetId].updating = true\n },\n viewSet(state, action: PayloadAction<{view: BrowserView}>) {\n state.view = action.payload?.view\n }\n }\n})\n\n// Epics\n\nexport const assetsDeleteEpic: MyEpic = (action$, _state$, {client}) =>\n action$.pipe(\n filter(assetsActions.deleteRequest.match),\n mergeMap(action => {\n const {assets} = action.payload\n const assetIds = assets.map(asset => asset._id)\n return of(assets).pipe(\n mergeMap(() =>\n client.observable.delete({\n query: groq`*[_id in ${JSON.stringify(assetIds)}]`\n })\n ),\n mergeMap(() => of(assetsActions.deleteComplete({assetIds}))),\n catchError((error: ClientError) => {\n return of(assetsActions.deleteError({assetIds, error}))\n })\n )\n })\n )\n\nexport const assetsFetchEpic: MyEpic = (action$, state$, {client}) =>\n action$.pipe(\n filter(assetsActions.fetchRequest.match),\n withLatestFrom(state$),\n switchMap(([action, state]) => {\n const params = action.payload?.params\n const query = action.payload?.query\n\n return of(action).pipe(\n debugThrottle(state.debug.badConnection),\n mergeMap(() =>\n client.observable.fetch<{\n items: Asset[]\n }>(query, params)\n ),\n mergeMap(result => {\n const {\n items\n // totalCount\n } = result\n return of(assetsActions.fetchComplete({assets: items}))\n }),\n catchError((error: ClientError) =>\n of(\n assetsActions.fetchError({\n message: error?.message || 'Internal error',\n statusCode: error?.statusCode || 500\n })\n )\n )\n )\n })\n )\n\nexport const assetsFetchPageIndexEpic: MyEpic = (action$, state$) =>\n action$.pipe(\n filter(assetsActions.loadPageIndex.match),\n withLatestFrom(state$),\n switchMap(([action, state]) => {\n const pageSize = state.assets.pageSize\n const start = action.payload.pageIndex * pageSize\n const end = start + pageSize\n\n // Document ID can be null when operating on pristine / unsaved drafts\n const documentId = state?.selected.document?._id\n const documentAssetIds = state?.selected?.documentAssetIds\n\n const constructedFilter = constructFilter({\n assetTypes: state.assets.assetTypes,\n searchFacets: state.search.facets,\n searchQuery: state.search.query\n })\n\n const params = {\n ...(documentId ? {documentId} : {}),\n documentAssetIds\n }\n\n return of(\n assetsActions.fetchRequest({\n params,\n queryFilter: constructedFilter,\n selector: groq`[${start}...${end}]`,\n sort: groq`order(${state.assets?.order?.field} ${state.assets?.order?.direction})`\n })\n )\n })\n )\n\nexport const assetsFetchNextPageEpic: MyEpic = (action$, state$) =>\n action$.pipe(\n filter(assetsActions.loadNextPage.match),\n withLatestFrom(state$),\n switchMap(([_action, state]) =>\n of(assetsActions.loadPageIndex({pageIndex: state.assets.pageIndex + 1}))\n )\n )\n\nexport const assetsFetchAfterDeleteAllEpic: MyEpic = (action$, state$) =>\n action$.pipe(\n filter(assetsActions.deleteComplete.match),\n withLatestFrom(state$),\n switchMap(([_action, state]) => {\n if (state.assets.allIds.length === 0) {\n const nextPageIndex = Math.floor(state.assets.allIds.length / state.assets.pageSize)\n return of(assetsActions.loadPageIndex({pageIndex: nextPageIndex}))\n }\n\n return empty()\n })\n )\n\nconst filterAssetWithoutTag = (tag: Tag) => (asset: AssetItem) => {\n const tagIndex = asset?.asset?.opt?.media?.tags?.findIndex(t => t._ref === tag?._id) ?? -1\n return tagIndex < 0\n}\n\nconst patchOperationTagAppend =\n ({tag}: {tag: Tag}) =>\n (patch: Patch) =>\n patch\n .setIfMissing({opt: {}})\n .setIfMissing({'opt.media': {}})\n .setIfMissing({'opt.media.tags': []})\n .append('opt.media.tags', [{_key: nanoid(), _ref: tag?._id, _type: 'reference', _weak: true}])\n\nconst patchOperationTagUnset =\n ({asset, tag}: {asset: AssetItem; tag: Tag}) =>\n (patch: Patch) =>\n patch.ifRevisionId(asset?.asset?._rev).unset([`opt.media.tags[_ref == \"${tag._id}\"]`])\n\nexport const assetsRemoveTagsEpic: MyEpic = (action$, state$, {client}) => {\n return action$.pipe(\n filter(ASSETS_ACTIONS.tagsAddRequest.match),\n withLatestFrom(state$),\n mergeMap(([action, state]) => {\n const {assets, tag} = action.payload\n\n return of(action).pipe(\n // Optionally throttle\n debugThrottle(state.debug.badConnection),\n // Add tag references to all picked assets\n mergeMap(() => {\n const pickedAssets = selectAssetsPicked(state)\n\n // Filter out picked assets which already include tag\n const pickedAssetsFiltered = pickedAssets?.filter(filterAssetWithoutTag(tag))\n\n const transaction: Transaction = pickedAssetsFiltered.reduce(\n (tx, pickedAsset) => tx.patch(pickedAsset?.asset?._id, patchOperationTagAppend({tag})),\n client.transaction()\n )\n\n return from(transaction.commit())\n }),\n // Dispatch complete action\n mergeMap(() => of(ASSETS_ACTIONS.tagsAddComplete({assets, tag}))),\n catchError((error: ClientError) =>\n of(\n ASSETS_ACTIONS.tagsAddError({\n assets,\n error: {\n message: error?.message || 'Internal error',\n statusCode: error?.statusCode || 500\n },\n tag\n })\n )\n )\n )\n })\n )\n}\n\nexport const assetsOrderSetEpic: MyEpic = action$ =>\n action$.pipe(\n filter(assetsActions.orderSet.match),\n mergeMap(() => {\n return of(\n assetsActions.clear(), //\n assetsActions.loadPageIndex({pageIndex: 0})\n )\n })\n )\n\nexport const assetsSearchEpic: MyEpic = action$ =>\n action$.pipe(\n ofType(\n searchActions.facetsAdd.type,\n searchActions.facetsClear.type,\n searchActions.facetsRemoveById.type,\n searchActions.facetsRemoveByName.type,\n searchActions.facetsRemoveByTag.type,\n searchActions.facetsUpdate.type,\n searchActions.facetsUpdateById.type,\n searchActions.querySet.type\n ),\n debounceTime(400),\n mergeMap(() => {\n return of(\n assetsActions.clear(), //\n assetsActions.loadPageIndex({pageIndex: 0})\n )\n })\n )\n\nexport const assetsListenerCreateQueueEpic: MyEpic = action$ =>\n action$.pipe(\n filter(assetsActions.listenerCreateQueue.match),\n bufferTime(2000),\n filter(actions => actions.length > 0),\n mergeMap(actions => {\n const assets = actions?.map(action => action.payload.asset)\n return of(assetsActions.listenerCreateQueueComplete({assets}))\n })\n )\n\nexport const assetsListenerDeleteQueueEpic: MyEpic = action$ =>\n action$.pipe(\n filter(assetsActions.listenerDeleteQueue.match),\n bufferTime(2000),\n filter(actions => actions.length > 0),\n mergeMap(actions => {\n const assetIds = actions?.map(action => action.payload.assetId)\n return of(assetsActions.listenerDeleteQueueComplete({assetIds}))\n })\n )\n\nexport const assetsListenerUpdateQueueEpic: MyEpic = action$ =>\n action$.pipe(\n filter(assetsActions.listenerUpdateQueue.match),\n bufferTime(2000),\n filter(actions => actions.length > 0),\n mergeMap(actions => {\n const assets = actions?.map(action => action.payload.asset)\n return of(assetsActions.listenerUpdateQueueComplete({assets}))\n })\n )\n\n// Re-sort on all updates (immediate and batched listener events)\nexport const assetsSortEpic: MyEpic = action$ =>\n action$.pipe(\n ofType(\n assetsActions.insertUploads.type,\n assetsActions.listenerUpdateQueueComplete.type,\n assetsActions.updateComplete.type\n ),\n mergeMap(() => of(assetsActions.sort()))\n )\n\nexport const assetsTagsAddEpic: MyEpic = (action$, state$, {client}) => {\n return action$.pipe(\n filter(ASSETS_ACTIONS.tagsAddRequest.match),\n withLatestFrom(state$),\n mergeMap(([action, state]) => {\n const {assets, tag} = action.payload\n\n return of(action).pipe(\n // Optionally throttle\n debugThrottle(state.debug.badConnection),\n // Add tag references to all picked assets\n mergeMap(() => {\n const pickedAssets = selectAssetsPicked(state)\n\n // Filter out picked assets which already include tag\n const pickedAssetsFiltered = pickedAssets?.filter(filterAssetWithoutTag(tag))\n\n const transaction: Transaction = pickedAssetsFiltered.reduce(\n (tx, pickedAsset) => tx.patch(pickedAsset?.asset?._id, patchOperationTagAppend({tag})),\n client.transaction()\n )\n\n return from(transaction.commit())\n }),\n // Dispatch complete action\n mergeMap(() => of(ASSETS_ACTIONS.tagsAddComplete({assets, tag}))),\n catchError((error: ClientError) =>\n of(\n ASSETS_ACTIONS.tagsAddError({\n assets,\n error: {\n message: error?.message || 'Internal error',\n statusCode: error?.statusCode || 500\n },\n tag\n })\n )\n )\n )\n })\n )\n}\n\nexport const assetsTagsRemoveEpic: MyEpic = (action$, state$, {client}) => {\n return action$.pipe(\n filter(ASSETS_ACTIONS.tagsRemoveRequest.match),\n withLatestFrom(state$),\n mergeMap(([action, state]) => {\n const {assets, tag} = action.payload\n\n return of(action).pipe(\n // Optionally throttle\n debugThrottle(state.debug.badConnection),\n // Remove tag references from all picked assets\n mergeMap(() => {\n const pickedAssets = selectAssetsPicked(state)\n\n const transaction: Transaction = pickedAssets.reduce(\n (tx, pickedAsset) =>\n tx.patch(pickedAsset?.asset?._id, patchOperationTagUnset({asset: pickedAsset, tag})),\n client.transaction()\n )\n\n return from(transaction.commit())\n }),\n // Dispatch complete action\n mergeMap(() => of(ASSETS_ACTIONS.tagsRemoveComplete({assets, tag}))),\n catchError((error: ClientError) =>\n of(\n ASSETS_ACTIONS.tagsRemoveError({\n assets,\n error: {\n message: error?.message || 'Internal error',\n statusCode: error?.statusCode || 500\n },\n tag\n })\n )\n )\n )\n })\n )\n}\n\nexport const assetsUnpickEpic: MyEpic = action$ =>\n action$.pipe(\n ofType(\n assetsActions.orderSet.type,\n assetsActions.viewSet.type,\n searchActions.facetsAdd.type,\n searchActions.facetsClear.type,\n searchActions.facetsRemoveById.type,\n searchActions.facetsRemoveByName.type,\n searchActions.facetsRemoveByTag.type,\n searchActions.facetsUpdate.type,\n searchActions.facetsUpdateById.type,\n searchActions.querySet.type\n ),\n mergeMap(() => {\n return of(assetsActions.pickClear())\n })\n )\n\nexport const assetsUpdateEpic: MyEpic = (action$, state$, {client}) =>\n action$.pipe(\n filter(assetsActions.updateRequest.match),\n withLatestFrom(state$),\n mergeMap(([action, state]) => {\n const {asset, closeDialogId, formData} = action.payload\n\n return of(action).pipe(\n debugThrottle(state.debug.badConnection),\n mergeMap(() =>\n from(\n client\n .patch(asset._id)\n .setIfMissing({opt: {}})\n .setIfMissing({'opt.media': {}})\n .set(formData)\n .commit()\n )\n ),\n mergeMap((updatedAsset: any) =>\n of(\n assetsActions.updateComplete({\n asset: updatedAsset,\n closeDialogId\n })\n )\n ),\n catchError((error: ClientError) =>\n of(\n assetsActions.updateError({\n asset,\n error: {\n message: error?.message || 'Internal error',\n statusCode: error?.statusCode || 500\n }\n })\n )\n )\n )\n })\n )\n\n// Selectors\n\nconst selectAssetsByIds = (state: RootReducerState) => state.assets.byIds\n\nconst selectAssetsAllIds = (state: RootReducerState) => state.assets.allIds\n\nexport const selectAssetById = createSelector(\n [\n (state: RootReducerState) => state.assets.byIds,\n (_state: RootReducerState, assetId: string) => assetId\n ],\n (byIds, assetId) => {\n const asset = byIds[assetId]\n return asset ? asset : undefined\n }\n)\n\nexport const selectAssets: Selector<RootReducerState, AssetItem[]> = createSelector(\n [selectAssetsByIds, selectAssetsAllIds],\n (byIds, allIds) => allIds.map(id => byIds[id])\n)\n\nexport const selectAssetsLength = createSelector([selectAssets], assets => assets.length)\n\nexport const selectAssetsPicked = createSelector([selectAssets], assets =>\n assets.filter(item => item?.picked)\n)\n\nexport const selectAssetsPickedLength = createSelector(\n [selectAssetsPicked],\n assetsPicked => assetsPicked.length\n)\n\nexport const assetsActions = assetsSlice.actions\n\nexport default assetsSlice.reducer\n","import {createGlobalStyle, css} from 'styled-components'\n\nconst customScrollbar = css`\n ::-webkit-scrollbar {\n width: 14px;\n }\n\n ::-webkit-scrollbar-thumb {\n border-radius: 10px;\n border: 4px solid rgba(0, 0, 0, 0);\n background: var(--card-border-color);\n background-clip: padding-box;\n\n &:hover {\n background: var(--card-muted-fg-color);\n background-clip: padding-box;\n }\n }\n`\n\nconst GlobalStyle = createGlobalStyle`\n .media__custom-scrollbar {\n ${customScrollbar}\n }\n\n // @sanity/ui overrides\n\n // Custom scrollbar on Box (used in Dialogs)\n div[data-ui=\"Box\"] {\n ${customScrollbar}\n }\n\n // Dialog background color\n div[data-ui=\"Dialog\"] {\n background-color: rgba(15, 17, 18, 0.9);\n }\n\n`\n\nexport default GlobalStyle\n","import {TypedUseSelectorHook, useSelector} from 'react-redux'\n\nimport {RootReducerState} from '../modules/types'\n\nconst useTypedSelector: TypedUseSelectorHook<RootReducerState> = useSelector\n\nexport default useTypedSelector\n","import {createSlice, PayloadAction} from '@reduxjs/toolkit'\nimport {AssetItem, Dialog, MyEpic, Tag} from '@types'\nimport pluralize from 'pluralize'\nimport {ofType} from 'redux-observable'\nimport {empty, of} from 'rxjs'\nimport {filter, mergeMap} from 'rxjs/operators'\nimport {assetsActions} from '../assets'\nimport {ASSETS_ACTIONS} from '../assets/actions'\nimport {tagsActions} from '../tags'\nimport {DIALOG_ACTIONS} from './actions'\n\ntype DialogReducerState = {\n items: Dialog[]\n}\n\nconst initialState = {\n items: []\n} as DialogReducerState\n\nconst dialogSlice = createSlice({\n name: 'dialog',\n initialState,\n extraReducers: builder => {\n builder.addCase(DIALOG_ACTIONS.showTagCreate, state => {\n state.items.push({\n id: 'tagCreate',\n type: 'tagCreate'\n })\n })\n builder.addCase(DIALOG_ACTIONS.showTagEdit, (state, action) => {\n const {tagId} = action.payload\n state.items.push({\n id: tagId,\n tagId,\n type: 'tagEdit'\n })\n })\n },\n reducers: {\n // Clear all dialogs\n clear(state) {\n state.items = []\n },\n // Add newly created inline tag to assetEdit dialog\n inlineTagCreate(state, action: PayloadAction<{assetId: string; tag: Tag}>) {\n const {assetId, tag} = action.payload\n\n state.items.forEach(item => {\n if (item.type === 'assetEdit' && item.assetId === assetId) {\n item.lastCreatedTag = {\n label: tag.name.current,\n value: tag._id\n }\n }\n })\n },\n // Remove inline tags from assetEdit dialog\n inlineTagRemove(state, action: PayloadAction<{tagIds: string[]}>) {\n const {tagIds} = action.payload\n\n state.items.forEach(item => {\n if (item.type === 'assetEdit') {\n item.lastRemovedTagIds = tagIds\n }\n })\n },\n // Remove dialog by id\n remove(state, action: PayloadAction<{id: string}>) {\n const id = action.payload?.id\n state.items = state.items.filter(item => item.id !== id)\n },\n showConfirmAssetsTagAdd(\n state,\n action: PayloadAction<{\n assetsPicked: AssetItem[]\n closeDialogId?: string\n tag: Tag\n }>\n ) {\n const {assetsPicked, closeDialogId, tag} = action.payload\n\n const suffix = `${assetsPicked.length} ${pluralize('asset', assetsPicked.length)}`\n\n state.items.push({\n closeDialogId,\n confirmCallbackAction: ASSETS_ACTIONS.tagsAddRequest({\n assets: assetsPicked,\n tag\n }),\n confirmText: `Yes, add tag to ${suffix}`,\n title: `Add tag ${tag.name.current} to ${suffix}?`,\n id: 'confirm',\n headerTitle: 'Confirm tag addition',\n tone: 'primary',\n type: 'confirm'\n })\n },\n showConfirmAssetsTagRemove(\n state,\n action: PayloadAction<{\n assetsPicked: AssetItem[]\n closeDialogId?: string\n tag: Tag\n }>\n ) {\n const {assetsPicked, closeDialogId, tag} = action.payload\n\n const suffix = `${assetsPicked.length} ${pluralize('asset', assetsPicked.length)}`\n\n state.items.push({\n closeDialogId,\n confirmCallbackAction: ASSETS_ACTIONS.tagsRemoveRequest({assets: assetsPicked, tag}),\n confirmText: `Yes, remove tag from ${suffix}`,\n headerTitle: 'Confirm tag removal',\n id: 'confirm',\n title: `Remove tag ${tag.name.current} from ${suffix}?`,\n tone: 'critical',\n type: 'confirm'\n })\n },\n showConfirmDeleteAssets(\n state,\n action: PayloadAction<{assets: AssetItem[]; closeDialogId?: string}>\n ) {\n const {assets, closeDialogId} = action.payload\n\n const suffix = `${assets.length} ${pluralize('asset', assets.length)}`\n\n state.items.push({\n closeDialogId,\n confirmCallbackAction: assetsActions.deleteRequest({\n assets: assets.map(assetItem => assetItem.asset)\n }),\n confirmText: `Yes, delete ${suffix}`,\n description: 'This operation cannot be reversed. Are you sure you want to continue?',\n title: `Permanently delete ${suffix}?`,\n id: 'confirm',\n headerTitle: 'Confirm deletion',\n tone: 'critical',\n type: 'confirm'\n })\n },\n showConfirmDeleteTag(state, action: PayloadAction<{closeDialogId?: string; tag: Tag}>) {\n const {closeDialogId, tag} = action.payload\n\n const suffix = 'tag'\n\n state.items.push({\n closeDialogId,\n confirmCallbackAction: tagsActions.deleteRequest({tag}),\n confirmText: `Yes, delete ${suffix}`,\n description: 'This operation cannot be reversed. Are you sure you want to continue?',\n title: `Permanently delete ${suffix}?`,\n id: 'confirm',\n headerTitle: 'Confirm deletion',\n tone: 'critical',\n type: 'confirm'\n })\n },\n showAssetEdit(state, action: PayloadAction<{assetId: string}>) {\n const {assetId} = action.payload\n state.items.push({\n assetId,\n id: assetId,\n type: 'assetEdit'\n })\n },\n showSearchFacets(state) {\n state.items.push({\n id: 'searchFacets',\n type: 'searchFacets'\n })\n },\n showTags(state) {\n state.items.push({\n id: 'tags',\n type: 'tags'\n })\n }\n }\n})\n\n// Epics\n\nexport const dialogClearOnAssetUpdateEpic: MyEpic = action$ =>\n action$.pipe(\n ofType(\n assetsActions.deleteComplete.type,\n assetsActions.updateComplete.type,\n tagsActions.deleteComplete.type,\n tagsActions.updateComplete.type\n ),\n filter(action => !!action?.payload?.closeDialogId),\n mergeMap(action => {\n const dialogId = action?.payload?.closeDialogId\n if (dialogId) {\n return of(dialogSlice.actions.remove({id: dialogId}))\n }\n return empty()\n })\n )\n\nexport const dialogTagCreateEpic: MyEpic = action$ =>\n action$.pipe(\n filter(tagsActions.createComplete.match),\n mergeMap(action => {\n const {assetId, tag} = action?.payload\n\n if (assetId) {\n return of(dialogSlice.actions.inlineTagCreate({tag, assetId}))\n }\n\n if (tag._id) {\n return of(dialogSlice.actions.remove({id: 'tagCreate'}))\n }\n\n return empty()\n })\n )\n\nexport const dialogTagDeleteEpic: MyEpic = action$ =>\n action$.pipe(\n filter(tagsActions.listenerDeleteQueueComplete.match),\n mergeMap(action => {\n const {tagIds} = action?.payload\n\n return of(dialogSlice.actions.inlineTagRemove({tagIds}))\n })\n )\n\nexport const dialogActions = dialogSlice.actions\n\nexport default dialogSlice.reducer\n","import {ThLargeIcon, ThListIcon} from '@sanity/icons'\nimport {Button, Inline} from '@sanity/ui'\nimport React from 'react'\nimport {useDispatch} from 'react-redux'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions} from '../../modules/assets'\n\nconst ButtonViewGroup = () => {\n // Redux\n const dispatch = useDispatch()\n const view = useTypedSelector(state => state.assets.view)\n\n return (\n <Inline space={0} style={{whiteSpace: 'nowrap'}}>\n <Button\n fontSize={1}\n icon={ThLargeIcon}\n mode={view === 'grid' ? 'default' : 'ghost'}\n onClick={() => dispatch(assetsActions.viewSet({view: 'grid'}))}\n style={{\n borderBottomRightRadius: 0,\n borderTopRightRadius: 0\n }}\n />\n <Button\n fontSize={1}\n icon={ThListIcon}\n mode={view === 'table' ? 'default' : 'ghost'}\n onClick={() => dispatch(assetsActions.viewSet({view: 'table'}))}\n style={{\n borderBottomLeftRadius: 0,\n borderTopLeftRadius: 0\n }}\n />\n </Inline>\n )\n}\n\nexport default ButtonViewGroup\n","import {PopoverProps, usePortal} from '@sanity/ui'\n\nexport function usePortalPopoverProps(): PopoverProps {\n const portal = usePortal()\n\n return {\n constrainSize: true,\n floatingBoundary: portal.element,\n portal: true,\n referenceBoundary: portal.element\n }\n}\n","import {SortIcon} from '@sanity/icons'\nimport {Button, Menu, MenuButton, MenuDivider, MenuItem} from '@sanity/ui'\nimport React from 'react'\nimport {useDispatch} from 'react-redux'\nimport {getOrderTitle} from '../../config/orders'\nimport {ORDER_OPTIONS} from '../../constants'\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions} from '../../modules/assets'\n\nconst OrderSelect = () => {\n // Redux\n const dispatch = useDispatch()\n const order = useTypedSelector(state => state.assets.order)\n\n const popoverProps = usePortalPopoverProps()\n\n return (\n <MenuButton\n button={\n <Button\n fontSize={1}\n icon={SortIcon}\n mode=\"bleed\"\n padding={3}\n text={getOrderTitle(order.field, order.direction)}\n />\n }\n id=\"order\"\n menu={\n <Menu>\n {ORDER_OPTIONS?.map((item, index) => {\n if (item) {\n const selected = order.field === item.field && order.direction === item.direction\n return (\n <MenuItem\n disabled={selected}\n fontSize={1}\n iconRight={selected}\n key={index}\n onClick={() =>\n dispatch(\n assetsActions.orderSet({\n order: {direction: item.direction, field: item.field}\n })\n )\n }\n padding={2}\n selected={selected}\n space={4}\n style={{minWidth: '200px'}}\n text={getOrderTitle(item.field, item.direction)}\n />\n )\n }\n\n return <MenuDivider key={index} />\n })}\n </Menu>\n }\n popover={popoverProps}\n />\n )\n}\n\nexport default OrderSelect\n","import {Box} from '@sanity/ui'\nimport {useNProgress} from '@tanem/react-nprogress'\nimport React from 'react'\n\ntype Props = {\n loading?: boolean\n}\n\nconst Progress = (props: Props) => {\n const {loading} = props\n\n const {animationDuration, isFinished, progress} = useNProgress({\n animationDuration: 300,\n isAnimating: loading\n })\n\n return (\n <Box\n style={{\n opacity: isFinished ? 0 : 1,\n transition: `opacity ${animationDuration}ms linear`\n }}\n >\n <Box\n style={{\n height: '1px',\n background: 'rgba(255, 255, 255, 0.5)',\n position: 'absolute',\n left: 0,\n top: 0,\n transition: `width ${animationDuration}ms linear`,\n width: `${progress * 100}%`\n }}\n />\n </Box>\n )\n}\n\nexport default Progress\n","const black$1 = \"#101112\";\nconst white$1 = \"#fff\";\nconst gray = {\n \"50\": {\n title: \"Gray 50\",\n hex: \"#f2f3f5\"\n },\n \"100\": {\n title: \"Gray 100\",\n hex: \"#e6e8ec\"\n },\n \"200\": {\n title: \"Gray 200\",\n hex: \"#ced2d9\"\n },\n \"300\": {\n title: \"Gray 300\",\n hex: \"#b6bcc6\"\n },\n \"400\": {\n title: \"Gray 400\",\n hex: \"#9ea6b3\"\n },\n \"500\": {\n title: \"Gray 500\",\n hex: \"#8690a0\"\n },\n \"600\": {\n title: \"Gray 600\",\n hex: \"#6e7683\"\n },\n \"700\": {\n title: \"Gray 700\",\n hex: \"#565d67\"\n },\n \"800\": {\n title: \"Gray 800\",\n hex: \"#3f434a\"\n },\n \"900\": {\n title: \"Gray 900\",\n hex: \"#272a2e\"\n },\n \"950\": {\n title: \"Gray 950\",\n hex: \"#1b1d20\"\n }\n};\nconst blue = {\n \"50\": {\n title: \"Blue 50\",\n hex: \"#e8f1fe\"\n },\n \"100\": {\n title: \"Blue 100\",\n hex: \"#d2e3fe\"\n },\n \"200\": {\n title: \"Blue 200\",\n hex: \"#a6c8fd\"\n },\n \"300\": {\n title: \"Blue 300\",\n hex: \"#7aacfd\"\n },\n \"400\": {\n title: \"Blue 400\",\n hex: \"#4e91fc\"\n },\n \"500\": {\n title: \"Blue 500\",\n hex: \"#2276fc\"\n },\n \"600\": {\n title: \"Blue 600\",\n hex: \"#1e61cd\"\n },\n \"700\": {\n title: \"Blue 700\",\n hex: \"#1a4d9e\"\n },\n \"800\": {\n title: \"Blue 800\",\n hex: \"#17396f\"\n },\n \"900\": {\n title: \"Blue 900\",\n hex: \"#132540\"\n },\n \"950\": {\n title: \"Blue 950\",\n hex: \"#111b29\"\n }\n};\nconst purple = {\n \"50\": {\n title: \"Purple 50\",\n hex: \"#f8e9fe\"\n },\n \"100\": {\n title: \"Purple 100\",\n hex: \"#f2d3fe\"\n },\n \"200\": {\n title: \"Purple 200\",\n hex: \"#e6a7fd\"\n },\n \"300\": {\n title: \"Purple 300\",\n hex: \"#d97bfd\"\n },\n \"400\": {\n title: \"Purple 400\",\n hex: \"#cd4efc\"\n },\n \"500\": {\n title: \"Purple 500\",\n hex: \"#c123fc\"\n },\n \"600\": {\n title: \"Purple 600\",\n hex: \"#9d1fcd\"\n },\n \"700\": {\n title: \"Purple 700\",\n hex: \"#7a1b9e\"\n },\n \"800\": {\n title: \"Purple 800\",\n hex: \"#56186f\"\n },\n \"900\": {\n title: \"Purple 900\",\n hex: \"#331440\"\n },\n \"950\": {\n title: \"Purple 950\",\n hex: \"#211229\"\n }\n};\nconst magenta = {\n \"50\": {\n title: \"Magenta 50\",\n hex: \"#fcebf5\"\n },\n \"100\": {\n title: \"Magenta 100\",\n hex: \"#f9d7eb\"\n },\n \"200\": {\n title: \"Magenta 200\",\n hex: \"#f4afd8\"\n },\n \"300\": {\n title: \"Magenta 300\",\n hex: \"#ef87c4\"\n },\n \"400\": {\n title: \"Magenta 400\",\n hex: \"#ea5fb1\"\n },\n \"500\": {\n title: \"Magenta 500\",\n hex: \"#e5389e\"\n },\n \"600\": {\n title: \"Magenta 600\",\n hex: \"#ba3082\"\n },\n \"700\": {\n title: \"Magenta 700\",\n hex: \"#8f2866\"\n },\n \"800\": {\n title: \"Magenta 800\",\n hex: \"#65204a\"\n },\n \"900\": {\n title: \"Magenta 900\",\n hex: \"#3a182d\"\n },\n \"950\": {\n title: \"Magenta 950\",\n hex: \"#25141f\"\n }\n};\nconst red = {\n \"50\": {\n title: \"Red 50\",\n hex: \"#fdebea\"\n },\n \"100\": {\n title: \"Red 100\",\n hex: \"#fcd8d5\"\n },\n \"200\": {\n title: \"Red 200\",\n hex: \"#f9b1ab\"\n },\n \"300\": {\n title: \"Red 300\",\n hex: \"#f68b82\"\n },\n \"400\": {\n title: \"Red 400\",\n hex: \"#f36458\"\n },\n \"500\": {\n title: \"Red 500\",\n hex: \"#f03e2f\"\n },\n \"600\": {\n title: \"Red 600\",\n hex: \"#c33529\"\n },\n \"700\": {\n title: \"Red 700\",\n hex: \"#962c23\"\n },\n \"800\": {\n title: \"Red 800\",\n hex: \"#69231d\"\n },\n \"900\": {\n title: \"Red 900\",\n hex: \"#3c1a17\"\n },\n \"950\": {\n title: \"Red 950\",\n hex: \"#261514\"\n }\n};\nconst orange = {\n \"50\": {\n title: \"Orange 50\",\n hex: \"#fef0e6\"\n },\n \"100\": {\n title: \"Orange 100\",\n hex: \"#fee2ce\"\n },\n \"200\": {\n title: \"Orange 200\",\n hex: \"#fdc59d\"\n },\n \"300\": {\n title: \"Orange 300\",\n hex: \"#fca86d\"\n },\n \"400\": {\n title: \"Orange 400\",\n hex: \"#fb8b3c\"\n },\n \"500\": {\n title: \"Orange 500\",\n hex: \"#e57322\"\n },\n \"600\": {\n title: \"Orange 600\",\n hex: \"#ba5f1f\"\n },\n \"700\": {\n title: \"Orange 700\",\n hex: \"#904b1b\"\n },\n \"800\": {\n title: \"Orange 800\",\n hex: \"#653818\"\n },\n \"900\": {\n title: \"Orange 900\",\n hex: \"#3a2415\"\n },\n \"950\": {\n title: \"Orange 950\",\n hex: \"#251a13\"\n }\n};\nconst yellow = {\n \"50\": {\n title: \"Yellow 50\",\n hex: \"#fef7da\"\n },\n \"100\": {\n title: \"Yellow 100\",\n hex: \"#fdefb6\"\n },\n \"200\": {\n title: \"Yellow 200\",\n hex: \"#fcdf6d\"\n },\n \"300\": {\n title: \"Yellow 300\",\n hex: \"#fbd024\"\n },\n \"400\": {\n title: \"Yellow 400\",\n hex: \"#d9b421\"\n },\n \"500\": {\n title: \"Yellow 500\",\n hex: \"#b7991e\"\n },\n \"600\": {\n title: \"Yellow 600\",\n hex: \"#967e1c\"\n },\n \"700\": {\n title: \"Yellow 700\",\n hex: \"#746219\"\n },\n \"800\": {\n title: \"Yellow 800\",\n hex: \"#534717\"\n },\n \"900\": {\n title: \"Yellow 900\",\n hex: \"#312c14\"\n },\n \"950\": {\n title: \"Yellow 950\",\n hex: \"#201e13\"\n }\n};\nconst green = {\n \"50\": {\n title: \"Green 50\",\n hex: \"#e7f9ed\"\n },\n \"100\": {\n title: \"Green 100\",\n hex: \"#d0f4dc\"\n },\n \"200\": {\n title: \"Green 200\",\n hex: \"#a1eaba\"\n },\n \"300\": {\n title: \"Green 300\",\n hex: \"#72e097\"\n },\n \"400\": {\n title: \"Green 400\",\n hex: \"#43d675\"\n },\n \"500\": {\n title: \"Green 500\",\n hex: \"#3ab564\"\n },\n \"600\": {\n title: \"Green 600\",\n hex: \"#329454\"\n },\n \"700\": {\n title: \"Green 700\",\n hex: \"#297343\"\n },\n \"800\": {\n title: \"Green 800\",\n hex: \"#215233\"\n },\n \"900\": {\n title: \"Green 900\",\n hex: \"#183122\"\n },\n \"950\": {\n title: \"Green 950\",\n hex: \"#14211a\"\n }\n};\nconst cyan = {\n \"50\": {\n title: \"Cyan 50\",\n hex: \"#e3fafd\"\n },\n \"100\": {\n title: \"Cyan 100\",\n hex: \"#c7f5fc\"\n },\n \"200\": {\n title: \"Cyan 200\",\n hex: \"#90ecf9\"\n },\n \"300\": {\n title: \"Cyan 300\",\n hex: \"#59e3f6\"\n },\n \"400\": {\n title: \"Cyan 400\",\n hex: \"#22daf4\"\n },\n \"500\": {\n title: \"Cyan 500\",\n hex: \"#1fb8ce\"\n },\n \"600\": {\n title: \"Cyan 600\",\n hex: \"#1c97a8\"\n },\n \"700\": {\n title: \"Cyan 700\",\n hex: \"#197583\"\n },\n \"800\": {\n title: \"Cyan 800\",\n hex: \"#16545d\"\n },\n \"900\": {\n title: \"Cyan 900\",\n hex: \"#133237\"\n },\n \"950\": {\n title: \"Cyan 950\",\n hex: \"#112124\"\n }\n};\nconst hues = {\n gray,\n blue,\n purple,\n magenta,\n red,\n orange,\n yellow,\n green,\n cyan\n};\nconst COLOR_HUES = [\"gray\", \"blue\", \"purple\", \"magenta\", \"red\", \"orange\", \"yellow\", \"green\", \"cyan\"];\nconst COLOR_TINTS = [\"50\", \"100\", \"200\", \"300\", \"400\", \"500\", \"600\", \"700\", \"800\", \"900\", \"950\"];\nconst black = {\n title: \"Black\",\n hex: black$1\n};\nconst white = {\n title: \"White\",\n hex: white$1\n};\nexport { COLOR_HUES, COLOR_TINTS, black, blue, cyan, gray, green, hues, magenta, orange, purple, red, white, yellow };\n//# sourceMappingURL=index.js.map\n","import {hues} from '@sanity/color'\nimport {ThemeColorSchemeKey, studioTheme} from '@sanity/ui'\n\nconst SCHEME_COLORS = {\n bg: {\n dark: hues.gray[950].hex,\n light: hues.gray[50].hex\n },\n bg2: {\n dark: hues.gray[900].hex,\n light: hues.gray[100].hex\n },\n inputEnabledBorder: {\n dark: studioTheme.color.dark.default.input.default.enabled.border,\n light: studioTheme.color.light.default.input.default.enabled.border\n },\n inputHoveredBorder: {\n dark: studioTheme.color.dark.default.input.default.hovered.border,\n light: studioTheme.color.light.default.input.default.hovered.border\n },\n mutedHoveredBg: {\n dark: studioTheme.color.dark.primary.muted.primary.hovered.bg,\n light: studioTheme.color.light.primary.muted.primary.hovered.bg\n },\n mutedHoveredFg: {\n dark: studioTheme.color.dark.primary.muted.primary.hovered.fg,\n light: studioTheme.color.light.primary.muted.primary.hovered.fg\n },\n mutedSelectedBg: {\n dark: studioTheme.color.dark.primary.muted.primary.selected.bg,\n light: studioTheme.color.light.primary.muted.primary.selected.bg\n },\n spotBlue: {\n dark: studioTheme.color.dark.primary.spot.blue,\n light: studioTheme.color.light.primary.spot.blue\n }\n}\n\ntype SchemeColorKey = keyof typeof SCHEME_COLORS\n\nexport function getSchemeColor(scheme: ThemeColorSchemeKey, colorKey: SchemeColorKey): string {\n return SCHEME_COLORS[colorKey]?.[scheme]\n}\n","import {CloseIcon} from '@sanity/icons'\nimport {Box, Flex, Label, rem, Text, Theme, ThemeColorSchemeKey} from '@sanity/ui'\nimport {SearchFacetInputProps, WithId} from '@types'\nimport React, {ReactNode} from 'react'\nimport {useDispatch} from 'react-redux'\nimport {useColorScheme} from 'sanity'\nimport styled, {css} from 'styled-components'\nimport {searchActions} from '../../modules/search'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\ntype Props = {\n children: ReactNode\n facet: WithId<SearchFacetInputProps>\n}\n\nconst Container = styled(Box)(({scheme, theme}: {scheme: ThemeColorSchemeKey; theme: Theme}) => {\n return css`\n background: ${getSchemeColor(scheme, 'bg')};\n border-radius: ${rem(theme.sanity.radius[2])};\n `\n})\n\nconst SearchFacet = (props: Props) => {\n const {children, facet} = props\n\n const {scheme} = useColorScheme()\n\n // Redux\n const dispatch = useDispatch()\n\n const handleClose = () => {\n dispatch(searchActions.facetsRemoveById({facetId: facet.id}))\n }\n\n return (\n <Container padding={[2, 2, 1]} scheme={scheme}>\n <Flex align={['flex-start', 'flex-start', 'center']} direction={['column', 'column', 'row']}>\n {/* Title */}\n <Box paddingBottom={[3, 3, 0]} paddingLeft={1} paddingRight={2} paddingTop={[1, 1, 0]}>\n <Label\n size={0}\n style={{\n whiteSpace: 'nowrap'\n }}\n >\n {facet.title}\n </Label>\n </Box>\n\n <Flex align=\"center\">\n {children}\n\n {/* Close button */}\n <Box marginLeft={1} paddingX={2}>\n <Text muted size={0}>\n <CloseIcon onClick={handleClose} />\n </Text>\n </Box>\n </Flex>\n </Flex>\n </Container>\n )\n}\n\nexport default SearchFacet\n","import {TextInput} from '@sanity/ui'\nimport React, {ChangeEvent} from 'react'\n\n// TODO: use correct type\ntype Props = any & {\n onValueChange: (value: number) => void\n value?: number\n}\n\nconst TextInputNumber = (props: Props) => {\n const {onValueChange, value, ...remainingProps} = props\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n const val = e.target.value\n const regex = /^[0-9\\b]+$/\n\n // Test for number and strip leading zeroes\n if (val === '' || regex.test(val)) {\n onValueChange(parseInt(val, 10) || '')\n }\n }\n\n return (\n <TextInput\n {...remainingProps}\n onChange={handleChange} //\n value={value ?? ''}\n />\n )\n}\n\nexport default TextInputNumber\n","import {SelectIcon} from '@sanity/icons'\nimport {Box, Button, Menu, MenuButton, MenuDivider, MenuItem} from '@sanity/ui'\nimport {\n SearchFacetInputNumberModifier,\n SearchFacetInputNumberProps,\n SearchFacetOperatorType,\n WithId\n} from '@types'\nimport React from 'react'\nimport {useDispatch} from 'react-redux'\nimport {operators} from '../../config/searchFacets'\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\nimport {searchActions} from '../../modules/search'\nimport SearchFacet from '../SearchFacet'\nimport TextInputNumber from '../TextInputNumber'\n\ntype Props = {\n facet: WithId<SearchFacetInputNumberProps>\n}\n\nconst SearchFacetNumber = ({facet}: Props) => {\n // Redux\n const dispatch = useDispatch()\n\n const popoverProps = usePortalPopoverProps()\n\n const modifiers = facet?.modifiers\n const selectedModifier = facet?.modifier\n ? modifiers?.find(modifier => modifier.name === facet?.modifier)\n : modifiers?.[0]\n\n const handleOperatorItemClick = (operatorType: SearchFacetOperatorType) => {\n dispatch(searchActions.facetsUpdateById({id: facet.id, operatorType}))\n }\n\n const handleModifierClick = (modifier: SearchFacetInputNumberModifier) => {\n dispatch(searchActions.facetsUpdateById({id: facet.id, modifier: modifier.name}))\n }\n\n const handleValueChange = (value: number) => {\n dispatch(searchActions.facetsUpdateById({id: facet.id, value}))\n }\n\n const selectedOperatorType: SearchFacetOperatorType = facet.operatorType ?? 'greaterThan'\n\n return (\n <SearchFacet facet={facet}>\n {/* Optional operators */}\n {facet?.operatorTypes && (\n <MenuButton\n button={\n <Button\n fontSize={1}\n iconRight={SelectIcon}\n padding={2}\n text={operators[selectedOperatorType].label}\n />\n }\n id=\"operators\"\n menu={\n <Menu>\n {facet.operatorTypes.map((operatorType, index) => {\n if (operatorType) {\n const selected = operatorType === selectedOperatorType\n return (\n <MenuItem\n disabled={selected}\n fontSize={1}\n key={operatorType}\n onClick={() => handleOperatorItemClick(operatorType)}\n padding={2}\n text={operators[operatorType].label}\n />\n )\n }\n\n return <MenuDivider key={index} />\n })}\n </Menu>\n }\n popover={popoverProps}\n />\n )}\n\n {/* Value */}\n <Box marginX={1} style={{maxWidth: '50px'}}>\n <TextInputNumber\n fontSize={1}\n onValueChange={handleValueChange}\n padding={2}\n radius={2}\n width={2}\n value={facet?.value}\n />\n </Box>\n\n {/* Modifiers */}\n {modifiers && (\n <MenuButton\n button={\n <Button\n fontSize={1}\n iconRight={SelectIcon}\n padding={2}\n text={selectedModifier?.title}\n />\n }\n id=\"modifier\"\n menu={\n <Menu>\n {modifiers.map(modifier => {\n const selected = modifier.name === facet.modifier\n return (\n <MenuItem\n disabled={selected}\n fontSize={1}\n key={modifier.name}\n onClick={() => handleModifierClick(modifier)}\n padding={2}\n text={modifier.title}\n />\n )\n })}\n </Menu>\n }\n popover={popoverProps}\n />\n )}\n </SearchFacet>\n )\n}\n\nexport default SearchFacetNumber\n","import {SelectIcon} from '@sanity/icons'\nimport {Box, Button, Menu, MenuButton, MenuDivider, MenuItem} from '@sanity/ui'\nimport {\n SearchFacetInputSelectListItemProps,\n SearchFacetInputSelectProps,\n SearchFacetOperatorType,\n WithId\n} from '@types'\nimport React from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport {operators} from '../../config/searchFacets'\nimport {searchActions} from '../../modules/search'\nimport SearchFacet from '../SearchFacet'\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\n\ntype Props = {\n facet: WithId<SearchFacetInputSelectProps>\n}\n\nconst SearchFacetSelect = ({facet}: Props) => {\n // Redux\n const dispatch = useDispatch()\n\n const popoverProps = usePortalPopoverProps()\n\n const options = facet?.options\n\n const selectedItem = options?.find(v => v.name === facet?.value)\n\n const handleListItemClick = (option: SearchFacetInputSelectListItemProps) => {\n dispatch(searchActions.facetsUpdate({name: facet.name, value: option.name}))\n }\n\n const handleOperatorItemClick = (operatorType: SearchFacetOperatorType) => {\n dispatch(searchActions.facetsUpdate({name: facet.name, operatorType}))\n }\n\n const selectedOperatorType: SearchFacetOperatorType = facet?.operatorType ?? 'is'\n\n return (\n <SearchFacet facet={facet}>\n {/* Optional operators */}\n {facet?.operatorTypes && (\n <MenuButton\n button={\n <Box marginRight={1}>\n <Button\n fontSize={1}\n iconRight={SelectIcon}\n padding={2}\n text={operators[selectedOperatorType].label}\n />\n </Box>\n }\n id=\"operators\"\n menu={\n <Menu>\n {facet.operatorTypes.map((operatorType, index) => {\n if (operatorType) {\n const selected = operatorType === selectedOperatorType\n return (\n <MenuItem\n disabled={selected}\n fontSize={1}\n key={operatorType}\n onClick={() => handleOperatorItemClick(operatorType)}\n padding={2}\n text={operators[operatorType].label}\n />\n )\n }\n\n return <MenuDivider key={index} />\n })}\n </Menu>\n }\n popover={popoverProps}\n />\n )}\n\n {/* List */}\n <MenuButton\n button={\n <Button fontSize={1} iconRight={SelectIcon} padding={2} text={selectedItem?.title} />\n }\n id=\"list\"\n menu={\n <Menu>\n {options?.map((item, index) => {\n const selected = item.name === selectedItem?.name\n return (\n <MenuItem\n disabled={selected}\n fontSize={1}\n key={item.name}\n onClick={() => handleListItemClick(options[index])}\n padding={2}\n text={item.title}\n />\n )\n })}\n </Menu>\n }\n popover={popoverProps}\n />\n </SearchFacet>\n )\n}\n\nexport default SearchFacetSelect\n","import {SelectIcon} from '@sanity/icons'\nimport {Box, Button, Menu, MenuButton, MenuDivider, MenuItem, TextInput} from '@sanity/ui'\nimport {SearchFacetInputStringProps, SearchFacetOperatorType, WithId} from '@types'\nimport React, {ChangeEvent} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport {operators} from '../../config/searchFacets'\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\nimport {searchActions} from '../../modules/search'\nimport SearchFacet from '../SearchFacet'\n\ntype Props = {\n facet: WithId<SearchFacetInputStringProps>\n}\n\nconst SearchFacetString = ({facet}: Props) => {\n // Redux\n const dispatch = useDispatch()\n\n const popoverProps = usePortalPopoverProps()\n\n const handleOperatorItemClick = (operatorType: SearchFacetOperatorType) => {\n dispatch(searchActions.facetsUpdateById({id: facet.id, operatorType}))\n }\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n dispatch(searchActions.facetsUpdateById({id: facet.id, value: e.target.value}))\n }\n\n const selectedOperatorType: SearchFacetOperatorType = facet.operatorType\n\n return (\n <SearchFacet facet={facet}>\n {/* Optional operators */}\n {facet?.operatorTypes && (\n <MenuButton\n button={\n <Button\n fontSize={1}\n iconRight={SelectIcon}\n padding={2}\n text={operators[selectedOperatorType].label}\n />\n }\n id=\"operators\"\n menu={\n <Menu>\n {facet.operatorTypes.map((operatorType, index) => {\n if (operatorType) {\n const selected = operatorType === selectedOperatorType\n return (\n <MenuItem\n disabled={selected}\n fontSize={1}\n key={operatorType}\n onClick={() => handleOperatorItemClick(operatorType)}\n padding={2}\n text={operators[operatorType].label}\n />\n )\n }\n\n return <MenuDivider key={index} />\n })}\n </Menu>\n }\n popover={popoverProps}\n />\n )}\n\n {/* Value */}\n {!operators[selectedOperatorType].hideInput && (\n <Box marginLeft={1} style={{maxWidth: '125px'}}>\n <TextInput\n fontSize={1}\n onChange={handleChange}\n padding={2}\n radius={2}\n width={2}\n value={facet?.value}\n />\n </Box>\n )}\n </SearchFacet>\n )\n}\n\nexport default SearchFacetString\n","import {CloseIcon} from '@sanity/icons'\nimport {Box, Card, rem, studioTheme, Text, ThemeColorSchemeKey} from '@sanity/ui'\nimport React from 'react'\nimport {components, StylesConfig} from 'react-select'\nimport {Virtuoso} from 'react-virtuoso'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\nconst {\n fonts: {\n text: {sizes: themeTextSizes}\n },\n radius: themeRadius,\n space: themeSpace\n} = studioTheme\n\nexport const reactSelectStyles = (scheme: ThemeColorSchemeKey): StylesConfig => {\n return {\n control: (styles, {isDisabled, isFocused}) => {\n let boxShadow = `inset 0 0 0 1px var(--card-border-color)`\n if (isFocused) {\n boxShadow = `inset 0 0 0 1px ${getSchemeColor(scheme, 'inputEnabledBorder')},\n 0 0 0 1px ${getSchemeColor(scheme, 'bg2')},\n 0 0 0 3px var(--card-focus-ring-color) !important`\n }\n\n return {\n ...styles,\n backgroundColor: 'var(--card-bg-color)',\n color: 'inherit',\n border: 'none',\n borderRadius: themeRadius[2],\n boxShadow,\n fontSize: themeTextSizes[1].fontSize,\n minHeight: '25px',\n opacity: isDisabled ? 0.5 : 'inherit',\n outline: 'none',\n transition: 'none',\n '&:hover': {\n boxShadow: `inset 0 0 0 1px ${getSchemeColor(scheme, 'inputHoveredBorder')}`\n }\n }\n },\n input: styles => ({\n ...styles,\n color: 'var(--card-fg-color)',\n fontFamily: studioTheme.fonts.text.family,\n fontSize: themeTextSizes[1].fontSize,\n marginLeft: rem(themeSpace[2])\n }),\n menuList: styles => ({\n ...styles,\n padding: 0\n }),\n noOptionsMessage: styles => ({\n ...styles,\n fontFamily: studioTheme.fonts.text.family,\n fontSize: themeTextSizes[1].fontSize,\n lineHeight: '1em'\n }),\n option: (styles, {isFocused}) => ({\n ...styles,\n backgroundColor: isFocused ? getSchemeColor(scheme, 'spotBlue') : 'transparent',\n borderRadius: themeRadius[2],\n color: isFocused ? getSchemeColor(scheme, 'bg') : 'inherit',\n fontSize: themeTextSizes[1].fontSize,\n lineHeight: '1em',\n margin: 0,\n padding: rem(themeSpace[1]),\n '&:hover': {\n backgroundColor: getSchemeColor(scheme, 'spotBlue'),\n color: getSchemeColor(scheme, 'bg')\n }\n }),\n placeholder: styles => ({\n ...styles,\n fontSize: themeTextSizes[1].fontSize,\n marginLeft: rem(themeSpace[2]),\n paddingLeft: 0\n }),\n singleValue: styles => ({\n ...styles,\n alignItems: 'center',\n display: 'inline-flex',\n height: '100%',\n marginLeft: rem(themeSpace[2])\n }),\n valueContainer: styles => ({\n ...styles,\n margin: 0,\n padding: 0\n })\n }\n}\n\nconst ClearIndicator = (props: any) => {\n return (\n <components.ClearIndicator {...props}>\n <Box\n paddingRight={1}\n style={{\n transform: 'scale(0.85)'\n }}\n >\n <Text muted size={0}>\n <CloseIcon />\n </Text>\n </Box>\n </components.ClearIndicator>\n )\n}\n\nconst Menu = (props: any) => {\n return (\n <components.Menu {...props}>\n <Card radius={1} shadow={2}>\n {props.children}\n </Card>\n </components.Menu>\n )\n}\n\nconst MenuList = (props: any) => {\n const {children} = props\n\n const MAX_ROWS = 5\n const OPTION_HEIGHT = 33\n\n if (Array.isArray(children)) {\n const height =\n children.length > MAX_ROWS ? OPTION_HEIGHT * MAX_ROWS : children.length * OPTION_HEIGHT\n\n return (\n <Virtuoso\n className=\"media__custom-scrollbar\"\n itemContent={index => {\n const item = children[index]\n return <Option {...item.props} />\n }}\n style={{height}}\n totalCount={children.length}\n />\n )\n }\n return <components.MenuList {...props}>{children}</components.MenuList>\n}\n\nconst NoOptionsMessage = (props: any) => {\n return <components.NoOptionsMessage {...props}>{props.children}</components.NoOptionsMessage>\n}\n\nconst Option = (props: any) => {\n return (\n <Box padding={1}>\n <components.Option {...props}>\n <Box paddingY={1}>\n <Text size={1} style={{color: 'inherit'}} textOverflow=\"ellipsis\">\n {props.children}\n </Text>\n </Box>\n </components.Option>\n </Box>\n )\n}\n\nconst SingleValue = (props: any) => {\n return (\n <components.SingleValue {...props}>\n <Text size={1} textOverflow=\"ellipsis\">\n {props.children}\n </Text>\n </components.SingleValue>\n )\n}\n\nexport const reactSelectComponents = {\n ClearIndicator,\n DropdownIndicator: null,\n IndicatorSeparator: null,\n Menu,\n MenuList,\n NoOptionsMessage,\n Option,\n SingleValue\n}\n","import {SelectIcon} from '@sanity/icons'\nimport {Box, Button, Menu, MenuButton, MenuDivider, MenuItem} from '@sanity/ui'\nimport {\n TagSelectOption,\n SearchFacetInputSearchableProps,\n SearchFacetOperatorType,\n WithId\n} from '@types'\nimport React from 'react'\nimport {useDispatch} from 'react-redux'\nimport Select from 'react-select'\nimport {useColorScheme} from 'sanity'\nimport {operators} from '../../config/searchFacets'\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {searchActions} from '../../modules/search'\nimport {selectTags} from '../../modules/tags'\nimport {reactSelectComponents, reactSelectStyles} from '../../styled/react-select/single'\nimport getTagSelectOptions from '../../utils/getTagSelectOptions'\nimport SearchFacet from '../SearchFacet'\n\ntype Props = {\n facet: WithId<SearchFacetInputSearchableProps>\n}\n\nconst SearchFacetTags = ({facet}: Props) => {\n const {scheme} = useColorScheme()\n\n // Redux\n const dispatch = useDispatch()\n const tags = useTypedSelector(state => selectTags(state))\n const tagsFetching = useTypedSelector(state => state.tags.fetching)\n const allTagOptions = getTagSelectOptions(tags)\n\n const popoverProps = usePortalPopoverProps()\n\n const handleChange = (option: TagSelectOption) => {\n dispatch(\n searchActions.facetsUpdateById({\n id: facet.id,\n value: option\n })\n )\n }\n\n const handleOperatorItemClick = (operatorType: SearchFacetOperatorType) => {\n dispatch(\n searchActions.facetsUpdateById({\n id: facet.id,\n operatorType\n })\n )\n }\n\n const selectedOperatorType: SearchFacetOperatorType = facet.operatorType\n\n return (\n <SearchFacet facet={facet}>\n {/* Optional operators */}\n {facet?.operatorTypes && (\n <MenuButton\n button={\n <Button\n fontSize={1}\n iconRight={SelectIcon}\n padding={2}\n text={operators[selectedOperatorType].label}\n />\n }\n id=\"operators\"\n menu={\n <Menu>\n {facet.operatorTypes.map((operatorType, index) => {\n if (operatorType) {\n const selected = operatorType === selectedOperatorType\n return (\n <MenuItem\n disabled={selected}\n fontSize={1}\n key={operatorType}\n onClick={() => handleOperatorItemClick(operatorType)}\n padding={2}\n space={4}\n style={{minWidth: '150px'}}\n text={operators[operatorType].label}\n />\n )\n }\n\n return <MenuDivider key={index} />\n })}\n </Menu>\n }\n popover={popoverProps}\n />\n )}\n\n {/* Value */}\n {!operators[selectedOperatorType].hideInput && (\n <Box marginX={1} style={{width: '160px'}}>\n <Select\n components={reactSelectComponents}\n instanceId=\"facet-searchable\"\n isClearable\n isDisabled={tagsFetching}\n isSearchable\n name=\"tags\"\n noOptionsMessage={() => 'No tags'}\n onChange={value => handleChange(value as TagSelectOption)}\n options={allTagOptions}\n placeholder={tagsFetching ? 'Loading...' : 'Select...'}\n styles={reactSelectStyles(scheme)}\n value={facet?.value}\n />\n </Box>\n )}\n </SearchFacet>\n )\n}\n\nexport default SearchFacetTags\n","import {Box, Flex, Inline, rem, Theme} from '@sanity/ui'\nimport React from 'react'\nimport styled, {css} from 'styled-components'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport SearchFacetNumber from '../SearchFacetNumber'\nimport SearchFacetSelect from '../SearchFacetSelect'\nimport SearchFacetString from '../SearchFacetString'\nimport SearchFacetTags from '../SearchFacetTags'\n\ntype Props = {\n layout?: 'inline' | 'stack'\n}\n\nconst StackContainer = styled(Flex)(({theme}: {theme: Theme}) => {\n return css`\n > * {\n margin-bottom: ${rem(theme.sanity.space[2])};\n }\n `\n})\n\nconst SearchFacets = (props: Props) => {\n const {layout = 'inline'} = props\n\n // Redux\n const searchFacets = useTypedSelector(state => state.search.facets)\n\n const Items = searchFacets.map(facet => {\n const key = facet.id\n if (facet.type === 'number') {\n return <SearchFacetNumber facet={facet} key={key} />\n }\n\n if (facet.type === 'searchable') {\n return <SearchFacetTags facet={facet} key={key} />\n }\n\n if (facet.type === 'select') {\n return <SearchFacetSelect facet={facet} key={key} />\n }\n\n if (facet.type === 'string') {\n return <SearchFacetString facet={facet} key={key} />\n }\n\n return null\n })\n\n if (layout === 'inline') {\n if (searchFacets.length === 0) {\n return null\n }\n\n return (\n <Box marginBottom={2}>\n <Inline space={2}>{Items}</Inline>\n </Box>\n )\n }\n\n if (layout === 'stack') {\n return (\n <StackContainer align=\"flex-start\" direction=\"column\">\n {Items}\n </StackContainer>\n )\n }\n\n throw Error('Invalid layout')\n}\n\nexport default SearchFacets\n","import {AddIcon} from '@sanity/icons'\nimport {Button, Flex, Menu, MenuButton, MenuDivider, MenuGroup, MenuItem} from '@sanity/ui'\nimport {SearchFacetDivider, SearchFacetGroup, SearchFacetInputProps} from '@types'\nimport React from 'react'\nimport {useDispatch} from 'react-redux'\nimport {FACETS} from '../../constants'\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {searchActions} from '../../modules/search'\n\nconst SearchFacetsControl = () => {\n // Redux\n const dispatch = useDispatch()\n const assetTypes = useTypedSelector(state => state.assets.assetTypes)\n const searchFacets = useTypedSelector(state => state.search.facets)\n const selectedDocument = useTypedSelector(state => state.selected.document)\n\n const popoverProps = usePortalPopoverProps()\n\n const isTool = !selectedDocument\n\n const filteredFacets = FACETS\n // Filter facets based on current context, whether it's invoked as a tool, or via selection through via custom asset source.\n .filter(facet => {\n if (facet.type === 'group' || facet.type === 'divider') {\n return true\n }\n\n if (isTool) {\n return !facet?.selectOnly\n }\n\n const matchingAssetTypes = facet.assetTypes.filter(assetType =>\n assetTypes.includes(assetType)\n )\n return matchingAssetTypes.length > 0\n })\n // Remove adjacent and leading / trailing dividers\n .filter((facet, index, facets) => {\n const previousFacet = facets[index - 1]\n // Ignore leading + trailing dividers\n if (facet.type === 'divider' && (index === 0 || index === facets.length - 1)) {\n return false\n }\n // Ignore adjacent dividers\n if (facet.type === 'divider' && previousFacet?.type === 'divider') {\n return false\n }\n return true\n })\n\n const hasSearchFacets = filteredFacets.length > 0\n\n const renderMenuFacets = (\n facets: (SearchFacetDivider | SearchFacetGroup | SearchFacetInputProps)[],\n level: number = 0\n ) => {\n return (\n <>\n {facets?.map((facet, index) => {\n if (facet.type === 'divider') {\n return <MenuDivider key={index} />\n }\n\n // Recursively render menu facets\n if (facet.type === 'group') {\n return (\n <MenuGroup key={`group-${level}-${index}`} text={facet.title} title={facet.title}>\n {renderMenuFacets(facet.facets, level + 1)}\n </MenuGroup>\n )\n }\n\n if (facet) {\n const disabled = !facet.operatorTypes && !!searchFacets.find(v => v.name === facet.name)\n\n return (\n <MenuItem\n disabled={disabled}\n fontSize={1}\n key={facet.name}\n onClick={() => dispatch(searchActions.facetsAdd({facet}))}\n padding={2}\n text={facet.title}\n />\n )\n }\n\n return null\n })}\n </>\n )\n }\n\n return (\n <Flex>\n {/* Add filter button */}\n <MenuButton\n button={\n <Button\n disabled={!hasSearchFacets}\n fontSize={1}\n icon={AddIcon}\n mode=\"bleed\"\n space={2}\n text=\"Add filter\"\n tone=\"primary\"\n />\n }\n id=\"facets\"\n menu={<Menu>{renderMenuFacets(filteredFacets)}</Menu>}\n popover={{\n ...popoverProps,\n placement: 'right-start'\n }}\n />\n\n {/* Clear facets button */}\n {searchFacets.length > 0 && (\n <Button\n fontSize={1}\n mode=\"bleed\"\n onClick={() => dispatch(searchActions.facetsClear())}\n text=\"Clear\"\n />\n )}\n </Flex>\n )\n}\n\nexport default SearchFacetsControl\n","import React from 'react'\n\nconst TagIcon = () => (\n <svg\n data-sanity-icon=\"media__tag\" // For icon usage with @sanity/ui <Button />\n fill=\"currentColor\"\n height=\"1em\"\n stroke=\"currentColor\"\n strokeWidth=\"0\"\n viewBox=\"0 0 512 512\"\n width=\"1em\"\n >\n <path\n d=\"M435.25 48h-122.9a14.46 14.46 0 00-10.2 4.2L56.45 297.9a28.85 28.85 0 000 40.7l117 117a28.85 28.85 0 0040.7 0L459.75 210a14.46 14.46 0 004.2-10.2v-123a28.66 28.66 0 00-28.7-28.8z\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"32\"\n />\n <path d=\"M384 160a32 32 0 1132-32 32 32 0 01-32 32z\" />\n </svg>\n)\n\nexport default TagIcon\n","import {CloseIcon, SearchIcon} from '@sanity/icons'\nimport {Box, Flex, TextInput} from '@sanity/ui'\nimport React, {ChangeEvent} from 'react'\nimport {useDispatch} from 'react-redux'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {searchActions} from '../../modules/search'\n\nconst TextInputSearch = () => {\n // Redux\n const searchQuery = useTypedSelector(state => state.search.query)\n\n // Redux\n const dispatch = useDispatch()\n\n // Callbacks\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n dispatch(searchActions.querySet({searchQuery: e.currentTarget.value}))\n }\n\n const handleClear = () => {\n dispatch(searchActions.querySet({searchQuery: ''}))\n }\n\n return (\n <Box style={{position: 'relative'}}>\n <TextInput\n fontSize={1}\n icon={SearchIcon}\n onChange={handleChange}\n placeholder=\"Search\"\n radius={2}\n value={searchQuery}\n />\n\n {/* Clear form button */}\n {searchQuery.length > 0 && (\n <Flex\n align=\"center\"\n justify=\"center\"\n onClick={handleClear}\n style={{\n cursor: 'pointer',\n height: '100%',\n opacity: 0.75,\n position: 'absolute',\n right: 0,\n top: 0,\n width: '2em',\n zIndex: 1 // force stacking context\n }}\n >\n <CloseIcon />\n </Flex>\n )}\n </Box>\n )\n}\n\nexport default TextInputSearch\n","import {Box, Button, Flex, Inline, useMediaIndex} from '@sanity/ui'\nimport React from 'react'\nimport {useDispatch} from 'react-redux'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {dialogActions} from '../../modules/dialog'\nimport {tagsActions} from '../../modules/tags'\nimport ButtonViewGroup from '../ButtonViewGroup'\nimport OrderSelect from '../OrderSelect'\nimport Progress from '../Progress'\nimport SearchFacets from '../SearchFacets'\nimport SearchFacetsControl from '../SearchFacetsControl'\nimport TagIcon from '../TagIcon'\nimport TextInputSearch from '../TextInputSearch'\n\nconst Controls = () => {\n // Redux\n const dispatch = useDispatch()\n const fetching = useTypedSelector(state => state.assets.fetching)\n const pageIndex = useTypedSelector(state => state.assets.pageIndex)\n const searchFacets = useTypedSelector(state => state.search.facets)\n const tagsPanelVisible = useTypedSelector(state => state.tags.panelVisible)\n\n const mediaIndex = useMediaIndex()\n\n // Callbacks\n const handleShowSearchFacetDialog = () => {\n dispatch(dialogActions.showSearchFacets())\n }\n\n const handleShowTagsDialog = () => {\n dispatch(dialogActions.showTags())\n }\n\n const toggleTagsPanelToggle = () => {\n dispatch(tagsActions.panelVisibleSet({panelVisible: !tagsPanelVisible}))\n }\n\n return (\n <Box\n paddingY={2}\n style={{\n borderBottom: '1px solid var(--card-border-color)',\n zIndex: 2\n }}\n >\n {/* Rows: search / filters / orders */}\n <Box marginBottom={2}>\n <Flex\n align=\"flex-start\"\n direction={['column', 'column', 'column', 'column', 'row']}\n justify=\"space-between\"\n >\n {/* Search + Filters */}\n <Flex\n flex={1}\n style={{\n alignItems: 'flex-start',\n flex: 1,\n height: '100%',\n justifyContent: mediaIndex < 2 ? 'space-between' : 'flex-start',\n position: 'relative',\n width: '100%'\n }}\n >\n <Box marginX={2} style={{minWidth: '200px'}}>\n {/* Search */}\n <TextInputSearch />\n </Box>\n\n <Box display={['none', 'none', 'block']}>\n <SearchFacets />\n\n {/* Search Facets Control (add / clear) */}\n <SearchFacetsControl />\n </Box>\n\n <Box display={['block', 'block', 'none']} marginX={2}>\n <Inline space={2} style={{whiteSpace: 'nowrap'}}>\n {/* Filters button (small) */}\n <Button\n fontSize={1}\n mode=\"ghost\"\n onClick={handleShowSearchFacetDialog}\n text={`Filters${searchFacets.length > 0 ? ` (${searchFacets.length})` : ''}`}\n tone=\"primary\"\n />\n\n {/* Tags button (small) */}\n <Button\n fontSize={1}\n mode=\"ghost\"\n onClick={handleShowTagsDialog}\n text={`Tags`}\n tone=\"primary\"\n />\n </Inline>\n </Box>\n </Flex>\n </Flex>\n </Box>\n\n <Box>\n <Flex align=\"center\" justify={['space-between']}>\n {/* Views */}\n <Box marginX={2}>\n <ButtonViewGroup />\n </Box>\n\n <Flex marginX={2}>\n {/* Orders */}\n <OrderSelect />\n {/* Tags panel toggle */}\n <Box display={['none', 'none', 'block']} marginLeft={2}>\n <Button\n fontSize={1}\n icon={\n <Box style={{transform: 'scale(0.75)'}}>\n <TagIcon />\n </Box>\n }\n onClick={toggleTagsPanelToggle}\n mode={tagsPanelVisible ? 'default' : 'ghost'}\n text={tagsPanelVisible ? 'Tags' : ''}\n />\n </Box>\n </Flex>\n </Flex>\n </Box>\n\n {/* Progress bar */}\n <Progress key={pageIndex} loading={fetching} />\n </Box>\n )\n}\n\nexport default Controls\n","import {PayloadAction, createSlice} from '@reduxjs/toolkit'\n\ntype DebugReducerState = {\n badConnection: boolean\n enabled: boolean\n}\n\nconst initialState = {\n badConnection: false,\n enabled: false\n} as DebugReducerState\n\nconst debugSlice = createSlice({\n name: 'debug',\n initialState,\n reducers: {\n setBadConnection(state, action: PayloadAction<boolean>) {\n state.badConnection = action.payload\n },\n toggleEnabled(state) {\n state.enabled = !state.enabled\n }\n }\n})\n\nexport const debugActions = debugSlice.actions\n\nexport default debugSlice.reducer\n","import {PlugIcon} from '@sanity/icons'\nimport {Box, Flex, Switch, Text, Tooltip} from '@sanity/ui'\nimport React, {ChangeEvent} from 'react'\nimport {useDispatch} from 'react-redux'\nimport useKeyPress from '../../hooks/useKeyPress'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {debugActions} from '../../modules/debug'\n\nconst DebugControls = () => {\n // Redux\n const dispatch = useDispatch()\n const badConnection = useTypedSelector(state => state.debug.badConnection)\n const debugEnabled = useTypedSelector(state => state.debug.enabled)\n\n // Callbacks\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n const checked = e.target.checked\n\n dispatch(debugActions.setBadConnection(checked))\n }\n\n const handleToggleControls = () => {\n dispatch(debugActions.toggleEnabled())\n }\n\n // Close on escape key press\n useKeyPress('alt+ctrl+shift+/', handleToggleControls)\n\n if (!debugEnabled) {\n return null\n }\n\n return (\n <Box\n padding={4}\n style={{\n bottom: 0,\n left: 0,\n pointerEvents: 'none',\n position: 'fixed',\n width: '100%'\n }}\n >\n {/* Bad connection toggle */}\n <Flex align=\"center\">\n <Box marginRight={3}>\n <Text muted size={1}>\n <PlugIcon />\n </Text>\n </Box>\n <Tooltip\n content={\n <Box padding={2}>\n <Text muted size={1}>\n {badConnection\n ? 'Bad connection: +3000ms & 50% chance to fail'\n : 'No connection throttling'}\n </Text>\n </Box>\n }\n fallbackPlacements={['right', 'left']}\n placement=\"bottom\"\n portal\n >\n <Switch\n checked={badConnection}\n onChange={handleChange}\n style={{\n pointerEvents: 'auto'\n }}\n />\n </Tooltip>\n </Flex>\n </Box>\n )\n}\n\nexport default DebugControls\n","import * as z from 'zod'\n\nexport const tagOptionSchema = z.object({\n label: z.string().trim().min(1, {message: 'Label cannot be empty'}),\n value: z.string().trim().min(1, {message: 'Value cannot be empty'})\n})\n\nexport const assetFormSchema = z.object({\n altText: z.string().trim().optional(),\n description: z.string().trim().optional(),\n opt: z.object({\n media: z.object({\n tags: z.array(tagOptionSchema).nullable()\n })\n }),\n originalFilename: z.string().trim().min(1, {message: 'Filename cannot be empty'}),\n title: z.string().trim().optional()\n})\n\nexport const tagFormSchema = z.object({\n name: z.string().min(1, {message: 'Name cannot be empty'})\n})\n","import {SanityDocument} from '@sanity/client'\n\nexport function getUniqueDocuments(documents: SanityDocument[]): SanityDocument[] {\n const draftIds = documents.reduce(\n (acc: string[], doc: SanityDocument) =>\n doc._id.startsWith('drafts.') ? acc.concat(doc._id.slice(7)) : acc,\n []\n )\n\n const filteredDocuments: SanityDocument[] = documents.filter(\n (doc: SanityDocument) => !draftIds.includes(doc._id)\n )\n\n return filteredDocuments\n}\n","import {ImageAsset} from '@types'\n\nconst imageDprUrl = (\n asset: ImageAsset,\n options: {\n width: number\n height?: number\n }\n): string => {\n const dpi =\n typeof window === 'undefined' || !window.devicePixelRatio\n ? 1\n : Math.round(window.devicePixelRatio)\n const imgH = options?.height ? options?.height * Math.max(1, dpi) : undefined\n const imgW = options.width * Math.max(1, dpi)\n\n const urlParams = new URLSearchParams()\n urlParams.append('fit', 'max')\n urlParams.append('w', imgW.toString())\n if (imgH) {\n urlParams.append('h', imgH.toString())\n }\n\n return `${asset.url}?${urlParams.toString()}`\n}\n\nexport default imageDprUrl\n","// Recursively sanitize form data:\n// - convert empty strings, undefined values and empty arrays to null (to correctly unset / delete fields)\n// - trim whitespace on string fleids\n\ntype FormData = Record<string, any>\n\nconst sanitizeFormData = (formData: FormData): FormData => {\n return Object.keys(formData).reduce((acc: FormData, key) => {\n const val = formData[key]\n\n // TODO: refactor\n if (typeof val === 'object' && val !== null && val.constructor !== Array) {\n acc[key] = sanitizeFormData(val)\n } else if (val === '' || typeof val === 'undefined' || val?.length === 0) {\n acc[key] = null\n } else if (typeof val === 'string' && val) {\n acc[key] = formData[key].trim()\n } else {\n acc[key] = formData[key]\n }\n\n return acc\n }, {})\n}\n\nexport default sanitizeFormData\n","import {Asset, FileAsset, ImageAsset} from '@types'\n\nexport const isFileAsset = (asset: Asset): asset is FileAsset => {\n return (asset as FileAsset)._type === 'sanity.fileAsset'\n}\n\nexport const isImageAsset = (asset: Asset): asset is ImageAsset => {\n return (asset as ImageAsset)._type === 'sanity.imageAsset'\n}\n","import {ImageAsset} from '@types'\n\nconst getAssetResolution = (asset: ImageAsset) => {\n return `${asset.metadata.dimensions.width}x${asset.metadata.dimensions.height}px`\n}\n\nexport default getAssetResolution\n","import {ClipboardIcon} from '@sanity/icons'\nimport {Button, Popover, Text} from '@sanity/ui'\nimport copy from 'copy-to-clipboard'\nimport React, {useEffect, useRef, useState} from 'react'\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\n\ntype Props = {\n disabled?: boolean\n url: string\n}\n\nconst ButtonAssetCopy = ({disabled, url}: Props) => {\n const popoverProps = usePortalPopoverProps()\n const refPopoverTimeout = useRef<ReturnType<typeof window.setTimeout>>()\n const [popoverVisible, setPopoverVisible] = useState(false)\n\n const handleClick = () => {\n if (refPopoverTimeout.current) {\n clearTimeout(refPopoverTimeout.current)\n }\n\n setPopoverVisible(true)\n copy(url)\n\n refPopoverTimeout.current = setTimeout(() => {\n setPopoverVisible(false)\n }, 1250)\n }\n\n // Effects\n useEffect(() => {\n return () => {\n if (refPopoverTimeout.current) {\n clearTimeout(refPopoverTimeout.current)\n }\n }\n }, [])\n\n return (\n <Popover\n content={\n <Text muted size={1}>\n Copied!\n </Text>\n }\n open={popoverVisible}\n padding={2}\n placement=\"top\"\n radius={1}\n {...popoverProps}\n >\n <Button\n disabled={disabled}\n fontSize={1}\n icon={ClipboardIcon}\n mode=\"ghost\"\n onClick={handleClick}\n text=\"Copy URL\"\n />\n </Popover>\n )\n}\n\nexport default ButtonAssetCopy\n","import {DownloadIcon} from '@sanity/icons'\nimport {Box, Button, Flex, Inline, Stack, Text} from '@sanity/ui'\nimport {Asset, AssetItem} from '@types'\nimport format from 'date-fns/format'\nimport filesize from 'filesize'\nimport React, {ReactNode} from 'react'\nimport getAssetResolution from '../../utils/getAssetResolution'\nimport {isImageAsset} from '../../utils/typeGuards'\nimport ButtonAssetCopy from '../ButtonAssetCopy'\n\ntype Props = {\n asset: Asset\n item?: AssetItem\n}\n\nconst Row = ({label, value}: {label: string; value: ReactNode}) => {\n return (\n <Flex justify=\"space-between\">\n <Text\n size={1}\n style={{\n opacity: 0.8,\n width: '40%'\n }}\n textOverflow=\"ellipsis\"\n >\n {label}\n </Text>\n <Text\n size={1}\n style={{\n opacity: 0.4,\n textAlign: 'right',\n width: '60%'\n }}\n textOverflow=\"ellipsis\"\n >\n {value}\n </Text>\n </Flex>\n )\n}\n\nconst AssetMetadata = (props: Props) => {\n const {asset, item} = props\n\n const exif = asset?.metadata?.exif\n\n // Callbacks\n const handleDownload = () => {\n window.location.href = `${asset.url}?dl=${asset.originalFilename}`\n }\n\n return (\n <Box marginTop={3}>\n {/* Base */}\n <Box>\n <Stack space={3}>\n <Row label=\"Size\" value={filesize(asset?.size, {base: 10, round: 0})} />\n <Row label=\"MIME type\" value={asset?.mimeType} />\n <Row label=\"Extension\" value={(asset?.extension).toUpperCase()} />\n {isImageAsset(asset) && <Row label=\"Dimensions\" value={getAssetResolution(asset)} />}\n </Stack>\n </Box>\n {/* EXIF */}\n {exif &&\n (exif.DateTimeOriginal ||\n exif.FNumber ||\n exif.FocalLength ||\n exif.ExposureTime ||\n exif.ISO) && (\n <>\n {/* Divider */}\n <Box\n marginY={4}\n style={{\n background: 'var(--card-border-color)',\n height: '1px',\n width: '100%'\n }}\n />\n <Box>\n <Stack space={3}>\n {exif.ISO && <Row label=\"ISO\" value={exif.ISO} />}\n {exif.FNumber && <Row label=\"Aperture\" value={`ƒ/${exif.FNumber}`} />}\n {exif.FocalLength && <Row label=\"Focal length\" value={`${exif.FocalLength}mm`} />}\n {exif.ExposureTime && (\n <Row label=\"Exposure time\" value={`1/${1 / exif.ExposureTime}`} />\n )}\n {exif.DateTimeOriginal && (\n <Row\n label=\"Original date\"\n value={format(new Date(exif.DateTimeOriginal), 'PPp')}\n />\n )}\n </Stack>\n </Box>\n </>\n )}\n\n {/* Asset actions */}\n <Box marginTop={5}>\n <Inline space={2}>\n {/* Download */}\n <Button\n disabled={!item || item?.updating}\n fontSize={1}\n icon={DownloadIcon}\n mode=\"ghost\"\n onClick={handleDownload}\n text=\"Download\"\n />\n {/* Copy to clipboard */}\n <ButtonAssetCopy disabled={!item || item?.updating} url={asset.url} />\n </Inline>\n </Box>\n </Box>\n )\n}\n\nexport default AssetMetadata\n","import {Dialog as SanityDialog} from '@sanity/ui'\nimport React, {ComponentProps} from 'react'\n\nconst Dialog = (props: ComponentProps<typeof SanityDialog>) => {\n // HACK: Temporarily force fixed positioning on all @sanity/ui <Dialog /> components.\n // The studio is currently setting absolute positioning on all root-level dialogs on the mobile breakpoint,\n // causing unwanted scroll behaviour.\n return <SanityDialog {...props} style={{position: 'fixed'}} />\n}\n\nexport default Dialog\n","import type {SanityDocument} from '@sanity/client'\nimport {Box, Button, Card, Stack, Text} from '@sanity/ui'\nimport React from 'react'\nimport {Preview, SchemaType, useSchema} from 'sanity'\nimport {useIntentLink} from 'sanity/router'\n\ntype Props = {\n documents: SanityDocument[]\n isLoading: boolean\n}\n\nconst DocumentList = ({documents, isLoading}: Props) => {\n const schema = useSchema()\n\n if (isLoading) {\n return (\n <Text muted size={1}>\n Loading...\n </Text>\n )\n }\n\n if (documents.length === 0) {\n return (\n <Text muted size={1}>\n No documents are referencing this asset\n </Text>\n )\n }\n\n return (\n <Card flex={1} marginBottom={2} padding={2} radius={2} shadow={1}>\n <Stack space={2}>\n {documents?.map(doc => (\n <ReferringDocument doc={doc} key={doc._id} schemaType={schema.get(doc._type)} />\n ))}\n </Stack>\n </Card>\n )\n}\n\nconst ReferringDocument = (props: {doc: SanityDocument; schemaType?: SchemaType}) => {\n const {doc, schemaType} = props\n\n const {onClick} = useIntentLink({\n intent: 'edit',\n params: {id: doc._id}\n })\n\n return schemaType ? (\n <Button key={doc._id} mode=\"bleed\" onClick={onClick} padding={2} style={{width: '100%'}}>\n <Preview layout=\"default\" schemaType={schemaType} value={doc} />\n </Button>\n ) : (\n <Box padding={2}>\n <Text size={1}>\n A document of the unknown type <em>{doc._type}</em>\n </Text>\n </Box>\n )\n}\n\nexport default DocumentList\n","import {Box, Flex, Theme} from '@sanity/ui'\nimport React, {MouseEvent} from 'react'\nimport {defaultStyles, FileIcon as ReactFileIcon} from 'react-file-icon'\nimport type {DefaultExtensionType} from 'react-file-icon'\nimport styled, {css} from 'styled-components'\n\ntype Props = {\n extension?: string\n onClick?: (e: MouseEvent) => void\n width: string\n}\n\n// Force react-file-icon styles\nconst Container = styled(Box)(({theme}: {theme: Theme}) => {\n return css`\n text {\n font-family: ${theme.sanity.fonts.text.family} !important;\n font-size: 8px !important;\n font-weight: 500 !important;\n }\n `\n})\n\nconst FileIcon = (props: Props) => {\n const {extension, onClick, width} = props\n\n return (\n <Flex align=\"center\" justify=\"center\" onClick={onClick} style={{height: '100%'}}>\n <Container style={{width}}>\n {extension ? (\n <ReactFileIcon\n extension={extension}\n {...defaultStyles[extension as DefaultExtensionType]}\n />\n ) : (\n <ReactFileIcon />\n )}\n </Container>\n </Flex>\n )\n}\n\nexport default FileIcon\n","import {Flex} from '@sanity/ui'\nimport {Asset} from '@types'\nimport React from 'react'\nimport FileIcon from '../FileIcon'\n\ntype Props = {\n asset: Asset\n}\n\nconst FileAssetPreview = (props: Props) => {\n const {asset} = props\n\n if (asset.mimeType.search('audio') === 0) {\n return (\n <Flex align=\"center\" justify=\"center\" style={{height: '100%'}}>\n <audio controls src={asset.url} style={{width: '100%'}} />\n </Flex>\n )\n }\n\n if (asset.mimeType.search('video') === 0) {\n return (\n <video\n controls\n src={asset.url}\n style={{\n height: '100%',\n width: '100%'\n }}\n />\n )\n }\n\n return <FileIcon extension={asset.extension} width=\"50%\" />\n}\n\nexport default FileAssetPreview\n","import {AddIcon, ChevronDownIcon, CloseIcon} from '@sanity/icons'\nimport {Box, Card, Flex, rem, studioTheme, Text, ThemeColorSchemeKey} from '@sanity/ui'\nimport React from 'react'\nimport {components, StylesConfig} from 'react-select'\nimport {Virtuoso} from 'react-virtuoso'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\nconst {radius: themeRadius, space: themeSpace} = studioTheme\n\nexport const reactSelectStyles = (scheme: ThemeColorSchemeKey): StylesConfig => {\n return {\n control: (styles, {isFocused}) => {\n let boxShadow = `inset 0 0 0 1px var(--card-border-color)`\n if (isFocused) {\n boxShadow = `inset 0 0 0 1px ${getSchemeColor(scheme, 'inputEnabledBorder')},\n 0 0 0 1px var(--card-bg-color),\n 0 0 0 3px var(--card-focus-ring-color) !important`\n }\n\n return {\n ...styles,\n backgroundColor: 'var(--card-bg-color)',\n color: 'inherit',\n border: 'none',\n borderRadius: themeRadius[1],\n boxShadow,\n margin: 0,\n minHeight: '35px',\n outline: 'none',\n padding: rem(themeSpace[1]),\n transition: 'none',\n '&:hover': {\n boxShadow: `inset 0 0 0 1px ${getSchemeColor(scheme, 'inputHoveredBorder')}`\n }\n }\n },\n indicatorsContainer: (styles, {isDisabled}) => ({\n ...styles,\n opacity: isDisabled ? 0.25 : 1\n }),\n input: styles => ({\n ...styles,\n color: 'var(--card-fg-color)',\n fontFamily: studioTheme.fonts.text.family,\n marginLeft: rem(themeSpace[2])\n }),\n menuList: styles => ({\n ...styles\n }),\n multiValue: (styles, {isDisabled}) => ({\n ...styles,\n backgroundColor: getSchemeColor(scheme, 'mutedHoveredBg'),\n borderRadius: themeRadius[2],\n opacity: isDisabled ? 0.5 : 1\n }),\n multiValueLabel: () => ({\n color: getSchemeColor(scheme, 'mutedHoveredFg'),\n fontSize: 'inherit',\n padding: 0\n }),\n multiValueRemove: styles => ({\n ...styles,\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n svg: {color: getSchemeColor(scheme, 'mutedHoveredFg')},\n '&:hover': {\n backgroundColor: getSchemeColor(scheme, 'mutedSelectedBg')\n }\n }),\n noOptionsMessage: styles => ({\n ...styles,\n fontFamily: studioTheme.fonts.text.family,\n lineHeight: '1em'\n }),\n option: (styles, {isFocused}) => ({\n ...styles,\n backgroundColor: isFocused ? getSchemeColor(scheme, 'spotBlue') : 'transparent',\n borderRadius: themeRadius[2],\n color: isFocused ? getSchemeColor(scheme, 'bg') : 'inherit',\n padding: `${rem(themeSpace[1])} ${rem(themeSpace[2])}`,\n '&:hover': {\n backgroundColor: getSchemeColor(scheme, 'spotBlue'),\n color: getSchemeColor(scheme, 'bg')\n }\n }),\n placeholder: styles => ({\n ...styles,\n marginLeft: rem(themeSpace[2])\n }),\n valueContainer: styles => ({\n ...styles,\n margin: 0,\n padding: 0\n })\n }\n}\n\nconst DropdownIndicator = (props: any) => {\n return (\n <components.DropdownIndicator {...props}>\n <Box paddingX={2}>\n <Text size={1}>\n <ChevronDownIcon />\n </Text>\n </Box>\n </components.DropdownIndicator>\n )\n}\n\nconst Menu = (props: any) => {\n return (\n <components.Menu {...props}>\n <Card radius={1} shadow={2}>\n {props.children}\n </Card>\n </components.Menu>\n )\n}\n\nconst MenuList = (props: any) => {\n const {children} = props\n\n const MAX_ROWS = 5\n const OPTION_HEIGHT = 37\n\n if (Array.isArray(children)) {\n const height =\n children.length > MAX_ROWS ? OPTION_HEIGHT * MAX_ROWS : children.length * OPTION_HEIGHT\n\n return (\n <Virtuoso\n className=\"media__custom-scrollbar\"\n itemContent={index => {\n const item = children[index]\n return <Option {...item.props} />\n }}\n style={{height}}\n totalCount={children.length}\n />\n )\n }\n return <components.MenuList {...props}>{children}</components.MenuList>\n}\n\nconst MultiValueLabel = (props: any) => {\n return (\n <Box padding={2} paddingRight={1}>\n <Text size={1} weight=\"medium\">\n <components.MultiValueLabel {...props} />\n </Text>\n </Box>\n )\n}\n\nconst MultiValueRemove = (props: any) => {\n return (\n <components.MultiValueRemove {...props}>\n <CloseIcon color=\"#1f2123\" />\n </components.MultiValueRemove>\n )\n}\n\nconst Option = (props: any) => {\n return (\n <Box paddingX={1} paddingY={1}>\n <components.Option {...props}>\n <Flex align=\"center\">\n {props.data.__isNew__ && <AddIcon style={{marginRight: '3px'}} />}\n {props.children}\n </Flex>\n </components.Option>\n </Box>\n )\n}\n\nexport const reactSelectComponents = {\n DropdownIndicator,\n IndicatorSeparator: null,\n Menu,\n MenuList,\n MultiValueLabel,\n MultiValueRemove,\n Option\n}\n","import {ErrorOutlineIcon} from '@sanity/icons'\nimport {Box, Inline, Text, Tooltip} from '@sanity/ui'\nimport React from 'react'\nimport styled from 'styled-components'\n\ntype Props = {\n description?: string\n error?: string\n label: string\n name: string\n}\n\nconst StyledErrorOutlineIcon = styled(ErrorOutlineIcon)(({theme}) => {\n return {\n color: theme.sanity.color.spot.red\n }\n})\n\nconst FormFieldInputLabel = (props: Props) => {\n const {description, error, label, name} = props\n\n return (\n <>\n {/* Label */}\n <Box marginY={3}>\n <Inline space={2}>\n <Text as=\"label\" htmlFor={name} size={1} weight=\"semibold\">\n {label}\n </Text>\n\n {/* Error icon + tooltip */}\n {error && (\n <Text size={1}>\n <Tooltip\n content={\n <Box padding={2}>\n <Text muted size={1}>\n <StyledErrorOutlineIcon style={{marginRight: '0.1em'}} />\n {error}\n </Text>\n </Box>\n }\n fallbackPlacements={['top', 'left']}\n placement=\"right\"\n portal\n >\n <StyledErrorOutlineIcon />\n </Tooltip>\n </Text>\n )}\n </Inline>\n </Box>\n\n {/* Description */}\n {description && (\n <Box marginY={3}>\n <Text htmlFor={name} muted size={1}>\n {description}\n </Text>\n </Box>\n )}\n </>\n )\n}\n\nexport default FormFieldInputLabel\n","import {Box} from '@sanity/ui'\nimport React from 'react'\nimport {Controller} from 'react-hook-form'\nimport CreatableSelect from 'react-select/creatable'\nimport {useColorScheme} from 'sanity'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {reactSelectComponents, reactSelectStyles} from '../../styled/react-select/creatable'\nimport type {TagSelectOption} from '../../types'\nimport FormFieldInputLabel from '../FormFieldInputLabel'\n\ntype Props = {\n control: any\n description?: string\n disabled?: boolean\n error?: string\n label: string\n name: string\n onCreateTag: (tagName: string) => void\n options: {\n label: string\n value: string\n }[]\n placeholder?: string\n value?: TagSelectOption[] | null\n}\n\nconst FormFieldInputTags = (props: Props) => {\n const {\n control,\n description,\n disabled,\n error,\n label,\n name,\n onCreateTag,\n options,\n placeholder,\n value\n } = props\n\n const {scheme} = useColorScheme()\n\n // Redux\n const creating = useTypedSelector(state => state.tags.creating)\n const tagsFetching = useTypedSelector(state => state.tags.fetching)\n\n return (\n <Box\n // HACK: force stacking context to ensure react-select dropdown sits above other fields\n style={{zIndex: 2}}\n >\n {/* Label */}\n <FormFieldInputLabel description={description} error={error} label={label} name={name} />\n\n {/* Select */}\n <Controller\n control={control}\n defaultValue={value}\n name={name}\n render={({field}) => {\n const {onBlur, onChange, value: controllerValue} = field\n // TODO: investigate overriding `onChange` and updating form state manually.\n // `opt.media.tags` is initialised with `null` as a defaultValue in react-hook-form\n // Ideally, we'd be able to set `opt.media.tags` as null when all items are cleared, rather than\n // setting it to an empty array (which is currently causing false positives in denoting whether the form is dirty)\n //\n // To illustrate this issue:\n // - Edit an asset with no tags\n // - Add a new tag (either an existing one, or create one inline)\n // - Remove the tag you've just created\n //\n // At this point, the form will still be marked as dirty when it shouldnt be\n return (\n <CreatableSelect\n components={reactSelectComponents}\n instanceId=\"tags\"\n isClearable={false} // TODO: re-enable when we're able to correctly (manually) re-validate on clear\n isDisabled={creating || disabled || tagsFetching}\n isLoading={creating}\n isMulti\n name={name}\n noOptionsMessage={() => 'No tags'}\n onBlur={onBlur}\n onChange={onChange}\n onCreateOption={onCreateTag}\n options={options}\n placeholder={tagsFetching ? 'Loading...' : placeholder}\n styles={reactSelectStyles(scheme)}\n value={controllerValue}\n />\n )\n }}\n />\n </Box>\n )\n}\n\nexport default FormFieldInputTags\n","import {Box, TextInput} from '@sanity/ui'\nimport React, {forwardRef} from 'react'\n\nimport FormFieldInputLabel from '../FormFieldInputLabel'\n\ntype Props = {\n description?: string\n disabled?: boolean\n error?: string\n label: string\n name: string\n placeholder?: string\n value?: string\n}\n\ntype Ref = HTMLInputElement\n\nconst FormFieldInputText = forwardRef<Ref, Props>((props: Props, ref) => {\n const {description, disabled, error, label, name, placeholder, value, ...rest} = props\n\n return (\n <Box>\n {/* Label */}\n <FormFieldInputLabel description={description} error={error} label={label} name={name} />\n {/* Input */}\n <TextInput\n {...rest}\n autoComplete=\"off\"\n autoFocus\n defaultValue={value}\n disabled={disabled}\n id={name}\n name={name}\n placeholder={placeholder}\n ref={ref}\n />\n </Box>\n )\n})\n\nexport default FormFieldInputText\n","import {Box, TextArea} from '@sanity/ui'\nimport React, {forwardRef} from 'react'\n\nimport FormFieldInputLabel from '../FormFieldInputLabel'\n\ntype Props = {\n description?: string\n disabled?: boolean\n error?: string\n label: string\n name: string\n placeholder?: string\n rows?: number\n value?: string\n}\n\ntype Ref = HTMLTextAreaElement\n\nconst FormFieldInputTextarea = forwardRef<Ref, Props>((props: Props, ref) => {\n const {description, disabled, error, label, name, placeholder, rows, value, ...rest} = props\n\n return (\n <Box>\n {/* Label */}\n <FormFieldInputLabel description={description} error={error} label={label} name={name} />\n\n {/* Input */}\n <TextArea\n {...rest}\n autoComplete=\"off\"\n defaultValue={value}\n disabled={disabled}\n id={name}\n name={name}\n placeholder={placeholder}\n ref={ref}\n rows={rows}\n />\n </Box>\n )\n})\n\nexport default FormFieldInputTextarea\n","import {Box, Button, Text, Tooltip} from '@sanity/ui'\nimport format from 'date-fns/format'\nimport React, {ReactNode} from 'react'\n\ntype Props = {\n disabled: boolean\n isValid: boolean\n lastUpdated?: string\n onClick: () => void\n}\n\nconst FormSubmitButton = (props: Props) => {\n const {disabled, isValid, lastUpdated, onClick} = props\n\n let content: ReactNode\n if (isValid) {\n if (lastUpdated) {\n content = (\n <>\n Last updated\n <br /> {format(new Date(lastUpdated), 'PPp')}\n </>\n )\n } else {\n content = 'No unpublished changes'\n }\n } else {\n content =\n 'There are validation errors that need to be fixed before this document can be published'\n }\n\n return (\n <Tooltip\n content={\n <Box padding={3} style={{maxWidth: '185px'}}>\n <Text muted size={1}>\n {content}\n </Text>\n </Box>\n }\n disabled={'ontouchstart' in window}\n placement=\"top\"\n portal\n >\n <Box>\n <Button\n disabled={disabled}\n fontSize={1}\n onClick={onClick}\n text=\"Save and close\"\n tone=\"primary\"\n />\n </Box>\n </Tooltip>\n )\n}\n\nexport default FormSubmitButton\n","import {ThemeColorSchemeKey} from '@sanity/ui'\nimport {MouseEvent} from 'react'\nimport styled, {css} from 'styled-components'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\ntype Props = {\n onClick?: (e: MouseEvent) => void\n showCheckerboard?: boolean\n scheme?: ThemeColorSchemeKey\n src: string\n style?: any\n}\n\nconst Image = styled.img<Props>`\n --checkerboard-color: ${props =>\n props.scheme ? getSchemeColor(props.scheme, 'bg2') : 'inherit'};\n\n display: block;\n width: 100%;\n height: 100%;\n object-fit: contain;\n\n ${props =>\n props.showCheckerboard &&\n css`\n background-image: linear-gradient(45deg, var(--checkerboard-color) 25%, transparent 25%),\n linear-gradient(-45deg, var(--checkerboard-color) 25%, transparent 25%),\n linear-gradient(45deg, transparent 75%, var(--checkerboard-color) 75%),\n linear-gradient(-45deg, transparent 75%, var(--checkerboard-color) 75%);\n background-size: 20px 20px;\n background-position: 0 0, 0 10px, 10px -10px, -10px 0;\n `}\n`\n\nexport default Image\n","import {zodResolver} from '@hookform/resolvers/zod'\nimport type {MutationEvent} from '@sanity/client'\nimport {Box, Button, Card, Flex, Stack, Tab, TabList, TabPanel, Text} from '@sanity/ui'\nimport {Asset, AssetFormData, DialogAssetEditProps, TagSelectOption} from '@types'\nimport groq from 'groq'\nimport React, {ReactNode, useCallback, useEffect, useRef, useState} from 'react'\nimport {SubmitHandler, useForm} from 'react-hook-form'\nimport {useDispatch} from 'react-redux'\nimport {WithReferringDocuments, useColorScheme, useDocumentStore} from 'sanity'\nimport {assetFormSchema} from '../../formSchema'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport useVersionedClient from '../../hooks/useVersionedClient'\nimport {assetsActions, selectAssetById} from '../../modules/assets'\nimport {dialogActions} from '../../modules/dialog'\nimport {selectTags, selectTagSelectOptions, tagsActions} from '../../modules/tags'\nimport getTagSelectOptions from '../../utils/getTagSelectOptions'\nimport {getUniqueDocuments} from '../../utils/getUniqueDocuments'\nimport imageDprUrl from '../../utils/imageDprUrl'\nimport sanitizeFormData from '../../utils/sanitizeFormData'\nimport {isFileAsset, isImageAsset} from '../../utils/typeGuards'\nimport AssetMetadata from '../AssetMetadata'\nimport Dialog from '../Dialog'\nimport DocumentList from '../DocumentList'\nimport FileAssetPreview from '../FileAssetPreview'\nimport FormFieldInputTags from '../FormFieldInputTags'\nimport FormFieldInputText from '../FormFieldInputText'\nimport FormFieldInputTextarea from '../FormFieldInputTextarea'\nimport FormSubmitButton from '../FormSubmitButton'\nimport Image from '../Image'\n\ntype Props = {\n children: ReactNode\n dialog: DialogAssetEditProps\n}\n\nconst DialogAssetEdit = (props: Props) => {\n const {\n children,\n dialog: {assetId, id, lastCreatedTag, lastRemovedTagIds}\n } = props\n\n const client = useVersionedClient()\n const {scheme} = useColorScheme()\n\n const documentStore = useDocumentStore()\n\n const dispatch = useDispatch()\n const assetItem = useTypedSelector(state => selectAssetById(state, String(assetId))) // TODO: check casting\n const tags = useTypedSelector(selectTags)\n\n const assetUpdatedPrev = useRef<string | undefined>(undefined)\n\n // Generate a snapshot of the current asset\n const [assetSnapshot, setAssetSnapshot] = useState(assetItem?.asset)\n const [tabSection, setTabSection] = useState<'details' | 'references'>('details')\n\n const currentAsset = assetItem ? assetItem?.asset : assetSnapshot\n const allTagOptions = getTagSelectOptions(tags)\n\n const assetTagOptions = useTypedSelector(selectTagSelectOptions(currentAsset))\n\n const generateDefaultValues = useCallback(\n (asset?: Asset): AssetFormData => {\n return {\n altText: asset?.altText || '',\n description: asset?.description || '',\n originalFilename: asset?.originalFilename || '',\n opt: {media: {tags: assetTagOptions}},\n title: asset?.title || ''\n }\n },\n [assetTagOptions]\n )\n\n const {\n control,\n // Read the formState before render to subscribe the form state through Proxy\n formState: {errors, isDirty, isValid},\n getValues,\n handleSubmit,\n register,\n reset,\n setValue\n } = useForm<AssetFormData>({\n defaultValues: generateDefaultValues(assetItem?.asset),\n mode: 'onChange',\n resolver: zodResolver(assetFormSchema)\n })\n\n const formUpdating = !assetItem || assetItem?.updating\n\n const handleClose = useCallback(() => {\n dispatch(dialogActions.remove({id}))\n }, [dispatch, id])\n\n const handleDelete = useCallback(() => {\n if (!assetItem?.asset) {\n return\n }\n\n dispatch(\n dialogActions.showConfirmDeleteAssets({\n assets: [assetItem],\n closeDialogId: assetItem?.asset._id\n })\n )\n }, [assetItem, dispatch])\n\n const handleAssetUpdate = useCallback((update: MutationEvent) => {\n const {result, transition} = update\n if (result && transition === 'update') {\n // Regenerate asset snapshot\n setAssetSnapshot(result as Asset)\n }\n }, [])\n\n const handleCreateTag = useCallback(\n (tagName: string) => {\n // Dispatch action to create new tag\n dispatch(\n tagsActions.createRequest({\n assetId: currentAsset?._id,\n name: tagName\n })\n )\n },\n [currentAsset?._id, dispatch]\n )\n\n // Submit react-hook-form\n const onSubmit: SubmitHandler<AssetFormData> = useCallback(\n formData => {\n if (!assetItem?.asset) {\n return\n }\n\n const sanitizedFormData = sanitizeFormData(formData)\n\n dispatch(\n assetsActions.updateRequest({\n asset: assetItem?.asset,\n closeDialogId: assetItem?.asset._id,\n formData: {\n ...sanitizedFormData,\n // Map tags to sanity references\n opt: {\n media: {\n ...sanitizedFormData.opt.media,\n tags:\n sanitizedFormData.opt.media.tags?.map((tag: TagSelectOption) => ({\n _ref: tag.value,\n _type: 'reference',\n _weak: true\n })) || null\n }\n }\n }\n })\n )\n },\n [assetItem?.asset, dispatch]\n )\n\n // Listen for asset mutations and update snapshot\n useEffect(() => {\n if (!assetItem?.asset) {\n return undefined\n }\n\n // Remember that Sanity listeners ignore joins, order clauses and projections\n const subscriptionAsset = client\n .listen(groq`*[_id == $id]`, {id: assetItem?.asset._id})\n .subscribe(handleAssetUpdate)\n\n return () => {\n subscriptionAsset?.unsubscribe()\n }\n }, [assetItem?.asset, client, handleAssetUpdate])\n\n // Update tags form field (react-select) when a new _inline_ tag has been created\n useEffect(() => {\n if (lastCreatedTag) {\n const existingTags = (getValues('opt.media.tags') as TagSelectOption[]) || []\n const updatedTags = existingTags.concat([lastCreatedTag])\n setValue('opt.media.tags', updatedTags, {shouldDirty: true})\n }\n }, [getValues, lastCreatedTag, setValue])\n\n // Update tags form field (react-select) when an _inline_ tag has been removed elsewhere\n useEffect(() => {\n if (lastRemovedTagIds) {\n const existingTags = (getValues('opt.media.tags') as TagSelectOption[]) || []\n const updatedTags = existingTags.filter(tag => {\n return !lastRemovedTagIds.includes(tag.value)\n })\n\n setValue('opt.media.tags', updatedTags, {shouldDirty: true})\n }\n }, [getValues, lastRemovedTagIds, setValue])\n\n // Reset react-hook-form local state on mount and every time the asset has been updated elsewhere\n useEffect(() => {\n if (assetUpdatedPrev.current !== assetItem?.asset._updatedAt) {\n reset(generateDefaultValues(assetItem?.asset))\n }\n assetUpdatedPrev.current = assetItem?.asset._updatedAt\n }, [assetItem?.asset, generateDefaultValues, reset])\n\n const Footer = () => (\n <Box padding={3}>\n <Flex justify=\"space-between\">\n {/* Delete button */}\n <Button\n disabled={formUpdating}\n fontSize={1}\n mode=\"bleed\"\n onClick={handleDelete}\n text=\"Delete\"\n tone=\"critical\"\n />\n\n {/* Submit button */}\n <FormSubmitButton\n disabled={formUpdating || !isDirty || !isValid}\n isValid={isValid}\n lastUpdated={currentAsset?._updatedAt}\n onClick={handleSubmit(onSubmit)}\n />\n </Flex>\n </Box>\n )\n\n if (!currentAsset) {\n return null\n }\n\n return (\n <Dialog footer={<Footer />} header=\"Asset details\" id={id} onClose={handleClose} width={3}>\n {/*\n We reverse direction to ensure the download button doesn't appear (in the DOM) before other tabbable items.\n This ensures that the dialog doesn't scroll down to the download button (which on smaller screens, can sometimes\n be below the fold).\n */}\n <Flex direction={['column-reverse', 'column-reverse', 'row-reverse']}>\n <Box flex={1} marginTop={[5, 5, 0]} padding={4}>\n <WithReferringDocuments documentStore={documentStore} id={currentAsset._id}>\n {({isLoading, referringDocuments}) => {\n const uniqueReferringDocuments = getUniqueDocuments(referringDocuments)\n return (\n <>\n {/* Tabs */}\n <TabList space={2}>\n <Tab\n aria-controls=\"details-panel\"\n disabled={formUpdating}\n id=\"details-tab\"\n label=\"Details\"\n onClick={() => setTabSection('details')}\n selected={tabSection === 'details'}\n size={2}\n />\n <Tab\n aria-controls=\"references-panel\"\n disabled={formUpdating}\n id=\"references-tab\"\n label={`References${\n !isLoading && Array.isArray(uniqueReferringDocuments)\n ? ` (${uniqueReferringDocuments.length})`\n : ''\n }`}\n onClick={() => setTabSection('references')}\n selected={tabSection === 'references'}\n size={2}\n />\n </TabList>\n\n {/* Form fields */}\n <Box as=\"form\" marginTop={4} onSubmit={handleSubmit(onSubmit)}>\n {/* Deleted notification */}\n {!assetItem && (\n <Card marginBottom={3} padding={3} radius={2} shadow={1} tone=\"critical\">\n <Text size={1}>This file cannot be found – it may have been deleted.</Text>\n </Card>\n )}\n\n {/* Hidden button to enable enter key submissions */}\n <button style={{display: 'none'}} tabIndex={-1} type=\"submit\" />\n\n {/* Panel: details */}\n <TabPanel\n aria-labelledby=\"details\"\n hidden={tabSection !== 'details'}\n id=\"details-panel\"\n >\n <Stack space={3}>\n {/* Tags */}\n <FormFieldInputTags\n control={control}\n disabled={formUpdating}\n error={errors?.opt?.media?.tags?.message}\n label=\"Tags\"\n name=\"opt.media.tags\"\n onCreateTag={handleCreateTag}\n options={allTagOptions}\n placeholder=\"Select or create...\"\n value={assetTagOptions}\n />\n {/* Filename */}\n <FormFieldInputText\n {...register('originalFilename')}\n disabled={formUpdating}\n error={errors?.originalFilename?.message}\n label=\"Filename\"\n name=\"originalFilename\"\n value={currentAsset?.originalFilename}\n />\n {/* Title */}\n <FormFieldInputText\n {...register('title')}\n disabled={formUpdating}\n error={errors?.title?.message}\n label=\"Title\"\n name=\"title\"\n value={currentAsset?.title}\n />\n {/* Alt text */}\n <FormFieldInputText\n {...register('altText')}\n disabled={formUpdating}\n error={errors?.altText?.message}\n label=\"Alt Text\"\n name=\"altText\"\n value={currentAsset?.altText}\n />\n {/* Description */}\n <FormFieldInputTextarea\n {...register('description')}\n disabled={formUpdating}\n error={errors?.description?.message}\n label=\"Description\"\n name=\"description\"\n rows={5}\n value={currentAsset?.description}\n />\n </Stack>\n </TabPanel>\n\n {/* Panel: References */}\n <TabPanel\n aria-labelledby=\"references\"\n hidden={tabSection !== 'references'}\n id=\"references-panel\"\n >\n <Box marginTop={5}>\n {assetItem?.asset && (\n <DocumentList\n documents={uniqueReferringDocuments}\n isLoading={isLoading}\n />\n )}\n </Box>\n </TabPanel>\n </Box>\n </>\n )\n }}\n </WithReferringDocuments>\n </Box>\n\n <Box flex={1} padding={4}>\n <Box style={{aspectRatio: '1'}}>\n {/* File */}\n {isFileAsset(currentAsset) && <FileAssetPreview asset={currentAsset} />}\n\n {/* Image */}\n {isImageAsset(currentAsset) && (\n <Image\n draggable={false}\n scheme={scheme}\n showCheckerboard={!currentAsset?.metadata?.isOpaque}\n src={imageDprUrl(currentAsset, {height: 600, width: 600})}\n />\n )}\n </Box>\n\n {/* Metadata */}\n {currentAsset && (\n <Box marginTop={4}>\n <AssetMetadata asset={currentAsset} item={assetItem} />\n </Box>\n )}\n </Box>\n </Flex>\n\n {children}\n </Dialog>\n )\n}\n\nexport default DialogAssetEdit\n","import {WarningOutlineIcon} from '@sanity/icons'\nimport {Box, Button, Flex, Stack, Text} from '@sanity/ui'\nimport {DialogConfirmProps} from '@types'\nimport React, {ReactNode} from 'react'\nimport {useDispatch} from 'react-redux'\nimport {dialogActions} from '../../modules/dialog'\nimport Dialog from '../Dialog'\n\ntype Props = {\n children?: ReactNode\n dialog: DialogConfirmProps\n}\n\nconst DialogConfirm = (props: Props) => {\n const {children, dialog} = props\n\n // Redux\n const dispatch = useDispatch()\n\n // Callbacks\n const handleClose = () => {\n dispatch(dialogActions.remove({id: dialog?.id}))\n }\n\n const handleConfirm = () => {\n // Close target dialog, if provided\n if (dialog?.closeDialogId) {\n dispatch(dialogActions.remove({id: dialog?.closeDialogId}))\n }\n\n if (dialog?.confirmCallbackAction) {\n dispatch(dialog.confirmCallbackAction)\n }\n\n // Close self\n handleClose()\n }\n\n const Footer = () => (\n <Box padding={3}>\n <Flex justify=\"space-between\">\n <Button fontSize={1} mode=\"bleed\" onClick={handleClose} text=\"Cancel\" />\n <Button\n fontSize={1}\n onClick={handleConfirm}\n text={dialog?.confirmText}\n tone={dialog?.tone}\n />\n </Flex>\n </Box>\n )\n\n const Header = () => (\n <Flex align=\"center\">\n <Box paddingX={1}>\n <WarningOutlineIcon />\n </Box>\n <Box marginLeft={2}>{dialog?.headerTitle}</Box>\n </Flex>\n )\n\n return (\n <Dialog footer={<Footer />} header={<Header />} id=\"confirm\" onClose={handleClose} width={1}>\n <Box paddingX={4} paddingY={4}>\n <Stack space={3}>\n {dialog?.title && <Text size={1}>{dialog.title}</Text>}\n {dialog?.description && (\n <Text muted size={1}>\n <em>{dialog.description}</em>\n </Text>\n )}\n </Stack>\n </Box>\n\n {children}\n </Dialog>\n )\n}\n\nexport default DialogConfirm\n","import {Box} from '@sanity/ui'\nimport {DialogSearchFacetsProps} from '@types'\nimport React, {ReactNode, useCallback} from 'react'\nimport {useDispatch} from 'react-redux'\nimport {dialogActions} from '../../modules/dialog'\nimport Dialog from '../Dialog'\nimport SearchFacets from '../SearchFacets'\nimport SearchFacetsControl from '../SearchFacetsControl'\n\ntype Props = {\n children: ReactNode\n dialog: DialogSearchFacetsProps\n}\n\nconst DialogSearchFacets = (props: Props) => {\n const {\n children,\n dialog: {id}\n } = props\n\n // Redux\n const dispatch = useDispatch()\n\n // Callbacks\n const handleClose = useCallback(() => {\n dispatch(dialogActions.clear())\n }, [])\n\n return (\n <Dialog header=\"Filters\" id={id} onClose={handleClose} width={1}>\n <Box padding={3}>\n <SearchFacets layout=\"stack\" />\n <SearchFacetsControl />\n </Box>\n\n {children}\n </Dialog>\n )\n}\n\nexport default DialogSearchFacets\n","import {zodResolver} from '@hookform/resolvers/zod'\nimport {Box, Flex} from '@sanity/ui'\nimport {DialogTagCreateProps, TagFormData} from '@types'\nimport React, {ReactNode, useEffect} from 'react'\nimport {SubmitHandler, useForm} from 'react-hook-form'\nimport {useDispatch} from 'react-redux'\nimport {tagFormSchema} from '../../formSchema'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {dialogActions} from '../../modules/dialog'\nimport {tagsActions} from '../../modules/tags'\nimport sanitizeFormData from '../../utils/sanitizeFormData'\nimport Dialog from '../Dialog'\nimport FormFieldInputText from '../FormFieldInputText'\nimport FormSubmitButton from '../FormSubmitButton'\n\ntype Props = {\n children: ReactNode\n dialog: DialogTagCreateProps\n}\n\nconst DialogTagCreate = (props: Props) => {\n const {\n children,\n dialog: {id}\n } = props\n\n const dispatch = useDispatch()\n\n const creating = useTypedSelector(state => state.tags.creating)\n const creatingError = useTypedSelector(state => state.tags.creatingError)\n\n const {\n // Read the formState before render to subscribe the form state through Proxy\n formState: {errors, isDirty, isValid},\n handleSubmit,\n register,\n setError\n } = useForm<TagFormData>({\n defaultValues: {\n name: ''\n },\n mode: 'onChange',\n resolver: zodResolver(tagFormSchema)\n })\n\n const formUpdating = creating\n\n const handleClose = () => {\n dispatch(dialogActions.clear())\n }\n\n // - submit react-hook-form\n const onSubmit: SubmitHandler<TagFormData> = formData => {\n const sanitizedFormData = sanitizeFormData(formData)\n\n dispatch(tagsActions.createRequest({name: sanitizedFormData.name}))\n }\n\n useEffect(() => {\n if (creatingError) {\n setError('name', {\n message: creatingError?.message\n })\n }\n }, [creatingError, setError])\n\n const Footer = () => (\n <Box padding={3}>\n <Flex justify=\"flex-end\">\n {/* Submit button */}\n <FormSubmitButton\n disabled={formUpdating || !isDirty || !isValid}\n isValid={isValid}\n onClick={handleSubmit(onSubmit)}\n />\n </Flex>\n </Box>\n )\n\n return (\n <Dialog footer={<Footer />} header=\"Create Tag\" id={id} onClose={handleClose} width={1}>\n {/* Form fields */}\n <Box as=\"form\" padding={4} onSubmit={handleSubmit(onSubmit)}>\n {/* Hidden button to enable enter key submissions */}\n <button style={{display: 'none'}} tabIndex={-1} type=\"submit\" />\n\n {/* Title */}\n <FormFieldInputText\n {...register('name')}\n disabled={formUpdating}\n error={errors?.name?.message}\n label=\"Name\"\n name=\"name\"\n />\n </Box>\n\n {children}\n </Dialog>\n )\n}\n\nexport default DialogTagCreate\n","import {zodResolver} from '@hookform/resolvers/zod'\nimport type {MutationEvent} from '@sanity/client'\nimport {Box, Button, Card, Flex, Text} from '@sanity/ui'\nimport {DialogTagEditProps, Tag, TagFormData} from '@types'\nimport groq from 'groq'\nimport React, {ReactNode, useCallback, useEffect, useState} from 'react'\nimport {SubmitHandler, useForm} from 'react-hook-form'\nimport {useDispatch} from 'react-redux'\nimport {tagFormSchema} from '../../formSchema'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport useVersionedClient from '../../hooks/useVersionedClient'\nimport {dialogActions} from '../../modules/dialog'\nimport {selectTagById, tagsActions} from '../../modules/tags'\nimport sanitizeFormData from '../../utils/sanitizeFormData'\nimport Dialog from '../Dialog'\nimport FormFieldInputText from '../FormFieldInputText'\nimport FormSubmitButton from '../FormSubmitButton'\n\ntype Props = {\n children: ReactNode\n dialog: DialogTagEditProps\n}\n\nconst DialogTagEdit = (props: Props) => {\n const {\n children,\n dialog: {id, tagId}\n } = props\n\n const client = useVersionedClient()\n\n const dispatch = useDispatch()\n const tagItem = useTypedSelector(state => selectTagById(state, String(tagId))) // TODO: double check string cast\n\n // - Generate a snapshot of the current tag\n const [tagSnapshot, setTagSnapshot] = useState(tagItem?.tag)\n\n const currentTag = tagItem ? tagItem?.tag : tagSnapshot\n const generateDefaultValues = (tag?: Tag) => ({\n name: tag?.name?.current || ''\n })\n\n const {\n // Read the formState before render to subscribe the form state through Proxy\n formState: {errors, isDirty, isValid},\n handleSubmit,\n register,\n reset,\n setError\n } = useForm<TagFormData>({\n defaultValues: generateDefaultValues(tagItem?.tag),\n mode: 'onChange',\n resolver: zodResolver(tagFormSchema)\n })\n\n const formUpdating = !tagItem || tagItem?.updating\n\n const handleClose = () => {\n dispatch(dialogActions.remove({id}))\n }\n\n // Submit react-hook-form\n const onSubmit: SubmitHandler<TagFormData> = formData => {\n if (!tagItem?.tag) {\n return\n }\n const sanitizedFormData = sanitizeFormData(formData)\n dispatch(\n tagsActions.updateRequest({\n closeDialogId: tagItem?.tag?._id,\n formData: {\n name: {\n _type: 'slug',\n current: sanitizedFormData.name\n }\n },\n tag: tagItem?.tag\n })\n )\n }\n\n const handleDelete = () => {\n if (!tagItem?.tag) {\n return\n }\n\n dispatch(\n dialogActions.showConfirmDeleteTag({\n closeDialogId: tagItem?.tag?._id,\n tag: tagItem?.tag\n })\n )\n }\n\n const handleTagUpdate = useCallback(\n (update: MutationEvent) => {\n const {result, transition} = update\n if (result && transition === 'update') {\n // Regenerate snapshot\n setTagSnapshot(result as Tag)\n // Reset react-hook-form\n reset(generateDefaultValues(result as Tag))\n }\n },\n [reset]\n )\n\n useEffect(() => {\n if (tagItem?.error) {\n setError('name', {\n message: tagItem.error?.message\n })\n }\n }, [setError, tagItem.error])\n\n // - Listen for asset mutations and update snapshot\n useEffect(() => {\n if (!tagItem?.tag) {\n return undefined\n }\n\n // Remember that Sanity listeners ignore joins, order clauses and projections\n const subscriptionAsset = client\n .listen(groq`*[_id == $id]`, {id: tagItem?.tag._id})\n .subscribe(handleTagUpdate)\n\n return () => {\n subscriptionAsset?.unsubscribe()\n }\n }, [client, handleTagUpdate, tagItem?.tag])\n\n const Footer = () => (\n <Box padding={3}>\n <Flex justify=\"space-between\">\n {/* Delete button */}\n <Button\n disabled={formUpdating}\n fontSize={1}\n mode=\"bleed\"\n onClick={handleDelete}\n text=\"Delete\"\n tone=\"critical\"\n />\n\n {/* Submit button */}\n <FormSubmitButton\n disabled={formUpdating || !isDirty || !isValid}\n isValid={isValid}\n lastUpdated={tagItem?.tag?._updatedAt}\n onClick={handleSubmit(onSubmit)}\n />\n </Flex>\n </Box>\n )\n\n if (!currentTag) {\n return null\n }\n\n return (\n <Dialog footer={<Footer />} header=\"Edit Tag\" id={id} onClose={handleClose} width={1}>\n {/* Form fields */}\n <Box as=\"form\" padding={4} onSubmit={handleSubmit(onSubmit)}>\n {/* Deleted notification */}\n {!tagItem && (\n <Card marginBottom={3} padding={3} radius={2} shadow={1} tone=\"critical\">\n <Text size={1}>This tag cannot be found – it may have been deleted.</Text>\n </Card>\n )}\n\n {/* Hidden button to enable enter key submissions */}\n <button style={{display: 'none'}} tabIndex={-1} type=\"submit\" />\n\n {/* Title */}\n <FormFieldInputText\n {...register('name')}\n disabled={formUpdating}\n error={errors?.name?.message}\n label=\"Name\"\n name=\"name\"\n />\n </Box>\n\n {children}\n </Dialog>\n )\n}\n\nexport default DialogTagEdit\n","import {ArrowDownIcon, ArrowUpIcon, CloseIcon, EditIcon, SearchIcon, TrashIcon} from '@sanity/icons'\nimport {Box, Button, Container, Flex, Text, Tooltip} from '@sanity/ui'\nimport {SearchFacetInputSearchableProps, TagActions, TagItem} from '@types'\nimport React, {ReactNode} from 'react'\nimport {useDispatch} from 'react-redux'\nimport styled from 'styled-components'\nimport {inputs} from '../../config/searchFacets'\nimport {PANEL_HEIGHT} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {selectAssetsPicked} from '../../modules/assets'\nimport {dialogActions} from '../../modules/dialog'\nimport {DIALOG_ACTIONS} from '../../modules/dialog/actions'\nimport {searchActions, selectIsSearchFacetTag} from '../../modules/search'\n\ntype Props = {\n actions?: TagActions[]\n tag: TagItem\n}\n\nconst TagContainer = styled(Flex)`\n height: ${PANEL_HEIGHT}px;\n`\n\nconst ButtonContainer = styled(Flex)`\n @media (pointer: fine) {\n visibility: hidden;\n }\n\n @media (hover: hover) and (pointer: fine) {\n ${TagContainer}:hover & {\n visibility: visible;\n }\n }\n`\n\ntype TagButtonProps = {\n disabled?: boolean\n icon: ReactNode\n onClick: () => void\n tone?: 'critical' | 'primary'\n tooltip: string\n}\n\nconst TagButton = (props: TagButtonProps) => {\n const {disabled, icon, onClick, tone, tooltip} = props\n\n return (\n <Tooltip\n content={\n <Container padding={2} width={0}>\n <Text muted size={1}>\n {tooltip}\n </Text>\n </Container>\n }\n disabled={'ontouchstart' in window}\n placement=\"top\"\n portal\n >\n <Button\n disabled={disabled}\n fontSize={1}\n icon={icon}\n mode=\"bleed\"\n onClick={onClick}\n padding={2}\n tone={tone}\n />\n </Tooltip>\n )\n}\n\nconst Tag = (props: Props) => {\n const {actions, tag} = props\n\n // Redux\n const dispatch = useDispatch()\n const assetsPicked = useTypedSelector(selectAssetsPicked)\n const isSearchFacetTag = useTypedSelector(state => selectIsSearchFacetTag(state, tag?.tag?._id))\n\n // Callbacks\n const handleSearchFacetTagRemove = () => {\n dispatch(searchActions.facetsRemoveByTag({tagId: tag.tag._id}))\n }\n\n const handleShowAddTagToAssetsDialog = () => {\n dispatch(dialogActions.showConfirmAssetsTagAdd({assetsPicked, tag: tag.tag}))\n }\n\n const handleShowRemoveTagFromAssetsDialog = () => {\n dispatch(dialogActions.showConfirmAssetsTagRemove({assetsPicked, tag: tag.tag}))\n }\n\n const handleShowTagDeleteDialog = () => {\n dispatch(dialogActions.showConfirmDeleteTag({tag: tag.tag}))\n }\n\n const handleShowTagEditDialog = () => {\n dispatch(DIALOG_ACTIONS.showTagEdit({tagId: tag?.tag?._id}))\n }\n\n const handleSearchFacetTagAddOrUpdate = () => {\n const searchFacet = {\n ...inputs.tag,\n value: {\n label: tag?.tag?.name?.current,\n value: tag?.tag?._id\n }\n } as SearchFacetInputSearchableProps\n\n if (isSearchFacetTag) {\n dispatch(\n searchActions.facetsUpdate({\n name: 'tag',\n operatorType: 'references',\n value: searchFacet.value\n })\n )\n } else {\n dispatch(searchActions.facetsAdd({facet: searchFacet}))\n }\n }\n\n return (\n <TagContainer align=\"center\" flex={1} justify=\"space-between\" paddingLeft={3}>\n <Box flex={1}>\n <Text\n muted\n size={1}\n style={{\n opacity: tag?.updating ? 0.5 : 1.0,\n userSelect: 'none'\n }}\n textOverflow=\"ellipsis\"\n >\n {tag?.tag?.name?.current}\n </Text>\n </Box>\n\n <ButtonContainer align=\"center\" style={{flexShrink: 0}}>\n {/* Search facet toggle */}\n {actions?.includes('search') && (\n <TagButton\n disabled={tag?.updating}\n icon={isSearchFacetTag ? <CloseIcon /> : <SearchIcon />}\n onClick={\n isSearchFacetTag ? handleSearchFacetTagRemove : handleSearchFacetTagAddOrUpdate\n }\n tooltip={isSearchFacetTag ? 'Remove filter' : 'Filter by tag'}\n />\n )}\n {/* Edit icon */}\n {actions?.includes('edit') && (\n <TagButton\n disabled={tag?.updating}\n icon={<EditIcon />}\n onClick={handleShowTagEditDialog}\n tone=\"primary\"\n tooltip=\"Edit tag\"\n />\n )}\n {/* Apply to all */}\n {actions?.includes('applyAll') && (\n <TagButton\n disabled={tag?.updating}\n icon={<ArrowUpIcon />}\n onClick={handleShowAddTagToAssetsDialog}\n tone=\"primary\"\n tooltip=\"Add tag to selected assets\"\n />\n )}\n {/* Remove from all */}\n {actions?.includes('removeAll') && (\n <TagButton\n disabled={tag?.updating}\n icon={<ArrowDownIcon />}\n onClick={handleShowRemoveTagFromAssetsDialog}\n tone=\"critical\"\n tooltip=\"Remove tag from selected assets\"\n />\n )}\n\n {/* Delete icon */}\n {actions?.includes('delete') && (\n <TagButton\n disabled={tag?.updating}\n icon={<TrashIcon />}\n onClick={handleShowTagDeleteDialog}\n tone=\"critical\"\n tooltip=\"Delete tag\"\n />\n )}\n </ButtonContainer>\n </TagContainer>\n )\n}\n\nexport default Tag\n","import {Flex, Label} from '@sanity/ui'\nimport {TagActions, TagItem} from '@types'\nimport React, {memo, useState} from 'react'\nimport {Virtuoso} from 'react-virtuoso'\nimport {PANEL_HEIGHT} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {selectAssetsPicked} from '../../modules/assets'\nimport {selectTags} from '../../modules/tags'\nimport Tag from '../Tag'\n\nconst VirtualRow = memo(\n ({\n isScrolling,\n item\n }: {\n isScrolling?: boolean\n item:\n | string\n | (TagItem & {\n actions: TagActions[]\n })\n }) => {\n // Render label\n if (typeof item === 'string') {\n return (\n <Flex\n align=\"center\"\n justify=\"space-between\"\n key={item}\n paddingX={3}\n style={{height: `${PANEL_HEIGHT}px`}}\n >\n <Label size={0}>{item}</Label>\n </Flex>\n )\n }\n\n // Render tag - only display actions if we're not in the process of scrolling\n return <Tag actions={isScrolling ? undefined : item.actions} key={item.tag?._id} tag={item} />\n }\n)\n\nconst TagsVirtualized = () => {\n const assetsPicked = useTypedSelector(selectAssetsPicked)\n const tags = useTypedSelector(selectTags)\n\n // State\n const [isScrolling, setIsScrolling] = useState(false)\n\n // TODO: refactor, there's most certainly a more performant way to do this\n\n // Filter out all tag IDS used (across all) and dedupe\n const pickedTagIds = assetsPicked?.reduce((acc: string[], val) => {\n const assetTagIds = val?.asset?.opt?.media?.tags?.map(tag => tag._ref) || []\n acc = acc.concat(assetTagIds)\n return acc\n }, [])\n const pickedTagIdsUnique = [...new Set(pickedTagIds)]\n\n // Segment tags into two buckets:\n // 1. those which exist in all picked assets ('applied to all')\n // 2. those which exist in some picked assets ('applied to some')\n const tagIdsSegmented = pickedTagIdsUnique.reduce(\n (acc: {appliedToAll: string[]; appliedToSome: string[]}, tagId) => {\n const tagIsInEveryAsset = assetsPicked.every(assetItem => {\n const tagIndex =\n assetItem.asset.opt?.media?.tags?.findIndex(tag => tag._ref === tagId) ?? -1\n return tagIndex >= 0\n })\n\n if (tagIsInEveryAsset) {\n acc.appliedToAll.push(tagId)\n } else {\n acc.appliedToSome.push(tagId)\n }\n\n return acc\n },\n {\n appliedToAll: [],\n appliedToSome: []\n }\n )\n\n const tagsAppliedToAll = tags\n .filter(tag => tagIdsSegmented.appliedToAll.includes(tag.tag._id))\n .map(tagItem => ({\n ...tagItem,\n actions: ['delete', 'edit', 'removeAll', 'search'] as TagActions[]\n }))\n const tagsAppliedToSome = tags\n .filter(tag => tagIdsSegmented.appliedToSome.includes(tag.tag._id))\n .map(tagItem => ({\n ...tagItem,\n actions: ['applyAll', 'delete', 'edit', 'removeAll', 'search'] as TagActions[]\n }))\n const tagsUnused = tags\n .filter(tag => !pickedTagIdsUnique.includes(tag.tag._id))\n .map(tagItem => ({\n ...tagItem,\n actions: ['applyAll', 'delete', 'edit', 'search'] as TagActions[]\n }))\n\n let items: (\n | string\n | (TagItem & {\n actions: TagActions[]\n })\n )[] = []\n if (assetsPicked.length === 0) {\n items = tags.map(tagItem => ({\n ...tagItem,\n actions: ['delete', 'edit', 'search'] as TagActions[]\n }))\n } else {\n if (tagsAppliedToAll?.length > 0) {\n items = [\n ...items, //\n assetsPicked.length === 1 ? 'Used' : 'Used by all',\n ...tagsAppliedToAll\n ]\n }\n if (tagsAppliedToSome?.length > 0) {\n items = [\n ...items, //\n 'Used by some',\n ...tagsAppliedToSome\n ]\n }\n if (tagsUnused?.length > 0) {\n items = [\n ...items, //\n 'Unused',\n ...tagsUnused\n ]\n }\n }\n\n return (\n <Virtuoso\n className=\"media__custom-scrollbar\"\n computeItemKey={index => {\n const item = items[index]\n if (typeof item === 'string') {\n return item\n }\n return item.tag._id\n }}\n isScrolling={setIsScrolling}\n itemContent={index => {\n return <VirtualRow isScrolling={isScrolling} item={items[index]} />\n }}\n style={{flex: 1, overflowX: 'hidden'}}\n totalCount={items.length}\n />\n )\n}\n\nexport default TagsVirtualized\n","import {ComposeIcon} from '@sanity/icons'\nimport {Box, Button, Flex, Inline, Label} from '@sanity/ui'\nimport React from 'react'\nimport {useDispatch} from 'react-redux'\nimport {useColorScheme} from 'sanity'\nimport {PANEL_HEIGHT} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {DIALOG_ACTIONS} from '../../modules/dialog/actions'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\ntype Props = {\n allowCreate?: boolean\n light?: boolean\n title: string\n}\n\nconst TagViewHeader = ({allowCreate, light, title}: Props) => {\n const {scheme} = useColorScheme()\n\n const dispatch = useDispatch()\n const tagsCreating = useTypedSelector(state => state.tags.creating)\n const tagsFetching = useTypedSelector(state => state.tags.fetching)\n\n const handleTagCreate = () => {\n dispatch(DIALOG_ACTIONS.showTagCreate())\n }\n\n return (\n <>\n <Flex\n align=\"center\"\n justify=\"space-between\"\n paddingLeft={3}\n style={{\n background: light ? getSchemeColor(scheme, 'bg') : 'inherit',\n borderBottom: '1px solid var(--card-border-color)',\n flexShrink: 0,\n height: `${PANEL_HEIGHT}px`\n }}\n >\n <Inline space={2}>\n <Label size={0}>{title}</Label>\n {tagsFetching && (\n <Label size={0} style={{opacity: 0.3}}>\n Loading...\n </Label>\n )}\n </Inline>\n {/* Create new tag button */}\n {allowCreate && (\n <Box marginRight={1}>\n <Button\n disabled={tagsCreating}\n fontSize={1} //\n icon={ComposeIcon}\n mode=\"bleed\"\n onClick={handleTagCreate}\n style={{\n background: 'transparent',\n boxShadow: 'none'\n }}\n />\n </Box>\n )}\n </Flex>\n </>\n )\n}\n\nexport default TagViewHeader\n","import {Box, Flex, Text} from '@sanity/ui'\nimport React from 'react'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {selectAssetsPickedLength} from '../../modules/assets'\nimport {selectTags} from '../../modules/tags'\nimport TagsVirtualized from '../TagsVirtualized'\nimport TagViewHeader from '../TagViewHeader'\n\nconst TagView = () => {\n const numPickedAssets = useTypedSelector(selectAssetsPickedLength)\n const tags = useTypedSelector(selectTags)\n const fetching = useTypedSelector(state => state.tags.fetching)\n const fetchCount = useTypedSelector(state => state.tags.fetchCount)\n const fetchComplete = fetchCount !== -1\n const hasTags = !fetching && tags?.length > 0\n const hasPicked = !!(numPickedAssets > 0)\n\n return (\n <Flex direction=\"column\" flex={1} height=\"fill\">\n <TagViewHeader\n allowCreate\n light={hasPicked}\n title={hasPicked ? 'Tags (in selection)' : 'Tags'}\n />\n\n {fetchComplete && !hasTags && (\n <Box padding={3}>\n <Text muted size={1}>\n <em>No tags</em>\n </Text>\n </Box>\n )}\n\n {hasTags && <TagsVirtualized />}\n </Flex>\n )\n}\n\nexport default TagView\n","import {Box} from '@sanity/ui'\nimport {DialogTagsProps} from '@types'\nimport React, {ReactNode, useCallback} from 'react'\nimport {useDispatch} from 'react-redux'\nimport {dialogActions} from '../../modules/dialog'\nimport Dialog from '../Dialog'\nimport TagView from '../TagView'\n\ntype Props = {\n children: ReactNode\n dialog: DialogTagsProps\n}\n\nconst DialogTags = (props: Props) => {\n const {\n children,\n dialog: {id}\n } = props\n\n // Redux\n const dispatch = useDispatch()\n\n // Callbacks\n const handleClose = useCallback(() => {\n dispatch(dialogActions.clear())\n }, [])\n\n return (\n <Dialog header=\"All Tags\" id={id} onClose={handleClose} width={1}>\n <Box\n style={{\n height: '100%',\n minHeight: '420px' // explicit height required as <TagView> is virtualized\n }}\n >\n <TagView />\n </Box>\n\n {children}\n </Dialog>\n )\n}\n\nexport default DialogTags\n","import {Dialog} from '@types'\nimport React from 'react'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport DialogAssetEdit from '../DialogAssetEdit'\nimport DialogConfirm from '../DialogConfirm'\nimport DialogSearchFacets from '../DialogSearchFacets'\nimport DialogTagCreate from '../DialogTagCreate'\nimport DialogTagEdit from '../DialogTagEdit'\nimport DialogTags from '../DialogTags'\n\nconst Dialogs = () => {\n // Redux\n const currentDialogs = useTypedSelector(state => state.dialog.items)\n\n const renderDialogs = (dialogs: Dialog[], index: number) => {\n if (dialogs.length === 0 || index >= dialogs.length) {\n return null\n }\n\n const dialog = dialogs[index]\n const childDialogs = renderDialogs(dialogs, index + 1)\n\n if (dialog.type === 'assetEdit') {\n return (\n <DialogAssetEdit dialog={dialog} key={index}>\n {childDialogs}\n </DialogAssetEdit>\n )\n }\n\n if (dialog.type === 'confirm') {\n return (\n <DialogConfirm dialog={dialog} key={index}>\n {childDialogs}\n </DialogConfirm>\n )\n }\n\n if (dialog.type === 'searchFacets') {\n return (\n <DialogSearchFacets dialog={dialog} key={index}>\n {childDialogs}\n </DialogSearchFacets>\n )\n }\n\n if (dialog.type === 'tagCreate') {\n return (\n <DialogTagCreate dialog={dialog} key={index}>\n {childDialogs}\n </DialogTagCreate>\n )\n }\n\n if (dialog.type === 'tagEdit') {\n return (\n <DialogTagEdit dialog={dialog} key={index}>\n {childDialogs}\n </DialogTagEdit>\n )\n }\n\n if (dialog.type === 'tags') {\n return (\n <DialogTags dialog={dialog} key={index}>\n {childDialogs}\n </DialogTags>\n )\n }\n\n return null\n }\n\n return renderDialogs(currentDialogs, 0)\n}\n\nexport default Dialogs\n","import React, {ReactNode, createContext, useContext} from 'react'\n\ntype ContextProps = {\n open: () => void\n}\n\ntype Props = {\n children: ReactNode\n open: () => void\n}\n\nconst DropzoneDispatchContext = createContext<ContextProps | undefined>(undefined)\n\nexport const DropzoneDispatchProvider = (props: Props) => {\n const {children, open} = props\n\n const contextValue: ContextProps = {open}\n\n return (\n <DropzoneDispatchContext.Provider value={contextValue}>\n {children}\n </DropzoneDispatchContext.Provider>\n )\n}\n\nexport const useDropzoneActions = () => {\n const context = useContext(DropzoneDispatchContext)\n if (context === undefined) {\n throw new Error('useDropzoneActions must be used within an DropzoneDispatchProvider')\n }\n return context\n}\n\nexport default DropzoneDispatchContext\n","import {CloseIcon, Icon, UploadIcon} from '@sanity/icons'\nimport {Box, Button, Flex, Inline, Text} from '@sanity/ui'\nimport pluralize from 'pluralize'\nimport React from 'react'\nimport {useAssetSourceActions} from '../../contexts/AssetSourceDispatchContext'\nimport {useDropzoneActions} from '../../contexts/DropzoneDispatchContext'\nimport useTypedSelector from '../../hooks/useTypedSelector'\n\ntype Props = {\n onClose?: () => void\n}\n\nconst Header = (props: Props) => {\n const {onClose} = props\n\n const {open} = useDropzoneActions()\n const {onSelect} = useAssetSourceActions()\n\n // Redux\n const assetTypes = useTypedSelector(state => state.assets.assetTypes)\n const selectedDocument = useTypedSelector(state => state.selected.document)\n\n // Row: Current document / close button\n return (\n <Box paddingY={2}>\n <Flex align=\"center\" justify=\"space-between\">\n {/* Label */}\n <Box flex={1} marginX={3}>\n <Inline style={{whiteSpace: 'nowrap'}}>\n <Text textOverflow=\"ellipsis\" weight=\"semibold\">\n <span>{onSelect ? `Insert ${assetTypes.join(' or ')}` : 'Browse Assets'}</span>\n </Text>\n\n {selectedDocument && (\n <Box display={['none', 'none', 'block']}>\n <Text>\n <span style={{margin: '0 0.5em'}}>\n <Icon symbol=\"arrow-right\" />\n </span>\n <span style={{textTransform: 'capitalize'}}>{selectedDocument._type}</span>\n </Text>\n </Box>\n )}\n </Inline>\n </Box>\n\n <Flex marginX={2}>\n {/* Upload */}\n <Button\n fontSize={1}\n icon={UploadIcon}\n mode=\"bleed\"\n onClick={open}\n text={`Upload ${assetTypes.length === 1 ? pluralize(assetTypes[0]) : 'assets'}`}\n tone=\"primary\"\n />\n\n {/* Close */}\n {onClose && (\n <Box style={{flexShrink: 0}}>\n <Button\n disabled={!onClose}\n icon={CloseIcon}\n mode=\"bleed\"\n onClick={onClose}\n radius={2}\n />\n </Box>\n )}\n </Flex>\n </Flex>\n </Box>\n )\n}\n\nexport default Header\n","import {createSelector} from '@reduxjs/toolkit'\nimport {CardAssetData, CardUploadData} from '@types'\n\nimport {RootReducerState} from './types'\n\nexport const selectCombinedItems = createSelector(\n [\n (state: RootReducerState) => state.assets.allIds,\n (state: RootReducerState) => state.uploads.allIds\n ],\n (assetIds, uploadIds) => {\n const assetItems = assetIds.map(id => ({id, type: 'asset'} as CardAssetData))\n const uploadItems = uploadIds.map(id => ({id, type: 'upload'} as CardUploadData))\n const combinedItems: (CardAssetData | CardUploadData)[] = [...uploadItems, ...assetItems]\n return combinedItems\n }\n)\n","import {CheckmarkCircleIcon, EditIcon, WarningFilledIcon} from '@sanity/icons'\nimport {\n Box,\n Checkbox,\n Container,\n Flex,\n Spinner,\n Text,\n Theme,\n ThemeColorSchemeKey,\n Tooltip\n} from '@sanity/ui'\nimport React, {memo, MouseEvent, RefObject} from 'react'\nimport {useDispatch} from 'react-redux'\nimport {useColorScheme} from 'sanity'\nimport styled, {css} from 'styled-components'\nimport {PANEL_HEIGHT} from '../../constants'\nimport {useAssetSourceActions} from '../../contexts/AssetSourceDispatchContext'\nimport useKeyPress from '../../hooks/useKeyPress'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions, selectAssetById} from '../../modules/assets'\nimport {dialogActions} from '../../modules/dialog'\nimport imageDprUrl from '../../utils/imageDprUrl'\nimport {isFileAsset, isImageAsset} from '../../utils/typeGuards'\nimport FileIcon from '../FileIcon'\nimport Image from '../Image'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\ntype Props = {\n id: string\n selected: boolean\n}\n\nconst CardWrapper = styled(Flex)`\n box-sizing: border-box;\n height: 100%;\n overflow: hidden;\n position: relative;\n width: 100%;\n`\n\nconst CardContainer = styled(Flex)<{picked?: boolean; theme: Theme; updating?: boolean}>(\n ({picked, theme, updating}) => {\n return css`\n border: 1px solid transparent;\n height: 100%;\n pointer-events: ${updating ? 'none' : 'auto'};\n position: relative;\n transition: all 300ms;\n user-select: none;\n width: 100%;\n\n border: ${picked\n ? `1px solid ${theme.sanity.color.spot.orange} !important`\n : '1px solid inherit'};\n\n ${!updating &&\n css`\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n border: 1px solid var(--card-border-color);\n }\n }\n `}\n `\n }\n)\n\nconst ContextActionContainer = styled(Flex)(({scheme}: {scheme: ThemeColorSchemeKey}) => {\n return css`\n cursor: pointer;\n height: ${PANEL_HEIGHT}px;\n transition: all 300ms;\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n background: ${getSchemeColor(scheme, 'bg')};\n }\n }\n `\n})\n\nconst StyledWarningOutlineIcon = styled(WarningFilledIcon)(({theme}) => {\n return {\n color: theme.sanity.color.spot.red\n }\n})\n\nconst CardAsset = (props: Props) => {\n const {id, selected} = props\n\n const {scheme} = useColorScheme()\n\n // Refs\n const shiftPressed: RefObject<boolean> = useKeyPress('shift')\n\n // Redux\n const dispatch = useDispatch()\n const lastPicked = useTypedSelector(state => state.assets.lastPicked)\n const item = useTypedSelector(state => selectAssetById(state, id))\n\n const asset = item?.asset\n const error = item?.error\n const isOpaque = item?.asset?.metadata?.isOpaque\n const picked = item?.picked\n const updating = item?.updating\n\n const {onSelect} = useAssetSourceActions()\n\n // Short circuit if no asset is available\n if (!asset) {\n return null\n }\n\n // Callbacks\n const handleAssetClick = (e: MouseEvent<HTMLDivElement>) => {\n e.stopPropagation()\n\n if (onSelect) {\n onSelect([\n {\n kind: 'assetDocumentId',\n value: asset._id\n }\n ])\n } else if (shiftPressed.current) {\n if (picked) {\n dispatch(assetsActions.pick({assetId: asset._id, picked: !picked}))\n } else {\n dispatch(assetsActions.pickRange({startId: lastPicked || asset._id, endId: asset._id}))\n }\n } else {\n dispatch(dialogActions.showAssetEdit({assetId: asset._id}))\n }\n }\n\n const handleContextActionClick = (e: MouseEvent) => {\n e.stopPropagation()\n\n if (onSelect) {\n dispatch(dialogActions.showAssetEdit({assetId: asset._id}))\n } else if (shiftPressed.current && !picked) {\n dispatch(assetsActions.pickRange({startId: lastPicked || asset._id, endId: asset._id}))\n } else {\n dispatch(assetsActions.pick({assetId: asset._id, picked: !picked}))\n }\n }\n\n const opacityContainer = updating ? 0.5 : 1\n const opacityPreview = selected || updating ? 0.25 : 1\n\n return (\n <CardWrapper padding={1}>\n <CardContainer direction=\"column\" picked={picked} updating={item.updating}>\n {/* Image */}\n <Box\n flex={1}\n style={{\n cursor: selected ? 'default' : 'pointer',\n position: 'relative'\n }}\n >\n <div onClick={handleAssetClick} style={{height: '100%', opacity: opacityPreview}}>\n {/* File icon */}\n {isFileAsset(asset) && <FileIcon extension={asset.extension} width=\"80px\" />}\n\n {/* Image */}\n {isImageAsset(asset) && (\n <Image\n draggable={false}\n scheme={scheme}\n showCheckerboard={!isOpaque}\n src={imageDprUrl(asset, {height: 250, width: 250})}\n style={{\n draggable: false,\n transition: 'opacity 1000ms'\n }}\n />\n )}\n </div>\n\n {/* Selected check icon */}\n {selected && !updating && (\n <Flex\n align=\"center\"\n justify=\"center\"\n style={{\n height: '100%',\n left: 0,\n opacity: opacityContainer,\n position: 'absolute',\n top: 0,\n width: '100%'\n }}\n >\n <Text size={2}>\n <CheckmarkCircleIcon />\n </Text>\n </Flex>\n )}\n\n {/* Spinner */}\n {updating && (\n <Flex\n align=\"center\"\n justify=\"center\"\n style={{\n height: '100%',\n left: 0,\n position: 'absolute',\n top: 0,\n width: '100%'\n }}\n >\n <Spinner />\n </Flex>\n )}\n </Box>\n\n {/* Footer */}\n <ContextActionContainer\n align=\"center\"\n onClick={handleContextActionClick}\n paddingX={1}\n scheme={scheme}\n style={{opacity: opacityContainer}}\n >\n {onSelect ? (\n <EditIcon\n style={{\n flexShrink: 0,\n opacity: 0.5\n }}\n />\n ) : (\n <Checkbox\n checked={picked}\n readOnly\n style={{\n flexShrink: 0,\n pointerEvents: 'none',\n transform: 'scale(0.8)'\n }}\n />\n )}\n\n <Box marginLeft={2}>\n <Text muted size={0} textOverflow=\"ellipsis\">\n {asset.originalFilename}\n </Text>\n </Box>\n </ContextActionContainer>\n\n {/* TODO: DRY */}\n {/* Error button */}\n {error && (\n <Box\n padding={3}\n style={{\n position: 'absolute',\n right: 0,\n top: 0\n }}\n >\n <Tooltip\n content={\n <Container padding={2} width={0}>\n <Text size={1}>{error}</Text>\n </Container>\n }\n placement=\"left\"\n portal\n >\n <Text size={1}>\n <StyledWarningOutlineIcon color=\"critical\" />\n </Text>\n </Tooltip>\n </Box>\n )}\n </CardContainer>\n </CardWrapper>\n )\n}\n\nexport default memo(CardAsset)\n","import {Observable, from, of} from 'rxjs'\nimport {mergeMap} from 'rxjs/operators'\n\nconst PREVIEW_WIDTH = 180 // px\n\nconst createBlob = (img: HTMLImageElement): Promise<Blob | null> => {\n return new Promise(resolve => {\n const imageAspect = img.width / img.height\n\n // Create a canvas element which we'll use to generate a low resolution preview.\n // Ensure that the canvas is at least 1 pixel high as blob generation will fail otherwise.\n const canvas: HTMLCanvasElement = document.createElement('canvas')\n canvas.width = PREVIEW_WIDTH\n canvas.height = Math.max(PREVIEW_WIDTH / imageAspect, 1)\n\n // Fail silently if we're unable to generate a preview image.\n // This can often be the case when trying to render SVGs containing `<foreignObject>` elements.\n try {\n const ctx = canvas.getContext('2d')\n ctx?.drawImage(img, 0, 0, PREVIEW_WIDTH, PREVIEW_WIDTH / imageAspect)\n canvas.toBlob(resolve, 'image/jpeg')\n } catch (err) {\n console.warn(`Unable to generate preview image:`, err)\n }\n })\n}\n\nconst createImageEl = (file: File): Promise<HTMLImageElement> => {\n return new Promise(resolve => {\n const blobUrlLarge = window.URL.createObjectURL(file)\n const img = new Image()\n img.onload = () => {\n window.URL.revokeObjectURL(blobUrlLarge)\n resolve(img)\n }\n img.src = blobUrlLarge\n })\n}\n\nconst generatePreviewBlobUrl = async (file: File): Promise<string> => {\n const imageEl = await createImageEl(file)\n const blob = await createBlob(imageEl)\n\n if (!blob) {\n throw Error('Unable to generate file Blob')\n }\n\n return window.URL.createObjectURL(blob)\n}\n\nexport const generatePreviewBlobUrl$ = (file: File): Observable<string> => {\n return of(null).pipe(mergeMap(() => from(generatePreviewBlobUrl(file))))\n}\n","// Takes a observable-returning function and returns a new function that limits on the number of\n// concurrent observables.\nimport {first, mergeMap} from 'rxjs/operators'\nimport {Subject, Subscription, Observable, from} from 'rxjs'\n\nconst DEFAULT_CONCURRENCY = 4\n\nfunction remove<T>(array: Array<T>, item: T): Array<T> {\n const index = array.indexOf(item)\n if (index > -1) {\n array.splice(index, 1)\n }\n return array\n}\n\nexport const createThrottler = (concurrency: number = DEFAULT_CONCURRENCY) => {\n const currentSubscriptions: Array<Subscription> = []\n const pendingObservables: Array<Observable<any>> = []\n const ready$ = new Subject()\n\n function request(observable: Observable<any>): Observable<any> {\n return new Observable(observer => {\n if (currentSubscriptions.length >= concurrency) {\n return scheduleAndWait$(observable)\n .pipe(mergeMap(request)) //\n .subscribe(observer)\n }\n const subscription = observable.subscribe(observer)\n currentSubscriptions.push(subscription)\n return () => {\n remove(currentSubscriptions, subscription)\n remove(pendingObservables, observable)\n subscription.unsubscribe()\n while (pendingObservables.length > 0 && currentSubscriptions.length < concurrency) {\n ready$.next(pendingObservables.shift())\n }\n }\n })\n }\n\n function scheduleAndWait$(observable: Observable<any>): Observable<any> {\n pendingObservables.push(observable)\n return ready$.asObservable().pipe(first(obs => obs === observable))\n }\n\n return request\n}\n\nexport const withMaxConcurrency = (\n func: (...args: any[]) => Observable<any>,\n concurrency: number = DEFAULT_CONCURRENCY\n) => {\n const throttler = createThrottler(concurrency)\n return (...args: Array<any>) => from(throttler(func(...args)))\n}\n","// Sourced from:\n// https://github.com/sanity-io/sanity/blob/ccb777e115a8cdf20d81a9a2bc9d8c228568faff/packages/%40sanity/form-builder/src/sanity/inputs/client-adapters/assets.ts\n\nimport type {SanityAssetDocument, SanityClient, SanityImageAssetDocument} from '@sanity/client'\nimport {HttpError} from '@types'\nimport {Observable, of, throwError} from 'rxjs'\nimport {map, mergeMap} from 'rxjs/operators'\nimport {withMaxConcurrency} from './withMaxConcurrency'\n\nconst fetchExisting$ = (client: SanityClient, type: string, hash: string) => {\n return client.observable.fetch('*[_type == $documentType && sha1hash == $hash][0]', {\n documentType: type,\n hash\n })\n}\n\nconst readFile$ = (file: File): Observable<ArrayBuffer> => {\n return new Observable(subscriber => {\n const reader = new FileReader()\n reader.onload = () => {\n subscriber.next(reader.result as ArrayBuffer)\n subscriber.complete()\n }\n reader.onerror = err => {\n subscriber.error(err)\n }\n reader.readAsArrayBuffer(file)\n return () => {\n reader.abort()\n }\n })\n}\n\nconst hexFromBuffer = (buffer: ArrayBuffer): string => {\n return Array.prototype.map\n .call(new Uint8Array(buffer), x => `00${x.toString(16)}`.slice(-2))\n .join('')\n}\n\nexport const hashFile$ = (file: File): Observable<string> => {\n if (!window.crypto || !window.crypto.subtle || !window.FileReader) {\n return throwError({\n message: 'Unable to generate hash: uploads are only allowed in secure contexts',\n statusCode: 500\n })\n }\n return readFile$(file).pipe(\n mergeMap(arrayBuffer => window.crypto.subtle.digest('SHA-1', arrayBuffer)),\n map(hexFromBuffer)\n )\n}\n\nconst uploadSanityAsset$ = (\n client: SanityClient,\n assetType: 'file' | 'image',\n file: File,\n hash: string\n) => {\n return of(null).pipe(\n // NOTE: the sanity api will still dedupe unique files, but this saves us from uploading the asset file entirely\n mergeMap(() => fetchExisting$(client, `sanity.${assetType}Asset`, hash)),\n // Cancel if the asset already exists\n mergeMap((existingAsset: SanityAssetDocument | SanityImageAssetDocument | null) => {\n if (existingAsset) {\n return throwError({\n message: 'Asset already exists',\n statusCode: 409\n } as HttpError)\n }\n\n return of(null)\n }),\n mergeMap(() => {\n // Begin upload if no existing asset found\n return client.observable.assets\n .upload(assetType, file, {\n extract: ['blurhash', 'exif', 'location', 'lqip', 'palette'],\n preserveFilename: true\n })\n .pipe(\n map(event =>\n event.type === 'response'\n ? {\n // rewrite to a 'complete' event\n asset: event.body.document,\n id: event.body.document._id,\n type: 'complete'\n }\n : event\n )\n )\n })\n )\n}\n\nexport const uploadAsset$ = withMaxConcurrency(uploadSanityAsset$)\n","import {createSelector, createSlice, PayloadAction} from '@reduxjs/toolkit'\nimport type {ClientError, SanityAssetDocument, SanityImageAssetDocument} from '@sanity/client'\nimport type {HttpError, MyEpic, SanityUploadProgressEvent, UploadItem} from '@types'\nimport groq from 'groq'\nimport {Selector} from 'react-redux'\nimport {empty, merge, of} from 'rxjs'\nimport {catchError, delay, filter, mergeMap, takeUntil, withLatestFrom} from 'rxjs/operators'\nimport constructFilter from '../../utils/constructFilter'\nimport {generatePreviewBlobUrl$} from '../../utils/generatePreviewBlobUrl'\nimport {hashFile$, uploadAsset$} from '../../utils/uploadSanityAsset'\nimport {assetsActions} from '../assets'\nimport type {RootReducerState} from '../types'\nimport {UPLOADS_ACTIONS} from './actions'\n\nexport type UploadsReducerState = {\n allIds: string[]\n byIds: Record<string, UploadItem>\n}\n\nconst initialState = {\n allIds: [],\n byIds: {}\n} as UploadsReducerState\n\nconst uploadsSlice = createSlice({\n name: 'uploads',\n initialState,\n extraReducers: builder => {\n builder //\n .addCase(UPLOADS_ACTIONS.uploadComplete, (state, action) => {\n const {asset} = action.payload\n if (state.byIds[asset.sha1hash]) {\n state.byIds[asset.sha1hash].status = 'complete'\n }\n })\n },\n reducers: {\n checkRequest(\n _state,\n _action: PayloadAction<{assets: (SanityAssetDocument | SanityImageAssetDocument)[]}>\n ) {\n //\n },\n checkComplete(state, action: PayloadAction<{results: Record<string, string | null>}>) {\n const {results} = action.payload\n\n const assetHashes = Object.keys(results)\n\n assetHashes.forEach(hash => {\n const deleteIndex = state.allIds.indexOf(hash)\n if (deleteIndex >= 0) {\n state.allIds.splice(deleteIndex, 1)\n }\n\n if (state.byIds[hash]) {\n const blobUrl = state.byIds[hash].objectUrl\n if (blobUrl) {\n window.URL.revokeObjectURL(blobUrl)\n }\n\n delete state.byIds[hash]\n }\n })\n },\n previewReady(state, action: PayloadAction<{hash: string; blobUrl: string}>) {\n const {blobUrl, hash} = action.payload\n if (state.byIds[hash]) {\n state.byIds[hash].objectUrl = blobUrl\n }\n },\n uploadCancel(state, action: PayloadAction<{hash: string}>) {\n const {hash} = action.payload\n const deleteIndex = state.allIds.indexOf(hash)\n if (deleteIndex >= 0) {\n state.allIds.splice(deleteIndex, 1)\n }\n if (state.byIds[hash]) {\n delete state.byIds[hash]\n }\n },\n uploadError(state, action: PayloadAction<{error: HttpError; hash: string}>) {\n const {hash} = action.payload\n const deleteIndex = state.allIds.indexOf(hash)\n if (deleteIndex >= 0) {\n state.allIds.splice(deleteIndex, 1)\n }\n delete state.byIds[hash]\n },\n uploadRequest(\n _state,\n _action: PayloadAction<{file: File; forceAsAssetType?: 'file' | 'image'}>\n ) {\n //\n },\n uploadProgress(\n state,\n action: PayloadAction<{event: SanityUploadProgressEvent; uploadHash: string}>\n ) {\n const {event, uploadHash} = action.payload\n state.byIds[uploadHash].percent = event.percent\n state.byIds[uploadHash].status = 'uploading'\n },\n uploadStart(state, action: PayloadAction<{file: File; uploadItem: UploadItem}>) {\n const {uploadItem} = action.payload\n if (!state.allIds.includes(uploadItem.hash)) {\n state.allIds.push(uploadItem.hash)\n }\n state.byIds[uploadItem.hash] = uploadItem\n }\n }\n})\n\n// Epics\n\nexport const uploadsAssetStartEpic: MyEpic = (action$, _state$, {client}) =>\n action$.pipe(\n filter(uploadsActions.uploadStart.match),\n mergeMap(action => {\n const {file, uploadItem} = action.payload\n\n return merge(\n // Generate low res preview\n of(null).pipe(\n mergeMap(() => generatePreviewBlobUrl$(file)),\n mergeMap(url => {\n return of(\n uploadsActions.previewReady({\n blobUrl: url,\n hash: uploadItem.hash\n })\n )\n })\n ),\n // Upload asset and receive progress / complete events\n of(null).pipe(\n // delay(500000), // debug uploads\n mergeMap(() => uploadAsset$(client, uploadItem.assetType, file, uploadItem.hash)),\n takeUntil(\n action$.pipe(\n filter(uploadsActions.uploadCancel.match),\n filter(v => v.payload.hash === uploadItem.hash)\n )\n ),\n mergeMap(event => {\n if (event?.type === 'complete') {\n return of(\n UPLOADS_ACTIONS.uploadComplete({\n asset: event.asset\n })\n )\n }\n if (event?.type === 'progress' && event?.stage === 'upload') {\n return of(\n uploadsActions.uploadProgress({\n event,\n uploadHash: uploadItem.hash\n })\n )\n }\n return empty()\n }),\n catchError((error: ClientError) =>\n of(\n uploadsActions.uploadError({\n error: {\n message: error?.message || 'Internal error',\n statusCode: error?.statusCode || 500\n },\n hash: uploadItem.hash\n })\n )\n )\n )\n )\n })\n )\n\nexport const uploadsAssetUploadEpic: MyEpic = (action$, state$) =>\n action$.pipe(\n filter(uploadsActions.uploadRequest.match),\n withLatestFrom(state$),\n mergeMap(([action, state]) => {\n const {file, forceAsAssetType} = action.payload\n\n return of(action).pipe(\n // Generate SHA1 hash from local file\n // This will throw in insecure contexts (non-localhost / https)\n mergeMap(() => hashFile$(file)),\n // Ignore if the file exists and is currently being uploaded\n filter(hash => {\n const exists = !!state.uploads.byIds[hash]\n return !exists\n }),\n // Dispatch start action and begin upload process\n mergeMap(hash => {\n const assetType = forceAsAssetType || (file.type.indexOf('image') >= 0 ? 'image' : 'file')\n const uploadItem = {\n _type: 'upload',\n assetType,\n hash,\n name: file.name,\n size: file.size,\n status: 'queued'\n } as UploadItem\n return of(uploadsActions.uploadStart({file, uploadItem}))\n })\n )\n })\n )\n\nexport const uploadsCompleteQueueEpic: MyEpic = action$ =>\n action$.pipe(\n filter(UPLOADS_ACTIONS.uploadComplete.match),\n mergeMap(action => {\n return of(\n uploadsActions.checkRequest({\n assets: [action.payload.asset]\n })\n )\n })\n )\n\nexport const uploadsCheckRequestEpic: MyEpic = (action$, state$, {client}) =>\n action$.pipe(\n filter(uploadsActions.checkRequest.match),\n withLatestFrom(state$),\n mergeMap(([action, state]) => {\n const {assets} = action.payload\n\n const documentIds = assets.map(asset => asset._id)\n\n const constructedFilter = constructFilter({\n assetTypes: state.assets.assetTypes,\n searchFacets: state.search.facets,\n searchQuery: state.search.query\n })\n\n const query = groq`\n *[${constructedFilter} && _id in $documentIds].sha1hash\n `\n\n return of(action).pipe(\n delay(1000), // give Sanity some time to register the recently uploaded asset\n mergeMap(() => client.observable.fetch<string[]>(query, {documentIds})),\n mergeMap(resultHashes => {\n const checkedResults = assets.reduce((acc: Record<string, string | null>, asset) => {\n acc[asset.sha1hash] = resultHashes.includes(asset.sha1hash) ? asset._id : null\n return acc\n }, {})\n\n return of(\n uploadsActions.checkComplete({results: checkedResults}), //\n assetsActions.insertUploads({results: checkedResults})\n )\n })\n )\n })\n )\n\n// Selectors\n\nconst selectUploadsByIds = (state: RootReducerState) => state.uploads.byIds\n\nconst selectUploadsAllIds = (state: RootReducerState) => state.uploads.allIds\n\nexport const selectUploadById = createSelector(\n [\n (state: RootReducerState) => state.uploads.byIds,\n (_state: RootReducerState, uploadId: string) => uploadId\n ],\n (byIds, uploadId) => byIds[uploadId]\n)\n\nexport const selectUploads: Selector<RootReducerState, UploadItem[]> = createSelector(\n [selectUploadsByIds, selectUploadsAllIds],\n (byIds, allIds) => allIds.map(id => byIds[id])\n)\n\nexport const uploadsActions = uploadsSlice.actions\n\nexport default uploadsSlice.reducer\n","import {CloseIcon} from '@sanity/icons'\nimport {Box, Button, Flex, Text} from '@sanity/ui'\nimport filesize from 'filesize'\nimport React from 'react'\nimport {useDispatch} from 'react-redux'\nimport {useColorScheme} from 'sanity'\nimport styled from 'styled-components'\nimport {PANEL_HEIGHT} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {selectUploadById, uploadsActions} from '../../modules/uploads'\nimport FileIcon from '../FileIcon'\nimport Image from '../Image'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\ntype Props = {\n id: string\n}\n\nconst CardWrapper = styled(Flex)`\n box-sizing: border-box;\n height: 100%;\n overflow: hidden;\n position: relative;\n width: 100%;\n`\n\nconst CardUpload = (props: Props) => {\n const {id} = props\n\n const {scheme} = useColorScheme()\n\n // Redux\n const dispatch = useDispatch()\n const item = useTypedSelector(state => selectUploadById(state, id))\n\n if (!item) {\n return null\n }\n\n const fileSize = filesize(item.size, {base: 10, round: 0})\n const percentLoaded = Math.round(item.percent || 0) // (0 - 100)\n\n const isComplete = item.status === 'complete'\n const isUploading = item.status === 'uploading'\n const isQueued = item.status === 'queued'\n\n let status\n if (isComplete) {\n status = 'Verifying'\n }\n if (isUploading) {\n status = `${percentLoaded}%`\n }\n if (isQueued) {\n status = 'Queued'\n }\n\n // Callbacks\n const handleCancelUpload = () => {\n dispatch(uploadsActions.uploadCancel({hash: item.hash}))\n }\n\n return (\n <CardWrapper padding={1}>\n <Flex\n direction=\"column\"\n flex={1}\n style={{\n background: getSchemeColor(scheme, 'bg'),\n border: '1px solid transparent',\n height: '100%',\n position: 'relative'\n }}\n >\n {/* Progress bar */}\n <div\n style={{\n background: 'var(--card-fg-color)',\n bottom: 0,\n height: '1px',\n left: 0,\n position: 'absolute',\n width: '100%',\n transform: `scaleX(${percentLoaded * 0.01})`,\n transformOrigin: 'bottom left',\n transition: 'all 1000ms ease-out'\n }}\n />\n\n <Box flex={1} style={{position: 'relative'}}>\n {item.assetType === 'image' && item?.objectUrl && (\n <Image\n draggable={false}\n scheme={scheme}\n src={item.objectUrl}\n style={{\n opacity: 0.4\n }}\n />\n )}\n\n {item.assetType === 'file' && (\n <div style={{height: '100%', opacity: 0.1}}>\n <FileIcon width=\"80px\" />\n </div>\n )}\n\n {/*\n Cancel upload button.\n Assets will only have a `complete` status _after_ it has been created on your dataset.\n As such, we also hide the cancel button when `percentLoaded === 100`, as cancelling when the asset\n has been fully uploaded (even with a status of `progress`) won't stop the asset from being created.\n */}\n {!isComplete && percentLoaded !== 100 && (\n <Flex\n align=\"center\"\n direction=\"column\"\n justify=\"center\"\n style={{\n height: '100%',\n left: 0,\n position: 'absolute',\n top: 0,\n width: '100%'\n }}\n >\n <Button\n fontSize={4}\n icon={CloseIcon}\n mode=\"bleed\"\n onClick={handleCancelUpload}\n padding={2}\n style={{background: 'none', boxShadow: 'none'}}\n tone=\"critical\"\n />\n </Flex>\n )}\n </Box>\n\n {/* Footer */}\n <Flex\n align=\"center\"\n justify=\"space-between\"\n paddingX={2}\n style={{height: `${PANEL_HEIGHT}px`}}\n >\n <Box flex={1} marginRight={1}>\n <Text size={0} textOverflow=\"ellipsis\">\n {item.name} ({fileSize})\n </Text>\n </Box>\n <Text size={0} style={{flexShrink: 0}} weight=\"semibold\">\n {status}\n </Text>\n </Flex>\n </Flex>\n </CardWrapper>\n )\n}\n\nexport default CardUpload\n","import {CardAssetData, CardUploadData} from '@types'\nimport React, {memo} from 'react'\nimport {VirtuosoGrid} from 'react-virtuoso'\nimport styled from 'styled-components'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport CardAsset from '../CardAsset'\nimport CardUpload from '../CardUpload'\n\ntype Props = {\n items: (CardAssetData | CardUploadData)[]\n onLoadMore?: () => void\n}\n\nconst CARD_HEIGHT = 220\nconst CARD_WIDTH = 240\n\nconst VirtualCell = memo(\n ({item, selected}: {item: CardAssetData | CardUploadData; selected: boolean}) => {\n if (item?.type === 'asset') {\n return <CardAsset id={item.id} selected={selected} />\n }\n\n if (item?.type === 'upload') {\n return <CardUpload id={item.id} />\n }\n\n return null\n }\n)\n\nconst ItemContainer = styled.div`\n height: ${CARD_HEIGHT}px;\n width: ${CARD_WIDTH}px;\n`\n\nconst ListContainer = styled.div`\n display: grid;\n grid-template-columns: repeat(auto-fill, ${CARD_WIDTH}px);\n grid-template-rows: repeat(auto-fill, ${CARD_HEIGHT}px);\n justify-content: center;\n margin: 0 auto;\n`\n\nconst AssetGridVirtualized = (props: Props) => {\n const {items, onLoadMore} = props\n\n // Redux\n const selectedAssets = useTypedSelector(state => state.selected.assets)\n\n const selectedIds = (selectedAssets && selectedAssets.map(asset => asset._id)) || []\n const totalCount = items?.length\n\n if (totalCount === 0) {\n return null\n }\n\n return (\n <VirtuosoGrid\n className=\"media__custom-scrollbar\"\n computeItemKey={index => {\n const item = items[index]\n return item?.id\n }}\n components={{\n Item: ItemContainer,\n List: ListContainer\n }}\n endReached={onLoadMore}\n itemContent={index => {\n const item = items[index]\n const selected = selectedIds.includes(item?.id)\n return <VirtualCell item={item} selected={selected} />\n }}\n overscan={48}\n style={{overflowX: 'hidden', overflowY: 'scroll'}}\n totalCount={totalCount}\n />\n )\n}\n\nexport default AssetGridVirtualized\n","import {ChevronDownIcon, ChevronUpIcon} from '@sanity/icons'\nimport {Box, Label} from '@sanity/ui'\nimport React from 'react'\nimport {useDispatch} from 'react-redux'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions} from '../../modules/assets'\n\ntype Props = {\n field?: string\n title?: string\n}\n\nconst TableHeaderItem = (props: Props) => {\n const {field, title} = props\n\n // Redux\n const dispatch = useDispatch()\n const order = useTypedSelector(state => state.assets.order)\n\n const isActive = order.field === field\n\n // Callbacks\n const handleClick = () => {\n if (!field || !title) {\n return\n }\n\n if (isActive) {\n const direction = order.direction === 'asc' ? 'desc' : 'asc'\n dispatch(assetsActions.orderSet({order: {field, direction}}))\n } else {\n dispatch(assetsActions.orderSet({order: {field, direction: 'asc'}}))\n }\n }\n\n return (\n <Label muted={!field} size={0}>\n <Box\n onClick={field ? handleClick : undefined}\n style={{\n cursor: field ? 'pointer' : 'default',\n display: 'inline',\n whiteSpace: 'nowrap'\n }}\n >\n <span\n style={{\n marginRight: '0.4em'\n }}\n >\n {title}\n </span>\n\n {isActive && order?.direction === 'asc' && <ChevronUpIcon />}\n {isActive && order?.direction === 'desc' && <ChevronDownIcon />}\n </Box>\n </Label>\n )\n}\n\nexport default TableHeaderItem\n","import {Checkbox, Flex, Grid, ThemeColorSchemeKey, useMediaIndex} from '@sanity/ui'\nimport React, {MouseEvent} from 'react'\nimport {useDispatch} from 'react-redux'\nimport styled, {css} from 'styled-components'\nimport {GRID_TEMPLATE_COLUMNS, PANEL_HEIGHT} from '../../constants'\nimport {useAssetSourceActions} from '../../contexts/AssetSourceDispatchContext'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions, selectAssetsLength, selectAssetsPickedLength} from '../../modules/assets'\nimport TableHeaderItem from '../TableHeaderItem'\nimport {useColorScheme} from 'sanity'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\n// TODO: DRY\nconst ContextActionContainer = styled(Flex)(({scheme}: {scheme: ThemeColorSchemeKey}) => {\n return css`\n cursor: pointer;\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n background: ${getSchemeColor(scheme, 'bg')};\n }\n }\n `\n})\n\nconst TableHeader = () => {\n const {scheme} = useColorScheme()\n\n // Redux\n const dispatch = useDispatch()\n const fetching = useTypedSelector(state => state.assets.fetching)\n const itemsLength = useTypedSelector(selectAssetsLength)\n const numPickedAssets = useTypedSelector(selectAssetsPickedLength)\n\n const mediaIndex = useMediaIndex()\n const {onSelect} = useAssetSourceActions()\n\n const allSelected = numPickedAssets === itemsLength\n\n // Callbacks\n const handleContextActionClick = (e: MouseEvent) => {\n e.stopPropagation()\n\n if (allSelected) {\n dispatch(assetsActions.pickClear())\n } else {\n dispatch(assetsActions.pickAll())\n }\n }\n\n // Note that even though we hide the table header on smaller breakpoints, we never set it to\n // `display: none`, as doing so causes issues with react-virtuoso.\n // Instead, we give it 0 height and hide it with `visibility: hidden`.\n return (\n <Grid\n style={{\n alignItems: 'center',\n background: 'var(--card-bg-color)',\n borderBottom: '1px solid var(--card-border-color)',\n gridColumnGap: mediaIndex < 3 ? 0 : '16px',\n gridTemplateColumns: GRID_TEMPLATE_COLUMNS.LARGE,\n height: mediaIndex < 3 ? 0 : `${PANEL_HEIGHT}px`,\n letterSpacing: '0.025em',\n position: 'sticky',\n textTransform: 'uppercase',\n top: 0,\n visibility: mediaIndex < 3 ? 'hidden' : 'visible',\n width: '100%',\n zIndex: 1 // force stacking context\n }}\n >\n {onSelect ? (\n <TableHeaderItem />\n ) : (\n <ContextActionContainer\n align=\"center\"\n justify=\"center\"\n onClick={handleContextActionClick}\n scheme={scheme}\n style={{\n height: '100%',\n position: 'relative'\n }}\n >\n <Checkbox\n checked={!fetching && allSelected}\n readOnly\n style={{\n pointerEvents: 'none', // TODO: consider alternative for usability\n transform: 'scale(0.8)'\n }}\n />\n </ContextActionContainer>\n )}\n\n <TableHeaderItem />\n <TableHeaderItem field=\"originalFilename\" title=\"Filename\" />\n <TableHeaderItem title=\"Resolution\" />\n <TableHeaderItem field=\"mimeType\" title=\"MIME type\" />\n <TableHeaderItem field=\"size\" title=\"Size\" />\n <TableHeaderItem field=\"_updatedAt\" title=\"Last updated\" />\n <TableHeaderItem title=\"References\" />\n <TableHeaderItem />\n </Grid>\n )\n}\n\nexport default TableHeader\n","import {CheckmarkCircleIcon, EditIcon, WarningFilledIcon} from '@sanity/icons'\nimport {\n Box,\n Checkbox,\n Container,\n Flex,\n Grid,\n Spinner,\n Text,\n ThemeColorSchemeKey,\n Tooltip,\n useMediaIndex\n} from '@sanity/ui'\nimport formatRelative from 'date-fns/formatRelative'\nimport filesize from 'filesize'\nimport React, {memo, MouseEvent, RefObject, useCallback, useEffect, useRef, useState} from 'react'\nimport {useDispatch} from 'react-redux'\nimport {WithReferringDocuments, useColorScheme} from 'sanity'\nimport styled, {css} from 'styled-components'\nimport {GRID_TEMPLATE_COLUMNS} from '../../constants'\nimport {useAssetSourceActions} from '../../contexts/AssetSourceDispatchContext'\nimport useKeyPress from '../../hooks/useKeyPress'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions, selectAssetById} from '../../modules/assets'\nimport {dialogActions} from '../../modules/dialog'\nimport getAssetResolution from '../../utils/getAssetResolution'\nimport imageDprUrl from '../../utils/imageDprUrl'\nimport {isFileAsset, isImageAsset} from '../../utils/typeGuards'\nimport FileIcon from '../FileIcon'\nimport Image from '../Image'\nimport {getUniqueDocuments} from '../../utils/getUniqueDocuments'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\n// Duration (ms) to wait before reference counts (and associated listeners) are rendered\nconst REFERENCE_COUNT_VISIBILITY_DELAY = 750\n\ntype Props = {\n id: string\n selected: boolean\n}\n\nconst ContainerGrid = styled(Grid)(\n ({\n scheme,\n selected,\n updating\n }: {\n selected?: boolean\n scheme: ThemeColorSchemeKey\n updating?: boolean\n }) => {\n return css`\n align-items: center;\n cursor: ${selected ? 'default' : 'pointer'};\n height: 100%;\n pointer-events: ${updating ? 'none' : 'auto'};\n user-select: none;\n white-space: nowrap;\n\n ${!updating &&\n css`\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n background: ${getSchemeColor(scheme, 'bg')};\n }\n }\n `}\n `\n }\n)\n\nconst ContextActionContainer = styled(Flex)(({scheme}: {scheme: ThemeColorSchemeKey}) => {\n return css`\n cursor: pointer;\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n background: ${getSchemeColor(scheme, 'bg2')};\n }\n }\n `\n})\n\nconst StyledWarningIcon = styled(WarningFilledIcon)(({theme}) => {\n return {\n color: theme.sanity.color.spot.red\n }\n})\n\n// eslint-disable-next-line complexity\nconst TableRowAsset = (props: Props) => {\n const {id, selected} = props\n\n const {scheme} = useColorScheme()\n\n const shiftPressed: RefObject<boolean> = useKeyPress('shift')\n\n const [referenceCountVisible, setReferenceCountVisible] = useState(false)\n const refCountVisibleTimeout = useRef<ReturnType<typeof window.setTimeout>>()\n\n const dispatch = useDispatch()\n const lastPicked = useTypedSelector(state => state.assets.lastPicked)\n const item = useTypedSelector(state => selectAssetById(state, id))\n\n const mediaIndex = useMediaIndex()\n\n const asset = item?.asset\n const error = item?.error\n const isOpaque = item?.asset?.metadata?.isOpaque\n const picked = item?.picked\n const updating = item?.updating\n\n const {onSelect} = useAssetSourceActions()\n\n const handleContextActionClick = useCallback(\n (e: MouseEvent<HTMLDivElement>) => {\n e.stopPropagation()\n\n if (!asset) return\n if (onSelect) {\n dispatch(dialogActions.showAssetEdit({assetId: asset._id}))\n } else if (shiftPressed.current && !picked) {\n dispatch(assetsActions.pickRange({startId: lastPicked || asset._id, endId: asset._id}))\n } else {\n dispatch(assetsActions.pick({assetId: asset._id, picked: !picked}))\n }\n },\n [asset, dispatch, lastPicked, onSelect, picked, shiftPressed]\n )\n\n const handleClick = useCallback(\n (e: MouseEvent<HTMLDivElement>) => {\n e.stopPropagation()\n\n if (!asset) return\n if (onSelect) {\n onSelect([{kind: 'assetDocumentId', value: asset._id}])\n } else if (shiftPressed.current) {\n if (picked) {\n dispatch(assetsActions.pick({assetId: asset._id, picked: !picked}))\n } else {\n dispatch(assetsActions.pickRange({startId: lastPicked || asset._id, endId: asset._id}))\n }\n } else {\n dispatch(dialogActions.showAssetEdit({assetId: asset._id}))\n }\n },\n [asset, dispatch, lastPicked, onSelect, picked, shiftPressed]\n )\n\n const opacityCell = updating ? 0.5 : 1\n const opacityPreview = selected || updating ? 0.1 : 1\n\n // Display reference count after an initial delay to prevent over-eager fetching\n useEffect(() => {\n refCountVisibleTimeout.current = setTimeout(\n () => setReferenceCountVisible(true),\n REFERENCE_COUNT_VISIBILITY_DELAY\n )\n return () => {\n if (refCountVisibleTimeout.current) {\n clearTimeout(refCountVisibleTimeout.current)\n }\n }\n }, [])\n\n // Short circuit if no asset is available\n if (!asset) {\n return null\n }\n\n return (\n <ContainerGrid\n onClick={selected ? undefined : handleClick}\n scheme={scheme}\n selected={selected}\n style={{\n gridColumnGap: mediaIndex < 3 ? 0 : '16px',\n gridRowGap: 0,\n gridTemplateColumns:\n mediaIndex < 3 ? GRID_TEMPLATE_COLUMNS.SMALL : GRID_TEMPLATE_COLUMNS.LARGE,\n gridTemplateRows: mediaIndex < 3 ? 'auto' : '1fr'\n }}\n updating={item.updating}\n >\n {/* Picked checkbox */}\n <ContextActionContainer\n onClick={handleContextActionClick}\n scheme={scheme}\n style={{\n alignItems: 'center',\n gridColumn: 1,\n gridRowStart: 1,\n gridRowEnd: 'span 5',\n height: '100%',\n justifyContent: 'center',\n opacity: opacityCell,\n position: 'relative'\n }}\n >\n {onSelect ? (\n <EditIcon\n style={{\n flexShrink: 0,\n opacity: 0.5\n }}\n />\n ) : (\n <Checkbox\n checked={picked}\n readOnly\n style={{\n pointerEvents: 'none', // TODO: consider alternative for usability\n transform: 'scale(0.8)'\n }}\n />\n )}\n </ContextActionContainer>\n\n {/* Preview image + spinner */}\n <Box\n style={{\n gridColumn: 2,\n gridRowStart: 1,\n gridRowEnd: 'span 5',\n height: '90px',\n width: '100px'\n }}\n >\n <Flex align=\"center\" justify=\"center\" style={{height: '100%', position: 'relative'}}>\n <Box style={{height: '100%', opacity: opacityPreview, position: 'relative'}}>\n {/* File icon */}\n {isFileAsset(asset) && <FileIcon extension={asset.extension} width=\"40px\" />}\n\n {/* Image */}\n {isImageAsset(asset) && (\n <Image\n draggable={false}\n scheme={scheme}\n showCheckerboard={!isOpaque}\n src={imageDprUrl(asset, {height: 100, width: 100})}\n />\n )}\n </Box>\n\n {/* Spinner */}\n {updating && (\n <Flex\n align=\"center\"\n justify=\"center\"\n style={{\n height: '100%',\n left: 0,\n position: 'absolute',\n top: 0,\n width: '100%'\n }}\n >\n <Spinner />\n </Flex>\n )}\n\n {/* Selected check icon */}\n {selected && !updating && (\n <Flex\n align=\"center\"\n justify=\"center\"\n style={{\n height: '100%',\n left: 0,\n position: 'absolute',\n top: 0,\n width: '100%'\n }}\n >\n <Text size={2}>\n <CheckmarkCircleIcon />\n </Text>\n </Flex>\n )}\n </Flex>\n </Box>\n\n {/* Filename */}\n <Box\n marginLeft={mediaIndex < 3 ? 3 : 0}\n style={{\n gridColumn: 3,\n gridRow: mediaIndex < 3 ? 2 : 'auto',\n opacity: opacityCell\n }}\n >\n <Text muted size={1} style={{lineHeight: '2em'}} textOverflow=\"ellipsis\">\n {asset.originalFilename}\n </Text>\n </Box>\n\n {/* Resolution */}\n <Box\n marginLeft={mediaIndex < 3 ? 3 : 0}\n style={{\n gridColumn: mediaIndex < 3 ? 3 : 4,\n gridRow: mediaIndex < 3 ? 3 : 'auto',\n opacity: opacityCell\n }}\n >\n <Text muted size={1} style={{lineHeight: '2em'}} textOverflow=\"ellipsis\">\n {isImageAsset(asset) && getAssetResolution(asset)}\n </Text>\n </Box>\n\n {/* MIME type */}\n <Box\n style={{\n display: mediaIndex < 3 ? 'none' : 'block',\n gridColumn: 5,\n gridRow: 'auto',\n opacity: opacityCell\n }}\n >\n <Text muted size={1} style={{lineHeight: '2em'}} textOverflow=\"ellipsis\">\n {asset.mimeType}\n </Text>\n </Box>\n\n {/* Size */}\n <Box\n style={{\n display: mediaIndex < 3 ? 'none' : 'block',\n gridColumn: 6,\n gridRow: 'auto',\n opacity: opacityCell\n }}\n >\n <Text muted size={1} style={{lineHeight: '2em'}} textOverflow=\"ellipsis\">\n {filesize(asset.size, {base: 10, round: 0})}\n </Text>\n </Box>\n\n {/* Last updated */}\n <Box\n marginLeft={mediaIndex < 3 ? 3 : 0}\n style={{\n gridColumn: mediaIndex < 3 ? 3 : 7,\n gridRow: mediaIndex < 3 ? 4 : 'auto',\n opacity: opacityCell\n }}\n >\n <Text muted size={1} style={{lineHeight: '2em'}} textOverflow=\"ellipsis\">\n {formatRelative(new Date(asset._updatedAt), new Date())}\n </Text>\n </Box>\n\n {/* References */}\n <Box\n style={{\n display: mediaIndex < 3 ? 'none' : 'block',\n gridColumn: 8,\n gridRow: 'auto',\n opacity: opacityCell\n }}\n >\n <Text muted size={1} style={{lineHeight: '2em'}} textOverflow=\"ellipsis\">\n {referenceCountVisible ? (\n <WithReferringDocuments id={id}>\n {({isLoading, referringDocuments}) => {\n const uniqueDocuments = getUniqueDocuments(referringDocuments)\n return isLoading ? (\n <>-</>\n ) : (\n <>{Array.isArray(uniqueDocuments) ? uniqueDocuments.length : 0}</>\n )\n }}\n </WithReferringDocuments>\n ) : (\n <>-</>\n )}\n </Text>\n </Box>\n\n {/* Error */}\n <Flex\n align=\"center\"\n justify=\"center\"\n style={{\n gridColumn: mediaIndex < 3 ? 4 : 9,\n gridRowStart: '1',\n gridRowEnd: mediaIndex < 3 ? 'span 5' : 'auto',\n opacity: opacityCell\n }}\n >\n {/* TODO: DRY */}\n {/* Error button */}\n {error && (\n <Box padding={2}>\n <Tooltip\n content={\n <Container padding={2} width={0}>\n <Text size={1}>{error}</Text>\n </Container>\n }\n placement=\"left\"\n portal\n >\n <Text size={1}>\n <StyledWarningIcon color=\"critical\" />\n </Text>\n </Tooltip>\n </Box>\n )}\n </Flex>\n </ContainerGrid>\n )\n}\n\nexport default memo(TableRowAsset)\n","import {CloseIcon} from '@sanity/icons'\nimport {Box, Button, Flex, Grid, Stack, Text, useMediaIndex} from '@sanity/ui'\nimport filesize from 'filesize'\nimport React from 'react'\nimport {useDispatch} from 'react-redux'\nimport {useColorScheme} from 'sanity'\nimport {GRID_TEMPLATE_COLUMNS} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {selectUploadById, uploadsActions} from '../../modules/uploads'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\nimport FileIcon from '../FileIcon'\nimport Image from '../Image'\n\ntype Props = {\n id: string\n}\n\nconst TableRowUpload = (props: Props) => {\n const {id} = props\n\n const {scheme} = useColorScheme()\n\n // Redux\n const dispatch = useDispatch()\n const item = useTypedSelector(state => selectUploadById(state, id))\n\n const mediaIndex = useMediaIndex()\n\n if (!item) {\n return null\n }\n\n const fileSize = filesize(item.size, {base: 10, round: 0})\n const percentLoaded = Math.round(item.percent || 0) // (0 - 100)\n\n const isComplete = item.status === 'complete'\n const isUploading = item.status === 'uploading'\n const isQueued = item.status === 'queued'\n\n let status\n if (isComplete) {\n status = 'Verifying'\n }\n if (isUploading) {\n status = `${percentLoaded}%`\n }\n if (isQueued) {\n status = 'Queued'\n }\n\n // Callbacks\n const handleCancelUpload = () => {\n dispatch(uploadsActions.uploadCancel({hash: item.hash}))\n }\n\n return (\n <Grid\n style={{\n alignItems: 'center',\n background: getSchemeColor(scheme, 'bg'),\n gridColumnGap: mediaIndex < 3 ? 0 : '16px',\n gridRowGap: 0,\n gridTemplateColumns:\n mediaIndex < 3 ? GRID_TEMPLATE_COLUMNS.SMALL : GRID_TEMPLATE_COLUMNS.LARGE,\n gridTemplateRows: mediaIndex < 3 ? 'auto' : '1fr',\n height: '100%',\n position: 'relative'\n }}\n >\n {/* Progress bar */}\n <div\n style={{\n background: 'var(--card-fg-color)',\n bottom: 0,\n height: '1px',\n left: 0,\n position: 'absolute',\n width: '100%',\n transform: `scaleX(${percentLoaded * 0.01})`,\n transformOrigin: 'bottom left',\n transition: 'all 1000ms ease-out'\n }}\n />\n\n {/* Image */}\n <Box\n style={{\n gridColumn: 2,\n gridRowStart: mediaIndex < 3 ? 1 : 'auto',\n gridRowEnd: mediaIndex < 3 ? 'span 4' : 'auto',\n height: '90px',\n width: '100px'\n }}\n >\n <Box style={{height: '100%', position: 'relative'}}>\n {item.assetType === 'image' && item?.objectUrl && (\n <Image draggable={false} scheme={scheme} src={item.objectUrl} style={{opacity: 0.25}} />\n )}\n\n {item.assetType === 'file' && (\n <div style={{height: '100%', opacity: 0.1}}>\n <FileIcon width=\"40px\" />\n </div>\n )}\n\n {/*\n Cancel upload button.\n Assets will only have a `complete` status _after_ it has been created on your dataset.\n As such, we also hide the cancel button when `percentLoaded === 100`, as cancelling when the asset\n has been fully uploaded (even with a status of `progress`) won't stop the asset from being created.\n */}\n {!isComplete && percentLoaded !== 100 && (\n <Flex\n align=\"center\"\n justify=\"center\"\n style={{\n position: 'absolute',\n height: '100%',\n left: 0,\n top: 0,\n width: '100%'\n }}\n >\n <Button\n fontSize={3}\n icon={CloseIcon}\n mode=\"bleed\"\n onClick={handleCancelUpload}\n padding={2}\n style={{background: 'none', boxShadow: 'none'}}\n tone=\"critical\"\n />\n </Flex>\n )}\n </Box>\n </Box>\n\n {/* Filename */}\n <Box\n style={{\n gridColumn: mediaIndex < 3 ? 3 : '3/8',\n gridRow: mediaIndex < 3 ? '2/4' : 'auto',\n marginLeft: mediaIndex < 3 ? 3 : 0\n }}\n >\n <Stack space={3}>\n <Text muted size={1} textOverflow=\"ellipsis\">\n {item.name} ({fileSize})\n </Text>\n <Text size={1} textOverflow=\"ellipsis\" weight=\"semibold\">\n {status}\n </Text>\n </Stack>\n </Box>\n </Grid>\n )\n}\n\nexport default TableRowUpload\n","import {CardAssetData, CardUploadData} from '@types'\nimport {Box} from '@sanity/ui'\nimport React, {memo} from 'react'\nimport {GroupedVirtuoso} from 'react-virtuoso'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport TableHeader from '../TableHeader'\nimport TableRowAsset from '../TableRowAsset'\nimport TableRowUpload from '../TableRowUpload'\n\ntype Props = {\n items: (CardAssetData | CardUploadData)[]\n onLoadMore?: () => void\n}\n\nconst VirtualRow = memo(\n ({item, selected}: {item: CardAssetData | CardUploadData; selected: boolean}) => {\n if (item?.type === 'asset') {\n return (\n <Box style={{height: '100px'}}>\n <TableRowAsset id={item.id} selected={selected} />\n </Box>\n )\n }\n\n if (item?.type === 'upload') {\n return (\n <Box style={{height: '100px'}}>\n <TableRowUpload id={item.id} />\n </Box>\n )\n }\n\n return null\n }\n)\n\nconst AssetTableVirtualized = (props: Props) => {\n const {items, onLoadMore} = props\n\n // Redux\n const selectedAssets = useTypedSelector(state => state.selected.assets)\n\n const selectedIds = (selectedAssets && selectedAssets.map(asset => asset._id)) || []\n const totalCount = items?.length\n\n if (totalCount === 0) {\n return null\n }\n\n return (\n <GroupedVirtuoso\n className=\"media__custom-scrollbar\"\n computeItemKey={index => {\n const item = items[index]\n return item?.id || index\n }}\n endReached={onLoadMore}\n groupCounts={Array(1).fill(totalCount)}\n groupContent={() => {\n return <TableHeader />\n }}\n itemContent={index => {\n const item = items[index]\n const selected = selectedIds.includes(item?.id)\n return <VirtualRow item={item} selected={selected} />\n }}\n style={{overflowX: 'hidden'}}\n />\n )\n}\n\nexport default AssetTableVirtualized\n","import {Box, Text} from '@sanity/ui'\nimport React, {useEffect} from 'react'\nimport {useDispatch} from 'react-redux'\nimport useBreakpointIndex from '../../hooks/useBreakpointIndex'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions} from '../../modules/assets'\nimport {selectCombinedItems} from '../../modules/selectors'\nimport {tagsActions} from '../../modules/tags'\nimport AssetGridVirtualized from '../AssetGridVirtualized'\nimport AssetTableVirtualized from '../AssetTableVirtualized'\n\nconst Items = () => {\n // Redux\n const dispatch = useDispatch()\n const fetchCount = useTypedSelector(state => state.assets.fetchCount)\n const fetching = useTypedSelector(state => state.assets.fetching)\n const tagsPanelVisible = useTypedSelector(state => state.tags.panelVisible)\n const view = useTypedSelector(state => state.assets.view)\n const combinedItems = useTypedSelector(selectCombinedItems)\n\n const breakpointIndex = useBreakpointIndex()\n\n const hasFetchedOnce = fetchCount >= 0\n const hasItems = combinedItems.length > 0\n\n // Only load 1 page of items at a time.\n const handleLoadMoreItems = () => {\n if (!fetching) {\n dispatch(assetsActions.loadNextPage())\n }\n }\n\n // Effects\n\n // - Hide tag panel on smaller breakpoints\n useEffect(() => {\n if (breakpointIndex <= 1 && tagsPanelVisible) {\n dispatch(tagsActions.panelVisibleSet({panelVisible: false}))\n }\n }, [breakpointIndex])\n\n const isEmpty = !hasItems && hasFetchedOnce && !fetching\n\n return (\n <Box flex={1} style={{width: '100%'}}>\n {isEmpty ? (\n <Box padding={4}>\n <Text size={1} weight=\"semibold\">\n No results for the current query\n </Text>\n </Box>\n ) : (\n <>\n {view === 'grid' && (\n <AssetGridVirtualized items={combinedItems} onLoadMore={handleLoadMoreItems} />\n )}\n\n {view === 'table' && (\n <AssetTableVirtualized items={combinedItems} onLoadMore={handleLoadMoreItems} />\n )}\n </>\n )}\n </Box>\n )\n}\n\nexport default Items\n","import {studioTheme} from '@sanity/ui'\nimport {useEffect, useState} from 'react'\n\n// Determine the current breakpoint index\n// - create MediaQueryLists from every breakpoint defined in our sanity studio theme\n// - for each MQL, listen to change events and return the selected breakpoint index\nconst useBreakpointIndex = (): number => {\n const mediaQueryLists = studioTheme?.container?.map(width =>\n window.matchMedia(`(max-width: ${width}px)`)\n )\n\n const getBreakpointIndex = () => mediaQueryLists.findIndex(mql => mql.matches)\n\n const [value, setValue] = useState(getBreakpointIndex())\n\n useEffect(() => {\n const handleBreakpoint = () => {\n setValue(getBreakpointIndex)\n }\n\n // NOTE: older versions of Safari use the older `addListener` and `removeListener` methods\n mediaQueryLists.forEach(mql => {\n try {\n mql.addEventListener('change', handleBreakpoint)\n } catch (err) {\n try {\n mql.addListener(handleBreakpoint)\n } catch (_err) {\n // Do nothing\n }\n }\n })\n return () => {\n try {\n mediaQueryLists.forEach(mql => mql.removeEventListener('change', handleBreakpoint))\n } catch (err) {\n try {\n mediaQueryLists.forEach(mql => mql.removeListener(handleBreakpoint))\n } catch (_err) {\n // Do nothing\n }\n }\n }\n }, [])\n\n return value\n}\n\nexport default useBreakpointIndex\n","import {useToast} from '@sanity/ui'\nimport {useEffect} from 'react'\nimport useTypedSelector from '../../hooks/useTypedSelector'\n\nconst Notifications = () => {\n const items = useTypedSelector(state => state.notifications.items)\n const toast = useToast()\n\n useEffect(() => {\n if (items.length > 0) {\n const lastItem = items[items.length - 1]\n toast.push({\n closable: true,\n status: lastItem.status,\n title: lastItem.title\n })\n }\n }, [items.length])\n\n return null\n}\n\nexport default Notifications\n","import {Box, Button, Flex, Label} from '@sanity/ui'\nimport pluralize from 'pluralize'\nimport React from 'react'\nimport {useDispatch} from 'react-redux'\nimport {useColorScheme} from 'sanity'\nimport {PANEL_HEIGHT} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions, selectAssetsPicked} from '../../modules/assets'\nimport {dialogActions} from '../../modules/dialog'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\nconst PickedBar = () => {\n const {scheme} = useColorScheme()\n\n // Redux\n const dispatch = useDispatch()\n const assetsPicked = useTypedSelector(selectAssetsPicked)\n\n // Callbacks\n const handlePickClear = () => {\n dispatch(assetsActions.pickClear())\n }\n\n const handleDeletePicked = () => {\n dispatch(dialogActions.showConfirmDeleteAssets({assets: assetsPicked}))\n }\n\n if (assetsPicked.length === 0) {\n return null\n }\n\n return (\n <Flex\n align=\"center\"\n justify=\"flex-start\"\n style={{\n background: getSchemeColor(scheme, 'bg'),\n borderBottom: '1px solid var(--card-border-color)',\n height: `${PANEL_HEIGHT}px`,\n position: 'relative',\n width: '100%'\n }}\n >\n <Flex align=\"center\" paddingX={3}>\n <Box paddingRight={2}>\n <Label size={0} style={{color: 'inherit'}}>\n {assetsPicked.length} {pluralize('asset', assetsPicked.length)} selected\n </Label>\n </Box>\n\n {/* Deselect button */}\n <Button\n mode=\"bleed\"\n onClick={handlePickClear}\n padding={2}\n style={{background: 'none', boxShadow: 'none'}}\n tone=\"default\"\n >\n <Label size={0}>Deselect</Label>\n </Button>\n\n {/* Delete button */}\n <Button\n mode=\"bleed\"\n onClick={handleDeletePicked}\n padding={2}\n style={{background: 'none', boxShadow: 'none'}}\n tone=\"critical\"\n >\n <Label size={0}>Delete</Label>\n </Button>\n </Flex>\n </Flex>\n )\n}\n\nexport default PickedBar\n","import {createSlice} from '@reduxjs/toolkit'\nimport type {SanityAssetDocument, SanityDocument, SanityImageAssetDocument} from '@sanity/client'\n\ntype SelectedReducerState = {\n assets: (SanityAssetDocument | SanityImageAssetDocument)[]\n document?: SanityDocument\n documentAssetIds?: string[]\n}\n\nconst initialState = {\n assets: [],\n document: undefined,\n documentAssetIds: []\n} as SelectedReducerState\n\nconst selectedSlice = createSlice({\n name: 'selected',\n initialState,\n reducers: {}\n})\n\nexport default selectedSlice.reducer\n","import {PayloadAction, createSlice} from '@reduxjs/toolkit'\nimport type {ImageAsset, MyEpic} from '@types'\nimport pluralize from 'pluralize'\nimport {ofType} from 'redux-observable'\nimport {of} from 'rxjs'\nimport {bufferTime, filter, mergeMap} from 'rxjs/operators'\nimport {assetsActions} from '../assets'\nimport {ASSETS_ACTIONS} from '../assets/actions'\nimport {tagsActions} from '../tags'\nimport {uploadsActions} from '../uploads'\n\ntype Notification = {\n asset?: ImageAsset\n status?: 'error' | 'warning' | 'success' | 'info'\n title?: string\n}\n\ntype NotificationsReducerState = {\n items: Notification[]\n}\n\nconst initialState = {\n items: []\n} as NotificationsReducerState\n\nconst notificationsSlice = createSlice({\n name: 'notifications',\n initialState,\n reducers: {\n add(state, action: PayloadAction<Notification>) {\n const {asset, status, title} = action.payload\n state.items.push({\n asset,\n status,\n title\n })\n }\n }\n})\n\n// Epics\n\nexport const notificationsAssetsDeleteCompleteEpic: MyEpic = action$ =>\n action$.pipe(\n filter(assetsActions.deleteComplete.match),\n mergeMap(action => {\n const {assetIds} = action.payload\n const deletedCount = assetIds.length\n return of(\n notificationsSlice.actions.add({\n status: 'info',\n title: `${deletedCount} ${pluralize('asset', deletedCount)} deleted`\n })\n )\n })\n )\n\nexport const notificationsAssetsDeleteErrorEpic: MyEpic = action$ =>\n action$.pipe(\n filter(assetsActions.deleteError.match),\n mergeMap(action => {\n const {assetIds} = action.payload\n const count = assetIds.length\n return of(\n notificationsSlice.actions.add({\n status: 'error',\n title: `Unable to delete ${count} ${pluralize(\n 'asset',\n count\n )}. Please review any asset errors and try again.`\n })\n )\n })\n )\n\nexport const notificationsAssetsUploadCompleteEpic: MyEpic = action$ =>\n action$.pipe(\n filter(uploadsActions.checkComplete.match),\n mergeMap(action => {\n const {results} = action.payload\n\n const count = Object.keys(results).length\n return of(\n notificationsSlice.actions.add({\n status: 'info',\n title: `Uploaded ${count} ${pluralize('asset', count)}`\n })\n )\n })\n )\n\nexport const notificationsAssetsTagsAddCompleteEpic: MyEpic = action$ =>\n action$.pipe(\n filter(ASSETS_ACTIONS.tagsAddComplete.match),\n mergeMap(action => {\n const count = action?.payload?.assets?.length\n return of(\n notificationsSlice.actions.add({\n status: 'info',\n title: `Tag added to ${count} ${pluralize('asset', count)}`\n })\n )\n })\n )\n\nexport const notificationsAssetsTagsRemoveCompleteEpic: MyEpic = action$ =>\n action$.pipe(\n filter(ASSETS_ACTIONS.tagsRemoveComplete.match),\n mergeMap(action => {\n const count = action?.payload?.assets?.length\n return of(\n notificationsSlice.actions.add({\n status: 'info',\n title: `Tag removed from ${count} ${pluralize('asset', count)}`\n })\n )\n })\n )\n\nexport const notificationsAssetsUpdateCompleteEpic: MyEpic = action$ =>\n action$.pipe(\n filter(assetsActions.updateComplete.match),\n bufferTime(2000),\n filter(actions => actions.length > 0),\n mergeMap(actions => {\n const updatedCount = actions.length\n return of(\n notificationsSlice.actions.add({\n status: 'info',\n title: `${updatedCount} ${pluralize('asset', updatedCount)} updated`\n })\n )\n })\n )\n\nexport const notificationsGenericErrorEpic: MyEpic = action$ =>\n action$.pipe(\n ofType(\n assetsActions.fetchError.type,\n assetsActions.updateError.type,\n tagsActions.createError.type,\n tagsActions.deleteError.type,\n tagsActions.fetchError.type,\n tagsActions.updateError.type,\n uploadsActions.uploadError.type\n ),\n mergeMap(action => {\n const error = action.payload?.error\n return of(\n notificationsSlice.actions.add({\n status: 'error',\n title: `An error occured: ${error.message}`\n })\n )\n })\n )\n\nexport const notificationsTagCreateCompleteEpic: MyEpic = action$ =>\n action$.pipe(\n filter(tagsActions.createComplete.match),\n mergeMap(() => of(notificationsSlice.actions.add({status: 'info', title: `Tag created`})))\n )\n\nexport const notificationsTagDeleteCompleteEpic: MyEpic = action$ =>\n action$.pipe(\n filter(tagsActions.deleteComplete.match),\n mergeMap(() => of(notificationsSlice.actions.add({status: 'info', title: `Tag deleted`})))\n )\n\nexport const notificationsTagUpdateCompleteEpic: MyEpic = action$ =>\n action$.pipe(\n filter(tagsActions.updateComplete.match),\n mergeMap(() => of(notificationsSlice.actions.add({status: 'info', title: `Tag updated`})))\n )\n\nexport const notificationsActions = notificationsSlice.actions\n\nexport default notificationsSlice.reducer\n","import {\n ActionFromReducersMapObject,\n Reducer,\n StateFromReducersMapObject,\n combineReducers\n} from '@reduxjs/toolkit'\nimport {combineEpics} from 'redux-observable'\n\nimport assetsReducer, {\n assetsDeleteEpic,\n assetsFetchAfterDeleteAllEpic,\n assetsFetchEpic,\n assetsFetchNextPageEpic,\n assetsFetchPageIndexEpic,\n assetsListenerCreateQueueEpic,\n assetsListenerDeleteQueueEpic,\n assetsListenerUpdateQueueEpic,\n assetsOrderSetEpic,\n assetsSearchEpic,\n assetsSortEpic,\n assetsTagsAddEpic,\n assetsTagsRemoveEpic,\n assetsUnpickEpic,\n assetsUpdateEpic\n} from './assets'\nimport debugReducer from './debug'\nimport dialogReducer, {\n dialogClearOnAssetUpdateEpic,\n dialogTagCreateEpic,\n dialogTagDeleteEpic\n} from './dialog'\nimport selectedReducer from './selected'\nimport notificationsReducer, {\n notificationsAssetsDeleteErrorEpic,\n notificationsAssetsDeleteCompleteEpic,\n notificationsAssetsTagsAddCompleteEpic,\n notificationsAssetsTagsRemoveCompleteEpic,\n notificationsAssetsUpdateCompleteEpic,\n notificationsGenericErrorEpic,\n notificationsTagCreateCompleteEpic,\n notificationsTagDeleteCompleteEpic,\n notificationsTagUpdateCompleteEpic\n} from './notifications'\nimport searchReducer, {searchFacetTagUpdateEpic} from './search'\nimport tagsReducer, {\n tagsCreateEpic,\n tagsDeleteEpic,\n tagsFetchEpic,\n tagsListenerCreateQueueEpic,\n tagsListenerDeleteQueueEpic,\n tagsListenerUpdateQueueEpic,\n tagsSortEpic,\n tagsUpdateEpic\n} from './tags'\nimport uploadsReducer, {\n uploadsAssetStartEpic,\n uploadsAssetUploadEpic,\n uploadsCheckRequestEpic,\n uploadsCompleteQueueEpic\n} from './uploads'\n\nexport const rootEpic = combineEpics(\n assetsDeleteEpic,\n assetsFetchEpic,\n assetsFetchAfterDeleteAllEpic,\n assetsFetchNextPageEpic,\n assetsFetchPageIndexEpic,\n assetsListenerCreateQueueEpic,\n assetsListenerDeleteQueueEpic,\n assetsListenerUpdateQueueEpic,\n assetsOrderSetEpic,\n assetsSearchEpic,\n assetsSortEpic,\n assetsTagsAddEpic,\n assetsTagsRemoveEpic,\n assetsUnpickEpic,\n assetsUpdateEpic,\n dialogClearOnAssetUpdateEpic,\n dialogTagCreateEpic,\n dialogTagDeleteEpic,\n notificationsAssetsDeleteErrorEpic,\n notificationsAssetsDeleteCompleteEpic,\n notificationsAssetsTagsAddCompleteEpic,\n notificationsAssetsTagsRemoveCompleteEpic,\n notificationsAssetsUpdateCompleteEpic,\n notificationsGenericErrorEpic,\n notificationsTagCreateCompleteEpic,\n notificationsTagDeleteCompleteEpic,\n notificationsTagUpdateCompleteEpic,\n searchFacetTagUpdateEpic,\n tagsCreateEpic,\n tagsDeleteEpic,\n tagsFetchEpic,\n tagsListenerCreateQueueEpic,\n tagsListenerDeleteQueueEpic,\n tagsListenerUpdateQueueEpic,\n tagsSortEpic,\n tagsUpdateEpic,\n uploadsAssetStartEpic,\n uploadsAssetUploadEpic,\n uploadsCheckRequestEpic,\n uploadsCompleteQueueEpic\n)\n\nconst reducers = {\n assets: assetsReducer,\n debug: debugReducer,\n dialog: dialogReducer,\n notifications: notificationsReducer,\n search: searchReducer,\n selected: selectedReducer,\n tags: tagsReducer,\n uploads: uploadsReducer\n}\n\ntype ReducersMapObject = typeof reducers\n\n// Workaround to avoid `$CombinedState` ts errors\n// source: https://github.com/reduxjs/redux-toolkit/issues/2068#issuecomment-1130796500\n// TODO: remove once we use `redux-toolkit` v2\nexport const rootReducer: Reducer<\n StateFromReducersMapObject<ReducersMapObject>,\n ActionFromReducersMapObject<ReducersMapObject>\n> = combineReducers(reducers)\n","import type {SanityDocument} from '@sanity/client'\n\nconst isPlainObject = (value: any) =>\n value !== null && typeof value === 'object' && !Array.isArray(value)\n\n// Recursively search node for any linked asset ids (`asset._type === 'reference'`)\nconst getAssetIds = (node: Record<string, any>, acc: string[] = []) => {\n if (Array.isArray(node)) {\n node.forEach(v => {\n getAssetIds(v, acc)\n })\n }\n\n if (isPlainObject(node)) {\n if (node?.asset?._type === 'reference' && node?.asset?._ref) {\n acc.push(node.asset._ref)\n }\n\n Object.values(node).forEach(val => {\n getAssetIds(val, acc)\n })\n }\n\n return acc\n}\n\n// Retrieve all linked asset ids from a Sanity document\nconst getDocumentAssetIds = (document: SanityDocument): string[] => {\n const assetIds = getAssetIds(document)\n\n // Sort and dedupe\n return [...new Set(assetIds.sort())]\n}\n\nexport default getDocumentAssetIds\n","import {AnyAction, configureStore, Store} from '@reduxjs/toolkit'\nimport type {SanityClient} from '@sanity/client'\nimport type {AssetSourceComponentProps, SanityDocument} from 'sanity'\nimport React, {Component, ReactNode} from 'react'\nimport {Provider} from 'react-redux'\nimport {createEpicMiddleware} from 'redux-observable'\nimport {rootEpic, rootReducer} from '../../modules'\nimport {initialState as assetsInitialState} from '../../modules/assets'\n// import {assetsActions} from '../../modules/assets'\n// import {searchActions} from '../../modules/search'\n// import {uploadsActions} from '../../modules/uploads'\nimport {RootReducerState} from '../../modules/types'\nimport getDocumentAssetIds from '../../utils/getDocumentAssetIds'\n\ntype Props = {\n assetType?: AssetSourceComponentProps['assetType']\n children?: ReactNode\n client: SanityClient\n document?: SanityDocument\n selectedAssets?: AssetSourceComponentProps['selectedAssets']\n}\n\nclass ReduxProvider extends Component<Props> {\n store: Store\n\n constructor(props: Props) {\n super(props)\n\n // Initialize redux store + middleware\n const epicMiddleware = createEpicMiddleware<AnyAction, AnyAction, RootReducerState>({\n dependencies: {\n client: props.client // inject sanity client as a dependency to all epics\n }\n })\n this.store = configureStore({\n reducer: rootReducer,\n middleware: getDefaultMiddleware =>\n getDefaultMiddleware({\n /*\n serializableCheck: {\n ignoredActions: [\n assetsActions.deleteError.type,\n uploadsActions.uploadRequest.type,\n uploadsActions.uploadStart.type,\n ]\n },\n */\n // TODO: remove once we're no longer storing non-serializable data in the store\n serializableCheck: false,\n thunk: false\n }).prepend(epicMiddleware),\n devTools: true,\n preloadedState: {\n assets: {\n ...assetsInitialState,\n assetTypes: props?.assetType ? [props.assetType] : ['file', 'image']\n },\n selected: {\n assets: props.selectedAssets || [],\n document: props.document,\n documentAssetIds: props.document ? getDocumentAssetIds(props.document) : []\n }\n }\n })\n epicMiddleware.run(rootEpic)\n }\n\n render() {\n // @ts-ignore\n return <Provider store={this.store}>{this.props.children}</Provider>\n }\n}\n\nexport default ReduxProvider\n","import {Box} from '@sanity/ui'\nimport React from 'react'\nimport {TAGS_PANEL_WIDTH} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport TagView from '../TagView'\n\nconst TagsPanel = () => {\n const tagsPanelVisible = useTypedSelector(state => state.tags.panelVisible)\n\n if (!tagsPanelVisible) {\n return null\n }\n\n return (\n <Box\n style={{\n position: 'relative',\n width: TAGS_PANEL_WIDTH\n }}\n >\n <Box\n className=\"media__custom-scrollbar\"\n style={{\n borderLeft: '1px solid var(--card-border-color)',\n height: '100%',\n overflowX: 'hidden',\n overflowY: 'auto',\n position: 'absolute',\n right: 0,\n top: 0,\n width: '100%'\n }}\n >\n <TagView />\n </Box>\n </Box>\n )\n}\n\nexport default TagsPanel\n","import {white} from '@sanity/color'\nimport {Flex, Text} from '@sanity/ui'\nimport React, {ReactNode} from 'react'\nimport {DropEvent, useDropzone} from 'react-dropzone'\nimport {useDispatch} from 'react-redux'\nimport styled from 'styled-components'\nimport {useAssetSourceActions} from '../../contexts/AssetSourceDispatchContext'\nimport {DropzoneDispatchProvider} from '../../contexts/DropzoneDispatchContext'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {notificationsActions} from '../../modules/notifications'\nimport {uploadsActions} from '../../modules/uploads'\n\ntype Props = {\n children: ReactNode\n}\n\nconst UploadContainer = styled.div`\n color: white;\n height: 100%;\n min-height: 100%;\n right: 0;\n top: 0;\n width: 100%;\n\n &:focus {\n outline: none;\n }\n`\n\nconst DragActiveContainer = styled.div`\n align-items: center;\n background: rgba(0, 0, 0, 0.75);\n display: flex;\n height: 100%;\n justify-content: center;\n position: absolute;\n right: 0;\n top: 0;\n width: 100%;\n z-index: 3;\n`\n\n// Iterate through all files and only return non-folders / packages.\n// We check for files by reading the first byte of the file\nasync function filterFiles(fileList: FileList) {\n const files = Array.from(fileList)\n\n const filteredFiles: File[] = []\n\n for (const file of files) {\n try {\n await file.slice(0, 1).arrayBuffer()\n filteredFiles.push(file)\n } catch (err) {\n // do nothing: file is a package or folder\n }\n }\n\n return filteredFiles\n}\n\nconst UploadDropzone = (props: Props) => {\n const {children} = props\n\n const {onSelect} = useAssetSourceActions()\n\n // Redux\n const dispatch = useDispatch()\n const assetTypes = useTypedSelector(state => state.assets.assetTypes)\n\n const isImageAssetType = assetTypes.length === 1 && assetTypes[0] === 'image'\n\n // Callbacks\n const handleDrop = async (acceptedFiles: File[]) => {\n acceptedFiles.forEach(file =>\n dispatch(\n uploadsActions.uploadRequest({\n file,\n forceAsAssetType: assetTypes.length === 1 ? assetTypes[0] : undefined\n })\n )\n )\n }\n\n // Use custom file selector to obtain files on file drop + change events (excluding folders and packages)\n const handleFileGetter = async (event: DropEvent) => {\n let fileList: FileList | undefined\n if (event.type === 'drop' && 'dataTransfer' in event) {\n fileList = event?.dataTransfer?.files\n }\n if (event.type === 'change') {\n const target = event?.target as HTMLInputElement\n if (target?.files) {\n fileList = target.files\n }\n }\n\n if (!fileList) {\n return []\n }\n\n // Filter out non-folders / packages\n const files: File[] = await filterFiles(fileList)\n\n // Dispatch error if some files have been filtered out\n if (fileList?.length !== files.length) {\n dispatch(\n notificationsActions.add({\n status: 'error',\n title: `Unable to upload some items (folders and packages aren't supported)`\n })\n )\n }\n\n return files\n }\n\n // Limit file picking to only images if we're specifically within an image selection context (e.g. picking from image fields)\n const {getRootProps, getInputProps, isDragActive, open} = useDropzone({\n accept: isImageAssetType ? 'image/*' : '',\n getFilesFromEvent: handleFileGetter,\n noClick: true,\n // HACK: Disable drag and drop functionality when in a selecting context\n // (This is currently due to Sanity's native image input taking precedence with drag and drop)\n noDrag: !!onSelect,\n onDrop: handleDrop\n })\n\n return (\n <DropzoneDispatchProvider open={open}>\n <UploadContainer {...getRootProps()}>\n <input {...getInputProps()} />\n\n {isDragActive && (\n <DragActiveContainer>\n <Flex direction=\"column\" justify=\"center\" style={{color: white.hex}}>\n <Text size={3} style={{color: 'inherit'}}>\n Drop files to upload\n </Text>\n </Flex>\n </DragActiveContainer>\n )}\n\n {children}\n </UploadContainer>\n </DropzoneDispatchProvider>\n )\n}\n\nexport default UploadDropzone\n","import type {MutationEvent} from '@sanity/client'\nimport {Card, Flex, PortalProvider, studioTheme, ThemeProvider, ToastProvider} from '@sanity/ui'\nimport {Asset, Tag} from '@types'\nimport groq from 'groq'\nimport React, {useEffect, useState} from 'react'\nimport {useDispatch} from 'react-redux'\nimport {useColorScheme, type AssetSourceComponentProps, type SanityDocument} from 'sanity'\nimport {TAG_DOCUMENT_NAME} from '../../constants'\nimport {AssetBrowserDispatchProvider} from '../../contexts/AssetSourceDispatchContext'\nimport useVersionedClient from '../../hooks/useVersionedClient'\nimport {assetsActions} from '../../modules/assets'\nimport {tagsActions} from '../../modules/tags'\nimport GlobalStyle from '../../styled/GlobalStyles'\nimport Controls from '../Controls'\nimport DebugControls from '../DebugControls'\nimport Dialogs from '../Dialogs'\nimport Header from '../Header'\nimport Items from '../Items'\nimport Notifications from '../Notifications'\nimport PickedBar from '../PickedBar'\nimport ReduxProvider from '../ReduxProvider'\nimport TagsPanel from '../TagsPanel'\nimport UploadDropzone from '../UploadDropzone'\n\ntype Props = {\n assetType?: AssetSourceComponentProps['assetType']\n document?: SanityDocument\n onClose?: AssetSourceComponentProps['onClose']\n onSelect?: AssetSourceComponentProps['onSelect']\n selectedAssets?: AssetSourceComponentProps['selectedAssets']\n}\n\nconst BrowserContent = ({onClose}: {onClose?: AssetSourceComponentProps['onClose']}) => {\n const client = useVersionedClient()\n\n const [portalElement, setPortalElement] = useState<HTMLDivElement | null>(null)\n\n // Redux\n const dispatch = useDispatch()\n\n // Callbacks\n const handleAssetUpdate = (update: MutationEvent) => {\n const {documentId, result, transition} = update\n\n if (transition === 'appear') {\n dispatch(assetsActions.listenerCreateQueue({asset: result as Asset}))\n }\n\n if (transition === 'disappear') {\n dispatch(assetsActions.listenerDeleteQueue({assetId: documentId}))\n }\n\n if (transition === 'update') {\n dispatch(assetsActions.listenerUpdateQueue({asset: result as Asset}))\n }\n }\n\n const handleTagUpdate = (update: MutationEvent) => {\n const {documentId, result, transition} = update\n\n if (transition === 'appear') {\n dispatch(tagsActions.listenerCreateQueue({tag: result as Tag}))\n }\n\n if (transition === 'disappear') {\n dispatch(tagsActions.listenerDeleteQueue({tagId: documentId}))\n }\n\n if (transition === 'update') {\n dispatch(tagsActions.listenerUpdateQueue({tag: result as Tag}))\n }\n }\n\n // Effects\n useEffect(() => {\n // Fetch assets: first page\n dispatch(assetsActions.loadPageIndex({pageIndex: 0}))\n\n // Fetch all tags\n dispatch(tagsActions.fetchRequest())\n\n // Listen for asset and tag changes in published documents.\n // Remember that Sanity listeners ignore joins, order clauses and projections!\n // Also note that changes to the selected document (if present) will automatically re-load the media plugin\n // due to the desk pane re-rendering.\n const subscriptionAsset = client\n .listen(\n groq`*[_type in [\"sanity.fileAsset\", \"sanity.imageAsset\"] && !(_id in path(\"drafts.**\"))]`\n )\n .subscribe(handleAssetUpdate)\n\n const subscriptionTag = client\n .listen(groq`*[_type == \"${TAG_DOCUMENT_NAME}\" && !(_id in path(\"drafts.**\"))]`)\n .subscribe(handleTagUpdate)\n\n return () => {\n subscriptionAsset?.unsubscribe()\n subscriptionTag?.unsubscribe()\n }\n }, [])\n\n return (\n <PortalProvider element={portalElement}>\n <UploadDropzone>\n <Dialogs />\n <Notifications />\n\n <Card display=\"flex\" height=\"fill\" ref={setPortalElement}>\n <Flex direction=\"column\" flex={1}>\n {/* Header */}\n <Header onClose={onClose} />\n\n {/* Browser Controls */}\n <Controls />\n\n <Flex flex={1}>\n <Flex align=\"flex-end\" direction=\"column\" flex={1} style={{position: 'relative'}}>\n <PickedBar />\n <Items />\n </Flex>\n <TagsPanel />\n </Flex>\n\n {/* Debug */}\n <DebugControls />\n </Flex>\n </Card>\n </UploadDropzone>\n </PortalProvider>\n )\n}\n\nconst Browser = (props: Props) => {\n const client = useVersionedClient()\n const {scheme} = useColorScheme()\n\n return (\n <ReduxProvider\n assetType={props?.assetType}\n client={client}\n document={props?.document}\n selectedAssets={props?.selectedAssets}\n >\n <ThemeProvider scheme={scheme} theme={studioTheme}>\n <ToastProvider>\n <AssetBrowserDispatchProvider onSelect={props?.onSelect}>\n <GlobalStyle />\n\n <BrowserContent onClose={props?.onClose} />\n </AssetBrowserDispatchProvider>\n </ToastProvider>\n </ThemeProvider>\n </ReduxProvider>\n )\n}\n\nexport default Browser\n","import {Box, Portal, PortalProvider, useLayer} from '@sanity/ui'\nimport React, {SyntheticEvent, useEffect, useState} from 'react'\nimport {AssetSourceComponentProps, SanityDocument, useFormValue} from 'sanity'\nimport useKeyPress from '../../hooks/useKeyPress'\nimport Browser from '../Browser'\n\nconst FormBuilderTool = (props: AssetSourceComponentProps) => {\n const {onClose} = props\n\n const portalElement = useRootPortalElement()\n\n // Get current Sanity document\n const currentDocument = useFormValue([]) as SanityDocument\n\n // Close on escape key press\n useKeyPress('escape', onClose)\n\n // Stop propagation and prevent document mouse events from firing.\n // This is a bit of a hack to make this work with `editModal = 'popover'` and prevent Sanity's <Popover /> component from\n // prematurely closing, as it attaches events on `document` to detect outside clicks.\n const handleStopPropagation = (event: SyntheticEvent) => {\n event.nativeEvent.stopImmediatePropagation()\n event.stopPropagation()\n }\n\n const {zIndex} = useLayer()\n\n return (\n <PortalProvider element={portalElement}>\n <Portal>\n <Box\n onDragEnter={handleStopPropagation}\n onDragLeave={handleStopPropagation}\n onDragOver={handleStopPropagation}\n onDrop={handleStopPropagation}\n onMouseUp={handleStopPropagation}\n style={{\n bottom: 0,\n height: 'auto',\n left: 0,\n position: 'fixed',\n top: 0,\n width: '100%',\n zIndex\n }}\n >\n <Browser document={currentDocument} {...props} />\n </Box>\n </Portal>\n </PortalProvider>\n )\n}\n\nexport default FormBuilderTool\n\nconst useRootPortalElement = () => {\n const [container] = useState(() => document.createElement('div'))\n\n useEffect(() => {\n container.classList.add('media-portal')\n document.body.appendChild(container)\n return () => {\n document.body.removeChild(container)\n }\n }, [container])\n\n return container\n}\n","import {TAG_DOCUMENT_NAME} from '../constants'\nimport TagIcon from '../components/TagIcon'\n\nexport default {\n title: 'Media Tag',\n icon: TagIcon,\n name: TAG_DOCUMENT_NAME,\n type: 'document',\n fields: [\n {\n title: 'Name',\n name: 'name',\n type: 'slug'\n }\n ],\n preview: {\n select: {\n name: 'name'\n },\n prepare(selection: any) {\n const {name} = selection\n return {\n media: TagIcon,\n title: name?.current\n }\n }\n }\n}\n","import {definePlugin, Tool as SanityTool} from 'sanity'\nimport {ImageIcon} from '@sanity/icons'\nimport type {AssetSource} from 'sanity'\nimport FormBuilderTool from './components/FormBuilderTool'\nimport Tool from './components/Tool'\nimport mediaTag from './schemas/tag'\n\nconst plugin = {\n icon: ImageIcon,\n name: 'media',\n title: 'Media'\n}\n\nexport const mediaAssetSource: AssetSource = {\n ...plugin,\n component: FormBuilderTool\n}\n\nconst tool = {\n ...plugin,\n component: Tool\n} as SanityTool\n\nexport const media = definePlugin({\n name: 'media',\n form: {\n file: {\n assetSources: prev => {\n return [...prev, mediaAssetSource]\n }\n },\n image: {\n assetSources: prev => {\n return [...prev, mediaAssetSource]\n }\n }\n },\n schema: {\n types: [mediaTag]\n },\n tools: prev => {\n return [...prev, tool]\n }\n})\n","import {Flex} from '@sanity/ui'\nimport React from 'react'\nimport Browser from '../Browser'\n\nconst Tool = () => {\n return (\n <Flex direction=\"column\" height=\"fill\" flex={1}>\n <Browser />\n </Flex>\n )\n}\n\nexport default Tool\n"],"names":["AccessDeniedIcon","forwardRef","props","ref","jsx","width","height","viewBox","fill","xmlns","children","d","stroke","strokeWidth","strokeLinejoin","ActivityIcon","AddCircleIcon","AddIcon","ApiIcon","jsxs","ArchiveIcon","ArrowDownIcon","ArrowLeftIcon","ArrowRightIcon","ArrowTopRightIcon","ArrowUpIcon","BarChartIcon","BasketIcon","BellIcon","BillIcon","BinaryDocumentIcon","strokeLinecap","BlockContentIcon","fillRule","clipRule","BlockElementIcon","BlockquoteIcon","BoldIcon","BookIcon","BottleIcon","BulbFilledIcon","BulbOutlineIcon","CalendarIcon","CaseIcon","ChartUpwardIcon","CheckmarkCircleIcon","CheckmarkIcon","ChevronDownIcon","ChevronLeftIcon","ChevronRightIcon","ChevronUpIcon","CircleIcon","cx","cy","r","ClipboardIcon","ClipboardImageIcon","ClockIcon","CloseCircleIcon","CloseIcon","CodeBlockIcon","CodeIcon","CogIcon","CollapseIcon","ColorWheelIcon","CommentIcon","ComponentIcon","ComposeIcon","ControlsIcon","CopyIcon","CreditCardIcon","CropIcon","DashboardIcon","DatabaseIcon","DesktopIcon","DocumentIcon","DocumentPdfIcon","DocumentRemoveIcon","DocumentSheetIcon","DocumentTextIcon","DocumentVideoIcon","DocumentWordIcon","DocumentZipIcon","DocumentsIcon","DotIcon","DoubleChevronDownIcon","DoubleChevronLeftIcon","DoubleChevronRightIcon","DoubleChevronUpIcon","DownloadIcon","DragHandleIcon","DropIcon","EarthAmericasIcon","EarthGlobeIcon","EditIcon","EllipsisHorizontalIcon","EllipsisVerticalIcon","EnterIcon","EnterRightIcon","EnvelopeIcon","EqualIcon","ErrorFilledIcon","ErrorOutlineIcon","ExpandIcon","EyeClosedIcon","EyeOpenIcon","FilterIcon","FolderIcon","GenerateIcon","GroqIcon","HeartFilledIcon","HeartIcon","HelpCircleIcon","HomeIcon","IceCreamIcon","ImageIcon","ImageRemoveIcon","ImagesIcon","InfoFilledIcon","InfoOutlineIcon","InlineElementIcon","InlineIcon","InsertAboveIcon","InsertBelowIcon","ItalicIcon","JoystickIcon","LaunchIcon","LeaveIcon","LemonIcon","LinkIcon","LinkRemovedIcon","LockIcon","LogoJsIcon","LogoTsIcon","MasterDetailIcon","MenuIcon","MobileDeviceIcon","MoonIcon","NumberIcon","OkHandIcon","OlistIcon","OverageIcon","PackageIcon","PauseIcon","PinIcon","PinRemovedIcon","PlayIcon","PlugIcon","PresentationIcon","PublishIcon","ReadOnlyIcon","RemoveCircleIcon","RemoveIcon","ResetIcon","RestoreIcon","RetrieveIcon","RetryIcon","RevertIcon","RobotIcon","RocketIcon","SchemaIcon","SearchIcon","SelectIcon","ShareIcon","SortIcon","SparkleIcon","SparklesIcon","SpinnerIcon","SplitHorizontalIcon","SplitVerticalIcon","SquareIcon","x","y","StackCompactIcon","StackIcon","StarIcon","StopIcon","StrikethroughIcon","StringIcon","SunIcon","SyncIcon","TagIcon","TagsIcon","TerminalIcon","ThLargeIcon","ThListIcon","TiersIcon","ToggleArrowRightIcon","TokenIcon","TransferIcon","TranslateIcon","TrashIcon","TrendUpwardIcon","TriangleOutlineIcon","TrolleyIcon","TruncateIcon","TwitterIcon","UlistIcon","UnderlineIcon","UndoIcon","UnknownIcon","UnlockIcon","UnpublishIcon","UploadIcon","UserIcon","UsersIcon","WarningFilledIcon","WarningOutlineIcon","WrenchIcon","icons","activity","add","api","archive","basket","bell","bill","blockquote","bold","book","bottle","calendar","case","checkmark","circle","clipboard","clock","close","code","cog","collapse","comment","component","compose","controls","copy","crop","dashboard","database","desktop","document","documents","dot","download","drop","edit","enter","envelope","equal","expand","filter","folder","generate","groq","heart","home","image","images","inline","italic","joystick","launch","leave","lemon","link","lock","menu","moon","number","olist","overage","package","pause","pin","play","plug","presentation","publish","remove","reset","restore","retrieve","retry","revert","robot","rocket","schema","search","select","share","sort","sparkle","sparkles","spinner","square","stack","star","stop","strikethrough","string","sun","sync","tag","tags","terminal","tiers","token","transfer","translate","trash","trolley","truncate","twitter","ulist","underline","undo","unknown","unlock","unpublish","upload","user","users","wrench","Icon","symbol","restProps","iconComponent","createElement","useKeyPress","hotkey","onPress","keyPressed","useRef","downHandler","useCallback","e","isHotkey","default","current","upHandler","useEffect","window","addEventListener","removeEventListener","divider","type","inputs","altText","assetTypes","field","name","operatorType","operatorTypes","title","value","description","fileName","inCurrentDocument","options","_templateObject","_taggedTemplateLiteral","_templateObject2","selectOnly","inUse","_templateObject3","_templateObject4","isOpaque","orientation","size","modifier","modifiers","fieldModifier","fieldName","operators","doesNotInclude","fn","concat","label","doesNotReference","_field","empty","_value","hideInput","equalTo","greaterThan","greaterThanOrEqualTo","includes","is","isNot","lessThan","lessThanOrEqualTo","notEmpty","references","ORDER_OPTIONS","direction","FACETS","GRID_TEMPLATE_COLUMNS","AssetSourceDispatchContext","createContext","AssetBrowserDispatchProvider","onSelect","contextValue","Provider","useAssetSourceActions","context","useContext","Error","useVersionedClient","useClient","apiVersion","ORDER_DICTIONARY","_createdAt","asc","desc","_updatedAt","mimeType","originalFilename","getOrderTitle","debugThrottle","throttled","source","iif","pipe","delay","mergeMap","v","Math","random","throwError","message","statusCode","of","constructFilter","_ref","searchFacets","searchQuery","documentAssetTypes","map","baseFilter","_templateObject5","JSON","stringify","searchFacetFragments","reduce","acc","facet","_a","operator","currentModifier","find","m","facetField","fragment","push","currentOptionValue","l","_templateObject6","trim","join","checkTagName","client","from","fetch","_templateObject7","existingTagCount","getTagSelectOptions","val","_id","ASSETS_ACTIONS","tagsAddComplete","createAction","_ref2","assets","payload","tagsAddError","_ref3","error","tagsAddRequest","prepare","_ref4","tagsRemoveComplete","_ref5","tagsRemoveError","_ref6","tagsRemoveRequest","_ref7","DIALOG_ACTIONS","showTagCreate","showTagEdit","_ref8","tagId","tagsSlice","createSlice","initialState","allIds","byIds","creating","creatingError","fetchCount","fetching","fetchingError","panelVisible","extraReducers","builder","addCase","state","action","addMatcher","updating","reducers","createComplete","_type","picked","createError","createRequest","_action","deleteComplete","deleteIndex","indexOf","splice","deleteError","deleteRequest","_b","Object","keys","forEach","key","fetchComplete","length","fetchError","fetchRequest","reducer","query","_templateObject8","listenerCreateQueue","_state","listenerCreateQueueComplete","listenerDeleteQueue","listenerDeleteQueueComplete","tagIds","listenerUpdateQueue","listenerUpdateQueueComplete","panelVisibleSet","a","b","tagA","tagB","updateComplete","updateError","updateRequest","selectTagsByIds","selectTags","createSelector","id","selectTagById","tagsActions","actions","tagsReducer","searchSlice","facets","facetsAdd","uuid","facetsClear","facetsRemoveByName","facetName","facetsRemoveByTag","facetsRemoveById","facetId","facetsUpdate","f","facetsUpdateById","index","querySet","selectIsSearchFacetTag","some","searchActions","searchReducer","UPLOADS_ACTIONS","uploadComplete","_ref18","asset","defaultOrder","lastPicked","order","pageIndex","pageSize","view","assetsSlice","clear","assetIds","floor","_c","_d","itemErrors","response","body","items","item","_ref19","params","queryFilter","selector","_templateObject10","_templateObject11","insertUploads","results","entries","_ref20","hash","assetId","loadNextPage","loadPageIndex","orderSet","pick","pickAll","pickClear","values","pickRange","startIndex","findIndex","startId","endIndex","endId","indices","slice","viewSet","selectAssetById","selectAssets","selectAssetsLength","selectAssetsPicked","selectAssetsPickedLength","assetsPicked","assetsActions","assetsReducer","customScrollbar","css","_templateObject15","GlobalStyle","createGlobalStyle","_templateObject16","useTypedSelector","useSelector","dialogSlice","inlineTagCreate","lastCreatedTag","inlineTagRemove","lastRemovedTagIds","showConfirmAssetsTagAdd","closeDialogId","suffix","pluralize","confirmCallbackAction","confirmText","headerTitle","tone","showConfirmAssetsTagRemove","showConfirmDeleteAssets","assetItem","showConfirmDeleteTag","showAssetEdit","showSearchFacets","showTags","dialogActions","dialogReducer","ButtonViewGroup","dispatch","useDispatch","Inline","space","style","whiteSpace","Button","fontSize","icon","mode","onClick","borderBottomRightRadius","borderTopRightRadius","borderBottomLeftRadius","borderTopLeftRadius","usePortalPopoverProps","portal","usePortal","constrainSize","floatingBoundary","element","referenceBoundary","OrderSelect","popoverProps","MenuButton","button","padding","text","Menu","selected","MenuItem","disabled","iconRight","minWidth","MenuDivider","popover","Progress","loading","animationDuration","isFinished","progress","useNProgress","isAnimating","Box","opacity","transition","background","position","left","top","hues","hex","white","SCHEME_COLORS","bg","dark","light","bg2","inputEnabledBorder","studioTheme","color","input","enabled","border","inputHoveredBorder","hovered","mutedHoveredBg","primary","muted","mutedHoveredFg","fg","mutedSelectedBg","spotBlue","spot","blue","getSchemeColor","scheme","colorKey","Container","styled","_ref35","theme","_templateObject17","rem","sanity","radius","SearchFacet","useColorScheme","Flex","align","paddingBottom","paddingLeft","paddingRight","paddingTop","Label","marginLeft","paddingX","Text","handleClose","TextInputNumber","onValueChange","remainingProps","TextInput","onChange","target","test","parseInt","SearchFacetNumber","_ref36","selectedModifier","selectedOperatorType","handleOperatorItemClick","marginX","maxWidth","handleModifierClick","SearchFacetSelect","_ref37","selectedItem","marginRight","handleListItemClick","option","SearchFacetString","_ref38","fonts","sizes","themeTextSizes","themeRadius","themeSpace","reactSelectStyles","control","styles","_ref39","isDisabled","isFocused","boxShadow","backgroundColor","borderRadius","minHeight","outline","fontFamily","family","menuList","noOptionsMessage","lineHeight","_ref40","margin","placeholder","singleValue","alignItems","display","valueContainer","Option","components","paddingY","textOverflow","reactSelectComponents","ClearIndicator","transform","DropdownIndicator","IndicatorSeparator","Card","shadow","MenuList","Array","isArray","OPTION_HEIGHT","Virtuoso","className","itemContent","totalCount","NoOptionsMessage","SingleValue","SearchFacetTags","_ref41","tagsFetching","allTagOptions","Select","instanceId","isClearable","isSearchable","handleChange","StackContainer","_ref42","_templateObject18","SearchFacets","layout","Items","marginBottom","SearchFacetsControl","selectedDocument","isTool","filteredFacets","assetType","previousFacet","hasSearchFacets","renderMenuFacets","level","arguments","undefined","Fragment","MenuGroup","placement","TextInputSearch","currentTarget","justify","handleClear","cursor","right","zIndex","Controls","tagsPanelVisible","mediaIndex","useMediaIndex","borderBottom","flex","justifyContent","handleShowSearchFacetDialog","handleShowTagsDialog","toggleTagsPanelToggle","debugSlice","badConnection","setBadConnection","toggleEnabled","debugActions","debugReducer","DebugControls","debug","debugEnabled","handleToggleControls","bottom","pointerEvents","Tooltip","content","fallbackPlacements","Switch","checked","tagOptionSchema","z","object","min","assetFormSchema","optional","opt","media","array","nullable","tagFormSchema","getUniqueDocuments","draftIds","doc","startsWith","imageDprUrl","dpi","devicePixelRatio","round","imgH","max","imgW","urlParams","URLSearchParams","append","toString","url","sanitizeFormData","formData","constructor","isFileAsset","isImageAsset","getAssetResolution","metadata","dimensions","ButtonAssetCopy","_ref43","refPopoverTimeout","popoverVisible","setPopoverVisible","useState","clearTimeout","Popover","open","handleClick","setTimeout","Row","_ref44","textAlign","AssetMetadata","exif","marginTop","Stack","filesize","base","extension","toUpperCase","DateTimeOriginal","FNumber","FocalLength","ExposureTime","ISO","marginY","format","Date","handleDownload","location","href","Dialog","SanityDialog","DocumentList","_ref45","isLoading","useSchema","ReferringDocument","schemaType","get","useIntentLink","intent","Preview","_ref46","_templateObject19","FileIcon","ReactFileIcon","defaultStyles","FileAssetPreview","src","_ref47","indicatorsContainer","_ref48","multiValue","_ref49","multiValueLabel","multiValueRemove","svg","_ref50","data","__isNew__","MultiValueLabel","weight","MultiValueRemove","StyledErrorOutlineIcon","_ref51","red","FormFieldInputLabel","as","htmlFor","FormFieldInputTags","onCreateTag","Controller","defaultValue","render","_ref52","onBlur","controllerValue","CreatableSelect","isMulti","onCreateOption","FormFieldInputText","rest","autoComplete","autoFocus","FormFieldInputTextarea","rows","TextArea","FormSubmitButton","isValid","lastUpdated","Image","img","_templateObject20","showCheckerboard","_templateObject21","DialogAssetEdit","dialog","documentStore","useDocumentStore","String","assetUpdatedPrev","assetSnapshot","setAssetSnapshot","tabSection","setTabSection","currentAsset","assetTagOptions","tagItem","generateDefaultValues","formState","errors","isDirty","getValues","handleSubmit","register","setValue","useForm","defaultValues","resolver","zodResolver","formUpdating","handleDelete","handleAssetUpdate","update","result","handleCreateTag","tagName","onSubmit","sanitizedFormData","_weak","subscriptionAsset","listen","_templateObject22","subscribe","unsubscribe","updatedTags","shouldDirty","Footer","footer","header","onClose","WithReferringDocuments","_ref53","referringDocuments","_e","_f","_g","uniqueReferringDocuments","TabList","Tab","tabIndex","TabPanel","hidden","aspectRatio","draggable","DialogConfirm","handleConfirm","Header","DialogSearchFacets","DialogTagCreate","setError","DialogTagEdit","tagSnapshot","setTagSnapshot","currentTag","handleTagUpdate","_templateObject23","TagContainer","_templateObject24","ButtonContainer","_templateObject25","TagButton","tooltip","Tag","isSearchFacetTag","userSelect","flexShrink","handleSearchFacetTagRemove","handleSearchFacetTagAddOrUpdate","searchFacet","handleShowTagEditDialog","handleShowAddTagToAssetsDialog","handleShowRemoveTagFromAssetsDialog","handleShowTagDeleteDialog","VirtualRow","memo","_ref54","isScrolling","TagsVirtualized","setIsScrolling","pickedTagIds","assetTagIds","pickedTagIdsUnique","Set","tagIdsSegmented","every","appliedToAll","appliedToSome","tagsAppliedToAll","tagsAppliedToSome","tagsUnused","computeItemKey","overflowX","TagViewHeader","_ref55","allowCreate","tagsCreating","handleTagCreate","TagView","numPickedAssets","hasTags","hasPicked","DialogTags","Dialogs","currentDialogs","renderDialogs","dialogs","childDialogs","DropzoneDispatchContext","DropzoneDispatchProvider","useDropzoneActions","textTransform","selectCombinedItems","uploads","uploadIds","assetItems","CardWrapper","_templateObject26","CardContainer","_ref56","_templateObject27","orange","_templateObject28","ContextActionContainer","_ref57","_templateObject29","StyledWarningOutlineIcon","_ref58","shiftPressed","opacityContainer","opacityPreview","stopPropagation","kind","Spinner","Checkbox","readOnly","generatePreviewBlobUrl","async","imageEl","file","Promise","resolve","blobUrlLarge","URL","createObjectURL","onload","revokeObjectURL","createImageEl","blob","imageAspect","canvas","ctx","getContext","drawImage","toBlob","err","console","warn","createThrottler","concurrency","currentSubscriptions","pendingObservables","ready$","Subject","request","observable","Observable","observer","scheduleAndWait$","subscription","next","shift","asObservable","first","obs","hexFromBuffer","buffer","prototype","call","Uint8Array","hashFile$","crypto","subtle","FileReader","subscriber","reader","complete","onerror","readAsArrayBuffer","abort","readFile$","digest","arrayBuffer","uploadAsset$","func","throttler","withMaxConcurrency","uploadSanityAsset$","fetchExisting$","documentType","existingAsset","extract","preserveFilename","event","uploadsSlice","sha1hash","status","checkRequest","checkComplete","blobUrl","objectUrl","previewReady","uploadCancel","uploadError","uploadRequest","uploadProgress","uploadHash","percent","uploadStart","uploadItem","selectUploadById","uploadId","uploadsActions","uploadsReducer","_templateObject31","CardUpload","fileSize","percentLoaded","isComplete","isUploading","isQueued","transformOrigin","handleCancelUpload","VirtualCell","_ref63","CardAsset","ItemContainer","div","_templateObject32","ListContainer","_templateObject33","AssetGridVirtualized","onLoadMore","selectedAssets","selectedIds","VirtuosoGrid","Item","List","endReached","overscan","overflowY","TableHeaderItem","isActive","_ref64","_templateObject34","TableHeader","itemsLength","allSelected","Grid","gridColumnGap","gridTemplateColumns","letterSpacing","visibility","ContainerGrid","_ref65","_templateObject35","_templateObject36","_ref66","_templateObject37","StyledWarningIcon","_ref67","referenceCountVisible","setReferenceCountVisible","refCountVisibleTimeout","handleContextActionClick","opacityCell","gridRowGap","gridTemplateRows","gridColumn","gridRowStart","gridRowEnd","gridRow","formatRelative","_ref68","uniqueDocuments","TableRowUpload","_ref69","TableRowAsset","AssetTableVirtualized","GroupedVirtuoso","groupCounts","groupContent","combinedItems","breakpointIndex","useBreakpointIndex","mediaQueryLists","container","matchMedia","getBreakpointIndex","mql","matches","handleBreakpoint","addListener","_err","removeListener","hasFetchedOnce","hasItems","handleLoadMoreItems","isEmpty","Notifications","notifications","toast","useToast","lastItem","closable","PickedBar","handlePickClear","handleDeletePicked","selectedReducer","documentAssetIds","notificationsSlice","notificationsActions","notificationsReducer","rootEpic","combineEpics","assetsDeleteEpic","action$","_state$","match","delete","_templateObject12","catchError","assetsFetchEpic","state$","withLatestFrom","switchMap","_ref23","assetsFetchAfterDeleteAllEpic","_ref26","nextPageIndex","assetsFetchNextPageEpic","_ref25","assetsFetchPageIndexEpic","_ref24","start","end","documentId","constructedFilter","_templateObject14","bufferTime","ofType","debounceTime","assetsTagsAddEpic","_ref29","_ref30","pickedAssets","pickedAssetsFiltered","t","filterAssetWithoutTag","transaction","tx","pickedAsset","patch","_ref27","setIfMissing","_key","nanoid","patchOperationTagAppend","commit","assetsTagsRemoveEpic","_ref31","_ref32","_ref28","ifRevisionId","_rev","unset","patchOperationTagUnset","assetsUpdateEpic","_ref34","set","updatedAsset","dialogId","count","deletedCount","updatedCount","searchFacetTagUpdateEpic","_ref17","currentSearchFacetTag","tagsCreateEpic","_ref10","create","tagsDeleteEpic","_ref12","_templateObject9","ifRevisionID","tagsFetchEpic","_ref14","tagsUpdateEpic","_ref16","updatedTag","uploadsAssetStartEpic","merge","generatePreviewBlobUrl$","takeUntil","stage","uploadsAssetUploadEpic","_ref60","forceAsAssetType","uploadsCheckRequestEpic","_ref62","documentIds","_templateObject30","resultHashes","checkedResults","rootReducer","combineReducers","isPlainObject","getAssetIds","node","getDocumentAssetIds","ReduxProvider","Component","super","epicMiddleware","createEpicMiddleware","dependencies","this","store","configureStore","middleware","getDefaultMiddleware","serializableCheck","thunk","prepend","devTools","preloadedState","assetsInitialState","run","TagsPanel","borderLeft","UploadContainer","_templateObject38","DragActiveContainer","_templateObject39","UploadDropzone","isImageAssetType","getRootProps","getInputProps","isDragActive","useDropzone","accept","getFilesFromEvent","fileList","dataTransfer","files","filteredFiles","filterFiles","noClick","noDrag","onDrop","acceptedFiles","BrowserContent","_ref70","portalElement","setPortalElement","_templateObject40","subscriptionTag","TAG_DOCUMENT_NAME","PortalProvider","Browser","ThemeProvider","ToastProvider","useRootPortalElement","classList","appendChild","removeChild","mediaTag","fields","preview","selection","plugin","mediaAssetSource","currentDocument","useFormValue","handleStopPropagation","nativeEvent","stopImmediatePropagation","useLayer","Portal","onDragEnter","onDragLeave","onDragOver","onMouseUp","tool","Tool","definePlugin","form","assetSources","prev","types","tools","exports"],"mappings":"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","x_google_ignoreList":[0,24]}
|