@oxy.so/bloom 7.3.0 → 7.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/adoption-matrix.mdx +8 -8
- package/docs/appearance.mdx +1 -1
- package/docs/card.mdx +14 -0
- package/docs/content-panel.mdx +17 -0
- package/docs/mail-thread.mdx +9 -1
- package/lib/commonjs/card/Card.js +6 -2
- package/lib/commonjs/card/Card.js.map +1 -1
- package/lib/commonjs/content-panel/ContentPanel.js +10 -7
- package/lib/commonjs/content-panel/ContentPanel.js.map +1 -1
- package/lib/commonjs/content-panel/ContentPanel.web.js +12 -7
- package/lib/commonjs/content-panel/ContentPanel.web.js.map +1 -1
- package/lib/commonjs/mail-thread/MailMessage.js +1 -1
- package/lib/commonjs/mail-thread/MailMessage.js.map +1 -1
- package/lib/commonjs/mail-thread/MailThread.js +3 -4
- package/lib/commonjs/mail-thread/MailThread.js.map +1 -1
- package/lib/commonjs/mail-thread/shared.js +3 -3
- package/lib/commonjs/mail-thread/shared.js.map +1 -1
- package/lib/module/card/Card.js +6 -2
- package/lib/module/card/Card.js.map +1 -1
- package/lib/module/content-panel/ContentPanel.js +11 -8
- package/lib/module/content-panel/ContentPanel.js.map +1 -1
- package/lib/module/content-panel/ContentPanel.web.js +13 -8
- package/lib/module/content-panel/ContentPanel.web.js.map +1 -1
- package/lib/module/mail-thread/MailMessage.js +1 -1
- package/lib/module/mail-thread/MailMessage.js.map +1 -1
- package/lib/module/mail-thread/MailThread.js +1 -2
- package/lib/module/mail-thread/MailThread.js.map +1 -1
- package/lib/module/mail-thread/shared.js +3 -3
- package/lib/module/mail-thread/shared.js.map +1 -1
- package/lib/typescript/commonjs/card/Card.d.ts.map +1 -1
- package/lib/typescript/commonjs/card/types.d.ts +5 -5
- package/lib/typescript/commonjs/card/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/content-panel/ContentPanel.d.ts.map +1 -1
- package/lib/typescript/commonjs/content-panel/ContentPanel.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/content-panel/types.d.ts +7 -0
- package/lib/typescript/commonjs/content-panel/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/mail-thread/MailThread.d.ts.map +1 -1
- package/lib/typescript/commonjs/mail-thread/shared.d.ts +2 -2
- package/lib/typescript/commonjs/mail-thread/shared.d.ts.map +1 -1
- package/lib/typescript/commonjs/note-card/shared.d.ts +1 -1
- package/lib/typescript/commonjs/note-card/shared.d.ts.map +1 -1
- package/lib/typescript/module/card/Card.d.ts.map +1 -1
- package/lib/typescript/module/card/types.d.ts +5 -5
- package/lib/typescript/module/card/types.d.ts.map +1 -1
- package/lib/typescript/module/content-panel/ContentPanel.d.ts.map +1 -1
- package/lib/typescript/module/content-panel/ContentPanel.web.d.ts.map +1 -1
- package/lib/typescript/module/content-panel/types.d.ts +7 -0
- package/lib/typescript/module/content-panel/types.d.ts.map +1 -1
- package/lib/typescript/module/mail-thread/MailThread.d.ts.map +1 -1
- package/lib/typescript/module/mail-thread/shared.d.ts +2 -2
- package/lib/typescript/module/mail-thread/shared.d.ts.map +1 -1
- package/lib/typescript/module/note-card/shared.d.ts +1 -1
- package/lib/typescript/module/note-card/shared.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/card/Card.tsx +6 -2
- package/src/card/types.ts +5 -5
- package/src/content-panel/ContentPanel.tsx +13 -10
- package/src/content-panel/ContentPanel.web.tsx +13 -9
- package/src/content-panel/types.ts +7 -0
- package/src/mail-thread/MailMessage.tsx +1 -1
- package/src/mail-thread/MailThread.tsx +0 -2
- package/src/mail-thread/shared.ts +3 -3
- package/src/note-card/shared.ts +1 -1
|
@@ -12,11 +12,11 @@ import type { ShadowRole } from '../design-tokens/shadows';
|
|
|
12
12
|
* `elevation` instead of asking for a new appearance.
|
|
13
13
|
*/
|
|
14
14
|
/**
|
|
15
|
-
* A rung of the `RADIUS` scale
|
|
16
|
-
*
|
|
17
|
-
*
|
|
15
|
+
* A rung of the `RADIUS` scale, or `panel` to inherit BloomScope.panelRadius
|
|
16
|
+
* and the shared circular panel curve. Other cards retain the fixed radius
|
|
17
|
+
* scale, so their geometry does not change with the workspace setting.
|
|
18
18
|
*/
|
|
19
|
-
export type CardRadius = keyof typeof RADIUS;
|
|
19
|
+
export type CardRadius = keyof typeof RADIUS | 'panel';
|
|
20
20
|
/** Elevation role, or none. Resolved through `bloomShadowStyle`, which owns the platform split. */
|
|
21
21
|
export type CardElevation = 'none' | ShadowRole;
|
|
22
22
|
/** Border width role. `thin` is the 1px default; `hairline` is the 0.5px `BORDER_WIDTH.hairline`. */
|
|
@@ -28,7 +28,7 @@ export interface CardProps {
|
|
|
28
28
|
/** Preset background + border + elevation. Default `solid` with small elevation. */
|
|
29
29
|
appearance?: BloomAppearance;
|
|
30
30
|
tone?: BloomTone;
|
|
31
|
-
/** Corner rung.
|
|
31
|
+
/** Corner rung, or panel to inherit BloomScope.panelRadius and the shared circular curve. Default radius-12. */
|
|
32
32
|
radius?: CardRadius;
|
|
33
33
|
/** Platform-adaptive curve. radius-max remains circular. */
|
|
34
34
|
cornerCurve?: CornerCurve;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/card/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE/E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D;;;;;;;GAOG;AAEH;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/card/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentPanel.d.ts","sourceRoot":"","sources":["../../../../src/content-panel/ContentPanel.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,KAAe,MAAM,OAAO,CAAC;AAapC,OAAO,KAAK,EAAgC,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE/E;;;GAGG;AACH,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,wDAAwD;AACxD,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,2DAA2D;AAC3D,eAAO,MAAM,kBAAkB,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"ContentPanel.d.ts","sourceRoot":"","sources":["../../../../src/content-panel/ContentPanel.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,KAAe,MAAM,OAAO,CAAC;AAapC,OAAO,KAAK,EAAgC,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE/E;;;GAGG;AACH,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,wDAAwD;AACxD,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,2DAA2D;AAC3D,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAkHpC,eAAO,MAAM,YAAY,+CAA8B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentPanel.web.d.ts","sourceRoot":"","sources":["../../../../src/content-panel/ContentPanel.web.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsFG;AACH,OAAO,KAAmC,MAAM,OAAO,CAAC;AAiBxD,OAAO,KAAK,EAAgC,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE/E,+DAA+D;AAC/D,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,6DAA6D;AAC7D,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,2DAA2D;AAC3D,eAAO,MAAM,kBAAkB,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"ContentPanel.web.d.ts","sourceRoot":"","sources":["../../../../src/content-panel/ContentPanel.web.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsFG;AACH,OAAO,KAAmC,MAAM,OAAO,CAAC;AAiBxD,OAAO,KAAK,EAAgC,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE/E,+DAA+D;AAC/D,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,6DAA6D;AAC7D,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,2DAA2D;AAC3D,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAyQpC,eAAO,MAAM,YAAY,+CAA8B,CAAC"}
|
|
@@ -15,6 +15,13 @@ export type ContentPanelFramedBreakpoint = 500 | 640 | 768 | 1024;
|
|
|
15
15
|
export type ContentPanelChrome = 'elevated' | 'border' | 'none';
|
|
16
16
|
export interface ContentPanelProps {
|
|
17
17
|
children: React.ReactNode;
|
|
18
|
+
/**
|
|
19
|
+
* `solid` (default) paints a panel surface. `plain` keeps layout, framing and
|
|
20
|
+
* clipping while leaving the enclosing surface visible, without material,
|
|
21
|
+
* border or shadow. Descendants inherit the parent's surface level and fill.
|
|
22
|
+
* In plain mode surface background overrides and surfaceColor are ignored.
|
|
23
|
+
*/
|
|
24
|
+
appearance?: 'solid' | 'plain';
|
|
18
25
|
/** Opt in to local themed error recovery. Split panes already provide their own boundaries. */
|
|
19
26
|
errorBoundary?: boolean | PanelErrorBoundaryOptions;
|
|
20
27
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/content-panel/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9D;;;;;;;;GAQG;AACH,MAAM,MAAM,4BAA4B,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;AAElE,kDAAkD;AAClD,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEhE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,+FAA+F;IAC/F,aAAa,CAAC,EAAE,OAAO,GAAG,yBAAyB,CAAC;IACpD;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,4BAA4B,CAAC;IAC1C;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACpC;;;;;;;;;;;;;;;;;;OAkBG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACpC;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;;;;;;OAgBG;IACH,aAAa,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;IACrC;;;;;;;;;;;;;;;OAeG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACzD"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/content-panel/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9D;;;;;;;;GAQG;AACH,MAAM,MAAM,4BAA4B,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;AAElE,kDAAkD;AAClD,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEhE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC/B,+FAA+F;IAC/F,aAAa,CAAC,EAAE,OAAO,GAAG,yBAAyB,CAAC;IACpD;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,4BAA4B,CAAC;IAC1C;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACpC;;;;;;;;;;;;;;;;;;OAkBG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACpC;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;;;;;;OAgBG;IACH,aAAa,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;IACrC;;;;;;;;;;;;;;;OAeG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACzD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MailThread.d.ts","sourceRoot":"","sources":["../../../../src/mail-thread/MailThread.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MailThread.d.ts","sourceRoot":"","sources":["../../../../src/mail-thread/MailThread.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,MAAM,EACN,OAAe,EACf,eAAe,EACf,QAAQ,EACR,WAAW,EACX,mBAAmB,EACnB,aAAiB,EACjB,UAAqB,EACrB,UAAU,EACV,MAAM,EACN,OAAO,EACP,kBAAkB,EAClB,KAAK,EACL,MAAM,GACP,EAAE,eAAe,2CAmIjB"}
|
|
@@ -26,8 +26,8 @@ export declare const MAIL_THREAD_GEOMETRY: {
|
|
|
26
26
|
readonly glyph: 16;
|
|
27
27
|
/** The star and the overflow trigger. A touch target, so 44. */
|
|
28
28
|
readonly action: 44;
|
|
29
|
-
/**
|
|
30
|
-
readonly radius:
|
|
29
|
+
/** Default radius; rendered messages inherit BloomScope.panelRadius via Card. */
|
|
30
|
+
readonly radius: 28;
|
|
31
31
|
};
|
|
32
32
|
/**
|
|
33
33
|
* How far the BODY is indented, so it starts under the sender's name rather
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/mail-thread/shared.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjF,eAAO,MAAM,MAAM,SAAwB,CAAC;AAU5C;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAE5D;AAED,eAAO,MAAM,oBAAoB;IAC/B,4CAA4C;;IAE5C,mEAAmE;;IAEnE,wCAAwC;;IAExC,4BAA4B;;IAE5B,8CAA8C;;IAE9C,gEAAgE;;IAEhE,
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/mail-thread/shared.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjF,eAAO,MAAM,MAAM,SAAwB,CAAC;AAU5C;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAE5D;AAED,eAAO,MAAM,oBAAoB;IAC/B,4CAA4C;;IAE5C,mEAAmE;;IAEnE,wCAAwC;;IAExC,4BAA4B;;IAE5B,8CAA8C;;IAE9C,gEAAgE;;IAEhE,iFAAiF;;CAEzE,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,eAAe,QAGF,CAAC;AAM3B;;;GAGG;AACH,eAAO,MAAM,2BAA2B,EAAE,iBAA2C,CAAC;AAEtF,kGAAkG;AAClG,wBAAgB,iBAAiB,CAC/B,SAAS,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,EACtC,IAAI,GAAE,iBAA+C,GACpD,iBAAiB,CAEnB;AAMD,8EAA8E;AAC9E,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAExD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,SAAS,WAAW,EAAE,EACjC,GAAG,EAAE,MAAM,GACV;IAAE,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAGrD;AAED,6CAA6C;AAC7C,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAEjE;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,SAAS,iBAAiB,EAAE,EACtC,aAAa,EAAE,MAAM,GACpB,eAAe,EAAE,CAenB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,GAAG,MAAM,EAAE,CAGnF;AAMD,eAAO,MAAM,oBAAoB,8BAA8B,CAAC;AAIhE,eAAO,MAAM,eAAe,wPAU3B,CAAC"}
|
|
@@ -31,7 +31,7 @@ export interface NoteCardGeometry {
|
|
|
31
31
|
padding: number;
|
|
32
32
|
gap: number;
|
|
33
33
|
/** A rung of the `RADIUS` scale — `Card` takes the rung, the focus ring takes its px. */
|
|
34
|
-
radius: CardRadius
|
|
34
|
+
radius: Exclude<CardRadius, 'panel'>;
|
|
35
35
|
excerptLines: number;
|
|
36
36
|
titleLines: number;
|
|
37
37
|
maxTags: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/note-card/shared.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAE9E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,yFAAyF;IACzF,MAAM,EAAE,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/note-card/shared.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAE9E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,yFAAyF;IACzF,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,eAAe,EAAE,gBAAgB,CAoBxE,CAAC;AAEF,MAAM,WAAW,aAAc,SAAQ,gBAAgB;IACrD,gGAAgG;IAChG,UAAU,EAAE,MAAM,CAAC;IACnB,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,cAAc,EAAE,MAAM,CAAC;IACvB,6FAA6F;IAC7F,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gEAAgE;IAChE,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAK9D;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,UAAU,GAAG,SAAS,GAC3B,aAAa,CAmBf;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAElF;AAED,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAEjE;AAED,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC,GAAG,MAAM,CAIjG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../../src/card/Card.tsx"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,EAAoB,IAAI,EAAkB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../../src/card/Card.tsx"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,EAAoB,IAAI,EAAkB,MAAM,cAAc,CAAC;AAetE,OAAO,KAAK,EACV,SAAS,EAGT,eAAe,EACf,aAAa,EACb,eAAe,EACf,cAAc,EACd,oBAAoB,EACrB,MAAM,SAAS,CAAC;AA8PjB,eAAO,MAAM,IAAI,mEAAmB,CAAC;AAGrC,eAAO,MAAM,UAAU,6CAA4B,CAAC;AAGpD,eAAO,MAAM,QAAQ,2CAA0B,CAAC;AAGhD,eAAO,MAAM,UAAU,6CAA4B,CAAC;AAGpD,eAAO,MAAM,SAAS,4CAA2B,CAAC;AAGlD,eAAO,MAAM,eAAe,kDAAiC,CAAC"}
|
|
@@ -12,11 +12,11 @@ import type { ShadowRole } from '../design-tokens/shadows';
|
|
|
12
12
|
* `elevation` instead of asking for a new appearance.
|
|
13
13
|
*/
|
|
14
14
|
/**
|
|
15
|
-
* A rung of the `RADIUS` scale
|
|
16
|
-
*
|
|
17
|
-
*
|
|
15
|
+
* A rung of the `RADIUS` scale, or `panel` to inherit BloomScope.panelRadius
|
|
16
|
+
* and the shared circular panel curve. Other cards retain the fixed radius
|
|
17
|
+
* scale, so their geometry does not change with the workspace setting.
|
|
18
18
|
*/
|
|
19
|
-
export type CardRadius = keyof typeof RADIUS;
|
|
19
|
+
export type CardRadius = keyof typeof RADIUS | 'panel';
|
|
20
20
|
/** Elevation role, or none. Resolved through `bloomShadowStyle`, which owns the platform split. */
|
|
21
21
|
export type CardElevation = 'none' | ShadowRole;
|
|
22
22
|
/** Border width role. `thin` is the 1px default; `hairline` is the 0.5px `BORDER_WIDTH.hairline`. */
|
|
@@ -28,7 +28,7 @@ export interface CardProps {
|
|
|
28
28
|
/** Preset background + border + elevation. Default `solid` with small elevation. */
|
|
29
29
|
appearance?: BloomAppearance;
|
|
30
30
|
tone?: BloomTone;
|
|
31
|
-
/** Corner rung.
|
|
31
|
+
/** Corner rung, or panel to inherit BloomScope.panelRadius and the shared circular curve. Default radius-12. */
|
|
32
32
|
radius?: CardRadius;
|
|
33
33
|
/** Platform-adaptive curve. radius-max remains circular. */
|
|
34
34
|
cornerCurve?: CornerCurve;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/card/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE/E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D;;;;;;;GAOG;AAEH;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/card/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentPanel.d.ts","sourceRoot":"","sources":["../../../../src/content-panel/ContentPanel.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,KAAe,MAAM,OAAO,CAAC;AAapC,OAAO,KAAK,EAAgC,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE/E;;;GAGG;AACH,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,wDAAwD;AACxD,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,2DAA2D;AAC3D,eAAO,MAAM,kBAAkB,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"ContentPanel.d.ts","sourceRoot":"","sources":["../../../../src/content-panel/ContentPanel.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,KAAe,MAAM,OAAO,CAAC;AAapC,OAAO,KAAK,EAAgC,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE/E;;;GAGG;AACH,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,wDAAwD;AACxD,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,2DAA2D;AAC3D,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAkHpC,eAAO,MAAM,YAAY,+CAA8B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentPanel.web.d.ts","sourceRoot":"","sources":["../../../../src/content-panel/ContentPanel.web.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsFG;AACH,OAAO,KAAmC,MAAM,OAAO,CAAC;AAiBxD,OAAO,KAAK,EAAgC,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE/E,+DAA+D;AAC/D,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,6DAA6D;AAC7D,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,2DAA2D;AAC3D,eAAO,MAAM,kBAAkB,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"ContentPanel.web.d.ts","sourceRoot":"","sources":["../../../../src/content-panel/ContentPanel.web.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsFG;AACH,OAAO,KAAmC,MAAM,OAAO,CAAC;AAiBxD,OAAO,KAAK,EAAgC,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE/E,+DAA+D;AAC/D,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,6DAA6D;AAC7D,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,2DAA2D;AAC3D,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAyQpC,eAAO,MAAM,YAAY,+CAA8B,CAAC"}
|
|
@@ -15,6 +15,13 @@ export type ContentPanelFramedBreakpoint = 500 | 640 | 768 | 1024;
|
|
|
15
15
|
export type ContentPanelChrome = 'elevated' | 'border' | 'none';
|
|
16
16
|
export interface ContentPanelProps {
|
|
17
17
|
children: React.ReactNode;
|
|
18
|
+
/**
|
|
19
|
+
* `solid` (default) paints a panel surface. `plain` keeps layout, framing and
|
|
20
|
+
* clipping while leaving the enclosing surface visible, without material,
|
|
21
|
+
* border or shadow. Descendants inherit the parent's surface level and fill.
|
|
22
|
+
* In plain mode surface background overrides and surfaceColor are ignored.
|
|
23
|
+
*/
|
|
24
|
+
appearance?: 'solid' | 'plain';
|
|
18
25
|
/** Opt in to local themed error recovery. Split panes already provide their own boundaries. */
|
|
19
26
|
errorBoundary?: boolean | PanelErrorBoundaryOptions;
|
|
20
27
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/content-panel/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9D;;;;;;;;GAQG;AACH,MAAM,MAAM,4BAA4B,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;AAElE,kDAAkD;AAClD,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEhE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,+FAA+F;IAC/F,aAAa,CAAC,EAAE,OAAO,GAAG,yBAAyB,CAAC;IACpD;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,4BAA4B,CAAC;IAC1C;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACpC;;;;;;;;;;;;;;;;;;OAkBG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACpC;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;;;;;;OAgBG;IACH,aAAa,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;IACrC;;;;;;;;;;;;;;;OAeG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACzD"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/content-panel/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9D;;;;;;;;GAQG;AACH,MAAM,MAAM,4BAA4B,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;AAElE,kDAAkD;AAClD,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEhE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC/B,+FAA+F;IAC/F,aAAa,CAAC,EAAE,OAAO,GAAG,yBAAyB,CAAC;IACpD;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,4BAA4B,CAAC;IAC1C;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACpC;;;;;;;;;;;;;;;;;;OAkBG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACpC;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;;;;;;OAgBG;IACH,aAAa,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;IACrC;;;;;;;;;;;;;;;OAeG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACzD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MailThread.d.ts","sourceRoot":"","sources":["../../../../src/mail-thread/MailThread.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MailThread.d.ts","sourceRoot":"","sources":["../../../../src/mail-thread/MailThread.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,MAAM,EACN,OAAe,EACf,eAAe,EACf,QAAQ,EACR,WAAW,EACX,mBAAmB,EACnB,aAAiB,EACjB,UAAqB,EACrB,UAAU,EACV,MAAM,EACN,OAAO,EACP,kBAAkB,EAClB,KAAK,EACL,MAAM,GACP,EAAE,eAAe,2CAmIjB"}
|
|
@@ -26,8 +26,8 @@ export declare const MAIL_THREAD_GEOMETRY: {
|
|
|
26
26
|
readonly glyph: 16;
|
|
27
27
|
/** The star and the overflow trigger. A touch target, so 44. */
|
|
28
28
|
readonly action: 44;
|
|
29
|
-
/**
|
|
30
|
-
readonly radius:
|
|
29
|
+
/** Default radius; rendered messages inherit BloomScope.panelRadius via Card. */
|
|
30
|
+
readonly radius: 28;
|
|
31
31
|
};
|
|
32
32
|
/**
|
|
33
33
|
* How far the BODY is indented, so it starts under the sender's name rather
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/mail-thread/shared.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjF,eAAO,MAAM,MAAM,SAAwB,CAAC;AAU5C;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAE5D;AAED,eAAO,MAAM,oBAAoB;IAC/B,4CAA4C;;IAE5C,mEAAmE;;IAEnE,wCAAwC;;IAExC,4BAA4B;;IAE5B,8CAA8C;;IAE9C,gEAAgE;;IAEhE,
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/mail-thread/shared.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjF,eAAO,MAAM,MAAM,SAAwB,CAAC;AAU5C;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAE5D;AAED,eAAO,MAAM,oBAAoB;IAC/B,4CAA4C;;IAE5C,mEAAmE;;IAEnE,wCAAwC;;IAExC,4BAA4B;;IAE5B,8CAA8C;;IAE9C,gEAAgE;;IAEhE,iFAAiF;;CAEzE,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,eAAe,QAGF,CAAC;AAM3B;;;GAGG;AACH,eAAO,MAAM,2BAA2B,EAAE,iBAA2C,CAAC;AAEtF,kGAAkG;AAClG,wBAAgB,iBAAiB,CAC/B,SAAS,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,EACtC,IAAI,GAAE,iBAA+C,GACpD,iBAAiB,CAEnB;AAMD,8EAA8E;AAC9E,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAExD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,SAAS,WAAW,EAAE,EACjC,GAAG,EAAE,MAAM,GACV;IAAE,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAGrD;AAED,6CAA6C;AAC7C,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAEjE;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,SAAS,iBAAiB,EAAE,EACtC,aAAa,EAAE,MAAM,GACpB,eAAe,EAAE,CAenB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,GAAG,MAAM,EAAE,CAGnF;AAMD,eAAO,MAAM,oBAAoB,8BAA8B,CAAC;AAIhE,eAAO,MAAM,eAAe,wPAU3B,CAAC"}
|
|
@@ -31,7 +31,7 @@ export interface NoteCardGeometry {
|
|
|
31
31
|
padding: number;
|
|
32
32
|
gap: number;
|
|
33
33
|
/** A rung of the `RADIUS` scale — `Card` takes the rung, the focus ring takes its px. */
|
|
34
|
-
radius: CardRadius
|
|
34
|
+
radius: Exclude<CardRadius, 'panel'>;
|
|
35
35
|
excerptLines: number;
|
|
36
36
|
titleLines: number;
|
|
37
37
|
maxTags: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/note-card/shared.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAE9E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,yFAAyF;IACzF,MAAM,EAAE,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/note-card/shared.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAE9E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,yFAAyF;IACzF,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,eAAe,EAAE,gBAAgB,CAoBxE,CAAC;AAEF,MAAM,WAAW,aAAc,SAAQ,gBAAgB;IACrD,gGAAgG;IAChG,UAAU,EAAE,MAAM,CAAC;IACnB,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,cAAc,EAAE,MAAM,CAAC;IACvB,6FAA6F;IAC7F,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gEAAgE;IAChE,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAK9D;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,UAAU,GAAG,SAAS,GAC3B,aAAa,CAmBf;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAElF;AAED,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAEjE;AAED,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC,GAAG,MAAM,CAIjG"}
|
package/package.json
CHANGED
package/src/card/Card.tsx
CHANGED
|
@@ -38,6 +38,7 @@ import { bloomShadowStyle } from '../design-tokens/shadows';
|
|
|
38
38
|
import { useInteractionState } from '../hooks/use-interaction-state';
|
|
39
39
|
import { StyledPressable, StyledView } from '../styles/styled-primitives';
|
|
40
40
|
import { space } from '../styles/tokens';
|
|
41
|
+
import { usePanelShape } from '../styles/panel-chrome';
|
|
41
42
|
import type {
|
|
42
43
|
CardProps,
|
|
43
44
|
CardBorder,
|
|
@@ -75,7 +76,7 @@ const CardRootComponent = React.forwardRef<View, CardProps>(function CardRootCom
|
|
|
75
76
|
appearance: appearanceProp,
|
|
76
77
|
tone: toneProp,
|
|
77
78
|
radius,
|
|
78
|
-
cornerCurve
|
|
79
|
+
cornerCurve: cornerCurveProp,
|
|
79
80
|
clipContent = false,
|
|
80
81
|
contentStyle,
|
|
81
82
|
elevation,
|
|
@@ -92,7 +93,10 @@ const CardRootComponent = React.forwardRef<View, CardProps>(function CardRootCom
|
|
|
92
93
|
const theme = useTheme();
|
|
93
94
|
const layer = useSurfaceLayer();
|
|
94
95
|
const parentLevel = useSurfaceLevelValue();
|
|
95
|
-
const
|
|
96
|
+
const panelShape = usePanelShape();
|
|
97
|
+
const cornerCurve = cornerCurveProp ?? (radius === 'panel' ? panelShape.curve : SURFACE_SHAPES.card.curve);
|
|
98
|
+
const explicitRadius = radius === 'panel' ? panelShape.radius : radius ? RADIUS[radius] : undefined;
|
|
99
|
+
const resolvedGeometry = resolveSurfaceGeometry(explicitRadius, style, RADIUS['radius-12'], cornerCurve);
|
|
96
100
|
const appearance = appearanceProp ?? 'solid';
|
|
97
101
|
const {tone} = useBloomAppearance({tone: toneProp}, {size: 'md', tone: 'neutral'});
|
|
98
102
|
const paint = resolveBloomColors(theme.colors, tone, appearance);
|
package/src/card/types.ts
CHANGED
|
@@ -15,11 +15,11 @@ import type { ShadowRole } from '../design-tokens/shadows';
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
|
-
* A rung of the `RADIUS` scale
|
|
19
|
-
*
|
|
20
|
-
*
|
|
18
|
+
* A rung of the `RADIUS` scale, or `panel` to inherit BloomScope.panelRadius
|
|
19
|
+
* and the shared circular panel curve. Other cards retain the fixed radius
|
|
20
|
+
* scale, so their geometry does not change with the workspace setting.
|
|
21
21
|
*/
|
|
22
|
-
export type CardRadius = keyof typeof RADIUS;
|
|
22
|
+
export type CardRadius = keyof typeof RADIUS | 'panel';
|
|
23
23
|
|
|
24
24
|
/** Elevation role, or none. Resolved through `bloomShadowStyle`, which owns the platform split. */
|
|
25
25
|
export type CardElevation = 'none' | ShadowRole;
|
|
@@ -44,7 +44,7 @@ export interface CardProps {
|
|
|
44
44
|
/** Preset background + border + elevation. Default `solid` with small elevation. */
|
|
45
45
|
appearance?: BloomAppearance;
|
|
46
46
|
tone?: BloomTone;
|
|
47
|
-
/** Corner rung.
|
|
47
|
+
/** Corner rung, or panel to inherit BloomScope.panelRadius and the shared circular curve. Default radius-12. */
|
|
48
48
|
radius?: CardRadius;
|
|
49
49
|
/** Platform-adaptive curve. radius-max remains circular. */
|
|
50
50
|
cornerCurve?: CornerCurve;
|
|
@@ -38,7 +38,7 @@ import { StyleSheet, useWindowDimensions } from 'react-native';
|
|
|
38
38
|
import { useOptionalPanelChrome, usePanelShape } from '../styles/panel-chrome';
|
|
39
39
|
import { surfaceStyle as resolveShapeStyle } from '../shapes/surface-style';
|
|
40
40
|
import { StyledView } from '../styles/styled-primitives';
|
|
41
|
-
import { SurfaceLevelProvider, surfaceFillVars, useOptionalSurfaceFill } from '../styles/surface-levels';
|
|
41
|
+
import { SurfaceLevelProvider, surfaceFillVars, useOptionalSurfaceFill, useSurfaceLevelValue } from '../styles/surface-levels';
|
|
42
42
|
import {
|
|
43
43
|
ContentPanelNestingContext,
|
|
44
44
|
useContentPanelNestingGuard,
|
|
@@ -80,6 +80,7 @@ const RESPONSIVE_CONTENT: Record<ContentPanelFramedBreakpoint, string> = {
|
|
|
80
80
|
const ContentPanelComponent: React.FC<ContentPanelProps> = ({
|
|
81
81
|
children,
|
|
82
82
|
errorBoundary = false,
|
|
83
|
+
appearance = 'solid',
|
|
83
84
|
framed,
|
|
84
85
|
framedFrom = 768,
|
|
85
86
|
fill = false,
|
|
@@ -100,8 +101,10 @@ const ContentPanelComponent: React.FC<ContentPanelProps> = ({
|
|
|
100
101
|
const defaultFill = rawFill;
|
|
101
102
|
const { width } = useWindowDimensions();
|
|
102
103
|
const parentFill = useOptionalSurfaceFill();
|
|
103
|
-
const
|
|
104
|
-
const
|
|
104
|
+
const parentLevel = useSurfaceLevelValue();
|
|
105
|
+
const isPlain = appearance === 'plain';
|
|
106
|
+
const paintsSurface = !isPlain && Boolean(defaultFill) && parentFill !== undefined && (framed ?? width >= framedFrom) && chrome !== 'none';
|
|
107
|
+
const publishedFill = isPlain ? parentFill : rawFill && paintsSurface ? resolveSurfaceMaterial({ fill: rawFill, parentFill: parentFill! }).publishedFill : rawFill;
|
|
105
108
|
const radius = StyleSheet.flatten(surfaceStyle)?.borderRadius ?? panelShape.radius;
|
|
106
109
|
const isFramed = framed ?? width >= framedFrom;
|
|
107
110
|
const geometry = { ...resolveShapeStyle({ curve: panelShape.curve }), borderRadius: isFramed ? radius : 0 };
|
|
@@ -113,18 +116,18 @@ const ContentPanelComponent: React.FC<ContentPanelProps> = ({
|
|
|
113
116
|
// (the breakpoint bundle lives whole in `RESPONSIVE_SURFACE`; `framed ===
|
|
114
117
|
// true`/`false` ignore `framedFrom` for fixed always/never framing).
|
|
115
118
|
const surfaceBase =
|
|
116
|
-
chrome === 'none'
|
|
119
|
+
isPlain || chrome === 'none'
|
|
117
120
|
? 'flex-1'
|
|
118
121
|
: framed === undefined
|
|
119
122
|
? `flex-1 ${RESPONSIVE_SURFACE[framedFrom]}`
|
|
120
123
|
: framed
|
|
121
124
|
? 'flex-1 border border-border'
|
|
122
125
|
: 'flex-1';
|
|
123
|
-
const surfaceClass = [surfaceBase, fill ? 'min-h-0' : '', surfaceClassName ?? (paintsSurface ? 'bg-transparent' : 'bg-card')].filter(Boolean).join(' ');
|
|
126
|
+
const surfaceClass = [surfaceBase, fill ? 'min-h-0' : '', surfaceClassName ?? (isPlain || paintsSurface ? 'bg-transparent' : 'bg-card')].filter(Boolean).join(' ');
|
|
124
127
|
// Native has no overlays: the surface itself carries the edge. `none` drops
|
|
125
128
|
// both, `border` keeps the class-drawn hairline, `elevated` adds the lift.
|
|
126
129
|
const chromeStyle =
|
|
127
|
-
!isFramed || chrome === 'none' || chrome === 'border'
|
|
130
|
+
!isFramed || isPlain || chrome === 'none' || chrome === 'border'
|
|
128
131
|
? null
|
|
129
132
|
: shadow || panelChrome
|
|
130
133
|
? { boxShadow: shadow ?? panelChrome?.shadow }
|
|
@@ -149,14 +152,14 @@ const ContentPanelComponent: React.FC<ContentPanelProps> = ({
|
|
|
149
152
|
geometry,
|
|
150
153
|
chromeStyle,
|
|
151
154
|
surfaceStyle,
|
|
152
|
-
paintsSurface ? { backgroundColor: 'transparent' } : null,
|
|
155
|
+
isPlain || paintsSurface ? { backgroundColor: 'transparent' } : null,
|
|
153
156
|
]}
|
|
154
157
|
>
|
|
155
158
|
{paintsSurface ? <SurfacePaint fill={defaultFill!} radius={radius} shape={{ curve: panelShape.curve }} /> : null}
|
|
156
159
|
<StyledView testID="content-panel-content" className={contentClass} style={[geometry, contentStyle]}>
|
|
157
|
-
{/*
|
|
158
|
-
|
|
159
|
-
<SurfaceLevelProvider level={1} fill={publishedFill}>
|
|
160
|
+
{/* Solid panels publish their painted surface. Plain panels preserve
|
|
161
|
+
the enclosing surface so descendant scrims follow its real fill. */}
|
|
162
|
+
<SurfaceLevelProvider level={isPlain ? parentLevel : 1} fill={publishedFill}>
|
|
160
163
|
{errorBoundary === false ? children : <PanelErrorBoundary {...(errorBoundary === true ? {} : errorBoundary)}>{children}</PanelErrorBoundary>}
|
|
161
164
|
</SurfaceLevelProvider>
|
|
162
165
|
</StyledView>
|
|
@@ -97,7 +97,7 @@ import { surfaceStyle as resolveShapeStyle } from '../shapes/surface-style';
|
|
|
97
97
|
import { StyledView } from '../styles/styled-primitives';
|
|
98
98
|
|
|
99
99
|
import { useOptionalPanelChrome, usePanelShape } from '../styles/panel-chrome';
|
|
100
|
-
import { SurfaceLevelProvider, surfaceFillVars, useOptionalSurfaceFill } from '../styles/surface-levels';
|
|
100
|
+
import { SurfaceLevelProvider, surfaceFillVars, useOptionalSurfaceFill, useSurfaceLevelValue } from '../styles/surface-levels';
|
|
101
101
|
import { useTheme } from '../theme/use-theme';
|
|
102
102
|
import {
|
|
103
103
|
ContentPanelNestingContext,
|
|
@@ -173,6 +173,7 @@ const PANEL_INSET_CSS = `
|
|
|
173
173
|
const ContentPanelComponent: React.FC<ContentPanelProps> = ({
|
|
174
174
|
children,
|
|
175
175
|
errorBoundary = false,
|
|
176
|
+
appearance = 'solid',
|
|
176
177
|
framed,
|
|
177
178
|
framedFrom = 768,
|
|
178
179
|
fill = false,
|
|
@@ -211,8 +212,10 @@ const ContentPanelComponent: React.FC<ContentPanelProps> = ({
|
|
|
211
212
|
const defaultFill = rawFill;
|
|
212
213
|
const { width } = useWindowDimensions();
|
|
213
214
|
const parentFill = useOptionalSurfaceFill();
|
|
214
|
-
const
|
|
215
|
-
const
|
|
215
|
+
const parentLevel = useSurfaceLevelValue();
|
|
216
|
+
const isPlain = appearance === 'plain';
|
|
217
|
+
const paintsSurface = !isPlain && Boolean(defaultFill) && parentFill !== undefined && (framed ?? width >= framedFrom) && chrome !== 'none';
|
|
218
|
+
const publishedFill = isPlain ? parentFill : rawFill && paintsSurface ? resolveSurfaceMaterial({ fill: rawFill, parentFill: parentFill! }).publishedFill : rawFill;
|
|
216
219
|
const materialStyle = useSurfaceMaterial('[data-bloom-panel-material]', 'bloom-content-panel-material', defaultFill ?? 'transparent');
|
|
217
220
|
|
|
218
221
|
// Tri-state: `undefined` → responsive (md:-gated), `true` → always framed,
|
|
@@ -257,7 +260,7 @@ const ContentPanelComponent: React.FC<ContentPanelProps> = ({
|
|
|
257
260
|
const gridStackClass = boundToPanel
|
|
258
261
|
? 'web:grid web:[grid-template-columns:minmax(0,1fr)] web:[grid-template-rows:minmax(0,1fr)]'
|
|
259
262
|
: '';
|
|
260
|
-
const surfaceClass = [surfaceBase, fillSurface, gridStackClass, surfaceClassName ?? (paintsSurface ? 'bg-transparent' : 'bg-card')].filter(Boolean).join(' ');
|
|
263
|
+
const surfaceClass = [surfaceBase, fillSurface, gridStackClass, surfaceClassName ?? (isPlain || paintsSurface ? 'bg-transparent' : 'bg-card')].filter(Boolean).join(' ');
|
|
261
264
|
const contentClass = [contentBase, fillContent, boundToPanel ? 'web:[grid-area:1/1]' : '', contentClassName]
|
|
262
265
|
.filter(Boolean)
|
|
263
266
|
.join(' ');
|
|
@@ -313,6 +316,7 @@ const ContentPanelComponent: React.FC<ContentPanelProps> = ({
|
|
|
313
316
|
framed === true ? { borderRadius: radius } : framed === false ? { borderRadius: 0 } : null,
|
|
314
317
|
surfaceStyle,
|
|
315
318
|
paintsSurface ? materialStyle : null,
|
|
319
|
+
isPlain ? { backgroundColor: 'transparent' } : null,
|
|
316
320
|
]}
|
|
317
321
|
>
|
|
318
322
|
{/* (1) Bleed-mask overlay — gutter box-shadow ring, below chrome. Not
|
|
@@ -331,12 +335,12 @@ const ContentPanelComponent: React.FC<ContentPanelProps> = ({
|
|
|
331
335
|
? `web:sticky web:top-2 z-30 h-[calc(100dvh-16px)] w-full rounded-[var(--bloom-panel-radius)] ${bp.overlayHidden} web:[margin-bottom:calc(-100dvh+16px)]`
|
|
332
336
|
: 'web:sticky web:top-2 z-30 h-[calc(100dvh-16px)] w-full rounded-[var(--bloom-panel-radius)] web:[margin-bottom:calc(-100dvh+16px)]'
|
|
333
337
|
}
|
|
334
|
-
style={{ ...panelStyle, ...insetStyle, boxShadow: `0 0 0 ${maskSpread}px ${maskColor ?? colors.background}` }}
|
|
338
|
+
style={{ ...panelStyle, ...insetStyle, boxShadow: `0 0 0 ${maskSpread}px ${maskColor ?? (isPlain ? parentFill : undefined) ?? colors.background}` }}
|
|
335
339
|
/>
|
|
336
340
|
)}
|
|
337
341
|
{/* (2) Border-frame overlay — one continuous rounded border, above all.
|
|
338
342
|
Same visibility gating as the bleed-mask. */}
|
|
339
|
-
{showOverlays && showStickyFrame !== false && chrome !== 'none' && (
|
|
343
|
+
{showOverlays && showStickyFrame !== false && !isPlain && chrome !== 'none' && (
|
|
340
344
|
<StyledView
|
|
341
345
|
key="border-frame"
|
|
342
346
|
testID="content-panel-border-frame"
|
|
@@ -361,9 +365,9 @@ const ContentPanelComponent: React.FC<ContentPanelProps> = ({
|
|
|
361
365
|
scroll/virtualizer + refetch on a breakpoint cross). Clipped to the
|
|
362
366
|
rounded panel shape on web when framed. */}
|
|
363
367
|
<StyledView key="content" testID="content-panel-content" className={contentClass} style={[curveStyle, framed === true ? { borderRadius: radius } : framed === false ? { borderRadius: 0 } : null, contentStyle]}>
|
|
364
|
-
{/*
|
|
365
|
-
|
|
366
|
-
<SurfaceLevelProvider level={1} fill={publishedFill}>
|
|
368
|
+
{/* Solid panels publish their painted surface. Plain panels preserve
|
|
369
|
+
the enclosing surface so descendant scrims follow its real fill. */}
|
|
370
|
+
<SurfaceLevelProvider level={isPlain ? parentLevel : 1} fill={publishedFill}>
|
|
367
371
|
{errorBoundary === false ? children : <PanelErrorBoundary {...(errorBoundary === true ? {} : errorBoundary)}>{children}</PanelErrorBoundary>}
|
|
368
372
|
</SurfaceLevelProvider>
|
|
369
373
|
</StyledView>
|
|
@@ -18,6 +18,13 @@ export type ContentPanelChrome = 'elevated' | 'border' | 'none';
|
|
|
18
18
|
|
|
19
19
|
export interface ContentPanelProps {
|
|
20
20
|
children: React.ReactNode;
|
|
21
|
+
/**
|
|
22
|
+
* `solid` (default) paints a panel surface. `plain` keeps layout, framing and
|
|
23
|
+
* clipping while leaving the enclosing surface visible, without material,
|
|
24
|
+
* border or shadow. Descendants inherit the parent's surface level and fill.
|
|
25
|
+
* In plain mode surface background overrides and surfaceColor are ignored.
|
|
26
|
+
*/
|
|
27
|
+
appearance?: 'solid' | 'plain';
|
|
21
28
|
/** Opt in to local themed error recovery. Split panes already provide their own boundaries. */
|
|
22
29
|
errorBoundary?: boolean | PanelErrorBoundaryOptions;
|
|
23
30
|
/**
|
|
@@ -2,7 +2,6 @@ import React, { useEffect, useMemo, useState } from 'react';
|
|
|
2
2
|
import { View } from 'react-native';
|
|
3
3
|
|
|
4
4
|
import { Button } from '../button';
|
|
5
|
-
import { Divider } from '../divider';
|
|
6
5
|
import { useControllableState } from '../hooks/use-controllable-state';
|
|
7
6
|
import { MailLabelChips, MailStar } from '../mail-list/parts';
|
|
8
7
|
import { mailStrings, resolveMailPaint, visibleLabels } from '../mail-list/shared';
|
|
@@ -145,7 +144,6 @@ export function MailThread({
|
|
|
145
144
|
/>
|
|
146
145
|
</View>
|
|
147
146
|
) : null}
|
|
148
|
-
<Divider />
|
|
149
147
|
<View testID={testID ? `${testID}-messages` : undefined} style={{ paddingTop: space.xs, paddingBottom: space.xs, gap: messageGap }}>
|
|
150
148
|
{entries.map((entry) =>
|
|
151
149
|
entry.kind === 'message' ? (
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Platform } from 'react-native';
|
|
2
|
-
import {
|
|
2
|
+
import { SURFACE_SHAPES } from '../design-tokens/shapes';
|
|
3
3
|
|
|
4
4
|
import { MAIL_THREAD_MESSAGES } from './messages';
|
|
5
5
|
import type { MailThreadMessage, MailAddress, MailThreadStrings } from './types';
|
|
@@ -44,8 +44,8 @@ export const MAIL_THREAD_GEOMETRY = {
|
|
|
44
44
|
glyph: 16,
|
|
45
45
|
/** The star and the overflow trigger. A touch target, so 44. */
|
|
46
46
|
action: 44,
|
|
47
|
-
/**
|
|
48
|
-
radius:
|
|
47
|
+
/** Default radius; rendered messages inherit BloomScope.panelRadius via Card. */
|
|
48
|
+
radius: SURFACE_SHAPES.sidebar.radius,
|
|
49
49
|
} as const;
|
|
50
50
|
|
|
51
51
|
/**
|
package/src/note-card/shared.ts
CHANGED
|
@@ -40,7 +40,7 @@ export interface NoteCardGeometry {
|
|
|
40
40
|
padding: number;
|
|
41
41
|
gap: number;
|
|
42
42
|
/** A rung of the `RADIUS` scale — `Card` takes the rung, the focus ring takes its px. */
|
|
43
|
-
radius: CardRadius
|
|
43
|
+
radius: Exclude<CardRadius, 'panel'>;
|
|
44
44
|
excerptLines: number;
|
|
45
45
|
titleLines: number;
|
|
46
46
|
maxTags: number;
|