@strapi/admin 5.43.0 → 5.44.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.
Files changed (59) hide show
  1. package/dist/admin/admin/src/StrapiApp.js +17 -4
  2. package/dist/admin/admin/src/StrapiApp.js.map +1 -1
  3. package/dist/admin/admin/src/StrapiApp.mjs +18 -5
  4. package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
  5. package/dist/admin/admin/src/components/Form.js +18 -8
  6. package/dist/admin/admin/src/components/Form.js.map +1 -1
  7. package/dist/admin/admin/src/components/Form.mjs +18 -8
  8. package/dist/admin/admin/src/components/Form.mjs.map +1 -1
  9. package/dist/admin/admin/src/components/Layouts/Layout.js +1 -0
  10. package/dist/admin/admin/src/components/Layouts/Layout.js.map +1 -1
  11. package/dist/admin/admin/src/components/Layouts/Layout.mjs +1 -0
  12. package/dist/admin/admin/src/components/Layouts/Layout.mjs.map +1 -1
  13. package/dist/admin/admin/src/components/Widgets.js +52 -0
  14. package/dist/admin/admin/src/components/Widgets.js.map +1 -1
  15. package/dist/admin/admin/src/components/Widgets.mjs +54 -3
  16. package/dist/admin/admin/src/components/Widgets.mjs.map +1 -1
  17. package/dist/admin/admin/src/translations/ar.json.js +4 -1
  18. package/dist/admin/admin/src/translations/ar.json.js.map +1 -1
  19. package/dist/admin/admin/src/translations/ar.json.mjs +4 -1
  20. package/dist/admin/admin/src/translations/ar.json.mjs.map +1 -1
  21. package/dist/admin/admin/src/translations/cs.json.js +736 -13
  22. package/dist/admin/admin/src/translations/cs.json.js.map +1 -1
  23. package/dist/admin/admin/src/translations/cs.json.mjs +728 -14
  24. package/dist/admin/admin/src/translations/cs.json.mjs.map +1 -1
  25. package/dist/admin/admin/src/translations/de.json.js +4 -1
  26. package/dist/admin/admin/src/translations/de.json.js.map +1 -1
  27. package/dist/admin/admin/src/translations/de.json.mjs +4 -1
  28. package/dist/admin/admin/src/translations/de.json.mjs.map +1 -1
  29. package/dist/admin/admin/src/translations/en.json.js +4 -1
  30. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  31. package/dist/admin/admin/src/translations/en.json.mjs +4 -1
  32. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  33. package/dist/admin/admin/src/translations/es.json.js +4 -1
  34. package/dist/admin/admin/src/translations/es.json.js.map +1 -1
  35. package/dist/admin/admin/src/translations/es.json.mjs +4 -1
  36. package/dist/admin/admin/src/translations/es.json.mjs.map +1 -1
  37. package/dist/admin/admin/src/translations/fr.json.js +4 -1
  38. package/dist/admin/admin/src/translations/fr.json.js.map +1 -1
  39. package/dist/admin/admin/src/translations/fr.json.mjs +4 -1
  40. package/dist/admin/admin/src/translations/fr.json.mjs.map +1 -1
  41. package/dist/admin/admin/src/translations/it.json.js +4 -1
  42. package/dist/admin/admin/src/translations/it.json.js.map +1 -1
  43. package/dist/admin/admin/src/translations/it.json.mjs +4 -1
  44. package/dist/admin/admin/src/translations/it.json.mjs.map +1 -1
  45. package/dist/admin/admin/src/translations/ru.json.js +32 -19
  46. package/dist/admin/admin/src/translations/ru.json.js.map +1 -1
  47. package/dist/admin/admin/src/translations/ru.json.mjs +32 -19
  48. package/dist/admin/admin/src/translations/ru.json.mjs.map +1 -1
  49. package/dist/admin/admin/src/translations/zh-Hans.json.js +4 -1
  50. package/dist/admin/admin/src/translations/zh-Hans.json.js.map +1 -1
  51. package/dist/admin/admin/src/translations/zh-Hans.json.mjs +4 -1
  52. package/dist/admin/admin/src/translations/zh-Hans.json.mjs.map +1 -1
  53. package/dist/admin/admin/src/utils/getFetchClient.js +29 -3
  54. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  55. package/dist/admin/admin/src/utils/getFetchClient.mjs +29 -3
  56. package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
  57. package/dist/admin/src/components/Widgets.d.ts +2 -1
  58. package/dist/admin/src/utils/getFetchClient.d.ts +14 -1
  59. package/package.json +10 -10
@@ -249,7 +249,59 @@ const KeyStatisticsWidget = ()=>{
249
249
  })
250
250
  });
251
251
  };
252
+ /* -------------------------------------------------------------------------------------------------
253
+ * DeployNowWidget
254
+ * -----------------------------------------------------------------------------------------------*/ const DeployNowWidget = ()=>{
255
+ const { formatMessage } = reactIntl.useIntl();
256
+ return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
257
+ direction: "column",
258
+ gap: 4,
259
+ height: "100%",
260
+ alignItems: "center",
261
+ justifyContent: "center",
262
+ children: [
263
+ /*#__PURE__*/ jsxRuntime.jsx(icons.CloudUpload, {
264
+ width: "3.2rem",
265
+ height: "3.2rem"
266
+ }),
267
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
268
+ direction: "column",
269
+ gap: 2,
270
+ children: [
271
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
272
+ variant: "beta",
273
+ textAlign: "center",
274
+ children: formatMessage({
275
+ id: 'HomePage.widget.deploy-now.title',
276
+ defaultMessage: 'Ready to go live ?'
277
+ })
278
+ }),
279
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
280
+ variant: "omega",
281
+ textColor: "neutral600",
282
+ textAlign: "center",
283
+ children: formatMessage({
284
+ id: 'HomePage.widget.deploy-now.description',
285
+ defaultMessage: 'Deploy with Strapi Cloud'
286
+ })
287
+ })
288
+ ]
289
+ }),
290
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.LinkButton, {
291
+ href: "https://cloud.strapi.io/login",
292
+ isExternal: true,
293
+ size: "L",
294
+ startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Cloud, {}),
295
+ children: formatMessage({
296
+ id: 'HomePage.widget.deploy-now.button',
297
+ defaultMessage: 'Deploy Now'
298
+ })
299
+ })
300
+ ]
301
+ });
302
+ };
252
303
 
