@cloudflare/kumo 2.2.1 → 2.3.0
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 +26 -0
- package/ai/component-registry.json +28 -5
- package/ai/component-registry.md +64 -7
- package/ai/schemas.ts +1 -0
- package/dist/.build-complete +1 -1
- package/dist/ai/schemas.d.ts +12 -4
- package/dist/ai/schemas.d.ts.map +1 -1
- package/dist/ai/schemas.js +2 -0
- package/dist/ai/schemas.js.map +1 -1
- package/dist/chunks/SankeyChart-krkvltewpn3bbupw.js +651 -0
- package/dist/chunks/{SankeyChart-dkq90770ad7hgzx3.js.map → SankeyChart-krkvltewpn3bbupw.js.map} +1 -1
- package/dist/chunks/{autocomplete-mhrvtq4y5n21vr0t.js → autocomplete-h39m8kzoq0csjh9l.js} +82 -68
- package/dist/chunks/autocomplete-h39m8kzoq0csjh9l.js.map +1 -0
- package/dist/chunks/{badge-kqox9toi0sygfbno.js → badge-e9w8qrjmeu9nocf6.js} +80 -19
- package/dist/chunks/badge-e9w8qrjmeu9nocf6.js.map +1 -0
- package/dist/chunks/{breadcrumbs-ohstavaqvycoremm.js → breadcrumbs-g4pyoikibpoxsgw4.js} +2 -2
- package/dist/chunks/{breadcrumbs-ohstavaqvycoremm.js.map → breadcrumbs-g4pyoikibpoxsgw4.js.map} +1 -1
- package/dist/chunks/{button-oevxukl0zmwoq4tb.js → button-fxdpoacmq5rv1adk.js} +2 -2
- package/dist/chunks/{button-oevxukl0zmwoq4tb.js.map → button-fxdpoacmq5rv1adk.js.map} +1 -1
- package/dist/chunks/{checkbox-h6vkv17lnq854z2c.js → checkbox-dtoq56ieijj9m6vr.js} +3 -3
- package/dist/chunks/{checkbox-h6vkv17lnq854z2c.js.map → checkbox-dtoq56ieijj9m6vr.js.map} +1 -1
- package/dist/chunks/{clipboard-text-kyy71jmx7umdh8k8.js → clipboard-text-nvdsloomefwgcxat.js} +4 -4
- package/dist/chunks/{clipboard-text-kyy71jmx7umdh8k8.js.map → clipboard-text-nvdsloomefwgcxat.js.map} +1 -1
- package/dist/chunks/{collapsible-ej6p2bq758sw30nk.js → collapsible-cnsxmp7dko87pgx0.js} +2 -2
- package/dist/chunks/{collapsible-ej6p2bq758sw30nk.js.map → collapsible-cnsxmp7dko87pgx0.js.map} +1 -1
- package/dist/chunks/{combobox-g3cudlfajecou4va.js → combobox-jcqn64ixr4557a0s.js} +126 -126
- package/dist/chunks/combobox-jcqn64ixr4557a0s.js.map +1 -0
- package/dist/chunks/{command-palette-eep807rf6iapoz8r.js → command-palette-jrq7p16tff6n46nj.js} +11 -11
- package/dist/chunks/{command-palette-eep807rf6iapoz8r.js.map → command-palette-jrq7p16tff6n46nj.js.map} +1 -1
- package/dist/chunks/dialog-gndju3sqg1lmpb3f.js +118 -0
- package/dist/chunks/{dialog-fo3qhv9fgiadq5gp.js.map → dialog-gndju3sqg1lmpb3f.js.map} +1 -1
- package/dist/chunks/{dropdown-cobpydatw4vlb3ov.js → dropdown-k6orz4j043xybf54.js} +2 -2
- package/dist/chunks/{dropdown-cobpydatw4vlb3ov.js.map → dropdown-k6orz4j043xybf54.js.map} +1 -1
- package/dist/chunks/{empty-n3r7xutkb9sxjaso.js → empty-ni12ufom1kkakbuc.js} +2 -2
- package/dist/chunks/{empty-n3r7xutkb9sxjaso.js.map → empty-ni12ufom1kkakbuc.js.map} +1 -1
- package/dist/chunks/{field-l1oapopp6kjnephi.js → field-n16udu32tpyq5udz.js} +3 -3
- package/dist/chunks/{field-l1oapopp6kjnephi.js.map → field-n16udu32tpyq5udz.js.map} +1 -1
- package/dist/chunks/{input-area-gudamx1ruz8rxiw2.js → input-area-hhhpgg0ev8bowtrk.js} +4 -4
- package/dist/chunks/{input-area-gudamx1ruz8rxiw2.js.map → input-area-hhhpgg0ev8bowtrk.js.map} +1 -1
- package/dist/chunks/{input-group-gy08vju7eoogil8k.js → input-group-kkw5j7rwzhj66h10.js} +70 -70
- package/dist/chunks/input-group-kkw5j7rwzhj66h10.js.map +1 -0
- package/dist/chunks/{input-i3os21puacqw4r75.js → input-mv7giprcc6hfkpq3.js} +3 -3
- package/dist/chunks/{input-i3os21puacqw4r75.js.map → input-mv7giprcc6hfkpq3.js.map} +1 -1
- package/dist/chunks/{label-i0bj94d43irz0k1x.js → label-f6yvqca8qhbpvkq8.js} +3 -3
- package/dist/chunks/{label-i0bj94d43irz0k1x.js.map → label-f6yvqca8qhbpvkq8.js.map} +1 -1
- package/dist/chunks/{layer-card-hyz8lfxceudt05pv.js → layer-card-gegkqhkjy65l1ueo.js} +2 -2
- package/dist/chunks/{layer-card-hyz8lfxceudt05pv.js.map → layer-card-gegkqhkjy65l1ueo.js.map} +1 -1
- package/dist/chunks/{link-lkzjiitte3l29q87.js → link-jjk7qolyol7s1jkk.js} +2 -2
- package/dist/chunks/{link-lkzjiitte3l29q87.js.map → link-jjk7qolyol7s1jkk.js.map} +1 -1
- package/dist/chunks/{menubar-jalggrag4utvdpey.js → menubar-d5s6h96nw8ggy04a.js} +2 -2
- package/dist/chunks/{menubar-jalggrag4utvdpey.js.map → menubar-d5s6h96nw8ggy04a.js.map} +1 -1
- package/dist/chunks/{meter-jbxkh6gfggx1kjna.js → meter-kxn34sy6l2mz5dwq.js} +2 -2
- package/dist/chunks/{meter-jbxkh6gfggx1kjna.js.map → meter-kxn34sy6l2mz5dwq.js.map} +1 -1
- package/dist/chunks/{pagination-ceetno8sc1rd0wr2.js → pagination-ixbq8ssuuo0jxaa4.js} +3 -3
- package/dist/chunks/{pagination-ceetno8sc1rd0wr2.js.map → pagination-ixbq8ssuuo0jxaa4.js.map} +1 -1
- package/dist/chunks/{popover-i4opvl9g0as52fyx.js → popover-js5ds3szd43kspja.js} +2 -2
- package/dist/chunks/{popover-i4opvl9g0as52fyx.js.map → popover-js5ds3szd43kspja.js.map} +1 -1
- package/dist/chunks/{radio-g56o5rftpu1qpxuv.js → radio-nyw89v4eafptepmz.js} +2 -2
- package/dist/chunks/{radio-g56o5rftpu1qpxuv.js.map → radio-nyw89v4eafptepmz.js.map} +1 -1
- package/dist/chunks/{select-g1xvti1k1hj7xe5t.js → select-o2i7aovnu8v1zv8t.js} +39 -38
- package/dist/chunks/{select-g1xvti1k1hj7xe5t.js.map → select-o2i7aovnu8v1zv8t.js.map} +1 -1
- package/dist/chunks/{sensitive-input-hokm527ollnz9dqc.js → sensitive-input-bjg6m791yz7g6bn3.js} +93 -90
- package/dist/chunks/sensitive-input-bjg6m791yz7g6bn3.js.map +1 -0
- package/dist/chunks/{sidebar-oan40ylmqkyui21w.js → sidebar-izcfqkrzt4vqn8ez.js} +37 -37
- package/dist/chunks/{sidebar-oan40ylmqkyui21w.js.map → sidebar-izcfqkrzt4vqn8ez.js.map} +1 -1
- package/dist/chunks/{surface-ck1nt2uqfzmod4sz.js → surface-lzwbh3f5t0gxc83t.js} +2 -2
- package/dist/chunks/{surface-ck1nt2uqfzmod4sz.js.map → surface-lzwbh3f5t0gxc83t.js.map} +1 -1
- package/dist/chunks/{switch-fv0ttj24uhocvuh8.js → switch-d9cs31oj4rjtg717.js} +3 -3
- package/dist/chunks/{switch-fv0ttj24uhocvuh8.js.map → switch-d9cs31oj4rjtg717.js.map} +1 -1
- package/dist/chunks/{table-nsfcgpo93gfetrhh.js → table-c6qemc2jmv22cv3p.js} +2 -2
- package/dist/chunks/{table-nsfcgpo93gfetrhh.js.map → table-c6qemc2jmv22cv3p.js.map} +1 -1
- package/dist/chunks/{tabs-g8ier5pehjpfxauf.js → tabs-f0ztlooi91ko9g04.js} +2 -2
- package/dist/chunks/{tabs-g8ier5pehjpfxauf.js.map → tabs-f0ztlooi91ko9g04.js.map} +1 -1
- package/dist/chunks/{toast-ofqlfmddcyka091n.js → toast-ejfm5cbt9yulqhol.js} +3 -3
- package/dist/chunks/{toast-ofqlfmddcyka091n.js.map → toast-ejfm5cbt9yulqhol.js.map} +1 -1
- package/dist/chunks/{tooltip-icvb67awe1zolz61.js → tooltip-o6xfw9jjclv9pxaj.js} +16 -16
- package/dist/chunks/{tooltip-icvb67awe1zolz61.js.map → tooltip-o6xfw9jjclv9pxaj.js.map} +1 -1
- package/dist/chunks/vendor-base-ui-mzjqwv5teijixz8h.js +24703 -0
- package/dist/chunks/vendor-base-ui-mzjqwv5teijixz8h.js.map +1 -0
- package/dist/chunks/{vendor-floating-ui-dwag5e88viikh2zs.js → vendor-floating-ui-c4mwmh0xmfzevy9l.js} +5 -5
- package/dist/chunks/{vendor-floating-ui-dwag5e88viikh2zs.js.map → vendor-floating-ui-c4mwmh0xmfzevy9l.js.map} +1 -1
- package/dist/chunks/vendor-utils-m5h2xu7s2rs3pgk5.js +217 -0
- package/dist/chunks/vendor-utils-m5h2xu7s2rs3pgk5.js.map +1 -0
- package/dist/code.js +114 -89
- package/dist/code.js.map +1 -1
- package/dist/components/autocomplete.js +1 -1
- package/dist/components/badge.js +1 -1
- package/dist/components/breadcrumbs.js +1 -1
- package/dist/components/button.js +1 -1
- package/dist/components/chart.js +1 -1
- package/dist/components/checkbox.js +1 -1
- package/dist/components/clipboard-text.js +1 -1
- package/dist/components/collapsible.js +1 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/command-palette.js +1 -1
- package/dist/components/dialog.js +1 -1
- package/dist/components/dropdown.js +1 -1
- package/dist/components/empty.js +1 -1
- package/dist/components/field.js +1 -1
- package/dist/components/input-group.js +1 -1
- package/dist/components/input.js +3 -3
- package/dist/components/label.js +1 -1
- package/dist/components/layer-card.js +1 -1
- package/dist/components/link.js +1 -1
- package/dist/components/menubar.js +1 -1
- package/dist/components/meter.js +1 -1
- package/dist/components/pagination.js +1 -1
- package/dist/components/popover.js +1 -1
- package/dist/components/radio.js +1 -1
- package/dist/components/select.js +1 -1
- package/dist/components/sensitive-input.js +1 -1
- package/dist/components/sidebar.js +1 -1
- package/dist/components/surface.js +1 -1
- package/dist/components/switch.js +1 -1
- package/dist/components/table.js +1 -1
- package/dist/components/tabs.js +1 -1
- package/dist/components/toast.js +2 -2
- package/dist/components/tooltip.js +1 -1
- package/dist/index.js +38 -38
- package/dist/primitives/accordion.js +1 -1
- package/dist/primitives/alert-dialog.js +1 -1
- package/dist/primitives/autocomplete.js +1 -1
- package/dist/primitives/avatar.js +1 -1
- package/dist/primitives/button.js +1 -1
- package/dist/primitives/checkbox-group.js +1 -1
- package/dist/primitives/checkbox.js +1 -1
- package/dist/primitives/collapsible.js +1 -1
- package/dist/primitives/combobox.js +1 -1
- package/dist/primitives/context-menu.js +1 -1
- package/dist/primitives/csp-provider.js +1 -1
- package/dist/primitives/dialog.js +1 -1
- package/dist/primitives/direction-provider.js +1 -1
- package/dist/primitives/drawer.js +1 -1
- package/dist/primitives/field.js +1 -1
- package/dist/primitives/fieldset.js +1 -1
- package/dist/primitives/form.js +1 -1
- package/dist/primitives/input.js +1 -1
- package/dist/primitives/menu.js +1 -1
- package/dist/primitives/menubar.js +1 -1
- package/dist/primitives/meter.js +1 -1
- package/dist/primitives/navigation-menu.js +1 -1
- package/dist/primitives/number-field.js +1 -1
- package/dist/primitives/otp-field.js +1 -1
- package/dist/primitives/popover.js +1 -1
- package/dist/primitives/preview-card.js +1 -1
- package/dist/primitives/progress.js +1 -1
- package/dist/primitives/radio-group.js +1 -1
- package/dist/primitives/radio.js +1 -1
- package/dist/primitives/scroll-area.js +1 -1
- package/dist/primitives/select.js +1 -1
- package/dist/primitives/separator.js +1 -1
- package/dist/primitives/slider.js +1 -1
- package/dist/primitives/switch.js +1 -1
- package/dist/primitives/tabs.js +1 -1
- package/dist/primitives/toast.js +1 -1
- package/dist/primitives/toggle-group.js +1 -1
- package/dist/primitives/toggle.js +1 -1
- package/dist/primitives/toolbar.js +1 -1
- package/dist/primitives/tooltip.js +1 -1
- package/dist/primitives.js +1 -1
- package/dist/scripts/theme-generator/config.js +3 -3
- package/dist/scripts/theme-generator/config.js.map +1 -1
- package/dist/src/code/index.d.ts +3 -2
- package/dist/src/code/index.d.ts.map +1 -1
- package/dist/src/code/provider.d.ts +7 -1
- package/dist/src/code/provider.d.ts.map +1 -1
- package/dist/src/code/types.d.ts +36 -5
- package/dist/src/code/types.d.ts.map +1 -1
- package/dist/src/code/use-shiki-highlighter.d.ts.map +1 -1
- package/dist/src/components/autocomplete/autocomplete.d.ts.map +1 -1
- package/dist/src/components/badge/badge.d.ts +51 -3
- package/dist/src/components/badge/badge.d.ts.map +1 -1
- package/dist/src/components/chart/SankeyChart.d.ts +6 -1
- package/dist/src/components/chart/SankeyChart.d.ts.map +1 -1
- package/dist/src/components/combobox/combobox.d.ts.map +1 -1
- package/dist/src/components/dialog/dialog.d.ts +11 -4
- package/dist/src/components/dialog/dialog.d.ts.map +1 -1
- package/dist/src/components/input-group/input-group-button.d.ts.map +1 -1
- package/dist/src/components/input-group/input-group-input.d.ts.map +1 -1
- package/dist/src/components/input-group/input-group.d.ts.map +1 -1
- package/dist/src/components/select/select.d.ts.map +1 -1
- package/dist/src/components/sensitive-input/sensitive-input.d.ts.map +1 -1
- package/dist/src/components/toast/toast.d.ts.map +1 -1
- package/dist/styles/kumo-binding.css +0 -18
- package/dist/styles/kumo-standalone.css +1 -1
- package/dist/styles/theme-kumo.css +6 -6
- package/package.json +2 -2
- package/scripts/generate-primitives.ts +6 -1
- package/scripts/theme-generator/config.ts +3 -3
- package/dist/chunks/SankeyChart-dkq90770ad7hgzx3.js +0 -635
- package/dist/chunks/autocomplete-mhrvtq4y5n21vr0t.js.map +0 -1
- package/dist/chunks/badge-kqox9toi0sygfbno.js.map +0 -1
- package/dist/chunks/combobox-g3cudlfajecou4va.js.map +0 -1
- package/dist/chunks/dialog-fo3qhv9fgiadq5gp.js +0 -115
- package/dist/chunks/input-group-gy08vju7eoogil8k.js.map +0 -1
- package/dist/chunks/sensitive-input-hokm527ollnz9dqc.js.map +0 -1
- package/dist/chunks/vendor-base-ui-nbyiqqi138hcoz52.js +0 -24639
- package/dist/chunks/vendor-base-ui-nbyiqqi138hcoz52.js.map +0 -1
- package/dist/chunks/vendor-utils-ixnhxmehwihk5tr7.js +0 -534
- package/dist/chunks/vendor-utils-ixnhxmehwihk5tr7.js.map +0 -1
package/dist/code.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code.js","sources":["../src/code/context.ts","../src/code/provider.tsx","../src/code/use-shiki-highlighter.ts","../src/code/code-highlighted.tsx"],"sourcesContent":["import { createContext } from \"react\";\nimport type { HighlighterCore } from \"shiki/core\";\nimport type { SupportedLanguage, CodeHighlightedLabels } from \"./types\";\n\nexport interface ShikiContextValue {\n /** The initialized Shiki highlighter instance */\n highlighter: HighlighterCore | null;\n\n /** True while Shiki is loading */\n isLoading: boolean;\n\n /** Error if initialization failed */\n error: Error | null;\n\n /** Configured languages */\n languages: SupportedLanguage[];\n\n /** Localized labels for UI elements */\n labels: CodeHighlightedLabels;\n}\n\nexport const ShikiContext = createContext<ShikiContextValue | null>(null);\n","\"use client\";\n\nimport React, { useState, useEffect, useMemo } from \"react\";\nimport { ShikiContext, type ShikiContextValue } from \"./context\";\nimport type { ShikiProviderProps, SupportedLanguage } from \"./types\";\n\n/**\n * Pre-bundled languages - only these languages are included in the Kumo bundle.\n * Using fine-grained imports from @shikijs/langs to minimize bundle size.\n */\nconst BUNDLED_LANGS: Record<\n SupportedLanguage,\n () => Promise<{ default: unknown }>\n> = {\n javascript: () => import(\"@shikijs/langs/javascript\"),\n typescript: () => import(\"@shikijs/langs/typescript\"),\n jsx: () => import(\"@shikijs/langs/jsx\"),\n tsx: () => import(\"@shikijs/langs/tsx\"),\n json: () => import(\"@shikijs/langs/json\"),\n jsonc: () => import(\"@shikijs/langs/jsonc\"),\n html: () => import(\"@shikijs/langs/html\"),\n css: () => import(\"@shikijs/langs/css\"),\n python: () => import(\"@shikijs/langs/python\"),\n yaml: () => import(\"@shikijs/langs/yaml\"),\n markdown: () => import(\"@shikijs/langs/markdown\"),\n graphql: () => import(\"@shikijs/langs/graphql\"),\n sql: () => import(\"@shikijs/langs/sql\"),\n bash: () => import(\"@shikijs/langs/bash\"),\n shell: () => import(\"@shikijs/langs/shellscript\"),\n diff: () => import(\"@shikijs/langs/diff\"),\n hcl: () => import(\"@shikijs/langs/hcl\"),\n toml: () => import(\"@shikijs/langs/toml\"),\n};\n\n/**\n * Provider component that initializes and manages Shiki highlighting.\n *\n * Shiki is lazy-loaded on first render — no JavaScript is downloaded\n * until this provider mounts. While loading, child components can\n * render code as plain text.\n *\n * Uses hardcoded themes: `github-light` for light mode, `vesper` for dark mode.\n *\n * @example\n * ```tsx\n * import { ShikiProvider, CodeHighlighted } from \"@cloudflare/kumo/code\";\n *\n * function App() {\n * return (\n * <ShikiProvider\n * engine=\"javascript\"\n * languages={['tsx', 'bash', 'json']}\n * >\n * <CodeHighlighted code=\"const x = 1;\" lang=\"tsx\" />\n * </ShikiProvider>\n * );\n * }\n * ```\n */\nconst DEFAULT_LABELS = {\n copy: \"Copy\",\n copied: \"Copied!\",\n};\n\nexport function ShikiProvider({\n engine,\n languages,\n labels,\n children,\n}: ShikiProviderProps): React.JSX.Element {\n const [state, setState] = useState<{\n highlighter: ShikiContextValue[\"highlighter\"];\n isLoading: boolean;\n error: Error | null;\n }>({\n highlighter: null,\n isLoading: true,\n error: null,\n });\n\n useEffect(() => {\n let cancelled = false;\n\n async function initializeShiki() {\n try {\n // Dynamic import of shiki/core — only loads the core, not all languages\n const { createHighlighterCore } = await import(\"shiki/core\");\n\n // Load the appropriate engine\n const engineInstance =\n engine === \"wasm\"\n ? await import(\"shiki/engine/oniguruma\").then((m) =>\n m.createOnigurumaEngine(import(\"shiki/wasm\")),\n )\n : await import(\"shiki/engine/javascript\").then((m) =>\n m.createJavaScriptRegexEngine(),\n );\n\n // Load themes\n const [githubLight, vesper] = await Promise.all([\n import(\"@shikijs/themes/github-light\"),\n import(\"@shikijs/themes/vesper\"),\n ]);\n\n // Load only the requested languages from our bundled set\n const validLanguages = languages.filter(\n (lang): lang is SupportedLanguage => lang in BUNDLED_LANGS,\n );\n\n const langModules = await Promise.all(\n validLanguages.map((lang) => BUNDLED_LANGS[lang]()),\n );\n\n const highlighter = await createHighlighterCore({\n themes: [githubLight.default, vesper.default],\n\n langs: langModules.map((m) => m.default) as any,\n engine: engineInstance,\n });\n\n if (!cancelled) {\n setState({\n highlighter,\n isLoading: false,\n error: null,\n });\n }\n } catch (err) {\n if (!cancelled) {\n setState({\n highlighter: null,\n isLoading: false,\n error:\n err instanceof Error ? err : new Error(\"Failed to load Shiki\"),\n });\n }\n }\n }\n\n void initializeShiki();\n\n return () => {\n cancelled = true;\n };\n }, [engine, languages]);\n\n const mergedLabels = useMemo(\n () => ({ ...DEFAULT_LABELS, ...labels }),\n [labels],\n );\n\n const contextValue = useMemo<ShikiContextValue>(\n () => ({\n highlighter: state.highlighter,\n isLoading: state.isLoading,\n error: state.error,\n languages: languages as SupportedLanguage[],\n labels: mergedLabels,\n }),\n [state.highlighter, state.isLoading, state.error, languages, mergedLabels],\n );\n\n return (\n <ShikiContext.Provider value={contextValue}>\n {children}\n </ShikiContext.Provider>\n );\n}\n\nShikiProvider.displayName = \"ShikiProvider\";\n","\"use client\";\n\nimport { useContext, useCallback } from \"react\";\nimport { ShikiContext } from \"./context\";\nimport type { UseShikiHighlighterResult, SupportedLanguage } from \"./types\";\n\n/**\n * Hook for accessing Shiki highlighting in custom implementations.\n *\n * Must be used within a ShikiProvider.\n *\n * Uses hardcoded themes: `github-light` for light mode, `vesper` for dark mode.\n *\n * @example\n * ```tsx\n * import { useShikiHighlighter } from \"@cloudflare/kumo/code\";\n *\n * function CustomCodeBlock({ code, lang }) {\n * const { highlight, isLoading, isReady, error } = useShikiHighlighter();\n *\n * if (error) {\n * return <div>Failed to load highlighter</div>;\n * }\n *\n * if (isLoading) {\n * return <pre><code>{code}</code></pre>;\n * }\n *\n * const html = highlight(code, lang);\n *\n * // null means highlighting failed — render plain text\n * if (html === null) {\n * return <pre><code>{code}</code></pre>;\n * }\n *\n * return <pre dangerouslySetInnerHTML={{ __html: html }} />;\n * }\n * ```\n */\nexport function useShikiHighlighter(): UseShikiHighlighterResult {\n const context = useContext(ShikiContext);\n\n if (!context) {\n throw new Error(\n \"useShikiHighlighter must be used within a ShikiProvider. \" +\n \"Wrap your app with <ShikiProvider> from '@cloudflare/kumo/code'.\",\n );\n }\n\n const { highlighter, isLoading, error, languages, labels } = context;\n\n const highlight = useCallback(\n (code: string, lang: SupportedLanguage): string | null => {\n if (!highlighter) {\n return null;\n }\n\n // Check if the language is supported\n if (!languages.includes(lang)) {\n console.warn(\n `[Kumo CodeHighlighted] Language \"${lang}\" is not in the ShikiProvider's languages list. ` +\n `Add it to the languages array: languages={[...existing, '${lang}']}. ` +\n `Rendering as plain text.`,\n );\n return null;\n }\n\n try {\n // Use dual theme for light/dark mode support with hardcoded themes\n const html = highlighter.codeToHtml(code, {\n lang,\n themes: {\n light: \"github-light\",\n dark: \"vesper\",\n },\n });\n\n return html;\n } catch (err) {\n console.warn(\n `[Kumo CodeHighlighted] Failed to highlight code with language \"${lang}\":`,\n err,\n );\n return null;\n }\n },\n [highlighter, languages],\n );\n\n return {\n highlight,\n isLoading,\n isReady: !isLoading && highlighter !== null,\n error,\n labels,\n };\n}\n","\"use client\";\n\nimport React, { useState, useCallback, useMemo } from \"react\";\nimport { cn } from \"../utils/cn\";\nimport { Button } from \"../components/button\";\nimport { useShikiHighlighter } from \"./use-shiki-highlighter\";\nimport type { CodeHighlightedProps } from \"./types\";\n\n/**\n * Syntax-highlighted code block powered by Shiki.\n *\n * Must be used within a ShikiProvider. While Shiki is loading,\n * displays code as plain text (no layout shift, immediately readable).\n *\n * Uses hardcoded themes: `github-light` for light mode, `vesper` for dark mode.\n *\n * @example\n * ```tsx\n * import { ShikiProvider, CodeHighlighted } from \"@cloudflare/kumo/code\";\n *\n * <ShikiProvider\n * engine=\"javascript\"\n * languages={['tsx', 'bash']}\n * >\n * <CodeHighlighted\n * code={`const greeting = \"Hello!\";`}\n * lang=\"tsx\"\n * showLineNumbers\n * showCopyButton\n * />\n * </ShikiProvider>\n * ```\n */\nexport function CodeHighlighted({\n code,\n lang,\n showLineNumbers = false,\n highlightLines,\n showCopyButton = false,\n labels: labelOverrides,\n className,\n}: CodeHighlightedProps): React.JSX.Element {\n const {\n highlight,\n isLoading,\n error,\n labels: providerLabels,\n } = useShikiHighlighter();\n const [copied, setCopied] = useState(false);\n\n // Merge provider labels with component-level overrides\n const labels = useMemo(\n () => ({ ...providerLabels, ...labelOverrides }),\n [providerLabels, labelOverrides],\n );\n\n const handleCopy = useCallback(async () => {\n try {\n await navigator.clipboard.writeText(code);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n } catch (err) {\n console.error(\"[Kumo CodeHighlighted] Failed to copy to clipboard:\", err);\n }\n }, [code]);\n\n // Get highlighted HTML (or null if not ready/failed)\n const html = highlight(code, lang);\n\n // Count lines for line numbers\n const lineCount = useMemo(() => code.split(\"\\n\").length, [code]);\n\n // Detect single-line code for layout adjustments\n const isSingleLine = lineCount === 1;\n\n // Container styles - use flex layout for single-line with copy button\n // Includes defensive resets (m-0, p-0) to prevent global CSS pollution\n const containerClasses = cn(\n \"group relative m-0 w-full min-w-0 rounded-md border border-kumo-fill bg-kumo-base p-0\",\n showCopyButton && isSingleLine && \"flex items-center\",\n className,\n );\n\n // Copy button - inline for single-line, absolute for multi-line\n // Hidden until hover (or when showing \"Copied!\" feedback)\n const copyButton = showCopyButton ? (\n <div\n className={cn(\n isSingleLine ? \"shrink-0 px-2\" : \"absolute right-2 top-2\",\n !copied && \"opacity-0 transition-opacity group-hover:opacity-100\",\n )}\n >\n <Button\n variant=\"secondary\"\n size=\"sm\"\n onClick={handleCopy}\n aria-label={copied ? labels.copied : labels.copy}\n >\n {copied ? labels.copied : labels.copy}\n </Button>\n </div>\n ) : null;\n\n // Line numbers column\n const lineNumbers =\n showLineNumbers && !isSingleLine ? (\n <div\n className=\"kumo-line-numbers shrink-0 select-none py-4 pr-4 text-right font-mono text-sm opacity-40\"\n aria-hidden=\"true\"\n >\n {Array.from({ length: lineCount }, (_, i) => (\n <div key={i + 1} className=\"leading-relaxed\">\n {i + 1}\n </div>\n ))}\n </div>\n ) : null;\n\n // Error state — still show code, just log the error\n if (error) {\n console.error(\"[Kumo CodeHighlighted] Shiki initialization error:\", error);\n }\n\n // Loading or failed to highlight — show plain text\n if (isLoading || html === null) {\n return (\n <div className={containerClasses}>\n {lineNumbers && (\n <div className=\"flex\">\n {lineNumbers}\n <pre className=\"!m-0 min-w-0 flex-1 overflow-x-auto !p-4 font-mono text-sm leading-relaxed text-kumo-subtle\">\n <code className=\"!m-0 !p-0\">{code}</code>\n </pre>\n </div>\n )}\n {!lineNumbers && (\n <pre className=\"!m-0 min-w-0 flex-1 overflow-x-auto !p-4 font-mono text-sm leading-relaxed text-kumo-subtle\">\n <code className=\"!m-0 !p-0\">{code}</code>\n </pre>\n )}\n {copyButton}\n </div>\n );\n }\n\n // Highlighted code\n return (\n <div className={containerClasses}>\n {lineNumbers && (\n <div className=\"flex w-full\">\n {lineNumbers}\n <div className=\"min-w-0 flex-1 overflow-x-auto\">\n <div\n className=\"kumo-shiki [&>pre]:!m-0 [&>pre]:!border-0 [&>pre]:!rounded-none [&>pre]:!bg-transparent [&>pre]:!p-4 [&>pre]:font-mono [&>pre]:text-sm [&>pre]:leading-relaxed [&_code]:!m-0 [&_code]:!p-0 [&_code]:!bg-transparent [&_code]:!border-0\"\n dangerouslySetInnerHTML={{\n __html: processHighlightedHtml(html, highlightLines),\n }}\n />\n </div>\n </div>\n )}\n {!lineNumbers && (\n <div className=\"overflow-x-auto\">\n <div\n className=\"kumo-shiki [&>pre]:!m-0 [&>pre]:!border-0 [&>pre]:!rounded-none [&>pre]:!bg-transparent [&>pre]:!p-4 [&>pre]:font-mono [&>pre]:text-sm [&>pre]:leading-relaxed [&_code]:!m-0 [&_code]:!p-0 [&_code]:!bg-transparent [&_code]:!border-0\"\n dangerouslySetInnerHTML={{\n __html: processHighlightedHtml(html, highlightLines),\n }}\n />\n </div>\n )}\n {copyButton}\n </div>\n );\n}\n\nCodeHighlighted.displayName = \"CodeHighlighted\";\n\n/**\n * Process Shiki's HTML output to add line highlighting classes.\n * Does NOT modify Shiki's token structure - only adds classes to line spans.\n */\nfunction processHighlightedHtml(\n html: string,\n highlightLines?: number[],\n): string {\n // Line numbers are not yet supported - would require more complex approach\n // For now, only handle line highlighting which just adds a class\n\n if (!highlightLines?.length) {\n return html;\n }\n\n const highlightSet = new Set(highlightLines);\n let lineNumber = 0;\n\n // Only add the highlight class to lines, don't restructure the HTML\n return html.replace(/<span class=\"line\">/g, () => {\n lineNumber++;\n const isHighlighted = highlightSet.has(lineNumber);\n return isHighlighted\n ? '<span class=\"line line-highlighted\">'\n : '<span class=\"line\">';\n });\n}\n"],"names":["ShikiContext","createContext","BUNDLED_LANGS","n","DEFAULT_LABELS","ShikiProvider","engine","languages","labels","children","state","setState","useState","useEffect","cancelled","initializeShiki","createHighlighterCore","engineInstance","m","githubLight","vesper","validLanguages","lang","langModules","highlighter","err","mergedLabels","useMemo","contextValue","useShikiHighlighter","context","useContext","isLoading","error","useCallback","code","CodeHighlighted","showLineNumbers","highlightLines","showCopyButton","labelOverrides","className","highlight","providerLabels","copied","setCopied","handleCopy","html","lineCount","isSingleLine","containerClasses","cn","copyButton","jsx","Button","lineNumbers","_","i","jsxs","processHighlightedHtml","highlightSet","lineNumber"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"code.js","sources":["../src/code/context.ts","../src/code/types.ts","../src/code/provider.tsx","../src/code/use-shiki-highlighter.ts","../src/code/code-highlighted.tsx"],"sourcesContent":["import { createContext } from \"react\";\nimport type { HighlighterCore } from \"shiki/core\";\nimport type { SupportedLanguage, CodeHighlightedLabels } from \"./types\";\n\nexport interface ShikiContextValue {\n /** The initialized Shiki highlighter instance */\n highlighter: HighlighterCore | null;\n\n /** True while Shiki is loading */\n isLoading: boolean;\n\n /** Error if initialization failed */\n error: Error | null;\n\n /** Configured languages */\n languages: SupportedLanguage[];\n\n /** Localized labels for UI elements */\n labels: CodeHighlightedLabels;\n}\n\nexport const ShikiContext = createContext<ShikiContextValue | null>(null);\n","/**\n * Supported languages for syntax highlighting.\n *\n * Kumo bundles a curated subset of Shiki languages to keep bundle size small.\n * These cover the most common use cases for documentation and code snippets.\n *\n * If you need additional languages, use Shiki directly with fine-grained imports.\n */\nexport type SupportedLanguage =\n | \"javascript\"\n | \"typescript\"\n | \"jsx\"\n | \"tsx\"\n | \"json\"\n | \"jsonc\"\n | \"html\"\n | \"css\"\n | \"python\"\n | \"yaml\"\n | \"markdown\"\n | \"graphql\"\n | \"sql\"\n | \"bash\"\n | \"shell\"\n | \"diff\"\n | \"hcl\"\n | \"toml\";\n\n/**\n * Common language aliases mapped to their canonical SupportedLanguage names.\n *\n * Markdown code fences often use short aliases (e.g., `js`, `ts`, `sh`) that\n * don't match the canonical grammar names but should resolve to them.\n *\n * Note: `mdx` is intentionally omitted because it has a distinct grammar\n * (Markdown + JSX) that would lose JSX highlighting if mapped to `markdown`.\n */\nexport const LANGUAGE_ALIASES = {\n js: \"javascript\",\n cjs: \"javascript\",\n mjs: \"javascript\",\n ts: \"typescript\",\n cts: \"typescript\",\n mts: \"typescript\",\n sh: \"bash\",\n zsh: \"bash\",\n yml: \"yaml\",\n py: \"python\",\n md: \"markdown\",\n gql: \"graphql\",\n} as const satisfies Record<string, SupportedLanguage>;\n\n/** A known alias that maps to a SupportedLanguage. */\nexport type LanguageAlias = keyof typeof LANGUAGE_ALIASES;\n\n/** Any language identifier accepted by ShikiProvider and highlight(). */\nexport type LanguageInput = SupportedLanguage | LanguageAlias;\n\n/**\n * Shiki engine choice for syntax highlighting.\n * - `\"javascript\"` — Smaller bundle (~50KB), slightly less accurate\n * - `\"wasm\"` — Larger bundle (~180KB), VS Code-accurate highlighting\n */\nexport type ShikiEngine = \"javascript\" | \"wasm\";\n\n/**\n * Localized labels for the copy button.\n */\nexport interface CodeHighlightedLabels {\n /** Label for copy button (default: \"Copy\") */\n copy?: string;\n /** Label shown after copying (default: \"Copied!\") */\n copied?: string;\n}\n\n/**\n * Props for ShikiProvider component.\n */\nexport interface ShikiProviderProps {\n /**\n * Highlighting engine choice.\n * - `\"javascript\"` — Smaller, faster to load (~50KB gzipped)\n * - `\"wasm\"` — Larger but more accurate (~180KB gzipped)\n */\n engine: ShikiEngine;\n\n /**\n * Languages to support. Only these languages will be loaded.\n * Accepts canonical names (`'javascript'`) or common aliases (`'js'`).\n * @example ['tsx', 'ts', 'bash', 'json']\n */\n languages: LanguageInput[];\n\n /**\n * Localized labels for UI elements (copy button, etc.).\n * Can be overridden at the component level.\n * @example { copy: \"Copier\", copied: \"Copié!\" }\n */\n labels?: CodeHighlightedLabels;\n\n /** React children */\n children: React.ReactNode;\n}\n\n/**\n * Return value from useShikiHighlighter hook.\n */\nexport interface UseShikiHighlighterResult {\n /**\n * Highlight code and return HTML string.\n * Returns `null` if highlighter is not ready or highlighting fails.\n * When `null` is returned, render the code as plain text.\n *\n * Accepts language aliases (e.g., 'js', 'ts', 'sh') which are automatically\n * normalized to their canonical SupportedLanguage names.\n */\n highlight: (code: string, lang: LanguageInput | (string & {})) => string | null;\n\n /** True while Shiki is loading */\n isLoading: boolean;\n\n /** True when highlight() is safe to call */\n isReady: boolean;\n\n /** Error if Shiki initialization failed */\n error: Error | null;\n\n /** Localized labels from provider */\n labels: CodeHighlightedLabels;\n}\n\n/**\n * Props for CodeHighlighted component.\n */\nexport interface CodeHighlightedProps {\n /** Source code to display */\n code: string;\n\n /**\n * Language identifier for syntax highlighting.\n * Accepts canonical names or common aliases (e.g., 'js', 'ts').\n * Must be included in the ShikiProvider's `languages` array.\n */\n lang: LanguageInput | (string & {});\n\n /** Display line numbers */\n showLineNumbers?: boolean;\n\n /**\n * Lines to visually emphasize (1-indexed).\n * @example [1, 5, 6]\n */\n highlightLines?: number[];\n\n /** Show copy-to-clipboard button */\n showCopyButton?: boolean;\n\n /**\n * Override provider labels for this instance.\n * @example { copy: \"Copy code\", copied: \"Done!\" }\n */\n labels?: CodeHighlightedLabels;\n\n /** Additional CSS classes */\n className?: string;\n}\n\n// Re-export for backwards compatibility (deprecated, use SupportedLanguage instead)\n/** @deprecated Use SupportedLanguage instead */\nexport type BundledLanguage = SupportedLanguage;\n","\"use client\";\n\nimport React, { useState, useEffect, useMemo } from \"react\";\nimport { ShikiContext, type ShikiContextValue } from \"./context\";\nimport { LANGUAGE_ALIASES } from \"./types\";\nimport type { ShikiProviderProps, SupportedLanguage, LanguageAlias } from \"./types\";\n\n/**\n * Pre-bundled languages - only these languages are included in the Kumo bundle.\n * Using fine-grained imports from @shikijs/langs to minimize bundle size.\n */\nconst BUNDLED_LANGS: Record<\n SupportedLanguage,\n () => Promise<{ default: unknown }>\n> = {\n javascript: () => import(\"@shikijs/langs/javascript\"),\n typescript: () => import(\"@shikijs/langs/typescript\"),\n jsx: () => import(\"@shikijs/langs/jsx\"),\n tsx: () => import(\"@shikijs/langs/tsx\"),\n json: () => import(\"@shikijs/langs/json\"),\n jsonc: () => import(\"@shikijs/langs/jsonc\"),\n html: () => import(\"@shikijs/langs/html\"),\n css: () => import(\"@shikijs/langs/css\"),\n python: () => import(\"@shikijs/langs/python\"),\n yaml: () => import(\"@shikijs/langs/yaml\"),\n markdown: () => import(\"@shikijs/langs/markdown\"),\n graphql: () => import(\"@shikijs/langs/graphql\"),\n sql: () => import(\"@shikijs/langs/sql\"),\n bash: () => import(\"@shikijs/langs/bash\"),\n shell: () => import(\"@shikijs/langs/shellscript\"),\n diff: () => import(\"@shikijs/langs/diff\"),\n hcl: () => import(\"@shikijs/langs/hcl\"),\n toml: () => import(\"@shikijs/langs/toml\"),\n};\n\n/**\n * Normalize a language identifier to its canonical SupportedLanguage name.\n * Returns the canonical name if the input is a known alias or already canonical,\n * otherwise returns null.\n */\nexport function normalizeLanguage(lang: string): SupportedLanguage | null {\n if (lang in BUNDLED_LANGS) return lang as SupportedLanguage;\n if (lang in LANGUAGE_ALIASES) return LANGUAGE_ALIASES[lang as LanguageAlias];\n return null;\n}\n\n/**\n * Provider component that initializes and manages Shiki highlighting.\n *\n * Shiki is lazy-loaded on first render — no JavaScript is downloaded\n * until this provider mounts. While loading, child components can\n * render code as plain text.\n *\n * Uses hardcoded themes: `github-light` for light mode, `vesper` for dark mode.\n *\n * @example\n * ```tsx\n * import { ShikiProvider, CodeHighlighted } from \"@cloudflare/kumo/code\";\n *\n * function App() {\n * return (\n * <ShikiProvider\n * engine=\"javascript\"\n * languages={['tsx', 'bash', 'json']}\n * >\n * <CodeHighlighted code=\"const x = 1;\" lang=\"tsx\" />\n * </ShikiProvider>\n * );\n * }\n * ```\n */\nconst DEFAULT_LABELS = {\n copy: \"Copy\",\n copied: \"Copied!\",\n};\n\nexport function ShikiProvider({\n engine,\n languages,\n labels,\n children,\n}: ShikiProviderProps): React.JSX.Element {\n const [state, setState] = useState<{\n highlighter: ShikiContextValue[\"highlighter\"];\n isLoading: boolean;\n error: Error | null;\n languages: SupportedLanguage[];\n }>({\n highlighter: null,\n isLoading: true,\n error: null,\n languages: [],\n });\n\n useEffect(() => {\n let cancelled = false;\n\n async function initializeShiki() {\n try {\n // Dynamic import of shiki/core — only loads the core, not all languages\n const { createHighlighterCore } = await import(\"shiki/core\");\n\n // Load the appropriate engine\n const engineInstance =\n engine === \"wasm\"\n ? await import(\"shiki/engine/oniguruma\").then((m) =>\n m.createOnigurumaEngine(import(\"shiki/wasm\")),\n )\n : await import(\"shiki/engine/javascript\").then((m) =>\n m.createJavaScriptRegexEngine(),\n );\n\n // Load themes\n const [githubLight, vesper] = await Promise.all([\n import(\"@shikijs/themes/github-light\"),\n import(\"@shikijs/themes/vesper\"),\n ]);\n\n // Load only the requested languages from our bundled set,\n // normalizing aliases (e.g., 'js' -> 'javascript') first\n const validLanguages = [\n ...new Set(\n languages\n .map((lang) => normalizeLanguage(lang))\n .filter((lang): lang is SupportedLanguage => lang !== null),\n ),\n ];\n\n const langModules = await Promise.all(\n validLanguages.map((lang) => BUNDLED_LANGS[lang]()),\n );\n\n const highlighter = await createHighlighterCore({\n themes: [githubLight.default, vesper.default],\n\n langs: langModules.map((m) => m.default) as any,\n engine: engineInstance,\n });\n\n if (!cancelled) {\n setState({\n highlighter,\n isLoading: false,\n error: null,\n languages: validLanguages,\n });\n }\n } catch (err) {\n if (!cancelled) {\n setState({\n highlighter: null,\n isLoading: false,\n error:\n err instanceof Error ? err : new Error(\"Failed to load Shiki\"),\n languages: [],\n });\n }\n }\n }\n\n void initializeShiki();\n\n return () => {\n cancelled = true;\n };\n }, [engine, languages]);\n\n const mergedLabels = useMemo(\n () => ({ ...DEFAULT_LABELS, ...labels }),\n [labels],\n );\n\n const contextValue = useMemo<ShikiContextValue>(\n () => ({\n highlighter: state.highlighter,\n isLoading: state.isLoading,\n error: state.error,\n languages: state.languages,\n labels: mergedLabels,\n }),\n [state.highlighter, state.isLoading, state.error, state.languages, mergedLabels],\n );\n\n return (\n <ShikiContext.Provider value={contextValue}>\n {children}\n </ShikiContext.Provider>\n );\n}\n\nShikiProvider.displayName = \"ShikiProvider\";\n","\"use client\";\n\nimport { useContext, useCallback } from \"react\";\nimport { ShikiContext } from \"./context\";\nimport { normalizeLanguage } from \"./provider\";\nimport type { UseShikiHighlighterResult } from \"./types\";\n\n/**\n * Hook for accessing Shiki highlighting in custom implementations.\n *\n * Must be used within a ShikiProvider.\n *\n * Uses hardcoded themes: `github-light` for light mode, `vesper` for dark mode.\n *\n * @example\n * ```tsx\n * import { useShikiHighlighter } from \"@cloudflare/kumo/code\";\n *\n * function CustomCodeBlock({ code, lang }) {\n * const { highlight, isLoading, isReady, error } = useShikiHighlighter();\n *\n * if (error) {\n * return <div>Failed to load highlighter</div>;\n * }\n *\n * if (isLoading) {\n * return <pre><code>{code}</code></pre>;\n * }\n *\n * const html = highlight(code, lang);\n *\n * // null means highlighting failed — render plain text\n * if (html === null) {\n * return <pre><code>{code}</code></pre>;\n * }\n *\n * return <pre dangerouslySetInnerHTML={{ __html: html }} />;\n * }\n * ```\n */\nexport function useShikiHighlighter(): UseShikiHighlighterResult {\n const context = useContext(ShikiContext);\n\n if (!context) {\n throw new Error(\n \"useShikiHighlighter must be used within a ShikiProvider. \" +\n \"Wrap your app with <ShikiProvider> from '@cloudflare/kumo/code'.\",\n );\n }\n\n const { highlighter, isLoading, error, languages, labels } = context;\n\n const highlight = useCallback(\n (code: string, lang: string): string | null => {\n if (!highlighter) {\n return null;\n }\n\n // Normalize language aliases (e.g., 'js' -> 'javascript')\n const normalizedLang = normalizeLanguage(lang);\n\n // Check if the language is supported\n if (!normalizedLang || !languages.includes(normalizedLang)) {\n console.warn(\n `[Kumo CodeHighlighted] Language \"${lang}\" is not in the ShikiProvider's languages list. ` +\n `Add it to the languages array: languages={[...existing, '${normalizedLang || lang}']}. ` +\n `Rendering as plain text.`,\n );\n return null;\n }\n\n try {\n // Use dual theme for light/dark mode support with hardcoded themes\n const html = highlighter.codeToHtml(code, {\n lang: normalizedLang,\n themes: {\n light: \"github-light\",\n dark: \"vesper\",\n },\n });\n\n return html;\n } catch (err) {\n console.warn(\n `[Kumo CodeHighlighted] Failed to highlight code with language \"${lang}\":`,\n err,\n );\n return null;\n }\n },\n [highlighter, languages],\n );\n\n return {\n highlight,\n isLoading,\n isReady: !isLoading && highlighter !== null,\n error,\n labels,\n };\n}\n","\"use client\";\n\nimport React, { useState, useCallback, useMemo } from \"react\";\nimport { cn } from \"../utils/cn\";\nimport { Button } from \"../components/button\";\nimport { useShikiHighlighter } from \"./use-shiki-highlighter\";\nimport type { CodeHighlightedProps } from \"./types\";\n\n/**\n * Syntax-highlighted code block powered by Shiki.\n *\n * Must be used within a ShikiProvider. While Shiki is loading,\n * displays code as plain text (no layout shift, immediately readable).\n *\n * Uses hardcoded themes: `github-light` for light mode, `vesper` for dark mode.\n *\n * @example\n * ```tsx\n * import { ShikiProvider, CodeHighlighted } from \"@cloudflare/kumo/code\";\n *\n * <ShikiProvider\n * engine=\"javascript\"\n * languages={['tsx', 'bash']}\n * >\n * <CodeHighlighted\n * code={`const greeting = \"Hello!\";`}\n * lang=\"tsx\"\n * showLineNumbers\n * showCopyButton\n * />\n * </ShikiProvider>\n * ```\n */\nexport function CodeHighlighted({\n code,\n lang,\n showLineNumbers = false,\n highlightLines,\n showCopyButton = false,\n labels: labelOverrides,\n className,\n}: CodeHighlightedProps): React.JSX.Element {\n const {\n highlight,\n isLoading,\n error,\n labels: providerLabels,\n } = useShikiHighlighter();\n const [copied, setCopied] = useState(false);\n\n // Merge provider labels with component-level overrides\n const labels = useMemo(\n () => ({ ...providerLabels, ...labelOverrides }),\n [providerLabels, labelOverrides],\n );\n\n const handleCopy = useCallback(async () => {\n try {\n await navigator.clipboard.writeText(code);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n } catch (err) {\n console.error(\"[Kumo CodeHighlighted] Failed to copy to clipboard:\", err);\n }\n }, [code]);\n\n // Get highlighted HTML (or null if not ready/failed)\n const html = highlight(code, lang);\n\n // Count lines for line numbers\n const lineCount = useMemo(() => code.split(\"\\n\").length, [code]);\n\n // Detect single-line code for layout adjustments\n const isSingleLine = lineCount === 1;\n\n // Container styles - use flex layout for single-line with copy button\n // Includes defensive resets (m-0, p-0) to prevent global CSS pollution\n const containerClasses = cn(\n \"group relative m-0 w-full min-w-0 rounded-md border border-kumo-fill bg-kumo-base p-0\",\n showCopyButton && isSingleLine && \"flex items-center\",\n className,\n );\n\n // Copy button - inline for single-line, absolute for multi-line\n // Hidden until hover (or when showing \"Copied!\" feedback)\n const copyButton = showCopyButton ? (\n <div\n className={cn(\n isSingleLine ? \"shrink-0 px-2\" : \"absolute right-2 top-2\",\n !copied && \"opacity-0 transition-opacity group-hover:opacity-100\",\n )}\n >\n <Button\n variant=\"secondary\"\n size=\"sm\"\n onClick={handleCopy}\n aria-label={copied ? labels.copied : labels.copy}\n >\n {copied ? labels.copied : labels.copy}\n </Button>\n </div>\n ) : null;\n\n // Line numbers column\n const lineNumbers =\n showLineNumbers && !isSingleLine ? (\n <div\n className=\"kumo-line-numbers shrink-0 select-none py-4 pr-4 text-right font-mono text-sm opacity-40\"\n aria-hidden=\"true\"\n >\n {Array.from({ length: lineCount }, (_, i) => (\n <div key={i + 1} className=\"leading-relaxed\">\n {i + 1}\n </div>\n ))}\n </div>\n ) : null;\n\n // Error state — still show code, just log the error\n if (error) {\n console.error(\"[Kumo CodeHighlighted] Shiki initialization error:\", error);\n }\n\n // Loading or failed to highlight — show plain text\n if (isLoading || html === null) {\n return (\n <div className={containerClasses}>\n {lineNumbers && (\n <div className=\"flex\">\n {lineNumbers}\n <pre className=\"!m-0 min-w-0 flex-1 overflow-x-auto !p-4 font-mono text-sm leading-relaxed text-kumo-subtle\">\n <code className=\"!m-0 !p-0\">{code}</code>\n </pre>\n </div>\n )}\n {!lineNumbers && (\n <pre className=\"!m-0 min-w-0 flex-1 overflow-x-auto !p-4 font-mono text-sm leading-relaxed text-kumo-subtle\">\n <code className=\"!m-0 !p-0\">{code}</code>\n </pre>\n )}\n {copyButton}\n </div>\n );\n }\n\n // Highlighted code\n return (\n <div className={containerClasses}>\n {lineNumbers && (\n <div className=\"flex w-full\">\n {lineNumbers}\n <div className=\"min-w-0 flex-1 overflow-x-auto\">\n <div\n className=\"kumo-shiki [&>pre]:!m-0 [&>pre]:!border-0 [&>pre]:!rounded-none [&>pre]:!bg-transparent [&>pre]:!p-4 [&>pre]:font-mono [&>pre]:text-sm [&>pre]:leading-relaxed [&_code]:!m-0 [&_code]:!p-0 [&_code]:!bg-transparent [&_code]:!border-0\"\n dangerouslySetInnerHTML={{\n __html: processHighlightedHtml(html, highlightLines),\n }}\n />\n </div>\n </div>\n )}\n {!lineNumbers && (\n <div className=\"overflow-x-auto\">\n <div\n className=\"kumo-shiki [&>pre]:!m-0 [&>pre]:!border-0 [&>pre]:!rounded-none [&>pre]:!bg-transparent [&>pre]:!p-4 [&>pre]:font-mono [&>pre]:text-sm [&>pre]:leading-relaxed [&_code]:!m-0 [&_code]:!p-0 [&_code]:!bg-transparent [&_code]:!border-0\"\n dangerouslySetInnerHTML={{\n __html: processHighlightedHtml(html, highlightLines),\n }}\n />\n </div>\n )}\n {copyButton}\n </div>\n );\n}\n\nCodeHighlighted.displayName = \"CodeHighlighted\";\n\n/**\n * Process Shiki's HTML output to add line highlighting classes.\n * Does NOT modify Shiki's token structure - only adds classes to line spans.\n */\nfunction processHighlightedHtml(\n html: string,\n highlightLines?: number[],\n): string {\n // Line numbers are not yet supported - would require more complex approach\n // For now, only handle line highlighting which just adds a class\n\n if (!highlightLines?.length) {\n return html;\n }\n\n const highlightSet = new Set(highlightLines);\n let lineNumber = 0;\n\n // Only add the highlight class to lines, don't restructure the HTML\n return html.replace(/<span class=\"line\">/g, () => {\n lineNumber++;\n const isHighlighted = highlightSet.has(lineNumber);\n return isHighlighted\n ? '<span class=\"line line-highlighted\">'\n : '<span class=\"line\">';\n });\n}\n"],"names":["ShikiContext","createContext","LANGUAGE_ALIASES","BUNDLED_LANGS","n","normalizeLanguage","lang","DEFAULT_LABELS","ShikiProvider","engine","languages","labels","children","state","setState","useState","useEffect","cancelled","initializeShiki","createHighlighterCore","engineInstance","m","githubLight","vesper","validLanguages","langModules","highlighter","err","mergedLabels","useMemo","contextValue","useShikiHighlighter","context","useContext","isLoading","error","useCallback","code","normalizedLang","CodeHighlighted","showLineNumbers","highlightLines","showCopyButton","labelOverrides","className","highlight","providerLabels","copied","setCopied","handleCopy","html","lineCount","isSingleLine","containerClasses","cn","copyButton","jsx","Button","lineNumbers","_","i","jsxs","processHighlightedHtml","highlightSet","lineNumber"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { A as e, b as t, K as T, a as o } from "../chunks/autocomplete-
|
|
2
|
+
import { A as e, b as t, K as T, a as o } from "../chunks/autocomplete-h39m8kzoq0csjh9l.js";
|
|
3
3
|
export {
|
|
4
4
|
e as Autocomplete,
|
|
5
5
|
t as KUMO_AUTOCOMPLETE_DEFAULT_VARIANTS,
|
package/dist/components/badge.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { B as r, a as A, K as B, b as R } from "../chunks/breadcrumbs-
|
|
2
|
+
import { B as r, a as A, K as B, b as R } from "../chunks/breadcrumbs-g4pyoikibpoxsgw4.js";
|
|
3
3
|
export {
|
|
4
4
|
r as Breadcrumbs,
|
|
5
5
|
A as KUMO_BREADCRUMBS_DEFAULT_VARIANTS,
|
package/dist/components/chart.js
CHANGED
package/dist/components/empty.js
CHANGED
package/dist/components/field.js
CHANGED
package/dist/components/input.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { I as t, i as I } from "../chunks/input-
|
|
3
|
-
import { I as e, T as p } from "../chunks/input-area-
|
|
4
|
-
import { I as T, a as U, K as _ } from "../chunks/input-group-
|
|
2
|
+
import { I as t, i as I } from "../chunks/input-mv7giprcc6hfkpq3.js";
|
|
3
|
+
import { I as e, T as p } from "../chunks/input-area-hhhpgg0ev8bowtrk.js";
|
|
4
|
+
import { I as T, a as U, K as _ } from "../chunks/input-group-kkw5j7rwzhj66h10.js";
|
|
5
5
|
export {
|
|
6
6
|
t as Input,
|
|
7
7
|
e as InputArea,
|
package/dist/components/label.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { b as e, K as l, L as A, a as L, l as t } from "../chunks/label-
|
|
2
|
+
import { b as e, K as l, L as A, a as L, l as t } from "../chunks/label-f6yvqca8qhbpvkq8.js";
|
|
3
3
|
export {
|
|
4
4
|
e as KUMO_LABEL_DEFAULT_VARIANTS,
|
|
5
5
|
l as KUMO_LABEL_VARIANTS,
|
package/dist/components/link.js
CHANGED
package/dist/components/meter.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { g as r, K as s, P, f as a, c as p, e as t, a as v, d as O, b as i } from "../chunks/popover-
|
|
2
|
+
import { g as r, K as s, P, f as a, c as p, e as t, a as v, d as O, b as i } from "../chunks/popover-js5ds3szd43kspja.js";
|
|
3
3
|
export {
|
|
4
4
|
r as KUMO_POPOVER_DEFAULT_VARIANTS,
|
|
5
5
|
s as KUMO_POPOVER_VARIANTS,
|
package/dist/components/radio.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { b as A, K as R, R as o, a as r, r as i } from "../chunks/radio-
|
|
2
|
+
import { b as A, K as R, R as o, a as r, r as i } from "../chunks/radio-nyw89v4eafptepmz.js";
|
|
3
3
|
export {
|
|
4
4
|
A as KUMO_RADIO_DEFAULT_VARIANTS,
|
|
5
5
|
R as KUMO_RADIO_VARIANTS,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { a as T, K as _, S as N } from "../chunks/sensitive-input-
|
|
2
|
+
import { a as T, K as _, S as N } from "../chunks/sensitive-input-bjg6m791yz7g6bn3.js";
|
|
3
3
|
export {
|
|
4
4
|
T as KUMO_SENSITIVE_INPUT_DEFAULT_VARIANTS,
|
|
5
5
|
_ as KUMO_SENSITIVE_INPUT_VARIANTS,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { A as r, B as i, K as S, S as s, w as b, y as d, x as n, d as o, e as u, f as t, h as l, g as M, c as p, r as A, i as I, l as R, m as B, k as C, v as _, j as g, n as T, p as m, o as D, a as E, t as G, u as K, b as U, q as c, s as v, z as L } from "../chunks/sidebar-
|
|
2
|
+
import { A as r, B as i, K as S, S as s, w as b, y as d, x as n, d as o, e as u, f as t, h as l, g as M, c as p, r as A, i as I, l as R, m as B, k as C, v as _, j as g, n as T, p as m, o as D, a as E, t as G, u as K, b as U, q as c, s as v, z as L } from "../chunks/sidebar-izcfqkrzt4vqn8ez.js";
|
|
3
3
|
export {
|
|
4
4
|
r as KUMO_SIDEBAR_DEFAULT_VARIANTS,
|
|
5
5
|
i as KUMO_SIDEBAR_STYLING,
|
package/dist/components/table.js
CHANGED
package/dist/components/tabs.js
CHANGED
package/dist/components/toast.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { a as s, T as e, c as r, u as t } from "../chunks/toast-
|
|
3
|
-
import { i as u } from "../chunks/vendor-base-ui-
|
|
2
|
+
import { a as s, T as e, c as r, u as t } from "../chunks/toast-ejfm5cbt9yulqhol.js";
|
|
3
|
+
import { i as u } from "../chunks/vendor-base-ui-mzjqwv5teijixz8h.js";
|
|
4
4
|
export {
|
|
5
5
|
u as Toast,
|
|
6
6
|
s as ToastProvider,
|
package/dist/index.js
CHANGED
|
@@ -1,52 +1,52 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { B as Y } from "./chunks/badge-
|
|
2
|
+
import { B as Y } from "./chunks/badge-e9w8qrjmeu9nocf6.js";
|
|
3
3
|
import { B as O } from "./chunks/banner-ip2lm8r87hich557.js";
|
|
4
4
|
import { a as Q } from "./chunks/banner-ip2lm8r87hich557.js";
|
|
5
|
-
import { B as l } from "./chunks/button-
|
|
6
|
-
import { L as aa, R as ea, b as oa } from "./chunks/button-
|
|
5
|
+
import { B as l } from "./chunks/button-fxdpoacmq5rv1adk.js";
|
|
6
|
+
import { L as aa, R as ea, b as oa } from "./chunks/button-fxdpoacmq5rv1adk.js";
|
|
7
7
|
import { D as sa } from "./chunks/date-range-picker-o8uyril1kogvhoei.js";
|
|
8
|
-
import { C as ia } from "./chunks/checkbox-
|
|
9
|
-
import { C as la } from "./chunks/clipboard-text-
|
|
8
|
+
import { C as ia } from "./chunks/checkbox-dtoq56ieijj9m6vr.js";
|
|
9
|
+
import { C as la } from "./chunks/clipboard-text-nvdsloomefwgcxat.js";
|
|
10
10
|
import { C as ma, a as pa } from "./chunks/code-bbnjm8vk9hxl129r.js";
|
|
11
|
-
import { C as ca } from "./chunks/combobox-
|
|
12
|
-
import { a as M, D as U, c as N, e as u } from "./chunks/dialog-
|
|
13
|
-
import { d as Aa, b as ba } from "./chunks/dialog-
|
|
14
|
-
import { D as Sa } from "./chunks/dropdown-
|
|
15
|
-
import { C as _a } from "./chunks/collapsible-
|
|
16
|
-
import { F as Ia, a as La, K as Ra, f as Ea } from "./chunks/field-
|
|
17
|
-
import { b as Ma, K as Ua, L as Na, a as Ka, l as ga } from "./chunks/label-
|
|
18
|
-
import { I as K } from "./chunks/input-
|
|
19
|
-
import { i as Da } from "./chunks/input-
|
|
20
|
-
import { I as va, T as Pa } from "./chunks/input-area-
|
|
21
|
-
import { I as Ba } from "./chunks/input-group-
|
|
22
|
-
import { L as ya } from "./chunks/layer-card-
|
|
11
|
+
import { C as ca } from "./chunks/combobox-jcqn64ixr4557a0s.js";
|
|
12
|
+
import { a as M, D as U, c as N, e as u } from "./chunks/dialog-gndju3sqg1lmpb3f.js";
|
|
13
|
+
import { d as Aa, b as ba } from "./chunks/dialog-gndju3sqg1lmpb3f.js";
|
|
14
|
+
import { D as Sa } from "./chunks/dropdown-k6orz4j043xybf54.js";
|
|
15
|
+
import { C as _a } from "./chunks/collapsible-cnsxmp7dko87pgx0.js";
|
|
16
|
+
import { F as Ia, a as La, K as Ra, f as Ea } from "./chunks/field-n16udu32tpyq5udz.js";
|
|
17
|
+
import { b as Ma, K as Ua, L as Na, a as Ka, l as ga } from "./chunks/label-f6yvqca8qhbpvkq8.js";
|
|
18
|
+
import { I as K } from "./chunks/input-mv7giprcc6hfkpq3.js";
|
|
19
|
+
import { i as Da } from "./chunks/input-mv7giprcc6hfkpq3.js";
|
|
20
|
+
import { I as va, T as Pa } from "./chunks/input-area-hhhpgg0ev8bowtrk.js";
|
|
21
|
+
import { I as Ba } from "./chunks/input-group-kkw5j7rwzhj66h10.js";
|
|
22
|
+
import { L as ya } from "./chunks/layer-card-gegkqhkjy65l1ueo.js";
|
|
23
23
|
import { L as Ga } from "./chunks/loader-g8a6j76ue5nq0lr8.js";
|
|
24
24
|
import { S as ja } from "./chunks/skeleton-line-epxenksfesr2fkcv.js";
|
|
25
|
-
import { M as qa, u as Ha } from "./chunks/menubar-
|
|
26
|
-
import { M as Xa } from "./chunks/meter-
|
|
27
|
-
import { P as Ja } from "./chunks/pagination-
|
|
28
|
-
import { S as Za } from "./chunks/select-
|
|
29
|
-
import { S as ee } from "./chunks/surface-
|
|
30
|
-
import { S as re } from "./chunks/switch-
|
|
31
|
-
import { T as te } from "./chunks/tabs-
|
|
32
|
-
import { T as ne } from "./chunks/table-
|
|
25
|
+
import { M as qa, u as Ha } from "./chunks/menubar-d5s6h96nw8ggy04a.js";
|
|
26
|
+
import { M as Xa } from "./chunks/meter-kxn34sy6l2mz5dwq.js";
|
|
27
|
+
import { P as Ja } from "./chunks/pagination-ixbq8ssuuo0jxaa4.js";
|
|
28
|
+
import { S as Za } from "./chunks/select-o2i7aovnu8v1zv8t.js";
|
|
29
|
+
import { S as ee } from "./chunks/surface-lzwbh3f5t0gxc83t.js";
|
|
30
|
+
import { S as re } from "./chunks/switch-d9cs31oj4rjtg717.js";
|
|
31
|
+
import { T as te } from "./chunks/tabs-f0ztlooi91ko9g04.js";
|
|
32
|
+
import { T as ne } from "./chunks/table-c6qemc2jmv22cv3p.js";
|
|
33
33
|
import { T as de } from "./chunks/text-be7ehenoyldhyjma.js";
|
|
34
|
-
import { a as pe, T as fe, c as ce, u as Te } from "./chunks/toast-
|
|
35
|
-
import { T as be, a as ue } from "./chunks/tooltip-
|
|
36
|
-
import { g as xe, K as _e, P as Ce } from "./chunks/popover-
|
|
37
|
-
import { a as Le, K as Re, S as Ee } from "./chunks/sensitive-input-
|
|
38
|
-
import { b as Me, K as Ue, R as Ne, a as Ke, r as ge } from "./chunks/radio-
|
|
39
|
-
import { C as De, a as Ve, K as ve } from "./chunks/command-palette-
|
|
40
|
-
import { a as ke, K as Be, L as Fe, l as ye } from "./chunks/link-
|
|
41
|
-
import { B as Ge } from "./chunks/breadcrumbs-
|
|
42
|
-
import { E as je } from "./chunks/empty-
|
|
34
|
+
import { a as pe, T as fe, c as ce, u as Te } from "./chunks/toast-ejfm5cbt9yulqhol.js";
|
|
35
|
+
import { T as be, a as ue } from "./chunks/tooltip-o6xfw9jjclv9pxaj.js";
|
|
36
|
+
import { g as xe, K as _e, P as Ce } from "./chunks/popover-js5ds3szd43kspja.js";
|
|
37
|
+
import { a as Le, K as Re, S as Ee } from "./chunks/sensitive-input-bjg6m791yz7g6bn3.js";
|
|
38
|
+
import { b as Me, K as Ue, R as Ne, a as Ke, r as ge } from "./chunks/radio-nyw89v4eafptepmz.js";
|
|
39
|
+
import { C as De, a as Ve, K as ve } from "./chunks/command-palette-jrq7p16tff6n46nj.js";
|
|
40
|
+
import { a as ke, K as Be, L as Fe, l as ye } from "./chunks/link-jjk7qolyol7s1jkk.js";
|
|
41
|
+
import { B as Ge } from "./chunks/breadcrumbs-g4pyoikibpoxsgw4.js";
|
|
42
|
+
import { E as je } from "./chunks/empty-ni12ufom1kkakbuc.js";
|
|
43
43
|
import { G as qe, a as He, c as We, K as Xe, b as Ye, g as Je } from "./chunks/grid-do93dv1rjggqxx7p.js";
|
|
44
44
|
import { C as Ze, a as ao, K as eo, P as oo, g as ro } from "./chunks/cloudflare-logo-fya2cd2ljozkzjh8.js";
|
|
45
45
|
import { D as to } from "./chunks/date-picker-mjocqqbggb76n8rt.js";
|
|
46
46
|
import { Flow as no } from "./components/flow.js";
|
|
47
|
-
import { C as mo, a as po, b as fo, S as co, T as To } from "./chunks/SankeyChart-
|
|
48
|
-
import { A as bo, b as uo, K as So, a as xo } from "./chunks/autocomplete-
|
|
49
|
-
import { A as Co, B as Io, K as Lo, S as Ro, w as Eo, y as Oo, x as Mo, d as Uo, e as No, f as Ko, h as go, g as ho, c as Do, r as Vo, i as vo, l as Po, m as ko, k as Bo, v as Fo, j as yo, n as wo, p as Go, o as zo, a as jo, t as $o, u as qo, b as Ho, q as Wo, s as Xo, z as Yo } from "./chunks/sidebar-
|
|
47
|
+
import { C as mo, a as po, b as fo, S as co, T as To } from "./chunks/SankeyChart-krkvltewpn3bbupw.js";
|
|
48
|
+
import { A as bo, b as uo, K as So, a as xo } from "./chunks/autocomplete-h39m8kzoq0csjh9l.js";
|
|
49
|
+
import { A as Co, B as Io, K as Lo, S as Ro, w as Eo, y as Oo, x as Mo, d as Uo, e as No, f as Ko, h as go, g as ho, c as Do, r as Vo, i as vo, l as Po, m as ko, k as Bo, v as Fo, j as yo, n as wo, p as Go, o as zo, a as jo, t as $o, u as qo, b as Ho, q as Wo, s as Xo, z as Yo } from "./chunks/sidebar-izcfqkrzt4vqn8ez.js";
|
|
50
50
|
import { a as Qo, K as Zo, T as ar } from "./chunks/table-of-contents-fzyv7uhnnyr13dqu.js";
|
|
51
51
|
import { c as g } from "./chunks/cn-ct4n7r74mh8y0f48.js";
|
|
52
52
|
import { s as or } from "./chunks/cn-ct4n7r74mh8y0f48.js";
|
|
@@ -55,7 +55,7 @@ import { K as nr } from "./chunks/portal-provider-hwmkdmkpvct0cb76.js";
|
|
|
55
55
|
import { jsx as a, jsxs as e } from "react/jsx-runtime";
|
|
56
56
|
import { useState as S, useEffect as h, useCallback as d } from "react";
|
|
57
57
|
import { XIcon as D, WarningCircleIcon as V, CheckIcon as v, CopyIcon as P } from "@phosphor-icons/react";
|
|
58
|
-
import { i as dr } from "./chunks/vendor-base-ui-
|
|
58
|
+
import { i as dr } from "./chunks/vendor-base-ui-mzjqwv5teijixz8h.js";
|
|
59
59
|
const H = {
|
|
60
60
|
size: {
|
|
61
61
|
sm: {
|