@jini-ai/admin 0.3.7 → 0.3.9

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 (169) hide show
  1. package/dist/core/index.d.ts +0 -3
  2. package/dist/core/index.js +0 -1
  3. package/dist/core/ports/index.d.ts +0 -1
  4. package/dist/core/ports/menus.d.ts +0 -43
  5. package/dist/core/ports/menus.js +0 -43
  6. package/dist/react/components/ConfirmDialog/ConfirmDialog.d.ts +2 -1
  7. package/dist/react/components/ConfirmDialog/ConfirmDialog.hooks.d.ts +37 -1
  8. package/dist/react/components/ConfirmDialog/ConfirmDialog.hooks.js +42 -1
  9. package/dist/react/components/ConfirmDialog/ConfirmDialog.js +2 -3
  10. package/dist/react/components/Sidebar.js +2 -90
  11. package/dist/react/index.d.ts +3 -1
  12. package/dist/react/index.js +5 -3
  13. package/package.json +5 -4
  14. package/dist/browser/index.d.ts.map +0 -1
  15. package/dist/browser/index.js.map +0 -1
  16. package/dist/browser/navigation.d.ts.map +0 -1
  17. package/dist/browser/navigation.js.map +0 -1
  18. package/dist/core/data-table/types.d.ts.map +0 -1
  19. package/dist/core/data-table/types.js.map +0 -1
  20. package/dist/core/entities/rules.d.ts +0 -138
  21. package/dist/core/entities/rules.d.ts.map +0 -1
  22. package/dist/core/entities/rules.js +0 -344
  23. package/dist/core/entities/rules.js.map +0 -1
  24. package/dist/core/gated/types.d.ts.map +0 -1
  25. package/dist/core/gated/types.js.map +0 -1
  26. package/dist/core/index.d.ts.map +0 -1
  27. package/dist/core/index.js.map +0 -1
  28. package/dist/core/manifest/rules.d.ts.map +0 -1
  29. package/dist/core/manifest/rules.js.map +0 -1
  30. package/dist/core/manifest/types.d.ts.map +0 -1
  31. package/dist/core/manifest/types.js.map +0 -1
  32. package/dist/core/permissions/rules.d.ts.map +0 -1
  33. package/dist/core/permissions/rules.js.map +0 -1
  34. package/dist/core/ports/analytics.d.ts.map +0 -1
  35. package/dist/core/ports/analytics.js.map +0 -1
  36. package/dist/core/ports/auth.d.ts.map +0 -1
  37. package/dist/core/ports/auth.js.map +0 -1
  38. package/dist/core/ports/comments.d.ts.map +0 -1
  39. package/dist/core/ports/comments.js.map +0 -1
  40. package/dist/core/ports/database.d.ts.map +0 -1
  41. package/dist/core/ports/database.js.map +0 -1
  42. package/dist/core/ports/entities.d.ts +0 -302
  43. package/dist/core/ports/entities.d.ts.map +0 -1
  44. package/dist/core/ports/entities.js +0 -47
  45. package/dist/core/ports/entities.js.map +0 -1
  46. package/dist/core/ports/forms.d.ts.map +0 -1
  47. package/dist/core/ports/forms.js.map +0 -1
  48. package/dist/core/ports/identity.d.ts.map +0 -1
  49. package/dist/core/ports/identity.js.map +0 -1
  50. package/dist/core/ports/index.d.ts.map +0 -1
  51. package/dist/core/ports/index.js.map +0 -1
  52. package/dist/core/ports/integrations.d.ts.map +0 -1
  53. package/dist/core/ports/integrations.js.map +0 -1
  54. package/dist/core/ports/media.d.ts.map +0 -1
  55. package/dist/core/ports/media.js.map +0 -1
  56. package/dist/core/ports/members.d.ts.map +0 -1
  57. package/dist/core/ports/members.js.map +0 -1
  58. package/dist/core/ports/menus.d.ts.map +0 -1
  59. package/dist/core/ports/menus.js.map +0 -1
  60. package/dist/core/ports/plugins.d.ts.map +0 -1
  61. package/dist/core/ports/plugins.js.map +0 -1
  62. package/dist/core/ports/recovery.d.ts.map +0 -1
  63. package/dist/core/ports/recovery.js.map +0 -1
  64. package/dist/core/ports/redirects.d.ts.map +0 -1
  65. package/dist/core/ports/redirects.js.map +0 -1
  66. package/dist/core/ports/seo.d.ts.map +0 -1
  67. package/dist/core/ports/seo.js.map +0 -1
  68. package/dist/core/ports/settings.d.ts.map +0 -1
  69. package/dist/core/ports/settings.js.map +0 -1
  70. package/dist/core/ports/workspace.d.ts.map +0 -1
  71. package/dist/core/ports/workspace.js.map +0 -1
  72. package/dist/core/routing/rules.d.ts.map +0 -1
  73. package/dist/core/routing/rules.js.map +0 -1
  74. package/dist/core/routing/types.d.ts.map +0 -1
  75. package/dist/core/routing/types.js.map +0 -1
  76. package/dist/core/transport/errors.d.ts.map +0 -1
  77. package/dist/core/transport/errors.js.map +0 -1
  78. package/dist/core/transport/http.d.ts.map +0 -1
  79. package/dist/core/transport/http.js.map +0 -1
  80. package/dist/core/transport/index.d.ts.map +0 -1
  81. package/dist/core/transport/index.js.map +0 -1
  82. package/dist/core/transport/types.d.ts.map +0 -1
  83. package/dist/core/transport/types.js.map +0 -1
  84. package/dist/react/components/ConfirmButton/ConfirmButton.d.ts.map +0 -1
  85. package/dist/react/components/ConfirmButton/ConfirmButton.hooks.d.ts.map +0 -1
  86. package/dist/react/components/ConfirmButton/ConfirmButton.hooks.js.map +0 -1
  87. package/dist/react/components/ConfirmButton/ConfirmButton.js.map +0 -1
  88. package/dist/react/components/ConfirmButton.d.ts +0 -39
  89. package/dist/react/components/ConfirmButton.d.ts.map +0 -1
  90. package/dist/react/components/ConfirmButton.js +0 -79
  91. package/dist/react/components/ConfirmButton.js.map +0 -1
  92. package/dist/react/components/ConfirmDialog/ConfirmDialog.d.ts.map +0 -1
  93. package/dist/react/components/ConfirmDialog/ConfirmDialog.hooks.d.ts.map +0 -1
  94. package/dist/react/components/ConfirmDialog/ConfirmDialog.hooks.js.map +0 -1
  95. package/dist/react/components/ConfirmDialog/ConfirmDialog.js.map +0 -1
  96. package/dist/react/components/ConfirmDialog.d.ts +0 -57
  97. package/dist/react/components/ConfirmDialog.d.ts.map +0 -1
  98. package/dist/react/components/ConfirmDialog.js +0 -85
  99. package/dist/react/components/ConfirmDialog.js.map +0 -1
  100. package/dist/react/components/DataTable.d.ts.map +0 -1
  101. package/dist/react/components/DataTable.js.map +0 -1
  102. package/dist/react/components/InteractiveHtmlEditor/InteractiveHtmlEditor.d.ts.map +0 -1
  103. package/dist/react/components/InteractiveHtmlEditor/InteractiveHtmlEditor.js.map +0 -1
  104. package/dist/react/components/RowMenu/RowMenu.d.ts.map +0 -1
  105. package/dist/react/components/RowMenu/RowMenu.hooks.d.ts.map +0 -1
  106. package/dist/react/components/RowMenu/RowMenu.hooks.js.map +0 -1
  107. package/dist/react/components/RowMenu/RowMenu.js.map +0 -1
  108. package/dist/react/components/RowMenu.d.ts +0 -44
  109. package/dist/react/components/RowMenu.d.ts.map +0 -1
  110. package/dist/react/components/RowMenu.js +0 -149
  111. package/dist/react/components/RowMenu.js.map +0 -1
  112. package/dist/react/components/Sidebar.d.ts.map +0 -1
  113. package/dist/react/components/Sidebar.js.map +0 -1
  114. package/dist/react/hooks/use-nav-sections.d.ts.map +0 -1
  115. package/dist/react/hooks/use-nav-sections.js.map +0 -1
  116. package/dist/react/hooks/use-sidebar-rail.d.ts.map +0 -1
  117. package/dist/react/hooks/use-sidebar-rail.js.map +0 -1
  118. package/dist/react/index.d.ts.map +0 -1
  119. package/dist/react/index.js.map +0 -1
  120. package/dist/react/types.d.ts.map +0 -1
  121. package/dist/react/types.js.map +0 -1
  122. package/dist/server/composio/bounded-data.d.ts +0 -36
  123. package/dist/server/composio/bounded-data.d.ts.map +0 -1
  124. package/dist/server/composio/bounded-data.js +0 -181
  125. package/dist/server/composio/bounded-data.js.map +0 -1
  126. package/dist/server/composio/catalog.d.ts +0 -147
  127. package/dist/server/composio/catalog.d.ts.map +0 -1
  128. package/dist/server/composio/catalog.js +0 -126
  129. package/dist/server/composio/catalog.js.map +0 -1
  130. package/dist/server/composio/composio-config.d.ts +0 -42
  131. package/dist/server/composio/composio-config.d.ts.map +0 -1
  132. package/dist/server/composio/composio-config.js +0 -145
  133. package/dist/server/composio/composio-config.js.map +0 -1
  134. package/dist/server/composio/composio-descriptions.d.ts +0 -16
  135. package/dist/server/composio/composio-descriptions.d.ts.map +0 -1
  136. package/dist/server/composio/composio-descriptions.js +0 -766
  137. package/dist/server/composio/composio-descriptions.js.map +0 -1
  138. package/dist/server/composio/composio.d.ts +0 -364
  139. package/dist/server/composio/composio.d.ts.map +0 -1
  140. package/dist/server/composio/composio.js +0 -1902
  141. package/dist/server/composio/composio.js.map +0 -1
  142. package/dist/server/composio/errors.d.ts +0 -15
  143. package/dist/server/composio/errors.d.ts.map +0 -1
  144. package/dist/server/composio/errors.js +0 -16
  145. package/dist/server/composio/errors.js.map +0 -1
  146. package/dist/server/composio/file-lock.d.ts +0 -13
  147. package/dist/server/composio/file-lock.d.ts.map +0 -1
  148. package/dist/server/composio/file-lock.js +0 -92
  149. package/dist/server/composio/file-lock.js.map +0 -1
  150. package/dist/server/composio/index.d.ts +0 -18
  151. package/dist/server/composio/index.d.ts.map +0 -1
  152. package/dist/server/composio/index.js +0 -7
  153. package/dist/server/composio/index.js.map +0 -1
  154. package/dist/server/composio/json-schema.d.ts +0 -93
  155. package/dist/server/composio/json-schema.d.ts.map +0 -1
  156. package/dist/server/composio/json-schema.js +0 -498
  157. package/dist/server/composio/json-schema.js.map +0 -1
  158. package/dist/server/composio/output-protection.d.ts +0 -32
  159. package/dist/server/composio/output-protection.d.ts.map +0 -1
  160. package/dist/server/composio/output-protection.js +0 -105
  161. package/dist/server/composio/output-protection.js.map +0 -1
  162. package/dist/server/composio/service.d.ts +0 -181
  163. package/dist/server/composio/service.d.ts.map +0 -1
  164. package/dist/server/composio/service.js +0 -758
  165. package/dist/server/composio/service.js.map +0 -1
  166. package/dist/server/index.d.ts +0 -15
  167. package/dist/server/index.d.ts.map +0 -1
  168. package/dist/server/index.js +0 -15
  169. package/dist/server/index.js.map +0 -1