304
+ exports.DeployNowWidget = DeployNowWidget;
253
305
  exports.KeyStatisticsWidget = KeyStatisticsWidget;
254
306
  exports.ProfileWidget = ProfileWidget;
255
307
  //# sourceMappingURL=Widgets.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Widgets.js","sources":["../../../../../admin/src/components/Widgets.tsx"],"sourcesContent":["import { useAuth, useTracking } from '@strapi/admin/strapi-admin';\nimport { Avatar, Badge, Box, Flex, Typography } from '@strapi/design-system';\nimport { Earth, Images, User, Key, Files, Layout, Graph, Webhooks } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useGetCountDocumentsQuery, useGetKeyStatisticsQuery } from '../services/homepage';\nimport { getDisplayName, getInitials } from '../utils/users';\n\nimport { Widget } from './WidgetHelpers';\n\n/* -------------------------------------------------------------------------------------------------\n * ProfileWidget\n * -----------------------------------------------------------------------------------------------*/\n\nconst DisplayNameTypography = styled(Typography)`\n font-size: 2.4rem;\n`;\n\nconst ProfileWidget = () => {\n const user = useAuth('User', (state) => state.user);\n const userDisplayName = getDisplayName(user);\n const initials = getInitials(user);\n\n return (\n <Flex direction=\"column\" gap={3} height=\"100%\" justifyContent=\"center\">\n <Avatar.Item delayMs={0} fallback={initials} />\n {userDisplayName && (\n <DisplayNameTypography fontWeight=\"bold\" textTransform=\"none\" textAlign=\"center\">\n {userDisplayName}\n </DisplayNameTypography>\n )}\n {user?.email && (\n <Typography variant=\"omega\" textColor=\"neutral600\">\n {user?.email}\n </Typography>\n )}\n {user?.roles?.length && (\n <Flex marginTop={2} gap={1} wrap=\"wrap\">\n {user?.roles?.map((role) => <Badge key={role.id}>{role.name}</Badge>)}\n </Flex>\n )}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Key Statistics\n * -----------------------------------------------------------------------------------------------*/\nconst Grid = styled(Box)`\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 0;\n border: 1px solid ${({ theme }) => theme.colors.neutral200};\n border-radius: ${({ theme }) => theme.borderRadius};\n overflow: hidden;\n`;\n\nconst GridCell = styled(Box)`\n border-bottom: 1px solid ${({ theme }) => theme.colors.neutral200};\n border-right: 1px solid ${({ theme }) => theme.colors.neutral200};\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n\n &:nth-child(2n) {\n border-right: none;\n }\n &:nth-last-child(-n + 2) {\n border-bottom: none;\n }\n`;\n\nconst formatNumber = ({ locale, number }: { locale: string; number: number }) => {\n return new Intl.NumberFormat(locale, {\n notation: 'compact',\n maximumFractionDigits: 1,\n }).format(number);\n};\n\nconst LinkCell = styled(Link)`\n text-decoration: none;\n padding: ${({ theme }) => theme.spaces[3]};\n`;\n\nconst KeyStatisticsWidget = () => {\n const { trackUsage } = useTracking();\n const { formatMessage, locale } = useIntl();\n const { data: countDocuments, isLoading: isLoadingCountDocuments } = useGetCountDocumentsQuery();\n const { data: countKeyStatistics, isLoading: isLoadingKeyStatistics } =\n useGetKeyStatisticsQuery();\n\n if (isLoadingKeyStatistics || isLoadingCountDocuments) {\n return <Widget.Loading />;\n }\n\n if (!countKeyStatistics || !countDocuments) {\n return <Widget.Error />;\n }\n\n const keyStatisticsList = {\n entries: {\n label: {\n id: 'widget.key-statistics.list.entries',\n defaultMessage: 'Entries',\n },\n icon: {\n component: <Files />,\n background: 'primary100',\n color: 'primary600',\n },\n link: '/content-manager',\n },\n assets: {\n label: {\n id: 'widget.key-statistics.list.assets',\n defaultMessage: 'Assets',\n },\n icon: {\n component: <Images />,\n background: 'warning100',\n color: 'warning600',\n },\n link: '/plugins/upload',\n },\n contentTypes: {\n label: {\n id: 'widget.key-statistics.list.contentTypes',\n defaultMessage: 'Content-Types',\n },\n icon: {\n component: <Layout />,\n background: 'secondary100',\n color: 'secondary600',\n },\n link: '/plugins/content-type-builder',\n },\n components: {\n label: {\n id: 'widget.key-statistics.list.components',\n defaultMessage: 'Components',\n },\n icon: {\n component: <Graph />,\n background: 'alternative100',\n color: 'alternative600',\n },\n link: '/plugins/content-type-builder',\n },\n locales: {\n label: {\n id: 'widget.key-statistics.list.locales',\n defaultMessage: 'Locales',\n },\n icon: {\n component: <Earth />,\n background: 'success100',\n color: 'success600',\n },\n link: '/settings/internationalization',\n },\n admins: {\n label: {\n id: 'widget.key-statistics.list.admins',\n defaultMessage: 'Admins',\n },\n icon: {\n component: <User />,\n background: 'danger100',\n color: 'danger600',\n },\n link: '/settings/users?pageSize=10&page=1&sort=firstname',\n },\n webhooks: {\n label: {\n id: 'widget.key-statistics.list.webhooks',\n defaultMessage: 'Webhooks',\n },\n icon: {\n component: <Webhooks />,\n background: 'alternative100',\n color: 'alternative600',\n },\n link: '/settings/webhooks',\n },\n apiTokens: {\n label: {\n id: 'widget.key-statistics.list.apiTokens',\n defaultMessage: 'API Tokens',\n },\n icon: {\n component: <Key />,\n background: 'neutral100',\n color: 'neutral600',\n },\n link: '/settings/api-tokens?sort=name:ASC',\n },\n };\n\n const { draft, published, modified } = countDocuments ?? {\n draft: 0,\n published: 0,\n modified: 0,\n };\n\n const totalCountEntries = draft + published + modified;\n\n return (\n <Grid>\n {Object.entries(keyStatisticsList).map(([key, item]) => {\n const value = countKeyStatistics?.[key as keyof typeof countKeyStatistics];\n return (\n value !== null && (\n <GridCell\n as={LinkCell}\n to={item.link}\n key={`key-statistics-${key}`}\n data-testid={`stat-${key}`}\n onClick={() => trackUsage('didOpenKeyStatisticsWidgetLink', { itemKey: key })}\n >\n <Flex alignItems=\"center\" gap={2}>\n <Flex\n padding={2}\n borderRadius={1}\n background={item.icon.background}\n color={item.icon.color}\n >\n {item.icon.component}\n </Flex>\n <Flex direction=\"column\" alignItems=\"flex-start\">\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"neutral500\">\n {formatMessage(item.label)}\n </Typography>\n <Typography variant=\"omega\" fontWeight=\"bold\" textColor=\"neutral800\">\n {formatNumber({\n locale,\n number: key === 'entries' ? totalCountEntries : value,\n })}\n </Typography>\n </Flex>\n </Flex>\n </GridCell>\n )\n );\n })}\n </Grid>\n );\n};\n\nexport { ProfileWidget, KeyStatisticsWidget };\n"],"names":["DisplayNameTypography","styled","Typography","ProfileWidget","user","useAuth","state","userDisplayName","getDisplayName","initials","getInitials","_jsxs","Flex","direction","gap","height","justifyContent","_jsx","Avatar","Item","delayMs","fallback","fontWeight","textTransform","textAlign","email","variant","textColor","roles","length","marginTop","wrap","map","role","Badge","name","id","Grid","Box","theme","colors","neutral200","borderRadius","GridCell","formatNumber","locale","number","Intl","NumberFormat","notation","maximumFractionDigits","format","LinkCell","Link","spaces","KeyStatisticsWidget","trackUsage","useTracking","formatMessage","useIntl","data","countDocuments","isLoading","isLoadingCountDocuments","useGetCountDocumentsQuery","countKeyStatistics","isLoadingKeyStatistics","useGetKeyStatisticsQuery","Widget","Loading","Error","keyStatisticsList","entries","label","defaultMessage","icon","component","Files","background","color","link","assets","Images","contentTypes","Layout","components","Graph","locales","Earth","admins","User","webhooks","Webhooks","apiTokens","Key","draft","published","modified","totalCountEntries","Object","key","item","value","as","to","data-testid","onClick","itemKey","alignItems","padding"],"mappings":"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"}
