@cloudflare/kumo 2.2.0 → 2.2.2

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 (93) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/ai/component-registry.json +3 -6
  3. package/ai/component-registry.md +1 -1
  4. package/dist/.build-complete +1 -1
  5. package/dist/chunks/SankeyChart-dkq90770ad7hgzx3.js +635 -0
  6. package/dist/chunks/{SankeyChart-h1kzhs1tyt20luha.js.map → SankeyChart-dkq90770ad7hgzx3.js.map} +1 -1
  7. package/dist/chunks/{autocomplete-nw1ig02pawtj3il9.js → autocomplete-mhrvtq4y5n21vr0t.js} +3 -3
  8. package/dist/chunks/{autocomplete-nw1ig02pawtj3il9.js.map → autocomplete-mhrvtq4y5n21vr0t.js.map} +1 -1
  9. package/dist/chunks/banner-ip2lm8r87hich557.js +88 -0
  10. package/dist/chunks/banner-ip2lm8r87hich557.js.map +1 -0
  11. package/dist/chunks/{breadcrumbs-f7bi3g8tx6dfcgl6.js → breadcrumbs-ohstavaqvycoremm.js} +2 -2
  12. package/dist/chunks/{breadcrumbs-f7bi3g8tx6dfcgl6.js.map → breadcrumbs-ohstavaqvycoremm.js.map} +1 -1
  13. package/dist/chunks/{button-gflkhovvkmt0ftzz.js → button-oevxukl0zmwoq4tb.js} +2 -2
  14. package/dist/chunks/{button-gflkhovvkmt0ftzz.js.map → button-oevxukl0zmwoq4tb.js.map} +1 -1
  15. package/dist/chunks/{checkbox-imuc4c45j7sds6wk.js → checkbox-h6vkv17lnq854z2c.js} +2 -2
  16. package/dist/chunks/{checkbox-imuc4c45j7sds6wk.js.map → checkbox-h6vkv17lnq854z2c.js.map} +1 -1
  17. package/dist/chunks/{clipboard-text-dp5eb2c2qudgusnc.js → clipboard-text-kyy71jmx7umdh8k8.js} +3 -3
  18. package/dist/chunks/{clipboard-text-dp5eb2c2qudgusnc.js.map → clipboard-text-kyy71jmx7umdh8k8.js.map} +1 -1
  19. package/dist/chunks/{combobox-42i2nyvfgkqjb5a4.js → combobox-g3cudlfajecou4va.js} +3 -3
  20. package/dist/chunks/{combobox-42i2nyvfgkqjb5a4.js.map → combobox-g3cudlfajecou4va.js.map} +1 -1
  21. package/dist/chunks/{empty-jwan4d5hqjocakhm.js → empty-n3r7xutkb9sxjaso.js} +2 -2
  22. package/dist/chunks/{empty-jwan4d5hqjocakhm.js.map → empty-n3r7xutkb9sxjaso.js.map} +1 -1
  23. package/dist/chunks/{field-yhlyu6fy0qi1ewtl.js → field-l1oapopp6kjnephi.js} +2 -2
  24. package/dist/chunks/{field-yhlyu6fy0qi1ewtl.js.map → field-l1oapopp6kjnephi.js.map} +1 -1
  25. package/dist/chunks/{input-area-d85jzxlnvx7mc3x9.js → input-area-gudamx1ruz8rxiw2.js} +3 -3
  26. package/dist/chunks/{input-area-d85jzxlnvx7mc3x9.js.map → input-area-gudamx1ruz8rxiw2.js.map} +1 -1
  27. package/dist/chunks/{input-group-mu8yklweljytpt04.js → input-group-gy08vju7eoogil8k.js} +5 -5
  28. package/dist/chunks/{input-group-mu8yklweljytpt04.js.map → input-group-gy08vju7eoogil8k.js.map} +1 -1
  29. package/dist/chunks/{input-cyils8jxj8e0udr7.js → input-i3os21puacqw4r75.js} +2 -2
  30. package/dist/chunks/{input-cyils8jxj8e0udr7.js.map → input-i3os21puacqw4r75.js.map} +1 -1
  31. package/dist/chunks/{label-kaz4uxdt1yf3i5x5.js → label-i0bj94d43irz0k1x.js} +3 -3
  32. package/dist/chunks/{label-kaz4uxdt1yf3i5x5.js.map → label-i0bj94d43irz0k1x.js.map} +1 -1
  33. package/dist/chunks/{menubar-gk322oew1y1lr851.js → menubar-jalggrag4utvdpey.js} +2 -2
  34. package/dist/chunks/{menubar-gk322oew1y1lr851.js.map → menubar-jalggrag4utvdpey.js.map} +1 -1
  35. package/dist/chunks/{pagination-kswioh2znglyq7as.js → pagination-ceetno8sc1rd0wr2.js} +3 -3
  36. package/dist/chunks/{pagination-kswioh2znglyq7as.js.map → pagination-ceetno8sc1rd0wr2.js.map} +1 -1
  37. package/dist/chunks/{select-hz8wwd2msvp1u0jp.js → select-g1xvti1k1hj7xe5t.js} +5 -5
  38. package/dist/chunks/{select-hz8wwd2msvp1u0jp.js.map → select-g1xvti1k1hj7xe5t.js.map} +1 -1
  39. package/dist/chunks/{sensitive-input-mdtjukbb3wimz1iy.js → sensitive-input-hokm527ollnz9dqc.js} +3 -3
  40. package/dist/chunks/{sensitive-input-mdtjukbb3wimz1iy.js.map → sensitive-input-hokm527ollnz9dqc.js.map} +1 -1
  41. package/dist/chunks/{sidebar-dlh79t5uliezwniq.js → sidebar-oan40ylmqkyui21w.js} +2 -2
  42. package/dist/chunks/{sidebar-dlh79t5uliezwniq.js.map → sidebar-oan40ylmqkyui21w.js.map} +1 -1
  43. package/dist/chunks/{switch-luut1d75u179g7x6.js → switch-fv0ttj24uhocvuh8.js} +2 -2
  44. package/dist/chunks/{switch-luut1d75u179g7x6.js.map → switch-fv0ttj24uhocvuh8.js.map} +1 -1
  45. package/dist/chunks/{table-ef63hg1r1zia9u9j.js → table-nsfcgpo93gfetrhh.js} +2 -2
  46. package/dist/chunks/{table-ef63hg1r1zia9u9j.js.map → table-nsfcgpo93gfetrhh.js.map} +1 -1
  47. package/dist/chunks/{toast-e5id2hx8pv0x3vue.js → toast-ofqlfmddcyka091n.js} +2 -2
  48. package/dist/chunks/{toast-e5id2hx8pv0x3vue.js.map → toast-ofqlfmddcyka091n.js.map} +1 -1
  49. package/dist/chunks/{tooltip-caka3fmn1ogdc7q8.js → tooltip-icvb67awe1zolz61.js} +6 -6
  50. package/dist/chunks/tooltip-icvb67awe1zolz61.js.map +1 -0
  51. package/dist/code.js +114 -89
  52. package/dist/code.js.map +1 -1
  53. package/dist/components/autocomplete.js +1 -1
  54. package/dist/components/banner.js +1 -1
  55. package/dist/components/breadcrumbs.js +1 -1
  56. package/dist/components/button.js +1 -1
  57. package/dist/components/chart.js +1 -1
  58. package/dist/components/checkbox.js +1 -1
  59. package/dist/components/clipboard-text.js +1 -1
  60. package/dist/components/combobox.js +1 -1
  61. package/dist/components/empty.js +1 -1
  62. package/dist/components/field.js +1 -1
  63. package/dist/components/input-group.js +1 -1
  64. package/dist/components/input.js +3 -3
  65. package/dist/components/label.js +1 -1
  66. package/dist/components/menubar.js +1 -1
  67. package/dist/components/pagination.js +1 -1
  68. package/dist/components/select.js +1 -1
  69. package/dist/components/sensitive-input.js +1 -1
  70. package/dist/components/sidebar.js +1 -1
  71. package/dist/components/switch.js +1 -1
  72. package/dist/components/table.js +1 -1
  73. package/dist/components/toast.js +1 -1
  74. package/dist/components/tooltip.js +1 -1
  75. package/dist/index.js +26 -26
  76. package/dist/src/code/index.d.ts +3 -2
  77. package/dist/src/code/index.d.ts.map +1 -1
  78. package/dist/src/code/provider.d.ts +7 -1
  79. package/dist/src/code/provider.d.ts.map +1 -1
  80. package/dist/src/code/types.d.ts +36 -5
  81. package/dist/src/code/types.d.ts.map +1 -1
  82. package/dist/src/code/use-shiki-highlighter.d.ts.map +1 -1
  83. package/dist/src/components/banner/banner.d.ts +3 -3
  84. package/dist/src/components/banner/banner.d.ts.map +1 -1
  85. package/dist/src/components/chart/SankeyChart.d.ts +5 -1
  86. package/dist/src/components/chart/SankeyChart.d.ts.map +1 -1
  87. package/dist/src/components/tooltip/tooltip.d.ts.map +1 -1
  88. package/dist/styles/kumo-standalone.css +1 -1
  89. package/package.json +1 -1
  90. package/dist/chunks/SankeyChart-h1kzhs1tyt20luha.js +0 -629
  91. package/dist/chunks/banner-eux4y8xaogjg64af.js +0 -80
  92. package/dist/chunks/banner-eux4y8xaogjg64af.js.map +0 -1
  93. package/dist/chunks/tooltip-caka3fmn1ogdc7q8.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"banner-eux4y8xaogjg64af.js","sources":["../../src/components/banner/banner.tsx"],"sourcesContent":["import { type ReactNode, isValidElement, forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { resolveVariant } from \"../../utils/resolve-variant\";\n\n/** Base styles applied to all banner variants. */\nexport const KUMO_BANNER_BASE_STYLES =\n \"flex w-full items-start gap-3 rounded-lg border px-4 py-3 text-base\";\n\n/** Banner variant definitions mapping variant names to their Tailwind classes and descriptions. */\nexport const KUMO_BANNER_VARIANTS = {\n variant: {\n default: {\n classes:\n \"bg-kumo-info-tint/30 border-kumo-info/50 text-kumo-info selection:bg-kumo-info\",\n iconClasses: \"text-kumo-info\",\n description: \"Informational banner for general messages\",\n },\n alert: {\n classes:\n \"bg-kumo-warning-tint/15 border-kumo-warning/50 text-kumo-warning selection:bg-kumo-warning\",\n iconClasses: \"text-kumo-warning\",\n description: \"Warning banner for cautionary messages\",\n },\n error: {\n classes:\n \"bg-kumo-danger-tint/15 border-kumo-danger/50 text-kumo-danger selection:bg-kumo-danger\",\n iconClasses: \"text-kumo-danger\",\n description: \"Error banner for critical issues\",\n },\n },\n} as const;\n\nexport const KUMO_BANNER_DEFAULT_VARIANTS = {\n variant: \"default\",\n} as const;\n\n// Derived types from KUMO_BANNER_VARIANTS\nexport type KumoBannerVariant = keyof typeof KUMO_BANNER_VARIANTS.variant;\n\nexport interface KumoBannerVariantsProps {\n /**\n * Visual style of the banner.\n * - `\"default\"` — Informational banner for general messages\n * - `\"alert\"` — Warning banner for cautionary messages\n * - `\"error\"` — Error banner for critical issues\n * @default \"default\"\n */\n variant?: KumoBannerVariant;\n}\n\nexport function bannerVariants({\n variant = KUMO_BANNER_DEFAULT_VARIANTS.variant,\n}: KumoBannerVariantsProps = {}) {\n return cn(\n // Base styles (exported as KUMO_BANNER_BASE_STYLES for Figma plugin)\n KUMO_BANNER_BASE_STYLES,\n // Apply variant styles from KUMO_BANNER_VARIANTS\n resolveVariant(KUMO_BANNER_VARIANTS.variant, variant, KUMO_BANNER_DEFAULT_VARIANTS.variant).classes,\n );\n}\n\n// Legacy enum for backwards compatibility\nexport enum BannerVariant {\n DEFAULT,\n ALERT,\n ERROR,\n}\n\n/**\n * Banner component props.\n *\n * @example\n * ```tsx\n * <Banner title=\"Update available\" description=\"A new version is ready to install.\" />\n * <Banner variant=\"alert\" title=\"Session expiring\" description=\"Your session will expire soon.\" />\n * <Banner variant=\"error\" title=\"Save failed\" description=\"We couldn't save your changes.\" />\n * ```\n */\nexport interface BannerProps {\n /** Icon element rendered before the banner content (e.g. from `@phosphor-icons/react`). */\n icon?: ReactNode;\n /** Primary heading text for the banner. Use for i18n string injection. */\n title?: string;\n /** Secondary description text displayed below the title. Use for i18n string injection. */\n description?: ReactNode;\n /** Action slot rendered at the trailing end of the banner (e.g. a CTA button or link). Only used in structured mode (with `title` or `description`). */\n action?: ReactNode;\n /** @deprecated Use `title` and `description` instead. Will be removed in a future major version. */\n text?: string;\n /** @deprecated Use `title` and `description` instead for better i18n support. */\n children?: ReactNode;\n /**\n * Visual style of the banner.\n * - `\"default\"` — Informational blue banner for general messages\n * - `\"alert\"` — Warning yellow banner for cautionary messages\n * - `\"error\"` — Error red banner for critical issues\n * @default \"default\"\n */\n variant?: KumoBannerVariant;\n /** Additional CSS classes merged via `cn()`. */\n className?: string;\n}\n\n/**\n * Full-width message bar for informational, warning, or error notices.\n * Supports structured title/description for i18n, or simple children for basic usage.\n *\n * @example\n * ```tsx\n * // Structured (recommended for i18n)\n * <Banner\n * variant=\"alert\"\n * icon={<WarningCircle />}\n * title=\"Review required\"\n * description=\"Please review your billing information.\"\n * />\n *\n * // Simple (backwards compatible)\n * <Banner variant=\"alert\" icon={<WarningCircle />}>\n * Review your billing information.\n * </Banner>\n * ```\n */\nexport const Banner = forwardRef<HTMLDivElement, BannerProps>(function Banner(\n {\n icon,\n title,\n description,\n action,\n children,\n text,\n variant = KUMO_BANNER_DEFAULT_VARIANTS.variant,\n className,\n },\n ref,\n) {\n const variantConfig = resolveVariant(KUMO_BANNER_VARIANTS.variant, variant, KUMO_BANNER_DEFAULT_VARIANTS.variant);\n\n // Structured mode: title and/or description provided\n if (title || description) {\n return (\n <div ref={ref} className={cn(bannerVariants({ variant }), className)}>\n {icon && (\n <span\n className={cn(\n \"shrink-0 flex items-center h-[1.375em]\",\n variantConfig.iconClasses,\n )}\n >\n {icon}\n </span>\n )}\n <div className=\"flex min-w-0 flex-1 items-center justify-between gap-3\">\n <div className=\"flex flex-col gap-0.5\">\n {title && <p className=\"font-medium leading-snug\">{title}</p>}\n {description && (\n <div className=\"text-sm leading-snug\">\n {isValidElement(description) ? (\n description\n ) : (\n <p>{description}</p>\n )}\n </div>\n )}\n </div>\n {action && (\n <div className=\"flex shrink-0 items-center gap-2\">{action}</div>\n )}\n </div>\n </div>\n );\n }\n\n // Legacy mode: children or text prop\n const value = children ?? text;\n const content = isValidElement(value) ? value : <p>{value}</p>;\n\n return (\n <div ref={ref} className={cn(bannerVariants({ variant }), className)}>\n {icon && (\n <span className={cn(\"shrink-0\", variantConfig.iconClasses)}>\n {icon}\n </span>\n )}\n {content}\n </div>\n );\n});\n\nBanner.displayName = \"Banner\";\n"],"names":["KUMO_BANNER_BASE_STYLES","KUMO_BANNER_VARIANTS","KUMO_BANNER_DEFAULT_VARIANTS","bannerVariants","variant","cn","resolveVariant","BannerVariant","Banner","forwardRef","icon","title","description","action","children","text","className","ref","variantConfig","jsxs","jsx","isValidElement","value","content"],"mappings":";;;;;AAKO,MAAMA,IACX,uEAGWC,IAAuB;AAAA,EAClC,SAAS;AAAA,IACP,SAAS;AAAA,MACP,SACE;AAAA,MACF,aAAa;AAAA,MACb,aAAa;AAAA,IAAA;AAAA,IAEf,OAAO;AAAA,MACL,SACE;AAAA,MACF,aAAa;AAAA,MACb,aAAa;AAAA,IAAA;AAAA,IAEf,OAAO;AAAA,MACL,SACE;AAAA,MACF,aAAa;AAAA,MACb,aAAa;AAAA,IAAA;AAAA,EACf;AAEJ,GAEaC,IAA+B;AAAA,EAC1C,SAAS;AACX;AAgBO,SAASC,EAAe;AAAA,EAC7B,SAAAC,IAAUF,EAA6B;AACzC,IAA6B,IAAI;AAC/B,SAAOG;AAAA;AAAA,IAELL;AAAA;AAAA,IAEAM,EAAeL,EAAqB,SAASG,GAASF,EAA6B,OAAO,EAAE;AAAA,EAAA;AAEhG;AAGO,IAAKK,sBAAAA,OACVA,EAAAA,EAAA,UAAA,CAAA,IAAA,WACAA,EAAAA,EAAA,QAAA,CAAA,IAAA,SACAA,EAAAA,EAAA,QAAA,CAAA,IAAA,SAHUA,IAAAA,KAAA,CAAA,CAAA;AA6DL,MAAMC,IAASC,EAAwC,SAC5D;AAAA,EACE,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,QAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAX,IAAUF,EAA6B;AAAA,EACvC,WAAAc;AACF,GACAC,GACA;AACA,QAAMC,IAAgBZ,EAAeL,EAAqB,SAASG,GAASF,EAA6B,OAAO;AAGhH,MAAIS,KAASC;AACX,WACE,gBAAAO,EAAC,OAAA,EAAI,KAAAF,GAAU,WAAWZ,EAAGF,EAAe,EAAE,SAAAC,EAAA,CAAS,GAAGY,CAAS,GAChE,UAAA;AAAA,MAAAN,KACC,gBAAAU;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWf;AAAA,YACT;AAAA,YACAa,EAAc;AAAA,UAAA;AAAA,UAGf,UAAAR;AAAA,QAAA;AAAA,MAAA;AAAA,MAGL,gBAAAS,EAAC,OAAA,EAAI,WAAU,0DACb,UAAA;AAAA,QAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,yBACZ,UAAA;AAAA,UAAAR,KAAS,gBAAAS,EAAC,KAAA,EAAE,WAAU,4BAA4B,UAAAT,GAAM;AAAA,UACxDC,KACC,gBAAAQ,EAAC,OAAA,EAAI,WAAU,wBACZ,UAAAC,EAAeT,CAAW,IACzBA,IAEA,gBAAAQ,EAAC,KAAA,EAAG,UAAAR,EAAA,CAAY,EAAA,CAEpB;AAAA,QAAA,GAEJ;AAAA,QACCC,KACC,gBAAAO,EAAC,OAAA,EAAI,WAAU,oCAAoC,UAAAP,EAAA,CAAO;AAAA,MAAA,EAAA,CAE9D;AAAA,IAAA,GACF;AAKJ,QAAMS,IAAQR,KAAYC,GACpBQ,IAAUF,EAAeC,CAAK,IAAIA,IAAQ,gBAAAF,EAAC,OAAG,UAAAE,GAAM;AAE1D,SACE,gBAAAH,EAAC,OAAA,EAAI,KAAAF,GAAU,WAAWZ,EAAGF,EAAe,EAAE,SAAAC,EAAA,CAAS,GAAGY,CAAS,GAChE,UAAA;AAAA,IAAAN,KACC,gBAAAU,EAAC,UAAK,WAAWf,EAAG,YAAYa,EAAc,WAAW,GACtD,UAAAR,EAAA,CACH;AAAA,IAEDa;AAAA,EAAA,GACH;AAEJ,CAAC;AAEDf,EAAO,cAAc;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tooltip-caka3fmn1ogdc7q8.js","sources":["../../src/components/tooltip/tooltip.tsx"],"sourcesContent":["import { Tooltip as TooltipBase } from \"@base-ui/react/tooltip\";\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { resolveVariant } from \"../../utils/resolve-variant\";\nimport {\n usePortalContainer,\n type PortalContainer,\n} from \"../../utils/portal-provider\";\n\n/** Tooltip side variant definitions mapping positions to their Tailwind classes. */\nexport const KUMO_TOOLTIP_VARIANTS = {\n side: {\n top: {\n classes: \"\",\n description: \"Tooltip appears above the trigger\",\n },\n bottom: {\n classes: \"\",\n description: \"Tooltip appears below the trigger\",\n },\n left: {\n classes: \"\",\n description: \"Tooltip appears to the left of the trigger\",\n },\n right: {\n classes: \"\",\n description: \"Tooltip appears to the right of the trigger\",\n },\n },\n} as const;\n\nexport const KUMO_TOOLTIP_DEFAULT_VARIANTS = {\n side: \"top\",\n} as const;\n\n// Derived types from KUMO_TOOLTIP_VARIANTS\nexport type KumoTooltipSide = keyof typeof KUMO_TOOLTIP_VARIANTS.side;\n\nexport interface KumoTooltipVariantsProps {\n /**\n * Preferred side of the trigger to render the tooltip.\n * - `\"top\"` — Tooltip appears above the trigger\n * - `\"bottom\"` — Tooltip appears below the trigger\n * - `\"left\"` — Tooltip appears to the left of the trigger\n * - `\"right\"` — Tooltip appears to the right of the trigger\n * @default \"top\"\n */\n side?: KumoTooltipSide;\n}\n\nexport function tooltipVariants({\n side = KUMO_TOOLTIP_DEFAULT_VARIANTS.side,\n}: KumoTooltipVariantsProps = {}) {\n return cn(\n // Base styles\n \"flex origin-[var(--transform-origin)] flex-col rounded-md bg-kumo-base px-2.5 py-1.5 text-sm text-kumo-default\",\n \"shadow-lg shadow-kumo-tip-shadow outline outline-1 outline-kumo-fill\",\n \"transition-[transform,opacity] duration-150\",\n \"data-[starting-style]:scale-90 data-[starting-style]:opacity-0\",\n \"data-[ending-style]:scale-90 data-[ending-style]:opacity-0\",\n \"data-[instant]:duration-0\",\n // Apply side-specific styles (currently none, but extensible)\n resolveVariant(KUMO_TOOLTIP_VARIANTS.side, side, KUMO_TOOLTIP_DEFAULT_VARIANTS.side).classes,\n );\n}\n\nexport const TooltipProvider = TooltipBase.Provider;\n\ntype BaseTooltipProps = ComponentPropsWithoutRef<typeof TooltipBase.Root>;\n\ntype TriggerProps = ComponentPropsWithoutRef<typeof TooltipBase.Trigger>;\n\n/** Alignment options for tooltip positioning. Source: PositionerProps[\"align\"] */\ntype TooltipAlign = \"start\" | \"center\" | \"end\";\n\n/**\n * Tooltip component props.\n *\n * @example\n * ```tsx\n * <Tooltip content=\"Add new item\" render={<Button shape=\"square\" icon={PlusIcon} />}>\n * Add\n * </Tooltip>\n * ```\n */\nexport type TooltipProps = BaseTooltipProps &\n KumoTooltipVariantsProps & {\n /**\n * Alignment on the axis perpendicular to `side`.\n * - `\"start\"` — Align to the start edge\n * - `\"center\"` — Center-aligned\n * - `\"end\"` — Align to the end edge\n */\n align?: TooltipAlign;\n /**\n * @deprecated Use the `render` prop instead.\n * @example `<Tooltip render={<Button />}>Label</Tooltip>` instead of `<Tooltip asChild><Button>Label</Button></Tooltip>`\n */\n asChild?: boolean;\n /** Additional CSS classes merged via `cn()`. */\n className?: string;\n /** Content to display inside the tooltip popup. */\n content: ReactNode;\n /**\n * Container element for the portal. Use this to render the tooltip inside\n * a Shadow DOM or custom container. Overrides `KumoPortalProvider` context.\n * @default document.body (or KumoPortalProvider container if set)\n */\n container?: PortalContainer;\n /**\n * How long to wait before closing the tooltip. Specified in milliseconds.\n * @default 0\n */\n closeDelay?: number;\n /**\n * How long to wait before opening the tooltip. Specified in milliseconds.\n * @default 600\n */\n delay?: number;\n /**\n * Element to render as the tooltip trigger. Children are passed to this element.\n * @example `<Tooltip content=\"Save\" render={<Button />}>Save</Tooltip>`\n */\n render?: TriggerProps[\"render\"];\n };\n\n/**\n * Accessible popup that shows additional information on hover/focus.\n * Wrap your app or section with `<TooltipProvider>` to enable delay grouping.\n *\n * @example\n * ```tsx\n * <Tooltip content=\"Save changes\" render={<Button variant=\"primary\" />}>\n * Save\n * </Tooltip>\n * ```\n */\nexport function Tooltip({\n content,\n children,\n align,\n asChild,\n render,\n side,\n className,\n container: containerProp,\n closeDelay,\n delay,\n ...props\n}: TooltipProps) {\n const contextContainer = usePortalContainer();\n const container = containerProp ?? contextContainer ?? undefined;\n\n // Support both render prop (preferred) and deprecated asChild pattern\n // When using asChild, children IS the render element, so don't pass it as children\n const resolvedRender =\n render ?? (asChild ? (children as TriggerProps[\"render\"]) : undefined);\n const shouldUseRender = resolvedRender !== undefined;\n\n return (\n <TooltipBase.Root {...props}>\n <TooltipBase.Trigger\n closeDelay={closeDelay}\n delay={delay}\n className={cn(\n // Defensive resets when rendering as button wrapper (not render/asChild)\n // These prevent global button styles from polluting the trigger\n // Consumer styles passed via className will override these (tailwind-merge)\n !shouldUseRender &&\n \"inline-flex items-center bg-transparent border-none shadow-none p-0 m-0 h-auto min-h-0 leading-[0]\",\n // Tooltip triggers are disclosure elements, not actions — override\n // cursor: pointer (e.g. from Button used via render prop) so the\n // trigger doesn't appear clickable\n \"cursor-default\",\n className,\n )}\n render={resolvedRender}\n >\n {asChild ? undefined : (children as ReactNode)}\n </TooltipBase.Trigger>\n <TooltipBase.Portal container={container}>\n <TooltipBase.Positioner align={align} side={side} sideOffset={10}>\n <TooltipBase.Popup\n className={cn(\n \"flex origin-[var(--transform-origin)] flex-col rounded-md bg-kumo-base px-2.5 py-1.5 text-sm text-kumo-default\",\n \"shadow-lg shadow-kumo-tip-shadow outline outline-kumo-fill\",\n \"transition-[transform,opacity] duration-150\",\n \"data-[starting-style]:scale-90 data-[starting-style]:opacity-0\",\n \"data-[ending-style]:scale-90 data-[ending-style]:opacity-0\",\n \"data-[instant]:duration-0\",\n \"kumo-tooltip-popup\",\n )}\n >\n <TooltipBase.Arrow\n className={cn(\n \"flex\",\n \"data-[side=bottom]:top-[-8px]\",\n \"data-[side=left]:right-[-13px] data-[side=left]:rotate-90\",\n \"data-[side=right]:left-[-13px] data-[side=right]:-rotate-90\",\n \"data-[side=top]:bottom-[-8px] data-[side=top]:rotate-180\",\n )}\n >\n <ArrowSvg />\n </TooltipBase.Arrow>\n {content}\n </TooltipBase.Popup>\n </TooltipBase.Positioner>\n </TooltipBase.Portal>\n </TooltipBase.Root>\n );\n}\n\n/**\n * Arrow SVG with three paths for proper border rendering in both light and dark modes.\n * This approach matches Base UI's tooltip implementation.\n *\n * The three paths are:\n * 1. ArrowFill - The main arrow body, matches tooltip background\n * 2. ArrowOuterStroke - Border visible in light mode only (transparent in dark)\n * 3. ArrowInnerStroke - Border visible in dark mode only (transparent in light)\n *\n * This is necessary because the outer and inner stroke paths have different geometries,\n * and using both ensures the arrow border aligns perfectly with the tooltip's outline\n * in both color modes.\n *\n * @see https://base-ui.com/react/components/tooltip\n */\nfunction ArrowSvg(props: React.ComponentProps<\"svg\">) {\n return (\n <svg width=\"20\" height=\"10\" viewBox=\"0 0 20 10\" fill=\"none\" {...props}>\n <path\n d=\"M9.66437 2.60207L4.80758 6.97318C4.07308 7.63423 3.11989 8 2.13172 8H0V10H20V8H18.5349C17.5468 8 16.5936 7.63423 15.8591 6.97318L11.0023 2.60207C10.622 2.2598 10.0447 2.25979 9.66437 2.60207Z\"\n className=\"fill-kumo-base\"\n />\n <path\n d=\"M8.99542 1.85876C9.75604 1.17425 10.9106 1.17422 11.6713 1.85878L16.5281 6.22989C17.0789 6.72568 17.7938 7.00001 18.5349 7.00001L15.89 7L11.0023 2.60207C10.622 2.2598 10.0447 2.2598 9.66436 2.60207L4.77734 7L2.13171 7.00001C2.87284 7.00001 3.58774 6.72568 4.13861 6.22989L8.99542 1.85876Z\"\n className=\"fill-kumo-tip-shadow\"\n />\n <path\n d=\"M10.3333 3.34539L5.47654 7.71648C4.55842 8.54279 3.36693 9 2.13172 9H0V8H2.13172C3.11989 8 4.07308 7.63423 4.80758 6.97318L9.66437 2.60207C10.0447 2.25979 10.622 2.2598 11.0023 2.60207L15.8591 6.97318C16.5936 7.63423 17.5468 8 18.5349 8H20V9H18.5349C17.2998 9 16.1083 8.54278 15.1901 7.71648L10.3333 3.34539Z\"\n className=\"fill-kumo-tip-stroke\"\n />\n </svg>\n );\n}\n"],"names":["TooltipProvider","TooltipBase.Provider","Tooltip","content","children","align","asChild","render","side","className","containerProp","closeDelay","delay","props","contextContainer","usePortalContainer","container","resolvedRender","jsxs","TooltipBase.Root","jsx","TooltipBase.Trigger","cn","TooltipBase.Portal","TooltipBase.Positioner","TooltipBase.Popup","TooltipBase.Arrow","ArrowSvg"],"mappings":";;;;;AAkEO,MAAMA,IAAkBC;AAuExB,SAASC,EAAQ;AAAA,EACtB,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,QAAAC;AAAA,EACA,MAAAC;AAAA,EACA,WAAAC;AAAA,EACA,WAAWC;AAAA,EACX,YAAAC;AAAA,EACA,OAAAC;AAAA,EACA,GAAGC;AACL,GAAiB;AACf,QAAMC,IAAmBC,EAAA,GACnBC,IAAYN,KAAiBI,KAAoB,QAIjDG,IACJV,MAAWD,IAAWF,IAAsC;AAG9D,SACE,gBAAAc,EAACC,GAAA,EAAkB,GAAGN,GACpB,UAAA;AAAA,IAAA,gBAAAO;AAAA,MAACC;AAAAA,MAAA;AAAA,QACC,YAAAV;AAAA,QACA,OAAAC;AAAA,QACA,WAAWU;AAAA;AAAA;AAAA;AAAA,UAIT,EAXgBL,MAAmB,WAYjC;AAAA;AAAA;AAAA;AAAA,UAIF;AAAA,UACAR;AAAA,QAAA;AAAA,QAEF,QAAQQ;AAAA,QAEP,cAAU,SAAab;AAAA,MAAA;AAAA,IAAA;AAAA,IAE1B,gBAAAgB,EAACG,GAAA,EAAmB,WAAAP,GAClB,UAAA,gBAAAI,EAACI,GAAA,EAAuB,OAAAnB,GAAc,MAAAG,GAAY,YAAY,IAC5D,UAAA,gBAAAU;AAAA,MAACO;AAAAA,MAAA;AAAA,QACC,WAAWH;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,QAGF,UAAA;AAAA,UAAA,gBAAAF;AAAA,YAACM;AAAAA,YAAA;AAAA,cACC,WAAWJ;AAAA,gBACT;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cAAA;AAAA,cAGF,4BAACK,GAAA,CAAA,CAAS;AAAA,YAAA;AAAA,UAAA;AAAA,UAEXxB;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,GAEL,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;AAiBA,SAASwB,EAASd,GAAoC;AACpD,SACE,gBAAAK,EAAC,OAAA,EAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAQ,GAAGL,GAC9D,UAAA;AAAA,IAAA,gBAAAO;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,GAAE;AAAA,QACF,WAAU;AAAA,MAAA;AAAA,IAAA;AAAA,IAEZ,gBAAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,GAAE;AAAA,QACF,WAAU;AAAA,MAAA;AAAA,IAAA;AAAA,IAEZ,gBAAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,GAAE;AAAA,QACF,WAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EACZ,GACF;AAEJ;"}