@toptal/picasso-page 5.0.7 → 5.1.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 (37) hide show
  1. package/dist-package/src/PageHead/PageHead.d.ts +1 -0
  2. package/dist-package/src/PageHead/PageHead.d.ts.map +1 -1
  3. package/dist-package/src/PageHead/PageHead.js +1 -0
  4. package/dist-package/src/PageHead/PageHead.js.map +1 -1
  5. package/dist-package/src/PageHeadBase/PageHeadBase.d.ts +30 -0
  6. package/dist-package/src/PageHeadBase/PageHeadBase.d.ts.map +1 -0
  7. package/dist-package/src/PageHeadBase/PageHeadBase.js +38 -0
  8. package/dist-package/src/PageHeadBase/PageHeadBase.js.map +1 -0
  9. package/dist-package/src/PageHeadBase/index.d.ts +5 -0
  10. package/dist-package/src/PageHeadBase/index.d.ts.map +1 -0
  11. package/dist-package/src/PageHeadBase/index.js +2 -0
  12. package/dist-package/src/PageHeadBase/index.js.map +1 -0
  13. package/dist-package/src/index.d.ts +1 -0
  14. package/dist-package/src/index.d.ts.map +1 -1
  15. package/dist-package/src/index.js +1 -0
  16. package/dist-package/src/index.js.map +1 -1
  17. package/package.json +6 -5
  18. package/src/PageAutocomplete/__snapshots__/test.tsx.snap +1 -1
  19. package/src/PageHead/PageHead.tsx +1 -0
  20. package/src/PageHead/story/index.jsx +1 -1
  21. package/src/PageHeadBase/PageHeadBase.tsx +127 -0
  22. package/src/PageHeadBase/index.ts +6 -0
  23. package/src/PageHeadBase/story/Blank.example.tsx +6 -0
  24. package/src/PageHeadBase/story/Default.example.tsx +56 -0
  25. package/src/PageHeadBase/story/Loading.example.tsx +23 -0
  26. package/src/PageHeadBase/story/NoBorder.example.tsx +43 -0
  27. package/src/PageHeadBase/story/Notification.example.tsx +14 -0
  28. package/src/PageHeadBase/story/NotificationAndTabs.example.tsx +30 -0
  29. package/src/PageHeadBase/story/Steps.example.tsx +15 -0
  30. package/src/PageHeadBase/story/Title.example.tsx +6 -0
  31. package/src/PageHeadBase/story/TitleAndBreadcrumbs.example.tsx +30 -0
  32. package/src/PageHeadBase/story/TitleAndButton.example.tsx +11 -0
  33. package/src/PageHeadBase/story/TitleAndTabs.example.tsx +24 -0
  34. package/src/PageHeadBase/story/WithRightPadding.example.tsx +22 -0
  35. package/src/PageHeadBase/story/index.jsx +58 -0
  36. package/src/PageTopBar/__snapshots__/test.tsx.snap +3 -3
  37. package/src/index.ts +1 -0
@@ -9,6 +9,7 @@ export interface Props extends BaseProps {
9
9
  /** Whether it should hide bottom border */
10
10
  noBorder?: boolean;
11
11
  }
12
+ /** @deprecated Use `PageHeadBase` instead to conform to BASE. `PageHead` will be removed in a future major update of Picasso*/
12
13
  export declare const PageHead: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLDivElement>>;