1
+ {"version":3,"file":"Widgets.js","sources":["../../../../../admin/src/components/Widgets.tsx"],"sourcesContent":["import { useAuth, useTracking } from '@strapi/admin/strapi-admin';\nimport { Avatar, Badge, Box, Flex, LinkButton, Typography } from '@strapi/design-system';\nimport {\n Cloud,\n CloudUpload,\n Earth,\n Images,\n User,\n Key,\n Files,\n Layout,\n Graph,\n Webhooks,\n} from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useGetCountDocumentsQuery, useGetKeyStatisticsQuery } from '../services/homepage';\nimport { getDisplayName, getInitials } from '../utils/users';\n\nimport { Widget } from './WidgetHelpers';\n\n/* -------------------------------------------------------------------------------------------------\n * ProfileWidget\n * -----------------------------------------------------------------------------------------------*/\n\nconst DisplayNameTypography = styled(Typography)`\n font-size: 2.4rem;\n`;\n\nconst ProfileWidget = () => {\n const user = useAuth('User', (state) => state.user);\n const userDisplayName = getDisplayName(user);\n const initials = getInitials(user);\n\n return (\n <Flex direction=\"column\" gap={3} height=\"100%\" justifyContent=\"center\">\n <Avatar.Item delayMs={0} fallback={initials} />\n {userDisplayName && (\n <DisplayNameTypography fontWeight=\"bold\" textTransform=\"none\" textAlign=\"center\">\n {userDisplayName}\n </DisplayNameTypography>\n )}\n {user?.email && (\n <Typography variant=\"omega\" textColor=\"neutral600\">\n {user?.email}\n </Typography>\n )}\n {user?.roles?.length && (\n <Flex marginTop={2} gap={1} wrap=\"wrap\">\n {user?.roles?.map((role) => <Badge key={role.id}>{role.name}</Badge>)}\n </Flex>\n )}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Key Statistics\n * -----------------------------------------------------------------------------------------------*/\nconst Grid = styled(Box)`\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 0;\n border: 1px solid ${({ theme }) => theme.colors.neutral200};\n border-radius: ${({ theme }) => theme.borderRadius};\n overflow: hidden;\n`;\n\nconst GridCell = styled(Box)`\n border-bottom: 1px solid ${({ theme }) => theme.colors.neutral200};\n border-right: 1px solid ${({ theme }) => theme.colors.neutral200};\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n\n &:nth-child(2n) {\n border-right: none;\n }\n &:nth-last-child(-n + 2) {\n border-bottom: none;\n }\n`;\n\nconst formatNumber = ({ locale, number }: { locale: string; number: number }) => {\n return new Intl.NumberFormat(locale, {\n notation: 'compact',\n maximumFractionDigits: 1,\n }).format(number);\n};\n\nconst LinkCell = styled(Link)`\n text-decoration: none;\n padding: ${({ theme }) => theme.spaces[3]};\n`;\n\nconst KeyStatisticsWidget = () => {\n const { trackUsage } = useTracking();\n const { formatMessage, locale } = useIntl();\n const { data: countDocuments, isLoading: isLoadingCountDocuments } = useGetCountDocumentsQuery();\n const { data: countKeyStatistics, isLoading: isLoadingKeyStatistics } =\n useGetKeyStatisticsQuery();\n\n if (isLoadingKeyStatistics || isLoadingCountDocuments) {\n return <Widget.Loading />;\n }\n\n if (!countKeyStatistics || !countDocuments) {\n return <Widget.Error />;\n }\n\n const keyStatisticsList = {\n entries: {\n label: {\n id: 'widget.key-statistics.list.entries',\n defaultMessage: 'Entries',\n },\n icon: {\n component: <Files />,\n background: 'primary100',\n color: 'primary600',\n },\n link: '/content-manager',\n },\n assets: {\n label: {\n id: 'widget.key-statistics.list.assets',\n defaultMessage: 'Assets',\n },\n icon: {\n component: <Images />,\n background: 'warning100',\n color: 'warning600',\n },\n link: '/plugins/upload',\n },\n contentTypes: {\n label: {\n id: 'widget.key-statistics.list.contentTypes',\n defaultMessage: 'Content-Types',\n },\n icon: {\n component: <Layout />,\n background: 'secondary100',\n color: 'secondary600',\n },\n link: '/plugins/content-type-builder',\n },\n components: {\n label: {\n id: 'widget.key-statistics.list.components',\n defaultMessage: 'Components',\n },\n icon: {\n component: <Graph />,\n background: 'alternative100',\n color: 'alternative600',\n },\n link: '/plugins/content-type-builder',\n },\n locales: {\n label: {\n id: 'widget.key-statistics.list.locales',\n defaultMessage: 'Locales',\n },\n icon: {\n component: <Earth />,\n background: 'success100',\n color: 'success600',\n },\n link: '/settings/internationalization',\n },\n admins: {\n label: {\n id: 'widget.key-statistics.list.admins',\n defaultMessage: 'Admins',\n },\n icon: {\n component: <User />,\n background: 'danger100',\n color: 'danger600',\n },\n link: '/settings/users?pageSize=10&page=1&sort=firstname',\n },\n webhooks: {\n label: {\n id: 'widget.key-statistics.list.webhooks',\n defaultMessage: 'Webhooks',\n },\n icon: {\n component: <Webhooks />,\n background: 'alternative100',\n color: 'alternative600',\n },\n link: '/settings/webhooks',\n },\n apiTokens: {\n label: {\n id: 'widget.key-statistics.list.apiTokens',\n defaultMessage: 'API Tokens',\n },\n icon: {\n component: <Key />,\n background: 'neutral100',\n color: 'neutral600',\n },\n link: '/settings/api-tokens?sort=name:ASC',\n },\n };\n\n const { draft, published, modified } = countDocuments ?? {\n draft: 0,\n published: 0,\n modified: 0,\n };\n\n const totalCountEntries = draft + published + modified;\n\n return (\n <Grid>\n {Object.entries(keyStatisticsList).map(([key, item]) => {\n const value = countKeyStatistics?.[key as keyof typeof countKeyStatistics];\n return (\n value !== null && (\n <GridCell\n as={LinkCell}\n to={item.link}\n key={`key-statistics-${key}`}\n data-testid={`stat-${key}`}\n onClick={() => trackUsage('didOpenKeyStatisticsWidgetLink', { itemKey: key })}\n >\n <Flex alignItems=\"center\" gap={2}>\n <Flex\n padding={2}\n borderRadius={1}\n background={item.icon.background}\n color={item.icon.color}\n >\n {item.icon.component}\n </Flex>\n <Flex direction=\"column\" alignItems=\"flex-start\">\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"neutral500\">\n {formatMessage(item.label)}\n </Typography>\n <Typography variant=\"omega\" fontWeight=\"bold\" textColor=\"neutral800\">\n {formatNumber({\n locale,\n number: key === 'entries' ? totalCountEntries : value,\n })}\n </Typography>\n </Flex>\n </Flex>\n </GridCell>\n )\n );\n })}\n </Grid>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DeployNowWidget\n * -----------------------------------------------------------------------------------------------*/\n\nconst DeployNowWidget = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex direction=\"column\" gap={4} height=\"100%\" alignItems=\"center\" justifyContent=\"center\">\n <CloudUpload width=\"3.2rem\" height=\"3.2rem\" />\n <Flex direction=\"column\" gap={2}>\n <Typography variant=\"beta\" textAlign=\"center\">\n {formatMessage({\n id: 'HomePage.widget.deploy-now.title',\n defaultMessage: 'Ready to go live ?',\n })}\n </Typography>\n <Typography variant=\"omega\" textColor=\"neutral600\" textAlign=\"center\">\n {formatMessage({\n id: 'HomePage.widget.deploy-now.description',\n defaultMessage: 'Deploy with Strapi Cloud',\n })}\n </Typography>\n </Flex>\n <LinkButton href=\"https://cloud.strapi.io/login\" isExternal size=\"L\" startIcon={<Cloud />}>\n {formatMessage({ id: 'HomePage.widget.deploy-now.button', defaultMessage: 'Deploy Now' })}\n </LinkButton>\n </Flex>\n );\n};\n\nexport { ProfileWidget, KeyStatisticsWidget, DeployNowWidget };\n"],"names":["DisplayNameTypography","styled","Typography","ProfileWidget","user","useAuth","state","userDisplayName","getDisplayName","initials","getInitials","_jsxs","Flex","direction","gap","height","justifyContent","_jsx","Avatar","Item","delayMs","fallback","fontWeight","textTransform","textAlign","email","variant","textColor","roles","length","marginTop","wrap","map","role","Badge","name","id","Grid","Box","theme","colors","neutral200","borderRadius","GridCell","formatNumber","locale","number","Intl","NumberFormat","notation","maximumFractionDigits","format","LinkCell","Link","spaces","KeyStatisticsWidget","trackUsage","useTracking","formatMessage","useIntl","data","countDocuments","isLoading","isLoadingCountDocuments","useGetCountDocumentsQuery","countKeyStatistics","isLoadingKeyStatistics","useGetKeyStatisticsQuery","Widget","Loading","Error","keyStatisticsList","entries","label","defaultMessage","icon","component","Files","background","color","link","assets","Images","contentTypes","Layout","components","Graph","locales","Earth","admins","User","webhooks","Webhooks","apiTokens","Key","draft","published","modified","totalCountEntries","Object","key","item","value","as","to","data-testid","onClick","itemKey","alignItems","padding","DeployNowWidget","CloudUpload","width","LinkButton","href","isExternal","size","startIcon","Cloud"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { useAuth, useTracking } from '@strapi/admin/strapi-admin';
3
- import { Flex, Avatar, Typography, Badge, Box } from '@strapi/design-system';
4
- import { Key, Webhooks, User, Earth, Graph, Layout, Images, Files } from '@strapi/icons';
3
+ import { Flex, Avatar, Typography, Badge, LinkButton, Box } from '@strapi/design-system';
4
+ import { CloudUpload, Cloud, Key, Webhooks, User, Earth, Graph, Layout, Images, Files } from '@strapi/icons';
5
5
  import { useIntl } from 'react-intl';
6
6
  import { Link } from 'react-router-dom';
7
7
  import { styled } from 'styled-components';
@@ -247,6 +247,57 @@ const KeyStatisticsWidget = ()=>{
247
247
  })
248
248
  });
