@ai-matrx/tap-target 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/dist/buttons.cjs +22 -8
- package/dist/buttons.cjs.map +1 -1
- package/dist/buttons.js +22 -8
- package/dist/buttons.js.map +1 -1
- package/dist/index.cjs +22 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +22 -8
- package/dist/index.js.map +1 -1
- package/dist/styles.css +35 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.1 — 2026-08-29
|
|
4
|
+
|
|
5
|
+
- `mobileIconOnly` prop on `TapTargetButton` / `Transparent` / `Solid` /
|
|
6
|
+
`ForGroup` (ported from the origin host's 2026-08-29 responsive-header
|
|
7
|
+
work): collapses an icon + caption pill to its icon-only 44px tap target
|
|
8
|
+
below the `sm` breakpoint; caption and inline geometry return at `sm+`,
|
|
9
|
+
and `ariaLabel` (falling back to `label`) remains the accessible name.
|
|
10
|
+
`styles.css` carries the new `.matrx-tap-*-mobile-icon-only*` rules.
|
|
11
|
+
|
|
3
12
|
## 0.1.0 — 2026-08-29
|
|
4
13
|
|
|
5
14
|
- Created the package, ported verbatim from the Matrx frontend tap-target
|
package/dist/buttons.cjs
CHANGED
|
@@ -179,17 +179,17 @@ function IconContent({
|
|
|
179
179
|
}
|
|
180
180
|
);
|
|
181
181
|
}
|
|
182
|
-
function resolveTapGeometry(label, size) {
|
|
182
|
+
function resolveTapGeometry(label, size, mobileIconOnly) {
|
|
183
183
|
const inline = Boolean(label);
|
|
184
184
|
if (size === "sm") {
|
|
185
185
|
return {
|
|
186
|
-
outerClassName: inline ? "matrx-tap-target matrx-tap-target-sm matrx-tap-target-inline-sm group" : TAP_GROUP_OUTER_CLASS,
|
|
187
|
-
inlineModifier: "matrx-tap-pill-inline-sm"
|
|
186
|
+
outerClassName: inline && mobileIconOnly ? "matrx-tap-target matrx-tap-target-sm matrx-tap-target-mobile-icon-only-sm group" : inline ? "matrx-tap-target matrx-tap-target-sm matrx-tap-target-inline-sm group" : TAP_GROUP_OUTER_CLASS,
|
|
187
|
+
inlineModifier: mobileIconOnly ? "matrx-tap-pill-mobile-icon-only-sm" : "matrx-tap-pill-inline-sm"
|
|
188
188
|
};
|
|
189
189
|
}
|
|
190
190
|
return {
|
|
191
|
-
outerClassName: inline ? `${TAP_OUTER_CLASS} matrx-tap-target-inline` : TAP_OUTER_CLASS,
|
|
192
|
-
inlineModifier: "matrx-tap-pill-inline"
|
|
191
|
+
outerClassName: inline && mobileIconOnly ? `${TAP_OUTER_CLASS} matrx-tap-target-mobile-icon-only` : inline ? `${TAP_OUTER_CLASS} matrx-tap-target-inline` : TAP_OUTER_CLASS,
|
|
192
|
+
inlineModifier: mobileIconOnly ? "matrx-tap-pill-mobile-icon-only" : "matrx-tap-pill-inline"
|
|
193
193
|
};
|
|
194
194
|
}
|
|
195
195
|
function buildTapInner({
|
|
@@ -229,6 +229,7 @@ function renderTapTarget({
|
|
|
229
229
|
children,
|
|
230
230
|
strokeWidth,
|
|
231
231
|
label,
|
|
232
|
+
mobileIconOnly = false,
|
|
232
233
|
onClick,
|
|
233
234
|
as,
|
|
234
235
|
htmlFor,
|
|
@@ -245,19 +246,24 @@ function renderTapTarget({
|
|
|
245
246
|
rest,
|
|
246
247
|
buttonRef
|
|
247
248
|
}) {
|
|
248
|
-
const { outerClassName, inlineModifier } = resolveTapGeometry(
|
|
249
|
+
const { outerClassName, inlineModifier } = resolveTapGeometry(
|
|
250
|
+
label,
|
|
251
|
+
size,
|
|
252
|
+
mobileIconOnly
|
|
253
|
+
);
|
|
254
|
+
const responsiveLabelClassName = mobileIconOnly ? `${labelClassName ?? "matrx-tap-label"} matrx-tap-label-mobile-icon-only` : labelClassName;
|
|
249
255
|
const inner = buildTapInner({
|
|
250
256
|
label,
|
|
251
257
|
pillClassName,
|
|
252
258
|
iconClassName,
|
|
253
|
-
labelClassName,
|
|
259
|
+
labelClassName: responsiveLabelClassName,
|
|
254
260
|
inlineModifier: label ? inlineModifier : "",
|
|
255
261
|
icon,
|
|
256
262
|
children,
|
|
257
263
|
strokeWidth
|
|
258
264
|
});
|
|
259
265
|
const resolvedTooltip = tooltip !== void 0 ? tooltip : label ? false : void 0;
|
|
260
|
-
const triggerAriaLabel = label ? void 0 : ariaLabel;
|
|
266
|
+
const triggerAriaLabel = label && !mobileIconOnly ? void 0 : ariaLabel ?? label;
|
|
261
267
|
const trigger = renderTrigger({
|
|
262
268
|
href,
|
|
263
269
|
target,
|
|
@@ -415,6 +421,7 @@ var TapTargetButton = (0, import_react.forwardRef)(function TapTargetButton2({
|
|
|
415
421
|
tooltipSide,
|
|
416
422
|
tooltipAlign,
|
|
417
423
|
label,
|
|
424
|
+
mobileIconOnly,
|
|
418
425
|
...rest
|
|
419
426
|
}, ref) {
|
|
420
427
|
const color = className ?? "text-foreground";
|
|
@@ -436,6 +443,7 @@ var TapTargetButton = (0, import_react.forwardRef)(function TapTargetButton2({
|
|
|
436
443
|
tooltipSide,
|
|
437
444
|
tooltipAlign,
|
|
438
445
|
label,
|
|
446
|
+
mobileIconOnly,
|
|
439
447
|
pillClassName: "matrx-tap-pill matrx-glass-thin-border",
|
|
440
448
|
iconClassName: `matrx-tap-icon ${color}`,
|
|
441
449
|
rest,
|
|
@@ -461,6 +469,7 @@ var TapTargetButtonTransparent = (0, import_react.forwardRef)(function TapTarget
|
|
|
461
469
|
tooltipSide,
|
|
462
470
|
tooltipAlign,
|
|
463
471
|
label,
|
|
472
|
+
mobileIconOnly,
|
|
464
473
|
...rest
|
|
465
474
|
}, ref) {
|
|
466
475
|
const color = className ?? "text-foreground";
|
|
@@ -482,6 +491,7 @@ var TapTargetButtonTransparent = (0, import_react.forwardRef)(function TapTarget
|
|
|
482
491
|
tooltipSide,
|
|
483
492
|
tooltipAlign,
|
|
484
493
|
label,
|
|
494
|
+
mobileIconOnly,
|
|
485
495
|
pillClassName: "matrx-tap-pill hover:bg-muted active:bg-muted-foreground/15",
|
|
486
496
|
iconClassName: `matrx-tap-icon ${color}`,
|
|
487
497
|
rest,
|
|
@@ -510,6 +520,7 @@ var TapTargetButtonSolid = (0, import_react.forwardRef)(function TapTargetButton
|
|
|
510
520
|
tooltipSide,
|
|
511
521
|
tooltipAlign,
|
|
512
522
|
label,
|
|
523
|
+
mobileIconOnly,
|
|
513
524
|
...rest
|
|
514
525
|
}, ref) {
|
|
515
526
|
return renderTapTarget({
|
|
@@ -530,6 +541,7 @@ var TapTargetButtonSolid = (0, import_react.forwardRef)(function TapTargetButton
|
|
|
530
541
|
tooltipSide,
|
|
531
542
|
tooltipAlign,
|
|
532
543
|
label,
|
|
544
|
+
mobileIconOnly,
|
|
533
545
|
pillClassName: `matrx-tap-pill ${bgColor} ${iconColor} ${hoverBgColor} ${activeBgColor}`,
|
|
534
546
|
iconClassName: `matrx-tap-icon ${iconColor}`,
|
|
535
547
|
labelClassName: `matrx-tap-label ${iconColor}`,
|
|
@@ -573,6 +585,7 @@ var TapTargetButtonForGroup = (0, import_react.forwardRef)(function TapTargetBut
|
|
|
573
585
|
tooltipSide,
|
|
574
586
|
tooltipAlign,
|
|
575
587
|
label,
|
|
588
|
+
mobileIconOnly,
|
|
576
589
|
...rest
|
|
577
590
|
}, ref) {
|
|
578
591
|
const color = className ?? "text-foreground";
|
|
@@ -595,6 +608,7 @@ var TapTargetButtonForGroup = (0, import_react.forwardRef)(function TapTargetBut
|
|
|
595
608
|
tooltipSide,
|
|
596
609
|
tooltipAlign,
|
|
597
610
|
label,
|
|
611
|
+
mobileIconOnly,
|
|
598
612
|
pillClassName: "matrx-tap-pill matrx-tap-pill-sm matrx-glass-interactive",
|
|
599
613
|
iconClassName: `matrx-tap-icon ${color}`,
|
|
600
614
|
labelClassName: `matrx-tap-label ${color}`,
|
package/dist/buttons.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/buttons.ts","../src/tap-buttons.tsx","../src/tap-target-button.tsx","../src/tooltip.tsx","../src/cn.ts","../src/link.ts"],"sourcesContent":["// @ai-matrx/tap-target/buttons — the ~60 pre-composed one-tag buttons.\n// Heavy by design (every glyph inlined); import from this subpath only where\n// pre-composed buttons are actually used.\n\nexport * from \"./tap-buttons\";\n","\"use client\";\n\nimport { forwardRef, type Ref } from \"react\";\nimport {\n TapTargetButton,\n TapTargetButtonTransparent,\n TapTargetButtonSolid,\n TapTargetButtonForGroup,\n} from \"./tap-target-button\";\nimport type { TapTargetLinkComponent } from \"./link\";\n\n// ---------------------------------------------------------------------------\n// Shared types\n// ---------------------------------------------------------------------------\n\ntype Variant = \"glass\" | \"transparent\" | \"solid\" | \"group\";\n\nexport interface TapButtonProps {\n /** Forwarded to the underlying button (Radix `asChild`, focus chains, etc.). */\n ref?: Ref<HTMLButtonElement> | undefined;\n variant?: Variant | undefined;\n onClick?: (() => void) | undefined;\n as?: \"button\" | \"label\" | undefined;\n htmlFor?: string | undefined;\n ariaLabel?: string | undefined;\n disabled?: boolean | undefined;\n tabIndex?: number | undefined;\n className?: string | undefined;\n strokeWidth?: number | undefined;\n // Solid-variant color overrides — only used when variant=\"solid\"\n bgColor?: string | undefined;\n iconColor?: string | undefined;\n hoverBgColor?: string | undefined;\n activeBgColor?: string | undefined;\n // Link support — when set, the button renders as a link or <a>.\n // Internal hrefs use the injected link component (setTapTargetLinkComponent\n // or the `linkComponent` prop; plain <a> when none is registered); external\n // (http(s)://, mailto:, tel:) use <a> with target=\"_blank\" +\n // rel=\"noopener noreferrer\" by default. Pass an explicit `target` to\n // override (works for internal links too).\n href?: string | undefined;\n target?: \"_blank\" | \"_self\" | \"_parent\" | \"_top\" | undefined;\n rel?: string | undefined;\n prefetch?: boolean | null | undefined;\n /** Per-instance link component override for internal hrefs. */\n linkComponent?: TapTargetLinkComponent | undefined;\n // Tooltip support — defaults to `ariaLabel`. Pass `false` to opt out.\n tooltip?: string | false | undefined;\n tooltipSide?: \"top\" | \"right\" | \"bottom\" | \"left\" | undefined;\n tooltipAlign?: \"start\" | \"center\" | \"end\" | undefined;\n /** Inline caption after the icon — see TapTargetButton `label`. */\n label?: string | undefined;\n /** Passthrough from AITapButtonProps / MakerTapButton — stripped before DOM. */\n colored?: boolean | undefined;\n}\n\n// ---------------------------------------------------------------------------\n// Variant resolver — maps a variant string to the correct wrapper component.\n// Runs at build/server time so there's zero client cost.\n//\n// IMPORTANT: `Wrap` MUST forward refs. The pre-composed `*TapButton` functions\n// below are plain function components (in React 19 ref is a regular prop) and\n// spread `{...props}` to `Wrap` — that spread carries ref through. `Wrap`\n// extracts ref and passes it explicitly to the underlying `forwardRef`\n// primitive. Without this, every `*TapButton` placed inside a Radix\n// `*Trigger asChild` (DropdownMenu, Popover, Tooltip, etc.) silently loses\n// the ref — the popper can't anchor and Radix's injected event handlers /\n// `data-state` / `aria-*` get dropped. (Precedent: matrx-frontend\n// `features/files/FEATURE.md`, where this pattern was established.)\n// ---------------------------------------------------------------------------\n\nconst Wrap = forwardRef<\n HTMLButtonElement,\n TapButtonProps & { children: React.ReactNode }\n>(function Wrap(\n {\n variant = \"glass\",\n children,\n bgColor,\n iconColor,\n hoverBgColor,\n activeBgColor,\n // AITapButtonProps passthrough — not a DOM attribute (see ai-tap-buttons Wrap)\n colored: _colored,\n ...props\n },\n ref,\n) {\n switch (variant) {\n case \"transparent\":\n return (\n <TapTargetButtonTransparent ref={ref} {...props}>\n {children}\n </TapTargetButtonTransparent>\n );\n case \"solid\":\n return (\n <TapTargetButtonSolid\n ref={ref}\n bgColor={bgColor}\n iconColor={iconColor}\n hoverBgColor={hoverBgColor}\n activeBgColor={activeBgColor}\n {...props}\n >\n {children}\n </TapTargetButtonSolid>\n );\n case \"group\":\n return (\n <TapTargetButtonForGroup ref={ref} {...props}>\n {children}\n </TapTargetButtonForGroup>\n );\n default:\n return (\n <TapTargetButton ref={ref} {...props}>\n {children}\n </TapTargetButton>\n );\n }\n});\n\n// ---------------------------------------------------------------------------\n// Pre-composed buttons — one import, one tag, zero configuration needed.\n// Default variant is \"glass\". Override with variant=\"transparent\" etc.\n// All SVG paths match lucide-react v0.577.0 exactly.\n// ---------------------------------------------------------------------------\n\n// lucide: menu (hand-crafted HeroIcons path — no Lucide equivalent, kept as-is)\nexport function MenuTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Menu\" strokeWidth={1.75} {...props}>\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5\"\n />\n </Wrap>\n );\n}\n\n// lucide: plus (hand-crafted — no drift, kept as-is)\nexport function PlusTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Add\" {...props}>\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M12 4.5v15m7.5-7.5h-15\"\n />\n </Wrap>\n );\n}\n\n// lucide: search → circle cx=11 cy=11 r=8 + line to 21,21\nexport function SearchTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Search\" {...props}>\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <path d=\"m21 21-4.34-4.34\" />\n </Wrap>\n );\n}\n\n// lucide: settings (hand-crafted — kept as-is, Lucide uses \"settings-2\" pattern)\nexport function SettingsTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Settings\" {...props}>\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z\"\n />\n </Wrap>\n );\n}\n\n// lucide: maximize (hand-crafted corner-arrows — kept as-is)\nexport function MaximizeTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Fullscreen\" {...props}>\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M3.75 3.75v4.5m0-4.5h4.5m-4.5 0L9 9M3.75 20.25v-4.5m0 4.5h4.5m-4.5 0L9 15M20.25 3.75h-4.5m4.5 0v4.5m0-4.5L15 9m5.25 11.25h-4.5m4.5 0v-4.5m0 4.5L15 15\"\n />\n </Wrap>\n );\n}\n\n// lucide: home v0.577.0 — used as the \"Hub\" (main/list) action\nexport function HomeTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Hub\" {...props}>\n <path d=\"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8\" />\n <path d=\"M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\" />\n </Wrap>\n );\n}\n\n// lucide: layout-grid v0.577.0\nexport function LayoutGridTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Card view\" {...props}>\n <rect width=\"7\" height=\"7\" x=\"3\" y=\"3\" rx=\"1\" />\n <rect width=\"7\" height=\"7\" x=\"14\" y=\"3\" rx=\"1\" />\n <rect width=\"7\" height=\"7\" x=\"14\" y=\"14\" rx=\"1\" />\n <rect width=\"7\" height=\"7\" x=\"3\" y=\"14\" rx=\"1\" />\n </Wrap>\n );\n}\n\n// lucide: list v0.577.0\nexport function ListTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Table view\" {...props}>\n <path d=\"M3 5h.01\" />\n <path d=\"M3 12h.01\" />\n <path d=\"M3 19h.01\" />\n <path d=\"M8 5h13\" />\n <path d=\"M8 12h13\" />\n <path d=\"M8 19h13\" />\n </Wrap>\n );\n}\n\n// lucide: arrow-down-up (hand-crafted — kept as-is)\nexport function ArrowDownUpTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Sort\" {...props}>\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M3 4.5h14.25M3 9h9.75M3 13.5h5.25m5.25-.75L17.25 9m0 0L21 12.75M17.25 9v10.5\"\n />\n </Wrap>\n );\n}\n\n// lucide: bell v0.577.0\nexport function BellTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Notifications\" {...props}>\n <path d=\"M10.268 21a2 2 0 0 0 3.464 0\" />\n <path d=\"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326\" />\n </Wrap>\n );\n}\n\n// lucide: bell-ring v0.577.0 — animated cousin of bell, used for \"has unread\"\nexport function BellRingTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Notifications\" {...props}>\n <path d=\"M10.268 21a2 2 0 0 0 3.464 0\" />\n <path d=\"M22 8c0-2.3-.8-4.3-2-6\" />\n <path d=\"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326\" />\n <path d=\"M4 2C2.8 3.7 2 5.7 2 8\" />\n </Wrap>\n );\n}\n\n// lucide: zap v0.577.0 — lightning bolt, used as the Quick Actions trigger\nexport function ZapTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Quick actions\" {...props}>\n <path d=\"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z\" />\n </Wrap>\n );\n}\n\n// lucide: upload v0.577.0\nexport function UploadTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Upload\" {...props}>\n <path d=\"M12 3v12\" />\n <path d=\"m17 8-5-5-5 5\" />\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n </Wrap>\n );\n}\n\n// lucide: download v0.577.0\nexport function DownloadTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Download\" {...props}>\n <path d=\"M12 15V3\" />\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n <path d=\"m7 10 5 5 5-5\" />\n </Wrap>\n );\n}\n\n// lucide: share-2 v0.577.0\nexport function ShareTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Share\" {...props}>\n <circle cx=\"18\" cy=\"5\" r=\"3\" />\n <circle cx=\"6\" cy=\"12\" r=\"3\" />\n <circle cx=\"18\" cy=\"19\" r=\"3\" />\n <line x1=\"8.59\" x2=\"15.42\" y1=\"13.51\" y2=\"17.49\" />\n <line x1=\"15.41\" x2=\"8.59\" y1=\"6.51\" y2=\"10.49\" />\n </Wrap>\n );\n}\n\n// lucide: undo v0.577.0\nexport function UndoTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Undo\" {...props}>\n <path d=\"M3 7v6h6\" />\n <path d=\"M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13\" />\n </Wrap>\n );\n}\n\n// lucide: redo v0.577.0\nexport function RedoTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Redo\" {...props}>\n <path d=\"M21 7v6h-6\" />\n <path d=\"M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7\" />\n </Wrap>\n );\n}\n\n// lucide: copy v0.577.0\nexport function CopyTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Copy\" {...props}>\n <rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\" />\n <path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\" />\n </Wrap>\n );\n}\n\n// lucide: trash v0.577.0\nexport function TrashTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Delete\" {...props}>\n <path d=\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\" />\n <path d=\"M3 6h18\" />\n <path d=\"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\" />\n </Wrap>\n );\n}\n\n// lucide: files v0.577.0\nexport function FilesTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Copy all\" {...props}>\n <path d=\"M20 7h-3a2 2 0 0 1-2-2V2\" />\n <path d=\"M9 18a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h7l4 4v10a2 2 0 0 1-2 2Z\" />\n <path d=\"M3 7.6v12.8A1.6 1.6 0 0 0 4.6 22h9.8\" />\n </Wrap>\n );\n}\n\n// lucide: chevron-left v0.577.0 — arms extended from 6 to 7 (45° kept) for a\n// slightly larger glyph that better fills the 32px inner pill.\nexport function ChevronLeftTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Back\" {...props}>\n <path d=\"m16 19-7-7 7-7\" />\n </Wrap>\n );\n}\n\n// lucide: chevron-right v0.577.0\nexport function ChevronRightTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Next\" {...props}>\n <path d=\"m9 18 6-6-6-6\" />\n </Wrap>\n );\n}\n\n// lucide: panel-left v0.577.0\nexport function PanelLeftTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Toggle sidebar\" {...props}>\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n <path d=\"M9 3v18\" />\n </Wrap>\n );\n}\n\n// lucide: panel-right v0.577.0\nexport function PanelRightTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Toggle sidebar\" {...props}>\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n <path d=\"M15 3v18\" />\n </Wrap>\n );\n}\n\n// lucide: square-pen v0.577.0\nexport function SquarePenTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"New chat\" {...props}>\n <path d=\"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\" />\n <path d=\"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z\" />\n </Wrap>\n );\n}\n\n// lucide: x v0.577.0\nexport function XTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Close\" {...props}>\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </Wrap>\n );\n}\n\n// lucide: funnel v0.577.0 (filter is an alias for funnel in this version)\nexport function FilterTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Filter\" {...props}>\n <path d=\"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z\" />\n </Wrap>\n );\n}\n\n// lucide: play v0.577.0\nexport function PlayTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Play\" {...props}>\n <path d=\"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z\" />\n </Wrap>\n );\n}\n\n// lucide: pause v0.577.0 — two rects (redesigned from bar paths)\nexport function PauseTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Pause\" {...props}>\n <rect x=\"14\" y=\"3\" width=\"5\" height=\"18\" rx=\"1\" />\n <rect x=\"5\" y=\"3\" width=\"5\" height=\"18\" rx=\"1\" />\n </Wrap>\n );\n}\n\n// lucide: square v0.577.0 (stop uses filled square)\nexport function StopTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Stop\" {...props}>\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n </Wrap>\n );\n}\n\n// lucide: volume-2 v0.577.0\nexport function Volume2TapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Speaker\" {...props}>\n <path d=\"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z\" />\n <path d=\"M16 9a5 5 0 0 1 0 6\" />\n <path d=\"M19.364 18.364a9 9 0 0 0 0-12.728\" />\n </Wrap>\n );\n}\n\n// lucide: arrow-up v0.577.0\nexport function ArrowUpTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Send\" {...props}>\n <path d=\"m5 12 7-7 7 7\" />\n <path d=\"M12 19V5\" />\n </Wrap>\n );\n}\n\n// lucide: mic v0.577.0\nexport function MicTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Start recording\" {...props}>\n <path d=\"M12 19v3\" />\n <path d=\"M19 10v2a7 7 0 0 1-14 0v-2\" />\n <rect x=\"9\" y=\"2\" width=\"6\" height=\"13\" rx=\"3\" />\n </Wrap>\n );\n}\n\n// lucide: mic-off v0.577.0\nexport function MicOffTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Stop recording\" {...props}>\n <path d=\"M12 19v3\" />\n <path d=\"M15 9.34V5a3 3 0 0 0-5.68-1.33\" />\n <path d=\"M16.95 16.95A7 7 0 0 1 5 12v-2\" />\n <path d=\"M18.89 13.23A7 7 0 0 0 19 12v-2\" />\n <path d=\"m2 2 20 20\" />\n <path d=\"M9 9v3a3 3 0 0 0 5.12 2.12\" />\n </Wrap>\n );\n}\n\n// lucide: triangle-alert v0.577.0\nexport function TriangleAlertTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Alert\" {...props}>\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\" />\n <path d=\"M12 9v4\" />\n <path d=\"M12 17h.01\" />\n </Wrap>\n );\n}\n\n// lucide: shield-check (context set)\nexport function ShieldCheckTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Context set\" {...props}>\n <path d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\" />\n <path d=\"m9 12 2 2 4-4\" />\n </Wrap>\n );\n}\n\n// lucide: shield-alert (context unset)\nexport function ShieldAlertTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"No context\" {...props}>\n <path d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\" />\n <path d=\"M12 8v4\" />\n <path d=\"M12 16h.01\" />\n </Wrap>\n );\n}\n\n// lucide: bug v0.577.0 (major update — full insect anatomy)\nexport function BugTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Debug\" {...props}>\n <path d=\"M12 20v-9\" />\n <path d=\"M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z\" />\n <path d=\"M14.12 3.88 16 2\" />\n <path d=\"M21 21a4 4 0 0 0-3.81-4\" />\n <path d=\"M21 5a4 4 0 0 1-3.55 3.97\" />\n <path d=\"M22 13h-4\" />\n <path d=\"M3 21a4 4 0 0 1 3.81-4\" />\n <path d=\"M3 5a4 4 0 0 0 3.55 3.97\" />\n <path d=\"M6 13H2\" />\n <path d=\"m8 2 1.88 1.88\" />\n <path d=\"M9 7.13V6a3 3 0 1 1 6 0v1.13\" />\n </Wrap>\n );\n}\n\n// lucide: settings-2 v0.577.0 (gear + center circle — kept as-is, matches intent)\nexport function Settings2TapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Settings\" {...props}>\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z\"\n />\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M15 12a3 3 0 11-6 0 3 3 0 016 0z\"\n />\n </Wrap>\n );\n}\n\n// lucide: save (hand-crafted floppy disk — no direct Lucide equivalent, kept as-is)\nexport function SaveTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Save\" {...props}>\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M4.5 6a2 2 0 012-2h9.25L20.5 9v9a2 2 0 01-2 2h-12a2 2 0 01-2-2V6z\"\n />\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M8.5 4v4.5a.5.5 0 00.5.5h6a.5.5 0 00.5-.5V4\"\n />\n <rect\n x=\"8\"\n y=\"14\"\n width=\"8\"\n height=\"5.5\"\n rx=\"0.5\"\n strokeLinejoin=\"round\"\n />\n </Wrap>\n );\n}\n\n// lucide: send v0.577.0 (paper-airplane redesign)\nexport function SendTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Send\" {...props}>\n <path d=\"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z\" />\n <path d=\"m21.854 2.147-10.94 10.939\" />\n </Wrap>\n );\n}\n\n// lucide: message-square v0.577.0\nexport function MessageTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Message\" {...props}>\n <path d=\"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z\" />\n </Wrap>\n );\n}\n\n// lucide: variable v0.577.0 (major update — uses line elements + bracket paths)\nexport function VariableTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Variable\" {...props}>\n <path d=\"M8 21s-4-3-4-9 4-9 4-9\" />\n <path d=\"M16 3s4 3 4 9-4 9-4 9\" />\n <line x1=\"15\" x2=\"9\" y1=\"9\" y2=\"15\" />\n <line x1=\"9\" x2=\"15\" y1=\"9\" y2=\"15\" />\n </Wrap>\n );\n}\n\n// lucide: wrench v0.577.0 (single clean path)\nexport function WrenchTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Tool\" {...props}>\n <path d=\"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z\" />\n </Wrap>\n );\n}\n\n// lucide: command v0.577.0 (single continuous path)\nexport function CommandTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Command\" {...props}>\n <path d=\"M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3\" />\n </Wrap>\n );\n}\n\n// lucide: terminal v0.577.0 (two paths: chevron + underline)\nexport function TerminalTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Terminal\" {...props}>\n <path d=\"M12 19h8\" />\n <path d=\"m4 17 6-6-6-6\" />\n </Wrap>\n );\n}\n\n// lucide: test-tube v0.577.0 (3 clean paths)\nexport function TestTubeTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Test\" {...props}>\n <path d=\"M14.5 2v17.5c0 1.4-1.1 2.5-2.5 2.5c-1.4 0-2.5-1.1-2.5-2.5V2\" />\n <path d=\"M8.5 2h7\" />\n <path d=\"M14.5 16h-5\" />\n </Wrap>\n );\n}\n\n// lucide: rotate-ccw v0.577.0 (same shape as history minus the clock hand — used for Reset)\nexport function ResetTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Reset\" {...props}>\n <path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\" />\n <path d=\"M3 3v5h5\" />\n </Wrap>\n );\n}\n\n// lucide: eraser v0.577.0 (major update — proper eraser shape)\nexport function ClearTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Clear\" {...props}>\n <path d=\"M21 21H8a2 2 0 0 1-1.42-.587l-3.994-3.999a2 2 0 0 1 0-2.828l10-10a2 2 0 0 1 2.829 0l5.999 6a2 2 0 0 1 0 2.828L12.834 21\" />\n <path d=\"m5.082 11.09 8.828 8.828\" />\n </Wrap>\n );\n}\n\n// lucide: refresh-cw v1.22.0 (dual arrows — was a broken hand-crafted Heroicons-style path)\nexport function RetryTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Retry\" {...props}>\n <path d=\"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\" />\n <path d=\"M21 3v5h-5\" />\n <path d=\"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\" />\n <path d=\"M8 16H3v5\" />\n </Wrap>\n );\n}\n\n/** Alias — same Lucide refresh-cw glyph as RetryTapButton. */\nexport function RefreshCwTapButton(props: TapButtonProps) {\n return <RetryTapButton ariaLabel=\"Refresh\" {...props} />;\n}\n\n// lucide: loading spinner (custom animated — no Lucide equivalent)\nexport function LoadingTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Loading\" {...props}>\n <circle\n className=\"animate-spin\"\n cx=\"12\"\n cy=\"12\"\n r=\"9\"\n strokeDasharray=\"28.27\"\n strokeDashoffset=\"9\"\n strokeLinecap=\"round\"\n style={{ transformOrigin: \"12px 12px\" }}\n />\n </Wrap>\n );\n}\n\n// lucide: bot/robot (hand-crafted — kept as-is)\nexport function RobotTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"AI Agent\" {...props}>\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M9 3.75H6.912a2.25 2.25 0 00-2.15 1.588L2.35 13.177a2.25 2.25 0 00-.1.661V18a2.25 2.25 0 002.25 2.25h15A2.25 2.25 0 0021.75 18v-4.162c0-.224-.034-.447-.1-.661L19.24 5.338a2.25 2.25 0 00-2.15-1.588H15M2.25 13.5h3.86a2.25 2.25 0 012.012 1.244l.256.512a2.25 2.25 0 002.013 1.244h3.218a2.25 2.25 0 002.013-1.244l.256-.512a2.25 2.25 0 012.013-1.244h3.859M12 3v8.25m0 0-3-3m3 3 3-3\"\n />\n </Wrap>\n );\n}\n\n// lucide: webhook v0.577.0\nexport function WebhookTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Webhook\" {...props}>\n <path d=\"M18 16.98h-5.99c-1.1 0-1.95.94-2.48 1.9A4 4 0 0 1 2 17c.01-.7.2-1.4.57-2\" />\n <path d=\"m6 17 3.13-5.78c.53-.97.1-2.18-.5-3.1a4 4 0 1 1 6.89-4.06\" />\n <path d=\"m12 6 3.13 5.73C15.66 12.7 16.9 13 18 13a4 4 0 0 1 0 8\" />\n </Wrap>\n );\n}\n\n// lucide: eye v0.577.0\nexport function ViewTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"View\" {...props}>\n <path d=\"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </Wrap>\n );\n}\n\n// lucide: hammer v0.577.0\nexport function BuildTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Build\" {...props}>\n <path d=\"m15 12-9.373 9.373a1 1 0 0 1-3.001-3L12 9\" />\n <path d=\"m18 15 4-4\" />\n <path d=\"m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172v-.344a2 2 0 0 0-.586-1.414l-1.657-1.657A6 6 0 0 0 12.516 3H9l1.243 1.243A6 6 0 0 1 12 8.485V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5\" />\n </Wrap>\n );\n}\n\n// lucide: play v0.577.0 (alias for Run context)\nexport function RunTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Run\" {...props}>\n <path d=\"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z\" />\n </Wrap>\n );\n}\n\n// lucide: history v0.577.0\nexport function HistoryTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"History\" {...props}>\n <path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\" />\n <path d=\"M3 3v5h5\" />\n <path d=\"M12 7v5l4 2\" />\n </Wrap>\n );\n}\n\n// lucide: paperclip v0.577.0\nexport function PaperclipTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Attach file\" {...props}>\n <path d=\"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551\" />\n </Wrap>\n );\n}\n\n// lucide: thumbs-up v0.577.0\nexport function ThumbsUpTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Like\" {...props}>\n <path d=\"M7 10v12\" />\n <path d=\"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z\" />\n </Wrap>\n );\n}\n\n// lucide: thumbs-down v0.577.0\nexport function ThumbsDownTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Dislike\" {...props}>\n <path d=\"M17 14V2\" />\n <path d=\"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z\" />\n </Wrap>\n );\n}\n\n// lucide: check v0.577.0\nexport function CheckTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Done\" {...props}>\n <path d=\"M20 6 9 17l-5-5\" />\n </Wrap>\n );\n}\n\n// lucide: pencil v0.577.0\nexport function PencilTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Edit\" {...props}>\n <path d=\"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z\" />\n <path d=\"m15 5 4 4\" />\n </Wrap>\n );\n}\n\n// lucide: ellipsis (more-horizontal) v0.577.0\nexport function MoreHorizontalTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"More options\" {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"1\" />\n <circle cx=\"19\" cy=\"12\" r=\"1\" />\n <circle cx=\"5\" cy=\"12\" r=\"1\" />\n </Wrap>\n );\n}\n\n// lucide: check-square v0.577.0\nexport function CheckSquareTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Task\" {...props}>\n <path d=\"m9 11 3 3L22 4\" />\n <path d=\"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11\" />\n </Wrap>\n );\n}\n\n// lucide: ghost v0.577.0\nexport function GhostTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Incognito chat\" {...props}>\n <path d=\"M9 10h.01\" />\n <path d=\"M15 10h.01\" />\n <path d=\"M12 2a8 8 0 0 0-8 8v12l3-3 2.5 2.5L12 19l2.5 2.5L17 19l3 3V10a8 8 0 0 0-8-8z\" />\n </Wrap>\n );\n}\n\n// lucide: link (chain link — used for \"attach to task\") v0.577.0\nexport function LinkTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Attach\" {...props}>\n <path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\" />\n <path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\" />\n </Wrap>\n );\n}\n\n// lucide: external-link v0.577.0\nexport function ExternalLinkTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Open source\" {...props}>\n <path d=\"M15 3h6v6\" />\n <path d=\"M10 14 21 3\" />\n <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" />\n </Wrap>\n );\n}\n\n// lucide: clipboard-list v0.577.0\nexport function ClipboardListTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Copy Pages\" {...props}>\n <rect width=\"8\" height=\"4\" x=\"8\" y=\"2\" rx=\"1\" ry=\"1\" />\n <path d=\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\" />\n <path d=\"M12 11h4\" />\n <path d=\"M12 16h4\" />\n <path d=\"M8 11h.01\" />\n <path d=\"M8 16h.01\" />\n </Wrap>\n );\n}\n\n// lucide: party-popper v0.577.0\nexport function PartyPopperTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"AI Clean\" {...props}>\n <path d=\"M5.8 11.3 2 22l10.7-3.79\" />\n <path d=\"M4 3h.01\" />\n <path d=\"M22 8h.01\" />\n <path d=\"M15 2h.01\" />\n <path d=\"M22 20h.01\" />\n <path d=\"m22 2-2.24.75a2.9 2.9 0 0 0-1.96 3.12c.1.86-.57 1.63-1.45 1.63h-.38c-.86 0-1.6.6-1.76 1.44L14 10\" />\n <path d=\"m22 13-.82-.33c-.86-.34-1.82.2-1.98 1.11c-.11.7-.72 1.22-1.43 1.22H17\" />\n <path d=\"m11 2 .33.82c.34.86-.2 1.82-1.11 1.98C9.52 4.9 9 5.52 9 6.23V7\" />\n <path d=\"M11 13c1.93 1.93 2.83 4.17 2 5-.83.83-3.07-.07-5-2-1.93-1.93-2.83-4.17-2-5 .83-.83 3.07.07 5 2Z\" />\n </Wrap>\n );\n}\n\n// lucide: layers v0.577.0 — \"this PDF everywhere\" surface switcher\nexport function LayersTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Open this PDF in another surface\" {...props}>\n <path d=\"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z\" />\n <path d=\"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12\" />\n <path d=\"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17\" />\n </Wrap>\n );\n}\n","\"use client\";\n\nimport {\n cloneElement,\n forwardRef,\n isValidElement,\n type ButtonHTMLAttributes,\n type ReactElement,\n type ReactNode,\n type Ref,\n} from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { TooltipContent, TooltipTrigger } from \"./tooltip\";\nimport { cn } from \"./cn\";\nimport {\n getTapTargetLinkComponent,\n type TapTargetLinkComponent,\n} from \"./link\";\n\nexport interface TapTargetButtonProps {\n icon?: React.ReactNode;\n children?: React.ReactNode;\n strokeWidth?: number | undefined;\n onClick?: (() => void) | undefined;\n className?: string | undefined;\n as?: \"button\" | \"label\" | undefined;\n htmlFor?: string | undefined;\n ariaLabel?: string | undefined;\n disabled?: boolean | undefined;\n /**\n * When set, the tap button renders as a link instead of a button.\n * - Internal hrefs (e.g. \"/tasks\") render via the injected link component\n * (`setTapTargetLinkComponent` / the `linkComponent` prop), falling back\n * to a plain `<a>` when none is registered.\n * - External hrefs (http://, https://, mailto:, tel:) render as `<a>`\n * with `target=\"_blank\"` and `rel=\"noopener noreferrer\"` by default.\n * - When combined with `disabled`, the trigger renders as a non-navigable\n * `<span aria-disabled=\"true\">` with the same visual styling.\n */\n href?: string | undefined;\n /** Override target. Works on both internal links and external anchors. */\n target?: \"_blank\" | \"_self\" | \"_parent\" | \"_top\" | undefined;\n /** Override rel. Works on both internal links and external anchors. */\n rel?: string | undefined;\n /** Forwarded to the injected link component. Pass `false` to disable prefetching. */\n prefetch?: boolean | null | undefined;\n /**\n * Per-instance link component for internal hrefs — overrides the\n * module-level `setTapTargetLinkComponent` registration.\n */\n linkComponent?: TapTargetLinkComponent | undefined;\n /**\n * Tooltip text. Defaults to `ariaLabel` when omitted.\n * Pass `false` to explicitly disable the tooltip.\n */\n tooltip?: string | false | undefined;\n /** Tooltip placement. Defaults to \"top\". */\n tooltipSide?: \"top\" | \"right\" | \"bottom\" | \"left\" | undefined;\n /** Tooltip alignment along its side. Defaults to \"center\". */\n tooltipAlign?: \"start\" | \"center\" | \"end\" | undefined;\n /**\n * Visible caption rendered inline after the icon (`[icon Label]`).\n * Widens the pill automatically. Tooltip defaults to off when set — the\n * label is self-describing. Visible text becomes the accessible name.\n */\n label?: string | undefined;\n}\n\nexport interface TapTargetButtonSolidProps extends TapTargetButtonProps {\n bgColor?: string | undefined;\n iconColor?: string | undefined;\n hoverBgColor?: string | undefined;\n /**\n * Press-state background. Defaults to `active:brightness-90` which works on\n * any color. Override when using a custom `bgColor` that should darken to a\n * specific shade on press (e.g. `active:bg-primary/60`).\n */\n activeBgColor?: string | undefined;\n}\n\nconst EXTERNAL_RE = /^(https?:|mailto:|tel:)/i;\n\n// Geometry + press feedback + tap hygiene are the SINGLE SOURCE OF TRUTH in\n// the shipped stylesheet (the `.matrx-tap-*` family in styles.css — import\n// \"@ai-matrx/tap-target/styles.css\" once at app root). This component only\n// picks the right class and layers each variant's decoration on top.\nconst TAP_OUTER_CLASS = \"matrx-tap-target group\";\nconst TAP_GROUP_OUTER_CLASS = \"matrx-tap-target matrx-tap-target-sm group\";\n\nfunction IconContent({\n icon,\n children,\n strokeWidth = 2,\n className,\n}: Pick<\n TapTargetButtonProps,\n \"icon\" | \"children\" | \"strokeWidth\" | \"className\"\n>) {\n if (icon) {\n if (isValidElement<{ className?: string }>(icon)) {\n return cloneElement(icon, {\n className: cn(className, icon.props.className),\n });\n }\n return <span className={className}>{icon}</span>;\n }\n return (\n <svg\n className={className}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n >\n {children}\n </svg>\n );\n}\n\ntype TapTargetSize = \"default\" | \"sm\";\n\nfunction resolveTapGeometry(label: string | undefined, size: TapTargetSize) {\n const inline = Boolean(label);\n if (size === \"sm\") {\n return {\n outerClassName: inline\n ? \"matrx-tap-target matrx-tap-target-sm matrx-tap-target-inline-sm group\"\n : TAP_GROUP_OUTER_CLASS,\n inlineModifier: \"matrx-tap-pill-inline-sm\",\n };\n }\n return {\n outerClassName: inline\n ? `${TAP_OUTER_CLASS} matrx-tap-target-inline`\n : TAP_OUTER_CLASS,\n inlineModifier: \"matrx-tap-pill-inline\",\n };\n}\n\nfunction buildTapInner({\n label,\n pillClassName,\n iconClassName,\n labelClassName,\n inlineModifier,\n icon,\n children,\n strokeWidth = 2,\n}: {\n label?: string | undefined;\n pillClassName: string;\n iconClassName: string;\n labelClassName?: string | undefined;\n inlineModifier: string;\n icon?: React.ReactNode;\n children?: React.ReactNode;\n strokeWidth?: number | undefined;\n}) {\n const iconEl = (\n <IconContent\n icon={icon}\n strokeWidth={strokeWidth}\n className={iconClassName}\n >\n {children}\n </IconContent>\n );\n const pillClasses = label\n ? `${pillClassName} ${inlineModifier}`.trim()\n : pillClassName;\n\n if (!label) {\n return <div className={pillClasses}>{iconEl}</div>;\n }\n\n return (\n <div className={pillClasses}>\n {iconEl}\n <span className={labelClassName ?? \"matrx-tap-label\"}>{label}</span>\n </div>\n );\n}\n\ninterface RenderTapTargetArgs extends Pick<\n TapTargetButtonProps,\n | \"icon\"\n | \"children\"\n | \"strokeWidth\"\n | \"label\"\n | \"onClick\"\n | \"as\"\n | \"htmlFor\"\n | \"ariaLabel\"\n | \"disabled\"\n | \"href\"\n | \"target\"\n | \"rel\"\n | \"prefetch\"\n | \"linkComponent\"\n | \"tooltip\"\n | \"tooltipSide\"\n | \"tooltipAlign\"\n> {\n size?: TapTargetSize;\n pillClassName: string;\n iconClassName: string;\n labelClassName?: string | undefined;\n rest?: ButtonHTMLAttributes<HTMLButtonElement> | undefined;\n buttonRef?: Ref<HTMLButtonElement> | undefined;\n}\n\nfunction renderTapTarget({\n size = \"default\",\n pillClassName,\n iconClassName,\n labelClassName,\n icon,\n children,\n strokeWidth,\n label,\n onClick,\n as,\n htmlFor,\n ariaLabel,\n disabled,\n href,\n target,\n rel,\n prefetch,\n linkComponent,\n tooltip,\n tooltipSide,\n tooltipAlign,\n rest,\n buttonRef,\n}: RenderTapTargetArgs): ReactElement {\n const { outerClassName, inlineModifier } = resolveTapGeometry(label, size);\n const inner = buildTapInner({\n label,\n pillClassName,\n iconClassName,\n labelClassName,\n inlineModifier: label ? inlineModifier : \"\",\n icon,\n children,\n strokeWidth,\n });\n const resolvedTooltip =\n tooltip !== undefined ? tooltip : label ? false : undefined;\n const triggerAriaLabel = label ? undefined : ariaLabel;\n const trigger = renderTrigger({\n href,\n target,\n rel,\n prefetch,\n linkComponent,\n as,\n htmlFor,\n onClick,\n ariaLabel: triggerAriaLabel,\n disabled,\n outerClassName,\n children: inner,\n rest,\n buttonRef,\n });\n return withTooltip(trigger, {\n tooltip: resolvedTooltip,\n ariaLabel: triggerAriaLabel,\n disabled,\n tooltipSide,\n tooltipAlign,\n });\n}\n\ninterface RenderTriggerArgs {\n href?: string | undefined;\n target?: \"_blank\" | \"_self\" | \"_parent\" | \"_top\" | undefined;\n rel?: string | undefined;\n prefetch?: boolean | null | undefined;\n linkComponent?: TapTargetLinkComponent | undefined;\n as?: \"button\" | \"label\" | undefined;\n htmlFor?: string | undefined;\n onClick?: (() => void) | undefined;\n ariaLabel?: string | undefined;\n disabled?: boolean | undefined;\n outerClassName: string;\n children: ReactNode;\n rest?: ButtonHTMLAttributes<HTMLButtonElement> | undefined;\n buttonRef?: Ref<HTMLButtonElement> | undefined;\n}\n\n/**\n * Resolves the correct trigger element based on the props passed.\n *\n * - `href` + `disabled` → unclickable `<span aria-disabled>`\n * - `href` matching `http(s):|mailto:|tel:` → `<a target=\"_blank\" rel=\"noopener noreferrer\">`\n * - `href` (internal) → the injected link component (per-instance\n * `linkComponent` prop, else `setTapTargetLinkComponent` registration),\n * falling back to a plain `<a>` when none is registered\n * - `as=\"label\"` → `<label htmlFor=...>`\n * - default → `<button>`\n */\nfunction renderTrigger({\n href,\n target,\n rel,\n prefetch,\n linkComponent,\n as,\n htmlFor,\n onClick,\n ariaLabel,\n disabled,\n outerClassName,\n children,\n rest,\n buttonRef,\n}: RenderTriggerArgs): ReactElement {\n if (disabled && href) {\n return (\n <span\n aria-disabled=\"true\"\n aria-label={ariaLabel}\n className={`${outerClassName} opacity-40 pointer-events-none`}\n >\n {children}\n </span>\n );\n }\n if (href) {\n const isExternal = EXTERNAL_RE.test(href);\n if (isExternal) {\n return (\n <a\n href={href}\n target={target ?? \"_blank\"}\n rel={rel ?? \"noopener noreferrer\"}\n aria-label={ariaLabel}\n className={outerClassName}\n >\n {children}\n </a>\n );\n }\n const Link = linkComponent ?? getTapTargetLinkComponent();\n if (Link) {\n return (\n <Link\n href={href}\n target={target}\n rel={rel}\n prefetch={prefetch}\n aria-label={ariaLabel}\n className={outerClassName}\n >\n {children}\n </Link>\n );\n }\n // No link component registered — plain <a>. `prefetch` is a router hint,\n // not a DOM attribute, so it is deliberately dropped here.\n return (\n <a\n href={href}\n target={target}\n rel={rel}\n aria-label={ariaLabel}\n className={outerClassName}\n >\n {children}\n </a>\n );\n }\n if (as === \"label\") {\n return (\n <label\n htmlFor={htmlFor}\n aria-label={ariaLabel}\n className={outerClassName}\n >\n {children}\n </label>\n );\n }\n return (\n <button\n ref={buttonRef}\n type=\"button\"\n onClick={onClick}\n aria-label={ariaLabel}\n disabled={disabled}\n {...rest}\n className={outerClassName}\n >\n {children}\n </button>\n );\n}\n\n/**\n * Wraps a trigger element in a Tooltip when a tooltip label is available.\n * Falls back to `ariaLabel` when `tooltip` is not explicitly set. If both\n * are absent (or `tooltip === false`), the trigger is returned unwrapped.\n */\nfunction withTooltip(\n trigger: ReactElement,\n {\n tooltip,\n ariaLabel,\n disabled,\n tooltipSide = \"top\",\n tooltipAlign = \"center\",\n }: {\n tooltip?: string | false | undefined;\n ariaLabel?: string | undefined;\n disabled?: boolean | undefined;\n tooltipSide?: \"top\" | \"right\" | \"bottom\" | \"left\" | undefined;\n tooltipAlign?: \"start\" | \"center\" | \"end\" | undefined;\n },\n): ReactElement {\n if (tooltip === false) return trigger;\n const label =\n typeof tooltip === \"string\" && tooltip.length > 0 ? tooltip : ariaLabel;\n if (!label) return trigger;\n return (\n <TooltipPrimitive.Root>\n <TooltipTrigger asChild>\n {disabled ? (\n // Radix Tooltip triggers need a hoverable element; a disabled button\n // does not dispatch pointer events, so we wrap in a span for the\n // trigger target while keeping the disabled visual state.\n <span className=\"inline-flex\">{trigger}</span>\n ) : (\n trigger\n )}\n </TooltipTrigger>\n <TooltipContent side={tooltipSide} align={tooltipAlign}>\n {label}\n </TooltipContent>\n </TooltipPrimitive.Root>\n );\n}\n\n// To resize/retune every tap button, edit styles.css — not here.\n\nexport const TapTargetButton = forwardRef<\n HTMLButtonElement,\n TapTargetButtonProps & ButtonHTMLAttributes<HTMLButtonElement>\n>(function TapTargetButton(\n {\n icon,\n children,\n strokeWidth = 2,\n onClick,\n className,\n as,\n htmlFor,\n ariaLabel,\n disabled,\n href,\n target,\n rel,\n prefetch,\n linkComponent,\n tooltip,\n tooltipSide,\n tooltipAlign,\n label,\n ...rest\n },\n ref,\n) {\n const color = className ?? \"text-foreground\";\n return renderTapTarget({\n icon,\n children,\n strokeWidth,\n onClick,\n as,\n htmlFor,\n ariaLabel,\n disabled,\n href,\n target,\n rel,\n prefetch,\n linkComponent,\n tooltip,\n tooltipSide,\n tooltipAlign,\n label,\n pillClassName: \"matrx-tap-pill matrx-glass-thin-border\",\n iconClassName: `matrx-tap-icon ${color}`,\n rest,\n buttonRef: ref,\n });\n});\n\nexport const TapTargetButtonTransparent = forwardRef<\n HTMLButtonElement,\n TapTargetButtonProps & React.ButtonHTMLAttributes<HTMLButtonElement>\n>(function TapTargetButtonTransparent(\n {\n icon,\n children,\n strokeWidth = 2,\n onClick,\n className,\n as,\n htmlFor,\n ariaLabel,\n disabled,\n href,\n target,\n rel,\n prefetch,\n linkComponent,\n tooltip,\n tooltipSide,\n tooltipAlign,\n label,\n ...rest\n },\n ref,\n) {\n const color = className ?? \"text-foreground\";\n return renderTapTarget({\n icon,\n children,\n strokeWidth,\n onClick,\n as,\n htmlFor,\n ariaLabel,\n disabled,\n href,\n target,\n rel,\n prefetch,\n linkComponent,\n tooltip,\n tooltipSide,\n tooltipAlign,\n label,\n pillClassName:\n \"matrx-tap-pill hover:bg-muted active:bg-muted-foreground/15\",\n iconClassName: `matrx-tap-icon ${color}`,\n rest,\n buttonRef: ref,\n });\n});\n\nexport const TapTargetButtonSolid = forwardRef<\n HTMLButtonElement,\n TapTargetButtonSolidProps & React.ButtonHTMLAttributes<HTMLButtonElement>\n>(function TapTargetButtonSolid(\n {\n icon,\n children,\n strokeWidth = 2,\n onClick,\n as,\n htmlFor,\n ariaLabel,\n disabled,\n href,\n target,\n rel,\n prefetch,\n linkComponent,\n bgColor = \"bg-primary\",\n iconColor = \"text-primary-foreground\",\n hoverBgColor = \"hover:bg-primary/80\",\n activeBgColor = \"active:brightness-90\",\n tooltip,\n tooltipSide,\n tooltipAlign,\n label,\n ...rest\n },\n ref,\n) {\n return renderTapTarget({\n icon,\n children,\n strokeWidth,\n onClick,\n as,\n htmlFor,\n ariaLabel,\n disabled,\n href,\n target,\n rel,\n prefetch,\n linkComponent,\n tooltip,\n tooltipSide,\n tooltipAlign,\n label,\n pillClassName: `matrx-tap-pill ${bgColor} ${iconColor} ${hoverBgColor} ${activeBgColor}`,\n iconClassName: `matrx-tap-icon ${iconColor}`,\n labelClassName: `matrx-tap-label ${iconColor}`,\n rest,\n buttonRef: ref,\n });\n});\n\n/** Solid destructive pill — delete/remove actions. White-on-red like the\n * primary solid is white-on-blue. Use THIS, never hand-pass bg-destructive\n * with the default (dark) icon color. */\nexport const TapTargetButtonDestructive = forwardRef<\n HTMLButtonElement,\n TapTargetButtonSolidProps & React.ButtonHTMLAttributes<HTMLButtonElement>\n>(function TapTargetButtonDestructive(\n {\n bgColor = \"bg-destructive\",\n iconColor = \"text-destructive-foreground\",\n hoverBgColor = \"hover:bg-destructive/90\",\n ...rest\n },\n ref,\n) {\n return (\n <TapTargetButtonSolid\n ref={ref}\n bgColor={bgColor}\n iconColor={iconColor}\n hoverBgColor={hoverBgColor}\n {...rest}\n />\n );\n});\n\nexport const TapTargetButtonForGroup = forwardRef<\n HTMLButtonElement,\n TapTargetButtonProps & ButtonHTMLAttributes<HTMLButtonElement>\n>(function TapTargetButtonForGroup(\n {\n icon,\n children,\n strokeWidth = 2,\n onClick,\n className,\n as,\n htmlFor,\n ariaLabel,\n disabled,\n href,\n target,\n rel,\n prefetch,\n linkComponent,\n tooltip,\n tooltipSide,\n tooltipAlign,\n label,\n ...rest\n },\n ref,\n) {\n const color = className ?? \"text-foreground\";\n return renderTapTarget({\n size: \"sm\",\n icon,\n children,\n strokeWidth,\n onClick,\n as,\n htmlFor,\n ariaLabel,\n disabled,\n href,\n target,\n rel,\n prefetch,\n linkComponent,\n tooltip,\n tooltipSide,\n tooltipAlign,\n label,\n pillClassName: \"matrx-tap-pill matrx-tap-pill-sm matrx-glass-interactive\",\n iconClassName: `matrx-tap-icon ${color}`,\n labelClassName: `matrx-tap-label ${color}`,\n rest,\n buttonRef: ref,\n });\n});\n\nexport function TapTargetButtonGroup({\n children,\n className,\n}: {\n children: React.ReactNode;\n className?: string | undefined;\n}) {\n return (\n <div\n className={\n className\n ? `relative inline-flex h-9 items-center ${className}`\n : \"relative inline-flex h-9 items-center\"\n }\n >\n <div className=\"pointer-events-none absolute inset-x-0 top-1/2 -translate-y-1/2 h-7 rounded-full matrx-glass-thin-border\" />\n {/* min-w-0 lets flexible children (e.g. a truncating filename) shrink\n under container pressure; fixed-size tap buttons are unaffected. */}\n <div className=\"relative flex min-w-0 items-center\">{children}</div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { cn } from \"./cn\";\n\n/**\n * Inlined port of matrx-frontend `components/ui/tooltip.tsx` — the one `@/`\n * import the tap-target components consumed beyond `cn` and `next/link`.\n * Behavior deltas vs. the original, both documented in FEATURE.md:\n * - `useNestedPortalContainer` (a host-specific nested-overlay portal context)\n * is dropped: content portals to the Radix default (document.body).\n * - Everything else — unconditional Root render, popover-token styling — is\n * verbatim.\n *\n * Hosts must mount `TooltipProvider` once near the app root (matrx-frontend\n * already does); `TapTargetLabeled` brings its own provider like the original.\n */\nconst TooltipProvider = TooltipPrimitive.Provider;\n\nconst Tooltip = TooltipPrimitive.Root;\n\nconst TooltipTrigger = TooltipPrimitive.Trigger;\n\nconst TooltipContent = React.forwardRef<\n React.ComponentRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n // Neutral, theme-aware surface (popover tokens) so tooltip text is\n // ALWAYS legible in both light and dark mode — including rich content\n // that uses `text-muted-foreground`. A brand-colored `bg-primary`\n // background broke legibility for any non-default content.\n \"z-[10001] overflow-hidden rounded-md border border-border bg-popover px-3 py-1.5 text-xs text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n </TooltipPrimitive.Portal>\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","/**\n * Minimal className join — the only piece of `cn` this package needs.\n * No tailwind-merge / clsx dependency by design: callers pass literal strings.\n */\nexport function cn(\n ...values: Array<string | null | undefined | false>\n): string {\n return values.filter(Boolean).join(\" \").trim();\n}\n","import type { ComponentType, ReactNode } from \"react\";\n\n/**\n * The injectable link seam — the package's replacement for the original\n * hard `next/link` import.\n *\n * Internal hrefs (anything NOT matching `http(s):`, `mailto:`, `tel:`) render\n * through the link component resolved here; external hrefs always render a\n * plain `<a target=\"_blank\" rel=\"noopener noreferrer\">`, exactly like the\n * original. When nothing is registered and no per-instance `linkComponent`\n * prop is given, internal hrefs fall back to a plain `<a>` (no prefetch, no\n * client-side routing — still a working link).\n */\nexport interface TapTargetLinkProps {\n href: string;\n target?: \"_blank\" | \"_self\" | \"_parent\" | \"_top\" | undefined;\n rel?: string | undefined;\n /** Router prefetch hint (next/link semantics). Plain `<a>` fallback ignores it. */\n prefetch?: boolean | null | undefined;\n \"aria-label\"?: string | undefined;\n className?: string | undefined;\n children?: ReactNode;\n}\n\nexport type TapTargetLinkComponent = ComponentType<TapTargetLinkProps>;\n\n/**\n * The registered component lives in a `Symbol.for` slot on `globalThis` — NOT\n * in module state — so it survives the module graph being instantiated more\n * than once: the `.` and `./buttons` dist bundles each inline the primitives\n * (tsup `splitting: false`), and a consumer may even mix `import` and\n * `require`. One registration must reach every copy.\n */\nconst LINK_SLOT = Symbol.for(\"@ai-matrx/tap-target:link-component\");\n\ntype GlobalWithLinkSlot = typeof globalThis & {\n [LINK_SLOT]?: TapTargetLinkComponent | null;\n};\n\n/**\n * Register the app's link component once at startup (e.g. `next/link`):\n *\n * ```tsx\n * import Link from \"next/link\";\n * import { setTapTargetLinkComponent } from \"@ai-matrx/tap-target\";\n * setTapTargetLinkComponent(Link);\n * ```\n *\n * Pass `null` to unregister (plain `<a>` fallback resumes).\n */\nexport function setTapTargetLinkComponent(\n component: TapTargetLinkComponent | null,\n): void {\n (globalThis as GlobalWithLinkSlot)[LINK_SLOT] = component;\n}\n\n/** The currently registered link component, or `null` when none is set. */\nexport function getTapTargetLinkComponent(): TapTargetLinkComponent | null {\n return (globalThis as GlobalWithLinkSlot)[LINK_SLOT] ?? null;\n}\n"],"mappings":"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","names":["import_react","TooltipPrimitive","import_jsx_runtime","TapTargetButton","TapTargetButtonTransparent","TapTargetButtonSolid","TapTargetButtonDestructive","TapTargetButtonForGroup","import_jsx_runtime","Wrap"]}
|
|
1
|
+
{"version":3,"sources":["../src/buttons.ts","../src/tap-buttons.tsx","../src/tap-target-button.tsx","../src/tooltip.tsx","../src/cn.ts","../src/link.ts"],"sourcesContent":["// @ai-matrx/tap-target/buttons — the ~60 pre-composed one-tag buttons.\n// Heavy by design (every glyph inlined); import from this subpath only where\n// pre-composed buttons are actually used.\n\nexport * from \"./tap-buttons\";\n","\"use client\";\n\nimport { forwardRef, type Ref } from \"react\";\nimport {\n TapTargetButton,\n TapTargetButtonTransparent,\n TapTargetButtonSolid,\n TapTargetButtonForGroup,\n} from \"./tap-target-button\";\nimport type { TapTargetLinkComponent } from \"./link\";\n\n// ---------------------------------------------------------------------------\n// Shared types\n// ---------------------------------------------------------------------------\n\ntype Variant = \"glass\" | \"transparent\" | \"solid\" | \"group\";\n\nexport interface TapButtonProps {\n /** Forwarded to the underlying button (Radix `asChild`, focus chains, etc.). */\n ref?: Ref<HTMLButtonElement> | undefined;\n variant?: Variant | undefined;\n onClick?: (() => void) | undefined;\n as?: \"button\" | \"label\" | undefined;\n htmlFor?: string | undefined;\n ariaLabel?: string | undefined;\n disabled?: boolean | undefined;\n tabIndex?: number | undefined;\n className?: string | undefined;\n strokeWidth?: number | undefined;\n // Solid-variant color overrides — only used when variant=\"solid\"\n bgColor?: string | undefined;\n iconColor?: string | undefined;\n hoverBgColor?: string | undefined;\n activeBgColor?: string | undefined;\n // Link support — when set, the button renders as a link or <a>.\n // Internal hrefs use the injected link component (setTapTargetLinkComponent\n // or the `linkComponent` prop; plain <a> when none is registered); external\n // (http(s)://, mailto:, tel:) use <a> with target=\"_blank\" +\n // rel=\"noopener noreferrer\" by default. Pass an explicit `target` to\n // override (works for internal links too).\n href?: string | undefined;\n target?: \"_blank\" | \"_self\" | \"_parent\" | \"_top\" | undefined;\n rel?: string | undefined;\n prefetch?: boolean | null | undefined;\n /** Per-instance link component override for internal hrefs. */\n linkComponent?: TapTargetLinkComponent | undefined;\n // Tooltip support — defaults to `ariaLabel`. Pass `false` to opt out.\n tooltip?: string | false | undefined;\n tooltipSide?: \"top\" | \"right\" | \"bottom\" | \"left\" | undefined;\n tooltipAlign?: \"start\" | \"center\" | \"end\" | undefined;\n /** Inline caption after the icon — see TapTargetButton `label`. */\n label?: string | undefined;\n /** Passthrough from AITapButtonProps / MakerTapButton — stripped before DOM. */\n colored?: boolean | undefined;\n}\n\n// ---------------------------------------------------------------------------\n// Variant resolver — maps a variant string to the correct wrapper component.\n// Runs at build/server time so there's zero client cost.\n//\n// IMPORTANT: `Wrap` MUST forward refs. The pre-composed `*TapButton` functions\n// below are plain function components (in React 19 ref is a regular prop) and\n// spread `{...props}` to `Wrap` — that spread carries ref through. `Wrap`\n// extracts ref and passes it explicitly to the underlying `forwardRef`\n// primitive. Without this, every `*TapButton` placed inside a Radix\n// `*Trigger asChild` (DropdownMenu, Popover, Tooltip, etc.) silently loses\n// the ref — the popper can't anchor and Radix's injected event handlers /\n// `data-state` / `aria-*` get dropped. (Precedent: matrx-frontend\n// `features/files/FEATURE.md`, where this pattern was established.)\n// ---------------------------------------------------------------------------\n\nconst Wrap = forwardRef<\n HTMLButtonElement,\n TapButtonProps & { children: React.ReactNode }\n>(function Wrap(\n {\n variant = \"glass\",\n children,\n bgColor,\n iconColor,\n hoverBgColor,\n activeBgColor,\n // AITapButtonProps passthrough — not a DOM attribute (see ai-tap-buttons Wrap)\n colored: _colored,\n ...props\n },\n ref,\n) {\n switch (variant) {\n case \"transparent\":\n return (\n <TapTargetButtonTransparent ref={ref} {...props}>\n {children}\n </TapTargetButtonTransparent>\n );\n case \"solid\":\n return (\n <TapTargetButtonSolid\n ref={ref}\n bgColor={bgColor}\n iconColor={iconColor}\n hoverBgColor={hoverBgColor}\n activeBgColor={activeBgColor}\n {...props}\n >\n {children}\n </TapTargetButtonSolid>\n );\n case \"group\":\n return (\n <TapTargetButtonForGroup ref={ref} {...props}>\n {children}\n </TapTargetButtonForGroup>\n );\n default:\n return (\n <TapTargetButton ref={ref} {...props}>\n {children}\n </TapTargetButton>\n );\n }\n});\n\n// ---------------------------------------------------------------------------\n// Pre-composed buttons — one import, one tag, zero configuration needed.\n// Default variant is \"glass\". Override with variant=\"transparent\" etc.\n// All SVG paths match lucide-react v0.577.0 exactly.\n// ---------------------------------------------------------------------------\n\n// lucide: menu (hand-crafted HeroIcons path — no Lucide equivalent, kept as-is)\nexport function MenuTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Menu\" strokeWidth={1.75} {...props}>\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5\"\n />\n </Wrap>\n );\n}\n\n// lucide: plus (hand-crafted — no drift, kept as-is)\nexport function PlusTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Add\" {...props}>\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M12 4.5v15m7.5-7.5h-15\"\n />\n </Wrap>\n );\n}\n\n// lucide: search → circle cx=11 cy=11 r=8 + line to 21,21\nexport function SearchTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Search\" {...props}>\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <path d=\"m21 21-4.34-4.34\" />\n </Wrap>\n );\n}\n\n// lucide: settings (hand-crafted — kept as-is, Lucide uses \"settings-2\" pattern)\nexport function SettingsTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Settings\" {...props}>\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z\"\n />\n </Wrap>\n );\n}\n\n// lucide: maximize (hand-crafted corner-arrows — kept as-is)\nexport function MaximizeTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Fullscreen\" {...props}>\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M3.75 3.75v4.5m0-4.5h4.5m-4.5 0L9 9M3.75 20.25v-4.5m0 4.5h4.5m-4.5 0L9 15M20.25 3.75h-4.5m4.5 0v4.5m0-4.5L15 9m5.25 11.25h-4.5m4.5 0v-4.5m0 4.5L15 15\"\n />\n </Wrap>\n );\n}\n\n// lucide: home v0.577.0 — used as the \"Hub\" (main/list) action\nexport function HomeTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Hub\" {...props}>\n <path d=\"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8\" />\n <path d=\"M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\" />\n </Wrap>\n );\n}\n\n// lucide: layout-grid v0.577.0\nexport function LayoutGridTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Card view\" {...props}>\n <rect width=\"7\" height=\"7\" x=\"3\" y=\"3\" rx=\"1\" />\n <rect width=\"7\" height=\"7\" x=\"14\" y=\"3\" rx=\"1\" />\n <rect width=\"7\" height=\"7\" x=\"14\" y=\"14\" rx=\"1\" />\n <rect width=\"7\" height=\"7\" x=\"3\" y=\"14\" rx=\"1\" />\n </Wrap>\n );\n}\n\n// lucide: list v0.577.0\nexport function ListTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Table view\" {...props}>\n <path d=\"M3 5h.01\" />\n <path d=\"M3 12h.01\" />\n <path d=\"M3 19h.01\" />\n <path d=\"M8 5h13\" />\n <path d=\"M8 12h13\" />\n <path d=\"M8 19h13\" />\n </Wrap>\n );\n}\n\n// lucide: arrow-down-up (hand-crafted — kept as-is)\nexport function ArrowDownUpTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Sort\" {...props}>\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M3 4.5h14.25M3 9h9.75M3 13.5h5.25m5.25-.75L17.25 9m0 0L21 12.75M17.25 9v10.5\"\n />\n </Wrap>\n );\n}\n\n// lucide: bell v0.577.0\nexport function BellTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Notifications\" {...props}>\n <path d=\"M10.268 21a2 2 0 0 0 3.464 0\" />\n <path d=\"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326\" />\n </Wrap>\n );\n}\n\n// lucide: bell-ring v0.577.0 — animated cousin of bell, used for \"has unread\"\nexport function BellRingTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Notifications\" {...props}>\n <path d=\"M10.268 21a2 2 0 0 0 3.464 0\" />\n <path d=\"M22 8c0-2.3-.8-4.3-2-6\" />\n <path d=\"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326\" />\n <path d=\"M4 2C2.8 3.7 2 5.7 2 8\" />\n </Wrap>\n );\n}\n\n// lucide: zap v0.577.0 — lightning bolt, used as the Quick Actions trigger\nexport function ZapTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Quick actions\" {...props}>\n <path d=\"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z\" />\n </Wrap>\n );\n}\n\n// lucide: upload v0.577.0\nexport function UploadTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Upload\" {...props}>\n <path d=\"M12 3v12\" />\n <path d=\"m17 8-5-5-5 5\" />\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n </Wrap>\n );\n}\n\n// lucide: download v0.577.0\nexport function DownloadTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Download\" {...props}>\n <path d=\"M12 15V3\" />\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n <path d=\"m7 10 5 5 5-5\" />\n </Wrap>\n );\n}\n\n// lucide: share-2 v0.577.0\nexport function ShareTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Share\" {...props}>\n <circle cx=\"18\" cy=\"5\" r=\"3\" />\n <circle cx=\"6\" cy=\"12\" r=\"3\" />\n <circle cx=\"18\" cy=\"19\" r=\"3\" />\n <line x1=\"8.59\" x2=\"15.42\" y1=\"13.51\" y2=\"17.49\" />\n <line x1=\"15.41\" x2=\"8.59\" y1=\"6.51\" y2=\"10.49\" />\n </Wrap>\n );\n}\n\n// lucide: undo v0.577.0\nexport function UndoTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Undo\" {...props}>\n <path d=\"M3 7v6h6\" />\n <path d=\"M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13\" />\n </Wrap>\n );\n}\n\n// lucide: redo v0.577.0\nexport function RedoTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Redo\" {...props}>\n <path d=\"M21 7v6h-6\" />\n <path d=\"M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7\" />\n </Wrap>\n );\n}\n\n// lucide: copy v0.577.0\nexport function CopyTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Copy\" {...props}>\n <rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\" />\n <path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\" />\n </Wrap>\n );\n}\n\n// lucide: trash v0.577.0\nexport function TrashTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Delete\" {...props}>\n <path d=\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\" />\n <path d=\"M3 6h18\" />\n <path d=\"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\" />\n </Wrap>\n );\n}\n\n// lucide: files v0.577.0\nexport function FilesTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Copy all\" {...props}>\n <path d=\"M20 7h-3a2 2 0 0 1-2-2V2\" />\n <path d=\"M9 18a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h7l4 4v10a2 2 0 0 1-2 2Z\" />\n <path d=\"M3 7.6v12.8A1.6 1.6 0 0 0 4.6 22h9.8\" />\n </Wrap>\n );\n}\n\n// lucide: chevron-left v0.577.0 — arms extended from 6 to 7 (45° kept) for a\n// slightly larger glyph that better fills the 32px inner pill.\nexport function ChevronLeftTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Back\" {...props}>\n <path d=\"m16 19-7-7 7-7\" />\n </Wrap>\n );\n}\n\n// lucide: chevron-right v0.577.0\nexport function ChevronRightTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Next\" {...props}>\n <path d=\"m9 18 6-6-6-6\" />\n </Wrap>\n );\n}\n\n// lucide: panel-left v0.577.0\nexport function PanelLeftTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Toggle sidebar\" {...props}>\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n <path d=\"M9 3v18\" />\n </Wrap>\n );\n}\n\n// lucide: panel-right v0.577.0\nexport function PanelRightTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Toggle sidebar\" {...props}>\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n <path d=\"M15 3v18\" />\n </Wrap>\n );\n}\n\n// lucide: square-pen v0.577.0\nexport function SquarePenTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"New chat\" {...props}>\n <path d=\"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\" />\n <path d=\"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z\" />\n </Wrap>\n );\n}\n\n// lucide: x v0.577.0\nexport function XTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Close\" {...props}>\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </Wrap>\n );\n}\n\n// lucide: funnel v0.577.0 (filter is an alias for funnel in this version)\nexport function FilterTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Filter\" {...props}>\n <path d=\"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z\" />\n </Wrap>\n );\n}\n\n// lucide: play v0.577.0\nexport function PlayTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Play\" {...props}>\n <path d=\"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z\" />\n </Wrap>\n );\n}\n\n// lucide: pause v0.577.0 — two rects (redesigned from bar paths)\nexport function PauseTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Pause\" {...props}>\n <rect x=\"14\" y=\"3\" width=\"5\" height=\"18\" rx=\"1\" />\n <rect x=\"5\" y=\"3\" width=\"5\" height=\"18\" rx=\"1\" />\n </Wrap>\n );\n}\n\n// lucide: square v0.577.0 (stop uses filled square)\nexport function StopTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Stop\" {...props}>\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n </Wrap>\n );\n}\n\n// lucide: volume-2 v0.577.0\nexport function Volume2TapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Speaker\" {...props}>\n <path d=\"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z\" />\n <path d=\"M16 9a5 5 0 0 1 0 6\" />\n <path d=\"M19.364 18.364a9 9 0 0 0 0-12.728\" />\n </Wrap>\n );\n}\n\n// lucide: arrow-up v0.577.0\nexport function ArrowUpTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Send\" {...props}>\n <path d=\"m5 12 7-7 7 7\" />\n <path d=\"M12 19V5\" />\n </Wrap>\n );\n}\n\n// lucide: mic v0.577.0\nexport function MicTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Start recording\" {...props}>\n <path d=\"M12 19v3\" />\n <path d=\"M19 10v2a7 7 0 0 1-14 0v-2\" />\n <rect x=\"9\" y=\"2\" width=\"6\" height=\"13\" rx=\"3\" />\n </Wrap>\n );\n}\n\n// lucide: mic-off v0.577.0\nexport function MicOffTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Stop recording\" {...props}>\n <path d=\"M12 19v3\" />\n <path d=\"M15 9.34V5a3 3 0 0 0-5.68-1.33\" />\n <path d=\"M16.95 16.95A7 7 0 0 1 5 12v-2\" />\n <path d=\"M18.89 13.23A7 7 0 0 0 19 12v-2\" />\n <path d=\"m2 2 20 20\" />\n <path d=\"M9 9v3a3 3 0 0 0 5.12 2.12\" />\n </Wrap>\n );\n}\n\n// lucide: triangle-alert v0.577.0\nexport function TriangleAlertTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Alert\" {...props}>\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\" />\n <path d=\"M12 9v4\" />\n <path d=\"M12 17h.01\" />\n </Wrap>\n );\n}\n\n// lucide: shield-check (context set)\nexport function ShieldCheckTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Context set\" {...props}>\n <path d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\" />\n <path d=\"m9 12 2 2 4-4\" />\n </Wrap>\n );\n}\n\n// lucide: shield-alert (context unset)\nexport function ShieldAlertTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"No context\" {...props}>\n <path d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\" />\n <path d=\"M12 8v4\" />\n <path d=\"M12 16h.01\" />\n </Wrap>\n );\n}\n\n// lucide: bug v0.577.0 (major update — full insect anatomy)\nexport function BugTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Debug\" {...props}>\n <path d=\"M12 20v-9\" />\n <path d=\"M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z\" />\n <path d=\"M14.12 3.88 16 2\" />\n <path d=\"M21 21a4 4 0 0 0-3.81-4\" />\n <path d=\"M21 5a4 4 0 0 1-3.55 3.97\" />\n <path d=\"M22 13h-4\" />\n <path d=\"M3 21a4 4 0 0 1 3.81-4\" />\n <path d=\"M3 5a4 4 0 0 0 3.55 3.97\" />\n <path d=\"M6 13H2\" />\n <path d=\"m8 2 1.88 1.88\" />\n <path d=\"M9 7.13V6a3 3 0 1 1 6 0v1.13\" />\n </Wrap>\n );\n}\n\n// lucide: settings-2 v0.577.0 (gear + center circle — kept as-is, matches intent)\nexport function Settings2TapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Settings\" {...props}>\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z\"\n />\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M15 12a3 3 0 11-6 0 3 3 0 016 0z\"\n />\n </Wrap>\n );\n}\n\n// lucide: save (hand-crafted floppy disk — no direct Lucide equivalent, kept as-is)\nexport function SaveTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Save\" {...props}>\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M4.5 6a2 2 0 012-2h9.25L20.5 9v9a2 2 0 01-2 2h-12a2 2 0 01-2-2V6z\"\n />\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M8.5 4v4.5a.5.5 0 00.5.5h6a.5.5 0 00.5-.5V4\"\n />\n <rect\n x=\"8\"\n y=\"14\"\n width=\"8\"\n height=\"5.5\"\n rx=\"0.5\"\n strokeLinejoin=\"round\"\n />\n </Wrap>\n );\n}\n\n// lucide: send v0.577.0 (paper-airplane redesign)\nexport function SendTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Send\" {...props}>\n <path d=\"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z\" />\n <path d=\"m21.854 2.147-10.94 10.939\" />\n </Wrap>\n );\n}\n\n// lucide: message-square v0.577.0\nexport function MessageTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Message\" {...props}>\n <path d=\"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z\" />\n </Wrap>\n );\n}\n\n// lucide: variable v0.577.0 (major update — uses line elements + bracket paths)\nexport function VariableTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Variable\" {...props}>\n <path d=\"M8 21s-4-3-4-9 4-9 4-9\" />\n <path d=\"M16 3s4 3 4 9-4 9-4 9\" />\n <line x1=\"15\" x2=\"9\" y1=\"9\" y2=\"15\" />\n <line x1=\"9\" x2=\"15\" y1=\"9\" y2=\"15\" />\n </Wrap>\n );\n}\n\n// lucide: wrench v0.577.0 (single clean path)\nexport function WrenchTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Tool\" {...props}>\n <path d=\"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z\" />\n </Wrap>\n );\n}\n\n// lucide: command v0.577.0 (single continuous path)\nexport function CommandTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Command\" {...props}>\n <path d=\"M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3\" />\n </Wrap>\n );\n}\n\n// lucide: terminal v0.577.0 (two paths: chevron + underline)\nexport function TerminalTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Terminal\" {...props}>\n <path d=\"M12 19h8\" />\n <path d=\"m4 17 6-6-6-6\" />\n </Wrap>\n );\n}\n\n// lucide: test-tube v0.577.0 (3 clean paths)\nexport function TestTubeTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Test\" {...props}>\n <path d=\"M14.5 2v17.5c0 1.4-1.1 2.5-2.5 2.5c-1.4 0-2.5-1.1-2.5-2.5V2\" />\n <path d=\"M8.5 2h7\" />\n <path d=\"M14.5 16h-5\" />\n </Wrap>\n );\n}\n\n// lucide: rotate-ccw v0.577.0 (same shape as history minus the clock hand — used for Reset)\nexport function ResetTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Reset\" {...props}>\n <path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\" />\n <path d=\"M3 3v5h5\" />\n </Wrap>\n );\n}\n\n// lucide: eraser v0.577.0 (major update — proper eraser shape)\nexport function ClearTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Clear\" {...props}>\n <path d=\"M21 21H8a2 2 0 0 1-1.42-.587l-3.994-3.999a2 2 0 0 1 0-2.828l10-10a2 2 0 0 1 2.829 0l5.999 6a2 2 0 0 1 0 2.828L12.834 21\" />\n <path d=\"m5.082 11.09 8.828 8.828\" />\n </Wrap>\n );\n}\n\n// lucide: refresh-cw v1.22.0 (dual arrows — was a broken hand-crafted Heroicons-style path)\nexport function RetryTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Retry\" {...props}>\n <path d=\"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\" />\n <path d=\"M21 3v5h-5\" />\n <path d=\"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\" />\n <path d=\"M8 16H3v5\" />\n </Wrap>\n );\n}\n\n/** Alias — same Lucide refresh-cw glyph as RetryTapButton. */\nexport function RefreshCwTapButton(props: TapButtonProps) {\n return <RetryTapButton ariaLabel=\"Refresh\" {...props} />;\n}\n\n// lucide: loading spinner (custom animated — no Lucide equivalent)\nexport function LoadingTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Loading\" {...props}>\n <circle\n className=\"animate-spin\"\n cx=\"12\"\n cy=\"12\"\n r=\"9\"\n strokeDasharray=\"28.27\"\n strokeDashoffset=\"9\"\n strokeLinecap=\"round\"\n style={{ transformOrigin: \"12px 12px\" }}\n />\n </Wrap>\n );\n}\n\n// lucide: bot/robot (hand-crafted — kept as-is)\nexport function RobotTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"AI Agent\" {...props}>\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M9 3.75H6.912a2.25 2.25 0 00-2.15 1.588L2.35 13.177a2.25 2.25 0 00-.1.661V18a2.25 2.25 0 002.25 2.25h15A2.25 2.25 0 0021.75 18v-4.162c0-.224-.034-.447-.1-.661L19.24 5.338a2.25 2.25 0 00-2.15-1.588H15M2.25 13.5h3.86a2.25 2.25 0 012.012 1.244l.256.512a2.25 2.25 0 002.013 1.244h3.218a2.25 2.25 0 002.013-1.244l.256-.512a2.25 2.25 0 012.013-1.244h3.859M12 3v8.25m0 0-3-3m3 3 3-3\"\n />\n </Wrap>\n );\n}\n\n// lucide: webhook v0.577.0\nexport function WebhookTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Webhook\" {...props}>\n <path d=\"M18 16.98h-5.99c-1.1 0-1.95.94-2.48 1.9A4 4 0 0 1 2 17c.01-.7.2-1.4.57-2\" />\n <path d=\"m6 17 3.13-5.78c.53-.97.1-2.18-.5-3.1a4 4 0 1 1 6.89-4.06\" />\n <path d=\"m12 6 3.13 5.73C15.66 12.7 16.9 13 18 13a4 4 0 0 1 0 8\" />\n </Wrap>\n );\n}\n\n// lucide: eye v0.577.0\nexport function ViewTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"View\" {...props}>\n <path d=\"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </Wrap>\n );\n}\n\n// lucide: hammer v0.577.0\nexport function BuildTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Build\" {...props}>\n <path d=\"m15 12-9.373 9.373a1 1 0 0 1-3.001-3L12 9\" />\n <path d=\"m18 15 4-4\" />\n <path d=\"m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172v-.344a2 2 0 0 0-.586-1.414l-1.657-1.657A6 6 0 0 0 12.516 3H9l1.243 1.243A6 6 0 0 1 12 8.485V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5\" />\n </Wrap>\n );\n}\n\n// lucide: play v0.577.0 (alias for Run context)\nexport function RunTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Run\" {...props}>\n <path d=\"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z\" />\n </Wrap>\n );\n}\n\n// lucide: history v0.577.0\nexport function HistoryTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"History\" {...props}>\n <path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\" />\n <path d=\"M3 3v5h5\" />\n <path d=\"M12 7v5l4 2\" />\n </Wrap>\n );\n}\n\n// lucide: paperclip v0.577.0\nexport function PaperclipTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Attach file\" {...props}>\n <path d=\"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551\" />\n </Wrap>\n );\n}\n\n// lucide: thumbs-up v0.577.0\nexport function ThumbsUpTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Like\" {...props}>\n <path d=\"M7 10v12\" />\n <path d=\"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z\" />\n </Wrap>\n );\n}\n\n// lucide: thumbs-down v0.577.0\nexport function ThumbsDownTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Dislike\" {...props}>\n <path d=\"M17 14V2\" />\n <path d=\"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z\" />\n </Wrap>\n );\n}\n\n// lucide: check v0.577.0\nexport function CheckTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Done\" {...props}>\n <path d=\"M20 6 9 17l-5-5\" />\n </Wrap>\n );\n}\n\n// lucide: pencil v0.577.0\nexport function PencilTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Edit\" {...props}>\n <path d=\"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z\" />\n <path d=\"m15 5 4 4\" />\n </Wrap>\n );\n}\n\n// lucide: ellipsis (more-horizontal) v0.577.0\nexport function MoreHorizontalTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"More options\" {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"1\" />\n <circle cx=\"19\" cy=\"12\" r=\"1\" />\n <circle cx=\"5\" cy=\"12\" r=\"1\" />\n </Wrap>\n );\n}\n\n// lucide: check-square v0.577.0\nexport function CheckSquareTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Task\" {...props}>\n <path d=\"m9 11 3 3L22 4\" />\n <path d=\"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11\" />\n </Wrap>\n );\n}\n\n// lucide: ghost v0.577.0\nexport function GhostTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Incognito chat\" {...props}>\n <path d=\"M9 10h.01\" />\n <path d=\"M15 10h.01\" />\n <path d=\"M12 2a8 8 0 0 0-8 8v12l3-3 2.5 2.5L12 19l2.5 2.5L17 19l3 3V10a8 8 0 0 0-8-8z\" />\n </Wrap>\n );\n}\n\n// lucide: link (chain link — used for \"attach to task\") v0.577.0\nexport function LinkTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Attach\" {...props}>\n <path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\" />\n <path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\" />\n </Wrap>\n );\n}\n\n// lucide: external-link v0.577.0\nexport function ExternalLinkTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Open source\" {...props}>\n <path d=\"M15 3h6v6\" />\n <path d=\"M10 14 21 3\" />\n <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" />\n </Wrap>\n );\n}\n\n// lucide: clipboard-list v0.577.0\nexport function ClipboardListTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Copy Pages\" {...props}>\n <rect width=\"8\" height=\"4\" x=\"8\" y=\"2\" rx=\"1\" ry=\"1\" />\n <path d=\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\" />\n <path d=\"M12 11h4\" />\n <path d=\"M12 16h4\" />\n <path d=\"M8 11h.01\" />\n <path d=\"M8 16h.01\" />\n </Wrap>\n );\n}\n\n// lucide: party-popper v0.577.0\nexport function PartyPopperTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"AI Clean\" {...props}>\n <path d=\"M5.8 11.3 2 22l10.7-3.79\" />\n <path d=\"M4 3h.01\" />\n <path d=\"M22 8h.01\" />\n <path d=\"M15 2h.01\" />\n <path d=\"M22 20h.01\" />\n <path d=\"m22 2-2.24.75a2.9 2.9 0 0 0-1.96 3.12c.1.86-.57 1.63-1.45 1.63h-.38c-.86 0-1.6.6-1.76 1.44L14 10\" />\n <path d=\"m22 13-.82-.33c-.86-.34-1.82.2-1.98 1.11c-.11.7-.72 1.22-1.43 1.22H17\" />\n <path d=\"m11 2 .33.82c.34.86-.2 1.82-1.11 1.98C9.52 4.9 9 5.52 9 6.23V7\" />\n <path d=\"M11 13c1.93 1.93 2.83 4.17 2 5-.83.83-3.07-.07-5-2-1.93-1.93-2.83-4.17-2-5 .83-.83 3.07.07 5 2Z\" />\n </Wrap>\n );\n}\n\n// lucide: layers v0.577.0 — \"this PDF everywhere\" surface switcher\nexport function LayersTapButton(props: TapButtonProps) {\n return (\n <Wrap ariaLabel=\"Open this PDF in another surface\" {...props}>\n <path d=\"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z\" />\n <path d=\"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12\" />\n <path d=\"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17\" />\n </Wrap>\n );\n}\n","\"use client\";\n\nimport {\n cloneElement,\n forwardRef,\n isValidElement,\n type ButtonHTMLAttributes,\n type ReactElement,\n type ReactNode,\n type Ref,\n} from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { TooltipContent, TooltipTrigger } from \"./tooltip\";\nimport { cn } from \"./cn\";\nimport {\n getTapTargetLinkComponent,\n type TapTargetLinkComponent,\n} from \"./link\";\n\nexport interface TapTargetButtonProps {\n icon?: React.ReactNode;\n children?: React.ReactNode;\n strokeWidth?: number | undefined;\n onClick?: (() => void) | undefined;\n className?: string | undefined;\n as?: \"button\" | \"label\" | undefined;\n htmlFor?: string | undefined;\n ariaLabel?: string | undefined;\n disabled?: boolean | undefined;\n /**\n * When set, the tap button renders as a link instead of a button.\n * - Internal hrefs (e.g. \"/tasks\") render via the injected link component\n * (`setTapTargetLinkComponent` / the `linkComponent` prop), falling back\n * to a plain `<a>` when none is registered.\n * - External hrefs (http://, https://, mailto:, tel:) render as `<a>`\n * with `target=\"_blank\"` and `rel=\"noopener noreferrer\"` by default.\n * - When combined with `disabled`, the trigger renders as a non-navigable\n * `<span aria-disabled=\"true\">` with the same visual styling.\n */\n href?: string | undefined;\n /** Override target. Works on both internal links and external anchors. */\n target?: \"_blank\" | \"_self\" | \"_parent\" | \"_top\" | undefined;\n /** Override rel. Works on both internal links and external anchors. */\n rel?: string | undefined;\n /** Forwarded to the injected link component. Pass `false` to disable prefetching. */\n prefetch?: boolean | null | undefined;\n /**\n * Per-instance link component for internal hrefs — overrides the\n * module-level `setTapTargetLinkComponent` registration.\n */\n linkComponent?: TapTargetLinkComponent | undefined;\n /**\n * Tooltip text. Defaults to `ariaLabel` when omitted.\n * Pass `false` to explicitly disable the tooltip.\n */\n tooltip?: string | false | undefined;\n /** Tooltip placement. Defaults to \"top\". */\n tooltipSide?: \"top\" | \"right\" | \"bottom\" | \"left\" | undefined;\n /** Tooltip alignment along its side. Defaults to \"center\". */\n tooltipAlign?: \"start\" | \"center\" | \"end\" | undefined;\n /**\n * Visible caption rendered inline after the icon (`[icon Label]`).\n * Widens the pill automatically. Tooltip defaults to off when set — the\n * label is self-describing. Visible text becomes the accessible name.\n */\n label?: string | undefined;\n /**\n * Collapse an icon + caption pill to its icon-only 44px tap target below\n * the `sm` breakpoint. The caption and inline geometry return at `sm+`;\n * `ariaLabel` (falling back to `label`) remains the accessible name.\n */\n mobileIconOnly?: boolean | undefined;\n}\n\nexport interface TapTargetButtonSolidProps extends TapTargetButtonProps {\n bgColor?: string | undefined;\n iconColor?: string | undefined;\n hoverBgColor?: string | undefined;\n /**\n * Press-state background. Defaults to `active:brightness-90` which works on\n * any color. Override when using a custom `bgColor` that should darken to a\n * specific shade on press (e.g. `active:bg-primary/60`).\n */\n activeBgColor?: string | undefined;\n}\n\nconst EXTERNAL_RE = /^(https?:|mailto:|tel:)/i;\n\n// Geometry + press feedback + tap hygiene are the SINGLE SOURCE OF TRUTH in\n// the shipped stylesheet (the `.matrx-tap-*` family in styles.css — import\n// \"@ai-matrx/tap-target/styles.css\" once at app root). This component only\n// picks the right class and layers each variant's decoration on top.\nconst TAP_OUTER_CLASS = \"matrx-tap-target group\";\nconst TAP_GROUP_OUTER_CLASS = \"matrx-tap-target matrx-tap-target-sm group\";\n\nfunction IconContent({\n icon,\n children,\n strokeWidth = 2,\n className,\n}: Pick<\n TapTargetButtonProps,\n \"icon\" | \"children\" | \"strokeWidth\" | \"className\"\n>) {\n if (icon) {\n if (isValidElement<{ className?: string }>(icon)) {\n return cloneElement(icon, {\n className: cn(className, icon.props.className),\n });\n }\n return <span className={className}>{icon}</span>;\n }\n return (\n <svg\n className={className}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n >\n {children}\n </svg>\n );\n}\n\ntype TapTargetSize = \"default\" | \"sm\";\n\nfunction resolveTapGeometry(\n label: string | undefined,\n size: TapTargetSize,\n mobileIconOnly: boolean,\n) {\n const inline = Boolean(label);\n if (size === \"sm\") {\n return {\n outerClassName:\n inline && mobileIconOnly\n ? \"matrx-tap-target matrx-tap-target-sm matrx-tap-target-mobile-icon-only-sm group\"\n : inline\n ? \"matrx-tap-target matrx-tap-target-sm matrx-tap-target-inline-sm group\"\n : TAP_GROUP_OUTER_CLASS,\n inlineModifier: mobileIconOnly\n ? \"matrx-tap-pill-mobile-icon-only-sm\"\n : \"matrx-tap-pill-inline-sm\",\n };\n }\n return {\n outerClassName:\n inline && mobileIconOnly\n ? `${TAP_OUTER_CLASS} matrx-tap-target-mobile-icon-only`\n : inline\n ? `${TAP_OUTER_CLASS} matrx-tap-target-inline`\n : TAP_OUTER_CLASS,\n inlineModifier: mobileIconOnly\n ? \"matrx-tap-pill-mobile-icon-only\"\n : \"matrx-tap-pill-inline\",\n };\n}\n\nfunction buildTapInner({\n label,\n pillClassName,\n iconClassName,\n labelClassName,\n inlineModifier,\n icon,\n children,\n strokeWidth = 2,\n}: {\n label?: string | undefined;\n pillClassName: string;\n iconClassName: string;\n labelClassName?: string | undefined;\n inlineModifier: string;\n icon?: React.ReactNode;\n children?: React.ReactNode;\n strokeWidth?: number | undefined;\n}) {\n const iconEl = (\n <IconContent\n icon={icon}\n strokeWidth={strokeWidth}\n className={iconClassName}\n >\n {children}\n </IconContent>\n );\n const pillClasses = label\n ? `${pillClassName} ${inlineModifier}`.trim()\n : pillClassName;\n\n if (!label) {\n return <div className={pillClasses}>{iconEl}</div>;\n }\n\n return (\n <div className={pillClasses}>\n {iconEl}\n <span className={labelClassName ?? \"matrx-tap-label\"}>{label}</span>\n </div>\n );\n}\n\ninterface RenderTapTargetArgs extends Pick<\n TapTargetButtonProps,\n | \"icon\"\n | \"children\"\n | \"strokeWidth\"\n | \"label\"\n | \"mobileIconOnly\"\n | \"onClick\"\n | \"as\"\n | \"htmlFor\"\n | \"ariaLabel\"\n | \"disabled\"\n | \"href\"\n | \"target\"\n | \"rel\"\n | \"prefetch\"\n | \"linkComponent\"\n | \"tooltip\"\n | \"tooltipSide\"\n | \"tooltipAlign\"\n> {\n size?: TapTargetSize;\n pillClassName: string;\n iconClassName: string;\n labelClassName?: string | undefined;\n rest?: ButtonHTMLAttributes<HTMLButtonElement> | undefined;\n buttonRef?: Ref<HTMLButtonElement> | undefined;\n}\n\nfunction renderTapTarget({\n size = \"default\",\n pillClassName,\n iconClassName,\n labelClassName,\n icon,\n children,\n strokeWidth,\n label,\n mobileIconOnly = false,\n onClick,\n as,\n htmlFor,\n ariaLabel,\n disabled,\n href,\n target,\n rel,\n prefetch,\n linkComponent,\n tooltip,\n tooltipSide,\n tooltipAlign,\n rest,\n buttonRef,\n}: RenderTapTargetArgs): ReactElement {\n const { outerClassName, inlineModifier } = resolveTapGeometry(\n label,\n size,\n mobileIconOnly,\n );\n const responsiveLabelClassName = mobileIconOnly\n ? `${labelClassName ?? \"matrx-tap-label\"} matrx-tap-label-mobile-icon-only`\n : labelClassName;\n const inner = buildTapInner({\n label,\n pillClassName,\n iconClassName,\n labelClassName: responsiveLabelClassName,\n inlineModifier: label ? inlineModifier : \"\",\n icon,\n children,\n strokeWidth,\n });\n const resolvedTooltip =\n tooltip !== undefined ? tooltip : label ? false : undefined;\n const triggerAriaLabel =\n label && !mobileIconOnly ? undefined : (ariaLabel ?? label);\n const trigger = renderTrigger({\n href,\n target,\n rel,\n prefetch,\n linkComponent,\n as,\n htmlFor,\n onClick,\n ariaLabel: triggerAriaLabel,\n disabled,\n outerClassName,\n children: inner,\n rest,\n buttonRef,\n });\n return withTooltip(trigger, {\n tooltip: resolvedTooltip,\n ariaLabel: triggerAriaLabel,\n disabled,\n tooltipSide,\n tooltipAlign,\n });\n}\n\ninterface RenderTriggerArgs {\n href?: string | undefined;\n target?: \"_blank\" | \"_self\" | \"_parent\" | \"_top\" | undefined;\n rel?: string | undefined;\n prefetch?: boolean | null | undefined;\n linkComponent?: TapTargetLinkComponent | undefined;\n as?: \"button\" | \"label\" | undefined;\n htmlFor?: string | undefined;\n onClick?: (() => void) | undefined;\n ariaLabel?: string | undefined;\n disabled?: boolean | undefined;\n outerClassName: string;\n children: ReactNode;\n rest?: ButtonHTMLAttributes<HTMLButtonElement> | undefined;\n buttonRef?: Ref<HTMLButtonElement> | undefined;\n}\n\n/**\n * Resolves the correct trigger element based on the props passed.\n *\n * - `href` + `disabled` → unclickable `<span aria-disabled>`\n * - `href` matching `http(s):|mailto:|tel:` → `<a target=\"_blank\" rel=\"noopener noreferrer\">`\n * - `href` (internal) → the injected link component (per-instance\n * `linkComponent` prop, else `setTapTargetLinkComponent` registration),\n * falling back to a plain `<a>` when none is registered\n * - `as=\"label\"` → `<label htmlFor=...>`\n * - default → `<button>`\n */\nfunction renderTrigger({\n href,\n target,\n rel,\n prefetch,\n linkComponent,\n as,\n htmlFor,\n onClick,\n ariaLabel,\n disabled,\n outerClassName,\n children,\n rest,\n buttonRef,\n}: RenderTriggerArgs): ReactElement {\n if (disabled && href) {\n return (\n <span\n aria-disabled=\"true\"\n aria-label={ariaLabel}\n className={`${outerClassName} opacity-40 pointer-events-none`}\n >\n {children}\n </span>\n );\n }\n if (href) {\n const isExternal = EXTERNAL_RE.test(href);\n if (isExternal) {\n return (\n <a\n href={href}\n target={target ?? \"_blank\"}\n rel={rel ?? \"noopener noreferrer\"}\n aria-label={ariaLabel}\n className={outerClassName}\n >\n {children}\n </a>\n );\n }\n const Link = linkComponent ?? getTapTargetLinkComponent();\n if (Link) {\n return (\n <Link\n href={href}\n target={target}\n rel={rel}\n prefetch={prefetch}\n aria-label={ariaLabel}\n className={outerClassName}\n >\n {children}\n </Link>\n );\n }\n // No link component registered — plain <a>. `prefetch` is a router hint,\n // not a DOM attribute, so it is deliberately dropped here.\n return (\n <a\n href={href}\n target={target}\n rel={rel}\n aria-label={ariaLabel}\n className={outerClassName}\n >\n {children}\n </a>\n );\n }\n if (as === \"label\") {\n return (\n <label\n htmlFor={htmlFor}\n aria-label={ariaLabel}\n className={outerClassName}\n >\n {children}\n </label>\n );\n }\n return (\n <button\n ref={buttonRef}\n type=\"button\"\n onClick={onClick}\n aria-label={ariaLabel}\n disabled={disabled}\n {...rest}\n className={outerClassName}\n >\n {children}\n </button>\n );\n}\n\n/**\n * Wraps a trigger element in a Tooltip when a tooltip label is available.\n * Falls back to `ariaLabel` when `tooltip` is not explicitly set. If both\n * are absent (or `tooltip === false`), the trigger is returned unwrapped.\n */\nfunction withTooltip(\n trigger: ReactElement,\n {\n tooltip,\n ariaLabel,\n disabled,\n tooltipSide = \"top\",\n tooltipAlign = \"center\",\n }: {\n tooltip?: string | false | undefined;\n ariaLabel?: string | undefined;\n disabled?: boolean | undefined;\n tooltipSide?: \"top\" | \"right\" | \"bottom\" | \"left\" | undefined;\n tooltipAlign?: \"start\" | \"center\" | \"end\" | undefined;\n },\n): ReactElement {\n if (tooltip === false) return trigger;\n const label =\n typeof tooltip === \"string\" && tooltip.length > 0 ? tooltip : ariaLabel;\n if (!label) return trigger;\n return (\n <TooltipPrimitive.Root>\n <TooltipTrigger asChild>\n {disabled ? (\n // Radix Tooltip triggers need a hoverable element; a disabled button\n // does not dispatch pointer events, so we wrap in a span for the\n // trigger target while keeping the disabled visual state.\n <span className=\"inline-flex\">{trigger}</span>\n ) : (\n trigger\n )}\n </TooltipTrigger>\n <TooltipContent side={tooltipSide} align={tooltipAlign}>\n {label}\n </TooltipContent>\n </TooltipPrimitive.Root>\n );\n}\n\n// To resize/retune every tap button, edit styles.css — not here.\n\nexport const TapTargetButton = forwardRef<\n HTMLButtonElement,\n TapTargetButtonProps & ButtonHTMLAttributes<HTMLButtonElement>\n>(function TapTargetButton(\n {\n icon,\n children,\n strokeWidth = 2,\n onClick,\n className,\n as,\n htmlFor,\n ariaLabel,\n disabled,\n href,\n target,\n rel,\n prefetch,\n linkComponent,\n tooltip,\n tooltipSide,\n tooltipAlign,\n label,\n mobileIconOnly,\n ...rest\n },\n ref,\n) {\n const color = className ?? \"text-foreground\";\n return renderTapTarget({\n icon,\n children,\n strokeWidth,\n onClick,\n as,\n htmlFor,\n ariaLabel,\n disabled,\n href,\n target,\n rel,\n prefetch,\n linkComponent,\n tooltip,\n tooltipSide,\n tooltipAlign,\n label,\n mobileIconOnly,\n pillClassName: \"matrx-tap-pill matrx-glass-thin-border\",\n iconClassName: `matrx-tap-icon ${color}`,\n rest,\n buttonRef: ref,\n });\n});\n\nexport const TapTargetButtonTransparent = forwardRef<\n HTMLButtonElement,\n TapTargetButtonProps & React.ButtonHTMLAttributes<HTMLButtonElement>\n>(function TapTargetButtonTransparent(\n {\n icon,\n children,\n strokeWidth = 2,\n onClick,\n className,\n as,\n htmlFor,\n ariaLabel,\n disabled,\n href,\n target,\n rel,\n prefetch,\n linkComponent,\n tooltip,\n tooltipSide,\n tooltipAlign,\n label,\n mobileIconOnly,\n ...rest\n },\n ref,\n) {\n const color = className ?? \"text-foreground\";\n return renderTapTarget({\n icon,\n children,\n strokeWidth,\n onClick,\n as,\n htmlFor,\n ariaLabel,\n disabled,\n href,\n target,\n rel,\n prefetch,\n linkComponent,\n tooltip,\n tooltipSide,\n tooltipAlign,\n label,\n mobileIconOnly,\n pillClassName:\n \"matrx-tap-pill hover:bg-muted active:bg-muted-foreground/15\",\n iconClassName: `matrx-tap-icon ${color}`,\n rest,\n buttonRef: ref,\n });\n});\n\nexport const TapTargetButtonSolid = forwardRef<\n HTMLButtonElement,\n TapTargetButtonSolidProps & React.ButtonHTMLAttributes<HTMLButtonElement>\n>(function TapTargetButtonSolid(\n {\n icon,\n children,\n strokeWidth = 2,\n onClick,\n as,\n htmlFor,\n ariaLabel,\n disabled,\n href,\n target,\n rel,\n prefetch,\n linkComponent,\n bgColor = \"bg-primary\",\n iconColor = \"text-primary-foreground\",\n hoverBgColor = \"hover:bg-primary/80\",\n activeBgColor = \"active:brightness-90\",\n tooltip,\n tooltipSide,\n tooltipAlign,\n label,\n mobileIconOnly,\n ...rest\n },\n ref,\n) {\n return renderTapTarget({\n icon,\n children,\n strokeWidth,\n onClick,\n as,\n htmlFor,\n ariaLabel,\n disabled,\n href,\n target,\n rel,\n prefetch,\n linkComponent,\n tooltip,\n tooltipSide,\n tooltipAlign,\n label,\n mobileIconOnly,\n pillClassName: `matrx-tap-pill ${bgColor} ${iconColor} ${hoverBgColor} ${activeBgColor}`,\n iconClassName: `matrx-tap-icon ${iconColor}`,\n labelClassName: `matrx-tap-label ${iconColor}`,\n rest,\n buttonRef: ref,\n });\n});\n\n/** Solid destructive pill — delete/remove actions. White-on-red like the\n * primary solid is white-on-blue. Use THIS, never hand-pass bg-destructive\n * with the default (dark) icon color. */\nexport const TapTargetButtonDestructive = forwardRef<\n HTMLButtonElement,\n TapTargetButtonSolidProps & React.ButtonHTMLAttributes<HTMLButtonElement>\n>(function TapTargetButtonDestructive(\n {\n bgColor = \"bg-destructive\",\n iconColor = \"text-destructive-foreground\",\n hoverBgColor = \"hover:bg-destructive/90\",\n ...rest\n },\n ref,\n) {\n return (\n <TapTargetButtonSolid\n ref={ref}\n bgColor={bgColor}\n iconColor={iconColor}\n hoverBgColor={hoverBgColor}\n {...rest}\n />\n );\n});\n\nexport const TapTargetButtonForGroup = forwardRef<\n HTMLButtonElement,\n TapTargetButtonProps & ButtonHTMLAttributes<HTMLButtonElement>\n>(function TapTargetButtonForGroup(\n {\n icon,\n children,\n strokeWidth = 2,\n onClick,\n className,\n as,\n htmlFor,\n ariaLabel,\n disabled,\n href,\n target,\n rel,\n prefetch,\n linkComponent,\n tooltip,\n tooltipSide,\n tooltipAlign,\n label,\n mobileIconOnly,\n ...rest\n },\n ref,\n) {\n const color = className ?? \"text-foreground\";\n return renderTapTarget({\n size: \"sm\",\n icon,\n children,\n strokeWidth,\n onClick,\n as,\n htmlFor,\n ariaLabel,\n disabled,\n href,\n target,\n rel,\n prefetch,\n linkComponent,\n tooltip,\n tooltipSide,\n tooltipAlign,\n label,\n mobileIconOnly,\n pillClassName: \"matrx-tap-pill matrx-tap-pill-sm matrx-glass-interactive\",\n iconClassName: `matrx-tap-icon ${color}`,\n labelClassName: `matrx-tap-label ${color}`,\n rest,\n buttonRef: ref,\n });\n});\n\nexport function TapTargetButtonGroup({\n children,\n className,\n}: {\n children: React.ReactNode;\n className?: string | undefined;\n}) {\n return (\n <div\n className={\n className\n ? `relative inline-flex h-9 items-center ${className}`\n : \"relative inline-flex h-9 items-center\"\n }\n >\n <div className=\"pointer-events-none absolute inset-x-0 top-1/2 -translate-y-1/2 h-7 rounded-full matrx-glass-thin-border\" />\n {/* min-w-0 lets flexible children (e.g. a truncating filename) shrink\n under container pressure; fixed-size tap buttons are unaffected. */}\n <div className=\"relative flex min-w-0 items-center\">{children}</div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { cn } from \"./cn\";\n\n/**\n * Inlined port of matrx-frontend `components/ui/tooltip.tsx` — the one `@/`\n * import the tap-target components consumed beyond `cn` and `next/link`.\n * Behavior deltas vs. the original, both documented in FEATURE.md:\n * - `useNestedPortalContainer` (a host-specific nested-overlay portal context)\n * is dropped: content portals to the Radix default (document.body).\n * - Everything else — unconditional Root render, popover-token styling — is\n * verbatim.\n *\n * Hosts must mount `TooltipProvider` once near the app root (matrx-frontend\n * already does); `TapTargetLabeled` brings its own provider like the original.\n */\nconst TooltipProvider = TooltipPrimitive.Provider;\n\nconst Tooltip = TooltipPrimitive.Root;\n\nconst TooltipTrigger = TooltipPrimitive.Trigger;\n\nconst TooltipContent = React.forwardRef<\n React.ComponentRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n // Neutral, theme-aware surface (popover tokens) so tooltip text is\n // ALWAYS legible in both light and dark mode — including rich content\n // that uses `text-muted-foreground`. A brand-colored `bg-primary`\n // background broke legibility for any non-default content.\n \"z-[10001] overflow-hidden rounded-md border border-border bg-popover px-3 py-1.5 text-xs text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n </TooltipPrimitive.Portal>\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","/**\n * Minimal className join — the only piece of `cn` this package needs.\n * No tailwind-merge / clsx dependency by design: callers pass literal strings.\n */\nexport function cn(\n ...values: Array<string | null | undefined | false>\n): string {\n return values.filter(Boolean).join(\" \").trim();\n}\n","import type { ComponentType, ReactNode } from \"react\";\n\n/**\n * The injectable link seam — the package's replacement for the original\n * hard `next/link` import.\n *\n * Internal hrefs (anything NOT matching `http(s):`, `mailto:`, `tel:`) render\n * through the link component resolved here; external hrefs always render a\n * plain `<a target=\"_blank\" rel=\"noopener noreferrer\">`, exactly like the\n * original. When nothing is registered and no per-instance `linkComponent`\n * prop is given, internal hrefs fall back to a plain `<a>` (no prefetch, no\n * client-side routing — still a working link).\n */\nexport interface TapTargetLinkProps {\n href: string;\n target?: \"_blank\" | \"_self\" | \"_parent\" | \"_top\" | undefined;\n rel?: string | undefined;\n /** Router prefetch hint (next/link semantics). Plain `<a>` fallback ignores it. */\n prefetch?: boolean | null | undefined;\n \"aria-label\"?: string | undefined;\n className?: string | undefined;\n children?: ReactNode;\n}\n\nexport type TapTargetLinkComponent = ComponentType<TapTargetLinkProps>;\n\n/**\n * The registered component lives in a `Symbol.for` slot on `globalThis` — NOT\n * in module state — so it survives the module graph being instantiated more\n * than once: the `.` and `./buttons` dist bundles each inline the primitives\n * (tsup `splitting: false`), and a consumer may even mix `import` and\n * `require`. One registration must reach every copy.\n */\nconst LINK_SLOT = Symbol.for(\"@ai-matrx/tap-target:link-component\");\n\ntype GlobalWithLinkSlot = typeof globalThis & {\n [LINK_SLOT]?: TapTargetLinkComponent | null;\n};\n\n/**\n * Register the app's link component once at startup (e.g. `next/link`):\n *\n * ```tsx\n * import Link from \"next/link\";\n * import { setTapTargetLinkComponent } from \"@ai-matrx/tap-target\";\n * setTapTargetLinkComponent(Link);\n * ```\n *\n * Pass `null` to unregister (plain `<a>` fallback resumes).\n */\nexport function setTapTargetLinkComponent(\n component: TapTargetLinkComponent | null,\n): void {\n (globalThis as GlobalWithLinkSlot)[LINK_SLOT] = component;\n}\n\n/** The currently registered link component, or `null` when none is set. */\nexport function getTapTargetLinkComponent(): TapTargetLinkComponent | null {\n return (globalThis as GlobalWithLinkSlot)[LINK_SLOT] ?? null;\n}\n"],"mappings":"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","names":["import_react","TooltipPrimitive","import_jsx_runtime","TapTargetButton","TapTargetButtonTransparent","TapTargetButtonSolid","TapTargetButtonDestructive","TapTargetButtonForGroup","import_jsx_runtime","Wrap"]}
|