@danxbot/ui 15.7.0 → 15.8.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.
@@ -14,6 +14,20 @@ interface EditGutterFieldProps {
14
14
  /** Render no pencil — the field cannot be edited here. */
15
15
  disabled?: boolean;
16
16
  className?: string;
17
+ /**
18
+ * DX-3623 — `"sm"` (default, unchanged) is `--control-sm` (36px on a fine
19
+ * pointer). `"xs"` is `--control-xs` (28px on a fine pointer) for a host
20
+ * page whose own left gutter is narrower than 36px — it still fits INSIDE
21
+ * a typical ~32px page gutter with room to spare, where `"sm"` would not.
22
+ * Neither size opts out of the coarse-pointer tap floor (`dx-tap`'s
23
+ * `min-width`/`min-height: 44px` under `(pointer: coarse)`): on a touch
24
+ * device the pencil's HIT AREA still grows to the accessible 44px minimum
25
+ * once revealed, deliberately overhanging past a gutter narrower than
26
+ * that — it is a `ghost` button, invisible until pressed, so the extra
27
+ * hit area costs nothing visually and nothing in layout (the pencil is
28
+ * `position: absolute` throughout, so growing it never shifts content).
29
+ */
30
+ size?: "sm" | "xs";
17
31
  }
18
32
  /**
19
33
  * The gutter keeps `editing` itself (omit both), or the caller owns it: pass
@@ -26,5 +40,5 @@ export type EditGutterProps = EditGutterFieldProps & ({
26
40
  editing?: undefined;
27
41
  onEditingChange?: (editing: boolean) => void;
28
42
  } | EditActivation);
29
- export declare function EditGutter({ label, children, editing: editingProp, onEditingChange, disabled, className }: EditGutterProps): import("react").JSX.Element;
43
+ export declare function EditGutter({ label, children, editing: editingProp, onEditingChange, disabled, className, size, }: EditGutterProps): import("react").JSX.Element;
30
44
  export {};
@@ -111,6 +111,7 @@ export { EffortControl, DEFAULT_EFFORT_LEVELS, type EffortControlProps, type Eff
111
111
  export { ContextMeter, ChatStatus, type ContextMeterProps, type ContextSegment, type UsageLimit, type ChatStatusProps, } from "./components/chat/ContextMeter";
112
112
  export { cn } from "./lib/cn";
113
113
  export { formatBytes, formatTokens, formatCompactNumber } from "./lib/format";
114
+ export { copyText } from "./lib/clipboard";
114
115
  export { formatDate, parseDate, formatDateTime, parseDateTime, type FormatDateTimeOptions, type ParseDateTimeOptions, formatCurrency, parseCurrency, formatNumber, parseNumber, type FormatNumberOptions, formatBoolean, parseBoolean, type FormatBooleanOptions, } from "./lib/values";
115
116
  export { useFillHeight } from "./lib/use-fill-height";
116
117
  export { useTheme, useUiScale, useContrast, useMotionPreference, type Theme, type UiScale, type ContrastPreference, type MotionPreference, } from "./lib/preferences";
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Copy `text` to the OS clipboard.
3
+ *
4
+ * Tries `navigator.clipboard.writeText` first. If that API is unavailable or
5
+ * rejects (e.g. permission denied, as in the Claude Code desktop in-app
6
+ * browser — DX-3661), falls back to selecting a hidden `<textarea>` and
7
+ * running `document.execCommand('copy')`, restoring the document's prior
8
+ * selection and focused element afterward.
9
+ *
10
+ * Rejects only when both the async API and the fallback fail.
11
+ */
12
+ export declare function copyText(text: string): Promise<void>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@danxbot/ui",
3
- "version": "15.7.0",
3
+ "version": "15.8.0",
4
4
  "type": "module",
5
5
  "description": "Danxbot — a domain-agnostic React design system with motion as a first-class primitive.",
6
6
  "license": "MIT",