cursedbelt 5.66.0 → 5.68.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 (138) hide show
  1. package/dist/react/Toast.d.ts.map +1 -1
  2. package/dist/react/Toast.js +4 -1
  3. package/dist/react/Toast.js.map +1 -1
  4. package/dist/react/canvas-hud/CanvasToolbar.d.ts +67 -0
  5. package/dist/react/canvas-hud/CanvasToolbar.d.ts.map +1 -0
  6. package/dist/react/canvas-hud/CanvasToolbar.js +84 -0
  7. package/dist/react/canvas-hud/CanvasToolbar.js.map +1 -0
  8. package/dist/react/canvas-hud/index.d.ts +2 -0
  9. package/dist/react/canvas-hud/index.d.ts.map +1 -1
  10. package/dist/react/canvas-hud/index.js +1 -0
  11. package/dist/react/canvas-hud/index.js.map +1 -1
  12. package/dist/react/components/Button.d.ts.map +1 -1
  13. package/dist/react/components/Button.js +4 -8
  14. package/dist/react/components/Button.js.map +1 -1
  15. package/dist/react/components/CardTapTarget.d.ts.map +1 -1
  16. package/dist/react/components/CardTapTarget.js +3 -1
  17. package/dist/react/components/CardTapTarget.js.map +1 -1
  18. package/dist/react/components/ChipFilterStrip.d.ts.map +1 -1
  19. package/dist/react/components/ChipFilterStrip.js +2 -1
  20. package/dist/react/components/ChipFilterStrip.js.map +1 -1
  21. package/dist/react/components/ConfirmDialog.d.ts.map +1 -1
  22. package/dist/react/components/ConfirmDialog.js +2 -1
  23. package/dist/react/components/ConfirmDialog.js.map +1 -1
  24. package/dist/react/components/Drawer.d.ts.map +1 -1
  25. package/dist/react/components/Drawer.js +2 -1
  26. package/dist/react/components/Drawer.js.map +1 -1
  27. package/dist/react/components/EntityCard.d.ts +35 -0
  28. package/dist/react/components/EntityCard.d.ts.map +1 -0
  29. package/dist/react/components/EntityCard.js +18 -0
  30. package/dist/react/components/EntityCard.js.map +1 -0
  31. package/dist/react/components/Lightbox.d.ts.map +1 -1
  32. package/dist/react/components/Lightbox.js +2 -1
  33. package/dist/react/components/Lightbox.js.map +1 -1
  34. package/dist/react/components/Modal.d.ts.map +1 -1
  35. package/dist/react/components/Modal.js +5 -3
  36. package/dist/react/components/Modal.js.map +1 -1
  37. package/dist/react/components/PromptDialog.d.ts.map +1 -1
  38. package/dist/react/components/PromptDialog.js +2 -1
  39. package/dist/react/components/PromptDialog.js.map +1 -1
  40. package/dist/react/components/SegmentedControl.d.ts.map +1 -1
  41. package/dist/react/components/SegmentedControl.js +2 -1
  42. package/dist/react/components/SegmentedControl.js.map +1 -1
  43. package/dist/react/components/Tabs.d.ts.map +1 -1
  44. package/dist/react/components/Tabs.js +68 -15
  45. package/dist/react/components/Tabs.js.map +1 -1
  46. package/dist/react/components/TooltipImpl.d.ts.map +1 -1
  47. package/dist/react/components/TooltipImpl.js +2 -1
  48. package/dist/react/components/TooltipImpl.js.map +1 -1
  49. package/dist/react/components/dialog.d.ts.map +1 -1
  50. package/dist/react/components/dialog.js +2 -1
  51. package/dist/react/components/dialog.js.map +1 -1
  52. package/dist/react/index.d.ts +1 -0
  53. package/dist/react/index.d.ts.map +1 -1
  54. package/dist/react/index.js +1 -0
  55. package/dist/react/index.js.map +1 -1
  56. package/dist/react/layoutEngine/LayoutConfigDialog.d.ts.map +1 -1
  57. package/dist/react/layoutEngine/LayoutConfigDialog.js +3 -1
  58. package/dist/react/layoutEngine/LayoutConfigDialog.js.map +1 -1
  59. package/dist/react/lib/floatingStyles.d.ts +10 -2
  60. package/dist/react/lib/floatingStyles.d.ts.map +1 -1
  61. package/dist/react/lib/floatingStyles.js +12 -7
  62. package/dist/react/lib/floatingStyles.js.map +1 -1
  63. package/dist/react/lib/overlayMotion.d.ts +37 -0
  64. package/dist/react/lib/overlayMotion.d.ts.map +1 -0
  65. package/dist/react/lib/overlayMotion.js +50 -0
  66. package/dist/react/lib/overlayMotion.js.map +1 -0
  67. package/dist/react/lib/press.d.ts +37 -0
  68. package/dist/react/lib/press.d.ts.map +1 -0
  69. package/dist/react/lib/press.js +41 -0
  70. package/dist/react/lib/press.js.map +1 -0
  71. package/dist/react/nav/PlaceBar.d.ts.map +1 -1
  72. package/dist/react/nav/PlaceBar.js +4 -3
  73. package/dist/react/nav/PlaceBar.js.map +1 -1
  74. package/dist/react/palette/CommandPalette.d.ts.map +1 -1
  75. package/dist/react/palette/CommandPalette.js +3 -2
  76. package/dist/react/palette/CommandPalette.js.map +1 -1
  77. package/dist/styles-areas/analytics.css +2 -2
  78. package/dist/styles-areas/canvas-hud.css +6 -4
  79. package/dist/styles-areas/core.css +63 -56
  80. package/dist/styles-areas/data-table.css +3 -3
  81. package/dist/styles-areas/fields.css +2 -2
  82. package/dist/styles-areas/filter-rail.css +5 -5
  83. package/dist/styles-areas/media.css +4 -4
  84. package/dist/styles-areas/nav.css +18 -18
  85. package/dist/styles-areas/notifications.css +3 -3
  86. package/dist/styles-areas/overlays.css +2 -2
  87. package/dist/styles-areas/palette.css +4 -5
  88. package/dist/styles-areas/place-bar.css +5 -5
  89. package/dist/styles-areas/sharing.css +4 -4
  90. package/dist/styles-areas/test-report.css +4 -4
  91. package/dist/styles-areas/wizard.css +2 -2
  92. package/dist/styles-areas/workbench.css +2 -2
  93. package/dist/styles-utilities.css +101 -22
  94. package/dist/theme.css +44 -0
  95. package/package.json +1 -1
  96. package/scripts/styleAreas.ts +1 -0
  97. package/src/react/Toast.tsx +4 -1
  98. package/src/react/canvas-hud/CanvasToolbar.tsx +177 -0
  99. package/src/react/canvas-hud/index.ts +2 -0
  100. package/src/react/components/Button.spec.tsx +3 -2
  101. package/src/react/components/Button.tsx +4 -8
  102. package/src/react/components/CardTapTarget.tsx +3 -1
  103. package/src/react/components/ChipFilterStrip.tsx +3 -1
  104. package/src/react/components/ConfirmDialog.tsx +2 -2
  105. package/src/react/components/Drawer.tsx +2 -0
  106. package/src/react/components/EntityCard.tsx +76 -0
  107. package/src/react/components/Lightbox.tsx +2 -2
  108. package/src/react/components/Modal.tsx +5 -4
  109. package/src/react/components/PromptDialog.tsx +2 -2
  110. package/src/react/components/SegmentedControl.tsx +3 -1
  111. package/src/react/components/Tabs.tsx +78 -5
  112. package/src/react/components/TooltipImpl.tsx +2 -0
  113. package/src/react/components/dialog.tsx +2 -2
  114. package/src/react/index.ts +1 -0
  115. package/src/react/layoutEngine/LayoutConfigDialog.tsx +3 -1
  116. package/src/react/lib/floatingStyles.ts +12 -8
  117. package/src/react/lib/overlayMotion.ts +58 -0
  118. package/src/react/lib/press.ts +43 -0
  119. package/src/react/nav/PlaceBar.tsx +7 -3
  120. package/src/react/palette/CommandPalette.tsx +3 -2
  121. package/src/styles-areas/analytics.css +2 -2
  122. package/src/styles-areas/canvas-hud.css +6 -4
  123. package/src/styles-areas/core.css +63 -56
  124. package/src/styles-areas/data-table.css +3 -3
  125. package/src/styles-areas/fields.css +2 -2
  126. package/src/styles-areas/filter-rail.css +5 -5
  127. package/src/styles-areas/media.css +4 -4
  128. package/src/styles-areas/nav.css +18 -18
  129. package/src/styles-areas/notifications.css +3 -3
  130. package/src/styles-areas/overlays.css +2 -2
  131. package/src/styles-areas/palette.css +4 -5
  132. package/src/styles-areas/place-bar.css +5 -5
  133. package/src/styles-areas/sharing.css +4 -4
  134. package/src/styles-areas/test-report.css +4 -4
  135. package/src/styles-areas/wizard.css +2 -2
  136. package/src/styles-areas/workbench.css +2 -2
  137. package/src/styles-utilities.css +101 -22
  138. package/src/theme.css +44 -0
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../src/react/Toast.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,KAAK,aAAa,EAAE,OAAO,IAAI,aAAa,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,QAAQ,CAAC;AAG5F,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAmB5D;;;GAGG;AACH,iBAAS,SAAS,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,IAAI,CAAC,EAAE,aAAa,mBAEjF;AAED,4EAA4E;AAC5E,eAAO,MAAM,KAAK,EAAE,OAAO,WAAW,GAAG;IAAE,IAAI,EAAE,OAAO,SAAS,CAAA;CAIhE,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,aAAa,CAAC,CAAC;AAwBtE,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,+BA2BxD"}
1
+ {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../src/react/Toast.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,KAAK,aAAa,EAAE,OAAO,IAAI,aAAa,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,QAAQ,CAAC;AAG5F,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAmB5D;;;GAGG;AACH,iBAAS,SAAS,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,IAAI,CAAC,EAAE,aAAa,mBAEjF;AAED,4EAA4E;AAC5E,eAAO,MAAM,KAAK,EAAE,OAAO,WAAW,GAAG;IAAE,IAAI,EAAE,OAAO,SAAS,CAAA;CAIhE,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,aAAa,CAAC,CAAC;AAwBtE,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,+BA8BxD"}
@@ -59,7 +59,10 @@ const DESKTOP_OFFSET = { bottom: 'calc(var(--cb-bottom-chrome-h, 0px) + 24px)',
59
59
  export function Toaster({ style, ...props }) {
60
60
  return (_jsx(SonnerToaster, { style: { ...TOKEN_VARS, ...style }, position: 'bottom-right', offset: DESKTOP_OFFSET, mobileOffset: BOTTOM_OFFSET, closeButton: true, toastOptions: {
61
61
  classNames: {
62
- toast: 'rounded-lg border border-border bg-popover text-foreground shadow-overlay',
62
+ // The overlay curve and the slow speed (`lib/overlayMotion.ts`, forge task 2912) in place
63
+ // of sonner's 400ms `ease`. `!` because sonner's own `[data-sonner-toast]` rule sets the
64
+ // transition shorthand after this stylesheet; its reduced-motion rule still turns it off.
65
+ toast: 'rounded-lg border border-border bg-popover text-foreground shadow-overlay duration-[var(--duration-slow)]! ease-[var(--ease-out)]!',
63
66
  title: 'text-sm font-medium',
64
67
  // `!` because sonner colours these two with element rules of its own (`#3f3f3f` for a
65
68
  // description, its grey scale for the close button) that no variable reaches.
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.js","sourceRoot":"","sources":["../../src/react/Toast.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAsB,OAAO,IAAI,aAAa,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC5F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI/C;;;;;GAKG;AACH,SAAS,UAAU,CAAC,OAAqB,EAAE,IAAoB;IAC7D,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QAClB,WAAW,CACT,4BAA4B,EAC5B,yHAAyH;YACvH,6FAA6F,CAChG,CAAC;IACJ,CAAC;IACD,OAAO,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED;;;GAGG;AACH,SAAS,SAAS,CAAC,OAAqB,EAAE,MAAkB,EAAE,IAAoB;IAChF,OAAO,WAAW,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AACvG,CAAC;AAED,4EAA4E;AAC5E,MAAM,CAAC,MAAM,KAAK,GAAoD,MAAM,CAAC,MAAM,CACjF,CAAC,GAAG,IAAoC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,EACjE,WAAW,EACX,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,CACvC,CAAC;AAIF;;;;;;;GAOG;AACH,MAAM,UAAU,GAAG;IACjB,aAAa,EAAE,gBAAgB;IAC/B,iBAAiB,EAAE,eAAe;IAClC,eAAe,EAAE,2BAA2B;CACtB,CAAC;AAEzB;;;;GAIG;AACH,MAAM,aAAa,GAAG,EAAE,MAAM,EAAE,6CAA6C,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC/F,MAAM,cAAc,GAAG,EAAE,MAAM,EAAE,6CAA6C,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAEhG,MAAM,UAAU,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAgB;IACvD,OAAO,CACL,KAAC,aAAa,IACZ,KAAK,EAAE,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK,EAAE,EAClC,QAAQ,EAAC,cAAc,EACvB,MAAM,EAAE,cAAc,EACtB,YAAY,EAAE,aAAa,EAC3B,WAAW,QACX,YAAY,EAAE;YACZ,UAAU,EAAE;gBACV,KAAK,EAAE,2EAA2E;gBAClF,KAAK,EAAE,qBAAqB;gBAC5B,sFAAsF;gBACtF,8EAA8E;gBAC9E,WAAW,EAAE,gCAAgC;gBAC7C,YAAY,EAAE,yDAAyD;gBACvE,YAAY,EAAE,uDAAuD;gBACrE,WAAW,EAAE,0EAA0E;gBACvF,KAAK,EAAE,wDAAwD;gBAC/D,OAAO,EAAE,gDAAgD;gBACzD,OAAO,EAAE,gDAAgD;gBACzD,IAAI,EAAE,8CAA8C;aACrD;SACF,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"Toast.js","sourceRoot":"","sources":["../../src/react/Toast.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAsB,OAAO,IAAI,aAAa,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC5F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI/C;;;;;GAKG;AACH,SAAS,UAAU,CAAC,OAAqB,EAAE,IAAoB;IAC7D,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QAClB,WAAW,CACT,4BAA4B,EAC5B,yHAAyH;YACvH,6FAA6F,CAChG,CAAC;IACJ,CAAC;IACD,OAAO,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED;;;GAGG;AACH,SAAS,SAAS,CAAC,OAAqB,EAAE,MAAkB,EAAE,IAAoB;IAChF,OAAO,WAAW,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AACvG,CAAC;AAED,4EAA4E;AAC5E,MAAM,CAAC,MAAM,KAAK,GAAoD,MAAM,CAAC,MAAM,CACjF,CAAC,GAAG,IAAoC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,EACjE,WAAW,EACX,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,CACvC,CAAC;AAIF;;;;;;;GAOG;AACH,MAAM,UAAU,GAAG;IACjB,aAAa,EAAE,gBAAgB;IAC/B,iBAAiB,EAAE,eAAe;IAClC,eAAe,EAAE,2BAA2B;CACtB,CAAC;AAEzB;;;;GAIG;AACH,MAAM,aAAa,GAAG,EAAE,MAAM,EAAE,6CAA6C,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC/F,MAAM,cAAc,GAAG,EAAE,MAAM,EAAE,6CAA6C,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAEhG,MAAM,UAAU,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAgB;IACvD,OAAO,CACL,KAAC,aAAa,IACZ,KAAK,EAAE,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK,EAAE,EAClC,QAAQ,EAAC,cAAc,EACvB,MAAM,EAAE,cAAc,EACtB,YAAY,EAAE,aAAa,EAC3B,WAAW,QACX,YAAY,EAAE;YACZ,UAAU,EAAE;gBACV,0FAA0F;gBAC1F,yFAAyF;gBACzF,0FAA0F;gBAC1F,KAAK,EAAE,oIAAoI;gBAC3I,KAAK,EAAE,qBAAqB;gBAC5B,sFAAsF;gBACtF,8EAA8E;gBAC9E,WAAW,EAAE,gCAAgC;gBAC7C,YAAY,EAAE,yDAAyD;gBACvE,YAAY,EAAE,uDAAuD;gBACrE,WAAW,EAAE,0EAA0E;gBACvF,KAAK,EAAE,wDAAwD;gBAC/D,OAAO,EAAE,gDAAgD;gBACzD,OAAO,EAAE,gDAAgD;gBACzD,IAAI,EAAE,8CAA8C;aACrD;SACF,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,67 @@
1
+ import type { MouseEvent, ReactNode } from 'react';
2
+ export interface CanvasToolbarProps {
3
+ /** The left half: what the canvas shows (a reach, a layer switch). Hidden while the bar is
4
+ * under 768px wide when `compactFilters` is given — five stops beside the tools would scroll out of a thumb's sight. */
5
+ filters?: ReactNode;
6
+ /** The same choice as a phone wants it, usually the OS picker (`NativeSelect`): shown only while
7
+ * the bar is under 768px wide, on row two beside the legend. */
8
+ compactFilters?: ReactNode;
9
+ /** A key or chip strip (houses, layers, tags): ONE line that scrolls inside itself, its ends
10
+ * fading where there is more. Beside the filters at every width; never under 10rem. */
11
+ legend?: ReactNode;
12
+ /** Names the legend strip for a screen reader. */
13
+ legendLabel?: string;
14
+ /** The right half: the find box and the views. Never shrinks — the legend does. */
15
+ tools?: ReactNode;
16
+ /**
17
+ * Where the keyboard goes after a control in the bar acts: a POINTER click on a button, tab or
18
+ * radio, or Escape from one. Default: the `[role="application"]` beside the bar (the canvas the
19
+ * bar sits above). `false` keeps focus on the control, the browser's default.
20
+ */
21
+ returnFocus?: (() => void) | false;
22
+ 'aria-label'?: string;
23
+ className?: string;
24
+ /** Rides on the bar's root, for an app's own selectors (`data-view`, …). */
25
+ [data: `data-${string}`]: string | undefined;
26
+ }
27
+ /**
28
+ * Whether a POINTER click landed on a control that should hand the keyboard back to the canvas
29
+ * once it has acted — a filter stop, a chip, a HUD button. A field keeps focus (it is typed into);
30
+ * a click the keyboard made (`detail` 0 — Enter or Space on a focused button) is a reader moving
31
+ * by Tab, whose focus stays where they put it.
32
+ *
33
+ * 🔴 The failure this exists for (family, 2026-10-06): the reach stops are a tab list, and a click
34
+ * leaves focus on the stop. Every arrow after that went to the stop — ← and → re-rooted and
35
+ * re-packed the tree — while the reader believed they were walking the family. Figma's rule: a
36
+ * toolbar click acts and the canvas keeps the keyboard.
37
+ */
38
+ export declare function controlReleasesFocus(event: Pick<MouseEvent, 'target' | 'currentTarget' | 'detail'>): boolean;
39
+ /** A key on a field is the field's whole language — Escape there is not the way back to the canvas. */
40
+ export declare const isTextControl: (target: EventTarget | null) => boolean;
41
+ /**
42
+ * The toolbar a canvas wears ABOVE itself, in flow — filters left, find and views right, a legend
43
+ * strip that scrolls inside itself, the OS picker in place of the filters below 768px.
44
+ *
45
+ * 🔴 ONE BAR, IN FLOW — never five overlays over the drawing. family's tree floated its reach
46
+ * buttons, house legend, find box and view switch over the canvas's top edge until 2026-10-06, and
47
+ * their collisions were fought width by width while cards were drawn under them at every width. A
48
+ * bar above the canvas, like Figma's and Linear's, cannot collide with anything by construction:
49
+ * the drawing starts where the bar ends. Built from family's `TreeBar` (forge task 2917) so
50
+ * patterns' and desk's boards never hand-roll a second one. Not `ListToolbar`: that one is a
51
+ * search box and a chip filter above a list; a canvas's bar carries its own reach, a legend of
52
+ * anything, and gives the keyboard back to the drawing.
53
+ *
54
+ * Narrow (the BAR under 768px — a container query, so a split pane counts): row one is the
55
+ * `tools`, right-aligned; row two is what the canvas shows — `compactFilters` (or `filters`) and the
56
+ * legend strip beside it. A phone's find button and four views do not leave a picker room beside
57
+ * them (family at 390: 300px of tools in a 366px row), and the picker and the legend are the same
58
+ * question — who is drawn — so they share a row. Wide: one line when the filters, a
59
+ * 10rem legend and the tools fit; when they do not (a 900px window), the tools ride down to row two
60
+ * as a group, right-aligned, rather than the filters being cut — the stops never shrink on a wide
61
+ * bar. Two rows at most at every width: the legend scrolls rather than wrapping.
62
+ *
63
+ * The bar hands the keyboard back to the canvas after a control acts (`returnFocus`), because a
64
+ * bar in flow sits OUTSIDE the canvas, so the canvas's own hand-back never sees its clicks.
65
+ */
66
+ export declare function CanvasToolbar({ filters, compactFilters, legend, legendLabel, tools, returnFocus, 'aria-label': ariaLabel, className, ...data }: CanvasToolbarProps): import("react").JSX.Element;
67
+ //# sourceMappingURL=CanvasToolbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CanvasToolbar.d.ts","sourceRoot":"","sources":["../../../src/react/canvas-hud/CanvasToolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIlE,MAAM,WAAW,kBAAkB;IACjC;6HACyH;IACzH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;qEACiE;IACjE,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B;4FACwF;IACxF,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mFAAmF;IACnF,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,KAAK,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,CAAC,IAAI,EAAE,QAAQ,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAAC;CAC9C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,GAAG,eAAe,GAAG,QAAQ,CAAC,GAAG,OAAO,CAQ5G;AAED,uGAAuG;AACvG,eAAO,MAAM,aAAa,GAAI,QAAQ,WAAW,GAAG,IAAI,KAAG,OACmE,CAAC;AAM/H;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,cAAc,EACd,MAAM,EACN,WAAW,EACX,KAAK,EACL,WAAW,EACX,YAAY,EAAE,SAAS,EACvB,SAAS,EACT,GAAG,IAAI,EACR,EAAE,kBAAkB,+BAkFpB"}
@@ -0,0 +1,84 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ScrollArea } from '../components/ScrollArea.js';
3
+ import { cn } from '../lib/cn.js';
4
+ /**
5
+ * Whether a POINTER click landed on a control that should hand the keyboard back to the canvas
6
+ * once it has acted — a filter stop, a chip, a HUD button. A field keeps focus (it is typed into);
7
+ * a click the keyboard made (`detail` 0 — Enter or Space on a focused button) is a reader moving
8
+ * by Tab, whose focus stays where they put it.
9
+ *
10
+ * 🔴 The failure this exists for (family, 2026-10-06): the reach stops are a tab list, and a click
11
+ * leaves focus on the stop. Every arrow after that went to the stop — ← and → re-rooted and
12
+ * re-packed the tree — while the reader believed they were walking the family. Figma's rule: a
13
+ * toolbar click acts and the canvas keeps the keyboard.
14
+ */
15
+ export function controlReleasesFocus(event) {
16
+ if (event.detail === 0)
17
+ return false;
18
+ const target = event.target;
19
+ if (!(target instanceof Element) || target === event.currentTarget)
20
+ return false;
21
+ if (target.closest("input, select, textarea, [contenteditable='true'], [role='combobox'], [role='listbox'], [role='menu']")) {
22
+ return false;
23
+ }
24
+ return target.closest("button, [role='tab'], [role='radio']") !== null;
25
+ }
26
+ /** A key on a field is the field's whole language — Escape there is not the way back to the canvas. */
27
+ export const isTextControl = (target) => target instanceof Element && target.closest("input, select, textarea, [contenteditable='true'], [role='combobox']") !== null;
28
+ /** The canvas drawn under a bar — the `application` in the box the bar shares with it. */
29
+ const canvasBeside = (bar) => bar.parentElement?.querySelector("[role='application']") ?? null;
30
+ /**
31
+ * The toolbar a canvas wears ABOVE itself, in flow — filters left, find and views right, a legend
32
+ * strip that scrolls inside itself, the OS picker in place of the filters below 768px.
33
+ *
34
+ * 🔴 ONE BAR, IN FLOW — never five overlays over the drawing. family's tree floated its reach
35
+ * buttons, house legend, find box and view switch over the canvas's top edge until 2026-10-06, and
36
+ * their collisions were fought width by width while cards were drawn under them at every width. A
37
+ * bar above the canvas, like Figma's and Linear's, cannot collide with anything by construction:
38
+ * the drawing starts where the bar ends. Built from family's `TreeBar` (forge task 2917) so
39
+ * patterns' and desk's boards never hand-roll a second one. Not `ListToolbar`: that one is a
40
+ * search box and a chip filter above a list; a canvas's bar carries its own reach, a legend of
41
+ * anything, and gives the keyboard back to the drawing.
42
+ *
43
+ * Narrow (the BAR under 768px — a container query, so a split pane counts): row one is the
44
+ * `tools`, right-aligned; row two is what the canvas shows — `compactFilters` (or `filters`) and the
45
+ * legend strip beside it. A phone's find button and four views do not leave a picker room beside
46
+ * them (family at 390: 300px of tools in a 366px row), and the picker and the legend are the same
47
+ * question — who is drawn — so they share a row. Wide: one line when the filters, a
48
+ * 10rem legend and the tools fit; when they do not (a 900px window), the tools ride down to row two
49
+ * as a group, right-aligned, rather than the filters being cut — the stops never shrink on a wide
50
+ * bar. Two rows at most at every width: the legend scrolls rather than wrapping.
51
+ *
52
+ * The bar hands the keyboard back to the canvas after a control acts (`returnFocus`), because a
53
+ * bar in flow sits OUTSIDE the canvas, so the canvas's own hand-back never sees its clicks.
54
+ */
55
+ export function CanvasToolbar({ filters, compactFilters, legend, legendLabel, tools, returnFocus, 'aria-label': ariaLabel, className, ...data }) {
56
+ const giveBack = (bar) => {
57
+ if (returnFocus === false)
58
+ return false;
59
+ if (returnFocus) {
60
+ returnFocus();
61
+ return true;
62
+ }
63
+ const canvas = canvasBeside(bar);
64
+ canvas?.focus({ preventScroll: true });
65
+ return canvas !== null;
66
+ };
67
+ const onClick = (event) => {
68
+ if (controlReleasesFocus(event))
69
+ giveBack(event.currentTarget);
70
+ };
71
+ const onKeyDown = (event) => {
72
+ if (event.key !== 'Escape' || event.target === event.currentTarget || isTextControl(event.target))
73
+ return;
74
+ if (giveBack(event.currentTarget))
75
+ event.preventDefault();
76
+ };
77
+ return (_jsx("div", { ...data, "data-slot": 'canvas-toolbar', role: 'group', "aria-label": ariaLabel, onClick: onClick, onKeyDown: onKeyDown,
78
+ // `@container`: the bar answers to ITS width, not the window's — a canvas in a split pane
79
+ // or a demo column is a phone-width bar on a desk-width screen.
80
+ className: cn('@container border-b border-border bg-card', className), children: _jsxs("div", { className: 'flex flex-wrap items-center gap-x-3 gap-y-2 px-3 py-2', children: [filters ? (_jsx("div", { "data-slot": 'canvas-toolbar-filters', className: cn('order-2 min-w-0 items-center gap-2 @3xl:order-none @3xl:shrink-0', compactFilters ? 'hidden @3xl:flex' : 'flex'), children: filters })) : null, compactFilters ? (_jsx("div", { "data-slot": 'canvas-toolbar-compact-filters', className: 'order-2 flex min-w-26 max-w-48 flex-1 items-center @3xl:hidden [&>*]:w-full [&_select]:w-full', children: compactFilters })) : null, legend ? (_jsx(ScrollArea, { axis: 'x', space: 'none', safeArea: false, fade: true, role: 'group', "aria-label": legendLabel, "data-slot": 'canvas-toolbar-legend', className: cn('order-3 flex min-w-40 basis-0 items-center gap-1 px-0.5 @3xl:order-none',
81
+ // The strip's own scrollbar is hidden; its fading ends are the "there is more" cue.
82
+ '[scrollbar-width:none] [&::-webkit-scrollbar]:hidden'), children: legend })) : null, tools ? (_jsx("div", { "data-slot": 'canvas-toolbar-tools', className: 'order-1 ml-auto flex flex-none basis-full items-center justify-end gap-2 @3xl:order-none @3xl:basis-auto', children: tools })) : null] }) }));
83
+ }
84
+ //# sourceMappingURL=CanvasToolbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CanvasToolbar.js","sourceRoot":"","sources":["../../../src/react/canvas-hud/CanvasToolbar.tsx"],"names":[],"mappings":"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"}
@@ -4,6 +4,8 @@ export type { CanvasNodeMenuItem, CanvasNodeMenuProps, CanvasNodeMenuSection } f
4
4
  export { CanvasNodeMenu } from './CanvasNodeMenu.js';
5
5
  export type { CanvasSearchFieldProps } from './CanvasSearchField.js';
6
6
  export { CanvasSearchField } from './CanvasSearchField.js';
7
+ export type { CanvasToolbarProps } from './CanvasToolbar.js';
8
+ export { CanvasToolbar, controlReleasesFocus, isTextControl } from './CanvasToolbar.js';
7
9
  export type { CanvasZoomHintProps, HudButtonProps, HudZoomControlsProps } from './HudControls.js';
8
10
  export { CanvasZoomHint, HudButton, HudZoomControls } from './HudControls.js';
9
11
  export type { CanvasWheelMode, CanvasWheelOptions } from './useCanvasWheel.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/canvas-hud/index.ts"],"names":[],"mappings":"AAGA,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC1G,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC9E,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAClF,YAAY,EACV,YAAY,EACZ,WAAW,EACX,UAAU,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACb,uBAAuB,GACxB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,EACV,UAAU,EACV,QAAQ,EACR,OAAO,EACP,eAAe,EACf,aAAa,EACb,aAAa,EACb,eAAe,EACf,MAAM,GACP,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/canvas-hud/index.ts"],"names":[],"mappings":"AAGA,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC1G,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxF,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC9E,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAClF,YAAY,EACV,YAAY,EACZ,WAAW,EACX,UAAU,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACb,uBAAuB,GACxB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,EACV,UAAU,EACV,QAAQ,EACR,OAAO,EACP,eAAe,EACf,aAAa,EACb,aAAa,EACb,eAAe,EACf,MAAM,GACP,MAAM,eAAe,CAAC"}
@@ -1,6 +1,7 @@
1
1
  export { CanvasMinimap } from './CanvasMinimap.js';
2
2
  export { CanvasNodeMenu } from './CanvasNodeMenu.js';
3
3
  export { CanvasSearchField } from './CanvasSearchField.js';
4
+ export { CanvasToolbar, controlReleasesFocus, isTextControl } from './CanvasToolbar.js';
4
5
  export { CanvasZoomHint, HudButton, HudZoomControls } from './HudControls.js';
5
6
  export { readWheel, useCanvasWheel, useLevelOfDetail } from './useCanvasWheel.js';
6
7
  export { centerView, clampScale, fitScale, fitView, LEVEL_OF_DETAIL, levelOfDetail, visibleBounds, wheelZoomFactor, zoomAt, } from './viewport.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/canvas-hud/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE9E,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAUlF,OAAO,EACL,UAAU,EACV,UAAU,EACV,QAAQ,EACR,OAAO,EACP,eAAe,EACf,aAAa,EACb,aAAa,EACb,eAAe,EACf,MAAM,GACP,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/canvas-hud/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExF,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE9E,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAUlF,OAAO,EACL,UAAU,EACV,UAAU,EACV,QAAQ,EACR,OAAO,EACP,eAAe,EACf,aAAa,EACb,aAAa,EACb,eAAe,EACf,MAAM,GACP,MAAM,eAAe,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/react/components/Button.tsx"],"names":[],"mappings":"AACA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EACL,KAAK,oBAAoB,EAEzB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,GAAG,EAGT,MAAM,OAAO,CAAC;AAEf,OAAO,EAAW,KAAK,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAIlF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,cAAc;;;8EAkH1B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,YAAY,CAAC,OAAO,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACxF,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,YAAY,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAElF,MAAM,WAAW,WACf,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC,EAC7C,YAAY,CAAC,OAAO,cAAc,CAAC;IACrC;;;8CAG0C;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;6EACyE;IACzE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;;;;;eAQW;IACX,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,GAAG,SAAS,CAAC,CAAC;IAC9C,8EAA8E;IAC9E,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B;;;;8DAI0D;IAC1D,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACtE;yFACqF;IACrF,cAAc,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAClC;gFAC4E;IAC5E,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAChC;;;;;;;;;;;;;OAaG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;CAC9B;AAcD,wBAAgB,MAAM,CAAC,EACrB,SAAS,EACT,OAAO,EACP,IAAI,EACJ,OAAe,EACf,OAAe,EACf,QAAQ,EACR,OAAO,EACP,WAAW,EACX,aAAa,EACb,YAAY,EACZ,cAAsB,EACtB,YAAmB,EACnB,OAAc,EACd,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,SAAS,EACT,iBAAiB,EACjB,GAAG,KAAK,EACT,EAAE,WAAW,+BA+Gb"}
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/react/components/Button.tsx"],"names":[],"mappings":"AACA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EACL,KAAK,oBAAoB,EAEzB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,GAAG,EAGT,MAAM,OAAO,CAAC;AAEf,OAAO,EAAW,KAAK,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAKlF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,cAAc;;;8EA6G1B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,YAAY,CAAC,OAAO,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACxF,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,YAAY,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAElF,MAAM,WAAW,WACf,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC,EAC7C,YAAY,CAAC,OAAO,cAAc,CAAC;IACrC;;;8CAG0C;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;6EACyE;IACzE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;;;;;eAQW;IACX,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,GAAG,SAAS,CAAC,CAAC;IAC9C,8EAA8E;IAC9E,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B;;;;8DAI0D;IAC1D,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACtE;yFACqF;IACrF,cAAc,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAClC;gFAC4E;IAC5E,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAChC;;;;;;;;;;;;;OAaG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;CAC9B;AAcD,wBAAgB,MAAM,CAAC,EACrB,SAAS,EACT,OAAO,EACP,IAAI,EACJ,OAAe,EACf,OAAe,EACf,QAAQ,EACR,OAAO,EACP,WAAW,EACX,aAAa,EACb,YAAY,EACZ,cAAsB,EACtB,YAAmB,EACnB,OAAc,EACd,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,SAAS,EACT,iBAAiB,EACjB,GAAG,KAAK,EACT,EAAE,WAAW,+BA+Gb"}
@@ -7,6 +7,7 @@ import { cn } from '../lib/cn.js';
7
7
  import { Tooltip } from './Tooltip.js';
8
8
  import { TAP_TARGET_HEIGHT } from '../lib/tapTarget.js';
9
9
  import { RAW_BUTTON } from '../lib/cn.js';
10
+ import { PRESS } from '../lib/press.js';
10
11
  /**
11
12
  * The single source of truth for every interactive element that triggers an action.
12
13
  * The intent variants implement the 3-weight action taxonomy (STANDARDS.md §4c:
@@ -23,14 +24,9 @@ import { RAW_BUTTON } from '../lib/cn.js';
23
24
  */
24
25
  export const buttonVariants = cva([
25
26
  'relative inline-flex items-center justify-center gap-2 rounded-md font-medium',
26
- // 🔴 TACTILE (forge task family-app-ux-overhaul, 2026-10-06): a press is answered — the
27
- // control eases its colours over `--duration-fast` AND dips to `--press-scale` while held,
28
- // the way Linear's and Obsidian's controls do; a button that changes nothing under the
29
- // finger reads as dead on a phone. `transform` is in the transition list so the dip and
30
- // its release both ease rather than snap. Reduced motion turns both off; a refused press
31
- // (`aria-disabled`) does not dip, because nothing happened.
32
- 'transition-[color,background-color,border-color,box-shadow,transform] duration-[var(--duration-fast)] ease-[var(--ease-out)]',
33
- 'active:scale-[var(--press-scale)] aria-disabled:active:scale-100 motion-reduce:transition-none motion-reduce:active:scale-100',
27
+ // 🔴 TACTILE (forge task family-app-ux-overhaul, 2026-10-06): a press is answered — eased
28
+ // colours and a `--press-scale` dip while held. The contract and who is exempt: `lib/press.ts`.
29
+ PRESS,
34
30
  TAP_TARGET_HEIGHT, // ≥44px touch target on coarse pointers
35
31
  'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-1 focus-visible:ring-offset-background',
36
32
  // Disabled = muted surface + faded + inert (never color-alone): clearly off, not a low-contrast haze.
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../src/react/components/Button.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../src/react/components/Button.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"CardTapTarget.d.ts","sourceRoot":"","sources":["../../../src/react/components/CardTapTarget.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAU,MAAM,OAAO,CAAC;AAK/C,MAAM,WAAW,kBAAkB;IACjC,0DAA0D;IAC1D,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B;8BAC0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,aAAa,GAAI,0DAM3B,kBAAkB,gCA6BpB,CAAC"}
1
+ {"version":3,"file":"CardTapTarget.d.ts","sourceRoot":"","sources":["../../../src/react/components/CardTapTarget.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAU,MAAM,OAAO,CAAC;AAM/C,MAAM,WAAW,kBAAkB;IACjC,0DAA0D;IAC1D,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B;8BAC0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,aAAa,GAAI,0DAM3B,kBAAkB,gCA8BpB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useRef } from 'react';
3
3
  import { cn } from '../lib/cn.js';
4
+ import { PRESS_SURFACE } from '../lib/press.js';
4
5
  import { TAP_TARGET_HEIGHT } from '../lib/tapTarget.js';
5
6
  import { hasSelectionWithin } from '../lib/textSelection.js';
6
7
  /**
@@ -39,6 +40,7 @@ export const CardTapTarget = ({ onClick, className, children, selectionSafe = tr
39
40
  },
40
41
  // `TAP_TARGET_HEIGHT`: a tappable row on a phone answers to a thumb — family's 35px value
41
42
  // rows (`.ft-row`, forge task 2913) were under the 44pt floor. DESIGN.md §5.
42
- className: cn('cursor-pointer touch-manipulation text-left', TAP_TARGET_HEIGHT, className), ...rest, children: children }));
43
+ // `PRESS_SURFACE`: the card answers a press with a dip sized for a surface (forge task 2912).
44
+ className: cn('cursor-pointer touch-manipulation text-left', TAP_TARGET_HEIGHT, PRESS_SURFACE, className), ...rest, children: children }));
43
45
  };
44
46
  //# sourceMappingURL=CardTapTarget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CardTapTarget.js","sourceRoot":"","sources":["../../../src/react/components/CardTapTarget.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAkB,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAqB7D;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC5B,OAAO,EACP,SAAS,EACT,QAAQ,EACR,aAAa,GAAG,IAAI,EACpB,GAAG,IAAI,EACY,EAAE,EAAE;IACvB,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,4EAA4E;QAC5E,+EAA+E;QAC/E,IAAI,aAAa,IAAI,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO;QAC7D,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IACF,OAAO,CAEL,cACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;YACf,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;gBACvC,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QACD,0FAA0F;QAC1F,6EAA6E;QAC7E,SAAS,EAAE,EAAE,CAAC,6CAA6C,EAAE,iBAAiB,EAAE,SAAS,CAAC,KACtF,IAAI,YAEP,QAAQ,GACL,CACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"CardTapTarget.js","sourceRoot":"","sources":["../../../src/react/components/CardTapTarget.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAkB,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAqB7D;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC5B,OAAO,EACP,SAAS,EACT,QAAQ,EACR,aAAa,GAAG,IAAI,EACpB,GAAG,IAAI,EACY,EAAE,EAAE;IACvB,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,4EAA4E;QAC5E,+EAA+E;QAC/E,IAAI,aAAa,IAAI,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO;QAC7D,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IACF,OAAO,CAEL,cACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;YACf,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;gBACvC,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QACD,0FAA0F;QAC1F,6EAA6E;QAC7E,8FAA8F;QAC9F,SAAS,EAAE,EAAE,CAAC,6CAA6C,EAAE,iBAAiB,EAAE,aAAa,EAAE,SAAS,CAAC,KACrG,IAAI,YAEP,QAAQ,GACL,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChipFilterStrip.d.ts","sourceRoot":"","sources":["../../../src/react/components/ChipFilterStrip.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB;;;OAGG;IACH,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IAChC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IACpD,mEAAmE;IACnE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAcD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,EAC9B,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAa,EACb,QAAgB,EAChB,SAAS,GACV,EAAE,oBAAoB,+BAmDtB"}
1
+ {"version":3,"file":"ChipFilterStrip.d.ts","sourceRoot":"","sources":["../../../src/react/components/ChipFilterStrip.tsx"],"names":[],"mappings":"AAKA,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB;;;OAGG;IACH,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IAChC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IACpD,mEAAmE;IACnE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAcD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,EAC9B,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAa,EACb,QAAgB,EAChB,SAAS,GACV,EAAE,oBAAoB,+BAmDtB"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { cn, RAW_BUTTON } from '../lib/cn.js';
3
+ import { PRESS } from '../lib/press.js';
3
4
  import { ScrollArea } from './ScrollArea.js';
4
5
  function isActive(value, option) {
5
6
  if (value === null)
@@ -49,7 +50,7 @@ function Chip({ active, onClick, children }) {
49
50
  type: 'button', onClick: onClick, "aria-pressed": active, className: cn(RAW_BUTTON,
50
51
  // 44 px min tap target height via py + min-h (STANDARDS §4a). px-4 keeps every
51
52
  // pill's internal padding identical regardless of label length.
52
- 'inline-flex min-h-11 shrink-0 cursor-pointer items-center rounded-full px-4 text-sm font-medium transition-colors', 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',
53
+ 'inline-flex min-h-11 shrink-0 cursor-pointer items-center rounded-full px-4 text-sm font-medium', PRESS, 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',
53
54
  // Soft active state — an accent tint + accent text (the standardized active
54
55
  // treatment shared with nav items and the `accent` Badge tone), not a stark
55
56
  // solid accent block. `text-accent-strong` (not plain `text-accent`) — the
@@ -1 +1 @@
1
- {"version":3,"file":"ChipFilterStrip.js","sourceRoot":"","sources":["../../../src/react/components/ChipFilterStrip.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAwB7C,SAAS,QAAQ,CAAC,KAA+B,EAAE,MAAc;IAC/D,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACjC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxD,OAAO,KAAK,KAAK,MAAM,CAAC;AAC1B,CAAC;AAED,SAAS,KAAK,CAAC,KAA+B;IAC5C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IACpD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAK,GAAG,KAAK,EACb,QAAQ,GAAG,KAAK,EAChB,SAAS,GACY;IACrB,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAE/B,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,GAAW,EAAE,EAAE;QACnC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,CAAC,CAAC;YAC1F,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CAKL,iCAAqB,gBAAgB,EAAC,SAAS,EAAE,EAAE,CAAC,qCAAqC,EAAE,SAAS,CAAC,YACnG,MAAC,UAAU,IACT,IAAI,EAAC,GAAG,EACR,KAAK,EAAC,MAAM,EACZ,QAAQ,EAAE,KAAK,EACf,SAAS,EAAE,EAAE,CACX,kCAAkC;YAClC,kEAAkE;YAClE,sDAAsD,CACvD,aAED,KAAC,IAAI,IAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,YACxC,QAAQ,GACJ,EACN,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACpB,MAAC,IAAI,IAEH,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,EAClC,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,aAErC,GAAG,CAAC,KAAK,EACT,GAAG,CAAC,KAAK,IAAI,IAAI,IAAI,CACpB,eAAM,SAAS,EAAC,2BAA2B,YAAE,GAAG,CAAC,KAAK,GAAQ,CAC/D,KAPI,GAAG,CAAC,KAAK,CAQT,CACR,CAAC,IACS,GACJ,CACZ,CAAC;AACJ,CAAC;AAQD,SAAS,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAa;IACpD,OAAO,CACL;QACE,8EAA8E;QAC9E,8EAA8E;QAC9E,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,kBACF,MAAM,EACpB,SAAS,EAAE,EAAE,CACX,UAAU;QACV,+EAA+E;QAC/E,gEAAgE;QAChE,mHAAmH,EACnH,yEAAyE;QACzE,4EAA4E;QAC5E,4EAA4E;QAC5E,2EAA2E;QAC3E,6EAA6E;QAC7E,MAAM;YACJ,CAAC,CAAC,kEAAkE;YACpE,CAAC,CAAC,wEAAwE,CAC7E,YAEA,QAAQ,GACF,CACV,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ChipFilterStrip.js","sourceRoot":"","sources":["../../../src/react/components/ChipFilterStrip.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ConfirmDialog.d.ts","sourceRoot":"","sources":["../../../src/react/components/ConfirmDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAU,MAAM,OAAO,CAAC;AAK/C,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;yEACqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,yFAAyF;IACzF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;oGACgG;IAChG,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,KAAK,EACL,OAAO,EACP,YAAwB,EACxB,WAAsB,EACtB,WAAmB,EACnB,OAAe,EACf,SAAS,GACV,EAAE,kBAAkB,+BAkEpB"}
1
+ {"version":3,"file":"ConfirmDialog.d.ts","sourceRoot":"","sources":["../../../src/react/components/ConfirmDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAU,MAAM,OAAO,CAAC;AAM/C,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;yEACqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,yFAAyF;IACzF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;oGACgG;IAChG,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,KAAK,EACL,OAAO,EACP,YAAwB,EACxB,WAAsB,EACtB,WAAmB,EACnB,OAAe,EACf,SAAS,GACV,EAAE,kBAAkB,+BAiEpB"}
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useRef } from 'react';
3
3
  import { cn } from '../lib/cn.js';
4
+ import { DIALOG_MOTION } from '../lib/overlayMotion.js';
4
5
  import { Button } from './Button.js';
5
6
  import { Dialog, DialogContent, DialogDescription, DialogTitle } from './dialog.js';
6
7
  /**
@@ -16,7 +17,7 @@ export function ConfirmDialog({ open, onConfirm, onCancel, title, message, confi
16
17
  return (_jsx(Dialog, { open: open, onOpenChange: (v) => {
17
18
  if (!v)
18
19
  onCancel();
19
- }, children: _jsxs(DialogContent, { ref: contentRef, className: cn('fixed top-1/2 left-1/2 flex w-[calc(100vw-2rem)] max-w-[var(--modal-w-sm)] -translate-x-1/2 -translate-y-1/2 flex-col gap-4', 'rounded-xl border border-border bg-popover p-6 text-popover-foreground shadow-overlay', 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95', 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95', className),
20
+ }, children: _jsxs(DialogContent, { ref: contentRef, className: cn('fixed top-1/2 left-1/2 flex w-[calc(100vw-2rem)] max-w-[var(--modal-w-sm)] -translate-x-1/2 -translate-y-1/2 flex-col gap-4', 'rounded-xl border border-border bg-popover p-6 text-popover-foreground shadow-overlay', DIALOG_MOTION, className),
20
21
  // Land focus on the safe button for destructive actions; otherwise on confirm.
21
22
  // Button isn't a forwardRef component, so target it by data attribute.
22
23
  onOpenAutoFocus: (e) => {
@@ -1 +1 @@
1
- {"version":3,"file":"ConfirmDialog.js","sourceRoot":"","sources":["../../../src/react/components/ConfirmDialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAkB,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAoBpF;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,KAAK,EACL,OAAO,EACP,YAAY,GAAG,SAAS,EACxB,WAAW,GAAG,QAAQ,EACtB,WAAW,GAAG,KAAK,EACnB,OAAO,GAAG,KAAK,EACf,SAAS,GACU;IACnB,MAAM,UAAU,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAEhD,OAAO,CACL,KAAC,MAAM,IACL,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;YAClB,IAAI,CAAC,CAAC;gBAAE,QAAQ,EAAE,CAAC;QACrB,CAAC,YAED,MAAC,aAAa,IACZ,GAAG,EAAE,UAAU,EACf,SAAS,EAAE,EAAE,CACX,6HAA6H,EAC7H,uFAAuF,EACvF,uFAAuF,EACvF,gGAAgG,EAChG,SAAS,CACV;YACD,+EAA+E;YAC/E,uEAAuE;YACvE,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE;gBACrB,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,UAAU,CAAC,OAAO;oBAChB,EAAE,aAAa,CACb,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,mBAAmB,CACvD;oBACD,EAAE,KAAK,EAAE,CAAC;YACd,CAAC,aAED,eAAK,SAAS,EAAC,+BAA+B,aAC5C,KAAC,WAAW,IAAC,SAAS,EAAC,iDAAiD,YACrE,KAAK,GACM,EACb,OAAO,CAAC,CAAC,CAAC,CACT,KAAC,iBAAiB,IAAC,SAAS,EAAC,+BAA+B,YACzD,OAAO,GACU,CACrB,CAAC,CAAC,CAAC,IAAI,IACJ,EACN,eAAK,SAAS,EAAC,wBAAwB,aACrC,KAAC,MAAM,4BAEL,OAAO,EAAC,WAAW,EACnB,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,WAAW,YAEnB,WAAW,GACL,EACT,KAAC,MAAM;4BAEL,uEAAuE;4BACvE,0EAA0E;4BAC1E,uEAAuE;4BACvE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,EACtD,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,SAAS,EAAE,EAC/B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,YAAY,YAEpB,YAAY,GACN,IACL,IACQ,GACT,CACV,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ConfirmDialog.js","sourceRoot":"","sources":["../../../src/react/components/ConfirmDialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAkB,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAoBpF;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,KAAK,EACL,OAAO,EACP,YAAY,GAAG,SAAS,EACxB,WAAW,GAAG,QAAQ,EACtB,WAAW,GAAG,KAAK,EACnB,OAAO,GAAG,KAAK,EACf,SAAS,GACU;IACnB,MAAM,UAAU,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAEhD,OAAO,CACL,KAAC,MAAM,IACL,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;YAClB,IAAI,CAAC,CAAC;gBAAE,QAAQ,EAAE,CAAC;QACrB,CAAC,YAED,MAAC,aAAa,IACZ,GAAG,EAAE,UAAU,EACf,SAAS,EAAE,EAAE,CACX,6HAA6H,EAC7H,uFAAuF,EACvF,aAAa,EACb,SAAS,CACV;YACD,+EAA+E;YAC/E,uEAAuE;YACvE,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE;gBACrB,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,UAAU,CAAC,OAAO;oBAChB,EAAE,aAAa,CACb,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,mBAAmB,CACvD;oBACD,EAAE,KAAK,EAAE,CAAC;YACd,CAAC,aAED,eAAK,SAAS,EAAC,+BAA+B,aAC5C,KAAC,WAAW,IAAC,SAAS,EAAC,iDAAiD,YACrE,KAAK,GACM,EACb,OAAO,CAAC,CAAC,CAAC,CACT,KAAC,iBAAiB,IAAC,SAAS,EAAC,+BAA+B,YACzD,OAAO,GACU,CACrB,CAAC,CAAC,CAAC,IAAI,IACJ,EACN,eAAK,SAAS,EAAC,wBAAwB,aACrC,KAAC,MAAM,4BAEL,OAAO,EAAC,WAAW,EACnB,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,WAAW,YAEnB,WAAW,GACL,EACT,KAAC,MAAM;4BAEL,uEAAuE;4BACvE,0EAA0E;4BAC1E,uEAAuE;4BACvE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,EACtD,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,SAAS,EAAE,EAC/B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,YAAY,YAEpB,YAAY,GACN,IACL,IACQ,GACT,CACV,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Drawer.d.ts","sourceRoot":"","sources":["../../../src/react/components/Drawer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AASvC,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AACrD,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAmB5C,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,+DAA+D;IAC/D,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,mFAAmF;IACnF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6FAA6F;IAC7F,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,MAAM,CAAC,EACrB,IAAI,EACJ,OAAO,EACP,KAAK,EACL,IAAW,EACX,IAAc,EACd,OAAO,EACP,MAAM,EACN,QAAQ,EACR,MAAM,EACN,UAAiB,GAClB,EAAE,WAAW,+BAsFb"}
1
+ {"version":3,"file":"Drawer.d.ts","sourceRoot":"","sources":["../../../src/react/components/Drawer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAUvC,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AACrD,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAmB5C,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,+DAA+D;IAC/D,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,mFAAmF;IACnF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6FAA6F;IAC7F,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,MAAM,CAAC,EACrB,IAAI,EACJ,OAAO,EACP,KAAK,EACL,IAAW,EACX,IAAc,EACd,OAAO,EACP,MAAM,EACN,QAAQ,EACR,MAAM,EACN,UAAiB,GAClB,EAAE,WAAW,+BAuFb"}
@@ -3,6 +3,7 @@ import { X } from 'lucide-react';
3
3
  import { useDiscardGuard } from '../hooks/useDiscardGuard.js';
4
4
  import { useSwipeToDismiss } from '../hooks/useSwipeToDismiss.js';
5
5
  import { cn } from '../lib/cn.js';
6
+ import { DRAWER_MOTION } from '../lib/overlayMotion.js';
6
7
  import { FooterSlot } from './ActionBar.js';
7
8
  import { Dialog, DialogContent, DialogTitle, focusPanelOnOpen } from './dialog.js';
8
9
  import { IconButton } from './IconButton.js';
@@ -48,7 +49,7 @@ export function Drawer({ open, onClose, title, size = 'md', side = 'right', isDi
48
49
  return (_jsx(Dialog, { open: open, onOpenChange: (v) => {
49
50
  if (!v)
50
51
  guardedClose();
51
- }, children: _jsxs(DialogContent, { className: cn('flex flex-col gap-0 overflow-hidden bg-popover text-popover-foreground shadow-overlay', side === 'left' && [
52
+ }, children: _jsxs(DialogContent, { className: cn('flex flex-col gap-0 overflow-hidden bg-popover text-popover-foreground shadow-overlay', DRAWER_MOTION, side === 'left' && [
52
53
  'fixed top-0 left-0 h-full w-full rounded-r-xl border-r border-border',
53
54
  DRAWER_WIDTH[size],
54
55
  'data-[state=open]:animate-in data-[state=open]:slide-in-from-left',
@@ -1 +1 @@
1
- {"version":3,"file":"Drawer.js","sourceRoot":"","sources":["../../../src/react/components/Drawer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Drawer.js","sourceRoot":"","sources":["../../../src/react/components/Drawer.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import type { ReactNode } from 'react';
2
+ export interface EntityCardProps {
3
+ /** The face: an `Avatar`, a portrait, a cover thumbnail. Drawn at its own size, never squeezed. */
4
+ media: ReactNode;
5
+ /** The name — one line, ellipsed. */
6
+ name: ReactNode;
7
+ /** One line under the name (dates, a role, a count) — muted, tabular figures, ellipsed. */
8
+ line?: ReactNode;
9
+ /** Fired on tap/click and on Enter/Space — the whole card is the target. */
10
+ onClick: () => void;
11
+ /** What a tap does, for a screen reader ("Open Ada Lovelace") — the name alone says what, not why. */
12
+ 'aria-label'?: string;
13
+ /**
14
+ * Skip `onClick` when the click only completes a text selection inside the card. Default
15
+ * `false`: a face, a name and one line hold nothing worth selecting, and a press that the
16
+ * selection check swallows reads as a dead card on a phone.
17
+ */
18
+ selectionSafe?: boolean;
19
+ className?: string;
20
+ /** Rides on the card's root, for an app's own selectors (`data-ended`, `data-self`, …). */
21
+ [data: `data-${string}`]: string | undefined;
22
+ }
23
+ /**
24
+ * A person, a title, a game — a face, a name, one line, the whole card one tap target that dips
25
+ * on press. Built from family's close-family `KinCard` (forge task 2918), on `CardTapTarget`, so
26
+ * the tap floor (`TAP_TARGET_HEIGHT`), the press dip (`PRESS_SURFACE`) and the iPhone-safe
27
+ * `div[role=button]` come from the one place they are kept.
28
+ *
29
+ * The card is a row: the face left, the text beside it. It fills its grid cell, and its text
30
+ * truncates rather than wrapping, so every card in a grid row is the same height whatever the
31
+ * name. `relative isolate` keeps anything the face positions from painting over the next card and
32
+ * eating its taps (`CardTapTarget`'s other half).
33
+ */
34
+ export declare function EntityCard({ media, name, line, onClick, 'aria-label': ariaLabel, selectionSafe, className, ...data }: EntityCardProps): import("react").JSX.Element;
35
+ //# sourceMappingURL=EntityCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityCard.d.ts","sourceRoot":"","sources":["../../../src/react/components/EntityCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,MAAM,WAAW,eAAe;IAC9B,mGAAmG;IACnG,KAAK,EAAE,SAAS,CAAC;IACjB,qCAAqC;IACrC,IAAI,EAAE,SAAS,CAAC;IAChB,2FAA2F;IAC3F,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,4EAA4E;IAC5E,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,sGAAsG;IACtG,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2FAA2F;IAC3F,CAAC,IAAI,EAAE,QAAQ,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAAC;CAC9C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,YAAY,EAAE,SAAS,EACvB,aAAqB,EACrB,SAAS,EACT,GAAG,IAAI,EACR,EAAE,eAAe,+BA6BjB"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from '../lib/cn.js';
3
+ import { CardTapTarget } from './CardTapTarget.js';
4
+ /**
5
+ * A person, a title, a game — a face, a name, one line, the whole card one tap target that dips
6
+ * on press. Built from family's close-family `KinCard` (forge task 2918), on `CardTapTarget`, so
7
+ * the tap floor (`TAP_TARGET_HEIGHT`), the press dip (`PRESS_SURFACE`) and the iPhone-safe
8
+ * `div[role=button]` come from the one place they are kept.
9
+ *
10
+ * The card is a row: the face left, the text beside it. It fills its grid cell, and its text
11
+ * truncates rather than wrapping, so every card in a grid row is the same height whatever the
12
+ * name. `relative isolate` keeps anything the face positions from painting over the next card and
13
+ * eating its taps (`CardTapTarget`'s other half).
14
+ */
15
+ export function EntityCard({ media, name, line, onClick, 'aria-label': ariaLabel, selectionSafe = false, className, ...data }) {
16
+ return (_jsxs(CardTapTarget, { ...data, onClick: onClick, "aria-label": ariaLabel, selectionSafe: selectionSafe, className: cn('relative isolate flex min-h-14 min-w-0 items-center gap-3 rounded-lg border border-border bg-card px-3 py-2', 'hover:border-border-strong hover:bg-card-raised', 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background', className), children: [_jsx("span", { "data-slot": 'entity-card-media', className: 'flex flex-none items-center', children: media }), _jsxs("span", { className: 'flex min-w-0 flex-col gap-0.5', children: [_jsx("span", { "data-slot": 'entity-card-name', className: 'truncate text-sm leading-5 font-medium text-foreground', children: name }), line ? (_jsx("span", { "data-slot": 'entity-card-line', className: 'truncate text-xs leading-4 text-muted-foreground tabular-nums', children: line })) : null] })] }));
17
+ }
18
+ //# sourceMappingURL=EntityCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityCard.js","sourceRoot":"","sources":["../../../src/react/components/EntityCard.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAwBnD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,UAAU,CAAC,EACzB,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,YAAY,EAAE,SAAS,EACvB,aAAa,GAAG,KAAK,EACrB,SAAS,EACT,GAAG,IAAI,EACS;IAChB,OAAO,CACL,MAAC,aAAa,OACR,IAAI,EACR,OAAO,EAAE,OAAO,gBACJ,SAAS,EACrB,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,EAAE,CACX,6GAA6G,EAC7G,iDAAiD,EACjD,0IAA0I,EAC1I,SAAS,CACV,aAED,4BAAgB,mBAAmB,EAAC,SAAS,EAAC,6BAA6B,YACxE,KAAK,GACD,EACP,gBAAM,SAAS,EAAC,+BAA+B,aAC7C,4BAAgB,kBAAkB,EAAC,SAAS,EAAC,wDAAwD,YAClG,IAAI,GACA,EACN,IAAI,CAAC,CAAC,CAAC,CACN,4BAAgB,kBAAkB,EAAC,SAAS,EAAC,+DAA+D,YACzG,IAAI,GACA,CACR,CAAC,CAAC,CAAC,IAAI,IACH,IACO,CACjB,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Lightbox.d.ts","sourceRoot":"","sources":["../../../src/react/components/Lightbox.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,+EAA+E;IAC/E,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,aAAa,+BAkC3E"}
1
+ {"version":3,"file":"Lightbox.d.ts","sourceRoot":"","sources":["../../../src/react/components/Lightbox.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,+EAA+E;IAC/E,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,aAAa,+BAiC3E"}
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { X } from 'lucide-react';
3
3
  import { cn } from '../lib/cn.js';
4
+ import { DIALOG_MOTION } from '../lib/overlayMotion.js';
4
5
  import { Dialog, DialogContent, DialogTitle, focusPanelOnOpen } from './dialog.js';
5
6
  import { IconButton } from './IconButton.js';
6
7
  /**
@@ -14,6 +15,6 @@ export function Lightbox({ open, onClose, children, caption }) {
14
15
  return (_jsx(Dialog, { open: open, onOpenChange: (v) => {
15
16
  if (!v)
16
17
  onClose();
17
- }, children: _jsxs(DialogContent, { overlayClassName: 'bg-black/80', className: cn('fixed inset-4 flex flex-col items-center justify-center gap-3 p-4', 'rounded-xl border-none bg-black/95 shadow-none', 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95', 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95'), onInteractOutside: () => onClose(), onOpenAutoFocus: focusPanelOnOpen, children: [_jsx(DialogTitle, { className: 'sr-only', children: caption ?? 'Media viewer' }), _jsx(IconButton, { label: 'Close', variant: 'ghost', onClick: onClose, className: 'absolute top-4 right-4 h-auto w-auto rounded-full bg-white/10 p-1.5 text-white hover:bg-white/20 hover:text-white focus-visible:ring-offset-black', children: _jsx(X, { className: 'size-5' }) }), _jsx("div", { className: 'flex min-h-0 min-w-0 flex-1 items-center justify-center', children: children }), caption ? _jsx("p", { className: 'text-center text-sm text-white/70', children: caption }) : null] }) }));
18
+ }, children: _jsxs(DialogContent, { overlayClassName: 'bg-black/80', className: cn('fixed inset-4 flex flex-col items-center justify-center gap-3 p-4', 'rounded-xl border-none bg-black/95 shadow-none', DIALOG_MOTION), onInteractOutside: () => onClose(), onOpenAutoFocus: focusPanelOnOpen, children: [_jsx(DialogTitle, { className: 'sr-only', children: caption ?? 'Media viewer' }), _jsx(IconButton, { label: 'Close', variant: 'ghost', onClick: onClose, className: 'absolute top-4 right-4 h-auto w-auto rounded-full bg-white/10 p-1.5 text-white hover:bg-white/20 hover:text-white focus-visible:ring-offset-black', children: _jsx(X, { className: 'size-5' }) }), _jsx("div", { className: 'flex min-h-0 min-w-0 flex-1 items-center justify-center', children: children }), caption ? _jsx("p", { className: 'text-center text-sm text-white/70', children: caption }) : null] }) }));
18
19
  }
19
20
  //# sourceMappingURL=Lightbox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Lightbox.js","sourceRoot":"","sources":["../../../src/react/components/Lightbox.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AAEjC,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAU7C;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAiB;IAC1E,OAAO,CACL,KAAC,MAAM,IACL,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;YAClB,IAAI,CAAC,CAAC;gBAAE,OAAO,EAAE,CAAC;QACpB,CAAC,YAED,MAAC,aAAa,IACZ,gBAAgB,EAAC,aAAa,EAC9B,SAAS,EAAE,EAAE,CACX,mEAAmE,EACnE,gDAAgD,EAChD,uFAAuF,EACvF,gGAAgG,CACjG,EACD,iBAAiB,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAClC,eAAe,EAAE,gBAAgB,aAGjC,KAAC,WAAW,IAAC,SAAS,EAAC,SAAS,YAAE,OAAO,IAAI,cAAc,GAAe,EAC1E,KAAC,UAAU,IACT,KAAK,EAAC,OAAO,EACb,OAAO,EAAC,OAAO,EACf,OAAO,EAAE,OAAO,EAChB,SAAS,EAAC,mJAAmJ,YAE7J,KAAC,CAAC,IAAC,SAAS,EAAC,QAAQ,GAAG,GACb,EACb,cAAK,SAAS,EAAC,yDAAyD,YAAE,QAAQ,GAAO,EACxF,OAAO,CAAC,CAAC,CAAC,YAAG,SAAS,EAAC,mCAAmC,YAAE,OAAO,GAAK,CAAC,CAAC,CAAC,IAAI,IAClE,GACT,CACV,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"Lightbox.js","sourceRoot":"","sources":["../../../src/react/components/Lightbox.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AAEjC,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAU7C;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAiB;IAC1E,OAAO,CACL,KAAC,MAAM,IACL,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;YAClB,IAAI,CAAC,CAAC;gBAAE,OAAO,EAAE,CAAC;QACpB,CAAC,YAED,MAAC,aAAa,IACZ,gBAAgB,EAAC,aAAa,EAC9B,SAAS,EAAE,EAAE,CACX,mEAAmE,EACnE,gDAAgD,EAChD,aAAa,CACd,EACD,iBAAiB,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAClC,eAAe,EAAE,gBAAgB,aAGjC,KAAC,WAAW,IAAC,SAAS,EAAC,SAAS,YAAE,OAAO,IAAI,cAAc,GAAe,EAC1E,KAAC,UAAU,IACT,KAAK,EAAC,OAAO,EACb,OAAO,EAAC,OAAO,EACf,OAAO,EAAE,OAAO,EAChB,SAAS,EAAC,mJAAmJ,YAE7J,KAAC,CAAC,IAAC,SAAS,EAAC,QAAQ,GAAG,GACb,EACb,cAAK,SAAS,EAAC,yDAAyD,YAAE,QAAQ,GAAO,EACxF,OAAO,CAAC,CAAC,CAAC,YAAG,SAAS,EAAC,mCAAmC,YAAE,OAAO,GAAK,CAAC,CAAC,CAAC,IAAI,IAClE,GACT,CACV,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/react/components/Modal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAWvC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,2BAA2B,CAAC,IAAI,CAAC;AA4CvF,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,SAAS,CAAC;IACpB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,mFAAmF;IACnF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6FAA6F;IAC7F,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,gFAAgF;IAChF,UAAU,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,EACpB,IAAI,EACJ,OAAO,EACP,IAAW,EACX,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,EACP,OAAO,EACP,MAAM,EACN,UAAiB,EACjB,aAAoB,EACpB,KAAK,EACL,UAAiB,EACjB,SAAS,GACV,EAAE,UAAU,+BAgJZ"}
1
+ {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/react/components/Modal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAYvC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,2BAA2B,CAAC,IAAI,CAAC;AA6CvF,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,SAAS,CAAC;IACpB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,mFAAmF;IACnF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6FAA6F;IAC7F,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,gFAAgF;IAChF,UAAU,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,EACpB,IAAI,EACJ,OAAO,EACP,IAAW,EACX,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,EACP,OAAO,EACP,MAAM,EACN,UAAiB,EACjB,aAAoB,EACpB,KAAK,EACL,UAAiB,EACjB,SAAS,GACV,EAAE,UAAU,+BA+IZ"}