{"version":3,"file":"web-CegG9ybw.mjs","names":["cn","useSingleLine","useControlSize","textStepFor","TypeRole","TextTreatment","RolePart","ROLE_PICK_SCOPE_ON_PARENT","rolePickClass","rolePickScope","TextVariant","TextTone","TruncateSide","VARIANT_CLASS","Record","display","title","heading","subheading","body","label","group","control","caption","tag","count","eyebrow","code","COMPACT_VARIANT_CLASS","TONE_CLASS","default","strong","subtle","muted","faint","primary","destructive","singleLineLeafClass","TextBaseProps","React","HTMLAttributes","HTMLElement","tone","as","ElementType","side","TextProps","variant","pick","step","Text","t0","$","_c","children","className","rest","style","t1","t2","t3","t4","undefined","As","singleLine","t5","t6","regionCompact","compact","resolvedTitle","onLeaf","t7","variantClass","fallback","typography","t8","leafStyle","unicodeBidi","leaf","t9","textVariantClass","useTextVariantClass","_c","cn","MENU_LABEL_PAINT","useMenuSurface","Text","SectionLabelProps","React","HTMLAttributes","HTMLElement","as","ElementType","SectionLabel","t0","$","_c","children","className","rest","t1","undefined","inMenu","t2","t3","_c","PluginDefinition","Text","textVariantClass","useTextVariantClass","TextProps","TextVariant","TextTone","TruncateSide","rolePickClass","rolePickScope","SectionLabel","SectionLabelProps","description","contributions","ROLE_PICK_SCOPE_ON_PARENT","CSS_IF_SUPPORTS","ROLE_PICK_VAR","ROLE_EMPHASIS_VAR","ROLE_FAMILY_VAR","ROLE_STEP_VAR","FALLBACK_CLASS","FALLBACK_COMPACT_CLASS","compact","fallback","ROLE_PICK_COMPACT_CLASS","ROLE_PICK_CLASS","part","VARIANT_CLASS","COMPACT_VARIANT_CLASS","TONE_CLASS","$","c","children","className","pick","rest","style","t1","t2","t3","t4","title","variant","t0","step","tone","As","side","singleLine","useSingleLine","t5","useControlSize","t6","textStepFor","resolvedTitle","onLeaf","t7","variantClass","typography","cn","t8","leafStyle","leaf","t9","as","useMenuSurface","MENU_LABEL_PAINT","web_default"],"sources":["../../../../../__A__/dev/singularity/.claude/worktrees/att-1794515063-e6dm4h/plugins/primitives/plugins/css/plugins/text/web/internal/role-pick.ts","../../../../../__A__/dev/singularity/.claude/worktrees/att-1794515063-e6dm4h/plugins/primitives/plugins/css/plugins/text/web/internal/text.tsx","../../../../../__A__/dev/singularity/.claude/worktrees/att-1794515063-e6dm4h/plugins/primitives/plugins/css/plugins/text/web/internal/section-label.tsx","../../../../../__A__/dev/singularity/.claude/worktrees/att-1794515063-e6dm4h/plugins/primitives/plugins/css/plugins/text/web/index.ts"],"sourcesContent":["import type { CSSProperties } from \"react\";\nimport {\n CSS_IF_SUPPORTS,\n ROLE_PICK_CLASS,\n ROLE_PICK_COMPACT_CLASS,\n type PickRung,\n type RolePart,\n} from \"../../core\";\n\n/**\n * The role picker: a part's type comes from three TOKENS whose values name a\n * rung of the closed ladder, a shared weight and a family (`PICK_RUNGS` /\n * `PICK_EMPHASES` / `PICK_FAMILIES`, text core) — never a size.\n *\n * The part's scope (`rolePickScope`, on the text element itself or an\n * ancestor) copies its tokens into four GENERIC vars; the text element wears\n * its fallback rung plus ONE class — `role-pick`, or `role-pick-compact` in a\n * compact (`xs`) region — whose declarations dispatch on those vars with CSS\n * `if(style(…))`, so the rung's own metrics apply and the type-scale group\n * stays the one owner of every metric. That class is generated from the role\n * utilities (`rolePickCss`, text core) into ui-kit's `app.css`, in a cascade\n * layer above the utilities; see there for how it composes with the element's\n * other classes.\n *\n * It replaced ~25 per-rung `@container style()` classes per element: a\n * container query is evaluated per rule per element on every restyle, which\n * made a picked text ~1.5× as expensive to style as any other element.\n *\n * The fallback rung is folded into the scope's `--role-pick` (an unset token,\n * `initial`, takes it), so it also draws through the same declarations.\n *\n * An engine without `if()` (Safari, Firefox in 2026) drops those declarations\n * and reads the same picks from the stylesheet's `@supports not` block of\n * container style queries — today's per-element cost, only there. A style\n * query reads the PARENT's vars, so there the scope must sit on an ancestor:\n * `` reads `ROLE_PICK_SCOPE_ON_PARENT` to draw a box-less wrapper.\n */\n\n/**\n * Whether this engine lacks CSS `if()`, so a pick's scope must sit on the\n * text element's parent for the style-query fallback to read it. Read once:\n * an engine does not change under a page.\n */\nexport const ROLE_PICK_SCOPE_ON_PARENT =\n typeof CSS === \"undefined\" || !CSS.supports(CSS_IF_SUPPORTS);\n\n/** The generic vars a part's scope sets — read by the `role-pick` classes. */\nconst ROLE_PICK_VAR = \"--role-pick\";\nconst ROLE_EMPHASIS_VAR = \"--role-emphasis\";\nconst ROLE_FAMILY_VAR = \"--role-family\";\nconst ROLE_STEP_VAR = \"--role-step\";\n\n/** The fallback rung itself: what an unset scope (no `--role-pick`) draws. */\nconst FALLBACK_CLASS: Record = {\n display: \"text-display\",\n title: \"text-title\",\n heading: \"text-heading\",\n subheading: \"text-subheading\",\n body: \"text-body\",\n label: \"text-label\",\n group: \"text-group\",\n caption: \"text-caption\",\n control: \"text-control\",\n tag: \"text-tag font-tag\",\n code: \"text-code\",\n \"2xs\": \"text-2xs\",\n \"3xs\": \"text-3xs\",\n};\n\nconst FALLBACK_COMPACT_CLASS: Record = {\n display: \"text-display-compact\",\n title: \"text-title-compact\",\n heading: \"text-heading-compact\",\n subheading: \"text-subheading-compact\",\n body: \"text-body-compact\",\n label: \"text-label-compact\",\n group: \"text-group-compact\",\n control: \"text-control-compact\",\n caption: \"text-caption-compact\",\n tag: \"text-tag-compact font-tag\",\n code: \"text-code-compact\",\n \"2xs\": \"text-2xs\",\n \"3xs\": \"text-3xs\",\n};\n\n/**\n * The classes for the text element of a picked part: the fallback rung (base\n * or compact), then the picker class. For an element `` cannot be\n * (a header row's cells): put `rolePickScope(part)` on it or an ancestor, and\n * this on the element.\n */\nexport function rolePickClass(fallback: PickRung, compact = false): string {\n return compact\n ? `${FALLBACK_COMPACT_CLASS[fallback]} ${ROLE_PICK_COMPACT_CLASS}`\n : `${FALLBACK_CLASS[fallback]} ${ROLE_PICK_CLASS}`;\n}\n\n/**\n * The style that copies a part's tokens into the generic vars the picker\n * classes read — spread on the text element or an ancestor of it. Every var\n * is always valid: an unset token falls back to the part's fallback rung (and\n * `role` emphasis / family), so a pick never inherits an outer one.\n */\nexport function rolePickScope(part: RolePart): CSSProperties {\n return {\n [ROLE_PICK_VAR]: `var(${part.role}, ${part.fallback})`,\n [ROLE_EMPHASIS_VAR]: `var(${part.emphasis}, role)`,\n [ROLE_FAMILY_VAR]: `var(${part.family}, role)`,\n // Always set (`ambient` when the part has no step token), so the compact\n // class's two exclusive conditions cover every case.\n [ROLE_STEP_VAR]:\n part.step === undefined ? \"ambient\" : `var(${part.step}, ambient)`,\n } as CSSProperties;\n}\n","import {\n cn,\n useSingleLine,\n useControlSize,\n textStepFor,\n} from \"@plugins/primitives/plugins/css/plugins/ui-kit/web\";\n\nimport type { TypeRole, TextTreatment, RolePart } from \"../../core\";\nimport {\n ROLE_PICK_SCOPE_ON_PARENT,\n rolePickClass,\n rolePickScope,\n} from \"./role-pick\";\n\n/**\n * A `` variant: one of the closed typographic ROLES (`TYPE_ROLES` in this\n * plugin's core — each a frozen size + line-height + weight (+ tracking) bundle\n * defined as a `text-` `@utility` in app.css, backed by the type-scale\n * token group's runtime vars), or a TREATMENT built on a role (`eyebrow`,\n * `count`). Pick a variant, never a raw size — the `no-adhoc-typography` lint\n * rule enforces this repo-wide.\n */\nexport type TextVariant = TypeRole | TextTreatment;\n\n/** Foreground tone applied on top of the variant. `default` inherits the surface. */\nexport type TextTone =\n | \"default\"\n | \"strong\"\n | \"subtle\"\n | \"muted\"\n | \"faint\"\n | \"primary\"\n | \"destructive\";\n\n/** Which edge keeps its text when single-line. `end` ellipsizes the tail; `start` ellipsizes the lead. */\nexport type TruncateSide = \"end\" | \"start\";\n\nconst VARIANT_CLASS: Record = {\n // The landing/marketing headline rung — the one role above `title`. Bold and\n // tightly tracked; a page has at most one.\n display: \"text-display\",\n title: \"text-title\",\n heading: \"text-heading\",\n subheading: \"text-subheading\",\n body: \"text-body\",\n label: \"text-label\",\n // The heading of a group of rows in a list or sidebar (a quiet group header).\n group: \"text-group\",\n // The words ON a control (a tab's title, beside the Buttons it sits among):\n // the same themable role Button's label wears, so a region sets both at once.\n control: \"text-control\",\n caption: \"text-caption\",\n // The words on a chip (a header chip, a tool badge) — the role `Badge` wears.\n // Its weight is a token, carried by `font-tag`.\n tag: \"text-tag font-tag\",\n // A count beside a glyph — a toolbar button's \"3\", a diff's \"+387\". A\n // treatment, not a role: the control role's compact rung (caption metrics at\n // the control weight) with tabular figures, so a column of counts aligns.\n count: \"text-control-compact tabular-nums\",\n // Eyebrow/overline role: caption geometry + the small-caps treatment, single\n // line. Tone stays orthogonal — pair with `tone=\"muted\"` for the classic\n // section label (see the SectionLabel helper).\n eyebrow: \"text-caption uppercase tracking-wide whitespace-nowrap\",\n // Monospaced running text — log lines, code blocks, math source. The role owns\n // the mono FAMILY as well as the metrics, so \"code\" is one decision.\n code: \"text-code\",\n};\n\n/**\n * The compact rung for each variant — the weight/tracking-preserving `-compact`\n * utility, swapped in when the ambient `ControlSize` is `xs` (textStepFor === 1).\n * Mirrors `VARIANT_CLASS` exactly; eyebrow composes `text-caption-compact` with\n * its small-caps treatment. The threshold is owned by the single density→text\n * policy (`textStepFor`), shared with `Button` and `Badge`.\n */\nconst COMPACT_VARIANT_CLASS: Record = {\n display: \"text-display-compact\",\n title: \"text-title-compact\",\n heading: \"text-heading-compact\",\n subheading: \"text-subheading-compact\",\n body: \"text-body-compact\",\n label: \"text-label-compact\",\n group: \"text-group-compact\",\n control: \"text-control-compact\",\n caption: \"text-caption-compact\",\n // The tag role's OWN compact rung (a count chip in a dense row).\n tag: \"text-tag-compact font-tag\",\n // Already the compact control rung — it stays there in a compact region.\n count: \"text-control-compact tabular-nums\",\n eyebrow: \"text-caption-compact uppercase tracking-wide whitespace-nowrap\",\n code: \"text-code-compact\",\n};\n\nconst TONE_CLASS: Record = {\n default: \"\",\n // The palette's role steps around body text: `strong` above it (default =\n // body text), `subtle` between it and muted (default = muted).\n strong: \"text-strong-foreground\",\n subtle: \"text-subtle-foreground\",\n muted: \"text-muted-foreground\",\n faint: \"text-faint-foreground\",\n primary: \"text-primary-text\",\n destructive: \"text-destructive\",\n};\n\n/**\n * The single home for the single-line truncation recipe — the body `TruncatingText`\n * used to own, now folded into `Text`.\n *\n * `truncate` (`overflow:hidden` + `text-overflow:ellipsis`) only takes effect on a\n * box that establishes a block formatting context — a block/inline-block element or\n * a flex/grid item (which CSS *blockifies*). A plain inline `` silently no-ops\n * and the text overflows OUTSIDE a flex/grid row — e.g. as a node child of a plain\n * block `
` (such as `Frame`'s node-slot wrapper). `max-w-full` caps the box at\n * its container so it ellipsizes against the parent instead of overflowing.\n *\n * `block`, and not `inline-block`, because of where the LINE the leaf sits on ends.\n * An inline-level box whose overflow is not `visible` hands its line the bottom of\n * its own margin box as its baseline. So a truncating leaf dropped in a plain block\n * parent — which `` is — sat with its whole box above the parent's baseline,\n * and the parent still had to leave room below that baseline for its own strut's\n * descender. The cell came out ~6px taller than the words in it, at 16px/24px, and\n * every row that centred an icon against that cell put the icon ~3px below the text\n * it labelled — the canonical `Line > Icon + Fill(Text)` recipe, and a `` sits\n * directly in a `` at ~57 places, every one of them wrong the same way.\n * Going block-level removes the inline formatting context altogether, so\n * there is no strut and the parent's height is exactly the leaf's — exact at every\n * font-size pairing, which `vertical-align: top` is not (it only helps while the\n * leaf's line-height is at least the parent's).\n *\n * It is the `Badge` baseline incident one layer down (see `badge.tsx`, where an\n * inline-flex chip handed a sentence its ICON's bottom edge and carried the label\n * ~3.5px off the words beside it). Same class of bug: a box quietly offering the\n * line a baseline that is not its text's.\n *\n * `w-fit` then restores what `inline-block` was also giving for free — shrink-to-fit\n * width, so a `hover:underline` or a background still ends where the words end\n * rather than spanning the cell. It changes nothing in a flex or grid parent (there\n * the item is blockified and already content-sized, and `max-w-full` has always\n * clamped the flex base size), and in a plain block parent it reproduces the old\n * width to the pixel.\n */\nfunction singleLineLeafClass(): string {\n return \"block w-fit max-w-full min-w-0 truncate\";\n}\n\ninterface TextBaseProps extends React.HTMLAttributes {\n /** Foreground tone layered on the variant. Defaults to `default` (inherit). */\n tone?: TextTone;\n /** Host element/component. Defaults to a `span`. */\n as?: React.ElementType;\n /**\n * Which edge keeps its text when the ambient context is single-line. `end`\n * (default) ellipsizes the tail (`foo/bar/lo…`); `start` ellipsizes the leading\n * chars and keeps the tail visible (`…/bar/baz.ts`) — the right default for file\n * paths and long identifiers. Inert outside a single-line container.\n */\n side?: TruncateSide;\n}\n\n/**\n * Where the words' type comes from — exactly one of:\n * - `variant`: a role (or treatment) the CALL SITE picks. Omit both to INHERIT\n * the surrounding typography (the text leaf that sits in a row/header styled\n * by its parent — the role `TruncatingText` used to fill).\n * - `pick`: a role the THEME picks — the part's three tokens (rung, emphasis,\n * family; `RolePart`, text core), applied by the role-pick class: the text\n * element copies the tokens into the generic vars (`rolePickScope`; on a\n * box-less wrapper instead in an engine without CSS `if()`) and carries the\n * fallback rung plus `role-pick` (`role-pick.ts`). Compacts at `xs` like\n * `variant`.\n */\nexport type TextProps = TextBaseProps &\n (\n | { variant?: TextVariant; pick?: never; step?: never }\n | {\n pick: RolePart;\n variant?: never;\n /**\n * Whether THIS SITE steps the pick down in a compact (`xs`) region:\n * `ambient` (default, like ``), or `base` — the site\n * never compacted (its words inherited a parent's non-compact rung\n * before the pick existed), so the pick keeps the rung it names. A\n * site that compacts still lets the part's own `step` token\n * (`RolePart.step`) opt out.\n */\n step?: \"ambient\" | \"base\";\n }\n );\n\n/**\n * The semantic text leaf. `variant` picks a frozen typographic role (or inherits\n * when omitted); whether it truncates is NOT its own decision — it reads the\n * ambient `SingleLine` context (`useSingleLine`). Inside a LINE container\n * (`Frame`/`Row`/`Bar`/collapsible header) it ellipsizes on one line; inside a\n * FLOW container (`Stack`/`Column`/`Cluster`/`Inline`) it wraps. There is NO\n * truncation on/off prop — \"non-truncating text in a line container\" is a\n * contradiction, so misuse is structurally impossible: choose the right container.\n *\n * `side=\"start\"` flips the ellipsis to the leading edge via the RTL technique: the\n * host is laid out `dir=\"rtl\"` (so `text-overflow` clips at the visual start, with\n * `text-left` keeping the tail flush-left) while the children are isolated in a\n * `dir=\"ltr\"` run so the path still reads left-to-right.\n */\nexport function Text({\n variant,\n pick,\n step = \"ambient\",\n tone = \"default\",\n as: As = \"span\",\n side = \"end\",\n className,\n children,\n title,\n style,\n ...rest\n}: TextProps) {\n const singleLine = useSingleLine();\n // Type size tracks the ambient control density via the single density→text\n // policy: at `xs` each variant swaps for its weight-preserving `-compact` rung.\n // An omitted variant inherits the surrounding typography — nothing to compact.\n const regionCompact = textStepFor(useControlSize()) === 1;\n const compact = pick !== undefined && step === \"base\" ? false : regionCompact;\n // Auto-derive the hover tooltip from string children when truncating, so the\n // clipped content stays discoverable (the role TruncatingText used to fill). An\n // explicit `title` always wins; outside a single-line context we add none (a\n // wrapping paragraph shouldn't carry a giant title).\n const resolvedTitle =\n title ??\n (singleLine && typeof children === \"string\" ? children : undefined);\n\n // Composition order variant → tone → single-line leaf → caller className:\n // caller wins last so layout overrides (margins, width caps) compose on top.\n const variantClass = pick\n ? rolePickClass(pick.fallback, compact)\n : variant\n ? (compact ? COMPACT_VARIANT_CLASS : VARIANT_CLASS)[variant]\n : undefined;\n const typography = cn(variantClass, TONE_CLASS[tone]);\n // A pick's scope sits on the leaf itself: `if()` reads the element's own\n // vars, so no wrapper is needed (the caller's style wins on a clash). An\n // engine without `if()` reads the style-query fallback, which answers from\n // the parent: there the scope goes on a box-less wrapper instead.\n const onLeaf = pick !== undefined && !ROLE_PICK_SCOPE_ON_PARENT;\n const leafStyle =\n pick !== undefined && onLeaf ? { ...rolePickScope(pick), ...style } : style;\n\n const leaf =\n singleLine && side === \"start\" ? (\n \n \n {children}\n \n \n ) : (\n \n {children}\n \n );\n if (pick === undefined || onLeaf) return leaf;\n return (\n \n {leaf}\n \n );\n}\n\n/**\n * The typography role as a CLASS STRING, for the elements `` cannot be.\n *\n * The same own-it-⇒-component / don't-⇒-the-helper split the layout primitives\n * draw: a `
` shiki writes into, a div with `dangerouslySetInnerHTML`, a\n * Lexical input — those must THEMSELVES carry the metrics, so there is nothing\n * to wrap. Reach for `` whenever you own the element.\n *\n * Returns the base rung. Unlike `` this reads no ambient `ControlSize`\n * (it is a plain function, not a hook), so a helper-styled box does not compact\n * with its surroundings — which is what these code surfaces already did when\n * they spelled their metrics by hand.\n */\nexport function textVariantClass(variant: TextVariant): string {\n  return VARIANT_CLASS[variant];\n}\n\n/**\n * The classes `` wears HERE — the ambient-density twin of\n * {@link textVariantClass}: at the `xs` region the compact rung, as ``\n * itself picks it. For a box that must share a text's metrics without being\n * that text: `` sizes its one-line box to the line height\n * of the words beside it, which only matches if it compacts exactly when they do.\n * No variant: inherit the surrounding typography (none), as `` does.\n */\nexport function useTextVariantClass(\n  variant: TextVariant | undefined,\n): string | undefined {\n  const compact = textStepFor(useControlSize()) === 1;\n  if (!variant) return undefined;\n  return (compact ? COMPACT_VARIANT_CLASS : VARIANT_CLASS)[variant];\n}\n","import {\n  cn,\n  MENU_LABEL_PAINT,\n  useMenuSurface,\n} from \"@plugins/primitives/plugins/css/plugins/ui-kit/web\";\nimport { Text } from \"./text\";\n\nexport interface SectionLabelProps extends React.HTMLAttributes {\n  as?: React.ElementType;\n}\n\n/**\n * The label that names a section — and it reads WHERE it is to decide how.\n *\n * - On a page: the eyebrow / form-section / content-header label — the small-caps\n *   muted label (``).\n * - Inside a menu surface (`useMenuSurface()` — a dropdown, select, popover or\n *   control panel): the shared menu section label (ui-kit `MENU_LABEL_PAINT`:\n *   faint caption, semibold, sentence case), the one a `DropdownMenuSection`,\n *   `ControlPanel.Section` or `ControlPanel.Subhead` draws. A heading placed\n *   inside a menu therefore cannot drift from the menu's own headings.\n */\nexport function SectionLabel({\n  as = \"div\",\n  className,\n  children,\n  ...rest\n}: SectionLabelProps) {\n  const inMenu = useMenuSurface();\n  if (inMenu) {\n    return (\n      \n        {children}\n      \n    );\n  }\n  return (\n    \n      {children}\n    \n  );\n}\n","import type { PluginDefinition } from \"@plugins/framework/plugins/web-sdk/core\";\n\nexport {\n  Text,\n  textVariantClass,\n  useTextVariantClass,\n  type TextProps,\n  type TextVariant,\n  type TextTone,\n  type TruncateSide,\n} from \"./internal/text\";\nexport { rolePickClass, rolePickScope } from \"./internal/role-pick\";\nexport { SectionLabel, type SectionLabelProps } from \"./internal/section-label\";\n\nexport default {\n  description:\n    \"Semantic typography primitive:  (or  — a role the theme picks per part through three tokens, applied by one CSS if() class) picks a frozen size/line-height/weight role from the typography token group (incl. the eyebrow/section-label role). The single sanctioned home for text hierarchy; raw text-size/leading-* is banned by no-adhoc-typography.\",\n  contributions: [],\n} satisfies PluginDefinition;\n"],"mappings":"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"}