@arbidocs/blocks 0.4.90 → 0.4.92

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/agents/index.cjs +280 -279
  2. package/dist/agents/index.js +4 -3
  3. package/dist/agents/workflows/types.d.ts +6 -0
  4. package/dist/{chunk-ZPERNIMP.cjs → chunk-2WLXQGWC.cjs} +8 -3
  5. package/dist/chunk-2WLXQGWC.cjs.map +1 -0
  6. package/dist/chunk-32HW2Q33.cjs +59 -0
  7. package/dist/chunk-32HW2Q33.cjs.map +1 -0
  8. package/dist/{chunk-5XZU64E2.cjs → chunk-3US5OIDQ.cjs} +68 -33
  9. package/dist/chunk-3US5OIDQ.cjs.map +1 -0
  10. package/dist/{chunk-DPLRHEJZ.js → chunk-5LXQPP2K.js} +4 -33
  11. package/dist/chunk-5LXQPP2K.js.map +1 -0
  12. package/dist/{chunk-NQS7NFGM.js → chunk-5NQIBJPP.js} +4 -4
  13. package/dist/{chunk-NQS7NFGM.js.map → chunk-5NQIBJPP.js.map} +1 -1
  14. package/dist/{chunk-NXWKMKZY.js → chunk-5RQOVALO.js} +3 -3
  15. package/dist/{chunk-NXWKMKZY.js.map → chunk-5RQOVALO.js.map} +1 -1
  16. package/dist/chunk-AUS3KBHJ.js +52 -0
  17. package/dist/chunk-AUS3KBHJ.js.map +1 -0
  18. package/dist/{chunk-TMKJACMP.cjs → chunk-DDYXFALG.cjs} +44 -44
  19. package/dist/{chunk-TMKJACMP.cjs.map → chunk-DDYXFALG.cjs.map} +1 -1
  20. package/dist/chunk-DVUZTGVL.cjs +52 -0
  21. package/dist/chunk-DVUZTGVL.cjs.map +1 -0
  22. package/dist/{chunk-UCAYNE44.cjs → chunk-EHF63UYP.cjs} +5 -5
  23. package/dist/{chunk-UCAYNE44.cjs.map → chunk-EHF63UYP.cjs.map} +1 -1
  24. package/dist/{chunk-IC2VHFWR.js → chunk-JJA6GQKH.js} +8 -3
  25. package/dist/chunk-JJA6GQKH.js.map +1 -0
  26. package/dist/{chunk-YX466FWL.js → chunk-PGDL26TQ.js} +68 -33
  27. package/dist/chunk-PGDL26TQ.js.map +1 -0
  28. package/dist/components/tones.d.ts +5 -0
  29. package/dist/connect/index.cjs +24 -23
  30. package/dist/connect/index.cjs.map +1 -1
  31. package/dist/connect/index.js +4 -3
  32. package/dist/connect/index.js.map +1 -1
  33. package/dist/facts/index.cjs +2 -2
  34. package/dist/facts/index.js +1 -1
  35. package/dist/files/ViewToggle.d.ts +6 -1
  36. package/dist/files/index.cjs +8 -7
  37. package/dist/files/index.cjs.map +1 -1
  38. package/dist/files/index.js +3 -2
  39. package/dist/files/index.js.map +1 -1
  40. package/dist/index.cjs +320 -311
  41. package/dist/index.cjs.map +1 -1
  42. package/dist/index.d.ts +1 -0
  43. package/dist/index.js +6 -5
  44. package/dist/index.js.map +1 -1
  45. package/dist/settings/index.cjs +6 -5
  46. package/dist/settings/index.cjs.map +1 -1
  47. package/dist/settings/index.js +2 -1
  48. package/dist/settings/index.js.map +1 -1
  49. package/dist/site/index.cjs +4 -3
  50. package/dist/site/index.js +2 -1
  51. package/dist/workflow-canvas/FieldOptionsEditor.d.ts +25 -0
  52. package/dist/workflow-canvas/StepInspector.d.ts +6 -2
  53. package/dist/workflow-canvas/index.cjs +176 -47
  54. package/dist/workflow-canvas/index.cjs.map +1 -1
  55. package/dist/workflow-canvas/index.d.ts +1 -0
  56. package/dist/workflow-canvas/index.js +133 -6
  57. package/dist/workflow-canvas/index.js.map +1 -1
  58. package/package.json +4 -4
  59. package/dist/chunk-5XZU64E2.cjs.map +0 -1
  60. package/dist/chunk-DPLRHEJZ.js.map +0 -1
  61. package/dist/chunk-IC2VHFWR.js.map +0 -1
  62. package/dist/chunk-VFUWWH52.cjs +0 -83
  63. package/dist/chunk-VFUWWH52.cjs.map +0 -1
  64. package/dist/chunk-YX466FWL.js.map +0 -1
  65. package/dist/chunk-ZPERNIMP.cjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/tones.ts","../src/components/ToneBadge.tsx"],"names":[],"mappings":";;;;;;AAWO,IAAM,YAAA,GAAqC;AAAA,EAChD,OAAA,EAAS,2BAAA;AAAA,EACT,IAAA,EAAM,2BAAA;AAAA,EACN,OAAA,EAAS,6BAAA;AAAA,EACT,OAAA,EAAS,+BAAA;AAAA,EACT,MAAA,EAAQ,yBAAA;AAAA,EACR,MAAA,EAAQ,+BAAA;AAAA,EACR,EAAA,EAAI;AACN;AAGO,IAAM,WAAA,GAAoC;AAAA,EAC/C,OAAA,EAAS,oBAAA;AAAA,EACT,IAAA,EAAM,oBAAA;AAAA,EACN,OAAA,EAAS,qBAAA;AAAA,EACT,OAAA,EAAS,sBAAA;AAAA,EACT,MAAA,EAAQ,mBAAA;AAAA,EACR,MAAA,EAAQ,sBAAA;AAAA,EACR,EAAA,EAAI;AACN;AAGO,IAAM,QAAA,GAAiC;AAAA,EAC5C,OAAA,EAAS,cAAA;AAAA,EACT,IAAA,EAAM,eAAA;AAAA,EACN,OAAA,EAAS,gBAAA;AAAA,EACT,OAAA,EAAS,iBAAA;AAAA,EACT,MAAA,EAAQ,cAAA;AAAA,EACR,MAAA,EAAQ,iBAAA;AAAA,EACR,EAAA,EAAI;AACN,CAAA;AC3BO,SAAS,SAAA,CAAU;AAAA,EACxB,IAAA,GAAO,SAAA;AAAA,EACP,IAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAmB;AACjB,EAAA,uBACE,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,WAAA,EAAU,YAAA;AAAA,MACV,WAAA,EAAW,IAAA;AAAA,MACX,SAAA,EAAW,EAAA;AAAA,QACT,oFAAA;AAAA,QACA,aAAa,IAAI,CAAA;AAAA,QACjB,YAAY,IAAI,CAAA;AAAA,QAChB;AAAA,OACF;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,IAAA;AAAA,QACA;AAAA;AAAA;AAAA,GACH;AAEJ;AASO,SAAS,GAAA,CAAI,EAAE,IAAA,GAAO,SAAA,EAAW,OAAO,SAAA,EAAW,GAAG,MAAK,EAAa;AAC7E,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,WAAA,EAAU,KAAA;AAAA,MACV,WAAA,EAAW,IAAA;AAAA,MACX,IAAA,EAAM,QAAQ,KAAA,GAAQ,MAAA;AAAA,MACtB,YAAA,EAAY,KAAA;AAAA,MACZ,aAAA,EAAa,QAAQ,MAAA,GAAY,IAAA;AAAA,MACjC,WAAW,EAAA,CAAG,2CAAA,EAA6C,QAAA,CAAS,IAAI,GAAG,SAAS;AAAA;AAAA,GACtF;AAEJ","file":"chunk-DPLRHEJZ.js","sourcesContent":["/**\n * The ONE status/tone vocabulary of the blocks. `StatusPill`, `ToneBadge`, `Dot` and the plan,\n * connection and tag chips all read these maps, so a tone looks the same wherever it appears and\n * a new tone is added in one place. Every pair is a token pair checked by\n * `tokens.contrast.test.ts` (`--{hue}-text` on `--{hue}-bg`).\n */\n\n/** Semantic tones, mapped to the token palette (`--{hue}-bg|text|border`, `--ai-*`). */\nexport type Tone = 'neutral' | 'info' | 'success' | 'warning' | 'danger' | 'accent' | 'ai'\n\n/** Background + text of a tinted chip. */\nexport const TONE_SURFACE: Record<Tone, string> = {\n neutral: 'bg-gray-bg text-gray-text',\n info: 'bg-blue-bg text-blue-text',\n success: 'bg-green-bg text-green-text',\n warning: 'bg-yellow-bg text-yellow-text',\n danger: 'bg-red-bg text-red-text',\n accent: 'bg-purple-bg text-purple-text',\n ai: 'bg-ai-soft text-ai-ink',\n}\n\n/** Border of a tinted chip (the AI tint has none). */\nexport const TONE_BORDER: Record<Tone, string> = {\n neutral: 'border-gray-border',\n info: 'border-blue-border',\n success: 'border-green-border',\n warning: 'border-yellow-border',\n danger: 'border-red-border',\n accent: 'border-purple-border',\n ai: 'border-transparent',\n}\n\n/** Solid fill of a status dot. */\nexport const TONE_DOT: Record<Tone, string> = {\n neutral: 'bg-gray-text',\n info: 'bg-blue-solid',\n success: 'bg-green-solid',\n warning: 'bg-yellow-solid',\n danger: 'bg-red-solid',\n accent: 'bg-purple-solid',\n ai: 'bg-ai-ink',\n}\n","import type { HTMLAttributes, ReactNode } from 'react'\nimport { cn } from '@arbidocs/react/ui'\nimport { TONE_BORDER, TONE_DOT, TONE_SURFACE, type Tone } from './tones'\n\nexport type { Tone }\n\nexport interface ToneBadgeProps extends HTMLAttributes<HTMLSpanElement> {\n tone?: Tone\n /** Leading glyph or dot. */\n icon?: ReactNode\n children: ReactNode\n}\n\n/** A small tinted label. The host decides the tone and the words (status, level, priority...). */\nexport function ToneBadge({\n tone = 'neutral',\n icon,\n children,\n className,\n ...rest\n}: ToneBadgeProps) {\n return (\n <span\n {...rest}\n data-slot=\"tone-badge\"\n data-tone={tone}\n className={cn(\n 'inline-flex items-center gap-1 rounded-full border px-2 py-0.5 text-xs font-medium',\n TONE_SURFACE[tone],\n TONE_BORDER[tone],\n className\n )}\n >\n {icon}\n {children}\n </span>\n )\n}\n\nexport interface DotProps extends HTMLAttributes<HTMLSpanElement> {\n tone?: Tone\n /** Accessible name; without it the dot is decorative (`aria-hidden`). */\n label?: string\n}\n\n/** A solid status dot in a tone. */\nexport function Dot({ tone = 'neutral', label, className, ...rest }: DotProps) {\n return (\n <span\n {...rest}\n data-slot=\"dot\"\n data-tone={tone}\n role={label ? 'img' : undefined}\n aria-label={label}\n aria-hidden={label ? undefined : true}\n className={cn('inline-block size-2 shrink-0 rounded-full', TONE_DOT[tone], className)}\n />\n )\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/files/ViewToggle.tsx"],"names":[],"mappings":"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","file":"chunk-IC2VHFWR.js","sourcesContent":["import { useRef, useState, type ReactNode } from 'react'\nimport { BookOpen, FileImage, Search, Table2 } from 'lucide-react'\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n ToggleGroup,\n ToggleGroupItem,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cn,\n} from '@arbidocs/react/ui'\nimport { testIdOr } from '../chat/test-id'\n\n/** Names of the four document view modes. Pass a partial `labels` to translate or reword. */\nexport interface DocumentViewToggleLabels {\n gallery: string\n table: string\n review: string\n smartSearch: string\n}\n\nexport const DEFAULT_DOCUMENT_VIEW_TOGGLE_LABELS: DocumentViewToggleLabels = {\n gallery: 'Gallery',\n table: 'Table',\n review: 'Review',\n smartSearch: 'Smart Search',\n}\n\nexport interface ViewToggleOption {\n value: string\n icon: ReactNode\n label: string\n /** Overrides this item's test id (default `${testIdPrefix}-${value}-button`). */\n testId?: string\n}\n\nexport interface ViewToggleProps {\n options: ViewToggleOption[]\n value: string\n onChange: (value: string) => void\n /** Item test ids are `${testIdPrefix}-${value}-button` unless an option sets its own `testId`. */\n testIdPrefix?: string\n showLabels?: boolean\n hideTooltips?: boolean\n size?: 'default' | 'sm'\n /**\n * Collapse labels to icons by the width of the nearest `@container` ancestor instead of the\n * viewport. The consumer must mark that region `@container`.\n */\n containerCollapse?: boolean\n className?: string\n}\n\ninterface ViewToggleItemProps {\n option: ViewToggleOption\n size: 'default' | 'sm'\n testIdPrefix: string\n showLabel: boolean\n labelClassName: string\n hideTooltip: boolean\n}\n\nfunction ViewToggleItem({\n option,\n size,\n testIdPrefix,\n showLabel,\n labelClassName,\n hideTooltip,\n}: ViewToggleItemProps) {\n const labelRef = useRef<HTMLSpanElement>(null)\n const [isTipNeeded, setIsTipNeeded] = useState(true)\n // A control that shows its own text needs no tooltip repeating it; when the container is too\n // narrow and the label collapses to the icon, the tooltip is the label.\n const isLabelShown = () => !!labelRef.current && labelRef.current.offsetParent !== null\n const content = (\n <span\n className=\"flex items-center gap-1.5\"\n onPointerEnter={() => setIsTipNeeded(!isLabelShown())}\n onFocus={() => setIsTipNeeded(!isLabelShown())}\n >\n {option.icon}\n {showLabel && (\n <span ref={labelRef} className={labelClassName}>\n {option.label}\n </span>\n )}\n </span>\n )\n return (\n // The tooltip lives INSIDE the item: wrapping the ToggleGroupItem would make Radix\n // Tooltip's data-state collide with the toggle's on/off state.\n <ToggleGroupItem\n value={option.value}\n aria-label={option.label}\n size={size}\n className=\"rounded-[5px] border-0 bg-transparent text-muted-foreground pointer-coarse:min-h-11 data-[state=off]:hover:bg-background/60 data-[state=off]:hover:text-foreground data-[state=on]:bg-accent data-[state=on]:text-accent-foreground data-[state=on]:hover:bg-accent data-[state=on]:hover:text-accent-foreground\"\n data-testid={option.testId ?? `${testIdPrefix}-${option.value}-button`}\n >\n {hideTooltip ? (\n content\n ) : (\n <Tooltip>\n <TooltipTrigger asChild>{content}</TooltipTrigger>\n {isTipNeeded && <TooltipContent>{option.label}</TooltipContent>}\n </Tooltip>\n )}\n </ToggleGroupItem>\n )\n}\n\n/** Segmented view switch: selected = accent tint, tone-only hover, 44px targets on touch. */\nexport function ViewToggle({\n options,\n value,\n onChange,\n testIdPrefix = 'view',\n showLabels = false,\n hideTooltips = false,\n size = 'default',\n containerCollapse = false,\n className,\n}: ViewToggleProps) {\n const labelClassName = containerCollapse\n ? 'hidden @lg:inline text-sm'\n : 'hidden md:inline text-sm'\n return (\n <ToggleGroup\n variant=\"default\"\n type=\"single\"\n value={value}\n onValueChange={(next) => next && onChange(next)}\n className={cn('gap-0.5 rounded-md bg-muted p-0.5', className)}\n >\n {options.map((option) => (\n <ViewToggleItem\n key={option.value}\n option={option}\n size={size}\n testIdPrefix={testIdPrefix}\n showLabel={showLabels}\n labelClassName={labelClassName}\n hideTooltip={hideTooltips}\n />\n ))}\n </ToggleGroup>\n )\n}\n\nexport type DocumentViewMode = 'grid' | 'explorer' | 'navigator' | 'search'\n\nfunction documentViewOptions(l: DocumentViewToggleLabels): ViewToggleOption[] {\n return [\n // \"Gallery\" (page-preview grid) reads more conventionally than \"Tiles\".\n { value: 'explorer', icon: <FileImage className=\"size-3.5\" />, label: l.gallery },\n { value: 'grid', icon: <Table2 className=\"size-3.5\" />, label: l.table },\n { value: 'navigator', icon: <BookOpen className=\"size-3.5\" />, label: l.review },\n { value: 'search', icon: <Search className=\"size-3.5\" />, label: l.smartSearch },\n ]\n}\n\nexport interface DocumentViewToggleProps {\n viewMode: DocumentViewMode\n onChange: (mode: DocumentViewMode) => void\n /** Collapse the four modes into one select trigger (narrow viewports). */\n compact?: boolean\n labels?: Partial<DocumentViewToggleLabels>\n /** Overrides the segmented items' prefix (default `documents-layout`: `<prefix>-<mode>-button`). */\n testIdPrefix?: string\n /** Per-mode item ids, for hosts that keep their own (e.g. `documents-view-gallery`). */\n testIds?: Partial<Record<DocumentViewMode, string>>\n /** Overrides the compact select test ids (defaults keep the current ids). */\n compactTestIds?: Partial<{ select: string; option: (mode: DocumentViewMode) => string }>\n}\n\n/** The Documents page's Gallery / Table / Review / Smart Search switch. */\nexport function DocumentViewToggle({\n viewMode,\n onChange,\n compact,\n labels,\n testIdPrefix,\n testIds,\n compactTestIds,\n}: DocumentViewToggleProps) {\n const options = documentViewOptions({ ...DEFAULT_DOCUMENT_VIEW_TOGGLE_LABELS, ...labels }).map(\n (o) => ({ ...o, testId: testIds?.[o.value as DocumentViewMode] })\n )\n if (compact) {\n const current = options.find((o) => o.value === viewMode) ?? options[0]\n return (\n <Select value={viewMode} onValueChange={(v) => onChange(v as DocumentViewMode)}>\n <SelectTrigger\n className=\"h-7 w-10 justify-center gap-0 border-input p-0 pointer-coarse:h-11! pointer-coarse:w-11! shrink-0 [&>svg]:hidden\"\n aria-label={current.label}\n data-testid={testIdOr(compactTestIds?.select, {\n testId: 'documents-layout-compact-select',\n })}\n >\n <SelectValue>{current.icon}</SelectValue>\n </SelectTrigger>\n <SelectContent align=\"center\">\n {options.map((option) => (\n <SelectItem\n key={option.value}\n value={option.value}\n data-testid={testIdOr(compactTestIds?.option?.(option.value as DocumentViewMode), {\n testId: `documents-layout-compact-${option.value}-option`,\n })}\n >\n <span className=\"flex items-center gap-2\">\n {option.icon}\n {option.label}\n </span>\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )\n }\n return (\n <ViewToggle\n options={options}\n value={viewMode}\n onChange={(v) => onChange(v as DocumentViewMode)}\n testIdPrefix={testIdPrefix ?? 'documents-layout'}\n showLabels\n containerCollapse\n size=\"sm\"\n />\n )\n}\n"]}