249
249
  };
250
+ /* -------------------------------------------------------------------------------------------------
251
+ * DeployNowWidget
252
+ * -----------------------------------------------------------------------------------------------*/ const DeployNowWidget = ()=>{
253
+ const { formatMessage } = useIntl();
254
+ return /*#__PURE__*/ jsxs(Flex, {
255
+ direction: "column",
256
+ gap: 4,
257
+ height: "100%",
258
+ alignItems: "center",
259
+ justifyContent: "center",
260
+ children: [
261
+ /*#__PURE__*/ jsx(CloudUpload, {
262
+ width: "3.2rem",
263
+ height: "3.2rem"
264
+ }),
265
+ /*#__PURE__*/ jsxs(Flex, {
266
+ direction: "column",
267
+ gap: 2,
268
+ children: [
269
+ /*#__PURE__*/ jsx(Typography, {
270
+ variant: "beta",
271
+ textAlign: "center",
272
+ children: formatMessage({
273
+ id: 'HomePage.widget.deploy-now.title',
274
+ defaultMessage: 'Ready to go live ?'
275
+ })
276
+ }),
277
+ /*#__PURE__*/ jsx(Typography, {
278
+ variant: "omega",
279
+ textColor: "neutral600",
280
+ textAlign: "center",
281
+ children: formatMessage({
282
+ id: 'HomePage.widget.deploy-now.description',
283
+ defaultMessage: 'Deploy with Strapi Cloud'
284
+ })
285
+ })
286
+ ]
287
+ }),
288
+ /*#__PURE__*/ jsx(LinkButton, {
289
+ href: "https://cloud.strapi.io/login",
290
+ isExternal: true,
291
+ size: "L",
292
+ startIcon: /*#__PURE__*/ jsx(Cloud, {}),
293
+ children: formatMessage({
294
+ id: 'HomePage.widget.deploy-now.button',
295
+ defaultMessage: 'Deploy Now'
296
+ })
297
+ })
298
+ ]
299
+ });
300
+ };
250
301
 