13
14
  declare const _default: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLDivElement>> & {
14
15
  Title: ({ titleCase, children, className, ...rest }: TextLabelProps & {
@@ -1 +1 @@
1
- {"version":3,"file":"PageHead.d.ts","sourceRoot":"","sources":["../../../src/PageHead/PageHead.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAAqB,MAAM,OAAO,CAAA;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAKvE,MAAM,WAAW,KAAM,SAAQ,SAAS;IACtC,cAAc;IACd,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AA4ED,eAAO,MAAM,QAAQ,8EAoBnB,CAAA;;;;;;;;;;;;;;;;AASF,wBAKE"}
1
+ {"version":3,"file":"PageHead.d.ts","sourceRoot":"","sources":["../../../src/PageHead/PageHead.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAAqB,MAAM,OAAO,CAAA;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAKvE,MAAM,WAAW,KAAM,SAAQ,SAAS;IACtC,cAAc;IACd,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AA4ED,+HAA+H;AAC/H,eAAO,MAAM,QAAQ,8EAoBnB,CAAA;;;;;;;;;;;;;;;;AASF,wBAKE"}
@@ -38,6 +38,7 @@ const borderPseudoElement = [
38
38
  'after:bg-gray-200',
39
39
  'after:h-[1px]',
40
40
  ];
41
+ /** @deprecated Use `PageHeadBase` instead to conform to BASE. `PageHead` will be removed in a future major update of Picasso*/
41
42
  export const PageHead = forwardRef(function PageHead(props, ref) {
42
43
  const { children, noBorder, rightPadding, className } = props;
43
44
  const withBorder = !noBorder;
@@ -1 +1 @@
1
- {"version":3,"file":"PageHead.js","sourceRoot":"","sources":["../../../src/PageHead/PageHead.tsx"],"names":[],"mappings":";;;;;;;;;;;AACA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAWxD,MAAM,KAAK,GAAG,CAAC,EAKwC,EAAE,EAAE;QAL5C,EACb,SAAS,EACT,QAAQ,EACR,SAAS,OAE4C,EADlD,IAAI,cAJM,sCAKd,CADQ;IAEP,OAAO,CACL,oBAAC,UAAU,kBACT,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,OAAO,EACZ,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,IAChB,IAAI,GAEP,QAAQ,CACE,CACd,CAAA;AACH,CAAC,CAAA;AAED,MAAM,IAAI,GAAG,CAAC,EAIwB,EAAE,EAAE;QAJ5B,EACZ,QAAQ,EACR,SAAS,OAE2B,EADjC,IAAI,cAHK,yBAIb,CADQ;IAEP,OAAO,CACL,oBAAC,SAAS,kBAAC,SAAS,EAAE,SAAS,IAAM,IAAI,GACtC,QAAQ,CACC,CACb,CAAA;AACH,CAAC,CAAA;AAED,MAAM,IAAI,GAAG,CACX,KAAsE,EACtE,EAAE;IACF,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,KAAc,KAAK,EAAd,IAAI,UAAK,KAAK,EAAzD,4CAAiD,CAAQ,CAAA;IAE/D,OAAO,CACL,oBAAC,SAAS,kBACR,IAAI,QACJ,cAAc,EAAC,eAAe,EAC9B,UAAU,EAAC,QAAQ,EACnB,SAAS,EAAE,OAAO,CAChB,eAAe,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,aAAa,EACxD,SAAS,CACV,IACG,IAAI,GAEP,QAAQ,CACC,CACb,CAAA;AACH,CAAC,CAAA;AAED,MAAM,OAAO,GAAG,CAAC,EAIqB,EAAE,EAAE;QAJzB,EACf,QAAQ,EACR,SAAS,OAE2B,EADjC,IAAI,cAHQ,yBAIhB,CADQ;IAEP,OAAO,CACL,oBAAC,SAAS,kBAAC,IAAI,QAAC,UAAU,EAAC,QAAQ,EAAC,SAAS,EAAE,SAAS,IAAM,IAAI,GAC/D,QAAQ,CACC,CACb,CAAA;AACH,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG;IAC1B,oBAAoB;IACpB,gBAAgB;IAChB,iBAAiB;IACjB,gBAAgB;IAChB,WAAW;IACX,mBAAmB;IACnB,eAAe;CAChB,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAwB,SAAS,QAAQ,CACzE,KAAK,EACL,GAAG;IAEH,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,KAAK,CAAA;IAC7D,MAAM,UAAU,GAAG,CAAC,QAAQ,CAAA;IAE5B,OAAO,CACL,oBAAC,SAAS,IACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,OAAO,CAChB,UAAU,EACV,UAAU,IAAI,mBAAmB,EACjC,YAAY,IAAI,MAAM,EACtB,SAAS,CACV,IAEA,QAAQ,CACC,CACb,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,YAAY,GAAG;IACtB,YAAY,EAAE,KAAK;IACnB,QAAQ,EAAE,KAAK;CAChB,CAAA;AAED,QAAQ,CAAC,WAAW,GAAG,UAAU,CAAA;AAEjC,eAAe,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;IACrC,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,OAAO;CACR,CAAC,CAAA"}
1
+ {"version":3,"file":"PageHead.js","sourceRoot":"","sources":["../../../src/PageHead/PageHead.tsx"],"names":[],"mappings":";;;;;;;;;;;AACA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAWxD,MAAM,KAAK,GAAG,CAAC,EAKwC,EAAE,EAAE;QAL5C,EACb,SAAS,EACT,QAAQ,EACR,SAAS,OAE4C,EADlD,IAAI,cAJM,sCAKd,CADQ;IAEP,OAAO,CACL,oBAAC,UAAU,kBACT,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,OAAO,EACZ,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,IAChB,IAAI,GAEP,QAAQ,CACE,CACd,CAAA;AACH,CAAC,CAAA;AAED,MAAM,IAAI,GAAG,CAAC,EAIwB,EAAE,EAAE;QAJ5B,EACZ,QAAQ,EACR,SAAS,OAE2B,EADjC,IAAI,cAHK,yBAIb,CADQ;IAEP,OAAO,CACL,oBAAC,SAAS,kBAAC,SAAS,EAAE,SAAS,IAAM,IAAI,GACtC,QAAQ,CACC,CACb,CAAA;AACH,CAAC,CAAA;AAED,MAAM,IAAI,GAAG,CACX,KAAsE,EACtE,EAAE;IACF,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,KAAc,KAAK,EAAd,IAAI,UAAK,KAAK,EAAzD,4CAAiD,CAAQ,CAAA;IAE/D,OAAO,CACL,oBAAC,SAAS,kBACR,IAAI,QACJ,cAAc,EAAC,eAAe,EAC9B,UAAU,EAAC,QAAQ,EACnB,SAAS,EAAE,OAAO,CAChB,eAAe,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,aAAa,EACxD,SAAS,CACV,IACG,IAAI,GAEP,QAAQ,CACC,CACb,CAAA;AACH,CAAC,CAAA;AAED,MAAM,OAAO,GAAG,CAAC,EAIqB,EAAE,EAAE;QAJzB,EACf,QAAQ,EACR,SAAS,OAE2B,EADjC,IAAI,cAHQ,yBAIhB,CADQ;IAEP,OAAO,CACL,oBAAC,SAAS,kBAAC,IAAI,QAAC,UAAU,EAAC,QAAQ,EAAC,SAAS,EAAE,SAAS,IAAM,IAAI,GAC/D,QAAQ,CACC,CACb,CAAA;AACH,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG;IAC1B,oBAAoB;IACpB,gBAAgB;IAChB,iBAAiB;IACjB,gBAAgB;IAChB,WAAW;IACX,mBAAmB;IACnB,eAAe;CAChB,CAAA;AAED,+HAA+H;AAC/H,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAwB,SAAS,QAAQ,CACzE,KAAK,EACL,GAAG;IAEH,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,KAAK,CAAA;IAC7D,MAAM,UAAU,GAAG,CAAC,QAAQ,CAAA;IAE5B,OAAO,CACL,oBAAC,SAAS,IACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,OAAO,CAChB,UAAU,EACV,UAAU,IAAI,mBAAmB,EACjC,YAAY,IAAI,MAAM,EACtB,SAAS,CACV,IAEA,QAAQ,CACC,CACb,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,YAAY,GAAG;IACtB,YAAY,EAAE,KAAK;IACnB,QAAQ,EAAE,KAAK;CAChB,CAAA;AAED,QAAQ,CAAC,WAAW,GAAG,UAAU,CAAA;AAEjC,eAAe,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;IACrC,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,OAAO;CACR,CAAC,CAAA"}
@@ -0,0 +1,30 @@
1
+ import type { ReactNode } from 'react';
2
+ import React from 'react';
3
+ import type { BaseProps, TextLabelProps } from '@toptal/picasso-shared';
4
+ export interface Props extends BaseProps, TextLabelProps {
5
+ /**
6
+ * Buttons or other actions to be rendered on the right side of the title
7
+ */
8
+ actions?: ReactNode;
9
+ /**
10
+ * Breadcrumbs component to be rendered above the title
11
+ */
12
+ breadcrumbs?: ReactNode;
13
+ /** Whether it should have right padding */
14
+ rightPadding?: boolean;
15
+ /** Whether it should hide bottom border */
16
+ noBorder?: boolean;
17
+ /** Render components next to the title. */
18
+ titleAdornments?: ReactNode[];
19
+ /** Title */
20
+ title?: string;
21
+ /** Shows the loading skeleton when title is loading */
22
+ titleLoading?: boolean;
23
+ /** Subtitle */
24
+ subtitle?: string;
25
+ /** Shows the loading skeleton when subtitle is loading */
26
+ subtitleLoading?: boolean;
27
+ }
28
+ export declare const PageHeadBase: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLDivElement>>;
29
+ export default PageHeadBase;
30
+ //# sourceMappingURL=PageHeadBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageHeadBase.d.ts","sourceRoot":"","sources":["../../../src/PageHeadBase/PageHeadBase.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAAqB,MAAM,OAAO,CAAA;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAKvE,MAAM,WAAW,KAAM,SAAQ,SAAS,EAAE,cAAc;IACtD;;OAEG;IACH,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,2CAA2C;IAC3C,eAAe,CAAC,EAAE,SAAS,EAAE,CAAA;IAC7B,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,uDAAuD;IACvD,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,eAAe;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,0DAA0D;IAC1D,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAYD,eAAO,MAAM,YAAY,8EAgFxB,CAAA;AAID,eAAe,YAAY,CAAA"}
@@ -0,0 +1,38 @@
1
+ import React, { forwardRef } from 'react';
2
+ import { Typography } from '@toptal/picasso-typography';
3
+ import { twMerge } from '@toptal/picasso-tailwind-merge';
4
+ import { SkeletonLoader } from '@toptal/picasso-skeleton-loader';
5
+ const borderPseudoElement = [
6
+ 'after:content-[""]',
7
+ 'after:absolute',
8
+ 'after:inset-x-0',
9
+ 'after:bottom-0',
10
+ 'after:z-0',
11
+ 'after:bg-gray-200',
12
+ 'after:h-[1px]',
13
+ ];
14
+ export const PageHeadBase = forwardRef(({ breadcrumbs, title, titleAdornments, titleCase, subtitle, actions, noBorder = false, rightPadding = false, titleLoading = false, subtitleLoading = false, className, }, ref) => {
15
+ const withBorder = !noBorder;
16
+ const getLoadingState = (loading) => {
17
+ if (loading) {
18
+ return React.createElement(SkeletonLoader.Header, null);
19
+ }
20
+ return true;
21
+ };
22
+ return (React.createElement("div", { className: twMerge('relative flex flex-col gap-6', ['py-3', rightPadding && 'pr-8'], withBorder && borderPseudoElement, className), ref: ref },
23
+ React.createElement("div", { className: 'flex flex-col gap-4' },
24
+ breadcrumbs,
25
+ React.createElement("div", { className: 'flex justify-between items-start gap-6 flex-wrap md:flex-nowrap' },
26
+ React.createElement("div", { className: 'flex flex-col gap-1 grow' },
27
+ title && (React.createElement("div", { className: 'flex items-center gap-2' },
28
+ titleLoading ? (getLoadingState(titleLoading)) : (React.createElement(Typography, { variant: 'heading', size: 'large', titleCase: titleCase, className: className }, title)),
29
+ titleAdornments)),
30
+ subtitleLoading
31
+ ? getLoadingState(subtitleLoading)
32
+ : subtitle && (React.createElement("div", null,
33
+ React.createElement(Typography, { size: 'small' }, subtitle)))),
34
+ actions && (React.createElement("div", { className: 'flex items-center min-h-8 grow-0' }, actions))))));
35
+ });
36
+ PageHeadBase.displayName = 'PageHeadBase';
37
+ export default PageHeadBase;
38
+ //# sourceMappingURL=PageHeadBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageHeadBase.js","sourceRoot":"","sources":["../../../src/PageHeadBase/PageHeadBase.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AA2BhE,MAAM,mBAAmB,GAAG;IAC1B,oBAAoB;IACpB,gBAAgB;IAChB,iBAAiB;IACjB,gBAAgB;IAChB,WAAW;IACX,mBAAmB;IACnB,eAAe;CAChB,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CACpC,CACE,EACE,WAAW,EACX,KAAK,EACL,eAAe,EACf,SAAS,EACT,QAAQ,EACR,OAAO,EACP,QAAQ,GAAG,KAAK,EAChB,YAAY,GAAG,KAAK,EACpB,YAAY,GAAG,KAAK,EACpB,eAAe,GAAG,KAAK,EACvB,SAAS,GACV,EACD,GAAG,EACH,EAAE;IACF,MAAM,UAAU,GAAG,CAAC,QAAQ,CAAA;IAE5B,MAAM,eAAe,GAAG,CAAC,OAAiB,EAAE,EAAE;QAC5C,IAAI,OAAO,EAAE;YACX,OAAO,oBAAC,cAAc,CAAC,MAAM,OAAG,CAAA;SACjC;QAED,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;IAED,OAAO,CACL,6BACE,SAAS,EAAE,OAAO,CAChB,8BAA8B,EAC9B,CAAC,MAAM,EAAE,YAAY,IAAI,MAAM,CAAC,EAChC,UAAU,IAAI,mBAAmB,EACjC,SAAS,CACV,EACD,GAAG,EAAE,GAAG;QAER,6BAAK,SAAS,EAAC,qBAAqB;YACjC,WAAW;YAGZ,6BAAK,SAAS,EAAC,iEAAiE;gBAE9E,6BAAK,SAAS,EAAC,0BAA0B;oBAEtC,KAAK,IAAI,CACR,6BAAK,SAAS,EAAC,yBAAyB;wBACrC,YAAY,CAAC,CAAC,CAAC,CACd,eAAe,CAAC,YAAY,CAAC,CAC9B,CAAC,CAAC,CAAC,CACF,oBAAC,UAAU,IACT,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,OAAO,EACZ,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,IAEnB,KAAK,CACK,CACd;wBACA,eAAe,CACZ,CACP;oBACA,eAAe;wBACd,CAAC,CAAC,eAAe,CAAC,eAAe,CAAC;wBAClC,CAAC,CAAC,QAAQ,IAAI,CACV;4BACE,oBAAC,UAAU,IAAC,IAAI,EAAC,OAAO,IAAE,QAAQ,CAAc,CAC5C,CACP,CACD;gBAGL,OAAO,IAAI,CACV,6BAAK,SAAS,EAAC,kCAAkC,IAAE,OAAO,CAAO,CAClE,CACG,CACF,CACF,CACP,CAAA;AACH,CAAC,CACF,CAAA;AAED,YAAY,CAAC,WAAW,GAAG,cAAc,CAAA;AAEzC,eAAe,YAAY,CAAA"}
@@ -0,0 +1,5 @@
1
+ import type { OmitInternalProps } from '@toptal/picasso-shared';
2
+ import type { Props } from './PageHeadBase';
3
+ export { default as PageHeadBase } from './PageHeadBase';
4
+ export declare type PageHeadBaseProps = OmitInternalProps<Props>;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/PageHeadBase/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAE3C,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACxD,oBAAY,iBAAiB,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { default as PageHeadBase } from './PageHeadBase';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/PageHeadBase/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA"}
@@ -18,4 +18,5 @@ export * from './TopBarItem';
18
18
  export * from './TopBarMenu';
19
19
  export * from './PageHamburger';
20
20
  export * from './PageHead';
21
+ export * from './PageHeadBase';
21
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA;AACpC,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA;AACpC,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA"}
@@ -18,4 +18,5 @@ export * from './TopBarItem';
18
18
  export * from './TopBarMenu';
19
19
  export * from './PageHamburger';
20
20
  export * from './PageHead';
21
+ export * from './PageHeadBase';
21
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA;AACpC,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA;AACpC,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toptal/picasso-page",
3
- "version": "5.0.7",
3
+ "version": "5.1.0",
4
4
  "description": "Toptal UI components library - Page",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -22,17 +22,17 @@
22
22
  },
23
23
  "homepage": "https://github.com/toptal/picasso/tree/master/packages/picasso#readme",
24
24
  "dependencies": {
25
- "@toptal/picasso-accordion": "3.0.4",
26
- "@toptal/picasso-autocomplete": "5.0.5",
25
+ "@toptal/picasso-accordion": "3.0.5",
26
+ "@toptal/picasso-autocomplete": "5.0.6",
27
27
  "@toptal/picasso-avatar": "6.1.2",
28
28
  "@toptal/picasso-badge": "3.0.1",
29
- "@toptal/picasso-button": "4.0.5",
29
+ "@toptal/picasso-button": "4.0.6",
30
30
  "@toptal/picasso-container": "3.1.0",
31
31
  "@toptal/picasso-dropdown": "4.1.1",
32
32
  "@toptal/picasso-icons": "1.6.1",
33
33
  "@toptal/picasso-logo": "2.0.1",
34
34
  "@toptal/picasso-menu": "3.0.5",
35
- "@toptal/picasso-notification": "4.0.5",
35
+ "@toptal/picasso-notification": "4.0.6",
36
36
  "@toptal/picasso-shared": "15.0.0",
37
37
  "@toptal/picasso-tag": "4.0.1",
38
38
  "@toptal/picasso-tooltip": "2.0.0",
@@ -51,6 +51,7 @@
51
51
  "@toptal/picasso-provider": "*",
52
52
  "react-dom": "^18.2.0",
53
53
  "@toptal/picasso-tailwind": ">=2.7",
54
+ "@toptal/picasso-skeleton-loader": "^1.0.37",
54
55
  "react": ">=16.12.0 < 19.0.0"
55
56
  },
56
57
  "devDependencies": {
@@ -33,7 +33,7 @@ exports[`PageAutocomplete renders 1`] = `
33
33
  >
34
34
  <button
35
35
  aria-disabled="false"
36
- class="base-Button text-lg inline-flex items-center justify-center select-none appearance-none m-0 relative normal-case align-middle transition-colors duration-350 ease-out shrink-0 outline-none [&+&]:ml-4 cursor-pointer rounded-full p-0 w-[1.5em] h-[1.5em] border-none text-graphite hover:bg-gray active:bg-gray focus-visible:shadow-[0_0_0_3px_rgba(32,78,207,0.48)] bg-transparent"
36
+ class="base-Button text-lg inline-flex items-center justify-center select-none appearance-none m-0 relative normal-case align-middle transition-colors duration-350 ease-out shrink-0 outline-none [[data-component-type="button"]+&]:ml cursor-pointer rounded-full p-0 w-[1.5em] h-[1.5em] border-none text-graphite hover:bg-gray active:bg-gray focus-visible:shadow-[0_0_0_3px_rgba(32,78,207,0.48)] bg-transparent"
37
37
  data-component-type="button"
38
38
  role="reset"
39
39
  tabindex="-1"
@@ -88,6 +88,7 @@ const borderPseudoElement = [
88
88
  'after:h-[1px]',
89
89
  ]
90
90
 
91
+ /** @deprecated Use `PageHeadBase` instead to conform to BASE. `PageHead` will be removed in a future major update of Picasso*/
91
92
  export const PageHead = forwardRef<HTMLDivElement, Props>(function PageHead(
92
93
  props,
93
94
  ref
@@ -24,6 +24,7 @@ page
24
24
  'base/Page'
25
25
  )
26
26
  .addExample('PageHead/story/Title.example.tsx', 'Title', 'base/Page')
27
+ .addExample('PageHead/story/Steps.example.tsx', 'Steps', 'base/Page')
27
28
  .addExample(
28
29
  'PageHead/story/TitleAndButton.example.tsx',
29
30
  'Title and button',
@@ -39,7 +40,6 @@ page
39
40
  'Title and breadcrumbs',
40
41
  'base/Page'
41
42
  )
42
- .addExample('PageHead/story/Steps.example.tsx', 'Steps', 'base/Page')
43
43
  .addExample(
44
44
  'PageHead/story/WithRightPadding.example.tsx',
45
45
  'With right padding of the container',
@@ -0,0 +1,127 @@
1
+ import type { ReactNode } from 'react'
2
+ import React, { forwardRef } from 'react'
3
+ import type { BaseProps, TextLabelProps } from '@toptal/picasso-shared'
4
+ import { Typography } from '@toptal/picasso-typography'
5
+ import { twMerge } from '@toptal/picasso-tailwind-merge'
6
+ import { SkeletonLoader } from '@toptal/picasso-skeleton-loader'
7
+
8
+ export interface Props extends BaseProps, TextLabelProps {
9
+ /**
10
+ * Buttons or other actions to be rendered on the right side of the title
11
+ */
12
+ actions?: ReactNode
13
+ /**
14
+ * Breadcrumbs component to be rendered above the title
15
+ */
16
+ breadcrumbs?: ReactNode
17
+ /** Whether it should have right padding */
18
+ rightPadding?: boolean
19
+ /** Whether it should hide bottom border */
20
+ noBorder?: boolean
21
+ /** Render components next to the title. */
22
+ titleAdornments?: ReactNode[]
23
+ /** Title */
24
+ title?: string
25
+ /** Shows the loading skeleton when title is loading */
26
+ titleLoading?: boolean
27
+ /** Subtitle */
28
+ subtitle?: string
29
+ /** Shows the loading skeleton when subtitle is loading */
30
+ subtitleLoading?: boolean
31
+ }
32
+
33
+ const borderPseudoElement = [
34
+ 'after:content-[""]',
35
+ 'after:absolute',
36
+ 'after:inset-x-0',
37
+ 'after:bottom-0',
38
+ 'after:z-0',
39
+ 'after:bg-gray-200',
40
+ 'after:h-[1px]',
41
+ ]
42
+
43
+ export const PageHeadBase = forwardRef<HTMLDivElement, Props>(
44
+ (
45
+ {
46
+ breadcrumbs,
47
+ title,
48
+ titleAdornments,
49
+ titleCase,
50
+ subtitle,
51
+ actions,
52
+ noBorder = false,
53
+ rightPadding = false,
54
+ titleLoading = false,
55
+ subtitleLoading = false,
56
+ className,
57
+ },
58
+ ref
59
+ ) => {
60
+ const withBorder = !noBorder
61
+
62
+ const getLoadingState = (loading?: boolean) => {
63
+ if (loading) {
64
+ return <SkeletonLoader.Header />
65
+ }
66
+
67
+ return true
68
+ }
69
+
70
+ return (
71
+ <div
72
+ className={twMerge(
73
+ 'relative flex flex-col gap-6',
74
+ ['py-3', rightPadding && 'pr-8'],
75
+ withBorder && borderPseudoElement,
76
+ className
77
+ )}
78
+ ref={ref}
79
+ >
80
+ <div className='flex flex-col gap-4'>
81
+ {breadcrumbs}
82
+
83
+ {/* main */}
84
+ <div className='flex justify-between items-start gap-6 flex-wrap md:flex-nowrap'>
85
+ {/* Title and Subtitle container */}
86
+ <div className='flex flex-col gap-1 grow'>
87
+ {/* Title container */}
88
+ {title && (
89
+ <div className='flex items-center gap-2'>
90
+ {titleLoading ? (
91
+ getLoadingState(titleLoading)
92
+ ) : (
93
+ <Typography
94
+ variant='heading'
95
+ size='large'
96
+ titleCase={titleCase}
97
+ className={className}
98
+ >
99
+ {title}
100
+ </Typography>
101
+ )}
102
+ {titleAdornments}
103
+ </div>
104
+ )}
105
+ {subtitleLoading
106
+ ? getLoadingState(subtitleLoading)
107
+ : subtitle && (
108
+ <div>
109
+ <Typography size='small'>{subtitle}</Typography>
110
+ </div>
111
+ )}
112
+ </div>
113
+
114
+ {/* Actions container */}
115
+ {actions && (
116
+ <div className='flex items-center min-h-8 grow-0'>{actions}</div>
117
+ )}
118
+ </div>
119
+ </div>
120
+ </div>
121
+ )
122
+ }
123
+ )
124
+
125
+ PageHeadBase.displayName = 'PageHeadBase'
126
+
127
+ export default PageHeadBase
@@ -0,0 +1,6 @@
1
+ import type { OmitInternalProps } from '@toptal/picasso-shared'
2
+
3
+ import type { Props } from './PageHeadBase'
4
+
5
+ export { default as PageHeadBase } from './PageHeadBase'
6
+ export type PageHeadBaseProps = OmitInternalProps<Props>
@@ -0,0 +1,6 @@
1
+ import React from 'react'
2
+ import { PageHeadBase } from '@toptal/picasso'
3
+
4
+ const BlankExample = () => <PageHeadBase />
5
+
6
+ export default BlankExample
@@ -0,0 +1,56 @@
1
+ import React from 'react'
2
+ import { Button, Link, PageHeadBase, Breadcrumbs, Badge } from '@toptal/picasso'
3
+ import { TagRectangular } from '@toptal/picasso-tag'
4
+
5
+ const DefaultExample = () => {
6
+ const breadcrumbs = (
7
+ <Breadcrumbs>
8
+ <Breadcrumbs.Item
9
+ as={Link}
10
+ variant='action'
11
+ href='https://en.wikipedia.org/wiki/United_States'
12
+ >
13
+ USA
14
+ </Breadcrumbs.Item>
15
+ <Breadcrumbs.Item
16
+ as={Link}
17
+ variant='action'
18
+ href='https://en.wikipedia.org/wiki/Software'
19
+ >
20
+ Software
21
+ </Breadcrumbs.Item>
22
+ <Breadcrumbs.Item as={Link} variant='action' href='https://toptal.com'>
23
+ Toptal
24
+ </Breadcrumbs.Item>
25
+ </Breadcrumbs>
26
+ )
27
+
28
+ const actions = (
29
+ <>
30
+ <Button size='small' variant='secondary'>
31
+ Button
32
+ </Button>
33
+ <Button.Split size='small' variant='secondary'>
34
+ Button
35
+ </Button.Split>
36
+ <Button size='small' variant='secondary'>
37
+ Button
38
+ </Button>
39
+ </>
40
+ )
41
+
42
+ return (
43
+ <PageHeadBase
44
+ actions={actions}
45
+ breadcrumbs={breadcrumbs}
46
+ subtitle='Lorem ipsum dolor sit amet, consectetur adipiscing elit.'
47
+ title='Heading Large'
48
+ titleAdornments={[
49
+ <Badge variant='white' content={1} />,
50
+ <TagRectangular variant='green'>Label</TagRectangular>,
51
+ ]}
52
+ />
53
+ )
54
+ }
55
+
56
+ export default DefaultExample
@@ -0,0 +1,23 @@
1
+ import React from 'react'
2
+ import { Badge, PageHeadBase, SkeletonLoader } from '@toptal/picasso'
3
+ import { TagRectangular } from '@toptal/picasso-tag'
4
+
5
+ const isLoading = true
6
+
7
+ const Loading = () => (
8
+ <PageHeadBase
9
+ title='Heading large'
10
+ subtitle='Description'
11
+ subtitleLoading={isLoading}
12
+ titleAdornments={[
13
+ isLoading ? (
14
+ <SkeletonLoader.Typography style={{ width: '20px' }} />
15
+ ) : (
16
+ <Badge variant='white' content={1} />
17
+ ),
18
+ <TagRectangular variant='green'>Label</TagRectangular>,
19
+ ]}
20
+ />
21
+ )
22
+
23
+ export default Loading
@@ -0,0 +1,43 @@
1
+ import React from 'react'
2
+ import {
3
+ Page,
4
+ Section,
5
+ PageHeadBase,
6
+ Typography,
7
+ Container,
8
+ Button,
9
+ } from '@toptal/picasso'
10
+ import { SPACING_4, SPACING_8 } from '@toptal/picasso-utils'
11
+
12
+ const BlankExample = () => (
13
+ <div>
14
+ <Page>
15
+ <Page.Content>
16
+ <Container>
17
+ <Page.Article>
18
+ <PageHeadBase noBorder title='Overview' />
19
+ </Page.Article>
20
+ <Page.Article style={{ marginTop: '1rem' }}>
21
+ <Section variant='bordered'>
22
+ <Container bottom={SPACING_4}>
23
+ <Typography variant='heading' size='large'>
24
+ Next step: Speak with ToptTal representative
25
+ </Typography>
26
+ </Container>
27
+ <Container bottom={SPACING_8}>
28
+ <Typography>
29
+ On this call, we will discuss the scope of the project and go
30
+ over how Toptal works to se if we can be a good fir to for
31
+ your project. This only takes approximately 15 minutes.
32
+ </Typography>
33
+ </Container>
34
+ <Button onClick={() => {}}>Request a Call</Button>
35
+ </Section>
36
+ </Page.Article>
37
+ </Container>
38
+ </Page.Content>
39
+ </Page>
40
+ </div>
41
+ )
42
+
43
+ export default BlankExample
@@ -0,0 +1,14 @@
1
+ import React from 'react'
2
+ import { Notification, PageHeadBase } from '@toptal/picasso'
3
+
4
+ const NotificationExample = () => (
5
+ <>
6
+ <PageHeadBase title='Heading Large' noBorder />
7
+
8
+ <Notification>
9
+ Lorem ipsum dolor sit amet consectetur adipisicing elit.
10
+ </Notification>
11
+ </>
12
+ )
13
+
14
+ export default NotificationExample
@@ -0,0 +1,30 @@
1
+ import React from 'react'
2
+ import { Notification, PageHeadBase, Tabs } from '@toptal/picasso'
3
+
4
+ const NotificationAndTabsExample = () => {
5
+ const [value, setValue] = React.useState(0)
6
+
7
+ const handleChange = (_: React.ChangeEvent<{}> | null, newValue: number) => {
8
+ setValue(newValue)
9
+ }
10
+
11
+ return (
12
+ <>
13
+ <PageHeadBase title='Heading Large' noBorder />
14
+
15
+ <div className='mb-3'>
16
+ <Notification>
17
+ Lorem ipsum dolor sit amet consectetur adipisicing elit.
18
+ </Notification>
19
+ </div>
20
+
21
+ <Tabs value={value} onChange={handleChange}>
22
+ <Tabs.Tab label='Label' />
23
+ <Tabs.Tab label='Label' />
24
+ <Tabs.Tab label='Label' />
25
+ </Tabs>
26
+ </>
27
+ )
28
+ }
29
+
30
+ export default NotificationAndTabsExample
@@ -0,0 +1,15 @@
1
+ import React from 'react'
2
+ import { PageHeadBase, Stepper } from '@toptal/picasso'
3
+
4
+ const steps = (
5
+ <Stepper
6
+ steps={['Availability', 'Details', 'Feedback', 'Position', 'Skills']}
7
+ overflowEllipsis
8
+ />
9
+ )
10
+
11
+ const StepsExample = () => (
12
+ <PageHeadBase title='Heading Large' noBorder actions={steps} />
13
+ )
14
+
15
+ export default StepsExample
@@ -0,0 +1,6 @@
1
+ import React from 'react'
2
+ import { PageHeadBase } from '@toptal/picasso'
3
+
4
+ const TitleExample = () => <PageHeadBase title='Heading Large' />
5
+
6
+ export default TitleExample
@@ -0,0 +1,30 @@
1
+ import React from 'react'
2
+ import { Link, PageHeadBase, Breadcrumbs } from '@toptal/picasso'
3
+
4
+ const breadcrumbs = (
5
+ <Breadcrumbs>
6
+ <Breadcrumbs.Item
7
+ as={Link}
8
+ variant='action'
9
+ href='https://en.wikipedia.org/wiki/United_States'
10
+ >
11
+ USA
12
+ </Breadcrumbs.Item>
13
+ <Breadcrumbs.Item
14
+ as={Link}
15
+ variant='action'
16
+ href='https://en.wikipedia.org/wiki/Software'
17
+ >
18
+ Software
19
+ </Breadcrumbs.Item>
20
+ <Breadcrumbs.Item as={Link} variant='action' href='https://toptal.com'>
21
+ Toptal
22
+ </Breadcrumbs.Item>
23
+ </Breadcrumbs>
24
+ )
25
+
26
+ const TitleAndBreadcrumbsExample = () => (
27
+ <PageHeadBase breadcrumbs={breadcrumbs} title='Heading Large' />
28
+ )
29
+
30
+ export default TitleAndBreadcrumbsExample
@@ -0,0 +1,11 @@
1
+ import React from 'react'
2
+ import { PageHeadBase, Button, Settings16 } from '@toptal/picasso'
3
+
4
+ const TitleAndButtonExample = () => (
5
+ <PageHeadBase
6
+ title='Heading Large'
7
+ actions={<Button.Circular variant='flat' icon={<Settings16 />} />}
8
+ />
9
+ )
10
+
11
+ export default TitleAndButtonExample
@@ -0,0 +1,24 @@
1
+ import React from 'react'
2
+ import { Tabs, PageHeadBase } from '@toptal/picasso'
3
+
4
+ const TitleAndTabsExample = () => {
5
+ const [value, setValue] = React.useState(0)
6
+
7
+ const handleChange = (_: React.ChangeEvent<{}> | null, newValue: number) => {
8
+ setValue(newValue)
9
+ }
10
+
11
+ return (
12
+ <>
13
+ <PageHeadBase title='Heading Large' noBorder />
14
+
15
+ <Tabs value={value} onChange={handleChange}>
16
+ <Tabs.Tab label='Label' />
17
+ <Tabs.Tab label='Label' />
18
+ <Tabs.Tab label='Label' />
19
+ </Tabs>
20
+ </>
21
+ )
22
+ }
23
+
24
+ export default TitleAndTabsExample
@@ -0,0 +1,22 @@
1
+ import React from 'react'
2
+ import { Button, PageHeadBase } from '@toptal/picasso'
3
+
4
+ const actions = (
5
+ <>
6
+ <Button size='small' variant='secondary'>
7
+ Button
8
+ </Button>
9
+ <Button size='small' variant='negative'>
10
+ Reject
11
+ </Button>
12
+ <Button size='small' variant='positive'>
13
+ Accept
14
+ </Button>
15
+ </>
16
+ )
17
+
18
+ const WithRightPaddingExample = () => (
19
+ <PageHeadBase rightPadding title='Heading Large' actions={actions} />
20
+ )
21
+
22
+ export default WithRightPaddingExample
@@ -0,0 +1,58 @@
1
+ import { PageHeadBase } from '../PageHeadBase'
2
+ import PicassoBook from '~/.storybook/components/PicassoBook'
3
+
4
+ const page = PicassoBook.section('Components').createPage(
5
+ 'PageHeadBase',
6
+ `${PicassoBook.createSourceLink(__filename)}`
7
+ )
8
+
9
+ page
10
+ .createTabChapter('Props')
11
+ .addComponentDocs({ component: PageHeadBase, name: 'PageHeadBase' })
12
+
13
+ page
14
+ .createChapter()
15
+ .addExample('PageHeadBase/story/Default.example.tsx', 'Default', 'base/Page')
16
+ .addExample('PageHeadBase/story/Blank.example.tsx', 'Blank', 'base/Page')
17
+ .addExample(
18
+ 'PageHeadBase/story/NoBorder.example.tsx',
19
+ {
20
+ title: 'No Border',
21
+ description:
22
+ 'No border should be used only, when PageHead is followed by bordered section',
23
+ },
24
+ 'base/Page'
25
+ )
26
+ .addExample('PageHeadBase/story/Title.example.tsx', 'Title', 'base/Page')
27
+ .addExample('PageHeadBase/story/Steps.example.tsx', 'Steps', 'base/Page')
28
+ .addExample('PageHeadBase/story/Loading.example.tsx', 'Loading', 'base/Page')
29
+ .addExample(
30
+ 'PageHeadBase/story/TitleAndButton.example.tsx',
31
+ 'Title and button',
32
+ 'base/Page'
33
+ )
34
+ .addExample(
35
+ 'PageHeadBase/story/TitleAndTabs.example.tsx',
36
+ 'Title and tabs',
37
+ 'base/Page'
38
+ )
39
+ .addExample(
40
+ 'PageHeadBase/story/TitleAndBreadcrumbs.example.tsx',
41
+ 'Title and breadcrumbs',
42
+ 'base/Page'
43
+ )
44
+ .addExample(
45
+ 'PageHeadBase/story/Notification.example.tsx',
46
+ 'Notification',
47
+ 'base/Page'
48
+ )
49
+ .addExample(
50
+ 'PageHeadBase/story/NotificationAndTabs.example.tsx',
51
+ 'NotificationAndTabs',
52
+ 'base/Page'
53
+ )
54
+ .addExample(
55
+ 'PageHeadBase/story/WithRightPadding.example.tsx',
56
+ 'With right padding of the container',
57
+ 'base/Page'
58
+ )
@@ -28,7 +28,7 @@ exports[`Page.TopBar render with custom logo 1`] = `
28
28
  >
29
29
  <button
30
30
  aria-disabled="false"
31
- class="base-Button text-lg inline-flex items-center justify-center select-none appearance-none m-0 relative normal-case align-middle transition-colors duration-350 ease-out shrink-0 outline-none [&+&]:ml-4 cursor-pointer rounded-full p-0 w-[1.5em] h-[1.5em] border-none text-white hover:bg-white/[0.08] active:bg-white/[0.16] focus-visible:shadow-[0_0_0_3px_rgba(255,255,255,0.48)] bg-transparent"
31
+ class="base-Button text-lg inline-flex items-center justify-center select-none appearance-none m-0 relative normal-case align-middle transition-colors duration-350 ease-out shrink-0 outline-none [[data-component-type="button"]+&]:ml cursor-pointer rounded-full p-0 w-[1.5em] h-[1.5em] border-none text-white hover:bg-white/[0.08] active:bg-white/[0.16] focus-visible:shadow-[0_0_0_3px_rgba(255,255,255,0.48)] bg-transparent"
32
32
  data-component-type="button"
33
33
  role="button"
34
34
  tabindex="0"
@@ -127,7 +127,7 @@ exports[`Page.TopBar render with link 1`] = `
127
127
  >
128
128
  <button
129
129
  aria-disabled="false"
130
- class="base-Button text-lg inline-flex items-center justify-center select-none appearance-none m-0 relative normal-case align-middle transition-colors duration-350 ease-out shrink-0 outline-none [&+&]:ml-4 cursor-pointer rounded-full p-0 w-[1.5em] h-[1.5em] border-none text-white hover:bg-white/[0.08] active:bg-white/[0.16] focus-visible:shadow-[0_0_0_3px_rgba(255,255,255,0.48)] bg-transparent"
130
+ class="base-Button text-lg inline-flex items-center justify-center select-none appearance-none m-0 relative normal-case align-middle transition-colors duration-350 ease-out shrink-0 outline-none [[data-component-type="button"]+&]:ml cursor-pointer rounded-full p-0 w-[1.5em] h-[1.5em] border-none text-white hover:bg-white/[0.08] active:bg-white/[0.16] focus-visible:shadow-[0_0_0_3px_rgba(255,255,255,0.48)] bg-transparent"
131
131
  data-component-type="button"
132
132
  role="button"
133
133
  tabindex="0"
@@ -252,7 +252,7 @@ exports[`Page.TopBar renders 1`] = `
252
252
  >
253
253
  <button
254
254
  aria-disabled="false"
255
- class="base-Button text-lg inline-flex items-center justify-center select-none appearance-none m-0 relative normal-case align-middle transition-colors duration-350 ease-out shrink-0 outline-none [&+&]:ml-4 cursor-pointer rounded-full p-0 w-[1.5em] h-[1.5em] border-none text-white hover:bg-white/[0.08] active:bg-white/[0.16] focus-visible:shadow-[0_0_0_3px_rgba(255,255,255,0.48)] bg-transparent"
255
+ class="base-Button text-lg inline-flex items-center justify-center select-none appearance-none m-0 relative normal-case align-middle transition-colors duration-350 ease-out shrink-0 outline-none [[data-component-type="button"]+&]:ml cursor-pointer rounded-full p-0 w-[1.5em] h-[1.5em] border-none text-white hover:bg-white/[0.08] active:bg-white/[0.16] focus-visible:shadow-[0_0_0_3px_rgba(255,255,255,0.48)] bg-transparent"
256
256
  data-component-type="button"
257
257
  role="button"
258
258
  tabindex="0"
package/src/index.ts CHANGED
@@ -18,3 +18,4 @@ export * from './TopBarItem'
18
18
  export * from './TopBarMenu'
19
19
  export * from './PageHamburger'
20
20
  export * from './PageHead'
21
+ export * from './PageHeadBase'