@@ -1,83 +0,0 @@
1
- "use client";
2
- 'use strict';
3
-
4
- var ui = require('@arbidocs/react/ui');
5
- var jsxRuntime = require('react/jsx-runtime');
6
-
7
- // src/components/ToneBadge.tsx
8
-
9
- // src/components/tones.ts
10
- var TONE_SURFACE = {
11
- neutral: "bg-gray-bg text-gray-text",
12
- info: "bg-blue-bg text-blue-text",
13
- success: "bg-green-bg text-green-text",
14
- warning: "bg-yellow-bg text-yellow-text",
15
- danger: "bg-red-bg text-red-text",
16
- accent: "bg-purple-bg text-purple-text",
17
- ai: "bg-ai-soft text-ai-ink"
18
- };
19
- var TONE_BORDER = {
20
- neutral: "border-gray-border",
21
- info: "border-blue-border",
22
- success: "border-green-border",
23
- warning: "border-yellow-border",
24
- danger: "border-red-border",
25
- accent: "border-purple-border",
26
- ai: "border-transparent"
27
- };
28
- var TONE_DOT = {
29
- neutral: "bg-gray-text",
30
- info: "bg-blue-solid",
31
- success: "bg-green-solid",
32
- warning: "bg-yellow-solid",
33
- danger: "bg-red-solid",
34
- accent: "bg-purple-solid",
35
- ai: "bg-ai-ink"
36
- };
37
- function ToneBadge({
38
- tone = "neutral",
39
- icon,
40
- children,
41
- className,
42
- ...rest
43
- }) {
44
- return /* @__PURE__ */ jsxRuntime.jsxs(
45
- "span",
46
- {
47
- ...rest,
48
- "data-slot": "tone-badge",
49
- "data-tone": tone,
50
- className: ui.cn(
51
- "inline-flex items-center gap-1 rounded-full border px-2 py-0.5 text-xs font-medium",
52
- TONE_SURFACE[tone],
53
- TONE_BORDER[tone],
54
- className
55
- ),
56
- children: [
57
- icon,
58
- children
59
- ]
60
- }
61
- );
62
- }
63
- function Dot({ tone = "neutral", label, className, ...rest }) {
64
- return /* @__PURE__ */ jsxRuntime.jsx(
65
- "span",
66
- {
67
- ...rest,
68
- "data-slot": "dot",
69
- "data-tone": tone,
70
- role: label ? "img" : void 0,
71
- "aria-label": label,
72
- "aria-hidden": label ? void 0 : true,
73
- className: ui.cn("inline-block size-2 shrink-0 rounded-full", TONE_DOT[tone], className)
74
- }
75
- );
76
- }
77
-
78
- exports.Dot = Dot;
79
- exports.TONE_BORDER = TONE_BORDER;
80
- exports.TONE_SURFACE = TONE_SURFACE;
81
- exports.ToneBadge = ToneBadge;
82
- //# sourceMappingURL=chunk-VFUWWH52.cjs.map
83
- //# sourceMappingURL=chunk-VFUWWH52.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/tones.ts","../src/components/ToneBadge.tsx"],"names":["jsxs","cn","jsx"],"mappings":";;;;;;;;AAWO,IAAM,YAAA,GAAqC;AAAA,EAChD,OAAA,EAAS,2BAAA;AAAA,EACT,IAAA,EAAM,2BAAA;AAAA,EACN,OAAA,EAAS,6BAAA;AAAA,EACT,OAAA,EAAS,+BAAA;AAAA,EACT,MAAA,EAAQ,yBAAA;AAAA,EACR,MAAA,EAAQ,+BAAA;AAAA,EACR,EAAA,EAAI;AACN;AAGO,IAAM,WAAA,GAAoC;AAAA,EAC/C,OAAA,EAAS,oBAAA;AAAA,EACT,IAAA,EAAM,oBAAA;AAAA,EACN,OAAA,EAAS,qBAAA;AAAA,EACT,OAAA,EAAS,sBAAA;AAAA,EACT,MAAA,EAAQ,mBAAA;AAAA,EACR,MAAA,EAAQ,sBAAA;AAAA,EACR,EAAA,EAAI;AACN;AAGO,IAAM,QAAA,GAAiC;AAAA,EAC5C,OAAA,EAAS,cAAA;AAAA,EACT,IAAA,EAAM,eAAA;AAAA,EACN,OAAA,EAAS,gBAAA;AAAA,EACT,OAAA,EAAS,iBAAA;AAAA,EACT,MAAA,EAAQ,cAAA;AAAA,EACR,MAAA,EAAQ,iBAAA;AAAA,EACR,EAAA,EAAI;AACN,CAAA;AC3BO,SAAS,SAAA,CAAU;AAAA,EACxB,IAAA,GAAO,SAAA;AAAA,EACP,IAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAmB;AACjB,EAAA,uBACEA,eAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,WAAA,EAAU,YAAA;AAAA,MACV,WAAA,EAAW,IAAA;AAAA,MACX,SAAA,EAAWC,KAAA;AAAA,QACT,oFAAA;AAAA,QACA,aAAa,IAAI,CAAA;AAAA,QACjB,YAAY,IAAI,CAAA;AAAA,QAChB;AAAA,OACF;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,IAAA;AAAA,QACA;AAAA;AAAA;AAAA,GACH;AAEJ;AASO,SAAS,GAAA,CAAI,EAAE,IAAA,GAAO,SAAA,EAAW,OAAO,SAAA,EAAW,GAAG,MAAK,EAAa;AAC7E,EAAA,uBACEC,cAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,WAAA,EAAU,KAAA;AAAA,MACV,WAAA,EAAW,IAAA;AAAA,MACX,IAAA,EAAM,QAAQ,KAAA,GAAQ,MAAA;AAAA,MACtB,YAAA,EAAY,KAAA;AAAA,MACZ,aAAA,EAAa,QAAQ,MAAA,GAAY,IAAA;AAAA,MACjC,WAAWD,KAAA,CAAG,2CAAA,EAA6C,QAAA,CAAS,IAAI,GAAG,SAAS;AAAA;AAAA,GACtF;AAEJ","file":"chunk-VFUWWH52.cjs","sourcesContent":["/**\n * The ONE status/tone vocabulary of the blocks. `StatusPill`, `ToneBadge`, `Dot` and the plan,\n * connection and tag chips all read these maps, so a tone looks the same wherever it appears and\n * a new tone is added in one place. Every pair is a token pair checked by\n * `tokens.contrast.test.ts` (`--{hue}-text` on `--{hue}-bg`).\n */\n\n/** Semantic tones, mapped to the token palette (`--{hue}-bg|text|border`, `--ai-*`). */\nexport type Tone = 'neutral' | 'info' | 'success' | 'warning' | 'danger' | 'accent' | 'ai'\n\n/** Background + text of a tinted chip. */\nexport const TONE_SURFACE: Record<Tone, string> = {\n neutral: 'bg-gray-bg text-gray-text',\n info: 'bg-blue-bg text-blue-text',\n success: 'bg-green-bg text-green-text',\n warning: 'bg-yellow-bg text-yellow-text',\n danger: 'bg-red-bg text-red-text',\n accent: 'bg-purple-bg text-purple-text',\n ai: 'bg-ai-soft text-ai-ink',\n}\n\n/** Border of a tinted chip (the AI tint has none). */\nexport const TONE_BORDER: Record<Tone, string> = {\n neutral: 'border-gray-border',\n info: 'border-blue-border',\n success: 'border-green-border',\n warning: 'border-yellow-border',\n danger: 'border-red-border',\n accent: 'border-purple-border',\n ai: 'border-transparent',\n}\n\n/** Solid fill of a status dot. */\nexport const TONE_DOT: Record<Tone, string> = {\n neutral: 'bg-gray-text',\n info: 'bg-blue-solid',\n success: 'bg-green-solid',\n warning: 'bg-yellow-solid',\n danger: 'bg-red-solid',\n accent: 'bg-purple-solid',\n ai: 'bg-ai-ink',\n}\n","import type { HTMLAttributes, ReactNode } from 'react'\nimport { cn } from '@arbidocs/react/ui'\nimport { TONE_BORDER, TONE_DOT, TONE_SURFACE, type Tone } from './tones'\n\nexport type { Tone }\n\nexport interface ToneBadgeProps extends HTMLAttributes<HTMLSpanElement> {\n tone?: Tone\n /** Leading glyph or dot. */\n icon?: ReactNode\n children: ReactNode\n}\n\n/** A small tinted label. The host decides the tone and the words (status, level, priority...). */\nexport function ToneBadge({\n tone = 'neutral',\n icon,\n children,\n className,\n ...rest\n}: ToneBadgeProps) {\n return (\n <span\n {...rest}\n data-slot=\"tone-badge\"\n data-tone={tone}\n className={cn(\n 'inline-flex items-center gap-1 rounded-full border px-2 py-0.5 text-xs font-medium',\n TONE_SURFACE[tone],\n TONE_BORDER[tone],\n className\n )}\n >\n {icon}\n {children}\n </span>\n )\n}\n\nexport interface DotProps extends HTMLAttributes<HTMLSpanElement> {\n tone?: Tone\n /** Accessible name; without it the dot is decorative (`aria-hidden`). */\n label?: string\n}\n\n/** A solid status dot in a tone. */\nexport function Dot({ tone = 'neutral', label, className, ...rest }: DotProps) {\n return (\n <span\n {...rest}\n data-slot=\"dot\"\n data-tone={tone}\n role={label ? 'img' : undefined}\n aria-label={label}\n aria-hidden={label ? undefined : true}\n className={cn('inline-block size-2 shrink-0 rounded-full', TONE_DOT[tone], className)}\n />\n )\n}\n"]}