diff --git a/404.html b/404.html index 0fbd9f3..bd01d61 100644 --- a/404.html +++ b/404.html @@ -1,5 +1,5 @@ -404: This page could not be found

404

This page could not be found.

\ No newline at end of file +

404

This page could not be found.

\ No newline at end of file diff --git a/_next/static/38Zf3xYBSZA1YwHLRCYDW/_buildManifest.js b/_next/static/247nUWMFs87p0o7Gql8B8/_buildManifest.js similarity index 70% rename from _next/static/38Zf3xYBSZA1YwHLRCYDW/_buildManifest.js rename to _next/static/247nUWMFs87p0o7Gql8B8/_buildManifest.js index db04618..65c12bb 100644 --- a/_next/static/38Zf3xYBSZA1YwHLRCYDW/_buildManifest.js +++ b/_next/static/247nUWMFs87p0o7Gql8B8/_buildManifest.js @@ -1 +1 @@ -self.__BUILD_MANIFEST=function(e,t){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":[t,"static/chunks/37a763b4-474a632b9382a395.js",e,"static/chunks/781-04dbdf01d1601d97.js","static/chunks/pages/index-0e6d5b6e12dcbb2f.js"],"/_error":["static/chunks/pages/_error-ee5b5fb91d29d86f.js"],"/about":[e,"static/chunks/pages/about-675b025fecc6dfd3.js"],"/configuration":[e,"static/chunks/pages/configuration-81bb4f895844e651.js"],"/configuration/locale":[e,"static/chunks/pages/configuration/locale-d593ad9b195778e1.js"],"/configuration/map":[e,"static/chunks/pages/configuration/map-17792021a1d9f904.js"],"/configuration/search":[e,"static/chunks/pages/configuration/search-b1b36bbf3ac0f6d3.js"],"/configuration/theme":[t,e,"static/chunks/pages/configuration/theme-092e586514d80c6b.js"],"/content":[e,"static/chunks/pages/content-63bce6bf5b6de6c5.js"],"/content/card":[e,"static/chunks/pages/content/card-3babcd253d90f87a.js"],"/content/markdown":[e,"static/chunks/pages/content/markdown-d7836e46ca24441d.js"],"/content/navigation":[e,"static/chunks/pages/content/navigation-bd229cd3203fc373.js"],"/content/referenced-items":[e,"static/chunks/pages/content/referenced-items-d45ebf0584d849a6.js"],"/content/slider":[e,"static/chunks/pages/content/slider-79a40d930082fe1f.js"],"/content/viewer":[e,"static/chunks/pages/content/viewer-4af38dc0948123a1.js"],"/create-markdown-content":[e,"static/chunks/pages/create-markdown-content-e1a60d24c2140e69.js"],"/customize-the-search-index":[e,"static/chunks/pages/customize-the-search-index-f4b36ce2227164b2.js"],"/deploy-to-github-pages":[e,"static/chunks/pages/deploy-to-github-pages-26b3dc9dc14dd12a.js"],"/deploy-to-vercel":[e,"static/chunks/pages/deploy-to-vercel-cdd1f2bffa669881.js"],"/development":[e,"static/chunks/pages/development-daeb0a1c7428c381.js"],"/enable-a-map-with-navPlace":[e,"static/chunks/pages/enable-a-map-with-navPlace-eaf31fecc588484c.js"],"/get-started":[e,"static/chunks/pages/get-started-413d0a18e7d7ff00.js"],"/guides":[e,"static/chunks/pages/guides-6973a36eeca62be6.js"],sortedPages:["/","/_app","/_error","/about","/configuration","/configuration/locale","/configuration/map","/configuration/search","/configuration/theme","/content","/content/card","/content/markdown","/content/navigation","/content/referenced-items","/content/slider","/content/viewer","/create-markdown-content","/customize-the-search-index","/deploy-to-github-pages","/deploy-to-vercel","/development","/enable-a-map-with-navPlace","/get-started","/guides"]}}("static/chunks/673-d6d9313911892065.js","static/chunks/ee9ce975-e02a9ea7234e7711.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); \ No newline at end of file +self.__BUILD_MANIFEST=function(e,t){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":[t,"static/chunks/37a763b4-474a632b9382a395.js",e,"static/chunks/781-04dbdf01d1601d97.js","static/chunks/pages/index-0e6d5b6e12dcbb2f.js"],"/_error":["static/chunks/pages/_error-ee5b5fb91d29d86f.js"],"/about":[e,"static/chunks/pages/about-675b025fecc6dfd3.js"],"/configuration":[e,"static/chunks/pages/configuration-81bb4f895844e651.js"],"/configuration/locale":[e,"static/chunks/pages/configuration/locale-d593ad9b195778e1.js"],"/configuration/map":[e,"static/chunks/pages/configuration/map-17792021a1d9f904.js"],"/configuration/search":[e,"static/chunks/pages/configuration/search-b1b36bbf3ac0f6d3.js"],"/configuration/theme":[t,e,"static/chunks/pages/configuration/theme-092e586514d80c6b.js"],"/content":[e,"static/chunks/pages/content-63bce6bf5b6de6c5.js"],"/content/card":[e,"static/chunks/pages/content/card-3babcd253d90f87a.js"],"/content/markdown":[e,"static/chunks/pages/content/markdown-d7836e46ca24441d.js"],"/content/navigation":[e,"static/chunks/pages/content/navigation-bd229cd3203fc373.js"],"/content/referenced-items":[e,"static/chunks/pages/content/referenced-items-d45ebf0584d849a6.js"],"/content/slider":[e,"static/chunks/pages/content/slider-79a40d930082fe1f.js"],"/content/viewer":[e,"static/chunks/pages/content/viewer-4af38dc0948123a1.js"],"/create-markdown-content":[e,"static/chunks/pages/create-markdown-content-e1a60d24c2140e69.js"],"/customize-the-search-index":[e,"static/chunks/pages/customize-the-search-index-f4b36ce2227164b2.js"],"/deploy-to-github-pages":[e,"static/chunks/pages/deploy-to-github-pages-26b3dc9dc14dd12a.js"],"/deploy-to-vercel":[e,"static/chunks/pages/deploy-to-vercel-cdd1f2bffa669881.js"],"/development":[e,"static/chunks/pages/development-daeb0a1c7428c381.js"],"/enable-a-map-with-navPlace":[e,"static/chunks/pages/enable-a-map-with-navPlace-eaf31fecc588484c.js"],"/get-started":[e,"static/chunks/pages/get-started-a019e99744cfb351.js"],"/guides":[e,"static/chunks/pages/guides-6973a36eeca62be6.js"],"/stackblitz":[e,"static/chunks/pages/stackblitz-a924ed426ec5c378.js"],sortedPages:["/","/_app","/_error","/about","/configuration","/configuration/locale","/configuration/map","/configuration/search","/configuration/theme","/content","/content/card","/content/markdown","/content/navigation","/content/referenced-items","/content/slider","/content/viewer","/create-markdown-content","/customize-the-search-index","/deploy-to-github-pages","/deploy-to-vercel","/development","/enable-a-map-with-navPlace","/get-started","/guides","/stackblitz"]}}("static/chunks/673-d6d9313911892065.js","static/chunks/ee9ce975-e02a9ea7234e7711.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); \ No newline at end of file diff --git a/_next/static/38Zf3xYBSZA1YwHLRCYDW/_ssgManifest.js b/_next/static/247nUWMFs87p0o7Gql8B8/_ssgManifest.js similarity index 100% rename from _next/static/38Zf3xYBSZA1YwHLRCYDW/_ssgManifest.js rename to _next/static/247nUWMFs87p0o7Gql8B8/_ssgManifest.js diff --git a/_next/static/chunks/nextra-data-en-US.json b/_next/static/chunks/nextra-data-en-US.json index fb50e40..35aa209 100644 --- a/_next/static/chunks/nextra-data-en-US.json +++ b/_next/static/chunks/nextra-data-en-US.json @@ -1 +1 @@ -{"/about":{"title":"About","data":{"":"The project name \"Canopy\" is inspired by the tree motiff in the presentation, A Tree's Strength Is Its Trunk: IIIF as Central Operational Infrastructure, delivered by María Matienzo (formerly Stanford University Libraries) and Esmé Cowles (Princeton University Library) at the CNI Fall 2020 Virtual Membership Meeting. Following this infrastructure vision, Canopy was created as a front end solution for rapid and easy creation of static sites using a IIIF Collection and its Manifests.Canopy IIIF is created using Next.js 13, with a FlexSearch index for text search, IIIF Presentation API 3.0 delivering resource content, Radix UI and Stitches used throughout for the user interface, and various community modules from IIIF Commons and Samvera supporting the work presentation and resource delivery.","origination#Origination":"Canopy was initially conceived at the University of Tennessee Libraries in the Summer '21 as a statically generated web application for the Rising from the Ashes: The Chimney Tops 2 Wildfires Oral History Project. This project was generated from a single IIIF Collection; however, the components delivering the user interface became heavily tailored to the source material of the Rising from the Ashes project, thus limiting the reuse of the codebase for other collections. The original Canopy featured a heavily integrated IIIF A/V Viewer designed to deliver Sound and Video resources. This A/V viewer would eventually evolve into a partial inspiration for Clover IIIF.Canopy was reimagined as Canopy IIIF in early Winter '22 with the primary focus of the project maintaining the the ability to build an interoperable site from any IIIF Collection following IIIF Presentation API 2.0 and 3.0 specifications.","contributors#Contributors":"Creators\nMat Jordan - Northwestern University\nLibraries, formerly University of Tennessee Libraries\nMark Baggett - University of Tennessee\nLibraries\nAdam Arling - Northwestern University\nLibraries\nAdditional Credits\nEmily Gore - University of Georgia Libraries, formerly University of Tennessee\nLibraries\nDavid Schober - Northwestern University Libraries\nMartim Passos - Instituto Moreira Salles\nTarje Lavik - University of Bergen Library"}},"/configuration":{"title":"Configuration","data":{"":"The Canopy IIIF build process will read from a custom configuration file at config/canopy.json if it exists. If this configuration file does not exist, the default configuration config/.default/canopy.default.json will be used as a fallback for demonstration purposes.\nSee the Create a Project guide for a step-by-step guide\nillustrating the setup of Canopy IIIF project.","configuration-options#Configuration Options":"Canopy IIIF is a highly configurable application that can be tailored to the needs of a project. Canopy configurations fallback to default options if not customized.","basic-configuration#Basic Configuration":"A custom Canopy configuration file can be created with the following steps:\nFind your config/ directory\nCopy canopy.sample.json to canopy.json\nMake updates to both the prod and dev configurations","properties#Properties":"Property\tType\tDescription\tcollection\tstring\tIIIF Collection URI\tlabel\tlabel \tIIIF Presentation 3.0 label property\tsummary\tsummary\tIIIF Presentation 3.0 summary property\tfeatured\tArray\tArray of IIIF Manifest URIs\tmetadata\tArray\tArray of metadata labels","collection#collection":"The collection property is required and must be the id of the referenced source IIIF Collection manifest. Collections referencing other Collections in their items property are not currently supported.\n\"collection\": \"https://iiif.bodleian.ox.ac.uk/iiif/collection/hobhouse\"","label-and-summary#label and summary":"The Canopy IIIF site title and description are respectively the label and summary IIIF Presentation API properties of the set IIIF Collection resource. You can optionally override this by providing a valid Presentation 3.0 label and/or summary property. These values are transformed to meta elements in the of the HTML document.\n\"label\": { \"none\": [\"Hobhouse\"] },\n\"summary\": { \"none\": [\"Manuscripts from the archive of Emily Hobhouse.\"] }","featured#featured":"You can inform Canopy IIIF of featured Manifests by providing an array of ids. These must be within the referenced collection resource and the Manifest URIs must be an exact match. These Manifests will render throughout the interface in featured components.Warning: In the current pre-release, featured Manifests must have an Image body on the first Canvas.\n\"featured\": [\n \"https://iiif.bodleian.ox.ac.uk/iiif/manifest/8da97e8c-4e12-457d-aad8-3327b3aec183.json\",\n \"https://iiif.bodleian.ox.ac.uk/iiif/manifest/2968d5c7-3718-44ef-92ea-ee4cc58cc677.json\"\n]","metadata#metadata":"Curating Metadata allows implementers of Canopy IIIF to select metadata fields that provide additional access points to end users. The fields can be specified by listing the labels of each metadata property found in the metadata property of the manifest. Metadata labels that are curated will be automatically included as featured elements on the homepage, the metadata page, linking from works, and as facets on the search page. An optimal case is a label common to all or most manifests with some in diversity of values across those resources.Note: Metadata labels are not yet BCP 47 language code aware; however, aggregation processes will make exact string comparisons regardless of language code.\n\"metadata\": [\"Extent\", \"Title\", \"Date Statement\", \"Language\"]","production-and-development#Production and Development":"Both the prod and dev environments have a configuration. These configurations can match each other; however in some cases, development speed can be aided by targeting a smaller IIIF Collection id as a fixture.","example-configuration#Example Configuration":"The following is an example configuration for the Bodleian Libraries' Emily Hobhouse collection. Two Manifests are featured and four metadata labels are curated.\n{\n \"prod\": {\n \"label\": { \"none\": [\"Hobhouse\"] },\n \"summary\": { \"none\": [\"Manuscripts from the archive of Emily Hobhouse.\"] },\n \"collection\": \"https://iiif.bodleian.ox.ac.uk/iiif/collection/hobhouse\",\n \"featured\": [\n \"https://iiif.bodleian.ox.ac.uk/iiif/manifest/8da97e8c-4e12-457d-aad8-3327b3aec183.json\",\n \"https://iiif.bodleian.ox.ac.uk/iiif/manifest/2968d5c7-3718-44ef-92ea-ee4cc58cc677.json\"\n ],\n \"metadata\": [\"Extent\", \"Title\", \"Date Statement\", \"Language\"]\n },\n \"dev\": {\n \"label\": { \"none\": [\"Hobhouse\"] },\n \"summary\": { \"none\": [\"Manuscripts from the archive of Emily Hobhouse.\"] },\n \"collection\": \"https://iiif.bodleian.ox.ac.uk/iiif/collection/hobhouse\",\n \"featured\": [\n \"https://iiif.bodleian.ox.ac.uk/iiif/manifest/8da97e8c-4e12-457d-aad8-3327b3aec183.json\",\n \"https://iiif.bodleian.ox.ac.uk/iiif/manifest/2968d5c7-3718-44ef-92ea-ee4cc58cc677.json\"\n ],\n \"metadata\": [\"Extent\", \"Title\", \"Date Statement\", \"Language\"]\n }\n}"}},"/configuration/locale":{"title":"Locale Preferences","data":{"":"Canopy IIIF supports locale preferences for user interface language.","properties#Properties":"For each Locale, the following properties are required:\nProperty\tType\tDescription\tconfig\tstring\tPath to the locale configuration file.\tlabel\tstring\tLabel for the locale.\tlang\tstring\tBCP 47 language code for the locale.\t\n\"locales\": [\n {\n \"config\": \"locales/en.json\",\n \"label\": \"English\",\n \"lang\": \"en\"\n }\n]","customizing-a-locale#Customizing a Locale":"User interface language strings are set through a locale configuration file located in the config/locales directory. Persons customizing a Canopy instance can add new language configurations to support their preferred locales. We welcome all pull requests to add new locales to the Canopy IIIF project.English configuration is predefined and found at config/locales/en.json\n{\n \"footerSourceCollection\": \"Source Collection\",\n \"footerToggleTheme\": \"Toggle Theme\",\n \"homepageHighlightedWorks\": \"Highlighted Works\",\n \"searchButton\": \"Search\",\n \"searchResults\": \"Results\",\n \"searchFilter\": \"Filter\",\n \"searchFilterAny\": \"Any\",\n \"searchFilterClear\": \"Clear All\",\n \"searchFilterClose\": \"Close\",\n \"searchFilterSubmit\": \"View Results\"\n}","multiple-locales#Multiple Locales":"If more than one locale is defined in the config/options.json, a select element will render in the header allowing users to toggle the defined languages. In addition, Canopy will attempt to align the language set by the user's browser with the available options. As a fallback, the first locale defined in the array will be set.As an example, if a visitor with en-US visited a Canopy instance that included both no and en as language options, the en locale configuration would be the default locale. Whereas, if a user visited this same instance with fr as their browser language, the default locale would be the no configuration.\n\"locales\": [\n {\n \"config\": \"locales/no.json\",\n \"label\": \"Norsk\",\n \"lang\": \"no\"\n },\n {\n \"config\": \"locales/en.json\",\n \"label\": \"English\",\n \"lang\": \"en\"\n }\n]"}},"/configuration/map":{"title":"Map","data":{"":"A map route can be enabled to provide geographic discovery of works via config/options.json. This feature builds markers off of geographic point features found in navPlace properties at the Manifest level. For implementation, Canopy IIIF uses Leaflet to render the map.Note: Currently, only navPlace properties found at the Manifest level are displayed. Also, only Features of type Point are displayed.\nSee the Enable a Map with navPlace for a\nstep-by-step guide.","properties#Properties":"Property\tType\tDescription\tenabled\tboolean\tBoolean value to enable or disable the /map route. The default value is false.\tdefaultBounds\tArray\tThe defaultBounds property defines the coordinates of the initial view of the map.\ticon\tObject\tThe icon property defines the icon used to represent each marker on the map.\ttileLayers\tArray\tThe map's tile layers are also configured here, giving users the ability to choose and customize layers for their project.","enabled#enabled":"Boolean value to enable or disable the /map route. The default value is false. To enable this option, set the option to true.\n\"enabled\": true","defaultbounds#defaultBounds":"The defaultBounds property defines the coordinates of the initial view of the map. This property is an array of\narrays of longitude and latitude coordinates. Unless there are no markers found within the manifests of the\noverarching collection, this property will be ignored.\n\"defaultBounds\": [[51.505, -0.09]]","icon#icon":"The icon property defines the icon used to represent each marker on the map. The iconUrl property is the path to\nthe image file used as the icon. The iconSize property is an array of the width and height of the icon in pixels.\nThe iconAnchor property is an array of the x and y coordinates of the icon's anchor point in pixels. These values\nare used to position the icon relative to its marker's coordinates.\n\"icon\": {\n \"iconUrl\": \"images/marker-icon.png\",\n \"iconSize\": [24, 36],\n \"iconAnchor\": [12, 36]\n}","tilelayers#tileLayers":"The map's tile layers are also configured here, giving users the ability to choose and customize layers for their project. Additional services, such as MapBox, can be easily integrated following this pattern. Each tile layer defined here will appear as an option in the layer control of the map. The name property defines the text next to the radio button. The url property is the link to the tile layer. Finally, the attribution property defines the text that appears at the bottom of the map in case the tile layer requires any specific attribution on use. The first tile layer in the array will be used as the default map.\n\"tileLayers\": [\n {\n \"name\": \"OpenStreetMap\",\n \"url\": \"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\",\n \"attribution\": \"© OpenStreetMap contributors\"\n },\n {\n \"name\": \"OpenTopoMap\",\n \"url\": \"https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png\",\n \"attribution\": \"© OpenStreetMap contributors\"\n }\n]","example-map-configuration#Example Map Configuration":"Example of the map configuration in config/options.json file with a map enabled:\n{\n \"map\": {\n \"defaultBounds\": [[51.505, -0.09]],\n \"enabled\": true,\n \"icon\": {\n \"iconUrl\": \"images/marker-icon.png\",\n \"iconSize\": [24, 36],\n \"iconAnchor\": [12, 36]\n },\n \"tileLayers\": [\n {\n \"name\": \"OpenStreetMap\",\n \"url\": \"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\",\n \"attribution\": \"© OpenStreetMap contributors\"\n }\n ]\n }\n}"}},"/configuration/search":{"title":"Search","data":{"":"Canopy IIIF utilizes FlexSearch for fast in-memory indexing and provides options for users to customize their search experience. By default Canopy will index Manifest all label and any defined metadata properties. Users can optionally index the summary property.\nSee the Customize the Search Index for a\nstep-by-step guide.","properties#Properties":"Property\tType\tDescription\tenabled\tboolean\tWhether or not to enable search.\tflexSearch\tObject\tFlexSearch configuration options.\tindex\tObject\tIndexing option for Manifests.","enabled#enabled":"Boolean value to enable or disable search indexing. Default is true.\n\"enabled\": true","flexsearch#flexSearch":"Users can customize their FlexSearch configuration using search.flexSearch to fit around the source Collection and its Manifest label, metadata, and summary properties. Customizations range from defining language-specific options such as charset and stemmer, as well as scoring options like resolution and depth.\n\"flexSearch\": {\n \"charset\": \"latin:extra\",\n \"optimize\": true,\n \"tokenize\": \"strict\",\n \"bidirectional\": false,\n \"document\": {\n \"index\": [\n {\n \"field\": \"label\",\n \"tokenize\": \"full\",\n \"resolution\": 9,\n \"depth\": 3,\n \"bidirectional\": true\n },\n {\n \"field\": \"metadata\",\n \"resolution\": 2\n },\n {\n \"field\": \"summary\",\n \"resolution\": 1\n }\n ]\n }\n }","index#index":"Implementers can define the properties of their manifests that are indexed. Canopy IIIF indexes the label property on the Manifest by default. Users can also index the metadata and summary properties.The metadata property is indexed by default for configured metadata labels. Furthermore, all metadata values may be indexed OR you may specify only the properties that are specified in config/canopy.json by modifying search.index.metadata.all.The summary property is not indexed by default. To enable indexing of the summary property, set search.index.summary.enabled to true.\n\"index\": {\n \"metadata\": {\n \"enabled\": true,\n \"all\": false\n },\n \"summary\": {\n \"enabled\": false\n }\n}","default-search-configuration#Default Search Configuration":"\"search\": {\n \"enabled\": true,\n \"flexSearch\": {\n \"charset\": \"latin:extra\",\n \"optimize\": true,\n \"tokenize\": \"strict\",\n \"bidirectional\": false,\n \"document\": {\n \"index\": [\n {\n \"field\": \"label\",\n \"tokenize\": \"full\",\n \"resolution\": 9,\n \"depth\": 3,\n \"bidirectional\": true\n },\n {\n \"field\": \"metadata\",\n \"resolution\": 2\n },\n {\n \"field\": \"summary\",\n \"resolution\": 1\n }\n ]\n }\n },\n \"index\": {\n \"metadata\": {\n \"enabled\": true,\n \"all\": false\n },\n \"summary\": {\n \"enabled\": false\n }\n }\n}"}},"/content":{"title":"Content","data":{"":"Canopy allows for easy creation of contextual content to support and reference the automatically generated content in a IIIF Collection. For the purpose of easy content generation Canopy utilizes MDX which \"allows you to use JSX in your markdown content.\"\nSee the Creating Markdown Content guide for a\nstep-by-step guide illustrating basic creation of new content.","markdown-and-components#Markdown and Components":"Content is edited in the /content directory at the root of your Canopy IIIF project using .mdx files. In addition to the standard Markdown elements, Canopy IIIF provides a number of custom components that can be used to enhance the content of your site. These components are designed to be used in conjunction with Markdown to create a variety of content.","example-content#Example Content":"Content page with formatted Markdown elements, front matter, and an integrated component to output a IIIF Viewer for a provided Manifest.","sample-mdx#Sample MDX":"---\ntitle: The Nez Percé (Nimíipuu)\nnavigation: \"about\"\n---\n# The Nez Percé (Nimíipuu)\nThis a sample page for scholarly content with historical context relating to the [Nez Percé](https://en.wikipedia.org/wiki/Nez_Perce), also known as the Nimíipuu.\n## A IIIF Viewer\nThe `` is a React component that takes a single property, `iiifContent`, which is the URI to the\nIIIF manifest. The component will then fetch the Manifest and render a deep-zoom viewer. The viewer is\nresponsive and will resize to fit the container it is placed in. These Manifests can be part of the Canopy\nsource Collection but are not limited to it.\n","sample-output#Sample Output":""}},"/content/card":{"title":"Card","data":{"":"Implementers using Canopy IIIF can directly reference a single IIIF Manifest by using the Card component. The Card will render an HTML figure, the thumbnail and a figcaption containing the label of the Manifest. Use rendered figure will link to /work page for the relative Manifest.","properties#Properties":"Property\tType\tRequired\tDescription\tiiifContent\tstring\ttrue\tManifest URI to be rendered.\t\nThe referenced Manifest must be part of the IIIF Collection used in your Canopy project.","usage#Usage":""}},"/content/markdown":{"title":"Markdown","data":{"":"Canopy IIIF content pages are authored using Markdown in .mdx files.","elements#Elements":"Common Markdown elements are supported for use in Canopy IIIF content. Canopy will automatically transform content created in Markdown to HTML.\n# Iranian Cinema\n## Overview\nIranian cinema, also known as Persian cinema, stands out for its unique blend of artistry, storytelling, and cultural representation. It has gained significant international acclaim, especially for its poetic narrative style and sociocultural themes. Iranian cinema is a vibrant and influential part of the global film landscape, known for its poignant storytelling, artistic innovation, and cultural depth.\n## Characteristics\n- **Humanistic Approach**: Many films focus on everyday life and human relationships, reflecting broader societal issues.\n- **Artistic Storytelling**: Iranian cinema is renowned for its poetic, metaphorical narrative style.\n- **Minimalism**: There's often an emphasis on simplicity in both visual and narrative elements.\n## International Recognition\nIranian films have been celebrated at major international film festivals, including Cannes, Venice, and Berlin. Numerous awards have been won, highlighting the global impact of Iranian cinematic art.","front-matter#Front Matter":"At the top of each Markdown file, you can add front matter to provide additional information about the page. Front matter is written in YAML, and must be surrounded by --- on either side.\n---\ntitle: \"Title in Front Matter\"\n---","content-pages#Content Pages":"All new content pages created in the content directory can have the following front matter:","title#title":"The title of the page. This will be used in the HTML and associated <meta> tags.","navigation#navigation":"The navigation menu for the page. This should be the relative directory path for the page. For example, if the page is in content/correspondence/, the navigation should be correspondence.","referencedmanifests#referencedManifests":"A list of IIIF Manifests URIs that are referenced in the content of the page. These Manifests MUST be a part of source IIIF Collection used for your Canopy project. These will create a link between the /work page and the current content page.\n---\ntitle: \"January 1955 Correspondence\"\nnavigation: \"correspondence\"\nreferencedManifests:\n - https://api.dc.library.northwestern.edu/api/v2/works/46de2c91-3a29-4525-939e-ee17073f3a7e?as=iiif\n - https://api.dc.library.northwestern.edu/api/v2/works/bb968afb-7857-46bd-9392-d8617a93cc9f?as=iiif\n - https://api.dc.library.northwestern.edu/api/v2/works/14b8212b-7c49-431b-ad04-e4cd5cce6416?as=iiif\n---","home-page#Home Page":"The home page at content/index.mdx is a special content page with distinct front matter keys in addition to title.","showhero#showHero":"A boolean value that determines whether or not the hero image for featued Manifests should be shown on the home page. This renders above the Markdown content.","showhighlighted#showHighlighted":"A boolean value that determines whether or metadata sliders for highlighted items should be shown on the home page. This renders below the Markdown content if showHero is true\n---\ntitle: Amanda Ira Aldridge Correspondences\nshowHero: true\nshowHighlighted: true\n---"}},"/content/navigation":{"title":"Navigation","data":{"":"Navigation is configured from _meta.json files located in /content.","primary-navigation#Primary Navigation":"Canopy IIIF creates it's primary navigation at build time from /content/_meta_.json. Each link will have a path and text key. A path value will resolve to a file or directory under /content or /src/pages. The text key will be what's displayed in the navigation bar. The order of the links in the array will be the order they appear in the navigation.\n[\n {\n \"path\": \"/works\",\n \"text\": \"Works\"\n },\n {\n \"path\": \"/metadata\",\n \"text\": \"Metadata\"\n },\n {\n \"path\": \"/about\",\n \"text\": \"About\"\n }\n]\nCanopy IIIF provides the Works and Metadata pages out of the box,\npre-configured. Therefore you will not see markdown files for these pages\nunder the /content directory, though their links will resolve.\nFor a more detailed explanation of how the path value is resolved, see below.\nTechnical explanation: The path value follows the\nNext.js\npages routing convention. The path value /works will map to\n/src/pages/works/index.tsx. The path value/metadata will map to\n/src/pages/metadata.tsx.","custom-content#Custom Content":"Most users will want to add navigation for custom content to their site. For example, a user may want to customize the navigation on the About page to better fit the content of their site or create a brand new page with custom navigation. This is done by creating a markdown file under /content and adding a link to the primary navigation (as seen above).\nFor example, to add a page called Essays to the primary navigation, create a markdown file called index.mdx under /content/essays.\nIf creating a new page, try copying the content from src/pages/about into\nsrc/pages/{your_page_name}. This will give you a good starting point for\nyour new page.","secondary-navigation#Secondary Navigation":"","top-level#Top Level":"Secondary navigation may be defined from within a _meta.json file located within a subdirectory of /content. For example, secondary navigation within About might look like this:\n[\n {\n \"path\": \"/about\",\n \"text\": \"About\"\n },\n {\n \"path\": \"/about/example\",\n \"text\": \"Markdown Example\"\n }\n]\nWhich will render top-level secondary navigation links About and Markdown Example:\nThese About secondary navigation links are wired up to route to the corresponding markdown file. For example, clicking on Markdown Example will route to /content/about/example.Markdown Example must also define a navigation frontmatter property, identifying it's parent. This is used to render the top-level secondary navigation links. For example, the Markdown Example markdown file might look like this:\n---\ntitle: About\nnavigation: \"about\"\n---\nContent goes here","internal-page-navigation#Internal Page Navigation":"Internal page navigation links (ie. \"Use Cases\", \"Features\", and \"Colophon\") are automatically generated for heading level 2 elements (## Heading) in your Markdown content. For example, the About page might look like this:\n# About\nUsing a single [IIIF Presentation Collection](https://iiif.io/api/presentation/3.0/#overview-collection) as a data source, Canopy IIIF (Canopy) generates a browseable, searchable, customizable, and contextually-driven static site using Next.js without duplicating content.\n## Use Cases\nSome content here\n## Features\nSome content here\n## Colophon\nSome content here"}},"/content/referenced-items":{"title":"Referenced Items","data":{"":"The ReferencedItems component is used in conjunection with referencedManifests front matter key to easily render a grid of Card components. The referenced items must be Manifests within the IIIF Collection used in your Canopy project.\nSee Front Matter document for more\ninformation.","usage#Usage":"---\ntitle: \"January 1955 Correspondence\"\nnavigation: \"correspondence\"\nreferencedManifests:\n - https://api.dc.library.northwestern.edu/api/v2/works/46de2c91-3a29-4525-939e-ee17073f3a7e?as=iiif\n - https://api.dc.library.northwestern.edu/api/v2/works/bb968afb-7857-46bd-9392-d8617a93cc9f?as=iiif\n - https://api.dc.library.northwestern.edu/api/v2/works/14b8212b-7c49-431b-ad04-e4cd5cce6416?as=iiif\n---\n<ReferencedItems />"}},"/content/slider":{"title":"Slider","data":{"":"Slider is a component that renders a Collection as a carousel component. Each item in the referenced IIIF Collection is rendered as an HTML figure, the thumbnail and a figcaption containing the label of the Manifest. Use rendered figure will link to /work page for the relative Manifest.","properties#Properties":"Property\tType\tRequired\tDescription\tiiifContent\tstring\ttrue\tIIIF Collection URI to be rendered.\t\nThis resource may OR may not be part of the IIIF Collection used in your Canopy project.\nIf the Collection is generated by Canopy, the homepage routes will automatically link to respective /work pages and /search facets.","usage#Usage":"<Slider iiifContent=\"/api/facet/creator/david-alfaro-siqueiros \" />"}},"/content/viewer":{"title":"Viewer","data":{"":"When creating content for Canopy, you can use the Viewer component to embed a deep-zoom and A/V capable IIIF Viewer into your content. The integrated IIIF Viewer is the Clover IIIF Viewer component","properties#Properties":"Property\tType\tRequired\tDescription\tiiifContent\tstring\ttrue\tIIIF Manifest or Collection URI to be rendered.\t\nThis resource may OR may not be part of the IIIF Collection used in your Canopy project.\nThe Viewer will render both IIIF Manifests and IIIF Collections.","usage#Usage":"<Viewer iiifContent=\"https://manifests.collections.yale.edu/ycba/obj/702\" />"}},"/create-markdown-content":{"title":"Create Markdown Content","data":{"":"Implementers of Canopy IIIF can author contextual content to support\nManifest resources using formatted Markdown files. These files are stored in\nthe /content directory of your project. In doing so, you can add context\nto items in your IIIF Collection and craft a custom experience using\nintegrated components provided by Canopy IIIF.\nThis guide assumes you have a Canopy IIIF project. See the Create a\nProject guide to get started.","use-case#Use Case":"As a digital humanist, you have authored scholarly content for distinct items in a IIIF Collection. Your aim is to publish a digital scholarship project that highlights your context alongside these items.","implementation#Implementation":"","create-a-markdown-file#Create a Markdown file":"In your content directory, find the about subdirectory and create the new file sample.mdx.\nAdd the following barebones Markdown and front matter to your file and save.\n---\ntitle: The Nez Percé (Nimíipuu)\n---\n# The Nez Percé (Nimíipuu)\nThis a sample page for scholarly content with historical context relating to the [Nez Percé](https://en.wikipedia.org/wiki/Nez_Perce), also known as the Nimíipuu.\nYour file is now accessible at the relative route /about/nez-perce. If running in development mode, your file is accessible at http://localhost:5001/about/nez-perce.","update-navigation-menu#Update Navigation Menu":"Add the navigation key to the front matter with the about value. In this example the about navigation menu is defined by the content/about/_meta.json file.\n---\ntitle: The Nez Percé (Nimíipuu)\nnavigation: \"about\"\n---\n# The Nez Percé (Nimíipuu)\nThis a sample page for scholarly content with historical context relating to the [Nez Percé](https://en.wikipedia.org/wiki/Nez_Perce), also known as the Nimíipuu.\nEdit the content/about/_meta.json file and Add the new menu item to the array. Note that the /about/nez-perce path matches the relative path of the Markdown file.\n[\n {\n \"path\": \"/about\",\n \"text\": \"About\"\n },\n {\n \"path\": \"/about/example\",\n \"text\": \"Markdown Example\"\n },\n {\n \"path\": \"/about/nez-perce\",\n \"text\": \"The Nez Percé (Nimíipuu)\"\n }\n]\nYou will see the menu rendered in the <aside> of the page after a browser refresh.","add-a-iiif-viewer#Add a IIIF Viewer":"Canopy IIIF provides a Clover IIIF Viewer component that can be used to display IIIF resources within Markdown.\nAdd a <Viewer /> component to the bottom of our Markdown file and directly reference a IIIF Manifest with the iiifContent property.\n---\ntitle: The Nez Percé (Nimíipuu)\nnavigation: \"about\"\n---\n# The Nez Percé (Nimíipuu)\nThis a sample page for scholarly content with historical context relating to the [Nez Percé](https://en.wikipedia.org/wiki/Nez_Perce), also known as the Nimíipuu.\n## A IIIF Viewer\nThe `<Viewer />` is a React component that takes a single property, `iiifContent`, which is the URI to the\nIIIF manifest. The component will then fetch the Manifest and render a deep-zoom viewer. The viewer is\nresponsive and will resize to fit the container it is placed in. These Manifests can be part of the Canopy\nsource Collection but are not limited to it.\n<Viewer iiifContent=\"https://api.dc.library.northwestern.edu/api/v2/works/14a6aa15-9e12-47a7-9617-91f430d4f47b?as=iiif\" />\nThe IIIF viewer is now rendered at the bottom of the page. The viewer is responsive with a max-height.","reference-collection-items#Reference Collection Items":"As a digital humanist, you might have authored a series of essays in Markdown (in the /content directory), in which you wish to reference or cite one or more items in the source IIIF Collection. Canopy offers an easy method for linking scholarly content to items in their collection using the referencedManifests front matter key. This key takes an array of IIIF Manifest URIs. The Manifests MUST be in the source IIIF Collection of the Canopy project.\nAdd the referencedManifests key to the front matter with an array of Manifest URIs.\nAdd a <ReferencedItems /> component to bottom of our Markdown file. This will render the items as Figures in a responsive grid. Each item will have output relative local link to the item, a thumbnail, and the label.\n---\ntitle: The Nez Percé (Nimíipuu)\nnavigation: \"about\"\nreferencedManifests:\n - https://api.dc.library.northwestern.edu/api/v2/works/84aec8c1-42e8-4e2c-a6b2-1c7e3790217f?as=iiif\n - https://api.dc.library.northwestern.edu/api/v2/works/19efac1e-5e79-471c-89c2-a60a775562ce?as=iiif\n - https://api.dc.library.northwestern.edu/api/v2/works/ddd72f96-9869-4335-9d8c-3a3da51ad128?as=iiif\n - https://api.dc.library.northwestern.edu/api/v2/works/6caed4fb-60bc-4574-86a2-cb9a1859f78c?as=iiif\n---\n# The Nez Percé (Nimíipuu)\nThis a sample page for scholarly content with historical context relating to the [Nez Percé](https://en.wikipedia.org/wiki/Nez_Perce), also known as the Nimíipuu.\n## A IIIF Viewer\nA IIIF viewer is a React component that takes a single property, `iiifContent`, which is the URI to the\nIIIF manifest. The component will then fetch the Manifest and render a deep-zoom viewer. The viewer is\nresponsive and will resize to fit the container it is placed in.\n<Viewer iiifContent=\"https://api.dc.library.northwestern.edu/api/v2/works/14a6aa15-9e12-47a7-9617-91f430d4f47b?as=iiif\" />\n## Referenced Items\nThe `<ReferencedItems />` automatically outputs a grid of items that are referenced by the current page.\n<ReferencedItems />\nYour page should now output a grid of items that are referenced in the front matter. Automatically, a reciprocal connection is made between the Markdown content and the items in the IIIF Collection. Users can now navigate to and from the scholarly content page and the relative /work page representing the Manifest.","leveraging-metadata-collections#Leveraging Metadata Collections":"During the Canopy build process, new unique metadata-based IIIF Collections are automatically generated from the source IIIF Collection. These Collections can be used within Markdown content to enhance user experience and your scholarly content.These new Collections are generated for label and value pairs defined of the metadata entries in a Canopy configuration file. The IIIF Collections are available at the URL pattern /api/facet/{label}/{value}.json. Generated IIIF Collections for these facets are logged in the Canopy build process, ex:\nCreating facets as IIIF Collections...\n↓ /api/facet/subject/cayuse-indians.json\n↓ /api/facet/subject/chinookan-indians.json\n↓ /api/facet/subject/nez-perce-indians.json\n↓ /api/facet/subject/tlakluit-indians.json\n↓ /api/facet/subject/umatilla-indians.json\n↓ /api/facet/subject/walla-walla-indians.json\n↓ /api/facet/date/1910.json\n↓ /api/facet/date/1909.json\n↓ /api/facet/date/1905.json\n↓ /api/facet/date/1911.json\n↓ /api/facet/date/1903.json\nAdd a <Viewer /> component to the bottom of our Markdown file and reference a collection for label of Date and value of 1905 with the iiifContent property. The iiifContent property URI can be either a relaltive or absolute path.\n<Viewer iiifContent=\"/api/facet/date/1905.json\" />\nOr, Add a <Slider /> component as an alternative view to render a carousel of items that link to the local relative /work pages representing the Manifests. This component takes the same iiifContent property. Note that this component only supports Collection resources.\n<Slider iiifContent=\"/api/facet/date/1905.json\" />\n---\ntitle: The Nez Percé (Nimíipuu)\nnavigation: \"about\"\nreferencedManifests:\n - https://api.dc.library.northwestern.edu/api/v2/works/84aec8c1-42e8-4e2c-a6b2-1c7e3790217f?as=iiif\n - https://api.dc.library.northwestern.edu/api/v2/works/19efac1e-5e79-471c-89c2-a60a775562ce?as=iiif\n - https://api.dc.library.northwestern.edu/api/v2/works/ddd72f96-9869-4335-9d8c-3a3da51ad128?as=iiif\n - https://api.dc.library.northwestern.edu/api/v2/works/6caed4fb-60bc-4574-86a2-cb9a1859f78c?as=iiif\n---\n# The Nez Percé (Nimíipuu)\nThis a sample page for scholarly content with historical context relating to the [Nez Percé](https://en.wikipedia.org/wiki/Nez_Perce), also known as the Nimíipuu.\n## A IIIF Viewer\nA IIIF viewer is a React component that takes a single property, `iiifContent`, which is the URI to the\nIIIF manifest. The component will then fetch the Manifest and render a deep-zoom viewer. The viewer is\nresponsive and will resize to fit the container it is placed in.\n<Viewer iiifContent=\"https://api.dc.library.northwestern.edu/api/v2/works/14a6aa15-9e12-47a7-9617-91f430d4f47b?as=iiif\" />\n## Referenced Items\nThe `<ReferencedItems />` automatically outputs a grid of items that are referenced by the current page.\n<ReferencedItems />\n## Leveraging Metadata\n### Using the Viewer\nThe `<Viewer />` component supports IIIF Collections. This allows you to reference a IIIF Collection that is generated by Canopy IIIF. In this example, we are referencing a Collection of items that have a `date` of `1905`.\n<Viewer iiifContent=\"/api/facet/date/1905.json\" />\n### Using the Slider\nAlternatively, you can use the `<Slider />` component to render a carousel of items that link to the local relative `/work` pages representing the Manifests.\n<Slider iiifContent=\"/api/facet/date/1905.json\" />"}},"/customize-the-search-index":{"title":"Customize the Search Index","data":{"":"Under the hood Canopy uses\nFlexSearch to power the search\nindex. FlexSearch is a full-text, memory efficient, search library that is\nfast and easy to use. It is also highly customizable. Canopy provides a\nnumber of ways to customize the search index.\nThis guide assumes you have a Canopy IIIF project. See the Create a\nProject guide to get started.","use-case#Use Case":"You'd like to use Canopy IIIF to create a digital exhibit featuring Arabic manuscripts. For example, this NUL Collection of Arabic Manuscripts from West Africa. The IIIF Manifest data contains both Arabic and English text in its label and summary properties.You'd like to customize search configuration in the following three ways:\nSupport the \"Arabic\" character set in Search (in addition to default \"Latin\").\nInclude text from a Manifest's summary values in search results.\nInclude additional Manifest metadata in search results. In our example Manifests we include \"Contributor\" and \"Alternate Title\" as metadata items and would like to surface these in search results.","implementation#Implementation":"","support-additional-language-encodings#Support additional language encoding(s)":"Open /config/options.json and add support for Arabic text.\nAdd \"arabic:extra\" to the search.flexSearch.charset property.\n{\n ...\n \"search\": {\n \"enabled\": true,\n \"flexSearch\": {\n \"bidirectional\": false,\n \"charset\": [\"latin:extra\", \"arabic:extra\"],\n \"document\": {\n \"index\": [\n {\n \"bidirectional\": true,\n \"depth\": 3,\n \"field\": \"label\",\n \"resolution\": 9,\n \"tokenize\": \"full\"\n },\n {\n \"field\": \"metadata\",\n \"resolution\": 2\n },\n {\n \"field\": \"summary\",\n \"resolution\": 1\n }\n ]\n },\n \"optimize\": true,\n \"tokenize\": \"strict\"\n },\n \"index\": {\n \"metadata\": {\n \"all\": false,\n \"enabled\": true\n },\n \"summary\": {\n \"enabled\": true\n }\n }\n },\n ...\n}\nRestart your development server to see the changes.","include-summary-in-search-results#Include summary in search results":"Canopy IIIF's default search configuration, indexes\nonly a Work Manifest's label and metadata values.\nTo include a Manifest's summary value in search results, you'll need to update the search.index.summary.enabled property.\nIn /config/options.json set the value of search.index.summary.enabled to be true.\n{\n ...\n \"search\": {\n \"enabled\": true,\n \"flexSearch\": {\n \"bidirectional\": false,\n \"charset\": [\"latin:extra\", \"arabic:extra\"],\n \"document\": {\n \"index\": [\n {\n \"bidirectional\": true,\n \"depth\": 3,\n \"field\": \"label\",\n \"resolution\": 9,\n \"tokenize\": \"full\"\n },\n {\n \"field\": \"metadata\",\n \"resolution\": 2\n },\n {\n \"field\": \"summary\",\n \"resolution\": 1\n }\n ]\n },\n \"optimize\": true,\n \"tokenize\": \"strict\"\n },\n \"index\": {\n \"metadata\": {\n \"all\": false,\n \"enabled\": true\n },\n \"summary\": {\n \"enabled\": true\n }\n }\n },\n ...\n}\nRestart your development server to see the changes.","include-custom-metadata-in-search-results#Include custom metadata in search results":"In /config.canopy.json, you can index all, part, or none of a Work Manifest's metadata values.\nBy default, Canopy IIIF indexes all metadata fields.\nIn this example, we only want to target specific metadata fields, \"Date\", \"Subject\",\n\"Contributor\", and \"Alternate Title\".\nOpen /config/canopy.json\nDepending on which environment you'd like to target (dev or prod) provide an array of metadata fields you'd like exposed in search results. (In the example Manifest we include \"Date\", \"Subject\", \"Contributor\" and \"Alternate Title\" as metadata items)\nIn this example, we'll update the dev configuration:\n{\n \"dev\": {\n \"collection\": \"https://api.dc.library.northwestern.edu/api/v2/search?query=collection.id:%2259ec43f9-a96c-4314-9b44-9923790b371c%22&as=iiif\",\n \"featured\": [\n \"https://api.dc.library.northwestern.edu/api/v2/works/2ca1b09b-cbad-43dd-82bf-a7fa807269d8?as=iiif\"\n ],\n \"label\": {\n \"none\": [\"Western Africa Manuscripts\"]\n },\n \"metadata\": [\"Date\", \"Subject\", \"Contributor\", \"Alternate Title\"],\n \"summary\": {\n \"none\": [\"Brief description of the site and its contents.\"]\n }\n },\n \"prod\": {...}\n}\nRestart your development server to see the changes.\nPro tip: To visually confirm text being indexed for search, open the file\n.canopy/index.json and verify your custom data is being indexed.","validate-search-customizations#Validate search customizations":"Verify your customizations are working by searching for:\nAn Arabic phrase (e.g. \"مجموع الفوائد.\")\nA Manifest summary value (e.g. \"Fāʼidah of Prophet Yūsuf on gaining people's love and respect.\")\nA Manifest metadata value (e.g. \"Falke\", or \"Prophet Yūsuf\")"}},"/deploy-to-github-pages":{"title":"Deploy to GitHub Pages","data":{"":"Canopy IIIF is designed to be deployed as a statically generated website.\nStatic sites are a great option for many projects, as they are fast, secure,\nand easy to deploy and maintain. This guide will walk you through the\nprocess of deploying project as a static website using GitHub Pages using\nthe incorporated GitHub Actions in Canopy to automate the build and\ndeployment process.\nRequires a GitHub account.","use-case#Use Case":"You are a graduate student researching the American painter Beauford Delaney\nand you would like to easily create and host a digital scholarship project\nanalyzing items in your institution's digital collections.","implementation#Implementation":"","create-your-template-repository#Create your template repository":"Click the \"Use this template\" button at the top of the Canopy IIIF\nrepository to create a new repository based on this template. Select \"Create a new repository\" and choose the GitHub\naccount or organization you want to copy the contents to from the Owner dropdown. Choose a name for your new repository\nand entire it in the Repository name field. Unless you have a paid GitHub account, select Public. Click the\n\"Create repository\" button to create the new repository.","adjust-repository-settings#Adjust repository settings":"Once the repository is created, press the Settings button and Actions → General under Code and automation.Then select Read and write permissions under Workflow permissions and press Save. This allows the GitHub\nworkflow to run and the static Canopy output to be deployed to a new branch.","modify-environmmental-variables#Modify environmmental variables":"Next, modify the .github/workflows/gh-pages.deploy.yml file in repository for the NEXT_PUBLIC_URL and NEXT_PUBLIC_BASE_PATH\nto be relative to the new repository. After changing these settings, commit your change and trigger the action to run.\nOnce the action has run, the action indicator should change from a red X to a green check mark and a new branch called\ngh-pages will be created.","watch-the-build#Watch the build":"Once the gh-pages branch exists and the action indicator is a green check mark, again press the Settings button.\nUnder Code and automation, click Pages and select gh-pages from the Branch dropdown under Build and deployment\nand click *Save.","validate-the-url#Validate the URL":"Now your Canopy site will be active at a URL derived from values you defined in the NEXT_PUBLIC_URL and NEXT_PUBLIC_BASE_PATH settings.i.e. https://[NEXT_PUBLIC_URL]/[NEXT_PUBLIC_BASE_PATH]You can also view your live domain in Github by clicking the top Settings button, and then under Code and automation -> Pages."}},"/deploy-to-vercel":{"title":"Deploy to Vercel","data":{"":"Canopy can be deployed to a Next.js managed hosting\nservice.\nDoing so will allow you to take advantage of server-side components (e.g.,\nAPI routing). This guide will walk you through the process of\ndeploying Canopy to Vercel.\nRequires a Vercel account.","use-case#Use Case":"You are developer tasked with using Canopy and leveraging API routing to serve the /api/search\nendpoint as IIIF for Collections-as-data purposes. As part of this requirement, you need to deploy\nthe application to a managed hosting service and have selected Vercel for its Next.js compatibility.","implementation#Implementation":"","import-the-repository#Import the Repository":"After you've logged in to Vercel, click the Start deploying button. Then, from the Let's Build Something New\nscreen, click the Import button next to the repository you've created.","configure#Configure":"Next, give your repository a name a press Deploy. Vercel will then build and deploy your application and make it available at ${YOUR-PROJECT-NAME}.vercel.app.","environment-variables#Environment Variables":"Finally, edit the .env in your repository on Github and make sure that the NEXT_PUBLIC_URL variable and\nNEXT_PUBLIC_BASE_PATH variables match your project in Vercel. By default, the NEXT_PUBLIC_URL variable should be\nsimilar to your project name and you should not have to modify NEXT_PUBLIC_BASE_PATH."}},"/development":{"title":"Development","data":{"environment#Environment":"When you are ready to deploy your site, you will need to modify environment variables to reflect how your site is hosted.","updating#Updating":"Edit the .env file at the root of the working directory to reflect your site's configuration.The NEXT_PUBLIC_URL variable is used to declare the base URL of your site. This base url is critical to routing of works in Canopy and wiring up canonical links in SEO.If you plan to host your site in a subdirectory or subdomain, you will need to set the NEXT_PUBLIC_BASE_PATHto reflect this. For example, if your site is hosted at https://example.org/exhibit, you would set the value to /canopy.\nNEXT_PUBLIC_URL = \"https://canopy-iiif.vercel.app\"\nNEXT_PUBLIC_BASE_PATH = \"\"","avoid-code-conflicts#Avoid Code Conflicts":"To avoid potential code conflicts on future release updates, it is advised not to update the following integrated Canopy pages in the Next.js pages directory.\nNote: Future considerations will be delivered upon for updating content within these pages."}},"/enable-a-map-with-navPlace":{"title":"Enable a Map with navPlace Properties","data":{"":"Canopy IIIF allows users to explore the underlying collection through an\ninteractive map. When activated, this component displays a map featuring\nmarkers representing each point Feature within the navPlace properties found throughout the Manifests of the overarching collection. This guide will walk\nyou through the process of enabling the Map component in Canopy IIIF.\nThe Map component is populated by Manifests with a navPlace property. For more information, see the IIIF navPlace extension specification.","use-case#Use Case":"You are a digital scholar with geospatial point data and you would like to enable\nthe Map component to create additional access points for Manifests in your IIIF Collection.You would like to customize the map component by:\nusing a topographic map as the default tile layer with a street map as an optional additional layer\nusing a custom icon for the markers","implementation#Implementation":"","add-navplace-properties-to-the-manifests-in-your-collection#Add navPlace Properties to the Manifests in your collection":"Currently, Canopy only leverages the navPlace properties found in manifests with geometry\nproperties of type Point.\nCanopy IIIF's map component, is driven by navPlace properties found in the manifests of the\noverarching collection.Before the map component can be enabled, you must add navPlace properties to the manifests in your collection.\nIn accordance with the specification, include the navPlace extension to the Linked Data Context of each manifest by adding\nhttps://iiif.io/api/extension/navplace/context.json to the @context property before\nhttp://iiif.io/api/presentation/3/context.json.\n{\n \"@context\": [\n \"https://iiif.io/api/extension/navplace/context.json\",\n \"http://iiif.io/api/presentation/3/context.json\"\n ],\n ...\n}\nAdd the navPlace property to each manifest with a FeatureCollection and at least one Feature of type Point.\nEach Feature should include a label property that will be used as the text for the corresponding marker. The\ncoordinates array should include the longitude and latitude coordinates of the Feature with the longitude\nappearing first.\n{\n ...\n \"navPlace\": {\n \"id\": \"https://digital.lib.utk.edu/notdereferenceable/featurecollection//1\",\n \"type\": \"FeatureCollection\",\n \"features\": [\n {\n \"id\": \"https://digital.lib.utk.edu/notdereferenceable/feature/1\",\n \"type\": \"Feature\",\n \"properties\": {\n \"label\": {\n \"en\": [\n \"Interview with Seemona and Daniel Whaley, 2019-09-20 -- Discussion of Gatlinburg, TN\"\n ]\n }\n },\n \"geometry\": {\n \"type\": \"Point\",\n \"coordinates\": [\n -83.51189,\n 35.71453\n ]\n }\n }\n ]\n }\n ...\n}","enable-the-map-component#Enable the Map Component":"Enable the map component by changing map.enabled to true in your config/options.json file.\n{\n ...\n \"map\": {\n \"defaultBounds\": [[51.505, -0.09]],\n \"enabled\": true,\n \"icon\": {\n \"iconUrl\": \"images/marker-icon.png\",\n \"iconSize\": [24, 36],\n \"iconAnchor\": [12, 36]\n }\n },\n ...\n}","modify-tile-layers#Modify Tile Layers":"Modify the tileLayers property by moving the OpenTopMap layer to the top of the array.\nDelete all tileLayers after the OpenStreetMap layer.\n{\n ...\n \"map\": {\n \"defaultBounds\": [[51.505, -0.09]],\n \"enabled\": true,\n \"icon\": {\n \"iconUrl\": \"images/marker-icon.png\",\n \"iconSize\": [24, 36],\n \"iconAnchor\": [12, 36]\n }\n \"tileLayers\": [\n {\n \"name\": \"OpenTopoMap\",\n \"url\": \"https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png\",\n \"attribution\": \"© <a href=\\\"https://www.openstreetmap.org/copyright\\\">OpenStreetMap</a> contributors\"\n },\n {\n \"name\": \"OpenStreetMap\",\n \"url\": \"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\",\n \"attribution\": \"© <a href=\\\"https://www.openstreetmap.org/copyright\\\">OpenStreetMap</a> contributors\"\n }\n ]\n },\n ...\n}","modify-the-marker-icon#Modify the Marker Icon":"Replace the iconUrl property with the path to your custom icon. This can be a remote resource that is served from\nanother website or a local resource that is served from your public/images directory in Canopy.\nIf the size of your icon is different than the default size of 24px by 36px, modify the iconSize.\nSimilarly, if the anchor point of your icon is different than the default anchor point of 12px by 36px, modify\nthe point of the icon which will correspond to marker's location in iconAnchor.\n{\n ...\n \"map\": {\n \"defaultBounds\": [[51.505, -0.09]],\n \"enabled\": true,\n \"icon\": {\n \"iconUrl\": \"https://raw.githubusercontent.com/pointhi/leaflet-color-markers/master/img/marker-icon-violet.png\",\n \"iconSize\": [24, 36],\n \"iconAnchor\": [12, 36]\n }\n },\n ...\n}","add-the-map-route-to-your-navigation#Add the Map Route to your Navigation":"Add the map route to your content/_meta.json file so that it appears in the Navigation bar.\n[\n {\n \"path\": \"/works\",\n \"text\": \"Works\"\n },\n {\n \"path\": \"/metadata\",\n \"text\": \"Metadata\"\n },\n {\n \"path\": \"/map\",\n \"text\": \"Map\"\n },\n {\n \"path\": \"/about\",\n \"text\": \"About\"\n }\n]"}},"/get-started":{"title":"Create a Canopy Project","data":{"":"Have a project in mind? Let's get started! This guide will walk you through\nthe process of creating a basic Canopy IIIF project using a readily provided\nIIIF Collection.","use-case#Use Case":"You are on a team at a university library seeking to create a digital exhibit for a Korean Literary\ncollection in your digital repository that is provided as a IIIF Collection. You want to create\na discovery focused web site that allows users to search and browse the collection.","implementation#Implementation":"","create-a-project#Create a project":"","using-a-github-template#Using a Github template":"This method requires a GitHub account; however, it\nshould be easier to follow for users of Canopy without a developer\nenvironment.\nNavigate to the Canopy IIIF repository in GitHub\nClick the \"Use this template\" button\nClick the \"Create a new repository\" button\nSelect the account you want to own the repository\nEnter a repository name and optional description\nClick the \"Create repository\" button","using-git-clone#Using git clone":"In your terminal, navigate to the a working directory where you want to create your project\nClone the canopy-iiif/canopy-iiif repository OR your Canopy repository instance\ncd ~/Projects\ngit clone git@github.com:canopy-iiif/canopy-iiif.git","install-dependencies#Install dependencies":"Navigate to your new project directory and install dependencies.\ncd canopy-iiif\nnpm install","create-configuration-file#Create configuration file":"Copy the example configuration file and update the prod and dev values with your IIIF Collection URL. See Configuration for detailed documentation.\ncp config/canopy.sample.json config/canopy.json\nIn this example we will use the Korean Literary Collection IIIF Collection URL provided by University of Washington Libraries.\ncollection is the IIIF Collection URI to be used as the root of your Canopy IIIF site\nfeatured array is a list of Manifest URIs that will be promoted thoughout your Canopy IIIF site\nmetadata array is a list of metadata labels that match string values in your Manifest URI metadata entries to be used for discovery purposes\n{\n \"prod\": {\n \"collection\": \"https://digitalcollections.lib.washington.edu/iiif/2/korean/manifest.json\",\n \"featured\": [\n \"https://cdm16786.contentdm.oclc.org/iiif/korean:138/manifest.json\"\n ],\n \"metadata\": [\"Author\", \"Place of Publication\"]\n },\n \"dev\": {\n \"collection\": \"https://digitalcollections.lib.washington.edu/iiif/2/korean/manifest.json\",\n \"featured\": [\n \"https://cdm16786.contentdm.oclc.org/iiif/korean:138/manifest.json\"\n ],\n \"metadata\": [\"Author\", \"Place of Publication\"]\n }\n}\nSee Options for more information regarding configuration.","ready-to-go#Ready to go!":"If you are using GitHub, you can skip this step and run Canopy without a\ndeveloper environment directly using GitHub Pages.\nNow that you have a project and configuration set, you can run Canopy IIIF.\nnpm run dev","build-process#Build process":"The build process may take a few minutes depending on the size of your IIIF Collection and provider response times. A Collection of ~100 items should build in 30 seconds or less.\nBuilding - Canopy retrieves the source IIIF Collection\nCreate Manifest listing - Canopy retrives all IIIF Manifests in the Collection\nCreate facets as IIIF Collections - Canopy anaylzes the Manifests and creates IIIF Collections for each unique metadata label and value\nBuild search entries - Canopy is creates search entries for each Manifest from descriptive metadta\nReady 🚀 - Canopy is ready to go!\nBuilding Canopy from IIIF Collection...\nhttps://digitalcollections.lib.washington.edu/iiif/2/korean/manifest.json\nCreating Manifest listing...\nAggregating 135 Manifest(s) in 14 chunk(s)...\nChunk (1/14)\n✓ https://cdm16786.contentdm.oclc.org/iiif/korean:560/manifest.json ➜ 200\n✓ https://cdm16786.contentdm.oclc.org/iiif/korean:1494/manifest.json ➜ 200\n✓ https://cdm16786.contentdm.oclc.org/iiif/korean:678/manifest.json ➜ 200\n✓ https://cdm16786.contentdm.oclc.org/iiif/korean:983/manifest.json ➜ 200\n✓ https://cdm16786.contentdm.oclc.org/iiif/korean:138/manifest.json ➜ 200\n✓ https://cdm16786.contentdm.oclc.org/iiif/korean:314/manifest.json ➜ 200\n✓ https://cdm16786.contentdm.oclc.org/iiif/korean:1105/manifest.json ➜ 200\n✓ https://cdm16786.contentdm.oclc.org/iiif/korean:498/manifest.json ➜ 200\n✓ https://cdm16786.contentdm.oclc.org/iiif/korean:839/manifest.json ➜ 200\n✓ https://cdm16786.contentdm.oclc.org/iiif/korean:1363/manifest.json ➜ 200\n## build continues...\nChunk (14/14)\n✓ https://cdm16786.contentdm.oclc.org/iiif/korean:28181/manifest.json ➜ 200\n✓ https://cdm16786.contentdm.oclc.org/iiif/korean:27749/manifest.json ➜ 200\n✓ https://cdm16786.contentdm.oclc.org/iiif/korean:28140/manifest.json ➜ 200\n✓ https://cdm16786.contentdm.oclc.org/iiif/korean:28280/manifest.json ➜ 200\n✓ https://cdm16786.contentdm.oclc.org/iiif/korean:27976/manifest.json ➜ 200\n135/135 Manifests(s) retrieved successfully.\nCreating facets as IIIF Collections...\n↓ /api/facet/author/unidentified.json\n↓ /api/facet/author/kim-tong-in.json\n↓ /api/facet/author/chng-chi-yong-chong-chi-yong.json\n↓ /api/facet/author/yi-tae-jun.json\n↓ /api/facet/author/an-hoe-nam.json\n↓ /api/facet/author/im-hak-su.json\n## build continues...\nBuilding search entries...\n...Ready 🚀\n▲ Next.js 13.5.4\n- Local: http://localhost:5001\n- Environments: .env","browse-your-site#Browse your site":"In your browser, navigate to http://localhost:5001 to view your Canopy IIIF site.","home-page#Home page":"Content on the home page is geared towards discovery of your IIIF Collection. The home page will render a hero component for featured Manifests and a slider components for defined metadata labels and their most common values.","search-page#Search page":"All Manifests in your IIIF Collection are now represented as results at the /search route. In addition to full text search, results are filterable by defined metadata labels and available values. In the example Korean Literary Collection, there are 135 items available for search. A query for poems returns 43 results.","work-page#Work page":"All Manifests in your IIIF Collection are now available as statically generated pages with a /work/slug-generated-from-label pattern. Each work represents a single Manifest, its descriptive metadata, and various other IIIF properties. Clover IIIF is the defacto deep-zoom and A/V capable viewer in Canopy IIIF but other IIIF viewers can be easily configured."}},"/guides":{"title":"User Guides","data":{"":"To get started with Canopy IIIF, check out the following guides that provide step-by-step instructions."}},"/":{"title":"Canopy IIIF","data":{"":"{\n \"@context\": \"http://iiif.io/api/presentation/3/context.json\",\n \"id\": \"https://collections.britishart.yale.edu/iiif/collection/paintings_of_francis_danby\",\n \"type\": \"Collection\",\n \"label\": {\n \"en\": [\"Paintings of Francis Danby\"]\n },\n \"items\": [\n {\n \"id\": \"https://manifests.collections.yale.edu/ycba/obj/116\",\n \"type\": \"Manifest\",\n \"label\": {\n \"en\": [\"The Mountain Torrent\"]\n }\n },\n {\n \"id\": \"https://manifests.collections.yale.edu/ycba/obj/38658\",\n \"type\": \"Manifest\",\n \"label\": {\n \"en\": [\"A View across the Artist's Garden from his House at Exmouth, Devonshire\"]\n }\n }\n ]\n}\nWhat is Canopy IIIF?\nCanopy is an open source site generator built with\nIIIF and Next.js. Using a IIIF\nCollection as a data\nsource, Canopy IIIF generates a browseable and searchable static site and\nprovides a straightforward solution using Markdown for adding scholary context\nto the resources that are referenced.\nScholarship\nResearchers can curate and aggregate content from various providers and\nadd their own context to resources\nExhibits\nLibraries, museums, and archives can create digital exhibits from the\nworks in their repositories\nMinimal infrastructure\nSmall-scale, headless infrastructure for institutions with limited\nresources to build their own digital collections application\nFeatures\nCanopy IIIF extends the features of Next.js to produce a full-text search\nindex using FlexSearch, provides support for both IIIF Presentation API\n2.x and 3.0 specifications, and automatically generates facets based on\nthe curated metadata labels and values found within Manifests. The\nplatform’s API routes return IIIF collections and allow for users to\nreference IIIF resources internally and externally. In addition to these\nfeatures, the product roadmap and planned features include expanding\ninternationalization support, generating interactive maps and timelines\nbased on the presence of navPlace and navDate properties, and leveraging\nIIIF Content State and Change Discovery APIs."}},"/configuration/theme":{"title":"Theme","data":{"":"The default theme for users can be set via config/options.json. This feature sets the initial theme for users as light, dark, or system. The Toggle Theme button can also be enabled or disabled here.Note: Theme settings are stored in the users local browser storage. Setting the theme will only affect new users to your site. It will not change the default theme for users who have already visited.","properties#Properties":"Property\tType\tDescription\tdefaultTheme\tenum\tSets the default theme for users.\ttoggleEnabled\tboolean\tEnables or disables the Toggle Theme button in the footer.","defaulttheme#defaultTheme":"Sets the default theme for users. The default value is light.\n\"defaultTheme\": \"light\" // \"light\" | \"dark\" | \"system\"","toggleenabled#toggleEnabled":"Boolean value that enables or disables the Toggle Theme button in the footer. The default value is true.\n\"toggleEnabled\": true","example-theme-configuration#Example Theme Configuration":"Example of the theme configuration in config/options.json file with a defaultTheme of light and the toggleEnabled set to false.\n{\n \"theme\": {\n \"defaultTheme\": \"light\",\n \"toggleEnabled\": false\n }\n}"}}} \ No newline at end of file +{"/about":{"title":"About","data":{"":"The project name \"Canopy\" is inspired by the tree motiff in the presentation, A Tree's Strength Is Its Trunk: IIIF as Central Operational Infrastructure, delivered by María Matienzo (formerly Stanford University Libraries) and Esmé Cowles (Princeton University Library) at the CNI Fall 2020 Virtual Membership Meeting. Following this infrastructure vision, Canopy was created as a front end solution for rapid and easy creation of static sites using a IIIF Collection and its Manifests.Canopy IIIF is created using Next.js 13, with a FlexSearch index for text search, IIIF Presentation API 3.0 delivering resource content, Radix UI and Stitches used throughout for the user interface, and various community modules from IIIF Commons and Samvera supporting the work presentation and resource delivery.","origination#Origination":"Canopy was initially conceived at the University of Tennessee Libraries in the Summer '21 as a statically generated web application for the Rising from the Ashes: The Chimney Tops 2 Wildfires Oral History Project. This project was generated from a single IIIF Collection; however, the components delivering the user interface became heavily tailored to the source material of the Rising from the Ashes project, thus limiting the reuse of the codebase for other collections. The original Canopy featured a heavily integrated IIIF A/V Viewer designed to deliver Sound and Video resources. This A/V viewer would eventually evolve into a partial inspiration for Clover IIIF.Canopy was reimagined as Canopy IIIF in early Winter '22 with the primary focus of the project maintaining the the ability to build an interoperable site from any IIIF Collection following IIIF Presentation API 2.0 and 3.0 specifications.","contributors#Contributors":"Creators\nMat Jordan - Northwestern University\nLibraries, formerly University of Tennessee Libraries\nMark Baggett - University of Tennessee\nLibraries\nAdam Arling - Northwestern University\nLibraries\nAdditional Credits\nEmily Gore - University of Georgia Libraries, formerly University of Tennessee\nLibraries\nDavid Schober - Northwestern University Libraries\nMartim Passos - Instituto Moreira Salles\nTarje Lavik - University of Bergen Library"}},"/configuration":{"title":"Configuration","data":{"":"The Canopy IIIF build process will read from a custom configuration file at config/canopy.json if it exists. If this configuration file does not exist, the default configuration config/.default/canopy.default.json will be used as a fallback for demonstration purposes.\nSee the Create a Project guide for a step-by-step guide\nillustrating the setup of Canopy IIIF project.","configuration-options#Configuration Options":"Canopy IIIF is a highly configurable application that can be tailored to the needs of a project. Canopy configurations fallback to default options if not customized.","basic-configuration#Basic Configuration":"A custom Canopy configuration file can be created with the following steps:\nFind your config/ directory\nCopy canopy.sample.json to canopy.json\nMake updates to both the prod and dev configurations","properties#Properties":"Property\tType\tDescription\tcollection\tstring\tIIIF Collection URI\tlabel\tlabel \tIIIF Presentation 3.0 label property\tsummary\tsummary\tIIIF Presentation 3.0 summary property\tfeatured\tArray<string>\tArray of IIIF Manifest URIs\tmetadata\tArray<string>\tArray of metadata labels","collection#collection":"The collection property is required and must be the id of the referenced source IIIF Collection manifest. Collections referencing other Collections in their items property are not currently supported.\n\"collection\": \"https://iiif.bodleian.ox.ac.uk/iiif/collection/hobhouse\"","label-and-summary#label and summary":"The Canopy IIIF site title and description are respectively the label and summary IIIF Presentation API properties of the set IIIF Collection resource. You can optionally override this by providing a valid Presentation 3.0 label and/or summary property. These values are transformed to meta elements in the <head> of the HTML document.\n\"label\": { \"none\": [\"Hobhouse\"] },\n\"summary\": { \"none\": [\"Manuscripts from the archive of Emily Hobhouse.\"] }","featured#featured":"You can inform Canopy IIIF of featured Manifests by providing an array of ids. These must be within the referenced collection resource and the Manifest URIs must be an exact match. These Manifests will render throughout the interface in featured components.Warning: In the current pre-release, featured Manifests must have an Image body on the first Canvas.\n\"featured\": [\n \"https://iiif.bodleian.ox.ac.uk/iiif/manifest/8da97e8c-4e12-457d-aad8-3327b3aec183.json\",\n \"https://iiif.bodleian.ox.ac.uk/iiif/manifest/2968d5c7-3718-44ef-92ea-ee4cc58cc677.json\"\n]","metadata#metadata":"Curating Metadata allows implementers of Canopy IIIF to select metadata fields that provide additional access points to end users. The fields can be specified by listing the labels of each metadata property found in the metadata property of the manifest. Metadata labels that are curated will be automatically included as featured elements on the homepage, the metadata page, linking from works, and as facets on the search page. An optimal case is a label common to all or most manifests with some in diversity of values across those resources.Note: Metadata labels are not yet BCP 47 language code aware; however, aggregation processes will make exact string comparisons regardless of language code.\n\"metadata\": [\"Extent\", \"Title\", \"Date Statement\", \"Language\"]","production-and-development#Production and Development":"Both the prod and dev environments have a configuration. These configurations can match each other; however in some cases, development speed can be aided by targeting a smaller IIIF Collection id as a fixture.","example-configuration#Example Configuration":"The following is an example configuration for the Bodleian Libraries' Emily Hobhouse collection. Two Manifests are featured and four metadata labels are curated.\n{\n \"prod\": {\n \"label\": { \"none\": [\"Hobhouse\"] },\n \"summary\": { \"none\": [\"Manuscripts from the archive of Emily Hobhouse.\"] },\n \"collection\": \"https://iiif.bodleian.ox.ac.uk/iiif/collection/hobhouse\",\n \"featured\": [\n \"https://iiif.bodleian.ox.ac.uk/iiif/manifest/8da97e8c-4e12-457d-aad8-3327b3aec183.json\",\n \"https://iiif.bodleian.ox.ac.uk/iiif/manifest/2968d5c7-3718-44ef-92ea-ee4cc58cc677.json\"\n ],\n \"metadata\": [\"Extent\", \"Title\", \"Date Statement\", \"Language\"]\n },\n \"dev\": {\n \"label\": { \"none\": [\"Hobhouse\"] },\n \"summary\": { \"none\": [\"Manuscripts from the archive of Emily Hobhouse.\"] },\n \"collection\": \"https://iiif.bodleian.ox.ac.uk/iiif/collection/hobhouse\",\n \"featured\": [\n \"https://iiif.bodleian.ox.ac.uk/iiif/manifest/8da97e8c-4e12-457d-aad8-3327b3aec183.json\",\n \"https://iiif.bodleian.ox.ac.uk/iiif/manifest/2968d5c7-3718-44ef-92ea-ee4cc58cc677.json\"\n ],\n \"metadata\": [\"Extent\", \"Title\", \"Date Statement\", \"Language\"]\n }\n}"}},"/configuration/locale":{"title":"Locale Preferences","data":{"":"Canopy IIIF supports locale preferences for user interface language.","properties#Properties":"For each Locale, the following properties are required:\nProperty\tType\tDescription\tconfig\tstring\tPath to the locale configuration file.\tlabel\tstring\tLabel for the locale.\tlang\tstring\tBCP 47 language code for the locale.\t\n\"locales\": [\n {\n \"config\": \"locales/en.json\",\n \"label\": \"English\",\n \"lang\": \"en\"\n }\n]","customizing-a-locale#Customizing a Locale":"User interface language strings are set through a locale configuration file located in the config/locales directory. Persons customizing a Canopy instance can add new language configurations to support their preferred locales. We welcome all pull requests to add new locales to the Canopy IIIF project.English configuration is predefined and found at config/locales/en.json\n{\n \"footerSourceCollection\": \"Source Collection\",\n \"footerToggleTheme\": \"Toggle Theme\",\n \"homepageHighlightedWorks\": \"Highlighted Works\",\n \"searchButton\": \"Search\",\n \"searchResults\": \"Results\",\n \"searchFilter\": \"Filter\",\n \"searchFilterAny\": \"Any\",\n \"searchFilterClear\": \"Clear All\",\n \"searchFilterClose\": \"Close\",\n \"searchFilterSubmit\": \"View Results\"\n}","multiple-locales#Multiple Locales":"If more than one locale is defined in the config/options.json, a select element will render in the header allowing users to toggle the defined languages. In addition, Canopy will attempt to align the language set by the user's browser with the available options. As a fallback, the first locale defined in the array will be set.As an example, if a visitor with en-US visited a Canopy instance that included both no and en as language options, the en locale configuration would be the default locale. Whereas, if a user visited this same instance with fr as their browser language, the default locale would be the no configuration.\n\"locales\": [\n {\n \"config\": \"locales/no.json\",\n \"label\": \"Norsk\",\n \"lang\": \"no\"\n },\n {\n \"config\": \"locales/en.json\",\n \"label\": \"English\",\n \"lang\": \"en\"\n }\n]"}},"/configuration/map":{"title":"Map","data":{"":"A map route can be enabled to provide geographic discovery of works via config/options.json. This feature builds markers off of geographic point features found in navPlace properties at the Manifest level. For implementation, Canopy IIIF uses Leaflet to render the map.Note: Currently, only navPlace properties found at the Manifest level are displayed. Also, only Features of type Point are displayed.\nSee the Enable a Map with navPlace for a\nstep-by-step guide.","properties#Properties":"Property\tType\tDescription\tenabled\tboolean\tBoolean value to enable or disable the /map route. The default value is false.\tdefaultBounds\tArray\tThe defaultBounds property defines the coordinates of the initial view of the map.\ticon\tObject\tThe icon property defines the icon used to represent each marker on the map.\ttileLayers\tArray\tThe map's tile layers are also configured here, giving users the ability to choose and customize layers for their project.","enabled#enabled":"Boolean value to enable or disable the /map route. The default value is false. To enable this option, set the option to true.\n\"enabled\": true","defaultbounds#defaultBounds":"The defaultBounds property defines the coordinates of the initial view of the map. This property is an array of\narrays of longitude and latitude coordinates. Unless there are no markers found within the manifests of the\noverarching collection, this property will be ignored.\n\"defaultBounds\": [[51.505, -0.09]]","icon#icon":"The icon property defines the icon used to represent each marker on the map. The iconUrl property is the path to\nthe image file used as the icon. The iconSize property is an array of the width and height of the icon in pixels.\nThe iconAnchor property is an array of the x and y coordinates of the icon's anchor point in pixels. These values\nare used to position the icon relative to its marker's coordinates.\n\"icon\": {\n \"iconUrl\": \"images/marker-icon.png\",\n \"iconSize\": [24, 36],\n \"iconAnchor\": [12, 36]\n}","tilelayers#tileLayers":"The map's tile layers are also configured here, giving users the ability to choose and customize layers for their project. Additional services, such as MapBox, can be easily integrated following this pattern. Each tile layer defined here will appear as an option in the layer control of the map. The name property defines the text next to the radio button. The url property is the link to the tile layer. Finally, the attribution property defines the text that appears at the bottom of the map in case the tile layer requires any specific attribution on use. The first tile layer in the array will be used as the default map.\n\"tileLayers\": [\n {\n \"name\": \"OpenStreetMap\",\n \"url\": \"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\",\n \"attribution\": \"© OpenStreetMap contributors\"\n },\n {\n \"name\": \"OpenTopoMap\",\n \"url\": \"https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png\",\n \"attribution\": \"© OpenStreetMap contributors\"\n }\n]","example-map-configuration#Example Map Configuration":"Example of the map configuration in config/options.json file with a map enabled:\n{\n \"map\": {\n \"defaultBounds\": [[51.505, -0.09]],\n \"enabled\": true,\n \"icon\": {\n \"iconUrl\": \"images/marker-icon.png\",\n \"iconSize\": [24, 36],\n \"iconAnchor\": [12, 36]\n },\n \"tileLayers\": [\n {\n \"name\": \"OpenStreetMap\",\n \"url\": \"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\",\n \"attribution\": \"© <a href=\\\"https://www.openstreetmap.org/copyright\\\">OpenStreetMap</a> contributors\"\n }\n ]\n }\n}"}},"/configuration/search":{"title":"Search","data":{"":"Canopy IIIF utilizes FlexSearch for fast in-memory indexing and provides options for users to customize their search experience. By default Canopy will index Manifest all label and any defined metadata properties. Users can optionally index the summary property.\nSee the Customize the Search Index for a\nstep-by-step guide.","properties#Properties":"Property\tType\tDescription\tenabled\tboolean\tWhether or not to enable search.\tflexSearch\tObject\tFlexSearch configuration options.\tindex\tObject\tIndexing option for Manifests.","enabled#enabled":"Boolean value to enable or disable search indexing. Default is true.\n\"enabled\": true","flexsearch#flexSearch":"Users can customize their FlexSearch configuration using search.flexSearch to fit around the source Collection and its Manifest label, metadata, and summary properties. Customizations range from defining language-specific options such as charset and stemmer, as well as scoring options like resolution and depth.\n\"flexSearch\": {\n \"charset\": \"latin:extra\",\n \"optimize\": true,\n \"tokenize\": \"strict\",\n \"bidirectional\": false,\n \"document\": {\n \"index\": [\n {\n \"field\": \"label\",\n \"tokenize\": \"full\",\n \"resolution\": 9,\n \"depth\": 3,\n \"bidirectional\": true\n },\n {\n \"field\": \"metadata\",\n \"resolution\": 2\n },\n {\n \"field\": \"summary\",\n \"resolution\": 1\n }\n ]\n }\n }","index#index":"Implementers can define the properties of their manifests that are indexed. Canopy IIIF indexes the label property on the Manifest by default. Users can also index the metadata and summary properties.The metadata property is indexed by default for configured metadata labels. Furthermore, all metadata values may be indexed OR you may specify only the properties that are specified in config/canopy.json by modifying search.index.metadata.all.The summary property is not indexed by default. To enable indexing of the summary property, set search.index.summary.enabled to true.\n\"index\": {\n \"metadata\": {\n \"enabled\": true,\n \"all\": false\n },\n \"summary\": {\n \"enabled\": false\n }\n}","default-search-configuration#Default Search Configuration":"\"search\": {\n \"enabled\": true,\n \"flexSearch\": {\n \"charset\": \"latin:extra\",\n \"optimize\": true,\n \"tokenize\": \"strict\",\n \"bidirectional\": false,\n \"document\": {\n \"index\": [\n {\n \"field\": \"label\",\n \"tokenize\": \"full\",\n \"resolution\": 9,\n \"depth\": 3,\n \"bidirectional\": true\n },\n {\n \"field\": \"metadata\",\n \"resolution\": 2\n },\n {\n \"field\": \"summary\",\n \"resolution\": 1\n }\n ]\n }\n },\n \"index\": {\n \"metadata\": {\n \"enabled\": true,\n \"all\": false\n },\n \"summary\": {\n \"enabled\": false\n }\n }\n}"}},"/content":{"title":"Content","data":{"":"Canopy allows for easy creation of contextual content to support and reference the automatically generated content in a IIIF Collection. For the purpose of easy content generation Canopy utilizes MDX which \"allows you to use JSX in your markdown content.\"\nSee the Creating Markdown Content guide for a\nstep-by-step guide illustrating basic creation of new content.","markdown-and-components#Markdown and Components":"Content is edited in the /content directory at the root of your Canopy IIIF project using .mdx files. In addition to the standard Markdown elements, Canopy IIIF provides a number of custom components that can be used to enhance the content of your site. These components are designed to be used in conjunction with Markdown to create a variety of content.","example-content#Example Content":"Content page with formatted Markdown elements, front matter, and an integrated <Viewer /> component to output a IIIF Viewer for a provided Manifest.","sample-mdx#Sample MDX":"---\ntitle: The Nez Percé (Nimíipuu)\nnavigation: \"about\"\n---\n# The Nez Percé (Nimíipuu)\nThis a sample page for scholarly content with historical context relating to the [Nez Percé](https://en.wikipedia.org/wiki/Nez_Perce), also known as the Nimíipuu.\n## A IIIF Viewer\nThe `<Viewer />` is a React component that takes a single property, `iiifContent`, which is the URI to the\nIIIF manifest. The component will then fetch the Manifest and render a deep-zoom viewer. The viewer is\nresponsive and will resize to fit the container it is placed in. These Manifests can be part of the Canopy\nsource Collection but are not limited to it.\n<Viewer iiifContent=\"https://api.dc.library.northwestern.edu/api/v2/works/14a6aa15-9e12-47a7-9617-91f430d4f47b?as=iiif\" />","sample-output#Sample Output":""}},"/content/card":{"title":"Card","data":{"":"Implementers using Canopy IIIF can directly reference a single IIIF Manifest by using the Card component. The Card will render an HTML figure, the thumbnail and a figcaption containing the label of the Manifest. Use rendered figure will link to /work page for the relative Manifest.","properties#Properties":"Property\tType\tRequired\tDescription\tiiifContent\tstring\ttrue\tManifest URI to be rendered.\t\nThe referenced Manifest must be part of the IIIF Collection used in your Canopy project.","usage#Usage":"<Card iiifContent=\"https://manifests.collections.yale.edu/ycba/obj/702\" />"}},"/content/markdown":{"title":"Markdown","data":{"":"Canopy IIIF content pages are authored using Markdown in .mdx files.","elements#Elements":"Common Markdown elements are supported for use in Canopy IIIF content. Canopy will automatically transform content created in Markdown to HTML.\n# Iranian Cinema\n## Overview\nIranian cinema, also known as Persian cinema, stands out for its unique blend of artistry, storytelling, and cultural representation. It has gained significant international acclaim, especially for its poetic narrative style and sociocultural themes. Iranian cinema is a vibrant and influential part of the global film landscape, known for its poignant storytelling, artistic innovation, and cultural depth.\n## Characteristics\n- **Humanistic Approach**: Many films focus on everyday life and human relationships, reflecting broader societal issues.\n- **Artistic Storytelling**: Iranian cinema is renowned for its poetic, metaphorical narrative style.\n- **Minimalism**: There's often an emphasis on simplicity in both visual and narrative elements.\n## International Recognition\nIranian films have been celebrated at major international film festivals, including Cannes, Venice, and Berlin. Numerous awards have been won, highlighting the global impact of Iranian cinematic art.","front-matter#Front Matter":"At the top of each Markdown file, you can add front matter to provide additional information about the page. Front matter is written in YAML, and must be surrounded by --- on either side.\n---\ntitle: \"Title in Front Matter\"\n---","content-pages#Content Pages":"All new content pages created in the content directory can have the following front matter:","title#title":"The title of the page. This will be used in the HTML <title> and associated <meta> tags.","navigation#navigation":"The navigation menu for the page. This should be the relative directory path for the page. For example, if the page is in content/correspondence/, the navigation should be correspondence.","referencedmanifests#referencedManifests":"A list of IIIF Manifests URIs that are referenced in the content of the page. These Manifests MUST be a part of source IIIF Collection used for your Canopy project. These will create a link between the /work page and the current content page.\n---\ntitle: \"January 1955 Correspondence\"\nnavigation: \"correspondence\"\nreferencedManifests:\n - https://api.dc.library.northwestern.edu/api/v2/works/46de2c91-3a29-4525-939e-ee17073f3a7e?as=iiif\n - https://api.dc.library.northwestern.edu/api/v2/works/bb968afb-7857-46bd-9392-d8617a93cc9f?as=iiif\n - https://api.dc.library.northwestern.edu/api/v2/works/14b8212b-7c49-431b-ad04-e4cd5cce6416?as=iiif\n---","home-page#Home Page":"The home page at content/index.mdx is a special content page with distinct front matter keys in addition to title.","showhero#showHero":"A boolean value that determines whether or not the hero image for featued Manifests should be shown on the home page. This renders above the Markdown content.","showhighlighted#showHighlighted":"A boolean value that determines whether or metadata sliders for highlighted items should be shown on the home page. This renders below the Markdown content if showHero is true\n---\ntitle: Amanda Ira Aldridge Correspondences\nshowHero: true\nshowHighlighted: true\n---"}},"/content/navigation":{"title":"Navigation","data":{"":"Navigation is configured from _meta.json files located in /content.","primary-navigation#Primary Navigation":"Canopy IIIF creates it's primary navigation at build time from /content/_meta_.json. Each link will have a path and text key. A path value will resolve to a file or directory under /content or /src/pages. The text key will be what's displayed in the navigation bar. The order of the links in the array will be the order they appear in the navigation.\n[\n {\n \"path\": \"/works\",\n \"text\": \"Works\"\n },\n {\n \"path\": \"/metadata\",\n \"text\": \"Metadata\"\n },\n {\n \"path\": \"/about\",\n \"text\": \"About\"\n }\n]\nCanopy IIIF provides the Works and Metadata pages out of the box,\npre-configured. Therefore you will not see markdown files for these pages\nunder the /content directory, though their links will resolve.\nFor a more detailed explanation of how the path value is resolved, see below.\nTechnical explanation: The path value follows the\nNext.js\npages routing convention. The path value /works will map to\n/src/pages/works/index.tsx. The path value/metadata will map to\n/src/pages/metadata.tsx.","custom-content#Custom Content":"Most users will want to add navigation for custom content to their site. For example, a user may want to customize the navigation on the About page to better fit the content of their site or create a brand new page with custom navigation. This is done by creating a markdown file under /content and adding a link to the primary navigation (as seen above).\nFor example, to add a page called Essays to the primary navigation, create a markdown file called index.mdx under /content/essays.\nIf creating a new page, try copying the content from src/pages/about into\nsrc/pages/{your_page_name}. This will give you a good starting point for\nyour new page.","secondary-navigation#Secondary Navigation":"","top-level#Top Level":"Secondary navigation may be defined from within a _meta.json file located within a subdirectory of /content. For example, secondary navigation within About might look like this:\n[\n {\n \"path\": \"/about\",\n \"text\": \"About\"\n },\n {\n \"path\": \"/about/example\",\n \"text\": \"Markdown Example\"\n }\n]\nWhich will render top-level secondary navigation links About and Markdown Example:\nThese About secondary navigation links are wired up to route to the corresponding markdown file. For example, clicking on Markdown Example will route to /content/about/example.Markdown Example must also define a navigation frontmatter property, identifying it's parent. This is used to render the top-level secondary navigation links. For example, the Markdown Example markdown file might look like this:\n---\ntitle: About\nnavigation: \"about\"\n---\nContent goes here","internal-page-navigation#Internal Page Navigation":"Internal page navigation links (ie. \"Use Cases\", \"Features\", and \"Colophon\") are automatically generated for heading level 2 elements (## Heading) in your Markdown content. For example, the About page might look like this:\n# About\nUsing a single [IIIF Presentation Collection](https://iiif.io/api/presentation/3.0/#overview-collection) as a data source, Canopy IIIF (Canopy) generates a browseable, searchable, customizable, and contextually-driven static site using Next.js without duplicating content.\n## Use Cases\nSome content here\n## Features\nSome content here\n## Colophon\nSome content here"}},"/content/referenced-items":{"title":"Referenced Items","data":{"":"The ReferencedItems component is used in conjunection with referencedManifests front matter key to easily render a grid of Card components. The referenced items must be Manifests within the IIIF Collection used in your Canopy project.\nSee Front Matter document for more\ninformation.","usage#Usage":"---\ntitle: \"January 1955 Correspondence\"\nnavigation: \"correspondence\"\nreferencedManifests:\n - https://api.dc.library.northwestern.edu/api/v2/works/46de2c91-3a29-4525-939e-ee17073f3a7e?as=iiif\n - https://api.dc.library.northwestern.edu/api/v2/works/bb968afb-7857-46bd-9392-d8617a93cc9f?as=iiif\n - https://api.dc.library.northwestern.edu/api/v2/works/14b8212b-7c49-431b-ad04-e4cd5cce6416?as=iiif\n---\n<ReferencedItems />"}},"/content/slider":{"title":"Slider","data":{"":"Slider is a component that renders a Collection as a carousel component. Each item in the referenced IIIF Collection is rendered as an HTML figure, the thumbnail and a figcaption containing the label of the Manifest. Use rendered figure will link to /work page for the relative Manifest.","properties#Properties":"Property\tType\tRequired\tDescription\tiiifContent\tstring\ttrue\tIIIF Collection URI to be rendered.\t\nThis resource may OR may not be part of the IIIF Collection used in your Canopy project.\nIf the Collection is generated by Canopy, the homepage routes will automatically link to respective /work pages and /search facets.","usage#Usage":"<Slider iiifContent=\"/api/facet/creator/david-alfaro-siqueiros \" />"}},"/content/viewer":{"title":"Viewer","data":{"":"When creating content for Canopy, you can use the Viewer component to embed a deep-zoom and A/V capable IIIF Viewer into your content. The integrated IIIF Viewer is the Clover IIIF Viewer component","properties#Properties":"Property\tType\tRequired\tDescription\tiiifContent\tstring\ttrue\tIIIF Manifest or Collection URI to be rendered.\t\nThis resource may OR may not be part of the IIIF Collection used in your Canopy project.\nThe Viewer will render both IIIF Manifests and IIIF Collections.","usage#Usage":"<Viewer iiifContent=\"https://manifests.collections.yale.edu/ycba/obj/702\" />"}},"/create-markdown-content":{"title":"Create Markdown Content","data":{"":"Implementers of Canopy IIIF can author contextual content to support\nManifest resources using formatted Markdown files. These files are stored in\nthe /content directory of your project. In doing so, you can add context\nto items in your IIIF Collection and craft a custom experience using\nintegrated components provided by Canopy IIIF.\nThis guide assumes you have a Canopy IIIF project. See the Create a\nProject guide to get started.","use-case#Use Case":"As a digital humanist, you have authored scholarly content for distinct items in a IIIF Collection. Your aim is to publish a digital scholarship project that highlights your context alongside these items.","implementation#Implementation":"","create-a-markdown-file#Create a Markdown file":"In your content directory, find the about subdirectory and create the new file sample.mdx.\nAdd the following barebones Markdown and front matter to your file and save.\n---\ntitle: The Nez Percé (Nimíipuu)\n---\n# The Nez Percé (Nimíipuu)\nThis a sample page for scholarly content with historical context relating to the [Nez Percé](https://en.wikipedia.org/wiki/Nez_Perce), also known as the Nimíipuu.\nYour file is now accessible at the relative route /about/nez-perce. If running in development mode, your file is accessible at http://localhost:5001/about/nez-perce.","update-navigation-menu#Update Navigation Menu":"Add the navigation key to the front matter with the about value. In this example the about navigation menu is defined by the content/about/_meta.json file.\n---\ntitle: The Nez Percé (Nimíipuu)\nnavigation: \"about\"\n---\n# The Nez Percé (Nimíipuu)\nThis a sample page for scholarly content with historical context relating to the [Nez Percé](https://en.wikipedia.org/wiki/Nez_Perce), also known as the Nimíipuu.\nEdit the content/about/_meta.json file and Add the new menu item to the array. Note that the /about/nez-perce path matches the relative path of the Markdown file.\n[\n {\n \"path\": \"/about\",\n \"text\": \"About\"\n },\n {\n \"path\": \"/about/example\",\n \"text\": \"Markdown Example\"\n },\n {\n \"path\": \"/about/nez-perce\",\n \"text\": \"The Nez Percé (Nimíipuu)\"\n }\n]\nYou will see the menu rendered in the <aside> of the page after a browser refresh.","add-a-iiif-viewer#Add a IIIF Viewer":"Canopy IIIF provides a Clover IIIF Viewer component that can be used to display IIIF resources within Markdown.\nAdd a <Viewer /> component to the bottom of our Markdown file and directly reference a IIIF Manifest with the iiifContent property.\n---\ntitle: The Nez Percé (Nimíipuu)\nnavigation: \"about\"\n---\n# The Nez Percé (Nimíipuu)\nThis a sample page for scholarly content with historical context relating to the [Nez Percé](https://en.wikipedia.org/wiki/Nez_Perce), also known as the Nimíipuu.\n## A IIIF Viewer\nThe `<Viewer />` is a React component that takes a single property, `iiifContent`, which is the URI to the\nIIIF manifest. The component will then fetch the Manifest and render a deep-zoom viewer. The viewer is\nresponsive and will resize to fit the container it is placed in. These Manifests can be part of the Canopy\nsource Collection but are not limited to it.\n<Viewer iiifContent=\"https://api.dc.library.northwestern.edu/api/v2/works/14a6aa15-9e12-47a7-9617-91f430d4f47b?as=iiif\" />\nThe IIIF viewer is now rendered at the bottom of the page. The viewer is responsive with a max-height.","reference-collection-items#Reference Collection Items":"As a digital humanist, you might have authored a series of essays in Markdown (in the /content directory), in which you wish to reference or cite one or more items in the source IIIF Collection. Canopy offers an easy method for linking scholarly content to items in their collection using the referencedManifests front matter key. This key takes an array of IIIF Manifest URIs. The Manifests MUST be in the source IIIF Collection of the Canopy project.\nAdd the referencedManifests key to the front matter with an array of Manifest URIs.\nAdd a <ReferencedItems /> component to bottom of our Markdown file. This will render the items as Figures in a responsive grid. Each item will have output relative local link to the item, a thumbnail, and the label.\n---\ntitle: The Nez Percé (Nimíipuu)\nnavigation: \"about\"\nreferencedManifests:\n - https://api.dc.library.northwestern.edu/api/v2/works/84aec8c1-42e8-4e2c-a6b2-1c7e3790217f?as=iiif\n - https://api.dc.library.northwestern.edu/api/v2/works/19efac1e-5e79-471c-89c2-a60a775562ce?as=iiif\n - https://api.dc.library.northwestern.edu/api/v2/works/ddd72f96-9869-4335-9d8c-3a3da51ad128?as=iiif\n - https://api.dc.library.northwestern.edu/api/v2/works/6caed4fb-60bc-4574-86a2-cb9a1859f78c?as=iiif\n---\n# The Nez Percé (Nimíipuu)\nThis a sample page for scholarly content with historical context relating to the [Nez Percé](https://en.wikipedia.org/wiki/Nez_Perce), also known as the Nimíipuu.\n## A IIIF Viewer\nA IIIF viewer is a React component that takes a single property, `iiifContent`, which is the URI to the\nIIIF manifest. The component will then fetch the Manifest and render a deep-zoom viewer. The viewer is\nresponsive and will resize to fit the container it is placed in.\n<Viewer iiifContent=\"https://api.dc.library.northwestern.edu/api/v2/works/14a6aa15-9e12-47a7-9617-91f430d4f47b?as=iiif\" />\n## Referenced Items\nThe `<ReferencedItems />` automatically outputs a grid of items that are referenced by the current page.\n<ReferencedItems />\nYour page should now output a grid of items that are referenced in the front matter. Automatically, a reciprocal connection is made between the Markdown content and the items in the IIIF Collection. Users can now navigate to and from the scholarly content page and the relative /work page representing the Manifest.","leveraging-metadata-collections#Leveraging Metadata Collections":"During the Canopy build process, new unique metadata-based IIIF Collections are automatically generated from the source IIIF Collection. These Collections can be used within Markdown content to enhance user experience and your scholarly content.These new Collections are generated for label and value pairs defined of the metadata entries in a Canopy configuration file. The IIIF Collections are available at the URL pattern /api/facet/{label}/{value}.json. Generated IIIF Collections for these facets are logged in the Canopy build process, ex:\nCreating facets as IIIF Collections...\n↓ /api/facet/subject/cayuse-indians.json\n↓ /api/facet/subject/chinookan-indians.json\n↓ /api/facet/subject/nez-perce-indians.json\n↓ /api/facet/subject/tlakluit-indians.json\n↓ /api/facet/subject/umatilla-indians.json\n↓ /api/facet/subject/walla-walla-indians.json\n↓ /api/facet/date/1910.json\n↓ /api/facet/date/1909.json\n↓ /api/facet/date/1905.json\n↓ /api/facet/date/1911.json\n↓ /api/facet/date/1903.json\nAdd a <Viewer /> component to the bottom of our Markdown file and reference a collection for label of Date and value of 1905 with the iiifContent property. The iiifContent property URI can be either a relaltive or absolute path.\n<Viewer iiifContent=\"/api/facet/date/1905.json\" />\nOr, Add a <Slider /> component as an alternative view to render a carousel of items that link to the local relative /work pages representing the Manifests. This component takes the same iiifContent property. Note that this component only supports Collection resources.\n<Slider iiifContent=\"/api/facet/date/1905.json\" />\n---\ntitle: The Nez Percé (Nimíipuu)\nnavigation: \"about\"\nreferencedManifests:\n - https://api.dc.library.northwestern.edu/api/v2/works/84aec8c1-42e8-4e2c-a6b2-1c7e3790217f?as=iiif\n - https://api.dc.library.northwestern.edu/api/v2/works/19efac1e-5e79-471c-89c2-a60a775562ce?as=iiif\n - https://api.dc.library.northwestern.edu/api/v2/works/ddd72f96-9869-4335-9d8c-3a3da51ad128?as=iiif\n - https://api.dc.library.northwestern.edu/api/v2/works/6caed4fb-60bc-4574-86a2-cb9a1859f78c?as=iiif\n---\n# The Nez Percé (Nimíipuu)\nThis a sample page for scholarly content with historical context relating to the [Nez Percé](https://en.wikipedia.org/wiki/Nez_Perce), also known as the Nimíipuu.\n## A IIIF Viewer\nA IIIF viewer is a React component that takes a single property, `iiifContent`, which is the URI to the\nIIIF manifest. The component will then fetch the Manifest and render a deep-zoom viewer. The viewer is\nresponsive and will resize to fit the container it is placed in.\n<Viewer iiifContent=\"https://api.dc.library.northwestern.edu/api/v2/works/14a6aa15-9e12-47a7-9617-91f430d4f47b?as=iiif\" />\n## Referenced Items\nThe `<ReferencedItems />` automatically outputs a grid of items that are referenced by the current page.\n<ReferencedItems />\n## Leveraging Metadata\n### Using the Viewer\nThe `<Viewer />` component supports IIIF Collections. This allows you to reference a IIIF Collection that is generated by Canopy IIIF. In this example, we are referencing a Collection of items that have a `date` of `1905`.\n<Viewer iiifContent=\"/api/facet/date/1905.json\" />\n### Using the Slider\nAlternatively, you can use the `<Slider />` component to render a carousel of items that link to the local relative `/work` pages representing the Manifests.\n<Slider iiifContent=\"/api/facet/date/1905.json\" />"}},"/customize-the-search-index":{"title":"Customize the Search Index","data":{"":"Under the hood Canopy uses\nFlexSearch to power the search\nindex. FlexSearch is a full-text, memory efficient, search library that is\nfast and easy to use. It is also highly customizable. Canopy provides a\nnumber of ways to customize the search index.\nThis guide assumes you have a Canopy IIIF project. See the Create a\nProject guide to get started.","use-case#Use Case":"You'd like to use Canopy IIIF to create a digital exhibit featuring Arabic manuscripts. For example, this NUL Collection of Arabic Manuscripts from West Africa. The IIIF Manifest data contains both Arabic and English text in its label and summary properties.You'd like to customize search configuration in the following three ways:\nSupport the \"Arabic\" character set in Search (in addition to default \"Latin\").\nInclude text from a Manifest's summary values in search results.\nInclude additional Manifest metadata in search results. In our example Manifests we include \"Contributor\" and \"Alternate Title\" as metadata items and would like to surface these in search results.","implementation#Implementation":"","support-additional-language-encodings#Support additional language encoding(s)":"Open /config/options.json and add support for Arabic text.\nAdd \"arabic:extra\" to the search.flexSearch.charset property.\n{\n ...\n \"search\": {\n \"enabled\": true,\n \"flexSearch\": {\n \"bidirectional\": false,\n \"charset\": [\"latin:extra\", \"arabic:extra\"],\n \"document\": {\n \"index\": [\n {\n \"bidirectional\": true,\n \"depth\": 3,\n \"field\": \"label\",\n \"resolution\": 9,\n \"tokenize\": \"full\"\n },\n {\n \"field\": \"metadata\",\n \"resolution\": 2\n },\n {\n \"field\": \"summary\",\n \"resolution\": 1\n }\n ]\n },\n \"optimize\": true,\n \"tokenize\": \"strict\"\n },\n \"index\": {\n \"metadata\": {\n \"all\": false,\n \"enabled\": true\n },\n \"summary\": {\n \"enabled\": true\n }\n }\n },\n ...\n}\nRestart your development server to see the changes.","include-summary-in-search-results#Include summary in search results":"Canopy IIIF's default search configuration, indexes\nonly a Work Manifest's label and metadata values.\nTo include a Manifest's summary value in search results, you'll need to update the search.index.summary.enabled property.\nIn /config/options.json set the value of search.index.summary.enabled to be true.\n{\n ...\n \"search\": {\n \"enabled\": true,\n \"flexSearch\": {\n \"bidirectional\": false,\n \"charset\": [\"latin:extra\", \"arabic:extra\"],\n \"document\": {\n \"index\": [\n {\n \"bidirectional\": true,\n \"depth\": 3,\n \"field\": \"label\",\n \"resolution\": 9,\n \"tokenize\": \"full\"\n },\n {\n \"field\": \"metadata\",\n \"resolution\": 2\n },\n {\n \"field\": \"summary\",\n \"resolution\": 1\n }\n ]\n },\n \"optimize\": true,\n \"tokenize\": \"strict\"\n },\n \"index\": {\n \"metadata\": {\n \"all\": false,\n \"enabled\": true\n },\n \"summary\": {\n \"enabled\": true\n }\n }\n },\n ...\n}\nRestart your development server to see the changes.","include-custom-metadata-in-search-results#Include custom metadata in search results":"In /config.canopy.json, you can index all, part, or none of a Work Manifest's metadata values.\nBy default, Canopy IIIF indexes all metadata fields.\nIn this example, we only want to target specific metadata fields, \"Date\", \"Subject\",\n\"Contributor\", and \"Alternate Title\".\nOpen /config/canopy.json\nDepending on which environment you'd like to target (dev or prod) provide an array of metadata fields you'd like exposed in search results. (In the example Manifest we include \"Date\", \"Subject\", \"Contributor\" and \"Alternate Title\" as metadata items)\nIn this example, we'll update the dev configuration:\n{\n \"dev\": {\n \"collection\": \"https://api.dc.library.northwestern.edu/api/v2/search?query=collection.id:%2259ec43f9-a96c-4314-9b44-9923790b371c%22&as=iiif\",\n \"featured\": [\n \"https://api.dc.library.northwestern.edu/api/v2/works/2ca1b09b-cbad-43dd-82bf-a7fa807269d8?as=iiif\"\n ],\n \"label\": {\n \"none\": [\"Western Africa Manuscripts\"]\n },\n \"metadata\": [\"Date\", \"Subject\", \"Contributor\", \"Alternate Title\"],\n \"summary\": {\n \"none\": [\"Brief description of the site and its contents.\"]\n }\n },\n \"prod\": {...}\n}\nRestart your development server to see the changes.\nPro tip: To visually confirm text being indexed for search, open the file\n.canopy/index.json and verify your custom data is being indexed.","validate-search-customizations#Validate search customizations":"Verify your customizations are working by searching for:\nAn Arabic phrase (e.g. \"مجموع الفوائد.\")\nA Manifest summary value (e.g. \"Fāʼidah of Prophet Yūsuf on gaining people's love and respect.\")\nA Manifest metadata value (e.g. \"Falke\", or \"Prophet Yūsuf\")"}},"/deploy-to-github-pages":{"title":"Deploy to GitHub Pages","data":{"":"Canopy IIIF is designed to be deployed as a statically generated website.\nStatic sites are a great option for many projects, as they are fast, secure,\nand easy to deploy and maintain. This guide will walk you through the\nprocess of deploying project as a static website using GitHub Pages using\nthe incorporated GitHub Actions in Canopy to automate the build and\ndeployment process.\nRequires a GitHub account.","use-case#Use Case":"You are a graduate student researching the American painter Beauford Delaney\nand you would like to easily create and host a digital scholarship project\nanalyzing items in your institution's digital collections.","implementation#Implementation":"","create-your-template-repository#Create your template repository":"Click the \"Use this template\" button at the top of the Canopy IIIF\nrepository to create a new repository based on this template. Select \"Create a new repository\" and choose the GitHub\naccount or organization you want to copy the contents to from the Owner dropdown. Choose a name for your new repository\nand entire it in the Repository name field. Unless you have a paid GitHub account, select Public. Click the\n\"Create repository\" button to create the new repository.","adjust-repository-settings#Adjust repository settings":"Once the repository is created, press the Settings button and Actions → General under Code and automation.Then select Read and write permissions under Workflow permissions and press Save. This allows the GitHub\nworkflow to run and the static Canopy output to be deployed to a new branch.","modify-environmmental-variables#Modify environmmental variables":"Next, modify the .github/workflows/gh-pages.deploy.yml file in repository for the NEXT_PUBLIC_URL and NEXT_PUBLIC_BASE_PATH\nto be relative to the new repository. After changing these settings, commit your change and trigger the action to run.\nOnce the action has run, the action indicator should change from a red X to a green check mark and a new branch called\ngh-pages will be created.","watch-the-build#Watch the build":"Once the gh-pages branch exists and the action indicator is a green check mark, again press the Settings button.\nUnder Code and automation, click Pages and select gh-pages from the Branch dropdown under Build and deployment\nand click *Save.","validate-the-url#Validate the URL":"Now your Canopy site will be active at a URL derived from values you defined in the NEXT_PUBLIC_URL and NEXT_PUBLIC_BASE_PATH settings.i.e. https://[NEXT_PUBLIC_URL]/[NEXT_PUBLIC_BASE_PATH]You can also view your live domain in Github by clicking the top Settings button, and then under Code and automation -> Pages."}},"/deploy-to-vercel":{"title":"Deploy to Vercel","data":{"":"Canopy can be deployed to a Next.js managed hosting\nservice.\nDoing so will allow you to take advantage of server-side components (e.g.,\nAPI routing). This guide will walk you through the process of\ndeploying Canopy to Vercel.\nRequires a Vercel account.","use-case#Use Case":"You are developer tasked with using Canopy and leveraging API routing to serve the /api/search\nendpoint as IIIF for Collections-as-data purposes. As part of this requirement, you need to deploy\nthe application to a managed hosting service and have selected Vercel for its Next.js compatibility.","implementation#Implementation":"","import-the-repository#Import the Repository":"After you've logged in to Vercel, click the Start deploying button. Then, from the Let's Build Something New\nscreen, click the Import button next to the repository you've created.","configure#Configure":"Next, give your repository a name a press Deploy. Vercel will then build and deploy your application and make it available at ${YOUR-PROJECT-NAME}.vercel.app.","environment-variables#Environment Variables":"Finally, edit the .env in your repository on Github and make sure that the NEXT_PUBLIC_URL variable and\nNEXT_PUBLIC_BASE_PATH variables match your project in Vercel. By default, the NEXT_PUBLIC_URL variable should be\nsimilar to your project name and you should not have to modify NEXT_PUBLIC_BASE_PATH."}},"/development":{"title":"Development","data":{"environment#Environment":"When you are ready to deploy your site, you will need to modify environment variables to reflect how your site is hosted.","updating#Updating":"Edit the .env file at the root of the working directory to reflect your site's configuration.The NEXT_PUBLIC_URL variable is used to declare the base URL of your site. This base url is critical to routing of works in Canopy and wiring up canonical links in SEO.If you plan to host your site in a subdirectory or subdomain, you will need to set the NEXT_PUBLIC_BASE_PATHto reflect this. For example, if your site is hosted at https://example.org/exhibit, you would set the value to /canopy.\nNEXT_PUBLIC_URL = \"https://canopy-iiif.vercel.app\"\nNEXT_PUBLIC_BASE_PATH = \"\"","avoid-code-conflicts#Avoid Code Conflicts":"To avoid potential code conflicts on future release updates, it is advised not to update the following integrated Canopy pages in the Next.js pages directory.\nNote: Future considerations will be delivered upon for updating content within these pages."}},"/enable-a-map-with-navPlace":{"title":"Enable a Map with navPlace Properties","data":{"":"Canopy IIIF allows users to explore the underlying collection through an\ninteractive map. When activated, this component displays a map featuring\nmarkers representing each point Feature within the navPlace properties found throughout the Manifests of the overarching collection. This guide will walk\nyou through the process of enabling the Map component in Canopy IIIF.\nThe Map component is populated by Manifests with a navPlace property. For more information, see the IIIF navPlace extension specification.","use-case#Use Case":"You are a digital scholar with geospatial point data and you would like to enable\nthe Map component to create additional access points for Manifests in your IIIF Collection.You would like to customize the map component by:\nusing a topographic map as the default tile layer with a street map as an optional additional layer\nusing a custom icon for the markers","implementation#Implementation":"","add-navplace-properties-to-the-manifests-in-your-collection#Add navPlace Properties to the Manifests in your collection":"Currently, Canopy only leverages the navPlace properties found in manifests with geometry\nproperties of type Point.\nCanopy IIIF's map component, is driven by navPlace properties found in the manifests of the\noverarching collection.Before the map component can be enabled, you must add navPlace properties to the manifests in your collection.\nIn accordance with the specification, include the navPlace extension to the Linked Data Context of each manifest by adding\nhttps://iiif.io/api/extension/navplace/context.json to the @context property before\nhttp://iiif.io/api/presentation/3/context.json.\n{\n \"@context\": [\n \"https://iiif.io/api/extension/navplace/context.json\",\n \"http://iiif.io/api/presentation/3/context.json\"\n ],\n ...\n}\nAdd the navPlace property to each manifest with a FeatureCollection and at least one Feature of type Point.\nEach Feature should include a label property that will be used as the text for the corresponding marker. The\ncoordinates array should include the longitude and latitude coordinates of the Feature with the longitude\nappearing first.\n{\n ...\n \"navPlace\": {\n \"id\": \"https://digital.lib.utk.edu/notdereferenceable/featurecollection//1\",\n \"type\": \"FeatureCollection\",\n \"features\": [\n {\n \"id\": \"https://digital.lib.utk.edu/notdereferenceable/feature/1\",\n \"type\": \"Feature\",\n \"properties\": {\n \"label\": {\n \"en\": [\n \"Interview with Seemona and Daniel Whaley, 2019-09-20 -- Discussion of Gatlinburg, TN\"\n ]\n }\n },\n \"geometry\": {\n \"type\": \"Point\",\n \"coordinates\": [\n -83.51189,\n 35.71453\n ]\n }\n }\n ]\n }\n ...\n}","enable-the-map-component#Enable the Map Component":"Enable the map component by changing map.enabled to true in your config/options.json file.\n{\n ...\n \"map\": {\n \"defaultBounds\": [[51.505, -0.09]],\n \"enabled\": true,\n \"icon\": {\n \"iconUrl\": \"images/marker-icon.png\",\n \"iconSize\": [24, 36],\n \"iconAnchor\": [12, 36]\n }\n },\n ...\n}","modify-tile-layers#Modify Tile Layers":"Modify the tileLayers property by moving the OpenTopMap layer to the top of the array.\nDelete all tileLayers after the OpenStreetMap layer.\n{\n ...\n \"map\": {\n \"defaultBounds\": [[51.505, -0.09]],\n \"enabled\": true,\n \"icon\": {\n \"iconUrl\": \"images/marker-icon.png\",\n \"iconSize\": [24, 36],\n \"iconAnchor\": [12, 36]\n }\n \"tileLayers\": [\n {\n \"name\": \"OpenTopoMap\",\n \"url\": \"https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png\",\n \"attribution\": \"© <a href=\\\"https://www.openstreetmap.org/copyright\\\">OpenStreetMap</a> contributors\"\n },\n {\n \"name\": \"OpenStreetMap\",\n \"url\": \"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\",\n \"attribution\": \"© <a href=\\\"https://www.openstreetmap.org/copyright\\\">OpenStreetMap</a> contributors\"\n }\n ]\n },\n ...\n}","modify-the-marker-icon#Modify the Marker Icon":"Replace the iconUrl property with the path to your custom icon. This can be a remote resource that is served from\nanother website or a local resource that is served from your public/images directory in Canopy.\nIf the size of your icon is different than the default size of 24px by 36px, modify the iconSize.\nSimilarly, if the anchor point of your icon is different than the default anchor point of 12px by 36px, modify\nthe point of the icon which will correspond to marker's location in iconAnchor.\n{\n ...\n \"map\": {\n \"defaultBounds\": [[51.505, -0.09]],\n \"enabled\": true,\n \"icon\": {\n \"iconUrl\": \"https://raw.githubusercontent.com/pointhi/leaflet-color-markers/master/img/marker-icon-violet.png\",\n \"iconSize\": [24, 36],\n \"iconAnchor\": [12, 36]\n }\n },\n ...\n}","add-the-map-route-to-your-navigation#Add the Map Route to your Navigation":"Add the map route to your content/_meta.json file so that it appears in the Navigation bar.\n[\n {\n \"path\": \"/works\",\n \"text\": \"Works\"\n },\n {\n \"path\": \"/metadata\",\n \"text\": \"Metadata\"\n },\n {\n \"path\": \"/map\",\n \"text\": \"Map\"\n },\n {\n \"path\": \"/about\",\n \"text\": \"About\"\n }\n]"}},"/get-started":{"title":"Create a Canopy Project","data":{"":"Have a project in mind? Let's get started! This guide will walk you through\nthe process of creating a basic Canopy IIIF project using a readily provided\nIIIF Collection.","use-case#Use Case":"You are on a team at a university library seeking to create a digital exhibit for a Korean Literary\ncollection in your digital repository that is provided as a IIIF Collection. You want to create\na discovery focused web site that allows users to search and browse the collection.","implementation#Implementation":"","create-a-project#Create a project":"","using-a-github-template#Using a Github template":"This method requires a GitHub account; however, it\nshould be easier to follow for users of Canopy without a developer\nenvironment.\nNavigate to the Canopy IIIF repository in GitHub\nClick the \"Use this template\" button\nClick the \"Create a new repository\" button\nSelect the account you want to own the repository\nEnter a repository name and optional description\nClick the \"Create repository\" button","using-git-clone#Using git clone":"In your terminal, navigate to the a working directory where you want to create your project\nClone the canopy-iiif/canopy-iiif repository OR your Canopy repository instance\ncd ~/Projects\ngit clone git@github.com:canopy-iiif/canopy-iiif.git","install-dependencies#Install dependencies":"Navigate to your new project directory and install dependencies.\ncd canopy-iiif\nnpm install","create-configuration-file#Create configuration file":"Copy the example configuration file and update the prod and dev values with your IIIF Collection URL. See Configuration for detailed documentation.\ncp config/canopy.sample.json config/canopy.json\nIn this example we will use the Korean Literary Collection IIIF Collection URL provided by University of Washington Libraries.\ncollection is the IIIF Collection URI to be used as the root of your Canopy IIIF site\nfeatured array is a list of Manifest URIs that will be promoted thoughout your Canopy IIIF site\nmetadata array is a list of metadata labels that match string values in your Manifest URI metadata entries to be used for discovery purposes\n{\n \"prod\": {\n \"collection\": \"https://digitalcollections.lib.washington.edu/iiif/2/korean/manifest.json\",\n \"featured\": [\n \"https://cdm16786.contentdm.oclc.org/iiif/korean:138/manifest.json\"\n ],\n \"metadata\": [\"Author\", \"Place of Publication\"]\n },\n \"dev\": {\n \"collection\": \"https://digitalcollections.lib.washington.edu/iiif/2/korean/manifest.json\",\n \"featured\": [\n \"https://cdm16786.contentdm.oclc.org/iiif/korean:138/manifest.json\"\n ],\n \"metadata\": [\"Author\", \"Place of Publication\"]\n }\n}\nSee Options for more information regarding configuration.","ready-to-go#Ready to go!":"If you are using GitHub, you can skip this step and run Canopy without a\ndeveloper environment directly using GitHub Pages.\nNow that you have a project and configuration set, you can run Canopy IIIF.\nnpm run dev","build-process#Build process":"The build process may take a few minutes depending on the size of your IIIF Collection and provider response times. A Collection of ~100 items should build in 30 seconds or less.\nBuilding - Canopy retrieves the source IIIF Collection\nCreate Manifest listing - Canopy retrives all IIIF Manifests in the Collection\nCreate facets as IIIF Collections - Canopy anaylzes the Manifests and creates IIIF Collections for each unique metadata label and value\nBuild search entries - Canopy is creates search entries for each Manifest from descriptive metadta\nReady 🚀 - Canopy is ready to go!\nBuilding Canopy from IIIF Collection...\nhttps://digitalcollections.lib.washington.edu/iiif/2/korean/manifest.json\nCreating Manifest listing...\nAggregating 135 Manifest(s) in 14 chunk(s)...\nChunk (1/14)\n✓ https://cdm16786.contentdm.oclc.org/iiif/korean:560/manifest.json ➜ 200\n✓ https://cdm16786.contentdm.oclc.org/iiif/korean:1494/manifest.json ➜ 200\n✓ https://cdm16786.contentdm.oclc.org/iiif/korean:678/manifest.json ➜ 200\n✓ https://cdm16786.contentdm.oclc.org/iiif/korean:983/manifest.json ➜ 200\n✓ https://cdm16786.contentdm.oclc.org/iiif/korean:138/manifest.json ➜ 200\n✓ https://cdm16786.contentdm.oclc.org/iiif/korean:314/manifest.json ➜ 200\n✓ https://cdm16786.contentdm.oclc.org/iiif/korean:1105/manifest.json ➜ 200\n✓ https://cdm16786.contentdm.oclc.org/iiif/korean:498/manifest.json ➜ 200\n✓ https://cdm16786.contentdm.oclc.org/iiif/korean:839/manifest.json ➜ 200\n✓ https://cdm16786.contentdm.oclc.org/iiif/korean:1363/manifest.json ➜ 200\n## build continues...\nChunk (14/14)\n✓ https://cdm16786.contentdm.oclc.org/iiif/korean:28181/manifest.json ➜ 200\n✓ https://cdm16786.contentdm.oclc.org/iiif/korean:27749/manifest.json ➜ 200\n✓ https://cdm16786.contentdm.oclc.org/iiif/korean:28140/manifest.json ➜ 200\n✓ https://cdm16786.contentdm.oclc.org/iiif/korean:28280/manifest.json ➜ 200\n✓ https://cdm16786.contentdm.oclc.org/iiif/korean:27976/manifest.json ➜ 200\n135/135 Manifests(s) retrieved successfully.\nCreating facets as IIIF Collections...\n↓ /api/facet/author/unidentified.json\n↓ /api/facet/author/kim-tong-in.json\n↓ /api/facet/author/chng-chi-yong-chong-chi-yong.json\n↓ /api/facet/author/yi-tae-jun.json\n↓ /api/facet/author/an-hoe-nam.json\n↓ /api/facet/author/im-hak-su.json\n## build continues...\nBuilding search entries...\n...Ready 🚀\n▲ Next.js 13.5.4\n- Local: http://localhost:5001\n- Environments: .env","browse-your-site#Browse your site":"In your browser, navigate to http://localhost:5001 to view your Canopy IIIF site.","home-page#Home page":"Content on the home page is geared towards discovery of your IIIF Collection. The home page will render a hero component for featured Manifests and a slider components for defined metadata labels and their most common values.","search-page#Search page":"All Manifests in your IIIF Collection are now represented as results at the /search route. In addition to full text search, results are filterable by defined metadata labels and available values. In the example Korean Literary Collection, there are 135 items available for search. A query for poems returns 43 results.","work-page#Work page":"All Manifests in your IIIF Collection are now available as statically generated pages with a /work/slug-generated-from-label pattern. Each work represents a single Manifest, its descriptive metadata, and various other IIIF properties. Clover IIIF is the defacto deep-zoom and A/V capable viewer in Canopy IIIF but other IIIF viewers can be easily configured."}},"/guides":{"title":"User Guides","data":{"":"To get started with Canopy IIIF, check out the following guides that provide step-by-step instructions."}},"/":{"title":"Canopy IIIF","data":{"":"{\n \"@context\": \"http://iiif.io/api/presentation/3/context.json\",\n \"id\": \"https://collections.britishart.yale.edu/iiif/collection/paintings_of_francis_danby\",\n \"type\": \"Collection\",\n \"label\": {\n \"en\": [\"Paintings of Francis Danby\"]\n },\n \"items\": [\n {\n \"id\": \"https://manifests.collections.yale.edu/ycba/obj/116\",\n \"type\": \"Manifest\",\n \"label\": {\n \"en\": [\"The Mountain Torrent\"]\n }\n },\n {\n \"id\": \"https://manifests.collections.yale.edu/ycba/obj/38658\",\n \"type\": \"Manifest\",\n \"label\": {\n \"en\": [\"A View across the Artist's Garden from his House at Exmouth, Devonshire\"]\n }\n }\n ]\n}\nWhat is Canopy IIIF?\nCanopy is an open source site generator built with\nIIIF and Next.js. Using a IIIF\nCollection as a data\nsource, Canopy IIIF generates a browseable and searchable static site and\nprovides a straightforward solution using Markdown for adding scholary context\nto the resources that are referenced.\nScholarship\nResearchers can curate and aggregate content from various providers and\nadd their own context to resources\nExhibits\nLibraries, museums, and archives can create digital exhibits from the\nworks in their repositories\nMinimal infrastructure\nSmall-scale, headless infrastructure for institutions with limited\nresources to build their own digital collections application\nFeatures\nCanopy IIIF extends the features of Next.js to produce a full-text search\nindex using FlexSearch, provides support for both IIIF Presentation API\n2.x and 3.0 specifications, and automatically generates facets based on\nthe curated metadata labels and values found within Manifests. The\nplatform’s API routes return IIIF collections and allow for users to\nreference IIIF resources internally and externally. In addition to these\nfeatures, the product roadmap and planned features include expanding\ninternationalization support, generating interactive maps and timelines\nbased on the presence of navPlace and navDate properties, and leveraging\nIIIF Content State and Change Discovery APIs."}},"/stackblitz":{"title":"StackBlitz Playground","data":{"":"Want to quickly try out Canopy? Click the button below to open a\nStackBlitz playground.","use-cases#Use Case(s)":"You don't want to install Canopy locally or be concerned with a developer environment.\nYou want to quickly experiment with config, settings, and or target Collections.\nYou'd like to showcase a IIIF-driven project for your team or colleagues.\nThere may be CORS issues rendering images in Safari and Firefox browsers. If\nyou're experiencing broken images, please try Chrome or Brave browsers.","implementation#Implementation":"","create-a-stackblitz-instance#Create a StackBlitz instance":"Click on the button above, \"Open in StackBlitz\". This will open a new browser tab and load the Canopy project in StackBlitz.","customize-canopy-collection#Customize Canopy Collection":"If you'd like to jump right into customizing or tinkering with config settings, try re-naming /config/canopy.sample.json to /config/canopy.json. This will override the default config settings and allow you to experiment with your own settings.\nWhen demoing in StackBlitz, your are in dev mode when configuring\n/config/canopy.json. This means that you can use the dev settings to\ntarget a IIIF Collection or Manifest.\nFor example, let's use the Charlotte Mormon Collection from Northwestern University Libaries.\n{\n \"prod\": {\n \"label\": { \"none\": [\"Collection Title\"] },\n \"summary\": {\n \"none\": [\"Brief description of the site and its contents.\"]\n },\n \"collection\": \"https://example.org/iiif/collection.json\",\n \"featured\": [\n \"https://example.org/manifest-1.json\",\n \"https://example.org/manifest-2.json\"\n ],\n \"metadata\": [\"Date\", \"Subject\"]\n },\n \"dev\": {\n \"label\": { \"none\": [\"Collection Title\"] },\n \"summary\": {\n \"none\": [\"Brief description of the site and its contents.\"]\n },\n \"collection\": \"https://api.dc.library.northwestern.edu/api/v2/search?query=collection.id:%22b46c9cf7-0e49-4993-9e0e-3cda030c4439%22&as=iiif\",\n \"featured\": [],\n \"metadata\": [\"Date\", \"Subject\"]\n }\n}\nAfter making any configuration changes, you'll need to re-start the dev server (as you would have to in a local development environment also). StackBlitz gives access to a Terminal.\nClick into the Terminal and quit the dev server by pressing ctrl + c. Then, re-start the dev server by running npm run dev.","customize-canopy-options#Customize Canopy Options":"For example, you could experiment with customizing Search, following the Search Guide. To start customizing options, rename /config/options.sample.json to /config/options.json."}},"/configuration/theme":{"title":"Theme","data":{"":"The default theme for users can be set via config/options.json. This feature sets the initial theme for users as light, dark, or system. The Toggle Theme button can also be enabled or disabled here.Note: Theme settings are stored in the users local browser storage. Setting the theme will only affect new users to your site. It will not change the default theme for users who have already visited.","properties#Properties":"Property\tType\tDescription\tdefaultTheme\tenum\tSets the default theme for users.\ttoggleEnabled\tboolean\tEnables or disables the Toggle Theme button in the footer.","defaulttheme#defaultTheme":"Sets the default theme for users. The default value is light.\n\"defaultTheme\": \"light\" // \"light\" | \"dark\" | \"system\"","toggleenabled#toggleEnabled":"Boolean value that enables or disables the Toggle Theme button in the footer. The default value is true.\n\"toggleEnabled\": true","example-theme-configuration#Example Theme Configuration":"Example of the theme configuration in config/options.json file with a defaultTheme of light and the toggleEnabled set to false.\n{\n \"theme\": {\n \"defaultTheme\": \"light\",\n \"toggleEnabled\": false\n }\n}"}}} \ No newline at end of file diff --git a/_next/static/chunks/pages/_app-9b06e42e96504294.js b/_next/static/chunks/pages/_app-9217ae0a6269c091.js similarity index 79% rename from _next/static/chunks/pages/_app-9b06e42e96504294.js rename to _next/static/chunks/pages/_app-9217ae0a6269c091.js index f462186..a87d72b 100644 --- a/_next/static/chunks/pages/_app-9b06e42e96504294.js +++ b/_next/static/chunks/pages/_app-9217ae0a6269c091.js @@ -28,7 +28,7 @@ body { background-color: var(--color-page-background); } --nextra-primary-hue: ${ec}deg; --nextra-primary-saturation: ${ef}%; } - `}),ei]})]})}var rB={link:(0,eN.Z)("nx-flex nx-max-w-[50%] nx-items-center nx-gap-1 nx-py-4 nx-text-base nx-font-medium nx-text-gray-600 nx-transition-colors [word-break:break-word] hover:nx-text-primary-600 dark:nx-text-gray-300 md:nx-text-lg"),icon:(0,eN.Z)("nx-inline nx-h-5 nx-shrink-0")},NavLinks=({flatDirectories:ee,currentIndex:en})=>{let er=useConfig(),eo=er.navigation,ei="boolean"==typeof eo?{prev:eo,next:eo}:eo,es=ei.prev&&ee[en-1],eu=ei.next&&ee[en+1];return(es&&!es.isUnderCurrentDocsTree&&(es=!1),eu&&!eu.isUnderCurrentDocsTree&&(eu=!1),es||eu)?(0,eC.jsxs)("div",{className:(0,eN.Z)("nx-mb-8 nx-flex nx-items-center nx-border-t nx-pt-8 dark:nx-border-neutral-800","contrast-more:nx-border-neutral-400 dark:contrast-more:nx-border-neutral-400","print:nx-hidden"),children:[es&&(0,eC.jsxs)(rM,{href:es.route,title:es.title,className:(0,eN.Z)(rB.link,"ltr:nx-pr-4 rtl:nx-pl-4"),children:[(0,eC.jsx)(eM.LZ,{className:(0,eN.Z)(rB.icon,"ltr:nx-rotate-180")}),es.title]}),eu&&(0,eC.jsxs)(rM,{href:eu.route,title:eu.title,className:(0,eN.Z)(rB.link,"ltr:nx-ml-auto ltr:nx-pl-4 ltr:nx-text-right rtl:nx-mr-auto rtl:nx-pr-4 rtl:nx-text-left"),children:[eu.title,(0,eC.jsx)(eM.LZ,{className:(0,eN.Z)(rB.icon,"rtl:nx-rotate-180")})]})]}):null},rW={link:(0,eN.Z)("nx-text-sm contrast-more:nx-text-gray-700 contrast-more:dark:nx-text-gray-100"),active:(0,eN.Z)("nx-font-medium nx-subpixel-antialiased"),inactive:(0,eN.Z)("nx-text-gray-600 hover:nx-text-gray-800 dark:nx-text-gray-400 dark:hover:nx-text-gray-200")};function NavbarMenu({className:ee,menu:en,children:er}){let{items:eo}=en,ei=Object.fromEntries((en.children||[]).map(ee=>[ee.name,ee]));return(0,eC.jsx)("div",{className:"nx-relative nx-inline-block",children:(0,eC.jsxs)(rp,{children:[(0,eC.jsx)(rp.Button,{className:(0,eN.Z)(ee,"-nx-ml-2 nx-hidden nx-items-center nx-whitespace-nowrap nx-rounded nx-p-2 md:nx-inline-flex",rW.inactive),children:er}),(0,eC.jsx)(nN,{leave:"nx-transition-opacity",leaveFrom:"nx-opacity-100",leaveTo:"nx-opacity-0",children:(0,eC.jsx)(rp.Items,{className:"nx-absolute nx-right-0 nx-z-20 nx-mt-1 nx-max-h-64 nx-min-w-full nx-overflow-auto nx-rounded-md nx-ring-1 nx-ring-black/5 nx-bg-white nx-py-1 nx-text-sm nx-shadow-lg dark:nx-ring-white/20 dark:nx-bg-neutral-800",tabIndex:0,children:Object.entries(eo||{}).map(([ee,er])=>{var eo;return(0,eC.jsx)(rp.Item,{children:(0,eC.jsx)(rM,{href:er.href||(null==(eo=ei[ee])?void 0:eo.route)||en.route+"/"+ee,className:(0,eN.Z)("nx-relative nx-hidden nx-w-full nx-select-none nx-whitespace-nowrap nx-text-gray-600 hover:nx-text-gray-900 dark:nx-text-gray-400 dark:hover:nx-text-gray-100 md:nx-inline-block","nx-py-1.5 nx-transition-colors ltr:nx-pl-3 ltr:nx-pr-9 rtl:nx-pr-3 rtl:nx-pl-9"),newWindow:er.newWindow,children:er.title||ee})},ee)})})})]})})}function Navbar({flatDirectories:ee,items:en}){let er=useConfig(),eo=useFSRoute(),{menu:ei,setMenu:es}=useMenu();return(0,eC.jsxs)("div",{className:"nextra-nav-container nx-sticky nx-top-0 nx-z-20 nx-w-full nx-bg-transparent print:nx-hidden",children:[(0,eC.jsx)("div",{className:(0,eN.Z)("nextra-nav-container-blur","nx-pointer-events-none nx-absolute nx-z-[-1] nx-h-full nx-w-full nx-bg-white dark:nx-bg-dark","nx-shadow-[0_2px_4px_rgba(0,0,0,.02),0_1px_0_rgba(0,0,0,.06)] dark:nx-shadow-[0_-1px_0_rgba(255,255,255,.1)_inset]","contrast-more:nx-shadow-[0_0_0_1px_#000] contrast-more:dark:nx-shadow-[0_0_0_1px_#fff]")}),(0,eC.jsxs)("nav",{className:"nx-mx-auto nx-flex nx-h-[var(--nextra-navbar-height)] nx-max-w-[90rem] nx-items-center nx-justify-end nx-gap-2 nx-pl-[max(env(safe-area-inset-left),1.5rem)] nx-pr-[max(env(safe-area-inset-right),1.5rem)]",children:[er.logoLink?(0,eC.jsx)(rM,{href:"string"==typeof er.logoLink?er.logoLink:"/",className:"nx-flex nx-items-center hover:nx-opacity-75 ltr:nx-mr-auto rtl:nx-ml-auto",children:renderComponent(er.logo)}):(0,eC.jsx)("div",{className:"nx-flex nx-items-center ltr:nx-mr-auto rtl:nx-ml-auto",children:renderComponent(er.logo)}),en.map(ee=>{if("hidden"===ee.display)return null;if("menu"===ee.type){let en=ee;return(0,eC.jsxs)(NavbarMenu,{className:(0,eN.Z)(rW.link,"nx-flex nx-gap-1",rW.inactive),menu:en,children:[en.title,(0,eC.jsx)(eM.LZ,{className:"nx-h-[18px] nx-min-w-[18px] nx-rounded-sm nx-p-0.5",pathClassName:"nx-origin-center nx-transition-transform nx-rotate-90"})]},en.title)}let en=ee,er=en.href||en.route||"#";en.children&&(er=(en.withIndexPage?en.route:en.firstChildRoute)||er);let ei=en.route===eo||eo.startsWith(en.route+"/");return(0,eC.jsxs)(rM,{href:er,className:(0,eN.Z)(rW.link,"nx-relative -nx-ml-2 nx-hidden nx-whitespace-nowrap nx-p-2 md:nx-inline-block",!ei||en.newWindow?rW.inactive:rW.active),newWindow:en.newWindow,"aria-current":!en.newWindow&&ei,children:[(0,eC.jsx)("span",{className:"nx-absolute nx-inset-x-0 nx-text-center",children:en.title}),(0,eC.jsx)("span",{className:"nx-invisible nx-font-medium",children:en.title})]},er)}),renderComponent(er.search.component,{directories:ee,className:"nx-hidden md:nx-inline-block mx-min-w-[200px]"}),er.project.link?(0,eC.jsx)(rM,{className:"nx-p-2 nx-text-current",href:er.project.link,newWindow:!0,children:renderComponent(er.project.icon)}):null,er.chat.link?(0,eC.jsx)(rM,{className:"nx-p-2 nx-text-current",href:er.chat.link,newWindow:!0,children:renderComponent(er.chat.icon)}):null,renderComponent(er.navbar.extraContent),(0,eC.jsx)("button",{type:"button","aria-label":"Menu",className:"nextra-hamburger -nx-mr-2 nx-rounded nx-p-2 active:nx-bg-gray-400/20 md:nx-hidden",onClick:()=>es(!ei),children:(0,eC.jsx)(eM.Oq,{className:(0,eN.Z)({open:ei})})})]})]})}var rU=Object.create(null),rH=(0,ej.createContext)(null),rG=(0,ej.createContext)(null),rK=(0,ej.createContext)(0),rq=(0,ej.memo)(function(ee){let en=(0,ej.useContext)(rK);return(0,eC.jsx)(rK.Provider,{value:en+1,children:(0,eC.jsx)(FolderImpl,__spreadValues({},ee))})}),rY={link:(0,eN.Z)("nx-flex nx-rounded nx-px-2 nx-py-1.5 nx-text-sm nx-transition-colors [word-break:break-word]","nx-cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] contrast-more:nx-border"),inactive:(0,eN.Z)("nx-text-gray-500 hover:nx-bg-gray-100 hover:nx-text-gray-900","dark:nx-text-neutral-400 dark:hover:nx-bg-primary-100/5 dark:hover:nx-text-gray-50","contrast-more:nx-text-gray-900 contrast-more:dark:nx-text-gray-50","contrast-more:nx-border-transparent contrast-more:hover:nx-border-gray-900 contrast-more:dark:hover:nx-border-gray-50"),active:(0,eN.Z)("nx-bg-primary-100 nx-font-semibold nx-text-primary-800 dark:nx-bg-primary-400/10 dark:nx-text-primary-600","contrast-more:nx-border-primary-500 contrast-more:dark:nx-border-primary-500"),list:(0,eN.Z)("nx-flex nx-flex-col nx-gap-1"),border:(0,eN.Z)("nx-relative before:nx-absolute before:nx-inset-y-1",'before:nx-w-px before:nx-bg-gray-200 before:nx-content-[""] dark:before:nx-bg-neutral-800',"ltr:nx-pl-3 ltr:before:nx-left-0 rtl:nx-pr-3 rtl:before:nx-right-0")};function FolderImpl({item:ee,anchors:en}){let er=useFSRoute(),[eo]=er.split("#"),ei=[eo,eo+"/"].includes(ee.route+"/"),es=ei||eo.startsWith(ee.route+"/"),eu=(0,ej.useContext)(rH),ec=!!(null==eu?void 0:eu.startsWith(ee.route+"/")),ed=(0,ej.useContext)(rK),{setMenu:ef}=useMenu(),ep=useConfig(),{theme:eh}=ee,em=void 0===rU[ee.route]?ei||es||ec||(eh&&"collapsed"in eh?!eh.collapsed:ed<ep.sidebar.defaultMenuCollapseLevel):rU[ee.route]||ec,eg=(0,ej.useState)({})[1];if((0,ej.useEffect)(()=>{let updateTreeState=()=>{(es||ec)&&(rU[ee.route]=!0)},updateAndPruneTreeState=()=>{es&&ec?rU[ee.route]=!0:delete rU[ee.route]};ep.sidebar.autoCollapse?updateAndPruneTreeState():updateTreeState()},[es,ec,ee.route,ep.sidebar.autoCollapse]),"menu"===ee.type){let en=ee,er=Object.fromEntries((en.children||[]).map(ee=>[ee.name,ee]));ee.children=Object.entries(en.items||{}).map(([ee,eo])=>{let ei=er[ee]||__spreadProps(__spreadValues({name:ee},"locale"in en&&{locale:en.locale}),{route:en.route+"/"+ee});return __spreadValues(__spreadValues({},ei),eo)})}let ex="withIndexPage"in ee&&ee.withIndexPage,ev=ex?rM:"button";return(0,eC.jsxs)("li",{className:(0,eN.Z)({open:em,active:ei}),children:[(0,eC.jsxs)(ev,{href:ex?ee.route:void 0,className:(0,eN.Z)("nx-items-center nx-justify-between nx-gap-2",!ex&&"nx-text-left nx-w-full",rY.link,ei?rY.active:rY.inactive),onClick:en=>{let er=["svg","path"].includes(en.target.tagName.toLowerCase());if(er&&en.preventDefault(),ex){ei||er?rU[ee.route]=!em:(rU[ee.route]=!0,ef(!1)),eg({});return}ei||(rU[ee.route]=!em,eg({}))},children:[renderComponent(ep.sidebar.titleComponent,{title:ee.title,type:ee.type,route:ee.route}),(0,eC.jsx)(eM.LZ,{className:"nx-h-[18px] nx-min-w-[18px] nx-rounded-sm nx-p-0.5 hover:nx-bg-gray-800/5 dark:hover:nx-bg-gray-100/5",pathClassName:(0,eN.Z)("nx-origin-center nx-transition-transform rtl:-nx-rotate-180",em&&"ltr:nx-rotate-90 rtl:nx-rotate-[-270deg]")})]}),(0,eC.jsx)(Collapse,{className:"ltr:nx-pr-0 rtl:nx-pl-0 nx-pt-1",isOpen:em,children:Array.isArray(ee.children)?(0,eC.jsx)(Menu2,{className:(0,eN.Z)(rY.border,"ltr:nx-ml-3 rtl:nx-mr-3"),directories:ee.children,base:ee.route,anchors:en}):null})]})}function Separator({title:ee}){let en=useConfig();return(0,eC.jsx)("li",{className:(0,eN.Z)("[word-break:break-word]",ee?"nx-mt-5 nx-mb-2 nx-px-2 nx-py-1.5 nx-text-sm nx-font-semibold nx-text-gray-900 first:nx-mt-0 dark:nx-text-gray-100":"nx-my-4"),children:ee?renderComponent(en.sidebar.titleComponent,{title:ee,type:"separator",route:""}):(0,eC.jsx)("hr",{className:"nx-mx-2 nx-border-t nx-border-gray-200 dark:nx-border-primary-100/10"})})}function File({item:ee,anchors:en}){let er=useFSRoute(),eo=(0,ej.useContext)(rG),ei=ee.route&&[er,er+"/"].includes(ee.route+"/"),es=useActiveAnchor(),{setMenu:eu}=useMenu(),ec=useConfig();return"separator"===ee.type?(0,eC.jsx)(Separator,{title:ee.title}):(0,eC.jsxs)("li",{className:(0,eN.Z)(rY.list,{active:ei}),children:[(0,eC.jsx)(rM,{href:ee.href||ee.route,newWindow:ee.newWindow,className:(0,eN.Z)(rY.link,ei?rY.active:rY.inactive),onClick:()=>{eu(!1)},onFocus:()=>{null==eo||eo(ee.route)},onBlur:()=>{null==eo||eo(null)},children:renderComponent(ec.sidebar.titleComponent,{title:ee.title,type:ee.type,route:ee.route})}),ei&&en.length>0&&(0,eC.jsx)("ul",{className:(0,eN.Z)(rY.list,rY.border,"ltr:nx-ml-3 rtl:nx-mr-3"),children:en.map(({id:ee,value:en})=>{var er;return(0,eC.jsx)("li",{children:(0,eC.jsx)("a",{href:`#${ee}`,className:(0,eN.Z)(rY.link,'nx-flex nx-gap-2 before:nx-opacity-25 before:nx-content-["#"]',(null==(er=es[ee])?void 0:er.isActive)?rY.active:rY.inactive),onClick:()=>{eu(!1)},children:en})},ee)})})]})}function Menu2({directories:ee,anchors:en,className:er,onlyCurrentDocs:eo}){return(0,eC.jsx)("ul",{className:(0,eN.Z)(rY.list,er),children:ee.map(ee=>!eo||ee.isUnderCurrentDocsTree?"menu"===ee.type||ee.children&&(ee.children.length||!ee.withIndexPage)?(0,eC.jsx)(rq,{item:ee,anchors:en},ee.name):(0,eC.jsx)(File,{item:ee,anchors:en},ee.name):null)})}function Sidebar({docsDirectories:ee,flatDirectories:en,fullDirectories:er,asPopover:eo=!1,headings:ei,includePlaceholder:es}){let eu=useConfig(),{menu:ec,setMenu:ed}=useMenu(),ef=(0,eI.useRouter)(),[ep,eh]=(0,ej.useState)(null),[em,eg]=(0,ej.useState)(!0),[ex,ev]=(0,ej.useState)(!1),ey=(0,ej.useMemo)(()=>ei.filter(ee=>2===ee.depth),[ei]),eb=(0,ej.useRef)(null),e_=(0,ej.useRef)(null),ew=useMounted();(0,ej.useEffect)(()=>{ec?document.body.classList.add("nx-overflow-hidden","md:nx-overflow-auto"):document.body.classList.remove("nx-overflow-hidden","md:nx-overflow-auto")},[ec]),(0,ej.useEffect)(()=>{var ee;let en=null==(ee=eb.current)?void 0:ee.querySelector("li.active");if(en&&(window.innerWidth>767||ec)){let scroll=()=>{dist_e(en,{block:"center",inline:"center",scrollMode:"always",boundary:e_.current})};ec?setTimeout(scroll,300):scroll()}},[ec]),(0,ej.useEffect)(()=>{ed(!1)},[ef.asPath,ed]);let ek=eu.i18n.length>0,eE=eu.darkMode||ek||eu.sidebar.toggleButton;return(0,eC.jsxs)(eC.Fragment,{children:[es&&eo?(0,eC.jsx)("div",{className:"max-xl:nx-hidden nx-h-0 nx-w-64 nx-shrink-0"}):null,(0,eC.jsx)("div",{className:(0,eN.Z)("motion-reduce:nx-transition-none [transition:background-color_1.5s_ease]",ec?"nx-fixed nx-inset-0 nx-z-10 nx-bg-black/80 dark:nx-bg-black/60":"nx-bg-transparent"),onClick:()=>ed(!1)}),(0,eC.jsxs)("aside",{className:(0,eN.Z)("nextra-sidebar-container nx-flex nx-flex-col","md:nx-top-16 md:nx-shrink-0 motion-reduce:nx-transform-none","nx-transform-gpu nx-transition-all nx-ease-in-out","print:nx-hidden",em?"md:nx-w-64":"md:nx-w-20",eo?"md:nx-hidden":"md:nx-sticky md:nx-self-start",ec?"max-md:[transform:translate3d(0,0,0)]":"max-md:[transform:translate3d(0,-100%,0)]"),ref:e_,children:[(0,eC.jsx)("div",{className:"nx-px-4 nx-pt-4 md:nx-hidden",children:renderComponent(eu.search.component,{directories:en})}),(0,eC.jsx)(rH.Provider,{value:ep,children:(0,eC.jsx)(rG.Provider,{value:ee=>{eh(ee)},children:(0,eC.jsxs)("div",{className:(0,eN.Z)("nx-overflow-y-auto nx-overflow-x-hidden","nx-p-4 nx-grow md:nx-h-[calc(100vh-var(--nextra-navbar-height)-var(--nextra-menu-height))]",em?"nextra-scrollbar":"no-scrollbar"),ref:eb,children:[(!eo||!em)&&(0,eC.jsx)(Collapse,{isOpen:em,horizontal:!0,children:(0,eC.jsx)(Menu2,{className:"nextra-menu-desktop max-md:nx-hidden",directories:ee,anchors:eu.toc.float?[]:ey,onlyCurrentDocs:!0})}),ew&&window.innerWidth<768&&(0,eC.jsx)(Menu2,{className:"nextra-menu-mobile md:nx-hidden",directories:er,anchors:ey})]})})}),eE&&(0,eC.jsxs)("div",{className:(0,eN.Z)("nx-sticky nx-bottom-0","nx-bg-white dark:nx-bg-dark","nx-mx-4 nx-py-4 nx-shadow-[0_-12px_16px_#fff]","nx-flex nx-items-center nx-gap-2","dark:nx-border-neutral-800 dark:nx-shadow-[0_-12px_16px_#111]","contrast-more:nx-border-neutral-400 contrast-more:nx-shadow-none contrast-more:dark:nx-shadow-none",em?(0,eN.Z)(ek&&"nx-justify-end","nx-border-t"):"nx-py-4 nx-flex-wrap nx-justify-center"),"data-toggle-animation":ex?em?"show":"hide":"off",children:[(0,eC.jsx)(LocaleSwitch,{lite:!em,className:(0,eN.Z)(em?"nx-grow":"max-md:nx-grow")}),eu.darkMode&&(0,eC.jsx)("div",{className:em&&!ek?"nx-grow nx-flex nx-flex-col":"",children:renderComponent(eu.themeSwitch.component,{lite:!em||ek})}),eu.sidebar.toggleButton&&(0,eC.jsx)("button",{title:em?"Hide sidebar":"Show sidebar",className:"max-md:nx-hidden nx-h-7 nx-rounded-md nx-transition-colors nx-text-gray-600 dark:nx-text-gray-400 nx-px-2 hover:nx-bg-gray-100 hover:nx-text-gray-900 dark:hover:nx-bg-primary-100/5 dark:hover:nx-text-gray-50",onClick:()=>{eg(!em),ev(!0)},children:(0,eC.jsx)(eM.Qq,{isOpen:em})})]})]})]})}var rX="reach-skip-nav",rQ="Skip to content";(0,ej.forwardRef)(function(ee,en){var er=ee,{className:eo,id:ei,label:es=rQ,styled:eu}=er,ec=__objRest(er,["className","id","label","styled"]);let ed=void 0===eo?eu?(0,eN.Z)("nx-sr-only","focus:nx-not-sr-only focus:nx-fixed focus:nx-z-50 focus:nx-m-3 focus:nx-ml-4 focus:nx-h-[calc(var(--nextra-navbar-height)-1.5rem)] focus:nx-rounded-lg focus:nx-border focus:nx-px-3 focus:nx-py-2 focus:nx-align-middle focus:nx-text-sm focus:nx-font-bold","focus:nx-text-gray-900 focus:dark:nx-text-gray-100","focus:nx-bg-white focus:dark:nx-bg-neutral-900","focus:nx-border-neutral-400 focus:dark:nx-border-neutral-800"):"":eo;return(0,eC.jsx)("a",__spreadProps(__spreadValues({},ec),{ref:en,href:`#${ei||rX}`,className:ed,"data-reach-skip-link":"",children:es}))}).displayName="SkipNavLink";var rJ=(0,ej.forwardRef)(function(ee,en){var er=ee,{id:eo}=er,ei=__objRest(er,["id"]);return(0,eC.jsx)("div",__spreadProps(__spreadValues({},ei),{ref:en,id:eo||rX}))});rJ.displayName="SkipNavContent";var r0=tP.strictObject({light:tP.string(),dark:tP.string(),system:tP.string()});function ThemeSwitch({lite:ee,className:en}){let{setTheme:er,resolvedTheme:eo,theme:ei=""}=y(),es=useMounted(),eu=useConfig().themeSwitch,ec=es&&"dark"===eo?eM.kL:eM.NW,ed="function"==typeof eu.useOptions?eu.useOptions():eu.useOptions;return(0,eC.jsx)(Select,{className:en,title:"Change theme",options:[{key:"light",name:ed.light},{key:"dark",name:ed.dark},{key:"system",name:ed.system}],onChange:ee=>{er(ee.key)},selected:{key:ei,name:(0,eC.jsxs)("div",{className:"nx-flex nx-items-center nx-gap-2 nx-capitalize",children:[(0,eC.jsx)(ec,{}),(0,eC.jsx)("span",{className:ee?"md:nx-hidden":"",children:es?ed[ei]:ed.light})]})}})}function scrollToTop(){window.scrollTo({top:0,behavior:"smooth"})}function BackToTop({className:ee}){let en=(0,ej.useRef)(null);return(0,ej.useEffect)(()=>{function toggleVisible(){var ee;let{scrollTop:er}=document.documentElement;null==(ee=en.current)||ee.classList.toggle("nx-opacity-0",er<300)}return window.addEventListener("scroll",toggleVisible),()=>{window.removeEventListener("scroll",toggleVisible)}},[]),(0,eC.jsxs)("button",{ref:en,"aria-hidden":"true",onClick:scrollToTop,className:(0,eN.Z)("nx-flex nx-items-center nx-gap-1.5 nx-transition nx-opacity-0",ee),children:["Scroll to top",(0,eC.jsx)(eM.LZ,{className:"-nx-rotate-90 nx-w-3.5 nx-h-3.5 nx-border nx-rounded-full nx-border-current"})]})}var r1=(0,eN.Z)("nx-text-xs nx-font-medium nx-text-gray-500 hover:nx-text-gray-900 dark:nx-text-gray-400 dark:hover:nx-text-gray-100","contrast-more:nx-text-gray-800 contrast-more:dark:nx-text-gray-50");function TOC({headings:ee,filePath:en}){var er;let eo=useActiveAnchor(),ei=useConfig(),es=(0,ej.useRef)(null),eu=(0,ej.useMemo)(()=>ee.filter(ee=>ee.depth>1),[ee]),ec=eu.length>0,ed=!!(ei.feedback.content||ei.editLink.component||ei.toc.extraContent),ef=null==(er=Object.entries(eo).find(([,{isActive:ee}])=>ee))?void 0:er[0];return(0,ej.useEffect)(()=>{var ee;if(!ef)return;let en=null==(ee=es.current)?void 0:ee.querySelector(`li > a[href="#${ef}"]`);en&&dist_e(en,{behavior:"smooth",block:"center",inline:"center",scrollMode:"always",boundary:es.current})},[ef]),(0,eC.jsxs)("div",{ref:es,className:(0,eN.Z)("nextra-scrollbar nx-sticky nx-top-16 nx-overflow-y-auto nx-pr-4 nx-pt-6 nx-text-sm [hyphens:auto]","nx-max-h-[calc(100vh-var(--nextra-navbar-height)-env(safe-area-inset-bottom))] ltr:-nx-mr-4 rtl:-nx-ml-4"),children:[ec&&(0,eC.jsxs)(eC.Fragment,{children:[(0,eC.jsx)("p",{className:"nx-mb-4 nx-font-semibold nx-tracking-tight",children:renderComponent(ei.toc.title)}),(0,eC.jsx)("ul",{children:eu.map(({id:ee,value:en,depth:er})=>{var es,eu,ec,ed;return(0,eC.jsx)("li",{className:"nx-my-2 nx-scroll-my-6 nx-scroll-py-6",children:(0,eC.jsx)("a",{href:`#${ee}`,className:(0,eN.Z)({2:"nx-font-semibold",3:"ltr:nx-pl-4 rtl:nx-pr-4",4:"ltr:nx-pl-8 rtl:nx-pr-8",5:"ltr:nx-pl-12 rtl:nx-pr-12",6:"ltr:nx-pl-16 rtl:nx-pr-16"}[er],"nx-inline-block",(null==(es=eo[ee])?void 0:es.isActive)?"nx-text-primary-600 nx-subpixel-antialiased contrast-more:!nx-text-primary-600":"nx-text-gray-500 hover:nx-text-gray-900 dark:nx-text-gray-400 dark:hover:nx-text-gray-300","contrast-more:nx-text-gray-900 contrast-more:nx-underline contrast-more:dark:nx-text-gray-50 nx-w-full nx-break-words"),children:null!=(ed=null==(ec=(eu=ei.toc).headingComponent)?void 0:ec.call(eu,{id:ee,children:en}))?ed:en})},ee)})})]}),ed&&(0,eC.jsxs)("div",{className:(0,eN.Z)(ec&&"nx-mt-8 nx-border-t nx-bg-white nx-pt-8 nx-shadow-[0_-12px_16px_white] dark:nx-bg-dark dark:nx-shadow-[0_-12px_16px_#111]","nx-sticky nx-bottom-0 nx-flex nx-flex-col nx-items-start nx-gap-2 nx-pb-8 dark:nx-border-neutral-800","contrast-more:nx-border-t contrast-more:nx-border-neutral-400 contrast-more:nx-shadow-none contrast-more:dark:nx-border-neutral-400"),children:[ei.feedback.content?(0,eC.jsx)(rM,{className:r1,href:ei.feedback.useLink(),newWindow:!0,children:renderComponent(ei.feedback.content)}):null,renderComponent(ei.editLink.component,{filePath:en,className:r1,children:renderComponent(ei.editLink.text)}),renderComponent(ei.toc.extraContent),ei.toc.backToTop&&(0,eC.jsx)(BackToTop,{className:r1})]})]})}function MatchSorterSearch({className:ee,directories:en}){let[er,eo]=(0,ej.useState)(""),ei=(0,ej.useMemo)(()=>er?matchSorter(en,er,{keys:["title"]}).map(({route:ee,title:en})=>({id:ee+en,route:ee,children:(0,eC.jsx)(r$,{value:en,match:er})})):[],[er,en]);return(0,eC.jsx)(Search,{value:er,onChange:eo,className:ee,overlayClassName:"nx-w-full",results:ei})}var r2="en-US",r4="undefined"!=typeof window;function isReactNode(ee){return null==ee||"string"==typeof ee||isFunction(ee)||(0,ej.isValidElement)(ee)}function isFunction(ee){return"function"==typeof ee}var r5=tP.array(tP.strictObject({direction:tP.enum(["ltr","rtl"]).optional(),locale:tP.string(),text:tP.string()})),r7=[isReactNode,{message:"Must be React.ReactNode or React.FC"}],r3=[isFunction,{message:"Must be React.FC"}];tP.strictObject({banner:tP.strictObject({dismissible:tP.boolean(),key:tP.string(),text:tP.custom(...r7).optional()}),chat:tP.strictObject({icon:tP.custom(...r7),link:tP.string().startsWith("https://").optional()}),components:tP.record(tP.custom(...r3)).optional(),darkMode:tP.boolean(),direction:tP.enum(["ltr","rtl"]),docsRepositoryBase:tP.string().startsWith("https://"),editLink:tP.strictObject({component:tP.custom(...r3),text:tP.custom(...r7)}),faviconGlyph:tP.string().optional(),feedback:tP.strictObject({content:tP.custom(...r7),labels:tP.string(),useLink:tP.function().returns(tP.string())}),footer:tP.strictObject({component:tP.custom(...r7),text:tP.custom(...r7)}),gitTimestamp:tP.custom(...r7),head:tP.custom(...r7),i18n:r5,logo:tP.custom(...r7),logoLink:tP.boolean().or(tP.string()),main:tP.custom(...r3).optional(),navbar:tP.strictObject({component:tP.custom(...r7),extraContent:tP.custom(...r7).optional()}),navigation:tP.boolean().or(tP.strictObject({next:tP.boolean(),prev:tP.boolean()})),nextThemes:tP.strictObject({defaultTheme:tP.string(),forcedTheme:tP.string().optional(),storageKey:tP.string()}),notFound:tP.strictObject({content:tP.custom(...r7),labels:tP.string()}),primaryHue:tP.number().or(tP.strictObject({dark:tP.number(),light:tP.number()})),primarySaturation:tP.number().or(tP.strictObject({dark:tP.number(),light:tP.number()})),project:tP.strictObject({icon:tP.custom(...r7),link:tP.string().startsWith("https://").optional()}),search:tP.strictObject({component:tP.custom(...r7),emptyResult:tP.custom(...r7),error:tP.string().or(tP.function().returns(tP.string())),loading:tP.custom(...r7),placeholder:tP.string().or(tP.function().returns(tP.string()))}),serverSideError:tP.strictObject({content:tP.custom(...r7),labels:tP.string()}),sidebar:tP.strictObject({autoCollapse:tP.boolean().optional(),defaultMenuCollapseLevel:tP.number().min(1).int(),titleComponent:tP.custom(...r7),toggleButton:tP.boolean()}),themeSwitch:tP.strictObject({component:tP.custom(...r7),useOptions:r0.or(tP.function().returns(r0))}),toc:tP.strictObject({backToTop:tP.boolean(),component:tP.custom(...r7),extraContent:tP.custom(...r7),float:tP.boolean(),headingComponent:tP.custom(...r3).optional(),title:tP.custom(...r7)}),useNextSeoProps:tP.custom(isFunction)}).deepPartial().extend({i18n:r5.optional()});var r6={"en-US":"Loading",fr:"Сhargement",ru:"Загрузка","zh-CN":"正在加载"},r9={"en-US":"Search documentation",fr:"Rechercher documents",ru:"Поиск документации","zh-CN":"搜索文档"},r8={banner:{dismissible:!0,key:"nextra-banner"},chat:{icon:(0,eC.jsxs)(eC.Fragment,{children:[(0,eC.jsx)(eM.D7,{}),(0,eC.jsx)("span",{className:"nx-sr-only",children:"Discord"})]})},darkMode:!0,direction:"ltr",docsRepositoryBase:"https://github.com/shuding/nextra",editLink:{component:function({className:ee,filePath:en,children:er}){let eo=useGitEditUrl(en);return eo?(0,eC.jsx)(rM,{className:ee,href:eo,children:er}):null},text:"Edit this page"},feedback:{content:"Question? Give us feedback →",labels:"feedback",useLink(){let ee=useConfig();return getGitIssueUrl({labels:ee.feedback.labels,repository:ee.docsRepositoryBase,title:`Feedback for \u201C${ee.title}\u201D`})}},footer:{component:Footer,text:`MIT ${new Date().getFullYear()} \xa9 Nextra.`},gitTimestamp:function({timestamp:ee}){let{locale:en=r2}=(0,eI.useRouter)();return(0,eC.jsxs)(eC.Fragment,{children:["Last updated on"," ",(0,eC.jsx)("time",{dateTime:ee.toISOString(),children:ee.toLocaleDateString(en,{day:"numeric",month:"long",year:"numeric"})})]})},head:(0,eC.jsxs)(eC.Fragment,{children:[(0,eC.jsx)("meta",{name:"msapplication-TileColor",content:"#fff"}),(0,eC.jsx)("meta",{httpEquiv:"Content-Language",content:"en"}),(0,eC.jsx)("meta",{name:"description",content:"Nextra: the next docs builder"}),(0,eC.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,eC.jsx)("meta",{name:"twitter:site",content:"@shuding_"}),(0,eC.jsx)("meta",{property:"og:title",content:"Nextra: the next docs builder"}),(0,eC.jsx)("meta",{property:"og:description",content:"Nextra: the next docs builder"}),(0,eC.jsx)("meta",{name:"apple-mobile-web-app-title",content:"Nextra"})]}),i18n:[],logo:(0,eC.jsxs)(eC.Fragment,{children:[(0,eC.jsx)("span",{className:"nx-font-extrabold",children:"Nextra"}),(0,eC.jsx)("span",{className:"nx-ml-2 nx-hidden nx-font-normal nx-text-gray-600 md:nx-inline",children:"The Next Docs Builder"})]}),logoLink:!0,navbar:{component:Navbar},navigation:!0,nextThemes:{defaultTheme:"system",storageKey:"theme"},notFound:{content:"Submit an issue about broken link →",labels:"bug"},primaryHue:{dark:204,light:212},primarySaturation:{dark:100,light:100},project:{icon:(0,eC.jsxs)(eC.Fragment,{children:[(0,eC.jsx)(eM.fy,{}),(0,eC.jsx)("span",{className:"nx-sr-only",children:"GitHub"})]})},search:{component:function({className:ee,directories:en}){let er=useConfig();return er.flexsearch?(0,eC.jsx)(Flexsearch,{className:ee}):(0,eC.jsx)(MatchSorterSearch,{className:ee,directories:en})},emptyResult:(0,eC.jsx)("span",{className:"nx-block nx-select-none nx-p-8 nx-text-center nx-text-sm nx-text-gray-400",children:"No results found."}),error:"Failed to load search index.",loading:function(){let{locale:ee,defaultLocale:en=r2}=(0,eI.useRouter)(),er=ee&&r6[ee]||r6[en];return(0,eC.jsxs)(eC.Fragment,{children:[er,"…"]})},placeholder:function(){let{locale:ee,defaultLocale:en=r2}=(0,eI.useRouter)(),er=ee&&r9[ee]||r9[en];return`${er}\u2026`}},serverSideError:{content:"Submit an issue about error in url →",labels:"bug"},sidebar:{defaultMenuCollapseLevel:2,titleComponent:({title:ee})=>(0,eC.jsx)(eC.Fragment,{children:ee}),toggleButton:!1},themeSwitch:{component:ThemeSwitch,useOptions(){let{locale:ee}=(0,eI.useRouter)();return"zh-CN"===ee?{dark:"深色主题",light:"浅色主题",system:"系统默认"}:{dark:"Dark",light:"Light",system:"System"}}},toc:{backToTop:!1,component:TOC,float:!0,title:"On This Page"},useNextSeoProps:()=>({titleTemplate:"%s – Nextra"})},ot=Object.entries(r8).map(([ee,en])=>{let er=en&&"object"==typeof en&&!Array.isArray(en)&&!(0,ej.isValidElement)(en);if(er)return ee}).filter(Boolean);if(r4){let ee;let addResizingClass=()=>{document.body.classList.add("resizing"),clearTimeout(ee),ee=setTimeout(()=>{document.body.classList.remove("resizing")},200)};window.addEventListener("resize",addResizingClass)}function HeadingLink(ee){var en=ee,{tag:er,context:eo,children:ei,id:es,className:eu}=en,ec=__objRest(en,["tag","context","children","id","className"]);let ed=useSetActiveAnchor(),ef=useSlugs(),ep=useIntersectionObserver(),eh=(0,ej.useRef)(null);return(0,ej.useEffect)(()=>{if(!es)return;let ee=eh.current;if(ee)return ef.set(ee,[es,eo.index+=1]),null==ep||ep.observe(ee),()=>{null==ep||ep.disconnect(),ef.delete(ee),ed(ee=>{let en=__spreadValues({},ee);return delete en[es],en})}},[es,eo,ef,ep,ed]),(0,eC.jsxs)(er,__spreadProps(__spreadValues({className:"sr-only"===eu?"nx-sr-only":(0,eN.Z)("nx-font-semibold nx-tracking-tight nx-text-slate-900 dark:nx-text-slate-100",{h2:"nx-mt-10 nx-border-b nx-pb-1 nx-text-3xl nx-border-neutral-200/70 contrast-more:nx-border-neutral-400 dark:nx-border-primary-100/10 contrast-more:dark:nx-border-neutral-400",h3:"nx-mt-8 nx-text-2xl",h4:"nx-mt-8 nx-text-xl",h5:"nx-mt-8 nx-text-lg",h6:"nx-mt-8 nx-text-base"}[er])},ec),{children:[ei,es&&(0,eC.jsx)("a",{href:`#${es}`,id:es,className:"subheading-anchor","aria-label":"Permalink for this section",ref:eh})]}))}var findSummary=ee=>{let en=null,er=[];return ej.Children.forEach(ee,(ee,eo)=>{var ei;if(ee&&ee.type===Summary){en||(en=ee);return}let es=ee;if(!en&&ee&&"object"==typeof ee&&ee.type!==Details&&"props"in ee&&ee.props){let er=findSummary(ee.props.children);en=er[0],es=(0,ej.cloneElement)(ee,__spreadProps(__spreadValues({},ee.props),{children:(null==(ei=er[1])?void 0:ei.length)?er[1]:void 0,key:eo}))}er.push(es)}),[en,er]},Details=ee=>{var en=ee,{children:er,open:eo}=en,ei=__objRest(en,["children","open"]);let[es,eu]=(0,ej.useState)(!!eo),[ec,ed]=findSummary(er),[ef,ep]=(0,ej.useState)(es);return(0,ej.useEffect)(()=>{if(es)ep(!0);else{let ee=setTimeout(()=>ep(es),500);return()=>clearTimeout(ee)}},[es]),(0,eC.jsxs)("details",__spreadProps(__spreadValues(__spreadProps(__spreadValues({className:"nx-my-4 nx-rounded nx-border nx-border-gray-200 nx-bg-white nx-p-2 nx-shadow-sm first:nx-mt-0 dark:nx-border-neutral-800 dark:nx-bg-neutral-900"},ei),{open:ef}),es&&{"data-expanded":!0}),{children:[(0,eC.jsx)(rZ,{value:eu,children:ec}),(0,eC.jsx)(Collapse,{isOpen:es,children:ed})]}))},Summary=ee=>{let en=useDetails();return(0,eC.jsx)("summary",__spreadProps(__spreadValues({className:(0,eN.Z)("nx-flex nx-items-center nx-cursor-pointer nx-list-none nx-p-1 nx-transition-colors hover:nx-bg-gray-100 dark:hover:nx-bg-neutral-800","before:nx-mr-1 before:nx-inline-block before:nx-transition-transform before:nx-content-[''] dark:before:nx-invert before:nx-shrink-0","rtl:before:nx-rotate-180 [[data-expanded]>&]:before:nx-rotate-90")},ee),{onClick:ee=>{ee.preventDefault(),en(ee=>!ee)}}))},on=/https?:\/\//,Link=ee=>{var en=ee,{href:er="",className:eo}=en,ei=__objRest(en,["href","className"]);return(0,eC.jsx)(rM,__spreadValues({href:er,newWindow:on.test(er),className:(0,eN.Z)("nx-text-primary-600 nx-underline nx-decoration-from-font [text-underline-position:from-font]",eo)},ei))},A=ee=>{var en=ee,{href:er=""}=en,eo=__objRest(en,["href"]);return(0,eC.jsx)(rM,__spreadValues({href:er,newWindow:on.test(er)},eo))},getComponents=({isRawLayout:ee,components:en})=>{if(ee)return{a:A};let er={index:0};return __spreadValues({h1:ee=>(0,eC.jsx)("h1",__spreadValues({className:"nx-mt-2 nx-text-4xl nx-font-bold nx-tracking-tight nx-text-slate-900 dark:nx-text-slate-100"},ee)),h2:ee=>(0,eC.jsx)(HeadingLink,__spreadValues({tag:"h2",context:er},ee)),h3:ee=>(0,eC.jsx)(HeadingLink,__spreadValues({tag:"h3",context:er},ee)),h4:ee=>(0,eC.jsx)(HeadingLink,__spreadValues({tag:"h4",context:er},ee)),h5:ee=>(0,eC.jsx)(HeadingLink,__spreadValues({tag:"h5",context:er},ee)),h6:ee=>(0,eC.jsx)(HeadingLink,__spreadValues({tag:"h6",context:er},ee)),ul:ee=>(0,eC.jsx)("ul",__spreadValues({className:"nx-mt-6 nx-list-disc first:nx-mt-0 ltr:nx-ml-6 rtl:nx-mr-6"},ee)),ol:ee=>(0,eC.jsx)("ol",__spreadValues({className:"nx-mt-6 nx-list-decimal first:nx-mt-0 ltr:nx-ml-6 rtl:nx-mr-6"},ee)),li:ee=>(0,eC.jsx)("li",__spreadValues({className:"nx-my-2"},ee)),blockquote:ee=>(0,eC.jsx)("blockquote",__spreadValues({className:(0,eN.Z)("nx-mt-6 nx-border-gray-300 nx-italic nx-text-gray-700 dark:nx-border-gray-700 dark:nx-text-gray-400","first:nx-mt-0 ltr:nx-border-l-2 ltr:nx-pl-6 rtl:nx-border-r-2 rtl:nx-pr-6")},ee)),hr:ee=>(0,eC.jsx)("hr",__spreadValues({className:"nx-my-8 nx-border-neutral-200/70 contrast-more:nx-border-neutral-400 dark:nx-border-primary-100/10 contrast-more:dark:nx-border-neutral-400"},ee)),a:Link,table:ee=>(0,eC.jsx)(ry.iA,__spreadValues({className:"nextra-scrollbar nx-mt-6 nx-p-0 first:nx-mt-0"},ee)),p:ee=>(0,eC.jsx)("p",__spreadValues({className:"nx-mt-6 nx-leading-7 first:nx-mt-0"},ee)),tr:ry.Tr,th:ry.Th,td:ry.Td,details:Details,summary:Summary,pre:ry.SU,code:ry.EK},en)},or={toc:(0,eN.Z)("nextra-toc nx-order-last nx-hidden nx-w-64 nx-shrink-0 xl:nx-block print:nx-hidden"),main:(0,eN.Z)("nx-w-full nx-break-words")},Body=({themeContext:ee,breadcrumb:en,timestamp:er,navigation:eo,children:ei})=>{var es;let eu=useConfig(),ec=useMounted();if("raw"===ee.layout)return(0,eC.jsx)("div",{className:or.main,children:ei});let ed=ee.timestamp&&eu.gitTimestamp&&er?new Date(er):null,ef=ec&&ed?(0,eC.jsx)("div",{className:"nx-mt-12 nx-mb-8 nx-block nx-text-xs nx-text-gray-500 ltr:nx-text-right rtl:nx-text-left dark:nx-text-gray-400",children:renderComponent(eu.gitTimestamp,{timestamp:ed})}):(0,eC.jsx)("div",{className:"nx-mt-16"}),ep=(0,eC.jsxs)(eC.Fragment,{children:[ei,ef,eo]}),eh=(null==(es=eu.main)?void 0:es.call(eu,{children:ep}))||ep;return"full"===ee.layout?(0,eC.jsx)("article",{className:(0,eN.Z)(or.main,"nextra-content nx-min-h-[calc(100vh-var(--nextra-navbar-height))] nx-pl-[max(env(safe-area-inset-left),1.5rem)] nx-pr-[max(env(safe-area-inset-right),1.5rem)]"),children:eh}):(0,eC.jsx)("article",{className:(0,eN.Z)(or.main,"nextra-content nx-flex nx-min-h-[calc(100vh-var(--nextra-navbar-height))] nx-min-w-0 nx-justify-center nx-pb-8 nx-pr-[calc(env(safe-area-inset-right)-1.5rem)]","article"===ee.typesetting&&"nextra-body-typesetting-article"),children:(0,eC.jsxs)("main",{className:"nx-w-full nx-min-w-0 nx-max-w-6xl nx-px-6 nx-pt-4 md:nx-px-12",children:[en,eh]})})},InnerLayout=({filePath:ee,pageMap:en,frontMatter:er,headings:eo,timestamp:ei,children:es})=>{let eu=useConfig(),{locale:ec=r2,defaultLocale:ed}=(0,eI.useRouter)(),ef=useFSRoute(),{activeType:ep,activeIndex:eh,activeThemeContext:em,activePath:eg,topLevelNavbarItems:ex,docsDirectories:ev,flatDirectories:ey,flatDocsDirectories:eb,directories:e_}=(0,ej.useMemo)(()=>normalizePages({list:en,locale:ec,defaultLocale:ed,route:ef}),[en,ec,ed,ef]),ew=__spreadValues(__spreadValues({},em),er),ek=!ew.sidebar||"raw"===ew.layout||"page"===ep,eE="page"!==ep&&ew.toc&&"default"===ew.layout?(0,eC.jsx)("nav",{className:(0,eN.Z)(or.toc,"nx-px-4"),"aria-label":"table of contents",children:renderComponent(eu.toc.component,{headings:eu.toc.float?eo:[],filePath:ee})}):"full"!==ew.layout&&"raw"!==ew.layout&&(0,eC.jsx)("nav",{className:or.toc,"aria-label":"table of contents"}),eT=eu.i18n.find(ee=>ee.locale===ec),eS=eT?"rtl"===eT.direction:"rtl"===eu.direction,eO=eS?"rtl":"ltr";return(0,eC.jsxs)("div",{dir:eO,children:[(0,eC.jsx)("script",{dangerouslySetInnerHTML:{__html:`document.documentElement.setAttribute('dir','${eO}')`}}),(0,eC.jsx)(dist_Head,{}),(0,eC.jsx)(Banner,{}),ew.navbar&&renderComponent(eu.navbar.component,{flatDirectories:ey,items:ex}),(0,eC.jsx)("div",{className:(0,eN.Z)("nx-mx-auto nx-flex","raw"!==ew.layout&&"nx-max-w-[90rem]"),children:(0,eC.jsxs)(ActiveAnchorProvider,{children:[(0,eC.jsx)(Sidebar,{docsDirectories:ev,flatDirectories:ey,fullDirectories:e_,headings:eo,asPopover:ek,includePlaceholder:"default"===ew.layout}),eE,(0,eC.jsx)(rJ,{}),(0,eC.jsx)(Body,{themeContext:ew,breadcrumb:"page"!==ep&&ew.breadcrumb?(0,eC.jsx)(Breadcrumb,{activePath:eg}):null,timestamp:ei,navigation:"page"!==ep&&ew.pagination?(0,eC.jsx)(NavLinks,{flatDirectories:eb,currentIndex:eh}):null,children:(0,eC.jsx)(eL.Z,{components:getComponents({isRawLayout:"raw"===ew.layout,components:eu.components}),children:es})})]})}),ew.footer&&renderComponent(eu.footer.component,{menu:ek})]})};function Layout(ee){var en=ee,{children:er}=en,eo=__objRest(en,["children"]);return(0,eC.jsx)(ConfigProvider,{value:eo,children:(0,eC.jsx)(InnerLayout,__spreadProps(__spreadValues({},eo.pageOpts),{children:er}))})}var oo=er(5675),oi=er.n(oo);let Logo=()=>(0,eC.jsxs)("div",{className:"jsx-7e682f802fefb7c6",children:[(0,eC.jsx)(oi(),{id:"canopy-iiif-logo","data-name":"canopy-iiif-icon",src:"/docs/assets/canopy-iiif-icon.png",alt:"Canopy IIIF",width:"32",height:"32"}),(0,eC.jsx)("span",{className:"jsx-7e682f802fefb7c6",children:"Canopy IIIF"}),(0,eC.jsx)(eR(),{id:"7e682f802fefb7c6",children:"span.jsx-7e682f802fefb7c6{display:block;margin-left:.618rem;font-weight:400;font-size:1.382rem!important;font-family:var(--canopy-display-font);color:var(--gray-12)}div.jsx-7e682f802fefb7c6{display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-moz-box-align:center;-ms-flex-align:center;align-items:center}"})]});var os=Logo;let ol={display:"block",fontWeight:"400",fontSize:"1.38em",fontFamily:"var(--canopy-display-font)",marginBottom:"-0.5em"},ou=["navPlace"],TitleComponent=ee=>{let{title:en,type:er}=ee,eo=ou.reduce((ee,en)=>{let er=RegExp(en,"gi");return ee.replace(er,en)},en);return"separator"===er?(0,eC.jsx)("span",{style:ol,children:eo}):(0,eC.jsx)(eC.Fragment,{children:eo})};var oc=TitleComponent;let od="Canopy IIIF",of="https://canopy-iiif.github.io/docs",op="a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions",oh={useNextSeoProps(){let{asPath:ee}=(0,eI.useRouter)(),en="/"===ee?"%s - Create a static site with a IIIF Collection":"%s – ".concat(od);return{titleTemplate:en}},head:()=>{let{asPath:ee,defaultLocale:en,locale:er}=(0,eI.useRouter)(),{frontMatter:eo}=useConfig(),ei=of+(en===er?ee:"/".concat(er).concat(ee));return(0,eC.jsxs)(eC.Fragment,{children:[(0,eC.jsx)("meta",{property:"og:url",content:ei}),(0,eC.jsx)("meta",{property:"og:image",content:eo.image?eo.image:"".concat(of,"/assets/canopy-iiif.png")})]})},logo:(0,eC.jsx)(os,{}),project:{link:"https://github.com/canopy-iiif/canopy-iiif"},docsRepositoryBase:"https://github.com/canopy-iiif/docs/blob/main",footer:{text:op},darkMode:!1,gitTimestamp:null,nextThemes:{defaultTheme:"light"},primaryHue:225,primarySaturation:76,sidebar:{defaultMenuCollapseLevel:1,autoCollapse:!0,titleComponent:ee=>(0,eC.jsx)(oc,{...ee}),toggleButton:!0}};var om=oh;er(9128),er(2740),er(4627);let og={slate7:"#cdced6",slate9:"#8b8d98"},ox={crimson11:"#cb1d63"},ov={violet9:"#6e56cf"},oy={indigo10:"#3358d4"},ob={grass8:"#65ba74",grass9:"#46a758"},o_={gold9:"#978365"};var ow=er(3070);let MDXLayout=function(ee){let{Component:en,pageProps:er}=ee;return Object.assign({style:"style"},(0,eL.a)()),(0,eC.jsxs)(ow.Q2,{className:eT().className,children:[(0,eC.jsx)(eR(),{id:"811bee3dbc5cbe82",dynamic:[og.slate9,oy.indigo10,ob.grass9,og.slate7,ox.crimson11,o_.gold9,ov.violet9,oy.indigo10,og.slate9,ob.grass8,eT().style.fontFamily,eO().style.fontFamily],children:":root{--shiki-color-text:".concat(og.slate9,";--shiki-color-background:transparent;--shiki-token-constant:").concat(oy.indigo10,";--shiki-token-string:").concat(ob.grass9,";--shiki-token-comment:").concat(og.slate7,";--shiki-token-keyword:").concat(ox.crimson11,";--shiki-token-parameter:").concat(o_.gold9,";--shiki-token-function:").concat(ov.violet9,";--shiki-token-string-expression:").concat(oy.indigo10,";--shiki-token-punctuation:").concat(og.slate9,";--shiki-token-link:").concat(ob.grass8,"}html{--canopy-sans-font:").concat(eT().style.fontFamily,";--canopy-display-font:").concat(eO().style.fontFamily,"}.radix-themes{--default-font-family:var(--canopy-sans-font), sans-serif}")}),(0,eC.jsx)(en,{...er,className:eR().dynamic([["811bee3dbc5cbe82",[og.slate9,oy.indigo10,ob.grass9,og.slate7,ox.crimson11,o_.gold9,ov.violet9,oy.indigo10,og.slate9,ob.grass8,eT().style.fontFamily,eO().style.fontFamily]]])+" "+(er&&null!=er.className&&er.className||"")})]})},ok=[];function _createMdxContent(ee){return(0,eC.jsx)(eC.Fragment,{})}var _app=function(){let ee=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,eC.jsx)(MDXLayout,{...ee,children:(0,eC.jsx)(_createMdxContent,{...ee})})};let oC=(ew=globalThis)[ek=Symbol.for("__nextra_internal__")]||(ew[ek]=Object.create(null));oC.Layout=Layout,oC.pageMap=[{kind:"Meta",data:{index:{title:"Home",display:"hidden",theme:{breadcrumb:!1,footer:!1,sidebar:!1,toc:!1,pagination:!1}},"-":{title:"Docs",type:"separator"},configuration:{title:"Configuration"},content:{title:"Content"},development:{title:"Development"},"*":{theme:{breadcrumb:!1}},"--":{title:"Guides",type:"separator"},"get-started":{title:"Create a Project"},documentation:{title:"Documentation",type:"menu",items:{configuration:{title:"Configuration",href:"/configuration"},content:{title:"Adding Content",href:"/content"},development:{title:"Development",href:"/development"},guides:{title:"User Guides",href:"/guides"}}},about:{title:"About",type:"page"},guides:{display:"hidden",title:"Guides"},iiif:{title:"What is IIIF? ↗",type:"page",href:"https://iiif.io/",newWindow:!0},"create-markdown-content":"Create Markdown Content","customize-the-search-index":"Customize the Search Index","deploy-to-github-pages":"Deploy to GitHub Pages","deploy-to-vercel":"Deploy to Vercel","enable-a-map-with-navPlace":"Enable a Map with Navplace"}},{kind:"MdxPage",name:"about",route:"/about"},{kind:"Folder",name:"configuration",route:"/configuration",children:[{kind:"Meta",data:{"*":{theme:{breadcrumb:!0}},search:"Search",locale:"Locale",map:"Map",theme:"Theme"}},{kind:"MdxPage",name:"locale",route:"/configuration/locale"},{kind:"MdxPage",name:"map",route:"/configuration/map"},{kind:"MdxPage",name:"search",route:"/configuration/search"},{kind:"MdxPage",name:"theme",route:"/configuration/theme"}]},{kind:"MdxPage",name:"configuration",route:"/configuration"},{kind:"Folder",name:"content",route:"/content",children:[{kind:"Meta",data:{"*":{theme:{breadcrumb:!0}},markdown:"Markdown",navigation:"Navigation",card:"Card","referenced-items":"Referenced Items",slider:"Slider",viewer:"Viewer"}},{kind:"MdxPage",name:"card",route:"/content/card"},{kind:"MdxPage",name:"markdown",route:"/content/markdown"},{kind:"MdxPage",name:"navigation",route:"/content/navigation"},{kind:"MdxPage",name:"referenced-items",route:"/content/referenced-items"},{kind:"MdxPage",name:"slider",route:"/content/slider"},{kind:"MdxPage",name:"viewer",route:"/content/viewer"}]},{kind:"MdxPage",name:"content",route:"/content"},{kind:"MdxPage",name:"create-markdown-content",route:"/create-markdown-content"},{kind:"MdxPage",name:"customize-the-search-index",route:"/customize-the-search-index"},{kind:"MdxPage",name:"deploy-to-github-pages",route:"/deploy-to-github-pages"},{kind:"MdxPage",name:"deploy-to-vercel",route:"/deploy-to-vercel"},{kind:"MdxPage",name:"development",route:"/development"},{kind:"MdxPage",name:"enable-a-map-with-navPlace",route:"/enable-a-map-with-navPlace"},{kind:"MdxPage",name:"get-started",route:"/get-started"},{kind:"MdxPage",name:"guides",route:"/guides"},{kind:"MdxPage",name:"index",route:"/",frontMatter:{title:"Canopy IIIF",description:"An open-source static site generator designed for fast creation, contextualization, and customization of a discovery-focused digital scholarship and collections website using IIIF APIs."}}],oC.flexsearch={codeblocks:!0},oC.themeConfig=om},7498:function(ee,en){"use strict";var er;Object.defineProperty(en,"__esModule",{value:!0}),function(ee,en){for(var er in en)Object.defineProperty(ee,er,{enumerable:!0,get:en[er]})}(en,{PrefetchKind:function(){return er},ACTION_REFRESH:function(){return eo},ACTION_NAVIGATE:function(){return ei},ACTION_RESTORE:function(){return es},ACTION_SERVER_PATCH:function(){return eu},ACTION_PREFETCH:function(){return ec},ACTION_FAST_REFRESH:function(){return ed},ACTION_SERVER_ACTION:function(){return ef}});let eo="refresh",ei="navigate",es="restore",eu="server-patch",ec="prefetch",ed="fast-refresh",ef="server-action";!function(ee){ee.AUTO="auto",ee.FULL="full",ee.TEMPORARY="temporary"}(er||(er={})),("function"==typeof en.default||"object"==typeof en.default&&null!==en.default)&&void 0===en.default.__esModule&&(Object.defineProperty(en.default,"__esModule",{value:!0}),Object.assign(en.default,en),ee.exports=en.default)},30:function(ee,en,er){"use strict";function getDomainLocale(ee,en,er,eo){return!1}Object.defineProperty(en,"__esModule",{value:!0}),Object.defineProperty(en,"getDomainLocale",{enumerable:!0,get:function(){return getDomainLocale}}),er(2866),("function"==typeof en.default||"object"==typeof en.default&&null!==en.default)&&void 0===en.default.__esModule&&(Object.defineProperty(en.default,"__esModule",{value:!0}),Object.assign(en.default,en),ee.exports=en.default)},3271:function(ee,en,er){"use strict";Object.defineProperty(en,"__esModule",{value:!0}),Object.defineProperty(en,"Image",{enumerable:!0,get:function(){return ev}});let eo=er(8754),ei=er(1757),es=ei._(er(7294)),eu=eo._(er(3935)),ec=eo._(er(9201)),ed=er(3914),ef=er(5494),ep=er(869);er(1905);let eh=er(1823),em=eo._(er(4545)),eg={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/docs/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!0};function handleLoading(ee,en,er,eo,ei,es){let eu=null==ee?void 0:ee.src;if(!ee||ee["data-loaded-src"]===eu)return;ee["data-loaded-src"]=eu;let ec="decode"in ee?ee.decode():Promise.resolve();ec.catch(()=>{}).then(()=>{if(ee.parentElement&&ee.isConnected){if("empty"!==en&&ei(!0),null==er?void 0:er.current){let en=new Event("load");Object.defineProperty(en,"target",{writable:!1,value:ee});let eo=!1,ei=!1;er.current({...en,nativeEvent:en,currentTarget:ee,target:ee,isDefaultPrevented:()=>eo,isPropagationStopped:()=>ei,persist:()=>{},preventDefault:()=>{eo=!0,en.preventDefault()},stopPropagation:()=>{ei=!0,en.stopPropagation()}})}(null==eo?void 0:eo.current)&&eo.current(ee)}})}function getDynamicProps(ee){let[en,er]=es.version.split("."),eo=parseInt(en,10),ei=parseInt(er,10);return eo>18||18===eo&&ei>=3?{fetchPriority:ee}:{fetchpriority:ee}}let ex=(0,es.forwardRef)((ee,en)=>{let{src:er,srcSet:eo,sizes:ei,height:eu,width:ec,decoding:ed,className:ef,style:ep,fetchPriority:eh,placeholder:em,loading:eg,unoptimized:ex,fill:ev,onLoadRef:ey,onLoadingCompleteRef:eb,setBlurComplete:e_,setShowAltText:ew,onLoad:ek,onError:eC,...eE}=ee;return es.default.createElement("img",{...eE,...getDynamicProps(eh),loading:eg,width:ec,height:eu,decoding:ed,"data-nimg":ev?"fill":"1",className:ef,style:ep,sizes:ei,srcSet:eo,src:er,ref:(0,es.useCallback)(ee=>{en&&("function"==typeof en?en(ee):"object"==typeof en&&(en.current=ee)),ee&&(eC&&(ee.src=ee.src),ee.complete&&handleLoading(ee,em,ey,eb,e_,ex))},[er,em,ey,eb,e_,eC,ex,en]),onLoad:ee=>{let en=ee.currentTarget;handleLoading(en,em,ey,eb,e_,ex)},onError:ee=>{ew(!0),"empty"!==em&&e_(!0),eC&&eC(ee)}})});function ImagePreload(ee){let{isAppRouter:en,imgAttributes:er}=ee,eo={as:"image",imageSrcSet:er.srcSet,imageSizes:er.sizes,crossOrigin:er.crossOrigin,referrerPolicy:er.referrerPolicy,...getDynamicProps(er.fetchPriority)};return en&&eu.default.preload?(eu.default.preload(er.src,eo),null):es.default.createElement(ec.default,null,es.default.createElement("link",{key:"__nimg-"+er.src+er.srcSet+er.sizes,rel:"preload",href:er.srcSet?void 0:er.src,...eo}))}let ev=(0,es.forwardRef)((ee,en)=>{let er=(0,es.useContext)(eh.RouterContext),eo=!er,ei=(0,es.useContext)(ep.ImageConfigContext),eu=(0,es.useMemo)(()=>{let ee=eg||ei||ef.imageConfigDefault,en=[...ee.deviceSizes,...ee.imageSizes].sort((ee,en)=>ee-en),er=ee.deviceSizes.sort((ee,en)=>ee-en);return{...ee,allSizes:en,deviceSizes:er}},[ei]),{onLoad:ec,onLoadingComplete:ev}=ee,ey=(0,es.useRef)(ec);(0,es.useEffect)(()=>{ey.current=ec},[ec]);let eb=(0,es.useRef)(ev);(0,es.useEffect)(()=>{eb.current=ev},[ev]);let[e_,ew]=(0,es.useState)(!1),[ek,eC]=(0,es.useState)(!1),{props:eE,meta:eT}=(0,ed.getImgProps)(ee,{defaultLoader:em.default,imgConf:eu,blurComplete:e_,showAltText:ek});return es.default.createElement(es.default.Fragment,null,es.default.createElement(ex,{...eE,unoptimized:eT.unoptimized,placeholder:eT.placeholder,fill:eT.fill,onLoadRef:ey,onLoadingCompleteRef:eb,setBlurComplete:ew,setShowAltText:eC,ref:en}),eT.priority?es.default.createElement(ImagePreload,{isAppRouter:eo,imgAttributes:eE}):null)});("function"==typeof en.default||"object"==typeof en.default&&null!==en.default)&&void 0===en.default.__esModule&&(Object.defineProperty(en.default,"__esModule",{value:!0}),Object.assign(en.default,en),ee.exports=en.default)},5170:function(ee,en,er){"use strict";Object.defineProperty(en,"__esModule",{value:!0}),Object.defineProperty(en,"default",{enumerable:!0,get:function(){return e_}});let eo=er(8754),ei=eo._(er(7294)),es=er(4450),eu=er(2227),ec=er(4364),ed=er(109),ef=er(3607),ep=er(1823),eh=er(9031),em=er(920),eg=er(30),ex=er(7192),ev=er(7498),ey=new Set;function prefetch(ee,en,er,eo,ei,es){if(!es&&!(0,eu.isLocalURL)(en))return;if(!eo.bypassPrefetchedCheck){let ei=void 0!==eo.locale?eo.locale:"locale"in ee?ee.locale:void 0,es=en+"%"+er+"%"+ei;if(ey.has(es))return;ey.add(es)}let ec=es?ee.prefetch(en,ei):ee.prefetch(en,er,eo);Promise.resolve(ec).catch(ee=>{})}function isModifiedEvent(ee){let en=ee.currentTarget,er=en.getAttribute("target");return er&&"_self"!==er||ee.metaKey||ee.ctrlKey||ee.shiftKey||ee.altKey||ee.nativeEvent&&2===ee.nativeEvent.which}function linkClicked(ee,en,er,eo,es,ec,ed,ef,ep,eh){let{nodeName:em}=ee.currentTarget,eg="A"===em.toUpperCase();if(eg&&(isModifiedEvent(ee)||!ep&&!(0,eu.isLocalURL)(er)))return;ee.preventDefault();let navigate=()=>{let ee=null==ed||ed;"beforePopState"in en?en[es?"replace":"push"](er,eo,{shallow:ec,locale:ef,scroll:ee}):en[es?"replace":"push"](eo||er,{forceOptimisticNavigation:!eh,scroll:ee})};ep?ei.default.startTransition(navigate):navigate()}function formatStringOrUrl(ee){return"string"==typeof ee?ee:(0,ec.formatUrl)(ee)}let eb=ei.default.forwardRef(function(ee,en){let er,eo;let{href:eu,as:ec,children:ey,prefetch:eb=null,passHref:e_,replace:ew,shallow:ek,scroll:eC,locale:eE,onClick:eT,onMouseEnter:eS,onTouchStart:eO,legacyBehavior:eP=!1,...eR}=ee;er=ey,eP&&("string"==typeof er||"number"==typeof er)&&(er=ei.default.createElement("a",null,er));let eI=ei.default.useContext(ep.RouterContext),ej=ei.default.useContext(eh.AppRouterContext),eN=null!=eI?eI:ej,eA=!eI,eZ=!1!==eb,eL=null===eb?ev.PrefetchKind.AUTO:ev.PrefetchKind.FULL,{href:eM,as:e$}=ei.default.useMemo(()=>{if(!eI){let ee=formatStringOrUrl(eu);return{href:ee,as:ec?formatStringOrUrl(ec):ee}}let[ee,en]=(0,es.resolveHref)(eI,eu,!0);return{href:ee,as:ec?(0,es.resolveHref)(eI,ec):en||ee}},[eI,eu,ec]),eD=ei.default.useRef(eM),eF=ei.default.useRef(e$);eP&&(eo=ei.default.Children.only(er));let ez=eP?eo&&"object"==typeof eo&&eo.ref:en,[eV,eB,eW]=(0,em.useIntersection)({rootMargin:"200px"}),eU=ei.default.useCallback(ee=>{(eF.current!==e$||eD.current!==eM)&&(eW(),eF.current=e$,eD.current=eM),eV(ee),ez&&("function"==typeof ez?ez(ee):"object"==typeof ez&&(ez.current=ee))},[e$,ez,eM,eW,eV]);ei.default.useEffect(()=>{eN&&eB&&eZ&&prefetch(eN,eM,e$,{locale:eE},{kind:eL},eA)},[e$,eM,eB,eE,eZ,null==eI?void 0:eI.locale,eN,eA,eL]);let eH={ref:eU,onClick(ee){eP||"function"!=typeof eT||eT(ee),eP&&eo.props&&"function"==typeof eo.props.onClick&&eo.props.onClick(ee),eN&&!ee.defaultPrevented&&linkClicked(ee,eN,eM,e$,ew,ek,eC,eE,eA,eZ)},onMouseEnter(ee){eP||"function"!=typeof eS||eS(ee),eP&&eo.props&&"function"==typeof eo.props.onMouseEnter&&eo.props.onMouseEnter(ee),eN&&(eZ||!eA)&&prefetch(eN,eM,e$,{locale:eE,priority:!0,bypassPrefetchedCheck:!0},{kind:eL},eA)},onTouchStart(ee){eP||"function"!=typeof eO||eO(ee),eP&&eo.props&&"function"==typeof eo.props.onTouchStart&&eo.props.onTouchStart(ee),eN&&(eZ||!eA)&&prefetch(eN,eM,e$,{locale:eE,priority:!0,bypassPrefetchedCheck:!0},{kind:eL},eA)}};if((0,ed.isAbsoluteUrl)(e$))eH.href=e$;else if(!eP||e_||"a"===eo.type&&!("href"in eo.props)){let ee=void 0!==eE?eE:null==eI?void 0:eI.locale,en=(null==eI?void 0:eI.isLocaleDomain)&&(0,eg.getDomainLocale)(e$,ee,null==eI?void 0:eI.locales,null==eI?void 0:eI.domainLocales);eH.href=en||(0,ex.addBasePath)((0,ef.addLocale)(e$,ee,null==eI?void 0:eI.defaultLocale))}return eP?ei.default.cloneElement(eo,eH):ei.default.createElement("a",{...eR,...eH},er)}),e_=eb;("function"==typeof en.default||"object"==typeof en.default&&null!==en.default)&&void 0===en.default.__esModule&&(Object.defineProperty(en.default,"__esModule",{value:!0}),Object.assign(en.default,en),ee.exports=en.default)},920:function(ee,en,er){"use strict";Object.defineProperty(en,"__esModule",{value:!0}),Object.defineProperty(en,"useIntersection",{enumerable:!0,get:function(){return useIntersection}});let eo=er(7294),ei=er(3436),es="function"==typeof IntersectionObserver,eu=new Map,ec=[];function createObserver(ee){let en;let er={root:ee.root||null,margin:ee.rootMargin||""},eo=ec.find(ee=>ee.root===er.root&&ee.margin===er.margin);if(eo&&(en=eu.get(eo)))return en;let ei=new Map,es=new IntersectionObserver(ee=>{ee.forEach(ee=>{let en=ei.get(ee.target),er=ee.isIntersecting||ee.intersectionRatio>0;en&&er&&en(er)})},ee);return en={id:er,observer:es,elements:ei},ec.push(er),eu.set(er,en),en}function observe(ee,en,er){let{id:eo,observer:ei,elements:es}=createObserver(er);return es.set(ee,en),ei.observe(ee),function(){if(es.delete(ee),ei.unobserve(ee),0===es.size){ei.disconnect(),eu.delete(eo);let ee=ec.findIndex(ee=>ee.root===eo.root&&ee.margin===eo.margin);ee>-1&&ec.splice(ee,1)}}}function useIntersection(ee){let{rootRef:en,rootMargin:er,disabled:eu}=ee,ec=eu||!es,[ed,ef]=(0,eo.useState)(!1),ep=(0,eo.useRef)(null),eh=(0,eo.useCallback)(ee=>{ep.current=ee},[]);(0,eo.useEffect)(()=>{if(es){if(ec||ed)return;let ee=ep.current;if(ee&&ee.tagName){let eo=observe(ee,ee=>ee&&ef(ee),{root:null==en?void 0:en.current,rootMargin:er});return eo}}else if(!ed){let ee=(0,ei.requestIdleCallback)(()=>ef(!0));return()=>(0,ei.cancelIdleCallback)(ee)}},[ec,er,en,ed,ep.current]);let em=(0,eo.useCallback)(()=>{ef(!1)},[]);return[eh,ed,em]}("function"==typeof en.default||"object"==typeof en.default&&null!==en.default)&&void 0===en.default.__esModule&&(Object.defineProperty(en.default,"__esModule",{value:!0}),Object.assign(en.default,en),ee.exports=en.default)},3914:function(ee,en,er){"use strict";Object.defineProperty(en,"__esModule",{value:!0}),Object.defineProperty(en,"getImgProps",{enumerable:!0,get:function(){return getImgProps}}),er(1905);let eo=er(2393),ei=er(5494);function isStaticRequire(ee){return void 0!==ee.default}function isStaticImageData(ee){return void 0!==ee.src}function isStaticImport(ee){return"object"==typeof ee&&(isStaticRequire(ee)||isStaticImageData(ee))}function getInt(ee){return void 0===ee?ee:"number"==typeof ee?Number.isFinite(ee)?ee:NaN:"string"==typeof ee&&/^[0-9]+$/.test(ee)?parseInt(ee,10):NaN}function getWidths(ee,en,er){let{deviceSizes:eo,allSizes:ei}=ee;if(er){let ee=/(^|\s)(1?\d?\d)vw/g,en=[];for(let eo;eo=ee.exec(er);eo)en.push(parseInt(eo[2]));if(en.length){let ee=.01*Math.min(...en);return{widths:ei.filter(en=>en>=eo[0]*ee),kind:"w"}}return{widths:ei,kind:"w"}}if("number"!=typeof en)return{widths:eo,kind:"w"};let es=[...new Set([en,2*en].map(ee=>ei.find(en=>en>=ee)||ei[ei.length-1]))];return{widths:es,kind:"x"}}function generateImgAttrs(ee){let{config:en,src:er,unoptimized:eo,width:ei,quality:es,sizes:eu,loader:ec}=ee;if(eo)return{src:er,srcSet:void 0,sizes:void 0};let{widths:ed,kind:ef}=getWidths(en,ei,eu),ep=ed.length-1;return{sizes:eu||"w"!==ef?eu:"100vw",srcSet:ed.map((ee,eo)=>ec({config:en,src:er,quality:es,width:ee})+" "+("w"===ef?ee:eo+1)+ef).join(", "),src:ec({config:en,src:er,quality:es,width:ed[ep]})}}function getImgProps(ee,en){let er,es,eu,{src:ec,sizes:ed,unoptimized:ef=!1,priority:ep=!1,loading:eh,className:em,quality:eg,width:ex,height:ev,fill:ey=!1,style:eb,onLoad:e_,onLoadingComplete:ew,placeholder:ek="empty",blurDataURL:eC,fetchPriority:eE,layout:eT,objectFit:eS,objectPosition:eO,lazyBoundary:eP,lazyRoot:eR,...eI}=ee,{imgConf:ej,showAltText:eN,blurComplete:eA,defaultLoader:eZ}=en,eL=ej||ei.imageConfigDefault;if("allSizes"in eL)er=eL;else{let ee=[...eL.deviceSizes,...eL.imageSizes].sort((ee,en)=>ee-en),en=eL.deviceSizes.sort((ee,en)=>ee-en);er={...eL,allSizes:ee,deviceSizes:en}}let eM=eI.loader||eZ;delete eI.loader,delete eI.srcSet;let e$="__next_img_default"in eM;if(e$){if("custom"===er.loader)throw Error('Image with src "'+ec+'" is missing "loader" prop.\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader')}else{let ee=eM;eM=en=>{let{config:er,...eo}=en;return ee(eo)}}if(eT){"fill"===eT&&(ey=!0);let ee={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}},en={responsive:"100vw",fill:"100vw"},er=ee[eT];er&&(eb={...eb,...er});let eo=en[eT];eo&&!ed&&(ed=eo)}let eD="",eF=getInt(ex),ez=getInt(ev);if(isStaticImport(ec)){let ee=isStaticRequire(ec)?ec.default:ec;if(!ee.src)throw Error("An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received "+JSON.stringify(ee));if(!ee.height||!ee.width)throw Error("An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received "+JSON.stringify(ee));if(es=ee.blurWidth,eu=ee.blurHeight,eC=eC||ee.blurDataURL,eD=ee.src,!ey){if(eF||ez){if(eF&&!ez){let en=eF/ee.width;ez=Math.round(ee.height*en)}else if(!eF&&ez){let en=ez/ee.height;eF=Math.round(ee.width*en)}}else eF=ee.width,ez=ee.height}}let eV=!ep&&("lazy"===eh||void 0===eh);(!(ec="string"==typeof ec?ec:eD)||ec.startsWith("data:")||ec.startsWith("blob:"))&&(ef=!0,eV=!1),er.unoptimized&&(ef=!0),e$&&ec.endsWith(".svg")&&!er.dangerouslyAllowSVG&&(ef=!0),ep&&(eE="high");let eB=getInt(eg),eW=Object.assign(ey?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:eS,objectPosition:eO}:{},eN?{}:{color:"transparent"},eb),eU=eA||"empty"===ek?null:"blur"===ek?'url("data:image/svg+xml;charset=utf-8,'+(0,eo.getImageBlurSvg)({widthInt:eF,heightInt:ez,blurWidth:es,blurHeight:eu,blurDataURL:eC||"",objectFit:eW.objectFit})+'")':'url("'+ek+'")',eH=eU?{backgroundSize:eW.objectFit||"cover",backgroundPosition:eW.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:eU}:{},eG=generateImgAttrs({config:er,src:ec,unoptimized:ef,width:eF,quality:eB,sizes:ed,loader:eM}),eK={...eI,loading:eV?"lazy":eh,fetchPriority:eE,width:eF,height:ez,decoding:"async",className:em,style:{...eW,...eH},sizes:eG.sizes,srcSet:eG.srcSet,src:eG.src},eq={unoptimized:ef,priority:ep,placeholder:ek,fill:ey};return{props:eK,meta:eq}}},2393:function(ee,en){"use strict";function getImageBlurSvg(ee){let{widthInt:en,heightInt:er,blurWidth:eo,blurHeight:ei,blurDataURL:es,objectFit:eu}=ee,ec=20,ed=eo?40*eo:en,ef=ei?40*ei:er,ep=ed&&ef?"viewBox='0 0 "+ed+" "+ef+"'":"",eh=ep?"none":"contain"===eu?"xMidYMid":"cover"===eu?"xMidYMid slice":"none";return"%3Csvg xmlns='http://www.w3.org/2000/svg' "+ep+"%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='"+ec+"'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='"+ec+"'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='"+eh+"' style='filter: url(%23b);' href='"+es+"'/%3E%3C/svg%3E"}Object.defineProperty(en,"__esModule",{value:!0}),Object.defineProperty(en,"getImageBlurSvg",{enumerable:!0,get:function(){return getImageBlurSvg}})},645:function(ee,en,er){"use strict";Object.defineProperty(en,"__esModule",{value:!0}),function(ee,en){for(var er in en)Object.defineProperty(ee,er,{enumerable:!0,get:en[er]})}(en,{unstable_getImgProps:function(){return unstable_getImgProps},default:function(){return ed}});let eo=er(8754),ei=er(3914),es=er(1905),eu=er(3271),ec=eo._(er(4545)),unstable_getImgProps=ee=>{(0,es.warnOnce)("Warning: unstable_getImgProps() is experimental and may change or be removed at any time. Use at your own risk.");let{props:en}=(0,ei.getImgProps)(ee,{defaultLoader:ec.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/docs/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!0}});for(let[ee,er]of Object.entries(en))void 0===er&&delete en[ee];return{props:en}},ed=eu.Image},4545:function(ee,en){"use strict";function defaultLoader(ee){let{config:en,src:er,width:eo,quality:ei}=ee;return en.path+"?url="+encodeURIComponent(er)+"&w="+eo+"&q="+(ei||75)}Object.defineProperty(en,"__esModule",{value:!0}),Object.defineProperty(en,"default",{enumerable:!0,get:function(){return er}}),defaultLoader.__next_img_default=!0;let er=defaultLoader},597:function(ee,en,er){var eo,ei=er(3454);er(1479);var es=er(7294),eu=function(ee){return ee&&"object"==typeof ee&&"default"in ee?ee:{default:ee}}(es);function _defineProperties(ee,en){for(var er=0;er<en.length;er++){var eo=en[er];eo.enumerable=eo.enumerable||!1,eo.configurable=!0,"value"in eo&&(eo.writable=!0),Object.defineProperty(ee,eo.key,eo)}}function _createClass(ee,en,er){return en&&_defineProperties(ee.prototype,en),er&&_defineProperties(ee,er),ee}var ec=void 0!==ei&&ei.env&&!0,isString=function(ee){return"[object String]"===Object.prototype.toString.call(ee)},ed=function(){function StyleSheet(ee){var en=void 0===ee?{}:ee,er=en.name,eo=void 0===er?"stylesheet":er,ei=en.optimizeForSpeed,es=void 0===ei?ec:ei;invariant$1(isString(eo),"`name` must be a string"),this._name=eo,this._deletedRulePlaceholder="#"+eo+"-deleted-rule____{}",invariant$1("boolean"==typeof es,"`optimizeForSpeed` must be a boolean"),this._optimizeForSpeed=es,this._serverSheet=void 0,this._tags=[],this._injected=!1,this._rulesCount=0;var eu=document.querySelector('meta[property="csp-nonce"]');this._nonce=eu?eu.getAttribute("content"):null}var ee=StyleSheet.prototype;return ee.setOptimizeForSpeed=function(ee){invariant$1("boolean"==typeof ee,"`setOptimizeForSpeed` accepts a boolean"),invariant$1(0===this._rulesCount,"optimizeForSpeed cannot be when rules have already been inserted"),this.flush(),this._optimizeForSpeed=ee,this.inject()},ee.isOptimizeForSpeed=function(){return this._optimizeForSpeed},ee.inject=function(){var ee=this;if(invariant$1(!this._injected,"sheet already injected"),this._injected=!0,this._optimizeForSpeed){this._tags[0]=this.makeStyleTag(this._name),this._optimizeForSpeed="insertRule"in this.getSheet(),this._optimizeForSpeed||(ec||console.warn("StyleSheet: optimizeForSpeed mode not supported falling back to standard mode."),this.flush(),this._injected=!0);return}this._serverSheet={cssRules:[],insertRule:function(en,er){return"number"==typeof er?ee._serverSheet.cssRules[er]={cssText:en}:ee._serverSheet.cssRules.push({cssText:en}),er},deleteRule:function(en){ee._serverSheet.cssRules[en]=null}}},ee.getSheetForTag=function(ee){if(ee.sheet)return ee.sheet;for(var en=0;en<document.styleSheets.length;en++)if(document.styleSheets[en].ownerNode===ee)return document.styleSheets[en]},ee.getSheet=function(){return this.getSheetForTag(this._tags[this._tags.length-1])},ee.insertRule=function(ee,en){if(invariant$1(isString(ee),"`insertRule` accepts only strings"),this._optimizeForSpeed){var er=this.getSheet();"number"!=typeof en&&(en=er.cssRules.length);try{er.insertRule(ee,en)}catch(en){return ec||console.warn("StyleSheet: illegal rule: \n\n"+ee+"\n\nSee https://stackoverflow.com/q/20007992 for more info"),-1}}else{var eo=this._tags[en];this._tags.push(this.makeStyleTag(this._name,ee,eo))}return this._rulesCount++},ee.replaceRule=function(ee,en){if(this._optimizeForSpeed){var er=this.getSheet();if(en.trim()||(en=this._deletedRulePlaceholder),!er.cssRules[ee])return ee;er.deleteRule(ee);try{er.insertRule(en,ee)}catch(eo){ec||console.warn("StyleSheet: illegal rule: \n\n"+en+"\n\nSee https://stackoverflow.com/q/20007992 for more info"),er.insertRule(this._deletedRulePlaceholder,ee)}}else{var eo=this._tags[ee];invariant$1(eo,"old rule at index `"+ee+"` not found"),eo.textContent=en}return ee},ee.deleteRule=function(ee){if(this._optimizeForSpeed)this.replaceRule(ee,"");else{var en=this._tags[ee];invariant$1(en,"rule at index `"+ee+"` not found"),en.parentNode.removeChild(en),this._tags[ee]=null}},ee.flush=function(){this._injected=!1,this._rulesCount=0,this._tags.forEach(function(ee){return ee&&ee.parentNode.removeChild(ee)}),this._tags=[]},ee.cssRules=function(){var ee=this;return this._tags.reduce(function(en,er){return er?en=en.concat(Array.prototype.map.call(ee.getSheetForTag(er).cssRules,function(en){return en.cssText===ee._deletedRulePlaceholder?null:en})):en.push(null),en},[])},ee.makeStyleTag=function(ee,en,er){en&&invariant$1(isString(en),"makeStyleTag accepts only strings as second parameter");var eo=document.createElement("style");this._nonce&&eo.setAttribute("nonce",this._nonce),eo.type="text/css",eo.setAttribute("data-"+ee,""),en&&eo.appendChild(document.createTextNode(en));var ei=document.head||document.getElementsByTagName("head")[0];return er?ei.insertBefore(eo,er):ei.appendChild(eo),eo},_createClass(StyleSheet,[{key:"length",get:function(){return this._rulesCount}}]),StyleSheet}();function invariant$1(ee,en){if(!ee)throw Error("StyleSheet: "+en+".")}var stringHash=function(ee){for(var en=5381,er=ee.length;er;)en=33*en^ee.charCodeAt(--er);return en>>>0},ef={};function computeId(ee,en){if(!en)return"jsx-"+ee;var er=String(en),eo=ee+er;return ef[eo]||(ef[eo]="jsx-"+stringHash(ee+"-"+er)),ef[eo]}function computeSelector(ee,en){var er=/__jsx-style-dynamic-selector/g,eo=ee+en;return ef[eo]||(ef[eo]=en.replace(er,ee)),ef[eo]}function mapRulesToStyle(ee,en){return void 0===en&&(en={}),ee.map(function(ee){var er=ee[0],eo=ee[1];return eu.default.createElement("style",{id:"__"+er,key:"__"+er,nonce:en.nonce?en.nonce:void 0,dangerouslySetInnerHTML:{__html:eo}})})}var ep=function(){function StyleSheetRegistry(ee){var en=void 0===ee?{}:ee,er=en.styleSheet,eo=void 0===er?null:er,ei=en.optimizeForSpeed,es=void 0!==ei&&ei;this._sheet=eo||new ed({name:"styled-jsx",optimizeForSpeed:es}),this._sheet.inject(),eo&&"boolean"==typeof es&&(this._sheet.setOptimizeForSpeed(es),this._optimizeForSpeed=this._sheet.isOptimizeForSpeed()),this._fromServer=void 0,this._indices={},this._instancesCounts={}}var ee=StyleSheetRegistry.prototype;return ee.add=function(ee){var en=this;void 0===this._optimizeForSpeed&&(this._optimizeForSpeed=Array.isArray(ee.children),this._sheet.setOptimizeForSpeed(this._optimizeForSpeed),this._optimizeForSpeed=this._sheet.isOptimizeForSpeed()),this._fromServer||(this._fromServer=this.selectFromServer(),this._instancesCounts=Object.keys(this._fromServer).reduce(function(ee,en){return ee[en]=0,ee},{}));var er=this.getIdAndRules(ee),eo=er.styleId,ei=er.rules;if(eo in this._instancesCounts){this._instancesCounts[eo]+=1;return}var es=ei.map(function(ee){return en._sheet.insertRule(ee)}).filter(function(ee){return -1!==ee});this._indices[eo]=es,this._instancesCounts[eo]=1},ee.remove=function(ee){var en=this,er=this.getIdAndRules(ee).styleId;if(invariant(er in this._instancesCounts,"styleId: `"+er+"` not found"),this._instancesCounts[er]-=1,this._instancesCounts[er]<1){var eo=this._fromServer&&this._fromServer[er];eo?(eo.parentNode.removeChild(eo),delete this._fromServer[er]):(this._indices[er].forEach(function(ee){return en._sheet.deleteRule(ee)}),delete this._indices[er]),delete this._instancesCounts[er]}},ee.update=function(ee,en){this.add(en),this.remove(ee)},ee.flush=function(){this._sheet.flush(),this._sheet.inject(),this._fromServer=void 0,this._indices={},this._instancesCounts={}},ee.cssRules=function(){var ee=this,en=this._fromServer?Object.keys(this._fromServer).map(function(en){return[en,ee._fromServer[en]]}):[],er=this._sheet.cssRules();return en.concat(Object.keys(this._indices).map(function(en){return[en,ee._indices[en].map(function(ee){return er[ee].cssText}).join(ee._optimizeForSpeed?"":"\n")]}).filter(function(ee){return!!ee[1]}))},ee.styles=function(ee){return mapRulesToStyle(this.cssRules(),ee)},ee.getIdAndRules=function(ee){var en=ee.children,er=ee.dynamic,eo=ee.id;if(er){var ei=computeId(eo,er);return{styleId:ei,rules:Array.isArray(en)?en.map(function(ee){return computeSelector(ei,ee)}):[computeSelector(ei,en)]}}return{styleId:computeId(eo),rules:Array.isArray(en)?en:[en]}},ee.selectFromServer=function(){return Array.prototype.slice.call(document.querySelectorAll('[id^="__jsx-"]')).reduce(function(ee,en){return ee[en.id.slice(2)]=en,ee},{})},StyleSheetRegistry}();function invariant(ee,en){if(!ee)throw Error("StyleSheetRegistry: "+en+".")}var eh=es.createContext(null);function createStyleRegistry(){return new ep}function StyleRegistry(ee){var en=ee.registry,er=ee.children,eo=es.useContext(eh),ei=es.useState(function(){return eo||en||createStyleRegistry()})[0];return eu.default.createElement(eh.Provider,{value:ei},er)}function useStyleRegistry(){return es.useContext(eh)}eh.displayName="StyleSheetContext";var em=eu.default.useInsertionEffect||eu.default.useLayoutEffect,eg=createStyleRegistry();function JSXStyle(ee){var en=eg||useStyleRegistry();return en&&em(function(){return en.add(ee),function(){en.remove(ee)}},[ee.id,String(ee.dynamic)]),null}JSXStyle.dynamic=function(ee){return ee.map(function(ee){return computeId(ee[0],ee[1])}).join(" ")},eo=StyleRegistry,eo=createStyleRegistry,en.style=JSXStyle},5379:function(ee,en,er){"use strict";ee.exports=er(597).style},1479:function(){},4627:function(){},9128:function(){},2740:function(){},3041:function(ee){ee.exports={style:{fontFamily:"'__DM_Sans_f32be5', '__DM_Sans_Fallback_f32be5'",fontStyle:"normal"},className:"__className_f32be5"}},7700:function(ee){ee.exports={style:{fontFamily:"'__DM_Serif_Display_f77a0b', '__DM_Serif_Display_Fallback_f77a0b'",fontWeight:400,fontStyle:"normal"},className:"__className_f77a0b"}},1864:function(ee){var en="/";!function(){"use strict";var er={114:function(ee){function assertPath(ee){if("string"!=typeof ee)throw TypeError("Path must be a string. Received "+JSON.stringify(ee))}function normalizeStringPosix(ee,en){for(var er,eo="",ei=0,es=-1,eu=0,ec=0;ec<=ee.length;++ec){if(ec<ee.length)er=ee.charCodeAt(ec);else if(47===er)break;else er=47;if(47===er){if(es===ec-1||1===eu);else if(es!==ec-1&&2===eu){if(eo.length<2||2!==ei||46!==eo.charCodeAt(eo.length-1)||46!==eo.charCodeAt(eo.length-2)){if(eo.length>2){var ed=eo.lastIndexOf("/");if(ed!==eo.length-1){-1===ed?(eo="",ei=0):ei=(eo=eo.slice(0,ed)).length-1-eo.lastIndexOf("/"),es=ec,eu=0;continue}}else if(2===eo.length||1===eo.length){eo="",ei=0,es=ec,eu=0;continue}}en&&(eo.length>0?eo+="/..":eo="..",ei=2)}else eo.length>0?eo+="/"+ee.slice(es+1,ec):eo=ee.slice(es+1,ec),ei=ec-es-1;es=ec,eu=0}else 46===er&&-1!==eu?++eu:eu=-1}return eo}function _format(ee,en){var er=en.dir||en.root,eo=en.base||(en.name||"")+(en.ext||"");return er?er===en.root?er+eo:er+ee+eo:eo}var en={resolve:function(){for(var ee,en,er="",eo=!1,ei=arguments.length-1;ei>=-1&&!eo;ei--)ei>=0?en=arguments[ei]:(void 0===ee&&(ee=""),en=ee),assertPath(en),0!==en.length&&(er=en+"/"+er,eo=47===en.charCodeAt(0));return(er=normalizeStringPosix(er,!eo),eo)?er.length>0?"/"+er:"/":er.length>0?er:"."},normalize:function(ee){if(assertPath(ee),0===ee.length)return".";var en=47===ee.charCodeAt(0),er=47===ee.charCodeAt(ee.length-1);return(0!==(ee=normalizeStringPosix(ee,!en)).length||en||(ee="."),ee.length>0&&er&&(ee+="/"),en)?"/"+ee:ee},isAbsolute:function(ee){return assertPath(ee),ee.length>0&&47===ee.charCodeAt(0)},join:function(){if(0==arguments.length)return".";for(var ee,er=0;er<arguments.length;++er){var eo=arguments[er];assertPath(eo),eo.length>0&&(void 0===ee?ee=eo:ee+="/"+eo)}return void 0===ee?".":en.normalize(ee)},relative:function(ee,er){if(assertPath(ee),assertPath(er),ee===er||(ee=en.resolve(ee))===(er=en.resolve(er)))return"";for(var eo=1;eo<ee.length&&47===ee.charCodeAt(eo);++eo);for(var ei=ee.length,es=ei-eo,eu=1;eu<er.length&&47===er.charCodeAt(eu);++eu);for(var ec=er.length-eu,ed=es<ec?es:ec,ef=-1,ep=0;ep<=ed;++ep){if(ep===ed){if(ec>ed){if(47===er.charCodeAt(eu+ep))return er.slice(eu+ep+1);if(0===ep)return er.slice(eu+ep)}else es>ed&&(47===ee.charCodeAt(eo+ep)?ef=ep:0===ep&&(ef=0));break}var eh=ee.charCodeAt(eo+ep);if(eh!==er.charCodeAt(eu+ep))break;47===eh&&(ef=ep)}var em="";for(ep=eo+ef+1;ep<=ei;++ep)(ep===ei||47===ee.charCodeAt(ep))&&(0===em.length?em+="..":em+="/..");return em.length>0?em+er.slice(eu+ef):(eu+=ef,47===er.charCodeAt(eu)&&++eu,er.slice(eu))},_makeLong:function(ee){return ee},dirname:function(ee){if(assertPath(ee),0===ee.length)return".";for(var en=ee.charCodeAt(0),er=47===en,eo=-1,ei=!0,es=ee.length-1;es>=1;--es)if(47===(en=ee.charCodeAt(es))){if(!ei){eo=es;break}}else ei=!1;return -1===eo?er?"/":".":er&&1===eo?"//":ee.slice(0,eo)},basename:function(ee,en){if(void 0!==en&&"string"!=typeof en)throw TypeError('"ext" argument must be a string');assertPath(ee);var er,eo=0,ei=-1,es=!0;if(void 0!==en&&en.length>0&&en.length<=ee.length){if(en.length===ee.length&&en===ee)return"";var eu=en.length-1,ec=-1;for(er=ee.length-1;er>=0;--er){var ed=ee.charCodeAt(er);if(47===ed){if(!es){eo=er+1;break}}else -1===ec&&(es=!1,ec=er+1),eu>=0&&(ed===en.charCodeAt(eu)?-1==--eu&&(ei=er):(eu=-1,ei=ec))}return eo===ei?ei=ec:-1===ei&&(ei=ee.length),ee.slice(eo,ei)}for(er=ee.length-1;er>=0;--er)if(47===ee.charCodeAt(er)){if(!es){eo=er+1;break}}else -1===ei&&(es=!1,ei=er+1);return -1===ei?"":ee.slice(eo,ei)},extname:function(ee){assertPath(ee);for(var en=-1,er=0,eo=-1,ei=!0,es=0,eu=ee.length-1;eu>=0;--eu){var ec=ee.charCodeAt(eu);if(47===ec){if(!ei){er=eu+1;break}continue}-1===eo&&(ei=!1,eo=eu+1),46===ec?-1===en?en=eu:1!==es&&(es=1):-1!==en&&(es=-1)}return -1===en||-1===eo||0===es||1===es&&en===eo-1&&en===er+1?"":ee.slice(en,eo)},format:function(ee){if(null===ee||"object"!=typeof ee)throw TypeError('The "pathObject" argument must be of type Object. Received type '+typeof ee);return _format("/",ee)},parse:function(ee){assertPath(ee);var en,er={root:"",dir:"",base:"",ext:"",name:""};if(0===ee.length)return er;var eo=ee.charCodeAt(0),ei=47===eo;ei?(er.root="/",en=1):en=0;for(var es=-1,eu=0,ec=-1,ed=!0,ef=ee.length-1,ep=0;ef>=en;--ef){if(47===(eo=ee.charCodeAt(ef))){if(!ed){eu=ef+1;break}continue}-1===ec&&(ed=!1,ec=ef+1),46===eo?-1===es?es=ef:1!==ep&&(ep=1):-1!==es&&(ep=-1)}return -1===es||-1===ec||0===ep||1===ep&&es===ec-1&&es===eu+1?-1!==ec&&(0===eu&&ei?er.base=er.name=ee.slice(1,ec):er.base=er.name=ee.slice(eu,ec)):(0===eu&&ei?(er.name=ee.slice(1,es),er.base=ee.slice(1,ec)):(er.name=ee.slice(eu,es),er.base=ee.slice(eu,ec)),er.ext=ee.slice(es,ec)),eu>0?er.dir=ee.slice(0,eu-1):ei&&(er.dir="/"),er},sep:"/",delimiter:":",win32:null,posix:null};en.posix=en,ee.exports=en}},eo={};function __nccwpck_require__(ee){var en=eo[ee];if(void 0!==en)return en.exports;var ei=eo[ee]={exports:{}},es=!0;try{er[ee](ei,ei.exports,__nccwpck_require__),es=!1}finally{es&&delete eo[ee]}return ei.exports}__nccwpck_require__.ab=en+"/";var ei=__nccwpck_require__(114);ee.exports=ei}()},7663:function(ee){var en="/";!function(){var er={229:function(ee){var en,er,eo,ei=ee.exports={};function defaultSetTimout(){throw Error("setTimeout has not been defined")}function defaultClearTimeout(){throw Error("clearTimeout has not been defined")}function runTimeout(ee){if(en===setTimeout)return setTimeout(ee,0);if((en===defaultSetTimout||!en)&&setTimeout)return en=setTimeout,setTimeout(ee,0);try{return en(ee,0)}catch(er){try{return en.call(null,ee,0)}catch(er){return en.call(this,ee,0)}}}function runClearTimeout(ee){if(er===clearTimeout)return clearTimeout(ee);if((er===defaultClearTimeout||!er)&&clearTimeout)return er=clearTimeout,clearTimeout(ee);try{return er(ee)}catch(en){try{return er.call(null,ee)}catch(en){return er.call(this,ee)}}}!function(){try{en="function"==typeof setTimeout?setTimeout:defaultSetTimout}catch(ee){en=defaultSetTimout}try{er="function"==typeof clearTimeout?clearTimeout:defaultClearTimeout}catch(ee){er=defaultClearTimeout}}();var es=[],eu=!1,ec=-1;function cleanUpNextTick(){eu&&eo&&(eu=!1,eo.length?es=eo.concat(es):ec=-1,es.length&&drainQueue())}function drainQueue(){if(!eu){var ee=runTimeout(cleanUpNextTick);eu=!0;for(var en=es.length;en;){for(eo=es,es=[];++ec<en;)eo&&eo[ec].run();ec=-1,en=es.length}eo=null,eu=!1,runClearTimeout(ee)}}function Item(ee,en){this.fun=ee,this.array=en}function noop(){}ei.nextTick=function(ee){var en=Array(arguments.length-1);if(arguments.length>1)for(var er=1;er<arguments.length;er++)en[er-1]=arguments[er];es.push(new Item(ee,en)),1!==es.length||eu||runTimeout(drainQueue)},Item.prototype.run=function(){this.fun.apply(null,this.array)},ei.title="browser",ei.browser=!0,ei.env={},ei.argv=[],ei.version="",ei.versions={},ei.on=noop,ei.addListener=noop,ei.once=noop,ei.off=noop,ei.removeListener=noop,ei.removeAllListeners=noop,ei.emit=noop,ei.prependListener=noop,ei.prependOnceListener=noop,ei.listeners=function(ee){return[]},ei.binding=function(ee){throw Error("process.binding is not supported")},ei.cwd=function(){return"/"},ei.chdir=function(ee){throw Error("process.chdir is not supported")},ei.umask=function(){return 0}}},eo={};function __nccwpck_require__(ee){var en=eo[ee];if(void 0!==en)return en.exports;var ei=eo[ee]={exports:{}},es=!0;try{er[ee](ei,ei.exports,__nccwpck_require__),es=!1}finally{es&&delete eo[ee]}return ei.exports}__nccwpck_require__.ab=en+"/";var ei=__nccwpck_require__(229);ee.exports=ei}()},9008:function(ee,en,er){ee.exports=er(9201)},5675:function(ee,en,er){ee.exports=er(645)},1664:function(ee,en,er){ee.exports=er(5170)},1163:function(ee,en,er){ee.exports=er(9974)},9013:function(ee,en,er){"use strict";er.d(en,{UW:function(){return Callout},Zb:function(){return Card},oy:function(){return eG},EK:function(){return Code},zH:function(){return eX},SU:function(){return Pre},Rg:function(){return Steps},iA:function(){return Table},Td:function(){return Td},Th:function(){return Th},Tr:function(){return Tr}});var eo,ei,es,eu=er(512),ec=er(5893),Button=({children:ee,className:en,...er})=>(0,ec.jsx)("button",{className:(0,eu.Z)("nextra-button nx-transition-all active:nx-opacity-50","nx-bg-primary-700/5 nx-border nx-border-black/5 nx-text-gray-600 hover:nx-text-gray-900 nx-rounded-md nx-p-1.5","dark:nx-bg-primary-300/10 dark:nx-border-white/10 dark:nx-text-gray-400 dark:hover:nx-text-gray-50",en),...er,children:ee}),ed=er(4861),ef={default:"\uD83D\uDCA1",error:"\uD83D\uDEAB",info:(0,ec.jsx)(ed.AV,{className:"nx-mt-1"}),warning:"⚠️"},ep={default:(0,eu.Z)("nx-border-orange-100 nx-bg-orange-50 nx-text-orange-800 dark:nx-border-orange-400/30 dark:nx-bg-orange-400/20 dark:nx-text-orange-300"),error:(0,eu.Z)("nx-border-red-200 nx-bg-red-100 nx-text-red-900 dark:nx-border-red-200/30 dark:nx-bg-red-900/30 dark:nx-text-red-200"),info:(0,eu.Z)("nx-border-blue-200 nx-bg-blue-100 nx-text-blue-900 dark:nx-border-blue-200/30 dark:nx-bg-blue-900/30 dark:nx-text-blue-200"),warning:(0,eu.Z)("nx-border-yellow-100 nx-bg-yellow-50 nx-text-yellow-900 dark:nx-border-yellow-200/30 dark:nx-bg-yellow-700/30 dark:nx-text-yellow-200")};function Callout({children:ee,type:en="default",emoji:er=ef[en]}){return(0,ec.jsxs)("div",{className:(0,eu.Z)("nextra-callout nx-overflow-x-auto nx-mt-6 nx-flex nx-rounded-lg nx-border nx-py-2 ltr:nx-pr-4 rtl:nx-pl-4","contrast-more:nx-border-current contrast-more:dark:nx-border-current",ep[en]),children:[(0,ec.jsx)("div",{className:"nx-select-none nx-text-xl ltr:nx-pl-3 ltr:nx-pr-2 rtl:nx-pr-3 rtl:nx-pl-2",style:{fontFamily:'"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"'},children:er}),(0,ec.jsx)("div",{className:"nx-w-full nx-min-w-0 nx-leading-7",children:ee})]})}var eh=er(7294),CopyToClipboard=({getValue:ee,...en})=>{let[er,eo]=(0,eh.useState)(!1);(0,eh.useEffect)(()=>{if(!er)return;let ee=setTimeout(()=>{eo(!1)},2e3);return()=>{clearTimeout(ee)}},[er]);let ei=(0,eh.useCallback)(async()=>{eo(!0),navigator?.clipboard||console.error("Access to clipboard rejected!");try{await navigator.clipboard.writeText(ee())}catch{console.error("Failed to copy!")}},[ee]),es=er?ed.nQ:ed.TI;return(0,ec.jsx)(Button,{onClick:ei,title:"Copy code",tabIndex:0,...en,children:(0,ec.jsx)(es,{className:"nextra-copy-icon nx-pointer-events-none nx-h-4 nx-w-4"})})},Code=({children:ee,className:en,...er})=>{let eo="data-line-numbers"in er;return(0,ec.jsx)("code",{className:(0,eu.Z)("nx-border-black nx-border-opacity-[0.04] nx-bg-opacity-[0.03] nx-bg-black nx-break-words nx-rounded-md nx-border nx-py-0.5 nx-px-[.25em] nx-text-[.9em]","dark:nx-border-white/10 dark:nx-bg-white/10",eo&&"[counter-reset:line]",en),dir:"ltr",...er,children:ee})},Pre=({children:ee,className:en,hasCopyCode:er,filename:eo,...ei})=>{let es=(0,eh.useRef)(null),ef=(0,eh.useCallback)(()=>{let ee=document.documentElement.dataset,en="nextraWordWrap"in ee;en?delete ee.nextraWordWrap:ee.nextraWordWrap=""},[]);return(0,ec.jsxs)("div",{className:"nextra-code-block nx-relative nx-mt-6 first:nx-mt-0",children:[eo&&(0,ec.jsx)("div",{className:"nx-absolute nx-top-0 nx-z-[1] nx-w-full nx-truncate nx-rounded-t-xl nx-bg-primary-700/5 nx-py-2 nx-px-4 nx-text-xs nx-text-gray-700 dark:nx-bg-primary-300/10 dark:nx-text-gray-200",children:eo}),(0,ec.jsx)("pre",{className:(0,eu.Z)("nx-bg-primary-700/5 nx-mb-4 nx-overflow-x-auto nx-rounded-xl nx-subpixel-antialiased dark:nx-bg-primary-300/10 nx-text-[.9em]","contrast-more:nx-border contrast-more:nx-border-primary-900/20 contrast-more:nx-contrast-150 contrast-more:dark:nx-border-primary-100/40",eo?"nx-pt-12 nx-pb-4":"nx-py-4",en),ref:es,...ei,children:ee}),(0,ec.jsxs)("div",{className:(0,eu.Z)("nx-opacity-0 nx-transition [div:hover>&]:nx-opacity-100 focus-within:nx-opacity-100","nx-flex nx-gap-1 nx-absolute nx-m-[11px] nx-right-0",eo?"nx-top-8":"nx-top-0"),children:[(0,ec.jsx)(Button,{onClick:ef,className:"md:nx-hidden",title:"Toggle word wrap",children:(0,ec.jsx)(ed.NK,{className:"nx-pointer-events-none nx-h-4 nx-w-4"})}),er&&(0,ec.jsx)(CopyToClipboard,{getValue:()=>es.current?.querySelector("code")?.textContent||""})]})]})};function Steps({children:ee,className:en,...er}){return(0,ec.jsx)("div",{className:(0,eu.Z)("nextra-steps nx-ml-4 nx-mb-12 nx-border-l nx-border-gray-200 nx-pl-6","dark:nx-border-neutral-800 [counter-reset:step]",en),...er,children:ee})}var em=er(2351),eg=er(9946),ex=er(2984),ev=er(1363),ey=er(4575),eb=er(6723),e_=er(3784),ew=er(4157),ek=er(3855),eC=er(4879),eE=er(6045);function focus_sentinel_A({onFocus:ee}){let[en,er]=(0,eh.useState)(!0),eo=(0,eC.t)();return en?eh.createElement(eE._,{as:"button",type:"button",features:eE.A.Focusable,onFocus:en=>{en.preventDefault();let ei,es=50;function t(){if(es--<=0){ei&&cancelAnimationFrame(ei);return}if(ee()){if(cancelAnimationFrame(ei),!eo.current)return;er(!1);return}ei=requestAnimationFrame(t)}ei=requestAnimationFrame(t)}}):null}var eT=er(3781),eS=er(1021),eO=er(5466);let eP=eh.createContext(null);function a(){return{groups:new Map,get(ee,en){var er;let eo=this.groups.get(ee);eo||(eo=new Map,this.groups.set(ee,eo));let ei=null!=(er=eo.get(en))?er:0;function i(){let ee=eo.get(en);ee>1?eo.set(en,ee-1):eo.delete(en)}return eo.set(en,ei+1),[Array.from(eo.keys()).indexOf(en),i]}}}function stable_collection_C({children:ee}){let en=eh.useRef(a());return eh.createElement(eP.Provider,{value:en},ee)}function stable_collection_d(ee){let en=eh.useContext(eP);if(!en)throw Error("You must wrap your component in a <StableCollection>");let er=f(),[eo,ei]=en.current.get(ee,er);return eh.useEffect(()=>ei,[]),eo}function f(){var ee,en,er;let eo=null!=(er=null==(en=null==(ee=eh.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED)?void 0:ee.ReactCurrentOwner)?void 0:en.current)?er:null;if(!eo)return Symbol();let ei=[],es=eo;for(;es;)ei.push(es.index),es=es.return;return"$."+ei.join(".")}var eR=((eo=eR||{})[eo.Forwards=0]="Forwards",eo[eo.Backwards=1]="Backwards",eo),eI=((ei=eI||{})[ei.Less=-1]="Less",ei[ei.Equal=0]="Equal",ei[ei.Greater=1]="Greater",ei),ej=((es=ej||{})[es.SetSelectedIndex=0]="SetSelectedIndex",es[es.RegisterTab=1]="RegisterTab",es[es.UnregisterTab=2]="UnregisterTab",es[es.RegisterPanel=3]="RegisterPanel",es[es.UnregisterPanel=4]="UnregisterPanel",es);let eN={0(ee,en){var er;let eo=(0,ey.z2)(ee.tabs,ee=>ee.current),ei=(0,ey.z2)(ee.panels,ee=>ee.current),es=eo.filter(ee=>{var en;return!(null!=(en=ee.current)&&en.hasAttribute("disabled"))}),eu={...ee,tabs:eo,panels:ei};if(en.index<0||en.index>eo.length-1){let er=(0,ex.E)(Math.sign(en.index-ee.selectedIndex),{[-1]:()=>1,0:()=>(0,ex.E)(Math.sign(en.index),{[-1]:()=>0,0:()=>0,1:()=>1}),1:()=>0});if(0===es.length)return eu;let ei=(0,ex.E)(er,{0:()=>eo.indexOf(es[0]),1:()=>eo.indexOf(es[es.length-1])});return{...eu,selectedIndex:-1===ei?ee.selectedIndex:ei}}let ec=eo.slice(0,en.index),ed=[...eo.slice(en.index),...ec].find(ee=>es.includes(ee));if(!ed)return eu;let ef=null!=(er=eo.indexOf(ed))?er:ee.selectedIndex;return -1===ef&&(ef=ee.selectedIndex),{...eu,selectedIndex:ef}},1(ee,en){var er;if(ee.tabs.includes(en.tab))return ee;let eo=ee.tabs[ee.selectedIndex],ei=(0,ey.z2)([...ee.tabs,en.tab],ee=>ee.current),es=null!=(er=ei.indexOf(eo))?er:ee.selectedIndex;return -1===es&&(es=ee.selectedIndex),{...ee,tabs:ei,selectedIndex:es}},2:(ee,en)=>({...ee,tabs:ee.tabs.filter(ee=>ee!==en.tab)}),3:(ee,en)=>ee.panels.includes(en.panel)?ee:{...ee,panels:(0,ey.z2)([...ee.panels,en.panel],ee=>ee.current)},4:(ee,en)=>({...ee,panels:ee.panels.filter(ee=>ee!==en.panel)})},eA=(0,eh.createContext)(null);function M(ee){let en=(0,eh.useContext)(eA);if(null===en){let en=Error(`<${ee} /> is missing a parent <Tab.Group /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(en,M),en}return en}eA.displayName="TabsDataContext";let eZ=(0,eh.createContext)(null);function q(ee){let en=(0,eh.useContext)(eZ);if(null===en){let en=Error(`<${ee} /> is missing a parent <Tab.Group /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(en,q),en}return en}function fe(ee,en){return(0,ex.E)(en.type,eN,ee,en)}eZ.displayName="TabsActionsContext";let eL=eh.Fragment;function me(ee,en){let{defaultIndex:er=0,vertical:eo=!1,manual:ei=!1,onChange:es,selectedIndex:eu=null,...ec}=ee,ed=eo?"vertical":"horizontal",ef=ei?"manual":"auto",ep=null!==eu,eg=(0,e_.T)(en),[ex,ev]=(0,eh.useReducer)(fe,{selectedIndex:null!=eu?eu:er,tabs:[],panels:[]}),ew=(0,eh.useMemo)(()=>({selectedIndex:ex.selectedIndex}),[ex.selectedIndex]),eC=(0,ek.E)(es||(()=>{})),eE=(0,ek.E)(ex.tabs),eS=(0,eh.useMemo)(()=>({orientation:ed,activation:ef,...ex}),[ed,ef,ex]),eO=(0,eT.z)(ee=>(ev({type:1,tab:ee}),()=>ev({type:2,tab:ee}))),eP=(0,eT.z)(ee=>(ev({type:3,panel:ee}),()=>ev({type:4,panel:ee}))),eR=(0,eT.z)(ee=>{eI.current!==ee&&eC.current(ee),ep||ev({type:0,index:ee})}),eI=(0,ek.E)(ep?ee.selectedIndex:ex.selectedIndex),ej=(0,eh.useMemo)(()=>({registerTab:eO,registerPanel:eP,change:eR}),[]);(0,eb.e)(()=>{ev({type:0,index:null!=eu?eu:er})},[eu]),(0,eb.e)(()=>{if(void 0===eI.current||ex.tabs.length<=0)return;let ee=(0,ey.z2)(ex.tabs,ee=>ee.current);ee.some((ee,en)=>ex.tabs[en]!==ee)&&eR(ee.indexOf(ex.tabs[eI.current]))});let eN={ref:eg};return eh.createElement(stable_collection_C,null,eh.createElement(eZ.Provider,{value:ej},eh.createElement(eA.Provider,{value:eS},eS.tabs.length<=0&&eh.createElement(focus_sentinel_A,{onFocus:()=>{var ee,en;for(let er of eE.current)if((null==(ee=er.current)?void 0:ee.tabIndex)===0)return null==(en=er.current)||en.focus(),!0;return!1}}),(0,em.sY)({ourProps:eN,theirProps:ec,slot:ew,defaultTag:eL,name:"Tabs"}))))}let eM="div";function xe(ee,en){let{orientation:er,selectedIndex:eo}=M("Tab.List"),ei=(0,e_.T)(en);return(0,em.sY)({ourProps:{ref:ei,role:"tablist","aria-orientation":er},theirProps:ee,slot:{selectedIndex:eo},defaultTag:eM,name:"Tabs.List"})}let e$="button";function ye(ee,en){var er,eo;let ei=(0,eg.M)(),{id:es=`headlessui-tabs-tab-${ei}`,...eu}=ee,{orientation:ec,activation:ed,selectedIndex:ef,tabs:ep,panels:ek}=M("Tab"),eC=q("Tab"),eE=M("Tab"),eP=(0,eh.useRef)(null),eR=(0,e_.T)(eP,en);(0,eb.e)(()=>eC.registerTab(eP),[eC,eP]);let eI=stable_collection_d("tabs"),ej=ep.indexOf(eP);-1===ej&&(ej=eI);let eN=ej===ef,eA=(0,eT.z)(ee=>{var en;let er=ee();if(er===ey.fE.Success&&"auto"===ed){let ee=null==(en=(0,eO.r)(eP))?void 0:en.activeElement,er=eE.tabs.findIndex(en=>en.current===ee);-1!==er&&eC.change(er)}return er}),eZ=(0,eT.z)(ee=>{let en=ep.map(ee=>ee.current).filter(Boolean);if(ee.key===ev.R.Space||ee.key===ev.R.Enter){ee.preventDefault(),ee.stopPropagation(),eC.change(ej);return}switch(ee.key){case ev.R.Home:case ev.R.PageUp:return ee.preventDefault(),ee.stopPropagation(),eA(()=>(0,ey.jA)(en,ey.TO.First));case ev.R.End:case ev.R.PageDown:return ee.preventDefault(),ee.stopPropagation(),eA(()=>(0,ey.jA)(en,ey.TO.Last))}if(eA(()=>(0,ex.E)(ec,{vertical:()=>ee.key===ev.R.ArrowUp?(0,ey.jA)(en,ey.TO.Previous|ey.TO.WrapAround):ee.key===ev.R.ArrowDown?(0,ey.jA)(en,ey.TO.Next|ey.TO.WrapAround):ey.fE.Error,horizontal:()=>ee.key===ev.R.ArrowLeft?(0,ey.jA)(en,ey.TO.Previous|ey.TO.WrapAround):ee.key===ev.R.ArrowRight?(0,ey.jA)(en,ey.TO.Next|ey.TO.WrapAround):ey.fE.Error}))===ey.fE.Success)return ee.preventDefault()}),eL=(0,eh.useRef)(!1),eM=(0,eT.z)(()=>{var ee;eL.current||(eL.current=!0,null==(ee=eP.current)||ee.focus({preventScroll:!0}),eC.change(ej),(0,eS.Y)(()=>{eL.current=!1}))}),eD=(0,eT.z)(ee=>{ee.preventDefault()}),eF=(0,eh.useMemo)(()=>({selected:eN}),[eN]),ez={ref:eR,onKeyDown:eZ,onMouseDown:eD,onClick:eM,id:es,role:"tab",type:(0,ew.f)(ee,eP),"aria-controls":null==(eo=null==(er=ek[ej])?void 0:er.current)?void 0:eo.id,"aria-selected":eN,tabIndex:eN?0:-1};return(0,em.sY)({ourProps:ez,theirProps:eu,slot:eF,defaultTag:e$,name:"Tabs.Tab"})}let eD="div";function Ae(ee,en){let{selectedIndex:er}=M("Tab.Panels"),eo=(0,e_.T)(en),ei=(0,eh.useMemo)(()=>({selectedIndex:er}),[er]);return(0,em.sY)({ourProps:{ref:eo},theirProps:ee,slot:ei,defaultTag:eD,name:"Tabs.Panels"})}let eF="div",ez=em.AN.RenderStrategy|em.AN.Static;function Se(ee,en){var er,eo,ei,es;let eu=(0,eg.M)(),{id:ec=`headlessui-tabs-panel-${eu}`,tabIndex:ed=0,...ef}=ee,{selectedIndex:ep,tabs:ex,panels:ev}=M("Tab.Panel"),ey=q("Tab.Panel"),ew=(0,eh.useRef)(null),ek=(0,e_.T)(ew,en);(0,eb.e)(()=>ey.registerPanel(ew),[ey,ew]);let eC=stable_collection_d("panels"),eT=ev.indexOf(ew);-1===eT&&(eT=eC);let eS=eT===ep,eO=(0,eh.useMemo)(()=>({selected:eS}),[eS]),eP={ref:ek,id:ec,role:"tabpanel","aria-labelledby":null==(eo=null==(er=ex[eT])?void 0:er.current)?void 0:eo.id,tabIndex:eS?ed:-1};return eS||null!=(ei=ef.unmount)&&!ei||null!=(es=ef.static)&&es?(0,em.sY)({ourProps:eP,theirProps:ef,slot:eO,defaultTag:eF,features:ez,visible:eS,name:"Tabs.Panel"}):eh.createElement(eE._,{as:"span",...eP})}let eV=Object.assign((0,em.yV)(ye),{Group:(0,em.yV)(me),List:(0,em.yV)(xe),Panels:(0,em.yV)(Ae),Panel:(0,em.yV)(Se)});function isTabObjectItem(ee){return!!ee&&"object"==typeof ee&&"label"in ee}Object.assign(function({items:ee,selectedIndex:en,defaultIndex:er=0,onChange:eo,children:ei,storageKey:es}){let[ed,ef]=(0,eh.useState)(er);(0,eh.useEffect)(()=>{void 0!==en&&ef(en)},[en]),(0,eh.useEffect)(()=>{if(!es)return;function fn(ee){ee.key===es&&ef(Number(ee.newValue))}let ee=Number(localStorage.getItem(es));return ef(Number.isNaN(ee)?0:ee),window.addEventListener("storage",fn),()=>{window.removeEventListener("storage",fn)}},[]);let ep=(0,eh.useCallback)(ee=>{if(es){let en=String(ee);localStorage.setItem(es,en),window.dispatchEvent(new StorageEvent("storage",{key:es,newValue:en}));return}ef(ee),eo?.(ee)},[]);return(0,ec.jsxs)(eV.Group,{selectedIndex:ed,defaultIndex:er,onChange:ep,children:[(0,ec.jsx)("div",{className:"nextra-scrollbar nx-overflow-x-auto nx-overflow-y-hidden nx-overscroll-x-contain",children:(0,ec.jsx)(eV.List,{className:"nx-mt-4 nx-flex nx-w-max nx-min-w-full nx-border-b nx-border-gray-200 nx-pb-px dark:nx-border-neutral-800",children:ee.map((ee,en)=>{let er=isTabObjectItem(ee)&&ee.disabled;return(0,ec.jsx)(eV,{disabled:er,className:({selected:ee})=>(0,eu.Z)("nx-mr-2 nx-rounded-t nx-p-2 nx-font-medium nx-leading-5 nx-transition-colors","-nx-mb-0.5 nx-select-none nx-border-b-2",ee?"nx-border-primary-500 nx-text-primary-600":"nx-border-transparent nx-text-gray-600 hover:nx-border-gray-200 hover:nx-text-black dark:nx-text-gray-200 dark:hover:nx-border-neutral-800 dark:hover:nx-text-white",er&&"nx-pointer-events-none nx-text-gray-400 dark:nx-text-neutral-600"),children:isTabObjectItem(ee)?ee.label:ee},en)})})}),(0,ec.jsx)(eV.Panels,{children:ei})]})},{displayName:"Tabs",Tab:function({children:ee,...en}){return(0,ec.jsx)(eV.Panel,{...en,className:"nx-rounded nx-pt-6",children:ee})}});var Td=({className:ee="",...en})=>(0,ec.jsx)("td",{className:(0,eu.Z)("nx-m-0 nx-border nx-border-gray-300 nx-px-4 nx-py-2 dark:nx-border-gray-600",ee),...en}),Table=({className:ee="",...en})=>(0,ec.jsx)("table",{className:(0,eu.Z)("nx-block nx-overflow-x-scroll",ee),...en}),Th=({className:ee="",...en})=>(0,ec.jsx)("th",{className:(0,eu.Z)("nx-m-0 nx-border nx-border-gray-300 nx-px-4 nx-py-2 nx-font-semibold dark:nx-border-gray-600",ee),...en}),Tr=({className:ee="",...en})=>(0,ec.jsx)("tr",{className:(0,eu.Z)("nx-m-0 nx-border-t nx-border-gray-300 nx-p-0 dark:nx-border-gray-600","even:nx-bg-gray-100 even:dark:nx-bg-gray-600/20",ee),...en}),eB=er(1664),eW=er.n(eB),eU={cards:(0,eu.Z)("nextra-cards nx-mt-4 nx-gap-4 nx-grid","nx-not-prose"),card:(0,eu.Z)("nextra-card nx-group nx-flex nx-flex-col nx-justify-start nx-overflow-hidden nx-rounded-lg nx-border nx-border-gray-200","nx-text-current nx-no-underline dark:nx-shadow-none","hover:nx-shadow-gray-100 dark:hover:nx-shadow-none nx-shadow-gray-100","active:nx-shadow-sm active:nx-shadow-gray-200","nx-transition-all nx-duration-200 hover:nx-border-gray-300"),title:(0,eu.Z)("nx-flex nx-font-semibold nx-items-start nx-gap-2 nx-p-4 nx-text-gray-700 hover:nx-text-gray-900")},eH=(0,ec.jsx)("span",{className:"nx-transition-transform nx-duration-75 group-hover:nx-translate-x-[2px]",children:"→"});function Card({children:ee,title:en,icon:er,image:eo,arrow:ei,href:es,...ed}){let ef=ei?eH:null;return eo?(0,ec.jsxs)(eW(),{href:es,className:(0,eu.Z)(eU.card,"nx-bg-gray-100 nx-shadow dark:nx-border-neutral-700 dark:nx-bg-neutral-800 dark:nx-text-gray-50 hover:nx-shadow-lg dark:hover:nx-border-neutral-500 dark:hover:nx-bg-neutral-700"),...ed,children:[ee,(0,ec.jsxs)("span",{className:(0,eu.Z)(eU.title,"dark:nx-text-gray-300 dark:hover:nx-text-gray-100"),children:[er,(0,ec.jsxs)("span",{className:"nx-flex nx-gap-1",children:[en,ef]})]})]}):(0,ec.jsx)(eW(),{href:es,className:(0,eu.Z)(eU.card,"nx-bg-transparent nx-shadow-sm dark:nx-border-neutral-800 hover:nx-bg-slate-50 hover:nx-shadow-md dark:hover:nx-border-neutral-700 dark:hover:nx-bg-neutral-900"),...ed,children:(0,ec.jsxs)("span",{className:(0,eu.Z)(eU.title,"dark:nx-text-neutral-200 dark:hover:nx-text-neutral-50 nx-flex nx-items-center"),children:[er,en,ef]})})}var eG=Object.assign(function({children:ee,num:en=3,className:er,style:eo,...ei}){return(0,ec.jsx)("div",{className:(0,eu.Z)(eU.cards,er),...ei,style:{...eo,"--rows":en},children:ee})},{displayName:"Cards",Card}),eK=(0,eh.createContext)(0);function useIndent(){return(0,eh.useContext)(eK)}function Tree({children:ee}){return(0,ec.jsx)("div",{className:(0,eu.Z)("nextra-filetree nx-mt-6 nx-select-none nx-text-sm nx-text-gray-800 dark:nx-text-gray-300","nx-not-prose"),children:(0,ec.jsx)("div",{className:"nx-inline-block nx-rounded-lg nx-border nx-px-4 nx-py-2 dark:nx-border-neutral-800",children:ee})})}function Ident(){let ee=useIndent();return(0,ec.jsx)(ec.Fragment,{children:Array.from({length:ee},(ee,en)=>(0,ec.jsx)("span",{className:"nx-w-5"},en))})}var eq=(0,eh.memo)(({label:ee,name:en,open:er,children:eo,defaultOpen:ei=!1,onToggle:es})=>{let eu=useIndent(),[ed,ef]=(0,eh.useState)(ei),ep=(0,eh.useCallback)(()=>{es?.(!ed),ef(!ed)},[ed,es]),em=void 0===er?ed:er;return(0,ec.jsxs)("li",{className:"nx-flex nx-list-none nx-flex-col",children:[(0,ec.jsxs)("button",{onClick:ep,title:en,className:"nx-inline-flex nx-cursor-pointer nx-items-center nx-py-1 hover:nx-opacity-60",children:[(0,ec.jsx)(Ident,{}),(0,ec.jsx)("svg",{width:"1em",height:"1em",viewBox:"0 0 24 24",children:(0,ec.jsx)("path",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:em?"M5 19a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h4l2 2h4a2 2 0 0 1 2 2v1M5 19h14a2 2 0 0 0 2-2v-5a2 2 0 0 0-2-2H9a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2Z":"M3 7v10a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-6l-2-2H5a2 2 0 0 0-2 2Z"})}),(0,ec.jsx)("span",{className:"nx-ml-1",children:ee??en})]}),em&&(0,ec.jsx)("ul",{children:(0,ec.jsx)(eK.Provider,{value:eu+1,children:eo})})]})});eq.displayName="Folder";var eY=(0,eh.memo)(({label:ee,name:en,active:er})=>(0,ec.jsx)("li",{className:(0,eu.Z)("nx-flex nx-list-none",er&&"nx-text-primary-600 contrast-more:nx-underline"),children:(0,ec.jsxs)("span",{className:"nx-inline-flex nx-cursor-default nx-items-center nx-py-1",children:[(0,ec.jsx)(Ident,{}),(0,ec.jsx)("svg",{width:"1em",height:"1em",viewBox:"0 0 24 24",children:(0,ec.jsx)("path",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5.586a1 1 0 0 1 .707.293l5.414 5.414a1 1 0 0 1 .293.707V19a2 2 0 0 1-2 2Z"})}),(0,ec.jsx)("span",{className:"nx-ml-1",children:ee??en})]})}));eY.displayName="File";var eX=Object.assign(Tree,{Folder:eq,File:eY})},4861:function(ee,en,er){"use strict";er.d(en,{LZ:function(){return ArrowRightIcon},nQ:function(){return CheckIcon},TI:function(){return CopyIcon},D7:function(){return DiscordIcon},Qq:function(){return ExpandIcon},fy:function(){return GitHubIcon},n9:function(){return GlobeIcon},AV:function(){return InformationCircleIcon},Oq:function(){return MenuIcon},kL:function(){return MoonIcon},L4:function(){return SpinnerIcon},NW:function(){return SunIcon},NK:function(){return WordWrapIcon},b0:function(){return XIcon}});var eo=er(5893);function ArrowRightIcon({pathClassName:ee,...en}){return(0,eo.jsx)("svg",{fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",...en,children:(0,eo.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M9 5l7 7-7 7",className:ee})})}function CheckIcon(ee){return(0,eo.jsx)("svg",{viewBox:"0 0 20 20",width:"1em",height:"1em",fill:"currentColor",...ee,children:(0,eo.jsx)("path",{fillRule:"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z",clipRule:"evenodd"})})}function CopyIcon(ee){return(0,eo.jsxs)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",stroke:"currentColor",...ee,children:[(0,eo.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}),(0,eo.jsx)("path",{d:"M5 15H4C2.89543 15 2 14.1046 2 13V4C2 2.89543 2.89543 2 4 2H13C14.1046 2 15 2.89543 15 4V5",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]})}function DiscordIcon(ee){return(0,eo.jsxs)("svg",{width:"24",height:"24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 5 30.67 23.25",...ee,children:[(0,eo.jsx)("title",{children:"Discord"}),(0,eo.jsx)("path",{d:"M26.0015 6.9529C24.0021 6.03845 21.8787 5.37198 19.6623 5C19.3833 5.48048 19.0733 6.13144 18.8563 6.64292C16.4989 6.30193 14.1585 6.30193 11.8336 6.64292C11.6166 6.13144 11.2911 5.48048 11.0276 5C8.79575 5.37198 6.67235 6.03845 4.6869 6.9529C0.672601 12.8736 -0.41235 18.6548 0.130124 24.3585C2.79599 26.2959 5.36889 27.4739 7.89682 28.2489C8.51679 27.4119 9.07477 26.5129 9.55525 25.5675C8.64079 25.2265 7.77283 24.808 6.93587 24.312C7.15286 24.1571 7.36986 23.9866 7.57135 23.8161C12.6241 26.1255 18.0969 26.1255 23.0876 23.8161C23.3046 23.9866 23.5061 24.1571 23.7231 24.312C22.8861 24.808 22.0182 25.2265 21.1037 25.5675C21.5842 26.5129 22.1422 27.4119 22.7621 28.2489C25.2885 27.4739 27.8769 26.2959 30.5288 24.3585C31.1952 17.7559 29.4733 12.0212 26.0015 6.9529ZM10.2527 20.8402C8.73376 20.8402 7.49382 19.4608 7.49382 17.7714C7.49382 16.082 8.70276 14.7025 10.2527 14.7025C11.7871 14.7025 13.0425 16.082 13.0115 17.7714C13.0115 19.4608 11.7871 20.8402 10.2527 20.8402ZM20.4373 20.8402C18.9183 20.8402 17.6768 19.4608 17.6768 17.7714C17.6768 16.082 18.8873 14.7025 20.4373 14.7025C21.9717 14.7025 23.2271 16.082 23.1961 17.7714C23.1961 19.4608 21.9872 20.8402 20.4373 20.8402Z"})]})}function ExpandIcon({isOpen:ee,...en}){return(0,eo.jsxs)("svg",{height:"12",width:"12",viewBox:"0 0 16 16",fill:"currentColor",...en,children:[(0,eo.jsx)("path",{fillRule:"evenodd",d:"M4.177 7.823l2.396-2.396A.25.25 0 017 5.604v4.792a.25.25 0 01-.427.177L4.177 8.177a.25.25 0 010-.354z",className:ee?"":"nx-origin-[35%] nx-rotate-180"}),(0,eo.jsx)("path",{fillRule:"evenodd",d:"M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0114.25 16H1.75A1.75 1.75 0 010 14.25V1.75zm1.75-.25a.25.25 0 00-.25.25v12.5c0 .138.112.25.25.25H9.5v-13H1.75zm12.5 13H11v-13h3.25a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25z"})]})}function GitHubIcon(ee){return(0,eo.jsxs)("svg",{width:"24",height:"24",fill:"currentColor",viewBox:"3 3 18 18",...ee,children:[(0,eo.jsx)("title",{children:"GitHub"}),(0,eo.jsx)("path",{d:"M12 3C7.0275 3 3 7.12937 3 12.2276C3 16.3109 5.57625 19.7597 9.15374 20.9824C9.60374 21.0631 9.77249 20.7863 9.77249 20.5441C9.77249 20.3249 9.76125 19.5982 9.76125 18.8254C7.5 19.2522 6.915 18.2602 6.735 17.7412C6.63375 17.4759 6.19499 16.6569 5.8125 16.4378C5.4975 16.2647 5.0475 15.838 5.80124 15.8264C6.51 15.8149 7.01625 16.4954 7.18499 16.7723C7.99499 18.1679 9.28875 17.7758 9.80625 17.5335C9.885 16.9337 10.1212 16.53 10.38 16.2993C8.3775 16.0687 6.285 15.2728 6.285 11.7432C6.285 10.7397 6.63375 9.9092 7.20749 9.26326C7.1175 9.03257 6.8025 8.08674 7.2975 6.81794C7.2975 6.81794 8.05125 6.57571 9.77249 7.76377C10.4925 7.55615 11.2575 7.45234 12.0225 7.45234C12.7875 7.45234 13.5525 7.55615 14.2725 7.76377C15.9937 6.56418 16.7475 6.81794 16.7475 6.81794C17.2424 8.08674 16.9275 9.03257 16.8375 9.26326C17.4113 9.9092 17.76 10.7281 17.76 11.7432C17.76 15.2843 15.6563 16.0687 13.6537 16.2993C13.98 16.5877 14.2613 17.1414 14.2613 18.0065C14.2613 19.2407 14.25 20.2326 14.25 20.5441C14.25 20.7863 14.4188 21.0746 14.8688 20.9824C16.6554 20.364 18.2079 19.1866 19.3078 17.6162C20.4077 16.0457 20.9995 14.1611 21 12.2276C21 7.12937 16.9725 3 12 3Z"})]})}function GlobeIcon(ee){return(0,eo.jsx)("svg",{viewBox:"2 2 16 16",width:"12",height:"12",fill:"currentColor",...ee,children:(0,eo.jsx)("path",{fillRule:"evenodd",d:"M4.083 9h1.946c.089-1.546.383-2.97.837-4.118A6.004 6.004 0 004.083 9zM10 2a8 8 0 100 16 8 8 0 000-16zm0 2c-.076 0-.232.032-.465.262-.238.234-.497.623-.737 1.182-.389.907-.673 2.142-.766 3.556h3.936c-.093-1.414-.377-2.649-.766-3.556-.24-.56-.5-.948-.737-1.182C10.232 4.032 10.076 4 10 4zm3.971 5c-.089-1.546-.383-2.97-.837-4.118A6.004 6.004 0 0115.917 9h-1.946zm-2.003 2H8.032c.093 1.414.377 2.649.766 3.556.24.56.5.948.737 1.182.233.23.389.262.465.262.076 0 .232-.032.465-.262.238-.234.498-.623.737-1.182.389-.907.673-2.142.766-3.556zm1.166 4.118c.454-1.147.748-2.572.837-4.118h1.946a6.004 6.004 0 01-2.783 4.118zm-6.268 0C6.412 13.97 6.118 12.546 6.03 11H4.083a6.004 6.004 0 002.783 4.118z",clipRule:"evenodd"})})}function InformationCircleIcon(ee){return(0,eo.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",width:"20",height:"20",...ee,children:(0,eo.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z"})})}function MenuIcon(ee){return(0,eo.jsxs)("svg",{fill:"none",width:"24",height:"24",viewBox:"0 0 24 24",stroke:"currentColor",...ee,children:[(0,eo.jsx)("g",{children:(0,eo.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M4 6h16"})}),(0,eo.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M4 12h16"}),(0,eo.jsx)("g",{children:(0,eo.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M4 18h16"})})]})}function MoonIcon(ee){return(0,eo.jsx)("svg",{fill:"none",viewBox:"2 2 20 20",width:"12",height:"12",stroke:"currentColor",...ee,children:(0,eo.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",fill:"currentColor",d:"M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"})})}function SpinnerIcon(ee){return(0,eo.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",width:"24",height:"24",...ee,children:[(0,eo.jsx)("circle",{className:"nx-opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,eo.jsx)("path",{className:"nx-opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]})}function SunIcon(ee){return(0,eo.jsx)("svg",{fill:"none",viewBox:"3 3 18 18",width:"12",height:"12",stroke:"currentColor",...ee,children:(0,eo.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",fill:"currentColor",d:"M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"})})}function WordWrapIcon(ee){return(0,eo.jsx)("svg",{viewBox:"0 0 24 24",width:"24",height:"24",...ee,children:(0,eo.jsx)("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"})})}function XIcon(ee){return(0,eo.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 20 20",fill:"currentColor",...ee,children:(0,eo.jsx)("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})})}},2643:function(ee,en,er){"use strict";er.d(en,{Z:function(){return MDXProvider},a:function(){return mdx_useMDXComponents}});var eo=er(7294);let ei=eo.createContext({});function useMDXComponents(ee){let en=eo.useContext(ei);return eo.useMemo(()=>"function"==typeof ee?ee(en):{...en,...ee},[en,ee])}let es={};function MDXProvider({components:ee,children:en,disableParentContext:er}){let eu;return eu=er?"function"==typeof ee?ee({}):ee||es:useMDXComponents(ee),eo.createElement(ei.Provider,{value:eu},en)}var eu=er(5675),ec=er.n(eu),ed={img:ee=>(0,eo.createElement)("object"==typeof ee.src?ec():"img",ee)},mdx_useMDXComponents=ee=>useMDXComponents({...ed,...ee})},6008:function(ee,en,er){"use strict";var eo=er(2337);function parsePath(ee){var en={protocols:[],protocol:null,port:null,resource:"",host:"",user:"",password:"",pathname:"",hash:"",search:"",href:ee,query:{},parse_failed:!1};try{var er=new URL(ee);en.protocols=eo(er),en.protocol=en.protocols[0],en.port=er.port,en.resource=er.hostname,en.host=er.host,en.user=er.username||"",en.password=er.password||"",en.pathname=er.pathname,en.hash=er.hash.slice(1),en.search=er.search.slice(1),en.href=er.href,en.query=Object.fromEntries(er.searchParams)}catch(er){en.protocols=["file"],en.protocol=en.protocols[0],en.port="",en.resource="",en.user="",en.pathname="",en.hash="",en.search="",en.href=ee,en.query={},en.parse_failed=!0}return en}ee.exports=parsePath},3905:function(ee,en,er){"use strict";var eo=function(ee){return ee&&"object"==typeof ee&&"default"in ee?ee:{default:ee}}(er(6008));let ei="text/plain",es="us-ascii",testParameter=(ee,en)=>en.some(en=>en instanceof RegExp?en.test(ee):en===ee),normalizeDataURL=(ee,{stripHash:en})=>{let er=/^data:(?<type>[^,]*?),(?<data>[^#]*?)(?:#(?<hash>.*))?$/.exec(ee);if(!er)throw Error(`Invalid URL: ${ee}`);let{type:eo,data:eu,hash:ec}=er.groups,ed=eo.split(";");ec=en?"":ec;let ef=!1;"base64"===ed[ed.length-1]&&(ed.pop(),ef=!0);let ep=(ed.shift()||"").toLowerCase(),eh=ed.map(ee=>{let[en,er=""]=ee.split("=").map(ee=>ee.trim());return"charset"===en&&(er=er.toLowerCase())===es?"":`${en}${er?`=${er}`:""}`}).filter(Boolean),em=[...eh];return ef&&em.push("base64"),(em.length>0||ep&&ep!==ei)&&em.unshift(ep),`data:${em.join(";")},${ef?eu.trim():eu}${ec?`#${ec}`:""}`};function normalizeUrl(ee,en){if(en={defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripTextFragment:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeSingleSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...en},ee=ee.trim(),/^data:/i.test(ee))return normalizeDataURL(ee,en);if(/^view-source:/i.test(ee))throw Error("`view-source:` is not supported as it is a non-standard protocol");let er=ee.startsWith("//"),eo=!er&&/^\.*\//.test(ee);eo||(ee=ee.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,en.defaultProtocol));let ei=new URL(ee);if(en.forceHttp&&en.forceHttps)throw Error("The `forceHttp` and `forceHttps` options cannot be used together");if(en.forceHttp&&"https:"===ei.protocol&&(ei.protocol="http:"),en.forceHttps&&"http:"===ei.protocol&&(ei.protocol="https:"),en.stripAuthentication&&(ei.username="",ei.password=""),en.stripHash?ei.hash="":en.stripTextFragment&&(ei.hash=ei.hash.replace(/#?:~:text.*?$/i,"")),ei.pathname){let ee=/\b[a-z][a-z\d+\-.]{1,50}:\/\//g,en=0,er="";for(;;){let eo=ee.exec(ei.pathname);if(!eo)break;let es=eo[0],eu=eo.index,ec=ei.pathname.slice(en,eu);er+=ec.replace(/\/{2,}/g,"/")+es,en=eu+es.length}let eo=ei.pathname.slice(en,ei.pathname.length);er+=eo.replace(/\/{2,}/g,"/"),ei.pathname=er}if(ei.pathname)try{ei.pathname=decodeURI(ei.pathname)}catch{}if(!0===en.removeDirectoryIndex&&(en.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(en.removeDirectoryIndex)&&en.removeDirectoryIndex.length>0){let ee=ei.pathname.split("/"),er=ee[ee.length-1];testParameter(er,en.removeDirectoryIndex)&&(ee=ee.slice(0,-1),ei.pathname=ee.slice(1).join("/")+"/")}if(ei.hostname&&(ei.hostname=ei.hostname.replace(/\.$/,""),en.stripWWW&&/^www\.(?!www\.)[a-z\-\d]{1,63}\.[a-z.\-\d]{2,63}$/.test(ei.hostname)&&(ei.hostname=ei.hostname.replace(/^www\./,""))),Array.isArray(en.removeQueryParameters))for(let ee of[...ei.searchParams.keys()])testParameter(ee,en.removeQueryParameters)&&ei.searchParams.delete(ee);if(!0===en.removeQueryParameters&&(ei.search=""),en.sortQueryParameters){ei.searchParams.sort();try{ei.search=decodeURIComponent(ei.search)}catch{}}en.removeTrailingSlash&&(ei.pathname=ei.pathname.replace(/\/$/,""));let es=ee;return ee=ei.toString(),en.removeSingleSlash||"/"!==ei.pathname||es.endsWith("/")||""!==ei.hash||(ee=ee.replace(/\/$/,"")),(en.removeTrailingSlash||"/"===ei.pathname)&&""===ei.hash&&en.removeSingleSlash&&(ee=ee.replace(/\/$/,"")),er&&!en.normalizeProtocol&&(ee=ee.replace(/^http:\/\//,"//")),en.stripProtocol&&(ee=ee.replace(/^(?:https?:)?\/\//,"")),ee}let parseUrl=(ee,en=!1)=>{let er=/^(?:([a-z_][a-z0-9_-]{0,31})@|https?:\/\/)([\w\.\-@]+)[\/:]([\~,\.\w,\-,\_,\/]+?(?:\.git|\/)?)$/,throwErr=en=>{let er=Error(en);throw er.subject_url=ee,er};"string"==typeof ee&&ee.trim()||throwErr("Invalid url."),ee.length>parseUrl.MAX_INPUT_LENGTH&&throwErr("Input exceeds maximum length. If needed, change the value of parseUrl.MAX_INPUT_LENGTH."),en&&("object"!=typeof en&&(en={stripHash:!1}),ee=normalizeUrl(ee,en));let ei=eo.default(ee);if(ei.parse_failed){let ee=ei.href.match(er);ee?(ei.protocols=["ssh"],ei.protocol="ssh",ei.resource=ee[2],ei.host=ee[2],ei.user=ee[1],ei.pathname=`/${ee[3]}`,ei.parse_failed=!1):throwErr("URL parsing failed.")}return ei};parseUrl.MAX_INPUT_LENGTH=2048,ee.exports=parseUrl},2337:function(ee){"use strict";ee.exports=function(ee,en){!0===en&&(en=0);var er="";if("string"==typeof ee)try{er=new URL(ee).protocol}catch(ee){}else ee&&ee.constructor===URL&&(er=ee.protocol);var eo=er.split(/\:|\+/).filter(Boolean);return"number"==typeof en?eo[en]:eo}},6826:function(ee){var en={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",Ấ:"A",Ắ:"A",Ẳ:"A",Ẵ:"A",Ặ:"A",Æ:"AE",Ầ:"A",Ằ:"A",Ȃ:"A",Ç:"C",Ḉ:"C",È:"E",É:"E",Ê:"E",Ë:"E",Ế:"E",Ḗ:"E",Ề:"E",Ḕ:"E",Ḝ:"E",Ȇ:"E",Ì:"I",Í:"I",Î:"I",Ï:"I",Ḯ:"I",Ȋ:"I",Ð:"D",Ñ:"N",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",Ố:"O",Ṍ:"O",Ṓ:"O",Ȏ:"O",Ù:"U",Ú:"U",Û:"U",Ü:"U",Ý:"Y",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",ấ:"a",ắ:"a",ẳ:"a",ẵ:"a",ặ:"a",æ:"ae",ầ:"a",ằ:"a",ȃ:"a",ç:"c",ḉ:"c",è:"e",é:"e",ê:"e",ë:"e",ế:"e",ḗ:"e",ề:"e",ḕ:"e",ḝ:"e",ȇ:"e",ì:"i",í:"i",î:"i",ï:"i",ḯ:"i",ȋ:"i",ð:"d",ñ:"n",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",ố:"o",ṍ:"o",ṓ:"o",ȏ:"o",ù:"u",ú:"u",û:"u",ü:"u",ý:"y",ÿ:"y",Ā:"A",ā:"a",Ă:"A",ă:"a",Ą:"A",ą:"a",Ć:"C",ć:"c",Ĉ:"C",ĉ:"c",Ċ:"C",ċ:"c",Č:"C",č:"c",C̆:"C",c̆:"c",Ď:"D",ď:"d",Đ:"D",đ:"d",Ē:"E",ē:"e",Ĕ:"E",ĕ:"e",Ė:"E",ė:"e",Ę:"E",ę:"e",Ě:"E",ě:"e",Ĝ:"G",Ǵ:"G",ĝ:"g",ǵ:"g",Ğ:"G",ğ:"g",Ġ:"G",ġ:"g",Ģ:"G",ģ:"g",Ĥ:"H",ĥ:"h",Ħ:"H",ħ:"h",Ḫ:"H",ḫ:"h",Ĩ:"I",ĩ:"i",Ī:"I",ī:"i",Ĭ:"I",ĭ:"i",Į:"I",į:"i",İ:"I",ı:"i",IJ:"IJ",ij:"ij",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",Ḱ:"K",ḱ:"k",K̆:"K",k̆:"k",Ĺ:"L",ĺ:"l",Ļ:"L",ļ:"l",Ľ:"L",ľ:"l",Ŀ:"L",ŀ:"l",Ł:"l",ł:"l",Ḿ:"M",ḿ:"m",M̆:"M",m̆:"m",Ń:"N",ń:"n",Ņ:"N",ņ:"n",Ň:"N",ň:"n",ʼn:"n",N̆:"N",n̆:"n",Ō:"O",ō:"o",Ŏ:"O",ŏ:"o",Ő:"O",ő:"o",Œ:"OE",œ:"oe",P̆:"P",p̆:"p",Ŕ:"R",ŕ:"r",Ŗ:"R",ŗ:"r",Ř:"R",ř:"r",R̆:"R",r̆:"r",Ȓ:"R",ȓ:"r",Ś:"S",ś:"s",Ŝ:"S",ŝ:"s",Ş:"S",Ș:"S",ș:"s",ş:"s",Š:"S",š:"s",Ţ:"T",ţ:"t",ț:"t",Ț:"T",Ť:"T",ť:"t",Ŧ:"T",ŧ:"t",T̆:"T",t̆:"t",Ũ:"U",ũ:"u",Ū:"U",ū:"u",Ŭ:"U",ŭ:"u",Ů:"U",ů:"u",Ű:"U",ű:"u",Ų:"U",ų:"u",Ȗ:"U",ȗ:"u",V̆:"V",v̆:"v",Ŵ:"W",ŵ:"w",Ẃ:"W",ẃ:"w",X̆:"X",x̆:"x",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Y̆:"Y",y̆:"y",Ź:"Z",ź:"z",Ż:"Z",ż:"z",Ž:"Z",ž:"z",ſ:"s",ƒ:"f",Ơ:"O",ơ:"o",Ư:"U",ư:"u",Ǎ:"A",ǎ:"a",Ǐ:"I",ǐ:"i",Ǒ:"O",ǒ:"o",Ǔ:"U",ǔ:"u",Ǖ:"U",ǖ:"u",Ǘ:"U",ǘ:"u",Ǚ:"U",ǚ:"u",Ǜ:"U",ǜ:"u",Ứ:"U",ứ:"u",Ṹ:"U",ṹ:"u",Ǻ:"A",ǻ:"a",Ǽ:"AE",ǽ:"ae",Ǿ:"O",ǿ:"o",Þ:"TH",þ:"th",Ṕ:"P",ṕ:"p",Ṥ:"S",ṥ:"s",X́:"X",x́:"x",Ѓ:"Г",ѓ:"г",Ќ:"К",ќ:"к",A̋:"A",a̋:"a",E̋:"E",e̋:"e",I̋:"I",i̋:"i",Ǹ:"N",ǹ:"n",Ồ:"O",ồ:"o",Ṑ:"O",ṑ:"o",Ừ:"U",ừ:"u",Ẁ:"W",ẁ:"w",Ỳ:"Y",ỳ:"y",Ȁ:"A",ȁ:"a",Ȅ:"E",ȅ:"e",Ȉ:"I",ȉ:"i",Ȍ:"O",ȍ:"o",Ȑ:"R",ȑ:"r",Ȕ:"U",ȕ:"u",B̌:"B",b̌:"b",Č̣:"C",č̣:"c",Ê̌:"E",ê̌:"e",F̌:"F",f̌:"f",Ǧ:"G",ǧ:"g",Ȟ:"H",ȟ:"h",J̌:"J",ǰ:"j",Ǩ:"K",ǩ:"k",M̌:"M",m̌:"m",P̌:"P",p̌:"p",Q̌:"Q",q̌:"q",Ř̩:"R",ř̩:"r",Ṧ:"S",ṧ:"s",V̌:"V",v̌:"v",W̌:"W",w̌:"w",X̌:"X",x̌:"x",Y̌:"Y",y̌:"y",A̧:"A",a̧:"a",B̧:"B",b̧:"b",Ḑ:"D",ḑ:"d",Ȩ:"E",ȩ:"e",Ɛ̧:"E",ɛ̧:"e",Ḩ:"H",ḩ:"h",I̧:"I",i̧:"i",Ɨ̧:"I",ɨ̧:"i",M̧:"M",m̧:"m",O̧:"O",o̧:"o",Q̧:"Q",q̧:"q",U̧:"U",u̧:"u",X̧:"X",x̧:"x",Z̧:"Z",z̧:"z"},er=Object.keys(en).join("|"),eo=RegExp(er,"g"),ei=RegExp(er,""),removeAccents=function(ee){return ee.replace(eo,function(ee){return en[ee]})},hasAccents=function(ee){return!!ee.match(ei)};ee.exports=removeAccents,ee.exports.has=hasAccents,ee.exports.remove=removeAccents},7462:function(ee,en,er){"use strict";function _extends(){return(_extends=Object.assign?Object.assign.bind():function(ee){for(var en=1;en<arguments.length;en++){var er=arguments[en];for(var eo in er)Object.prototype.hasOwnProperty.call(er,eo)&&(ee[eo]=er[eo])}return ee}).apply(this,arguments)}er.d(en,{Z:function(){return _extends}})},1363:function(ee,en,er){"use strict";er.d(en,{R:function(){return ei}});var eo,ei=((eo=ei||{}).Space=" ",eo.Enter="Enter",eo.Escape="Escape",eo.Backspace="Backspace",eo.Delete="Delete",eo.ArrowLeft="ArrowLeft",eo.ArrowUp="ArrowUp",eo.ArrowRight="ArrowRight",eo.ArrowDown="ArrowDown",eo.Home="Home",eo.End="End",eo.PageUp="PageUp",eo.PageDown="PageDown",eo.Tab="Tab",eo)},3781:function(ee,en,er){"use strict";er.d(en,{z:function(){return o}});var eo=er(7294),ei=er(3855);let o=function(ee){let en=(0,ei.E)(ee);return eo.useCallback((...ee)=>en.current(...ee),[en])}},9946:function(ee,en,er){"use strict";er.d(en,{M:function(){return ed}});var eo,ei=er(7294),es=er(6723),eu=er(2180),ec=er(7896);let ed=null!=(eo=ei.useId)?eo:function(){let ee=(0,eu.H)(),[en,er]=ei.useState(ee?()=>ec.O.nextId():null);return(0,es.e)(()=>{null===en&&er(ec.O.nextId())},[en]),null!=en?""+en:void 0}},4879:function(ee,en,er){"use strict";er.d(en,{t:function(){return f}});var eo=er(7294),ei=er(6723);function f(){let ee=(0,eo.useRef)(!1);return(0,ei.e)(()=>(ee.current=!0,()=>{ee.current=!1}),[]),ee}},6723:function(ee,en,er){"use strict";er.d(en,{e:function(){return l}});var eo=er(7294),ei=er(7896);let l=(ee,en)=>{ei.O.isServer?(0,eo.useEffect)(ee,en):(0,eo.useLayoutEffect)(ee,en)}},3855:function(ee,en,er){"use strict";er.d(en,{E:function(){return s}});var eo=er(7294),ei=er(6723);function s(ee){let en=(0,eo.useRef)(ee);return(0,ei.e)(()=>{en.current=ee},[ee]),en}},4157:function(ee,en,er){"use strict";er.d(en,{f:function(){return s}});var eo=er(7294),ei=er(6723);function i(ee){var en;if(ee.type)return ee.type;let er=null!=(en=ee.as)?en:"button";if("string"==typeof er&&"button"===er.toLowerCase())return"button"}function s(ee,en){let[er,es]=(0,eo.useState)(()=>i(ee));return(0,ei.e)(()=>{es(i(ee))},[ee.type,ee.as]),(0,ei.e)(()=>{er||en.current&&en.current instanceof HTMLButtonElement&&!en.current.hasAttribute("type")&&es("button")},[er,en]),er}},2180:function(ee,en,er){"use strict";er.d(en,{H:function(){return l}});var eo,ei=er(7294),es=er(7896);function s(){let ee="undefined"==typeof document;return(0,(eo||(eo=er.t(ei,2))).useSyncExternalStore)(()=>()=>{},()=>!1,()=>!ee)}function l(){let ee=s(),[en,er]=ei.useState(es.O.isHandoffComplete);return en&&!1===es.O.isHandoffComplete&&er(!1),ei.useEffect(()=>{!0!==en&&er(!0)},[en]),ei.useEffect(()=>es.O.handoff(),[]),!ee&&en}},3784:function(ee,en,er){"use strict";er.d(en,{T:function(){return y}});var eo=er(7294),ei=er(3781);let es=Symbol();function y(...ee){let en=(0,eo.useRef)(ee);(0,eo.useEffect)(()=>{en.current=ee},[ee]);let er=(0,ei.z)(ee=>{for(let er of en.current)null!=er&&("function"==typeof er?er(ee):er.current=ee)});return ee.every(ee=>null==ee||(null==ee?void 0:ee[es]))?void 0:er}},6045:function(ee,en,er){"use strict";er.d(en,{A:function(){return eu},_:function(){return ec}});var eo,ei=er(2351);let es="div";var eu=((eo=eu||{})[eo.None=1]="None",eo[eo.Focusable=2]="Focusable",eo[eo.Hidden=4]="Hidden",eo);function s(ee,en){let{features:er=1,...eo}=ee,eu={ref:en,"aria-hidden":(2&er)==2||void 0,style:{position:"fixed",top:1,left:1,width:1,height:0,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0",...(4&er)==4&&(2&er)!=2&&{display:"none"}}};return(0,ei.sY)({ourProps:eu,theirProps:eo,slot:{},defaultTag:es,name:"Hidden"})}let ec=(0,ei.yV)(s)},4067:function(ee,en,er){"use strict";function t(...ee){return Array.from(new Set(ee.flatMap(ee=>"string"==typeof ee?ee.split(" "):[]))).filter(Boolean).join(" ")}er.d(en,{A:function(){return t}})},9362:function(ee,en,er){"use strict";er.d(en,{k:function(){return o}});var eo=er(1021);function o(){let ee=[],en={addEventListener:(ee,er,eo,ei)=>(ee.addEventListener(er,eo,ei),en.add(()=>ee.removeEventListener(er,eo,ei))),requestAnimationFrame(...ee){let er=requestAnimationFrame(...ee);return en.add(()=>cancelAnimationFrame(er))},nextFrame:(...ee)=>en.requestAnimationFrame(()=>en.requestAnimationFrame(...ee)),setTimeout(...ee){let er=setTimeout(...ee);return en.add(()=>clearTimeout(er))},microTask(...ee){let er={current:!0};return(0,eo.Y)(()=>{er.current&&ee[0]()}),en.add(()=>{er.current=!1})},style(ee,en,er){let eo=ee.style.getPropertyValue(en);return Object.assign(ee.style,{[en]:er}),this.add(()=>{Object.assign(ee.style,{[en]:eo})})},group(ee){let en=o();return ee(en),this.add(()=>en.dispose())},add:en=>(ee.push(en),()=>{let er=ee.indexOf(en);if(er>=0)for(let en of ee.splice(er,1))en()}),dispose(){for(let en of ee.splice(0))en()}};return en}},7896:function(ee,en,er){"use strict";er.d(en,{O:function(){return ei}});var eo=Object.defineProperty,d=(ee,en,er)=>en in ee?eo(ee,en,{enumerable:!0,configurable:!0,writable:!0,value:er}):ee[en]=er,r=(ee,en,er)=>(d(ee,"symbol"!=typeof en?en+"":en,er),er);let o=class o{constructor(){r(this,"current",this.detect()),r(this,"handoffState","pending"),r(this,"currentId",0)}set(ee){this.current!==ee&&(this.handoffState="pending",this.currentId=0,this.current=ee)}reset(){this.set(this.detect())}nextId(){return++this.currentId}get isServer(){return"server"===this.current}get isClient(){return"client"===this.current}detect(){return"undefined"==typeof window||"undefined"==typeof document?"server":"client"}handoff(){"pending"===this.handoffState&&(this.handoffState="complete")}get isHandoffComplete(){return"complete"===this.handoffState}};let ei=new o},4575:function(ee,en,er){"use strict";er.d(en,{EO:function(){return _},TO:function(){return em},fE:function(){return eg},jA:function(){return O},sP:function(){return h},tJ:function(){return ev},wI:function(){return D},z2:function(){return I}});var eo,ei,es,eu,ec,ed=er(9362),ef=er(2984),ep=er(5466);let eh=["[contentEditable=true]","[tabindex]","a[href]","area[href]","button:not([disabled])","iframe","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].map(ee=>`${ee}:not([tabindex='-1'])`).join(",");var em=((eo=em||{})[eo.First=1]="First",eo[eo.Previous=2]="Previous",eo[eo.Next=4]="Next",eo[eo.Last=8]="Last",eo[eo.WrapAround=16]="WrapAround",eo[eo.NoScroll=32]="NoScroll",eo),eg=((ei=eg||{})[ei.Error=0]="Error",ei[ei.Overflow=1]="Overflow",ei[ei.Success=2]="Success",ei[ei.Underflow=3]="Underflow",ei),ex=((es=ex||{})[es.Previous=-1]="Previous",es[es.Next=1]="Next",es);function f(ee=document.body){return null==ee?[]:Array.from(ee.querySelectorAll(eh)).sort((ee,en)=>Math.sign((ee.tabIndex||Number.MAX_SAFE_INTEGER)-(en.tabIndex||Number.MAX_SAFE_INTEGER)))}var ev=((eu=ev||{})[eu.Strict=0]="Strict",eu[eu.Loose=1]="Loose",eu);function h(ee,en=0){var er;return ee!==(null==(er=(0,ep.r)(ee))?void 0:er.body)&&(0,ef.E)(en,{0:()=>ee.matches(eh),1(){let en=ee;for(;null!==en;){if(en.matches(eh))return!0;en=en.parentElement}return!1}})}function D(ee){let en=(0,ep.r)(ee);(0,ed.k)().nextFrame(()=>{en&&!h(en.activeElement,0)&&y(ee)})}var ey=((ec=ey||{})[ec.Keyboard=0]="Keyboard",ec[ec.Mouse=1]="Mouse",ec);function y(ee){null==ee||ee.focus({preventScroll:!0})}"undefined"!=typeof window&&"undefined"!=typeof document&&(document.addEventListener("keydown",ee=>{ee.metaKey||ee.altKey||ee.ctrlKey||(document.documentElement.dataset.headlessuiFocusVisible="")},!0),document.addEventListener("click",ee=>{1===ee.detail?delete document.documentElement.dataset.headlessuiFocusVisible:0===ee.detail&&(document.documentElement.dataset.headlessuiFocusVisible="")},!0));let eb="textarea,input";function H(ee){var en,er;return null!=(er=null==(en=null==ee?void 0:ee.matches)?void 0:en.call(ee,eb))&&er}function I(ee,en=ee=>ee){return ee.slice().sort((ee,er)=>{let eo=en(ee),ei=en(er);if(null===eo||null===ei)return 0;let es=eo.compareDocumentPosition(ei);return es&Node.DOCUMENT_POSITION_FOLLOWING?-1:es&Node.DOCUMENT_POSITION_PRECEDING?1:0})}function _(ee,en){return O(f(),en,{relativeTo:ee})}function O(ee,en,{sorted:er=!0,relativeTo:eo=null,skipElements:ei=[]}={}){let es=Array.isArray(ee)?ee.length>0?ee[0].ownerDocument:document:ee.ownerDocument,eu=Array.isArray(ee)?er?I(ee):ee:f(ee);ei.length>0&&eu.length>1&&(eu=eu.filter(ee=>!ei.includes(ee))),eo=null!=eo?eo:es.activeElement;let ec=(()=>{if(5&en)return 1;if(10&en)return -1;throw Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),ed=(()=>{if(1&en)return 0;if(2&en)return Math.max(0,eu.indexOf(eo))-1;if(4&en)return Math.max(0,eu.indexOf(eo))+1;if(8&en)return eu.length-1;throw Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),ef=32&en?{preventScroll:!0}:{},ep=0,eh=eu.length,em;do{if(ep>=eh||ep+eh<=0)return 0;let ee=ed+ep;if(16&en)ee=(ee+eh)%eh;else{if(ee<0)return 3;if(ee>=eh)return 1}null==(em=eu[ee])||em.focus(ef),ep+=ec}while(em!==es.activeElement);return 6&en&&H(em)&&em.select(),2}},2984:function(ee,en,er){"use strict";function u(ee,en,...er){if(ee in en){let eo=en[ee];return"function"==typeof eo?eo(...er):eo}let eo=Error(`Tried to handle "${ee}" but there is no handler defined. Only defined handlers are: ${Object.keys(en).map(ee=>`"${ee}"`).join(", ")}.`);throw Error.captureStackTrace&&Error.captureStackTrace(eo,u),eo}er.d(en,{E:function(){return u}})},1021:function(ee,en,er){"use strict";function t(ee){"function"==typeof queueMicrotask?queueMicrotask(ee):Promise.resolve().then(ee).catch(ee=>setTimeout(()=>{throw ee}))}er.d(en,{Y:function(){return t}})},5466:function(ee,en,er){"use strict";er.d(en,{r:function(){return e}});var eo=er(7896);function e(ee){return eo.O.isServer?null:ee instanceof Node?ee.ownerDocument:null!=ee&&ee.hasOwnProperty("current")&&ee.current instanceof Node?ee.current.ownerDocument:document}},2351:function(ee,en,er){"use strict";er.d(en,{AN:function(){return ed},l4:function(){return ef},oA:function(){return R},sY:function(){return X},yV:function(){return D}});var eo,ei,es=er(7294),eu=er(4067),ec=er(2984),ed=((eo=ed||{})[eo.None=0]="None",eo[eo.RenderStrategy=1]="RenderStrategy",eo[eo.Static=2]="Static",eo),ef=((ei=ef||{})[ei.Unmount=0]="Unmount",ei[ei.Hidden=1]="Hidden",ei);function X({ourProps:ee,theirProps:en,slot:er,defaultTag:eo,features:ei,visible:es=!0,name:eu}){let ed=N(en,ee);if(es)return c(ed,er,eo,eu);let ef=null!=ei?ei:0;if(2&ef){let{static:ee=!1,...en}=ed;if(ee)return c(en,er,eo,eu)}if(1&ef){let{unmount:ee=!0,...en}=ed;return(0,ec.E)(ee?0:1,{0:()=>null,1:()=>c({...en,hidden:!0,style:{display:"none"}},er,eo,eu)})}return c(ed,er,eo,eu)}function c(ee,en={},er,eo){let{as:ei=er,children:ec,refName:ed="ref",...ef}=g(ee,["unmount","static"]),ep=void 0!==ee.ref?{[ed]:ee.ref}:{},eh="function"==typeof ec?ec(en):ec;"className"in ef&&ef.className&&"function"==typeof ef.className&&(ef.className=ef.className(en));let em={};if(en){let ee=!1,er=[];for(let[eo,ei]of Object.entries(en))"boolean"==typeof ei&&(ee=!0),!0===ei&&er.push(eo);ee&&(em["data-headlessui-state"]=er.join(" "))}if(ei===es.Fragment&&Object.keys(R(ef)).length>0){if(!(0,es.isValidElement)(eh)||Array.isArray(eh)&&eh.length>1)throw Error(['Passing props on "Fragment"!',"",`The current component <${eo} /> is rendering a "Fragment".`,"However we need to passthrough the following props:",Object.keys(ef).map(ee=>` - ${ee}`).join(` + `}),ei]})]})}var rB={link:(0,eN.Z)("nx-flex nx-max-w-[50%] nx-items-center nx-gap-1 nx-py-4 nx-text-base nx-font-medium nx-text-gray-600 nx-transition-colors [word-break:break-word] hover:nx-text-primary-600 dark:nx-text-gray-300 md:nx-text-lg"),icon:(0,eN.Z)("nx-inline nx-h-5 nx-shrink-0")},NavLinks=({flatDirectories:ee,currentIndex:en})=>{let er=useConfig(),eo=er.navigation,ei="boolean"==typeof eo?{prev:eo,next:eo}:eo,es=ei.prev&&ee[en-1],eu=ei.next&&ee[en+1];return(es&&!es.isUnderCurrentDocsTree&&(es=!1),eu&&!eu.isUnderCurrentDocsTree&&(eu=!1),es||eu)?(0,eC.jsxs)("div",{className:(0,eN.Z)("nx-mb-8 nx-flex nx-items-center nx-border-t nx-pt-8 dark:nx-border-neutral-800","contrast-more:nx-border-neutral-400 dark:contrast-more:nx-border-neutral-400","print:nx-hidden"),children:[es&&(0,eC.jsxs)(rM,{href:es.route,title:es.title,className:(0,eN.Z)(rB.link,"ltr:nx-pr-4 rtl:nx-pl-4"),children:[(0,eC.jsx)(eM.LZ,{className:(0,eN.Z)(rB.icon,"ltr:nx-rotate-180")}),es.title]}),eu&&(0,eC.jsxs)(rM,{href:eu.route,title:eu.title,className:(0,eN.Z)(rB.link,"ltr:nx-ml-auto ltr:nx-pl-4 ltr:nx-text-right rtl:nx-mr-auto rtl:nx-pr-4 rtl:nx-text-left"),children:[eu.title,(0,eC.jsx)(eM.LZ,{className:(0,eN.Z)(rB.icon,"rtl:nx-rotate-180")})]})]}):null},rW={link:(0,eN.Z)("nx-text-sm contrast-more:nx-text-gray-700 contrast-more:dark:nx-text-gray-100"),active:(0,eN.Z)("nx-font-medium nx-subpixel-antialiased"),inactive:(0,eN.Z)("nx-text-gray-600 hover:nx-text-gray-800 dark:nx-text-gray-400 dark:hover:nx-text-gray-200")};function NavbarMenu({className:ee,menu:en,children:er}){let{items:eo}=en,ei=Object.fromEntries((en.children||[]).map(ee=>[ee.name,ee]));return(0,eC.jsx)("div",{className:"nx-relative nx-inline-block",children:(0,eC.jsxs)(rp,{children:[(0,eC.jsx)(rp.Button,{className:(0,eN.Z)(ee,"-nx-ml-2 nx-hidden nx-items-center nx-whitespace-nowrap nx-rounded nx-p-2 md:nx-inline-flex",rW.inactive),children:er}),(0,eC.jsx)(nN,{leave:"nx-transition-opacity",leaveFrom:"nx-opacity-100",leaveTo:"nx-opacity-0",children:(0,eC.jsx)(rp.Items,{className:"nx-absolute nx-right-0 nx-z-20 nx-mt-1 nx-max-h-64 nx-min-w-full nx-overflow-auto nx-rounded-md nx-ring-1 nx-ring-black/5 nx-bg-white nx-py-1 nx-text-sm nx-shadow-lg dark:nx-ring-white/20 dark:nx-bg-neutral-800",tabIndex:0,children:Object.entries(eo||{}).map(([ee,er])=>{var eo;return(0,eC.jsx)(rp.Item,{children:(0,eC.jsx)(rM,{href:er.href||(null==(eo=ei[ee])?void 0:eo.route)||en.route+"/"+ee,className:(0,eN.Z)("nx-relative nx-hidden nx-w-full nx-select-none nx-whitespace-nowrap nx-text-gray-600 hover:nx-text-gray-900 dark:nx-text-gray-400 dark:hover:nx-text-gray-100 md:nx-inline-block","nx-py-1.5 nx-transition-colors ltr:nx-pl-3 ltr:nx-pr-9 rtl:nx-pr-3 rtl:nx-pl-9"),newWindow:er.newWindow,children:er.title||ee})},ee)})})})]})})}function Navbar({flatDirectories:ee,items:en}){let er=useConfig(),eo=useFSRoute(),{menu:ei,setMenu:es}=useMenu();return(0,eC.jsxs)("div",{className:"nextra-nav-container nx-sticky nx-top-0 nx-z-20 nx-w-full nx-bg-transparent print:nx-hidden",children:[(0,eC.jsx)("div",{className:(0,eN.Z)("nextra-nav-container-blur","nx-pointer-events-none nx-absolute nx-z-[-1] nx-h-full nx-w-full nx-bg-white dark:nx-bg-dark","nx-shadow-[0_2px_4px_rgba(0,0,0,.02),0_1px_0_rgba(0,0,0,.06)] dark:nx-shadow-[0_-1px_0_rgba(255,255,255,.1)_inset]","contrast-more:nx-shadow-[0_0_0_1px_#000] contrast-more:dark:nx-shadow-[0_0_0_1px_#fff]")}),(0,eC.jsxs)("nav",{className:"nx-mx-auto nx-flex nx-h-[var(--nextra-navbar-height)] nx-max-w-[90rem] nx-items-center nx-justify-end nx-gap-2 nx-pl-[max(env(safe-area-inset-left),1.5rem)] nx-pr-[max(env(safe-area-inset-right),1.5rem)]",children:[er.logoLink?(0,eC.jsx)(rM,{href:"string"==typeof er.logoLink?er.logoLink:"/",className:"nx-flex nx-items-center hover:nx-opacity-75 ltr:nx-mr-auto rtl:nx-ml-auto",children:renderComponent(er.logo)}):(0,eC.jsx)("div",{className:"nx-flex nx-items-center ltr:nx-mr-auto rtl:nx-ml-auto",children:renderComponent(er.logo)}),en.map(ee=>{if("hidden"===ee.display)return null;if("menu"===ee.type){let en=ee;return(0,eC.jsxs)(NavbarMenu,{className:(0,eN.Z)(rW.link,"nx-flex nx-gap-1",rW.inactive),menu:en,children:[en.title,(0,eC.jsx)(eM.LZ,{className:"nx-h-[18px] nx-min-w-[18px] nx-rounded-sm nx-p-0.5",pathClassName:"nx-origin-center nx-transition-transform nx-rotate-90"})]},en.title)}let en=ee,er=en.href||en.route||"#";en.children&&(er=(en.withIndexPage?en.route:en.firstChildRoute)||er);let ei=en.route===eo||eo.startsWith(en.route+"/");return(0,eC.jsxs)(rM,{href:er,className:(0,eN.Z)(rW.link,"nx-relative -nx-ml-2 nx-hidden nx-whitespace-nowrap nx-p-2 md:nx-inline-block",!ei||en.newWindow?rW.inactive:rW.active),newWindow:en.newWindow,"aria-current":!en.newWindow&&ei,children:[(0,eC.jsx)("span",{className:"nx-absolute nx-inset-x-0 nx-text-center",children:en.title}),(0,eC.jsx)("span",{className:"nx-invisible nx-font-medium",children:en.title})]},er)}),renderComponent(er.search.component,{directories:ee,className:"nx-hidden md:nx-inline-block mx-min-w-[200px]"}),er.project.link?(0,eC.jsx)(rM,{className:"nx-p-2 nx-text-current",href:er.project.link,newWindow:!0,children:renderComponent(er.project.icon)}):null,er.chat.link?(0,eC.jsx)(rM,{className:"nx-p-2 nx-text-current",href:er.chat.link,newWindow:!0,children:renderComponent(er.chat.icon)}):null,renderComponent(er.navbar.extraContent),(0,eC.jsx)("button",{type:"button","aria-label":"Menu",className:"nextra-hamburger -nx-mr-2 nx-rounded nx-p-2 active:nx-bg-gray-400/20 md:nx-hidden",onClick:()=>es(!ei),children:(0,eC.jsx)(eM.Oq,{className:(0,eN.Z)({open:ei})})})]})]})}var rU=Object.create(null),rH=(0,ej.createContext)(null),rG=(0,ej.createContext)(null),rK=(0,ej.createContext)(0),rq=(0,ej.memo)(function(ee){let en=(0,ej.useContext)(rK);return(0,eC.jsx)(rK.Provider,{value:en+1,children:(0,eC.jsx)(FolderImpl,__spreadValues({},ee))})}),rY={link:(0,eN.Z)("nx-flex nx-rounded nx-px-2 nx-py-1.5 nx-text-sm nx-transition-colors [word-break:break-word]","nx-cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] contrast-more:nx-border"),inactive:(0,eN.Z)("nx-text-gray-500 hover:nx-bg-gray-100 hover:nx-text-gray-900","dark:nx-text-neutral-400 dark:hover:nx-bg-primary-100/5 dark:hover:nx-text-gray-50","contrast-more:nx-text-gray-900 contrast-more:dark:nx-text-gray-50","contrast-more:nx-border-transparent contrast-more:hover:nx-border-gray-900 contrast-more:dark:hover:nx-border-gray-50"),active:(0,eN.Z)("nx-bg-primary-100 nx-font-semibold nx-text-primary-800 dark:nx-bg-primary-400/10 dark:nx-text-primary-600","contrast-more:nx-border-primary-500 contrast-more:dark:nx-border-primary-500"),list:(0,eN.Z)("nx-flex nx-flex-col nx-gap-1"),border:(0,eN.Z)("nx-relative before:nx-absolute before:nx-inset-y-1",'before:nx-w-px before:nx-bg-gray-200 before:nx-content-[""] dark:before:nx-bg-neutral-800',"ltr:nx-pl-3 ltr:before:nx-left-0 rtl:nx-pr-3 rtl:before:nx-right-0")};function FolderImpl({item:ee,anchors:en}){let er=useFSRoute(),[eo]=er.split("#"),ei=[eo,eo+"/"].includes(ee.route+"/"),es=ei||eo.startsWith(ee.route+"/"),eu=(0,ej.useContext)(rH),ec=!!(null==eu?void 0:eu.startsWith(ee.route+"/")),ed=(0,ej.useContext)(rK),{setMenu:ef}=useMenu(),ep=useConfig(),{theme:eh}=ee,em=void 0===rU[ee.route]?ei||es||ec||(eh&&"collapsed"in eh?!eh.collapsed:ed<ep.sidebar.defaultMenuCollapseLevel):rU[ee.route]||ec,eg=(0,ej.useState)({})[1];if((0,ej.useEffect)(()=>{let updateTreeState=()=>{(es||ec)&&(rU[ee.route]=!0)},updateAndPruneTreeState=()=>{es&&ec?rU[ee.route]=!0:delete rU[ee.route]};ep.sidebar.autoCollapse?updateAndPruneTreeState():updateTreeState()},[es,ec,ee.route,ep.sidebar.autoCollapse]),"menu"===ee.type){let en=ee,er=Object.fromEntries((en.children||[]).map(ee=>[ee.name,ee]));ee.children=Object.entries(en.items||{}).map(([ee,eo])=>{let ei=er[ee]||__spreadProps(__spreadValues({name:ee},"locale"in en&&{locale:en.locale}),{route:en.route+"/"+ee});return __spreadValues(__spreadValues({},ei),eo)})}let ex="withIndexPage"in ee&&ee.withIndexPage,ev=ex?rM:"button";return(0,eC.jsxs)("li",{className:(0,eN.Z)({open:em,active:ei}),children:[(0,eC.jsxs)(ev,{href:ex?ee.route:void 0,className:(0,eN.Z)("nx-items-center nx-justify-between nx-gap-2",!ex&&"nx-text-left nx-w-full",rY.link,ei?rY.active:rY.inactive),onClick:en=>{let er=["svg","path"].includes(en.target.tagName.toLowerCase());if(er&&en.preventDefault(),ex){ei||er?rU[ee.route]=!em:(rU[ee.route]=!0,ef(!1)),eg({});return}ei||(rU[ee.route]=!em,eg({}))},children:[renderComponent(ep.sidebar.titleComponent,{title:ee.title,type:ee.type,route:ee.route}),(0,eC.jsx)(eM.LZ,{className:"nx-h-[18px] nx-min-w-[18px] nx-rounded-sm nx-p-0.5 hover:nx-bg-gray-800/5 dark:hover:nx-bg-gray-100/5",pathClassName:(0,eN.Z)("nx-origin-center nx-transition-transform rtl:-nx-rotate-180",em&&"ltr:nx-rotate-90 rtl:nx-rotate-[-270deg]")})]}),(0,eC.jsx)(Collapse,{className:"ltr:nx-pr-0 rtl:nx-pl-0 nx-pt-1",isOpen:em,children:Array.isArray(ee.children)?(0,eC.jsx)(Menu2,{className:(0,eN.Z)(rY.border,"ltr:nx-ml-3 rtl:nx-mr-3"),directories:ee.children,base:ee.route,anchors:en}):null})]})}function Separator({title:ee}){let en=useConfig();return(0,eC.jsx)("li",{className:(0,eN.Z)("[word-break:break-word]",ee?"nx-mt-5 nx-mb-2 nx-px-2 nx-py-1.5 nx-text-sm nx-font-semibold nx-text-gray-900 first:nx-mt-0 dark:nx-text-gray-100":"nx-my-4"),children:ee?renderComponent(en.sidebar.titleComponent,{title:ee,type:"separator",route:""}):(0,eC.jsx)("hr",{className:"nx-mx-2 nx-border-t nx-border-gray-200 dark:nx-border-primary-100/10"})})}function File({item:ee,anchors:en}){let er=useFSRoute(),eo=(0,ej.useContext)(rG),ei=ee.route&&[er,er+"/"].includes(ee.route+"/"),es=useActiveAnchor(),{setMenu:eu}=useMenu(),ec=useConfig();return"separator"===ee.type?(0,eC.jsx)(Separator,{title:ee.title}):(0,eC.jsxs)("li",{className:(0,eN.Z)(rY.list,{active:ei}),children:[(0,eC.jsx)(rM,{href:ee.href||ee.route,newWindow:ee.newWindow,className:(0,eN.Z)(rY.link,ei?rY.active:rY.inactive),onClick:()=>{eu(!1)},onFocus:()=>{null==eo||eo(ee.route)},onBlur:()=>{null==eo||eo(null)},children:renderComponent(ec.sidebar.titleComponent,{title:ee.title,type:ee.type,route:ee.route})}),ei&&en.length>0&&(0,eC.jsx)("ul",{className:(0,eN.Z)(rY.list,rY.border,"ltr:nx-ml-3 rtl:nx-mr-3"),children:en.map(({id:ee,value:en})=>{var er;return(0,eC.jsx)("li",{children:(0,eC.jsx)("a",{href:`#${ee}`,className:(0,eN.Z)(rY.link,'nx-flex nx-gap-2 before:nx-opacity-25 before:nx-content-["#"]',(null==(er=es[ee])?void 0:er.isActive)?rY.active:rY.inactive),onClick:()=>{eu(!1)},children:en})},ee)})})]})}function Menu2({directories:ee,anchors:en,className:er,onlyCurrentDocs:eo}){return(0,eC.jsx)("ul",{className:(0,eN.Z)(rY.list,er),children:ee.map(ee=>!eo||ee.isUnderCurrentDocsTree?"menu"===ee.type||ee.children&&(ee.children.length||!ee.withIndexPage)?(0,eC.jsx)(rq,{item:ee,anchors:en},ee.name):(0,eC.jsx)(File,{item:ee,anchors:en},ee.name):null)})}function Sidebar({docsDirectories:ee,flatDirectories:en,fullDirectories:er,asPopover:eo=!1,headings:ei,includePlaceholder:es}){let eu=useConfig(),{menu:ec,setMenu:ed}=useMenu(),ef=(0,eI.useRouter)(),[ep,eh]=(0,ej.useState)(null),[em,eg]=(0,ej.useState)(!0),[ex,ev]=(0,ej.useState)(!1),ey=(0,ej.useMemo)(()=>ei.filter(ee=>2===ee.depth),[ei]),eb=(0,ej.useRef)(null),e_=(0,ej.useRef)(null),ew=useMounted();(0,ej.useEffect)(()=>{ec?document.body.classList.add("nx-overflow-hidden","md:nx-overflow-auto"):document.body.classList.remove("nx-overflow-hidden","md:nx-overflow-auto")},[ec]),(0,ej.useEffect)(()=>{var ee;let en=null==(ee=eb.current)?void 0:ee.querySelector("li.active");if(en&&(window.innerWidth>767||ec)){let scroll=()=>{dist_e(en,{block:"center",inline:"center",scrollMode:"always",boundary:e_.current})};ec?setTimeout(scroll,300):scroll()}},[ec]),(0,ej.useEffect)(()=>{ed(!1)},[ef.asPath,ed]);let ek=eu.i18n.length>0,eE=eu.darkMode||ek||eu.sidebar.toggleButton;return(0,eC.jsxs)(eC.Fragment,{children:[es&&eo?(0,eC.jsx)("div",{className:"max-xl:nx-hidden nx-h-0 nx-w-64 nx-shrink-0"}):null,(0,eC.jsx)("div",{className:(0,eN.Z)("motion-reduce:nx-transition-none [transition:background-color_1.5s_ease]",ec?"nx-fixed nx-inset-0 nx-z-10 nx-bg-black/80 dark:nx-bg-black/60":"nx-bg-transparent"),onClick:()=>ed(!1)}),(0,eC.jsxs)("aside",{className:(0,eN.Z)("nextra-sidebar-container nx-flex nx-flex-col","md:nx-top-16 md:nx-shrink-0 motion-reduce:nx-transform-none","nx-transform-gpu nx-transition-all nx-ease-in-out","print:nx-hidden",em?"md:nx-w-64":"md:nx-w-20",eo?"md:nx-hidden":"md:nx-sticky md:nx-self-start",ec?"max-md:[transform:translate3d(0,0,0)]":"max-md:[transform:translate3d(0,-100%,0)]"),ref:e_,children:[(0,eC.jsx)("div",{className:"nx-px-4 nx-pt-4 md:nx-hidden",children:renderComponent(eu.search.component,{directories:en})}),(0,eC.jsx)(rH.Provider,{value:ep,children:(0,eC.jsx)(rG.Provider,{value:ee=>{eh(ee)},children:(0,eC.jsxs)("div",{className:(0,eN.Z)("nx-overflow-y-auto nx-overflow-x-hidden","nx-p-4 nx-grow md:nx-h-[calc(100vh-var(--nextra-navbar-height)-var(--nextra-menu-height))]",em?"nextra-scrollbar":"no-scrollbar"),ref:eb,children:[(!eo||!em)&&(0,eC.jsx)(Collapse,{isOpen:em,horizontal:!0,children:(0,eC.jsx)(Menu2,{className:"nextra-menu-desktop max-md:nx-hidden",directories:ee,anchors:eu.toc.float?[]:ey,onlyCurrentDocs:!0})}),ew&&window.innerWidth<768&&(0,eC.jsx)(Menu2,{className:"nextra-menu-mobile md:nx-hidden",directories:er,anchors:ey})]})})}),eE&&(0,eC.jsxs)("div",{className:(0,eN.Z)("nx-sticky nx-bottom-0","nx-bg-white dark:nx-bg-dark","nx-mx-4 nx-py-4 nx-shadow-[0_-12px_16px_#fff]","nx-flex nx-items-center nx-gap-2","dark:nx-border-neutral-800 dark:nx-shadow-[0_-12px_16px_#111]","contrast-more:nx-border-neutral-400 contrast-more:nx-shadow-none contrast-more:dark:nx-shadow-none",em?(0,eN.Z)(ek&&"nx-justify-end","nx-border-t"):"nx-py-4 nx-flex-wrap nx-justify-center"),"data-toggle-animation":ex?em?"show":"hide":"off",children:[(0,eC.jsx)(LocaleSwitch,{lite:!em,className:(0,eN.Z)(em?"nx-grow":"max-md:nx-grow")}),eu.darkMode&&(0,eC.jsx)("div",{className:em&&!ek?"nx-grow nx-flex nx-flex-col":"",children:renderComponent(eu.themeSwitch.component,{lite:!em||ek})}),eu.sidebar.toggleButton&&(0,eC.jsx)("button",{title:em?"Hide sidebar":"Show sidebar",className:"max-md:nx-hidden nx-h-7 nx-rounded-md nx-transition-colors nx-text-gray-600 dark:nx-text-gray-400 nx-px-2 hover:nx-bg-gray-100 hover:nx-text-gray-900 dark:hover:nx-bg-primary-100/5 dark:hover:nx-text-gray-50",onClick:()=>{eg(!em),ev(!0)},children:(0,eC.jsx)(eM.Qq,{isOpen:em})})]})]})]})}var rX="reach-skip-nav",rQ="Skip to content";(0,ej.forwardRef)(function(ee,en){var er=ee,{className:eo,id:ei,label:es=rQ,styled:eu}=er,ec=__objRest(er,["className","id","label","styled"]);let ed=void 0===eo?eu?(0,eN.Z)("nx-sr-only","focus:nx-not-sr-only focus:nx-fixed focus:nx-z-50 focus:nx-m-3 focus:nx-ml-4 focus:nx-h-[calc(var(--nextra-navbar-height)-1.5rem)] focus:nx-rounded-lg focus:nx-border focus:nx-px-3 focus:nx-py-2 focus:nx-align-middle focus:nx-text-sm focus:nx-font-bold","focus:nx-text-gray-900 focus:dark:nx-text-gray-100","focus:nx-bg-white focus:dark:nx-bg-neutral-900","focus:nx-border-neutral-400 focus:dark:nx-border-neutral-800"):"":eo;return(0,eC.jsx)("a",__spreadProps(__spreadValues({},ec),{ref:en,href:`#${ei||rX}`,className:ed,"data-reach-skip-link":"",children:es}))}).displayName="SkipNavLink";var rJ=(0,ej.forwardRef)(function(ee,en){var er=ee,{id:eo}=er,ei=__objRest(er,["id"]);return(0,eC.jsx)("div",__spreadProps(__spreadValues({},ei),{ref:en,id:eo||rX}))});rJ.displayName="SkipNavContent";var r0=tP.strictObject({light:tP.string(),dark:tP.string(),system:tP.string()});function ThemeSwitch({lite:ee,className:en}){let{setTheme:er,resolvedTheme:eo,theme:ei=""}=y(),es=useMounted(),eu=useConfig().themeSwitch,ec=es&&"dark"===eo?eM.kL:eM.NW,ed="function"==typeof eu.useOptions?eu.useOptions():eu.useOptions;return(0,eC.jsx)(Select,{className:en,title:"Change theme",options:[{key:"light",name:ed.light},{key:"dark",name:ed.dark},{key:"system",name:ed.system}],onChange:ee=>{er(ee.key)},selected:{key:ei,name:(0,eC.jsxs)("div",{className:"nx-flex nx-items-center nx-gap-2 nx-capitalize",children:[(0,eC.jsx)(ec,{}),(0,eC.jsx)("span",{className:ee?"md:nx-hidden":"",children:es?ed[ei]:ed.light})]})}})}function scrollToTop(){window.scrollTo({top:0,behavior:"smooth"})}function BackToTop({className:ee}){let en=(0,ej.useRef)(null);return(0,ej.useEffect)(()=>{function toggleVisible(){var ee;let{scrollTop:er}=document.documentElement;null==(ee=en.current)||ee.classList.toggle("nx-opacity-0",er<300)}return window.addEventListener("scroll",toggleVisible),()=>{window.removeEventListener("scroll",toggleVisible)}},[]),(0,eC.jsxs)("button",{ref:en,"aria-hidden":"true",onClick:scrollToTop,className:(0,eN.Z)("nx-flex nx-items-center nx-gap-1.5 nx-transition nx-opacity-0",ee),children:["Scroll to top",(0,eC.jsx)(eM.LZ,{className:"-nx-rotate-90 nx-w-3.5 nx-h-3.5 nx-border nx-rounded-full nx-border-current"})]})}var r1=(0,eN.Z)("nx-text-xs nx-font-medium nx-text-gray-500 hover:nx-text-gray-900 dark:nx-text-gray-400 dark:hover:nx-text-gray-100","contrast-more:nx-text-gray-800 contrast-more:dark:nx-text-gray-50");function TOC({headings:ee,filePath:en}){var er;let eo=useActiveAnchor(),ei=useConfig(),es=(0,ej.useRef)(null),eu=(0,ej.useMemo)(()=>ee.filter(ee=>ee.depth>1),[ee]),ec=eu.length>0,ed=!!(ei.feedback.content||ei.editLink.component||ei.toc.extraContent),ef=null==(er=Object.entries(eo).find(([,{isActive:ee}])=>ee))?void 0:er[0];return(0,ej.useEffect)(()=>{var ee;if(!ef)return;let en=null==(ee=es.current)?void 0:ee.querySelector(`li > a[href="#${ef}"]`);en&&dist_e(en,{behavior:"smooth",block:"center",inline:"center",scrollMode:"always",boundary:es.current})},[ef]),(0,eC.jsxs)("div",{ref:es,className:(0,eN.Z)("nextra-scrollbar nx-sticky nx-top-16 nx-overflow-y-auto nx-pr-4 nx-pt-6 nx-text-sm [hyphens:auto]","nx-max-h-[calc(100vh-var(--nextra-navbar-height)-env(safe-area-inset-bottom))] ltr:-nx-mr-4 rtl:-nx-ml-4"),children:[ec&&(0,eC.jsxs)(eC.Fragment,{children:[(0,eC.jsx)("p",{className:"nx-mb-4 nx-font-semibold nx-tracking-tight",children:renderComponent(ei.toc.title)}),(0,eC.jsx)("ul",{children:eu.map(({id:ee,value:en,depth:er})=>{var es,eu,ec,ed;return(0,eC.jsx)("li",{className:"nx-my-2 nx-scroll-my-6 nx-scroll-py-6",children:(0,eC.jsx)("a",{href:`#${ee}`,className:(0,eN.Z)({2:"nx-font-semibold",3:"ltr:nx-pl-4 rtl:nx-pr-4",4:"ltr:nx-pl-8 rtl:nx-pr-8",5:"ltr:nx-pl-12 rtl:nx-pr-12",6:"ltr:nx-pl-16 rtl:nx-pr-16"}[er],"nx-inline-block",(null==(es=eo[ee])?void 0:es.isActive)?"nx-text-primary-600 nx-subpixel-antialiased contrast-more:!nx-text-primary-600":"nx-text-gray-500 hover:nx-text-gray-900 dark:nx-text-gray-400 dark:hover:nx-text-gray-300","contrast-more:nx-text-gray-900 contrast-more:nx-underline contrast-more:dark:nx-text-gray-50 nx-w-full nx-break-words"),children:null!=(ed=null==(ec=(eu=ei.toc).headingComponent)?void 0:ec.call(eu,{id:ee,children:en}))?ed:en})},ee)})})]}),ed&&(0,eC.jsxs)("div",{className:(0,eN.Z)(ec&&"nx-mt-8 nx-border-t nx-bg-white nx-pt-8 nx-shadow-[0_-12px_16px_white] dark:nx-bg-dark dark:nx-shadow-[0_-12px_16px_#111]","nx-sticky nx-bottom-0 nx-flex nx-flex-col nx-items-start nx-gap-2 nx-pb-8 dark:nx-border-neutral-800","contrast-more:nx-border-t contrast-more:nx-border-neutral-400 contrast-more:nx-shadow-none contrast-more:dark:nx-border-neutral-400"),children:[ei.feedback.content?(0,eC.jsx)(rM,{className:r1,href:ei.feedback.useLink(),newWindow:!0,children:renderComponent(ei.feedback.content)}):null,renderComponent(ei.editLink.component,{filePath:en,className:r1,children:renderComponent(ei.editLink.text)}),renderComponent(ei.toc.extraContent),ei.toc.backToTop&&(0,eC.jsx)(BackToTop,{className:r1})]})]})}function MatchSorterSearch({className:ee,directories:en}){let[er,eo]=(0,ej.useState)(""),ei=(0,ej.useMemo)(()=>er?matchSorter(en,er,{keys:["title"]}).map(({route:ee,title:en})=>({id:ee+en,route:ee,children:(0,eC.jsx)(r$,{value:en,match:er})})):[],[er,en]);return(0,eC.jsx)(Search,{value:er,onChange:eo,className:ee,overlayClassName:"nx-w-full",results:ei})}var r2="en-US",r4="undefined"!=typeof window;function isReactNode(ee){return null==ee||"string"==typeof ee||isFunction(ee)||(0,ej.isValidElement)(ee)}function isFunction(ee){return"function"==typeof ee}var r5=tP.array(tP.strictObject({direction:tP.enum(["ltr","rtl"]).optional(),locale:tP.string(),text:tP.string()})),r7=[isReactNode,{message:"Must be React.ReactNode or React.FC"}],r3=[isFunction,{message:"Must be React.FC"}];tP.strictObject({banner:tP.strictObject({dismissible:tP.boolean(),key:tP.string(),text:tP.custom(...r7).optional()}),chat:tP.strictObject({icon:tP.custom(...r7),link:tP.string().startsWith("https://").optional()}),components:tP.record(tP.custom(...r3)).optional(),darkMode:tP.boolean(),direction:tP.enum(["ltr","rtl"]),docsRepositoryBase:tP.string().startsWith("https://"),editLink:tP.strictObject({component:tP.custom(...r3),text:tP.custom(...r7)}),faviconGlyph:tP.string().optional(),feedback:tP.strictObject({content:tP.custom(...r7),labels:tP.string(),useLink:tP.function().returns(tP.string())}),footer:tP.strictObject({component:tP.custom(...r7),text:tP.custom(...r7)}),gitTimestamp:tP.custom(...r7),head:tP.custom(...r7),i18n:r5,logo:tP.custom(...r7),logoLink:tP.boolean().or(tP.string()),main:tP.custom(...r3).optional(),navbar:tP.strictObject({component:tP.custom(...r7),extraContent:tP.custom(...r7).optional()}),navigation:tP.boolean().or(tP.strictObject({next:tP.boolean(),prev:tP.boolean()})),nextThemes:tP.strictObject({defaultTheme:tP.string(),forcedTheme:tP.string().optional(),storageKey:tP.string()}),notFound:tP.strictObject({content:tP.custom(...r7),labels:tP.string()}),primaryHue:tP.number().or(tP.strictObject({dark:tP.number(),light:tP.number()})),primarySaturation:tP.number().or(tP.strictObject({dark:tP.number(),light:tP.number()})),project:tP.strictObject({icon:tP.custom(...r7),link:tP.string().startsWith("https://").optional()}),search:tP.strictObject({component:tP.custom(...r7),emptyResult:tP.custom(...r7),error:tP.string().or(tP.function().returns(tP.string())),loading:tP.custom(...r7),placeholder:tP.string().or(tP.function().returns(tP.string()))}),serverSideError:tP.strictObject({content:tP.custom(...r7),labels:tP.string()}),sidebar:tP.strictObject({autoCollapse:tP.boolean().optional(),defaultMenuCollapseLevel:tP.number().min(1).int(),titleComponent:tP.custom(...r7),toggleButton:tP.boolean()}),themeSwitch:tP.strictObject({component:tP.custom(...r7),useOptions:r0.or(tP.function().returns(r0))}),toc:tP.strictObject({backToTop:tP.boolean(),component:tP.custom(...r7),extraContent:tP.custom(...r7),float:tP.boolean(),headingComponent:tP.custom(...r3).optional(),title:tP.custom(...r7)}),useNextSeoProps:tP.custom(isFunction)}).deepPartial().extend({i18n:r5.optional()});var r6={"en-US":"Loading",fr:"Сhargement",ru:"Загрузка","zh-CN":"正在加载"},r9={"en-US":"Search documentation",fr:"Rechercher documents",ru:"Поиск документации","zh-CN":"搜索文档"},r8={banner:{dismissible:!0,key:"nextra-banner"},chat:{icon:(0,eC.jsxs)(eC.Fragment,{children:[(0,eC.jsx)(eM.D7,{}),(0,eC.jsx)("span",{className:"nx-sr-only",children:"Discord"})]})},darkMode:!0,direction:"ltr",docsRepositoryBase:"https://github.com/shuding/nextra",editLink:{component:function({className:ee,filePath:en,children:er}){let eo=useGitEditUrl(en);return eo?(0,eC.jsx)(rM,{className:ee,href:eo,children:er}):null},text:"Edit this page"},feedback:{content:"Question? Give us feedback →",labels:"feedback",useLink(){let ee=useConfig();return getGitIssueUrl({labels:ee.feedback.labels,repository:ee.docsRepositoryBase,title:`Feedback for \u201C${ee.title}\u201D`})}},footer:{component:Footer,text:`MIT ${new Date().getFullYear()} \xa9 Nextra.`},gitTimestamp:function({timestamp:ee}){let{locale:en=r2}=(0,eI.useRouter)();return(0,eC.jsxs)(eC.Fragment,{children:["Last updated on"," ",(0,eC.jsx)("time",{dateTime:ee.toISOString(),children:ee.toLocaleDateString(en,{day:"numeric",month:"long",year:"numeric"})})]})},head:(0,eC.jsxs)(eC.Fragment,{children:[(0,eC.jsx)("meta",{name:"msapplication-TileColor",content:"#fff"}),(0,eC.jsx)("meta",{httpEquiv:"Content-Language",content:"en"}),(0,eC.jsx)("meta",{name:"description",content:"Nextra: the next docs builder"}),(0,eC.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,eC.jsx)("meta",{name:"twitter:site",content:"@shuding_"}),(0,eC.jsx)("meta",{property:"og:title",content:"Nextra: the next docs builder"}),(0,eC.jsx)("meta",{property:"og:description",content:"Nextra: the next docs builder"}),(0,eC.jsx)("meta",{name:"apple-mobile-web-app-title",content:"Nextra"})]}),i18n:[],logo:(0,eC.jsxs)(eC.Fragment,{children:[(0,eC.jsx)("span",{className:"nx-font-extrabold",children:"Nextra"}),(0,eC.jsx)("span",{className:"nx-ml-2 nx-hidden nx-font-normal nx-text-gray-600 md:nx-inline",children:"The Next Docs Builder"})]}),logoLink:!0,navbar:{component:Navbar},navigation:!0,nextThemes:{defaultTheme:"system",storageKey:"theme"},notFound:{content:"Submit an issue about broken link →",labels:"bug"},primaryHue:{dark:204,light:212},primarySaturation:{dark:100,light:100},project:{icon:(0,eC.jsxs)(eC.Fragment,{children:[(0,eC.jsx)(eM.fy,{}),(0,eC.jsx)("span",{className:"nx-sr-only",children:"GitHub"})]})},search:{component:function({className:ee,directories:en}){let er=useConfig();return er.flexsearch?(0,eC.jsx)(Flexsearch,{className:ee}):(0,eC.jsx)(MatchSorterSearch,{className:ee,directories:en})},emptyResult:(0,eC.jsx)("span",{className:"nx-block nx-select-none nx-p-8 nx-text-center nx-text-sm nx-text-gray-400",children:"No results found."}),error:"Failed to load search index.",loading:function(){let{locale:ee,defaultLocale:en=r2}=(0,eI.useRouter)(),er=ee&&r6[ee]||r6[en];return(0,eC.jsxs)(eC.Fragment,{children:[er,"…"]})},placeholder:function(){let{locale:ee,defaultLocale:en=r2}=(0,eI.useRouter)(),er=ee&&r9[ee]||r9[en];return`${er}\u2026`}},serverSideError:{content:"Submit an issue about error in url →",labels:"bug"},sidebar:{defaultMenuCollapseLevel:2,titleComponent:({title:ee})=>(0,eC.jsx)(eC.Fragment,{children:ee}),toggleButton:!1},themeSwitch:{component:ThemeSwitch,useOptions(){let{locale:ee}=(0,eI.useRouter)();return"zh-CN"===ee?{dark:"深色主题",light:"浅色主题",system:"系统默认"}:{dark:"Dark",light:"Light",system:"System"}}},toc:{backToTop:!1,component:TOC,float:!0,title:"On This Page"},useNextSeoProps:()=>({titleTemplate:"%s – Nextra"})},ot=Object.entries(r8).map(([ee,en])=>{let er=en&&"object"==typeof en&&!Array.isArray(en)&&!(0,ej.isValidElement)(en);if(er)return ee}).filter(Boolean);if(r4){let ee;let addResizingClass=()=>{document.body.classList.add("resizing"),clearTimeout(ee),ee=setTimeout(()=>{document.body.classList.remove("resizing")},200)};window.addEventListener("resize",addResizingClass)}function HeadingLink(ee){var en=ee,{tag:er,context:eo,children:ei,id:es,className:eu}=en,ec=__objRest(en,["tag","context","children","id","className"]);let ed=useSetActiveAnchor(),ef=useSlugs(),ep=useIntersectionObserver(),eh=(0,ej.useRef)(null);return(0,ej.useEffect)(()=>{if(!es)return;let ee=eh.current;if(ee)return ef.set(ee,[es,eo.index+=1]),null==ep||ep.observe(ee),()=>{null==ep||ep.disconnect(),ef.delete(ee),ed(ee=>{let en=__spreadValues({},ee);return delete en[es],en})}},[es,eo,ef,ep,ed]),(0,eC.jsxs)(er,__spreadProps(__spreadValues({className:"sr-only"===eu?"nx-sr-only":(0,eN.Z)("nx-font-semibold nx-tracking-tight nx-text-slate-900 dark:nx-text-slate-100",{h2:"nx-mt-10 nx-border-b nx-pb-1 nx-text-3xl nx-border-neutral-200/70 contrast-more:nx-border-neutral-400 dark:nx-border-primary-100/10 contrast-more:dark:nx-border-neutral-400",h3:"nx-mt-8 nx-text-2xl",h4:"nx-mt-8 nx-text-xl",h5:"nx-mt-8 nx-text-lg",h6:"nx-mt-8 nx-text-base"}[er])},ec),{children:[ei,es&&(0,eC.jsx)("a",{href:`#${es}`,id:es,className:"subheading-anchor","aria-label":"Permalink for this section",ref:eh})]}))}var findSummary=ee=>{let en=null,er=[];return ej.Children.forEach(ee,(ee,eo)=>{var ei;if(ee&&ee.type===Summary){en||(en=ee);return}let es=ee;if(!en&&ee&&"object"==typeof ee&&ee.type!==Details&&"props"in ee&&ee.props){let er=findSummary(ee.props.children);en=er[0],es=(0,ej.cloneElement)(ee,__spreadProps(__spreadValues({},ee.props),{children:(null==(ei=er[1])?void 0:ei.length)?er[1]:void 0,key:eo}))}er.push(es)}),[en,er]},Details=ee=>{var en=ee,{children:er,open:eo}=en,ei=__objRest(en,["children","open"]);let[es,eu]=(0,ej.useState)(!!eo),[ec,ed]=findSummary(er),[ef,ep]=(0,ej.useState)(es);return(0,ej.useEffect)(()=>{if(es)ep(!0);else{let ee=setTimeout(()=>ep(es),500);return()=>clearTimeout(ee)}},[es]),(0,eC.jsxs)("details",__spreadProps(__spreadValues(__spreadProps(__spreadValues({className:"nx-my-4 nx-rounded nx-border nx-border-gray-200 nx-bg-white nx-p-2 nx-shadow-sm first:nx-mt-0 dark:nx-border-neutral-800 dark:nx-bg-neutral-900"},ei),{open:ef}),es&&{"data-expanded":!0}),{children:[(0,eC.jsx)(rZ,{value:eu,children:ec}),(0,eC.jsx)(Collapse,{isOpen:es,children:ed})]}))},Summary=ee=>{let en=useDetails();return(0,eC.jsx)("summary",__spreadProps(__spreadValues({className:(0,eN.Z)("nx-flex nx-items-center nx-cursor-pointer nx-list-none nx-p-1 nx-transition-colors hover:nx-bg-gray-100 dark:hover:nx-bg-neutral-800","before:nx-mr-1 before:nx-inline-block before:nx-transition-transform before:nx-content-[''] dark:before:nx-invert before:nx-shrink-0","rtl:before:nx-rotate-180 [[data-expanded]>&]:before:nx-rotate-90")},ee),{onClick:ee=>{ee.preventDefault(),en(ee=>!ee)}}))},on=/https?:\/\//,Link=ee=>{var en=ee,{href:er="",className:eo}=en,ei=__objRest(en,["href","className"]);return(0,eC.jsx)(rM,__spreadValues({href:er,newWindow:on.test(er),className:(0,eN.Z)("nx-text-primary-600 nx-underline nx-decoration-from-font [text-underline-position:from-font]",eo)},ei))},A=ee=>{var en=ee,{href:er=""}=en,eo=__objRest(en,["href"]);return(0,eC.jsx)(rM,__spreadValues({href:er,newWindow:on.test(er)},eo))},getComponents=({isRawLayout:ee,components:en})=>{if(ee)return{a:A};let er={index:0};return __spreadValues({h1:ee=>(0,eC.jsx)("h1",__spreadValues({className:"nx-mt-2 nx-text-4xl nx-font-bold nx-tracking-tight nx-text-slate-900 dark:nx-text-slate-100"},ee)),h2:ee=>(0,eC.jsx)(HeadingLink,__spreadValues({tag:"h2",context:er},ee)),h3:ee=>(0,eC.jsx)(HeadingLink,__spreadValues({tag:"h3",context:er},ee)),h4:ee=>(0,eC.jsx)(HeadingLink,__spreadValues({tag:"h4",context:er},ee)),h5:ee=>(0,eC.jsx)(HeadingLink,__spreadValues({tag:"h5",context:er},ee)),h6:ee=>(0,eC.jsx)(HeadingLink,__spreadValues({tag:"h6",context:er},ee)),ul:ee=>(0,eC.jsx)("ul",__spreadValues({className:"nx-mt-6 nx-list-disc first:nx-mt-0 ltr:nx-ml-6 rtl:nx-mr-6"},ee)),ol:ee=>(0,eC.jsx)("ol",__spreadValues({className:"nx-mt-6 nx-list-decimal first:nx-mt-0 ltr:nx-ml-6 rtl:nx-mr-6"},ee)),li:ee=>(0,eC.jsx)("li",__spreadValues({className:"nx-my-2"},ee)),blockquote:ee=>(0,eC.jsx)("blockquote",__spreadValues({className:(0,eN.Z)("nx-mt-6 nx-border-gray-300 nx-italic nx-text-gray-700 dark:nx-border-gray-700 dark:nx-text-gray-400","first:nx-mt-0 ltr:nx-border-l-2 ltr:nx-pl-6 rtl:nx-border-r-2 rtl:nx-pr-6")},ee)),hr:ee=>(0,eC.jsx)("hr",__spreadValues({className:"nx-my-8 nx-border-neutral-200/70 contrast-more:nx-border-neutral-400 dark:nx-border-primary-100/10 contrast-more:dark:nx-border-neutral-400"},ee)),a:Link,table:ee=>(0,eC.jsx)(ry.iA,__spreadValues({className:"nextra-scrollbar nx-mt-6 nx-p-0 first:nx-mt-0"},ee)),p:ee=>(0,eC.jsx)("p",__spreadValues({className:"nx-mt-6 nx-leading-7 first:nx-mt-0"},ee)),tr:ry.Tr,th:ry.Th,td:ry.Td,details:Details,summary:Summary,pre:ry.SU,code:ry.EK},en)},or={toc:(0,eN.Z)("nextra-toc nx-order-last nx-hidden nx-w-64 nx-shrink-0 xl:nx-block print:nx-hidden"),main:(0,eN.Z)("nx-w-full nx-break-words")},Body=({themeContext:ee,breadcrumb:en,timestamp:er,navigation:eo,children:ei})=>{var es;let eu=useConfig(),ec=useMounted();if("raw"===ee.layout)return(0,eC.jsx)("div",{className:or.main,children:ei});let ed=ee.timestamp&&eu.gitTimestamp&&er?new Date(er):null,ef=ec&&ed?(0,eC.jsx)("div",{className:"nx-mt-12 nx-mb-8 nx-block nx-text-xs nx-text-gray-500 ltr:nx-text-right rtl:nx-text-left dark:nx-text-gray-400",children:renderComponent(eu.gitTimestamp,{timestamp:ed})}):(0,eC.jsx)("div",{className:"nx-mt-16"}),ep=(0,eC.jsxs)(eC.Fragment,{children:[ei,ef,eo]}),eh=(null==(es=eu.main)?void 0:es.call(eu,{children:ep}))||ep;return"full"===ee.layout?(0,eC.jsx)("article",{className:(0,eN.Z)(or.main,"nextra-content nx-min-h-[calc(100vh-var(--nextra-navbar-height))] nx-pl-[max(env(safe-area-inset-left),1.5rem)] nx-pr-[max(env(safe-area-inset-right),1.5rem)]"),children:eh}):(0,eC.jsx)("article",{className:(0,eN.Z)(or.main,"nextra-content nx-flex nx-min-h-[calc(100vh-var(--nextra-navbar-height))] nx-min-w-0 nx-justify-center nx-pb-8 nx-pr-[calc(env(safe-area-inset-right)-1.5rem)]","article"===ee.typesetting&&"nextra-body-typesetting-article"),children:(0,eC.jsxs)("main",{className:"nx-w-full nx-min-w-0 nx-max-w-6xl nx-px-6 nx-pt-4 md:nx-px-12",children:[en,eh]})})},InnerLayout=({filePath:ee,pageMap:en,frontMatter:er,headings:eo,timestamp:ei,children:es})=>{let eu=useConfig(),{locale:ec=r2,defaultLocale:ed}=(0,eI.useRouter)(),ef=useFSRoute(),{activeType:ep,activeIndex:eh,activeThemeContext:em,activePath:eg,topLevelNavbarItems:ex,docsDirectories:ev,flatDirectories:ey,flatDocsDirectories:eb,directories:e_}=(0,ej.useMemo)(()=>normalizePages({list:en,locale:ec,defaultLocale:ed,route:ef}),[en,ec,ed,ef]),ew=__spreadValues(__spreadValues({},em),er),ek=!ew.sidebar||"raw"===ew.layout||"page"===ep,eE="page"!==ep&&ew.toc&&"default"===ew.layout?(0,eC.jsx)("nav",{className:(0,eN.Z)(or.toc,"nx-px-4"),"aria-label":"table of contents",children:renderComponent(eu.toc.component,{headings:eu.toc.float?eo:[],filePath:ee})}):"full"!==ew.layout&&"raw"!==ew.layout&&(0,eC.jsx)("nav",{className:or.toc,"aria-label":"table of contents"}),eT=eu.i18n.find(ee=>ee.locale===ec),eS=eT?"rtl"===eT.direction:"rtl"===eu.direction,eO=eS?"rtl":"ltr";return(0,eC.jsxs)("div",{dir:eO,children:[(0,eC.jsx)("script",{dangerouslySetInnerHTML:{__html:`document.documentElement.setAttribute('dir','${eO}')`}}),(0,eC.jsx)(dist_Head,{}),(0,eC.jsx)(Banner,{}),ew.navbar&&renderComponent(eu.navbar.component,{flatDirectories:ey,items:ex}),(0,eC.jsx)("div",{className:(0,eN.Z)("nx-mx-auto nx-flex","raw"!==ew.layout&&"nx-max-w-[90rem]"),children:(0,eC.jsxs)(ActiveAnchorProvider,{children:[(0,eC.jsx)(Sidebar,{docsDirectories:ev,flatDirectories:ey,fullDirectories:e_,headings:eo,asPopover:ek,includePlaceholder:"default"===ew.layout}),eE,(0,eC.jsx)(rJ,{}),(0,eC.jsx)(Body,{themeContext:ew,breadcrumb:"page"!==ep&&ew.breadcrumb?(0,eC.jsx)(Breadcrumb,{activePath:eg}):null,timestamp:ei,navigation:"page"!==ep&&ew.pagination?(0,eC.jsx)(NavLinks,{flatDirectories:eb,currentIndex:eh}):null,children:(0,eC.jsx)(eL.Z,{components:getComponents({isRawLayout:"raw"===ew.layout,components:eu.components}),children:es})})]})}),ew.footer&&renderComponent(eu.footer.component,{menu:ek})]})};function Layout(ee){var en=ee,{children:er}=en,eo=__objRest(en,["children"]);return(0,eC.jsx)(ConfigProvider,{value:eo,children:(0,eC.jsx)(InnerLayout,__spreadProps(__spreadValues({},eo.pageOpts),{children:er}))})}var oo=er(5675),oi=er.n(oo);let Logo=()=>(0,eC.jsxs)("div",{className:"jsx-7e682f802fefb7c6",children:[(0,eC.jsx)(oi(),{id:"canopy-iiif-logo","data-name":"canopy-iiif-icon",src:"/docs/assets/canopy-iiif-icon.png",alt:"Canopy IIIF",width:"32",height:"32"}),(0,eC.jsx)("span",{className:"jsx-7e682f802fefb7c6",children:"Canopy IIIF"}),(0,eC.jsx)(eR(),{id:"7e682f802fefb7c6",children:"span.jsx-7e682f802fefb7c6{display:block;margin-left:.618rem;font-weight:400;font-size:1.382rem!important;font-family:var(--canopy-display-font);color:var(--gray-12)}div.jsx-7e682f802fefb7c6{display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-moz-box-align:center;-ms-flex-align:center;align-items:center}"})]});var os=Logo;let ol={display:"block",fontWeight:"400",fontSize:"1.38em",fontFamily:"var(--canopy-display-font)",marginBottom:"-0.5em"},ou=["navPlace"],TitleComponent=ee=>{let{title:en,type:er}=ee,eo=ou.reduce((ee,en)=>{let er=RegExp(en,"gi");return ee.replace(er,en)},en);return"separator"===er?(0,eC.jsx)("span",{style:ol,children:eo}):(0,eC.jsx)(eC.Fragment,{children:eo})};var oc=TitleComponent;let od="Canopy IIIF",of="https://canopy-iiif.github.io/docs",op="a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions",oh={useNextSeoProps(){let{asPath:ee}=(0,eI.useRouter)(),en="/"===ee?"%s - Create a static site with a IIIF Collection":"%s – ".concat(od);return{titleTemplate:en}},head:()=>{let{asPath:ee,defaultLocale:en,locale:er}=(0,eI.useRouter)(),{frontMatter:eo}=useConfig(),ei=of+(en===er?ee:"/".concat(er).concat(ee));return(0,eC.jsxs)(eC.Fragment,{children:[(0,eC.jsx)("meta",{property:"og:url",content:ei}),(0,eC.jsx)("meta",{property:"og:image",content:eo.image?eo.image:"".concat(of,"/assets/canopy-iiif.png")})]})},logo:(0,eC.jsx)(os,{}),project:{link:"https://github.com/canopy-iiif/canopy-iiif"},docsRepositoryBase:"https://github.com/canopy-iiif/docs/blob/main",footer:{text:op},darkMode:!1,gitTimestamp:null,nextThemes:{defaultTheme:"light"},primaryHue:225,primarySaturation:76,sidebar:{defaultMenuCollapseLevel:1,autoCollapse:!0,titleComponent:ee=>(0,eC.jsx)(oc,{...ee}),toggleButton:!0}};var om=oh;er(9128),er(2740),er(4627);let og={slate7:"#cdced6",slate9:"#8b8d98"},ox={crimson11:"#cb1d63"},ov={violet9:"#6e56cf"},oy={indigo10:"#3358d4"},ob={grass8:"#65ba74",grass9:"#46a758"},o_={gold9:"#978365"};var ow=er(3070);let MDXLayout=function(ee){let{Component:en,pageProps:er}=ee;return Object.assign({style:"style"},(0,eL.a)()),(0,eC.jsxs)(ow.Q2,{className:eT().className,children:[(0,eC.jsx)(eR(),{id:"811bee3dbc5cbe82",dynamic:[og.slate9,oy.indigo10,ob.grass9,og.slate7,ox.crimson11,o_.gold9,ov.violet9,oy.indigo10,og.slate9,ob.grass8,eT().style.fontFamily,eO().style.fontFamily],children:":root{--shiki-color-text:".concat(og.slate9,";--shiki-color-background:transparent;--shiki-token-constant:").concat(oy.indigo10,";--shiki-token-string:").concat(ob.grass9,";--shiki-token-comment:").concat(og.slate7,";--shiki-token-keyword:").concat(ox.crimson11,";--shiki-token-parameter:").concat(o_.gold9,";--shiki-token-function:").concat(ov.violet9,";--shiki-token-string-expression:").concat(oy.indigo10,";--shiki-token-punctuation:").concat(og.slate9,";--shiki-token-link:").concat(ob.grass8,"}html{--canopy-sans-font:").concat(eT().style.fontFamily,";--canopy-display-font:").concat(eO().style.fontFamily,"}.radix-themes{--default-font-family:var(--canopy-sans-font), sans-serif}")}),(0,eC.jsx)(en,{...er,className:eR().dynamic([["811bee3dbc5cbe82",[og.slate9,oy.indigo10,ob.grass9,og.slate7,ox.crimson11,o_.gold9,ov.violet9,oy.indigo10,og.slate9,ob.grass8,eT().style.fontFamily,eO().style.fontFamily]]])+" "+(er&&null!=er.className&&er.className||"")})]})},ok=[];function _createMdxContent(ee){return(0,eC.jsx)(eC.Fragment,{})}var _app=function(){let ee=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,eC.jsx)(MDXLayout,{...ee,children:(0,eC.jsx)(_createMdxContent,{...ee})})};let oC=(ew=globalThis)[ek=Symbol.for("__nextra_internal__")]||(ew[ek]=Object.create(null));oC.Layout=Layout,oC.pageMap=[{kind:"Meta",data:{index:{title:"Home",display:"hidden",theme:{breadcrumb:!1,footer:!1,sidebar:!1,toc:!1,pagination:!1}},"-":{title:"Docs",type:"separator"},configuration:{title:"Configuration"},content:{title:"Content"},development:{title:"Development"},"*":{theme:{breadcrumb:!1}},"--":{title:"Guides",type:"separator"},"get-started":{title:"Create a Project"},documentation:{title:"Documentation",type:"menu",items:{configuration:{title:"Configuration",href:"/configuration"},content:{title:"Adding Content",href:"/content"},development:{title:"Development",href:"/development"},guides:{title:"User Guides",href:"/guides"}}},about:{title:"About",type:"page"},guides:{display:"hidden",title:"Guides"},iiif:{title:"What is IIIF? ↗",type:"page",href:"https://iiif.io/",newWindow:!0},"create-markdown-content":"Create Markdown Content","customize-the-search-index":"Customize the Search Index","deploy-to-github-pages":"Deploy to GitHub Pages","deploy-to-vercel":"Deploy to Vercel","enable-a-map-with-navPlace":"Enable a Map with Navplace",stackblitz:"Stackblitz"}},{kind:"MdxPage",name:"about",route:"/about"},{kind:"Folder",name:"configuration",route:"/configuration",children:[{kind:"Meta",data:{"*":{theme:{breadcrumb:!0}},search:"Search",locale:"Locale",map:"Map",theme:"Theme"}},{kind:"MdxPage",name:"locale",route:"/configuration/locale"},{kind:"MdxPage",name:"map",route:"/configuration/map"},{kind:"MdxPage",name:"search",route:"/configuration/search"},{kind:"MdxPage",name:"theme",route:"/configuration/theme"}]},{kind:"MdxPage",name:"configuration",route:"/configuration"},{kind:"Folder",name:"content",route:"/content",children:[{kind:"Meta",data:{"*":{theme:{breadcrumb:!0}},markdown:"Markdown",navigation:"Navigation",card:"Card","referenced-items":"Referenced Items",slider:"Slider",viewer:"Viewer"}},{kind:"MdxPage",name:"card",route:"/content/card"},{kind:"MdxPage",name:"markdown",route:"/content/markdown"},{kind:"MdxPage",name:"navigation",route:"/content/navigation"},{kind:"MdxPage",name:"referenced-items",route:"/content/referenced-items"},{kind:"MdxPage",name:"slider",route:"/content/slider"},{kind:"MdxPage",name:"viewer",route:"/content/viewer"}]},{kind:"MdxPage",name:"content",route:"/content"},{kind:"MdxPage",name:"create-markdown-content",route:"/create-markdown-content"},{kind:"MdxPage",name:"customize-the-search-index",route:"/customize-the-search-index"},{kind:"MdxPage",name:"deploy-to-github-pages",route:"/deploy-to-github-pages"},{kind:"MdxPage",name:"deploy-to-vercel",route:"/deploy-to-vercel"},{kind:"MdxPage",name:"development",route:"/development"},{kind:"MdxPage",name:"enable-a-map-with-navPlace",route:"/enable-a-map-with-navPlace"},{kind:"MdxPage",name:"get-started",route:"/get-started"},{kind:"MdxPage",name:"guides",route:"/guides"},{kind:"MdxPage",name:"index",route:"/",frontMatter:{title:"Canopy IIIF",description:"An open-source static site generator designed for fast creation, contextualization, and customization of a discovery-focused digital scholarship and collections website using IIIF APIs."}},{kind:"MdxPage",name:"stackblitz",route:"/stackblitz"}],oC.flexsearch={codeblocks:!0},oC.themeConfig=om},7498:function(ee,en){"use strict";var er;Object.defineProperty(en,"__esModule",{value:!0}),function(ee,en){for(var er in en)Object.defineProperty(ee,er,{enumerable:!0,get:en[er]})}(en,{PrefetchKind:function(){return er},ACTION_REFRESH:function(){return eo},ACTION_NAVIGATE:function(){return ei},ACTION_RESTORE:function(){return es},ACTION_SERVER_PATCH:function(){return eu},ACTION_PREFETCH:function(){return ec},ACTION_FAST_REFRESH:function(){return ed},ACTION_SERVER_ACTION:function(){return ef}});let eo="refresh",ei="navigate",es="restore",eu="server-patch",ec="prefetch",ed="fast-refresh",ef="server-action";!function(ee){ee.AUTO="auto",ee.FULL="full",ee.TEMPORARY="temporary"}(er||(er={})),("function"==typeof en.default||"object"==typeof en.default&&null!==en.default)&&void 0===en.default.__esModule&&(Object.defineProperty(en.default,"__esModule",{value:!0}),Object.assign(en.default,en),ee.exports=en.default)},30:function(ee,en,er){"use strict";function getDomainLocale(ee,en,er,eo){return!1}Object.defineProperty(en,"__esModule",{value:!0}),Object.defineProperty(en,"getDomainLocale",{enumerable:!0,get:function(){return getDomainLocale}}),er(2866),("function"==typeof en.default||"object"==typeof en.default&&null!==en.default)&&void 0===en.default.__esModule&&(Object.defineProperty(en.default,"__esModule",{value:!0}),Object.assign(en.default,en),ee.exports=en.default)},3271:function(ee,en,er){"use strict";Object.defineProperty(en,"__esModule",{value:!0}),Object.defineProperty(en,"Image",{enumerable:!0,get:function(){return ev}});let eo=er(8754),ei=er(1757),es=ei._(er(7294)),eu=eo._(er(3935)),ec=eo._(er(9201)),ed=er(3914),ef=er(5494),ep=er(869);er(1905);let eh=er(1823),em=eo._(er(4545)),eg={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/docs/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!0};function handleLoading(ee,en,er,eo,ei,es){let eu=null==ee?void 0:ee.src;if(!ee||ee["data-loaded-src"]===eu)return;ee["data-loaded-src"]=eu;let ec="decode"in ee?ee.decode():Promise.resolve();ec.catch(()=>{}).then(()=>{if(ee.parentElement&&ee.isConnected){if("empty"!==en&&ei(!0),null==er?void 0:er.current){let en=new Event("load");Object.defineProperty(en,"target",{writable:!1,value:ee});let eo=!1,ei=!1;er.current({...en,nativeEvent:en,currentTarget:ee,target:ee,isDefaultPrevented:()=>eo,isPropagationStopped:()=>ei,persist:()=>{},preventDefault:()=>{eo=!0,en.preventDefault()},stopPropagation:()=>{ei=!0,en.stopPropagation()}})}(null==eo?void 0:eo.current)&&eo.current(ee)}})}function getDynamicProps(ee){let[en,er]=es.version.split("."),eo=parseInt(en,10),ei=parseInt(er,10);return eo>18||18===eo&&ei>=3?{fetchPriority:ee}:{fetchpriority:ee}}let ex=(0,es.forwardRef)((ee,en)=>{let{src:er,srcSet:eo,sizes:ei,height:eu,width:ec,decoding:ed,className:ef,style:ep,fetchPriority:eh,placeholder:em,loading:eg,unoptimized:ex,fill:ev,onLoadRef:ey,onLoadingCompleteRef:eb,setBlurComplete:e_,setShowAltText:ew,onLoad:ek,onError:eC,...eE}=ee;return es.default.createElement("img",{...eE,...getDynamicProps(eh),loading:eg,width:ec,height:eu,decoding:ed,"data-nimg":ev?"fill":"1",className:ef,style:ep,sizes:ei,srcSet:eo,src:er,ref:(0,es.useCallback)(ee=>{en&&("function"==typeof en?en(ee):"object"==typeof en&&(en.current=ee)),ee&&(eC&&(ee.src=ee.src),ee.complete&&handleLoading(ee,em,ey,eb,e_,ex))},[er,em,ey,eb,e_,eC,ex,en]),onLoad:ee=>{let en=ee.currentTarget;handleLoading(en,em,ey,eb,e_,ex)},onError:ee=>{ew(!0),"empty"!==em&&e_(!0),eC&&eC(ee)}})});function ImagePreload(ee){let{isAppRouter:en,imgAttributes:er}=ee,eo={as:"image",imageSrcSet:er.srcSet,imageSizes:er.sizes,crossOrigin:er.crossOrigin,referrerPolicy:er.referrerPolicy,...getDynamicProps(er.fetchPriority)};return en&&eu.default.preload?(eu.default.preload(er.src,eo),null):es.default.createElement(ec.default,null,es.default.createElement("link",{key:"__nimg-"+er.src+er.srcSet+er.sizes,rel:"preload",href:er.srcSet?void 0:er.src,...eo}))}let ev=(0,es.forwardRef)((ee,en)=>{let er=(0,es.useContext)(eh.RouterContext),eo=!er,ei=(0,es.useContext)(ep.ImageConfigContext),eu=(0,es.useMemo)(()=>{let ee=eg||ei||ef.imageConfigDefault,en=[...ee.deviceSizes,...ee.imageSizes].sort((ee,en)=>ee-en),er=ee.deviceSizes.sort((ee,en)=>ee-en);return{...ee,allSizes:en,deviceSizes:er}},[ei]),{onLoad:ec,onLoadingComplete:ev}=ee,ey=(0,es.useRef)(ec);(0,es.useEffect)(()=>{ey.current=ec},[ec]);let eb=(0,es.useRef)(ev);(0,es.useEffect)(()=>{eb.current=ev},[ev]);let[e_,ew]=(0,es.useState)(!1),[ek,eC]=(0,es.useState)(!1),{props:eE,meta:eT}=(0,ed.getImgProps)(ee,{defaultLoader:em.default,imgConf:eu,blurComplete:e_,showAltText:ek});return es.default.createElement(es.default.Fragment,null,es.default.createElement(ex,{...eE,unoptimized:eT.unoptimized,placeholder:eT.placeholder,fill:eT.fill,onLoadRef:ey,onLoadingCompleteRef:eb,setBlurComplete:ew,setShowAltText:eC,ref:en}),eT.priority?es.default.createElement(ImagePreload,{isAppRouter:eo,imgAttributes:eE}):null)});("function"==typeof en.default||"object"==typeof en.default&&null!==en.default)&&void 0===en.default.__esModule&&(Object.defineProperty(en.default,"__esModule",{value:!0}),Object.assign(en.default,en),ee.exports=en.default)},5170:function(ee,en,er){"use strict";Object.defineProperty(en,"__esModule",{value:!0}),Object.defineProperty(en,"default",{enumerable:!0,get:function(){return e_}});let eo=er(8754),ei=eo._(er(7294)),es=er(4450),eu=er(2227),ec=er(4364),ed=er(109),ef=er(3607),ep=er(1823),eh=er(9031),em=er(920),eg=er(30),ex=er(7192),ev=er(7498),ey=new Set;function prefetch(ee,en,er,eo,ei,es){if(!es&&!(0,eu.isLocalURL)(en))return;if(!eo.bypassPrefetchedCheck){let ei=void 0!==eo.locale?eo.locale:"locale"in ee?ee.locale:void 0,es=en+"%"+er+"%"+ei;if(ey.has(es))return;ey.add(es)}let ec=es?ee.prefetch(en,ei):ee.prefetch(en,er,eo);Promise.resolve(ec).catch(ee=>{})}function isModifiedEvent(ee){let en=ee.currentTarget,er=en.getAttribute("target");return er&&"_self"!==er||ee.metaKey||ee.ctrlKey||ee.shiftKey||ee.altKey||ee.nativeEvent&&2===ee.nativeEvent.which}function linkClicked(ee,en,er,eo,es,ec,ed,ef,ep,eh){let{nodeName:em}=ee.currentTarget,eg="A"===em.toUpperCase();if(eg&&(isModifiedEvent(ee)||!ep&&!(0,eu.isLocalURL)(er)))return;ee.preventDefault();let navigate=()=>{let ee=null==ed||ed;"beforePopState"in en?en[es?"replace":"push"](er,eo,{shallow:ec,locale:ef,scroll:ee}):en[es?"replace":"push"](eo||er,{forceOptimisticNavigation:!eh,scroll:ee})};ep?ei.default.startTransition(navigate):navigate()}function formatStringOrUrl(ee){return"string"==typeof ee?ee:(0,ec.formatUrl)(ee)}let eb=ei.default.forwardRef(function(ee,en){let er,eo;let{href:eu,as:ec,children:ey,prefetch:eb=null,passHref:e_,replace:ew,shallow:ek,scroll:eC,locale:eE,onClick:eT,onMouseEnter:eS,onTouchStart:eO,legacyBehavior:eP=!1,...eR}=ee;er=ey,eP&&("string"==typeof er||"number"==typeof er)&&(er=ei.default.createElement("a",null,er));let eI=ei.default.useContext(ep.RouterContext),ej=ei.default.useContext(eh.AppRouterContext),eN=null!=eI?eI:ej,eA=!eI,eZ=!1!==eb,eL=null===eb?ev.PrefetchKind.AUTO:ev.PrefetchKind.FULL,{href:eM,as:e$}=ei.default.useMemo(()=>{if(!eI){let ee=formatStringOrUrl(eu);return{href:ee,as:ec?formatStringOrUrl(ec):ee}}let[ee,en]=(0,es.resolveHref)(eI,eu,!0);return{href:ee,as:ec?(0,es.resolveHref)(eI,ec):en||ee}},[eI,eu,ec]),eD=ei.default.useRef(eM),eF=ei.default.useRef(e$);eP&&(eo=ei.default.Children.only(er));let ez=eP?eo&&"object"==typeof eo&&eo.ref:en,[eV,eB,eW]=(0,em.useIntersection)({rootMargin:"200px"}),eU=ei.default.useCallback(ee=>{(eF.current!==e$||eD.current!==eM)&&(eW(),eF.current=e$,eD.current=eM),eV(ee),ez&&("function"==typeof ez?ez(ee):"object"==typeof ez&&(ez.current=ee))},[e$,ez,eM,eW,eV]);ei.default.useEffect(()=>{eN&&eB&&eZ&&prefetch(eN,eM,e$,{locale:eE},{kind:eL},eA)},[e$,eM,eB,eE,eZ,null==eI?void 0:eI.locale,eN,eA,eL]);let eH={ref:eU,onClick(ee){eP||"function"!=typeof eT||eT(ee),eP&&eo.props&&"function"==typeof eo.props.onClick&&eo.props.onClick(ee),eN&&!ee.defaultPrevented&&linkClicked(ee,eN,eM,e$,ew,ek,eC,eE,eA,eZ)},onMouseEnter(ee){eP||"function"!=typeof eS||eS(ee),eP&&eo.props&&"function"==typeof eo.props.onMouseEnter&&eo.props.onMouseEnter(ee),eN&&(eZ||!eA)&&prefetch(eN,eM,e$,{locale:eE,priority:!0,bypassPrefetchedCheck:!0},{kind:eL},eA)},onTouchStart(ee){eP||"function"!=typeof eO||eO(ee),eP&&eo.props&&"function"==typeof eo.props.onTouchStart&&eo.props.onTouchStart(ee),eN&&(eZ||!eA)&&prefetch(eN,eM,e$,{locale:eE,priority:!0,bypassPrefetchedCheck:!0},{kind:eL},eA)}};if((0,ed.isAbsoluteUrl)(e$))eH.href=e$;else if(!eP||e_||"a"===eo.type&&!("href"in eo.props)){let ee=void 0!==eE?eE:null==eI?void 0:eI.locale,en=(null==eI?void 0:eI.isLocaleDomain)&&(0,eg.getDomainLocale)(e$,ee,null==eI?void 0:eI.locales,null==eI?void 0:eI.domainLocales);eH.href=en||(0,ex.addBasePath)((0,ef.addLocale)(e$,ee,null==eI?void 0:eI.defaultLocale))}return eP?ei.default.cloneElement(eo,eH):ei.default.createElement("a",{...eR,...eH},er)}),e_=eb;("function"==typeof en.default||"object"==typeof en.default&&null!==en.default)&&void 0===en.default.__esModule&&(Object.defineProperty(en.default,"__esModule",{value:!0}),Object.assign(en.default,en),ee.exports=en.default)},920:function(ee,en,er){"use strict";Object.defineProperty(en,"__esModule",{value:!0}),Object.defineProperty(en,"useIntersection",{enumerable:!0,get:function(){return useIntersection}});let eo=er(7294),ei=er(3436),es="function"==typeof IntersectionObserver,eu=new Map,ec=[];function createObserver(ee){let en;let er={root:ee.root||null,margin:ee.rootMargin||""},eo=ec.find(ee=>ee.root===er.root&&ee.margin===er.margin);if(eo&&(en=eu.get(eo)))return en;let ei=new Map,es=new IntersectionObserver(ee=>{ee.forEach(ee=>{let en=ei.get(ee.target),er=ee.isIntersecting||ee.intersectionRatio>0;en&&er&&en(er)})},ee);return en={id:er,observer:es,elements:ei},ec.push(er),eu.set(er,en),en}function observe(ee,en,er){let{id:eo,observer:ei,elements:es}=createObserver(er);return es.set(ee,en),ei.observe(ee),function(){if(es.delete(ee),ei.unobserve(ee),0===es.size){ei.disconnect(),eu.delete(eo);let ee=ec.findIndex(ee=>ee.root===eo.root&&ee.margin===eo.margin);ee>-1&&ec.splice(ee,1)}}}function useIntersection(ee){let{rootRef:en,rootMargin:er,disabled:eu}=ee,ec=eu||!es,[ed,ef]=(0,eo.useState)(!1),ep=(0,eo.useRef)(null),eh=(0,eo.useCallback)(ee=>{ep.current=ee},[]);(0,eo.useEffect)(()=>{if(es){if(ec||ed)return;let ee=ep.current;if(ee&&ee.tagName){let eo=observe(ee,ee=>ee&&ef(ee),{root:null==en?void 0:en.current,rootMargin:er});return eo}}else if(!ed){let ee=(0,ei.requestIdleCallback)(()=>ef(!0));return()=>(0,ei.cancelIdleCallback)(ee)}},[ec,er,en,ed,ep.current]);let em=(0,eo.useCallback)(()=>{ef(!1)},[]);return[eh,ed,em]}("function"==typeof en.default||"object"==typeof en.default&&null!==en.default)&&void 0===en.default.__esModule&&(Object.defineProperty(en.default,"__esModule",{value:!0}),Object.assign(en.default,en),ee.exports=en.default)},3914:function(ee,en,er){"use strict";Object.defineProperty(en,"__esModule",{value:!0}),Object.defineProperty(en,"getImgProps",{enumerable:!0,get:function(){return getImgProps}}),er(1905);let eo=er(2393),ei=er(5494);function isStaticRequire(ee){return void 0!==ee.default}function isStaticImageData(ee){return void 0!==ee.src}function isStaticImport(ee){return"object"==typeof ee&&(isStaticRequire(ee)||isStaticImageData(ee))}function getInt(ee){return void 0===ee?ee:"number"==typeof ee?Number.isFinite(ee)?ee:NaN:"string"==typeof ee&&/^[0-9]+$/.test(ee)?parseInt(ee,10):NaN}function getWidths(ee,en,er){let{deviceSizes:eo,allSizes:ei}=ee;if(er){let ee=/(^|\s)(1?\d?\d)vw/g,en=[];for(let eo;eo=ee.exec(er);eo)en.push(parseInt(eo[2]));if(en.length){let ee=.01*Math.min(...en);return{widths:ei.filter(en=>en>=eo[0]*ee),kind:"w"}}return{widths:ei,kind:"w"}}if("number"!=typeof en)return{widths:eo,kind:"w"};let es=[...new Set([en,2*en].map(ee=>ei.find(en=>en>=ee)||ei[ei.length-1]))];return{widths:es,kind:"x"}}function generateImgAttrs(ee){let{config:en,src:er,unoptimized:eo,width:ei,quality:es,sizes:eu,loader:ec}=ee;if(eo)return{src:er,srcSet:void 0,sizes:void 0};let{widths:ed,kind:ef}=getWidths(en,ei,eu),ep=ed.length-1;return{sizes:eu||"w"!==ef?eu:"100vw",srcSet:ed.map((ee,eo)=>ec({config:en,src:er,quality:es,width:ee})+" "+("w"===ef?ee:eo+1)+ef).join(", "),src:ec({config:en,src:er,quality:es,width:ed[ep]})}}function getImgProps(ee,en){let er,es,eu,{src:ec,sizes:ed,unoptimized:ef=!1,priority:ep=!1,loading:eh,className:em,quality:eg,width:ex,height:ev,fill:ey=!1,style:eb,onLoad:e_,onLoadingComplete:ew,placeholder:ek="empty",blurDataURL:eC,fetchPriority:eE,layout:eT,objectFit:eS,objectPosition:eO,lazyBoundary:eP,lazyRoot:eR,...eI}=ee,{imgConf:ej,showAltText:eN,blurComplete:eA,defaultLoader:eZ}=en,eL=ej||ei.imageConfigDefault;if("allSizes"in eL)er=eL;else{let ee=[...eL.deviceSizes,...eL.imageSizes].sort((ee,en)=>ee-en),en=eL.deviceSizes.sort((ee,en)=>ee-en);er={...eL,allSizes:ee,deviceSizes:en}}let eM=eI.loader||eZ;delete eI.loader,delete eI.srcSet;let e$="__next_img_default"in eM;if(e$){if("custom"===er.loader)throw Error('Image with src "'+ec+'" is missing "loader" prop.\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader')}else{let ee=eM;eM=en=>{let{config:er,...eo}=en;return ee(eo)}}if(eT){"fill"===eT&&(ey=!0);let ee={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}},en={responsive:"100vw",fill:"100vw"},er=ee[eT];er&&(eb={...eb,...er});let eo=en[eT];eo&&!ed&&(ed=eo)}let eD="",eF=getInt(ex),ez=getInt(ev);if(isStaticImport(ec)){let ee=isStaticRequire(ec)?ec.default:ec;if(!ee.src)throw Error("An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received "+JSON.stringify(ee));if(!ee.height||!ee.width)throw Error("An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received "+JSON.stringify(ee));if(es=ee.blurWidth,eu=ee.blurHeight,eC=eC||ee.blurDataURL,eD=ee.src,!ey){if(eF||ez){if(eF&&!ez){let en=eF/ee.width;ez=Math.round(ee.height*en)}else if(!eF&&ez){let en=ez/ee.height;eF=Math.round(ee.width*en)}}else eF=ee.width,ez=ee.height}}let eV=!ep&&("lazy"===eh||void 0===eh);(!(ec="string"==typeof ec?ec:eD)||ec.startsWith("data:")||ec.startsWith("blob:"))&&(ef=!0,eV=!1),er.unoptimized&&(ef=!0),e$&&ec.endsWith(".svg")&&!er.dangerouslyAllowSVG&&(ef=!0),ep&&(eE="high");let eB=getInt(eg),eW=Object.assign(ey?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:eS,objectPosition:eO}:{},eN?{}:{color:"transparent"},eb),eU=eA||"empty"===ek?null:"blur"===ek?'url("data:image/svg+xml;charset=utf-8,'+(0,eo.getImageBlurSvg)({widthInt:eF,heightInt:ez,blurWidth:es,blurHeight:eu,blurDataURL:eC||"",objectFit:eW.objectFit})+'")':'url("'+ek+'")',eH=eU?{backgroundSize:eW.objectFit||"cover",backgroundPosition:eW.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:eU}:{},eG=generateImgAttrs({config:er,src:ec,unoptimized:ef,width:eF,quality:eB,sizes:ed,loader:eM}),eK={...eI,loading:eV?"lazy":eh,fetchPriority:eE,width:eF,height:ez,decoding:"async",className:em,style:{...eW,...eH},sizes:eG.sizes,srcSet:eG.srcSet,src:eG.src},eq={unoptimized:ef,priority:ep,placeholder:ek,fill:ey};return{props:eK,meta:eq}}},2393:function(ee,en){"use strict";function getImageBlurSvg(ee){let{widthInt:en,heightInt:er,blurWidth:eo,blurHeight:ei,blurDataURL:es,objectFit:eu}=ee,ec=20,ed=eo?40*eo:en,ef=ei?40*ei:er,ep=ed&&ef?"viewBox='0 0 "+ed+" "+ef+"'":"",eh=ep?"none":"contain"===eu?"xMidYMid":"cover"===eu?"xMidYMid slice":"none";return"%3Csvg xmlns='http://www.w3.org/2000/svg' "+ep+"%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='"+ec+"'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='"+ec+"'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='"+eh+"' style='filter: url(%23b);' href='"+es+"'/%3E%3C/svg%3E"}Object.defineProperty(en,"__esModule",{value:!0}),Object.defineProperty(en,"getImageBlurSvg",{enumerable:!0,get:function(){return getImageBlurSvg}})},645:function(ee,en,er){"use strict";Object.defineProperty(en,"__esModule",{value:!0}),function(ee,en){for(var er in en)Object.defineProperty(ee,er,{enumerable:!0,get:en[er]})}(en,{unstable_getImgProps:function(){return unstable_getImgProps},default:function(){return ed}});let eo=er(8754),ei=er(3914),es=er(1905),eu=er(3271),ec=eo._(er(4545)),unstable_getImgProps=ee=>{(0,es.warnOnce)("Warning: unstable_getImgProps() is experimental and may change or be removed at any time. Use at your own risk.");let{props:en}=(0,ei.getImgProps)(ee,{defaultLoader:ec.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/docs/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!0}});for(let[ee,er]of Object.entries(en))void 0===er&&delete en[ee];return{props:en}},ed=eu.Image},4545:function(ee,en){"use strict";function defaultLoader(ee){let{config:en,src:er,width:eo,quality:ei}=ee;return en.path+"?url="+encodeURIComponent(er)+"&w="+eo+"&q="+(ei||75)}Object.defineProperty(en,"__esModule",{value:!0}),Object.defineProperty(en,"default",{enumerable:!0,get:function(){return er}}),defaultLoader.__next_img_default=!0;let er=defaultLoader},597:function(ee,en,er){var eo,ei=er(3454);er(1479);var es=er(7294),eu=function(ee){return ee&&"object"==typeof ee&&"default"in ee?ee:{default:ee}}(es);function _defineProperties(ee,en){for(var er=0;er<en.length;er++){var eo=en[er];eo.enumerable=eo.enumerable||!1,eo.configurable=!0,"value"in eo&&(eo.writable=!0),Object.defineProperty(ee,eo.key,eo)}}function _createClass(ee,en,er){return en&&_defineProperties(ee.prototype,en),er&&_defineProperties(ee,er),ee}var ec=void 0!==ei&&ei.env&&!0,isString=function(ee){return"[object String]"===Object.prototype.toString.call(ee)},ed=function(){function StyleSheet(ee){var en=void 0===ee?{}:ee,er=en.name,eo=void 0===er?"stylesheet":er,ei=en.optimizeForSpeed,es=void 0===ei?ec:ei;invariant$1(isString(eo),"`name` must be a string"),this._name=eo,this._deletedRulePlaceholder="#"+eo+"-deleted-rule____{}",invariant$1("boolean"==typeof es,"`optimizeForSpeed` must be a boolean"),this._optimizeForSpeed=es,this._serverSheet=void 0,this._tags=[],this._injected=!1,this._rulesCount=0;var eu=document.querySelector('meta[property="csp-nonce"]');this._nonce=eu?eu.getAttribute("content"):null}var ee=StyleSheet.prototype;return ee.setOptimizeForSpeed=function(ee){invariant$1("boolean"==typeof ee,"`setOptimizeForSpeed` accepts a boolean"),invariant$1(0===this._rulesCount,"optimizeForSpeed cannot be when rules have already been inserted"),this.flush(),this._optimizeForSpeed=ee,this.inject()},ee.isOptimizeForSpeed=function(){return this._optimizeForSpeed},ee.inject=function(){var ee=this;if(invariant$1(!this._injected,"sheet already injected"),this._injected=!0,this._optimizeForSpeed){this._tags[0]=this.makeStyleTag(this._name),this._optimizeForSpeed="insertRule"in this.getSheet(),this._optimizeForSpeed||(ec||console.warn("StyleSheet: optimizeForSpeed mode not supported falling back to standard mode."),this.flush(),this._injected=!0);return}this._serverSheet={cssRules:[],insertRule:function(en,er){return"number"==typeof er?ee._serverSheet.cssRules[er]={cssText:en}:ee._serverSheet.cssRules.push({cssText:en}),er},deleteRule:function(en){ee._serverSheet.cssRules[en]=null}}},ee.getSheetForTag=function(ee){if(ee.sheet)return ee.sheet;for(var en=0;en<document.styleSheets.length;en++)if(document.styleSheets[en].ownerNode===ee)return document.styleSheets[en]},ee.getSheet=function(){return this.getSheetForTag(this._tags[this._tags.length-1])},ee.insertRule=function(ee,en){if(invariant$1(isString(ee),"`insertRule` accepts only strings"),this._optimizeForSpeed){var er=this.getSheet();"number"!=typeof en&&(en=er.cssRules.length);try{er.insertRule(ee,en)}catch(en){return ec||console.warn("StyleSheet: illegal rule: \n\n"+ee+"\n\nSee https://stackoverflow.com/q/20007992 for more info"),-1}}else{var eo=this._tags[en];this._tags.push(this.makeStyleTag(this._name,ee,eo))}return this._rulesCount++},ee.replaceRule=function(ee,en){if(this._optimizeForSpeed){var er=this.getSheet();if(en.trim()||(en=this._deletedRulePlaceholder),!er.cssRules[ee])return ee;er.deleteRule(ee);try{er.insertRule(en,ee)}catch(eo){ec||console.warn("StyleSheet: illegal rule: \n\n"+en+"\n\nSee https://stackoverflow.com/q/20007992 for more info"),er.insertRule(this._deletedRulePlaceholder,ee)}}else{var eo=this._tags[ee];invariant$1(eo,"old rule at index `"+ee+"` not found"),eo.textContent=en}return ee},ee.deleteRule=function(ee){if(this._optimizeForSpeed)this.replaceRule(ee,"");else{var en=this._tags[ee];invariant$1(en,"rule at index `"+ee+"` not found"),en.parentNode.removeChild(en),this._tags[ee]=null}},ee.flush=function(){this._injected=!1,this._rulesCount=0,this._tags.forEach(function(ee){return ee&&ee.parentNode.removeChild(ee)}),this._tags=[]},ee.cssRules=function(){var ee=this;return this._tags.reduce(function(en,er){return er?en=en.concat(Array.prototype.map.call(ee.getSheetForTag(er).cssRules,function(en){return en.cssText===ee._deletedRulePlaceholder?null:en})):en.push(null),en},[])},ee.makeStyleTag=function(ee,en,er){en&&invariant$1(isString(en),"makeStyleTag accepts only strings as second parameter");var eo=document.createElement("style");this._nonce&&eo.setAttribute("nonce",this._nonce),eo.type="text/css",eo.setAttribute("data-"+ee,""),en&&eo.appendChild(document.createTextNode(en));var ei=document.head||document.getElementsByTagName("head")[0];return er?ei.insertBefore(eo,er):ei.appendChild(eo),eo},_createClass(StyleSheet,[{key:"length",get:function(){return this._rulesCount}}]),StyleSheet}();function invariant$1(ee,en){if(!ee)throw Error("StyleSheet: "+en+".")}var stringHash=function(ee){for(var en=5381,er=ee.length;er;)en=33*en^ee.charCodeAt(--er);return en>>>0},ef={};function computeId(ee,en){if(!en)return"jsx-"+ee;var er=String(en),eo=ee+er;return ef[eo]||(ef[eo]="jsx-"+stringHash(ee+"-"+er)),ef[eo]}function computeSelector(ee,en){var er=/__jsx-style-dynamic-selector/g,eo=ee+en;return ef[eo]||(ef[eo]=en.replace(er,ee)),ef[eo]}function mapRulesToStyle(ee,en){return void 0===en&&(en={}),ee.map(function(ee){var er=ee[0],eo=ee[1];return eu.default.createElement("style",{id:"__"+er,key:"__"+er,nonce:en.nonce?en.nonce:void 0,dangerouslySetInnerHTML:{__html:eo}})})}var ep=function(){function StyleSheetRegistry(ee){var en=void 0===ee?{}:ee,er=en.styleSheet,eo=void 0===er?null:er,ei=en.optimizeForSpeed,es=void 0!==ei&&ei;this._sheet=eo||new ed({name:"styled-jsx",optimizeForSpeed:es}),this._sheet.inject(),eo&&"boolean"==typeof es&&(this._sheet.setOptimizeForSpeed(es),this._optimizeForSpeed=this._sheet.isOptimizeForSpeed()),this._fromServer=void 0,this._indices={},this._instancesCounts={}}var ee=StyleSheetRegistry.prototype;return ee.add=function(ee){var en=this;void 0===this._optimizeForSpeed&&(this._optimizeForSpeed=Array.isArray(ee.children),this._sheet.setOptimizeForSpeed(this._optimizeForSpeed),this._optimizeForSpeed=this._sheet.isOptimizeForSpeed()),this._fromServer||(this._fromServer=this.selectFromServer(),this._instancesCounts=Object.keys(this._fromServer).reduce(function(ee,en){return ee[en]=0,ee},{}));var er=this.getIdAndRules(ee),eo=er.styleId,ei=er.rules;if(eo in this._instancesCounts){this._instancesCounts[eo]+=1;return}var es=ei.map(function(ee){return en._sheet.insertRule(ee)}).filter(function(ee){return -1!==ee});this._indices[eo]=es,this._instancesCounts[eo]=1},ee.remove=function(ee){var en=this,er=this.getIdAndRules(ee).styleId;if(invariant(er in this._instancesCounts,"styleId: `"+er+"` not found"),this._instancesCounts[er]-=1,this._instancesCounts[er]<1){var eo=this._fromServer&&this._fromServer[er];eo?(eo.parentNode.removeChild(eo),delete this._fromServer[er]):(this._indices[er].forEach(function(ee){return en._sheet.deleteRule(ee)}),delete this._indices[er]),delete this._instancesCounts[er]}},ee.update=function(ee,en){this.add(en),this.remove(ee)},ee.flush=function(){this._sheet.flush(),this._sheet.inject(),this._fromServer=void 0,this._indices={},this._instancesCounts={}},ee.cssRules=function(){var ee=this,en=this._fromServer?Object.keys(this._fromServer).map(function(en){return[en,ee._fromServer[en]]}):[],er=this._sheet.cssRules();return en.concat(Object.keys(this._indices).map(function(en){return[en,ee._indices[en].map(function(ee){return er[ee].cssText}).join(ee._optimizeForSpeed?"":"\n")]}).filter(function(ee){return!!ee[1]}))},ee.styles=function(ee){return mapRulesToStyle(this.cssRules(),ee)},ee.getIdAndRules=function(ee){var en=ee.children,er=ee.dynamic,eo=ee.id;if(er){var ei=computeId(eo,er);return{styleId:ei,rules:Array.isArray(en)?en.map(function(ee){return computeSelector(ei,ee)}):[computeSelector(ei,en)]}}return{styleId:computeId(eo),rules:Array.isArray(en)?en:[en]}},ee.selectFromServer=function(){return Array.prototype.slice.call(document.querySelectorAll('[id^="__jsx-"]')).reduce(function(ee,en){return ee[en.id.slice(2)]=en,ee},{})},StyleSheetRegistry}();function invariant(ee,en){if(!ee)throw Error("StyleSheetRegistry: "+en+".")}var eh=es.createContext(null);function createStyleRegistry(){return new ep}function StyleRegistry(ee){var en=ee.registry,er=ee.children,eo=es.useContext(eh),ei=es.useState(function(){return eo||en||createStyleRegistry()})[0];return eu.default.createElement(eh.Provider,{value:ei},er)}function useStyleRegistry(){return es.useContext(eh)}eh.displayName="StyleSheetContext";var em=eu.default.useInsertionEffect||eu.default.useLayoutEffect,eg=createStyleRegistry();function JSXStyle(ee){var en=eg||useStyleRegistry();return en&&em(function(){return en.add(ee),function(){en.remove(ee)}},[ee.id,String(ee.dynamic)]),null}JSXStyle.dynamic=function(ee){return ee.map(function(ee){return computeId(ee[0],ee[1])}).join(" ")},eo=StyleRegistry,eo=createStyleRegistry,en.style=JSXStyle},5379:function(ee,en,er){"use strict";ee.exports=er(597).style},1479:function(){},4627:function(){},9128:function(){},2740:function(){},3041:function(ee){ee.exports={style:{fontFamily:"'__DM_Sans_f32be5', '__DM_Sans_Fallback_f32be5'",fontStyle:"normal"},className:"__className_f32be5"}},7700:function(ee){ee.exports={style:{fontFamily:"'__DM_Serif_Display_f77a0b', '__DM_Serif_Display_Fallback_f77a0b'",fontWeight:400,fontStyle:"normal"},className:"__className_f77a0b"}},1864:function(ee){var en="/";!function(){"use strict";var er={114:function(ee){function assertPath(ee){if("string"!=typeof ee)throw TypeError("Path must be a string. Received "+JSON.stringify(ee))}function normalizeStringPosix(ee,en){for(var er,eo="",ei=0,es=-1,eu=0,ec=0;ec<=ee.length;++ec){if(ec<ee.length)er=ee.charCodeAt(ec);else if(47===er)break;else er=47;if(47===er){if(es===ec-1||1===eu);else if(es!==ec-1&&2===eu){if(eo.length<2||2!==ei||46!==eo.charCodeAt(eo.length-1)||46!==eo.charCodeAt(eo.length-2)){if(eo.length>2){var ed=eo.lastIndexOf("/");if(ed!==eo.length-1){-1===ed?(eo="",ei=0):ei=(eo=eo.slice(0,ed)).length-1-eo.lastIndexOf("/"),es=ec,eu=0;continue}}else if(2===eo.length||1===eo.length){eo="",ei=0,es=ec,eu=0;continue}}en&&(eo.length>0?eo+="/..":eo="..",ei=2)}else eo.length>0?eo+="/"+ee.slice(es+1,ec):eo=ee.slice(es+1,ec),ei=ec-es-1;es=ec,eu=0}else 46===er&&-1!==eu?++eu:eu=-1}return eo}function _format(ee,en){var er=en.dir||en.root,eo=en.base||(en.name||"")+(en.ext||"");return er?er===en.root?er+eo:er+ee+eo:eo}var en={resolve:function(){for(var ee,en,er="",eo=!1,ei=arguments.length-1;ei>=-1&&!eo;ei--)ei>=0?en=arguments[ei]:(void 0===ee&&(ee=""),en=ee),assertPath(en),0!==en.length&&(er=en+"/"+er,eo=47===en.charCodeAt(0));return(er=normalizeStringPosix(er,!eo),eo)?er.length>0?"/"+er:"/":er.length>0?er:"."},normalize:function(ee){if(assertPath(ee),0===ee.length)return".";var en=47===ee.charCodeAt(0),er=47===ee.charCodeAt(ee.length-1);return(0!==(ee=normalizeStringPosix(ee,!en)).length||en||(ee="."),ee.length>0&&er&&(ee+="/"),en)?"/"+ee:ee},isAbsolute:function(ee){return assertPath(ee),ee.length>0&&47===ee.charCodeAt(0)},join:function(){if(0==arguments.length)return".";for(var ee,er=0;er<arguments.length;++er){var eo=arguments[er];assertPath(eo),eo.length>0&&(void 0===ee?ee=eo:ee+="/"+eo)}return void 0===ee?".":en.normalize(ee)},relative:function(ee,er){if(assertPath(ee),assertPath(er),ee===er||(ee=en.resolve(ee))===(er=en.resolve(er)))return"";for(var eo=1;eo<ee.length&&47===ee.charCodeAt(eo);++eo);for(var ei=ee.length,es=ei-eo,eu=1;eu<er.length&&47===er.charCodeAt(eu);++eu);for(var ec=er.length-eu,ed=es<ec?es:ec,ef=-1,ep=0;ep<=ed;++ep){if(ep===ed){if(ec>ed){if(47===er.charCodeAt(eu+ep))return er.slice(eu+ep+1);if(0===ep)return er.slice(eu+ep)}else es>ed&&(47===ee.charCodeAt(eo+ep)?ef=ep:0===ep&&(ef=0));break}var eh=ee.charCodeAt(eo+ep);if(eh!==er.charCodeAt(eu+ep))break;47===eh&&(ef=ep)}var em="";for(ep=eo+ef+1;ep<=ei;++ep)(ep===ei||47===ee.charCodeAt(ep))&&(0===em.length?em+="..":em+="/..");return em.length>0?em+er.slice(eu+ef):(eu+=ef,47===er.charCodeAt(eu)&&++eu,er.slice(eu))},_makeLong:function(ee){return ee},dirname:function(ee){if(assertPath(ee),0===ee.length)return".";for(var en=ee.charCodeAt(0),er=47===en,eo=-1,ei=!0,es=ee.length-1;es>=1;--es)if(47===(en=ee.charCodeAt(es))){if(!ei){eo=es;break}}else ei=!1;return -1===eo?er?"/":".":er&&1===eo?"//":ee.slice(0,eo)},basename:function(ee,en){if(void 0!==en&&"string"!=typeof en)throw TypeError('"ext" argument must be a string');assertPath(ee);var er,eo=0,ei=-1,es=!0;if(void 0!==en&&en.length>0&&en.length<=ee.length){if(en.length===ee.length&&en===ee)return"";var eu=en.length-1,ec=-1;for(er=ee.length-1;er>=0;--er){var ed=ee.charCodeAt(er);if(47===ed){if(!es){eo=er+1;break}}else -1===ec&&(es=!1,ec=er+1),eu>=0&&(ed===en.charCodeAt(eu)?-1==--eu&&(ei=er):(eu=-1,ei=ec))}return eo===ei?ei=ec:-1===ei&&(ei=ee.length),ee.slice(eo,ei)}for(er=ee.length-1;er>=0;--er)if(47===ee.charCodeAt(er)){if(!es){eo=er+1;break}}else -1===ei&&(es=!1,ei=er+1);return -1===ei?"":ee.slice(eo,ei)},extname:function(ee){assertPath(ee);for(var en=-1,er=0,eo=-1,ei=!0,es=0,eu=ee.length-1;eu>=0;--eu){var ec=ee.charCodeAt(eu);if(47===ec){if(!ei){er=eu+1;break}continue}-1===eo&&(ei=!1,eo=eu+1),46===ec?-1===en?en=eu:1!==es&&(es=1):-1!==en&&(es=-1)}return -1===en||-1===eo||0===es||1===es&&en===eo-1&&en===er+1?"":ee.slice(en,eo)},format:function(ee){if(null===ee||"object"!=typeof ee)throw TypeError('The "pathObject" argument must be of type Object. Received type '+typeof ee);return _format("/",ee)},parse:function(ee){assertPath(ee);var en,er={root:"",dir:"",base:"",ext:"",name:""};if(0===ee.length)return er;var eo=ee.charCodeAt(0),ei=47===eo;ei?(er.root="/",en=1):en=0;for(var es=-1,eu=0,ec=-1,ed=!0,ef=ee.length-1,ep=0;ef>=en;--ef){if(47===(eo=ee.charCodeAt(ef))){if(!ed){eu=ef+1;break}continue}-1===ec&&(ed=!1,ec=ef+1),46===eo?-1===es?es=ef:1!==ep&&(ep=1):-1!==es&&(ep=-1)}return -1===es||-1===ec||0===ep||1===ep&&es===ec-1&&es===eu+1?-1!==ec&&(0===eu&&ei?er.base=er.name=ee.slice(1,ec):er.base=er.name=ee.slice(eu,ec)):(0===eu&&ei?(er.name=ee.slice(1,es),er.base=ee.slice(1,ec)):(er.name=ee.slice(eu,es),er.base=ee.slice(eu,ec)),er.ext=ee.slice(es,ec)),eu>0?er.dir=ee.slice(0,eu-1):ei&&(er.dir="/"),er},sep:"/",delimiter:":",win32:null,posix:null};en.posix=en,ee.exports=en}},eo={};function __nccwpck_require__(ee){var en=eo[ee];if(void 0!==en)return en.exports;var ei=eo[ee]={exports:{}},es=!0;try{er[ee](ei,ei.exports,__nccwpck_require__),es=!1}finally{es&&delete eo[ee]}return ei.exports}__nccwpck_require__.ab=en+"/";var ei=__nccwpck_require__(114);ee.exports=ei}()},7663:function(ee){var en="/";!function(){var er={229:function(ee){var en,er,eo,ei=ee.exports={};function defaultSetTimout(){throw Error("setTimeout has not been defined")}function defaultClearTimeout(){throw Error("clearTimeout has not been defined")}function runTimeout(ee){if(en===setTimeout)return setTimeout(ee,0);if((en===defaultSetTimout||!en)&&setTimeout)return en=setTimeout,setTimeout(ee,0);try{return en(ee,0)}catch(er){try{return en.call(null,ee,0)}catch(er){return en.call(this,ee,0)}}}function runClearTimeout(ee){if(er===clearTimeout)return clearTimeout(ee);if((er===defaultClearTimeout||!er)&&clearTimeout)return er=clearTimeout,clearTimeout(ee);try{return er(ee)}catch(en){try{return er.call(null,ee)}catch(en){return er.call(this,ee)}}}!function(){try{en="function"==typeof setTimeout?setTimeout:defaultSetTimout}catch(ee){en=defaultSetTimout}try{er="function"==typeof clearTimeout?clearTimeout:defaultClearTimeout}catch(ee){er=defaultClearTimeout}}();var es=[],eu=!1,ec=-1;function cleanUpNextTick(){eu&&eo&&(eu=!1,eo.length?es=eo.concat(es):ec=-1,es.length&&drainQueue())}function drainQueue(){if(!eu){var ee=runTimeout(cleanUpNextTick);eu=!0;for(var en=es.length;en;){for(eo=es,es=[];++ec<en;)eo&&eo[ec].run();ec=-1,en=es.length}eo=null,eu=!1,runClearTimeout(ee)}}function Item(ee,en){this.fun=ee,this.array=en}function noop(){}ei.nextTick=function(ee){var en=Array(arguments.length-1);if(arguments.length>1)for(var er=1;er<arguments.length;er++)en[er-1]=arguments[er];es.push(new Item(ee,en)),1!==es.length||eu||runTimeout(drainQueue)},Item.prototype.run=function(){this.fun.apply(null,this.array)},ei.title="browser",ei.browser=!0,ei.env={},ei.argv=[],ei.version="",ei.versions={},ei.on=noop,ei.addListener=noop,ei.once=noop,ei.off=noop,ei.removeListener=noop,ei.removeAllListeners=noop,ei.emit=noop,ei.prependListener=noop,ei.prependOnceListener=noop,ei.listeners=function(ee){return[]},ei.binding=function(ee){throw Error("process.binding is not supported")},ei.cwd=function(){return"/"},ei.chdir=function(ee){throw Error("process.chdir is not supported")},ei.umask=function(){return 0}}},eo={};function __nccwpck_require__(ee){var en=eo[ee];if(void 0!==en)return en.exports;var ei=eo[ee]={exports:{}},es=!0;try{er[ee](ei,ei.exports,__nccwpck_require__),es=!1}finally{es&&delete eo[ee]}return ei.exports}__nccwpck_require__.ab=en+"/";var ei=__nccwpck_require__(229);ee.exports=ei}()},9008:function(ee,en,er){ee.exports=er(9201)},5675:function(ee,en,er){ee.exports=er(645)},1664:function(ee,en,er){ee.exports=er(5170)},1163:function(ee,en,er){ee.exports=er(9974)},9013:function(ee,en,er){"use strict";er.d(en,{UW:function(){return Callout},Zb:function(){return Card},oy:function(){return eG},EK:function(){return Code},zH:function(){return eX},SU:function(){return Pre},Rg:function(){return Steps},iA:function(){return Table},Td:function(){return Td},Th:function(){return Th},Tr:function(){return Tr}});var eo,ei,es,eu=er(512),ec=er(5893),Button=({children:ee,className:en,...er})=>(0,ec.jsx)("button",{className:(0,eu.Z)("nextra-button nx-transition-all active:nx-opacity-50","nx-bg-primary-700/5 nx-border nx-border-black/5 nx-text-gray-600 hover:nx-text-gray-900 nx-rounded-md nx-p-1.5","dark:nx-bg-primary-300/10 dark:nx-border-white/10 dark:nx-text-gray-400 dark:hover:nx-text-gray-50",en),...er,children:ee}),ed=er(4861),ef={default:"\uD83D\uDCA1",error:"\uD83D\uDEAB",info:(0,ec.jsx)(ed.AV,{className:"nx-mt-1"}),warning:"⚠️"},ep={default:(0,eu.Z)("nx-border-orange-100 nx-bg-orange-50 nx-text-orange-800 dark:nx-border-orange-400/30 dark:nx-bg-orange-400/20 dark:nx-text-orange-300"),error:(0,eu.Z)("nx-border-red-200 nx-bg-red-100 nx-text-red-900 dark:nx-border-red-200/30 dark:nx-bg-red-900/30 dark:nx-text-red-200"),info:(0,eu.Z)("nx-border-blue-200 nx-bg-blue-100 nx-text-blue-900 dark:nx-border-blue-200/30 dark:nx-bg-blue-900/30 dark:nx-text-blue-200"),warning:(0,eu.Z)("nx-border-yellow-100 nx-bg-yellow-50 nx-text-yellow-900 dark:nx-border-yellow-200/30 dark:nx-bg-yellow-700/30 dark:nx-text-yellow-200")};function Callout({children:ee,type:en="default",emoji:er=ef[en]}){return(0,ec.jsxs)("div",{className:(0,eu.Z)("nextra-callout nx-overflow-x-auto nx-mt-6 nx-flex nx-rounded-lg nx-border nx-py-2 ltr:nx-pr-4 rtl:nx-pl-4","contrast-more:nx-border-current contrast-more:dark:nx-border-current",ep[en]),children:[(0,ec.jsx)("div",{className:"nx-select-none nx-text-xl ltr:nx-pl-3 ltr:nx-pr-2 rtl:nx-pr-3 rtl:nx-pl-2",style:{fontFamily:'"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"'},children:er}),(0,ec.jsx)("div",{className:"nx-w-full nx-min-w-0 nx-leading-7",children:ee})]})}var eh=er(7294),CopyToClipboard=({getValue:ee,...en})=>{let[er,eo]=(0,eh.useState)(!1);(0,eh.useEffect)(()=>{if(!er)return;let ee=setTimeout(()=>{eo(!1)},2e3);return()=>{clearTimeout(ee)}},[er]);let ei=(0,eh.useCallback)(async()=>{eo(!0),navigator?.clipboard||console.error("Access to clipboard rejected!");try{await navigator.clipboard.writeText(ee())}catch{console.error("Failed to copy!")}},[ee]),es=er?ed.nQ:ed.TI;return(0,ec.jsx)(Button,{onClick:ei,title:"Copy code",tabIndex:0,...en,children:(0,ec.jsx)(es,{className:"nextra-copy-icon nx-pointer-events-none nx-h-4 nx-w-4"})})},Code=({children:ee,className:en,...er})=>{let eo="data-line-numbers"in er;return(0,ec.jsx)("code",{className:(0,eu.Z)("nx-border-black nx-border-opacity-[0.04] nx-bg-opacity-[0.03] nx-bg-black nx-break-words nx-rounded-md nx-border nx-py-0.5 nx-px-[.25em] nx-text-[.9em]","dark:nx-border-white/10 dark:nx-bg-white/10",eo&&"[counter-reset:line]",en),dir:"ltr",...er,children:ee})},Pre=({children:ee,className:en,hasCopyCode:er,filename:eo,...ei})=>{let es=(0,eh.useRef)(null),ef=(0,eh.useCallback)(()=>{let ee=document.documentElement.dataset,en="nextraWordWrap"in ee;en?delete ee.nextraWordWrap:ee.nextraWordWrap=""},[]);return(0,ec.jsxs)("div",{className:"nextra-code-block nx-relative nx-mt-6 first:nx-mt-0",children:[eo&&(0,ec.jsx)("div",{className:"nx-absolute nx-top-0 nx-z-[1] nx-w-full nx-truncate nx-rounded-t-xl nx-bg-primary-700/5 nx-py-2 nx-px-4 nx-text-xs nx-text-gray-700 dark:nx-bg-primary-300/10 dark:nx-text-gray-200",children:eo}),(0,ec.jsx)("pre",{className:(0,eu.Z)("nx-bg-primary-700/5 nx-mb-4 nx-overflow-x-auto nx-rounded-xl nx-subpixel-antialiased dark:nx-bg-primary-300/10 nx-text-[.9em]","contrast-more:nx-border contrast-more:nx-border-primary-900/20 contrast-more:nx-contrast-150 contrast-more:dark:nx-border-primary-100/40",eo?"nx-pt-12 nx-pb-4":"nx-py-4",en),ref:es,...ei,children:ee}),(0,ec.jsxs)("div",{className:(0,eu.Z)("nx-opacity-0 nx-transition [div:hover>&]:nx-opacity-100 focus-within:nx-opacity-100","nx-flex nx-gap-1 nx-absolute nx-m-[11px] nx-right-0",eo?"nx-top-8":"nx-top-0"),children:[(0,ec.jsx)(Button,{onClick:ef,className:"md:nx-hidden",title:"Toggle word wrap",children:(0,ec.jsx)(ed.NK,{className:"nx-pointer-events-none nx-h-4 nx-w-4"})}),er&&(0,ec.jsx)(CopyToClipboard,{getValue:()=>es.current?.querySelector("code")?.textContent||""})]})]})};function Steps({children:ee,className:en,...er}){return(0,ec.jsx)("div",{className:(0,eu.Z)("nextra-steps nx-ml-4 nx-mb-12 nx-border-l nx-border-gray-200 nx-pl-6","dark:nx-border-neutral-800 [counter-reset:step]",en),...er,children:ee})}var em=er(2351),eg=er(9946),ex=er(2984),ev=er(1363),ey=er(4575),eb=er(6723),e_=er(3784),ew=er(4157),ek=er(3855),eC=er(4879),eE=er(6045);function focus_sentinel_A({onFocus:ee}){let[en,er]=(0,eh.useState)(!0),eo=(0,eC.t)();return en?eh.createElement(eE._,{as:"button",type:"button",features:eE.A.Focusable,onFocus:en=>{en.preventDefault();let ei,es=50;function t(){if(es--<=0){ei&&cancelAnimationFrame(ei);return}if(ee()){if(cancelAnimationFrame(ei),!eo.current)return;er(!1);return}ei=requestAnimationFrame(t)}ei=requestAnimationFrame(t)}}):null}var eT=er(3781),eS=er(1021),eO=er(5466);let eP=eh.createContext(null);function a(){return{groups:new Map,get(ee,en){var er;let eo=this.groups.get(ee);eo||(eo=new Map,this.groups.set(ee,eo));let ei=null!=(er=eo.get(en))?er:0;function i(){let ee=eo.get(en);ee>1?eo.set(en,ee-1):eo.delete(en)}return eo.set(en,ei+1),[Array.from(eo.keys()).indexOf(en),i]}}}function stable_collection_C({children:ee}){let en=eh.useRef(a());return eh.createElement(eP.Provider,{value:en},ee)}function stable_collection_d(ee){let en=eh.useContext(eP);if(!en)throw Error("You must wrap your component in a <StableCollection>");let er=f(),[eo,ei]=en.current.get(ee,er);return eh.useEffect(()=>ei,[]),eo}function f(){var ee,en,er;let eo=null!=(er=null==(en=null==(ee=eh.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED)?void 0:ee.ReactCurrentOwner)?void 0:en.current)?er:null;if(!eo)return Symbol();let ei=[],es=eo;for(;es;)ei.push(es.index),es=es.return;return"$."+ei.join(".")}var eR=((eo=eR||{})[eo.Forwards=0]="Forwards",eo[eo.Backwards=1]="Backwards",eo),eI=((ei=eI||{})[ei.Less=-1]="Less",ei[ei.Equal=0]="Equal",ei[ei.Greater=1]="Greater",ei),ej=((es=ej||{})[es.SetSelectedIndex=0]="SetSelectedIndex",es[es.RegisterTab=1]="RegisterTab",es[es.UnregisterTab=2]="UnregisterTab",es[es.RegisterPanel=3]="RegisterPanel",es[es.UnregisterPanel=4]="UnregisterPanel",es);let eN={0(ee,en){var er;let eo=(0,ey.z2)(ee.tabs,ee=>ee.current),ei=(0,ey.z2)(ee.panels,ee=>ee.current),es=eo.filter(ee=>{var en;return!(null!=(en=ee.current)&&en.hasAttribute("disabled"))}),eu={...ee,tabs:eo,panels:ei};if(en.index<0||en.index>eo.length-1){let er=(0,ex.E)(Math.sign(en.index-ee.selectedIndex),{[-1]:()=>1,0:()=>(0,ex.E)(Math.sign(en.index),{[-1]:()=>0,0:()=>0,1:()=>1}),1:()=>0});if(0===es.length)return eu;let ei=(0,ex.E)(er,{0:()=>eo.indexOf(es[0]),1:()=>eo.indexOf(es[es.length-1])});return{...eu,selectedIndex:-1===ei?ee.selectedIndex:ei}}let ec=eo.slice(0,en.index),ed=[...eo.slice(en.index),...ec].find(ee=>es.includes(ee));if(!ed)return eu;let ef=null!=(er=eo.indexOf(ed))?er:ee.selectedIndex;return -1===ef&&(ef=ee.selectedIndex),{...eu,selectedIndex:ef}},1(ee,en){var er;if(ee.tabs.includes(en.tab))return ee;let eo=ee.tabs[ee.selectedIndex],ei=(0,ey.z2)([...ee.tabs,en.tab],ee=>ee.current),es=null!=(er=ei.indexOf(eo))?er:ee.selectedIndex;return -1===es&&(es=ee.selectedIndex),{...ee,tabs:ei,selectedIndex:es}},2:(ee,en)=>({...ee,tabs:ee.tabs.filter(ee=>ee!==en.tab)}),3:(ee,en)=>ee.panels.includes(en.panel)?ee:{...ee,panels:(0,ey.z2)([...ee.panels,en.panel],ee=>ee.current)},4:(ee,en)=>({...ee,panels:ee.panels.filter(ee=>ee!==en.panel)})},eA=(0,eh.createContext)(null);function M(ee){let en=(0,eh.useContext)(eA);if(null===en){let en=Error(`<${ee} /> is missing a parent <Tab.Group /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(en,M),en}return en}eA.displayName="TabsDataContext";let eZ=(0,eh.createContext)(null);function q(ee){let en=(0,eh.useContext)(eZ);if(null===en){let en=Error(`<${ee} /> is missing a parent <Tab.Group /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(en,q),en}return en}function fe(ee,en){return(0,ex.E)(en.type,eN,ee,en)}eZ.displayName="TabsActionsContext";let eL=eh.Fragment;function me(ee,en){let{defaultIndex:er=0,vertical:eo=!1,manual:ei=!1,onChange:es,selectedIndex:eu=null,...ec}=ee,ed=eo?"vertical":"horizontal",ef=ei?"manual":"auto",ep=null!==eu,eg=(0,e_.T)(en),[ex,ev]=(0,eh.useReducer)(fe,{selectedIndex:null!=eu?eu:er,tabs:[],panels:[]}),ew=(0,eh.useMemo)(()=>({selectedIndex:ex.selectedIndex}),[ex.selectedIndex]),eC=(0,ek.E)(es||(()=>{})),eE=(0,ek.E)(ex.tabs),eS=(0,eh.useMemo)(()=>({orientation:ed,activation:ef,...ex}),[ed,ef,ex]),eO=(0,eT.z)(ee=>(ev({type:1,tab:ee}),()=>ev({type:2,tab:ee}))),eP=(0,eT.z)(ee=>(ev({type:3,panel:ee}),()=>ev({type:4,panel:ee}))),eR=(0,eT.z)(ee=>{eI.current!==ee&&eC.current(ee),ep||ev({type:0,index:ee})}),eI=(0,ek.E)(ep?ee.selectedIndex:ex.selectedIndex),ej=(0,eh.useMemo)(()=>({registerTab:eO,registerPanel:eP,change:eR}),[]);(0,eb.e)(()=>{ev({type:0,index:null!=eu?eu:er})},[eu]),(0,eb.e)(()=>{if(void 0===eI.current||ex.tabs.length<=0)return;let ee=(0,ey.z2)(ex.tabs,ee=>ee.current);ee.some((ee,en)=>ex.tabs[en]!==ee)&&eR(ee.indexOf(ex.tabs[eI.current]))});let eN={ref:eg};return eh.createElement(stable_collection_C,null,eh.createElement(eZ.Provider,{value:ej},eh.createElement(eA.Provider,{value:eS},eS.tabs.length<=0&&eh.createElement(focus_sentinel_A,{onFocus:()=>{var ee,en;for(let er of eE.current)if((null==(ee=er.current)?void 0:ee.tabIndex)===0)return null==(en=er.current)||en.focus(),!0;return!1}}),(0,em.sY)({ourProps:eN,theirProps:ec,slot:ew,defaultTag:eL,name:"Tabs"}))))}let eM="div";function xe(ee,en){let{orientation:er,selectedIndex:eo}=M("Tab.List"),ei=(0,e_.T)(en);return(0,em.sY)({ourProps:{ref:ei,role:"tablist","aria-orientation":er},theirProps:ee,slot:{selectedIndex:eo},defaultTag:eM,name:"Tabs.List"})}let e$="button";function ye(ee,en){var er,eo;let ei=(0,eg.M)(),{id:es=`headlessui-tabs-tab-${ei}`,...eu}=ee,{orientation:ec,activation:ed,selectedIndex:ef,tabs:ep,panels:ek}=M("Tab"),eC=q("Tab"),eE=M("Tab"),eP=(0,eh.useRef)(null),eR=(0,e_.T)(eP,en);(0,eb.e)(()=>eC.registerTab(eP),[eC,eP]);let eI=stable_collection_d("tabs"),ej=ep.indexOf(eP);-1===ej&&(ej=eI);let eN=ej===ef,eA=(0,eT.z)(ee=>{var en;let er=ee();if(er===ey.fE.Success&&"auto"===ed){let ee=null==(en=(0,eO.r)(eP))?void 0:en.activeElement,er=eE.tabs.findIndex(en=>en.current===ee);-1!==er&&eC.change(er)}return er}),eZ=(0,eT.z)(ee=>{let en=ep.map(ee=>ee.current).filter(Boolean);if(ee.key===ev.R.Space||ee.key===ev.R.Enter){ee.preventDefault(),ee.stopPropagation(),eC.change(ej);return}switch(ee.key){case ev.R.Home:case ev.R.PageUp:return ee.preventDefault(),ee.stopPropagation(),eA(()=>(0,ey.jA)(en,ey.TO.First));case ev.R.End:case ev.R.PageDown:return ee.preventDefault(),ee.stopPropagation(),eA(()=>(0,ey.jA)(en,ey.TO.Last))}if(eA(()=>(0,ex.E)(ec,{vertical:()=>ee.key===ev.R.ArrowUp?(0,ey.jA)(en,ey.TO.Previous|ey.TO.WrapAround):ee.key===ev.R.ArrowDown?(0,ey.jA)(en,ey.TO.Next|ey.TO.WrapAround):ey.fE.Error,horizontal:()=>ee.key===ev.R.ArrowLeft?(0,ey.jA)(en,ey.TO.Previous|ey.TO.WrapAround):ee.key===ev.R.ArrowRight?(0,ey.jA)(en,ey.TO.Next|ey.TO.WrapAround):ey.fE.Error}))===ey.fE.Success)return ee.preventDefault()}),eL=(0,eh.useRef)(!1),eM=(0,eT.z)(()=>{var ee;eL.current||(eL.current=!0,null==(ee=eP.current)||ee.focus({preventScroll:!0}),eC.change(ej),(0,eS.Y)(()=>{eL.current=!1}))}),eD=(0,eT.z)(ee=>{ee.preventDefault()}),eF=(0,eh.useMemo)(()=>({selected:eN}),[eN]),ez={ref:eR,onKeyDown:eZ,onMouseDown:eD,onClick:eM,id:es,role:"tab",type:(0,ew.f)(ee,eP),"aria-controls":null==(eo=null==(er=ek[ej])?void 0:er.current)?void 0:eo.id,"aria-selected":eN,tabIndex:eN?0:-1};return(0,em.sY)({ourProps:ez,theirProps:eu,slot:eF,defaultTag:e$,name:"Tabs.Tab"})}let eD="div";function Ae(ee,en){let{selectedIndex:er}=M("Tab.Panels"),eo=(0,e_.T)(en),ei=(0,eh.useMemo)(()=>({selectedIndex:er}),[er]);return(0,em.sY)({ourProps:{ref:eo},theirProps:ee,slot:ei,defaultTag:eD,name:"Tabs.Panels"})}let eF="div",ez=em.AN.RenderStrategy|em.AN.Static;function Se(ee,en){var er,eo,ei,es;let eu=(0,eg.M)(),{id:ec=`headlessui-tabs-panel-${eu}`,tabIndex:ed=0,...ef}=ee,{selectedIndex:ep,tabs:ex,panels:ev}=M("Tab.Panel"),ey=q("Tab.Panel"),ew=(0,eh.useRef)(null),ek=(0,e_.T)(ew,en);(0,eb.e)(()=>ey.registerPanel(ew),[ey,ew]);let eC=stable_collection_d("panels"),eT=ev.indexOf(ew);-1===eT&&(eT=eC);let eS=eT===ep,eO=(0,eh.useMemo)(()=>({selected:eS}),[eS]),eP={ref:ek,id:ec,role:"tabpanel","aria-labelledby":null==(eo=null==(er=ex[eT])?void 0:er.current)?void 0:eo.id,tabIndex:eS?ed:-1};return eS||null!=(ei=ef.unmount)&&!ei||null!=(es=ef.static)&&es?(0,em.sY)({ourProps:eP,theirProps:ef,slot:eO,defaultTag:eF,features:ez,visible:eS,name:"Tabs.Panel"}):eh.createElement(eE._,{as:"span",...eP})}let eV=Object.assign((0,em.yV)(ye),{Group:(0,em.yV)(me),List:(0,em.yV)(xe),Panels:(0,em.yV)(Ae),Panel:(0,em.yV)(Se)});function isTabObjectItem(ee){return!!ee&&"object"==typeof ee&&"label"in ee}Object.assign(function({items:ee,selectedIndex:en,defaultIndex:er=0,onChange:eo,children:ei,storageKey:es}){let[ed,ef]=(0,eh.useState)(er);(0,eh.useEffect)(()=>{void 0!==en&&ef(en)},[en]),(0,eh.useEffect)(()=>{if(!es)return;function fn(ee){ee.key===es&&ef(Number(ee.newValue))}let ee=Number(localStorage.getItem(es));return ef(Number.isNaN(ee)?0:ee),window.addEventListener("storage",fn),()=>{window.removeEventListener("storage",fn)}},[]);let ep=(0,eh.useCallback)(ee=>{if(es){let en=String(ee);localStorage.setItem(es,en),window.dispatchEvent(new StorageEvent("storage",{key:es,newValue:en}));return}ef(ee),eo?.(ee)},[]);return(0,ec.jsxs)(eV.Group,{selectedIndex:ed,defaultIndex:er,onChange:ep,children:[(0,ec.jsx)("div",{className:"nextra-scrollbar nx-overflow-x-auto nx-overflow-y-hidden nx-overscroll-x-contain",children:(0,ec.jsx)(eV.List,{className:"nx-mt-4 nx-flex nx-w-max nx-min-w-full nx-border-b nx-border-gray-200 nx-pb-px dark:nx-border-neutral-800",children:ee.map((ee,en)=>{let er=isTabObjectItem(ee)&&ee.disabled;return(0,ec.jsx)(eV,{disabled:er,className:({selected:ee})=>(0,eu.Z)("nx-mr-2 nx-rounded-t nx-p-2 nx-font-medium nx-leading-5 nx-transition-colors","-nx-mb-0.5 nx-select-none nx-border-b-2",ee?"nx-border-primary-500 nx-text-primary-600":"nx-border-transparent nx-text-gray-600 hover:nx-border-gray-200 hover:nx-text-black dark:nx-text-gray-200 dark:hover:nx-border-neutral-800 dark:hover:nx-text-white",er&&"nx-pointer-events-none nx-text-gray-400 dark:nx-text-neutral-600"),children:isTabObjectItem(ee)?ee.label:ee},en)})})}),(0,ec.jsx)(eV.Panels,{children:ei})]})},{displayName:"Tabs",Tab:function({children:ee,...en}){return(0,ec.jsx)(eV.Panel,{...en,className:"nx-rounded nx-pt-6",children:ee})}});var Td=({className:ee="",...en})=>(0,ec.jsx)("td",{className:(0,eu.Z)("nx-m-0 nx-border nx-border-gray-300 nx-px-4 nx-py-2 dark:nx-border-gray-600",ee),...en}),Table=({className:ee="",...en})=>(0,ec.jsx)("table",{className:(0,eu.Z)("nx-block nx-overflow-x-scroll",ee),...en}),Th=({className:ee="",...en})=>(0,ec.jsx)("th",{className:(0,eu.Z)("nx-m-0 nx-border nx-border-gray-300 nx-px-4 nx-py-2 nx-font-semibold dark:nx-border-gray-600",ee),...en}),Tr=({className:ee="",...en})=>(0,ec.jsx)("tr",{className:(0,eu.Z)("nx-m-0 nx-border-t nx-border-gray-300 nx-p-0 dark:nx-border-gray-600","even:nx-bg-gray-100 even:dark:nx-bg-gray-600/20",ee),...en}),eB=er(1664),eW=er.n(eB),eU={cards:(0,eu.Z)("nextra-cards nx-mt-4 nx-gap-4 nx-grid","nx-not-prose"),card:(0,eu.Z)("nextra-card nx-group nx-flex nx-flex-col nx-justify-start nx-overflow-hidden nx-rounded-lg nx-border nx-border-gray-200","nx-text-current nx-no-underline dark:nx-shadow-none","hover:nx-shadow-gray-100 dark:hover:nx-shadow-none nx-shadow-gray-100","active:nx-shadow-sm active:nx-shadow-gray-200","nx-transition-all nx-duration-200 hover:nx-border-gray-300"),title:(0,eu.Z)("nx-flex nx-font-semibold nx-items-start nx-gap-2 nx-p-4 nx-text-gray-700 hover:nx-text-gray-900")},eH=(0,ec.jsx)("span",{className:"nx-transition-transform nx-duration-75 group-hover:nx-translate-x-[2px]",children:"→"});function Card({children:ee,title:en,icon:er,image:eo,arrow:ei,href:es,...ed}){let ef=ei?eH:null;return eo?(0,ec.jsxs)(eW(),{href:es,className:(0,eu.Z)(eU.card,"nx-bg-gray-100 nx-shadow dark:nx-border-neutral-700 dark:nx-bg-neutral-800 dark:nx-text-gray-50 hover:nx-shadow-lg dark:hover:nx-border-neutral-500 dark:hover:nx-bg-neutral-700"),...ed,children:[ee,(0,ec.jsxs)("span",{className:(0,eu.Z)(eU.title,"dark:nx-text-gray-300 dark:hover:nx-text-gray-100"),children:[er,(0,ec.jsxs)("span",{className:"nx-flex nx-gap-1",children:[en,ef]})]})]}):(0,ec.jsx)(eW(),{href:es,className:(0,eu.Z)(eU.card,"nx-bg-transparent nx-shadow-sm dark:nx-border-neutral-800 hover:nx-bg-slate-50 hover:nx-shadow-md dark:hover:nx-border-neutral-700 dark:hover:nx-bg-neutral-900"),...ed,children:(0,ec.jsxs)("span",{className:(0,eu.Z)(eU.title,"dark:nx-text-neutral-200 dark:hover:nx-text-neutral-50 nx-flex nx-items-center"),children:[er,en,ef]})})}var eG=Object.assign(function({children:ee,num:en=3,className:er,style:eo,...ei}){return(0,ec.jsx)("div",{className:(0,eu.Z)(eU.cards,er),...ei,style:{...eo,"--rows":en},children:ee})},{displayName:"Cards",Card}),eK=(0,eh.createContext)(0);function useIndent(){return(0,eh.useContext)(eK)}function Tree({children:ee}){return(0,ec.jsx)("div",{className:(0,eu.Z)("nextra-filetree nx-mt-6 nx-select-none nx-text-sm nx-text-gray-800 dark:nx-text-gray-300","nx-not-prose"),children:(0,ec.jsx)("div",{className:"nx-inline-block nx-rounded-lg nx-border nx-px-4 nx-py-2 dark:nx-border-neutral-800",children:ee})})}function Ident(){let ee=useIndent();return(0,ec.jsx)(ec.Fragment,{children:Array.from({length:ee},(ee,en)=>(0,ec.jsx)("span",{className:"nx-w-5"},en))})}var eq=(0,eh.memo)(({label:ee,name:en,open:er,children:eo,defaultOpen:ei=!1,onToggle:es})=>{let eu=useIndent(),[ed,ef]=(0,eh.useState)(ei),ep=(0,eh.useCallback)(()=>{es?.(!ed),ef(!ed)},[ed,es]),em=void 0===er?ed:er;return(0,ec.jsxs)("li",{className:"nx-flex nx-list-none nx-flex-col",children:[(0,ec.jsxs)("button",{onClick:ep,title:en,className:"nx-inline-flex nx-cursor-pointer nx-items-center nx-py-1 hover:nx-opacity-60",children:[(0,ec.jsx)(Ident,{}),(0,ec.jsx)("svg",{width:"1em",height:"1em",viewBox:"0 0 24 24",children:(0,ec.jsx)("path",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:em?"M5 19a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h4l2 2h4a2 2 0 0 1 2 2v1M5 19h14a2 2 0 0 0 2-2v-5a2 2 0 0 0-2-2H9a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2Z":"M3 7v10a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-6l-2-2H5a2 2 0 0 0-2 2Z"})}),(0,ec.jsx)("span",{className:"nx-ml-1",children:ee??en})]}),em&&(0,ec.jsx)("ul",{children:(0,ec.jsx)(eK.Provider,{value:eu+1,children:eo})})]})});eq.displayName="Folder";var eY=(0,eh.memo)(({label:ee,name:en,active:er})=>(0,ec.jsx)("li",{className:(0,eu.Z)("nx-flex nx-list-none",er&&"nx-text-primary-600 contrast-more:nx-underline"),children:(0,ec.jsxs)("span",{className:"nx-inline-flex nx-cursor-default nx-items-center nx-py-1",children:[(0,ec.jsx)(Ident,{}),(0,ec.jsx)("svg",{width:"1em",height:"1em",viewBox:"0 0 24 24",children:(0,ec.jsx)("path",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5.586a1 1 0 0 1 .707.293l5.414 5.414a1 1 0 0 1 .293.707V19a2 2 0 0 1-2 2Z"})}),(0,ec.jsx)("span",{className:"nx-ml-1",children:ee??en})]})}));eY.displayName="File";var eX=Object.assign(Tree,{Folder:eq,File:eY})},4861:function(ee,en,er){"use strict";er.d(en,{LZ:function(){return ArrowRightIcon},nQ:function(){return CheckIcon},TI:function(){return CopyIcon},D7:function(){return DiscordIcon},Qq:function(){return ExpandIcon},fy:function(){return GitHubIcon},n9:function(){return GlobeIcon},AV:function(){return InformationCircleIcon},Oq:function(){return MenuIcon},kL:function(){return MoonIcon},L4:function(){return SpinnerIcon},NW:function(){return SunIcon},NK:function(){return WordWrapIcon},b0:function(){return XIcon}});var eo=er(5893);function ArrowRightIcon({pathClassName:ee,...en}){return(0,eo.jsx)("svg",{fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",...en,children:(0,eo.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M9 5l7 7-7 7",className:ee})})}function CheckIcon(ee){return(0,eo.jsx)("svg",{viewBox:"0 0 20 20",width:"1em",height:"1em",fill:"currentColor",...ee,children:(0,eo.jsx)("path",{fillRule:"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z",clipRule:"evenodd"})})}function CopyIcon(ee){return(0,eo.jsxs)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",stroke:"currentColor",...ee,children:[(0,eo.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}),(0,eo.jsx)("path",{d:"M5 15H4C2.89543 15 2 14.1046 2 13V4C2 2.89543 2.89543 2 4 2H13C14.1046 2 15 2.89543 15 4V5",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]})}function DiscordIcon(ee){return(0,eo.jsxs)("svg",{width:"24",height:"24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 5 30.67 23.25",...ee,children:[(0,eo.jsx)("title",{children:"Discord"}),(0,eo.jsx)("path",{d:"M26.0015 6.9529C24.0021 6.03845 21.8787 5.37198 19.6623 5C19.3833 5.48048 19.0733 6.13144 18.8563 6.64292C16.4989 6.30193 14.1585 6.30193 11.8336 6.64292C11.6166 6.13144 11.2911 5.48048 11.0276 5C8.79575 5.37198 6.67235 6.03845 4.6869 6.9529C0.672601 12.8736 -0.41235 18.6548 0.130124 24.3585C2.79599 26.2959 5.36889 27.4739 7.89682 28.2489C8.51679 27.4119 9.07477 26.5129 9.55525 25.5675C8.64079 25.2265 7.77283 24.808 6.93587 24.312C7.15286 24.1571 7.36986 23.9866 7.57135 23.8161C12.6241 26.1255 18.0969 26.1255 23.0876 23.8161C23.3046 23.9866 23.5061 24.1571 23.7231 24.312C22.8861 24.808 22.0182 25.2265 21.1037 25.5675C21.5842 26.5129 22.1422 27.4119 22.7621 28.2489C25.2885 27.4739 27.8769 26.2959 30.5288 24.3585C31.1952 17.7559 29.4733 12.0212 26.0015 6.9529ZM10.2527 20.8402C8.73376 20.8402 7.49382 19.4608 7.49382 17.7714C7.49382 16.082 8.70276 14.7025 10.2527 14.7025C11.7871 14.7025 13.0425 16.082 13.0115 17.7714C13.0115 19.4608 11.7871 20.8402 10.2527 20.8402ZM20.4373 20.8402C18.9183 20.8402 17.6768 19.4608 17.6768 17.7714C17.6768 16.082 18.8873 14.7025 20.4373 14.7025C21.9717 14.7025 23.2271 16.082 23.1961 17.7714C23.1961 19.4608 21.9872 20.8402 20.4373 20.8402Z"})]})}function ExpandIcon({isOpen:ee,...en}){return(0,eo.jsxs)("svg",{height:"12",width:"12",viewBox:"0 0 16 16",fill:"currentColor",...en,children:[(0,eo.jsx)("path",{fillRule:"evenodd",d:"M4.177 7.823l2.396-2.396A.25.25 0 017 5.604v4.792a.25.25 0 01-.427.177L4.177 8.177a.25.25 0 010-.354z",className:ee?"":"nx-origin-[35%] nx-rotate-180"}),(0,eo.jsx)("path",{fillRule:"evenodd",d:"M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0114.25 16H1.75A1.75 1.75 0 010 14.25V1.75zm1.75-.25a.25.25 0 00-.25.25v12.5c0 .138.112.25.25.25H9.5v-13H1.75zm12.5 13H11v-13h3.25a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25z"})]})}function GitHubIcon(ee){return(0,eo.jsxs)("svg",{width:"24",height:"24",fill:"currentColor",viewBox:"3 3 18 18",...ee,children:[(0,eo.jsx)("title",{children:"GitHub"}),(0,eo.jsx)("path",{d:"M12 3C7.0275 3 3 7.12937 3 12.2276C3 16.3109 5.57625 19.7597 9.15374 20.9824C9.60374 21.0631 9.77249 20.7863 9.77249 20.5441C9.77249 20.3249 9.76125 19.5982 9.76125 18.8254C7.5 19.2522 6.915 18.2602 6.735 17.7412C6.63375 17.4759 6.19499 16.6569 5.8125 16.4378C5.4975 16.2647 5.0475 15.838 5.80124 15.8264C6.51 15.8149 7.01625 16.4954 7.18499 16.7723C7.99499 18.1679 9.28875 17.7758 9.80625 17.5335C9.885 16.9337 10.1212 16.53 10.38 16.2993C8.3775 16.0687 6.285 15.2728 6.285 11.7432C6.285 10.7397 6.63375 9.9092 7.20749 9.26326C7.1175 9.03257 6.8025 8.08674 7.2975 6.81794C7.2975 6.81794 8.05125 6.57571 9.77249 7.76377C10.4925 7.55615 11.2575 7.45234 12.0225 7.45234C12.7875 7.45234 13.5525 7.55615 14.2725 7.76377C15.9937 6.56418 16.7475 6.81794 16.7475 6.81794C17.2424 8.08674 16.9275 9.03257 16.8375 9.26326C17.4113 9.9092 17.76 10.7281 17.76 11.7432C17.76 15.2843 15.6563 16.0687 13.6537 16.2993C13.98 16.5877 14.2613 17.1414 14.2613 18.0065C14.2613 19.2407 14.25 20.2326 14.25 20.5441C14.25 20.7863 14.4188 21.0746 14.8688 20.9824C16.6554 20.364 18.2079 19.1866 19.3078 17.6162C20.4077 16.0457 20.9995 14.1611 21 12.2276C21 7.12937 16.9725 3 12 3Z"})]})}function GlobeIcon(ee){return(0,eo.jsx)("svg",{viewBox:"2 2 16 16",width:"12",height:"12",fill:"currentColor",...ee,children:(0,eo.jsx)("path",{fillRule:"evenodd",d:"M4.083 9h1.946c.089-1.546.383-2.97.837-4.118A6.004 6.004 0 004.083 9zM10 2a8 8 0 100 16 8 8 0 000-16zm0 2c-.076 0-.232.032-.465.262-.238.234-.497.623-.737 1.182-.389.907-.673 2.142-.766 3.556h3.936c-.093-1.414-.377-2.649-.766-3.556-.24-.56-.5-.948-.737-1.182C10.232 4.032 10.076 4 10 4zm3.971 5c-.089-1.546-.383-2.97-.837-4.118A6.004 6.004 0 0115.917 9h-1.946zm-2.003 2H8.032c.093 1.414.377 2.649.766 3.556.24.56.5.948.737 1.182.233.23.389.262.465.262.076 0 .232-.032.465-.262.238-.234.498-.623.737-1.182.389-.907.673-2.142.766-3.556zm1.166 4.118c.454-1.147.748-2.572.837-4.118h1.946a6.004 6.004 0 01-2.783 4.118zm-6.268 0C6.412 13.97 6.118 12.546 6.03 11H4.083a6.004 6.004 0 002.783 4.118z",clipRule:"evenodd"})})}function InformationCircleIcon(ee){return(0,eo.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",width:"20",height:"20",...ee,children:(0,eo.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z"})})}function MenuIcon(ee){return(0,eo.jsxs)("svg",{fill:"none",width:"24",height:"24",viewBox:"0 0 24 24",stroke:"currentColor",...ee,children:[(0,eo.jsx)("g",{children:(0,eo.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M4 6h16"})}),(0,eo.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M4 12h16"}),(0,eo.jsx)("g",{children:(0,eo.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M4 18h16"})})]})}function MoonIcon(ee){return(0,eo.jsx)("svg",{fill:"none",viewBox:"2 2 20 20",width:"12",height:"12",stroke:"currentColor",...ee,children:(0,eo.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",fill:"currentColor",d:"M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"})})}function SpinnerIcon(ee){return(0,eo.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",width:"24",height:"24",...ee,children:[(0,eo.jsx)("circle",{className:"nx-opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,eo.jsx)("path",{className:"nx-opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]})}function SunIcon(ee){return(0,eo.jsx)("svg",{fill:"none",viewBox:"3 3 18 18",width:"12",height:"12",stroke:"currentColor",...ee,children:(0,eo.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",fill:"currentColor",d:"M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"})})}function WordWrapIcon(ee){return(0,eo.jsx)("svg",{viewBox:"0 0 24 24",width:"24",height:"24",...ee,children:(0,eo.jsx)("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"})})}function XIcon(ee){return(0,eo.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 20 20",fill:"currentColor",...ee,children:(0,eo.jsx)("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})})}},2643:function(ee,en,er){"use strict";er.d(en,{Z:function(){return MDXProvider},a:function(){return mdx_useMDXComponents}});var eo=er(7294);let ei=eo.createContext({});function useMDXComponents(ee){let en=eo.useContext(ei);return eo.useMemo(()=>"function"==typeof ee?ee(en):{...en,...ee},[en,ee])}let es={};function MDXProvider({components:ee,children:en,disableParentContext:er}){let eu;return eu=er?"function"==typeof ee?ee({}):ee||es:useMDXComponents(ee),eo.createElement(ei.Provider,{value:eu},en)}var eu=er(5675),ec=er.n(eu),ed={img:ee=>(0,eo.createElement)("object"==typeof ee.src?ec():"img",ee)},mdx_useMDXComponents=ee=>useMDXComponents({...ed,...ee})},6008:function(ee,en,er){"use strict";var eo=er(2337);function parsePath(ee){var en={protocols:[],protocol:null,port:null,resource:"",host:"",user:"",password:"",pathname:"",hash:"",search:"",href:ee,query:{},parse_failed:!1};try{var er=new URL(ee);en.protocols=eo(er),en.protocol=en.protocols[0],en.port=er.port,en.resource=er.hostname,en.host=er.host,en.user=er.username||"",en.password=er.password||"",en.pathname=er.pathname,en.hash=er.hash.slice(1),en.search=er.search.slice(1),en.href=er.href,en.query=Object.fromEntries(er.searchParams)}catch(er){en.protocols=["file"],en.protocol=en.protocols[0],en.port="",en.resource="",en.user="",en.pathname="",en.hash="",en.search="",en.href=ee,en.query={},en.parse_failed=!0}return en}ee.exports=parsePath},3905:function(ee,en,er){"use strict";var eo=function(ee){return ee&&"object"==typeof ee&&"default"in ee?ee:{default:ee}}(er(6008));let ei="text/plain",es="us-ascii",testParameter=(ee,en)=>en.some(en=>en instanceof RegExp?en.test(ee):en===ee),normalizeDataURL=(ee,{stripHash:en})=>{let er=/^data:(?<type>[^,]*?),(?<data>[^#]*?)(?:#(?<hash>.*))?$/.exec(ee);if(!er)throw Error(`Invalid URL: ${ee}`);let{type:eo,data:eu,hash:ec}=er.groups,ed=eo.split(";");ec=en?"":ec;let ef=!1;"base64"===ed[ed.length-1]&&(ed.pop(),ef=!0);let ep=(ed.shift()||"").toLowerCase(),eh=ed.map(ee=>{let[en,er=""]=ee.split("=").map(ee=>ee.trim());return"charset"===en&&(er=er.toLowerCase())===es?"":`${en}${er?`=${er}`:""}`}).filter(Boolean),em=[...eh];return ef&&em.push("base64"),(em.length>0||ep&&ep!==ei)&&em.unshift(ep),`data:${em.join(";")},${ef?eu.trim():eu}${ec?`#${ec}`:""}`};function normalizeUrl(ee,en){if(en={defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripTextFragment:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeSingleSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...en},ee=ee.trim(),/^data:/i.test(ee))return normalizeDataURL(ee,en);if(/^view-source:/i.test(ee))throw Error("`view-source:` is not supported as it is a non-standard protocol");let er=ee.startsWith("//"),eo=!er&&/^\.*\//.test(ee);eo||(ee=ee.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,en.defaultProtocol));let ei=new URL(ee);if(en.forceHttp&&en.forceHttps)throw Error("The `forceHttp` and `forceHttps` options cannot be used together");if(en.forceHttp&&"https:"===ei.protocol&&(ei.protocol="http:"),en.forceHttps&&"http:"===ei.protocol&&(ei.protocol="https:"),en.stripAuthentication&&(ei.username="",ei.password=""),en.stripHash?ei.hash="":en.stripTextFragment&&(ei.hash=ei.hash.replace(/#?:~:text.*?$/i,"")),ei.pathname){let ee=/\b[a-z][a-z\d+\-.]{1,50}:\/\//g,en=0,er="";for(;;){let eo=ee.exec(ei.pathname);if(!eo)break;let es=eo[0],eu=eo.index,ec=ei.pathname.slice(en,eu);er+=ec.replace(/\/{2,}/g,"/")+es,en=eu+es.length}let eo=ei.pathname.slice(en,ei.pathname.length);er+=eo.replace(/\/{2,}/g,"/"),ei.pathname=er}if(ei.pathname)try{ei.pathname=decodeURI(ei.pathname)}catch{}if(!0===en.removeDirectoryIndex&&(en.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(en.removeDirectoryIndex)&&en.removeDirectoryIndex.length>0){let ee=ei.pathname.split("/"),er=ee[ee.length-1];testParameter(er,en.removeDirectoryIndex)&&(ee=ee.slice(0,-1),ei.pathname=ee.slice(1).join("/")+"/")}if(ei.hostname&&(ei.hostname=ei.hostname.replace(/\.$/,""),en.stripWWW&&/^www\.(?!www\.)[a-z\-\d]{1,63}\.[a-z.\-\d]{2,63}$/.test(ei.hostname)&&(ei.hostname=ei.hostname.replace(/^www\./,""))),Array.isArray(en.removeQueryParameters))for(let ee of[...ei.searchParams.keys()])testParameter(ee,en.removeQueryParameters)&&ei.searchParams.delete(ee);if(!0===en.removeQueryParameters&&(ei.search=""),en.sortQueryParameters){ei.searchParams.sort();try{ei.search=decodeURIComponent(ei.search)}catch{}}en.removeTrailingSlash&&(ei.pathname=ei.pathname.replace(/\/$/,""));let es=ee;return ee=ei.toString(),en.removeSingleSlash||"/"!==ei.pathname||es.endsWith("/")||""!==ei.hash||(ee=ee.replace(/\/$/,"")),(en.removeTrailingSlash||"/"===ei.pathname)&&""===ei.hash&&en.removeSingleSlash&&(ee=ee.replace(/\/$/,"")),er&&!en.normalizeProtocol&&(ee=ee.replace(/^http:\/\//,"//")),en.stripProtocol&&(ee=ee.replace(/^(?:https?:)?\/\//,"")),ee}let parseUrl=(ee,en=!1)=>{let er=/^(?:([a-z_][a-z0-9_-]{0,31})@|https?:\/\/)([\w\.\-@]+)[\/:]([\~,\.\w,\-,\_,\/]+?(?:\.git|\/)?)$/,throwErr=en=>{let er=Error(en);throw er.subject_url=ee,er};"string"==typeof ee&&ee.trim()||throwErr("Invalid url."),ee.length>parseUrl.MAX_INPUT_LENGTH&&throwErr("Input exceeds maximum length. If needed, change the value of parseUrl.MAX_INPUT_LENGTH."),en&&("object"!=typeof en&&(en={stripHash:!1}),ee=normalizeUrl(ee,en));let ei=eo.default(ee);if(ei.parse_failed){let ee=ei.href.match(er);ee?(ei.protocols=["ssh"],ei.protocol="ssh",ei.resource=ee[2],ei.host=ee[2],ei.user=ee[1],ei.pathname=`/${ee[3]}`,ei.parse_failed=!1):throwErr("URL parsing failed.")}return ei};parseUrl.MAX_INPUT_LENGTH=2048,ee.exports=parseUrl},2337:function(ee){"use strict";ee.exports=function(ee,en){!0===en&&(en=0);var er="";if("string"==typeof ee)try{er=new URL(ee).protocol}catch(ee){}else ee&&ee.constructor===URL&&(er=ee.protocol);var eo=er.split(/\:|\+/).filter(Boolean);return"number"==typeof en?eo[en]:eo}},6826:function(ee){var en={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",Ấ:"A",Ắ:"A",Ẳ:"A",Ẵ:"A",Ặ:"A",Æ:"AE",Ầ:"A",Ằ:"A",Ȃ:"A",Ç:"C",Ḉ:"C",È:"E",É:"E",Ê:"E",Ë:"E",Ế:"E",Ḗ:"E",Ề:"E",Ḕ:"E",Ḝ:"E",Ȇ:"E",Ì:"I",Í:"I",Î:"I",Ï:"I",Ḯ:"I",Ȋ:"I",Ð:"D",Ñ:"N",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",Ố:"O",Ṍ:"O",Ṓ:"O",Ȏ:"O",Ù:"U",Ú:"U",Û:"U",Ü:"U",Ý:"Y",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",ấ:"a",ắ:"a",ẳ:"a",ẵ:"a",ặ:"a",æ:"ae",ầ:"a",ằ:"a",ȃ:"a",ç:"c",ḉ:"c",è:"e",é:"e",ê:"e",ë:"e",ế:"e",ḗ:"e",ề:"e",ḕ:"e",ḝ:"e",ȇ:"e",ì:"i",í:"i",î:"i",ï:"i",ḯ:"i",ȋ:"i",ð:"d",ñ:"n",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",ố:"o",ṍ:"o",ṓ:"o",ȏ:"o",ù:"u",ú:"u",û:"u",ü:"u",ý:"y",ÿ:"y",Ā:"A",ā:"a",Ă:"A",ă:"a",Ą:"A",ą:"a",Ć:"C",ć:"c",Ĉ:"C",ĉ:"c",Ċ:"C",ċ:"c",Č:"C",č:"c",C̆:"C",c̆:"c",Ď:"D",ď:"d",Đ:"D",đ:"d",Ē:"E",ē:"e",Ĕ:"E",ĕ:"e",Ė:"E",ė:"e",Ę:"E",ę:"e",Ě:"E",ě:"e",Ĝ:"G",Ǵ:"G",ĝ:"g",ǵ:"g",Ğ:"G",ğ:"g",Ġ:"G",ġ:"g",Ģ:"G",ģ:"g",Ĥ:"H",ĥ:"h",Ħ:"H",ħ:"h",Ḫ:"H",ḫ:"h",Ĩ:"I",ĩ:"i",Ī:"I",ī:"i",Ĭ:"I",ĭ:"i",Į:"I",į:"i",İ:"I",ı:"i",IJ:"IJ",ij:"ij",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",Ḱ:"K",ḱ:"k",K̆:"K",k̆:"k",Ĺ:"L",ĺ:"l",Ļ:"L",ļ:"l",Ľ:"L",ľ:"l",Ŀ:"L",ŀ:"l",Ł:"l",ł:"l",Ḿ:"M",ḿ:"m",M̆:"M",m̆:"m",Ń:"N",ń:"n",Ņ:"N",ņ:"n",Ň:"N",ň:"n",ʼn:"n",N̆:"N",n̆:"n",Ō:"O",ō:"o",Ŏ:"O",ŏ:"o",Ő:"O",ő:"o",Œ:"OE",œ:"oe",P̆:"P",p̆:"p",Ŕ:"R",ŕ:"r",Ŗ:"R",ŗ:"r",Ř:"R",ř:"r",R̆:"R",r̆:"r",Ȓ:"R",ȓ:"r",Ś:"S",ś:"s",Ŝ:"S",ŝ:"s",Ş:"S",Ș:"S",ș:"s",ş:"s",Š:"S",š:"s",Ţ:"T",ţ:"t",ț:"t",Ț:"T",Ť:"T",ť:"t",Ŧ:"T",ŧ:"t",T̆:"T",t̆:"t",Ũ:"U",ũ:"u",Ū:"U",ū:"u",Ŭ:"U",ŭ:"u",Ů:"U",ů:"u",Ű:"U",ű:"u",Ų:"U",ų:"u",Ȗ:"U",ȗ:"u",V̆:"V",v̆:"v",Ŵ:"W",ŵ:"w",Ẃ:"W",ẃ:"w",X̆:"X",x̆:"x",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Y̆:"Y",y̆:"y",Ź:"Z",ź:"z",Ż:"Z",ż:"z",Ž:"Z",ž:"z",ſ:"s",ƒ:"f",Ơ:"O",ơ:"o",Ư:"U",ư:"u",Ǎ:"A",ǎ:"a",Ǐ:"I",ǐ:"i",Ǒ:"O",ǒ:"o",Ǔ:"U",ǔ:"u",Ǖ:"U",ǖ:"u",Ǘ:"U",ǘ:"u",Ǚ:"U",ǚ:"u",Ǜ:"U",ǜ:"u",Ứ:"U",ứ:"u",Ṹ:"U",ṹ:"u",Ǻ:"A",ǻ:"a",Ǽ:"AE",ǽ:"ae",Ǿ:"O",ǿ:"o",Þ:"TH",þ:"th",Ṕ:"P",ṕ:"p",Ṥ:"S",ṥ:"s",X́:"X",x́:"x",Ѓ:"Г",ѓ:"г",Ќ:"К",ќ:"к",A̋:"A",a̋:"a",E̋:"E",e̋:"e",I̋:"I",i̋:"i",Ǹ:"N",ǹ:"n",Ồ:"O",ồ:"o",Ṑ:"O",ṑ:"o",Ừ:"U",ừ:"u",Ẁ:"W",ẁ:"w",Ỳ:"Y",ỳ:"y",Ȁ:"A",ȁ:"a",Ȅ:"E",ȅ:"e",Ȉ:"I",ȉ:"i",Ȍ:"O",ȍ:"o",Ȑ:"R",ȑ:"r",Ȕ:"U",ȕ:"u",B̌:"B",b̌:"b",Č̣:"C",č̣:"c",Ê̌:"E",ê̌:"e",F̌:"F",f̌:"f",Ǧ:"G",ǧ:"g",Ȟ:"H",ȟ:"h",J̌:"J",ǰ:"j",Ǩ:"K",ǩ:"k",M̌:"M",m̌:"m",P̌:"P",p̌:"p",Q̌:"Q",q̌:"q",Ř̩:"R",ř̩:"r",Ṧ:"S",ṧ:"s",V̌:"V",v̌:"v",W̌:"W",w̌:"w",X̌:"X",x̌:"x",Y̌:"Y",y̌:"y",A̧:"A",a̧:"a",B̧:"B",b̧:"b",Ḑ:"D",ḑ:"d",Ȩ:"E",ȩ:"e",Ɛ̧:"E",ɛ̧:"e",Ḩ:"H",ḩ:"h",I̧:"I",i̧:"i",Ɨ̧:"I",ɨ̧:"i",M̧:"M",m̧:"m",O̧:"O",o̧:"o",Q̧:"Q",q̧:"q",U̧:"U",u̧:"u",X̧:"X",x̧:"x",Z̧:"Z",z̧:"z"},er=Object.keys(en).join("|"),eo=RegExp(er,"g"),ei=RegExp(er,""),removeAccents=function(ee){return ee.replace(eo,function(ee){return en[ee]})},hasAccents=function(ee){return!!ee.match(ei)};ee.exports=removeAccents,ee.exports.has=hasAccents,ee.exports.remove=removeAccents},7462:function(ee,en,er){"use strict";function _extends(){return(_extends=Object.assign?Object.assign.bind():function(ee){for(var en=1;en<arguments.length;en++){var er=arguments[en];for(var eo in er)Object.prototype.hasOwnProperty.call(er,eo)&&(ee[eo]=er[eo])}return ee}).apply(this,arguments)}er.d(en,{Z:function(){return _extends}})},1363:function(ee,en,er){"use strict";er.d(en,{R:function(){return ei}});var eo,ei=((eo=ei||{}).Space=" ",eo.Enter="Enter",eo.Escape="Escape",eo.Backspace="Backspace",eo.Delete="Delete",eo.ArrowLeft="ArrowLeft",eo.ArrowUp="ArrowUp",eo.ArrowRight="ArrowRight",eo.ArrowDown="ArrowDown",eo.Home="Home",eo.End="End",eo.PageUp="PageUp",eo.PageDown="PageDown",eo.Tab="Tab",eo)},3781:function(ee,en,er){"use strict";er.d(en,{z:function(){return o}});var eo=er(7294),ei=er(3855);let o=function(ee){let en=(0,ei.E)(ee);return eo.useCallback((...ee)=>en.current(...ee),[en])}},9946:function(ee,en,er){"use strict";er.d(en,{M:function(){return ed}});var eo,ei=er(7294),es=er(6723),eu=er(2180),ec=er(7896);let ed=null!=(eo=ei.useId)?eo:function(){let ee=(0,eu.H)(),[en,er]=ei.useState(ee?()=>ec.O.nextId():null);return(0,es.e)(()=>{null===en&&er(ec.O.nextId())},[en]),null!=en?""+en:void 0}},4879:function(ee,en,er){"use strict";er.d(en,{t:function(){return f}});var eo=er(7294),ei=er(6723);function f(){let ee=(0,eo.useRef)(!1);return(0,ei.e)(()=>(ee.current=!0,()=>{ee.current=!1}),[]),ee}},6723:function(ee,en,er){"use strict";er.d(en,{e:function(){return l}});var eo=er(7294),ei=er(7896);let l=(ee,en)=>{ei.O.isServer?(0,eo.useEffect)(ee,en):(0,eo.useLayoutEffect)(ee,en)}},3855:function(ee,en,er){"use strict";er.d(en,{E:function(){return s}});var eo=er(7294),ei=er(6723);function s(ee){let en=(0,eo.useRef)(ee);return(0,ei.e)(()=>{en.current=ee},[ee]),en}},4157:function(ee,en,er){"use strict";er.d(en,{f:function(){return s}});var eo=er(7294),ei=er(6723);function i(ee){var en;if(ee.type)return ee.type;let er=null!=(en=ee.as)?en:"button";if("string"==typeof er&&"button"===er.toLowerCase())return"button"}function s(ee,en){let[er,es]=(0,eo.useState)(()=>i(ee));return(0,ei.e)(()=>{es(i(ee))},[ee.type,ee.as]),(0,ei.e)(()=>{er||en.current&&en.current instanceof HTMLButtonElement&&!en.current.hasAttribute("type")&&es("button")},[er,en]),er}},2180:function(ee,en,er){"use strict";er.d(en,{H:function(){return l}});var eo,ei=er(7294),es=er(7896);function s(){let ee="undefined"==typeof document;return(0,(eo||(eo=er.t(ei,2))).useSyncExternalStore)(()=>()=>{},()=>!1,()=>!ee)}function l(){let ee=s(),[en,er]=ei.useState(es.O.isHandoffComplete);return en&&!1===es.O.isHandoffComplete&&er(!1),ei.useEffect(()=>{!0!==en&&er(!0)},[en]),ei.useEffect(()=>es.O.handoff(),[]),!ee&&en}},3784:function(ee,en,er){"use strict";er.d(en,{T:function(){return y}});var eo=er(7294),ei=er(3781);let es=Symbol();function y(...ee){let en=(0,eo.useRef)(ee);(0,eo.useEffect)(()=>{en.current=ee},[ee]);let er=(0,ei.z)(ee=>{for(let er of en.current)null!=er&&("function"==typeof er?er(ee):er.current=ee)});return ee.every(ee=>null==ee||(null==ee?void 0:ee[es]))?void 0:er}},6045:function(ee,en,er){"use strict";er.d(en,{A:function(){return eu},_:function(){return ec}});var eo,ei=er(2351);let es="div";var eu=((eo=eu||{})[eo.None=1]="None",eo[eo.Focusable=2]="Focusable",eo[eo.Hidden=4]="Hidden",eo);function s(ee,en){let{features:er=1,...eo}=ee,eu={ref:en,"aria-hidden":(2&er)==2||void 0,style:{position:"fixed",top:1,left:1,width:1,height:0,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0",...(4&er)==4&&(2&er)!=2&&{display:"none"}}};return(0,ei.sY)({ourProps:eu,theirProps:eo,slot:{},defaultTag:es,name:"Hidden"})}let ec=(0,ei.yV)(s)},4067:function(ee,en,er){"use strict";function t(...ee){return Array.from(new Set(ee.flatMap(ee=>"string"==typeof ee?ee.split(" "):[]))).filter(Boolean).join(" ")}er.d(en,{A:function(){return t}})},9362:function(ee,en,er){"use strict";er.d(en,{k:function(){return o}});var eo=er(1021);function o(){let ee=[],en={addEventListener:(ee,er,eo,ei)=>(ee.addEventListener(er,eo,ei),en.add(()=>ee.removeEventListener(er,eo,ei))),requestAnimationFrame(...ee){let er=requestAnimationFrame(...ee);return en.add(()=>cancelAnimationFrame(er))},nextFrame:(...ee)=>en.requestAnimationFrame(()=>en.requestAnimationFrame(...ee)),setTimeout(...ee){let er=setTimeout(...ee);return en.add(()=>clearTimeout(er))},microTask(...ee){let er={current:!0};return(0,eo.Y)(()=>{er.current&&ee[0]()}),en.add(()=>{er.current=!1})},style(ee,en,er){let eo=ee.style.getPropertyValue(en);return Object.assign(ee.style,{[en]:er}),this.add(()=>{Object.assign(ee.style,{[en]:eo})})},group(ee){let en=o();return ee(en),this.add(()=>en.dispose())},add:en=>(ee.push(en),()=>{let er=ee.indexOf(en);if(er>=0)for(let en of ee.splice(er,1))en()}),dispose(){for(let en of ee.splice(0))en()}};return en}},7896:function(ee,en,er){"use strict";er.d(en,{O:function(){return ei}});var eo=Object.defineProperty,d=(ee,en,er)=>en in ee?eo(ee,en,{enumerable:!0,configurable:!0,writable:!0,value:er}):ee[en]=er,r=(ee,en,er)=>(d(ee,"symbol"!=typeof en?en+"":en,er),er);let o=class o{constructor(){r(this,"current",this.detect()),r(this,"handoffState","pending"),r(this,"currentId",0)}set(ee){this.current!==ee&&(this.handoffState="pending",this.currentId=0,this.current=ee)}reset(){this.set(this.detect())}nextId(){return++this.currentId}get isServer(){return"server"===this.current}get isClient(){return"client"===this.current}detect(){return"undefined"==typeof window||"undefined"==typeof document?"server":"client"}handoff(){"pending"===this.handoffState&&(this.handoffState="complete")}get isHandoffComplete(){return"complete"===this.handoffState}};let ei=new o},4575:function(ee,en,er){"use strict";er.d(en,{EO:function(){return _},TO:function(){return em},fE:function(){return eg},jA:function(){return O},sP:function(){return h},tJ:function(){return ev},wI:function(){return D},z2:function(){return I}});var eo,ei,es,eu,ec,ed=er(9362),ef=er(2984),ep=er(5466);let eh=["[contentEditable=true]","[tabindex]","a[href]","area[href]","button:not([disabled])","iframe","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].map(ee=>`${ee}:not([tabindex='-1'])`).join(",");var em=((eo=em||{})[eo.First=1]="First",eo[eo.Previous=2]="Previous",eo[eo.Next=4]="Next",eo[eo.Last=8]="Last",eo[eo.WrapAround=16]="WrapAround",eo[eo.NoScroll=32]="NoScroll",eo),eg=((ei=eg||{})[ei.Error=0]="Error",ei[ei.Overflow=1]="Overflow",ei[ei.Success=2]="Success",ei[ei.Underflow=3]="Underflow",ei),ex=((es=ex||{})[es.Previous=-1]="Previous",es[es.Next=1]="Next",es);function f(ee=document.body){return null==ee?[]:Array.from(ee.querySelectorAll(eh)).sort((ee,en)=>Math.sign((ee.tabIndex||Number.MAX_SAFE_INTEGER)-(en.tabIndex||Number.MAX_SAFE_INTEGER)))}var ev=((eu=ev||{})[eu.Strict=0]="Strict",eu[eu.Loose=1]="Loose",eu);function h(ee,en=0){var er;return ee!==(null==(er=(0,ep.r)(ee))?void 0:er.body)&&(0,ef.E)(en,{0:()=>ee.matches(eh),1(){let en=ee;for(;null!==en;){if(en.matches(eh))return!0;en=en.parentElement}return!1}})}function D(ee){let en=(0,ep.r)(ee);(0,ed.k)().nextFrame(()=>{en&&!h(en.activeElement,0)&&y(ee)})}var ey=((ec=ey||{})[ec.Keyboard=0]="Keyboard",ec[ec.Mouse=1]="Mouse",ec);function y(ee){null==ee||ee.focus({preventScroll:!0})}"undefined"!=typeof window&&"undefined"!=typeof document&&(document.addEventListener("keydown",ee=>{ee.metaKey||ee.altKey||ee.ctrlKey||(document.documentElement.dataset.headlessuiFocusVisible="")},!0),document.addEventListener("click",ee=>{1===ee.detail?delete document.documentElement.dataset.headlessuiFocusVisible:0===ee.detail&&(document.documentElement.dataset.headlessuiFocusVisible="")},!0));let eb="textarea,input";function H(ee){var en,er;return null!=(er=null==(en=null==ee?void 0:ee.matches)?void 0:en.call(ee,eb))&&er}function I(ee,en=ee=>ee){return ee.slice().sort((ee,er)=>{let eo=en(ee),ei=en(er);if(null===eo||null===ei)return 0;let es=eo.compareDocumentPosition(ei);return es&Node.DOCUMENT_POSITION_FOLLOWING?-1:es&Node.DOCUMENT_POSITION_PRECEDING?1:0})}function _(ee,en){return O(f(),en,{relativeTo:ee})}function O(ee,en,{sorted:er=!0,relativeTo:eo=null,skipElements:ei=[]}={}){let es=Array.isArray(ee)?ee.length>0?ee[0].ownerDocument:document:ee.ownerDocument,eu=Array.isArray(ee)?er?I(ee):ee:f(ee);ei.length>0&&eu.length>1&&(eu=eu.filter(ee=>!ei.includes(ee))),eo=null!=eo?eo:es.activeElement;let ec=(()=>{if(5&en)return 1;if(10&en)return -1;throw Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),ed=(()=>{if(1&en)return 0;if(2&en)return Math.max(0,eu.indexOf(eo))-1;if(4&en)return Math.max(0,eu.indexOf(eo))+1;if(8&en)return eu.length-1;throw Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),ef=32&en?{preventScroll:!0}:{},ep=0,eh=eu.length,em;do{if(ep>=eh||ep+eh<=0)return 0;let ee=ed+ep;if(16&en)ee=(ee+eh)%eh;else{if(ee<0)return 3;if(ee>=eh)return 1}null==(em=eu[ee])||em.focus(ef),ep+=ec}while(em!==es.activeElement);return 6&en&&H(em)&&em.select(),2}},2984:function(ee,en,er){"use strict";function u(ee,en,...er){if(ee in en){let eo=en[ee];return"function"==typeof eo?eo(...er):eo}let eo=Error(`Tried to handle "${ee}" but there is no handler defined. Only defined handlers are: ${Object.keys(en).map(ee=>`"${ee}"`).join(", ")}.`);throw Error.captureStackTrace&&Error.captureStackTrace(eo,u),eo}er.d(en,{E:function(){return u}})},1021:function(ee,en,er){"use strict";function t(ee){"function"==typeof queueMicrotask?queueMicrotask(ee):Promise.resolve().then(ee).catch(ee=>setTimeout(()=>{throw ee}))}er.d(en,{Y:function(){return t}})},5466:function(ee,en,er){"use strict";er.d(en,{r:function(){return e}});var eo=er(7896);function e(ee){return eo.O.isServer?null:ee instanceof Node?ee.ownerDocument:null!=ee&&ee.hasOwnProperty("current")&&ee.current instanceof Node?ee.current.ownerDocument:document}},2351:function(ee,en,er){"use strict";er.d(en,{AN:function(){return ed},l4:function(){return ef},oA:function(){return R},sY:function(){return X},yV:function(){return D}});var eo,ei,es=er(7294),eu=er(4067),ec=er(2984),ed=((eo=ed||{})[eo.None=0]="None",eo[eo.RenderStrategy=1]="RenderStrategy",eo[eo.Static=2]="Static",eo),ef=((ei=ef||{})[ei.Unmount=0]="Unmount",ei[ei.Hidden=1]="Hidden",ei);function X({ourProps:ee,theirProps:en,slot:er,defaultTag:eo,features:ei,visible:es=!0,name:eu}){let ed=N(en,ee);if(es)return c(ed,er,eo,eu);let ef=null!=ei?ei:0;if(2&ef){let{static:ee=!1,...en}=ed;if(ee)return c(en,er,eo,eu)}if(1&ef){let{unmount:ee=!0,...en}=ed;return(0,ec.E)(ee?0:1,{0:()=>null,1:()=>c({...en,hidden:!0,style:{display:"none"}},er,eo,eu)})}return c(ed,er,eo,eu)}function c(ee,en={},er,eo){let{as:ei=er,children:ec,refName:ed="ref",...ef}=g(ee,["unmount","static"]),ep=void 0!==ee.ref?{[ed]:ee.ref}:{},eh="function"==typeof ec?ec(en):ec;"className"in ef&&ef.className&&"function"==typeof ef.className&&(ef.className=ef.className(en));let em={};if(en){let ee=!1,er=[];for(let[eo,ei]of Object.entries(en))"boolean"==typeof ei&&(ee=!0),!0===ei&&er.push(eo);ee&&(em["data-headlessui-state"]=er.join(" "))}if(ei===es.Fragment&&Object.keys(R(ef)).length>0){if(!(0,es.isValidElement)(eh)||Array.isArray(eh)&&eh.length>1)throw Error(['Passing props on "Fragment"!',"",`The current component <${eo} /> is rendering a "Fragment".`,"However we need to passthrough the following props:",Object.keys(ef).map(ee=>` - ${ee}`).join(` `),"","You can apply a few solutions:",['Add an `as="..."` prop, to ensure that we render an actual element instead of a "Fragment".',"Render a single element as the child so that we can forward the props onto that element."].map(ee=>` - ${ee}`).join(` `)].join(` `));let ee=eh.props,en="function"==typeof(null==ee?void 0:ee.className)?(...en)=>(0,eu.A)(null==ee?void 0:ee.className(...en),ef.className):(0,eu.A)(null==ee?void 0:ee.className,ef.className),er=en?{className:en}:{};return(0,es.cloneElement)(eh,Object.assign({},N(eh.props,R(g(ef,["ref"]))),em,ep,w(eh.ref,ep.ref),er))}return(0,es.createElement)(ei,Object.assign({},g(ef,["ref"]),ei!==es.Fragment&&ep,ei!==es.Fragment&&em),eh)}function w(...ee){return{ref:ee.every(ee=>null==ee)?void 0:en=>{for(let er of ee)null!=er&&("function"==typeof er?er(en):er.current=en)}}}function N(...ee){var en;if(0===ee.length)return{};if(1===ee.length)return ee[0];let er={},eo={};for(let ei of ee)for(let ee in ei)ee.startsWith("on")&&"function"==typeof ei[ee]?(null!=(en=eo[ee])||(eo[ee]=[]),eo[ee].push(ei[ee])):er[ee]=ei[ee];if(er.disabled||er["aria-disabled"])return Object.assign(er,Object.fromEntries(Object.keys(eo).map(ee=>[ee,void 0])));for(let ee in eo)Object.assign(er,{[ee](en,...er){for(let ei of eo[ee]){if((en instanceof Event||(null==en?void 0:en.nativeEvent)instanceof Event)&&en.defaultPrevented)return;ei(en,...er)}}});return er}function D(ee){var en;return Object.assign((0,es.forwardRef)(ee),{displayName:null!=(en=ee.displayName)?en:ee.name})}function R(ee){let en=Object.assign({},ee);for(let ee in en)void 0===en[ee]&&delete en[ee];return en}function g(ee,en=[]){let er=Object.assign({},ee);for(let ee of en)ee in er&&delete er[ee];return er}},8771:function(ee,en,er){"use strict";er.d(en,{F:function(){return $6ed0406888f73fc4$export$43e446d32b3d21af},e:function(){return $6ed0406888f73fc4$export$c7b2cbe3552a0d05}});var eo=er(7294);function $6ed0406888f73fc4$var$setRef(ee,en){"function"==typeof ee?ee(en):null!=ee&&(ee.current=en)}function $6ed0406888f73fc4$export$43e446d32b3d21af(...ee){return en=>ee.forEach(ee=>$6ed0406888f73fc4$var$setRef(ee,en))}function $6ed0406888f73fc4$export$c7b2cbe3552a0d05(...ee){return(0,eo.useCallback)($6ed0406888f73fc4$export$43e446d32b3d21af(...ee),ee)}},5320:function(ee,en,er){"use strict";er.d(en,{WV:function(){return ed},jH:function(){return $8927f6f2acc4f386$export$6d1a0317bde7de7f}});var eo=er(7462),ei=er(7294),es=er(3935),eu=er(8426);let ec=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"],ed=ec.reduce((ee,en)=>{let er=(0,ei.forwardRef)((ee,er)=>{let{asChild:es,...ec}=ee,ed=es?eu.g7:en;return(0,ei.useEffect)(()=>{window[Symbol.for("radix-ui")]=!0},[]),(0,ei.createElement)(ed,(0,eo.Z)({},ec,{ref:er}))});return er.displayName=`Primitive.${en}`,{...ee,[en]:er}},{});function $8927f6f2acc4f386$export$6d1a0317bde7de7f(ee,en){ee&&(0,es.flushSync)(()=>ee.dispatchEvent(en))}},8426:function(ee,en,er){"use strict";er.d(en,{A4:function(){return $5e63c961fc1ce211$export$d9f1ccf0bdb05d45},g7:function(){return eu}});var eo=er(7462),ei=er(7294),es=er(8771);let eu=(0,ei.forwardRef)((ee,en)=>{let{children:er,...es}=ee,eu=ei.Children.toArray(er),ed=eu.find($5e63c961fc1ce211$var$isSlottable);if(ed){let ee=ed.props.children,er=eu.map(en=>en!==ed?en:ei.Children.count(ee)>1?ei.Children.only(null):(0,ei.isValidElement)(ee)?ee.props.children:null);return(0,ei.createElement)(ec,(0,eo.Z)({},es,{ref:en}),(0,ei.isValidElement)(ee)?(0,ei.cloneElement)(ee,void 0,er):null)}return(0,ei.createElement)(ec,(0,eo.Z)({},es,{ref:en}),er)});eu.displayName="Slot";let ec=(0,ei.forwardRef)((ee,en)=>{let{children:er,...eo}=ee;return(0,ei.isValidElement)(er)?(0,ei.cloneElement)(er,{...$5e63c961fc1ce211$var$mergeProps(eo,er.props),ref:en?(0,es.F)(en,er.ref):er.ref}):ei.Children.count(er)>1?ei.Children.only(null):null});ec.displayName="SlotClone";let $5e63c961fc1ce211$export$d9f1ccf0bdb05d45=({children:ee})=>(0,ei.createElement)(ei.Fragment,null,ee);function $5e63c961fc1ce211$var$isSlottable(ee){return(0,ei.isValidElement)(ee)&&ee.type===$5e63c961fc1ce211$export$d9f1ccf0bdb05d45}function $5e63c961fc1ce211$var$mergeProps(ee,en){let er={...en};for(let eo in en){let ei=ee[eo],es=en[eo],eu=/^on[A-Z]/.test(eo);eu?ei&&es?er[eo]=(...ee)=>{es(...ee),ei(...ee)}:ei&&(er[eo]=ei):"style"===eo?er[eo]={...ei,...es}:"className"===eo&&(er[eo]=[ei,es].filter(Boolean).join(" "))}return{...ee,...er}}},562:function(ee,en,er){"use strict";let eo;er.d(en,{Eh:function(){return tC},VY:function(){return tk},h_:function(){return tw},zt:function(){return tv},fC:function(){return ty},xz:function(){return t_}});var ei=er(7462),es=er(7294),eu=er.t(es,2);function $e42e1063c40fb3ef$export$b9ecd428b558ff10(ee,en,{checkForDefaultPrevented:er=!0}={}){return function(eo){if(null==ee||ee(eo),!1===er||!eo.defaultPrevented)return null==en?void 0:en(eo)}}var ec=er(8771);function $c512c27ab02ef895$export$50c7b4e9d9f19c1(ee,en=[]){let er=[];function $c512c27ab02ef895$export$fd42f52fd3ae1109(en,eo){let ei=(0,es.createContext)(eo),eu=er.length;function Provider(en){let{scope:er,children:eo,...ec}=en,ed=(null==er?void 0:er[ee][eu])||ei,ef=(0,es.useMemo)(()=>ec,Object.values(ec));return(0,es.createElement)(ed.Provider,{value:ef},eo)}function useContext(er,ec){let ed=(null==ec?void 0:ec[ee][eu])||ei,ef=(0,es.useContext)(ed);if(ef)return ef;if(void 0!==eo)return eo;throw Error(`\`${er}\` must be used within \`${en}\``)}return er=[...er,eo],Provider.displayName=en+"Provider",[Provider,useContext]}let createScope=()=>{let en=er.map(ee=>(0,es.createContext)(ee));return function(er){let eo=(null==er?void 0:er[ee])||en;return(0,es.useMemo)(()=>({[`__scope${ee}`]:{...er,[ee]:eo}}),[er,eo])}};return createScope.scopeName=ee,[$c512c27ab02ef895$export$fd42f52fd3ae1109,$c512c27ab02ef895$var$composeContextScopes(createScope,...en)]}function $c512c27ab02ef895$var$composeContextScopes(...ee){let en=ee[0];if(1===ee.length)return en;let createScope1=()=>{let er=ee.map(ee=>({useScope:ee(),scopeName:ee.scopeName}));return function(ee){let eo=er.reduce((en,{useScope:er,scopeName:eo})=>{let ei=er(ee),es=ei[`__scope${eo}`];return{...en,...es}},{});return(0,es.useMemo)(()=>({[`__scope${en.scopeName}`]:eo}),[eo])}};return createScope1.scopeName=en.scopeName,createScope1}var ed=er(5320);function $b1b2314f5f9a1d84$export$25bec8c6f54ee79a(ee){let en=(0,es.useRef)(ee);return(0,es.useEffect)(()=>{en.current=ee}),(0,es.useMemo)(()=>(...ee)=>{var er;return null===(er=en.current)||void 0===er?void 0:er.call(en,...ee)},[])}function $addc16e1bbe58fd0$export$3a72a57244d6e765(ee,en=null==globalThis?void 0:globalThis.document){let er=$b1b2314f5f9a1d84$export$25bec8c6f54ee79a(ee);(0,es.useEffect)(()=>{let handleKeyDown=ee=>{"Escape"===ee.key&&er(ee)};return en.addEventListener("keydown",handleKeyDown),()=>en.removeEventListener("keydown",handleKeyDown)},[er,en])}let ef="dismissableLayer.update",ep="dismissableLayer.pointerDownOutside",eh="dismissableLayer.focusOutside",em=(0,es.createContext)({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),eg=(0,es.forwardRef)((ee,en)=>{var er;let{disableOutsidePointerEvents:eu=!1,onEscapeKeyDown:ep,onPointerDownOutside:eh,onFocusOutside:eg,onInteractOutside:ex,onDismiss:ev,...ey}=ee,eb=(0,es.useContext)(em),[e_,ew]=(0,es.useState)(null),ek=null!==(er=null==e_?void 0:e_.ownerDocument)&&void 0!==er?er:null==globalThis?void 0:globalThis.document,[,eC]=(0,es.useState)({}),eE=(0,ec.e)(en,ee=>ew(ee)),eT=Array.from(eb.layers),[eS]=[...eb.layersWithOutsidePointerEventsDisabled].slice(-1),eO=eT.indexOf(eS),eP=e_?eT.indexOf(e_):-1,eR=eb.layersWithOutsidePointerEventsDisabled.size>0,eI=eP>=eO,ej=$5cb92bef7577960e$var$usePointerDownOutside(ee=>{let en=ee.target,er=[...eb.branches].some(ee=>ee.contains(en));!eI||er||(null==eh||eh(ee),null==ex||ex(ee),ee.defaultPrevented||null==ev||ev())},ek),eN=$5cb92bef7577960e$var$useFocusOutside(ee=>{let en=ee.target,er=[...eb.branches].some(ee=>ee.contains(en));er||(null==eg||eg(ee),null==ex||ex(ee),ee.defaultPrevented||null==ev||ev())},ek);return $addc16e1bbe58fd0$export$3a72a57244d6e765(ee=>{let en=eP===eb.layers.size-1;en&&(null==ep||ep(ee),!ee.defaultPrevented&&ev&&(ee.preventDefault(),ev()))},ek),(0,es.useEffect)(()=>{if(e_)return eu&&(0===eb.layersWithOutsidePointerEventsDisabled.size&&(eo=ek.body.style.pointerEvents,ek.body.style.pointerEvents="none"),eb.layersWithOutsidePointerEventsDisabled.add(e_)),eb.layers.add(e_),$5cb92bef7577960e$var$dispatchUpdate(),()=>{eu&&1===eb.layersWithOutsidePointerEventsDisabled.size&&(ek.body.style.pointerEvents=eo)}},[e_,ek,eu,eb]),(0,es.useEffect)(()=>()=>{e_&&(eb.layers.delete(e_),eb.layersWithOutsidePointerEventsDisabled.delete(e_),$5cb92bef7577960e$var$dispatchUpdate())},[e_,eb]),(0,es.useEffect)(()=>{let handleUpdate=()=>eC({});return document.addEventListener(ef,handleUpdate),()=>document.removeEventListener(ef,handleUpdate)},[]),(0,es.createElement)(ed.WV.div,(0,ei.Z)({},ey,{ref:eE,style:{pointerEvents:eR?eI?"auto":"none":void 0,...ee.style},onFocusCapture:$e42e1063c40fb3ef$export$b9ecd428b558ff10(ee.onFocusCapture,eN.onFocusCapture),onBlurCapture:$e42e1063c40fb3ef$export$b9ecd428b558ff10(ee.onBlurCapture,eN.onBlurCapture),onPointerDownCapture:$e42e1063c40fb3ef$export$b9ecd428b558ff10(ee.onPointerDownCapture,ej.onPointerDownCapture)}))});function $5cb92bef7577960e$var$usePointerDownOutside(ee,en=null==globalThis?void 0:globalThis.document){let er=$b1b2314f5f9a1d84$export$25bec8c6f54ee79a(ee),eo=(0,es.useRef)(!1),ei=(0,es.useRef)(()=>{});return(0,es.useEffect)(()=>{let handlePointerDown=ee=>{if(ee.target&&!eo.current){let eo={originalEvent:ee};function handleAndDispatchPointerDownOutsideEvent(){$5cb92bef7577960e$var$handleAndDispatchCustomEvent(ep,er,eo,{discrete:!0})}"touch"===ee.pointerType?(en.removeEventListener("click",ei.current),ei.current=handleAndDispatchPointerDownOutsideEvent,en.addEventListener("click",ei.current,{once:!0})):handleAndDispatchPointerDownOutsideEvent()}else en.removeEventListener("click",ei.current);eo.current=!1},ee=window.setTimeout(()=>{en.addEventListener("pointerdown",handlePointerDown)},0);return()=>{window.clearTimeout(ee),en.removeEventListener("pointerdown",handlePointerDown),en.removeEventListener("click",ei.current)}},[en,er]),{onPointerDownCapture:()=>eo.current=!0}}function $5cb92bef7577960e$var$useFocusOutside(ee,en=null==globalThis?void 0:globalThis.document){let er=$b1b2314f5f9a1d84$export$25bec8c6f54ee79a(ee),eo=(0,es.useRef)(!1);return(0,es.useEffect)(()=>{let handleFocus=ee=>{if(ee.target&&!eo.current){let en={originalEvent:ee};$5cb92bef7577960e$var$handleAndDispatchCustomEvent(eh,er,en,{discrete:!1})}};return en.addEventListener("focusin",handleFocus),()=>en.removeEventListener("focusin",handleFocus)},[en,er]),{onFocusCapture:()=>eo.current=!0,onBlurCapture:()=>eo.current=!1}}function $5cb92bef7577960e$var$dispatchUpdate(){let ee=new CustomEvent(ef);document.dispatchEvent(ee)}function $5cb92bef7577960e$var$handleAndDispatchCustomEvent(ee,en,er,{discrete:eo}){let ei=er.originalEvent.target,es=new CustomEvent(ee,{bubbles:!1,cancelable:!0,detail:er});en&&ei.addEventListener(ee,en,{once:!0}),eo?(0,ed.jH)(ei,es):ei.dispatchEvent(es)}let ex=(null==globalThis?void 0:globalThis.document)?es.useLayoutEffect:()=>{},ev=eu["useId".toString()]||(()=>void 0),ey=0;function $1746a345f3d73bb7$export$f680877a34711e37(ee){let[en,er]=es.useState(ev());return ex(()=>{ee||er(ee=>null!=ee?ee:String(ey++))},[ee]),ee||(en?`radix-${en}`:"")}let eb=["top","right","bottom","left"],e_=Math.min,ew=Math.max,ek=Math.round,eC=Math.floor,createCoords=ee=>({x:ee,y:ee}),eE={left:"right",right:"left",bottom:"top",top:"bottom"},eT={start:"end",end:"start"};function clamp(ee,en,er){return ew(ee,e_(en,er))}function floating_ui_utils_evaluate(ee,en){return"function"==typeof ee?ee(en):ee}function floating_ui_utils_getSide(ee){return ee.split("-")[0]}function floating_ui_utils_getAlignment(ee){return ee.split("-")[1]}function getOppositeAxis(ee){return"x"===ee?"y":"x"}function getAxisLength(ee){return"y"===ee?"height":"width"}function floating_ui_utils_getSideAxis(ee){return["top","bottom"].includes(floating_ui_utils_getSide(ee))?"y":"x"}function getAlignmentAxis(ee){return getOppositeAxis(floating_ui_utils_getSideAxis(ee))}function floating_ui_utils_getAlignmentSides(ee,en,er){void 0===er&&(er=!1);let eo=floating_ui_utils_getAlignment(ee),ei=getAlignmentAxis(ee),es=getAxisLength(ei),eu="x"===ei?eo===(er?"end":"start")?"right":"left":"start"===eo?"bottom":"top";return en.reference[es]>en.floating[es]&&(eu=getOppositePlacement(eu)),[eu,getOppositePlacement(eu)]}function getExpandedPlacements(ee){let en=getOppositePlacement(ee);return[floating_ui_utils_getOppositeAlignmentPlacement(ee),en,floating_ui_utils_getOppositeAlignmentPlacement(en)]}function floating_ui_utils_getOppositeAlignmentPlacement(ee){return ee.replace(/start|end/g,ee=>eT[ee])}function getSideList(ee,en,er){let eo=["left","right"],ei=["right","left"],es=["top","bottom"],eu=["bottom","top"];switch(ee){case"top":case"bottom":if(er)return en?ei:eo;return en?eo:ei;case"left":case"right":return en?es:eu;default:return[]}}function getOppositeAxisPlacements(ee,en,er,eo){let ei=floating_ui_utils_getAlignment(ee),es=getSideList(floating_ui_utils_getSide(ee),"start"===er,eo);return ei&&(es=es.map(ee=>ee+"-"+ei),en&&(es=es.concat(es.map(floating_ui_utils_getOppositeAlignmentPlacement)))),es}function getOppositePlacement(ee){return ee.replace(/left|right|bottom|top/g,ee=>eE[ee])}function expandPaddingObject(ee){return{top:0,right:0,bottom:0,left:0,...ee}}function floating_ui_utils_getPaddingObject(ee){return"number"!=typeof ee?expandPaddingObject(ee):{top:ee,right:ee,bottom:ee,left:ee}}function floating_ui_utils_rectToClientRect(ee){return{...ee,top:ee.y,left:ee.x,right:ee.x+ee.width,bottom:ee.y+ee.height}}function computeCoordsFromPlacement(ee,en,er){let eo,{reference:ei,floating:es}=ee,eu=floating_ui_utils_getSideAxis(en),ec=getAlignmentAxis(en),ed=getAxisLength(ec),ef=floating_ui_utils_getSide(en),ep="y"===eu,eh=ei.x+ei.width/2-es.width/2,em=ei.y+ei.height/2-es.height/2,eg=ei[ed]/2-es[ed]/2;switch(ef){case"top":eo={x:eh,y:ei.y-es.height};break;case"bottom":eo={x:eh,y:ei.y+ei.height};break;case"right":eo={x:ei.x+ei.width,y:em};break;case"left":eo={x:ei.x-es.width,y:em};break;default:eo={x:ei.x,y:ei.y}}switch(floating_ui_utils_getAlignment(en)){case"start":eo[ec]-=eg*(er&&ep?-1:1);break;case"end":eo[ec]+=eg*(er&&ep?-1:1)}return eo}let computePosition=async(ee,en,er)=>{let{placement:eo="bottom",strategy:ei="absolute",middleware:es=[],platform:eu}=er,ec=es.filter(Boolean),ed=await (null==eu.isRTL?void 0:eu.isRTL(en)),ef=await eu.getElementRects({reference:ee,floating:en,strategy:ei}),{x:ep,y:eh}=computeCoordsFromPlacement(ef,eo,ed),em=eo,eg={},ex=0;for(let er=0;er<ec.length;er++){let{name:es,fn:ev}=ec[er],{x:ey,y:eb,data:e_,reset:ew}=await ev({x:ep,y:eh,initialPlacement:eo,placement:em,strategy:ei,middlewareData:eg,rects:ef,platform:eu,elements:{reference:ee,floating:en}});if(ep=null!=ey?ey:ep,eh=null!=eb?eb:eh,eg={...eg,[es]:{...eg[es],...e_}},ew&&ex<=50){ex++,"object"==typeof ew&&(ew.placement&&(em=ew.placement),ew.rects&&(ef=!0===ew.rects?await eu.getElementRects({reference:ee,floating:en,strategy:ei}):ew.rects),{x:ep,y:eh}=computeCoordsFromPlacement(ef,em,ed)),er=-1;continue}}return{x:ep,y:eh,placement:em,strategy:ei,middlewareData:eg}};async function detectOverflow(ee,en){var er;void 0===en&&(en={});let{x:eo,y:ei,platform:es,rects:eu,elements:ec,strategy:ed}=ee,{boundary:ef="clippingAncestors",rootBoundary:ep="viewport",elementContext:eh="floating",altBoundary:em=!1,padding:eg=0}=floating_ui_utils_evaluate(en,ee),ex=floating_ui_utils_getPaddingObject(eg),ev="floating"===eh?"reference":"floating",ey=ec[em?ev:eh],eb=floating_ui_utils_rectToClientRect(await es.getClippingRect({element:null==(er=await (null==es.isElement?void 0:es.isElement(ey)))||er?ey:ey.contextElement||await (null==es.getDocumentElement?void 0:es.getDocumentElement(ec.floating)),boundary:ef,rootBoundary:ep,strategy:ed})),e_="floating"===eh?{...eu.floating,x:eo,y:ei}:eu.reference,ew=await (null==es.getOffsetParent?void 0:es.getOffsetParent(ec.floating)),ek=await (null==es.isElement?void 0:es.isElement(ew))&&await (null==es.getScale?void 0:es.getScale(ew))||{x:1,y:1},eC=floating_ui_utils_rectToClientRect(es.convertOffsetParentRelativeRectToViewportRelativeRect?await es.convertOffsetParentRelativeRectToViewportRelativeRect({rect:e_,offsetParent:ew,strategy:ed}):e_);return{top:(eb.top-eC.top+ex.top)/ek.y,bottom:(eC.bottom-eb.bottom+ex.bottom)/ek.y,left:(eb.left-eC.left+ex.left)/ek.x,right:(eC.right-eb.right+ex.right)/ek.x}}let arrow=ee=>({name:"arrow",options:ee,async fn(en){let{x:er,y:eo,placement:ei,rects:es,platform:eu,elements:ec,middlewareData:ed}=en,{element:ef,padding:ep=0}=floating_ui_utils_evaluate(ee,en)||{};if(null==ef)return{};let eh=floating_ui_utils_getPaddingObject(ep),em={x:er,y:eo},eg=getAlignmentAxis(ei),ex=getAxisLength(eg),ev=await eu.getDimensions(ef),ey="y"===eg,eb=ey?"top":"left",ew=ey?"bottom":"right",ek=ey?"clientHeight":"clientWidth",eC=es.reference[ex]+es.reference[eg]-em[eg]-es.floating[ex],eE=em[eg]-es.reference[eg],eT=await (null==eu.getOffsetParent?void 0:eu.getOffsetParent(ef)),eS=eT?eT[ek]:0;eS&&await (null==eu.isElement?void 0:eu.isElement(eT))||(eS=ec.floating[ek]||es.floating[ex]);let eO=eC/2-eE/2,eP=eS/2-ev[ex]/2-1,eR=e_(eh[eb],eP),eI=e_(eh[ew],eP),ej=eR,eN=eS-ev[ex]-eI,eA=eS/2-ev[ex]/2+eO,eZ=clamp(ej,eA,eN),eL=!ed.arrow&&null!=floating_ui_utils_getAlignment(ei)&&eA!=eZ&&es.reference[ex]/2-(eA<ej?eR:eI)-ev[ex]/2<0,eM=eL?eA<ej?eA-ej:eA-eN:0;return{[eg]:em[eg]+eM,data:{[eg]:eZ,centerOffset:eA-eZ-eM,...eL&&{alignmentOffset:eM}},reset:eL}}}),flip=function(ee){return void 0===ee&&(ee={}),{name:"flip",options:ee,async fn(en){var er,eo,ei,es,eu;let{placement:ec,middlewareData:ed,rects:ef,initialPlacement:ep,platform:eh,elements:em}=en,{mainAxis:eg=!0,crossAxis:ex=!0,fallbackPlacements:ev,fallbackStrategy:ey="bestFit",fallbackAxisSideDirection:eb="none",flipAlignment:e_=!0,...ew}=floating_ui_utils_evaluate(ee,en);if(null!=(er=ed.arrow)&&er.alignmentOffset)return{};let ek=floating_ui_utils_getSide(ec),eC=floating_ui_utils_getSide(ep)===ep,eE=await (null==eh.isRTL?void 0:eh.isRTL(em.floating)),eT=ev||(eC||!e_?[getOppositePlacement(ep)]:getExpandedPlacements(ep));ev||"none"===eb||eT.push(...getOppositeAxisPlacements(ep,e_,eb,eE));let eS=[ep,...eT],eO=await detectOverflow(en,ew),eP=[],eR=(null==(eo=ed.flip)?void 0:eo.overflows)||[];if(eg&&eP.push(eO[ek]),ex){let ee=floating_ui_utils_getAlignmentSides(ec,ef,eE);eP.push(eO[ee[0]],eO[ee[1]])}if(eR=[...eR,{placement:ec,overflows:eP}],!eP.every(ee=>ee<=0)){let ee=((null==(ei=ed.flip)?void 0:ei.index)||0)+1,en=eS[ee];if(en)return{data:{index:ee,overflows:eR},reset:{placement:en}};let er=null==(es=eR.filter(ee=>ee.overflows[0]<=0).sort((ee,en)=>ee.overflows[1]-en.overflows[1])[0])?void 0:es.placement;if(!er)switch(ey){case"bestFit":{let ee=null==(eu=eR.map(ee=>[ee.placement,ee.overflows.filter(ee=>ee>0).reduce((ee,en)=>ee+en,0)]).sort((ee,en)=>ee[1]-en[1])[0])?void 0:eu[0];ee&&(er=ee);break}case"initialPlacement":er=ep}if(ec!==er)return{reset:{placement:er}}}return{}}}};function getSideOffsets(ee,en){return{top:ee.top-en.height,right:ee.right-en.width,bottom:ee.bottom-en.height,left:ee.left-en.width}}function isAnySideFullyClipped(ee){return eb.some(en=>ee[en]>=0)}let hide=function(ee){return void 0===ee&&(ee={}),{name:"hide",options:ee,async fn(en){let{rects:er}=en,{strategy:eo="referenceHidden",...ei}=floating_ui_utils_evaluate(ee,en);switch(eo){case"referenceHidden":{let ee=await detectOverflow(en,{...ei,elementContext:"reference"}),eo=getSideOffsets(ee,er.reference);return{data:{referenceHiddenOffsets:eo,referenceHidden:isAnySideFullyClipped(eo)}}}case"escaped":{let ee=await detectOverflow(en,{...ei,altBoundary:!0}),eo=getSideOffsets(ee,er.floating);return{data:{escapedOffsets:eo,escaped:isAnySideFullyClipped(eo)}}}default:return{}}}}};async function convertValueToCoords(ee,en){let{placement:er,platform:eo,elements:ei}=ee,es=await (null==eo.isRTL?void 0:eo.isRTL(ei.floating)),eu=floating_ui_utils_getSide(er),ec=floating_ui_utils_getAlignment(er),ed="y"===floating_ui_utils_getSideAxis(er),ef=["left","top"].includes(eu)?-1:1,ep=es&&ed?-1:1,eh=floating_ui_utils_evaluate(en,ee),{mainAxis:em,crossAxis:eg,alignmentAxis:ex}="number"==typeof eh?{mainAxis:eh,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...eh};return ec&&"number"==typeof ex&&(eg="end"===ec?-1*ex:ex),ed?{x:eg*ep,y:em*ef}:{x:em*ef,y:eg*ep}}let offset=function(ee){return void 0===ee&&(ee=0),{name:"offset",options:ee,async fn(en){let{x:er,y:eo}=en,ei=await convertValueToCoords(en,ee);return{x:er+ei.x,y:eo+ei.y,data:ei}}}},shift=function(ee){return void 0===ee&&(ee={}),{name:"shift",options:ee,async fn(en){let{x:er,y:eo,placement:ei}=en,{mainAxis:es=!0,crossAxis:eu=!1,limiter:ec={fn:ee=>{let{x:en,y:er}=ee;return{x:en,y:er}}},...ed}=floating_ui_utils_evaluate(ee,en),ef={x:er,y:eo},ep=await detectOverflow(en,ed),eh=floating_ui_utils_getSideAxis(floating_ui_utils_getSide(ei)),em=getOppositeAxis(eh),eg=ef[em],ex=ef[eh];if(es){let ee="y"===em?"top":"left",en="y"===em?"bottom":"right",er=eg+ep[ee],eo=eg-ep[en];eg=clamp(er,eg,eo)}if(eu){let ee="y"===eh?"top":"left",en="y"===eh?"bottom":"right",er=ex+ep[ee],eo=ex-ep[en];ex=clamp(er,ex,eo)}let ev=ec.fn({...en,[em]:eg,[eh]:ex});return{...ev,data:{x:ev.x-er,y:ev.y-eo}}}}},limitShift=function(ee){return void 0===ee&&(ee={}),{options:ee,fn(en){let{x:er,y:eo,placement:ei,rects:es,middlewareData:eu}=en,{offset:ec=0,mainAxis:ed=!0,crossAxis:ef=!0}=floating_ui_utils_evaluate(ee,en),ep={x:er,y:eo},eh=floating_ui_utils_getSideAxis(ei),em=getOppositeAxis(eh),eg=ep[em],ex=ep[eh],ev=floating_ui_utils_evaluate(ec,en),ey="number"==typeof ev?{mainAxis:ev,crossAxis:0}:{mainAxis:0,crossAxis:0,...ev};if(ed){let ee="y"===em?"height":"width",en=es.reference[em]-es.floating[ee]+ey.mainAxis,er=es.reference[em]+es.reference[ee]-ey.mainAxis;eg<en?eg=en:eg>er&&(eg=er)}if(ef){var eb,e_;let ee="y"===em?"width":"height",en=["top","left"].includes(floating_ui_utils_getSide(ei)),er=es.reference[eh]-es.floating[ee]+(en&&(null==(eb=eu.offset)?void 0:eb[eh])||0)+(en?0:ey.crossAxis),eo=es.reference[eh]+es.reference[ee]+(en?0:(null==(e_=eu.offset)?void 0:e_[eh])||0)-(en?ey.crossAxis:0);ex<er?ex=er:ex>eo&&(ex=eo)}return{[em]:eg,[eh]:ex}}}},size=function(ee){return void 0===ee&&(ee={}),{name:"size",options:ee,async fn(en){let er,eo;let{placement:ei,rects:es,platform:eu,elements:ec}=en,{apply:ed=()=>{},...ef}=floating_ui_utils_evaluate(ee,en),ep=await detectOverflow(en,ef),eh=floating_ui_utils_getSide(ei),em=floating_ui_utils_getAlignment(ei),eg="y"===floating_ui_utils_getSideAxis(ei),{width:ex,height:ev}=es.floating;"top"===eh||"bottom"===eh?(er=eh,eo=em===(await (null==eu.isRTL?void 0:eu.isRTL(ec.floating))?"start":"end")?"left":"right"):(eo=eh,er="end"===em?"top":"bottom");let ey=ev-ep[er],eb=ex-ep[eo],ek=!en.middlewareData.shift,eC=ey,eE=eb;if(eg){let ee=ex-ep.left-ep.right;eE=em||ek?e_(eb,ee):ee}else{let ee=ev-ep.top-ep.bottom;eC=em||ek?e_(ey,ee):ee}if(ek&&!em){let ee=ew(ep.left,0),en=ew(ep.right,0),er=ew(ep.top,0),eo=ew(ep.bottom,0);eg?eE=ex-2*(0!==ee||0!==en?ee+en:ew(ep.left,ep.right)):eC=ev-2*(0!==er||0!==eo?er+eo:ew(ep.top,ep.bottom))}await ed({...en,availableWidth:eE,availableHeight:eC});let eT=await eu.getDimensions(ec.floating);return ex!==eT.width||ev!==eT.height?{reset:{rects:!0}}:{}}}};function getNodeName(ee){return isNode(ee)?(ee.nodeName||"").toLowerCase():"#document"}function getWindow(ee){var en;return(null==ee?void 0:null==(en=ee.ownerDocument)?void 0:en.defaultView)||window}function getDocumentElement(ee){var en;return null==(en=(isNode(ee)?ee.ownerDocument:ee.document)||window.document)?void 0:en.documentElement}function isNode(ee){return ee instanceof Node||ee instanceof getWindow(ee).Node}function isElement(ee){return ee instanceof Element||ee instanceof getWindow(ee).Element}function isHTMLElement(ee){return ee instanceof HTMLElement||ee instanceof getWindow(ee).HTMLElement}function isShadowRoot(ee){return"undefined"!=typeof ShadowRoot&&(ee instanceof ShadowRoot||ee instanceof getWindow(ee).ShadowRoot)}function isOverflowElement(ee){let{overflow:en,overflowX:er,overflowY:eo,display:ei}=floating_ui_utils_dom_getComputedStyle(ee);return/auto|scroll|overlay|hidden|clip/.test(en+eo+er)&&!["inline","contents"].includes(ei)}function isTableElement(ee){return["table","td","th"].includes(getNodeName(ee))}function isContainingBlock(ee){let en=isWebKit(),er=floating_ui_utils_dom_getComputedStyle(ee);return"none"!==er.transform||"none"!==er.perspective||!!er.containerType&&"normal"!==er.containerType||!en&&!!er.backdropFilter&&"none"!==er.backdropFilter||!en&&!!er.filter&&"none"!==er.filter||["transform","perspective","filter"].some(ee=>(er.willChange||"").includes(ee))||["paint","layout","strict","content"].some(ee=>(er.contain||"").includes(ee))}function getContainingBlock(ee){let en=getParentNode(ee);for(;isHTMLElement(en)&&!isLastTraversableNode(en);){if(isContainingBlock(en))return en;en=getParentNode(en)}return null}function isWebKit(){return"undefined"!=typeof CSS&&!!CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")}function isLastTraversableNode(ee){return["html","body","#document"].includes(getNodeName(ee))}function floating_ui_utils_dom_getComputedStyle(ee){return getWindow(ee).getComputedStyle(ee)}function getNodeScroll(ee){return isElement(ee)?{scrollLeft:ee.scrollLeft,scrollTop:ee.scrollTop}:{scrollLeft:ee.pageXOffset,scrollTop:ee.pageYOffset}}function getParentNode(ee){if("html"===getNodeName(ee))return ee;let en=ee.assignedSlot||ee.parentNode||isShadowRoot(ee)&&ee.host||getDocumentElement(ee);return isShadowRoot(en)?en.host:en}function getNearestOverflowAncestor(ee){let en=getParentNode(ee);return isLastTraversableNode(en)?ee.ownerDocument?ee.ownerDocument.body:ee.body:isHTMLElement(en)&&isOverflowElement(en)?en:getNearestOverflowAncestor(en)}function getOverflowAncestors(ee,en,er){var eo;void 0===en&&(en=[]),void 0===er&&(er=!0);let ei=getNearestOverflowAncestor(ee),es=ei===(null==(eo=ee.ownerDocument)?void 0:eo.body),eu=getWindow(ei);return es?en.concat(eu,eu.visualViewport||[],isOverflowElement(ei)?ei:[],eu.frameElement&&er?getOverflowAncestors(eu.frameElement):[]):en.concat(ei,getOverflowAncestors(ei,[],er))}function getCssDimensions(ee){let en=floating_ui_utils_dom_getComputedStyle(ee),er=parseFloat(en.width)||0,eo=parseFloat(en.height)||0,ei=isHTMLElement(ee),es=ei?ee.offsetWidth:er,eu=ei?ee.offsetHeight:eo,ec=ek(er)!==es||ek(eo)!==eu;return ec&&(er=es,eo=eu),{width:er,height:eo,$:ec}}function unwrapElement(ee){return isElement(ee)?ee:ee.contextElement}function getScale(ee){let en=unwrapElement(ee);if(!isHTMLElement(en))return createCoords(1);let er=en.getBoundingClientRect(),{width:eo,height:ei,$:es}=getCssDimensions(en),eu=(es?ek(er.width):er.width)/eo,ec=(es?ek(er.height):er.height)/ei;return eu&&Number.isFinite(eu)||(eu=1),ec&&Number.isFinite(ec)||(ec=1),{x:eu,y:ec}}let eS=createCoords(0);function getVisualOffsets(ee){let en=getWindow(ee);return isWebKit()&&en.visualViewport?{x:en.visualViewport.offsetLeft,y:en.visualViewport.offsetTop}:eS}function shouldAddVisualOffsets(ee,en,er){return void 0===en&&(en=!1),!!er&&(!en||er===getWindow(ee))&&en}function getBoundingClientRect(ee,en,er,eo){void 0===en&&(en=!1),void 0===er&&(er=!1);let ei=ee.getBoundingClientRect(),es=unwrapElement(ee),eu=createCoords(1);en&&(eo?isElement(eo)&&(eu=getScale(eo)):eu=getScale(ee));let ec=shouldAddVisualOffsets(es,er,eo)?getVisualOffsets(es):createCoords(0),ed=(ei.left+ec.x)/eu.x,ef=(ei.top+ec.y)/eu.y,ep=ei.width/eu.x,eh=ei.height/eu.y;if(es){let ee=getWindow(es),en=eo&&isElement(eo)?getWindow(eo):eo,er=ee.frameElement;for(;er&&eo&&en!==ee;){let ee=getScale(er),en=er.getBoundingClientRect(),eo=floating_ui_utils_dom_getComputedStyle(er),ei=en.left+(er.clientLeft+parseFloat(eo.paddingLeft))*ee.x,es=en.top+(er.clientTop+parseFloat(eo.paddingTop))*ee.y;ed*=ee.x,ef*=ee.y,ep*=ee.x,eh*=ee.y,ed+=ei,ef+=es,er=getWindow(er).frameElement}}return floating_ui_utils_rectToClientRect({width:ep,height:eh,x:ed,y:ef})}function convertOffsetParentRelativeRectToViewportRelativeRect(ee){let{rect:en,offsetParent:er,strategy:eo}=ee,ei=isHTMLElement(er),es=getDocumentElement(er);if(er===es)return en;let eu={scrollLeft:0,scrollTop:0},ec=createCoords(1),ed=createCoords(0);if((ei||!ei&&"fixed"!==eo)&&(("body"!==getNodeName(er)||isOverflowElement(es))&&(eu=getNodeScroll(er)),isHTMLElement(er))){let ee=getBoundingClientRect(er);ec=getScale(er),ed.x=ee.x+er.clientLeft,ed.y=ee.y+er.clientTop}return{width:en.width*ec.x,height:en.height*ec.y,x:en.x*ec.x-eu.scrollLeft*ec.x+ed.x,y:en.y*ec.y-eu.scrollTop*ec.y+ed.y}}function getClientRects(ee){return Array.from(ee.getClientRects())}function getWindowScrollBarX(ee){return getBoundingClientRect(getDocumentElement(ee)).left+getNodeScroll(ee).scrollLeft}function getDocumentRect(ee){let en=getDocumentElement(ee),er=getNodeScroll(ee),eo=ee.ownerDocument.body,ei=ew(en.scrollWidth,en.clientWidth,eo.scrollWidth,eo.clientWidth),es=ew(en.scrollHeight,en.clientHeight,eo.scrollHeight,eo.clientHeight),eu=-er.scrollLeft+getWindowScrollBarX(ee),ec=-er.scrollTop;return"rtl"===floating_ui_utils_dom_getComputedStyle(eo).direction&&(eu+=ew(en.clientWidth,eo.clientWidth)-ei),{width:ei,height:es,x:eu,y:ec}}function getViewportRect(ee,en){let er=getWindow(ee),eo=getDocumentElement(ee),ei=er.visualViewport,es=eo.clientWidth,eu=eo.clientHeight,ec=0,ed=0;if(ei){es=ei.width,eu=ei.height;let ee=isWebKit();(!ee||ee&&"fixed"===en)&&(ec=ei.offsetLeft,ed=ei.offsetTop)}return{width:es,height:eu,x:ec,y:ed}}function getInnerBoundingClientRect(ee,en){let er=getBoundingClientRect(ee,!0,"fixed"===en),eo=er.top+ee.clientTop,ei=er.left+ee.clientLeft,es=isHTMLElement(ee)?getScale(ee):createCoords(1),eu=ee.clientWidth*es.x,ec=ee.clientHeight*es.y,ed=ei*es.x,ef=eo*es.y;return{width:eu,height:ec,x:ed,y:ef}}function getClientRectFromClippingAncestor(ee,en,er){let eo;if("viewport"===en)eo=getViewportRect(ee,er);else if("document"===en)eo=getDocumentRect(getDocumentElement(ee));else if(isElement(en))eo=getInnerBoundingClientRect(en,er);else{let er=getVisualOffsets(ee);eo={...en,x:en.x-er.x,y:en.y-er.y}}return floating_ui_utils_rectToClientRect(eo)}function hasFixedPositionAncestor(ee,en){let er=getParentNode(ee);return!(er===en||!isElement(er)||isLastTraversableNode(er))&&("fixed"===floating_ui_utils_dom_getComputedStyle(er).position||hasFixedPositionAncestor(er,en))}function getClippingElementAncestors(ee,en){let er=en.get(ee);if(er)return er;let eo=getOverflowAncestors(ee,[],!1).filter(ee=>isElement(ee)&&"body"!==getNodeName(ee)),ei=null,es="fixed"===floating_ui_utils_dom_getComputedStyle(ee).position,eu=es?getParentNode(ee):ee;for(;isElement(eu)&&!isLastTraversableNode(eu);){let en=floating_ui_utils_dom_getComputedStyle(eu),er=isContainingBlock(eu);er||"fixed"!==en.position||(ei=null);let ec=es?!er&&!ei:!er&&"static"===en.position&&!!ei&&["absolute","fixed"].includes(ei.position)||isOverflowElement(eu)&&!er&&hasFixedPositionAncestor(ee,eu);ec?eo=eo.filter(ee=>ee!==eu):ei=en,eu=getParentNode(eu)}return en.set(ee,eo),eo}function getClippingRect(ee){let{element:en,boundary:er,rootBoundary:eo,strategy:ei}=ee,es="clippingAncestors"===er?getClippingElementAncestors(en,this._c):[].concat(er),eu=[...es,eo],ec=eu[0],ed=eu.reduce((ee,er)=>{let eo=getClientRectFromClippingAncestor(en,er,ei);return ee.top=ew(eo.top,ee.top),ee.right=e_(eo.right,ee.right),ee.bottom=e_(eo.bottom,ee.bottom),ee.left=ew(eo.left,ee.left),ee},getClientRectFromClippingAncestor(en,ec,ei));return{width:ed.right-ed.left,height:ed.bottom-ed.top,x:ed.left,y:ed.top}}function getDimensions(ee){return getCssDimensions(ee)}function getRectRelativeToOffsetParent(ee,en,er){let eo=isHTMLElement(en),ei=getDocumentElement(en),es="fixed"===er,eu=getBoundingClientRect(ee,!0,es,en),ec={scrollLeft:0,scrollTop:0},ed=createCoords(0);if(eo||!eo&&!es){if(("body"!==getNodeName(en)||isOverflowElement(ei))&&(ec=getNodeScroll(en)),eo){let ee=getBoundingClientRect(en,!0,es,en);ed.x=ee.x+en.clientLeft,ed.y=ee.y+en.clientTop}else ei&&(ed.x=getWindowScrollBarX(ei))}return{x:eu.left+ec.scrollLeft-ed.x,y:eu.top+ec.scrollTop-ed.y,width:eu.width,height:eu.height}}function getTrueOffsetParent(ee,en){return isHTMLElement(ee)&&"fixed"!==floating_ui_utils_dom_getComputedStyle(ee).position?en?en(ee):ee.offsetParent:null}function getOffsetParent(ee,en){let er=getWindow(ee);if(!isHTMLElement(ee))return er;let eo=getTrueOffsetParent(ee,en);for(;eo&&isTableElement(eo)&&"static"===floating_ui_utils_dom_getComputedStyle(eo).position;)eo=getTrueOffsetParent(eo,en);return eo&&("html"===getNodeName(eo)||"body"===getNodeName(eo)&&"static"===floating_ui_utils_dom_getComputedStyle(eo).position&&!isContainingBlock(eo))?er:eo||getContainingBlock(ee)||er}let getElementRects=async function(ee){let{reference:en,floating:er,strategy:eo}=ee,ei=this.getOffsetParent||getOffsetParent,es=this.getDimensions;return{reference:getRectRelativeToOffsetParent(en,await ei(er),eo),floating:{x:0,y:0,...await es(er)}}};function isRTL(ee){return"rtl"===floating_ui_utils_dom_getComputedStyle(ee).direction}let eO={convertOffsetParentRelativeRectToViewportRelativeRect,getDocumentElement:getDocumentElement,getClippingRect,getOffsetParent,getElementRects,getClientRects,getDimensions,getScale,isElement:isElement,isRTL};function observeMove(ee,en){let er,eo=null,ei=getDocumentElement(ee);function cleanup(){clearTimeout(er),eo&&eo.disconnect(),eo=null}function refresh(es,eu){void 0===es&&(es=!1),void 0===eu&&(eu=1),cleanup();let{left:ec,top:ed,width:ef,height:ep}=ee.getBoundingClientRect();if(es||en(),!ef||!ep)return;let eh=eC(ed),em=eC(ei.clientWidth-(ec+ef)),eg=eC(ei.clientHeight-(ed+ep)),ex=eC(ec),ev=-eh+"px "+-em+"px "+-eg+"px "+-ex+"px",ey={rootMargin:ev,threshold:ew(0,e_(1,eu))||1},eb=!0;function handleObserve(ee){let en=ee[0].intersectionRatio;if(en!==eu){if(!eb)return refresh();en?refresh(!1,en):er=setTimeout(()=>{refresh(!1,1e-7)},100)}eb=!1}try{eo=new IntersectionObserver(handleObserve,{...ey,root:ei.ownerDocument})}catch(ee){eo=new IntersectionObserver(handleObserve,ey)}eo.observe(ee)}return refresh(!0),cleanup}function autoUpdate(ee,en,er,eo){let ei;void 0===eo&&(eo={});let{ancestorScroll:es=!0,ancestorResize:eu=!0,elementResize:ec="function"==typeof ResizeObserver,layoutShift:ed="function"==typeof IntersectionObserver,animationFrame:ef=!1}=eo,ep=unwrapElement(ee),eh=es||eu?[...ep?getOverflowAncestors(ep):[],...getOverflowAncestors(en)]:[];eh.forEach(ee=>{es&&ee.addEventListener("scroll",er,{passive:!0}),eu&&ee.addEventListener("resize",er)});let em=ep&&ed?observeMove(ep,er):null,eg=-1,ex=null;ec&&(ex=new ResizeObserver(ee=>{let[eo]=ee;eo&&eo.target===ep&&ex&&(ex.unobserve(en),cancelAnimationFrame(eg),eg=requestAnimationFrame(()=>{ex&&ex.observe(en)})),er()}),ep&&!ef&&ex.observe(ep),ex.observe(en));let ev=ef?getBoundingClientRect(ee):null;function frameLoop(){let en=getBoundingClientRect(ee);ev&&(en.x!==ev.x||en.y!==ev.y||en.width!==ev.width||en.height!==ev.height)&&er(),ev=en,ei=requestAnimationFrame(frameLoop)}return ef&&frameLoop(),er(),()=>{eh.forEach(ee=>{es&&ee.removeEventListener("scroll",er),eu&&ee.removeEventListener("resize",er)}),em&&em(),ex&&ex.disconnect(),ex=null,ef&&cancelAnimationFrame(ei)}}let floating_ui_dom_computePosition=(ee,en,er)=>{let eo=new Map,ei={platform:eO,...er},es={...ei.platform,_c:eo};return computePosition(ee,en,{...ei,platform:es})};var eP=er(3935);let floating_ui_react_dom_arrow=ee=>{function isRef(ee){return({}).hasOwnProperty.call(ee,"current")}return{name:"arrow",options:ee,fn(en){let{element:er,padding:eo}="function"==typeof ee?ee(en):ee;if(er&&isRef(er)){if(null!=er.current)return arrow({element:er.current,padding:eo}).fn(en)}else if(er)return arrow({element:er,padding:eo}).fn(en);return{}}}};var eR="undefined"!=typeof document?es.useLayoutEffect:es.useEffect;function deepEqual(ee,en){let er,eo,ei;if(ee===en)return!0;if(typeof ee!=typeof en)return!1;if("function"==typeof ee&&ee.toString()===en.toString())return!0;if(ee&&en&&"object"==typeof ee){if(Array.isArray(ee)){if((er=ee.length)!=en.length)return!1;for(eo=er;0!=eo--;)if(!deepEqual(ee[eo],en[eo]))return!1;return!0}if((er=(ei=Object.keys(ee)).length)!==Object.keys(en).length)return!1;for(eo=er;0!=eo--;)if(!({}).hasOwnProperty.call(en,ei[eo]))return!1;for(eo=er;0!=eo--;){let er=ei[eo];if(("_owner"!==er||!ee.$$typeof)&&!deepEqual(ee[er],en[er]))return!1}return!0}return ee!=ee&&en!=en}function getDPR(ee){if("undefined"==typeof window)return 1;let en=ee.ownerDocument.defaultView||window;return en.devicePixelRatio||1}function roundByDPR(ee,en){let er=getDPR(ee);return Math.round(en*er)/er}function useLatestRef(ee){let en=es.useRef(ee);return eR(()=>{en.current=ee}),en}function useFloating(ee){void 0===ee&&(ee={});let{placement:en="bottom",strategy:er="absolute",middleware:eo=[],platform:ei,elements:{reference:eu,floating:ec}={},transform:ed=!0,whileElementsMounted:ef,open:ep}=ee,[eh,em]=es.useState({x:0,y:0,strategy:er,placement:en,middlewareData:{},isPositioned:!1}),[eg,ex]=es.useState(eo);deepEqual(eg,eo)||ex(eo);let[ev,ey]=es.useState(null),[eb,e_]=es.useState(null),ew=es.useCallback(ee=>{ee!=eT.current&&(eT.current=ee,ey(ee))},[ey]),ek=es.useCallback(ee=>{ee!==eS.current&&(eS.current=ee,e_(ee))},[e_]),eC=eu||ev,eE=ec||eb,eT=es.useRef(null),eS=es.useRef(null),eO=es.useRef(eh),eI=useLatestRef(ef),ej=useLatestRef(ei),eN=es.useCallback(()=>{if(!eT.current||!eS.current)return;let ee={placement:en,strategy:er,middleware:eg};ej.current&&(ee.platform=ej.current),floating_ui_dom_computePosition(eT.current,eS.current,ee).then(ee=>{let en={...ee,isPositioned:!0};eA.current&&!deepEqual(eO.current,en)&&(eO.current=en,eP.flushSync(()=>{em(en)}))})},[eg,en,er,ej]);eR(()=>{!1===ep&&eO.current.isPositioned&&(eO.current.isPositioned=!1,em(ee=>({...ee,isPositioned:!1})))},[ep]);let eA=es.useRef(!1);eR(()=>(eA.current=!0,()=>{eA.current=!1}),[]),eR(()=>{if(eC&&(eT.current=eC),eE&&(eS.current=eE),eC&&eE){if(eI.current)return eI.current(eC,eE,eN);eN()}},[eC,eE,eN,eI]);let eZ=es.useMemo(()=>({reference:eT,floating:eS,setReference:ew,setFloating:ek}),[ew,ek]),eL=es.useMemo(()=>({reference:eC,floating:eE}),[eC,eE]),eM=es.useMemo(()=>{let ee={position:er,left:0,top:0};if(!eL.floating)return ee;let en=roundByDPR(eL.floating,eh.x),eo=roundByDPR(eL.floating,eh.y);return ed?{...ee,transform:"translate("+en+"px, "+eo+"px)",...getDPR(eL.floating)>=1.5&&{willChange:"transform"}}:{position:er,left:en,top:eo}},[er,ed,eL.floating,eh.x,eh.y]);return es.useMemo(()=>({...eh,update:eN,refs:eZ,elements:eL,floatingStyles:eM}),[eh,eN,eZ,eL,eM])}let eI=(0,es.forwardRef)((ee,en)=>{let{children:er,width:eo=10,height:eu=5,...ec}=ee;return(0,es.createElement)(ed.WV.svg,(0,ei.Z)({},ec,{ref:en,width:eo,height:eu,viewBox:"0 0 30 10",preserveAspectRatio:"none"}),ee.asChild?er:(0,es.createElement)("polygon",{points:"0,0 30,0 15,10"}))}),ej=eI;function $db6c3485150b8e66$export$1ab7ae714698c4b8(ee){let[en,er]=(0,es.useState)(void 0);return ex(()=>{if(ee){er({width:ee.offsetWidth,height:ee.offsetHeight});let en=new ResizeObserver(en=>{let eo,ei;if(!Array.isArray(en)||!en.length)return;let es=en[0];if("borderBoxSize"in es){let ee=es.borderBoxSize,en=Array.isArray(ee)?ee[0]:ee;eo=en.inlineSize,ei=en.blockSize}else eo=ee.offsetWidth,ei=ee.offsetHeight;er({width:eo,height:ei})});return en.observe(ee,{box:"border-box"}),()=>en.unobserve(ee)}er(void 0)},[ee]),en}let eN="Popper",[eA,eZ]=$c512c27ab02ef895$export$50c7b4e9d9f19c1(eN),[eL,eM]=eA(eN),$cf1ac5d9fe0e8206$export$badac9ada3a0bdf9=ee=>{let{__scopePopper:en,children:er}=ee,[eo,ei]=(0,es.useState)(null);return(0,es.createElement)(eL,{scope:en,anchor:eo,onAnchorChange:ei},er)},e$="PopperAnchor",eD=(0,es.forwardRef)((ee,en)=>{let{__scopePopper:er,virtualRef:eo,...eu}=ee,ef=eM(e$,er),ep=(0,es.useRef)(null),eh=(0,ec.e)(en,ep);return(0,es.useEffect)(()=>{ef.onAnchorChange((null==eo?void 0:eo.current)||ep.current)}),eo?null:(0,es.createElement)(ed.WV.div,(0,ei.Z)({},eu,{ref:eh}))}),eF="PopperContent",[ez,eV]=eA(eF),eB=(0,es.forwardRef)((ee,en)=>{var er,eo,eu,ef,ep,eh,em,eg;let{__scopePopper:ev,side:ey="bottom",sideOffset:eb=0,align:e_="center",alignOffset:ew=0,arrowPadding:ek=0,avoidCollisions:eC=!0,collisionBoundary:eE=[],collisionPadding:eT=0,sticky:eS="partial",hideWhenDetached:eO=!1,updatePositionStrategy:eP="optimized",onPlaced:eR,...eI}=ee,ej=eM(eF,ev),[eN,eA]=(0,es.useState)(null),eZ=(0,ec.e)(en,ee=>eA(ee)),[eL,e$]=(0,es.useState)(null),eD=$db6c3485150b8e66$export$1ab7ae714698c4b8(eL),eV=null!==(er=null==eD?void 0:eD.width)&&void 0!==er?er:0,eB=null!==(eo=null==eD?void 0:eD.height)&&void 0!==eo?eo:0,eW=ey+("center"!==e_?"-"+e_:""),eU="number"==typeof eT?eT:{top:0,right:0,bottom:0,left:0,...eT},eH=Array.isArray(eE)?eE:[eE],eG=eH.length>0,eK={padding:eU,boundary:eH.filter($cf1ac5d9fe0e8206$var$isNotNull),altBoundary:eG},{refs:eq,floatingStyles:eY,placement:eX,isPositioned:eQ,middlewareData:eJ}=useFloating({strategy:"fixed",placement:eW,whileElementsMounted:(...ee)=>{let en=autoUpdate(...ee,{animationFrame:"always"===eP});return en},elements:{reference:ej.anchor},middleware:[offset({mainAxis:eb+eB,alignmentAxis:ew}),eC&&shift({mainAxis:!0,crossAxis:!1,limiter:"partial"===eS?limitShift():void 0,...eK}),eC&&flip({...eK}),size({...eK,apply:({elements:ee,rects:en,availableWidth:er,availableHeight:eo})=>{let{width:ei,height:es}=en.reference,eu=ee.floating.style;eu.setProperty("--radix-popper-available-width",`${er}px`),eu.setProperty("--radix-popper-available-height",`${eo}px`),eu.setProperty("--radix-popper-anchor-width",`${ei}px`),eu.setProperty("--radix-popper-anchor-height",`${es}px`)}}),eL&&floating_ui_react_dom_arrow({element:eL,padding:ek}),$cf1ac5d9fe0e8206$var$transformOrigin({arrowWidth:eV,arrowHeight:eB}),eO&&hide({strategy:"referenceHidden",...eK})]}),[e0,e1]=$cf1ac5d9fe0e8206$var$getSideAndAlignFromPlacement(eX),e2=$b1b2314f5f9a1d84$export$25bec8c6f54ee79a(eR);ex(()=>{eQ&&(null==e2||e2())},[eQ,e2]);let e4=null===(eu=eJ.arrow)||void 0===eu?void 0:eu.x,e5=null===(ef=eJ.arrow)||void 0===ef?void 0:ef.y,e7=(null===(ep=eJ.arrow)||void 0===ep?void 0:ep.centerOffset)!==0,[e3,e6]=(0,es.useState)();return ex(()=>{eN&&e6(window.getComputedStyle(eN).zIndex)},[eN]),(0,es.createElement)("div",{ref:eq.setFloating,"data-radix-popper-content-wrapper":"",style:{...eY,transform:eQ?eY.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:e3,"--radix-popper-transform-origin":[null===(eh=eJ.transformOrigin)||void 0===eh?void 0:eh.x,null===(em=eJ.transformOrigin)||void 0===em?void 0:em.y].join(" ")},dir:ee.dir},(0,es.createElement)(ez,{scope:ev,placedSide:e0,onArrowChange:e$,arrowX:e4,arrowY:e5,shouldHideArrow:e7},(0,es.createElement)(ed.WV.div,(0,ei.Z)({"data-side":e0,"data-align":e1},eI,{ref:eZ,style:{...eI.style,animation:eQ?void 0:"none",opacity:null!==(eg=eJ.hide)&&void 0!==eg&&eg.referenceHidden?0:void 0}}))))}),eW="PopperArrow",eU={top:"bottom",right:"left",bottom:"top",left:"right"},eH=(0,es.forwardRef)(function(ee,en){let{__scopePopper:er,...eo}=ee,eu=eV(eW,er),ec=eU[eu.placedSide];return(0,es.createElement)("span",{ref:eu.onArrowChange,style:{position:"absolute",left:eu.arrowX,top:eu.arrowY,[ec]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[eu.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[eu.placedSide],visibility:eu.shouldHideArrow?"hidden":void 0}},(0,es.createElement)(ej,(0,ei.Z)({},eo,{ref:en,style:{...eo.style,display:"block"}})))});function $cf1ac5d9fe0e8206$var$isNotNull(ee){return null!==ee}let $cf1ac5d9fe0e8206$var$transformOrigin=ee=>({name:"transformOrigin",options:ee,fn(en){var er,eo,ei,es,eu;let{placement:ec,rects:ed,middlewareData:ef}=en,ep=(null===(er=ef.arrow)||void 0===er?void 0:er.centerOffset)!==0,eh=ep,em=eh?0:ee.arrowWidth,eg=eh?0:ee.arrowHeight,[ex,ev]=$cf1ac5d9fe0e8206$var$getSideAndAlignFromPlacement(ec),ey={start:"0%",center:"50%",end:"100%"}[ev],eb=(null!==(eo=null===(ei=ef.arrow)||void 0===ei?void 0:ei.x)&&void 0!==eo?eo:0)+em/2,e_=(null!==(es=null===(eu=ef.arrow)||void 0===eu?void 0:eu.y)&&void 0!==es?es:0)+eg/2,ew="",ek="";return"bottom"===ex?(ew=eh?ey:`${eb}px`,ek=`${-eg}px`):"top"===ex?(ew=eh?ey:`${eb}px`,ek=`${ed.floating.height+eg}px`):"right"===ex?(ew=`${-eg}px`,ek=eh?ey:`${e_}px`):"left"===ex&&(ew=`${ed.floating.width+eg}px`,ek=eh?ey:`${e_}px`),{data:{x:ew,y:ek}}}});function $cf1ac5d9fe0e8206$var$getSideAndAlignFromPlacement(ee){let[en,er="center"]=ee.split("-");return[en,er]}let eG=$cf1ac5d9fe0e8206$export$badac9ada3a0bdf9,eK=eD,eq=eB,eY=eH,eX=(0,es.forwardRef)((ee,en)=>{var er;let{container:eo=null==globalThis?void 0:null===(er=globalThis.document)||void 0===er?void 0:er.body,...eu}=ee;return eo?eP.createPortal((0,es.createElement)(ed.WV.div,(0,ei.Z)({},eu,{ref:en})),eo):null});function $fe963b355347cc68$export$3e6543de14f8614f(ee,en){return(0,es.useReducer)((ee,er)=>{let eo=en[ee][er];return null!=eo?eo:ee},ee)}let $921a889cee6df7e8$export$99c2b779aa4e8b8b=ee=>{let{present:en,children:er}=ee,eo=$921a889cee6df7e8$var$usePresence(en),ei="function"==typeof er?er({present:eo.isPresent}):es.Children.only(er),eu=(0,ec.e)(eo.ref,ei.ref),ed="function"==typeof er;return ed||eo.isPresent?(0,es.cloneElement)(ei,{ref:eu}):null};function $921a889cee6df7e8$var$usePresence(ee){let[en,er]=(0,es.useState)(),eo=(0,es.useRef)({}),ei=(0,es.useRef)(ee),eu=(0,es.useRef)("none"),ec=ee?"mounted":"unmounted",[ed,ef]=$fe963b355347cc68$export$3e6543de14f8614f(ec,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return(0,es.useEffect)(()=>{let ee=$921a889cee6df7e8$var$getAnimationName(eo.current);eu.current="mounted"===ed?ee:"none"},[ed]),ex(()=>{let en=eo.current,er=ei.current,es=er!==ee;if(es){let eo=eu.current,es=$921a889cee6df7e8$var$getAnimationName(en);if(ee)ef("MOUNT");else if("none"===es||(null==en?void 0:en.display)==="none")ef("UNMOUNT");else{let ee=eo!==es;er&&ee?ef("ANIMATION_OUT"):ef("UNMOUNT")}ei.current=ee}},[ee,ef]),ex(()=>{if(en){let handleAnimationEnd=ee=>{let er=$921a889cee6df7e8$var$getAnimationName(eo.current),ei=er.includes(ee.animationName);ee.target===en&&ei&&(0,eP.flushSync)(()=>ef("ANIMATION_END"))},handleAnimationStart=ee=>{ee.target===en&&(eu.current=$921a889cee6df7e8$var$getAnimationName(eo.current))};return en.addEventListener("animationstart",handleAnimationStart),en.addEventListener("animationcancel",handleAnimationEnd),en.addEventListener("animationend",handleAnimationEnd),()=>{en.removeEventListener("animationstart",handleAnimationStart),en.removeEventListener("animationcancel",handleAnimationEnd),en.removeEventListener("animationend",handleAnimationEnd)}}ef("ANIMATION_END")},[en,ef]),{isPresent:["mounted","unmountSuspended"].includes(ed),ref:(0,es.useCallback)(ee=>{ee&&(eo.current=getComputedStyle(ee)),er(ee)},[])}}function $921a889cee6df7e8$var$getAnimationName(ee){return(null==ee?void 0:ee.animationName)||"none"}$921a889cee6df7e8$export$99c2b779aa4e8b8b.displayName="Presence";var eQ=er(8426);function $71cd76cc60e0454e$export$6f32135080cb4c3({prop:ee,defaultProp:en,onChange:er=()=>{}}){let[eo,ei]=$71cd76cc60e0454e$var$useUncontrolledState({defaultProp:en,onChange:er}),eu=void 0!==ee,ec=eu?ee:eo,ed=$b1b2314f5f9a1d84$export$25bec8c6f54ee79a(er),ef=(0,es.useCallback)(en=>{if(eu){let er=en,eo="function"==typeof en?er(ee):en;eo!==ee&&ed(eo)}else ei(en)},[eu,ee,ei,ed]);return[ec,ef]}function $71cd76cc60e0454e$var$useUncontrolledState({defaultProp:ee,onChange:en}){let er=(0,es.useState)(ee),[eo]=er,ei=(0,es.useRef)(eo),eu=$b1b2314f5f9a1d84$export$25bec8c6f54ee79a(en);return(0,es.useEffect)(()=>{ei.current!==eo&&(eu(eo),ei.current=eo)},[eo,ei,eu]),er}let eJ=(0,es.forwardRef)((ee,en)=>(0,es.createElement)(ed.WV.span,(0,ei.Z)({},ee,{ref:en,style:{position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal",...ee.style}}))),e0=eJ,[e1,e2]=$c512c27ab02ef895$export$50c7b4e9d9f19c1("Tooltip",[eZ]),e4=eZ(),e5="TooltipProvider",e7=700,e3="tooltip.open",[e6,e9]=e1(e5),$a093c7e1ec25a057$export$f78649fb9ca566b8=ee=>{let{__scopeTooltip:en,delayDuration:er=e7,skipDelayDuration:eo=300,disableHoverableContent:ei=!1,children:eu}=ee,[ec,ed]=(0,es.useState)(!0),ef=(0,es.useRef)(!1),ep=(0,es.useRef)(0);return(0,es.useEffect)(()=>{let ee=ep.current;return()=>window.clearTimeout(ee)},[]),(0,es.createElement)(e6,{scope:en,isOpenDelayed:ec,delayDuration:er,onOpen:(0,es.useCallback)(()=>{window.clearTimeout(ep.current),ed(!1)},[]),onClose:(0,es.useCallback)(()=>{window.clearTimeout(ep.current),ep.current=window.setTimeout(()=>ed(!0),eo)},[eo]),isPointerInTransitRef:ef,onPointerInTransitChange:(0,es.useCallback)(ee=>{ef.current=ee},[]),disableHoverableContent:ei},eu)},e8="Tooltip",[tn,tr]=e1(e8),$a093c7e1ec25a057$export$28c660c63b792dea=ee=>{let{__scopeTooltip:en,children:er,open:eo,defaultOpen:ei=!1,onOpenChange:eu,disableHoverableContent:ec,delayDuration:ed}=ee,ef=e9(e8,ee.__scopeTooltip),ep=e4(en),[eh,em]=(0,es.useState)(null),eg=$1746a345f3d73bb7$export$f680877a34711e37(),ex=(0,es.useRef)(0),ev=null!=ec?ec:ef.disableHoverableContent,ey=null!=ed?ed:ef.delayDuration,eb=(0,es.useRef)(!1),[e_=!1,ew]=$71cd76cc60e0454e$export$6f32135080cb4c3({prop:eo,defaultProp:ei,onChange:ee=>{ee?(ef.onOpen(),document.dispatchEvent(new CustomEvent(e3))):ef.onClose(),null==eu||eu(ee)}}),ek=(0,es.useMemo)(()=>e_?eb.current?"delayed-open":"instant-open":"closed",[e_]),eC=(0,es.useCallback)(()=>{window.clearTimeout(ex.current),eb.current=!1,ew(!0)},[ew]),eE=(0,es.useCallback)(()=>{window.clearTimeout(ex.current),ew(!1)},[ew]),eT=(0,es.useCallback)(()=>{window.clearTimeout(ex.current),ex.current=window.setTimeout(()=>{eb.current=!0,ew(!0)},ey)},[ey,ew]);return(0,es.useEffect)(()=>()=>window.clearTimeout(ex.current),[]),(0,es.createElement)(eG,ep,(0,es.createElement)(tn,{scope:en,contentId:eg,open:e_,stateAttribute:ek,trigger:eh,onTriggerChange:em,onTriggerEnter:(0,es.useCallback)(()=>{ef.isOpenDelayed?eT():eC()},[ef.isOpenDelayed,eT,eC]),onTriggerLeave:(0,es.useCallback)(()=>{ev?eE():window.clearTimeout(ex.current)},[eE,ev]),onOpen:eC,onClose:eE,disableHoverableContent:ev},er))},to="TooltipTrigger",ti=(0,es.forwardRef)((ee,en)=>{let{__scopeTooltip:er,...eo}=ee,eu=tr(to,er),ef=e9(to,er),ep=e4(er),eh=(0,es.useRef)(null),em=(0,ec.e)(en,eh,eu.onTriggerChange),eg=(0,es.useRef)(!1),ex=(0,es.useRef)(!1),ev=(0,es.useCallback)(()=>eg.current=!1,[]);return(0,es.useEffect)(()=>()=>document.removeEventListener("pointerup",ev),[ev]),(0,es.createElement)(eK,(0,ei.Z)({asChild:!0},ep),(0,es.createElement)(ed.WV.button,(0,ei.Z)({"aria-describedby":eu.open?eu.contentId:void 0,"data-state":eu.stateAttribute},eo,{ref:em,onPointerMove:$e42e1063c40fb3ef$export$b9ecd428b558ff10(ee.onPointerMove,ee=>{"touch"===ee.pointerType||ex.current||ef.isPointerInTransitRef.current||(eu.onTriggerEnter(),ex.current=!0)}),onPointerLeave:$e42e1063c40fb3ef$export$b9ecd428b558ff10(ee.onPointerLeave,()=>{eu.onTriggerLeave(),ex.current=!1}),onPointerDown:$e42e1063c40fb3ef$export$b9ecd428b558ff10(ee.onPointerDown,()=>{eg.current=!0,document.addEventListener("pointerup",ev,{once:!0})}),onFocus:$e42e1063c40fb3ef$export$b9ecd428b558ff10(ee.onFocus,()=>{eg.current||eu.onOpen()}),onBlur:$e42e1063c40fb3ef$export$b9ecd428b558ff10(ee.onBlur,eu.onClose),onClick:$e42e1063c40fb3ef$export$b9ecd428b558ff10(ee.onClick,eu.onClose)})))}),ts="TooltipPortal",[tl,tu]=e1(ts,{forceMount:void 0}),$a093c7e1ec25a057$export$7b36b8f925ab7497=ee=>{let{__scopeTooltip:en,forceMount:er,children:eo,container:ei}=ee,eu=tr(ts,en);return(0,es.createElement)(tl,{scope:en,forceMount:er},(0,es.createElement)($921a889cee6df7e8$export$99c2b779aa4e8b8b,{present:er||eu.open},(0,es.createElement)(eX,{asChild:!0,container:ei},eo)))},tc="TooltipContent",td=(0,es.forwardRef)((ee,en)=>{let er=tu(tc,ee.__scopeTooltip),{forceMount:eo=er.forceMount,side:eu="top",...ec}=ee,ed=tr(tc,ee.__scopeTooltip);return(0,es.createElement)($921a889cee6df7e8$export$99c2b779aa4e8b8b,{present:eo||ed.open},ed.disableHoverableContent?(0,es.createElement)(tm,(0,ei.Z)({side:eu},ec,{ref:en})):(0,es.createElement)(tf,(0,ei.Z)({side:eu},ec,{ref:en})))}),tf=(0,es.forwardRef)((ee,en)=>{let er=tr(tc,ee.__scopeTooltip),eo=e9(tc,ee.__scopeTooltip),eu=(0,es.useRef)(null),ed=(0,ec.e)(en,eu),[ef,ep]=(0,es.useState)(null),{trigger:eh,onClose:em}=er,eg=eu.current,{onPointerInTransitChange:ex}=eo,ev=(0,es.useCallback)(()=>{ep(null),ex(!1)},[ex]),ey=(0,es.useCallback)((ee,en)=>{let er=ee.currentTarget,eo={x:ee.clientX,y:ee.clientY},ei=$a093c7e1ec25a057$var$getExitSideFromRect(eo,er.getBoundingClientRect()),es=$a093c7e1ec25a057$var$getPaddedExitPoints(eo,ei),eu=$a093c7e1ec25a057$var$getPointsFromRect(en.getBoundingClientRect()),ec=$a093c7e1ec25a057$var$getHull([...es,...eu]);ep(ec),ex(!0)},[ex]);return(0,es.useEffect)(()=>()=>ev(),[ev]),(0,es.useEffect)(()=>{if(eh&&eg){let handleTriggerLeave=ee=>ey(ee,eg),handleContentLeave=ee=>ey(ee,eh);return eh.addEventListener("pointerleave",handleTriggerLeave),eg.addEventListener("pointerleave",handleContentLeave),()=>{eh.removeEventListener("pointerleave",handleTriggerLeave),eg.removeEventListener("pointerleave",handleContentLeave)}}},[eh,eg,ey,ev]),(0,es.useEffect)(()=>{if(ef){let handleTrackPointerGrace=ee=>{let en=ee.target,er={x:ee.clientX,y:ee.clientY},eo=(null==eh?void 0:eh.contains(en))||(null==eg?void 0:eg.contains(en)),ei=!$a093c7e1ec25a057$var$isPointInPolygon(er,ef);eo?ev():ei&&(ev(),em())};return document.addEventListener("pointermove",handleTrackPointerGrace),()=>document.removeEventListener("pointermove",handleTrackPointerGrace)}},[eh,eg,ef,em,ev]),(0,es.createElement)(tm,(0,ei.Z)({},ee,{ref:ed}))}),[tp,th]=e1(e8,{isInside:!1}),tm=(0,es.forwardRef)((ee,en)=>{let{__scopeTooltip:er,children:eo,"aria-label":eu,onEscapeKeyDown:ec,onPointerDownOutside:ed,...ef}=ee,ep=tr(tc,er),eh=e4(er),{onClose:em}=ep;return(0,es.useEffect)(()=>(document.addEventListener(e3,em),()=>document.removeEventListener(e3,em)),[em]),(0,es.useEffect)(()=>{if(ep.trigger){let handleScroll=ee=>{let en=ee.target;null!=en&&en.contains(ep.trigger)&&em()};return window.addEventListener("scroll",handleScroll,{capture:!0}),()=>window.removeEventListener("scroll",handleScroll,{capture:!0})}},[ep.trigger,em]),(0,es.createElement)(eg,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:ec,onPointerDownOutside:ed,onFocusOutside:ee=>ee.preventDefault(),onDismiss:em},(0,es.createElement)(eq,(0,ei.Z)({"data-state":ep.stateAttribute},eh,ef,{ref:en,style:{...ef.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"}}),(0,es.createElement)(eQ.A4,null,eo),(0,es.createElement)(tp,{scope:er,isInside:!0},(0,es.createElement)(e0,{id:ep.contentId,role:"tooltip"},eu||eo))))}),tg="TooltipArrow",tx=(0,es.forwardRef)((ee,en)=>{let{__scopeTooltip:er,...eo}=ee,eu=e4(er),ec=th(tg,er);return ec.isInside?null:(0,es.createElement)(eY,(0,ei.Z)({},eu,eo,{ref:en}))});function $a093c7e1ec25a057$var$getExitSideFromRect(ee,en){let er=Math.abs(en.top-ee.y),eo=Math.abs(en.bottom-ee.y),ei=Math.abs(en.right-ee.x),es=Math.abs(en.left-ee.x);switch(Math.min(er,eo,ei,es)){case es:return"left";case ei:return"right";case er:return"top";case eo:return"bottom";default:throw Error("unreachable")}}function $a093c7e1ec25a057$var$getPaddedExitPoints(ee,en,er=5){let eo=[];switch(en){case"top":eo.push({x:ee.x-er,y:ee.y+er},{x:ee.x+er,y:ee.y+er});break;case"bottom":eo.push({x:ee.x-er,y:ee.y-er},{x:ee.x+er,y:ee.y-er});break;case"left":eo.push({x:ee.x+er,y:ee.y-er},{x:ee.x+er,y:ee.y+er});break;case"right":eo.push({x:ee.x-er,y:ee.y-er},{x:ee.x-er,y:ee.y+er})}return eo}function $a093c7e1ec25a057$var$getPointsFromRect(ee){let{top:en,right:er,bottom:eo,left:ei}=ee;return[{x:ei,y:en},{x:er,y:en},{x:er,y:eo},{x:ei,y:eo}]}function $a093c7e1ec25a057$var$isPointInPolygon(ee,en){let{x:er,y:eo}=ee,ei=!1;for(let ee=0,es=en.length-1;ee<en.length;es=ee++){let eu=en[ee].x,ec=en[ee].y,ed=en[es].x,ef=en[es].y,ep=ec>eo!=ef>eo&&er<(ed-eu)*(eo-ec)/(ef-ec)+eu;ep&&(ei=!ei)}return ei}function $a093c7e1ec25a057$var$getHull(ee){let en=ee.slice();return en.sort((ee,en)=>ee.x<en.x?-1:ee.x>en.x?1:ee.y<en.y?-1:ee.y>en.y?1:0),$a093c7e1ec25a057$var$getHullPresorted(en)}function $a093c7e1ec25a057$var$getHullPresorted(ee){if(ee.length<=1)return ee.slice();let en=[];for(let er=0;er<ee.length;er++){let eo=ee[er];for(;en.length>=2;){let ee=en[en.length-1],er=en[en.length-2];if((ee.x-er.x)*(eo.y-er.y)>=(ee.y-er.y)*(eo.x-er.x))en.pop();else break}en.push(eo)}en.pop();let er=[];for(let en=ee.length-1;en>=0;en--){let eo=ee[en];for(;er.length>=2;){let ee=er[er.length-1],en=er[er.length-2];if((ee.x-en.x)*(eo.y-en.y)>=(ee.y-en.y)*(eo.x-en.x))er.pop();else break}er.push(eo)}return(er.pop(),1===en.length&&1===er.length&&en[0].x===er[0].x&&en[0].y===er[0].y)?en:en.concat(er)}let tv=$a093c7e1ec25a057$export$f78649fb9ca566b8,ty=$a093c7e1ec25a057$export$28c660c63b792dea,t_=ti,tw=$a093c7e1ec25a057$export$7b36b8f925ab7497,tk=td,tC=tx},512:function(ee,en,er){"use strict";function r(ee){var en,er,eo="";if("string"==typeof ee||"number"==typeof ee)eo+=ee;else if("object"==typeof ee){if(Array.isArray(ee))for(en=0;en<ee.length;en++)ee[en]&&(er=r(ee[en]))&&(eo&&(eo+=" "),eo+=er);else for(en in ee)ee[en]&&(eo&&(eo+=" "),eo+=en)}return eo}function clsx(){for(var ee,en,er=0,eo="";er<arguments.length;)(ee=arguments[er++])&&(en=r(ee))&&(eo&&(eo+=" "),eo+=en);return eo}en.Z=clsx},7222:function(ee,en,er){"use strict";er.d(en,{ZW:function(){return es},eZ:function(){return ec},hV:function(){return ed}});var eo=er(1864),ei=er(3454),es="en-US",eu=ei.cwd();eo.join(eu,"public");var ec=Symbol.for("__nextra_internal__"),ed=new Set(["/404","/500"])}},function(ee){var __webpack_exec__=function(en){return ee(ee.s=en)};ee.O(0,[774,179],function(){return __webpack_exec__(2327),__webpack_exec__(9974)}),_N_E=ee.O()}]); \ No newline at end of file diff --git a/_next/static/chunks/pages/get-started-413d0a18e7d7ff00.js b/_next/static/chunks/pages/get-started-413d0a18e7d7ff00.js deleted file mode 100644 index bf39bb1..0000000 --- a/_next/static/chunks/pages/get-started-413d0a18e7d7ff00.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[395],{3725:function(e,s,n){"use strict";n.d(s,{x:function(){return d}});var i=n(7294),t=n(4184),r=n.n(t),o=n(8426);let l={display:{type:"enum",values:["none","inline","inline-block","block"],default:void 0,responsive:!0}};var a=n(3843),c=n(134),h=n(6776);let d=i.forwardRef((e,s)=>{let{rest:n,...t}=(0,a.FY)(e),{rest:d,...p}=(0,c.F8)(n),{className:x,asChild:u,display:j=l.display.default,...k}=d,v=u?o.g7:"div";return i.createElement(v,{...k,ref:s,className:r()("rt-Box",x,(0,h.g)(j,"rt-r-display"),(0,c.yt)(p),(0,a.we)(t))})});d.displayName="Box"},4764:function(e,s,n){"use strict";n.d(s,{$:function(){return h}});var i=n(7294),t=n(4184),r=n.n(t);let o={size:{type:"enum",values:["1","2","3"],default:"3",responsive:!0},display:{type:"enum",values:["none","block"],default:void 0,responsive:!0}};var l=n(3843),a=n(134),c=n(6776);let h=i.forwardRef((e,s)=>{let{rest:n,...t}=(0,l.FY)(e),{rest:h,...d}=(0,a.F8)(n),{className:p,size:x=o.size.default,display:u=o.display.default,...j}=h;return i.createElement("section",{...j,ref:s,className:r()("rt-Section",p,(0,c.g)(x,"rt-r-size"),(0,c.g)(u,"rt-r-display"),(0,a.yt)(d),(0,l.we)(t))})});h.displayName="Section"},4207:function(e,s,n){"use strict";n.d(s,{x:function(){return j}});var i=n(7294),t=n(4184),r=n.n(t),o=n(8426),l=n(3416),a=n(617),c=n(7361),h=n(8291),d=n(6679);let p={size:{type:"enum",values:["1","2","3","4","5","6","7","8","9"],default:void 0,responsive:!0},weight:l.b,align:a.L,trim:c.a,color:h.m,highContrast:d.B};var x=n(3843),u=n(6776);let j=i.forwardRef((e,s)=>{let{rest:n,...t}=(0,x.FY)(e),{children:l,className:a,asChild:c=!1,as:h="span",size:d=p.size.default,weight:j=p.weight.default,align:k=p.align.default,trim:v=p.trim.default,color:y=p.color.default,highContrast:g=p.highContrast.default,...f}=n;return i.createElement(o.g7,{"data-accent-color":y,...f,ref:s,className:r()("rt-Text",a,(0,u.g)(d,"rt-r-size"),(0,u.g)(j,"rt-r-weight"),(0,u.g)(k,"rt-r-ta"),(0,u.g)(v,"rt-r-lt"),{"rt-high-contrast":g},(0,x.we)(t))},c?l:i.createElement(h,null,l))});j.displayName="Text"},6776:function(e,s,n){"use strict";function withBreakpoints(e,s="",n){var i,t,r,o;let l=[];if("object"==typeof e){for(let r of Object.keys(e))if(r in e){let o=null===(i=e[r])||void 0===i?void 0:i.toString(),a=null==o?void 0:o.startsWith("-"),c=""===s?"":"-",h=a?`-${s}`:s,d=a?null==o?void 0:o.substring(1):o;if(void 0===d)continue;let p=null!==(t=null==n?void 0:n[d])&&void 0!==t?t:d,x="initial"===r?`${h}${c}${p}`:`${r}:${h}${c}${p}`;l.push(x)}}if("string"==typeof e){let i=e.startsWith("-"),t=""===s?"":"-",o=i?`-${s}`:s,a=i?e.substring(1):e,c=null!==(r=null==n?void 0:n[a])&&void 0!==r?r:a;l.push(`${o}${t}${c}`)}if("boolean"==typeof e){let i=""===s?"":"-",t=e.toString(),r=null!==(o=null==n?void 0:n[t])&&void 0!==o?o:t;l.push(`${s}${i}${r}`)}return l.join(" ")}n.d(s,{g:function(){return withBreakpoints}})},8291:function(e,s,n){"use strict";n.d(s,{m:function(){return t}});var i=n(269);let t={type:"enum",values:i.yT.accentColor.values,default:void 0}},6679:function(e,s,n){"use strict";n.d(s,{B:function(){return i}});let i={type:"boolean",default:void 0}},134:function(e,s,n){"use strict";n.d(s,{F8:function(){return extractLayoutProps},yt:function(){return withLayoutProps}});var i=n(6776);let t=["0","1","2","3","4","5","6","7","8","9"],r=["auto","0","50%","100%"],o=["auto","min-content","max-content","100%","0","1","2","3","4","5","6","7","8","9"],l={p:{type:"enum",values:t,default:void 0,responsive:!0},px:{type:"enum",values:t,default:void 0,responsive:!0},py:{type:"enum",values:t,default:void 0,responsive:!0},pt:{type:"enum",values:t,default:void 0,responsive:!0},pr:{type:"enum",values:t,default:void 0,responsive:!0},pb:{type:"enum",values:t,default:void 0,responsive:!0},pl:{type:"enum",values:t,default:void 0,responsive:!0},position:{type:"enum",values:["static","relative","absolute","fixed","sticky"],default:void 0,responsive:!0},inset:{type:"enum",values:r,default:void 0,responsive:!0},top:{type:"enum",values:r,default:void 0,responsive:!0},right:{type:"enum",values:r,default:void 0,responsive:!0},bottom:{type:"enum",values:r,default:void 0,responsive:!0},left:{type:"enum",values:r,default:void 0,responsive:!0},width:{type:"enum",values:o,default:void 0,responsive:!0},height:{type:"enum",values:o,default:void 0,responsive:!0},shrink:{type:"enum",values:["0","1"],default:void 0,responsive:!0},grow:{type:"enum",values:["0","1"],default:void 0,responsive:!0}};function extractLayoutProps(e){let{rest:s,...n}=function(e){let{p:s=l.p.default,px:n=l.px.default,py:i=l.py.default,pt:t=l.pt.default,pr:r=l.pr.default,pb:o=l.pb.default,pl:a=l.pl.default,...c}=e;return{p:s,px:n,py:i,pt:t,pr:r,pb:o,pl:a,rest:c}}(e),{position:i=l.position.default,width:t=l.width.default,height:r=l.height.default,inset:o=l.inset.default,top:a=l.top.default,bottom:c=l.bottom.default,left:h=l.left.default,right:d=l.right.default,shrink:p=l.shrink.default,grow:x=l.grow.default,...u}=s;return{...n,position:i,width:t,height:r,inset:o,top:a,bottom:c,left:h,right:d,shrink:p,grow:x,rest:u}}function withLayoutProps(e){return[[(0,i.g)(e.p,"rt-r-p"),(0,i.g)(e.px,"rt-r-px"),(0,i.g)(e.py,"rt-r-py"),(0,i.g)(e.pt,"rt-r-pt"),(0,i.g)(e.pr,"rt-r-pr"),(0,i.g)(e.pb,"rt-r-pb"),(0,i.g)(e.pl,"rt-r-pl")].filter(Boolean).join(" "),(0,i.g)(e.position,"rt-r-position"),(0,i.g)(e.shrink,"rt-r-fs"),(0,i.g)(e.grow,"rt-r-fg"),(0,i.g)(e.width,"rt-r-w"),(0,i.g)(e.height,"rt-r-h"),(0,i.g)(e.inset,"rt-r-inset"),(0,i.g)(e.top,"rt-r-top"),(0,i.g)(e.bottom,"rt-r-bottom"),(0,i.g)(e.left,"rt-r-left"),(0,i.g)(e.right,"rt-r-right")].filter(Boolean).join(" ")}},7361:function(e,s,n){"use strict";n.d(s,{a:function(){return i}});let i={type:"enum",values:["normal","start","end","both"],default:void 0,responsive:!0}},3843:function(e,s,n){"use strict";n.d(s,{FY:function(){return extractMarginProps},we:function(){return withMarginProps}});var i=n(6776);let t=["auto","0","1","2","3","4","5","6","7","8","9","-1","-2","-3","-4","-5","-6","-7","-8","-9"],r={m:{type:"enum",values:t,default:void 0,responsive:!0},mx:{type:"enum",values:t,default:void 0,responsive:!0},my:{type:"enum",values:t,default:void 0,responsive:!0},mt:{type:"enum",values:t,default:void 0,responsive:!0},mr:{type:"enum",values:t,default:void 0,responsive:!0},mb:{type:"enum",values:t,default:void 0,responsive:!0},ml:{type:"enum",values:t,default:void 0,responsive:!0}};function extractMarginProps(e){let{m:s=r.m.default,mx:n=r.mx.default,my:i=r.my.default,mt:t=r.mt.default,mr:o=r.mr.default,mb:l=r.mb.default,ml:a=r.ml.default,...c}=e;return{m:s,mx:n,my:i,mt:t,mr:o,mb:l,ml:a,rest:c}}function withMarginProps(e){return[(0,i.g)(e.m,"rt-r-m"),(0,i.g)(e.mx,"rt-r-mx"),(0,i.g)(e.my,"rt-r-my"),(0,i.g)(e.mt,"rt-r-mt"),(0,i.g)(e.mr,"rt-r-mr"),(0,i.g)(e.mb,"rt-r-mb"),(0,i.g)(e.ml,"rt-r-ml")].filter(Boolean).join(" ")}},617:function(e,s,n){"use strict";n.d(s,{L:function(){return i}});let i={type:"enum",values:["left","center","right"],default:void 0,responsive:!0}},3416:function(e,s,n){"use strict";n.d(s,{b:function(){return i}});let i={type:"enum",values:["light","regular","medium","bold"],default:void 0,responsive:!0}},2025:function(e,s,n){(window.__NEXT_P=window.__NEXT_P||[]).push(["/get-started",function(){return n(6001)}])},6001:function(e,s,n){"use strict";n.r(s),n.d(s,{__toc:function(){return x},default:function(){return u}});var i=n(5893),t=n(2673),r=n(2643),o={src:"/docs/_next/static/media/korean-literary-home.472c664e.png",height:1471,width:1339,blurDataURL:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAICAMAAAAC2hU0AAAAYFBMVEX3+fmikUm7yaOQg1Tf4+zZ1Lp1dHF6eXOrnE7g3dHR18zQ1MbYzKqCgHzo7fLN1dCavc7z5KrM2N37+/uuo1ri3sXBuG/f28Dt8fj9/f+vpF29xJbT07CuxbW5rmLLwXpwhvdqAAAAG3RSTlP+4uDf3+LE3v7Frcr+4uTJ5f6x5eX///////45yfadAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAP0lEQVR4nAXBhwGAIBAAsUOBBxs2qm3/LU2ws4iIpW8ppe9EOefaqzAx5xgNulSoB7oALHTXdG/PyjB678P+A12wAvCdPhgwAAAAAElFTkSuQmCC",blurWidth:7,blurHeight:8},l={src:"/docs/_next/static/media/korean-literary-search.910e9347.png",height:1044,width:1463,blurDataURL:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAGCAMAAADJ2y/JAAAAWlBMVEVucHXd3tN/gIO2vqqxo3ivnG2yvprDxbzDvJe4urfHysyrq6yoqKvCwbbV28quq6Ts38FtXk1pa2+9q6TaxJN1dHKGk3BwglDQ0MG0vank2K3ay5bj3LbdzaAmbu44AAAAGXRSTlPM/c7YqKfX/v3RjtOKrdau/fur/dOn+vv+S+bZgQAAAAlwSFlzAAALEwAACxMBAJqcGAAAADpJREFUeJwFwQcCgCAMALEDGcWF2xb1/9804fSAZ+NozmzPHcVukVVnSr7U5Tcx6PI90hJjjSHEqf8BPsACaWeK0sEAAAAASUVORK5CYII=",blurWidth:8,blurHeight:6},a={src:"/docs/_next/static/media/korean-literary-work.7024ee8c.png",height:1481,width:1463,blurDataURL:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAMAAADz0U65AAAATlBMVEXd3+HO09rx8fJjbjvV3dzs8PLb392AgIT5+vvn6Orp6urV1dfV1tfa2tyboZ6doppoamjY3N53d3zw8/f///9zf1DHzMfFyMiHnnCJnm+M62oTAAAAE3RSTlO2tLf9+/3+1f7+uIH8fbm5l7KTUjTf0gAAAAlwSFlzAAALEwAACxMBAJqcGAAAAD9JREFUeJwdwYkRgDAIBMAjAYT4C/Hpv1FHd7ENvwOryv24ECBcK8cOBPfOQliu6dQIAlzdJRtKmpllwYhPm19X/QJPLYRFtAAAAABJRU5ErkJggg==",blurWidth:8,blurHeight:8},c=n(9013),h=n(4764),d=n(4207),p=n(3725);let x=[{depth:2,value:"Use Case",id:"use-case"},{depth:2,value:"Implementation",id:"implementation"},{depth:3,value:"Create a project",id:"create-a-project"},{depth:4,value:"Using a Github template",id:"using-a-github-template"},{depth:4,value:"Using git clone",id:"using-git-clone"},{depth:3,value:"Install dependencies",id:"install-dependencies"},{depth:3,value:"Create configuration file",id:"create-configuration-file"},{depth:3,value:"Ready to go!",id:"ready-to-go"},{depth:4,value:"Build process",id:"build-process"},{depth:3,value:"Browse your site",id:"browse-your-site"},{depth:4,value:"Home page",id:"home-page"},{depth:4,value:"Search page",id:"search-page"},{depth:4,value:"Work page",id:"work-page"}];function _createMdxContent(e){let s=Object.assign({h1:"h1",p:"p",h2:"h2",a:"a",h3:"h3",h4:"h4",ol:"ol",li:"li",em:"em",code:"code",pre:"pre",span:"span",ul:"ul",strong:"strong",img:"img"},(0,r.a)(),e.components);return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(s.h1,{children:"Create a Canopy Project"}),"\n",(0,i.jsx)(h.$,{size:"1",children:(0,i.jsx)(d.x,{size:"4",mt:"9",children:(0,i.jsx)(s.p,{children:"Have a project in mind? Let's get started! This guide will walk you through\nthe process of creating a basic Canopy IIIF project using a readily provided\nIIIF Collection."})})}),"\n",(0,i.jsx)(s.h2,{id:"use-case",children:"Use Case"}),"\n",(0,i.jsxs)(s.p,{children:["You are on a team at a university library seeking to create a digital exhibit for a ",(0,i.jsx)(s.a,{href:"https://content.lib.washington.edu/koreanweb/index.html",children:"Korean Literary"}),"\ncollection in your digital repository that is provided as a ",(0,i.jsx)(s.a,{href:"https://digitalcollections.lib.washington.edu/iiif/2/korean/manifest.json",children:"IIIF Collection"}),". You want to create\na discovery focused web site that allows users to search and browse the collection."]}),"\n",(0,i.jsx)(s.h2,{id:"implementation",children:"Implementation"}),"\n",(0,i.jsxs)(c.Rg,{children:[(0,i.jsx)(s.h3,{id:"create-a-project",children:"Create a project"}),(0,i.jsx)(s.h4,{id:"using-a-github-template",children:"Using a Github template"}),(0,i.jsx)(c.UW,{children:(0,i.jsxs)(s.p,{children:["This method requires a ",(0,i.jsx)(s.a,{href:"https://github.com/",children:"GitHub account"}),"; however, it\nshould be easier to follow for users of Canopy without a developer\nenvironment."]})}),(0,i.jsxs)(s.ol,{children:["\n",(0,i.jsxs)(s.li,{children:["Navigate to the ",(0,i.jsx)(s.a,{href:"https://github.com/canopy-iiif/canopy-iiif",children:"Canopy IIIF repository"})," in GitHub"]}),"\n",(0,i.jsxs)(s.li,{children:["Click the ",(0,i.jsx)(s.em,{children:'"Use this template"'})," button"]}),"\n",(0,i.jsxs)(s.li,{children:["Click the ",(0,i.jsx)(s.em,{children:'"Create a new repository"'})," button"]}),"\n",(0,i.jsx)(s.li,{children:"Select the account you want to own the repository"}),"\n",(0,i.jsx)(s.li,{children:"Enter a repository name and optional description"}),"\n",(0,i.jsxs)(s.li,{children:["Click the ",(0,i.jsx)(s.em,{children:'"Create repository"'})," button"]}),"\n"]}),(0,i.jsxs)(s.h4,{id:"using-git-clone",children:["Using ",(0,i.jsx)(s.code,{children:"git clone"})]}),(0,i.jsxs)(s.ol,{children:["\n",(0,i.jsx)(s.li,{children:"In your terminal, navigate to the a working directory where you want to create your project"}),"\n",(0,i.jsxs)(s.li,{children:["Clone the ",(0,i.jsx)(s.code,{children:"canopy-iiif/canopy-iiif"})," repository OR your Canopy repository instance"]}),"\n"]}),(0,i.jsx)(s.pre,{"data-language":"sh","data-theme":"default",hasCopyCode:!0,children:(0,i.jsxs)(s.code,{"data-language":"sh","data-theme":"default",children:[(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"cd"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"~/Projects"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"git"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"clone"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"git@github.com:canopy-iiif/canopy-iiif.git"})]})]})}),(0,i.jsx)(s.h3,{id:"install-dependencies",children:"Install dependencies"}),(0,i.jsx)(s.p,{children:"Navigate to your new project directory and install dependencies."}),(0,i.jsx)(s.pre,{"data-language":"sh","data-theme":"default",hasCopyCode:!0,children:(0,i.jsxs)(s.code,{"data-language":"sh","data-theme":"default",children:[(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"cd"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"canopy-iiif"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"npm"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"install"})]})]})}),(0,i.jsx)(s.h3,{id:"create-configuration-file",children:"Create configuration file"}),(0,i.jsxs)(s.p,{children:["Copy the example configuration file and update the ",(0,i.jsx)(s.code,{children:"prod"})," and ",(0,i.jsx)(s.code,{children:"dev"})," values with your IIIF Collection URL. See ",(0,i.jsx)(s.a,{href:"/configuration",children:"Configuration"})," for detailed documentation."]}),(0,i.jsx)(s.pre,{"data-language":"sh","data-theme":"default",hasCopyCode:!0,children:(0,i.jsx)(s.code,{"data-language":"sh","data-theme":"default",children:(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"cp"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"config/canopy.sample.json"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"config/canopy.json"})]})})}),(0,i.jsxs)(s.p,{children:["In this example we will use the ",(0,i.jsx)(s.a,{href:"https://digitalcollections.lib.washington.edu/digital/collection/korean",children:"Korean Literary Collection"})," IIIF Collection URL provided by University of Washington Libraries."]}),(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:(0,i.jsx)(s.code,{children:"collection"})})," is the IIIF Collection URI to be used as the root of your Canopy IIIF site"]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:(0,i.jsx)(s.code,{children:"featured"})})," array is a list of Manifest URIs that will be promoted thoughout your Canopy IIIF site"]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:(0,i.jsx)(s.code,{children:"metadata"})})," array is a list of metadata labels that ",(0,i.jsx)(s.strong,{children:"match"})," string values in your Manifest URI metadata entries to be used for discovery purposes"]}),"\n"]}),(0,i.jsx)(s.pre,{"data-language":"json","data-theme":"default",filename:"config/canopy.json",hasCopyCode:!0,children:(0,i.jsxs)(s.code,{"data-language":"json","data-theme":"default",children:[(0,i.jsx)(s.span,{className:"line",children:(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"{"})}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:'"prod"'}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-punctuation)"},children:":"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" {"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:'"collection"'}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-punctuation)"},children:":"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"https://digitalcollections.lib.washington.edu/iiif/2/korean/manifest.json"'}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-punctuation)"},children:","})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:'"featured"'}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-punctuation)"},children:":"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" ["})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"https://cdm16786.contentdm.oclc.org/iiif/korean:138/manifest.json"'})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" ]"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-punctuation)"},children:","})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:'"metadata"'}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-punctuation)"},children:":"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" ["}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"Author"'}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-punctuation)"},children:","}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"Place of Publication"'}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"]"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" }"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-punctuation)"},children:","})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:'"dev"'}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-punctuation)"},children:":"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" {"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:'"collection"'}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-punctuation)"},children:":"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"https://digitalcollections.lib.washington.edu/iiif/2/korean/manifest.json"'}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-punctuation)"},children:","})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:'"featured"'}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-punctuation)"},children:":"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" ["})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"https://cdm16786.contentdm.oclc.org/iiif/korean:138/manifest.json"'})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" ]"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-punctuation)"},children:","})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:'"metadata"'}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-punctuation)"},children:":"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" ["}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"Author"'}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-punctuation)"},children:","}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"Place of Publication"'}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"]"})]}),"\n",(0,i.jsx)(s.span,{className:"line",children:(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" }"})}),"\n",(0,i.jsx)(s.span,{className:"line",children:(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"}"})})]})}),(0,i.jsxs)(s.p,{children:["See ",(0,i.jsx)(s.a,{href:"/configuration",children:"Options"})," for more information regarding configuration."]}),(0,i.jsx)(s.h3,{id:"ready-to-go",children:"Ready to go!"}),(0,i.jsx)(c.UW,{children:(0,i.jsx)(s.p,{children:"If you are using GitHub, you can skip this step and run Canopy without a\ndeveloper environment directly using GitHub Pages."})}),(0,i.jsx)(s.p,{children:"Now that you have a project and configuration set, you can run Canopy IIIF."}),(0,i.jsx)(s.pre,{"data-language":"sh","data-theme":"default",hasCopyCode:!0,children:(0,i.jsx)(s.code,{"data-language":"sh","data-theme":"default",children:(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"npm"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"run"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"dev"})]})})}),(0,i.jsx)(s.h4,{id:"build-process",children:"Build process"}),(0,i.jsx)(s.p,{children:"The build process may take a few minutes depending on the size of your IIIF Collection and provider response times. A Collection of ~100 items should build in 30 seconds or less."}),(0,i.jsxs)(s.ol,{children:["\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Building"})," - Canopy retrieves the source IIIF Collection"]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Create Manifest listing"})," - Canopy retrives all IIIF Manifests in the Collection"]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Create facets as IIIF Collections"})," - Canopy anaylzes the Manifests and creates IIIF Collections for each unique metadata label and value"]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Build search entries"})," - Canopy is creates search entries for each Manifest from descriptive metadta"]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Ready \uD83D\uDE80"})," - Canopy is ready to go!"]}),"\n"]}),(0,i.jsx)(s.pre,{"data-language":"bash","data-theme":"default",children:(0,i.jsxs)(s.code,{"data-language":"bash","data-theme":"default",children:[(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"Building"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"Canopy"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"from"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"IIIF"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"Collection..."})]}),"\n",(0,i.jsx)(s.span,{className:"line",children:(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"https://digitalcollections.lib.washington.edu/iiif/2/korean/manifest.json"})}),"\n",(0,i.jsx)(s.span,{className:"line",children:" "}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"Creating"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"Manifest"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"listing..."})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"Aggregating"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"135"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"Manifest"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"("}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"s"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:") "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"in"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"14"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"chunk"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"("}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"s"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:")"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"..."})]}),"\n",(0,i.jsx)(s.span,{className:"line",children:" "}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"Chunk"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" (1/14)"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"✓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://cdm16786.contentdm.oclc.org/iiif/korean:560/manifest.json"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"➜"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"200"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"✓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://cdm16786.contentdm.oclc.org/iiif/korean:1494/manifest.json"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"➜"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"200"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"✓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://cdm16786.contentdm.oclc.org/iiif/korean:678/manifest.json"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"➜"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"200"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"✓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://cdm16786.contentdm.oclc.org/iiif/korean:983/manifest.json"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"➜"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"200"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"✓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://cdm16786.contentdm.oclc.org/iiif/korean:138/manifest.json"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"➜"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"200"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"✓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://cdm16786.contentdm.oclc.org/iiif/korean:314/manifest.json"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"➜"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"200"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"✓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://cdm16786.contentdm.oclc.org/iiif/korean:1105/manifest.json"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"➜"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"200"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"✓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://cdm16786.contentdm.oclc.org/iiif/korean:498/manifest.json"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"➜"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"200"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"✓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://cdm16786.contentdm.oclc.org/iiif/korean:839/manifest.json"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"➜"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"200"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"✓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://cdm16786.contentdm.oclc.org/iiif/korean:1363/manifest.json"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"➜"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"200"})]}),"\n",(0,i.jsx)(s.span,{className:"line",children:" "}),"\n",(0,i.jsx)(s.span,{className:"line",children:(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-comment)"},children:"## build continues..."})}),"\n",(0,i.jsx)(s.span,{className:"line",children:" "}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"Chunk"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" (14/14)"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"✓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://cdm16786.contentdm.oclc.org/iiif/korean:28181/manifest.json"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"➜"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"200"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"✓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://cdm16786.contentdm.oclc.org/iiif/korean:27749/manifest.json"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"➜"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"200"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"✓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://cdm16786.contentdm.oclc.org/iiif/korean:28140/manifest.json"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"➜"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"200"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"✓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://cdm16786.contentdm.oclc.org/iiif/korean:28280/manifest.json"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"➜"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"200"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"✓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://cdm16786.contentdm.oclc.org/iiif/korean:27976/manifest.json"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"➜"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"200"})]}),"\n",(0,i.jsx)(s.span,{className:"line",children:" "}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"135/135"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"Manifests"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"("}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"s"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:") "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"retrieved"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"successfully."})]}),"\n",(0,i.jsx)(s.span,{className:"line",children:" "}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"Creating"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"facets"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"as"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"IIIF"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"Collections..."})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"↓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"/api/facet/author/unidentified.json"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"↓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"/api/facet/author/kim-tong-in.json"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"↓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"/api/facet/author/chng-chi-yong-chong-chi-yong.json"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"↓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"/api/facet/author/yi-tae-jun.json"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"↓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"/api/facet/author/an-hoe-nam.json"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"↓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"/api/facet/author/im-hak-su.json"})]}),"\n",(0,i.jsx)(s.span,{className:"line",children:" "}),"\n",(0,i.jsx)(s.span,{className:"line",children:(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-comment)"},children:"## build continues..."})}),"\n",(0,i.jsx)(s.span,{className:"line",children:" "}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"Building"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"search"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"entries..."})]}),"\n",(0,i.jsx)(s.span,{className:"line",children:" "}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:".."}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:".Ready "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"\uD83D\uDE80"})]}),"\n",(0,i.jsx)(s.span,{className:"line",children:" "}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"▲"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"Next.js"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"13.5"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:".4"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"-"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"Local:"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"http://localhost:5001"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"-"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"Environments:"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:".env"})]})]})}),(0,i.jsx)(s.h3,{id:"browse-your-site",children:"Browse your site"}),(0,i.jsxs)(s.p,{children:["In your browser, navigate to ",(0,i.jsx)(s.a,{href:"http://localhost:5001",children:"http://localhost:5001"})," to view your Canopy IIIF site."]}),(0,i.jsx)(s.h4,{id:"home-page",children:"Home page"}),(0,i.jsx)(s.p,{children:"Content on the home page is geared towards discovery of your IIIF Collection. The home page will render a hero component for featured Manifests and a slider components for defined metadata labels and their most common values."}),(0,i.jsx)(p.x,{m:"9",my:"6",children:(0,i.jsx)(s.p,{children:(0,i.jsx)(s.img,{alt:"canopy home page",placeholder:"blur",src:o})})}),(0,i.jsx)(s.h4,{id:"search-page",children:"Search page"}),(0,i.jsxs)(s.p,{children:["All Manifests in your IIIF Collection are now represented as results at the ",(0,i.jsx)(s.strong,{children:"/search"})," route. In addition to full text search, results are filterable by defined metadata labels and available values. In the example ",(0,i.jsx)(s.em,{children:"Korean Literary Collection"}),", there are 135 items available for search. A query for ",(0,i.jsx)(s.strong,{children:(0,i.jsx)(s.em,{children:"poems"})})," returns 43 results."]}),(0,i.jsx)(p.x,{m:"9",my:"6",children:(0,i.jsx)(s.p,{children:(0,i.jsx)(s.img,{alt:"canopy search results for poems",placeholder:"blur",src:l})})}),(0,i.jsx)(s.h4,{id:"work-page",children:"Work page"}),(0,i.jsxs)(s.p,{children:["All Manifests in your IIIF Collection are now available as statically generated pages with a ",(0,i.jsx)(s.strong,{children:"/work/slug-generated-from-label"})," pattern. Each work represents a single Manifest, its descriptive metadata, and various other IIIF properties. ",(0,i.jsx)(s.a,{href:"https://samvera-labs.github.io/clover-iiif/",children:"Clover IIIF"})," is the defacto deep-zoom and A/V capable viewer in Canopy IIIF but other IIIF viewers can be easily configured."]}),(0,i.jsx)(p.x,{m:"9",my:"6",children:(0,i.jsx)(s.p,{children:(0,i.jsx)(s.img,{alt:"canopy work page for single result",placeholder:"blur",src:a})})})]})]})}var u=(0,t.j)({MDXContent:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{wrapper:s}=Object.assign({},(0,r.a)(),e.components);return s?(0,i.jsx)(s,{...e,children:(0,i.jsx)(_createMdxContent,{...e})}):_createMdxContent(e)},pageOpts:{filePath:"pages/get-started.mdx",route:"/get-started",title:"Create a Canopy Project",headings:x},pageNextRoute:"/get-started"})}},function(e){e.O(0,[673,774,888,179],function(){return e(e.s=2025)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/_next/static/chunks/pages/get-started-a019e99744cfb351.js b/_next/static/chunks/pages/get-started-a019e99744cfb351.js new file mode 100644 index 0000000..b678d59 --- /dev/null +++ b/_next/static/chunks/pages/get-started-a019e99744cfb351.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[395],{3725:function(e,s,n){"use strict";n.d(s,{x:function(){return d}});var i=n(7294),t=n(4184),r=n.n(t),o=n(8426);let l={display:{type:"enum",values:["none","inline","inline-block","block"],default:void 0,responsive:!0}};var a=n(3843),c=n(134),h=n(6776);let d=i.forwardRef((e,s)=>{let{rest:n,...t}=(0,a.FY)(e),{rest:d,...p}=(0,c.F8)(n),{className:x,asChild:u,display:j=l.display.default,...k}=d,v=u?o.g7:"div";return i.createElement(v,{...k,ref:s,className:r()("rt-Box",x,(0,h.g)(j,"rt-r-display"),(0,c.yt)(p),(0,a.we)(t))})});d.displayName="Box"},4764:function(e,s,n){"use strict";n.d(s,{$:function(){return h}});var i=n(7294),t=n(4184),r=n.n(t);let o={size:{type:"enum",values:["1","2","3"],default:"3",responsive:!0},display:{type:"enum",values:["none","block"],default:void 0,responsive:!0}};var l=n(3843),a=n(134),c=n(6776);let h=i.forwardRef((e,s)=>{let{rest:n,...t}=(0,l.FY)(e),{rest:h,...d}=(0,a.F8)(n),{className:p,size:x=o.size.default,display:u=o.display.default,...j}=h;return i.createElement("section",{...j,ref:s,className:r()("rt-Section",p,(0,c.g)(x,"rt-r-size"),(0,c.g)(u,"rt-r-display"),(0,a.yt)(d),(0,l.we)(t))})});h.displayName="Section"},4207:function(e,s,n){"use strict";n.d(s,{x:function(){return j}});var i=n(7294),t=n(4184),r=n.n(t),o=n(8426),l=n(3416),a=n(617),c=n(7361),h=n(8291),d=n(6679);let p={size:{type:"enum",values:["1","2","3","4","5","6","7","8","9"],default:void 0,responsive:!0},weight:l.b,align:a.L,trim:c.a,color:h.m,highContrast:d.B};var x=n(3843),u=n(6776);let j=i.forwardRef((e,s)=>{let{rest:n,...t}=(0,x.FY)(e),{children:l,className:a,asChild:c=!1,as:h="span",size:d=p.size.default,weight:j=p.weight.default,align:k=p.align.default,trim:v=p.trim.default,color:y=p.color.default,highContrast:g=p.highContrast.default,...f}=n;return i.createElement(o.g7,{"data-accent-color":y,...f,ref:s,className:r()("rt-Text",a,(0,u.g)(d,"rt-r-size"),(0,u.g)(j,"rt-r-weight"),(0,u.g)(k,"rt-r-ta"),(0,u.g)(v,"rt-r-lt"),{"rt-high-contrast":g},(0,x.we)(t))},c?l:i.createElement(h,null,l))});j.displayName="Text"},6776:function(e,s,n){"use strict";function withBreakpoints(e,s="",n){var i,t,r,o;let l=[];if("object"==typeof e){for(let r of Object.keys(e))if(r in e){let o=null===(i=e[r])||void 0===i?void 0:i.toString(),a=null==o?void 0:o.startsWith("-"),c=""===s?"":"-",h=a?`-${s}`:s,d=a?null==o?void 0:o.substring(1):o;if(void 0===d)continue;let p=null!==(t=null==n?void 0:n[d])&&void 0!==t?t:d,x="initial"===r?`${h}${c}${p}`:`${r}:${h}${c}${p}`;l.push(x)}}if("string"==typeof e){let i=e.startsWith("-"),t=""===s?"":"-",o=i?`-${s}`:s,a=i?e.substring(1):e,c=null!==(r=null==n?void 0:n[a])&&void 0!==r?r:a;l.push(`${o}${t}${c}`)}if("boolean"==typeof e){let i=""===s?"":"-",t=e.toString(),r=null!==(o=null==n?void 0:n[t])&&void 0!==o?o:t;l.push(`${s}${i}${r}`)}return l.join(" ")}n.d(s,{g:function(){return withBreakpoints}})},8291:function(e,s,n){"use strict";n.d(s,{m:function(){return t}});var i=n(269);let t={type:"enum",values:i.yT.accentColor.values,default:void 0}},6679:function(e,s,n){"use strict";n.d(s,{B:function(){return i}});let i={type:"boolean",default:void 0}},134:function(e,s,n){"use strict";n.d(s,{F8:function(){return extractLayoutProps},yt:function(){return withLayoutProps}});var i=n(6776);let t=["0","1","2","3","4","5","6","7","8","9"],r=["auto","0","50%","100%"],o=["auto","min-content","max-content","100%","0","1","2","3","4","5","6","7","8","9"],l={p:{type:"enum",values:t,default:void 0,responsive:!0},px:{type:"enum",values:t,default:void 0,responsive:!0},py:{type:"enum",values:t,default:void 0,responsive:!0},pt:{type:"enum",values:t,default:void 0,responsive:!0},pr:{type:"enum",values:t,default:void 0,responsive:!0},pb:{type:"enum",values:t,default:void 0,responsive:!0},pl:{type:"enum",values:t,default:void 0,responsive:!0},position:{type:"enum",values:["static","relative","absolute","fixed","sticky"],default:void 0,responsive:!0},inset:{type:"enum",values:r,default:void 0,responsive:!0},top:{type:"enum",values:r,default:void 0,responsive:!0},right:{type:"enum",values:r,default:void 0,responsive:!0},bottom:{type:"enum",values:r,default:void 0,responsive:!0},left:{type:"enum",values:r,default:void 0,responsive:!0},width:{type:"enum",values:o,default:void 0,responsive:!0},height:{type:"enum",values:o,default:void 0,responsive:!0},shrink:{type:"enum",values:["0","1"],default:void 0,responsive:!0},grow:{type:"enum",values:["0","1"],default:void 0,responsive:!0}};function extractLayoutProps(e){let{rest:s,...n}=function(e){let{p:s=l.p.default,px:n=l.px.default,py:i=l.py.default,pt:t=l.pt.default,pr:r=l.pr.default,pb:o=l.pb.default,pl:a=l.pl.default,...c}=e;return{p:s,px:n,py:i,pt:t,pr:r,pb:o,pl:a,rest:c}}(e),{position:i=l.position.default,width:t=l.width.default,height:r=l.height.default,inset:o=l.inset.default,top:a=l.top.default,bottom:c=l.bottom.default,left:h=l.left.default,right:d=l.right.default,shrink:p=l.shrink.default,grow:x=l.grow.default,...u}=s;return{...n,position:i,width:t,height:r,inset:o,top:a,bottom:c,left:h,right:d,shrink:p,grow:x,rest:u}}function withLayoutProps(e){return[[(0,i.g)(e.p,"rt-r-p"),(0,i.g)(e.px,"rt-r-px"),(0,i.g)(e.py,"rt-r-py"),(0,i.g)(e.pt,"rt-r-pt"),(0,i.g)(e.pr,"rt-r-pr"),(0,i.g)(e.pb,"rt-r-pb"),(0,i.g)(e.pl,"rt-r-pl")].filter(Boolean).join(" "),(0,i.g)(e.position,"rt-r-position"),(0,i.g)(e.shrink,"rt-r-fs"),(0,i.g)(e.grow,"rt-r-fg"),(0,i.g)(e.width,"rt-r-w"),(0,i.g)(e.height,"rt-r-h"),(0,i.g)(e.inset,"rt-r-inset"),(0,i.g)(e.top,"rt-r-top"),(0,i.g)(e.bottom,"rt-r-bottom"),(0,i.g)(e.left,"rt-r-left"),(0,i.g)(e.right,"rt-r-right")].filter(Boolean).join(" ")}},7361:function(e,s,n){"use strict";n.d(s,{a:function(){return i}});let i={type:"enum",values:["normal","start","end","both"],default:void 0,responsive:!0}},3843:function(e,s,n){"use strict";n.d(s,{FY:function(){return extractMarginProps},we:function(){return withMarginProps}});var i=n(6776);let t=["auto","0","1","2","3","4","5","6","7","8","9","-1","-2","-3","-4","-5","-6","-7","-8","-9"],r={m:{type:"enum",values:t,default:void 0,responsive:!0},mx:{type:"enum",values:t,default:void 0,responsive:!0},my:{type:"enum",values:t,default:void 0,responsive:!0},mt:{type:"enum",values:t,default:void 0,responsive:!0},mr:{type:"enum",values:t,default:void 0,responsive:!0},mb:{type:"enum",values:t,default:void 0,responsive:!0},ml:{type:"enum",values:t,default:void 0,responsive:!0}};function extractMarginProps(e){let{m:s=r.m.default,mx:n=r.mx.default,my:i=r.my.default,mt:t=r.mt.default,mr:o=r.mr.default,mb:l=r.mb.default,ml:a=r.ml.default,...c}=e;return{m:s,mx:n,my:i,mt:t,mr:o,mb:l,ml:a,rest:c}}function withMarginProps(e){return[(0,i.g)(e.m,"rt-r-m"),(0,i.g)(e.mx,"rt-r-mx"),(0,i.g)(e.my,"rt-r-my"),(0,i.g)(e.mt,"rt-r-mt"),(0,i.g)(e.mr,"rt-r-mr"),(0,i.g)(e.mb,"rt-r-mb"),(0,i.g)(e.ml,"rt-r-ml")].filter(Boolean).join(" ")}},617:function(e,s,n){"use strict";n.d(s,{L:function(){return i}});let i={type:"enum",values:["left","center","right"],default:void 0,responsive:!0}},3416:function(e,s,n){"use strict";n.d(s,{b:function(){return i}});let i={type:"enum",values:["light","regular","medium","bold"],default:void 0,responsive:!0}},2025:function(e,s,n){(window.__NEXT_P=window.__NEXT_P||[]).push(["/get-started",function(){return n(6001)}])},6001:function(e,s,n){"use strict";n.r(s),n.d(s,{__toc:function(){return x},default:function(){return u}});var i=n(5893),t=n(2673),r=n(2643),o={src:"/docs/_next/static/media/korean-literary-home.472c664e.png",height:1471,width:1339,blurDataURL:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAICAMAAAAC2hU0AAAAYFBMVEX3+fmikUm7yaOQg1Tf4+zZ1Lp1dHF6eXOrnE7g3dHR18zQ1MbYzKqCgHzo7fLN1dCavc7z5KrM2N37+/uuo1ri3sXBuG/f28Dt8fj9/f+vpF29xJbT07CuxbW5rmLLwXpwhvdqAAAAG3RSTlP+4uDf3+LE3v7Frcr+4uTJ5f6x5eX///////45yfadAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAP0lEQVR4nAXBhwGAIBAAsUOBBxs2qm3/LU2ws4iIpW8ppe9EOefaqzAx5xgNulSoB7oALHTXdG/PyjB678P+A12wAvCdPhgwAAAAAElFTkSuQmCC",blurWidth:7,blurHeight:8},l={src:"/docs/_next/static/media/korean-literary-search.910e9347.png",height:1044,width:1463,blurDataURL:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAGCAMAAADJ2y/JAAAAWlBMVEVucHXd3tN/gIO2vqqxo3ivnG2yvprDxbzDvJe4urfHysyrq6yoqKvCwbbV28quq6Ts38FtXk1pa2+9q6TaxJN1dHKGk3BwglDQ0MG0vank2K3ay5bj3LbdzaAmbu44AAAAGXRSTlPM/c7YqKfX/v3RjtOKrdau/fur/dOn+vv+S+bZgQAAAAlwSFlzAAALEwAACxMBAJqcGAAAADpJREFUeJwFwQcCgCAMALEDGcWF2xb1/9804fSAZ+NozmzPHcVukVVnSr7U5Tcx6PI90hJjjSHEqf8BPsACaWeK0sEAAAAASUVORK5CYII=",blurWidth:8,blurHeight:6},a={src:"/docs/_next/static/media/korean-literary-work.7024ee8c.png",height:1481,width:1463,blurDataURL:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAMAAADz0U65AAAATlBMVEXd3+HO09rx8fJjbjvV3dzs8PLb392AgIT5+vvn6Orp6urV1dfV1tfa2tyboZ6doppoamjY3N53d3zw8/f///9zf1DHzMfFyMiHnnCJnm+M62oTAAAAE3RSTlO2tLf9+/3+1f7+uIH8fbm5l7KTUjTf0gAAAAlwSFlzAAALEwAACxMBAJqcGAAAAD9JREFUeJwdwYkRgDAIBMAjAYT4C/Hpv1FHd7ENvwOryv24ECBcK8cOBPfOQliu6dQIAlzdJRtKmpllwYhPm19X/QJPLYRFtAAAAABJRU5ErkJggg==",blurWidth:8,blurHeight:8},c=n(9013),h=n(4764),d=n(4207),p=n(3725);let x=[{depth:2,value:"Use Case",id:"use-case"},{depth:2,value:"Implementation",id:"implementation"},{depth:3,value:"Create a project",id:"create-a-project"},{depth:4,value:"Using a Github template",id:"using-a-github-template"},{depth:4,value:"Using git clone",id:"using-git-clone"},{depth:3,value:"Install dependencies",id:"install-dependencies"},{depth:3,value:"Create configuration file",id:"create-configuration-file"},{depth:3,value:"Ready to go!",id:"ready-to-go"},{depth:4,value:"Build process",id:"build-process"},{depth:3,value:"Browse your site",id:"browse-your-site"},{depth:4,value:"Home page",id:"home-page"},{depth:4,value:"Search page",id:"search-page"},{depth:4,value:"Work page",id:"work-page"}];function _createMdxContent(e){let s=Object.assign({h1:"h1",p:"p",a:"a",img:"img",h2:"h2",h3:"h3",h4:"h4",ol:"ol",li:"li",em:"em",code:"code",pre:"pre",span:"span",ul:"ul",strong:"strong"},(0,r.a)(),e.components);return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(s.h1,{children:"Create a Canopy Project"}),"\n",(0,i.jsx)(h.$,{size:"1",children:(0,i.jsx)(d.x,{size:"4",mt:"9",children:(0,i.jsx)(s.p,{children:"Have a project in mind? Let's get started! This guide will walk you through\nthe process of creating a basic Canopy IIIF project using a readily provided\nIIIF Collection."})})}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.a,{href:"https://stackblitz.com/fork/github/canopy-iiif/canopy-iiif?startScript=dev",children:(0,i.jsx)(s.img,{src:"https://developer.stackblitz.com/img/open_in_stackblitz_small.svg",alt:"Open in StackBlitz"})})}),"\n",(0,i.jsx)(s.h2,{id:"use-case",children:"Use Case"}),"\n",(0,i.jsxs)(s.p,{children:["You are on a team at a university library seeking to create a digital exhibit for a ",(0,i.jsx)(s.a,{href:"https://content.lib.washington.edu/koreanweb/index.html",children:"Korean Literary"}),"\ncollection in your digital repository that is provided as a ",(0,i.jsx)(s.a,{href:"https://digitalcollections.lib.washington.edu/iiif/2/korean/manifest.json",children:"IIIF Collection"}),". You want to create\na discovery focused web site that allows users to search and browse the collection."]}),"\n",(0,i.jsx)(s.h2,{id:"implementation",children:"Implementation"}),"\n",(0,i.jsxs)(c.Rg,{children:[(0,i.jsx)(s.h3,{id:"create-a-project",children:"Create a project"}),(0,i.jsx)(s.h4,{id:"using-a-github-template",children:"Using a Github template"}),(0,i.jsx)(c.UW,{children:(0,i.jsxs)(s.p,{children:["This method requires a ",(0,i.jsx)(s.a,{href:"https://github.com/",children:"GitHub account"}),"; however, it\nshould be easier to follow for users of Canopy without a developer\nenvironment."]})}),(0,i.jsxs)(s.ol,{children:["\n",(0,i.jsxs)(s.li,{children:["Navigate to the ",(0,i.jsx)(s.a,{href:"https://github.com/canopy-iiif/canopy-iiif",children:"Canopy IIIF repository"})," in GitHub"]}),"\n",(0,i.jsxs)(s.li,{children:["Click the ",(0,i.jsx)(s.em,{children:'"Use this template"'})," button"]}),"\n",(0,i.jsxs)(s.li,{children:["Click the ",(0,i.jsx)(s.em,{children:'"Create a new repository"'})," button"]}),"\n",(0,i.jsx)(s.li,{children:"Select the account you want to own the repository"}),"\n",(0,i.jsx)(s.li,{children:"Enter a repository name and optional description"}),"\n",(0,i.jsxs)(s.li,{children:["Click the ",(0,i.jsx)(s.em,{children:'"Create repository"'})," button"]}),"\n"]}),(0,i.jsxs)(s.h4,{id:"using-git-clone",children:["Using ",(0,i.jsx)(s.code,{children:"git clone"})]}),(0,i.jsxs)(s.ol,{children:["\n",(0,i.jsx)(s.li,{children:"In your terminal, navigate to the a working directory where you want to create your project"}),"\n",(0,i.jsxs)(s.li,{children:["Clone the ",(0,i.jsx)(s.code,{children:"canopy-iiif/canopy-iiif"})," repository OR your Canopy repository instance"]}),"\n"]}),(0,i.jsx)(s.pre,{"data-language":"sh","data-theme":"default",hasCopyCode:!0,children:(0,i.jsxs)(s.code,{"data-language":"sh","data-theme":"default",children:[(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"cd"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"~/Projects"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"git"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"clone"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"git@github.com:canopy-iiif/canopy-iiif.git"})]})]})}),(0,i.jsx)(s.h3,{id:"install-dependencies",children:"Install dependencies"}),(0,i.jsx)(s.p,{children:"Navigate to your new project directory and install dependencies."}),(0,i.jsx)(s.pre,{"data-language":"sh","data-theme":"default",hasCopyCode:!0,children:(0,i.jsxs)(s.code,{"data-language":"sh","data-theme":"default",children:[(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"cd"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"canopy-iiif"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"npm"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"install"})]})]})}),(0,i.jsx)(s.h3,{id:"create-configuration-file",children:"Create configuration file"}),(0,i.jsxs)(s.p,{children:["Copy the example configuration file and update the ",(0,i.jsx)(s.code,{children:"prod"})," and ",(0,i.jsx)(s.code,{children:"dev"})," values with your IIIF Collection URL. See ",(0,i.jsx)(s.a,{href:"/configuration",children:"Configuration"})," for detailed documentation."]}),(0,i.jsx)(s.pre,{"data-language":"sh","data-theme":"default",hasCopyCode:!0,children:(0,i.jsx)(s.code,{"data-language":"sh","data-theme":"default",children:(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"cp"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"config/canopy.sample.json"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"config/canopy.json"})]})})}),(0,i.jsxs)(s.p,{children:["In this example we will use the ",(0,i.jsx)(s.a,{href:"https://digitalcollections.lib.washington.edu/digital/collection/korean",children:"Korean Literary Collection"})," IIIF Collection URL provided by University of Washington Libraries."]}),(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:(0,i.jsx)(s.code,{children:"collection"})})," is the IIIF Collection URI to be used as the root of your Canopy IIIF site"]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:(0,i.jsx)(s.code,{children:"featured"})})," array is a list of Manifest URIs that will be promoted thoughout your Canopy IIIF site"]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:(0,i.jsx)(s.code,{children:"metadata"})})," array is a list of metadata labels that ",(0,i.jsx)(s.strong,{children:"match"})," string values in your Manifest URI metadata entries to be used for discovery purposes"]}),"\n"]}),(0,i.jsx)(s.pre,{"data-language":"json","data-theme":"default",filename:"config/canopy.json",hasCopyCode:!0,children:(0,i.jsxs)(s.code,{"data-language":"json","data-theme":"default",children:[(0,i.jsx)(s.span,{className:"line",children:(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"{"})}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:'"prod"'}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-punctuation)"},children:":"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" {"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:'"collection"'}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-punctuation)"},children:":"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"https://digitalcollections.lib.washington.edu/iiif/2/korean/manifest.json"'}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-punctuation)"},children:","})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:'"featured"'}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-punctuation)"},children:":"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" ["})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"https://cdm16786.contentdm.oclc.org/iiif/korean:138/manifest.json"'})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" ]"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-punctuation)"},children:","})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:'"metadata"'}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-punctuation)"},children:":"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" ["}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"Author"'}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-punctuation)"},children:","}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"Place of Publication"'}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"]"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" }"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-punctuation)"},children:","})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:'"dev"'}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-punctuation)"},children:":"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" {"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:'"collection"'}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-punctuation)"},children:":"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"https://digitalcollections.lib.washington.edu/iiif/2/korean/manifest.json"'}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-punctuation)"},children:","})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:'"featured"'}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-punctuation)"},children:":"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" ["})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"https://cdm16786.contentdm.oclc.org/iiif/korean:138/manifest.json"'})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" ]"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-punctuation)"},children:","})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:'"metadata"'}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-punctuation)"},children:":"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" ["}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"Author"'}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-punctuation)"},children:","}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"Place of Publication"'}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"]"})]}),"\n",(0,i.jsx)(s.span,{className:"line",children:(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" }"})}),"\n",(0,i.jsx)(s.span,{className:"line",children:(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"}"})})]})}),(0,i.jsxs)(s.p,{children:["See ",(0,i.jsx)(s.a,{href:"/configuration",children:"Options"})," for more information regarding configuration."]}),(0,i.jsx)(s.h3,{id:"ready-to-go",children:"Ready to go!"}),(0,i.jsx)(c.UW,{children:(0,i.jsx)(s.p,{children:"If you are using GitHub, you can skip this step and run Canopy without a\ndeveloper environment directly using GitHub Pages."})}),(0,i.jsx)(s.p,{children:"Now that you have a project and configuration set, you can run Canopy IIIF."}),(0,i.jsx)(s.pre,{"data-language":"sh","data-theme":"default",hasCopyCode:!0,children:(0,i.jsx)(s.code,{"data-language":"sh","data-theme":"default",children:(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"npm"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"run"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"dev"})]})})}),(0,i.jsx)(s.h4,{id:"build-process",children:"Build process"}),(0,i.jsx)(s.p,{children:"The build process may take a few minutes depending on the size of your IIIF Collection and provider response times. A Collection of ~100 items should build in 30 seconds or less."}),(0,i.jsxs)(s.ol,{children:["\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Building"})," - Canopy retrieves the source IIIF Collection"]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Create Manifest listing"})," - Canopy retrives all IIIF Manifests in the Collection"]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Create facets as IIIF Collections"})," - Canopy anaylzes the Manifests and creates IIIF Collections for each unique metadata label and value"]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Build search entries"})," - Canopy is creates search entries for each Manifest from descriptive metadta"]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Ready \uD83D\uDE80"})," - Canopy is ready to go!"]}),"\n"]}),(0,i.jsx)(s.pre,{"data-language":"bash","data-theme":"default",children:(0,i.jsxs)(s.code,{"data-language":"bash","data-theme":"default",children:[(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"Building"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"Canopy"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"from"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"IIIF"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"Collection..."})]}),"\n",(0,i.jsx)(s.span,{className:"line",children:(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"https://digitalcollections.lib.washington.edu/iiif/2/korean/manifest.json"})}),"\n",(0,i.jsx)(s.span,{className:"line",children:" "}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"Creating"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"Manifest"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"listing..."})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"Aggregating"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"135"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"Manifest"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"("}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"s"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:") "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"in"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"14"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"chunk"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"("}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"s"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:")"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"..."})]}),"\n",(0,i.jsx)(s.span,{className:"line",children:" "}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"Chunk"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" (1/14)"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"✓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://cdm16786.contentdm.oclc.org/iiif/korean:560/manifest.json"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"➜"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"200"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"✓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://cdm16786.contentdm.oclc.org/iiif/korean:1494/manifest.json"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"➜"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"200"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"✓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://cdm16786.contentdm.oclc.org/iiif/korean:678/manifest.json"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"➜"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"200"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"✓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://cdm16786.contentdm.oclc.org/iiif/korean:983/manifest.json"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"➜"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"200"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"✓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://cdm16786.contentdm.oclc.org/iiif/korean:138/manifest.json"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"➜"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"200"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"✓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://cdm16786.contentdm.oclc.org/iiif/korean:314/manifest.json"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"➜"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"200"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"✓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://cdm16786.contentdm.oclc.org/iiif/korean:1105/manifest.json"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"➜"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"200"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"✓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://cdm16786.contentdm.oclc.org/iiif/korean:498/manifest.json"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"➜"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"200"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"✓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://cdm16786.contentdm.oclc.org/iiif/korean:839/manifest.json"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"➜"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"200"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"✓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://cdm16786.contentdm.oclc.org/iiif/korean:1363/manifest.json"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"➜"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"200"})]}),"\n",(0,i.jsx)(s.span,{className:"line",children:" "}),"\n",(0,i.jsx)(s.span,{className:"line",children:(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-comment)"},children:"## build continues..."})}),"\n",(0,i.jsx)(s.span,{className:"line",children:" "}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"Chunk"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" (14/14)"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"✓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://cdm16786.contentdm.oclc.org/iiif/korean:28181/manifest.json"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"➜"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"200"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"✓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://cdm16786.contentdm.oclc.org/iiif/korean:27749/manifest.json"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"➜"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"200"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"✓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://cdm16786.contentdm.oclc.org/iiif/korean:28140/manifest.json"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"➜"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"200"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"✓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://cdm16786.contentdm.oclc.org/iiif/korean:28280/manifest.json"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"➜"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"200"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"✓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://cdm16786.contentdm.oclc.org/iiif/korean:27976/manifest.json"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"➜"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"200"})]}),"\n",(0,i.jsx)(s.span,{className:"line",children:" "}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"135/135"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"Manifests"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"("}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"s"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:") "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"retrieved"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"successfully."})]}),"\n",(0,i.jsx)(s.span,{className:"line",children:" "}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"Creating"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"facets"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"as"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"IIIF"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"Collections..."})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"↓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"/api/facet/author/unidentified.json"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"↓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"/api/facet/author/kim-tong-in.json"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"↓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"/api/facet/author/chng-chi-yong-chong-chi-yong.json"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"↓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"/api/facet/author/yi-tae-jun.json"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"↓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"/api/facet/author/an-hoe-nam.json"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"↓"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"/api/facet/author/im-hak-su.json"})]}),"\n",(0,i.jsx)(s.span,{className:"line",children:" "}),"\n",(0,i.jsx)(s.span,{className:"line",children:(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-comment)"},children:"## build continues..."})}),"\n",(0,i.jsx)(s.span,{className:"line",children:" "}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"Building"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"search"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"entries..."})]}),"\n",(0,i.jsx)(s.span,{className:"line",children:" "}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:".."}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:".Ready "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"\uD83D\uDE80"})]}),"\n",(0,i.jsx)(s.span,{className:"line",children:" "}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"▲"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"Next.js"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"13.5"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:".4"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"-"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"Local:"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"http://localhost:5001"})]}),"\n",(0,i.jsxs)(s.span,{className:"line",children:[(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"-"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"Environments:"}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:".env"})]})]})}),(0,i.jsx)(s.h3,{id:"browse-your-site",children:"Browse your site"}),(0,i.jsxs)(s.p,{children:["In your browser, navigate to ",(0,i.jsx)(s.a,{href:"http://localhost:5001",children:"http://localhost:5001"})," to view your Canopy IIIF site."]}),(0,i.jsx)(s.h4,{id:"home-page",children:"Home page"}),(0,i.jsx)(s.p,{children:"Content on the home page is geared towards discovery of your IIIF Collection. The home page will render a hero component for featured Manifests and a slider components for defined metadata labels and their most common values."}),(0,i.jsx)(p.x,{m:"9",my:"6",children:(0,i.jsx)(s.p,{children:(0,i.jsx)(s.img,{alt:"canopy home page",placeholder:"blur",src:o})})}),(0,i.jsx)(s.h4,{id:"search-page",children:"Search page"}),(0,i.jsxs)(s.p,{children:["All Manifests in your IIIF Collection are now represented as results at the ",(0,i.jsx)(s.strong,{children:"/search"})," route. In addition to full text search, results are filterable by defined metadata labels and available values. In the example ",(0,i.jsx)(s.em,{children:"Korean Literary Collection"}),", there are 135 items available for search. A query for ",(0,i.jsx)(s.strong,{children:(0,i.jsx)(s.em,{children:"poems"})})," returns 43 results."]}),(0,i.jsx)(p.x,{m:"9",my:"6",children:(0,i.jsx)(s.p,{children:(0,i.jsx)(s.img,{alt:"canopy search results for poems",placeholder:"blur",src:l})})}),(0,i.jsx)(s.h4,{id:"work-page",children:"Work page"}),(0,i.jsxs)(s.p,{children:["All Manifests in your IIIF Collection are now available as statically generated pages with a ",(0,i.jsx)(s.strong,{children:"/work/slug-generated-from-label"})," pattern. Each work represents a single Manifest, its descriptive metadata, and various other IIIF properties. ",(0,i.jsx)(s.a,{href:"https://samvera-labs.github.io/clover-iiif/",children:"Clover IIIF"})," is the defacto deep-zoom and A/V capable viewer in Canopy IIIF but other IIIF viewers can be easily configured."]}),(0,i.jsx)(p.x,{m:"9",my:"6",children:(0,i.jsx)(s.p,{children:(0,i.jsx)(s.img,{alt:"canopy work page for single result",placeholder:"blur",src:a})})})]})]})}var u=(0,t.j)({MDXContent:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{wrapper:s}=Object.assign({},(0,r.a)(),e.components);return s?(0,i.jsx)(s,{...e,children:(0,i.jsx)(_createMdxContent,{...e})}):_createMdxContent(e)},pageOpts:{filePath:"pages/get-started.mdx",route:"/get-started",title:"Create a Canopy Project",headings:x},pageNextRoute:"/get-started"})}},function(e){e.O(0,[673,774,888,179],function(){return e(e.s=2025)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/_next/static/chunks/pages/stackblitz-a924ed426ec5c378.js b/_next/static/chunks/pages/stackblitz-a924ed426ec5c378.js new file mode 100644 index 0000000..786fe7d --- /dev/null +++ b/_next/static/chunks/pages/stackblitz-a924ed426ec5c378.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[900],{3725:function(e,t,s){"use strict";s.d(t,{x:function(){return h}});var n=s(7294),i=s(4184),r=s.n(i),o=s(8426);let l={display:{type:"enum",values:["none","inline","inline-block","block"],default:void 0,responsive:!0}};var a=s(3843),c=s(134),d=s(6776);let h=n.forwardRef((e,t)=>{let{rest:s,...i}=(0,a.FY)(e),{rest:h,...p}=(0,c.F8)(s),{className:u,asChild:x,display:v=l.display.default,...y}=h,k=x?o.g7:"div";return n.createElement(k,{...y,ref:t,className:r()("rt-Box",u,(0,d.g)(v,"rt-r-display"),(0,c.yt)(p),(0,a.we)(i))})});h.displayName="Box"},4764:function(e,t,s){"use strict";s.d(t,{$:function(){return d}});var n=s(7294),i=s(4184),r=s.n(i);let o={size:{type:"enum",values:["1","2","3"],default:"3",responsive:!0},display:{type:"enum",values:["none","block"],default:void 0,responsive:!0}};var l=s(3843),a=s(134),c=s(6776);let d=n.forwardRef((e,t)=>{let{rest:s,...i}=(0,l.FY)(e),{rest:d,...h}=(0,a.F8)(s),{className:p,size:u=o.size.default,display:x=o.display.default,...v}=d;return n.createElement("section",{...v,ref:t,className:r()("rt-Section",p,(0,c.g)(u,"rt-r-size"),(0,c.g)(x,"rt-r-display"),(0,a.yt)(h),(0,l.we)(i))})});d.displayName="Section"},4207:function(e,t,s){"use strict";s.d(t,{x:function(){return v}});var n=s(7294),i=s(4184),r=s.n(i),o=s(8426),l=s(3416),a=s(617),c=s(7361),d=s(8291),h=s(6679);let p={size:{type:"enum",values:["1","2","3","4","5","6","7","8","9"],default:void 0,responsive:!0},weight:l.b,align:a.L,trim:c.a,color:d.m,highContrast:h.B};var u=s(3843),x=s(6776);let v=n.forwardRef((e,t)=>{let{rest:s,...i}=(0,u.FY)(e),{children:l,className:a,asChild:c=!1,as:d="span",size:h=p.size.default,weight:v=p.weight.default,align:y=p.align.default,trim:k=p.trim.default,color:j=p.color.default,highContrast:m=p.highContrast.default,...f}=s;return n.createElement(o.g7,{"data-accent-color":j,...f,ref:t,className:r()("rt-Text",a,(0,x.g)(h,"rt-r-size"),(0,x.g)(v,"rt-r-weight"),(0,x.g)(y,"rt-r-ta"),(0,x.g)(k,"rt-r-lt"),{"rt-high-contrast":m},(0,u.we)(i))},c?l:n.createElement(d,null,l))});v.displayName="Text"},6776:function(e,t,s){"use strict";function withBreakpoints(e,t="",s){var n,i,r,o;let l=[];if("object"==typeof e){for(let r of Object.keys(e))if(r in e){let o=null===(n=e[r])||void 0===n?void 0:n.toString(),a=null==o?void 0:o.startsWith("-"),c=""===t?"":"-",d=a?`-${t}`:t,h=a?null==o?void 0:o.substring(1):o;if(void 0===h)continue;let p=null!==(i=null==s?void 0:s[h])&&void 0!==i?i:h,u="initial"===r?`${d}${c}${p}`:`${r}:${d}${c}${p}`;l.push(u)}}if("string"==typeof e){let n=e.startsWith("-"),i=""===t?"":"-",o=n?`-${t}`:t,a=n?e.substring(1):e,c=null!==(r=null==s?void 0:s[a])&&void 0!==r?r:a;l.push(`${o}${i}${c}`)}if("boolean"==typeof e){let n=""===t?"":"-",i=e.toString(),r=null!==(o=null==s?void 0:s[i])&&void 0!==o?o:i;l.push(`${t}${n}${r}`)}return l.join(" ")}s.d(t,{g:function(){return withBreakpoints}})},8291:function(e,t,s){"use strict";s.d(t,{m:function(){return i}});var n=s(269);let i={type:"enum",values:n.yT.accentColor.values,default:void 0}},6679:function(e,t,s){"use strict";s.d(t,{B:function(){return n}});let n={type:"boolean",default:void 0}},134:function(e,t,s){"use strict";s.d(t,{F8:function(){return extractLayoutProps},yt:function(){return withLayoutProps}});var n=s(6776);let i=["0","1","2","3","4","5","6","7","8","9"],r=["auto","0","50%","100%"],o=["auto","min-content","max-content","100%","0","1","2","3","4","5","6","7","8","9"],l={p:{type:"enum",values:i,default:void 0,responsive:!0},px:{type:"enum",values:i,default:void 0,responsive:!0},py:{type:"enum",values:i,default:void 0,responsive:!0},pt:{type:"enum",values:i,default:void 0,responsive:!0},pr:{type:"enum",values:i,default:void 0,responsive:!0},pb:{type:"enum",values:i,default:void 0,responsive:!0},pl:{type:"enum",values:i,default:void 0,responsive:!0},position:{type:"enum",values:["static","relative","absolute","fixed","sticky"],default:void 0,responsive:!0},inset:{type:"enum",values:r,default:void 0,responsive:!0},top:{type:"enum",values:r,default:void 0,responsive:!0},right:{type:"enum",values:r,default:void 0,responsive:!0},bottom:{type:"enum",values:r,default:void 0,responsive:!0},left:{type:"enum",values:r,default:void 0,responsive:!0},width:{type:"enum",values:o,default:void 0,responsive:!0},height:{type:"enum",values:o,default:void 0,responsive:!0},shrink:{type:"enum",values:["0","1"],default:void 0,responsive:!0},grow:{type:"enum",values:["0","1"],default:void 0,responsive:!0}};function extractLayoutProps(e){let{rest:t,...s}=function(e){let{p:t=l.p.default,px:s=l.px.default,py:n=l.py.default,pt:i=l.pt.default,pr:r=l.pr.default,pb:o=l.pb.default,pl:a=l.pl.default,...c}=e;return{p:t,px:s,py:n,pt:i,pr:r,pb:o,pl:a,rest:c}}(e),{position:n=l.position.default,width:i=l.width.default,height:r=l.height.default,inset:o=l.inset.default,top:a=l.top.default,bottom:c=l.bottom.default,left:d=l.left.default,right:h=l.right.default,shrink:p=l.shrink.default,grow:u=l.grow.default,...x}=t;return{...s,position:n,width:i,height:r,inset:o,top:a,bottom:c,left:d,right:h,shrink:p,grow:u,rest:x}}function withLayoutProps(e){return[[(0,n.g)(e.p,"rt-r-p"),(0,n.g)(e.px,"rt-r-px"),(0,n.g)(e.py,"rt-r-py"),(0,n.g)(e.pt,"rt-r-pt"),(0,n.g)(e.pr,"rt-r-pr"),(0,n.g)(e.pb,"rt-r-pb"),(0,n.g)(e.pl,"rt-r-pl")].filter(Boolean).join(" "),(0,n.g)(e.position,"rt-r-position"),(0,n.g)(e.shrink,"rt-r-fs"),(0,n.g)(e.grow,"rt-r-fg"),(0,n.g)(e.width,"rt-r-w"),(0,n.g)(e.height,"rt-r-h"),(0,n.g)(e.inset,"rt-r-inset"),(0,n.g)(e.top,"rt-r-top"),(0,n.g)(e.bottom,"rt-r-bottom"),(0,n.g)(e.left,"rt-r-left"),(0,n.g)(e.right,"rt-r-right")].filter(Boolean).join(" ")}},7361:function(e,t,s){"use strict";s.d(t,{a:function(){return n}});let n={type:"enum",values:["normal","start","end","both"],default:void 0,responsive:!0}},3843:function(e,t,s){"use strict";s.d(t,{FY:function(){return extractMarginProps},we:function(){return withMarginProps}});var n=s(6776);let i=["auto","0","1","2","3","4","5","6","7","8","9","-1","-2","-3","-4","-5","-6","-7","-8","-9"],r={m:{type:"enum",values:i,default:void 0,responsive:!0},mx:{type:"enum",values:i,default:void 0,responsive:!0},my:{type:"enum",values:i,default:void 0,responsive:!0},mt:{type:"enum",values:i,default:void 0,responsive:!0},mr:{type:"enum",values:i,default:void 0,responsive:!0},mb:{type:"enum",values:i,default:void 0,responsive:!0},ml:{type:"enum",values:i,default:void 0,responsive:!0}};function extractMarginProps(e){let{m:t=r.m.default,mx:s=r.mx.default,my:n=r.my.default,mt:i=r.mt.default,mr:o=r.mr.default,mb:l=r.mb.default,ml:a=r.ml.default,...c}=e;return{m:t,mx:s,my:n,mt:i,mr:o,mb:l,ml:a,rest:c}}function withMarginProps(e){return[(0,n.g)(e.m,"rt-r-m"),(0,n.g)(e.mx,"rt-r-mx"),(0,n.g)(e.my,"rt-r-my"),(0,n.g)(e.mt,"rt-r-mt"),(0,n.g)(e.mr,"rt-r-mr"),(0,n.g)(e.mb,"rt-r-mb"),(0,n.g)(e.ml,"rt-r-ml")].filter(Boolean).join(" ")}},617:function(e,t,s){"use strict";s.d(t,{L:function(){return n}});let n={type:"enum",values:["left","center","right"],default:void 0,responsive:!0}},3416:function(e,t,s){"use strict";s.d(t,{b:function(){return n}});let n={type:"enum",values:["light","regular","medium","bold"],default:void 0,responsive:!0}},7019:function(e,t,s){(window.__NEXT_P=window.__NEXT_P||[]).push(["/stackblitz",function(){return s(7842)}])},7842:function(e,t,s){"use strict";s.r(t),s.d(t,{__toc:function(){return p},default:function(){return u}});var n=s(5893),i=s(2673),r=s(2643),o={src:"/docs/_next/static/media/guide-stackblitz-default.2ed4baa2.png",height:950,width:1520,blurDataURL:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAMAAABPT11nAAAALVBMVEUfIygtMDUPExomKC0yNjyEgYDRxbxVRDL19/tkOxlyb2zZsnpHRkeIYTWvg1TIORuwAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAK0lEQVR4nAXBiQEAIAgDsWsBf91/XBNSIU4VCeH+NgK7z4sCvFpDkXKN8QEOLACn/QPJCwAAAABJRU5ErkJggg==",blurWidth:8,blurHeight:5},l={src:"/docs/_next/static/media/guide-stackblitz-terminal.3cf64f86.png",height:868,width:1429,blurDataURL:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAMAAABPT11nAAAAIVBMVEUiIiczMzknKC4sLjMXGB1CRUlub3UNEhbd3N52b3RdXmNCiZ8SAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAJ0lEQVR4nAXBgQEAIAjDsHaA6P8Pm2AlzDkYaJQC6F2MwRmqtN+9HwggAG4u8ekHAAAAAElFTkSuQmCC",blurWidth:8,blurHeight:5},a=s(9013),c=s(4764),d=s(4207),h=s(3725);let p=[{depth:2,value:"Use Case(s)",id:"use-cases"},{depth:2,value:"Implementation",id:"implementation"},{depth:3,value:"Create a StackBlitz instance",id:"create-a-stackblitz-instance"},{depth:3,value:"Customize Canopy Collection",id:"customize-canopy-collection"},{depth:3,value:"Customize Canopy Options",id:"customize-canopy-options"}];function _createMdxContent(e){let t=Object.assign({h1:"h1",p:"p",a:"a",img:"img",h2:"h2",ul:"ul",li:"li",h3:"h3",code:"code",pre:"pre",span:"span"},(0,r.a)(),e.components);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{children:"StackBlitz Playground"}),"\n",(0,n.jsx)(c.$,{size:"1",children:(0,n.jsx)(d.x,{size:"4",mt:"9",children:(0,n.jsxs)(t.p,{children:["Want to quickly try out Canopy? Click the button below to open a\n",(0,n.jsx)(t.a,{href:"https://stackblitz.com/",children:"StackBlitz"})," playground."]})})}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.a,{href:"https://stackblitz.com/fork/github/canopy-iiif/canopy-iiif",children:(0,n.jsx)(t.img,{src:"https://developer.stackblitz.com/img/open_in_stackblitz.svg",alt:"Open in StackBlitz"})})}),"\n",(0,n.jsx)(t.h2,{id:"use-cases",children:"Use Case(s)"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:"You don't want to install Canopy locally or be concerned with a developer environment."}),"\n",(0,n.jsx)(t.li,{children:"You want to quickly experiment with config, settings, and or target Collections."}),"\n",(0,n.jsx)(t.li,{children:"You'd like to showcase a IIIF-driven project for your team or colleagues."}),"\n"]}),"\n",(0,n.jsx)(a.UW,{children:(0,n.jsx)(t.p,{children:"There may be CORS issues rendering images in Safari and Firefox browsers. If\nyou're experiencing broken images, please try Chrome or Brave browsers."})}),"\n",(0,n.jsx)(t.h2,{id:"implementation",children:"Implementation"}),"\n",(0,n.jsxs)(a.Rg,{children:[(0,n.jsx)(t.h3,{id:"create-a-stackblitz-instance",children:"Create a StackBlitz instance"}),(0,n.jsx)(t.p,{children:'Click on the button above, "Open in StackBlitz". This will open a new browser tab and load the Canopy project in StackBlitz.'}),(0,n.jsx)(h.x,{m:"9",my:"6",children:(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"canopy home page",placeholder:"blur",src:o})})}),(0,n.jsx)(t.h3,{id:"customize-canopy-collection",children:"Customize Canopy Collection"}),(0,n.jsxs)(t.p,{children:["If you'd like to jump right into customizing or tinkering with config settings, try re-naming ",(0,n.jsx)(t.code,{children:"/config/canopy.sample.json"})," to ",(0,n.jsx)(t.code,{children:"/config/canopy.json"}),". This will override the default config settings and allow you to experiment with your own settings."]}),(0,n.jsx)(a.UW,{type:"info",children:(0,n.jsxs)(t.p,{children:["When demoing in StackBlitz, your are in ",(0,n.jsx)(t.code,{children:"dev"})," mode when configuring\n",(0,n.jsx)(t.code,{children:"/config/canopy.json"}),". This means that you can use the ",(0,n.jsx)(t.code,{children:"dev"})," settings to\ntarget a IIIF Collection or Manifest."]})}),(0,n.jsxs)(t.p,{children:["For example, let's use the ",(0,n.jsx)(t.a,{href:"https://api.dc.library.northwestern.edu/api/v2/search?query=collection.id:%22b46c9cf7-0e49-4993-9e0e-3cda030c4439%22&as=iiif",children:"Charlotte Mormon Collection"})," from Northwestern University Libaries."]}),(0,n.jsx)(t.pre,{"data-language":"json","data-theme":"default",filename:"/config/canopy.json",children:(0,n.jsxs)(t.code,{"data-language":"json","data-theme":"default",children:[(0,n.jsx)(t.span,{className:"line",children:(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"{"})}),"\n",(0,n.jsxs)(t.span,{className:"line",children:[(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:'"prod"'}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-punctuation)"},children:":"}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" {"})]}),"\n",(0,n.jsxs)(t.span,{className:"line",children:[(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:'"label"'}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-punctuation)"},children:":"}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" { "}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:'"none"'}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-punctuation)"},children:":"}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" ["}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"Collection Title"'}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"] }"}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-punctuation)"},children:","})]}),"\n",(0,n.jsxs)(t.span,{className:"line",children:[(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:'"summary"'}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-punctuation)"},children:":"}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" {"})]}),"\n",(0,n.jsxs)(t.span,{className:"line",children:[(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:'"none"'}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-punctuation)"},children:":"}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" ["}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"Brief description of the site and its contents."'}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"]"})]}),"\n",(0,n.jsxs)(t.span,{className:"line",children:[(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" }"}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-punctuation)"},children:","})]}),"\n",(0,n.jsxs)(t.span,{className:"line",children:[(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:'"collection"'}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-punctuation)"},children:":"}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"https://example.org/iiif/collection.json"'}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-punctuation)"},children:","})]}),"\n",(0,n.jsxs)(t.span,{className:"line",children:[(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:'"featured"'}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-punctuation)"},children:":"}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" ["})]}),"\n",(0,n.jsxs)(t.span,{className:"line",children:[(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"https://example.org/manifest-1.json"'}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-punctuation)"},children:","})]}),"\n",(0,n.jsxs)(t.span,{className:"line",children:[(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"https://example.org/manifest-2.json"'})]}),"\n",(0,n.jsxs)(t.span,{className:"line",children:[(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" ]"}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-punctuation)"},children:","})]}),"\n",(0,n.jsxs)(t.span,{className:"line",children:[(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:'"metadata"'}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-punctuation)"},children:":"}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" ["}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"Date"'}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-punctuation)"},children:","}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"Subject"'}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"]"})]}),"\n",(0,n.jsxs)(t.span,{className:"line",children:[(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" }"}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-punctuation)"},children:","})]}),"\n",(0,n.jsxs)(t.span,{className:"line",children:[(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:'"dev"'}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-punctuation)"},children:":"}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" {"})]}),"\n",(0,n.jsxs)(t.span,{className:"line",children:[(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:'"label"'}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-punctuation)"},children:":"}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" { "}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:'"none"'}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-punctuation)"},children:":"}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" ["}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"Collection Title"'}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"] }"}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-punctuation)"},children:","})]}),"\n",(0,n.jsxs)(t.span,{className:"line",children:[(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:'"summary"'}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-punctuation)"},children:":"}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" {"})]}),"\n",(0,n.jsxs)(t.span,{className:"line",children:[(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:'"none"'}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-punctuation)"},children:":"}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" ["}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"Brief description of the site and its contents."'}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"]"})]}),"\n",(0,n.jsxs)(t.span,{className:"line",children:[(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" }"}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-punctuation)"},children:","})]}),"\n",(0,n.jsxs)(t.span,{className:"line highlighted",children:[(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:'"collection"'}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-punctuation)"},children:":"}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"https://api.dc.library.northwestern.edu/api/v2/search?query=collection.id:%22b46c9cf7-0e49-4993-9e0e-3cda030c4439%22&as=iiif"'}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-punctuation)"},children:","})]}),"\n",(0,n.jsxs)(t.span,{className:"line highlighted",children:[(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:'"featured"'}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-punctuation)"},children:":"}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" []"}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-punctuation)"},children:","})]}),"\n",(0,n.jsxs)(t.span,{className:"line",children:[(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:'"metadata"'}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-punctuation)"},children:":"}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" ["}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"Date"'}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-punctuation)"},children:","}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"Subject"'}),(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"]"})]}),"\n",(0,n.jsx)(t.span,{className:"line",children:(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" }"})}),"\n",(0,n.jsx)(t.span,{className:"line",children:(0,n.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"}"})})]})}),(0,n.jsx)(t.p,{children:"After making any configuration changes, you'll need to re-start the dev server (as you would have to in a local development environment also). StackBlitz gives access to a Terminal."}),(0,n.jsx)(h.x,{m:"9",my:"6",children:(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"canopy home page",placeholder:"blur",src:l})})}),(0,n.jsxs)(t.p,{children:["Click into the Terminal and quit the dev server by pressing ",(0,n.jsx)(t.code,{children:"ctrl + c"}),". Then, re-start the dev server by running ",(0,n.jsx)(t.code,{children:"npm run dev"}),"."]}),(0,n.jsx)(t.h3,{id:"customize-canopy-options",children:"Customize Canopy Options"}),(0,n.jsxs)(t.p,{children:["For example, you could experiment with customizing Search, following the ",(0,n.jsx)(t.a,{href:"/customize-the-search-index",children:"Search Guide"}),". To start customizing options, rename ",(0,n.jsx)(t.code,{children:"/config/options.sample.json"})," to ",(0,n.jsx)(t.code,{children:"/config/options.json"}),"."]})]})]})}var u=(0,i.j)({MDXContent:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{wrapper:t}=Object.assign({},(0,r.a)(),e.components);return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(_createMdxContent,{...e})}):_createMdxContent(e)},pageOpts:{filePath:"pages/stackblitz.mdx",route:"/stackblitz",title:"StackBlitz Playground",headings:p},pageNextRoute:"/stackblitz"})}},function(e){e.O(0,[673,774,888,179],function(){return e(e.s=7019)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/_next/static/media/guide-stackblitz-default.2ed4baa2.png b/_next/static/media/guide-stackblitz-default.2ed4baa2.png new file mode 100644 index 0000000..1d36795 Binary files /dev/null and b/_next/static/media/guide-stackblitz-default.2ed4baa2.png differ diff --git a/_next/static/media/guide-stackblitz-terminal.3cf64f86.png b/_next/static/media/guide-stackblitz-terminal.3cf64f86.png new file mode 100644 index 0000000..4baa1c9 Binary files /dev/null and b/_next/static/media/guide-stackblitz-terminal.3cf64f86.png differ diff --git a/about.html b/about.html index c6fb0bd..37da2f6 100644 --- a/about.html +++ b/about.html @@ -11,7 +11,7 @@ --nextra-primary-hue: 225deg; --nextra-primary-saturation: 76%; } - </style><meta property="og:url" content="https://canopy-iiif.github.io/docs/about"/><meta property="og:image" content="https://canopy-iiif.github.io/docs/assets/canopy-iiif.png"/><meta name="next-head-count" content="9"/><link rel="preload" href="/docs/_next/static/media/3e3cf2ee9aa3f174-s.p.woff2" as="font" type="font/woff2" crossorigin="anonymous" data-next-font="size-adjust"/><link rel="preload" href="/docs/_next/static/media/8679c800f1e60000-s.p.woff2" as="font" type="font/woff2" crossorigin="anonymous" data-next-font="size-adjust"/><link rel="preload" href="/docs/_next/static/css/804660835f23f545.css" as="style" crossorigin=""/><link rel="stylesheet" href="/docs/_next/static/css/804660835f23f545.css" crossorigin="" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" crossorigin="" nomodule="" src="/docs/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="/docs/_next/static/chunks/webpack-ed57058c8797d741.js" defer="" crossorigin=""></script><script src="/docs/_next/static/chunks/framework-0c7baedefba6b077.js" defer="" crossorigin=""></script><script src="/docs/_next/static/chunks/main-07a74344843efe47.js" defer="" crossorigin=""></script><script src="/docs/_next/static/chunks/pages/_app-9b06e42e96504294.js" defer="" crossorigin=""></script><script src="/docs/_next/static/chunks/673-d6d9313911892065.js" defer="" crossorigin=""></script><script src="/docs/_next/static/chunks/pages/about-675b025fecc6dfd3.js" defer="" crossorigin=""></script><script src="/docs/_next/static/38Zf3xYBSZA1YwHLRCYDW/_buildManifest.js" defer="" crossorigin=""></script><script src="/docs/_next/static/38Zf3xYBSZA1YwHLRCYDW/_ssgManifest.js" defer="" crossorigin=""></script><style id="__jsx-551433176">:root{--shiki-color-text:#8b8d98;--shiki-color-background:transparent;--shiki-token-constant:#3358d4;--shiki-token-string:#46a758;--shiki-token-comment:#cdced6;--shiki-token-keyword:#cb1d63;--shiki-token-parameter:#978365;--shiki-token-function:#6e56cf;--shiki-token-string-expression:#3358d4;--shiki-token-punctuation:#8b8d98;--shiki-token-link:#65ba74}html{--canopy-sans-font:'__DM_Sans_f32be5', '__DM_Sans_Fallback_f32be5';--canopy-display-font:'__DM_Serif_Display_f77a0b', '__DM_Serif_Display_Fallback_f77a0b'}.radix-themes{--default-font-family:var(--canopy-sans-font), sans-serif}</style><style id="__jsx-7e682f802fefb7c6">span.jsx-7e682f802fefb7c6{display:block;margin-left:.618rem;font-weight:400;font-size:1.382rem!important;font-family:var(--canopy-display-font);color:var(--gray-12)}div.jsx-7e682f802fefb7c6{display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-moz-box-align:center;-ms-flex-align:center;align-items:center}</style></head><body><div id="__next"><style> + </style><meta property="og:url" content="https://canopy-iiif.github.io/docs/about"/><meta property="og:image" content="https://canopy-iiif.github.io/docs/assets/canopy-iiif.png"/><meta name="next-head-count" content="9"/><link rel="preload" href="/docs/_next/static/media/3e3cf2ee9aa3f174-s.p.woff2" as="font" type="font/woff2" crossorigin="anonymous" data-next-font="size-adjust"/><link rel="preload" href="/docs/_next/static/media/8679c800f1e60000-s.p.woff2" as="font" type="font/woff2" crossorigin="anonymous" data-next-font="size-adjust"/><link rel="preload" href="/docs/_next/static/css/804660835f23f545.css" as="style" crossorigin=""/><link rel="stylesheet" href="/docs/_next/static/css/804660835f23f545.css" crossorigin="" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" crossorigin="" nomodule="" src="/docs/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="/docs/_next/static/chunks/webpack-ed57058c8797d741.js" defer="" crossorigin=""></script><script src="/docs/_next/static/chunks/framework-0c7baedefba6b077.js" defer="" crossorigin=""></script><script src="/docs/_next/static/chunks/main-07a74344843efe47.js" defer="" crossorigin=""></script><script src="/docs/_next/static/chunks/pages/_app-9217ae0a6269c091.js" defer="" crossorigin=""></script><script src="/docs/_next/static/chunks/673-d6d9313911892065.js" defer="" crossorigin=""></script><script src="/docs/_next/static/chunks/pages/about-675b025fecc6dfd3.js" defer="" crossorigin=""></script><script src="/docs/_next/static/247nUWMFs87p0o7Gql8B8/_buildManifest.js" defer="" crossorigin=""></script><script src="/docs/_next/static/247nUWMFs87p0o7Gql8B8/_ssgManifest.js" defer="" crossorigin=""></script><style id="__jsx-551433176">:root{--shiki-color-text:#8b8d98;--shiki-color-background:transparent;--shiki-token-constant:#3358d4;--shiki-token-string:#46a758;--shiki-token-comment:#cdced6;--shiki-token-keyword:#cb1d63;--shiki-token-parameter:#978365;--shiki-token-function:#6e56cf;--shiki-token-string-expression:#3358d4;--shiki-token-punctuation:#8b8d98;--shiki-token-link:#65ba74}html{--canopy-sans-font:'__DM_Sans_f32be5', '__DM_Sans_Fallback_f32be5';--canopy-display-font:'__DM_Serif_Display_f77a0b', '__DM_Serif_Display_Fallback_f77a0b'}.radix-themes{--default-font-family:var(--canopy-sans-font), sans-serif}</style><style id="__jsx-7e682f802fefb7c6">span.jsx-7e682f802fefb7c6{display:block;margin-left:.618rem;font-weight:400;font-size:1.382rem!important;font-family:var(--canopy-display-font);color:var(--gray-12)}div.jsx-7e682f802fefb7c6{display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-moz-box-align:center;-ms-flex-align:center;align-items:center}</style></head><body><div id="__next"><style> :root, .light, .light-theme { --color-page-background: white; } .dark, .dark-theme { --color-page-background: var(--slate-1); } body { background-color: var(--color-page-background); } @@ -19,4 +19,4 @@ Libraries, formerly University of Tennessee Libraries</p></span><span class="rt-Text"><p class="nx-mt-6 nx-leading-7 first:nx-mt-0"><a href="https://github.com/markpbaggett" target="_blank" rel="noreferrer" class="nx-text-primary-600 nx-underline nx-decoration-from-font [text-underline-position:from-font]">Mark Baggett<span class="nx-sr-only nx-select-none"> (opens in a new tab)</span></a> - University of Tennessee Libraries</p></span><span class="rt-Text"><p class="nx-mt-6 nx-leading-7 first:nx-mt-0"><a href="https://github.com/adamjarling" target="_blank" rel="noreferrer" class="nx-text-primary-600 nx-underline nx-decoration-from-font [text-underline-position:from-font]">Adam Arling<span class="nx-sr-only nx-select-none"> (opens in a new tab)</span></a> - Northwestern University Libraries</p></span><h1 class="rt-Heading rt-r-size-4 rt-r-weight-bold rt-r-my-5 rt-r-mb-2"><p class="nx-mt-6 nx-leading-7 first:nx-mt-0">Additional Credits</p></h1><span class="rt-Text"><p class="nx-mt-6 nx-leading-7 first:nx-mt-0">Emily Gore - University of Georgia Libraries, formerly University of Tennessee -Libraries</p></span><span class="rt-Text">David Schober - Northwestern University Libraries</span><span class="rt-Text"><p class="nx-mt-6 nx-leading-7 first:nx-mt-0"><a href="https://github.com/martimpassos" target="_blank" rel="noreferrer" class="nx-text-primary-600 nx-underline nx-decoration-from-font [text-underline-position:from-font]">Martim Passos<span class="nx-sr-only nx-select-none"> (opens in a new tab)</span></a> - Instituto Moreira Salles</p></span><span class="rt-Text"><p class="nx-mt-6 nx-leading-7 first:nx-mt-0"><a href="https://github.com/tarjelavik" target="_blank" rel="noreferrer" class="nx-text-primary-600 nx-underline nx-decoration-from-font [text-underline-position:from-font]">Tarje Lavik<span class="nx-sr-only nx-select-none"> (opens in a new tab)</span></a> - University of Bergen Library</p></span></section><div class="nx-mt-16"></div></main></article></div><footer class="nx-bg-gray-100 nx-pb-[env(safe-area-inset-bottom)] dark:nx-bg-neutral-900 print:nx-bg-transparent"><div class="nx-mx-auto nx-flex nx-max-w-[90rem] nx-gap-2 nx-py-2 nx-px-4 nx-hidden"></div><hr class="dark:nx-border-neutral-800"/><div class="nx-mx-auto nx-flex nx-max-w-[90rem] nx-justify-center nx-py-12 nx-text-gray-600 dark:nx-text-gray-400 md:nx-justify-start nx-pl-[max(env(safe-area-inset-left),1.5rem)] nx-pr-[max(env(safe-area-inset-right),1.5rem)]">a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions</div></footer></div></div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="">{"props":{"pageProps":{}},"page":"/about","query":{},"buildId":"38Zf3xYBSZA1YwHLRCYDW","assetPrefix":"/docs","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html> \ No newline at end of file +Libraries</p></span><span class="rt-Text">David Schober - Northwestern University Libraries</span><span class="rt-Text"><p class="nx-mt-6 nx-leading-7 first:nx-mt-0"><a href="https://github.com/martimpassos" target="_blank" rel="noreferrer" class="nx-text-primary-600 nx-underline nx-decoration-from-font [text-underline-position:from-font]">Martim Passos<span class="nx-sr-only nx-select-none"> (opens in a new tab)</span></a> - Instituto Moreira Salles</p></span><span class="rt-Text"><p class="nx-mt-6 nx-leading-7 first:nx-mt-0"><a href="https://github.com/tarjelavik" target="_blank" rel="noreferrer" class="nx-text-primary-600 nx-underline nx-decoration-from-font [text-underline-position:from-font]">Tarje Lavik<span class="nx-sr-only nx-select-none"> (opens in a new tab)</span></a> - University of Bergen Library</p></span></section><div class="nx-mt-16"></div></main></article></div><footer class="nx-bg-gray-100 nx-pb-[env(safe-area-inset-bottom)] dark:nx-bg-neutral-900 print:nx-bg-transparent"><div class="nx-mx-auto nx-flex nx-max-w-[90rem] nx-gap-2 nx-py-2 nx-px-4 nx-hidden"></div><hr class="dark:nx-border-neutral-800"/><div class="nx-mx-auto nx-flex nx-max-w-[90rem] nx-justify-center nx-py-12 nx-text-gray-600 dark:nx-text-gray-400 md:nx-justify-start nx-pl-[max(env(safe-area-inset-left),1.5rem)] nx-pr-[max(env(safe-area-inset-right),1.5rem)]">a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions</div></footer></div></div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="">{"props":{"pageProps":{}},"page":"/about","query":{},"buildId":"247nUWMFs87p0o7Gql8B8","assetPrefix":"/docs","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html> \ No newline at end of file diff --git a/configuration.html b/configuration.html index 69fc194..1236de1 100644 --- a/configuration.html +++ b/configuration.html @@ -11,11 +11,11 @@ --nextra-primary-hue: 225deg; --nextra-primary-saturation: 76%; } - </style><meta property="og:url" content="https://canopy-iiif.github.io/docs/configuration"/><meta property="og:image" content="https://canopy-iiif.github.io/docs/assets/canopy-iiif.png"/><meta name="next-head-count" content="9"/><link rel="preload" href="/docs/_next/static/media/3e3cf2ee9aa3f174-s.p.woff2" as="font" type="font/woff2" crossorigin="anonymous" data-next-font="size-adjust"/><link rel="preload" href="/docs/_next/static/media/8679c800f1e60000-s.p.woff2" as="font" type="font/woff2" crossorigin="anonymous" data-next-font="size-adjust"/><link rel="preload" href="/docs/_next/static/css/804660835f23f545.css" as="style" crossorigin=""/><link rel="stylesheet" href="/docs/_next/static/css/804660835f23f545.css" crossorigin="" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" crossorigin="" nomodule="" src="/docs/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="/docs/_next/static/chunks/webpack-ed57058c8797d741.js" defer="" crossorigin=""></script><script src="/docs/_next/static/chunks/framework-0c7baedefba6b077.js" defer="" crossorigin=""></script><script src="/docs/_next/static/chunks/main-07a74344843efe47.js" defer="" crossorigin=""></script><script src="/docs/_next/static/chunks/pages/_app-9b06e42e96504294.js" defer="" crossorigin=""></script><script src="/docs/_next/static/chunks/673-d6d9313911892065.js" defer="" crossorigin=""></script><script src="/docs/_next/static/chunks/pages/configuration-81bb4f895844e651.js" defer="" crossorigin=""></script><script src="/docs/_next/static/38Zf3xYBSZA1YwHLRCYDW/_buildManifest.js" defer="" crossorigin=""></script><script src="/docs/_next/static/38Zf3xYBSZA1YwHLRCYDW/_ssgManifest.js" defer="" crossorigin=""></script><style id="__jsx-551433176">:root{--shiki-color-text:#8b8d98;--shiki-color-background:transparent;--shiki-token-constant:#3358d4;--shiki-token-string:#46a758;--shiki-token-comment:#cdced6;--shiki-token-keyword:#cb1d63;--shiki-token-parameter:#978365;--shiki-token-function:#6e56cf;--shiki-token-string-expression:#3358d4;--shiki-token-punctuation:#8b8d98;--shiki-token-link:#65ba74}html{--canopy-sans-font:'__DM_Sans_f32be5', '__DM_Sans_Fallback_f32be5';--canopy-display-font:'__DM_Serif_Display_f77a0b', '__DM_Serif_Display_Fallback_f77a0b'}.radix-themes{--default-font-family:var(--canopy-sans-font), sans-serif}</style><style id="__jsx-7e682f802fefb7c6">span.jsx-7e682f802fefb7c6{display:block;margin-left:.618rem;font-weight:400;font-size:1.382rem!important;font-family:var(--canopy-display-font);color:var(--gray-12)}div.jsx-7e682f802fefb7c6{display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-moz-box-align:center;-ms-flex-align:center;align-items:center}</style></head><body><div id="__next"><style> + </style><meta property="og:url" content="https://canopy-iiif.github.io/docs/configuration"/><meta property="og:image" content="https://canopy-iiif.github.io/docs/assets/canopy-iiif.png"/><meta name="next-head-count" content="9"/><link rel="preload" href="/docs/_next/static/media/3e3cf2ee9aa3f174-s.p.woff2" as="font" type="font/woff2" crossorigin="anonymous" data-next-font="size-adjust"/><link rel="preload" href="/docs/_next/static/media/8679c800f1e60000-s.p.woff2" as="font" type="font/woff2" crossorigin="anonymous" data-next-font="size-adjust"/><link rel="preload" href="/docs/_next/static/css/804660835f23f545.css" as="style" crossorigin=""/><link rel="stylesheet" href="/docs/_next/static/css/804660835f23f545.css" crossorigin="" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" crossorigin="" nomodule="" src="/docs/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="/docs/_next/static/chunks/webpack-ed57058c8797d741.js" defer="" crossorigin=""></script><script src="/docs/_next/static/chunks/framework-0c7baedefba6b077.js" defer="" crossorigin=""></script><script src="/docs/_next/static/chunks/main-07a74344843efe47.js" defer="" crossorigin=""></script><script src="/docs/_next/static/chunks/pages/_app-9217ae0a6269c091.js" defer="" crossorigin=""></script><script src="/docs/_next/static/chunks/673-d6d9313911892065.js" defer="" crossorigin=""></script><script src="/docs/_next/static/chunks/pages/configuration-81bb4f895844e651.js" defer="" crossorigin=""></script><script src="/docs/_next/static/247nUWMFs87p0o7Gql8B8/_buildManifest.js" defer="" crossorigin=""></script><script src="/docs/_next/static/247nUWMFs87p0o7Gql8B8/_ssgManifest.js" defer="" crossorigin=""></script><style id="__jsx-551433176">:root{--shiki-color-text:#8b8d98;--shiki-color-background:transparent;--shiki-token-constant:#3358d4;--shiki-token-string:#46a758;--shiki-token-comment:#cdced6;--shiki-token-keyword:#cb1d63;--shiki-token-parameter:#978365;--shiki-token-function:#6e56cf;--shiki-token-string-expression:#3358d4;--shiki-token-punctuation:#8b8d98;--shiki-token-link:#65ba74}html{--canopy-sans-font:'__DM_Sans_f32be5', '__DM_Sans_Fallback_f32be5';--canopy-display-font:'__DM_Serif_Display_f77a0b', '__DM_Serif_Display_Fallback_f77a0b'}.radix-themes{--default-font-family:var(--canopy-sans-font), sans-serif}</style><style id="__jsx-7e682f802fefb7c6">span.jsx-7e682f802fefb7c6{display:block;margin-left:.618rem;font-weight:400;font-size:1.382rem!important;font-family:var(--canopy-display-font);color:var(--gray-12)}div.jsx-7e682f802fefb7c6{display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-moz-box-align:center;-ms-flex-align:center;align-items:center}</style></head><body><div id="__next"><style> :root, .light, .light-theme { --color-page-background: white; } .dark, .dark-theme { --color-page-background: var(--slate-1); } body { background-color: var(--color-page-background); } -</style><div data-is-root-theme="true" data-accent-color="indigo" data-gray-color="slate" data-has-background="false" data-panel-background="translucent" data-radius="medium" data-scaling="100%" class="radix-themes __className_f32be5"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}else{c.add('light')}if(e==='light'||e==='dark'||!e)d.style.colorScheme=e||'light'}catch(e){}}()</script><div dir="ltr"><script>document.documentElement.setAttribute('dir','ltr')</script><div class="nextra-nav-container nx-sticky nx-top-0 nx-z-20 nx-w-full nx-bg-transparent print:nx-hidden"><div class="nextra-nav-container-blur nx-pointer-events-none nx-absolute nx-z-[-1] nx-h-full nx-w-full nx-bg-white dark:nx-bg-dark nx-shadow-[0_2px_4px_rgba(0,0,0,.02),0_1px_0_rgba(0,0,0,.06)] dark:nx-shadow-[0_-1px_0_rgba(255,255,255,.1)_inset] contrast-more:nx-shadow-[0_0_0_1px_#000] contrast-more:dark:nx-shadow-[0_0_0_1px_#fff]"></div><nav class="nx-mx-auto nx-flex nx-h-[var(--nextra-navbar-height)] nx-max-w-[90rem] nx-items-center nx-justify-end nx-gap-2 nx-pl-[max(env(safe-area-inset-left),1.5rem)] nx-pr-[max(env(safe-area-inset-right),1.5rem)]"><a class="nx-flex nx-items-center hover:nx-opacity-75 ltr:nx-mr-auto rtl:nx-ml-auto" href="/docs"><div class="jsx-7e682f802fefb7c6"><img id="canopy-iiif-logo" data-name="canopy-iiif-icon" alt="Canopy IIIF" loading="lazy" width="32" height="32" decoding="async" data-nimg="1" style="color:transparent" src="/docs/assets/canopy-iiif-icon.png"/><span class="jsx-7e682f802fefb7c6">Canopy IIIF</span></div></a><div class="nx-relative nx-inline-block"><button class="nx-text-sm contrast-more:nx-text-gray-700 contrast-more:dark:nx-text-gray-100 nx-flex nx-gap-1 nx-text-gray-600 hover:nx-text-gray-800 dark:nx-text-gray-400 dark:hover:nx-text-gray-200 -nx-ml-2 nx-hidden nx-items-center nx-whitespace-nowrap nx-rounded nx-p-2 md:nx-inline-flex nx-text-gray-600 hover:nx-text-gray-800 dark:nx-text-gray-400 dark:hover:nx-text-gray-200" id="headlessui-menu-button-:R1aklm:" type="button" aria-haspopup="menu" aria-expanded="false" data-headlessui-state="">Documentation<svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="nx-h-[18px] nx-min-w-[18px] nx-rounded-sm nx-p-0.5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="nx-origin-center nx-transition-transform nx-rotate-90"></path></svg></button></div><a class="nx-text-sm contrast-more:nx-text-gray-700 contrast-more:dark:nx-text-gray-100 nx-relative -nx-ml-2 nx-hidden nx-whitespace-nowrap nx-p-2 md:nx-inline-block nx-text-gray-600 hover:nx-text-gray-800 dark:nx-text-gray-400 dark:hover:nx-text-gray-200" aria-current="false" href="/docs/about"><span class="nx-absolute nx-inset-x-0 nx-text-center">About</span><span class="nx-invisible nx-font-medium">About</span></a><a href="https://iiif.io/" target="_blank" rel="noreferrer" class="nx-text-sm contrast-more:nx-text-gray-700 contrast-more:dark:nx-text-gray-100 nx-relative -nx-ml-2 nx-hidden nx-whitespace-nowrap nx-p-2 md:nx-inline-block nx-text-gray-600 hover:nx-text-gray-800 dark:nx-text-gray-400 dark:hover:nx-text-gray-200" aria-current="false"><span class="nx-absolute nx-inset-x-0 nx-text-center">What is IIIF? ↗</span><span class="nx-invisible nx-font-medium">What is IIIF? ↗</span><span class="nx-sr-only nx-select-none"> (opens in a new tab)</span></a><div class="nextra-search nx-relative md:nx-w-64 nx-hidden md:nx-inline-block mx-min-w-[200px]"><div class="nx-relative nx-flex nx-items-center nx-text-gray-900 contrast-more:nx-text-gray-800 dark:nx-text-gray-300 contrast-more:dark:nx-text-gray-300"><input spellcheck="false" class="nx-block nx-w-full nx-appearance-none nx-rounded-lg nx-px-3 nx-py-2 nx-transition-colors nx-text-base nx-leading-tight md:nx-text-sm nx-bg-black/[.05] dark:nx-bg-gray-50/10 focus:nx-bg-white dark:focus:nx-bg-dark placeholder:nx-text-gray-500 dark:placeholder:nx-text-gray-400 contrast-more:nx-border contrast-more:nx-border-current" type="search" placeholder="Search documentation…" value=""/></div></div><a href="https://github.com/canopy-iiif/canopy-iiif" target="_blank" rel="noreferrer" class="nx-p-2 nx-text-current"><svg width="24" height="24" fill="currentColor" viewBox="3 3 18 18"><title>GitHubGitHub (opens in a new tab)

Configuration

+

Configuration

The Canopy IIIF build process will read from a custom configuration file at config/canopy.json if it exists. If this configuration file does not exist, the default configuration config/.default/canopy.default.json will be used as a fallback for demonstration purposes.

See the Create a Project guide for a step-by-step guide illustrating the setup of Canopy IIIF project.

@@ -74,4 +74,4 @@

], "metadata": ["Extent", "Title", "Date Statement", "Language"] } -}


a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
\ No newline at end of file +}

a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
\ No newline at end of file diff --git a/configuration/locale.html b/configuration/locale.html index 1129b85..fc82ea9 100644 --- a/configuration/locale.html +++ b/configuration/locale.html @@ -11,11 +11,11 @@ --nextra-primary-hue: 225deg; --nextra-primary-saturation: 76%; } -

Locale Preferences

+

a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
\ No newline at end of file +]

a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
\ No newline at end of file diff --git a/configuration/map.html b/configuration/map.html index b12b9a3..107c3fd 100644 --- a/configuration/map.html +++ b/configuration/map.html @@ -11,11 +11,11 @@ --nextra-primary-hue: 225deg; --nextra-primary-saturation: 76%; } -

Map

+

Map

A map route can be enabled to provide geographic discovery of works via config/options.json. This feature builds markers off of geographic point features found in navPlace (opens in a new tab) properties at the Manifest level. For implementation, Canopy IIIF uses Leaflet (opens in a new tab) to render the map.

Note: Currently, only navPlace properties found at the Manifest level are displayed. Also, only Features of type Point are displayed.

See the Enable a Map with navPlace for a @@ -73,4 +73,4 @@

} ] } -}


a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
\ No newline at end of file +}

a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
\ No newline at end of file diff --git a/configuration/search.html b/configuration/search.html index 72e577d..6ffb6eb 100644 --- a/configuration/search.html +++ b/configuration/search.html @@ -11,11 +11,11 @@ --nextra-primary-hue: 225deg; --nextra-primary-saturation: 76%; } -

Search

+

Search

Canopy IIIF utilizes FlexSearch (opens in a new tab) for fast in-memory indexing and provides options for users to customize their search experience. By default Canopy will index Manifest all label and any defined metadata properties. Users can optionally index the summary property.

See the Customize the Search Index for a step-by-step guide.

@@ -101,4 +101,4 @@

"enabled": false } } -}


a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
\ No newline at end of file +}

a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
\ No newline at end of file diff --git a/configuration/theme.html b/configuration/theme.html index 75dfc99..46611bb 100644 --- a/configuration/theme.html +++ b/configuration/theme.html @@ -11,11 +11,11 @@ --nextra-primary-hue: 225deg; --nextra-primary-saturation: 76%; } -

Theme

+

Theme

The default theme for users can be set via config/options.json. This feature sets the initial theme for users as light, dark, or system. The Toggle Theme button can also be enabled or disabled here.

Note: Theme settings are stored in the users local browser storage. Setting the theme will only affect new users to your site. It will not change the default theme for users who have already visited.

Properties

@@ -33,4 +33,4 @@

"defaultTheme": "light", "toggleEnabled": false } -}


a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
\ No newline at end of file +}

a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
\ No newline at end of file diff --git a/content.html b/content.html index fca0da6..a428527 100644 --- a/content.html +++ b/content.html @@ -11,11 +11,11 @@ --nextra-primary-hue: 225deg; --nextra-primary-saturation: 76%; } -

Content

+

Content

Canopy allows for easy creation of contextual content to support and reference the automatically generated content in a IIIF Collection. For the purpose of easy content generation Canopy utilizes MDX (opens in a new tab) which "allows you to use JSX in your markdown content."

See the Creating Markdown Content guide for a step-by-step guide illustrating basic creation of new content.

@@ -43,4 +43,4 @@

<Viewer iiifContent="https://api.dc.library.northwestern.edu/api/v2/works/14a6aa15-9e12-47a7-9617-91f430d4f47b?as=iiif" />

Sample Output

-

canopy content page iiif viewer


a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
\ No newline at end of file +

canopy content page iiif viewer


a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
\ No newline at end of file diff --git a/content/card.html b/content/card.html index 674de2b..fd990d7 100644 --- a/content/card.html +++ b/content/card.html @@ -11,11 +11,11 @@ --nextra-primary-hue: 225deg; --nextra-primary-saturation: 76%; } -

Card

+

Card

Implementers using Canopy IIIF can directly reference a single IIIF Manifest by using the Card component. The Card will render an HTML figure, the thumbnail and a figcaption containing the label of the Manifest. Use rendered figure will link to /work page for the relative Manifest.

Properties

PropertyTypeRequiredDescription
iiifContentstringtrueManifest URI to be rendered.
@@ -23,4 +23,4 @@

The referenced Manifest must be part of the IIIF Collection used in your Canopy project.

Usage

-
<Card iiifContent="https://manifests.collections.yale.edu/ycba/obj/702" />

a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
\ No newline at end of file +
<Card iiifContent="https://manifests.collections.yale.edu/ycba/obj/702" />

a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
\ No newline at end of file diff --git a/content/markdown.html b/content/markdown.html index c3c32e7..d19038c 100644 --- a/content/markdown.html +++ b/content/markdown.html @@ -11,11 +11,11 @@ --nextra-primary-hue: 225deg; --nextra-primary-saturation: 76%; } -
Markdown

Markdown

+
Markdown

Markdown

Canopy IIIF content pages are authored using Markdown in .mdx files.

Elements

Common Markdown elements (opens in a new tab) are supported for use in Canopy IIIF content. Canopy will automatically transform content created in Markdown to HTML.

@@ -65,4 +65,4 @@

title: Amanda Ira Aldridge Correspondences showHero: true showHighlighted: true ----


a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
\ No newline at end of file +---

a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
\ No newline at end of file diff --git a/content/navigation.html b/content/navigation.html index 51c103d..a1fdd75 100644 --- a/content/navigation.html +++ b/content/navigation.html @@ -11,11 +11,11 @@ --nextra-primary-hue: 225deg; --nextra-primary-saturation: 76%; } -
Navigation

Navigation

+
Navigation

Navigation

Navigation is configured from _meta.json files located in /content.

Primary Navigation

Canopy IIIF creates it's primary navigation at build time from /content/_meta_.json. Each link will have a path and text key. A path value will resolve to a file or directory under /content or /src/pages. The text key will be what's displayed in the navigation bar. The order of the links in the array will be the order they appear in the navigation.

@@ -90,4 +90,4 @@

## Colophon -Some content here


a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
\ No newline at end of file +Some content here

a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
\ No newline at end of file diff --git a/content/referenced-items.html b/content/referenced-items.html index e00c56a..60b02fc 100644 --- a/content/referenced-items.html +++ b/content/referenced-items.html @@ -11,11 +11,11 @@ --nextra-primary-hue: 225deg; --nextra-primary-saturation: 76%; } -
Referenced Items

Referenced Items

+
Referenced Items

Referenced Items

The ReferencedItems component is used in conjunection with referencedManifests front matter key to easily render a grid of Card components. The referenced items must be Manifests within the IIIF Collection used in your Canopy project.

See Front Matter document for more information.

@@ -29,4 +29,4 @@

- https://api.dc.library.northwestern.edu/api/v2/works/14b8212b-7c49-431b-ad04-e4cd5cce6416?as=iiif --- -<ReferencedItems />


a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
\ No newline at end of file +<ReferencedItems />

a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
\ No newline at end of file diff --git a/content/slider.html b/content/slider.html index adceb39..a273d19 100644 --- a/content/slider.html +++ b/content/slider.html @@ -11,11 +11,11 @@ --nextra-primary-hue: 225deg; --nextra-primary-saturation: 76%; } -
Slider

Slider

+
Slider

Slider

Slider is a component that renders a Collection as a carousel component. Each item in the referenced IIIF Collection is rendered as an HTML figure, the thumbnail and a figcaption containing the label of the Manifest. Use rendered figure will link to /work page for the relative Manifest.

Properties

PropertyTypeRequiredDescription
iiifContentstringtrueIIIF Collection URI to be rendered.
@@ -24,4 +24,4 @@

If the Collection is generated by Canopy, the homepage routes will automatically link to respective /work pages and /search facets.

Usage

-
<Slider iiifContent="/api/facet/creator/david-alfaro-siqueiros " />

a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
\ No newline at end of file +
<Slider iiifContent="/api/facet/creator/david-alfaro-siqueiros " />

a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
\ No newline at end of file diff --git a/content/viewer.html b/content/viewer.html index 93a971d..198451c 100644 --- a/content/viewer.html +++ b/content/viewer.html @@ -11,11 +11,11 @@ --nextra-primary-hue: 225deg; --nextra-primary-saturation: 76%; } -
Viewer

Viewer

+
Viewer

Viewer

When creating content for Canopy, you can use the Viewer component to embed a deep-zoom and A/V capable IIIF Viewer into your content. The integrated IIIF Viewer is the Clover IIIF (opens in a new tab) Viewer component

Properties

PropertyTypeRequiredDescription
iiifContentstringtrueIIIF Manifest or Collection URI to be rendered.
@@ -24,4 +24,4 @@

The Viewer will render both IIIF Manifests and IIIF Collections.

Usage

-
<Viewer iiifContent="https://manifests.collections.yale.edu/ycba/obj/702" />

a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
\ No newline at end of file +
<Viewer iiifContent="https://manifests.collections.yale.edu/ycba/obj/702" />

a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
\ No newline at end of file diff --git a/create-markdown-content.html b/create-markdown-content.html index 9808325..b332bec 100644 --- a/create-markdown-content.html +++ b/create-markdown-content.html @@ -11,11 +11,11 @@ --nextra-primary-hue: 225deg; --nextra-primary-saturation: 76%; } -

Create Markdown Content

+

Create Markdown Content

Implementers of Canopy IIIF can author contextual content to support Manifest resources using formatted Markdown files. These files are stored in the /content directory of your project. In doing so, you can add context @@ -161,4 +161,4 @@

Alternatively, you can use the `<Slider />` component to render a carousel of items that link to the local relative `/work` pages representing the Manifests. -<Slider iiifContent="/api/facet/date/1905.json" />


a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
\ No newline at end of file +<Slider iiifContent="/api/facet/date/1905.json" />

a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
\ No newline at end of file diff --git a/customize-the-search-index.html b/customize-the-search-index.html index 2525a2c..5a9cc2f 100644 --- a/customize-the-search-index.html +++ b/customize-the-search-index.html @@ -11,11 +11,11 @@ --nextra-primary-hue: 225deg; --nextra-primary-saturation: 76%; } -

Customize the Search Index

+

Customize the Search Index

Under the hood Canopy uses FlexSearch (opens in a new tab) to power the search index. FlexSearch is a full-text, memory efficient, search library that is @@ -148,4 +148,4 @@

An Arabic phrase (e.g. "مجموع الفوائد.")
  • A Manifest summary value (e.g. "Fāʼidah of Prophet Yūsuf on gaining people's love and respect.")
  • A Manifest metadata value (e.g. "Falke", or "Prophet Yūsuf")
  • -

    canopy home page

    canopy home page


    a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
    \ No newline at end of file +

    canopy home page

    canopy home page


    a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
    \ No newline at end of file diff --git a/deploy-to-github-pages.html b/deploy-to-github-pages.html index c505c89..be7c951 100644 --- a/deploy-to-github-pages.html +++ b/deploy-to-github-pages.html @@ -11,11 +11,11 @@ --nextra-primary-hue: 225deg; --nextra-primary-saturation: 76%; } -

    Deploy to GitHub Pages

    +

    Deploy to GitHub Pages

    Canopy IIIF is designed to be deployed as a statically generated website. Static sites are a great option for many projects, as they are fast, secure, and easy to deploy and maintain. This guide will walk you through the @@ -40,4 +40,4 @@

    Watch the build

    Once the gh-pages branch exists and the action indicator is a green check mark, again press the Settings button. Under Code and automation, click Pages and select gh-pages from the Branch dropdown under Build and deployment -and click *Save.

    Set gh-pages in Settings

    Validate the URL

    Now your Canopy site will be active at a URL derived from values you defined in the NEXT_PUBLIC_URL and NEXT_PUBLIC_BASE_PATH settings.

    i.e. https://[NEXT_PUBLIC_URL]/[NEXT_PUBLIC_BASE_PATH]

    You can also view your live domain in Github by clicking the top Settings button, and then under Code and automation -> Pages.

    View live gh-pages domain in Settings


    a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
    \ No newline at end of file +and click *Save.

    Set gh-pages in Settings

    Validate the URL

    Now your Canopy site will be active at a URL derived from values you defined in the NEXT_PUBLIC_URL and NEXT_PUBLIC_BASE_PATH settings.

    i.e. https://[NEXT_PUBLIC_URL]/[NEXT_PUBLIC_BASE_PATH]

    You can also view your live domain in Github by clicking the top Settings button, and then under Code and automation -> Pages.

    View live gh-pages domain in Settings


    a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
    \ No newline at end of file diff --git a/deploy-to-vercel.html b/deploy-to-vercel.html index 0f7eab6..c8794db 100644 --- a/deploy-to-vercel.html +++ b/deploy-to-vercel.html @@ -11,11 +11,11 @@ --nextra-primary-hue: 225deg; --nextra-primary-saturation: 76%; } -

    Deploy to Vercel

    +

    Deploy to Vercel

    Canopy can be deployed to a Next.js managed hosting service (opens in a new tab). Doing so will allow you to take advantage of server-side components (e.g., @@ -30,4 +30,4 @@

    Import the Repository

    After you've logged in to Vercel, click the Start deploying button. Then, from the Let's Build Something New screen, click the Import button next to the repository you've created.

    Import Repository

    Configure

    Next, give your repository a name a press Deploy. Vercel will then build and deploy your application and make it available at ${YOUR-PROJECT-NAME}.vercel.app.

    Deploy Repository

    Environment Variables

    Finally, edit the .env in your repository on Github and make sure that the NEXT_PUBLIC_URL variable and NEXT_PUBLIC_BASE_PATH variables match your project in Vercel. By default, the NEXT_PUBLIC_URL variable should be -similar to your project name and you should not have to modify NEXT_PUBLIC_BASE_PATH.

    Set Environment Variables


    a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
    \ No newline at end of file +similar to your project name and you should not have to modify NEXT_PUBLIC_BASE_PATH.

    Set Environment Variables


    a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
    \ No newline at end of file diff --git a/development.html b/development.html index 948749f..b210e98 100644 --- a/development.html +++ b/development.html @@ -11,11 +11,11 @@ --nextra-primary-hue: 225deg; --nextra-primary-saturation: 76%; } -

    Development

    +

    Development

    Environment

    When you are ready to deploy your site, you will need to modify environment variables to reflect how your site is hosted.

    Updating

    @@ -27,4 +27,4 @@

    Avoid Code Conflicts

    To avoid potential code conflicts on future release updates, it is advised not to update the following integrated Canopy pages in the Next.js pages directory.

      • index.tsx
      • map.tsx
      • metadata.tsx
      • search.tsx
  • -

    Note: Future considerations will be delivered upon for updating content within these pages.


    a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
    \ No newline at end of file +

    Note: Future considerations will be delivered upon for updating content within these pages.


    a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
    \ No newline at end of file diff --git a/enable-a-map-with-navPlace.html b/enable-a-map-with-navPlace.html index aabeed5..b559f67 100644 --- a/enable-a-map-with-navPlace.html +++ b/enable-a-map-with-navPlace.html @@ -11,11 +11,11 @@ --nextra-primary-hue: 225deg; --nextra-primary-saturation: 76%; } -

    Enable a Map with navPlace Properties

    +

    Enable a Map with navPlace Properties

    Canopy IIIF allows users to explore the underlying collection through an interactive map. When activated, this component displays a map featuring markers representing each point Feature within the navPlace (opens in a new tab) properties found throughout the Manifests of the overarching collection. This guide will walk @@ -149,4 +149,4 @@

    "path": "/about", "text": "About" } -]

    Customized Canopy Map Component


    a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
    \ No newline at end of file +]

    Customized Canopy Map Component


    a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
    \ No newline at end of file diff --git a/examples/guide-stackblitz-default.png b/examples/guide-stackblitz-default.png new file mode 100644 index 0000000..1d36795 Binary files /dev/null and b/examples/guide-stackblitz-default.png differ diff --git a/examples/guide-stackblitz-terminal.png b/examples/guide-stackblitz-terminal.png new file mode 100644 index 0000000..4baa1c9 Binary files /dev/null and b/examples/guide-stackblitz-terminal.png differ diff --git a/get-started.html b/get-started.html index 630e931..1c2e3dd 100644 --- a/get-started.html +++ b/get-started.html @@ -11,14 +11,15 @@ --nextra-primary-hue: 225deg; --nextra-primary-saturation: 76%; } -

    Create a Canopy Project

    +

    Create a Canopy Project

    Have a project in mind? Let's get started! This guide will walk you through the process of creating a basic Canopy IIIF project using a readily provided IIIF Collection.

    +

    Open in StackBlitz (opens in a new tab)

    Use Case

    You are on a team at a university library seeking to create a digital exhibit for a Korean Literary (opens in a new tab) collection in your digital repository that is provided as a IIIF Collection (opens in a new tab). You want to create @@ -109,4 +110,4 @@

    Next.js 13.5.4 - Local: http://localhost:5001 -- Environments: .env

    Browse your site

    In your browser, navigate to http://localhost:5001 (opens in a new tab) to view your Canopy IIIF site.

    Home page

    Content on the home page is geared towards discovery of your IIIF Collection. The home page will render a hero component for featured Manifests and a slider components for defined metadata labels and their most common values.

    canopy home page

    Search page

    All Manifests in your IIIF Collection are now represented as results at the /search route. In addition to full text search, results are filterable by defined metadata labels and available values. In the example Korean Literary Collection, there are 135 items available for search. A query for poems returns 43 results.

    canopy search results for poems

    Work page

    All Manifests in your IIIF Collection are now available as statically generated pages with a /work/slug-generated-from-label pattern. Each work represents a single Manifest, its descriptive metadata, and various other IIIF properties. Clover IIIF (opens in a new tab) is the defacto deep-zoom and A/V capable viewer in Canopy IIIF but other IIIF viewers can be easily configured.

    canopy work page for single result


    a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
    \ No newline at end of file +- Environments: .env

    Browse your site

    In your browser, navigate to http://localhost:5001 (opens in a new tab) to view your Canopy IIIF site.

    Home page

    Content on the home page is geared towards discovery of your IIIF Collection. The home page will render a hero component for featured Manifests and a slider components for defined metadata labels and their most common values.

    canopy home page

    Search page

    All Manifests in your IIIF Collection are now represented as results at the /search route. In addition to full text search, results are filterable by defined metadata labels and available values. In the example Korean Literary Collection, there are 135 items available for search. A query for poems returns 43 results.

    canopy search results for poems

    Work page

    All Manifests in your IIIF Collection are now available as statically generated pages with a /work/slug-generated-from-label pattern. Each work represents a single Manifest, its descriptive metadata, and various other IIIF properties. Clover IIIF (opens in a new tab) is the defacto deep-zoom and A/V capable viewer in Canopy IIIF but other IIIF viewers can be easily configured.

    canopy work page for single result


    a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
    \ No newline at end of file diff --git a/guides.html b/guides.html index 76f1d31..be2af19 100644 --- a/guides.html +++ b/guides.html @@ -11,10 +11,10 @@ --nextra-primary-hue: 225deg; --nextra-primary-saturation: 76%; } -

    User Guides

    +

    a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
    \ No newline at end of file +

    a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
    \ No newline at end of file diff --git a/index.html b/index.html index d4d0bb6..1eac0b5 100644 --- a/index.html +++ b/index.html @@ -11,7 +11,7 @@ --nextra-primary-hue: 225deg; --nextra-primary-saturation: 76%; } -

    StackBlitz Playground

    +

    Want to quickly try out Canopy? Click the button below to open a +StackBlitz (opens in a new tab) playground.

    +

    Open in StackBlitz (opens in a new tab)

    +

    Use Case(s)

    +
      +
    • You don't want to install Canopy locally or be concerned with a developer environment.
    • +
    • You want to quickly experiment with config, settings, and or target Collections.
    • +
    • You'd like to showcase a IIIF-driven project for your team or colleagues.
    • +
    +
    💡

    There may be CORS issues rendering images in Safari and Firefox browsers. If +you're experiencing broken images, please try Chrome or Brave browsers.

    +

    Implementation

    +

    Create a StackBlitz instance

    Click on the button above, "Open in StackBlitz". This will open a new browser tab and load the Canopy project in StackBlitz.

    canopy home page

    Customize Canopy Collection

    If you'd like to jump right into customizing or tinkering with config settings, try re-naming /config/canopy.sample.json to /config/canopy.json. This will override the default config settings and allow you to experiment with your own settings.

    When demoing in StackBlitz, your are in dev mode when configuring +/config/canopy.json. This means that you can use the dev settings to +target a IIIF Collection or Manifest.

    For example, let's use the Charlotte Mormon Collection (opens in a new tab) from Northwestern University Libaries.

    /config/canopy.json
    {
    +  "prod": {
    +    "label": { "none": ["Collection Title"] },
    +    "summary": {
    +      "none": ["Brief description of the site and its contents."]
    +    },
    +    "collection": "https://example.org/iiif/collection.json",
    +    "featured": [
    +      "https://example.org/manifest-1.json",
    +      "https://example.org/manifest-2.json"
    +    ],
    +    "metadata": ["Date", "Subject"]
    +  },
    +  "dev": {
    +    "label": { "none": ["Collection Title"] },
    +    "summary": {
    +      "none": ["Brief description of the site and its contents."]
    +    },
    +    "collection": "https://api.dc.library.northwestern.edu/api/v2/search?query=collection.id:%22b46c9cf7-0e49-4993-9e0e-3cda030c4439%22&as=iiif",
    +    "featured": [],
    +    "metadata": ["Date", "Subject"]
    +  }
    +}

    After making any configuration changes, you'll need to re-start the dev server (as you would have to in a local development environment also). StackBlitz gives access to a Terminal.

    canopy home page

    Click into the Terminal and quit the dev server by pressing ctrl + c. Then, re-start the dev server by running npm run dev.

    Customize Canopy Options

    For example, you could experiment with customizing Search, following the Search Guide. To start customizing options, rename /config/options.sample.json to /config/options.json.


    a IIIF Collection sourced site generator in Next.js for digital collections, humanities, and exhibitions
    \ No newline at end of file