@strapi/admin 5.32.0 → 5.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/admin/src/components/GuidedTour/Overview.js +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Overview.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Overview.mjs +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Overview.mjs.map +1 -1
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.js +5 -0
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs +5 -0
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs.map +1 -1
- package/dist/admin/admin/src/features/Notifications.js +35 -75
- package/dist/admin/admin/src/features/Notifications.js.map +1 -1
- package/dist/admin/admin/src/features/Notifications.mjs +37 -77
- package/dist/admin/admin/src/features/Notifications.mjs.map +1 -1
- package/dist/admin/admin/src/translations/ru.json.js +67 -2
- package/dist/admin/admin/src/translations/ru.json.js.map +1 -1
- package/dist/admin/admin/src/translations/ru.json.mjs +67 -2
- package/dist/admin/admin/src/translations/ru.json.mjs.map +1 -1
- package/dist/admin/src/features/Notifications.d.ts +4 -5
- package/package.json +8 -7
|
@@ -164,7 +164,7 @@ const GuidedTourHomepageOverview = ()=>{
|
|
|
164
164
|
});
|
|
165
165
|
}
|
|
166
166
|
};
|
|
167
|
-
if (!guidedTourMeta?.data
|
|
167
|
+
if (!guidedTourMeta?.data?.isFirstSuperAdminUser || !enabled || hidden || process.env.NODE_ENV !== 'development') {
|
|
168
168
|
return null;
|
|
169
169
|
}
|
|
170
170
|
return /*#__PURE__*/ jsxRuntime.jsxs(Container, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Overview.js","sources":["../../../../../../admin/src/components/GuidedTour/Overview.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Dialog, Flex, Link, ProgressBar, Typography } from '@strapi/design-system';\nimport { CheckCircle, ChevronRight } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled, useTheme } from 'styled-components';\n\nimport { useTracking } from '../../features/Tracking';\nimport { useGetGuidedTourMetaQuery } from '../../services/admin';\nimport { ConfirmDialog } from '../ConfirmDialog';\n\nimport { type ValidTourName, useGuidedTour, getCompletedTours } from './Context';\nimport { GUIDED_TOUR_REQUIRED_ACTIONS } from './utils/constants';\n\n/* -------------------------------------------------------------------------------------------------\n * Styled\n * -----------------------------------------------------------------------------------------------*/\n\nconst StyledProgressBar = styled(ProgressBar)`\n width: 100%;\n background-color: ${({ theme }) => theme.colors.neutral150};\n > div {\n background-color: ${({ theme }) => theme.colors.success500};\n }\n`;\n\nconst Container = styled(Flex)`\n width: 100%;\n border-radius: ${({ theme }) => theme.borderRadius};\n background-color: ${({ theme }) => theme.colors.neutral0};\n box-shadow: ${({ theme }) => theme.shadows.tableShadow};\n align-items: stretch;\n`;\n\nconst ContentSection = styled(Flex)`\n flex: 1;\n padding: ${({ theme }) => theme.spaces[8]};\n`;\n\nconst VerticalSeparator = styled.div`\n width: 1px;\n background-color: ${({ theme }) => theme.colors.neutral150};\n`;\n\nconst TourTaskContainer = styled(Flex)`\n &:not(:last-child) {\n border-bottom: ${({ theme }) => `1px solid ${theme.colors.neutral150}`};\n }\n padding: ${({ theme }) => theme.spaces[4]};\n`;\n\nconst TodoCircle = styled(Box)`\n border: 1px solid ${({ theme }) => theme.colors.neutral300};\n border-radius: 50%;\n height: 13px;\n width: 13px;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Constants\n * -----------------------------------------------------------------------------------------------*/\n\nconst LINK_LABEL = {\n id: 'tours.overview.tour.link',\n defaultMessage: 'Start',\n};\nconst DONE_LABEL = {\n id: 'tours.overview.tour.done',\n defaultMessage: 'Done',\n};\n\nconst TASK_CONTENT = [\n {\n tourName: 'contentTypeBuilder',\n link: {\n label: LINK_LABEL,\n to: '/plugins/content-type-builder',\n },\n title: {\n id: 'tours.overview.contentTypeBuilder.label',\n defaultMessage: 'Create your schema',\n },\n done: DONE_LABEL,\n },\n {\n tourName: 'contentManager',\n link: {\n label: LINK_LABEL,\n to: '/content-manager',\n },\n title: {\n id: 'tours.overview.contentManager.label',\n defaultMessage: 'Create and publish content',\n },\n done: DONE_LABEL,\n },\n {\n tourName: 'apiTokens',\n link: {\n label: LINK_LABEL,\n to: '/settings/api-tokens',\n },\n title: {\n id: 'tours.overview.apiTokens.label',\n defaultMessage: 'Copy an API token',\n },\n done: DONE_LABEL,\n },\n {\n tourName: 'strapiCloud',\n link: {\n label: {\n id: 'tours.overview.strapiCloud.link',\n defaultMessage: 'Read documentation',\n },\n to: 'https://docs.strapi.io/cloud/intro',\n },\n title: {\n id: 'tours.overview.strapiCloud.label',\n defaultMessage: 'Deploy your application to Strapi Cloud',\n },\n done: DONE_LABEL,\n isExternal: true,\n },\n];\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourOverview\n * -----------------------------------------------------------------------------------------------*/\n\nconst WaveIcon = () => {\n const theme = useTheme();\n return (\n <svg width=\"26\" height=\"27\" viewBox=\"0 0 26 27\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M24.4138 9.30762C25.1565 10.5578 25.6441 11.9429 25.8481 13.3827C26.0522 14.8225 25.9687 16.2885 25.6026 17.6958C25.2365 19.1032 24.5949 20.4239 23.7151 21.5818C22.8352 22.7396 21.7345 23.7114 20.4766 24.4411C19.2188 25.1708 17.8287 25.6439 16.3868 25.8329C14.945 26.022 13.48 25.9232 12.0765 25.5424C10.673 25.1616 9.35903 24.5063 8.21045 23.6144C7.06188 22.7226 6.10154 21.6118 5.385 20.3464L0.268755 11.4851C0.0253867 11.0275 -0.0308559 10.4934 0.111878 9.99514C0.254612 9.49692 0.585176 9.07356 1.03392 8.81426C1.48266 8.55497 2.01453 8.47999 2.51746 8.60514C3.02039 8.73028 3.45511 9.04576 3.73001 9.48512L6.05 13.5001C6.11567 13.6139 6.20309 13.7136 6.30729 13.7936C6.41148 13.8735 6.53041 13.9322 6.65728 13.9662C6.78415 14.0002 6.91647 14.0089 7.04669 13.9918C7.17692 13.9746 7.3025 13.932 7.41625 13.8664C7.53001 13.8007 7.62972 13.7133 7.70969 13.6091C7.78966 13.5049 7.84833 13.386 7.88234 13.2591C7.91635 13.1322 7.92504 12.9999 7.90791 12.8697C7.89078 12.7395 7.84817 12.6139 7.78251 12.5001L2.87501 4.00012C2.63164 3.54255 2.57539 3.00837 2.71813 2.51014C2.86086 2.01192 3.19143 1.58856 3.64017 1.32926C4.08891 1.06997 4.62078 0.994994 5.12371 1.12014C5.62664 1.24528 6.06136 1.56077 6.33626 2.00012L11.25 10.5001C11.3137 10.6175 11.4003 10.7209 11.5046 10.8042C11.609 10.8876 11.7289 10.9492 11.8575 10.9854C11.986 11.0216 12.1205 11.0318 12.253 11.0152C12.3855 10.9986 12.5133 10.9556 12.629 10.8888C12.7446 10.8221 12.8457 10.7328 12.9263 10.6263C13.0068 10.5198 13.0653 10.3982 13.0981 10.2688C13.1309 10.1394 13.1375 10.0047 13.1174 9.87264C13.0974 9.74062 13.0511 9.61395 12.9813 9.50012L9.23125 3.00012C8.9738 2.54125 8.90753 1.99941 9.04682 1.49203C9.18612 0.984641 9.51974 0.552582 9.97539 0.289483C10.431 0.0263834 10.972 -0.0465606 11.4811 0.0864587C11.9902 0.219478 12.4263 0.547745 12.695 1.00012L17.75 9.76512C16.6322 10.8916 16.0035 12.4132 16 14.0001C15.9963 15.2989 16.4177 16.5633 17.2 17.6001C17.278 17.7074 17.3766 17.7981 17.49 17.867C17.6034 17.9358 17.7293 17.9814 17.8605 18.001C17.9917 18.0207 18.1255 18.0141 18.2541 17.9816C18.3827 17.9491 18.5035 17.8913 18.6096 17.8116C18.7156 17.7319 18.8048 17.6319 18.8718 17.5175C18.9388 17.403 18.9824 17.2763 19 17.1448C19.0176 17.0134 19.0089 16.8797 18.9743 16.7516C18.9398 16.6236 18.8801 16.5036 18.7988 16.3989C18.4824 15.9765 18.2528 15.4958 18.1231 14.9843C17.9934 14.4729 17.9661 13.9408 18.0429 13.4188C18.1197 12.8967 18.2991 12.3951 18.5706 11.9426C18.8421 11.4902 19.2005 11.096 19.625 10.7826C19.8224 10.6365 19.9592 10.4229 20.0092 10.1825C20.0592 9.94202 20.019 9.69157 19.8963 9.47887L18.4638 7.00012C18.2063 6.54125 18.14 5.99941 18.2793 5.49203C18.4186 4.98464 18.7522 4.55258 19.2079 4.28948C19.6635 4.02638 20.2045 3.95344 20.7136 4.08646C21.2227 4.21948 21.6588 4.54774 21.9275 5.00012L24.4138 9.30762ZM20.7425 2.18262C21.4432 2.36725 22.1001 2.68931 22.6752 3.13008C23.2503 3.57084 23.7321 4.12153 24.0925 4.75012L24.1338 4.82137C24.2664 5.05111 24.4848 5.21877 24.741 5.28745C24.8679 5.32146 25.0002 5.33015 25.1304 5.31302C25.2607 5.29589 25.3862 5.25328 25.5 5.18762C25.6138 5.12196 25.7135 5.03453 25.7934 4.93034C25.8734 4.82614 25.9321 4.70721 25.9661 4.58035C26.0001 4.45348 26.0088 4.32115 25.9917 4.19093C25.9745 4.0607 25.9319 3.93513 25.8663 3.82137L25.825 3.75012C25.3335 2.89321 24.6767 2.14252 23.8926 1.54167C23.1085 0.940821 22.2128 0.501801 21.2575 0.250119C21.002 0.184041 20.7307 0.221665 20.5028 0.354786C20.2749 0.487908 20.1088 0.705731 20.0409 0.960766C19.9729 1.2158 20.0085 1.48736 20.14 1.71625C20.2714 1.94513 20.488 2.11277 20.7425 2.18262ZM6.9475 25.2151C5.65171 24.1925 4.56342 22.9315 3.74126 21.5001C3.67559 21.3864 3.58817 21.2866 3.48397 21.2067C3.37978 21.1267 3.26085 21.068 3.13398 21.034C3.00711 21 2.87479 20.9913 2.74456 21.0085C2.61434 21.0256 2.48876 21.0682 2.37501 21.1339C2.26125 21.1995 2.16154 21.287 2.08157 21.3911C2.00159 21.4953 1.94293 21.6143 1.90892 21.7411C1.87491 21.868 1.86622 22.0003 1.88335 22.1306C1.90048 22.2608 1.94309 22.3864 2.00875 22.5001C2.95782 24.1511 4.21368 25.6056 5.70875 26.7851C5.91728 26.9455 6.18063 27.0173 6.44172 26.9849C6.70282 26.9525 6.94062 26.8185 7.10359 26.612C7.26655 26.4054 7.34156 26.143 7.31234 25.8815C7.28313 25.62 7.15204 25.3806 6.9475 25.2151Z\"\n fill={theme.colors.primary600}\n />\n </svg>\n );\n};\n\nexport const GuidedTourHomepageOverview = () => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const tourState = useGuidedTour('Overview', (s) => s.state.tours);\n const dispatch = useGuidedTour('Overview', (s) => s.dispatch);\n const enabled = useGuidedTour('Overview', (s) => s.state.enabled);\n const hidden = useGuidedTour('Overview', (s) => s.state.hidden);\n const completedActions = useGuidedTour('Overview', (s) => s.state.completedActions);\n const { data: guidedTourMeta } = useGetGuidedTourMetaQuery();\n\n const tourNames = Object.keys(tourState) as ValidTourName[];\n const completedTours = getCompletedTours(tourState);\n const completionPercentage =\n tourNames.length > 0 ? Math.round((completedTours.length / tourNames.length) * 100) : 0;\n\n const handleConfirmDialog = () => {\n trackUsage('didSkipGuidedTour', { name: 'all' });\n dispatch({ type: 'skip_all_tours' });\n };\n\n const handleStartTour = (tourName: ValidTourName) => {\n trackUsage('didStartGuidedTour', { name: tourName, fromHomepage: true });\n\n if (tourName === 'strapiCloud') {\n trackUsage('didCompleteGuidedTour', { name: tourName });\n dispatch({ type: 'next_step', payload: tourName });\n }\n };\n\n if (\n !guidedTourMeta?.data.isFirstSuperAdminUser ||\n !enabled ||\n hidden ||\n process.env.NODE_ENV !== 'development'\n ) {\n return null;\n }\n\n return (\n <Container tag=\"section\" gap={0}>\n {/* Greeting */}\n <ContentSection direction=\"column\" gap={2} alignItems=\"start\">\n <WaveIcon />\n <Flex direction=\"column\" alignItems=\"start\" gap={1} paddingTop={4}>\n <Typography tag=\"h2\" fontSize=\"20px\" fontWeight=\"bold\">\n {formatMessage({\n id: 'tours.overview.title',\n defaultMessage: 'Discover your application!',\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'tours.overview.subtitle',\n defaultMessage: 'Follow the guided tour to get the most out of Strapi.',\n })}\n </Typography>\n </Flex>\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n width=\"100%\"\n paddingTop={5}\n paddingBottom={8}\n gap={2}\n >\n <Typography variant=\"pi\">\n {formatMessage(\n {\n id: 'tours.overview.completed',\n defaultMessage: '{completed}% completed',\n },\n { completed: completionPercentage }\n )}\n </Typography>\n <StyledProgressBar value={completionPercentage} />\n </Flex>\n <Dialog.Root>\n <Dialog.Trigger>\n <Button variant=\"tertiary\">\n {formatMessage({\n id: 'tours.overview.close',\n defaultMessage: 'Close guided tour',\n })}\n </Button>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleConfirmDialog}>\n {formatMessage({\n id: 'tours.overview.close.description',\n defaultMessage: 'Are you sure you want to close the guided tour?',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </ContentSection>\n <VerticalSeparator />\n {/* Task List */}\n <ContentSection direction=\"column\" alignItems=\"start\">\n <Typography variant=\"omega\" fontWeight=\"bold\">\n {formatMessage({\n id: 'tours.overview.tasks',\n defaultMessage: 'Your tasks',\n })}\n </Typography>\n <Box tag=\"ul\" width=\"100%\" borderColor=\"neutral150\" marginTop={4} hasRadius>\n {TASK_CONTENT.map((task) => {\n const tourName = task.tourName as ValidTourName;\n const tour = tourState[tourName];\n\n const isLinkDisabled =\n tourName !== 'contentTypeBuilder' &&\n !completedActions.includes(\n GUIDED_TOUR_REQUIRED_ACTIONS.contentTypeBuilder.createSchema\n );\n\n return (\n <TourTaskContainer\n tag=\"li\"\n aria-label={formatMessage(task.title)}\n key={tourName}\n alignItems=\"center\"\n justifyContent=\"space-between\"\n >\n {tour.isCompleted ? (\n <>\n <Flex gap={2}>\n <CheckCircle fill=\"success500\" />\n <Typography style={{ textDecoration: 'line-through' }} textColor=\"neutral500\">\n {formatMessage(task.title)}\n </Typography>\n </Flex>\n <Typography variant=\"omega\" textColor=\"neutral500\">\n {formatMessage(task.done)}\n </Typography>\n </>\n ) : (\n <>\n <Flex gap={2} alignItems=\"center\">\n <Flex height=\"16px\" width=\"16px\" justifyContent=\"center\">\n <TodoCircle />\n </Flex>\n <Typography>{formatMessage(task.title)}</Typography>\n </Flex>\n {task.isExternal ? (\n <Link\n isExternal\n disabled={isLinkDisabled}\n href={task.link.to}\n onClick={() => handleStartTour(task.tourName as ValidTourName)}\n >\n {formatMessage(task.link.label)}\n </Link>\n ) : (\n <Link\n endIcon={<ChevronRight />}\n disabled={isLinkDisabled}\n to={task.link.to}\n tag={NavLink}\n onClick={() =>\n trackUsage('didStartGuidedTour', { name: tourName, fromHomepage: true })\n }\n >\n {formatMessage(task.link.label)}\n </Link>\n )}\n </>\n )}\n </TourTaskContainer>\n );\n })}\n </Box>\n </ContentSection>\n </Container>\n );\n};\n"],"names":["StyledProgressBar","styled","ProgressBar","theme","colors","neutral150","success500","Container","Flex","borderRadius","neutral0","shadows","tableShadow","ContentSection","spaces","VerticalSeparator","div","TourTaskContainer","TodoCircle","Box","neutral300","LINK_LABEL","id","defaultMessage","DONE_LABEL","TASK_CONTENT","tourName","link","label","to","title","done","isExternal","WaveIcon","useTheme","_jsx","svg","width","height","viewBox","fill","xmlns","path","d","primary600","GuidedTourHomepageOverview","formatMessage","useIntl","trackUsage","useTracking","tourState","useGuidedTour","s","state","tours","dispatch","enabled","hidden","completedActions","data","guidedTourMeta","useGetGuidedTourMetaQuery","tourNames","Object","keys","completedTours","getCompletedTours","completionPercentage","length","Math","round","handleConfirmDialog","name","type","handleStartTour","fromHomepage","payload","isFirstSuperAdminUser","process","env","NODE_ENV","_jsxs","tag","gap","direction","alignItems","paddingTop","Typography","fontSize","fontWeight","paddingBottom","variant","completed","value","Dialog","Root","Trigger","Button","ConfirmDialog","onConfirm","borderColor","marginTop","hasRadius","map","task","tour","isLinkDisabled","includes","GUIDED_TOUR_REQUIRED_ACTIONS","contentTypeBuilder","createSchema","aria-label","justifyContent","isCompleted","_Fragment","CheckCircle","style","textDecoration","textColor","Link","disabled","href","onClick","endIcon","ChevronRight","NavLink"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Overview.js","sources":["../../../../../../admin/src/components/GuidedTour/Overview.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Dialog, Flex, Link, ProgressBar, Typography } from '@strapi/design-system';\nimport { CheckCircle, ChevronRight } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled, useTheme } from 'styled-components';\n\nimport { useTracking } from '../../features/Tracking';\nimport { useGetGuidedTourMetaQuery } from '../../services/admin';\nimport { ConfirmDialog } from '../ConfirmDialog';\n\nimport { type ValidTourName, useGuidedTour, getCompletedTours } from './Context';\nimport { GUIDED_TOUR_REQUIRED_ACTIONS } from './utils/constants';\n\n/* -------------------------------------------------------------------------------------------------\n * Styled\n * -----------------------------------------------------------------------------------------------*/\n\nconst StyledProgressBar = styled(ProgressBar)`\n width: 100%;\n background-color: ${({ theme }) => theme.colors.neutral150};\n > div {\n background-color: ${({ theme }) => theme.colors.success500};\n }\n`;\n\nconst Container = styled(Flex)`\n width: 100%;\n border-radius: ${({ theme }) => theme.borderRadius};\n background-color: ${({ theme }) => theme.colors.neutral0};\n box-shadow: ${({ theme }) => theme.shadows.tableShadow};\n align-items: stretch;\n`;\n\nconst ContentSection = styled(Flex)`\n flex: 1;\n padding: ${({ theme }) => theme.spaces[8]};\n`;\n\nconst VerticalSeparator = styled.div`\n width: 1px;\n background-color: ${({ theme }) => theme.colors.neutral150};\n`;\n\nconst TourTaskContainer = styled(Flex)`\n &:not(:last-child) {\n border-bottom: ${({ theme }) => `1px solid ${theme.colors.neutral150}`};\n }\n padding: ${({ theme }) => theme.spaces[4]};\n`;\n\nconst TodoCircle = styled(Box)`\n border: 1px solid ${({ theme }) => theme.colors.neutral300};\n border-radius: 50%;\n height: 13px;\n width: 13px;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Constants\n * -----------------------------------------------------------------------------------------------*/\n\nconst LINK_LABEL = {\n id: 'tours.overview.tour.link',\n defaultMessage: 'Start',\n};\nconst DONE_LABEL = {\n id: 'tours.overview.tour.done',\n defaultMessage: 'Done',\n};\n\nconst TASK_CONTENT = [\n {\n tourName: 'contentTypeBuilder',\n link: {\n label: LINK_LABEL,\n to: '/plugins/content-type-builder',\n },\n title: {\n id: 'tours.overview.contentTypeBuilder.label',\n defaultMessage: 'Create your schema',\n },\n done: DONE_LABEL,\n },\n {\n tourName: 'contentManager',\n link: {\n label: LINK_LABEL,\n to: '/content-manager',\n },\n title: {\n id: 'tours.overview.contentManager.label',\n defaultMessage: 'Create and publish content',\n },\n done: DONE_LABEL,\n },\n {\n tourName: 'apiTokens',\n link: {\n label: LINK_LABEL,\n to: '/settings/api-tokens',\n },\n title: {\n id: 'tours.overview.apiTokens.label',\n defaultMessage: 'Copy an API token',\n },\n done: DONE_LABEL,\n },\n {\n tourName: 'strapiCloud',\n link: {\n label: {\n id: 'tours.overview.strapiCloud.link',\n defaultMessage: 'Read documentation',\n },\n to: 'https://docs.strapi.io/cloud/intro',\n },\n title: {\n id: 'tours.overview.strapiCloud.label',\n defaultMessage: 'Deploy your application to Strapi Cloud',\n },\n done: DONE_LABEL,\n isExternal: true,\n },\n];\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourOverview\n * -----------------------------------------------------------------------------------------------*/\n\nconst WaveIcon = () => {\n const theme = useTheme();\n return (\n <svg width=\"26\" height=\"27\" viewBox=\"0 0 26 27\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M24.4138 9.30762C25.1565 10.5578 25.6441 11.9429 25.8481 13.3827C26.0522 14.8225 25.9687 16.2885 25.6026 17.6958C25.2365 19.1032 24.5949 20.4239 23.7151 21.5818C22.8352 22.7396 21.7345 23.7114 20.4766 24.4411C19.2188 25.1708 17.8287 25.6439 16.3868 25.8329C14.945 26.022 13.48 25.9232 12.0765 25.5424C10.673 25.1616 9.35903 24.5063 8.21045 23.6144C7.06188 22.7226 6.10154 21.6118 5.385 20.3464L0.268755 11.4851C0.0253867 11.0275 -0.0308559 10.4934 0.111878 9.99514C0.254612 9.49692 0.585176 9.07356 1.03392 8.81426C1.48266 8.55497 2.01453 8.47999 2.51746 8.60514C3.02039 8.73028 3.45511 9.04576 3.73001 9.48512L6.05 13.5001C6.11567 13.6139 6.20309 13.7136 6.30729 13.7936C6.41148 13.8735 6.53041 13.9322 6.65728 13.9662C6.78415 14.0002 6.91647 14.0089 7.04669 13.9918C7.17692 13.9746 7.3025 13.932 7.41625 13.8664C7.53001 13.8007 7.62972 13.7133 7.70969 13.6091C7.78966 13.5049 7.84833 13.386 7.88234 13.2591C7.91635 13.1322 7.92504 12.9999 7.90791 12.8697C7.89078 12.7395 7.84817 12.6139 7.78251 12.5001L2.87501 4.00012C2.63164 3.54255 2.57539 3.00837 2.71813 2.51014C2.86086 2.01192 3.19143 1.58856 3.64017 1.32926C4.08891 1.06997 4.62078 0.994994 5.12371 1.12014C5.62664 1.24528 6.06136 1.56077 6.33626 2.00012L11.25 10.5001C11.3137 10.6175 11.4003 10.7209 11.5046 10.8042C11.609 10.8876 11.7289 10.9492 11.8575 10.9854C11.986 11.0216 12.1205 11.0318 12.253 11.0152C12.3855 10.9986 12.5133 10.9556 12.629 10.8888C12.7446 10.8221 12.8457 10.7328 12.9263 10.6263C13.0068 10.5198 13.0653 10.3982 13.0981 10.2688C13.1309 10.1394 13.1375 10.0047 13.1174 9.87264C13.0974 9.74062 13.0511 9.61395 12.9813 9.50012L9.23125 3.00012C8.9738 2.54125 8.90753 1.99941 9.04682 1.49203C9.18612 0.984641 9.51974 0.552582 9.97539 0.289483C10.431 0.0263834 10.972 -0.0465606 11.4811 0.0864587C11.9902 0.219478 12.4263 0.547745 12.695 1.00012L17.75 9.76512C16.6322 10.8916 16.0035 12.4132 16 14.0001C15.9963 15.2989 16.4177 16.5633 17.2 17.6001C17.278 17.7074 17.3766 17.7981 17.49 17.867C17.6034 17.9358 17.7293 17.9814 17.8605 18.001C17.9917 18.0207 18.1255 18.0141 18.2541 17.9816C18.3827 17.9491 18.5035 17.8913 18.6096 17.8116C18.7156 17.7319 18.8048 17.6319 18.8718 17.5175C18.9388 17.403 18.9824 17.2763 19 17.1448C19.0176 17.0134 19.0089 16.8797 18.9743 16.7516C18.9398 16.6236 18.8801 16.5036 18.7988 16.3989C18.4824 15.9765 18.2528 15.4958 18.1231 14.9843C17.9934 14.4729 17.9661 13.9408 18.0429 13.4188C18.1197 12.8967 18.2991 12.3951 18.5706 11.9426C18.8421 11.4902 19.2005 11.096 19.625 10.7826C19.8224 10.6365 19.9592 10.4229 20.0092 10.1825C20.0592 9.94202 20.019 9.69157 19.8963 9.47887L18.4638 7.00012C18.2063 6.54125 18.14 5.99941 18.2793 5.49203C18.4186 4.98464 18.7522 4.55258 19.2079 4.28948C19.6635 4.02638 20.2045 3.95344 20.7136 4.08646C21.2227 4.21948 21.6588 4.54774 21.9275 5.00012L24.4138 9.30762ZM20.7425 2.18262C21.4432 2.36725 22.1001 2.68931 22.6752 3.13008C23.2503 3.57084 23.7321 4.12153 24.0925 4.75012L24.1338 4.82137C24.2664 5.05111 24.4848 5.21877 24.741 5.28745C24.8679 5.32146 25.0002 5.33015 25.1304 5.31302C25.2607 5.29589 25.3862 5.25328 25.5 5.18762C25.6138 5.12196 25.7135 5.03453 25.7934 4.93034C25.8734 4.82614 25.9321 4.70721 25.9661 4.58035C26.0001 4.45348 26.0088 4.32115 25.9917 4.19093C25.9745 4.0607 25.9319 3.93513 25.8663 3.82137L25.825 3.75012C25.3335 2.89321 24.6767 2.14252 23.8926 1.54167C23.1085 0.940821 22.2128 0.501801 21.2575 0.250119C21.002 0.184041 20.7307 0.221665 20.5028 0.354786C20.2749 0.487908 20.1088 0.705731 20.0409 0.960766C19.9729 1.2158 20.0085 1.48736 20.14 1.71625C20.2714 1.94513 20.488 2.11277 20.7425 2.18262ZM6.9475 25.2151C5.65171 24.1925 4.56342 22.9315 3.74126 21.5001C3.67559 21.3864 3.58817 21.2866 3.48397 21.2067C3.37978 21.1267 3.26085 21.068 3.13398 21.034C3.00711 21 2.87479 20.9913 2.74456 21.0085C2.61434 21.0256 2.48876 21.0682 2.37501 21.1339C2.26125 21.1995 2.16154 21.287 2.08157 21.3911C2.00159 21.4953 1.94293 21.6143 1.90892 21.7411C1.87491 21.868 1.86622 22.0003 1.88335 22.1306C1.90048 22.2608 1.94309 22.3864 2.00875 22.5001C2.95782 24.1511 4.21368 25.6056 5.70875 26.7851C5.91728 26.9455 6.18063 27.0173 6.44172 26.9849C6.70282 26.9525 6.94062 26.8185 7.10359 26.612C7.26655 26.4054 7.34156 26.143 7.31234 25.8815C7.28313 25.62 7.15204 25.3806 6.9475 25.2151Z\"\n fill={theme.colors.primary600}\n />\n </svg>\n );\n};\n\nexport const GuidedTourHomepageOverview = () => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const tourState = useGuidedTour('Overview', (s) => s.state.tours);\n const dispatch = useGuidedTour('Overview', (s) => s.dispatch);\n const enabled = useGuidedTour('Overview', (s) => s.state.enabled);\n const hidden = useGuidedTour('Overview', (s) => s.state.hidden);\n const completedActions = useGuidedTour('Overview', (s) => s.state.completedActions);\n const { data: guidedTourMeta } = useGetGuidedTourMetaQuery();\n\n const tourNames = Object.keys(tourState) as ValidTourName[];\n const completedTours = getCompletedTours(tourState);\n const completionPercentage =\n tourNames.length > 0 ? Math.round((completedTours.length / tourNames.length) * 100) : 0;\n\n const handleConfirmDialog = () => {\n trackUsage('didSkipGuidedTour', { name: 'all' });\n dispatch({ type: 'skip_all_tours' });\n };\n\n const handleStartTour = (tourName: ValidTourName) => {\n trackUsage('didStartGuidedTour', { name: tourName, fromHomepage: true });\n\n if (tourName === 'strapiCloud') {\n trackUsage('didCompleteGuidedTour', { name: tourName });\n dispatch({ type: 'next_step', payload: tourName });\n }\n };\n\n if (\n !guidedTourMeta?.data?.isFirstSuperAdminUser ||\n !enabled ||\n hidden ||\n process.env.NODE_ENV !== 'development'\n ) {\n return null;\n }\n\n return (\n <Container tag=\"section\" gap={0}>\n {/* Greeting */}\n <ContentSection direction=\"column\" gap={2} alignItems=\"start\">\n <WaveIcon />\n <Flex direction=\"column\" alignItems=\"start\" gap={1} paddingTop={4}>\n <Typography tag=\"h2\" fontSize=\"20px\" fontWeight=\"bold\">\n {formatMessage({\n id: 'tours.overview.title',\n defaultMessage: 'Discover your application!',\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'tours.overview.subtitle',\n defaultMessage: 'Follow the guided tour to get the most out of Strapi.',\n })}\n </Typography>\n </Flex>\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n width=\"100%\"\n paddingTop={5}\n paddingBottom={8}\n gap={2}\n >\n <Typography variant=\"pi\">\n {formatMessage(\n {\n id: 'tours.overview.completed',\n defaultMessage: '{completed}% completed',\n },\n { completed: completionPercentage }\n )}\n </Typography>\n <StyledProgressBar value={completionPercentage} />\n </Flex>\n <Dialog.Root>\n <Dialog.Trigger>\n <Button variant=\"tertiary\">\n {formatMessage({\n id: 'tours.overview.close',\n defaultMessage: 'Close guided tour',\n })}\n </Button>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleConfirmDialog}>\n {formatMessage({\n id: 'tours.overview.close.description',\n defaultMessage: 'Are you sure you want to close the guided tour?',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </ContentSection>\n <VerticalSeparator />\n {/* Task List */}\n <ContentSection direction=\"column\" alignItems=\"start\">\n <Typography variant=\"omega\" fontWeight=\"bold\">\n {formatMessage({\n id: 'tours.overview.tasks',\n defaultMessage: 'Your tasks',\n })}\n </Typography>\n <Box tag=\"ul\" width=\"100%\" borderColor=\"neutral150\" marginTop={4} hasRadius>\n {TASK_CONTENT.map((task) => {\n const tourName = task.tourName as ValidTourName;\n const tour = tourState[tourName];\n\n const isLinkDisabled =\n tourName !== 'contentTypeBuilder' &&\n !completedActions.includes(\n GUIDED_TOUR_REQUIRED_ACTIONS.contentTypeBuilder.createSchema\n );\n\n return (\n <TourTaskContainer\n tag=\"li\"\n aria-label={formatMessage(task.title)}\n key={tourName}\n alignItems=\"center\"\n justifyContent=\"space-between\"\n >\n {tour.isCompleted ? (\n <>\n <Flex gap={2}>\n <CheckCircle fill=\"success500\" />\n <Typography style={{ textDecoration: 'line-through' }} textColor=\"neutral500\">\n {formatMessage(task.title)}\n </Typography>\n </Flex>\n <Typography variant=\"omega\" textColor=\"neutral500\">\n {formatMessage(task.done)}\n </Typography>\n </>\n ) : (\n <>\n <Flex gap={2} alignItems=\"center\">\n <Flex height=\"16px\" width=\"16px\" justifyContent=\"center\">\n <TodoCircle />\n </Flex>\n <Typography>{formatMessage(task.title)}</Typography>\n </Flex>\n {task.isExternal ? (\n <Link\n isExternal\n disabled={isLinkDisabled}\n href={task.link.to}\n onClick={() => handleStartTour(task.tourName as ValidTourName)}\n >\n {formatMessage(task.link.label)}\n </Link>\n ) : (\n <Link\n endIcon={<ChevronRight />}\n disabled={isLinkDisabled}\n to={task.link.to}\n tag={NavLink}\n onClick={() =>\n trackUsage('didStartGuidedTour', { name: tourName, fromHomepage: true })\n }\n >\n {formatMessage(task.link.label)}\n </Link>\n )}\n </>\n )}\n </TourTaskContainer>\n );\n })}\n </Box>\n </ContentSection>\n </Container>\n );\n};\n"],"names":["StyledProgressBar","styled","ProgressBar","theme","colors","neutral150","success500","Container","Flex","borderRadius","neutral0","shadows","tableShadow","ContentSection","spaces","VerticalSeparator","div","TourTaskContainer","TodoCircle","Box","neutral300","LINK_LABEL","id","defaultMessage","DONE_LABEL","TASK_CONTENT","tourName","link","label","to","title","done","isExternal","WaveIcon","useTheme","_jsx","svg","width","height","viewBox","fill","xmlns","path","d","primary600","GuidedTourHomepageOverview","formatMessage","useIntl","trackUsage","useTracking","tourState","useGuidedTour","s","state","tours","dispatch","enabled","hidden","completedActions","data","guidedTourMeta","useGetGuidedTourMetaQuery","tourNames","Object","keys","completedTours","getCompletedTours","completionPercentage","length","Math","round","handleConfirmDialog","name","type","handleStartTour","fromHomepage","payload","isFirstSuperAdminUser","process","env","NODE_ENV","_jsxs","tag","gap","direction","alignItems","paddingTop","Typography","fontSize","fontWeight","paddingBottom","variant","completed","value","Dialog","Root","Trigger","Button","ConfirmDialog","onConfirm","borderColor","marginTop","hasRadius","map","task","tour","isLinkDisabled","includes","GUIDED_TOUR_REQUIRED_ACTIONS","contentTypeBuilder","createSchema","aria-label","justifyContent","isCompleted","_Fragment","CheckCircle","style","textDecoration","textColor","Link","disabled","href","onClick","endIcon","ChevronRight","NavLink"],"mappings":"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"}
|
|
@@ -162,7 +162,7 @@ const GuidedTourHomepageOverview = ()=>{
|
|
|
162
162
|
});
|
|
163
163
|
}
|
|
164
164
|
};
|
|
165
|
-
if (!guidedTourMeta?.data
|
|
165
|
+
if (!guidedTourMeta?.data?.isFirstSuperAdminUser || !enabled || hidden || process.env.NODE_ENV !== 'development') {
|
|
166
166
|
return null;
|
|
167
167
|
}
|
|
168
168
|
return /*#__PURE__*/ jsxs(Container, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Overview.mjs","sources":["../../../../../../admin/src/components/GuidedTour/Overview.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Dialog, Flex, Link, ProgressBar, Typography } from '@strapi/design-system';\nimport { CheckCircle, ChevronRight } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled, useTheme } from 'styled-components';\n\nimport { useTracking } from '../../features/Tracking';\nimport { useGetGuidedTourMetaQuery } from '../../services/admin';\nimport { ConfirmDialog } from '../ConfirmDialog';\n\nimport { type ValidTourName, useGuidedTour, getCompletedTours } from './Context';\nimport { GUIDED_TOUR_REQUIRED_ACTIONS } from './utils/constants';\n\n/* -------------------------------------------------------------------------------------------------\n * Styled\n * -----------------------------------------------------------------------------------------------*/\n\nconst StyledProgressBar = styled(ProgressBar)`\n width: 100%;\n background-color: ${({ theme }) => theme.colors.neutral150};\n > div {\n background-color: ${({ theme }) => theme.colors.success500};\n }\n`;\n\nconst Container = styled(Flex)`\n width: 100%;\n border-radius: ${({ theme }) => theme.borderRadius};\n background-color: ${({ theme }) => theme.colors.neutral0};\n box-shadow: ${({ theme }) => theme.shadows.tableShadow};\n align-items: stretch;\n`;\n\nconst ContentSection = styled(Flex)`\n flex: 1;\n padding: ${({ theme }) => theme.spaces[8]};\n`;\n\nconst VerticalSeparator = styled.div`\n width: 1px;\n background-color: ${({ theme }) => theme.colors.neutral150};\n`;\n\nconst TourTaskContainer = styled(Flex)`\n &:not(:last-child) {\n border-bottom: ${({ theme }) => `1px solid ${theme.colors.neutral150}`};\n }\n padding: ${({ theme }) => theme.spaces[4]};\n`;\n\nconst TodoCircle = styled(Box)`\n border: 1px solid ${({ theme }) => theme.colors.neutral300};\n border-radius: 50%;\n height: 13px;\n width: 13px;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Constants\n * -----------------------------------------------------------------------------------------------*/\n\nconst LINK_LABEL = {\n id: 'tours.overview.tour.link',\n defaultMessage: 'Start',\n};\nconst DONE_LABEL = {\n id: 'tours.overview.tour.done',\n defaultMessage: 'Done',\n};\n\nconst TASK_CONTENT = [\n {\n tourName: 'contentTypeBuilder',\n link: {\n label: LINK_LABEL,\n to: '/plugins/content-type-builder',\n },\n title: {\n id: 'tours.overview.contentTypeBuilder.label',\n defaultMessage: 'Create your schema',\n },\n done: DONE_LABEL,\n },\n {\n tourName: 'contentManager',\n link: {\n label: LINK_LABEL,\n to: '/content-manager',\n },\n title: {\n id: 'tours.overview.contentManager.label',\n defaultMessage: 'Create and publish content',\n },\n done: DONE_LABEL,\n },\n {\n tourName: 'apiTokens',\n link: {\n label: LINK_LABEL,\n to: '/settings/api-tokens',\n },\n title: {\n id: 'tours.overview.apiTokens.label',\n defaultMessage: 'Copy an API token',\n },\n done: DONE_LABEL,\n },\n {\n tourName: 'strapiCloud',\n link: {\n label: {\n id: 'tours.overview.strapiCloud.link',\n defaultMessage: 'Read documentation',\n },\n to: 'https://docs.strapi.io/cloud/intro',\n },\n title: {\n id: 'tours.overview.strapiCloud.label',\n defaultMessage: 'Deploy your application to Strapi Cloud',\n },\n done: DONE_LABEL,\n isExternal: true,\n },\n];\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourOverview\n * -----------------------------------------------------------------------------------------------*/\n\nconst WaveIcon = () => {\n const theme = useTheme();\n return (\n <svg width=\"26\" height=\"27\" viewBox=\"0 0 26 27\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M24.4138 9.30762C25.1565 10.5578 25.6441 11.9429 25.8481 13.3827C26.0522 14.8225 25.9687 16.2885 25.6026 17.6958C25.2365 19.1032 24.5949 20.4239 23.7151 21.5818C22.8352 22.7396 21.7345 23.7114 20.4766 24.4411C19.2188 25.1708 17.8287 25.6439 16.3868 25.8329C14.945 26.022 13.48 25.9232 12.0765 25.5424C10.673 25.1616 9.35903 24.5063 8.21045 23.6144C7.06188 22.7226 6.10154 21.6118 5.385 20.3464L0.268755 11.4851C0.0253867 11.0275 -0.0308559 10.4934 0.111878 9.99514C0.254612 9.49692 0.585176 9.07356 1.03392 8.81426C1.48266 8.55497 2.01453 8.47999 2.51746 8.60514C3.02039 8.73028 3.45511 9.04576 3.73001 9.48512L6.05 13.5001C6.11567 13.6139 6.20309 13.7136 6.30729 13.7936C6.41148 13.8735 6.53041 13.9322 6.65728 13.9662C6.78415 14.0002 6.91647 14.0089 7.04669 13.9918C7.17692 13.9746 7.3025 13.932 7.41625 13.8664C7.53001 13.8007 7.62972 13.7133 7.70969 13.6091C7.78966 13.5049 7.84833 13.386 7.88234 13.2591C7.91635 13.1322 7.92504 12.9999 7.90791 12.8697C7.89078 12.7395 7.84817 12.6139 7.78251 12.5001L2.87501 4.00012C2.63164 3.54255 2.57539 3.00837 2.71813 2.51014C2.86086 2.01192 3.19143 1.58856 3.64017 1.32926C4.08891 1.06997 4.62078 0.994994 5.12371 1.12014C5.62664 1.24528 6.06136 1.56077 6.33626 2.00012L11.25 10.5001C11.3137 10.6175 11.4003 10.7209 11.5046 10.8042C11.609 10.8876 11.7289 10.9492 11.8575 10.9854C11.986 11.0216 12.1205 11.0318 12.253 11.0152C12.3855 10.9986 12.5133 10.9556 12.629 10.8888C12.7446 10.8221 12.8457 10.7328 12.9263 10.6263C13.0068 10.5198 13.0653 10.3982 13.0981 10.2688C13.1309 10.1394 13.1375 10.0047 13.1174 9.87264C13.0974 9.74062 13.0511 9.61395 12.9813 9.50012L9.23125 3.00012C8.9738 2.54125 8.90753 1.99941 9.04682 1.49203C9.18612 0.984641 9.51974 0.552582 9.97539 0.289483C10.431 0.0263834 10.972 -0.0465606 11.4811 0.0864587C11.9902 0.219478 12.4263 0.547745 12.695 1.00012L17.75 9.76512C16.6322 10.8916 16.0035 12.4132 16 14.0001C15.9963 15.2989 16.4177 16.5633 17.2 17.6001C17.278 17.7074 17.3766 17.7981 17.49 17.867C17.6034 17.9358 17.7293 17.9814 17.8605 18.001C17.9917 18.0207 18.1255 18.0141 18.2541 17.9816C18.3827 17.9491 18.5035 17.8913 18.6096 17.8116C18.7156 17.7319 18.8048 17.6319 18.8718 17.5175C18.9388 17.403 18.9824 17.2763 19 17.1448C19.0176 17.0134 19.0089 16.8797 18.9743 16.7516C18.9398 16.6236 18.8801 16.5036 18.7988 16.3989C18.4824 15.9765 18.2528 15.4958 18.1231 14.9843C17.9934 14.4729 17.9661 13.9408 18.0429 13.4188C18.1197 12.8967 18.2991 12.3951 18.5706 11.9426C18.8421 11.4902 19.2005 11.096 19.625 10.7826C19.8224 10.6365 19.9592 10.4229 20.0092 10.1825C20.0592 9.94202 20.019 9.69157 19.8963 9.47887L18.4638 7.00012C18.2063 6.54125 18.14 5.99941 18.2793 5.49203C18.4186 4.98464 18.7522 4.55258 19.2079 4.28948C19.6635 4.02638 20.2045 3.95344 20.7136 4.08646C21.2227 4.21948 21.6588 4.54774 21.9275 5.00012L24.4138 9.30762ZM20.7425 2.18262C21.4432 2.36725 22.1001 2.68931 22.6752 3.13008C23.2503 3.57084 23.7321 4.12153 24.0925 4.75012L24.1338 4.82137C24.2664 5.05111 24.4848 5.21877 24.741 5.28745C24.8679 5.32146 25.0002 5.33015 25.1304 5.31302C25.2607 5.29589 25.3862 5.25328 25.5 5.18762C25.6138 5.12196 25.7135 5.03453 25.7934 4.93034C25.8734 4.82614 25.9321 4.70721 25.9661 4.58035C26.0001 4.45348 26.0088 4.32115 25.9917 4.19093C25.9745 4.0607 25.9319 3.93513 25.8663 3.82137L25.825 3.75012C25.3335 2.89321 24.6767 2.14252 23.8926 1.54167C23.1085 0.940821 22.2128 0.501801 21.2575 0.250119C21.002 0.184041 20.7307 0.221665 20.5028 0.354786C20.2749 0.487908 20.1088 0.705731 20.0409 0.960766C19.9729 1.2158 20.0085 1.48736 20.14 1.71625C20.2714 1.94513 20.488 2.11277 20.7425 2.18262ZM6.9475 25.2151C5.65171 24.1925 4.56342 22.9315 3.74126 21.5001C3.67559 21.3864 3.58817 21.2866 3.48397 21.2067C3.37978 21.1267 3.26085 21.068 3.13398 21.034C3.00711 21 2.87479 20.9913 2.74456 21.0085C2.61434 21.0256 2.48876 21.0682 2.37501 21.1339C2.26125 21.1995 2.16154 21.287 2.08157 21.3911C2.00159 21.4953 1.94293 21.6143 1.90892 21.7411C1.87491 21.868 1.86622 22.0003 1.88335 22.1306C1.90048 22.2608 1.94309 22.3864 2.00875 22.5001C2.95782 24.1511 4.21368 25.6056 5.70875 26.7851C5.91728 26.9455 6.18063 27.0173 6.44172 26.9849C6.70282 26.9525 6.94062 26.8185 7.10359 26.612C7.26655 26.4054 7.34156 26.143 7.31234 25.8815C7.28313 25.62 7.15204 25.3806 6.9475 25.2151Z\"\n fill={theme.colors.primary600}\n />\n </svg>\n );\n};\n\nexport const GuidedTourHomepageOverview = () => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const tourState = useGuidedTour('Overview', (s) => s.state.tours);\n const dispatch = useGuidedTour('Overview', (s) => s.dispatch);\n const enabled = useGuidedTour('Overview', (s) => s.state.enabled);\n const hidden = useGuidedTour('Overview', (s) => s.state.hidden);\n const completedActions = useGuidedTour('Overview', (s) => s.state.completedActions);\n const { data: guidedTourMeta } = useGetGuidedTourMetaQuery();\n\n const tourNames = Object.keys(tourState) as ValidTourName[];\n const completedTours = getCompletedTours(tourState);\n const completionPercentage =\n tourNames.length > 0 ? Math.round((completedTours.length / tourNames.length) * 100) : 0;\n\n const handleConfirmDialog = () => {\n trackUsage('didSkipGuidedTour', { name: 'all' });\n dispatch({ type: 'skip_all_tours' });\n };\n\n const handleStartTour = (tourName: ValidTourName) => {\n trackUsage('didStartGuidedTour', { name: tourName, fromHomepage: true });\n\n if (tourName === 'strapiCloud') {\n trackUsage('didCompleteGuidedTour', { name: tourName });\n dispatch({ type: 'next_step', payload: tourName });\n }\n };\n\n if (\n !guidedTourMeta?.data.isFirstSuperAdminUser ||\n !enabled ||\n hidden ||\n process.env.NODE_ENV !== 'development'\n ) {\n return null;\n }\n\n return (\n <Container tag=\"section\" gap={0}>\n {/* Greeting */}\n <ContentSection direction=\"column\" gap={2} alignItems=\"start\">\n <WaveIcon />\n <Flex direction=\"column\" alignItems=\"start\" gap={1} paddingTop={4}>\n <Typography tag=\"h2\" fontSize=\"20px\" fontWeight=\"bold\">\n {formatMessage({\n id: 'tours.overview.title',\n defaultMessage: 'Discover your application!',\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'tours.overview.subtitle',\n defaultMessage: 'Follow the guided tour to get the most out of Strapi.',\n })}\n </Typography>\n </Flex>\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n width=\"100%\"\n paddingTop={5}\n paddingBottom={8}\n gap={2}\n >\n <Typography variant=\"pi\">\n {formatMessage(\n {\n id: 'tours.overview.completed',\n defaultMessage: '{completed}% completed',\n },\n { completed: completionPercentage }\n )}\n </Typography>\n <StyledProgressBar value={completionPercentage} />\n </Flex>\n <Dialog.Root>\n <Dialog.Trigger>\n <Button variant=\"tertiary\">\n {formatMessage({\n id: 'tours.overview.close',\n defaultMessage: 'Close guided tour',\n })}\n </Button>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleConfirmDialog}>\n {formatMessage({\n id: 'tours.overview.close.description',\n defaultMessage: 'Are you sure you want to close the guided tour?',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </ContentSection>\n <VerticalSeparator />\n {/* Task List */}\n <ContentSection direction=\"column\" alignItems=\"start\">\n <Typography variant=\"omega\" fontWeight=\"bold\">\n {formatMessage({\n id: 'tours.overview.tasks',\n defaultMessage: 'Your tasks',\n })}\n </Typography>\n <Box tag=\"ul\" width=\"100%\" borderColor=\"neutral150\" marginTop={4} hasRadius>\n {TASK_CONTENT.map((task) => {\n const tourName = task.tourName as ValidTourName;\n const tour = tourState[tourName];\n\n const isLinkDisabled =\n tourName !== 'contentTypeBuilder' &&\n !completedActions.includes(\n GUIDED_TOUR_REQUIRED_ACTIONS.contentTypeBuilder.createSchema\n );\n\n return (\n <TourTaskContainer\n tag=\"li\"\n aria-label={formatMessage(task.title)}\n key={tourName}\n alignItems=\"center\"\n justifyContent=\"space-between\"\n >\n {tour.isCompleted ? (\n <>\n <Flex gap={2}>\n <CheckCircle fill=\"success500\" />\n <Typography style={{ textDecoration: 'line-through' }} textColor=\"neutral500\">\n {formatMessage(task.title)}\n </Typography>\n </Flex>\n <Typography variant=\"omega\" textColor=\"neutral500\">\n {formatMessage(task.done)}\n </Typography>\n </>\n ) : (\n <>\n <Flex gap={2} alignItems=\"center\">\n <Flex height=\"16px\" width=\"16px\" justifyContent=\"center\">\n <TodoCircle />\n </Flex>\n <Typography>{formatMessage(task.title)}</Typography>\n </Flex>\n {task.isExternal ? (\n <Link\n isExternal\n disabled={isLinkDisabled}\n href={task.link.to}\n onClick={() => handleStartTour(task.tourName as ValidTourName)}\n >\n {formatMessage(task.link.label)}\n </Link>\n ) : (\n <Link\n endIcon={<ChevronRight />}\n disabled={isLinkDisabled}\n to={task.link.to}\n tag={NavLink}\n onClick={() =>\n trackUsage('didStartGuidedTour', { name: tourName, fromHomepage: true })\n }\n >\n {formatMessage(task.link.label)}\n </Link>\n )}\n </>\n )}\n </TourTaskContainer>\n );\n })}\n </Box>\n </ContentSection>\n </Container>\n );\n};\n"],"names":["StyledProgressBar","styled","ProgressBar","theme","colors","neutral150","success500","Container","Flex","borderRadius","neutral0","shadows","tableShadow","ContentSection","spaces","VerticalSeparator","div","TourTaskContainer","TodoCircle","Box","neutral300","LINK_LABEL","id","defaultMessage","DONE_LABEL","TASK_CONTENT","tourName","link","label","to","title","done","isExternal","WaveIcon","useTheme","_jsx","svg","width","height","viewBox","fill","xmlns","path","d","primary600","GuidedTourHomepageOverview","formatMessage","useIntl","trackUsage","useTracking","tourState","useGuidedTour","s","state","tours","dispatch","enabled","hidden","completedActions","data","guidedTourMeta","useGetGuidedTourMetaQuery","tourNames","Object","keys","completedTours","getCompletedTours","completionPercentage","length","Math","round","handleConfirmDialog","name","type","handleStartTour","fromHomepage","payload","isFirstSuperAdminUser","process","env","NODE_ENV","_jsxs","tag","gap","direction","alignItems","paddingTop","Typography","fontSize","fontWeight","paddingBottom","variant","completed","value","Dialog","Root","Trigger","Button","ConfirmDialog","onConfirm","borderColor","marginTop","hasRadius","map","task","tour","isLinkDisabled","includes","GUIDED_TOUR_REQUIRED_ACTIONS","contentTypeBuilder","createSchema","aria-label","justifyContent","isCompleted","_Fragment","CheckCircle","style","textDecoration","textColor","Link","disabled","href","onClick","endIcon","ChevronRight","NavLink"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Overview.mjs","sources":["../../../../../../admin/src/components/GuidedTour/Overview.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Dialog, Flex, Link, ProgressBar, Typography } from '@strapi/design-system';\nimport { CheckCircle, ChevronRight } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled, useTheme } from 'styled-components';\n\nimport { useTracking } from '../../features/Tracking';\nimport { useGetGuidedTourMetaQuery } from '../../services/admin';\nimport { ConfirmDialog } from '../ConfirmDialog';\n\nimport { type ValidTourName, useGuidedTour, getCompletedTours } from './Context';\nimport { GUIDED_TOUR_REQUIRED_ACTIONS } from './utils/constants';\n\n/* -------------------------------------------------------------------------------------------------\n * Styled\n * -----------------------------------------------------------------------------------------------*/\n\nconst StyledProgressBar = styled(ProgressBar)`\n width: 100%;\n background-color: ${({ theme }) => theme.colors.neutral150};\n > div {\n background-color: ${({ theme }) => theme.colors.success500};\n }\n`;\n\nconst Container = styled(Flex)`\n width: 100%;\n border-radius: ${({ theme }) => theme.borderRadius};\n background-color: ${({ theme }) => theme.colors.neutral0};\n box-shadow: ${({ theme }) => theme.shadows.tableShadow};\n align-items: stretch;\n`;\n\nconst ContentSection = styled(Flex)`\n flex: 1;\n padding: ${({ theme }) => theme.spaces[8]};\n`;\n\nconst VerticalSeparator = styled.div`\n width: 1px;\n background-color: ${({ theme }) => theme.colors.neutral150};\n`;\n\nconst TourTaskContainer = styled(Flex)`\n &:not(:last-child) {\n border-bottom: ${({ theme }) => `1px solid ${theme.colors.neutral150}`};\n }\n padding: ${({ theme }) => theme.spaces[4]};\n`;\n\nconst TodoCircle = styled(Box)`\n border: 1px solid ${({ theme }) => theme.colors.neutral300};\n border-radius: 50%;\n height: 13px;\n width: 13px;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Constants\n * -----------------------------------------------------------------------------------------------*/\n\nconst LINK_LABEL = {\n id: 'tours.overview.tour.link',\n defaultMessage: 'Start',\n};\nconst DONE_LABEL = {\n id: 'tours.overview.tour.done',\n defaultMessage: 'Done',\n};\n\nconst TASK_CONTENT = [\n {\n tourName: 'contentTypeBuilder',\n link: {\n label: LINK_LABEL,\n to: '/plugins/content-type-builder',\n },\n title: {\n id: 'tours.overview.contentTypeBuilder.label',\n defaultMessage: 'Create your schema',\n },\n done: DONE_LABEL,\n },\n {\n tourName: 'contentManager',\n link: {\n label: LINK_LABEL,\n to: '/content-manager',\n },\n title: {\n id: 'tours.overview.contentManager.label',\n defaultMessage: 'Create and publish content',\n },\n done: DONE_LABEL,\n },\n {\n tourName: 'apiTokens',\n link: {\n label: LINK_LABEL,\n to: '/settings/api-tokens',\n },\n title: {\n id: 'tours.overview.apiTokens.label',\n defaultMessage: 'Copy an API token',\n },\n done: DONE_LABEL,\n },\n {\n tourName: 'strapiCloud',\n link: {\n label: {\n id: 'tours.overview.strapiCloud.link',\n defaultMessage: 'Read documentation',\n },\n to: 'https://docs.strapi.io/cloud/intro',\n },\n title: {\n id: 'tours.overview.strapiCloud.label',\n defaultMessage: 'Deploy your application to Strapi Cloud',\n },\n done: DONE_LABEL,\n isExternal: true,\n },\n];\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourOverview\n * -----------------------------------------------------------------------------------------------*/\n\nconst WaveIcon = () => {\n const theme = useTheme();\n return (\n <svg width=\"26\" height=\"27\" viewBox=\"0 0 26 27\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M24.4138 9.30762C25.1565 10.5578 25.6441 11.9429 25.8481 13.3827C26.0522 14.8225 25.9687 16.2885 25.6026 17.6958C25.2365 19.1032 24.5949 20.4239 23.7151 21.5818C22.8352 22.7396 21.7345 23.7114 20.4766 24.4411C19.2188 25.1708 17.8287 25.6439 16.3868 25.8329C14.945 26.022 13.48 25.9232 12.0765 25.5424C10.673 25.1616 9.35903 24.5063 8.21045 23.6144C7.06188 22.7226 6.10154 21.6118 5.385 20.3464L0.268755 11.4851C0.0253867 11.0275 -0.0308559 10.4934 0.111878 9.99514C0.254612 9.49692 0.585176 9.07356 1.03392 8.81426C1.48266 8.55497 2.01453 8.47999 2.51746 8.60514C3.02039 8.73028 3.45511 9.04576 3.73001 9.48512L6.05 13.5001C6.11567 13.6139 6.20309 13.7136 6.30729 13.7936C6.41148 13.8735 6.53041 13.9322 6.65728 13.9662C6.78415 14.0002 6.91647 14.0089 7.04669 13.9918C7.17692 13.9746 7.3025 13.932 7.41625 13.8664C7.53001 13.8007 7.62972 13.7133 7.70969 13.6091C7.78966 13.5049 7.84833 13.386 7.88234 13.2591C7.91635 13.1322 7.92504 12.9999 7.90791 12.8697C7.89078 12.7395 7.84817 12.6139 7.78251 12.5001L2.87501 4.00012C2.63164 3.54255 2.57539 3.00837 2.71813 2.51014C2.86086 2.01192 3.19143 1.58856 3.64017 1.32926C4.08891 1.06997 4.62078 0.994994 5.12371 1.12014C5.62664 1.24528 6.06136 1.56077 6.33626 2.00012L11.25 10.5001C11.3137 10.6175 11.4003 10.7209 11.5046 10.8042C11.609 10.8876 11.7289 10.9492 11.8575 10.9854C11.986 11.0216 12.1205 11.0318 12.253 11.0152C12.3855 10.9986 12.5133 10.9556 12.629 10.8888C12.7446 10.8221 12.8457 10.7328 12.9263 10.6263C13.0068 10.5198 13.0653 10.3982 13.0981 10.2688C13.1309 10.1394 13.1375 10.0047 13.1174 9.87264C13.0974 9.74062 13.0511 9.61395 12.9813 9.50012L9.23125 3.00012C8.9738 2.54125 8.90753 1.99941 9.04682 1.49203C9.18612 0.984641 9.51974 0.552582 9.97539 0.289483C10.431 0.0263834 10.972 -0.0465606 11.4811 0.0864587C11.9902 0.219478 12.4263 0.547745 12.695 1.00012L17.75 9.76512C16.6322 10.8916 16.0035 12.4132 16 14.0001C15.9963 15.2989 16.4177 16.5633 17.2 17.6001C17.278 17.7074 17.3766 17.7981 17.49 17.867C17.6034 17.9358 17.7293 17.9814 17.8605 18.001C17.9917 18.0207 18.1255 18.0141 18.2541 17.9816C18.3827 17.9491 18.5035 17.8913 18.6096 17.8116C18.7156 17.7319 18.8048 17.6319 18.8718 17.5175C18.9388 17.403 18.9824 17.2763 19 17.1448C19.0176 17.0134 19.0089 16.8797 18.9743 16.7516C18.9398 16.6236 18.8801 16.5036 18.7988 16.3989C18.4824 15.9765 18.2528 15.4958 18.1231 14.9843C17.9934 14.4729 17.9661 13.9408 18.0429 13.4188C18.1197 12.8967 18.2991 12.3951 18.5706 11.9426C18.8421 11.4902 19.2005 11.096 19.625 10.7826C19.8224 10.6365 19.9592 10.4229 20.0092 10.1825C20.0592 9.94202 20.019 9.69157 19.8963 9.47887L18.4638 7.00012C18.2063 6.54125 18.14 5.99941 18.2793 5.49203C18.4186 4.98464 18.7522 4.55258 19.2079 4.28948C19.6635 4.02638 20.2045 3.95344 20.7136 4.08646C21.2227 4.21948 21.6588 4.54774 21.9275 5.00012L24.4138 9.30762ZM20.7425 2.18262C21.4432 2.36725 22.1001 2.68931 22.6752 3.13008C23.2503 3.57084 23.7321 4.12153 24.0925 4.75012L24.1338 4.82137C24.2664 5.05111 24.4848 5.21877 24.741 5.28745C24.8679 5.32146 25.0002 5.33015 25.1304 5.31302C25.2607 5.29589 25.3862 5.25328 25.5 5.18762C25.6138 5.12196 25.7135 5.03453 25.7934 4.93034C25.8734 4.82614 25.9321 4.70721 25.9661 4.58035C26.0001 4.45348 26.0088 4.32115 25.9917 4.19093C25.9745 4.0607 25.9319 3.93513 25.8663 3.82137L25.825 3.75012C25.3335 2.89321 24.6767 2.14252 23.8926 1.54167C23.1085 0.940821 22.2128 0.501801 21.2575 0.250119C21.002 0.184041 20.7307 0.221665 20.5028 0.354786C20.2749 0.487908 20.1088 0.705731 20.0409 0.960766C19.9729 1.2158 20.0085 1.48736 20.14 1.71625C20.2714 1.94513 20.488 2.11277 20.7425 2.18262ZM6.9475 25.2151C5.65171 24.1925 4.56342 22.9315 3.74126 21.5001C3.67559 21.3864 3.58817 21.2866 3.48397 21.2067C3.37978 21.1267 3.26085 21.068 3.13398 21.034C3.00711 21 2.87479 20.9913 2.74456 21.0085C2.61434 21.0256 2.48876 21.0682 2.37501 21.1339C2.26125 21.1995 2.16154 21.287 2.08157 21.3911C2.00159 21.4953 1.94293 21.6143 1.90892 21.7411C1.87491 21.868 1.86622 22.0003 1.88335 22.1306C1.90048 22.2608 1.94309 22.3864 2.00875 22.5001C2.95782 24.1511 4.21368 25.6056 5.70875 26.7851C5.91728 26.9455 6.18063 27.0173 6.44172 26.9849C6.70282 26.9525 6.94062 26.8185 7.10359 26.612C7.26655 26.4054 7.34156 26.143 7.31234 25.8815C7.28313 25.62 7.15204 25.3806 6.9475 25.2151Z\"\n fill={theme.colors.primary600}\n />\n </svg>\n );\n};\n\nexport const GuidedTourHomepageOverview = () => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const tourState = useGuidedTour('Overview', (s) => s.state.tours);\n const dispatch = useGuidedTour('Overview', (s) => s.dispatch);\n const enabled = useGuidedTour('Overview', (s) => s.state.enabled);\n const hidden = useGuidedTour('Overview', (s) => s.state.hidden);\n const completedActions = useGuidedTour('Overview', (s) => s.state.completedActions);\n const { data: guidedTourMeta } = useGetGuidedTourMetaQuery();\n\n const tourNames = Object.keys(tourState) as ValidTourName[];\n const completedTours = getCompletedTours(tourState);\n const completionPercentage =\n tourNames.length > 0 ? Math.round((completedTours.length / tourNames.length) * 100) : 0;\n\n const handleConfirmDialog = () => {\n trackUsage('didSkipGuidedTour', { name: 'all' });\n dispatch({ type: 'skip_all_tours' });\n };\n\n const handleStartTour = (tourName: ValidTourName) => {\n trackUsage('didStartGuidedTour', { name: tourName, fromHomepage: true });\n\n if (tourName === 'strapiCloud') {\n trackUsage('didCompleteGuidedTour', { name: tourName });\n dispatch({ type: 'next_step', payload: tourName });\n }\n };\n\n if (\n !guidedTourMeta?.data?.isFirstSuperAdminUser ||\n !enabled ||\n hidden ||\n process.env.NODE_ENV !== 'development'\n ) {\n return null;\n }\n\n return (\n <Container tag=\"section\" gap={0}>\n {/* Greeting */}\n <ContentSection direction=\"column\" gap={2} alignItems=\"start\">\n <WaveIcon />\n <Flex direction=\"column\" alignItems=\"start\" gap={1} paddingTop={4}>\n <Typography tag=\"h2\" fontSize=\"20px\" fontWeight=\"bold\">\n {formatMessage({\n id: 'tours.overview.title',\n defaultMessage: 'Discover your application!',\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'tours.overview.subtitle',\n defaultMessage: 'Follow the guided tour to get the most out of Strapi.',\n })}\n </Typography>\n </Flex>\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n width=\"100%\"\n paddingTop={5}\n paddingBottom={8}\n gap={2}\n >\n <Typography variant=\"pi\">\n {formatMessage(\n {\n id: 'tours.overview.completed',\n defaultMessage: '{completed}% completed',\n },\n { completed: completionPercentage }\n )}\n </Typography>\n <StyledProgressBar value={completionPercentage} />\n </Flex>\n <Dialog.Root>\n <Dialog.Trigger>\n <Button variant=\"tertiary\">\n {formatMessage({\n id: 'tours.overview.close',\n defaultMessage: 'Close guided tour',\n })}\n </Button>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleConfirmDialog}>\n {formatMessage({\n id: 'tours.overview.close.description',\n defaultMessage: 'Are you sure you want to close the guided tour?',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </ContentSection>\n <VerticalSeparator />\n {/* Task List */}\n <ContentSection direction=\"column\" alignItems=\"start\">\n <Typography variant=\"omega\" fontWeight=\"bold\">\n {formatMessage({\n id: 'tours.overview.tasks',\n defaultMessage: 'Your tasks',\n })}\n </Typography>\n <Box tag=\"ul\" width=\"100%\" borderColor=\"neutral150\" marginTop={4} hasRadius>\n {TASK_CONTENT.map((task) => {\n const tourName = task.tourName as ValidTourName;\n const tour = tourState[tourName];\n\n const isLinkDisabled =\n tourName !== 'contentTypeBuilder' &&\n !completedActions.includes(\n GUIDED_TOUR_REQUIRED_ACTIONS.contentTypeBuilder.createSchema\n );\n\n return (\n <TourTaskContainer\n tag=\"li\"\n aria-label={formatMessage(task.title)}\n key={tourName}\n alignItems=\"center\"\n justifyContent=\"space-between\"\n >\n {tour.isCompleted ? (\n <>\n <Flex gap={2}>\n <CheckCircle fill=\"success500\" />\n <Typography style={{ textDecoration: 'line-through' }} textColor=\"neutral500\">\n {formatMessage(task.title)}\n </Typography>\n </Flex>\n <Typography variant=\"omega\" textColor=\"neutral500\">\n {formatMessage(task.done)}\n </Typography>\n </>\n ) : (\n <>\n <Flex gap={2} alignItems=\"center\">\n <Flex height=\"16px\" width=\"16px\" justifyContent=\"center\">\n <TodoCircle />\n </Flex>\n <Typography>{formatMessage(task.title)}</Typography>\n </Flex>\n {task.isExternal ? (\n <Link\n isExternal\n disabled={isLinkDisabled}\n href={task.link.to}\n onClick={() => handleStartTour(task.tourName as ValidTourName)}\n >\n {formatMessage(task.link.label)}\n </Link>\n ) : (\n <Link\n endIcon={<ChevronRight />}\n disabled={isLinkDisabled}\n to={task.link.to}\n tag={NavLink}\n onClick={() =>\n trackUsage('didStartGuidedTour', { name: tourName, fromHomepage: true })\n }\n >\n {formatMessage(task.link.label)}\n </Link>\n )}\n </>\n )}\n </TourTaskContainer>\n );\n })}\n </Box>\n </ContentSection>\n </Container>\n );\n};\n"],"names":["StyledProgressBar","styled","ProgressBar","theme","colors","neutral150","success500","Container","Flex","borderRadius","neutral0","shadows","tableShadow","ContentSection","spaces","VerticalSeparator","div","TourTaskContainer","TodoCircle","Box","neutral300","LINK_LABEL","id","defaultMessage","DONE_LABEL","TASK_CONTENT","tourName","link","label","to","title","done","isExternal","WaveIcon","useTheme","_jsx","svg","width","height","viewBox","fill","xmlns","path","d","primary600","GuidedTourHomepageOverview","formatMessage","useIntl","trackUsage","useTracking","tourState","useGuidedTour","s","state","tours","dispatch","enabled","hidden","completedActions","data","guidedTourMeta","useGetGuidedTourMetaQuery","tourNames","Object","keys","completedTours","getCompletedTours","completionPercentage","length","Math","round","handleConfirmDialog","name","type","handleStartTour","fromHomepage","payload","isFirstSuperAdminUser","process","env","NODE_ENV","_jsxs","tag","gap","direction","alignItems","paddingTop","Typography","fontSize","fontWeight","paddingBottom","variant","completed","value","Dialog","Root","Trigger","Button","ConfirmDialog","onConfirm","borderColor","marginTop","hasRadius","map","task","tour","isLinkDisabled","includes","GUIDED_TOUR_REQUIRED_ACTIONS","contentTypeBuilder","createSchema","aria-label","justifyContent","isCompleted","_Fragment","CheckCircle","style","textDecoration","textColor","Link","disabled","href","onClick","endIcon","ChevronRight","NavLink"],"mappings":"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"}
|
|
@@ -119,6 +119,11 @@ const BaseHeaderLayout = /*#__PURE__*/ React__namespace.forwardRef(({ navigation
|
|
|
119
119
|
tag: "h1",
|
|
120
120
|
variant: "alpha",
|
|
121
121
|
...props,
|
|
122
|
+
style: {
|
|
123
|
+
wordBreak: 'break-word',
|
|
124
|
+
overflowWrap: 'break-word',
|
|
125
|
+
maxWidth: '100%'
|
|
126
|
+
},
|
|
122
127
|
children: title
|
|
123
128
|
}),
|
|
124
129
|
secondaryAction ? /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeaderLayout.js","sources":["../../../../../../admin/src/components/Layouts/HeaderLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Typography, TypographyProps, useCallbackRef } from '@strapi/design-system';\n\nimport { HEIGHT_TOP_NAVIGATION, RESPONSIVE_DEFAULT_SPACING } from '../../constants/theme';\nimport { useDeviceType } from '../../hooks/useDeviceType';\nimport { useElementOnScreen } from '../../hooks/useElementOnScreen';\n\n/* -------------------------------------------------------------------------------------------------\n * BaseHeaderLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface BaseHeaderLayoutProps extends Omit<TypographyProps<'div'>, 'tag'> {\n navigationAction?: React.ReactNode;\n primaryAction?: React.ReactNode;\n secondaryAction?: React.ReactNode;\n subtitle?: React.ReactNode;\n sticky?: boolean;\n width?: number;\n}\n\nconst BaseHeaderLayout = React.forwardRef<HTMLDivElement, BaseHeaderLayoutProps>(\n (\n { navigationAction, primaryAction, secondaryAction, subtitle, title, sticky, width, ...props },\n ref\n ) => {\n const isSubtitleString = typeof subtitle === 'string';\n\n if (sticky) {\n return (\n <Box\n display=\"flex\"\n paddingLeft={6}\n paddingRight={6}\n paddingTop={2}\n paddingBottom={2}\n position=\"fixed\"\n top={0}\n background=\"neutral0\"\n shadow=\"tableShadow\"\n width={`${width}px`}\n zIndex={2}\n minHeight={HEIGHT_TOP_NAVIGATION}\n data-strapi-header-sticky\n >\n <Flex alignItems=\"center\" justifyContent=\"space-between\" wrap=\"wrap\" width=\"100%\">\n <Flex>\n {navigationAction && <Box paddingRight={3}>{navigationAction}</Box>}\n <Box>\n <Typography variant=\"beta\" tag=\"h1\" {...props}>\n {title}\n </Typography>\n {isSubtitleString ? (\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {subtitle}\n </Typography>\n ) : (\n subtitle\n )}\n </Box>\n {secondaryAction ? <Box paddingLeft={4}>{secondaryAction}</Box> : null}\n </Flex>\n <Flex>{primaryAction ? <Box paddingLeft={2}>{primaryAction}</Box> : undefined}</Flex>\n </Flex>\n </Box>\n );\n }\n\n return (\n <Box\n ref={ref}\n paddingLeft={RESPONSIVE_DEFAULT_SPACING}\n paddingRight={RESPONSIVE_DEFAULT_SPACING}\n paddingBottom={{\n initial: 4,\n large: 8,\n }}\n paddingTop={{\n initial: 4,\n large: navigationAction ? 6 : 8,\n }}\n background=\"neutral100\"\n data-strapi-header\n >\n <Flex direction=\"column\" alignItems=\"initial\" gap={2}>\n {navigationAction}\n <Flex justifyContent=\"space-between\" wrap=\"wrap\" gap={4}>\n <Flex minWidth={0}>\n <Typography tag=\"h1\" variant=\"alpha\" {...props}>\n {title}\n </Typography>\n {secondaryAction ? <Box paddingLeft={4}>{secondaryAction}</Box> : null}\n </Flex>\n {primaryAction}\n </Flex>\n </Flex>\n {isSubtitleString ? (\n <Typography\n variant=\"epsilon\"\n textColor=\"neutral600\"\n tag=\"p\"\n paddingTop={{ initial: 4, large: 0 }}\n >\n {subtitle}\n </Typography>\n ) : (\n subtitle\n )}\n </Box>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderLayoutProps extends BaseHeaderLayoutProps {}\n\nconst HeaderLayout = (props: HeaderLayoutProps) => {\n const baseHeaderLayoutRef = React.useRef<HTMLDivElement>(null);\n const [headerSize, setHeaderSize] = React.useState<DOMRect | null>(null);\n const [isVisible, setIsVisible] = React.useState(true);\n const deviceType = useDeviceType();\n\n const containerRef = useElementOnScreen<HTMLDivElement>(setIsVisible, {\n root: null,\n rootMargin: '0px',\n threshold: 0,\n });\n\n useResizeObserver([containerRef], () => {\n if (containerRef.current) {\n const newSize = containerRef.current.getBoundingClientRect();\n setHeaderSize((prevSize) => {\n // Only update if size actually changed\n if (!prevSize || prevSize.height !== newSize.height || prevSize.width !== newSize.width) {\n return newSize;\n }\n return prevSize;\n });\n }\n });\n\n React.useEffect(() => {\n if (containerRef.current) {\n setHeaderSize(containerRef.current.getBoundingClientRect());\n }\n }, [containerRef]);\n\n if (deviceType === 'mobile') {\n return <BaseHeaderLayout {...props} />;\n }\n\n return (\n <div ref={containerRef}>\n <div style={{ height: headerSize?.height }}>\n {isVisible && <BaseHeaderLayout ref={baseHeaderLayoutRef} {...props} />}\n </div>\n\n {!isVisible && <BaseHeaderLayout {...props} sticky width={headerSize?.width} />}\n </div>\n );\n};\n\nHeaderLayout.displayName = 'HeaderLayout';\n\n/**\n * useResizeObserver: hook that observes the size of an element and calls a callback when it changes.\n */\nconst useResizeObserver = (\n sources: React.RefObject<HTMLElement> | React.RefObject<HTMLElement>[],\n onResize: ResizeObserverCallback\n) => {\n const handleResize = useCallbackRef(onResize);\n\n React.useLayoutEffect(() => {\n const resizeObs = new ResizeObserver(handleResize);\n\n if (Array.isArray(sources)) {\n sources.forEach((source) => {\n if (source.current) {\n resizeObs.observe(source.current);\n }\n });\n } else if (sources.current) {\n resizeObs.observe(sources.current);\n }\n\n return () => {\n resizeObs.disconnect();\n };\n }, [sources, handleResize]);\n};\n\nexport type { HeaderLayoutProps, BaseHeaderLayoutProps };\nexport { HeaderLayout, BaseHeaderLayout };\n"],"names":["BaseHeaderLayout","React","forwardRef","navigationAction","primaryAction","secondaryAction","subtitle","title","sticky","width","props","ref","isSubtitleString","_jsx","Box","display","paddingLeft","paddingRight","paddingTop","paddingBottom","position","top","background","shadow","zIndex","minHeight","HEIGHT_TOP_NAVIGATION","data-strapi-header-sticky","_jsxs","Flex","alignItems","justifyContent","wrap","Typography","variant","tag","textColor","undefined","RESPONSIVE_DEFAULT_SPACING","initial","large","data-strapi-header","direction","gap","minWidth","HeaderLayout","baseHeaderLayoutRef","useRef","headerSize","setHeaderSize","useState","isVisible","setIsVisible","deviceType","useDeviceType","containerRef","useElementOnScreen","root","rootMargin","threshold","useResizeObserver","current","newSize","getBoundingClientRect","prevSize","height","useEffect","div","style","displayName","sources","onResize","handleResize","useCallbackRef","useLayoutEffect","resizeObs","ResizeObserver","Array","isArray","forEach","source","observe","disconnect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"HeaderLayout.js","sources":["../../../../../../admin/src/components/Layouts/HeaderLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Typography, TypographyProps, useCallbackRef } from '@strapi/design-system';\n\nimport { HEIGHT_TOP_NAVIGATION, RESPONSIVE_DEFAULT_SPACING } from '../../constants/theme';\nimport { useDeviceType } from '../../hooks/useDeviceType';\nimport { useElementOnScreen } from '../../hooks/useElementOnScreen';\n\n/* -------------------------------------------------------------------------------------------------\n * BaseHeaderLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface BaseHeaderLayoutProps extends Omit<TypographyProps<'div'>, 'tag'> {\n navigationAction?: React.ReactNode;\n primaryAction?: React.ReactNode;\n secondaryAction?: React.ReactNode;\n subtitle?: React.ReactNode;\n sticky?: boolean;\n width?: number;\n}\n\nconst BaseHeaderLayout = React.forwardRef<HTMLDivElement, BaseHeaderLayoutProps>(\n (\n { navigationAction, primaryAction, secondaryAction, subtitle, title, sticky, width, ...props },\n ref\n ) => {\n const isSubtitleString = typeof subtitle === 'string';\n\n if (sticky) {\n return (\n <Box\n display=\"flex\"\n paddingLeft={6}\n paddingRight={6}\n paddingTop={2}\n paddingBottom={2}\n position=\"fixed\"\n top={0}\n background=\"neutral0\"\n shadow=\"tableShadow\"\n width={`${width}px`}\n zIndex={2}\n minHeight={HEIGHT_TOP_NAVIGATION}\n data-strapi-header-sticky\n >\n <Flex alignItems=\"center\" justifyContent=\"space-between\" wrap=\"wrap\" width=\"100%\">\n <Flex>\n {navigationAction && <Box paddingRight={3}>{navigationAction}</Box>}\n <Box>\n <Typography variant=\"beta\" tag=\"h1\" {...props}>\n {title}\n </Typography>\n {isSubtitleString ? (\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {subtitle}\n </Typography>\n ) : (\n subtitle\n )}\n </Box>\n {secondaryAction ? <Box paddingLeft={4}>{secondaryAction}</Box> : null}\n </Flex>\n <Flex>{primaryAction ? <Box paddingLeft={2}>{primaryAction}</Box> : undefined}</Flex>\n </Flex>\n </Box>\n );\n }\n\n return (\n <Box\n ref={ref}\n paddingLeft={RESPONSIVE_DEFAULT_SPACING}\n paddingRight={RESPONSIVE_DEFAULT_SPACING}\n paddingBottom={{\n initial: 4,\n large: 8,\n }}\n paddingTop={{\n initial: 4,\n large: navigationAction ? 6 : 8,\n }}\n background=\"neutral100\"\n data-strapi-header\n >\n <Flex direction=\"column\" alignItems=\"initial\" gap={2}>\n {navigationAction}\n <Flex justifyContent=\"space-between\" wrap=\"wrap\" gap={4}>\n <Flex minWidth={0}>\n <Typography\n tag=\"h1\"\n variant=\"alpha\"\n {...props}\n style={{\n wordBreak: 'break-word',\n overflowWrap: 'break-word',\n maxWidth: '100%',\n }}\n >\n {title}\n </Typography>\n {secondaryAction ? <Box paddingLeft={4}>{secondaryAction}</Box> : null}\n </Flex>\n {primaryAction}\n </Flex>\n </Flex>\n {isSubtitleString ? (\n <Typography\n variant=\"epsilon\"\n textColor=\"neutral600\"\n tag=\"p\"\n paddingTop={{ initial: 4, large: 0 }}\n >\n {subtitle}\n </Typography>\n ) : (\n subtitle\n )}\n </Box>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderLayoutProps extends BaseHeaderLayoutProps {}\n\nconst HeaderLayout = (props: HeaderLayoutProps) => {\n const baseHeaderLayoutRef = React.useRef<HTMLDivElement>(null);\n const [headerSize, setHeaderSize] = React.useState<DOMRect | null>(null);\n const [isVisible, setIsVisible] = React.useState(true);\n const deviceType = useDeviceType();\n\n const containerRef = useElementOnScreen<HTMLDivElement>(setIsVisible, {\n root: null,\n rootMargin: '0px',\n threshold: 0,\n });\n\n useResizeObserver([containerRef], () => {\n if (containerRef.current) {\n const newSize = containerRef.current.getBoundingClientRect();\n setHeaderSize((prevSize) => {\n // Only update if size actually changed\n if (!prevSize || prevSize.height !== newSize.height || prevSize.width !== newSize.width) {\n return newSize;\n }\n return prevSize;\n });\n }\n });\n\n React.useEffect(() => {\n if (containerRef.current) {\n setHeaderSize(containerRef.current.getBoundingClientRect());\n }\n }, [containerRef]);\n\n if (deviceType === 'mobile') {\n return <BaseHeaderLayout {...props} />;\n }\n\n return (\n <div ref={containerRef}>\n <div style={{ height: headerSize?.height }}>\n {isVisible && <BaseHeaderLayout ref={baseHeaderLayoutRef} {...props} />}\n </div>\n\n {!isVisible && <BaseHeaderLayout {...props} sticky width={headerSize?.width} />}\n </div>\n );\n};\n\nHeaderLayout.displayName = 'HeaderLayout';\n\n/**\n * useResizeObserver: hook that observes the size of an element and calls a callback when it changes.\n */\nconst useResizeObserver = (\n sources: React.RefObject<HTMLElement> | React.RefObject<HTMLElement>[],\n onResize: ResizeObserverCallback\n) => {\n const handleResize = useCallbackRef(onResize);\n\n React.useLayoutEffect(() => {\n const resizeObs = new ResizeObserver(handleResize);\n\n if (Array.isArray(sources)) {\n sources.forEach((source) => {\n if (source.current) {\n resizeObs.observe(source.current);\n }\n });\n } else if (sources.current) {\n resizeObs.observe(sources.current);\n }\n\n return () => {\n resizeObs.disconnect();\n };\n }, [sources, handleResize]);\n};\n\nexport type { HeaderLayoutProps, BaseHeaderLayoutProps };\nexport { HeaderLayout, BaseHeaderLayout };\n"],"names":["BaseHeaderLayout","React","forwardRef","navigationAction","primaryAction","secondaryAction","subtitle","title","sticky","width","props","ref","isSubtitleString","_jsx","Box","display","paddingLeft","paddingRight","paddingTop","paddingBottom","position","top","background","shadow","zIndex","minHeight","HEIGHT_TOP_NAVIGATION","data-strapi-header-sticky","_jsxs","Flex","alignItems","justifyContent","wrap","Typography","variant","tag","textColor","undefined","RESPONSIVE_DEFAULT_SPACING","initial","large","data-strapi-header","direction","gap","minWidth","style","wordBreak","overflowWrap","maxWidth","HeaderLayout","baseHeaderLayoutRef","useRef","headerSize","setHeaderSize","useState","isVisible","setIsVisible","deviceType","useDeviceType","containerRef","useElementOnScreen","root","rootMargin","threshold","useResizeObserver","current","newSize","getBoundingClientRect","prevSize","height","useEffect","div","displayName","sources","onResize","handleResize","useCallbackRef","useLayoutEffect","resizeObs","ResizeObserver","Array","isArray","forEach","source","observe","disconnect"],"mappings":"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"}
|
|
@@ -98,6 +98,11 @@ const BaseHeaderLayout = /*#__PURE__*/ React.forwardRef(({ navigationAction, pri
|
|
|
98
98
|
tag: "h1",
|
|
99
99
|
variant: "alpha",
|
|
100
100
|
...props,
|
|
101
|
+
style: {
|
|
102
|
+
wordBreak: 'break-word',
|
|
103
|
+
overflowWrap: 'break-word',
|
|
104
|
+
maxWidth: '100%'
|
|
105
|
+
},
|
|
101
106
|
children: title
|
|
102
107
|
}),
|
|
103
108
|
secondaryAction ? /*#__PURE__*/ jsx(Box, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeaderLayout.mjs","sources":["../../../../../../admin/src/components/Layouts/HeaderLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Typography, TypographyProps, useCallbackRef } from '@strapi/design-system';\n\nimport { HEIGHT_TOP_NAVIGATION, RESPONSIVE_DEFAULT_SPACING } from '../../constants/theme';\nimport { useDeviceType } from '../../hooks/useDeviceType';\nimport { useElementOnScreen } from '../../hooks/useElementOnScreen';\n\n/* -------------------------------------------------------------------------------------------------\n * BaseHeaderLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface BaseHeaderLayoutProps extends Omit<TypographyProps<'div'>, 'tag'> {\n navigationAction?: React.ReactNode;\n primaryAction?: React.ReactNode;\n secondaryAction?: React.ReactNode;\n subtitle?: React.ReactNode;\n sticky?: boolean;\n width?: number;\n}\n\nconst BaseHeaderLayout = React.forwardRef<HTMLDivElement, BaseHeaderLayoutProps>(\n (\n { navigationAction, primaryAction, secondaryAction, subtitle, title, sticky, width, ...props },\n ref\n ) => {\n const isSubtitleString = typeof subtitle === 'string';\n\n if (sticky) {\n return (\n <Box\n display=\"flex\"\n paddingLeft={6}\n paddingRight={6}\n paddingTop={2}\n paddingBottom={2}\n position=\"fixed\"\n top={0}\n background=\"neutral0\"\n shadow=\"tableShadow\"\n width={`${width}px`}\n zIndex={2}\n minHeight={HEIGHT_TOP_NAVIGATION}\n data-strapi-header-sticky\n >\n <Flex alignItems=\"center\" justifyContent=\"space-between\" wrap=\"wrap\" width=\"100%\">\n <Flex>\n {navigationAction && <Box paddingRight={3}>{navigationAction}</Box>}\n <Box>\n <Typography variant=\"beta\" tag=\"h1\" {...props}>\n {title}\n </Typography>\n {isSubtitleString ? (\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {subtitle}\n </Typography>\n ) : (\n subtitle\n )}\n </Box>\n {secondaryAction ? <Box paddingLeft={4}>{secondaryAction}</Box> : null}\n </Flex>\n <Flex>{primaryAction ? <Box paddingLeft={2}>{primaryAction}</Box> : undefined}</Flex>\n </Flex>\n </Box>\n );\n }\n\n return (\n <Box\n ref={ref}\n paddingLeft={RESPONSIVE_DEFAULT_SPACING}\n paddingRight={RESPONSIVE_DEFAULT_SPACING}\n paddingBottom={{\n initial: 4,\n large: 8,\n }}\n paddingTop={{\n initial: 4,\n large: navigationAction ? 6 : 8,\n }}\n background=\"neutral100\"\n data-strapi-header\n >\n <Flex direction=\"column\" alignItems=\"initial\" gap={2}>\n {navigationAction}\n <Flex justifyContent=\"space-between\" wrap=\"wrap\" gap={4}>\n <Flex minWidth={0}>\n <Typography tag=\"h1\" variant=\"alpha\" {...props}>\n {title}\n </Typography>\n {secondaryAction ? <Box paddingLeft={4}>{secondaryAction}</Box> : null}\n </Flex>\n {primaryAction}\n </Flex>\n </Flex>\n {isSubtitleString ? (\n <Typography\n variant=\"epsilon\"\n textColor=\"neutral600\"\n tag=\"p\"\n paddingTop={{ initial: 4, large: 0 }}\n >\n {subtitle}\n </Typography>\n ) : (\n subtitle\n )}\n </Box>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderLayoutProps extends BaseHeaderLayoutProps {}\n\nconst HeaderLayout = (props: HeaderLayoutProps) => {\n const baseHeaderLayoutRef = React.useRef<HTMLDivElement>(null);\n const [headerSize, setHeaderSize] = React.useState<DOMRect | null>(null);\n const [isVisible, setIsVisible] = React.useState(true);\n const deviceType = useDeviceType();\n\n const containerRef = useElementOnScreen<HTMLDivElement>(setIsVisible, {\n root: null,\n rootMargin: '0px',\n threshold: 0,\n });\n\n useResizeObserver([containerRef], () => {\n if (containerRef.current) {\n const newSize = containerRef.current.getBoundingClientRect();\n setHeaderSize((prevSize) => {\n // Only update if size actually changed\n if (!prevSize || prevSize.height !== newSize.height || prevSize.width !== newSize.width) {\n return newSize;\n }\n return prevSize;\n });\n }\n });\n\n React.useEffect(() => {\n if (containerRef.current) {\n setHeaderSize(containerRef.current.getBoundingClientRect());\n }\n }, [containerRef]);\n\n if (deviceType === 'mobile') {\n return <BaseHeaderLayout {...props} />;\n }\n\n return (\n <div ref={containerRef}>\n <div style={{ height: headerSize?.height }}>\n {isVisible && <BaseHeaderLayout ref={baseHeaderLayoutRef} {...props} />}\n </div>\n\n {!isVisible && <BaseHeaderLayout {...props} sticky width={headerSize?.width} />}\n </div>\n );\n};\n\nHeaderLayout.displayName = 'HeaderLayout';\n\n/**\n * useResizeObserver: hook that observes the size of an element and calls a callback when it changes.\n */\nconst useResizeObserver = (\n sources: React.RefObject<HTMLElement> | React.RefObject<HTMLElement>[],\n onResize: ResizeObserverCallback\n) => {\n const handleResize = useCallbackRef(onResize);\n\n React.useLayoutEffect(() => {\n const resizeObs = new ResizeObserver(handleResize);\n\n if (Array.isArray(sources)) {\n sources.forEach((source) => {\n if (source.current) {\n resizeObs.observe(source.current);\n }\n });\n } else if (sources.current) {\n resizeObs.observe(sources.current);\n }\n\n return () => {\n resizeObs.disconnect();\n };\n }, [sources, handleResize]);\n};\n\nexport type { HeaderLayoutProps, BaseHeaderLayoutProps };\nexport { HeaderLayout, BaseHeaderLayout };\n"],"names":["BaseHeaderLayout","React","forwardRef","navigationAction","primaryAction","secondaryAction","subtitle","title","sticky","width","props","ref","isSubtitleString","_jsx","Box","display","paddingLeft","paddingRight","paddingTop","paddingBottom","position","top","background","shadow","zIndex","minHeight","HEIGHT_TOP_NAVIGATION","data-strapi-header-sticky","_jsxs","Flex","alignItems","justifyContent","wrap","Typography","variant","tag","textColor","undefined","RESPONSIVE_DEFAULT_SPACING","initial","large","data-strapi-header","direction","gap","minWidth","HeaderLayout","baseHeaderLayoutRef","useRef","headerSize","setHeaderSize","useState","isVisible","setIsVisible","deviceType","useDeviceType","containerRef","useElementOnScreen","root","rootMargin","threshold","useResizeObserver","current","newSize","getBoundingClientRect","prevSize","height","useEffect","div","style","displayName","sources","onResize","handleResize","useCallbackRef","useLayoutEffect","resizeObs","ResizeObserver","Array","isArray","forEach","source","observe","disconnect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"HeaderLayout.mjs","sources":["../../../../../../admin/src/components/Layouts/HeaderLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Typography, TypographyProps, useCallbackRef } from '@strapi/design-system';\n\nimport { HEIGHT_TOP_NAVIGATION, RESPONSIVE_DEFAULT_SPACING } from '../../constants/theme';\nimport { useDeviceType } from '../../hooks/useDeviceType';\nimport { useElementOnScreen } from '../../hooks/useElementOnScreen';\n\n/* -------------------------------------------------------------------------------------------------\n * BaseHeaderLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface BaseHeaderLayoutProps extends Omit<TypographyProps<'div'>, 'tag'> {\n navigationAction?: React.ReactNode;\n primaryAction?: React.ReactNode;\n secondaryAction?: React.ReactNode;\n subtitle?: React.ReactNode;\n sticky?: boolean;\n width?: number;\n}\n\nconst BaseHeaderLayout = React.forwardRef<HTMLDivElement, BaseHeaderLayoutProps>(\n (\n { navigationAction, primaryAction, secondaryAction, subtitle, title, sticky, width, ...props },\n ref\n ) => {\n const isSubtitleString = typeof subtitle === 'string';\n\n if (sticky) {\n return (\n <Box\n display=\"flex\"\n paddingLeft={6}\n paddingRight={6}\n paddingTop={2}\n paddingBottom={2}\n position=\"fixed\"\n top={0}\n background=\"neutral0\"\n shadow=\"tableShadow\"\n width={`${width}px`}\n zIndex={2}\n minHeight={HEIGHT_TOP_NAVIGATION}\n data-strapi-header-sticky\n >\n <Flex alignItems=\"center\" justifyContent=\"space-between\" wrap=\"wrap\" width=\"100%\">\n <Flex>\n {navigationAction && <Box paddingRight={3}>{navigationAction}</Box>}\n <Box>\n <Typography variant=\"beta\" tag=\"h1\" {...props}>\n {title}\n </Typography>\n {isSubtitleString ? (\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {subtitle}\n </Typography>\n ) : (\n subtitle\n )}\n </Box>\n {secondaryAction ? <Box paddingLeft={4}>{secondaryAction}</Box> : null}\n </Flex>\n <Flex>{primaryAction ? <Box paddingLeft={2}>{primaryAction}</Box> : undefined}</Flex>\n </Flex>\n </Box>\n );\n }\n\n return (\n <Box\n ref={ref}\n paddingLeft={RESPONSIVE_DEFAULT_SPACING}\n paddingRight={RESPONSIVE_DEFAULT_SPACING}\n paddingBottom={{\n initial: 4,\n large: 8,\n }}\n paddingTop={{\n initial: 4,\n large: navigationAction ? 6 : 8,\n }}\n background=\"neutral100\"\n data-strapi-header\n >\n <Flex direction=\"column\" alignItems=\"initial\" gap={2}>\n {navigationAction}\n <Flex justifyContent=\"space-between\" wrap=\"wrap\" gap={4}>\n <Flex minWidth={0}>\n <Typography\n tag=\"h1\"\n variant=\"alpha\"\n {...props}\n style={{\n wordBreak: 'break-word',\n overflowWrap: 'break-word',\n maxWidth: '100%',\n }}\n >\n {title}\n </Typography>\n {secondaryAction ? <Box paddingLeft={4}>{secondaryAction}</Box> : null}\n </Flex>\n {primaryAction}\n </Flex>\n </Flex>\n {isSubtitleString ? (\n <Typography\n variant=\"epsilon\"\n textColor=\"neutral600\"\n tag=\"p\"\n paddingTop={{ initial: 4, large: 0 }}\n >\n {subtitle}\n </Typography>\n ) : (\n subtitle\n )}\n </Box>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderLayoutProps extends BaseHeaderLayoutProps {}\n\nconst HeaderLayout = (props: HeaderLayoutProps) => {\n const baseHeaderLayoutRef = React.useRef<HTMLDivElement>(null);\n const [headerSize, setHeaderSize] = React.useState<DOMRect | null>(null);\n const [isVisible, setIsVisible] = React.useState(true);\n const deviceType = useDeviceType();\n\n const containerRef = useElementOnScreen<HTMLDivElement>(setIsVisible, {\n root: null,\n rootMargin: '0px',\n threshold: 0,\n });\n\n useResizeObserver([containerRef], () => {\n if (containerRef.current) {\n const newSize = containerRef.current.getBoundingClientRect();\n setHeaderSize((prevSize) => {\n // Only update if size actually changed\n if (!prevSize || prevSize.height !== newSize.height || prevSize.width !== newSize.width) {\n return newSize;\n }\n return prevSize;\n });\n }\n });\n\n React.useEffect(() => {\n if (containerRef.current) {\n setHeaderSize(containerRef.current.getBoundingClientRect());\n }\n }, [containerRef]);\n\n if (deviceType === 'mobile') {\n return <BaseHeaderLayout {...props} />;\n }\n\n return (\n <div ref={containerRef}>\n <div style={{ height: headerSize?.height }}>\n {isVisible && <BaseHeaderLayout ref={baseHeaderLayoutRef} {...props} />}\n </div>\n\n {!isVisible && <BaseHeaderLayout {...props} sticky width={headerSize?.width} />}\n </div>\n );\n};\n\nHeaderLayout.displayName = 'HeaderLayout';\n\n/**\n * useResizeObserver: hook that observes the size of an element and calls a callback when it changes.\n */\nconst useResizeObserver = (\n sources: React.RefObject<HTMLElement> | React.RefObject<HTMLElement>[],\n onResize: ResizeObserverCallback\n) => {\n const handleResize = useCallbackRef(onResize);\n\n React.useLayoutEffect(() => {\n const resizeObs = new ResizeObserver(handleResize);\n\n if (Array.isArray(sources)) {\n sources.forEach((source) => {\n if (source.current) {\n resizeObs.observe(source.current);\n }\n });\n } else if (sources.current) {\n resizeObs.observe(sources.current);\n }\n\n return () => {\n resizeObs.disconnect();\n };\n }, [sources, handleResize]);\n};\n\nexport type { HeaderLayoutProps, BaseHeaderLayoutProps };\nexport { HeaderLayout, BaseHeaderLayout };\n"],"names":["BaseHeaderLayout","React","forwardRef","navigationAction","primaryAction","secondaryAction","subtitle","title","sticky","width","props","ref","isSubtitleString","_jsx","Box","display","paddingLeft","paddingRight","paddingTop","paddingBottom","position","top","background","shadow","zIndex","minHeight","HEIGHT_TOP_NAVIGATION","data-strapi-header-sticky","_jsxs","Flex","alignItems","justifyContent","wrap","Typography","variant","tag","textColor","undefined","RESPONSIVE_DEFAULT_SPACING","initial","large","data-strapi-header","direction","gap","minWidth","style","wordBreak","overflowWrap","maxWidth","HeaderLayout","baseHeaderLayoutRef","useRef","headerSize","setHeaderSize","useState","isVisible","setIsVisible","deviceType","useDeviceType","containerRef","useElementOnScreen","root","rootMargin","threshold","useResizeObserver","current","newSize","getBoundingClientRect","prevSize","height","useEffect","div","displayName","sources","onResize","handleResize","useCallbackRef","useLayoutEffect","resizeObs","ResizeObserver","Array","isArray","forEach","source","observe","disconnect"],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
4
4
|
var React = require('react');
|
|
5
5
|
var designSystem = require('@strapi/design-system');
|
|
6
6
|
var reactIntl = require('react-intl');
|
|
7
|
-
var
|
|
7
|
+
var sonner = require('sonner');
|
|
8
8
|
|
|
9
9
|
function _interopNamespaceDefault(e) {
|
|
10
10
|
var n = Object.create(null);
|
|
@@ -28,94 +28,51 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
|
28
28
|
const NotificationsContext = /*#__PURE__*/ React__namespace.createContext({
|
|
29
29
|
toggleNotification: ()=>{}
|
|
30
30
|
});
|
|
31
|
-
|
|
31
|
+
/* -------------------------------------------------------------------------------------------------
|
|
32
|
+
* Provider
|
|
33
|
+
* -----------------------------------------------------------------------------------------------*/ /**
|
|
32
34
|
* @internal
|
|
33
|
-
* @description
|
|
35
|
+
* @description exposes the `NotificationsContext` to its children and renders notifications
|
|
34
36
|
*/ const NotificationsProvider = ({ children })=>{
|
|
35
|
-
const notificationIdRef = React__namespace.useRef(0);
|
|
36
|
-
const [notifications, setNotifications] = React__namespace.useState([]);
|
|
37
37
|
const toggleNotification = React__namespace.useCallback(({ type, message, link, timeout, blockTransition, onClose, title })=>{
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
38
|
+
sonner.toast.custom((id)=>{
|
|
39
|
+
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
40
|
+
width: "50rem",
|
|
41
|
+
maxWidth: "100%",
|
|
42
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(Notification, {
|
|
43
|
+
type: type,
|
|
44
|
+
message: message,
|
|
45
|
+
title: title,
|
|
46
|
+
link: link,
|
|
47
|
+
clearNotification: ()=>{
|
|
48
|
+
sonner.toast.dismiss(id);
|
|
49
|
+
onClose?.();
|
|
50
|
+
}
|
|
51
|
+
})
|
|
52
|
+
});
|
|
53
|
+
}, {
|
|
54
|
+
duration: blockTransition ? Infinity : timeout
|
|
55
|
+
});
|
|
54
56
|
}, []);
|
|
55
57
|
const value = React__namespace.useMemo(()=>({
|
|
56
58
|
toggleNotification
|
|
57
59
|
}), [
|
|
58
60
|
toggleNotification
|
|
59
61
|
]);
|
|
60
|
-
return /*#__PURE__*/ jsxRuntime.jsxs(
|
|
61
|
-
value: value,
|
|
62
|
+
return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
62
63
|
children: [
|
|
63
|
-
/*#__PURE__*/ jsxRuntime.jsx(
|
|
64
|
-
|
|
65
|
-
transform: "translateX(-50%)",
|
|
66
|
-
position: "fixed",
|
|
67
|
-
direction: "column",
|
|
68
|
-
alignItems: "stretch",
|
|
69
|
-
gap: 4,
|
|
70
|
-
marginTop: 4,
|
|
71
|
-
top: theme.HEIGHT_TOP_NAVIGATION,
|
|
72
|
-
width: "100%",
|
|
73
|
-
maxWidth: `50rem`,
|
|
74
|
-
zIndex: "notification",
|
|
75
|
-
children: notifications.map((notification)=>{
|
|
76
|
-
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
77
|
-
paddingLeft: 4,
|
|
78
|
-
paddingRight: 4,
|
|
79
|
-
children: /*#__PURE__*/ jsxRuntime.jsx(Notification, {
|
|
80
|
-
...notification,
|
|
81
|
-
clearNotification: clearNotification
|
|
82
|
-
})
|
|
83
|
-
}, notification.id);
|
|
84
|
-
})
|
|
64
|
+
/*#__PURE__*/ jsxRuntime.jsx(sonner.Toaster, {
|
|
65
|
+
position: "top-center"
|
|
85
66
|
}),
|
|
86
|
-
|
|
67
|
+
/*#__PURE__*/ jsxRuntime.jsx(NotificationsContext.Provider, {
|
|
68
|
+
value: value,
|
|
69
|
+
children: children
|
|
70
|
+
})
|
|
87
71
|
]
|
|
88
72
|
});
|
|
89
73
|
};
|
|
90
|
-
const Notification = ({ clearNotification,
|
|
74
|
+
const Notification = ({ clearNotification, link, message, onClose, title, type })=>{
|
|
91
75
|
const { formatMessage } = reactIntl.useIntl();
|
|
92
|
-
/**
|
|
93
|
-
* Chances are `onClose` won't be classed as stabilised,
|
|
94
|
-
* so we use `useCallbackRef` to avoid make it stable.
|
|
95
|
-
*/ const onCloseCallback = designSystem.useCallbackRef(onClose);
|
|
96
|
-
const handleClose = React__namespace.useCallback(()=>{
|
|
97
|
-
onCloseCallback();
|
|
98
|
-
clearNotification(id);
|
|
99
|
-
}, [
|
|
100
|
-
clearNotification,
|
|
101
|
-
id,
|
|
102
|
-
onCloseCallback
|
|
103
|
-
]);
|
|
104
|
-
// eslint-disable-next-line consistent-return
|
|
105
|
-
React__namespace.useEffect(()=>{
|
|
106
|
-
if (!blockTransition) {
|
|
107
|
-
const timeoutReference = setTimeout(()=>{
|
|
108
|
-
handleClose();
|
|
109
|
-
}, timeout);
|
|
110
|
-
return ()=>{
|
|
111
|
-
clearTimeout(timeoutReference);
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
}, [
|
|
115
|
-
blockTransition,
|
|
116
|
-
handleClose,
|
|
117
|
-
timeout
|
|
118
|
-
]);
|
|
119
76
|
const getVariant = ()=>{
|
|
120
77
|
switch(type){
|
|
121
78
|
case 'info':
|
|
@@ -134,7 +91,10 @@ const Notification = ({ clearNotification, blockTransition = false, id, link, me
|
|
|
134
91
|
isExternal: true,
|
|
135
92
|
children: link.label
|
|
136
93
|
}) : undefined,
|
|
137
|
-
onClose:
|
|
94
|
+
onClose: ()=>{
|
|
95
|
+
onClose?.();
|
|
96
|
+
clearNotification();
|
|
97
|
+
},
|
|
138
98
|
closeLabel: formatMessage({
|
|
139
99
|
id: 'global.close',
|
|
140
100
|
defaultMessage: 'Close'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Notifications.js","sources":["../../../../../admin/src/features/Notifications.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Alert, AlertVariant, Flex, useCallbackRef, Link, Box } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { HEIGHT_TOP_NAVIGATION } from '../constants/theme';\n\ninterface NotificationLink {\n label: string;\n target?: string;\n url: string;\n}\n\ninterface NotificationConfig {\n blockTransition?: boolean;\n link?: NotificationLink;\n message?: string;\n onClose?: () => void;\n timeout?: number;\n title?: string;\n type?: 'info' | 'warning' | 'danger' | 'success';\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Context\n * -----------------------------------------------------------------------------------------------*/\n\ninterface NotificationsContextValue {\n /**\n * Toggles a notification, wrapped in `useCallback` for a stable identity.\n */\n toggleNotification: (config: NotificationConfig) => void;\n}\n\nconst NotificationsContext = React.createContext<NotificationsContextValue>({\n toggleNotification: () => {},\n});\n\n/* -------------------------------------------------------------------------------------------------\n * Provider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface NotificationsProviderProps {\n children: React.ReactNode;\n}\ninterface Notification extends NotificationConfig {\n id: number;\n}\n\n/**\n * @internal\n * @description DO NOT USE. This will be removed before stable release of v5.\n */\nconst NotificationsProvider = ({ children }: NotificationsProviderProps) => {\n const notificationIdRef = React.useRef(0);\n\n const [notifications, setNotifications] = React.useState<Notification[]>([]);\n\n const toggleNotification = React.useCallback(\n ({ type, message, link, timeout, blockTransition, onClose, title }: NotificationConfig) => {\n setNotifications((s) => [\n ...s,\n {\n id: notificationIdRef.current++,\n type,\n message,\n link,\n timeout,\n blockTransition,\n onClose,\n title,\n },\n ]);\n },\n []\n );\n\n const clearNotification = React.useCallback((id: number) => {\n setNotifications((s) => s.filter((n) => n.id !== id));\n }, []);\n\n const value = React.useMemo(() => ({ toggleNotification }), [toggleNotification]);\n\n return (\n <NotificationsContext.Provider value={value}>\n <Flex\n left=\"50%\"\n transform=\"translateX(-50%)\"\n position=\"fixed\"\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n marginTop={4}\n top={HEIGHT_TOP_NAVIGATION}\n width=\"100%\"\n maxWidth={`50rem`}\n zIndex=\"notification\"\n >\n {notifications.map((notification) => {\n return (\n <Box key={notification.id} paddingLeft={4} paddingRight={4}>\n <Notification {...notification} clearNotification={clearNotification} />\n </Box>\n );\n })}\n </Flex>\n {children}\n </NotificationsContext.Provider>\n );\n};\n\ninterface NotificationProps extends Notification {\n clearNotification: (id: number) => void;\n}\n\nconst Notification = ({\n clearNotification,\n blockTransition = false,\n id,\n link,\n message,\n onClose,\n timeout = 2500,\n title,\n type,\n}: NotificationProps) => {\n const { formatMessage } = useIntl();\n /**\n * Chances are `onClose` won't be classed as stabilised,\n * so we use `useCallbackRef` to avoid make it stable.\n */\n const onCloseCallback = useCallbackRef(onClose);\n\n const handleClose = React.useCallback(() => {\n onCloseCallback();\n\n clearNotification(id);\n }, [clearNotification, id, onCloseCallback]);\n\n // eslint-disable-next-line consistent-return\n React.useEffect(() => {\n if (!blockTransition) {\n const timeoutReference = setTimeout(() => {\n handleClose();\n }, timeout);\n\n return () => {\n clearTimeout(timeoutReference);\n };\n }\n }, [blockTransition, handleClose, timeout]);\n\n const getVariant = (): AlertVariant => {\n switch (type) {\n case 'info':\n return 'default';\n case 'danger':\n return 'danger';\n case 'warning':\n return 'warning';\n default:\n return 'success';\n }\n };\n\n return (\n <Alert\n action={\n link ? (\n <Link href={link.url} isExternal>\n {link.label}\n </Link>\n ) : undefined\n }\n onClose={handleClose}\n closeLabel={formatMessage({\n id: 'global.close',\n defaultMessage: 'Close',\n })}\n title={title}\n variant={getVariant()}\n >\n {message}\n </Alert>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Hook\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @preserve\n * @description Returns an object to interact with the notification\n * system. The callbacks are wrapped in `useCallback` for a stable\n * identity.\n *\n * @example\n * ```tsx\n * import { useNotification } from '@strapi/strapi/admin';\n *\n * const MyComponent = () => {\n * const { toggleNotification } = useNotification();\n *\n * return <button onClick={() => toggleNotification({ message: 'Hello world!' })}>Click me</button>;\n */\nconst useNotification = () => React.useContext(NotificationsContext);\n\nexport { NotificationsProvider, useNotification };\nexport type { NotificationConfig, NotificationsContextValue };\n"],"names":["NotificationsContext","React","createContext","toggleNotification","NotificationsProvider","children","notificationIdRef","useRef","notifications","setNotifications","useState","useCallback","type","message","link","timeout","blockTransition","onClose","title","s","id","current","clearNotification","filter","n","value","useMemo","_jsxs","Provider","_jsx","Flex","left","transform","position","direction","alignItems","gap","marginTop","top","HEIGHT_TOP_NAVIGATION","width","maxWidth","zIndex","map","notification","Box","paddingLeft","paddingRight","Notification","formatMessage","useIntl","onCloseCallback","useCallbackRef","handleClose","useEffect","timeoutReference","setTimeout","clearTimeout","getVariant","Alert","action","Link","href","url","isExternal","label","undefined","closeLabel","defaultMessage","variant","useNotification","useContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,MAAMA,oBAAAA,iBAAuBC,gBAAMC,CAAAA,aAAa,CAA4B;AAC1EC,IAAAA,kBAAAA,EAAoB,IAAO;AAC7B,CAAA,CAAA;AAaA;;;AAGC,IACKC,MAAAA,qBAAAA,GAAwB,CAAC,EAAEC,QAAQ,EAA8B,GAAA;IACrE,MAAMC,iBAAAA,GAAoBL,gBAAMM,CAAAA,MAAM,CAAC,CAAA,CAAA;AAEvC,IAAA,MAAM,CAACC,aAAeC,EAAAA,gBAAAA,CAAiB,GAAGR,gBAAMS,CAAAA,QAAQ,CAAiB,EAAE,CAAA;AAE3E,IAAA,MAAMP,qBAAqBF,gBAAMU,CAAAA,WAAW,CAC1C,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAEC,IAAI,EAAEC,OAAO,EAAEC,eAAe,EAAEC,OAAO,EAAEC,KAAK,EAAsB,GAAA;AACpFT,QAAAA,gBAAAA,CAAiB,CAACU,CAAM,GAAA;AACnBA,gBAAAA,GAAAA,CAAAA;AACH,gBAAA;AACEC,oBAAAA,EAAAA,EAAId,kBAAkBe,OAAO,EAAA;AAC7BT,oBAAAA,IAAAA;AACAC,oBAAAA,OAAAA;AACAC,oBAAAA,IAAAA;AACAC,oBAAAA,OAAAA;AACAC,oBAAAA,eAAAA;AACAC,oBAAAA,OAAAA;AACAC,oBAAAA;AACF;AACD,aAAA,CAAA;AACH,KAAA,EACA,EAAE,CAAA;AAGJ,IAAA,MAAMI,iBAAoBrB,GAAAA,gBAAAA,CAAMU,WAAW,CAAC,CAACS,EAAAA,GAAAA;QAC3CX,gBAAiB,CAAA,CAACU,IAAMA,CAAEI,CAAAA,MAAM,CAAC,CAACC,CAAAA,GAAMA,CAAEJ,CAAAA,EAAE,KAAKA,EAAAA,CAAAA,CAAAA;AACnD,KAAA,EAAG,EAAE,CAAA;AAEL,IAAA,MAAMK,KAAQxB,GAAAA,gBAAAA,CAAMyB,OAAO,CAAC,KAAO;AAAEvB,YAAAA;AAAmB,SAAA,CAAI,EAAA;AAACA,QAAAA;AAAmB,KAAA,CAAA;IAEhF,qBACEwB,eAAA,CAAC3B,qBAAqB4B,QAAQ,EAAA;QAACH,KAAOA,EAAAA,KAAAA;;0BACpCI,cAACC,CAAAA,iBAAAA,EAAAA;gBACCC,IAAK,EAAA,KAAA;gBACLC,SAAU,EAAA,kBAAA;gBACVC,QAAS,EAAA,OAAA;gBACTC,SAAU,EAAA,QAAA;gBACVC,UAAW,EAAA,SAAA;gBACXC,GAAK,EAAA,CAAA;gBACLC,SAAW,EAAA,CAAA;gBACXC,GAAKC,EAAAA,2BAAAA;gBACLC,KAAM,EAAA,MAAA;gBACNC,QAAU,EAAA,CAAC,KAAK,CAAC;gBACjBC,MAAO,EAAA,cAAA;0BAENlC,aAAcmC,CAAAA,GAAG,CAAC,CAACC,YAAAA,GAAAA;AAClB,oBAAA,qBACEf,cAACgB,CAAAA,gBAAAA,EAAAA;wBAA0BC,WAAa,EAAA,CAAA;wBAAGC,YAAc,EAAA,CAAA;AACvD,wBAAA,QAAA,gBAAAlB,cAACmB,CAAAA,YAAAA,EAAAA;AAAc,4BAAA,GAAGJ,YAAY;4BAAEtB,iBAAmBA,EAAAA;;AAD3CsB,qBAAAA,EAAAA,YAAAA,CAAaxB,EAAE,CAAA;AAI7B,iBAAA;;AAEDf,YAAAA;;;AAGP;AAMA,MAAM2C,YAAAA,GAAe,CAAC,EACpB1B,iBAAiB,EACjBN,eAAkB,GAAA,KAAK,EACvBI,EAAE,EACFN,IAAI,EACJD,OAAO,EACPI,OAAO,EACPF,OAAAA,GAAU,IAAI,EACdG,KAAK,EACLN,IAAI,EACc,GAAA;IAClB,MAAM,EAAEqC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B;;;MAIA,MAAMC,kBAAkBC,2BAAenC,CAAAA,OAAAA,CAAAA;IAEvC,MAAMoC,WAAAA,GAAcpD,gBAAMU,CAAAA,WAAW,CAAC,IAAA;AACpCwC,QAAAA,eAAAA,EAAAA;QAEA7B,iBAAkBF,CAAAA,EAAAA,CAAAA;KACjB,EAAA;AAACE,QAAAA,iBAAAA;AAAmBF,QAAAA,EAAAA;AAAI+B,QAAAA;AAAgB,KAAA,CAAA;;AAG3ClD,IAAAA,gBAAAA,CAAMqD,SAAS,CAAC,IAAA;AACd,QAAA,IAAI,CAACtC,eAAiB,EAAA;AACpB,YAAA,MAAMuC,mBAAmBC,UAAW,CAAA,IAAA;AAClCH,gBAAAA,WAAAA,EAAAA;aACCtC,EAAAA,OAAAA,CAAAA;YAEH,OAAO,IAAA;gBACL0C,YAAaF,CAAAA,gBAAAA,CAAAA;AACf,aAAA;AACF;KACC,EAAA;AAACvC,QAAAA,eAAAA;AAAiBqC,QAAAA,WAAAA;AAAatC,QAAAA;AAAQ,KAAA,CAAA;AAE1C,IAAA,MAAM2C,UAAa,GAAA,IAAA;QACjB,OAAQ9C,IAAAA;YACN,KAAK,MAAA;gBACH,OAAO,SAAA;YACT,KAAK,QAAA;gBACH,OAAO,QAAA;YACT,KAAK,SAAA;gBACH,OAAO,SAAA;AACT,YAAA;gBACE,OAAO,SAAA;AACX;AACF,KAAA;AAEA,IAAA,qBACEiB,cAAC8B,CAAAA,kBAAAA,EAAAA;AACCC,QAAAA,MAAAA,EACE9C,qBACEe,cAACgC,CAAAA,iBAAAA,EAAAA;AAAKC,YAAAA,IAAAA,EAAMhD,KAAKiD,GAAG;YAAEC,UAAU,EAAA,IAAA;AAC7BlD,YAAAA,QAAAA,EAAAA,IAAAA,CAAKmD;AAENC,SAAAA,CAAAA,GAAAA,SAAAA;QAENjD,OAASoC,EAAAA,WAAAA;AACTc,QAAAA,UAAAA,EAAYlB,aAAc,CAAA;YACxB7B,EAAI,EAAA,cAAA;YACJgD,cAAgB,EAAA;AAClB,SAAA,CAAA;QACAlD,KAAOA,EAAAA,KAAAA;QACPmD,OAASX,EAAAA,UAAAA,EAAAA;AAER7C,QAAAA,QAAAA,EAAAA;;AAGP,CAAA;AAEA;;;;;;;;;;;;;;;;AAkBC,IACKyD,MAAAA,eAAAA,GAAkB,IAAMrE,gBAAAA,CAAMsE,UAAU,CAACvE,oBAAAA;;;;;"}
|
|
1
|
+
{"version":3,"file":"Notifications.js","sources":["../../../../../admin/src/features/Notifications.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Alert, AlertVariant, Link, Box } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { Toaster, toast } from 'sonner';\n\ninterface NotificationLink {\n label: string;\n target?: string;\n url: string;\n}\n\ninterface NotificationConfig {\n blockTransition?: boolean;\n link?: NotificationLink;\n message?: string;\n onClose?: () => void;\n timeout?: number;\n title?: string;\n type?: 'info' | 'warning' | 'danger' | 'success';\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Context\n * -----------------------------------------------------------------------------------------------*/\n\ninterface NotificationsContextValue {\n /**\n * Toggles a notification, wrapped in `useCallback` for a stable identity.\n */\n toggleNotification: (config: NotificationConfig) => void;\n}\n\nconst NotificationsContext = React.createContext<NotificationsContextValue>({\n toggleNotification: () => {},\n});\n\n/* -------------------------------------------------------------------------------------------------\n * Provider\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description exposes the `NotificationsContext` to its children and renders notifications\n */\nconst NotificationsProvider = ({ children }: { children: React.ReactNode }) => {\n const toggleNotification = React.useCallback(\n ({ type, message, link, timeout, blockTransition, onClose, title }: NotificationConfig) => {\n toast.custom(\n (id) => {\n return (\n <Box width=\"50rem\" maxWidth=\"100%\">\n <Notification\n type={type}\n message={message}\n title={title}\n link={link}\n clearNotification={() => {\n toast.dismiss(id);\n onClose?.();\n }}\n />\n </Box>\n );\n },\n { duration: blockTransition ? Infinity : timeout }\n );\n },\n []\n );\n\n const value = React.useMemo(() => ({ toggleNotification }), [toggleNotification]);\n\n return (\n <>\n <Toaster position=\"top-center\" />\n <NotificationsContext.Provider value={value}>{children}</NotificationsContext.Provider>\n </>\n );\n};\n\ninterface NotificationProps extends Omit<NotificationConfig, 'blockTransition' | 'timeout'> {\n clearNotification: () => void;\n}\n\nconst Notification = ({\n clearNotification,\n link,\n message,\n onClose,\n title,\n type,\n}: NotificationProps) => {\n const { formatMessage } = useIntl();\n\n const getVariant = (): AlertVariant => {\n switch (type) {\n case 'info':\n return 'default';\n case 'danger':\n return 'danger';\n case 'warning':\n return 'warning';\n default:\n return 'success';\n }\n };\n\n return (\n <Alert\n action={\n link ? (\n <Link href={link.url} isExternal>\n {link.label}\n </Link>\n ) : undefined\n }\n onClose={() => {\n onClose?.();\n clearNotification();\n }}\n closeLabel={formatMessage({\n id: 'global.close',\n defaultMessage: 'Close',\n })}\n title={title}\n variant={getVariant()}\n >\n {message}\n </Alert>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Hook\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @preserve\n * @description Returns an object to interact with the notification\n * system. The callbacks are wrapped in `useCallback` for a stable\n * identity.\n *\n * @example\n * ```tsx\n * import { useNotification } from '@strapi/strapi/admin';\n *\n * const MyComponent = () => {\n * const { toggleNotification } = useNotification();\n *\n * return <button onClick={() => toggleNotification({ message: 'Hello world!' })}>Click me</button>;\n */\nconst useNotification = () => React.useContext(NotificationsContext);\n\nexport { NotificationsProvider, useNotification };\nexport type { NotificationConfig, NotificationsContextValue };\n"],"names":["NotificationsContext","React","createContext","toggleNotification","NotificationsProvider","children","useCallback","type","message","link","timeout","blockTransition","onClose","title","toast","custom","id","_jsx","Box","width","maxWidth","Notification","clearNotification","dismiss","duration","Infinity","value","useMemo","_jsxs","_Fragment","Toaster","position","Provider","formatMessage","useIntl","getVariant","Alert","action","Link","href","url","isExternal","label","undefined","closeLabel","defaultMessage","variant","useNotification","useContext"],"mappings":"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"}
|
|
@@ -1,100 +1,57 @@
|
|
|
1
|
-
import { jsxs,
|
|
1
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import {
|
|
3
|
+
import { Box, Alert, Link } from '@strapi/design-system';
|
|
4
4
|
import { useIntl } from 'react-intl';
|
|
5
|
-
import {
|
|
5
|
+
import { toast, Toaster } from 'sonner';
|
|
6
6
|
|
|
7
7
|
const NotificationsContext = /*#__PURE__*/ React.createContext({
|
|
8
8
|
toggleNotification: ()=>{}
|
|
9
9
|
});
|
|
10
|
-
|
|
10
|
+
/* -------------------------------------------------------------------------------------------------
|
|
11
|
+
* Provider
|
|
12
|
+
* -----------------------------------------------------------------------------------------------*/ /**
|
|
11
13
|
* @internal
|
|
12
|
-
* @description
|
|
14
|
+
* @description exposes the `NotificationsContext` to its children and renders notifications
|
|
13
15
|
*/ const NotificationsProvider = ({ children })=>{
|
|
14
|
-
const notificationIdRef = React.useRef(0);
|
|
15
|
-
const [notifications, setNotifications] = React.useState([]);
|
|
16
16
|
const toggleNotification = React.useCallback(({ type, message, link, timeout, blockTransition, onClose, title })=>{
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
17
|
+
toast.custom((id)=>{
|
|
18
|
+
return /*#__PURE__*/ jsx(Box, {
|
|
19
|
+
width: "50rem",
|
|
20
|
+
maxWidth: "100%",
|
|
21
|
+
children: /*#__PURE__*/ jsx(Notification, {
|
|
22
|
+
type: type,
|
|
23
|
+
message: message,
|
|
24
|
+
title: title,
|
|
25
|
+
link: link,
|
|
26
|
+
clearNotification: ()=>{
|
|
27
|
+
toast.dismiss(id);
|
|
28
|
+
onClose?.();
|
|
29
|
+
}
|
|
30
|
+
})
|
|
31
|
+
});
|
|
32
|
+
}, {
|
|
33
|
+
duration: blockTransition ? Infinity : timeout
|
|
34
|
+
});
|
|
33
35
|
}, []);
|
|
34
36
|
const value = React.useMemo(()=>({
|
|
35
37
|
toggleNotification
|
|
36
38
|
}), [
|
|
37
39
|
toggleNotification
|
|
38
40
|
]);
|
|
39
|
-
return /*#__PURE__*/ jsxs(
|
|
40
|
-
value: value,
|
|
41
|
+
return /*#__PURE__*/ jsxs(Fragment, {
|
|
41
42
|
children: [
|
|
42
|
-
/*#__PURE__*/ jsx(
|
|
43
|
-
|
|
44
|
-
transform: "translateX(-50%)",
|
|
45
|
-
position: "fixed",
|
|
46
|
-
direction: "column",
|
|
47
|
-
alignItems: "stretch",
|
|
48
|
-
gap: 4,
|
|
49
|
-
marginTop: 4,
|
|
50
|
-
top: HEIGHT_TOP_NAVIGATION,
|
|
51
|
-
width: "100%",
|
|
52
|
-
maxWidth: `50rem`,
|
|
53
|
-
zIndex: "notification",
|
|
54
|
-
children: notifications.map((notification)=>{
|
|
55
|
-
return /*#__PURE__*/ jsx(Box, {
|
|
56
|
-
paddingLeft: 4,
|
|
57
|
-
paddingRight: 4,
|
|
58
|
-
children: /*#__PURE__*/ jsx(Notification, {
|
|
59
|
-
...notification,
|
|
60
|
-
clearNotification: clearNotification
|
|
61
|
-
})
|
|
62
|
-
}, notification.id);
|
|
63
|
-
})
|
|
43
|
+
/*#__PURE__*/ jsx(Toaster, {
|
|
44
|
+
position: "top-center"
|
|
64
45
|
}),
|
|
65
|
-
|
|
46
|
+
/*#__PURE__*/ jsx(NotificationsContext.Provider, {
|
|
47
|
+
value: value,
|
|
48
|
+
children: children
|
|
49
|
+
})
|
|
66
50
|
]
|
|
67
51
|
});
|
|
68
52
|
};
|
|
69
|
-
const Notification = ({ clearNotification,
|
|
53
|
+
const Notification = ({ clearNotification, link, message, onClose, title, type })=>{
|
|
70
54
|
const { formatMessage } = useIntl();
|
|
71
|
-
/**
|
|
72
|
-
* Chances are `onClose` won't be classed as stabilised,
|
|
73
|
-
* so we use `useCallbackRef` to avoid make it stable.
|
|
74
|
-
*/ const onCloseCallback = useCallbackRef(onClose);
|
|
75
|
-
const handleClose = React.useCallback(()=>{
|
|
76
|
-
onCloseCallback();
|
|
77
|
-
clearNotification(id);
|
|
78
|
-
}, [
|
|
79
|
-
clearNotification,
|
|
80
|
-
id,
|
|
81
|
-
onCloseCallback
|
|
82
|
-
]);
|
|
83
|
-
// eslint-disable-next-line consistent-return
|
|
84
|
-
React.useEffect(()=>{
|
|
85
|
-
if (!blockTransition) {
|
|
86
|
-
const timeoutReference = setTimeout(()=>{
|
|
87
|
-
handleClose();
|
|
88
|
-
}, timeout);
|
|
89
|
-
return ()=>{
|
|
90
|
-
clearTimeout(timeoutReference);
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
}, [
|
|
94
|
-
blockTransition,
|
|
95
|
-
handleClose,
|
|
96
|
-
timeout
|
|
97
|
-
]);
|
|
98
55
|
const getVariant = ()=>{
|
|
99
56
|
switch(type){
|
|
100
57
|
case 'info':
|
|
@@ -113,7 +70,10 @@ const Notification = ({ clearNotification, blockTransition = false, id, link, me
|
|
|
113
70
|
isExternal: true,
|
|
114
71
|
children: link.label
|
|
115
72
|
}) : undefined,
|
|
116
|
-
onClose:
|
|
73
|
+
onClose: ()=>{
|
|
74
|
+
onClose?.();
|
|
75
|
+
clearNotification();
|
|
76
|
+
},
|
|
117
77
|
closeLabel: formatMessage({
|
|
118
78
|
id: 'global.close',
|
|
119
79
|
defaultMessage: 'Close'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Notifications.mjs","sources":["../../../../../admin/src/features/Notifications.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Alert, AlertVariant,
|
|
1
|
+
{"version":3,"file":"Notifications.mjs","sources":["../../../../../admin/src/features/Notifications.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Alert, AlertVariant, Link, Box } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { Toaster, toast } from 'sonner';\n\ninterface NotificationLink {\n label: string;\n target?: string;\n url: string;\n}\n\ninterface NotificationConfig {\n blockTransition?: boolean;\n link?: NotificationLink;\n message?: string;\n onClose?: () => void;\n timeout?: number;\n title?: string;\n type?: 'info' | 'warning' | 'danger' | 'success';\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Context\n * -----------------------------------------------------------------------------------------------*/\n\ninterface NotificationsContextValue {\n /**\n * Toggles a notification, wrapped in `useCallback` for a stable identity.\n */\n toggleNotification: (config: NotificationConfig) => void;\n}\n\nconst NotificationsContext = React.createContext<NotificationsContextValue>({\n toggleNotification: () => {},\n});\n\n/* -------------------------------------------------------------------------------------------------\n * Provider\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description exposes the `NotificationsContext` to its children and renders notifications\n */\nconst NotificationsProvider = ({ children }: { children: React.ReactNode }) => {\n const toggleNotification = React.useCallback(\n ({ type, message, link, timeout, blockTransition, onClose, title }: NotificationConfig) => {\n toast.custom(\n (id) => {\n return (\n <Box width=\"50rem\" maxWidth=\"100%\">\n <Notification\n type={type}\n message={message}\n title={title}\n link={link}\n clearNotification={() => {\n toast.dismiss(id);\n onClose?.();\n }}\n />\n </Box>\n );\n },\n { duration: blockTransition ? Infinity : timeout }\n );\n },\n []\n );\n\n const value = React.useMemo(() => ({ toggleNotification }), [toggleNotification]);\n\n return (\n <>\n <Toaster position=\"top-center\" />\n <NotificationsContext.Provider value={value}>{children}</NotificationsContext.Provider>\n </>\n );\n};\n\ninterface NotificationProps extends Omit<NotificationConfig, 'blockTransition' | 'timeout'> {\n clearNotification: () => void;\n}\n\nconst Notification = ({\n clearNotification,\n link,\n message,\n onClose,\n title,\n type,\n}: NotificationProps) => {\n const { formatMessage } = useIntl();\n\n const getVariant = (): AlertVariant => {\n switch (type) {\n case 'info':\n return 'default';\n case 'danger':\n return 'danger';\n case 'warning':\n return 'warning';\n default:\n return 'success';\n }\n };\n\n return (\n <Alert\n action={\n link ? (\n <Link href={link.url} isExternal>\n {link.label}\n </Link>\n ) : undefined\n }\n onClose={() => {\n onClose?.();\n clearNotification();\n }}\n closeLabel={formatMessage({\n id: 'global.close',\n defaultMessage: 'Close',\n })}\n title={title}\n variant={getVariant()}\n >\n {message}\n </Alert>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Hook\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @preserve\n * @description Returns an object to interact with the notification\n * system. The callbacks are wrapped in `useCallback` for a stable\n * identity.\n *\n * @example\n * ```tsx\n * import { useNotification } from '@strapi/strapi/admin';\n *\n * const MyComponent = () => {\n * const { toggleNotification } = useNotification();\n *\n * return <button onClick={() => toggleNotification({ message: 'Hello world!' })}>Click me</button>;\n */\nconst useNotification = () => React.useContext(NotificationsContext);\n\nexport { NotificationsProvider, useNotification };\nexport type { NotificationConfig, NotificationsContextValue };\n"],"names":["NotificationsContext","React","createContext","toggleNotification","NotificationsProvider","children","useCallback","type","message","link","timeout","blockTransition","onClose","title","toast","custom","id","_jsx","Box","width","maxWidth","Notification","clearNotification","dismiss","duration","Infinity","value","useMemo","_jsxs","_Fragment","Toaster","position","Provider","formatMessage","useIntl","getVariant","Alert","action","Link","href","url","isExternal","label","undefined","closeLabel","defaultMessage","variant","useNotification","useContext"],"mappings":"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"}
|
|
@@ -83,6 +83,12 @@ var ru = {
|
|
|
83
83
|
Email: Email,
|
|
84
84
|
"Files Upload": "Загрузка файлов",
|
|
85
85
|
"HomePage.head.title": "Домашняя страница",
|
|
86
|
+
"HomePage.header.title": "Привет {name}",
|
|
87
|
+
"HomePage.header.subtitle": "Добро пожаловать в панель администратора",
|
|
88
|
+
"HomePage.widget.loading": "Загрузка содержимого виджета",
|
|
89
|
+
"HomePage.widget.error": "Не удалось загрузить содержимое виджета.",
|
|
90
|
+
"HomePage.widget.no-data": "Контент не найден.",
|
|
91
|
+
"HomePage.widget.no-permissions": "У вас нет разрешения на просмотр этого виджета",
|
|
86
92
|
"HomePage.roadmap": "Смотрите нашу дорожную карту",
|
|
87
93
|
"HomePage.welcome.congrats": "Поздравляем!",
|
|
88
94
|
"HomePage.welcome.congrats.content": "Вы вошли как первый администратор. Чтобы открыть для себя мощные функции, предоставляемые Strapi,",
|
|
@@ -184,6 +190,7 @@ var ru = {
|
|
|
184
190
|
"Settings.permissions.auditLogs.entry.update": "Обновить {model, select, undefined {} other { ({model})}}",
|
|
185
191
|
"Settings.permissions.auditLogs.filters.combobox.aria-label": "Выполните поиск и выберите вариант для фильтрации",
|
|
186
192
|
"Settings.permissions.auditLogs.listview.header.subtitle": "Журналы всех действий, которые произошли в вашей среде",
|
|
193
|
+
"Settings.permissions.auditLogs.not-available": "Журналы аудита доступны только как часть платного плана. Обновитесь, чтобы получить поисковое и фильтруемое отображение всех действий.",
|
|
187
194
|
"Settings.permissions.auditLogs.media.create": "Создать медиафайл",
|
|
188
195
|
"Settings.permissions.auditLogs.media.delete": "Удалить медиафайл",
|
|
189
196
|
"Settings.permissions.auditLogs.media.update": "Обновить медиафайл",
|
|
@@ -215,7 +222,7 @@ var ru = {
|
|
|
215
222
|
"Settings.permissions.select-all-by-permission": "Выбрать все разрешения {label}",
|
|
216
223
|
"Settings.permissions.select-by-permission": "Выберите разрешения {label}",
|
|
217
224
|
"Settings.permissions.users.active": "Активен",
|
|
218
|
-
"Settings.permissions.users.create": "
|
|
225
|
+
"Settings.permissions.users.create": "Пригласить нового пользователя",
|
|
219
226
|
"Settings.permissions.users.email": "Email",
|
|
220
227
|
"Settings.permissions.users.firstname": "Имя",
|
|
221
228
|
"Settings.permissions.users.form.sso": "Соединить с SSO",
|
|
@@ -730,6 +737,8 @@ var ru = {
|
|
|
730
737
|
"global.settings": "Настройки",
|
|
731
738
|
"global.type": "Тип",
|
|
732
739
|
"global.users": "Пользователи",
|
|
740
|
+
"global.profile.settings": "Настройки профиля",
|
|
741
|
+
"global.learn-more": "Узнать больше",
|
|
733
742
|
light: light,
|
|
734
743
|
"notification.contentType.relations.conflict": "Тип контента имеет конфликтующие отношения",
|
|
735
744
|
"notification.default.title": "Информация:",
|
|
@@ -757,7 +766,63 @@ var ru = {
|
|
|
757
766
|
"request.error.model.unknown": "Модель данных не существует",
|
|
758
767
|
selectButtonTitle: selectButtonTitle,
|
|
759
768
|
skipToContent: skipToContent,
|
|
760
|
-
submit: submit
|
|
769
|
+
submit: submit,
|
|
770
|
+
"tours.contentTypeBuilder.Introduction.title": "Конструктор типов контента",
|
|
771
|
+
"tours.contentTypeBuilder.Introduction.content": "Создавайте и управляйте структурой вашего контента с помощью типов коллекций, одиночных типов и компонентов.",
|
|
772
|
+
"tours.contentTypeBuilder.CollectionTypes.title": "Типы коллекций",
|
|
773
|
+
"tours.contentTypeBuilder.CollectionTypes.content": "Структура контента, которая может управлять несколькими записями, такими как статьи или продукты.",
|
|
774
|
+
"tours.contentTypeBuilder.SingleTypes.title": "Одиночные типы",
|
|
775
|
+
"tours.contentTypeBuilder.SingleTypes.content": "Структура контента, которая может управлять только одной записью, такой как домашняя страница или страница контактов.",
|
|
776
|
+
"tours.contentTypeBuilder.Components.title": "Компоненты",
|
|
777
|
+
"tours.contentTypeBuilder.Components.content": "Структура контента, которая может использоваться в нескольких типах коллекций или одиночных типах.",
|
|
778
|
+
"tours.contentTypeBuilder.Finish.title": "Время создавать контент!",
|
|
779
|
+
"tours.contentTypeBuilder.Finish.content": "Теперь, когда вы создали типы контента, вы сможете создавать контент в редакторе контента.",
|
|
780
|
+
"tours.contentManager.Introduction.title": "Редактор контента",
|
|
781
|
+
"tours.contentManager.Introduction.content": "Создавайте и управляйте контентом из ваших типов коллекций и одиночных типов.",
|
|
782
|
+
"tours.apiTokens.Introduction.title": "API токены",
|
|
783
|
+
"tours.apiTokens.Introduction.content": "Создавайте и управляйте API токенами с высоко настраиваемыми разрешениями.",
|
|
784
|
+
"tours.apiTokens.CreateAnAPIToken.title": "Создать API токен",
|
|
785
|
+
"tours.apiTokens.CreateAnAPIToken.content": "Создайте новый API токен. Выберите имя, продолжительность и тип.",
|
|
786
|
+
"tours.apiTokens.CopyAPIToken.title": "Скопируйте ваш новый API токен",
|
|
787
|
+
"tours.apiTokens.CopyAPIToken.content": "Обязательно сделайте это сейчас, вы больше не сможете его увидеть. Вам нужно будет сгенерировать новый, если вы его потеряете.",
|
|
788
|
+
"tours.apiTokens.FinalStep.title": "Время развернуть ваше приложение!",
|
|
789
|
+
"tours.apiTokens.FinalStep.content": "Ваше приложение готово к развертыванию, и его контент готов к обмену с миром!",
|
|
790
|
+
"tours.contentManager.Fields.title": "Поля",
|
|
791
|
+
"tours.contentManager.Fields.content": "Добавляйте контент в поля, созданные в Конструкторе типов контента.",
|
|
792
|
+
"tours.contentManager.Publish.title": "Опубликовать",
|
|
793
|
+
"tours.contentManager.Publish.content": "Опубликуйте записи, чтобы сделать их контент доступным через API контента.",
|
|
794
|
+
"tours.contentManager.FinalStep.title": "Время создавать API токены!",
|
|
795
|
+
"tours.contentManager.FinalStep.content": "Теперь, когда вы создали и опубликовали контент, время создавать API токены и настраивать разрешения.",
|
|
796
|
+
"tours.stepCount": "Шаг {currentStep} из {tourLength}",
|
|
797
|
+
"tours.skip": "Пропустить",
|
|
798
|
+
"tours.next": "Далее",
|
|
799
|
+
"tours.gotIt": "Понятно",
|
|
800
|
+
"tours.overview.title": "Откройте для себя ваше приложение!",
|
|
801
|
+
"tours.overview.subtitle": "Следуйте руководству, чтобы получить максимум от Strapi.",
|
|
802
|
+
"tours.overview.close": "Закрыть руководство",
|
|
803
|
+
"tours.overview.tasks": "Ваши задачи",
|
|
804
|
+
"tours.overview.contentTypeBuilder.label": "Создайте вашу схему",
|
|
805
|
+
"tours.overview.contentManager.label": "Создавайте и публикуйте контент",
|
|
806
|
+
"tours.overview.apiTokens.label": "Создайте и скопируйте API токен",
|
|
807
|
+
"tours.overview.strapiCloud.label": "Разверните ваше приложение в Strapi Cloud",
|
|
808
|
+
"tours.overview.strapiCloud.link": "Читать документацию",
|
|
809
|
+
"tours.overview.tour.link": "Начать",
|
|
810
|
+
"tours.overview.tour.done": "Готово",
|
|
811
|
+
"tours.overview.close.description": "Вы уверены, что хотите закрыть руководство?",
|
|
812
|
+
"tours.profile.title": "Руководство",
|
|
813
|
+
"tours.profile.description": "Вы можете сбросить руководство в любое время.",
|
|
814
|
+
"tours.profile.reset": "Сбросить руководство",
|
|
815
|
+
"tours.profile.notification.success.reset": "Руководство сброшено",
|
|
816
|
+
"widget.key-statistics.title": "Статистика проекта",
|
|
817
|
+
"widget.key-statistics.list.admins": "Администраторы",
|
|
818
|
+
"widget.key-statistics.list.apiTokens": "API токены",
|
|
819
|
+
"widget.key-statistics.list.assets": "Ассеты",
|
|
820
|
+
"widget.key-statistics.list.components": "Компоненты",
|
|
821
|
+
"widget.key-statistics.list.contentTypes": "Типы контента",
|
|
822
|
+
"widget.key-statistics.list.entries": "Записи",
|
|
823
|
+
"widget.key-statistics.list.locales": "Локали",
|
|
824
|
+
"widget.key-statistics.list.webhooks": "Вебхуки",
|
|
825
|
+
"widget.profile.title": "Профиль"
|
|
761
826
|
};
|
|
762
827
|
|
|
763
828
|
exports.Analytics = Analytics;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ru.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ru.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -79,6 +79,12 @@ var ru = {
|
|
|
79
79
|
Email: Email,
|
|
80
80
|
"Files Upload": "Загрузка файлов",
|
|
81
81
|
"HomePage.head.title": "Домашняя страница",
|
|
82
|
+
"HomePage.header.title": "Привет {name}",
|
|
83
|
+
"HomePage.header.subtitle": "Добро пожаловать в панель администратора",
|
|
84
|
+
"HomePage.widget.loading": "Загрузка содержимого виджета",
|
|
85
|
+
"HomePage.widget.error": "Не удалось загрузить содержимое виджета.",
|
|
86
|
+
"HomePage.widget.no-data": "Контент не найден.",
|
|
87
|
+
"HomePage.widget.no-permissions": "У вас нет разрешения на просмотр этого виджета",
|
|
82
88
|
"HomePage.roadmap": "Смотрите нашу дорожную карту",
|
|
83
89
|
"HomePage.welcome.congrats": "Поздравляем!",
|
|
84
90
|
"HomePage.welcome.congrats.content": "Вы вошли как первый администратор. Чтобы открыть для себя мощные функции, предоставляемые Strapi,",
|
|
@@ -180,6 +186,7 @@ var ru = {
|
|
|
180
186
|
"Settings.permissions.auditLogs.entry.update": "Обновить {model, select, undefined {} other { ({model})}}",
|
|
181
187
|
"Settings.permissions.auditLogs.filters.combobox.aria-label": "Выполните поиск и выберите вариант для фильтрации",
|
|
182
188
|
"Settings.permissions.auditLogs.listview.header.subtitle": "Журналы всех действий, которые произошли в вашей среде",
|
|
189
|
+
"Settings.permissions.auditLogs.not-available": "Журналы аудита доступны только как часть платного плана. Обновитесь, чтобы получить поисковое и фильтруемое отображение всех действий.",
|
|
183
190
|
"Settings.permissions.auditLogs.media.create": "Создать медиафайл",
|
|
184
191
|
"Settings.permissions.auditLogs.media.delete": "Удалить медиафайл",
|
|
185
192
|
"Settings.permissions.auditLogs.media.update": "Обновить медиафайл",
|
|
@@ -211,7 +218,7 @@ var ru = {
|
|
|
211
218
|
"Settings.permissions.select-all-by-permission": "Выбрать все разрешения {label}",
|
|
212
219
|
"Settings.permissions.select-by-permission": "Выберите разрешения {label}",
|
|
213
220
|
"Settings.permissions.users.active": "Активен",
|
|
214
|
-
"Settings.permissions.users.create": "
|
|
221
|
+
"Settings.permissions.users.create": "Пригласить нового пользователя",
|
|
215
222
|
"Settings.permissions.users.email": "Email",
|
|
216
223
|
"Settings.permissions.users.firstname": "Имя",
|
|
217
224
|
"Settings.permissions.users.form.sso": "Соединить с SSO",
|
|
@@ -726,6 +733,8 @@ var ru = {
|
|
|
726
733
|
"global.settings": "Настройки",
|
|
727
734
|
"global.type": "Тип",
|
|
728
735
|
"global.users": "Пользователи",
|
|
736
|
+
"global.profile.settings": "Настройки профиля",
|
|
737
|
+
"global.learn-more": "Узнать больше",
|
|
729
738
|
light: light,
|
|
730
739
|
"notification.contentType.relations.conflict": "Тип контента имеет конфликтующие отношения",
|
|
731
740
|
"notification.default.title": "Информация:",
|
|
@@ -753,7 +762,63 @@ var ru = {
|
|
|
753
762
|
"request.error.model.unknown": "Модель данных не существует",
|
|
754
763
|
selectButtonTitle: selectButtonTitle,
|
|
755
764
|
skipToContent: skipToContent,
|
|
756
|
-
submit: submit
|
|
765
|
+
submit: submit,
|
|
766
|
+
"tours.contentTypeBuilder.Introduction.title": "Конструктор типов контента",
|
|
767
|
+
"tours.contentTypeBuilder.Introduction.content": "Создавайте и управляйте структурой вашего контента с помощью типов коллекций, одиночных типов и компонентов.",
|
|
768
|
+
"tours.contentTypeBuilder.CollectionTypes.title": "Типы коллекций",
|
|
769
|
+
"tours.contentTypeBuilder.CollectionTypes.content": "Структура контента, которая может управлять несколькими записями, такими как статьи или продукты.",
|
|
770
|
+
"tours.contentTypeBuilder.SingleTypes.title": "Одиночные типы",
|
|
771
|
+
"tours.contentTypeBuilder.SingleTypes.content": "Структура контента, которая может управлять только одной записью, такой как домашняя страница или страница контактов.",
|
|
772
|
+
"tours.contentTypeBuilder.Components.title": "Компоненты",
|
|
773
|
+
"tours.contentTypeBuilder.Components.content": "Структура контента, которая может использоваться в нескольких типах коллекций или одиночных типах.",
|
|
774
|
+
"tours.contentTypeBuilder.Finish.title": "Время создавать контент!",
|
|
775
|
+
"tours.contentTypeBuilder.Finish.content": "Теперь, когда вы создали типы контента, вы сможете создавать контент в редакторе контента.",
|
|
776
|
+
"tours.contentManager.Introduction.title": "Редактор контента",
|
|
777
|
+
"tours.contentManager.Introduction.content": "Создавайте и управляйте контентом из ваших типов коллекций и одиночных типов.",
|
|
778
|
+
"tours.apiTokens.Introduction.title": "API токены",
|
|
779
|
+
"tours.apiTokens.Introduction.content": "Создавайте и управляйте API токенами с высоко настраиваемыми разрешениями.",
|
|
780
|
+
"tours.apiTokens.CreateAnAPIToken.title": "Создать API токен",
|
|
781
|
+
"tours.apiTokens.CreateAnAPIToken.content": "Создайте новый API токен. Выберите имя, продолжительность и тип.",
|
|
782
|
+
"tours.apiTokens.CopyAPIToken.title": "Скопируйте ваш новый API токен",
|
|
783
|
+
"tours.apiTokens.CopyAPIToken.content": "Обязательно сделайте это сейчас, вы больше не сможете его увидеть. Вам нужно будет сгенерировать новый, если вы его потеряете.",
|
|
784
|
+
"tours.apiTokens.FinalStep.title": "Время развернуть ваше приложение!",
|
|
785
|
+
"tours.apiTokens.FinalStep.content": "Ваше приложение готово к развертыванию, и его контент готов к обмену с миром!",
|
|
786
|
+
"tours.contentManager.Fields.title": "Поля",
|
|
787
|
+
"tours.contentManager.Fields.content": "Добавляйте контент в поля, созданные в Конструкторе типов контента.",
|
|
788
|
+
"tours.contentManager.Publish.title": "Опубликовать",
|
|
789
|
+
"tours.contentManager.Publish.content": "Опубликуйте записи, чтобы сделать их контент доступным через API контента.",
|
|
790
|
+
"tours.contentManager.FinalStep.title": "Время создавать API токены!",
|
|
791
|
+
"tours.contentManager.FinalStep.content": "Теперь, когда вы создали и опубликовали контент, время создавать API токены и настраивать разрешения.",
|
|
792
|
+
"tours.stepCount": "Шаг {currentStep} из {tourLength}",
|
|
793
|
+
"tours.skip": "Пропустить",
|
|
794
|
+
"tours.next": "Далее",
|
|
795
|
+
"tours.gotIt": "Понятно",
|
|
796
|
+
"tours.overview.title": "Откройте для себя ваше приложение!",
|
|
797
|
+
"tours.overview.subtitle": "Следуйте руководству, чтобы получить максимум от Strapi.",
|
|
798
|
+
"tours.overview.close": "Закрыть руководство",
|
|
799
|
+
"tours.overview.tasks": "Ваши задачи",
|
|
800
|
+
"tours.overview.contentTypeBuilder.label": "Создайте вашу схему",
|
|
801
|
+
"tours.overview.contentManager.label": "Создавайте и публикуйте контент",
|
|
802
|
+
"tours.overview.apiTokens.label": "Создайте и скопируйте API токен",
|
|
803
|
+
"tours.overview.strapiCloud.label": "Разверните ваше приложение в Strapi Cloud",
|
|
804
|
+
"tours.overview.strapiCloud.link": "Читать документацию",
|
|
805
|
+
"tours.overview.tour.link": "Начать",
|
|
806
|
+
"tours.overview.tour.done": "Готово",
|
|
807
|
+
"tours.overview.close.description": "Вы уверены, что хотите закрыть руководство?",
|
|
808
|
+
"tours.profile.title": "Руководство",
|
|
809
|
+
"tours.profile.description": "Вы можете сбросить руководство в любое время.",
|
|
810
|
+
"tours.profile.reset": "Сбросить руководство",
|
|
811
|
+
"tours.profile.notification.success.reset": "Руководство сброшено",
|
|
812
|
+
"widget.key-statistics.title": "Статистика проекта",
|
|
813
|
+
"widget.key-statistics.list.admins": "Администраторы",
|
|
814
|
+
"widget.key-statistics.list.apiTokens": "API токены",
|
|
815
|
+
"widget.key-statistics.list.assets": "Ассеты",
|
|
816
|
+
"widget.key-statistics.list.components": "Компоненты",
|
|
817
|
+
"widget.key-statistics.list.contentTypes": "Типы контента",
|
|
818
|
+
"widget.key-statistics.list.entries": "Записи",
|
|
819
|
+
"widget.key-statistics.list.locales": "Локали",
|
|
820
|
+
"widget.key-statistics.list.webhooks": "Вебхуки",
|
|
821
|
+
"widget.profile.title": "Профиль"
|
|
757
822
|
};
|
|
758
823
|
|
|
759
824
|
export { Analytics, Documentation, Email, Password, Provider, ResetPasswordToken, Role, Username, Users, anErrorOccurred, clearLabel, dark, ru as default, light, or, selectButtonTitle, skipToContent, submit };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ru.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ru.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -19,14 +19,13 @@ interface NotificationsContextValue {
|
|
|
19
19
|
*/
|
|
20
20
|
toggleNotification: (config: NotificationConfig) => void;
|
|
21
21
|
}
|
|
22
|
-
interface NotificationsProviderProps {
|
|
23
|
-
children: React.ReactNode;
|
|
24
|
-
}
|
|
25
22
|
/**
|
|
26
23
|
* @internal
|
|
27
|
-
* @description
|
|
24
|
+
* @description exposes the `NotificationsContext` to its children and renders notifications
|
|
28
25
|
*/
|
|
29
|
-
declare const NotificationsProvider: ({ children }:
|
|
26
|
+
declare const NotificationsProvider: ({ children }: {
|
|
27
|
+
children: React.ReactNode;
|
|
28
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
30
29
|
/**
|
|
31
30
|
* @preserve
|
|
32
31
|
* @description Returns an object to interact with the notification
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@strapi/admin",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.33.0",
|
|
4
4
|
"description": "Strapi Admin",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -86,10 +86,10 @@
|
|
|
86
86
|
"@reduxjs/toolkit": "1.9.7",
|
|
87
87
|
"@strapi/design-system": "2.0.1",
|
|
88
88
|
"@strapi/icons": "2.0.1",
|
|
89
|
-
"@strapi/permissions": "5.
|
|
90
|
-
"@strapi/types": "5.
|
|
91
|
-
"@strapi/typescript-utils": "5.
|
|
92
|
-
"@strapi/utils": "5.
|
|
89
|
+
"@strapi/permissions": "5.33.0",
|
|
90
|
+
"@strapi/types": "5.33.0",
|
|
91
|
+
"@strapi/typescript-utils": "5.33.0",
|
|
92
|
+
"@strapi/utils": "5.33.0",
|
|
93
93
|
"@testing-library/dom": "10.4.1",
|
|
94
94
|
"@testing-library/react": "16.3.0",
|
|
95
95
|
"@testing-library/user-event": "14.6.1",
|
|
@@ -138,14 +138,15 @@
|
|
|
138
138
|
"scheduler": "0.23.0",
|
|
139
139
|
"semver": "7.5.4",
|
|
140
140
|
"sift": "16.0.1",
|
|
141
|
+
"sonner": "2.0.7",
|
|
141
142
|
"typescript": "5.4.4",
|
|
142
143
|
"use-context-selector": "1.4.1",
|
|
143
144
|
"yup": "0.32.9",
|
|
144
145
|
"zod": "3.25.67"
|
|
145
146
|
},
|
|
146
147
|
"devDependencies": {
|
|
147
|
-
"@strapi/admin-test-utils": "5.
|
|
148
|
-
"@strapi/data-transfer": "5.
|
|
148
|
+
"@strapi/admin-test-utils": "5.33.0",
|
|
149
|
+
"@strapi/data-transfer": "5.33.0",
|
|
149
150
|
"@types/codemirror5": "npm:@types/codemirror@^5.60.15",
|
|
150
151
|
"@types/fs-extra": "11.0.4",
|
|
151
152
|
"@types/invariant": "2.2.36",
|