{"version":3,"file":"typography-Boo8fBac.cjs","names":[],"sources":["../src/tokens/typography.ts"],"sourcesContent":["/**\n * Typography tokens.\n *\n * System-native typefaces are used across headings, body, and UI text, with\n * a type scale tuned for dense, data-heavy security dashboards.\n *\n * @see https://mui.com/material-ui/react-typography/\n */\n\nexport const fontFamily = {\n  /** Native UI sans-serif stack for the current operating system. */\n  primary: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif',\n  /** Alias of `primary` for theme and component usage. */\n  ui: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif',\n  /** Native monospace stack for the current operating system. */\n  mono:\n    'Menlo, Monaco, \"SF Mono\", \"Liberation Mono\", \"DejaVu Sans Mono\", \"Bitstream Vera Sans Mono\", Consolas, \"Lucida Console\", \"Courier New\", monospace',\n} as const;\n\nexport const fontWeight = {\n  /** Thin — 100 */\n  thin: 100,\n  /** Extra Light — 200 */\n  extraLight: 200,\n  /** Light — 300 */\n  light: 300,\n  /** Regular — 400 */\n  regular: 400,\n  /** Medium — 500 */\n  medium: 500,\n  /** Semi Bold — 600 */\n  semibold: 600,\n  /** Bold — 700 */\n  bold: 700,\n  /** Extra Bold — 800 */\n  extraBold: 800,\n  /** Black — 900 */\n  black: 900,\n} as const;\n\n/** Common upright and italic font styles. */\nexport const fontStyle = {\n  normal: 'normal',\n  italic: 'italic',\n} as const;\n\n/**\n * Common OpenType features. Browsers ignore features unsupported by the\n * selected system font.\n */\nexport const fontFeatureSettings = {\n  /** Ligatures + contextual alternates (recommended default for UI text). */\n  default: \"'liga' 1, 'calt' 1\",\n  /** Fixed-width figures for aligned numeric columns. */\n  tabularNums: \"'tnum' 1\",\n  /** Slashed zero to disambiguate 0 from o. */\n  slashedZero: \"'zero' 1\",\n  /** Tabular nums + slashed zero — common for security dashboards. */\n  dataDisplay: \"'tnum' 1, 'zero' 1, 'liga' 1, 'calt' 1\",\n} as const;\n\n/** Font sizes in pixels. */\nexport const fontSize = {\n  xs: 11,\n  sm: 12,\n  md: 14,\n  lg: 16,\n  xl: 20,\n  '2xl': 24,\n  '3xl': 32,\n  '4xl': 48,\n  '5xl': 64,\n} as const;\n\n/**\n * Size for a glyph sitting inside a compact label -- a chip's leading icon, its\n * delete X, a picker's chevron.\n *\n * Expressed as an `em` ratio rather than a pixel value so one rule covers every\n * size a chip comes in: it resolves to `lg` (16px) against the 12px medium\n * label, ~14.7px against the 11px small one, ~18.7px against the 14px large\n * label, and ~21.3px against the 16px extraLarge label, and it follows\n * `Chip purpose=\"entity\"` when that sizes itself to the surrounding prose.\n *\n * The ratio is derived rather than written out because the whole point is that\n * the glyph tracks the label. MUI's own chip leaves the medium icon unsized, so\n * it fell back to the 24px `SvgIcon` default -- twice the label it sat beside.\n */\nexport const compactGlyphScale = `${fontSize.lg / fontSize.sm}em`;\n\nexport const lineHeight = {\n  tight: 1.2,\n  normal: 1.4,\n  relaxed: 1.6,\n} as const;\n\nexport const letterSpacing = {\n  tight: '-0.01em',\n  normal: '0',\n  wide: '0.02em',\n} as const;\n\nexport const typographyTokens = {\n  fontFamily,\n  fontWeight,\n  fontStyle,\n  fontFeatureSettings,\n  fontSize,\n  lineHeight,\n  letterSpacing,\n} as const;\n\nexport type FontSizeToken = keyof typeof fontSize;\n\n/**\n * Which MUI Typography variant to reach for. The counterpart to\n * `spacingUsage` / `backgroundUsage`: it keeps the \"which variant do I use\"\n * answer next to the type tokens so the agent kit and Storybook stay in sync.\n *\n * Sizes and weights live in `src/theme/typography.ts`. This table is the role\n * mapping — never pick a variant for its pixel size alone.\n */\nexport const typographyVariantUsage = {\n  h1: { useFor: 'Rare. Marketing or empty-state heroes — not product chrome.' },\n  h2: { useFor: 'Major page sections that sit above a page title.' },\n  h3: { useFor: 'KPI figures and large stats (StatTile value).' },\n  h4: { useFor: 'Page titles in templates (TablePageLayout, DetailsPageLayout).' },\n  h5: { useFor: 'Investigation or subsection titles.' },\n  h6: { useFor: 'Drawer headings and empty-state titles.' },\n  subtitle1: { useFor: 'Card titles, form section titles, accordion summaries, dialog titles.' },\n  subtitle2: { useFor: 'Compact headings: filter panels, table row titles, widget headers.' },\n  body1: { useFor: 'Default reading text (14px): descriptions, dialog body, card copy, breadcrumbs.' },\n  body2: { useFor: 'Dense annotations only (12px): deltas, compact secondary lines. Not default copy.' },\n  caption: { useFor: 'Metadata, timestamps, helper counts, form labels, tooltips.' },\n  overline: { useFor: 'Column headers, uppercase tags, category labels.' },\n  button: { useFor: 'Reserved for Button. Do not use for prose.' },\n} as const;\n\nexport type TypographyVariantName = keyof typeof typographyVariantUsage;\n"],"mappings":"AASA,IAAa,EAAa,CAExB,QAAS,sFAET,GAAI,sFAEJ,KACE,mJACJ,EAEa,EAAa,CAExB,KAAM,IAEN,WAAY,IAEZ,MAAO,IAEP,QAAS,IAET,OAAQ,IAER,SAAU,IAEV,KAAM,IAEN,UAAW,IAEX,MAAO,GACT,EAGa,EAAY,CACvB,OAAQ,SACR,OAAQ,QACV,EAMa,EAAsB,CAEjC,QAAS,qBAET,YAAa,WAEb,YAAa,WAEb,YAAa,wCACf,EAGa,EAAW,CACtB,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,MAAO,GACP,MAAO,GACP,MAAO,GACP,MAAO,EACT,EAgBa,EAAoB,GAAG,EAAS,GAAK,EAAS,GAAG,IAEjD,EAAa,CACxB,MAAO,IACP,OAAQ,IACR,QAAS,GACX,EAEa,EAAgB,CAC3B,MAAO,UACP,OAAQ,IACR,KAAM,QACR,EAEa,EAAmB,CAC9B,aACA,aACA,YACA,sBACA,WACA,aACA,eACF,EAYa,EAAyB,CACpC,GAAI,CAAE,OAAQ,6DAA8D,EAC5E,GAAI,CAAE,OAAQ,kDAAmD,EACjE,GAAI,CAAE,OAAQ,+CAAgD,EAC9D,GAAI,CAAE,OAAQ,gEAAiE,EAC/E,GAAI,CAAE,OAAQ,qCAAsC,EACpD,GAAI,CAAE,OAAQ,yCAA0C,EACxD,UAAW,CAAE,OAAQ,uEAAwE,EAC7F,UAAW,CAAE,OAAQ,oEAAqE,EAC1F,MAAO,CAAE,OAAQ,iFAAkF,EACnG,MAAO,CAAE,OAAQ,mFAAoF,EACrG,QAAS,CAAE,OAAQ,6DAA8D,EACjF,SAAU,CAAE,OAAQ,kDAAmD,EACvE,OAAQ,CAAE,OAAQ,4CAA6C,CACjE"}