@shefing/quickfilter 1.0.41 → 1.0.43

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.
@@ -24,4 +24,5 @@ export type DashboardViewServerPropsOnly = {
24
24
  } & ServerProps;
25
25
  export type DashboardViewServerProps = DashboardViewClientProps & DashboardViewServerPropsOnly;
26
26
  export declare function DefaultDashboard(props: DashboardViewServerProps): React.JSX.Element;
27
+ export default DefaultDashboard;
27
28
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Dashboard/Default/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAO9D,OAAO,KAAmB,MAAM,OAAO,CAAA;AAMvC,MAAM,MAAM,wBAAwB,GAAG;IACrC,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,4BAA4B,GAAG;IACzC,UAAU,EAAE,KAAK,CAAC;QAChB,IAAI,EAAE;YAAE,SAAS,EAAE,OAAO,CAAC;YAAC,aAAa,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAA;SAAE,CAAA;QAC/F,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,IAAI,EAAE,MAAM,CAAA;KACb,CAAC,CAAA;IACF;;;;OAIG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;IAC1B,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAA;CAC7C,GAAG,WAAW,CAAA;AAEf,MAAM,MAAM,wBAAwB,GAAG,wBAAwB,GAAG,4BAA4B,CAAA;AAE9F,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,wBAAwB,qBAgK/D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Dashboard/Default/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAO9D,OAAO,KAAmB,MAAM,OAAO,CAAA;AAOvC,MAAM,MAAM,wBAAwB,GAAG;IACrC,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,4BAA4B,GAAG;IACzC,UAAU,EAAE,KAAK,CAAC;QAChB,IAAI,EAAE;YAAE,SAAS,EAAE,OAAO,CAAC;YAAC,aAAa,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAA;SAAE,CAAA;QAC/F,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,IAAI,EAAE,MAAM,CAAA;KACb,CAAC,CAAA;IACF;;;;OAIG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;IAC1B,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAA;CAC7C,GAAG,WAAW,CAAA;AAEf,MAAM,MAAM,wBAAwB,GAAG,wBAAwB,GAAG,4BAA4B,CAAA;AAG9F,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,wBAAwB,qBAoK/D;AAED,eAAe,gBAAgB,CAAA"}
@@ -5,9 +5,12 @@ import { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerCompo
5
5
  import { EntityType } from '@payloadcms/ui/shared';
6
6
  import { formatAdminURL } from 'payload/shared';
7
7
  import React, { Fragment } from 'react';
8
+ import { processNavGroups } from '../../lib/utils';
8
9
  const baseClass = 'dashboard';
9
10
  export function DefaultDashboard(props) {
10
- const { globalData, i18n, i18n: { t }, locale, navGroups, params, payload: { config: { admin: { components: { afterDashboard, beforeDashboard } }, routes: { admin: adminRoute } } }, payload, permissions, searchParams, user } = props;
11
+ const { globalData, i18n, i18n: { t }, locale, navGroups: originalNavGroups, params, payload: { config: { admin: { components: { afterDashboard, beforeDashboard } }, routes: { admin: adminRoute }, collections } }, payload, permissions, searchParams, user } = props;
12
+ // Process navGroups to calculate href values
13
+ const navGroups = originalNavGroups ? processNavGroups(originalNavGroups, collections, payload, i18n) : [];
11
14
  return /*#__PURE__*/ _jsx("div", {
12
15
  className: baseClass,
13
16
  children: /*#__PURE__*/ _jsxs(Gutter, {
@@ -134,5 +137,6 @@ export function DefaultDashboard(props) {
134
137
  })
135
138
  });
136
139
  }
140
+ export default DefaultDashboard;
137
141
 
138
142
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/Dashboard/Default/index.tsx"],"sourcesContent":["import type { groupNavItems } from '@payloadcms/ui/shared'\nimport type { ClientUser, Locale, ServerProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { Button, Card, Gutter, Locked } from '@payloadcms/ui'\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { EntityType } from '@payloadcms/ui/shared'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { Fragment } from 'react'\n\nimport {EntityWithHref} from \"../../types\";\n\nconst baseClass = 'dashboard'\n\nexport type DashboardViewClientProps = {\n locale: Locale\n}\n\nexport type DashboardViewServerPropsOnly = {\n globalData: Array<{\n data: { _isLocked: boolean; _lastEditedAt: string; _userEditing: ClientUser | number | string }\n lockDuration?: number\n slug: string\n }>\n /**\n * @deprecated\n * This prop is deprecated and will be removed in the next major version.\n * Components now import their own `Link` directly from `next/link`.\n */\n Link?: React.ComponentType\n navGroups?: ReturnType<typeof groupNavItems>\n} & ServerProps\n\nexport type DashboardViewServerProps = DashboardViewClientProps & DashboardViewServerPropsOnly\n\nexport function DefaultDashboard(props: DashboardViewServerProps) {\n const {\n globalData,\n i18n,\n i18n: { t },\n locale,\n navGroups,\n params,\n payload: {\n config: {\n admin: {\n components: { afterDashboard, beforeDashboard },\n },\n routes: { admin: adminRoute },\n },\n },\n payload,\n permissions,\n searchParams,\n user,\n } = props\n\n return (\n <div className={baseClass}>\n <Gutter className={`${baseClass}__wrap`}>\n {beforeDashboard &&\n RenderServerComponent({\n Component: beforeDashboard,\n importMap: payload.importMap,\n serverProps: {\n i18n,\n locale,\n params,\n payload,\n permissions,\n searchParams,\n user,\n } satisfies ServerProps,\n })}\n\n <Fragment>\n {!navGroups || navGroups?.length === 0 ? (\n <p>no nav groups....</p>\n ) : (\n navGroups.map(({ entities, label }, groupIndex) => {\n return (\n <div className={`${baseClass}__group`} key={groupIndex}>\n <h2 className={`${baseClass}__label`}>{label}</h2>\n <ul className={`${baseClass}__card-list`}>\n {entities.map(({ slug, type, label, href: entityHref }:EntityWithHref, entityIndex) => {\n let title: string\n let buttonAriaLabel: string\n let createHREF: string\n let href: string\n let hasCreatePermission: boolean\n let isLocked = null\n let userEditing = null\n\n if (type === EntityType.collection) {\n title = getTranslation(label, i18n)\n\n buttonAriaLabel = t('general:showAllLabel', { label: title })\n\n // Use the processed href if available, otherwise use the default\n href = entityHref || formatAdminURL({ adminRoute, path: `/collections/${slug}` })\n\n createHREF = formatAdminURL({\n adminRoute,\n path: `/collections/${slug}/create`,\n })\n\n hasCreatePermission = permissions?.collections?.[slug]?.create\n }\n\n if (type === EntityType.global) {\n title = getTranslation(label, i18n)\n\n buttonAriaLabel = t('general:editLabel', {\n label: getTranslation(label, i18n),\n })\n\n href = formatAdminURL({\n adminRoute,\n path: `/globals/${slug}`,\n })\n\n // Find the lock status for the global\n const globalLockData = globalData.find((global) => global.slug === slug)\n if (globalLockData) {\n isLocked = globalLockData.data._isLocked\n userEditing = globalLockData.data._userEditing\n\n // Check if the lock is expired\n const lockDuration = globalLockData?.lockDuration\n const lastEditedAt = new Date(\n globalLockData.data?._lastEditedAt,\n ).getTime()\n\n const lockDurationInMilliseconds = lockDuration * 1000\n const lockExpirationTime = lastEditedAt + lockDurationInMilliseconds\n\n if (new Date().getTime() > lockExpirationTime) {\n isLocked = false\n userEditing = null\n }\n }\n }\n\n return (\n <li key={entityIndex}>\n <Card\n actions={\n isLocked && user?.id !== userEditing?.id ? (\n <Locked className={`${baseClass}__locked`} user={userEditing} />\n ) : hasCreatePermission && type === EntityType.collection ? (\n <Button\n aria-label={t('general:createNewLabel', {\n label,\n })}\n buttonStyle=\"icon-label\"\n el=\"link\"\n icon=\"plus\"\n iconStyle=\"with-border\"\n round\n to={createHREF}\n />\n ) : undefined\n }\n buttonAriaLabel={buttonAriaLabel}\n href={href}\n id={`card-${slug}`}\n title={getTranslation(label, i18n)}\n titleAs=\"h3\"\n />\n </li>\n )\n })}\n </ul>\n </div>\n )\n })\n )}\n </Fragment>\n {afterDashboard &&\n RenderServerComponent({\n Component: afterDashboard,\n importMap: payload.importMap,\n serverProps: {\n i18n,\n locale,\n params,\n payload,\n permissions,\n searchParams,\n user,\n } satisfies ServerProps,\n })}\n </Gutter>\n </div>\n )\n}\n"],"names":["getTranslation","Button","Card","Gutter","Locked","RenderServerComponent","EntityType","formatAdminURL","React","Fragment","baseClass","DefaultDashboard","props","globalData","i18n","t","locale","navGroups","params","payload","config","admin","components","afterDashboard","beforeDashboard","routes","adminRoute","permissions","searchParams","user","div","className","Component","importMap","serverProps","length","p","map","entities","label","groupIndex","h2","ul","slug","type","href","entityHref","entityIndex","title","buttonAriaLabel","createHREF","hasCreatePermission","isLocked","userEditing","collection","path","collections","create","global","globalLockData","find","data","_isLocked","_userEditing","lockDuration","lastEditedAt","Date","_lastEditedAt","getTime","lockDurationInMilliseconds","lockExpirationTime","li","actions","id","aria-label","buttonStyle","el","icon","iconStyle","round","to","undefined","titleAs"],"mappings":";AAGA,SAASA,cAAc,QAAQ,2BAA0B;AACzD,SAASC,MAAM,EAAEC,IAAI,EAAEC,MAAM,EAAEC,MAAM,QAAQ,iBAAgB;AAC7D,SAASC,qBAAqB,QAAQ,gDAA+C;AACrF,SAASC,UAAU,QAAQ,wBAAuB;AAClD,SAASC,cAAc,QAAQ,iBAAgB;AAC/C,OAAOC,SAASC,QAAQ,QAAQ,QAAO;AAIvC,MAAMC,YAAY;AAuBlB,OAAO,SAASC,iBAAiBC,KAA+B;IAC9D,MAAM,EACJC,UAAU,EACVC,IAAI,EACJA,MAAM,EAAEC,CAAC,EAAE,EACXC,MAAM,EACNC,SAAS,EACTC,MAAM,EACNC,SAAS,EACPC,QAAQ,EACNC,OAAO,EACLC,YAAY,EAAEC,cAAc,EAAEC,eAAe,EAAE,EAChD,EACDC,QAAQ,EAAEJ,OAAOK,UAAU,EAAE,EAC9B,EACF,EACDP,OAAO,EACPQ,WAAW,EACXC,YAAY,EACZC,IAAI,EACL,GAAGjB;IAEJ,qBACE,KAACkB;QAAIC,WAAWrB;kBACd,cAAA,MAACP;YAAO4B,WAAW,GAAGrB,UAAU,MAAM,CAAC;;gBACpCc,mBACCnB,sBAAsB;oBACpB2B,WAAWR;oBACXS,WAAWd,QAAQc,SAAS;oBAC5BC,aAAa;wBACXpB;wBACAE;wBACAE;wBACAC;wBACAQ;wBACAC;wBACAC;oBACF;gBACF;8BAEF,KAACpB;8BACE,CAACQ,aAAaA,WAAWkB,WAAW,kBACnC,KAACC;kCAAE;yBAEHnB,UAAUoB,GAAG,CAAC,CAAC,EAAEC,QAAQ,EAAEC,KAAK,EAAE,EAAEC;wBAClC,qBACE,MAACV;4BAAIC,WAAW,GAAGrB,UAAU,OAAO,CAAC;;8CACnC,KAAC+B;oCAAGV,WAAW,GAAGrB,UAAU,OAAO,CAAC;8CAAG6B;;8CACvC,KAACG;oCAAGX,WAAW,GAAGrB,UAAU,WAAW,CAAC;8CACnC4B,SAASD,GAAG,CAAC,CAAC,EAAEM,IAAI,EAAEC,IAAI,EAAEL,KAAK,EAAEM,MAAMC,UAAU,EAAiB,EAAEC;wCACvE,IAAIC;wCACJ,IAAIC;wCACJ,IAAIC;wCACJ,IAAIL;wCACJ,IAAIM;wCACJ,IAAIC,WAAW;wCACf,IAAIC,cAAc;wCAElB,IAAIT,SAAStC,WAAWgD,UAAU,EAAE;4CAClCN,QAAQhD,eAAeuC,OAAOzB;4CAE9BmC,kBAAkBlC,EAAE,wBAAwB;gDAAEwB,OAAOS;4CAAM;4CAE3D,iEAAiE;4CACjEH,OAAOC,cAAcvC,eAAe;gDAAEmB;gDAAY6B,MAAM,CAAC,aAAa,EAAEZ,MAAM;4CAAC;4CAE/EO,aAAa3C,eAAe;gDAC1BmB;gDACA6B,MAAM,CAAC,aAAa,EAAEZ,KAAK,OAAO,CAAC;4CACrC;4CAEAQ,sBAAsBxB,aAAa6B,aAAa,CAACb,KAAK,EAAEc;wCAC1D;wCAEA,IAAIb,SAAStC,WAAWoD,MAAM,EAAE;4CAC9BV,QAAQhD,eAAeuC,OAAOzB;4CAE9BmC,kBAAkBlC,EAAE,qBAAqB;gDACvCwB,OAAOvC,eAAeuC,OAAOzB;4CAC/B;4CAEA+B,OAAOtC,eAAe;gDACpBmB;gDACA6B,MAAM,CAAC,SAAS,EAAEZ,MAAM;4CAC1B;4CAEA,sCAAsC;4CACtC,MAAMgB,iBAAiB9C,WAAW+C,IAAI,CAAC,CAACF,SAAWA,OAAOf,IAAI,KAAKA;4CACnE,IAAIgB,gBAAgB;gDAClBP,WAAWO,eAAeE,IAAI,CAACC,SAAS;gDACxCT,cAAcM,eAAeE,IAAI,CAACE,YAAY;gDAE9C,+BAA+B;gDAC/B,MAAMC,eAAeL,gBAAgBK;gDACrC,MAAMC,eAAe,IAAIC,KACvBP,eAAeE,IAAI,EAAEM,eACrBC,OAAO;gDAET,MAAMC,6BAA6BL,eAAe;gDAClD,MAAMM,qBAAqBL,eAAeI;gDAE1C,IAAI,IAAIH,OAAOE,OAAO,KAAKE,oBAAoB;oDAC7ClB,WAAW;oDACXC,cAAc;gDAChB;4CACF;wCACF;wCAEA,qBACE,KAACkB;sDACC,cAAA,KAACrE;gDACCsE,SACEpB,YAAYvB,MAAM4C,OAAOpB,aAAaoB,mBACpC,KAACrE;oDAAO2B,WAAW,GAAGrB,UAAU,QAAQ,CAAC;oDAAEmB,MAAMwB;qDAC/CF,uBAAuBP,SAAStC,WAAWgD,UAAU,iBACvD,KAACrD;oDACCyE,cAAY3D,EAAE,0BAA0B;wDACtCwB;oDACF;oDACAoC,aAAY;oDACZC,IAAG;oDACHC,MAAK;oDACLC,WAAU;oDACVC,KAAK;oDACLC,IAAI9B;qDAEJ+B;gDAENhC,iBAAiBA;gDACjBJ,MAAMA;gDACN4B,IAAI,CAAC,KAAK,EAAE9B,MAAM;gDAClBK,OAAOhD,eAAeuC,OAAOzB;gDAC7BoE,SAAQ;;2CAvBHnC;oCA2Bb;;;2BA1FwCP;oBA8FhD;;gBAGHjB,kBACClB,sBAAsB;oBACpB2B,WAAWT;oBACXU,WAAWd,QAAQc,SAAS;oBAC5BC,aAAa;wBACXpB;wBACAE;wBACAE;wBACAC;wBACAQ;wBACAC;wBACAC;oBACF;gBACF;;;;AAIV"}
1
+ {"version":3,"sources":["../../../src/Dashboard/Default/index.tsx"],"sourcesContent":["import type { groupNavItems } from '@payloadcms/ui/shared'\nimport type { ClientUser, Locale, ServerProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { Button, Card, Gutter, Locked } from '@payloadcms/ui'\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { EntityType } from '@payloadcms/ui/shared'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { Fragment } from 'react'\n\nimport {EntityWithHref} from \"../../types\";\nimport { processNavGroups } from '../../lib/utils';\n\nconst baseClass = 'dashboard'\n\nexport type DashboardViewClientProps = {\n locale: Locale\n}\n\nexport type DashboardViewServerPropsOnly = {\n globalData: Array<{\n data: { _isLocked: boolean; _lastEditedAt: string; _userEditing: ClientUser | number | string }\n lockDuration?: number\n slug: string\n }>\n /**\n * @deprecated\n * This prop is deprecated and will be removed in the next major version.\n * Components now import their own `Link` directly from `next/link`.\n */\n Link?: React.ComponentType\n navGroups?: ReturnType<typeof groupNavItems>\n} & ServerProps\n\nexport type DashboardViewServerProps = DashboardViewClientProps & DashboardViewServerPropsOnly\n\n\nexport function DefaultDashboard(props: DashboardViewServerProps) {\n const {\n globalData,\n i18n,\n i18n: { t },\n locale,\n navGroups: originalNavGroups,\n params,\n payload: {\n config: {\n admin: {\n components: { afterDashboard, beforeDashboard },\n },\n routes: { admin: adminRoute },\n collections,\n },\n },\n payload,\n permissions,\n searchParams,\n user,\n } = props\n\n // Process navGroups to calculate href values\n const navGroups = originalNavGroups ? processNavGroups(originalNavGroups, collections, payload, i18n) : []\n\n return (\n <div className={baseClass}>\n <Gutter className={`${baseClass}__wrap`}>\n {beforeDashboard &&\n RenderServerComponent({\n Component: beforeDashboard,\n importMap: payload.importMap,\n serverProps: {\n i18n,\n locale,\n params,\n payload,\n permissions,\n searchParams,\n user,\n } satisfies ServerProps,\n })}\n\n <Fragment>\n {!navGroups || navGroups?.length === 0 ? (\n <p>no nav groups....</p>\n ) : (\n navGroups.map(({ entities, label }, groupIndex) => {\n return (\n <div className={`${baseClass}__group`} key={groupIndex}>\n <h2 className={`${baseClass}__label`}>{label}</h2>\n <ul className={`${baseClass}__card-list`}>\n {entities.map(({ slug, type, label, href: entityHref }:EntityWithHref, entityIndex) => {\n let title: string\n let buttonAriaLabel: string\n let createHREF: string\n let href: string\n let hasCreatePermission: boolean\n let isLocked = null\n let userEditing = null\n\n if (type === EntityType.collection) {\n title = getTranslation(label, i18n)\n\n buttonAriaLabel = t('general:showAllLabel', { label: title })\n\n // Use the processed href if available, otherwise use the default\n href = entityHref || formatAdminURL({ adminRoute, path: `/collections/${slug}` })\n\n createHREF = formatAdminURL({\n adminRoute,\n path: `/collections/${slug}/create`,\n })\n\n hasCreatePermission = permissions?.collections?.[slug]?.create\n }\n\n if (type === EntityType.global) {\n title = getTranslation(label, i18n)\n\n buttonAriaLabel = t('general:editLabel', {\n label: getTranslation(label, i18n),\n })\n\n href = formatAdminURL({\n adminRoute,\n path: `/globals/${slug}`,\n })\n\n // Find the lock status for the global\n const globalLockData = globalData.find((global) => global.slug === slug)\n if (globalLockData) {\n isLocked = globalLockData.data._isLocked\n userEditing = globalLockData.data._userEditing\n\n // Check if the lock is expired\n const lockDuration = globalLockData?.lockDuration\n const lastEditedAt = new Date(\n globalLockData.data?._lastEditedAt,\n ).getTime()\n\n const lockDurationInMilliseconds = lockDuration * 1000\n const lockExpirationTime = lastEditedAt + lockDurationInMilliseconds\n\n if (new Date().getTime() > lockExpirationTime) {\n isLocked = false\n userEditing = null\n }\n }\n }\n\n return (\n <li key={entityIndex}>\n <Card\n actions={\n isLocked && user?.id !== userEditing?.id ? (\n <Locked className={`${baseClass}__locked`} user={userEditing} />\n ) : hasCreatePermission && type === EntityType.collection ? (\n <Button\n aria-label={t('general:createNewLabel', {\n label,\n })}\n buttonStyle=\"icon-label\"\n el=\"link\"\n icon=\"plus\"\n iconStyle=\"with-border\"\n round\n to={createHREF}\n />\n ) : undefined\n }\n buttonAriaLabel={buttonAriaLabel}\n href={href}\n id={`card-${slug}`}\n title={getTranslation(label, i18n)}\n titleAs=\"h3\"\n />\n </li>\n )\n })}\n </ul>\n </div>\n )\n })\n )}\n </Fragment>\n {afterDashboard &&\n RenderServerComponent({\n Component: afterDashboard,\n importMap: payload.importMap,\n serverProps: {\n i18n,\n locale,\n params,\n payload,\n permissions,\n searchParams,\n user,\n } satisfies ServerProps,\n })}\n </Gutter>\n </div>\n )\n}\n\nexport default DefaultDashboard\n"],"names":["getTranslation","Button","Card","Gutter","Locked","RenderServerComponent","EntityType","formatAdminURL","React","Fragment","processNavGroups","baseClass","DefaultDashboard","props","globalData","i18n","t","locale","navGroups","originalNavGroups","params","payload","config","admin","components","afterDashboard","beforeDashboard","routes","adminRoute","collections","permissions","searchParams","user","div","className","Component","importMap","serverProps","length","p","map","entities","label","groupIndex","h2","ul","slug","type","href","entityHref","entityIndex","title","buttonAriaLabel","createHREF","hasCreatePermission","isLocked","userEditing","collection","path","create","global","globalLockData","find","data","_isLocked","_userEditing","lockDuration","lastEditedAt","Date","_lastEditedAt","getTime","lockDurationInMilliseconds","lockExpirationTime","li","actions","id","aria-label","buttonStyle","el","icon","iconStyle","round","to","undefined","titleAs"],"mappings":"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"}
@@ -1,5 +1,3 @@
1
- import type { AdminViewServerProps } from 'payload';
2
- import React from 'react';
3
- export declare function Dashboard({ initPageResult, params, searchParams }: AdminViewServerProps): Promise<React.JSX.Element>;
4
- export default Dashboard;
1
+ export { DefaultDashboard, type DashboardViewClientProps, type DashboardViewServerProps, type DashboardViewServerPropsOnly } from './Default';
2
+ export { default } from './Default';
5
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Dashboard/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,SAAS,CAAA;AAKjD,OAAO,KAAmB,MAAM,OAAO,CAAA;AAOvC,wBAAsB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,oBAAoB,8BA0H7F;AAED,eAAe,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Dashboard/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,KAAK,wBAAwB,EAAE,KAAK,wBAAwB,EAAE,KAAK,4BAA4B,EAAE,MAAM,WAAW,CAAA;AAC7I,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA"}
@@ -1,99 +1,5 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { HydrateAuthProvider, SetStepNav } from '@payloadcms/ui';
3
- import { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent';
4
- import { EntityType, groupNavItems } from '@payloadcms/ui/shared';
5
- import React, { Fragment } from 'react';
6
- import { processNavGroups } from '../lib/utils';
7
- import { DefaultDashboard } from './Default';
8
- export async function Dashboard({ initPageResult, params, searchParams }) {
9
- // Check if initPageResult is undefined
10
- if (!initPageResult) {
11
- console.error('initPageResult is undefined in Dashboard component');
12
- return null;
13
- }
14
- const { locale, permissions, req: { i18n, payload: { config }, payload, user }, req, visibleEntities } = initPageResult;
15
- const collections = config.collections.filter((collection)=>permissions?.collections?.[collection.slug]?.read && visibleEntities.collections.includes(collection.slug));
16
- const globals = config.globals.filter((global)=>permissions?.globals?.[global.slug]?.read && visibleEntities.globals.includes(global.slug));
17
- // Query locked global documents only if there are globals in the config
18
- let globalData = [];
19
- if (config.globals.length > 0) {
20
- const lockedDocuments = await payload.find({
21
- collection: 'payload-locked-documents',
22
- depth: 1,
23
- overrideAccess: false,
24
- pagination: false,
25
- req,
26
- where: {
27
- globalSlug: {
28
- exists: true
29
- }
30
- }
31
- });
32
- // Map over globals to include `lockDuration` and lock data for each global slug
33
- globalData = config.globals.map((global)=>{
34
- const lockDurationDefault = 300;
35
- const lockDuration = typeof global.lockDocuments === 'object' ? global.lockDocuments.duration : lockDurationDefault;
36
- const lockedDoc = lockedDocuments.docs.find((doc)=>doc.globalSlug === global.slug);
37
- return {
38
- slug: global.slug,
39
- data: {
40
- _isLocked: !!lockedDoc,
41
- _lastEditedAt: lockedDoc?.updatedAt ?? null,
42
- _userEditing: lockedDoc?.user?.value ?? null
43
- },
44
- lockDuration
45
- };
46
- });
47
- }
48
- const navGroups = groupNavItems([
49
- ...collections.map((collection)=>{
50
- const entityToGroup = {
51
- type: EntityType.collection,
52
- entity: collection
53
- };
54
- return entityToGroup;
55
- }) ?? [],
56
- ...globals.map((global)=>{
57
- const entityToGroup = {
58
- type: EntityType.global,
59
- entity: global
60
- };
61
- return entityToGroup;
62
- }) ?? []
63
- ], permissions, i18n);
64
- // Process collections to calculate URLs with defaultFilter
65
- const processedGroups = processNavGroups(navGroups, collections, payload, i18n);
66
- return /*#__PURE__*/ _jsxs(Fragment, {
67
- children: [
68
- /*#__PURE__*/ _jsx(HydrateAuthProvider, {
69
- permissions: permissions
70
- }),
71
- /*#__PURE__*/ _jsx(SetStepNav, {
72
- nav: []
73
- }),
74
- RenderServerComponent({
75
- clientProps: {
76
- locale
77
- },
78
- Component: config.admin?.components?.views?.dashboard?.Component,
79
- Fallback: DefaultDashboard,
80
- importMap: payload.importMap,
81
- serverProps: {
82
- globalData,
83
- i18n,
84
- locale,
85
- navGroups: processedGroups,
86
- params,
87
- payload,
88
- permissions,
89
- searchParams,
90
- user,
91
- visibleEntities
92
- }
93
- })
94
- ]
95
- });
96
- }
97
- export default Dashboard;
1
+ // Re-export DefaultDashboard from Default
2
+ export { DefaultDashboard } from './Default';
3
+ export { default } from './Default';
98
4
 
99
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Dashboard/index.tsx"],"sourcesContent":["import type { EntityToGroup } from '@payloadcms/ui/shared'\nimport type {AdminViewServerProps} from 'payload'\n\nimport { HydrateAuthProvider, SetStepNav } from '@payloadcms/ui'\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { EntityType, groupNavItems } from '@payloadcms/ui/shared'\nimport React, { Fragment } from 'react'\nimport { processNavGroups } from '../lib/utils'\n\nimport type { DashboardViewClientProps, DashboardViewServerPropsOnly } from './Default/index'\n\nimport { DefaultDashboard } from './Default'\n\nexport async function Dashboard({ initPageResult, params, searchParams }: AdminViewServerProps) {\n // Check if initPageResult is undefined\n if (!initPageResult) {\n console.error('initPageResult is undefined in Dashboard component');\n return null;\n }\n\n const {\n locale,\n permissions,\n req: {\n i18n,\n payload: { config },\n payload,\n user,\n },\n req,\n visibleEntities,\n } = initPageResult\n\n const collections = config.collections.filter(\n (collection) =>\n permissions?.collections?.[collection.slug]?.read &&\n visibleEntities.collections.includes(collection.slug),\n )\n\n const globals = config.globals.filter(\n (global) =>\n permissions?.globals?.[global.slug]?.read && visibleEntities.globals.includes(global.slug),\n )\n\n // Query locked global documents only if there are globals in the config\n let globalData = []\n\n if (config.globals.length > 0) {\n const lockedDocuments = await payload.find({\n collection: 'payload-locked-documents',\n depth: 1,\n overrideAccess: false,\n pagination: false,\n req,\n where: {\n globalSlug: {\n exists: true,\n },\n },\n })\n\n // Map over globals to include `lockDuration` and lock data for each global slug\n globalData = config.globals.map((global) => {\n const lockDurationDefault = 300\n const lockDuration =\n typeof global.lockDocuments === 'object'\n ? global.lockDocuments.duration\n : lockDurationDefault\n\n const lockedDoc = lockedDocuments.docs.find((doc) => doc.globalSlug === global.slug)\n\n return {\n slug: global.slug,\n data: {\n _isLocked: !!lockedDoc,\n _lastEditedAt: lockedDoc?.updatedAt ?? null,\n _userEditing: lockedDoc?.user?.value ?? null,\n },\n lockDuration,\n }\n })\n }\n\n const navGroups = groupNavItems(\n [\n ...(collections.map((collection) => {\n const entityToGroup: EntityToGroup = {\n type: EntityType.collection,\n entity: collection,\n }\n\n return entityToGroup\n }) ?? []),\n ...(globals.map((global) => {\n const entityToGroup: EntityToGroup = {\n type: EntityType.global,\n entity: global,\n }\n\n return entityToGroup\n }) ?? []),\n ],\n permissions,\n i18n,\n )\n\n // Process collections to calculate URLs with defaultFilter\n const processedGroups = processNavGroups(navGroups, collections, payload, i18n);\n\n return (\n <Fragment>\n <HydrateAuthProvider permissions={permissions} />\n <SetStepNav nav={[]} />\n {RenderServerComponent({\n clientProps: {\n locale,\n } satisfies DashboardViewClientProps,\n Component: config.admin?.components?.views?.dashboard?.Component,\n Fallback: DefaultDashboard,\n importMap: payload.importMap,\n serverProps: {\n globalData,\n i18n,\n locale,\n navGroups: processedGroups,\n params,\n payload,\n permissions,\n searchParams,\n user,\n visibleEntities,\n } satisfies DashboardViewServerPropsOnly,\n })}\n </Fragment>\n )\n}\n\nexport default Dashboard\n"],"names":["HydrateAuthProvider","SetStepNav","RenderServerComponent","EntityType","groupNavItems","React","Fragment","processNavGroups","DefaultDashboard","Dashboard","initPageResult","params","searchParams","console","error","locale","permissions","req","i18n","payload","config","user","visibleEntities","collections","filter","collection","slug","read","includes","globals","global","globalData","length","lockedDocuments","find","depth","overrideAccess","pagination","where","globalSlug","exists","map","lockDurationDefault","lockDuration","lockDocuments","duration","lockedDoc","docs","doc","data","_isLocked","_lastEditedAt","updatedAt","_userEditing","value","navGroups","entityToGroup","type","entity","processedGroups","nav","clientProps","Component","admin","components","views","dashboard","Fallback","importMap","serverProps"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/Dashboard/index.tsx"],"sourcesContent":["// Re-export DefaultDashboard from Default\nexport { DefaultDashboard, type DashboardViewClientProps, type DashboardViewServerProps, type DashboardViewServerPropsOnly } from './Default'\nexport { default } from './Default'\n\n"],"names":["DefaultDashboard","default"],"mappings":"AAAA,0CAA0C;AAC1C,SAASA,gBAAgB,QAAyG,YAAW;AAC7I,SAASC,OAAO,QAAQ,YAAW"}
@@ -0,0 +1,3 @@
1
+ import type { GenerateViewMetadata } from '@payloadcms/next/views';
2
+ export declare const generateDashboardViewMetadata: GenerateViewMetadata;
3
+ //# sourceMappingURL=metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/Dashboard/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAIlE,eAAO,MAAM,6BAA6B,EAAE,oBAYxC,CAAA"}
@@ -0,0 +1,12 @@
1
+ import { generateMetadata } from '../lib/meta';
2
+ export const generateDashboardViewMetadata = async ({ config, i18n: { t } })=>generateMetadata({
3
+ serverURL: config.serverURL,
4
+ title: t('general:dashboard'),
5
+ ...config.admin.meta,
6
+ openGraph: {
7
+ title: t('general:dashboard'),
8
+ ...config.admin.meta?.openGraph || {}
9
+ }
10
+ });
11
+
12
+ //# sourceMappingURL=metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/Dashboard/metadata.ts"],"sourcesContent":["import type { GenerateViewMetadata } from '@payloadcms/next/views'\n\nimport { generateMetadata } from '../lib/meta'\n\nexport const generateDashboardViewMetadata: GenerateViewMetadata = async ({\n config,\n i18n: { t },\n}) =>\n generateMetadata({\n serverURL: config.serverURL,\n title: t('general:dashboard'),\n ...config.admin.meta,\n openGraph: {\n title: t('general:dashboard'),\n ...(config.admin.meta?.openGraph || {}),\n },\n })\n"],"names":["generateMetadata","generateDashboardViewMetadata","config","i18n","t","serverURL","title","admin","meta","openGraph"],"mappings":"AAEA,SAASA,gBAAgB,QAAQ,cAAa;AAE9C,OAAO,MAAMC,gCAAsD,OAAO,EACxEC,MAAM,EACNC,MAAM,EAAEC,CAAC,EAAE,EACZ,GACCJ,iBAAiB;QACfK,WAAWH,OAAOG,SAAS;QAC3BC,OAAOF,EAAE;QACT,GAAGF,OAAOK,KAAK,CAACC,IAAI;QACpBC,WAAW;YACTH,OAAOF,EAAE;YACT,GAAIF,OAAOK,KAAK,CAACC,IAAI,EAAEC,aAAa,CAAC,CAAC;QACxC;IACF,GAAE"}
@@ -0,0 +1,6 @@
1
+ import type { Metadata } from 'next';
2
+ import type { MetaConfig } from 'payload';
3
+ export declare const generateMetadata: (args: {
4
+ serverURL: string;
5
+ } & MetaConfig) => Promise<Metadata>;
6
+ //# sourceMappingURL=meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../src/lib/meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAEpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAYzC,eAAO,MAAM,gBAAgB,SACrB;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU,KACvC,OAAO,CAAC,QAAQ,CAqFlB,CAAA"}
@@ -0,0 +1,74 @@
1
+ import { payloadFaviconDark, payloadFaviconLight, staticOGImage } from '@payloadcms/ui/assets';
2
+ import * as qs from 'qs-esm';
3
+ const defaultOpenGraph = {
4
+ description: 'Payload is a headless CMS and application framework built with TypeScript, Node.js, and React.',
5
+ siteName: 'Payload App',
6
+ title: 'Payload App'
7
+ };
8
+ export const generateMetadata = async (args)=>{
9
+ const { defaultOGImageType, serverURL, titleSuffix, ...rest } = args;
10
+ /**
11
+ * @todo find a way to remove the type assertion here.
12
+ * It is a result of needing to `DeepCopy` the `MetaConfig` type from Payload.
13
+ * This is required for the `DeepRequired` from `Config` to `SanitizedConfig`.
14
+ */ const incomingMetadata = rest;
15
+ const icons = incomingMetadata.icons || [
16
+ {
17
+ type: 'image/png',
18
+ rel: 'icon',
19
+ sizes: '32x32',
20
+ url: typeof payloadFaviconDark === 'object' ? payloadFaviconDark?.src : payloadFaviconDark
21
+ },
22
+ {
23
+ type: 'image/png',
24
+ media: '(prefers-color-scheme: dark)',
25
+ rel: 'icon',
26
+ sizes: '32x32',
27
+ url: typeof payloadFaviconLight === 'object' ? payloadFaviconLight?.src : payloadFaviconLight
28
+ }
29
+ ];
30
+ const metaTitle = [
31
+ incomingMetadata.title,
32
+ titleSuffix
33
+ ].filter(Boolean).join(' ');
34
+ const ogTitle = `${typeof incomingMetadata.openGraph?.title === 'string' ? incomingMetadata.openGraph.title : incomingMetadata.title} ${titleSuffix}`;
35
+ const mergedOpenGraph = {
36
+ ...defaultOpenGraph || {},
37
+ ...defaultOGImageType === 'dynamic' ? {
38
+ images: [
39
+ {
40
+ alt: ogTitle,
41
+ height: 630,
42
+ url: `/api/og${qs.stringify({
43
+ description: incomingMetadata.openGraph?.description || defaultOpenGraph.description,
44
+ title: ogTitle
45
+ }, {
46
+ addQueryPrefix: true
47
+ })}`,
48
+ width: 1200
49
+ }
50
+ ]
51
+ } : {},
52
+ ...defaultOGImageType === 'static' ? {
53
+ images: [
54
+ {
55
+ alt: ogTitle,
56
+ height: 480,
57
+ url: typeof staticOGImage === 'object' ? staticOGImage?.src : staticOGImage,
58
+ width: 640
59
+ }
60
+ ]
61
+ } : {},
62
+ title: ogTitle,
63
+ ...incomingMetadata.openGraph || {}
64
+ };
65
+ return Promise.resolve({
66
+ ...incomingMetadata,
67
+ icons,
68
+ metadataBase: new URL(serverURL || process.env.PAYLOAD_PUBLIC_SERVER_URL || `http://localhost:${process.env.PORT || 3000}`),
69
+ openGraph: mergedOpenGraph,
70
+ title: metaTitle
71
+ });
72
+ };
73
+
74
+ //# sourceMappingURL=meta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/meta.ts"],"sourcesContent":["import type { Metadata } from 'next'\nimport type { Icon } from 'next/dist/lib/metadata/types/metadata-types.js'\nimport type { MetaConfig } from 'payload'\n\nimport { payloadFaviconDark, payloadFaviconLight, staticOGImage } from '@payloadcms/ui/assets'\nimport * as qs from 'qs-esm'\n\nconst defaultOpenGraph: Metadata['openGraph'] = {\n description:\n 'Payload is a headless CMS and application framework built with TypeScript, Node.js, and React.',\n siteName: 'Payload App',\n title: 'Payload App',\n}\n\nexport const generateMetadata = async (\n args: { serverURL: string } & MetaConfig,\n): Promise<Metadata> => {\n const { defaultOGImageType, serverURL, titleSuffix, ...rest } = args\n\n /**\n * @todo find a way to remove the type assertion here.\n * It is a result of needing to `DeepCopy` the `MetaConfig` type from Payload.\n * This is required for the `DeepRequired` from `Config` to `SanitizedConfig`.\n */\n const incomingMetadata = rest as unknown as Metadata;\n\n const icons: Metadata['icons'] =\n incomingMetadata.icons ||\n ([\n {\n type: 'image/png',\n rel: 'icon',\n sizes: '32x32',\n url: typeof payloadFaviconDark === 'object' ? payloadFaviconDark?.src : payloadFaviconDark,\n },\n {\n type: 'image/png',\n media: '(prefers-color-scheme: dark)',\n rel: 'icon',\n sizes: '32x32',\n url:\n typeof payloadFaviconLight === 'object' ? payloadFaviconLight?.src : payloadFaviconLight,\n },\n ] satisfies Array<Icon>)\n\n const metaTitle: Metadata['title'] = [incomingMetadata.title, titleSuffix]\n .filter(Boolean)\n .join(' ')\n\n const ogTitle = `${typeof incomingMetadata.openGraph?.title === 'string' ? incomingMetadata.openGraph.title : incomingMetadata.title} ${titleSuffix}`\n\n const mergedOpenGraph: Metadata['openGraph'] = {\n ...(defaultOpenGraph || {}),\n ...(defaultOGImageType === 'dynamic'\n ? {\n images: [\n {\n alt: ogTitle,\n height: 630,\n url: `/api/og${qs.stringify(\n {\n description:\n incomingMetadata.openGraph?.description || defaultOpenGraph.description,\n title: ogTitle,\n },\n {\n addQueryPrefix: true,\n },\n )}`,\n width: 1200,\n },\n ],\n }\n : {}),\n ...(defaultOGImageType === 'static'\n ? {\n images: [\n {\n alt: ogTitle,\n height: 480,\n url: typeof staticOGImage === 'object' ? staticOGImage?.src : staticOGImage,\n width: 640,\n },\n ],\n }\n : {}),\n title: ogTitle,\n ...(incomingMetadata.openGraph || {}),\n }\n\n return Promise.resolve({\n ...incomingMetadata,\n icons,\n metadataBase: new URL(\n serverURL ||\n process.env.PAYLOAD_PUBLIC_SERVER_URL ||\n `http://localhost:${process.env.PORT || 3000}`,\n ),\n openGraph: mergedOpenGraph,\n title: metaTitle,\n })\n}\n"],"names":["payloadFaviconDark","payloadFaviconLight","staticOGImage","qs","defaultOpenGraph","description","siteName","title","generateMetadata","args","defaultOGImageType","serverURL","titleSuffix","rest","incomingMetadata","icons","type","rel","sizes","url","src","media","metaTitle","filter","Boolean","join","ogTitle","openGraph","mergedOpenGraph","images","alt","height","stringify","addQueryPrefix","width","Promise","resolve","metadataBase","URL","process","env","PAYLOAD_PUBLIC_SERVER_URL","PORT"],"mappings":"AAIA,SAASA,kBAAkB,EAAEC,mBAAmB,EAAEC,aAAa,QAAQ,wBAAuB;AAC9F,YAAYC,QAAQ,SAAQ;AAE5B,MAAMC,mBAA0C;IAC9CC,aACE;IACFC,UAAU;IACVC,OAAO;AACT;AAEA,OAAO,MAAMC,mBAAmB,OAC9BC;IAEA,MAAM,EAAEC,kBAAkB,EAAEC,SAAS,EAAEC,WAAW,EAAE,GAAGC,MAAM,GAAGJ;IAEhE;;;;GAIC,GACD,MAAMK,mBAAmBD;IAEzB,MAAME,QACJD,iBAAiBC,KAAK,IACrB;QACC;YACEC,MAAM;YACNC,KAAK;YACLC,OAAO;YACPC,KAAK,OAAOnB,uBAAuB,WAAWA,oBAAoBoB,MAAMpB;QAC1E;QACA;YACEgB,MAAM;YACNK,OAAO;YACPJ,KAAK;YACLC,OAAO;YACPC,KACE,OAAOlB,wBAAwB,WAAWA,qBAAqBmB,MAAMnB;QACzE;KACD;IAEH,MAAMqB,YAA+B;QAACR,iBAAiBP,KAAK;QAAEK;KAAY,CACvEW,MAAM,CAACC,SACPC,IAAI,CAAC;IAER,MAAMC,UAAU,GAAG,OAAOZ,iBAAiBa,SAAS,EAAEpB,UAAU,WAAWO,iBAAiBa,SAAS,CAACpB,KAAK,GAAGO,iBAAiBP,KAAK,CAAC,CAAC,EAAEK,aAAa;IAErJ,MAAMgB,kBAAyC;QAC7C,GAAIxB,oBAAoB,CAAC,CAAC;QAC1B,GAAIM,uBAAuB,YACvB;YACEmB,QAAQ;gBACN;oBACEC,KAAKJ;oBACLK,QAAQ;oBACRZ,KAAK,CAAC,OAAO,EAAEhB,GAAG6B,SAAS,CACzB;wBACE3B,aACES,iBAAiBa,SAAS,EAAEtB,eAAeD,iBAAiBC,WAAW;wBACzEE,OAAOmB;oBACT,GACA;wBACEO,gBAAgB;oBAClB,IACC;oBACHC,OAAO;gBACT;aACD;QACH,IACA,CAAC,CAAC;QACN,GAAIxB,uBAAuB,WACvB;YACEmB,QAAQ;gBACN;oBACEC,KAAKJ;oBACLK,QAAQ;oBACRZ,KAAK,OAAOjB,kBAAkB,WAAWA,eAAekB,MAAMlB;oBAC9DgC,OAAO;gBACT;aACD;QACH,IACA,CAAC,CAAC;QACN3B,OAAOmB;QACP,GAAIZ,iBAAiBa,SAAS,IAAI,CAAC,CAAC;IACtC;IAEA,OAAOQ,QAAQC,OAAO,CAAC;QACrB,GAAGtB,gBAAgB;QACnBC;QACAsB,cAAc,IAAIC,IAChB3B,aACE4B,QAAQC,GAAG,CAACC,yBAAyB,IACrC,CAAC,iBAAiB,EAAEF,QAAQC,GAAG,CAACE,IAAI,IAAI,MAAM;QAElDf,WAAWC;QACXrB,OAAOe;IACT;AACF,EAAC"}
@@ -1,8 +1,8 @@
1
1
  import * as React from 'react';
2
2
  import { type VariantProps } from 'class-variance-authority';
3
3
  declare const buttonVariants: (props?: {
4
- variant?: "link" | "default" | "defaultHover" | "destructive" | "outline" | "secondary" | "ghost" | "icon";
5
- size?: "sm" | "lg" | "default" | "icon";
4
+ variant?: "link" | "icon" | "default" | "defaultHover" | "destructive" | "outline" | "secondary" | "ghost";
5
+ size?: "icon" | "default" | "lg" | "sm";
6
6
  } & import("class-variance-authority/types").ClassProp) => string;
7
7
  export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
8
8
  asChild?: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shefing/quickfilter",
3
- "version": "1.0.41",
3
+ "version": "1.0.43",
4
4
  "private": false,
5
5
  "bugs": "https://github.com/shefing/payload-tools/issues",
6
6
  "repository": "https://github.com/shefing/payload-tools",