251
- export { KeyStatisticsWidget, ProfileWidget };
302
+ export { DeployNowWidget, KeyStatisticsWidget, ProfileWidget };
252
303
  //# sourceMappingURL=Widgets.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Widgets.mjs","sources":["../../../../../admin/src/components/Widgets.tsx"],"sourcesContent":["import { useAuth, useTracking } from '@strapi/admin/strapi-admin';\nimport { Avatar, Badge, Box, Flex, Typography } from '@strapi/design-system';\nimport { Earth, Images, User, Key, Files, Layout, Graph, Webhooks } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useGetCountDocumentsQuery, useGetKeyStatisticsQuery } from '../services/homepage';\nimport { getDisplayName, getInitials } from '../utils/users';\n\nimport { Widget } from './WidgetHelpers';\n\n/* -------------------------------------------------------------------------------------------------\n * ProfileWidget\n * -----------------------------------------------------------------------------------------------*/\n\nconst DisplayNameTypography = styled(Typography)`\n font-size: 2.4rem;\n`;\n\nconst ProfileWidget = () => {\n const user = useAuth('User', (state) => state.user);\n const userDisplayName = getDisplayName(user);\n const initials = getInitials(user);\n\n return (\n <Flex direction=\"column\" gap={3} height=\"100%\" justifyContent=\"center\">\n <Avatar.Item delayMs={0} fallback={initials} />\n {userDisplayName && (\n <DisplayNameTypography fontWeight=\"bold\" textTransform=\"none\" textAlign=\"center\">\n {userDisplayName}\n </DisplayNameTypography>\n )}\n {user?.email && (\n <Typography variant=\"omega\" textColor=\"neutral600\">\n {user?.email}\n </Typography>\n )}\n {user?.roles?.length && (\n <Flex marginTop={2} gap={1} wrap=\"wrap\">\n {user?.roles?.map((role) => <Badge key={role.id}>{role.name}</Badge>)}\n </Flex>\n )}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Key Statistics\n * -----------------------------------------------------------------------------------------------*/\nconst Grid = styled(Box)`\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 0;\n border: 1px solid ${({ theme }) => theme.colors.neutral200};\n border-radius: ${({ theme }) => theme.borderRadius};\n overflow: hidden;\n`;\n\nconst GridCell = styled(Box)`\n border-bottom: 1px solid ${({ theme }) => theme.colors.neutral200};\n border-right: 1px solid ${({ theme }) => theme.colors.neutral200};\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n\n &:nth-child(2n) {\n border-right: none;\n }\n &:nth-last-child(-n + 2) {\n border-bottom: none;\n }\n`;\n\nconst formatNumber = ({ locale, number }: { locale: string; number: number }) => {\n return new Intl.NumberFormat(locale, {\n notation: 'compact',\n maximumFractionDigits: 1,\n }).format(number);\n};\n\nconst LinkCell = styled(Link)`\n text-decoration: none;\n padding: ${({ theme }) => theme.spaces[3]};\n`;\n\nconst KeyStatisticsWidget = () => {\n const { trackUsage } = useTracking();\n const { formatMessage, locale } = useIntl();\n const { data: countDocuments, isLoading: isLoadingCountDocuments } = useGetCountDocumentsQuery();\n const { data: countKeyStatistics, isLoading: isLoadingKeyStatistics } =\n useGetKeyStatisticsQuery();\n\n if (isLoadingKeyStatistics || isLoadingCountDocuments) {\n return <Widget.Loading />;\n }\n\n if (!countKeyStatistics || !countDocuments) {\n return <Widget.Error />;\n }\n\n const keyStatisticsList = {\n entries: {\n label: {\n id: 'widget.key-statistics.list.entries',\n defaultMessage: 'Entries',\n },\n icon: {\n component: <Files />,\n background: 'primary100',\n color: 'primary600',\n },\n link: '/content-manager',\n },\n assets: {\n label: {\n id: 'widget.key-statistics.list.assets',\n defaultMessage: 'Assets',\n },\n icon: {\n component: <Images />,\n background: 'warning100',\n color: 'warning600',\n },\n link: '/plugins/upload',\n },\n contentTypes: {\n label: {\n id: 'widget.key-statistics.list.contentTypes',\n defaultMessage: 'Content-Types',\n },\n icon: {\n component: <Layout />,\n background: 'secondary100',\n color: 'secondary600',\n },\n link: '/plugins/content-type-builder',\n },\n components: {\n label: {\n id: 'widget.key-statistics.list.components',\n defaultMessage: 'Components',\n },\n icon: {\n component: <Graph />,\n background: 'alternative100',\n color: 'alternative600',\n },\n link: '/plugins/content-type-builder',\n },\n locales: {\n label: {\n id: 'widget.key-statistics.list.locales',\n defaultMessage: 'Locales',\n },\n icon: {\n component: <Earth />,\n background: 'success100',\n color: 'success600',\n },\n link: '/settings/internationalization',\n },\n admins: {\n label: {\n id: 'widget.key-statistics.list.admins',\n defaultMessage: 'Admins',\n },\n icon: {\n component: <User />,\n background: 'danger100',\n color: 'danger600',\n },\n link: '/settings/users?pageSize=10&page=1&sort=firstname',\n },\n webhooks: {\n label: {\n id: 'widget.key-statistics.list.webhooks',\n defaultMessage: 'Webhooks',\n },\n icon: {\n component: <Webhooks />,\n background: 'alternative100',\n color: 'alternative600',\n },\n link: '/settings/webhooks',\n },\n apiTokens: {\n label: {\n id: 'widget.key-statistics.list.apiTokens',\n defaultMessage: 'API Tokens',\n },\n icon: {\n component: <Key />,\n background: 'neutral100',\n color: 'neutral600',\n },\n link: '/settings/api-tokens?sort=name:ASC',\n },\n };\n\n const { draft, published, modified } = countDocuments ?? {\n draft: 0,\n published: 0,\n modified: 0,\n };\n\n const totalCountEntries = draft + published + modified;\n\n return (\n <Grid>\n {Object.entries(keyStatisticsList).map(([key, item]) => {\n const value = countKeyStatistics?.[key as keyof typeof countKeyStatistics];\n return (\n value !== null && (\n <GridCell\n as={LinkCell}\n to={item.link}\n key={`key-statistics-${key}`}\n data-testid={`stat-${key}`}\n onClick={() => trackUsage('didOpenKeyStatisticsWidgetLink', { itemKey: key })}\n >\n <Flex alignItems=\"center\" gap={2}>\n <Flex\n padding={2}\n borderRadius={1}\n background={item.icon.background}\n color={item.icon.color}\n >\n {item.icon.component}\n </Flex>\n <Flex direction=\"column\" alignItems=\"flex-start\">\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"neutral500\">\n {formatMessage(item.label)}\n </Typography>\n <Typography variant=\"omega\" fontWeight=\"bold\" textColor=\"neutral800\">\n {formatNumber({\n locale,\n number: key === 'entries' ? totalCountEntries : value,\n })}\n </Typography>\n </Flex>\n </Flex>\n </GridCell>\n )\n );\n })}\n </Grid>\n );\n};\n\nexport { ProfileWidget, KeyStatisticsWidget };\n"],"names":["DisplayNameTypography","styled","Typography","ProfileWidget","user","useAuth","state","userDisplayName","getDisplayName","initials","getInitials","_jsxs","Flex","direction","gap","height","justifyContent","_jsx","Avatar","Item","delayMs","fallback","fontWeight","textTransform","textAlign","email","variant","textColor","roles","length","marginTop","wrap","map","role","Badge","name","id","Grid","Box","theme","colors","neutral200","borderRadius","GridCell","formatNumber","locale","number","Intl","NumberFormat","notation","maximumFractionDigits","format","LinkCell","Link","spaces","KeyStatisticsWidget","trackUsage","useTracking","formatMessage","useIntl","data","countDocuments","isLoading","isLoadingCountDocuments","useGetCountDocumentsQuery","countKeyStatistics","isLoadingKeyStatistics","useGetKeyStatisticsQuery","Widget","Loading","Error","keyStatisticsList","entries","label","defaultMessage","icon","component","Files","background","color","link","assets","Images","contentTypes","Layout","components","Graph","locales","Earth","admins","User","webhooks","Webhooks","apiTokens","Key","draft","published","modified","totalCountEntries","Object","key","item","value","as","to","data-testid","onClick","itemKey","alignItems","padding"],"mappings":"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"}