@@ -1,39 +0,0 @@
1
- export interface ConfirmButtonProps {
2
- /** Resting-state label, e.g. "Delete". */
3
- label: string;
4
- /** Label shown after the first (arming) click, while awaiting the confirming second click. */
5
- confirmLabel: string;
6
- /** Fired on the second (confirming) click. The caller owns in-flight/error state after that —
7
- * this component only owns the armed/disarmed distinction. */
8
- onConfirm: () => void;
9
- /** Applies `.btn-danger`. Reserve for genuinely irreversible actions; a reversible-but-access-
10
- * affecting action (e.g. Disable) should leave this `false` — see {@link ConfirmTone}'s
11
- * warning-vs-danger split, which this boolean predates and cannot express. */
12
- destructive?: boolean;
13
- /** External in-flight flag (e.g. `rowSavingId === row.id`). Shows `pendingLabel` and disables the
14
- * control. Not itself cancelable — a click already fired `onConfirm` by the time this is true. */
15
- pending?: boolean;
16
- pendingLabel?: string;
17
- /** Disables the control outright — e.g. a built-in row the server would reject anyway. */
18
- disabled?: boolean;
19
- className?: string;
20
- /** Overrides the computed accessible name. Use when several identical-looking controls share a
21
- * page (one "Delete" per table row) and the row's own text doesn't disambiguate them for a
22
- * screen-reader user navigating control-by-control rather than row-by-row. */
23
- ariaLabel?: string;
24
- }
25
- /**
26
- * Two-click in-place confirm button. First click arms it: swaps the visible label to `confirmLabel`
27
- * and announces the armed state through a `.visually-hidden` live region (a separate region rather
28
- * than relying on the button's own label swap, since AT support for announcing a text change inside
29
- * a live-region-less `<button>`'s accessible name is inconsistent across screen readers). Second
30
- * click fires `onConfirm` and disarms immediately. Losing focus, an outside click, or Escape
31
- * disarms without firing, so a control armed and then abandoned (a slow screen-reader read-through,
32
- * a misclick landing elsewhere) cannot later be fired by an unrelated click landing on the same
33
- * screen position.
34
- *
35
- * @complexity O(1) per render/interaction. The two document-level listeners are attached only while
36
- * armed, not for the component's whole mounted lifetime.
37
- */
38
- export declare function ConfirmButton(props: ConfirmButtonProps): import("react").JSX.Element;
39
- //# sourceMappingURL=ConfirmButton.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConfirmButton.d.ts","sourceRoot":"","sources":["../../../src/react/components/ConfirmButton.tsx"],"names":[],"mappings":"AAsBA,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,8FAA8F;IAC9F,YAAY,EAAE,MAAM,CAAC;IACrB;mEAC+D;IAC/D,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB;;mFAE+E;IAC/E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;uGACmG;IACnG,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;mFAE+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,+BAuEtD"}
@@ -1,79 +0,0 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect, useRef, useState } from 'react';
3
- /**
4
- * @file Shared two-click, in-place confirmation control for destructive or access-affecting
5
- * actions.
6
- *
7
- * Exists because confirmation coverage is otherwise a coin flip: some screens guard a delete, some
8
- * ship a bare single-click Disable, and the ones that do guard each reinvent the interaction. This
9
- * is the one shape every screen can import instead of rebuilding.
10
- *
11
- * Chosen over a `window.confirm` wrapper: `window.confirm` blocks the whole tab and cannot carry
12
- * destructive-vs-warning styling or a screen-reader-specific announcement. Chosen over a shared
13
- * modal for the common case because the in-place shape needs no new markup at all — it renders as
14
- * an ordinary `<button>`, optionally with `.btn-danger`.
15
- *
16
- * Not a replacement for {@link ConfirmDialog}: an operation with real context to disclose ("this
17
- * restores a snapshot from 3 days ago and drops 41 entries") needs a modal that can show it. This
18
- * is for the common case — a single row action that would otherwise be bare or a `window.confirm`.
19
- */
20
- const DEFAULT_PENDING_LABEL = '…';
21
- /**
22
- * Two-click in-place confirm button. First click arms it: swaps the visible label to `confirmLabel`
23
- * and announces the armed state through a `.visually-hidden` live region (a separate region rather
24
- * than relying on the button's own label swap, since AT support for announcing a text change inside
25
- * a live-region-less `<button>`'s accessible name is inconsistent across screen readers). Second
26
- * click fires `onConfirm` and disarms immediately. Losing focus, an outside click, or Escape
27
- * disarms without firing, so a control armed and then abandoned (a slow screen-reader read-through,
28
- * a misclick landing elsewhere) cannot later be fired by an unrelated click landing on the same
29
- * screen position.
30
- *
31
- * @complexity O(1) per render/interaction. The two document-level listeners are attached only while
32
- * armed, not for the component's whole mounted lifetime.
33
- */
34
- export function ConfirmButton(props) {
35
- const [confirming, setConfirming] = useState(false);
36
- const buttonRef = useRef(null);
37
- // Listeners are scoped to the armed window only — an idle (disarmed) ConfirmButton costs nothing
38
- // beyond the button element itself, so mounting many of them (one per table row) does not add a
39
- // standing per-row document listener.
40
- useEffect(() => {
41
- if (!confirming)
42
- return;
43
- function disarm() {
44
- setConfirming(false);
45
- }
46
- function onDocMouseDown(e) {
47
- if (!buttonRef.current?.contains(e.target))
48
- disarm();
49
- }
50
- function onKeyDown(e) {
51
- if (e.key === 'Escape')
52
- disarm();
53
- }
54
- document.addEventListener('mousedown', onDocMouseDown);
55
- document.addEventListener('keydown', onKeyDown);
56
- return () => {
57
- document.removeEventListener('mousedown', onDocMouseDown);
58
- document.removeEventListener('keydown', onKeyDown);
59
- };
60
- }, [confirming]);
61
- function handleClick() {
62
- if (props.pending || props.disabled)
63
- return;
64
- if (!confirming) {
65
- setConfirming(true);
66
- return;
67
- }
68
- setConfirming(false);
69
- props.onConfirm();
70
- }
71
- const label = props.pending
72
- ? (props.pendingLabel ?? DEFAULT_PENDING_LABEL)
73
- : confirming
74
- ? props.confirmLabel
75
- : props.label;
76
- const className = [props.className, props.destructive ? 'btn-danger' : null].filter(Boolean).join(' ') || undefined;
77
- return (_jsxs(_Fragment, { children: [_jsx("button", { ref: buttonRef, type: "button", className: className, "data-armed": confirming ? 'true' : undefined, disabled: props.disabled || props.pending, onClick: handleClick, onBlur: () => setConfirming(false), "aria-label": props.ariaLabel, children: label }), _jsx("span", { className: "visually-hidden", role: "status", "aria-live": "polite", children: confirming ? `Press "${props.confirmLabel}" to confirm, or press Escape to cancel.` : '' })] }));
78
- }
79
- //# sourceMappingURL=ConfirmButton.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConfirmButton.js","sourceRoot":"","sources":["../../../src/react/components/ConfirmButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEpD;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,qBAAqB,GAAG,GAAG,CAAC;AA2BlC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IAElD,iGAAiG;IACjG,gGAAgG;IAChG,sCAAsC;IACtC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,UAAU;YAAE,OAAO;QACxB,SAAS,MAAM;YACb,aAAa,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,SAAS,cAAc,CAAC,CAAwB;YAC9C,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAc,CAAC;gBAAE,MAAM,EAAE,CAAC;QAC/D,CAAC;QACD,SAAS,SAAS,CAAC,CAA2B;YAC5C,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ;gBAAE,MAAM,EAAE,CAAC;QACnC,CAAC;QACD,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QACvD,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAChD,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;YAC1D,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACrD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,SAAS,WAAW;QAClB,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ;YAAE,OAAO;QAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,aAAa,CAAC,IAAI,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QACD,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,KAAK,CAAC,SAAS,EAAE,CAAC;IACpB,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO;QACzB,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,IAAI,qBAAqB,CAAC;QAC/C,CAAC,CAAC,UAAU;YACV,CAAC,CAAC,KAAK,CAAC,YAAY;YACpB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;IAClB,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC;IAEpH,OAAO,CACL,8BAOE,iBACE,GAAG,EAAE,SAAS,EACd,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,SAAS,gBACR,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAC3C,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,EACzC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,gBACtB,KAAK,CAAC,SAAS,YAE1B,KAAK,GACC,EAIT,eAAM,SAAS,EAAC,iBAAiB,EAAC,IAAI,EAAC,QAAQ,eAAW,QAAQ,YAC/D,UAAU,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,YAAY,0CAA0C,CAAC,CAAC,CAAC,EAAE,GACpF,IACN,CACJ,CAAC;AACJ,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConfirmDialog.d.ts","sourceRoot":"","sources":["../../../../src/react/components/ConfirmDialog/ConfirmDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAA8B,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEnF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAEH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;yFACqF;IACrF,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;uGAEmG;IACnG,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;wEACoE;IACpE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB;;;;;;2FAMuF;IACvF,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B;uEACmE;IACnE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA2ED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,EAAE,SAA4B,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,+BAiDpH"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConfirmDialog.hooks.d.ts","sourceRoot":"","sources":["../../../../src/react/components/ConfirmDialog/ConfirmDialog.hooks.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAEvG;;;;;;;;;;;GAWG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,WAAW,uBAAuB;IACtC,8FAA8F;IAC9F,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAC/C,SAAS,EAAE,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAC/C,kBAAkB,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IACvE,mBAAmB,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;CACrE;AAED;kGACkG;AAClG,MAAM,MAAM,gBAAgB,GAAG,CAC7B,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,OAAO,GAAG,SAAS,EAC5B,QAAQ,EAAE,MAAM,IAAI,KACjB,uBAAuB,CAAC;AAE7B;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,OAAO,GAAG,SAAS,EAC5B,QAAQ,EAAE,MAAM,IAAI,GACnB,uBAAuB,CA4DzB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConfirmDialog.hooks.js","sourceRoot":"","sources":["../../../../src/react/components/ConfirmDialog/ConfirmDialog.hooks.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAwD,MAAM,OAAO,CAAC;AA2CvG;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAa,EACb,OAA4B,EAC5B,QAAoB;IAEpB,yFAAyF;IACzF,wFAAwF;IACxF,2FAA2F;IAC3F,gGAAgG;IAChG,6FAA6F;IAC7F,2FAA2F;IAC3F,sEAAsE;IACtE,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC;IACxB,MAAM,SAAS,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IAClD,kGAAkG;IAClG,yFAAyF;IACzF,kGAAkG;IAClG,kGAAkG;IAClG,8CAA8C;IAC9C,MAAM,UAAU,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAEhD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,IAAI,IAAI,EAAE,CAAC;YACT,UAAU,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC;YAC5C,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;gBAC3C,IAAI,CAAC,MAAM,CAAC,IAAI;oBAAE,MAAM,CAAC,SAAS,EAAE,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAClC,CAAC;YACD,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;gBACvC,IAAI,MAAM,CAAC,IAAI;oBAAE,MAAM,CAAC,KAAK,EAAE,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YACjC,CAAC;YACD,IAAI,UAAU,CAAC,OAAO,YAAY,WAAW;gBAAE,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC5E,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,SAAS,kBAAkB,CAAC,CAAoC;QAC9D,4FAA4F;QAC5F,oFAAoF;QACpF,4FAA4F;QAC5F,4FAA4F;QAC5F,6FAA6F;QAC7F,mCAAmC;QACnC,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,OAAO;YAAE,OAAO;QACpB,QAAQ,EAAE,CAAC;IACb,CAAC;IAED,SAAS,mBAAmB,CAAC,CAAgC;QAC3D,gGAAgG;QAChG,+FAA+F;QAC/F,8CAA8C;QAC9C,IAAI,OAAO;YAAE,OAAO;QACpB,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,OAAO;YAAE,QAAQ,EAAE,CAAC;IACjD,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,CAAC;AACpF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConfirmDialog.js","sourceRoot":"","sources":["../../../../src/react/components/ConfirmDialog/ConfirmDialog.tsx"],"names":[],"mappings":"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"}
@@ -1,57 +0,0 @@
1
- import { type ReactNode } from 'react';
2
- import { type ConfirmTone } from '../types.js';
3
- /**
4
- * @file Shared modal confirmation primitive — the replacement for `window.confirm`, which blocks
5
- * the whole tab, cannot carry destructive-vs-neutral styling, and reads as a browser artifact
6
- * rather than part of the product.
7
- *
8
- * Built on the native `<dialog>` element (`showModal()`/`close()`) rather than a plain-`<div>`
9
- * overlay + backdrop idiom: that shape hand-rolls focus trapping, Escape handling, and a backdrop
10
- * element, all of which the browser's own top layer gives a real `<dialog>` for free, including
11
- * correct stacking above everything else on the page without a chosen `z-index`.
12
- *
13
- * `dialog.showModal()`/`dialog.close()` are guarded by a `typeof` check rather than called
14
- * unconditionally: jsdom (this package's React test environment, verified directly rather than
15
- * assumed) does not implement either method at all — calling them throws `TypeError`. The fallback
16
- * branch below toggles the plain `open` attribute instead, which no browser shipping a real
17
- * `<dialog>` ever takes (the `showModal`/`close` branch always wins there), so this only changes
18
- * behavior under jsdom, where it keeps the dialog mountable and its content queryable.
19
- *
20
- * Unstyled, like everything in this layer: the `.confirm-dialog` / `.btn-secondary` /
21
- * `.btn-danger` / `.btn-warning` class names are emitted for the host stylesheet to define.
22
- */
23
- export interface ConfirmDialogProps {
24
- open: boolean;
25
- title: string;
26
- body: ReactNode;
27
- confirmLabel: string;
28
- /** @default "Cancel" */
29
- cancelLabel?: string;
30
- /** Applies `.btn-warning`/`.btn-danger` to the confirm action. Defaults to `"default"` (no class,
31
- * the plain primary button). Wins over `destructive` below when both are passed. */
32
- tone?: ConfirmTone;
33
- /** @deprecated Use `tone: "danger"` instead — this only ever expressed the danger tier, and the
34
- * vocabulary has a second one (`"warning"`) this boolean cannot reach. Kept working (mapped to
35
- * `tone: "danger"` when `tone` is not set) for existing callers rather than a breaking rename. */
36
- destructive?: boolean;
37
- /** External in-flight flag. Disables both actions and blocks Escape/backdrop dismissal so a
38
- * request already underway cannot be raced by a second dismiss. */
39
- pending?: boolean;
40
- onConfirm: () => void;
41
- onCancel: () => void;
42
- }
43
- /**
44
- * Controlled modal confirm. The caller keeps this mounted and toggles `open` — it is never
45
- * conditionally rendered by its parent — so the effect below has a stable `<dialog>` element to
46
- * call `showModal()`/`close()` on and to restore focus through when it closes.
47
- *
48
- * Focus moves to the *cancel* action on open, not confirm — an operator whose first keystroke after
49
- * a slow read-through is Enter should land on the safe action, not the destructive one. Both
50
- * actions are plain `type="button"` (no `<form method="dialog">`, no `type="submit"`), so there is
51
- * no browser-assigned "default button" for Enter to reach for at all; confirm can only ever fire
52
- * from an explicit click or explicit Tab-then-Enter onto it.
53
- *
54
- * @complexity O(1) per open/close transition — one `showModal`/`close` call and one focus move.
55
- */
56
- export declare function ConfirmDialog(props: ConfirmDialogProps): import("react").JSX.Element;
57
- //# sourceMappingURL=ConfirmDialog.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConfirmDialog.d.ts","sourceRoot":"","sources":["../../../src/react/components/ConfirmDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6C,KAAK,SAAS,EAAuB,MAAM,OAAO,CAAC;AACvG,OAAO,EAA8B,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;yFACqF;IACrF,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;uGAEmG;IACnG,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;wEACoE;IACpE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAID;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,+BA0FtD"}
@@ -1,85 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect, useId, useRef } from 'react';
3
- import { resolveTone, toneClassName } from '../types.js';
4
- const DEFAULT_CANCEL_LABEL = 'Cancel';
5
- /**
6
- * Controlled modal confirm. The caller keeps this mounted and toggles `open` — it is never
7
- * conditionally rendered by its parent — so the effect below has a stable `<dialog>` element to
8
- * call `showModal()`/`close()` on and to restore focus through when it closes.
9
- *
10
- * Focus moves to the *cancel* action on open, not confirm — an operator whose first keystroke after
11
- * a slow read-through is Enter should land on the safe action, not the destructive one. Both
12
- * actions are plain `type="button"` (no `<form method="dialog">`, no `type="submit"`), so there is
13
- * no browser-assigned "default button" for Enter to reach for at all; confirm can only ever fire
14
- * from an explicit click or explicit Tab-then-Enter onto it.
15
- *
16
- * @complexity O(1) per open/close transition — one `showModal`/`close` call and one focus move.
17
- */
18
- export function ConfirmDialog(props) {
19
- // `useId()`, not a string literal — a hardcoded id breaks the moment a screen mounts two
20
- // `ConfirmDialog`s at once (a delete-role and a delete-policy confirm on one page, both
21
- // stay-mounted/toggle-`open` per this component's own doc comment above): two `<h2>`s share one
22
- // id, and `aria-labelledby` resolves via `getElementById`, which always returns the FIRST match
23
- // in document order regardless of which dialog is actually open — a screen reader announcing
24
- // "Delete role?" while the operator is about to confirm "Delete policy?", on a destructive
25
- // action. `useId()` gives every mounted instance its own id for free.
26
- const titleId = useId();
27
- const dialogRef = useRef(null);
28
- const cancelRef = useRef(null);
29
- // Captured at the moment `open` flips true, before focus moves into the dialog — the element that
30
- // had focus then is, by construction, whatever triggered this dialog (a `RowMenu` item's
31
- // "Delete", a plain trigger button, …). Restored on close rather than left wherever the browser's
32
- // own modal-focus algorithm happened to land (its default without this is `<body>`, which drops a
33
- // keyboard user back to the top of the page).
34
- const triggerRef = useRef(null);
35
- useEffect(() => {
36
- const dialog = dialogRef.current;
37
- if (!dialog)
38
- return;
39
- if (props.open) {
40
- triggerRef.current = document.activeElement;
41
- if (typeof dialog.showModal === 'function') {
42
- if (!dialog.open)
43
- dialog.showModal();
44
- }
45
- else {
46
- dialog.setAttribute('open', '');
47
- }
48
- cancelRef.current?.focus();
49
- }
50
- else {
51
- if (typeof dialog.close === 'function') {
52
- if (dialog.open)
53
- dialog.close();
54
- }
55
- else {
56
- dialog.removeAttribute('open');
57
- }
58
- if (triggerRef.current instanceof HTMLElement)
59
- triggerRef.current.focus();
60
- }
61
- }, [props.open]);
62
- function handleNativeCancel(e) {
63
- // Fires on Escape while a real `showModal()`-opened dialog has focus. Always prevented: the
64
- // effect above is the single source of truth for open/closed (driven by `props.open`), so
65
- // letting the browser close the element on its own would desync DOM state from React state.
66
- // Escape still closes the dialog — it just does so by routing through `onCancel`, same as a
67
- // Cancel-button click, so the caller's `open` state (and therefore this same effect) is what
68
- // actually calls `dialog.close()`.
69
- e.preventDefault();
70
- if (props.pending)
71
- return;
72
- props.onCancel();
73
- }
74
- function handleBackdropClick(e) {
75
- // A `<dialog>` element's own box is sized to its content, not the viewport — a click that lands
76
- // on the `<dialog>` element itself (as opposed to one of its children) is therefore a click on
77
- // the backdrop area outside that content box.
78
- if (props.pending)
79
- return;
80
- if (e.target === dialogRef.current)
81
- props.onCancel();
82
- }
83
- return (_jsxs("dialog", { ref: dialogRef, className: "confirm-dialog", "aria-labelledby": titleId, onCancel: handleNativeCancel, onClick: handleBackdropClick, children: [_jsx("h2", { id: titleId, children: props.title }), _jsx("div", { className: "confirm-dialog-body", children: props.body }), _jsxs("div", { className: "confirm-dialog-actions", children: [_jsx("button", { ref: cancelRef, type: "button", className: "btn-secondary", disabled: props.pending, onClick: props.onCancel, children: props.cancelLabel ?? DEFAULT_CANCEL_LABEL }), _jsx("button", { type: "button", className: toneClassName(resolveTone(props)), disabled: props.pending, onClick: props.onConfirm, children: props.confirmLabel })] })] }));
84
- }
85
- //# sourceMappingURL=ConfirmDialog.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConfirmDialog.js","sourceRoot":"","sources":["../../../src/react/components/ConfirmDialog.tsx"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../../src/react/components/DataTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEjG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AAIH,YAAY,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,CAAC;AAE3D;0FAC0F;AAC1F,MAAM,WAAW,mBAAmB,CAAC,GAAG;IACtC;;;;iDAI6C;IAC7C,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,MAAM,CAAC;IACpC;;;+DAG2D;IAC3D,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C;;;uCAGmC;IACnC,KAAK,EAAE,CAAC,SAAS,EAAE,sBAAsB,GAAG,IAAI,KAAK,MAAM,CAAC;CAC7D;AAED,MAAM,WAAW,eAAe,CAAC,GAAG;IAClC;4EACwE;IACxE,GAAG,EAAE,MAAM,CAAC;IACZ;mGAC+F;IAC/F,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IAC7C,qCAAqC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yFAAyF;IACzF,aAAa,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC,CAAC;IAC3E;0FACsF;IACtF,IAAI,CAAC,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,cAAc,CAAC,GAAG;IACjC,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC;IACrB,OAAO,EAAE,aAAa,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C;;2DAEuD;IACvD,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5C;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;qBAGiB;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,wEAAwE;IACxE,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,2FAA2F;IAC3F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;4BACwB;IACxB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,sEAAsE;IACtE,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC/D,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACjC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,IAAI,CAAC;CACnD;AAmED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,+BAiExD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DataTable.js","sourceRoot":"","sources":["../../../src/react/components/DataTable.tsx"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"InteractiveHtmlEditor.d.ts","sourceRoot":"","sources":["../../../../src/react/components/InteractiveHtmlEditor/InteractiveHtmlEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,gCAAgC,EACrC,KAAK,0BAA0B,IAAI,eAAe,EACnD,MAAM,yBAAyB,CAAC;AAmCjC;;;wFAGwF;AACxF,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAE5D;AA2ED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,OAAO,GAAG,gCAAgC,GAAG,SAAS,CAelG;AAED,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAAC,eAAe,EAAE,oBAAoB,GAAG,0BAA0B,CAAC,CAAC;AAElH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,+BAQtE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"InteractiveHtmlEditor.js","sourceRoot":"","sources":["../../../../src/react/components/InteractiveHtmlEditor/InteractiveHtmlEditor.tsx"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RowMenu.d.ts","sourceRoot":"","sources":["../../../../src/react/components/RowMenu/RowMenu.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA8B,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB;;;;;sBAKkB;IAClB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;uGAEmG;IACnG,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB;;wEAEoE;IACpE,YAAY,EAAE,MAAM,CAAC;IACrB;;wEAEoE;IACpE,UAAU,CAAC,EAAE,OAAO,UAAU,CAAC;IAC/B;uEACmE;IACnE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAiBD,wBAAgB,OAAO,CAAC,EACtB,UAAU,EAAE,eAA4B,EACxC,WAAW,EAAE,UAAU,EACvB,GAAG,KAAK,EACT,EAAE,YAAY,+BA0Fd"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RowMenu.hooks.d.ts","sourceRoot":"","sources":["../../../../src/react/components/RowMenu/RowMenu.hooks.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgD,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAEzF;;;;GAIG;AAEH,UAAU,QAAQ;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC;CAC9B;AAKD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM;;;;;;;0BAsFb,aAAa,CAAC,iBAAiB,CAAC;uBAUnC,aAAa,CAAC,cAAc,CAAC;2BAoCzB,MAAM,IAAI;EAgBzC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RowMenu.hooks.js","sourceRoot":"","sources":["../../../../src/react/components/RowMenu/RowMenu.hooks.tsx"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RowMenu.js","sourceRoot":"","sources":["../../../../src/react/components/RowMenu/RowMenu.tsx"],"names":[],"mappings":"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"}
@@ -1,44 +0,0 @@
1
- import { type ConfirmTone } from '../types.js';
2
- /**
3
- * @file Three-dot overflow menu for table rows — replaces the "one visible button per row" pattern
4
- * so a row can grow more actions (Edit, Disable, Delete, …) without widening the table or producing
5
- * the wall of buttons that pattern turns into.
6
- *
7
- * Portaled to `document.body` and positioned with `getBoundingClientRect()` rather than rendered as
8
- * an in-flow absolutely-positioned child of the trigger — an admin table normally sits inside a
9
- * horizontal scroller (`overflow-x: auto`), and per the CSS overflow spec, setting either axis to a
10
- * non-`visible` value forces the *other* axis to compute as `auto` as well, so a menu positioned to
11
- * escape the table's own box would be silently clipped by that same scroller. This is the identical
12
- * problem `Sidebar.tsx`'s `RailTooltip` solves for `.cms-nav`'s `overflow-y: auto` (see that
13
- * component's doc comment, where it was verified live via `getComputedStyle`) — same fix here: a
14
- * DOM sibling of the app root, not a descendant of the clipping element.
15
- *
16
- * Unstyled: `.row-menu-trigger`, `.row-menu-popup`, `.row-menu-popup-above`, and `.row-menu-item`
17
- * are emitted for the host stylesheet to define. Only the positioning that has to be measured at
18
- * runtime is set inline.
19
- */
20
- export interface RowMenuItem {
21
- key: string;
22
- label: string;
23
- onSelect: () => void;
24
- /** Visual tone — `"warning"` for reversible-but-access-affecting actions (e.g. Disable),
25
- * `"danger"` for genuinely destructive ones (e.g. Delete). Defaults to `"default"` (neutral).
26
- * Shares `ConfirmDialog`'s three-tier vocabulary on purpose — a caller wiring up "Disable opens
27
- * nothing, Delete opens a ConfirmDialog" from the same item list should not have to reconcile
28
- * two different tone enums to keep the colors matching. Wins over `destructive` below when both
29
- * are passed. */
30
- tone?: ConfirmTone;
31
- /** @deprecated Use `tone: "danger"` instead — this only ever expressed the danger tier, and the
32
- * vocabulary has a second one (`"warning"`) this boolean cannot reach. Kept working (mapped to
33
- * `tone: "danger"` when `tone` is not set) for existing callers rather than a breaking rename. */
34
- destructive?: boolean;
35
- }
36
- export interface RowMenuProps {
37
- items: RowMenuItem[];
38
- /** Full accessible name for the trigger, e.g. `Actions for "My Post"` — the row's own title
39
- * doesn't disambiguate a bare "⋯" for a screen-reader user navigating control-by-control rather
40
- * than row-by-row, same reasoning as `ConfirmButton.ariaLabel`. */
41
- triggerLabel: string;
42
- }
43
- export declare function RowMenu(props: RowMenuProps): import("react").JSX.Element;
44
- //# sourceMappingURL=RowMenu.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RowMenu.d.ts","sourceRoot":"","sources":["../../../src/react/components/RowMenu.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA8B,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAE3E;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB;;;;;sBAKkB;IAClB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;uGAEmG;IACnG,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB;;wEAEoE;IACpE,YAAY,EAAE,MAAM,CAAC;CACtB;AAWD,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,+BAsM1C"}
@@ -1,149 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useEffect, useLayoutEffect, useRef, useState } from 'react';
3
- import { createPortal } from 'react-dom';
4
- import { resolveTone, toneClassName } from '../types.js';
5
- /** 8px clearance kept between the menu and the viewport edge on every side it's tested against. */
6
- const VIEWPORT_MARGIN = 8;
7
- export function RowMenu(props) {
8
- const [open, setOpen] = useState(false);
9
- const [position, setPosition] = useState(null);
10
- const [activeIndex, setActiveIndex] = useState(0);
11
- const triggerRef = useRef(null);
12
- const menuRef = useRef(null);
13
- const itemRefs = useRef([]);
14
- itemRefs.current = itemRefs.current.slice(0, props.items.length);
15
- function close(returnFocus) {
16
- setOpen(false);
17
- setPosition(null);
18
- if (returnFocus)
19
- triggerRef.current?.focus();
20
- }
21
- function openAt(index) {
22
- setActiveIndex(index);
23
- setOpen(true);
24
- }
25
- // Measured after the (initially off-screen, `visibility: hidden`) menu has actually laid out, so
26
- // `menuRef.current`'s real dimensions are known before deciding above-vs-below — a plain
27
- // `useEffect` would run one paint too late and produce a visible jump. Recomputed on scroll and
28
- // resize too: a portaled menu is a DOM sibling of its anchor, not a child, so it does not track
29
- // the anchor's position on its own the way an in-flow popup would.
30
- useLayoutEffect(() => {
31
- if (!open)
32
- return;
33
- function reposition() {
34
- const trigger = triggerRef.current;
35
- if (!trigger)
36
- return;
37
- const rect = trigger.getBoundingClientRect();
38
- const menuHeight = menuRef.current?.offsetHeight ?? 0;
39
- const menuWidth = menuRef.current?.offsetWidth ?? 0;
40
- const spaceBelow = window.innerHeight - rect.bottom;
41
- const fitsBelow = spaceBelow >= menuHeight + VIEWPORT_MARGIN;
42
- const placement = fitsBelow || rect.top < menuHeight + VIEWPORT_MARGIN ? 'below' : 'above';
43
- // Right-aligned to the trigger by default (the trigger is the table's last column), clamped
44
- // so it never overflows the viewport's left or right edge.
45
- const left = Math.min(Math.max(VIEWPORT_MARGIN, rect.right - menuWidth), window.innerWidth - menuWidth - VIEWPORT_MARGIN);
46
- setPosition({
47
- top: placement === 'below' ? rect.bottom + 4 : rect.top - 4,
48
- left,
49
- placement,
50
- });
51
- }
52
- reposition();
53
- window.addEventListener('scroll', reposition, true);
54
- window.addEventListener('resize', reposition);
55
- return () => {
56
- window.removeEventListener('scroll', reposition, true);
57
- window.removeEventListener('resize', reposition);
58
- };
59
- }, [open]);
60
- // Click-outside closes. Scoped to the open window only, same lifecycle discipline as
61
- // `ConfirmButton`'s armed-only document listeners — a closed, idle `RowMenu` costs nothing beyond
62
- // its trigger button even with many mounted per table.
63
- useEffect(() => {
64
- if (!open)
65
- return;
66
- function onDocMouseDown(e) {
67
- const target = e.target;
68
- if (menuRef.current?.contains(target) || triggerRef.current?.contains(target))
69
- return;
70
- close(false);
71
- }
72
- document.addEventListener('mousedown', onDocMouseDown);
73
- return () => document.removeEventListener('mousedown', onDocMouseDown);
74
- // eslint-disable-next-line react-hooks/exhaustive-deps
75
- }, [open]);
76
- // Keeps real DOM focus on the active item (roving focus via `tabIndex={-1}` on every item except
77
- // the active one) rather than only tracking `activeIndex` in state — arrow-key navigation needs
78
- // to move the browser's actual focus for a screen reader to announce it.
79
- useEffect(() => {
80
- if (!open)
81
- return;
82
- itemRefs.current[activeIndex]?.focus();
83
- }, [open, activeIndex]);
84
- function onTriggerKeyDown(e) {
85
- if (e.key === 'ArrowDown') {
86
- e.preventDefault();
87
- openAt(0);
88
- }
89
- else if (e.key === 'ArrowUp') {
90
- e.preventDefault();
91
- openAt(props.items.length - 1);
92
- }
93
- }
94
- function onMenuKeyDown(e) {
95
- const count = props.items.length;
96
- switch (e.key) {
97
- case 'ArrowDown':
98
- e.preventDefault();
99
- setActiveIndex((i) => (i + 1) % count);
100
- break;
101
- case 'ArrowUp':
102
- e.preventDefault();
103
- setActiveIndex((i) => (i - 1 + count) % count);
104
- break;
105
- case 'Home':
106
- e.preventDefault();
107
- setActiveIndex(0);
108
- break;
109
- case 'End':
110
- e.preventDefault();
111
- setActiveIndex(count - 1);
112
- break;
113
- case 'Escape':
114
- e.preventDefault();
115
- close(true);
116
- break;
117
- case 'Tab':
118
- // Leaving via Tab closes the menu but does not steal focus back to the trigger — the
119
- // browser's own tab order continues from wherever it lands, matching native menu behavior
120
- // (and unlike Escape, which is an explicit "back out" gesture).
121
- close(false);
122
- break;
123
- default:
124
- break;
125
- }
126
- }
127
- function selectItem(item) {
128
- close(true);
129
- item.onSelect();
130
- }
131
- return (_jsxs(_Fragment, { children: [_jsx("button", { ref: triggerRef, type: "button", className: "row-menu-trigger", "aria-label": props.triggerLabel, "aria-haspopup": "menu", "aria-expanded": open, onClick: () => (open ? close(false) : openAt(0)), onKeyDown: onTriggerKeyDown, children: _jsxs("svg", { viewBox: "0 0 18 18", fill: "currentColor", "aria-hidden": "true", children: [_jsx("circle", { cx: "9", cy: "4.5", r: "1.5" }), _jsx("circle", { cx: "9", cy: "9", r: "1.5" }), _jsx("circle", { cx: "9", cy: "13.5", r: "1.5" })] }) }), open
132
- ? createPortal(_jsx("div", { ref: menuRef, role: "menu", "aria-label": props.triggerLabel, className: `row-menu-popup${position?.placement === 'above' ? ' row-menu-popup-above' : ''}`, style: {
133
- position: 'fixed',
134
- top: position ? position.top : -9999,
135
- left: position ? position.left : -9999,
136
- // Laid out but invisible until the first `reposition()` measurement lands (see the
137
- // layout effect above) — keeps `offsetHeight`/`offsetWidth` measurable without a
138
- // visible flash at the wrong coordinates.
139
- visibility: position ? 'visible' : 'hidden',
140
- transform: position?.placement === 'above' ? 'translateY(-100%)' : undefined,
141
- }, onKeyDown: onMenuKeyDown, children: props.items.map((item, index) => {
142
- const toneClass = toneClassName(resolveTone(item));
143
- return (_jsx("button", { ref: (el) => {
144
- itemRefs.current[index] = el;
145
- }, type: "button", role: "menuitem", tabIndex: -1, className: ['row-menu-item', toneClass].filter(Boolean).join(' '), onClick: () => selectItem(item), children: item.label }, item.key));
146
- }) }), document.body)
147
- : null] }));
148
- }
149
- //# sourceMappingURL=RowMenu.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RowMenu.js","sourceRoot":"","sources":["../../../src/react/components/RowMenu.tsx"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Sidebar.d.ts","sourceRoot":"","sources":["../../../src/react/components/Sidebar.tsx"],"names":[],"mappings":"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"}