@dxos/react-ui-card 0.8.2 → 0.11.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 (74) hide show
  1. package/LICENSE +102 -5
  2. package/dist/lib/index.mjs +288 -0
  3. package/dist/lib/index.mjs.map +1 -0
  4. package/dist/lib/translations.mjs +11 -0
  5. package/dist/lib/translations.mjs.map +1 -0
  6. package/dist/types/src/components/Avatar/Avatar.d.ts +14 -0
  7. package/dist/types/src/components/Avatar/Avatar.d.ts.map +1 -0
  8. package/dist/types/src/components/Avatar/Avatar.stories.d.ts +15 -0
  9. package/dist/types/src/components/Avatar/Avatar.stories.d.ts.map +1 -0
  10. package/dist/types/src/components/Avatar/avatar-name.d.ts +6 -0
  11. package/dist/types/src/components/Avatar/avatar-name.d.ts.map +1 -0
  12. package/dist/types/src/components/Avatar/index.d.ts +3 -0
  13. package/dist/types/src/components/Avatar/index.d.ts.map +1 -0
  14. package/dist/types/src/components/CardTile/CardTile.d.ts +46 -0
  15. package/dist/types/src/components/CardTile/CardTile.d.ts.map +1 -0
  16. package/dist/types/src/components/CardTile/CardTile.stories.d.ts +27 -0
  17. package/dist/types/src/components/CardTile/CardTile.stories.d.ts.map +1 -0
  18. package/dist/types/src/components/CardTile/index.d.ts +2 -0
  19. package/dist/types/src/components/CardTile/index.d.ts.map +1 -0
  20. package/dist/types/src/components/Row/Row.d.ts +100 -0
  21. package/dist/types/src/components/Row/Row.d.ts.map +1 -0
  22. package/dist/types/src/components/Row/Row.stories.d.ts +23 -0
  23. package/dist/types/src/components/Row/Row.stories.d.ts.map +1 -0
  24. package/dist/types/src/components/Row/index.d.ts +2 -0
  25. package/dist/types/src/components/Row/index.d.ts.map +1 -0
  26. package/dist/types/src/components/index.d.ts +3 -1
  27. package/dist/types/src/components/index.d.ts.map +1 -1
  28. package/dist/types/src/hooks/index.d.ts +2 -0
  29. package/dist/types/src/hooks/index.d.ts.map +1 -0
  30. package/dist/types/src/hooks/useActorContact.d.ts +5 -0
  31. package/dist/types/src/hooks/useActorContact.d.ts.map +1 -0
  32. package/dist/types/src/index.d.ts +2 -1
  33. package/dist/types/src/index.d.ts.map +1 -1
  34. package/dist/types/src/translations.d.ts +11 -0
  35. package/dist/types/src/translations.d.ts.map +1 -0
  36. package/dist/types/src/util.d.ts +3 -0
  37. package/dist/types/src/util.d.ts.map +1 -0
  38. package/dist/types/tsconfig.tsbuildinfo +1 -1
  39. package/package.json +39 -30
  40. package/src/components/Avatar/Avatar.stories.tsx +31 -0
  41. package/src/components/Avatar/Avatar.tsx +39 -0
  42. package/src/components/Avatar/avatar-name.ts +19 -0
  43. package/src/components/Avatar/index.ts +7 -0
  44. package/src/components/CardTile/CardTile.stories.tsx +54 -0
  45. package/src/components/CardTile/CardTile.tsx +103 -0
  46. package/src/components/CardTile/index.ts +5 -0
  47. package/src/components/Row/Row.stories.tsx +65 -0
  48. package/src/components/Row/Row.tsx +379 -0
  49. package/src/components/Row/index.ts +5 -0
  50. package/src/components/index.ts +4 -2
  51. package/src/hooks/index.ts +5 -0
  52. package/src/hooks/useActorContact.ts +31 -0
  53. package/src/index.ts +3 -2
  54. package/src/translations.ts +19 -0
  55. package/src/util.ts +7 -0
  56. package/README.md +0 -3
  57. package/dist/lib/browser/index.mjs +0 -200
  58. package/dist/lib/browser/index.mjs.map +0 -7
  59. package/dist/lib/browser/meta.json +0 -1
  60. package/dist/lib/node/index.cjs +0 -243
  61. package/dist/lib/node/index.cjs.map +0 -7
  62. package/dist/lib/node/meta.json +0 -1
  63. package/dist/lib/node-esm/index.mjs +0 -202
  64. package/dist/lib/node-esm/index.mjs.map +0 -7
  65. package/dist/lib/node-esm/meta.json +0 -1
  66. package/dist/types/src/components/Card.d.ts +0 -52
  67. package/dist/types/src/components/Card.d.ts.map +0 -1
  68. package/dist/types/src/components/Card.stories.d.ts +0 -57
  69. package/dist/types/src/components/Card.stories.d.ts.map +0 -1
  70. package/dist/types/src/theme.d.ts +0 -31
  71. package/dist/types/src/theme.d.ts.map +0 -1
  72. package/src/components/Card.stories.tsx +0 -217
  73. package/src/components/Card.tsx +0 -149
  74. package/src/theme.ts +0 -101
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/Card.tsx", "../../../src/theme.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Circle, DotsSixVertical, DotsThreeVertical, type Icon } from '@phosphor-icons/react';\nimport { type Primitive } from '@radix-ui/react-primitive';\nimport React, {\n type ComponentPropsWithoutRef,\n type ComponentPropsWithRef,\n type FC,\n type PropsWithChildren,\n forwardRef,\n} from 'react';\n\nimport { useDensityContext, DropdownMenu, type ThemedClassName } from '@dxos/react-ui';\n\nimport {\n cardBody,\n cardDragHandle,\n cardDragHandleIcon,\n cardHeader,\n cardMedia,\n cardMenu,\n cardMenuIcon,\n cardRoot,\n cardTitle,\n} from '../theme';\n\ntype CardRootProps = ThemedClassName<ComponentPropsWithRef<typeof Primitive.div>> & {\n grow?: boolean;\n square?: boolean;\n noPadding?: boolean;\n};\n\n// TODO(burdon): Forward refs for all components?\nconst CardRoot = forwardRef<HTMLDivElement, CardRootProps>(\n ({ grow, square, noPadding, classNames, children, ...props }, forwardedRef) => {\n return (\n <div {...props} ref={forwardedRef} className={cardRoot({ grow, square, noPadding }, classNames)}>\n {children}\n </div>\n );\n },\n);\n\ntype CardHeaderProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & { floating?: boolean };\n\nexport const CardHeader: FC<CardHeaderProps> = ({ floating, classNames, children, ...props }) => {\n return (\n <div {...props} className={cardHeader({ floating }, classNames)}>\n {children}\n </div>\n );\n};\n\ntype CardTitleProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & {\n center?: boolean;\n title?: string;\n};\n\nexport const CardTitle: FC<CardTitleProps> = ({ center, title, classNames, ...props }) => {\n return (\n <div {...props} className={cardTitle({ center }, classNames)}>\n {title}\n </div>\n );\n};\n\n// TODO(burdon): Reuse ListItemEndcap?\ntype CardDragHandleProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & { position?: 'left' | 'right' };\n\nconst CardDragHandle: FC<CardDragHandleProps> = ({ position, classNames, ...props }) => {\n const density = useDensityContext();\n return (\n <div {...props} className={cardDragHandle({ density, position }, classNames)}>\n <DotsSixVertical className={cardDragHandleIcon({})} />\n </div>\n );\n};\n\ntype CardEndcapProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & { Icon?: Icon; position?: 'left' | 'right' };\n\nconst CardEndcap: FC<CardEndcapProps> = ({ Icon = Circle, position, classNames, ...props }) => {\n const density = useDensityContext();\n return (\n <div {...props} className={cardMenu({ density, position }, classNames)}>\n <Icon className={cardMenuIcon({})} />\n </div>\n );\n};\n\ntype CardMenuProps = PropsWithChildren<\n ThemedClassName<ComponentPropsWithoutRef<'div'>> & { position?: 'left' | 'right' }\n>;\n\n// TODO(burdon): Reconcile with Endcap (remove dropdown from here). See ListItem.Endcap (style icon/size?)\nconst CardMenu = forwardRef<HTMLDivElement, CardMenuProps>(\n ({ children, position, classNames, ...props }, forwardRef) => {\n const density = useDensityContext();\n return (\n <div {...props} className={cardMenu({ density, position }, classNames)} ref={forwardRef}>\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <DotsThreeVertical className={cardMenuIcon({})} />\n </DropdownMenu.Trigger>\n {/* TODO(burdon): Position to the left of the menu button. */}\n <DropdownMenu.Content>\n <DropdownMenu.Viewport>{children}</DropdownMenu.Viewport>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n </div>\n );\n },\n);\n\ntype CardBodyProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & { gutter?: boolean };\n\nexport const CardBody: FC<CardBodyProps> = ({ gutter, classNames, children, ...props }) => {\n const density = useDensityContext();\n return (\n <div {...props} className={cardBody({ density, gutter }, classNames)}>\n {children}\n </div>\n );\n};\n\ntype CardMediaProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & { src?: string; contain?: boolean };\n\n// TODO(burdon): Option to set to 50% of height of card.\nexport const CardMedia: FC<CardMediaProps> = ({ src, contain, classNames, ...props }) => {\n return (\n <div className='flex grow overflow-hidden'>\n <img {...props} className={cardMedia({ contain }, classNames)} src={src} />\n </div>\n );\n};\n\nexport const Card = {\n Root: CardRoot,\n Header: CardHeader,\n DragHandle: CardDragHandle,\n Endcap: CardEndcap,\n Menu: CardMenu,\n Title: CardTitle,\n Body: CardBody,\n Media: CardMedia,\n};\n\nexport type { CardRootProps };\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type ComponentFunction, type Density, type Theme } from '@dxos/react-ui';\nimport { getSize, attentionSurface, mx } from '@dxos/react-ui-theme';\n\nconst defaults = {\n width: 'min-w-[256px]',\n};\n\nexport type CardStyleProps = Partial<{\n density: Density;\n grow?: boolean;\n square?: boolean;\n rounded?: boolean;\n noPadding?: boolean;\n}>;\n\nexport const cardRoot: ComponentFunction<CardStyleProps> = ({ grow, square, rounded = true }, ...etc) =>\n mx(\n 'flex flex-col group/card overflow-hidden',\n grow && 'h-full',\n defaults.width,\n attentionSurface,\n 'shadow', // TODO(burdon): Elevation?\n rounded && 'rounded',\n square && 'aspect-square',\n ...etc,\n );\n\nexport const cardHeader: ComponentFunction<CardStyleProps & { floating?: boolean }> = ({ floating }, ...etc) =>\n mx(floating ? 'relative' : 'flex w-full shrink-0 justify-between overflow-hidden items-center py-1', ...etc);\n\nexport const cardTitle: ComponentFunction<CardStyleProps & { center?: boolean }> = ({ center }, ...etc) =>\n mx('grow overflow-hidden truncate first:pl-4 last:pr-4', center && 'text-center', ...etc);\n\nexport const cardDragHandle: ComponentFunction<CardStyleProps & { position?: 'left' | 'right' }> = (\n { density, position },\n ...etc\n) =>\n mx(\n 'flex shrink-0 items-center justify-center select-none',\n density === 'fine' ? getSize(8) : getSize(10),\n position === 'left' && 'absolute top-1 left-1',\n position === 'right' && 'absolute top-1 right-1',\n position && 'text-black group-hover/card:bg-white group-hover/card:bg-opacity-80',\n ...etc,\n );\n\nexport const cardDragHandleIcon: ComponentFunction<CardStyleProps> = (_, ...etc) =>\n mx(getSize(5), 'cursor-pointer', ...etc);\n\n// TODO(burdon): Helper for DropdownMenu? Density, etc?\nexport const cardMenu: ComponentFunction<CardStyleProps & { position?: 'left' | 'right' }> = (\n { density, position },\n ...etc\n) =>\n mx(\n 'flex shrink-0 items-center justify-center',\n density === 'fine' ? getSize(8) : getSize(10),\n position === 'left' && 'absolute top-1 left-1',\n position === 'right' && 'absolute top-1 right-1',\n position && 'text-black group-hover/card:bg-white group-hover/card:bg-opacity-80',\n ...etc,\n );\n\nexport const cardMenuIcon: ComponentFunction<CardStyleProps> = (_, ...etc) => mx(getSize(5), 'cursor-pointer');\n\nexport const cardBody: ComponentFunction<CardStyleProps & { gutter?: boolean }> = (\n { density, gutter, noPadding },\n ...etc\n) =>\n mx(\n 'grow overflow-auto',\n !noPadding && 'px-2',\n // TODO(burdon): Create density-specific constants.\n gutter && (density === 'fine' ? 'pl-0 ml-[32px]' : 'pl-0 ml-[40px]'),\n ...etc,\n );\n\nexport const cardMedia: ComponentFunction<CardStyleProps & { contain?: boolean }> = ({ contain }, ...etc) =>\n mx(\n 'grow max-h-[300px]',\n // Hide broken image links (e.g., if offline).\n \"before:content-[' '] before:block before:w-full before:h-full before:border-0\",\n contain ? 'object-contain' : 'object-cover',\n ...etc,\n );\n\nexport const cardTheme: Theme<CardStyleProps> = {\n root: cardRoot,\n header: cardHeader,\n title: cardTitle,\n dragHandle: cardDragHandle,\n dragHandleIcon: cardDragHandleIcon,\n menu: cardMenu,\n menuIcon: cardMenuIcon,\n body: cardBody,\n media: cardMedia,\n};\n"],
5
- "mappings": "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",
6
- "names": ["Circle", "DotsSixVertical", "DotsThreeVertical", "React", "forwardRef", "useDensityContext", "DropdownMenu", "getSize", "attentionSurface", "mx", "defaults", "width", "cardRoot", "grow", "square", "rounded", "etc", "mx", "attentionSurface", "cardHeader", "floating", "cardTitle", "center", "cardDragHandle", "density", "position", "getSize", "cardDragHandleIcon", "_", "cardMenu", "cardMenuIcon", "cardBody", "gutter", "noPadding", "cardMedia", "contain", "cardTheme", "root", "header", "title", "dragHandle", "dragHandleIcon", "menu", "menuIcon", "body", "media", "CardRoot", "forwardRef", "grow", "square", "noPadding", "classNames", "children", "props", "forwardedRef", "div", "ref", "className", "cardRoot", "CardHeader", "floating", "cardHeader", "CardTitle", "center", "title", "cardTitle", "CardDragHandle", "position", "density", "useDensityContext", "cardDragHandle", "DotsSixVertical", "cardDragHandleIcon", "CardEndcap", "Icon", "Circle", "cardMenu", "cardMenuIcon", "CardMenu", "DropdownMenu", "Root", "Trigger", "asChild", "DotsThreeVertical", "Content", "Viewport", "CardBody", "gutter", "cardBody", "CardMedia", "src", "contain", "img", "cardMedia", "Card", "Header", "DragHandle", "Endcap", "Menu", "Title", "Body", "Media"]
7
- }
@@ -1 +0,0 @@
1
- {"inputs":{"packages/ui/react-ui-card/src/theme.ts":{"bytes":9584,"imports":[{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-card/src/components/Card.tsx":{"bytes":15142,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-card/src/theme.ts","kind":"import-statement","original":"../theme"}],"format":"esm"},"packages/ui/react-ui-card/src/components/index.ts":{"bytes":468,"imports":[{"path":"packages/ui/react-ui-card/src/components/Card.tsx","kind":"import-statement","original":"./Card"}],"format":"esm"},"packages/ui/react-ui-card/src/index.ts":{"bytes":552,"imports":[{"path":"packages/ui/react-ui-card/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/ui/react-ui-card/src/theme.ts","kind":"import-statement","original":"./theme"}],"format":"esm"}},"outputs":{"packages/ui/react-ui-card/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":12814},"packages/ui/react-ui-card/dist/lib/browser/index.mjs":{"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"exports":["Card","CardBody","CardHeader","CardMedia","CardTitle","cardBody","cardDragHandle","cardDragHandleIcon","cardHeader","cardMedia","cardMenu","cardMenuIcon","cardRoot","cardTheme","cardTitle"],"entryPoint":"packages/ui/react-ui-card/src/index.ts","inputs":{"packages/ui/react-ui-card/src/components/Card.tsx":{"bytesInOutput":3911},"packages/ui/react-ui-card/src/theme.ts":{"bytesInOutput":2207},"packages/ui/react-ui-card/src/components/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-card/src/index.ts":{"bytesInOutput":0}},"bytes":6519}}}
@@ -1,243 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var node_exports = {};
30
- __export(node_exports, {
31
- Card: () => Card,
32
- CardBody: () => CardBody,
33
- CardHeader: () => CardHeader,
34
- CardMedia: () => CardMedia,
35
- CardTitle: () => CardTitle,
36
- cardBody: () => cardBody,
37
- cardDragHandle: () => cardDragHandle,
38
- cardDragHandleIcon: () => cardDragHandleIcon,
39
- cardHeader: () => cardHeader,
40
- cardMedia: () => cardMedia,
41
- cardMenu: () => cardMenu,
42
- cardMenuIcon: () => cardMenuIcon,
43
- cardRoot: () => cardRoot,
44
- cardTheme: () => cardTheme,
45
- cardTitle: () => cardTitle
46
- });
47
- module.exports = __toCommonJS(node_exports);
48
- var import_tracking = require("@preact-signals/safe-react/tracking");
49
- var import_react = require("@phosphor-icons/react");
50
- var import_react2 = __toESM(require("react"));
51
- var import_react_ui = require("@dxos/react-ui");
52
- var import_react_ui_theme = require("@dxos/react-ui-theme");
53
- var defaults = {
54
- width: "min-w-[256px]"
55
- };
56
- var cardRoot = ({ grow, square, rounded = true }, ...etc) => (0, import_react_ui_theme.mx)("flex flex-col group/card overflow-hidden", grow && "h-full", defaults.width, import_react_ui_theme.attentionSurface, "shadow", rounded && "rounded", square && "aspect-square", ...etc);
57
- var cardHeader = ({ floating }, ...etc) => (0, import_react_ui_theme.mx)(floating ? "relative" : "flex w-full shrink-0 justify-between overflow-hidden items-center py-1", ...etc);
58
- var cardTitle = ({ center }, ...etc) => (0, import_react_ui_theme.mx)("grow overflow-hidden truncate first:pl-4 last:pr-4", center && "text-center", ...etc);
59
- var cardDragHandle = ({ density, position }, ...etc) => (0, import_react_ui_theme.mx)("flex shrink-0 items-center justify-center select-none", density === "fine" ? (0, import_react_ui_theme.getSize)(8) : (0, import_react_ui_theme.getSize)(10), position === "left" && "absolute top-1 left-1", position === "right" && "absolute top-1 right-1", position && "text-black group-hover/card:bg-white group-hover/card:bg-opacity-80", ...etc);
60
- var cardDragHandleIcon = (_, ...etc) => (0, import_react_ui_theme.mx)((0, import_react_ui_theme.getSize)(5), "cursor-pointer", ...etc);
61
- var cardMenu = ({ density, position }, ...etc) => (0, import_react_ui_theme.mx)("flex shrink-0 items-center justify-center", density === "fine" ? (0, import_react_ui_theme.getSize)(8) : (0, import_react_ui_theme.getSize)(10), position === "left" && "absolute top-1 left-1", position === "right" && "absolute top-1 right-1", position && "text-black group-hover/card:bg-white group-hover/card:bg-opacity-80", ...etc);
62
- var cardMenuIcon = (_, ...etc) => (0, import_react_ui_theme.mx)((0, import_react_ui_theme.getSize)(5), "cursor-pointer");
63
- var cardBody = ({ density, gutter, noPadding }, ...etc) => (0, import_react_ui_theme.mx)(
64
- "grow overflow-auto",
65
- !noPadding && "px-2",
66
- // TODO(burdon): Create density-specific constants.
67
- gutter && (density === "fine" ? "pl-0 ml-[32px]" : "pl-0 ml-[40px]"),
68
- ...etc
69
- );
70
- var cardMedia = ({ contain }, ...etc) => (0, import_react_ui_theme.mx)(
71
- "grow max-h-[300px]",
72
- // Hide broken image links (e.g., if offline).
73
- "before:content-['\xA0'] before:block before:w-full before:h-full before:border-0",
74
- contain ? "object-contain" : "object-cover",
75
- ...etc
76
- );
77
- var cardTheme = {
78
- root: cardRoot,
79
- header: cardHeader,
80
- title: cardTitle,
81
- dragHandle: cardDragHandle,
82
- dragHandleIcon: cardDragHandleIcon,
83
- menu: cardMenu,
84
- menuIcon: cardMenuIcon,
85
- body: cardBody,
86
- media: cardMedia
87
- };
88
- var CardRoot = /* @__PURE__ */ (0, import_react2.forwardRef)(({ grow, square, noPadding, classNames, children, ...props }, forwardedRef) => {
89
- var _effect = (0, import_tracking.useSignals)();
90
- try {
91
- return /* @__PURE__ */ import_react2.default.createElement("div", {
92
- ...props,
93
- ref: forwardedRef,
94
- className: cardRoot({
95
- grow,
96
- square,
97
- noPadding
98
- }, classNames)
99
- }, children);
100
- } finally {
101
- _effect.f();
102
- }
103
- });
104
- var CardHeader = ({ floating, classNames, children, ...props }) => {
105
- var _effect = (0, import_tracking.useSignals)();
106
- try {
107
- return /* @__PURE__ */ import_react2.default.createElement("div", {
108
- ...props,
109
- className: cardHeader({
110
- floating
111
- }, classNames)
112
- }, children);
113
- } finally {
114
- _effect.f();
115
- }
116
- };
117
- var CardTitle = ({ center, title, classNames, ...props }) => {
118
- var _effect = (0, import_tracking.useSignals)();
119
- try {
120
- return /* @__PURE__ */ import_react2.default.createElement("div", {
121
- ...props,
122
- className: cardTitle({
123
- center
124
- }, classNames)
125
- }, title);
126
- } finally {
127
- _effect.f();
128
- }
129
- };
130
- var CardDragHandle = ({ position, classNames, ...props }) => {
131
- var _effect = (0, import_tracking.useSignals)();
132
- try {
133
- const density = (0, import_react_ui.useDensityContext)();
134
- return /* @__PURE__ */ import_react2.default.createElement("div", {
135
- ...props,
136
- className: cardDragHandle({
137
- density,
138
- position
139
- }, classNames)
140
- }, /* @__PURE__ */ import_react2.default.createElement(import_react.DotsSixVertical, {
141
- className: cardDragHandleIcon({})
142
- }));
143
- } finally {
144
- _effect.f();
145
- }
146
- };
147
- var CardEndcap = ({ Icon = import_react.Circle, position, classNames, ...props }) => {
148
- var _effect = (0, import_tracking.useSignals)();
149
- try {
150
- const density = (0, import_react_ui.useDensityContext)();
151
- return /* @__PURE__ */ import_react2.default.createElement("div", {
152
- ...props,
153
- className: cardMenu({
154
- density,
155
- position
156
- }, classNames)
157
- }, /* @__PURE__ */ import_react2.default.createElement(Icon, {
158
- className: cardMenuIcon({})
159
- }));
160
- } finally {
161
- _effect.f();
162
- }
163
- };
164
- var CardMenu = /* @__PURE__ */ (0, import_react2.forwardRef)(({ children, position, classNames, ...props }, forwardRef2) => {
165
- var _effect = (0, import_tracking.useSignals)();
166
- try {
167
- const density = (0, import_react_ui.useDensityContext)();
168
- return /* @__PURE__ */ import_react2.default.createElement("div", {
169
- ...props,
170
- className: cardMenu({
171
- density,
172
- position
173
- }, classNames),
174
- ref: forwardRef2
175
- }, /* @__PURE__ */ import_react2.default.createElement(import_react_ui.DropdownMenu.Root, null, /* @__PURE__ */ import_react2.default.createElement(import_react_ui.DropdownMenu.Trigger, {
176
- asChild: true
177
- }, /* @__PURE__ */ import_react2.default.createElement(import_react.DotsThreeVertical, {
178
- className: cardMenuIcon({})
179
- })), /* @__PURE__ */ import_react2.default.createElement(import_react_ui.DropdownMenu.Content, null, /* @__PURE__ */ import_react2.default.createElement(import_react_ui.DropdownMenu.Viewport, null, children))));
180
- } finally {
181
- _effect.f();
182
- }
183
- });
184
- var CardBody = ({ gutter, classNames, children, ...props }) => {
185
- var _effect = (0, import_tracking.useSignals)();
186
- try {
187
- const density = (0, import_react_ui.useDensityContext)();
188
- return /* @__PURE__ */ import_react2.default.createElement("div", {
189
- ...props,
190
- className: cardBody({
191
- density,
192
- gutter
193
- }, classNames)
194
- }, children);
195
- } finally {
196
- _effect.f();
197
- }
198
- };
199
- var CardMedia = ({ src, contain, classNames, ...props }) => {
200
- var _effect = (0, import_tracking.useSignals)();
201
- try {
202
- return /* @__PURE__ */ import_react2.default.createElement("div", {
203
- className: "flex grow overflow-hidden"
204
- }, /* @__PURE__ */ import_react2.default.createElement("img", {
205
- ...props,
206
- className: cardMedia({
207
- contain
208
- }, classNames),
209
- src
210
- }));
211
- } finally {
212
- _effect.f();
213
- }
214
- };
215
- var Card = {
216
- Root: CardRoot,
217
- Header: CardHeader,
218
- DragHandle: CardDragHandle,
219
- Endcap: CardEndcap,
220
- Menu: CardMenu,
221
- Title: CardTitle,
222
- Body: CardBody,
223
- Media: CardMedia
224
- };
225
- // Annotate the CommonJS export names for ESM import in node:
226
- 0 && (module.exports = {
227
- Card,
228
- CardBody,
229
- CardHeader,
230
- CardMedia,
231
- CardTitle,
232
- cardBody,
233
- cardDragHandle,
234
- cardDragHandleIcon,
235
- cardHeader,
236
- cardMedia,
237
- cardMenu,
238
- cardMenuIcon,
239
- cardRoot,
240
- cardTheme,
241
- cardTitle
242
- });
243
- //# sourceMappingURL=index.cjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/Card.tsx", "../../../src/theme.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Circle, DotsSixVertical, DotsThreeVertical, type Icon } from '@phosphor-icons/react';\nimport { type Primitive } from '@radix-ui/react-primitive';\nimport React, {\n type ComponentPropsWithoutRef,\n type ComponentPropsWithRef,\n type FC,\n type PropsWithChildren,\n forwardRef,\n} from 'react';\n\nimport { useDensityContext, DropdownMenu, type ThemedClassName } from '@dxos/react-ui';\n\nimport {\n cardBody,\n cardDragHandle,\n cardDragHandleIcon,\n cardHeader,\n cardMedia,\n cardMenu,\n cardMenuIcon,\n cardRoot,\n cardTitle,\n} from '../theme';\n\ntype CardRootProps = ThemedClassName<ComponentPropsWithRef<typeof Primitive.div>> & {\n grow?: boolean;\n square?: boolean;\n noPadding?: boolean;\n};\n\n// TODO(burdon): Forward refs for all components?\nconst CardRoot = forwardRef<HTMLDivElement, CardRootProps>(\n ({ grow, square, noPadding, classNames, children, ...props }, forwardedRef) => {\n return (\n <div {...props} ref={forwardedRef} className={cardRoot({ grow, square, noPadding }, classNames)}>\n {children}\n </div>\n );\n },\n);\n\ntype CardHeaderProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & { floating?: boolean };\n\nexport const CardHeader: FC<CardHeaderProps> = ({ floating, classNames, children, ...props }) => {\n return (\n <div {...props} className={cardHeader({ floating }, classNames)}>\n {children}\n </div>\n );\n};\n\ntype CardTitleProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & {\n center?: boolean;\n title?: string;\n};\n\nexport const CardTitle: FC<CardTitleProps> = ({ center, title, classNames, ...props }) => {\n return (\n <div {...props} className={cardTitle({ center }, classNames)}>\n {title}\n </div>\n );\n};\n\n// TODO(burdon): Reuse ListItemEndcap?\ntype CardDragHandleProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & { position?: 'left' | 'right' };\n\nconst CardDragHandle: FC<CardDragHandleProps> = ({ position, classNames, ...props }) => {\n const density = useDensityContext();\n return (\n <div {...props} className={cardDragHandle({ density, position }, classNames)}>\n <DotsSixVertical className={cardDragHandleIcon({})} />\n </div>\n );\n};\n\ntype CardEndcapProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & { Icon?: Icon; position?: 'left' | 'right' };\n\nconst CardEndcap: FC<CardEndcapProps> = ({ Icon = Circle, position, classNames, ...props }) => {\n const density = useDensityContext();\n return (\n <div {...props} className={cardMenu({ density, position }, classNames)}>\n <Icon className={cardMenuIcon({})} />\n </div>\n );\n};\n\ntype CardMenuProps = PropsWithChildren<\n ThemedClassName<ComponentPropsWithoutRef<'div'>> & { position?: 'left' | 'right' }\n>;\n\n// TODO(burdon): Reconcile with Endcap (remove dropdown from here). See ListItem.Endcap (style icon/size?)\nconst CardMenu = forwardRef<HTMLDivElement, CardMenuProps>(\n ({ children, position, classNames, ...props }, forwardRef) => {\n const density = useDensityContext();\n return (\n <div {...props} className={cardMenu({ density, position }, classNames)} ref={forwardRef}>\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <DotsThreeVertical className={cardMenuIcon({})} />\n </DropdownMenu.Trigger>\n {/* TODO(burdon): Position to the left of the menu button. */}\n <DropdownMenu.Content>\n <DropdownMenu.Viewport>{children}</DropdownMenu.Viewport>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n </div>\n );\n },\n);\n\ntype CardBodyProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & { gutter?: boolean };\n\nexport const CardBody: FC<CardBodyProps> = ({ gutter, classNames, children, ...props }) => {\n const density = useDensityContext();\n return (\n <div {...props} className={cardBody({ density, gutter }, classNames)}>\n {children}\n </div>\n );\n};\n\ntype CardMediaProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & { src?: string; contain?: boolean };\n\n// TODO(burdon): Option to set to 50% of height of card.\nexport const CardMedia: FC<CardMediaProps> = ({ src, contain, classNames, ...props }) => {\n return (\n <div className='flex grow overflow-hidden'>\n <img {...props} className={cardMedia({ contain }, classNames)} src={src} />\n </div>\n );\n};\n\nexport const Card = {\n Root: CardRoot,\n Header: CardHeader,\n DragHandle: CardDragHandle,\n Endcap: CardEndcap,\n Menu: CardMenu,\n Title: CardTitle,\n Body: CardBody,\n Media: CardMedia,\n};\n\nexport type { CardRootProps };\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type ComponentFunction, type Density, type Theme } from '@dxos/react-ui';\nimport { getSize, attentionSurface, mx } from '@dxos/react-ui-theme';\n\nconst defaults = {\n width: 'min-w-[256px]',\n};\n\nexport type CardStyleProps = Partial<{\n density: Density;\n grow?: boolean;\n square?: boolean;\n rounded?: boolean;\n noPadding?: boolean;\n}>;\n\nexport const cardRoot: ComponentFunction<CardStyleProps> = ({ grow, square, rounded = true }, ...etc) =>\n mx(\n 'flex flex-col group/card overflow-hidden',\n grow && 'h-full',\n defaults.width,\n attentionSurface,\n 'shadow', // TODO(burdon): Elevation?\n rounded && 'rounded',\n square && 'aspect-square',\n ...etc,\n );\n\nexport const cardHeader: ComponentFunction<CardStyleProps & { floating?: boolean }> = ({ floating }, ...etc) =>\n mx(floating ? 'relative' : 'flex w-full shrink-0 justify-between overflow-hidden items-center py-1', ...etc);\n\nexport const cardTitle: ComponentFunction<CardStyleProps & { center?: boolean }> = ({ center }, ...etc) =>\n mx('grow overflow-hidden truncate first:pl-4 last:pr-4', center && 'text-center', ...etc);\n\nexport const cardDragHandle: ComponentFunction<CardStyleProps & { position?: 'left' | 'right' }> = (\n { density, position },\n ...etc\n) =>\n mx(\n 'flex shrink-0 items-center justify-center select-none',\n density === 'fine' ? getSize(8) : getSize(10),\n position === 'left' && 'absolute top-1 left-1',\n position === 'right' && 'absolute top-1 right-1',\n position && 'text-black group-hover/card:bg-white group-hover/card:bg-opacity-80',\n ...etc,\n );\n\nexport const cardDragHandleIcon: ComponentFunction<CardStyleProps> = (_, ...etc) =>\n mx(getSize(5), 'cursor-pointer', ...etc);\n\n// TODO(burdon): Helper for DropdownMenu? Density, etc?\nexport const cardMenu: ComponentFunction<CardStyleProps & { position?: 'left' | 'right' }> = (\n { density, position },\n ...etc\n) =>\n mx(\n 'flex shrink-0 items-center justify-center',\n density === 'fine' ? getSize(8) : getSize(10),\n position === 'left' && 'absolute top-1 left-1',\n position === 'right' && 'absolute top-1 right-1',\n position && 'text-black group-hover/card:bg-white group-hover/card:bg-opacity-80',\n ...etc,\n );\n\nexport const cardMenuIcon: ComponentFunction<CardStyleProps> = (_, ...etc) => mx(getSize(5), 'cursor-pointer');\n\nexport const cardBody: ComponentFunction<CardStyleProps & { gutter?: boolean }> = (\n { density, gutter, noPadding },\n ...etc\n) =>\n mx(\n 'grow overflow-auto',\n !noPadding && 'px-2',\n // TODO(burdon): Create density-specific constants.\n gutter && (density === 'fine' ? 'pl-0 ml-[32px]' : 'pl-0 ml-[40px]'),\n ...etc,\n );\n\nexport const cardMedia: ComponentFunction<CardStyleProps & { contain?: boolean }> = ({ contain }, ...etc) =>\n mx(\n 'grow max-h-[300px]',\n // Hide broken image links (e.g., if offline).\n \"before:content-[' '] before:block before:w-full before:h-full before:border-0\",\n contain ? 'object-contain' : 'object-cover',\n ...etc,\n );\n\nexport const cardTheme: Theme<CardStyleProps> = {\n root: cardRoot,\n header: cardHeader,\n title: cardTitle,\n dragHandle: cardDragHandle,\n dragHandleIcon: cardDragHandleIcon,\n menu: cardMenu,\n menuIcon: cardMenuIcon,\n body: cardBody,\n media: cardMedia,\n};\n"],
5
- "mappings": "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",
6
- "names": ["import_react", "defaults", "width", "cardRoot", "grow", "square", "rounded", "etc", "mx", "attentionSurface", "cardHeader", "floating", "cardTitle", "center", "cardDragHandle", "density", "position", "getSize", "cardDragHandleIcon", "_", "cardMenu", "cardMenuIcon", "cardBody", "gutter", "noPadding", "cardMedia", "contain", "cardTheme", "root", "header", "title", "dragHandle", "dragHandleIcon", "menu", "menuIcon", "body", "media", "CardRoot", "forwardRef", "classNames", "children", "props", "forwardedRef", "React", "div", "ref", "className", "CardHeader", "CardTitle", "CardDragHandle", "useDensityContext", "DotsSixVertical", "CardEndcap", "Icon", "Circle", "CardMenu", "DropdownMenu", "Root", "Trigger", "asChild", "DotsThreeVertical", "Content", "Viewport", "CardBody", "CardMedia", "src", "img", "Card", "Header", "DragHandle", "Endcap", "Menu", "Title", "Body", "Media"]
7
- }
@@ -1 +0,0 @@
1
- {"inputs":{"packages/ui/react-ui-card/src/theme.ts":{"bytes":9584,"imports":[{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-card/src/components/Card.tsx":{"bytes":15142,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-card/src/theme.ts","kind":"import-statement","original":"../theme"}],"format":"esm"},"packages/ui/react-ui-card/src/components/index.ts":{"bytes":468,"imports":[{"path":"packages/ui/react-ui-card/src/components/Card.tsx","kind":"import-statement","original":"./Card"}],"format":"esm"},"packages/ui/react-ui-card/src/index.ts":{"bytes":552,"imports":[{"path":"packages/ui/react-ui-card/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/ui/react-ui-card/src/theme.ts","kind":"import-statement","original":"./theme"}],"format":"esm"}},"outputs":{"packages/ui/react-ui-card/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":12814},"packages/ui/react-ui-card/dist/lib/node/index.cjs":{"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"exports":["Card","CardBody","CardHeader","CardMedia","CardTitle","cardBody","cardDragHandle","cardDragHandleIcon","cardHeader","cardMedia","cardMenu","cardMenuIcon","cardRoot","cardTheme","cardTitle"],"entryPoint":"packages/ui/react-ui-card/src/index.ts","inputs":{"packages/ui/react-ui-card/src/components/Card.tsx":{"bytesInOutput":3911},"packages/ui/react-ui-card/src/theme.ts":{"bytesInOutput":2207},"packages/ui/react-ui-card/src/components/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-card/src/index.ts":{"bytesInOutput":0}},"bytes":6519}}}
@@ -1,202 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
-
3
- // packages/ui/react-ui-card/src/components/Card.tsx
4
- import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
5
- import { Circle, DotsSixVertical, DotsThreeVertical } from "@phosphor-icons/react";
6
- import React, { forwardRef } from "react";
7
- import { useDensityContext, DropdownMenu } from "@dxos/react-ui";
8
-
9
- // packages/ui/react-ui-card/src/theme.ts
10
- import { getSize, attentionSurface, mx } from "@dxos/react-ui-theme";
11
- var defaults = {
12
- width: "min-w-[256px]"
13
- };
14
- var cardRoot = ({ grow, square, rounded = true }, ...etc) => mx("flex flex-col group/card overflow-hidden", grow && "h-full", defaults.width, attentionSurface, "shadow", rounded && "rounded", square && "aspect-square", ...etc);
15
- var cardHeader = ({ floating }, ...etc) => mx(floating ? "relative" : "flex w-full shrink-0 justify-between overflow-hidden items-center py-1", ...etc);
16
- var cardTitle = ({ center }, ...etc) => mx("grow overflow-hidden truncate first:pl-4 last:pr-4", center && "text-center", ...etc);
17
- var cardDragHandle = ({ density, position }, ...etc) => mx("flex shrink-0 items-center justify-center select-none", density === "fine" ? getSize(8) : getSize(10), position === "left" && "absolute top-1 left-1", position === "right" && "absolute top-1 right-1", position && "text-black group-hover/card:bg-white group-hover/card:bg-opacity-80", ...etc);
18
- var cardDragHandleIcon = (_, ...etc) => mx(getSize(5), "cursor-pointer", ...etc);
19
- var cardMenu = ({ density, position }, ...etc) => mx("flex shrink-0 items-center justify-center", density === "fine" ? getSize(8) : getSize(10), position === "left" && "absolute top-1 left-1", position === "right" && "absolute top-1 right-1", position && "text-black group-hover/card:bg-white group-hover/card:bg-opacity-80", ...etc);
20
- var cardMenuIcon = (_, ...etc) => mx(getSize(5), "cursor-pointer");
21
- var cardBody = ({ density, gutter, noPadding }, ...etc) => mx(
22
- "grow overflow-auto",
23
- !noPadding && "px-2",
24
- // TODO(burdon): Create density-specific constants.
25
- gutter && (density === "fine" ? "pl-0 ml-[32px]" : "pl-0 ml-[40px]"),
26
- ...etc
27
- );
28
- var cardMedia = ({ contain }, ...etc) => mx(
29
- "grow max-h-[300px]",
30
- // Hide broken image links (e.g., if offline).
31
- "before:content-['\xA0'] before:block before:w-full before:h-full before:border-0",
32
- contain ? "object-contain" : "object-cover",
33
- ...etc
34
- );
35
- var cardTheme = {
36
- root: cardRoot,
37
- header: cardHeader,
38
- title: cardTitle,
39
- dragHandle: cardDragHandle,
40
- dragHandleIcon: cardDragHandleIcon,
41
- menu: cardMenu,
42
- menuIcon: cardMenuIcon,
43
- body: cardBody,
44
- media: cardMedia
45
- };
46
-
47
- // packages/ui/react-ui-card/src/components/Card.tsx
48
- var CardRoot = /* @__PURE__ */ forwardRef(({ grow, square, noPadding, classNames, children, ...props }, forwardedRef) => {
49
- var _effect = _useSignals();
50
- try {
51
- return /* @__PURE__ */ React.createElement("div", {
52
- ...props,
53
- ref: forwardedRef,
54
- className: cardRoot({
55
- grow,
56
- square,
57
- noPadding
58
- }, classNames)
59
- }, children);
60
- } finally {
61
- _effect.f();
62
- }
63
- });
64
- var CardHeader = ({ floating, classNames, children, ...props }) => {
65
- var _effect = _useSignals();
66
- try {
67
- return /* @__PURE__ */ React.createElement("div", {
68
- ...props,
69
- className: cardHeader({
70
- floating
71
- }, classNames)
72
- }, children);
73
- } finally {
74
- _effect.f();
75
- }
76
- };
77
- var CardTitle = ({ center, title, classNames, ...props }) => {
78
- var _effect = _useSignals();
79
- try {
80
- return /* @__PURE__ */ React.createElement("div", {
81
- ...props,
82
- className: cardTitle({
83
- center
84
- }, classNames)
85
- }, title);
86
- } finally {
87
- _effect.f();
88
- }
89
- };
90
- var CardDragHandle = ({ position, classNames, ...props }) => {
91
- var _effect = _useSignals();
92
- try {
93
- const density = useDensityContext();
94
- return /* @__PURE__ */ React.createElement("div", {
95
- ...props,
96
- className: cardDragHandle({
97
- density,
98
- position
99
- }, classNames)
100
- }, /* @__PURE__ */ React.createElement(DotsSixVertical, {
101
- className: cardDragHandleIcon({})
102
- }));
103
- } finally {
104
- _effect.f();
105
- }
106
- };
107
- var CardEndcap = ({ Icon = Circle, position, classNames, ...props }) => {
108
- var _effect = _useSignals();
109
- try {
110
- const density = useDensityContext();
111
- return /* @__PURE__ */ React.createElement("div", {
112
- ...props,
113
- className: cardMenu({
114
- density,
115
- position
116
- }, classNames)
117
- }, /* @__PURE__ */ React.createElement(Icon, {
118
- className: cardMenuIcon({})
119
- }));
120
- } finally {
121
- _effect.f();
122
- }
123
- };
124
- var CardMenu = /* @__PURE__ */ forwardRef(({ children, position, classNames, ...props }, forwardRef2) => {
125
- var _effect = _useSignals();
126
- try {
127
- const density = useDensityContext();
128
- return /* @__PURE__ */ React.createElement("div", {
129
- ...props,
130
- className: cardMenu({
131
- density,
132
- position
133
- }, classNames),
134
- ref: forwardRef2
135
- }, /* @__PURE__ */ React.createElement(DropdownMenu.Root, null, /* @__PURE__ */ React.createElement(DropdownMenu.Trigger, {
136
- asChild: true
137
- }, /* @__PURE__ */ React.createElement(DotsThreeVertical, {
138
- className: cardMenuIcon({})
139
- })), /* @__PURE__ */ React.createElement(DropdownMenu.Content, null, /* @__PURE__ */ React.createElement(DropdownMenu.Viewport, null, children))));
140
- } finally {
141
- _effect.f();
142
- }
143
- });
144
- var CardBody = ({ gutter, classNames, children, ...props }) => {
145
- var _effect = _useSignals();
146
- try {
147
- const density = useDensityContext();
148
- return /* @__PURE__ */ React.createElement("div", {
149
- ...props,
150
- className: cardBody({
151
- density,
152
- gutter
153
- }, classNames)
154
- }, children);
155
- } finally {
156
- _effect.f();
157
- }
158
- };
159
- var CardMedia = ({ src, contain, classNames, ...props }) => {
160
- var _effect = _useSignals();
161
- try {
162
- return /* @__PURE__ */ React.createElement("div", {
163
- className: "flex grow overflow-hidden"
164
- }, /* @__PURE__ */ React.createElement("img", {
165
- ...props,
166
- className: cardMedia({
167
- contain
168
- }, classNames),
169
- src
170
- }));
171
- } finally {
172
- _effect.f();
173
- }
174
- };
175
- var Card = {
176
- Root: CardRoot,
177
- Header: CardHeader,
178
- DragHandle: CardDragHandle,
179
- Endcap: CardEndcap,
180
- Menu: CardMenu,
181
- Title: CardTitle,
182
- Body: CardBody,
183
- Media: CardMedia
184
- };
185
- export {
186
- Card,
187
- CardBody,
188
- CardHeader,
189
- CardMedia,
190
- CardTitle,
191
- cardBody,
192
- cardDragHandle,
193
- cardDragHandleIcon,
194
- cardHeader,
195
- cardMedia,
196
- cardMenu,
197
- cardMenuIcon,
198
- cardRoot,
199
- cardTheme,
200
- cardTitle
201
- };
202
- //# sourceMappingURL=index.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/Card.tsx", "../../../src/theme.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Circle, DotsSixVertical, DotsThreeVertical, type Icon } from '@phosphor-icons/react';\nimport { type Primitive } from '@radix-ui/react-primitive';\nimport React, {\n type ComponentPropsWithoutRef,\n type ComponentPropsWithRef,\n type FC,\n type PropsWithChildren,\n forwardRef,\n} from 'react';\n\nimport { useDensityContext, DropdownMenu, type ThemedClassName } from '@dxos/react-ui';\n\nimport {\n cardBody,\n cardDragHandle,\n cardDragHandleIcon,\n cardHeader,\n cardMedia,\n cardMenu,\n cardMenuIcon,\n cardRoot,\n cardTitle,\n} from '../theme';\n\ntype CardRootProps = ThemedClassName<ComponentPropsWithRef<typeof Primitive.div>> & {\n grow?: boolean;\n square?: boolean;\n noPadding?: boolean;\n};\n\n// TODO(burdon): Forward refs for all components?\nconst CardRoot = forwardRef<HTMLDivElement, CardRootProps>(\n ({ grow, square, noPadding, classNames, children, ...props }, forwardedRef) => {\n return (\n <div {...props} ref={forwardedRef} className={cardRoot({ grow, square, noPadding }, classNames)}>\n {children}\n </div>\n );\n },\n);\n\ntype CardHeaderProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & { floating?: boolean };\n\nexport const CardHeader: FC<CardHeaderProps> = ({ floating, classNames, children, ...props }) => {\n return (\n <div {...props} className={cardHeader({ floating }, classNames)}>\n {children}\n </div>\n );\n};\n\ntype CardTitleProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & {\n center?: boolean;\n title?: string;\n};\n\nexport const CardTitle: FC<CardTitleProps> = ({ center, title, classNames, ...props }) => {\n return (\n <div {...props} className={cardTitle({ center }, classNames)}>\n {title}\n </div>\n );\n};\n\n// TODO(burdon): Reuse ListItemEndcap?\ntype CardDragHandleProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & { position?: 'left' | 'right' };\n\nconst CardDragHandle: FC<CardDragHandleProps> = ({ position, classNames, ...props }) => {\n const density = useDensityContext();\n return (\n <div {...props} className={cardDragHandle({ density, position }, classNames)}>\n <DotsSixVertical className={cardDragHandleIcon({})} />\n </div>\n );\n};\n\ntype CardEndcapProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & { Icon?: Icon; position?: 'left' | 'right' };\n\nconst CardEndcap: FC<CardEndcapProps> = ({ Icon = Circle, position, classNames, ...props }) => {\n const density = useDensityContext();\n return (\n <div {...props} className={cardMenu({ density, position }, classNames)}>\n <Icon className={cardMenuIcon({})} />\n </div>\n );\n};\n\ntype CardMenuProps = PropsWithChildren<\n ThemedClassName<ComponentPropsWithoutRef<'div'>> & { position?: 'left' | 'right' }\n>;\n\n// TODO(burdon): Reconcile with Endcap (remove dropdown from here). See ListItem.Endcap (style icon/size?)\nconst CardMenu = forwardRef<HTMLDivElement, CardMenuProps>(\n ({ children, position, classNames, ...props }, forwardRef) => {\n const density = useDensityContext();\n return (\n <div {...props} className={cardMenu({ density, position }, classNames)} ref={forwardRef}>\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <DotsThreeVertical className={cardMenuIcon({})} />\n </DropdownMenu.Trigger>\n {/* TODO(burdon): Position to the left of the menu button. */}\n <DropdownMenu.Content>\n <DropdownMenu.Viewport>{children}</DropdownMenu.Viewport>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n </div>\n );\n },\n);\n\ntype CardBodyProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & { gutter?: boolean };\n\nexport const CardBody: FC<CardBodyProps> = ({ gutter, classNames, children, ...props }) => {\n const density = useDensityContext();\n return (\n <div {...props} className={cardBody({ density, gutter }, classNames)}>\n {children}\n </div>\n );\n};\n\ntype CardMediaProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & { src?: string; contain?: boolean };\n\n// TODO(burdon): Option to set to 50% of height of card.\nexport const CardMedia: FC<CardMediaProps> = ({ src, contain, classNames, ...props }) => {\n return (\n <div className='flex grow overflow-hidden'>\n <img {...props} className={cardMedia({ contain }, classNames)} src={src} />\n </div>\n );\n};\n\nexport const Card = {\n Root: CardRoot,\n Header: CardHeader,\n DragHandle: CardDragHandle,\n Endcap: CardEndcap,\n Menu: CardMenu,\n Title: CardTitle,\n Body: CardBody,\n Media: CardMedia,\n};\n\nexport type { CardRootProps };\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type ComponentFunction, type Density, type Theme } from '@dxos/react-ui';\nimport { getSize, attentionSurface, mx } from '@dxos/react-ui-theme';\n\nconst defaults = {\n width: 'min-w-[256px]',\n};\n\nexport type CardStyleProps = Partial<{\n density: Density;\n grow?: boolean;\n square?: boolean;\n rounded?: boolean;\n noPadding?: boolean;\n}>;\n\nexport const cardRoot: ComponentFunction<CardStyleProps> = ({ grow, square, rounded = true }, ...etc) =>\n mx(\n 'flex flex-col group/card overflow-hidden',\n grow && 'h-full',\n defaults.width,\n attentionSurface,\n 'shadow', // TODO(burdon): Elevation?\n rounded && 'rounded',\n square && 'aspect-square',\n ...etc,\n );\n\nexport const cardHeader: ComponentFunction<CardStyleProps & { floating?: boolean }> = ({ floating }, ...etc) =>\n mx(floating ? 'relative' : 'flex w-full shrink-0 justify-between overflow-hidden items-center py-1', ...etc);\n\nexport const cardTitle: ComponentFunction<CardStyleProps & { center?: boolean }> = ({ center }, ...etc) =>\n mx('grow overflow-hidden truncate first:pl-4 last:pr-4', center && 'text-center', ...etc);\n\nexport const cardDragHandle: ComponentFunction<CardStyleProps & { position?: 'left' | 'right' }> = (\n { density, position },\n ...etc\n) =>\n mx(\n 'flex shrink-0 items-center justify-center select-none',\n density === 'fine' ? getSize(8) : getSize(10),\n position === 'left' && 'absolute top-1 left-1',\n position === 'right' && 'absolute top-1 right-1',\n position && 'text-black group-hover/card:bg-white group-hover/card:bg-opacity-80',\n ...etc,\n );\n\nexport const cardDragHandleIcon: ComponentFunction<CardStyleProps> = (_, ...etc) =>\n mx(getSize(5), 'cursor-pointer', ...etc);\n\n// TODO(burdon): Helper for DropdownMenu? Density, etc?\nexport const cardMenu: ComponentFunction<CardStyleProps & { position?: 'left' | 'right' }> = (\n { density, position },\n ...etc\n) =>\n mx(\n 'flex shrink-0 items-center justify-center',\n density === 'fine' ? getSize(8) : getSize(10),\n position === 'left' && 'absolute top-1 left-1',\n position === 'right' && 'absolute top-1 right-1',\n position && 'text-black group-hover/card:bg-white group-hover/card:bg-opacity-80',\n ...etc,\n );\n\nexport const cardMenuIcon: ComponentFunction<CardStyleProps> = (_, ...etc) => mx(getSize(5), 'cursor-pointer');\n\nexport const cardBody: ComponentFunction<CardStyleProps & { gutter?: boolean }> = (\n { density, gutter, noPadding },\n ...etc\n) =>\n mx(\n 'grow overflow-auto',\n !noPadding && 'px-2',\n // TODO(burdon): Create density-specific constants.\n gutter && (density === 'fine' ? 'pl-0 ml-[32px]' : 'pl-0 ml-[40px]'),\n ...etc,\n );\n\nexport const cardMedia: ComponentFunction<CardStyleProps & { contain?: boolean }> = ({ contain }, ...etc) =>\n mx(\n 'grow max-h-[300px]',\n // Hide broken image links (e.g., if offline).\n \"before:content-[' '] before:block before:w-full before:h-full before:border-0\",\n contain ? 'object-contain' : 'object-cover',\n ...etc,\n );\n\nexport const cardTheme: Theme<CardStyleProps> = {\n root: cardRoot,\n header: cardHeader,\n title: cardTitle,\n dragHandle: cardDragHandle,\n dragHandleIcon: cardDragHandleIcon,\n menu: cardMenu,\n menuIcon: cardMenuIcon,\n body: cardBody,\n media: cardMedia,\n};\n"],
5
- "mappings": "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",
6
- "names": ["Circle", "DotsSixVertical", "DotsThreeVertical", "React", "forwardRef", "useDensityContext", "DropdownMenu", "getSize", "attentionSurface", "mx", "defaults", "width", "cardRoot", "grow", "square", "rounded", "etc", "mx", "attentionSurface", "cardHeader", "floating", "cardTitle", "center", "cardDragHandle", "density", "position", "getSize", "cardDragHandleIcon", "_", "cardMenu", "cardMenuIcon", "cardBody", "gutter", "noPadding", "cardMedia", "contain", "cardTheme", "root", "header", "title", "dragHandle", "dragHandleIcon", "menu", "menuIcon", "body", "media", "CardRoot", "forwardRef", "grow", "square", "noPadding", "classNames", "children", "props", "forwardedRef", "div", "ref", "className", "cardRoot", "CardHeader", "floating", "cardHeader", "CardTitle", "center", "title", "cardTitle", "CardDragHandle", "position", "density", "useDensityContext", "cardDragHandle", "DotsSixVertical", "cardDragHandleIcon", "CardEndcap", "Icon", "Circle", "cardMenu", "cardMenuIcon", "CardMenu", "DropdownMenu", "Root", "Trigger", "asChild", "DotsThreeVertical", "Content", "Viewport", "CardBody", "gutter", "cardBody", "CardMedia", "src", "contain", "img", "cardMedia", "Card", "Header", "DragHandle", "Endcap", "Menu", "Title", "Body", "Media"]
7
- }
@@ -1 +0,0 @@
1
- {"inputs":{"packages/ui/react-ui-card/src/theme.ts":{"bytes":9584,"imports":[{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-card/src/components/Card.tsx":{"bytes":15142,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-card/src/theme.ts","kind":"import-statement","original":"../theme"}],"format":"esm"},"packages/ui/react-ui-card/src/components/index.ts":{"bytes":468,"imports":[{"path":"packages/ui/react-ui-card/src/components/Card.tsx","kind":"import-statement","original":"./Card"}],"format":"esm"},"packages/ui/react-ui-card/src/index.ts":{"bytes":552,"imports":[{"path":"packages/ui/react-ui-card/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/ui/react-ui-card/src/theme.ts","kind":"import-statement","original":"./theme"}],"format":"esm"}},"outputs":{"packages/ui/react-ui-card/dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":12816},"packages/ui/react-ui-card/dist/lib/node-esm/index.mjs":{"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"exports":["Card","CardBody","CardHeader","CardMedia","CardTitle","cardBody","cardDragHandle","cardDragHandleIcon","cardHeader","cardMedia","cardMenu","cardMenuIcon","cardRoot","cardTheme","cardTitle"],"entryPoint":"packages/ui/react-ui-card/src/index.ts","inputs":{"packages/ui/react-ui-card/src/components/Card.tsx":{"bytesInOutput":3911},"packages/ui/react-ui-card/src/theme.ts":{"bytesInOutput":2207},"packages/ui/react-ui-card/src/components/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-card/src/index.ts":{"bytesInOutput":0}},"bytes":6612}}}
@@ -1,52 +0,0 @@
1
- import { type Icon } from '@phosphor-icons/react';
2
- import { type Primitive } from '@radix-ui/react-primitive';
3
- import React, { type ComponentPropsWithoutRef, type ComponentPropsWithRef, type FC } from 'react';
4
- import { type ThemedClassName } from '@dxos/react-ui';
5
- type CardRootProps = ThemedClassName<ComponentPropsWithRef<typeof Primitive.div>> & {
6
- grow?: boolean;
7
- square?: boolean;
8
- noPadding?: boolean;
9
- };
10
- type CardHeaderProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & {
11
- floating?: boolean;
12
- };
13
- export declare const CardHeader: FC<CardHeaderProps>;
14
- type CardTitleProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & {
15
- center?: boolean;
16
- title?: string;
17
- };
18
- export declare const CardTitle: FC<CardTitleProps>;
19
- type CardDragHandleProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & {
20
- position?: 'left' | 'right';
21
- };
22
- type CardEndcapProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & {
23
- Icon?: Icon;
24
- position?: 'left' | 'right';
25
- };
26
- type CardBodyProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & {
27
- gutter?: boolean;
28
- };
29
- export declare const CardBody: FC<CardBodyProps>;
30
- type CardMediaProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & {
31
- src?: string;
32
- contain?: boolean;
33
- };
34
- export declare const CardMedia: FC<CardMediaProps>;
35
- export declare const Card: {
36
- Root: React.ForwardRefExoticComponent<Omit<CardRootProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
37
- Header: React.FC<CardHeaderProps>;
38
- DragHandle: React.FC<CardDragHandleProps>;
39
- Endcap: React.FC<CardEndcapProps>;
40
- Menu: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "className"> & {
41
- classNames?: import("@dxos/react-ui-types").ClassNameValue;
42
- } & {
43
- position?: "left" | "right";
44
- } & {
45
- children?: React.ReactNode | undefined;
46
- } & React.RefAttributes<HTMLDivElement>>;
47
- Title: React.FC<CardTitleProps>;
48
- Body: React.FC<CardBodyProps>;
49
- Media: React.FC<CardMediaProps>;
50
- };
51
- export type { CardRootProps };
52
- //# sourceMappingURL=Card.d.ts.map