1
+ {"version":3,"file":"Widgets.mjs","sources":["../../../../../admin/src/components/Widgets.tsx"],"sourcesContent":["import { useAuth, useTracking } from '@strapi/admin/strapi-admin';\nimport { Avatar, Badge, Box, Flex, LinkButton, Typography } from '@strapi/design-system';\nimport {\n Cloud,\n CloudUpload,\n Earth,\n Images,\n User,\n Key,\n Files,\n Layout,\n Graph,\n Webhooks,\n} from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useGetCountDocumentsQuery, useGetKeyStatisticsQuery } from '../services/homepage';\nimport { getDisplayName, getInitials } from '../utils/users';\n\nimport { Widget } from './WidgetHelpers';\n\n/* -------------------------------------------------------------------------------------------------\n * ProfileWidget\n * -----------------------------------------------------------------------------------------------*/\n\nconst DisplayNameTypography = styled(Typography)`\n font-size: 2.4rem;\n`;\n\nconst ProfileWidget = () => {\n const user = useAuth('User', (state) => state.user);\n const userDisplayName = getDisplayName(user);\n const initials = getInitials(user);\n\n return (\n <Flex direction=\"column\" gap={3} height=\"100%\" justifyContent=\"center\">\n <Avatar.Item delayMs={0} fallback={initials} />\n {userDisplayName && (\n <DisplayNameTypography fontWeight=\"bold\" textTransform=\"none\" textAlign=\"center\">\n {userDisplayName}\n </DisplayNameTypography>\n )}\n {user?.email && (\n <Typography variant=\"omega\" textColor=\"neutral600\">\n {user?.email}\n </Typography>\n )}\n {user?.roles?.length && (\n <Flex marginTop={2} gap={1} wrap=\"wrap\">\n {user?.roles?.map((role) => <Badge key={role.id}>{role.name}</Badge>)}\n </Flex>\n )}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Key Statistics\n * -----------------------------------------------------------------------------------------------*/\nconst Grid = styled(Box)`\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 0;\n border: 1px solid ${({ theme }) => theme.colors.neutral200};\n border-radius: ${({ theme }) => theme.borderRadius};\n overflow: hidden;\n`;\n\nconst GridCell = styled(Box)`\n border-bottom: 1px solid ${({ theme }) => theme.colors.neutral200};\n border-right: 1px solid ${({ theme }) => theme.colors.neutral200};\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n\n &:nth-child(2n) {\n border-right: none;\n }\n &:nth-last-child(-n + 2) {\n border-bottom: none;\n }\n`;\n\nconst formatNumber = ({ locale, number }: { locale: string; number: number }) => {\n return new Intl.NumberFormat(locale, {\n notation: 'compact',\n maximumFractionDigits: 1,\n }).format(number);\n};\n\nconst LinkCell = styled(Link)`\n text-decoration: none;\n padding: ${({ theme }) => theme.spaces[3]};\n`;\n\nconst KeyStatisticsWidget = () => {\n const { trackUsage } = useTracking();\n const { formatMessage, locale } = useIntl();\n const { data: countDocuments, isLoading: isLoadingCountDocuments } = useGetCountDocumentsQuery();\n const { data: countKeyStatistics, isLoading: isLoadingKeyStatistics } =\n useGetKeyStatisticsQuery();\n\n if (isLoadingKeyStatistics || isLoadingCountDocuments) {\n return <Widget.Loading />;\n }\n\n if (!countKeyStatistics || !countDocuments) {\n return <Widget.Error />;\n }\n\n const keyStatisticsList = {\n entries: {\n label: {\n id: 'widget.key-statistics.list.entries',\n defaultMessage: 'Entries',\n },\n icon: {\n component: <Files />,\n background: 'primary100',\n color: 'primary600',\n },\n link: '/content-manager',\n },\n assets: {\n label: {\n id: 'widget.key-statistics.list.assets',\n defaultMessage: 'Assets',\n },\n icon: {\n component: <Images />,\n background: 'warning100',\n color: 'warning600',\n },\n link: '/plugins/upload',\n },\n contentTypes: {\n label: {\n id: 'widget.key-statistics.list.contentTypes',\n defaultMessage: 'Content-Types',\n },\n icon: {\n component: <Layout />,\n background: 'secondary100',\n color: 'secondary600',\n },\n link: '/plugins/content-type-builder',\n },\n components: {\n label: {\n id: 'widget.key-statistics.list.components',\n defaultMessage: 'Components',\n },\n icon: {\n component: <Graph />,\n background: 'alternative100',\n color: 'alternative600',\n },\n link: '/plugins/content-type-builder',\n },\n locales: {\n label: {\n id: 'widget.key-statistics.list.locales',\n defaultMessage: 'Locales',\n },\n icon: {\n component: <Earth />,\n background: 'success100',\n color: 'success600',\n },\n link: '/settings/internationalization',\n },\n admins: {\n label: {\n id: 'widget.key-statistics.list.admins',\n defaultMessage: 'Admins',\n },\n icon: {\n component: <User />,\n background: 'danger100',\n color: 'danger600',\n },\n link: '/settings/users?pageSize=10&page=1&sort=firstname',\n },\n webhooks: {\n label: {\n id: 'widget.key-statistics.list.webhooks',\n defaultMessage: 'Webhooks',\n },\n icon: {\n component: <Webhooks />,\n background: 'alternative100',\n color: 'alternative600',\n },\n link: '/settings/webhooks',\n },\n apiTokens: {\n label: {\n id: 'widget.key-statistics.list.apiTokens',\n defaultMessage: 'API Tokens',\n },\n icon: {\n component: <Key />,\n background: 'neutral100',\n color: 'neutral600',\n },\n link: '/settings/api-tokens?sort=name:ASC',\n },\n };\n\n const { draft, published, modified } = countDocuments ?? {\n draft: 0,\n published: 0,\n modified: 0,\n };\n\n const totalCountEntries = draft + published + modified;\n\n return (\n <Grid>\n {Object.entries(keyStatisticsList).map(([key, item]) => {\n const value = countKeyStatistics?.[key as keyof typeof countKeyStatistics];\n return (\n value !== null && (\n <GridCell\n as={LinkCell}\n to={item.link}\n key={`key-statistics-${key}`}\n data-testid={`stat-${key}`}\n onClick={() => trackUsage('didOpenKeyStatisticsWidgetLink', { itemKey: key })}\n >\n <Flex alignItems=\"center\" gap={2}>\n <Flex\n padding={2}\n borderRadius={1}\n background={item.icon.background}\n color={item.icon.color}\n >\n {item.icon.component}\n </Flex>\n <Flex direction=\"column\" alignItems=\"flex-start\">\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"neutral500\">\n {formatMessage(item.label)}\n </Typography>\n <Typography variant=\"omega\" fontWeight=\"bold\" textColor=\"neutral800\">\n {formatNumber({\n locale,\n number: key === 'entries' ? totalCountEntries : value,\n })}\n </Typography>\n </Flex>\n </Flex>\n </GridCell>\n )\n );\n })}\n </Grid>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DeployNowWidget\n * -----------------------------------------------------------------------------------------------*/\n\nconst DeployNowWidget = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex direction=\"column\" gap={4} height=\"100%\" alignItems=\"center\" justifyContent=\"center\">\n <CloudUpload width=\"3.2rem\" height=\"3.2rem\" />\n <Flex direction=\"column\" gap={2}>\n <Typography variant=\"beta\" textAlign=\"center\">\n {formatMessage({\n id: 'HomePage.widget.deploy-now.title',\n defaultMessage: 'Ready to go live ?',\n })}\n </Typography>\n <Typography variant=\"omega\" textColor=\"neutral600\" textAlign=\"center\">\n {formatMessage({\n id: 'HomePage.widget.deploy-now.description',\n defaultMessage: 'Deploy with Strapi Cloud',\n })}\n </Typography>\n </Flex>\n <LinkButton href=\"https://cloud.strapi.io/login\" isExternal size=\"L\" startIcon={<Cloud />}>\n {formatMessage({ id: 'HomePage.widget.deploy-now.button', defaultMessage: 'Deploy Now' })}\n </LinkButton>\n </Flex>\n );\n};\n\nexport { ProfileWidget, KeyStatisticsWidget, DeployNowWidget };\n"],"names":["DisplayNameTypography","styled","Typography","ProfileWidget","user","useAuth","state","userDisplayName","getDisplayName","initials","getInitials","_jsxs","Flex","direction","gap","height","justifyContent","_jsx","Avatar","Item","delayMs","fallback","fontWeight","textTransform","textAlign","email","variant","textColor","roles","length","marginTop","wrap","map","role","Badge","name","id","Grid","Box","theme","colors","neutral200","borderRadius","GridCell","formatNumber","locale","number","Intl","NumberFormat","notation","maximumFractionDigits","format","LinkCell","Link","spaces","KeyStatisticsWidget","trackUsage","useTracking","formatMessage","useIntl","data","countDocuments","isLoading","isLoadingCountDocuments","useGetCountDocumentsQuery","countKeyStatistics","isLoadingKeyStatistics","useGetKeyStatisticsQuery","Widget","Loading","Error","keyStatisticsList","entries","label","defaultMessage","icon","component","Files","background","color","link","assets","Images","contentTypes","Layout","components","Graph","locales","Earth","admins","User","webhooks","Webhooks","apiTokens","Key","draft","published","modified","totalCountEntries","Object","key","item","value","as","to","data-testid","onClick","itemKey","alignItems","padding","DeployNowWidget","CloudUpload","width","LinkButton","href","isExternal","size","startIcon","Cloud"],"mappings":"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"}
@@ -789,7 +789,10 @@ var ar = {
789
789
  "Usecase.title": "تخبرنا أكثر قليلا عن نفسك",
790
790
  "Users.components.List.empty": "لا يوجد مستخدمون ...",
791
791
  "Users.components.List.empty.withFilters": "لا يوجد مستخدمون لديهم عوامل التصفية المطبقة ...",
792
- "Users.components.List.empty.withSearch": "لا يوجد مستخدمون مطابقون للبحث({search})..."
792
+ "Users.components.List.empty.withSearch": "لا يوجد مستخدمون مطابقون للبحث({search})...",
793
+ "HomePage.widget.deploy-now.title": "هل أنت مستعد للنشر؟",
794
+ "HomePage.widget.deploy-now.description": "انشر مشروعك.",
795
+ "HomePage.widget.deploy-now.button": "انشر الآن"
793
796
  };
794
797
 
795
798
  exports.Analytics = Analytics;
@@ -1 +1 @@
1
- {"version":3,"file":"ar.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ar.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -785,7 +785,10 @@ var ar = {
785
785
  "Usecase.title": "تخبرنا أكثر قليلا عن نفسك",
786
786
  "Users.components.List.empty": "لا يوجد مستخدمون ...",
787
787
  "Users.components.List.empty.withFilters": "لا يوجد مستخدمون لديهم عوامل التصفية المطبقة ...",
788
- "Users.components.List.empty.withSearch": "لا يوجد مستخدمون مطابقون للبحث({search})..."
788
+ "Users.components.List.empty.withSearch": "لا يوجد مستخدمون مطابقون للبحث({search})...",
789
+ "HomePage.widget.deploy-now.title": "هل أنت مستعد للنشر؟",
790
+ "HomePage.widget.deploy-now.description": "انشر مشروعك.",
791
+ "HomePage.widget.deploy-now.button": "انشر الآن"
789
792
  };
790
793
 
791
794
  export { Analytics, Documentation, Email, Password, Provider, ResetPasswordToken, Role, Username, Users, anErrorOccurred, clearLabel, dark, ar as default, light, or, selectButtonTitle, skipToContent, submit };
@@ -1 +1 @@
1
- {"version":3,"file":"ar.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ar.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}