@cloudflare/kumo 1.16.0 → 1.18.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 +163 -0
- package/ai/USAGE.md +38 -30
- package/ai/component-registry.json +237 -93
- package/ai/component-registry.md +421 -45
- package/ai/schemas.ts +15 -5
- package/dist/.build-complete +1 -1
- package/dist/ai/schemas.d.ts +105 -49
- package/dist/ai/schemas.d.ts.map +1 -1
- package/dist/ai/schemas.js +187 -174
- package/dist/ai/schemas.js.map +1 -1
- package/dist/chunks/{Legend-bov5dqf08wemc2qj.js → Legend-o0ntojbaplmszwk0.js} +4 -2
- package/dist/chunks/Legend-o0ntojbaplmszwk0.js.map +1 -0
- package/dist/chunks/badge-dan90i0rzy4pwa1j.js +102 -0
- package/dist/chunks/badge-dan90i0rzy4pwa1j.js.map +1 -0
- package/dist/chunks/banner-eiwcnk7ts21s3bnb.js +79 -0
- package/dist/chunks/banner-eiwcnk7ts21s3bnb.js.map +1 -0
- package/dist/chunks/{breadcrumbs-m79gm4gjwbfajpna.js → breadcrumbs-k39s28qx05vbxxth.js} +3 -3
- package/dist/chunks/{breadcrumbs-m79gm4gjwbfajpna.js.map → breadcrumbs-k39s28qx05vbxxth.js.map} +1 -1
- package/dist/chunks/{button-j0hi0afn33w9lxgi.js → button-cdxnqcgzwko8ooha.js} +55 -53
- package/dist/chunks/button-cdxnqcgzwko8ooha.js.map +1 -0
- package/dist/chunks/{checkbox-lawmt1894wr6rpgi.js → checkbox-kt1uojk2f9e0d0h1.js} +46 -55
- package/dist/chunks/checkbox-kt1uojk2f9e0d0h1.js.map +1 -0
- package/dist/chunks/{clipboard-text-ohx8kkpxisz382rj.js → clipboard-text-vcbvmtne4zjk4b18.js} +55 -54
- package/dist/chunks/clipboard-text-vcbvmtne4zjk4b18.js.map +1 -0
- package/dist/chunks/{code-liq1g6f5lhee305d.js → code-cz0w1y5z4h29a9eg.js} +18 -18
- package/dist/chunks/code-cz0w1y5z4h29a9eg.js.map +1 -0
- package/dist/chunks/{combobox-ft0u7rfaxawk0r0c.js → combobox-he2hd9e2ruknq5mp.js} +97 -82
- package/dist/chunks/combobox-he2hd9e2ruknq5mp.js.map +1 -0
- package/dist/chunks/{command-palette-b31nq4wk7o7gx4sa.js → command-palette-jc1w07jwakxvj23a.js} +159 -155
- package/dist/chunks/command-palette-jc1w07jwakxvj23a.js.map +1 -0
- package/dist/chunks/{dialog-l5tmwxrzp9g83jmw.js → dialog-oqh8l3l3zutpibxx.js} +22 -20
- package/dist/chunks/dialog-oqh8l3l3zutpibxx.js.map +1 -0
- package/dist/chunks/{dropdown-icy3xatdwhzr4une.js → dropdown-ncwhcd912vmone8k.js} +96 -90
- package/dist/chunks/dropdown-ncwhcd912vmone8k.js.map +1 -0
- package/dist/chunks/{empty-hrwtammqp0b2nvtf.js → empty-cj898km1r8xwuw44.js} +2 -2
- package/dist/chunks/{empty-hrwtammqp0b2nvtf.js.map → empty-cj898km1r8xwuw44.js.map} +1 -1
- package/dist/chunks/{field-csje72m7j9403fj5.js → field-krp6z6vfbkrvufz2.js} +3 -3
- package/dist/chunks/{field-csje72m7j9403fj5.js.map → field-krp6z6vfbkrvufz2.js.map} +1 -1
- package/dist/chunks/input-area-no30c09udyjxshu5.js +78 -0
- package/dist/chunks/input-area-no30c09udyjxshu5.js.map +1 -0
- package/dist/chunks/{input-group-cjsy8kh4vf9312xl.js → input-group-lxdd09p60cf27pe1.js} +26 -26
- package/dist/chunks/input-group-lxdd09p60cf27pe1.js.map +1 -0
- package/dist/chunks/{input-c8jmidy7gdqfiky1.js → input-h48k3uagzrgb98au.js} +40 -36
- package/dist/chunks/input-h48k3uagzrgb98au.js.map +1 -0
- package/dist/chunks/{label-i46xnnzdh9bsxk6a.js → label-latndvb1ngem7we8.js} +3 -3
- package/dist/chunks/{label-i46xnnzdh9bsxk6a.js.map → label-latndvb1ngem7we8.js.map} +1 -1
- package/dist/chunks/{layer-card-mu2w82x6ko1nhhtr.js → layer-card-l5yjvrxry1dhte57.js} +8 -8
- package/dist/chunks/{layer-card-mu2w82x6ko1nhhtr.js.map → layer-card-l5yjvrxry1dhte57.js.map} +1 -1
- package/dist/chunks/{link-o7yfj4kwgl19fklp.js → link-hn5ejal7nhh0o0b4.js} +2 -2
- package/dist/chunks/{link-o7yfj4kwgl19fklp.js.map → link-hn5ejal7nhh0o0b4.js.map} +1 -1
- package/dist/chunks/{loader-m5wfmqwgucrr4i5v.js → loader-hr2w7cpqeev3p3vl.js} +9 -6
- package/dist/chunks/loader-hr2w7cpqeev3p3vl.js.map +1 -0
- package/dist/chunks/{menubar-g1wqqjuyyfvsim83.js → menubar-f1pilzooe5mue7c4.js} +20 -20
- package/dist/chunks/menubar-f1pilzooe5mue7c4.js.map +1 -0
- package/dist/chunks/{meter-cqkrg5axjenbsuue.js → meter-gfa1hz9fhjnvx784.js} +2 -2
- package/dist/chunks/{meter-cqkrg5axjenbsuue.js.map → meter-gfa1hz9fhjnvx784.js.map} +1 -1
- package/dist/chunks/pagination-cu5lm6p5dxuycta4.js +243 -0
- package/dist/chunks/pagination-cu5lm6p5dxuycta4.js.map +1 -0
- package/dist/chunks/{popover-jurf834u2uywluux.js → popover-h300w4vit0s2ayej.js} +31 -28
- package/dist/chunks/popover-h300w4vit0s2ayej.js.map +1 -0
- package/dist/chunks/portal-provider-hwmkdmkpvct0cb76.js +18 -0
- package/dist/chunks/portal-provider-hwmkdmkpvct0cb76.js.map +1 -0
- package/dist/chunks/{radio-l9dzm6sohcvvrsdc.js → radio-jouttv89lbvhs55r.js} +47 -50
- package/dist/chunks/radio-jouttv89lbvhs55r.js.map +1 -0
- package/dist/chunks/select-kva5ru5f673kah1m.js +179 -0
- package/dist/chunks/select-kva5ru5f673kah1m.js.map +1 -0
- package/dist/chunks/{sensitive-input-lvtccf3iqc06lj7b.js → sensitive-input-hd4tpqkzifad1yca.js} +90 -84
- package/dist/chunks/sensitive-input-hd4tpqkzifad1yca.js.map +1 -0
- package/dist/chunks/{sidebar-l6rk9o5qf8k5vth1.js → sidebar-hljy3ssm8itc0ucx.js} +5 -5
- package/dist/chunks/sidebar-hljy3ssm8itc0ucx.js.map +1 -0
- package/dist/chunks/skeleton-line-epxenksfesr2fkcv.js +33 -0
- package/dist/chunks/skeleton-line-epxenksfesr2fkcv.js.map +1 -0
- package/dist/chunks/surface-cilvbyhmyujz1bee.js +36 -0
- package/dist/chunks/surface-cilvbyhmyujz1bee.js.map +1 -0
- package/dist/chunks/switch-ihaydbzem62bey4p.js +243 -0
- package/dist/chunks/switch-ihaydbzem62bey4p.js.map +1 -0
- package/dist/chunks/table-inweecadl3her7pd.js +183 -0
- package/dist/chunks/table-inweecadl3her7pd.js.map +1 -0
- package/dist/chunks/tabs-e7eh7l3mpk3xgmwq.js +92 -0
- package/dist/chunks/{tabs-n0t7iro7wr0pzgk2.js.map → tabs-e7eh7l3mpk3xgmwq.js.map} +1 -1
- package/dist/chunks/{text-gzt92mlji1lug13d.js → text-nmyi1rkwdj37f30f.js} +24 -22
- package/dist/chunks/text-nmyi1rkwdj37f30f.js.map +1 -0
- package/dist/chunks/{toast-r9ajsces7xp8l85w.js → toast-bpz6iaq54u9jmuu8.js} +62 -60
- package/dist/chunks/toast-bpz6iaq54u9jmuu8.js.map +1 -0
- package/dist/chunks/toml-nczb2z9n0o23o3ci.js +8 -0
- package/dist/chunks/toml-nczb2z9n0o23o3ci.js.map +1 -0
- package/dist/chunks/{tooltip-hnc71tg4gz2gpcvc.js → tooltip-belkznz8t8333h5f.js} +28 -21
- package/dist/chunks/tooltip-belkznz8t8333h5f.js.map +1 -0
- package/dist/chunks/{vendor-base-ui-ccr5l0ynrievzzv3.js → vendor-base-ui-k7bzesq81ie36nya.js} +55 -51
- package/dist/chunks/{vendor-base-ui-ccr5l0ynrievzzv3.js.map → vendor-base-ui-k7bzesq81ie36nya.js.map} +1 -1
- package/dist/code/server.js +10 -9
- package/dist/code/server.js.map +1 -1
- package/dist/code.js +3 -2
- package/dist/code.js.map +1 -1
- package/dist/components/badge.js +1 -1
- package/dist/components/banner.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/code.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/flow.js +5 -4
- package/dist/components/flow.js.map +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/loader.js +2 -2
- 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/text.js +1 -1
- package/dist/components/toast.js +2 -2
- package/dist/components/tooltip.js +1 -1
- package/dist/index.js +76 -74
- package/dist/index.js.map +1 -1
- 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/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.d.ts.map +1 -1
- package/dist/scripts/theme-generator/config.js +226 -43
- package/dist/scripts/theme-generator/config.js.map +1 -1
- package/dist/src/code/provider.d.ts.map +1 -1
- package/dist/src/code/server.d.ts.map +1 -1
- package/dist/src/code/types.d.ts +1 -1
- package/dist/src/code/types.d.ts.map +1 -1
- package/dist/src/components/badge/badge.d.ts +76 -21
- package/dist/src/components/badge/badge.d.ts.map +1 -1
- package/dist/src/components/banner/banner.d.ts +5 -3
- package/dist/src/components/banner/banner.d.ts.map +1 -1
- package/dist/src/components/button/button.d.ts +4 -2
- package/dist/src/components/button/button.d.ts.map +1 -1
- package/dist/src/components/chart/TimeseriesChart.d.ts.map +1 -1
- package/dist/src/components/checkbox/checkbox.d.ts +1 -1
- package/dist/src/components/checkbox/checkbox.d.ts.map +1 -1
- package/dist/src/components/clipboard-text/clipboard-text.d.ts +2 -0
- package/dist/src/components/clipboard-text/clipboard-text.d.ts.map +1 -1
- package/dist/src/components/code/code.d.ts.map +1 -1
- package/dist/src/components/combobox/combobox.d.ts +8 -1
- package/dist/src/components/combobox/combobox.d.ts.map +1 -1
- package/dist/src/components/command-palette/command-palette.d.ts +9 -2
- package/dist/src/components/command-palette/command-palette.d.ts.map +1 -1
- package/dist/src/components/command-palette/types.d.ts +7 -0
- package/dist/src/components/command-palette/types.d.ts.map +1 -1
- package/dist/src/components/dialog/dialog.d.ts +8 -1
- package/dist/src/components/dialog/dialog.d.ts.map +1 -1
- package/dist/src/components/dropdown/dropdown.d.ts +17 -2
- package/dist/src/components/dropdown/dropdown.d.ts.map +1 -1
- package/dist/src/components/flow/diagram.d.ts.map +1 -1
- package/dist/src/components/input/input-area.d.ts.map +1 -1
- package/dist/src/components/input/input.d.ts +1 -2
- package/dist/src/components/input/input.d.ts.map +1 -1
- package/dist/src/components/loader/loader.d.ts +7 -1
- package/dist/src/components/loader/loader.d.ts.map +1 -1
- package/dist/src/components/loader/skeleton-line.d.ts +2 -1
- package/dist/src/components/loader/skeleton-line.d.ts.map +1 -1
- package/dist/src/components/pagination/pagination.d.ts +11 -1
- package/dist/src/components/pagination/pagination.d.ts.map +1 -1
- package/dist/src/components/popover/popover.d.ts +8 -1
- package/dist/src/components/popover/popover.d.ts.map +1 -1
- package/dist/src/components/radio/radio.d.ts +1 -1
- package/dist/src/components/radio/radio.d.ts.map +1 -1
- package/dist/src/components/select/select.d.ts +74 -3
- package/dist/src/components/select/select.d.ts.map +1 -1
- package/dist/src/components/sensitive-input/sensitive-input.d.ts +1 -1
- package/dist/src/components/sensitive-input/sensitive-input.d.ts.map +1 -1
- package/dist/src/components/surface/surface.d.ts +23 -23
- package/dist/src/components/surface/surface.d.ts.map +1 -1
- package/dist/src/components/switch/switch.d.ts.map +1 -1
- package/dist/src/components/table/table.d.ts +34 -2
- package/dist/src/components/table/table.d.ts.map +1 -1
- package/dist/src/components/tabs/tabs.d.ts.map +1 -1
- package/dist/src/components/text/text.d.ts +5 -0
- package/dist/src/components/text/text.d.ts.map +1 -1
- package/dist/src/components/toast/toast.d.ts +16 -9
- package/dist/src/components/toast/toast.d.ts.map +1 -1
- package/dist/src/components/tooltip/tooltip.d.ts +21 -6
- package/dist/src/components/tooltip/tooltip.d.ts.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/utils/index.d.ts +1 -0
- package/dist/src/utils/index.d.ts.map +1 -1
- package/dist/src/utils/portal-provider.d.ts +56 -0
- package/dist/src/utils/portal-provider.d.ts.map +1 -0
- package/dist/styles/kumo-binding.css +52 -46
- package/dist/styles/kumo-standalone.css +1 -1
- package/dist/styles/theme-fedramp.css +6 -6
- package/dist/styles/theme-kumo.css +183 -64
- package/dist/utils.js +8 -6
- package/dist/utils.js.map +1 -1
- package/package.json +2 -2
- package/scripts/component-registry/index.test.ts +4 -4
- package/scripts/component-registry/metadata.ts +3 -3
- package/scripts/theme-generator/config.ts +236 -43
- package/dist/chunks/Legend-bov5dqf08wemc2qj.js.map +0 -1
- package/dist/chunks/badge-mrshucy2530o70cq.js +0 -56
- package/dist/chunks/badge-mrshucy2530o70cq.js.map +0 -1
- package/dist/chunks/banner-vzdjbqsb6em7tmdk.js +0 -75
- package/dist/chunks/banner-vzdjbqsb6em7tmdk.js.map +0 -1
- package/dist/chunks/button-j0hi0afn33w9lxgi.js.map +0 -1
- package/dist/chunks/checkbox-lawmt1894wr6rpgi.js.map +0 -1
- package/dist/chunks/clipboard-text-ohx8kkpxisz382rj.js.map +0 -1
- package/dist/chunks/code-liq1g6f5lhee305d.js.map +0 -1
- package/dist/chunks/combobox-ft0u7rfaxawk0r0c.js.map +0 -1
- package/dist/chunks/command-palette-b31nq4wk7o7gx4sa.js.map +0 -1
- package/dist/chunks/dialog-l5tmwxrzp9g83jmw.js.map +0 -1
- package/dist/chunks/dropdown-icy3xatdwhzr4une.js.map +0 -1
- package/dist/chunks/input-area-jko15sbc6zeage3l.js +0 -74
- package/dist/chunks/input-area-jko15sbc6zeage3l.js.map +0 -1
- package/dist/chunks/input-c8jmidy7gdqfiky1.js.map +0 -1
- package/dist/chunks/input-group-cjsy8kh4vf9312xl.js.map +0 -1
- package/dist/chunks/loader-m5wfmqwgucrr4i5v.js.map +0 -1
- package/dist/chunks/menubar-g1wqqjuyyfvsim83.js.map +0 -1
- package/dist/chunks/pagination-e3dp8bd80s35f7sd.js +0 -224
- package/dist/chunks/pagination-e3dp8bd80s35f7sd.js.map +0 -1
- package/dist/chunks/popover-jurf834u2uywluux.js.map +0 -1
- package/dist/chunks/radio-l9dzm6sohcvvrsdc.js.map +0 -1
- package/dist/chunks/select-hnt87e3cfos48qql.js +0 -130
- package/dist/chunks/select-hnt87e3cfos48qql.js.map +0 -1
- package/dist/chunks/sensitive-input-lvtccf3iqc06lj7b.js.map +0 -1
- package/dist/chunks/sidebar-l6rk9o5qf8k5vth1.js.map +0 -1
- package/dist/chunks/skeleton-line-1j5exu6vv07mmhfb.js +0 -28
- package/dist/chunks/skeleton-line-1j5exu6vv07mmhfb.js.map +0 -1
- package/dist/chunks/surface-dhshylwccuaz91d1.js +0 -21
- package/dist/chunks/surface-dhshylwccuaz91d1.js.map +0 -1
- package/dist/chunks/switch-fukrbip86khvqjn7.js +0 -241
- package/dist/chunks/switch-fukrbip86khvqjn7.js.map +0 -1
- package/dist/chunks/table-orfgzwvxh8yr90dk.js +0 -155
- package/dist/chunks/table-orfgzwvxh8yr90dk.js.map +0 -1
- package/dist/chunks/tabs-n0t7iro7wr0pzgk2.js +0 -86
- package/dist/chunks/text-gzt92mlji1lug13d.js.map +0 -1
- package/dist/chunks/toast-r9ajsces7xp8l85w.js.map +0 -1
- package/dist/chunks/tooltip-hnc71tg4gz2gpcvc.js.map +0 -1
package/dist/chunks/{clipboard-text-ohx8kkpxisz382rj.js → clipboard-text-vcbvmtne4zjk4b18.js}
RENAMED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsxs as c, jsx as e } from "react/jsx-runtime";
|
|
3
|
-
import { CheckIcon as
|
|
4
|
-
import { forwardRef as
|
|
5
|
-
import { B as
|
|
6
|
-
import { i as
|
|
7
|
-
import { c as
|
|
8
|
-
import { U as
|
|
9
|
-
const h =
|
|
3
|
+
import { CheckIcon as R, CopyIcon as A } from "@phosphor-icons/react";
|
|
4
|
+
import { forwardRef as S, useState as P, useRef as _, useCallback as I } from "react";
|
|
5
|
+
import { B as O } from "./button-cdxnqcgzwko8ooha.js";
|
|
6
|
+
import { i as M } from "./input-h48k3uagzrgb98au.js";
|
|
7
|
+
import { c as s } from "./cn-ct4n7r74mh8y0f48.js";
|
|
8
|
+
import { U as V, V as j, W as B, X as U, Y as D, Z as E, _ as L, $ as X, a0 as K, a1 as W, a2 as F, a3 as Y, a4 as Z } from "./vendor-base-ui-k7bzesq81ie36nya.js";
|
|
9
|
+
const h = V(), y = {
|
|
10
10
|
size: {
|
|
11
11
|
sm: {
|
|
12
12
|
classes: "text-xs",
|
|
@@ -24,7 +24,7 @@ const h = M(), y = {
|
|
|
24
24
|
description: "Large clipboard text for prominent display"
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
},
|
|
27
|
+
}, v = {
|
|
28
28
|
size: "lg"
|
|
29
29
|
}, l = {
|
|
30
30
|
slide: {
|
|
@@ -33,56 +33,57 @@ const h = M(), y = {
|
|
|
33
33
|
end: "pointer-events-none absolute inset-0 flex items-center justify-center opacity-0 -translate-y-full"
|
|
34
34
|
}
|
|
35
35
|
};
|
|
36
|
-
function
|
|
37
|
-
size: t =
|
|
36
|
+
function $({
|
|
37
|
+
size: t = v.size
|
|
38
38
|
} = {}) {
|
|
39
|
-
return
|
|
39
|
+
return s(
|
|
40
40
|
// Base styles
|
|
41
41
|
"flex items-center overflow-hidden bg-kumo-base px-0 font-mono",
|
|
42
42
|
// Apply size styles from KUMO_CLIPBOARD_TEXT_VARIANTS
|
|
43
43
|
y.size[t].classes
|
|
44
44
|
);
|
|
45
45
|
}
|
|
46
|
-
function
|
|
47
|
-
const { toasts: t } =
|
|
48
|
-
return /* @__PURE__ */ e(
|
|
49
|
-
|
|
46
|
+
function q() {
|
|
47
|
+
const { toasts: t } = K();
|
|
48
|
+
return /* @__PURE__ */ e(W, { className: "pointer-events-none fixed inset-0 isolate", children: t.map((i) => /* @__PURE__ */ e(F, { toast: i, className: "absolute", children: /* @__PURE__ */ e(
|
|
49
|
+
Y,
|
|
50
50
|
{
|
|
51
|
-
toast:
|
|
52
|
-
className:
|
|
51
|
+
toast: i,
|
|
52
|
+
className: s(
|
|
53
53
|
"flex origin-[var(--transform-origin)] flex-col rounded-md bg-kumo-base px-3 py-1.5 text-xs text-kumo-default font-sans",
|
|
54
54
|
"shadow-lg shadow-kumo-tip-shadow outline outline-kumo-fill"
|
|
55
55
|
),
|
|
56
|
-
children: /* @__PURE__ */ e(
|
|
56
|
+
children: /* @__PURE__ */ e(Z, {})
|
|
57
57
|
}
|
|
58
|
-
) },
|
|
58
|
+
) }, i.id)) });
|
|
59
59
|
}
|
|
60
|
-
function
|
|
61
|
-
return /* @__PURE__ */ e(
|
|
62
|
-
/* @__PURE__ */ e(
|
|
60
|
+
function G({ children: t }) {
|
|
61
|
+
return /* @__PURE__ */ e(L, { children: /* @__PURE__ */ c(X, { toastManager: h, children: [
|
|
62
|
+
/* @__PURE__ */ e(q, {}),
|
|
63
63
|
t
|
|
64
64
|
] }) });
|
|
65
65
|
}
|
|
66
|
-
const
|
|
66
|
+
const H = S(
|
|
67
67
|
({
|
|
68
68
|
text: t,
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
textToCopy: i,
|
|
70
|
+
className: C,
|
|
71
|
+
size: m = v.size,
|
|
71
72
|
onCopy: f,
|
|
72
73
|
tooltip: n,
|
|
73
|
-
labels: { copyAction:
|
|
74
|
-
},
|
|
75
|
-
const [r, d] =
|
|
76
|
-
text:
|
|
74
|
+
labels: { copyAction: w = "Copy to clipboard" } = {}
|
|
75
|
+
}, z) => {
|
|
76
|
+
const [r, d] = P(!1), b = _(null), x = y.size[m], {
|
|
77
|
+
text: k = "Copy",
|
|
77
78
|
copiedText: p = "Copied",
|
|
78
79
|
side: u = "top"
|
|
79
|
-
} = n ?? {},
|
|
80
|
+
} = n ?? {}, N = I(async () => {
|
|
80
81
|
try {
|
|
81
82
|
if (typeof navigator < "u" && navigator.clipboard && typeof navigator.clipboard.writeText == "function")
|
|
82
|
-
await navigator.clipboard.writeText(t);
|
|
83
|
+
await navigator.clipboard.writeText(i ?? t);
|
|
83
84
|
else if (typeof document < "u") {
|
|
84
85
|
const o = document.createElement("textarea");
|
|
85
|
-
o.value = t, o.setAttribute("readonly", ""), o.style.position = "absolute", o.style.left = "-9999px", document.body.appendChild(o);
|
|
86
|
+
o.value = i ?? t, o.setAttribute("readonly", ""), o.style.position = "absolute", o.style.left = "-9999px", document.body.appendChild(o);
|
|
86
87
|
const a = document.getSelection(), T = a?.rangeCount ? a.getRangeAt(0) : null;
|
|
87
88
|
o.select();
|
|
88
89
|
try {
|
|
@@ -107,33 +108,33 @@ const G = A(
|
|
|
107
108
|
console.warn("Clipboard copy failed", o);
|
|
108
109
|
}
|
|
109
110
|
}, [t, f, n, p, u]), g = /* @__PURE__ */ c(
|
|
110
|
-
|
|
111
|
+
O,
|
|
111
112
|
{
|
|
112
113
|
ref: b,
|
|
113
114
|
size: x.buttonSize,
|
|
114
115
|
variant: "ghost",
|
|
115
116
|
className: "rounded-none border-l! border-kumo-line! px-3 relative overflow-hidden transition-all duration-200",
|
|
116
|
-
onClick:
|
|
117
|
-
"aria-label":
|
|
117
|
+
onClick: N,
|
|
118
|
+
"aria-label": w,
|
|
118
119
|
children: [
|
|
119
120
|
/* @__PURE__ */ e(
|
|
120
121
|
"span",
|
|
121
122
|
{
|
|
122
|
-
className:
|
|
123
|
+
className: s(
|
|
123
124
|
"flex items-center gap-1 transition-all duration-200",
|
|
124
125
|
r ? l.slide.animate : l.slide.initial
|
|
125
126
|
),
|
|
126
|
-
children: /* @__PURE__ */ e(
|
|
127
|
+
children: /* @__PURE__ */ e(R, {})
|
|
127
128
|
}
|
|
128
129
|
),
|
|
129
130
|
/* @__PURE__ */ e(
|
|
130
131
|
"span",
|
|
131
132
|
{
|
|
132
|
-
className:
|
|
133
|
+
className: s(
|
|
133
134
|
"flex items-center justify-center transition-all duration-200",
|
|
134
135
|
r ? l.slide.end : l.slide.animate
|
|
135
136
|
),
|
|
136
|
-
children: /* @__PURE__ */ e(
|
|
137
|
+
children: /* @__PURE__ */ e(A, {})
|
|
137
138
|
}
|
|
138
139
|
)
|
|
139
140
|
]
|
|
@@ -142,31 +143,31 @@ const G = A(
|
|
|
142
143
|
return /* @__PURE__ */ c(
|
|
143
144
|
"div",
|
|
144
145
|
{
|
|
145
|
-
ref:
|
|
146
|
-
className:
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
146
|
+
ref: z,
|
|
147
|
+
className: s(
|
|
148
|
+
M({ size: x.buttonSize }),
|
|
149
|
+
$({ size: m }),
|
|
150
|
+
C
|
|
150
151
|
),
|
|
151
152
|
children: [
|
|
152
153
|
/* @__PURE__ */ e("span", { className: "grow truncate ps-4 pe-2", children: t }),
|
|
153
|
-
n ? /* @__PURE__ */ e(
|
|
154
|
-
|
|
154
|
+
n ? /* @__PURE__ */ e(G, { children: /* @__PURE__ */ c(
|
|
155
|
+
j,
|
|
155
156
|
{
|
|
156
157
|
disabled: r,
|
|
157
158
|
onOpenChange: (o, a) => {
|
|
158
159
|
a.reason === "trigger-press" && a.cancel();
|
|
159
160
|
},
|
|
160
161
|
children: [
|
|
161
|
-
/* @__PURE__ */ e(
|
|
162
|
-
/* @__PURE__ */ e(
|
|
163
|
-
|
|
162
|
+
/* @__PURE__ */ e(B, { render: g }),
|
|
163
|
+
/* @__PURE__ */ e(U, { children: /* @__PURE__ */ e(D, { side: u, sideOffset: 8, children: /* @__PURE__ */ e(
|
|
164
|
+
E,
|
|
164
165
|
{
|
|
165
|
-
className:
|
|
166
|
+
className: s(
|
|
166
167
|
"flex origin-[var(--transform-origin)] flex-col rounded-md bg-kumo-base px-3 py-1.5 text-xs text-kumo-default",
|
|
167
168
|
"shadow-lg shadow-kumo-tip-shadow outline outline-kumo-fill"
|
|
168
169
|
),
|
|
169
|
-
children:
|
|
170
|
+
children: k
|
|
170
171
|
}
|
|
171
172
|
) }) })
|
|
172
173
|
]
|
|
@@ -178,8 +179,8 @@ const G = A(
|
|
|
178
179
|
);
|
|
179
180
|
}
|
|
180
181
|
);
|
|
181
|
-
|
|
182
|
+
H.displayName = "ClipboardText";
|
|
182
183
|
export {
|
|
183
|
-
|
|
184
|
+
H as C
|
|
184
185
|
};
|
|
185
|
-
//# sourceMappingURL=clipboard-text-
|
|
186
|
+
//# sourceMappingURL=clipboard-text-vcbvmtne4zjk4b18.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clipboard-text-vcbvmtne4zjk4b18.js","sources":["../../src/components/clipboard-text/clipboard-text.tsx"],"sourcesContent":["import { CheckIcon, CopyIcon } from \"@phosphor-icons/react\";\nimport { forwardRef, useCallback, useRef, useState } from \"react\";\nimport { Toast } from \"@base-ui/react/toast\";\nimport { Tooltip } from \"@base-ui/react/tooltip\";\nimport { Button } from \"../button\";\nimport { inputVariants } from \"../input\";\nimport { cn } from \"../../utils/cn\";\n\n// Create a toast manager for anchored \"Copied\" toasts\nconst clipboardToastManager = Toast.createToastManager();\n\n/** ClipboardText size variant definitions mapping sizes to their Tailwind classes. */\nexport const KUMO_CLIPBOARD_TEXT_VARIANTS = {\n size: {\n sm: {\n classes: \"text-xs\",\n buttonSize: \"sm\" as const,\n description: \"Small clipboard text for compact UIs\",\n },\n base: {\n classes: \"text-sm\",\n buttonSize: \"base\" as const,\n description: \"Default clipboard text size\",\n },\n lg: {\n classes: \"text-sm\",\n buttonSize: \"lg\" as const,\n description: \"Large clipboard text for prominent display\",\n },\n },\n} as const;\n\nexport const KUMO_CLIPBOARD_TEXT_DEFAULT_VARIANTS = {\n size: \"lg\",\n} as const;\n\nconst clipboardTextAnimations = {\n slide: {\n initial:\n \"pointer-events-none absolute inset-0 flex items-center justify-center opacity-0 translate-y-full\",\n animate: \"translate-y-0 opacity-100\",\n end: \"pointer-events-none absolute inset-0 flex items-center justify-center opacity-0 -translate-y-full\",\n },\n} as const;\n\n// Derived types from KUMO_CLIPBOARD_TEXT_VARIANTS\nexport type KumoClipboardTextSize =\n keyof typeof KUMO_CLIPBOARD_TEXT_VARIANTS.size;\n\nexport interface KumoClipboardTextVariantsProps {\n /**\n * Size of the clipboard text field.\n * - `\"sm\"` — Small clipboard text for compact UIs\n * - `\"base\"` — Default clipboard text size\n * - `\"lg\"` — Large clipboard text for prominent display\n * @default \"lg\"\n */\n size?: KumoClipboardTextSize;\n}\n\nexport function clipboardTextVariants({\n size = KUMO_CLIPBOARD_TEXT_DEFAULT_VARIANTS.size,\n}: KumoClipboardTextVariantsProps = {}) {\n return cn(\n // Base styles\n \"flex items-center overflow-hidden bg-kumo-base px-0 font-mono\",\n // Apply size styles from KUMO_CLIPBOARD_TEXT_VARIANTS\n KUMO_CLIPBOARD_TEXT_VARIANTS.size[size].classes,\n );\n}\n\n// Legacy type alias for backwards compatibility\nexport type ClipboardTextSize = KumoClipboardTextSize;\n\n/**\n * ClipboardText component props.\n *\n * @example\n * ```tsx\n * <ClipboardText text=\"sk_live_abc123\" />\n * <ClipboardText text=\"npm install @cloudflare/kumo\" size=\"sm\" />\n * ```\n */\nexport interface ClipboardTextProps extends KumoClipboardTextVariantsProps {\n /** The text to display and copy to clipboard. */\n text: string;\n /** If provided, this text will be copied to clipboard instead of the `text` prop. */\n textToCopy?: string;\n /** Additional CSS classes merged via `cn()`. */\n className?: string;\n /** Callback fired after text is copied to clipboard. */\n onCopy?: () => void;\n /**\n * Tooltip config. Shows tooltip on hover, anchored toast on click.\n * @example\n * ```tsx\n * <ClipboardText\n * text=\"abc123\"\n * tooltip={{ text: \"Copy\", copiedText: \"Copied!\", side: \"top\" }}\n * />\n * ```\n */\n tooltip?: {\n /** Text shown in tooltip on hover. @default \"Copy\" */\n text?: string;\n /** Text shown in toast after copying. @default \"Copied\" */\n copiedText?: string;\n /** Tooltip/toast placement. @default \"top\" */\n side?: \"top\" | \"bottom\" | \"left\" | \"right\";\n };\n /** Accessible labels for i18n. */\n labels?: {\n /** @default \"Copy to clipboard\" */\n copyAction?: string;\n };\n}\n\n/**\n * Anchored toasts viewport - renders \"Copied\" toasts anchored to buttons\n */\nfunction AnchoredToasts() {\n const { toasts } = Toast.useToastManager();\n return (\n <Toast.Viewport className=\"pointer-events-none fixed inset-0 isolate\">\n {toasts.map((toast) => (\n <Toast.Positioner key={toast.id} toast={toast} className=\"absolute\">\n <Toast.Root\n toast={toast}\n className={cn(\n \"flex origin-[var(--transform-origin)] flex-col rounded-md bg-kumo-base px-3 py-1.5 text-xs text-kumo-default font-sans\",\n \"shadow-lg shadow-kumo-tip-shadow outline outline-kumo-fill\",\n )}\n >\n <Toast.Description />\n </Toast.Root>\n </Toast.Positioner>\n ))}\n </Toast.Viewport>\n );\n}\n\n/**\n * Internal wrapper that provides Toast context when tooltip is enabled.\n */\nfunction TooltipWrapper({ children }: { children: React.ReactNode }) {\n return (\n <Tooltip.Provider>\n <Toast.Provider toastManager={clipboardToastManager}>\n <AnchoredToasts />\n {children}\n </Toast.Provider>\n </Tooltip.Provider>\n );\n}\n\n/**\n * Read-only text field with a one-click copy-to-clipboard button.\n *\n * @example\n * ```tsx\n * <ClipboardText text=\"0c239dd2\" />\n * ```\n */\nexport const ClipboardText = forwardRef<HTMLDivElement, ClipboardTextProps>(\n (\n {\n text,\n textToCopy,\n className,\n size = KUMO_CLIPBOARD_TEXT_DEFAULT_VARIANTS.size,\n onCopy,\n tooltip,\n labels: { copyAction = \"Copy to clipboard\" } = {},\n },\n ref,\n ) => {\n const [copied, setCopied] = useState(false);\n const buttonRef = useRef<HTMLButtonElement | null>(null);\n const sizeConfig = KUMO_CLIPBOARD_TEXT_VARIANTS.size[size];\n\n // Destructure tooltip config with defaults\n const {\n text: tooltipText = \"Copy\",\n copiedText = \"Copied\",\n side: tooltipSide = \"top\",\n } = tooltip ?? {};\n\n const copyToClipboard = useCallback(async () => {\n try {\n if (\n typeof navigator !== \"undefined\" &&\n navigator.clipboard &&\n typeof navigator.clipboard.writeText === \"function\"\n ) {\n await navigator.clipboard.writeText(textToCopy ?? text);\n } else if (typeof document !== \"undefined\") {\n // Fallback for older browsers\n const textarea = document.createElement(\"textarea\");\n textarea.value = textToCopy ?? text;\n textarea.setAttribute(\"readonly\", \"\");\n textarea.style.position = \"absolute\";\n textarea.style.left = \"-9999px\";\n document.body.appendChild(textarea);\n const selection = document.getSelection();\n const previousRange = selection?.rangeCount\n ? selection.getRangeAt(0)\n : null;\n textarea.select();\n try {\n document.execCommand(\"copy\");\n } finally {\n document.body.removeChild(textarea);\n if (previousRange) {\n selection?.removeAllRanges();\n selection?.addRange(previousRange);\n }\n }\n }\n\n setCopied(true);\n\n // Show anchored toast if tooltip mode is enabled\n if (tooltip) {\n clipboardToastManager.add({\n description: copiedText,\n positionerProps: {\n anchor: buttonRef.current,\n side: tooltipSide,\n sideOffset: 8,\n },\n timeout: 1500,\n onClose() {\n setCopied(false);\n },\n });\n } else {\n // Reset copied state after delay when no tooltip\n setTimeout(() => setCopied(false), 1500);\n }\n\n onCopy?.();\n } catch (error) {\n console.warn(\"Clipboard copy failed\", error);\n }\n }, [text, onCopy, tooltip, copiedText, tooltipSide]);\n\n const copyButton = (\n <Button\n ref={buttonRef}\n size={sizeConfig.buttonSize}\n variant=\"ghost\"\n className=\"rounded-none border-l! border-kumo-line! px-3 relative overflow-hidden transition-all duration-200\"\n onClick={copyToClipboard}\n aria-label={copyAction}\n >\n <span\n className={cn(\n \"flex items-center gap-1 transition-all duration-200\",\n copied\n ? clipboardTextAnimations.slide.animate\n : clipboardTextAnimations.slide.initial,\n )}\n >\n <CheckIcon />\n </span>\n <span\n className={cn(\n \"flex items-center justify-center transition-all duration-200\",\n copied\n ? clipboardTextAnimations.slide.end\n : clipboardTextAnimations.slide.animate,\n )}\n >\n <CopyIcon />\n </span>\n </Button>\n );\n\n return (\n <div\n ref={ref}\n className={cn(\n inputVariants({ size: sizeConfig.buttonSize }),\n clipboardTextVariants({ size }),\n className,\n )}\n >\n <span className=\"grow truncate ps-4 pe-2\">{text}</span>\n {tooltip ? (\n <TooltipWrapper>\n <Tooltip.Root\n disabled={copied}\n onOpenChange={(open, eventDetails) => {\n // Prevent tooltip from closing when button is clicked\n if (eventDetails.reason === \"trigger-press\") {\n eventDetails.cancel();\n }\n }}\n >\n <Tooltip.Trigger render={copyButton} />\n <Tooltip.Portal>\n <Tooltip.Positioner side={tooltipSide} sideOffset={8}>\n <Tooltip.Popup\n className={cn(\n \"flex origin-[var(--transform-origin)] flex-col rounded-md bg-kumo-base px-3 py-1.5 text-xs text-kumo-default\",\n \"shadow-lg shadow-kumo-tip-shadow outline outline-kumo-fill\",\n )}\n >\n {tooltipText}\n </Tooltip.Popup>\n </Tooltip.Positioner>\n </Tooltip.Portal>\n </Tooltip.Root>\n </TooltipWrapper>\n ) : (\n copyButton\n )}\n <span className=\"sr-only\" aria-live=\"polite\">\n {copied ? copiedText : \"\"}\n </span>\n </div>\n );\n },\n);\n\nClipboardText.displayName = \"ClipboardText\";\n"],"names":["clipboardToastManager","Toast.createToastManager","KUMO_CLIPBOARD_TEXT_VARIANTS","KUMO_CLIPBOARD_TEXT_DEFAULT_VARIANTS","clipboardTextAnimations","clipboardTextVariants","size","cn","AnchoredToasts","toasts","Toast.useToastManager","Toast.Viewport","toast","Toast.Positioner","jsx","Toast.Root","Toast.Description","TooltipWrapper","children","Tooltip.Provider","Toast.Provider","ClipboardText","forwardRef","text","textToCopy","className","onCopy","tooltip","copyAction","ref","copied","setCopied","useState","buttonRef","useRef","sizeConfig","tooltipText","copiedText","tooltipSide","copyToClipboard","useCallback","textarea","selection","previousRange","error","copyButton","jsxs","Button","CheckIcon","CopyIcon","inputVariants","Tooltip.Root","open","eventDetails","Tooltip.Trigger","Tooltip.Portal","Tooltip.Positioner","Tooltip.Popup"],"mappings":";;;;;;;;AASA,MAAMA,IAAwBC,EAAM,GAGvBC,IAA+B;AAAA,EAC1C,MAAM;AAAA,IACJ,IAAI;AAAA,MACF,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,aAAa;AAAA,IAAA;AAAA,IAEf,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,aAAa;AAAA,IAAA;AAAA,IAEf,IAAI;AAAA,MACF,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,aAAa;AAAA,IAAA;AAAA,EACf;AAEJ,GAEaC,IAAuC;AAAA,EAClD,MAAM;AACR,GAEMC,IAA0B;AAAA,EAC9B,OAAO;AAAA,IACL,SACE;AAAA,IACF,SAAS;AAAA,IACT,KAAK;AAAA,EAAA;AAET;AAiBO,SAASC,EAAsB;AAAA,EACpC,MAAAC,IAAOH,EAAqC;AAC9C,IAAoC,IAAI;AACtC,SAAOI;AAAA;AAAA,IAEL;AAAA;AAAA,IAEAL,EAA6B,KAAKI,CAAI,EAAE;AAAA,EAAA;AAE5C;AAmDA,SAASE,IAAiB;AACxB,QAAM,EAAE,QAAAC,EAAA,IAAWC,EAAM;AACzB,2BACGC,GAAA,EAAe,WAAU,6CACvB,UAAAF,EAAO,IAAI,CAACG,wBACVC,GAAA,EAAgC,OAAAD,GAAc,WAAU,YACvD,UAAA,gBAAAE;AAAA,IAACC;AAAAA,IAAA;AAAA,MACC,OAAAH;AAAA,MACA,WAAWL;AAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAGF,UAAA,gBAAAO,EAACE,GAAA,CAAA,CAAkB;AAAA,IAAA;AAAA,EAAA,EACrB,GATqBJ,EAAM,EAU7B,CACD,GACH;AAEJ;AAKA,SAASK,EAAe,EAAE,UAAAC,KAA2C;AACnE,SACE,gBAAAJ,EAACK,GAAA,EACC,4BAACC,GAAA,EAAe,cAAcpB,GAC5B,UAAA;AAAA,IAAA,gBAAAc,EAACN,GAAA,EAAe;AAAA,IACfU;AAAA,EAAA,EAAA,CACH,EAAA,CACF;AAEJ;AAUO,MAAMG,IAAgBC;AAAA,EAC3B,CACE;AAAA,IACE,MAAAC;AAAA,IACA,YAAAC;AAAA,IACA,WAAAC;AAAA,IACA,MAAAnB,IAAOH,EAAqC;AAAA,IAC5C,QAAAuB;AAAA,IACA,SAAAC;AAAA,IACA,QAAQ,EAAE,YAAAC,IAAa,wBAAwB,CAAA;AAAA,EAAC,GAElDC,MACG;AACH,UAAM,CAACC,GAAQC,CAAS,IAAIC,EAAS,EAAK,GACpCC,IAAYC,EAAiC,IAAI,GACjDC,IAAajC,EAA6B,KAAKI,CAAI,GAGnD;AAAA,MACJ,MAAM8B,IAAc;AAAA,MACpB,YAAAC,IAAa;AAAA,MACb,MAAMC,IAAc;AAAA,IAAA,IAClBX,KAAW,CAAA,GAETY,IAAkBC,EAAY,YAAY;AAC9C,UAAI;AACF,YACE,OAAO,YAAc,OACrB,UAAU,aACV,OAAO,UAAU,UAAU,aAAc;AAEzC,gBAAM,UAAU,UAAU,UAAUhB,KAAcD,CAAI;AAAA,iBAC7C,OAAO,WAAa,KAAa;AAE1C,gBAAMkB,IAAW,SAAS,cAAc,UAAU;AAClD,UAAAA,EAAS,QAAQjB,KAAcD,GAC/BkB,EAAS,aAAa,YAAY,EAAE,GACpCA,EAAS,MAAM,WAAW,YAC1BA,EAAS,MAAM,OAAO,WACtB,SAAS,KAAK,YAAYA,CAAQ;AAClC,gBAAMC,IAAY,SAAS,aAAA,GACrBC,IAAgBD,GAAW,aAC7BA,EAAU,WAAW,CAAC,IACtB;AACJ,UAAAD,EAAS,OAAA;AACT,cAAI;AACF,qBAAS,YAAY,MAAM;AAAA,UAC7B,UAAA;AACE,qBAAS,KAAK,YAAYA,CAAQ,GAC9BE,MACFD,GAAW,gBAAA,GACXA,GAAW,SAASC,CAAa;AAAA,UAErC;AAAA,QACF;AAEA,QAAAZ,EAAU,EAAI,GAGVJ,IACF3B,EAAsB,IAAI;AAAA,UACxB,aAAaqC;AAAA,UACb,iBAAiB;AAAA,YACf,QAAQJ,EAAU;AAAA,YAClB,MAAMK;AAAA,YACN,YAAY;AAAA,UAAA;AAAA,UAEd,SAAS;AAAA,UACT,UAAU;AACR,YAAAP,EAAU,EAAK;AAAA,UACjB;AAAA,QAAA,CACD,IAGD,WAAW,MAAMA,EAAU,EAAK,GAAG,IAAI,GAGzCL,IAAA;AAAA,MACF,SAASkB,GAAO;AACd,gBAAQ,KAAK,yBAAyBA,CAAK;AAAA,MAC7C;AAAA,IACF,GAAG,CAACrB,GAAMG,GAAQC,GAASU,GAAYC,CAAW,CAAC,GAE7CO,IACJ,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,KAAKd;AAAA,QACL,MAAME,EAAW;AAAA,QACjB,SAAQ;AAAA,QACR,WAAU;AAAA,QACV,SAASI;AAAA,QACT,cAAYX;AAAA,QAEZ,UAAA;AAAA,UAAA,gBAAAd;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWP;AAAA,gBACT;AAAA,gBACAuB,IACI1B,EAAwB,MAAM,UAC9BA,EAAwB,MAAM;AAAA,cAAA;AAAA,cAGpC,4BAAC4C,GAAA,CAAA,CAAU;AAAA,YAAA;AAAA,UAAA;AAAA,UAEb,gBAAAlC;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWP;AAAA,gBACT;AAAA,gBACAuB,IACI1B,EAAwB,MAAM,MAC9BA,EAAwB,MAAM;AAAA,cAAA;AAAA,cAGpC,4BAAC6C,GAAA,CAAA,CAAS;AAAA,YAAA;AAAA,UAAA;AAAA,QACZ;AAAA,MAAA;AAAA,IAAA;AAIJ,WACE,gBAAAH;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAjB;AAAA,QACA,WAAWtB;AAAA,UACT2C,EAAc,EAAE,MAAMf,EAAW,YAAY;AAAA,UAC7C9B,EAAsB,EAAE,MAAAC,GAAM;AAAA,UAC9BmB;AAAA,QAAA;AAAA,QAGF,UAAA;AAAA,UAAA,gBAAAX,EAAC,QAAA,EAAK,WAAU,2BAA2B,UAAAS,GAAK;AAAA,UAC/CI,sBACEV,GAAA,EACC,UAAA,gBAAA6B;AAAA,YAACK;AAAAA,YAAA;AAAA,cACC,UAAUrB;AAAA,cACV,cAAc,CAACsB,GAAMC,MAAiB;AAEpC,gBAAIA,EAAa,WAAW,mBAC1BA,EAAa,OAAA;AAAA,cAEjB;AAAA,cAEA,UAAA;AAAA,gBAAA,gBAAAvC,EAACwC,GAAA,EAAgB,QAAQT,EAAA,CAAY;AAAA,gBACrC,gBAAA/B,EAACyC,GAAA,EACC,UAAA,gBAAAzC,EAAC0C,GAAA,EAAmB,MAAMlB,GAAa,YAAY,GACjD,UAAA,gBAAAxB;AAAA,kBAAC2C;AAAAA,kBAAA;AAAA,oBACC,WAAWlD;AAAA,sBACT;AAAA,sBACA;AAAA,oBAAA;AAAA,oBAGD,UAAA6B;AAAA,kBAAA;AAAA,gBAAA,GAEL,EAAA,CACF;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA,GAEJ,IAEAS;AAAA,UAEF,gBAAA/B,EAAC,UAAK,WAAU,WAAU,aAAU,UACjC,UAAAgB,IAASO,IAAa,GAAA,CACzB;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;AAEAhB,EAAc,cAAc;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as o } from "react/jsx-runtime";
|
|
3
|
-
import { c } from "./cn-ct4n7r74mh8y0f48.js";
|
|
4
|
-
const
|
|
3
|
+
import { c as r } from "./cn-ct4n7r74mh8y0f48.js";
|
|
4
|
+
const a = {
|
|
5
5
|
lang: {
|
|
6
6
|
ts: {
|
|
7
7
|
classes: "",
|
|
@@ -24,37 +24,37 @@ const i = {
|
|
|
24
24
|
description: "CSS styles"
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
},
|
|
27
|
+
}, n = {
|
|
28
28
|
lang: "ts"
|
|
29
29
|
};
|
|
30
|
-
function
|
|
31
|
-
lang: s =
|
|
30
|
+
function i({
|
|
31
|
+
lang: s = n.lang
|
|
32
32
|
} = {}) {
|
|
33
|
-
return
|
|
33
|
+
return r(
|
|
34
34
|
// Base styles
|
|
35
35
|
"m-0 w-auto rounded-none border-none bg-transparent p-0 font-mono text-sm leading-[20px] text-kumo-strong",
|
|
36
|
-
// Apply lang-specific styles (
|
|
37
|
-
|
|
36
|
+
// Apply lang-specific styles (fallback to default if lang not in map)
|
|
37
|
+
a.lang[s]?.classes ?? a.lang[n.lang].classes
|
|
38
38
|
);
|
|
39
39
|
}
|
|
40
|
-
function
|
|
40
|
+
function c({
|
|
41
41
|
code: s,
|
|
42
|
-
lang: e =
|
|
43
|
-
className:
|
|
42
|
+
lang: e = n.lang,
|
|
43
|
+
className: l,
|
|
44
44
|
style: d
|
|
45
45
|
}) {
|
|
46
|
-
return /* @__PURE__ */ o("pre", { className:
|
|
46
|
+
return /* @__PURE__ */ o("pre", { className: r(i({ lang: e }), l), style: d, children: s });
|
|
47
47
|
}
|
|
48
|
-
|
|
48
|
+
c.displayName = "Code";
|
|
49
49
|
function t({ code: s, lang: e }) {
|
|
50
|
-
return /* @__PURE__ */ o("div", { className: "min-w-0 rounded-md border border-kumo-fill bg-kumo-base [&>pre]:p-2.5!", children: /* @__PURE__ */ o(
|
|
50
|
+
return /* @__PURE__ */ o("div", { className: "min-w-0 rounded-md border border-kumo-fill bg-kumo-base [&>pre]:p-2.5!", children: /* @__PURE__ */ o(c, { lang: e, code: s }) });
|
|
51
51
|
}
|
|
52
52
|
t.displayName = "CodeBlock";
|
|
53
|
-
const u = Object.assign(
|
|
53
|
+
const u = Object.assign(c, {
|
|
54
54
|
Block: t
|
|
55
|
-
}),
|
|
55
|
+
}), g = t;
|
|
56
56
|
export {
|
|
57
57
|
u as C,
|
|
58
|
-
|
|
58
|
+
g as a
|
|
59
59
|
};
|
|
60
|
-
//# sourceMappingURL=code-
|
|
60
|
+
//# sourceMappingURL=code-cz0w1y5z4h29a9eg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-cz0w1y5z4h29a9eg.js","sources":["../../src/components/code/code.tsx"],"sourcesContent":["import { type CSSProperties } from \"react\";\nimport { cn } from \"../../utils/cn\";\n\n/** Code language variant definitions. */\nexport const KUMO_CODE_VARIANTS = {\n lang: {\n ts: {\n classes: \"\",\n description: \"TypeScript code\",\n },\n tsx: {\n classes: \"\",\n description: \"TypeScript JSX code\",\n },\n jsonc: {\n classes: \"\",\n description: \"JSON with comments\",\n },\n bash: {\n classes: \"\",\n description: \"Shell/Bash commands\",\n },\n css: {\n classes: \"\",\n description: \"CSS styles\",\n },\n },\n} as const;\n\nexport const KUMO_CODE_DEFAULT_VARIANTS = {\n lang: \"ts\",\n} as const;\n\n/**\n * Styling metadata for Code component (for AI/Figma plugin consumption)\n */\nexport const KUMO_CODE_STYLING = {\n /** Base semantic tokens used */\n baseTokens: [\"text-kumo-strong\"],\n /** Typography and layout */\n typography: {\n fontFamily: \"font-mono\",\n fontSize: \"text-sm\",\n lineHeight: \"leading-[20px]\",\n },\n /** Container dimensions */\n dimensions: {\n margin: \"m-0\",\n padding: \"p-0\",\n width: \"w-auto\",\n },\n /** Border and background */\n appearance: {\n borderRadius: \"rounded-none\",\n border: \"border-none\",\n background: \"bg-transparent\",\n },\n} as const;\n\n/**\n * Styling metadata for CodeBlock component (for AI/Figma plugin consumption)\n */\nexport const KUMO_CODEBLOCK_STYLING = {\n /** Base semantic tokens used */\n baseTokens: [\"bg-kumo-base\", \"border-kumo-fill\"],\n /** Container styling */\n container: {\n minWidth: \"min-w-0\",\n borderRadius: \"rounded-md\",\n border: \"border border-kumo-fill\",\n background: \"bg-kumo-base\",\n },\n /** Inner code element padding */\n innerPadding: \"[&>pre]:p-2.5\",\n /** Parsed dimensions */\n dimensions: {\n borderRadius: 6, // md = 6px\n padding: 10, // p-2.5 = 10px\n },\n} as const;\n\n// Derived types from KUMO_CODE_VARIANTS\nexport type KumoCodeLang = keyof typeof KUMO_CODE_VARIANTS.lang;\n\nexport interface KumoCodeVariantsProps {\n /**\n * Language hint for the code content.\n * - `\"ts\"` — TypeScript code\n * - `\"tsx\"` — TypeScript JSX code\n * - `\"jsonc\"` — JSON with comments\n * - `\"bash\"` — Shell/Bash commands\n * - `\"css\"` — CSS styles\n * @default \"ts\"\n */\n lang?: KumoCodeLang;\n}\n\nexport function codeVariants({\n lang = KUMO_CODE_DEFAULT_VARIANTS.lang,\n}: KumoCodeVariantsProps = {}) {\n return cn(\n // Base styles\n \"m-0 w-auto rounded-none border-none bg-transparent p-0 font-mono text-sm leading-[20px] text-kumo-strong\",\n // Apply lang-specific styles (fallback to default if lang not in map)\n KUMO_CODE_VARIANTS.lang[lang]?.classes ??\n KUMO_CODE_VARIANTS.lang[KUMO_CODE_DEFAULT_VARIANTS.lang].classes,\n );\n}\n\n// Legacy type alias for backwards compatibility\nexport type CodeLang = KumoCodeLang;\n\n/** @deprecated Use CodeLang instead */\nexport type BundledLanguage = CodeLang;\n\n/**\n * Code component props.\n *\n * @example\n * ```tsx\n * <Code code=\"const x = 1;\" lang=\"ts\" />\n * <Code code=\"export API_KEY={{apiKey}}\" lang=\"bash\"\n * values={{ apiKey: { value: \"sk_live_123\", highlight: true } }}\n * />\n * ```\n */\nexport interface CodeProps extends KumoCodeVariantsProps {\n /** The code string to display. */\n code: string;\n /** Template values for `{{key}}` interpolation. Values with `highlight: true` are visually emphasized. */\n values?: Record<\n string,\n {\n value: string;\n highlight?: boolean;\n }\n >;\n /** Additional CSS classes merged via `cn()`. */\n className?: string;\n /** Inline styles. */\n style?: CSSProperties;\n}\n\n/**\n * Simple code component without syntax highlighting.\n *\n * Renders code in a monospace font with customizable language metadata.\n * For a bordered container version, use `Code.Block` or `CodeBlock`.\n *\n * **Styling:**\n * - Typography: `font-mono text-sm leading-[20px]`\n * - Colors: `text-kumo-strong` with `bg-transparent`\n * - No borders or padding (use CodeBlock for styled container)\n * - Supports all semantic tokens via className prop\n *\n * @deprecated Use `CodeHighlighted` from `@cloudflare/kumo/code` for syntax highlighting.\n * This component will be removed in v2.0.\n *\n * @example Migration:\n * ```tsx\n * // Before\n * import { Code } from \"@cloudflare/kumo\";\n * <Code code=\"const x = 1;\" lang=\"ts\" />\n *\n * // After\n * import { ShikiProvider, CodeHighlighted } from \"@cloudflare/kumo/code\";\n * <ShikiProvider engine=\"javascript\" languages={['tsx']} themes={{ light: 'github-light', dark: 'github-dark' }}>\n * <CodeHighlighted code=\"const x = 1;\" lang=\"tsx\" />\n * </ShikiProvider>\n * ```\n */\nfunction CodeComponent({\n code,\n lang = KUMO_CODE_DEFAULT_VARIANTS.lang,\n className,\n style,\n}: CodeProps) {\n return (\n <pre className={cn(codeVariants({ lang }), className)} style={style}>\n {code}\n </pre>\n );\n}\n\nCodeComponent.displayName = \"Code\";\n\n/**\n * CodeBlock component props — code inside a bordered container.\n *\n * @example\n * ```tsx\n * <CodeBlock lang=\"tsx\" code={`const greeting = \"Hello!\";`} />\n * ```\n */\nexport interface CodeBlockProps {\n /** The code string to display. */\n code: string;\n /**\n * Language hint for the code content.\n * @default \"ts\"\n */\n lang?: CodeLang;\n}\n\n/**\n * Code block with border and background container.\n *\n * A styled wrapper around Code that adds a bordered container with surface background.\n * Useful for displaying code snippets with visual separation from surrounding content.\n *\n * **Styling:**\n * - Container: `min-w-0 rounded-md border border-kumo-fill bg-kumo-base`\n * - Inner padding: `p-2.5` (10px)\n * - Uses semantic tokens: `bg-kumo-base`, `border-kumo-fill`\n *\n * @deprecated Use `CodeHighlighted` from `@cloudflare/kumo/code` for syntax highlighting.\n * This component will be removed in v2.0.\n */\nfunction CodeBlockComponent({ code, lang }: CodeBlockProps) {\n return (\n <div className=\"min-w-0 rounded-md border border-kumo-fill bg-kumo-base [&>pre]:p-2.5!\">\n <CodeComponent lang={lang} code={code} />\n </div>\n );\n}\n\nCodeBlockComponent.displayName = \"CodeBlock\";\n\n// Export Code with Block sub-component (for registry detection)\nexport const Code = Object.assign(CodeComponent, {\n Block: CodeBlockComponent,\n});\n\n// Backward-compatible standalone export\nexport const CodeBlock = CodeBlockComponent;\n"],"names":["KUMO_CODE_VARIANTS","KUMO_CODE_DEFAULT_VARIANTS","codeVariants","lang","cn","CodeComponent","code","className","style","jsx","CodeBlockComponent","Code","CodeBlock"],"mappings":";;;AAIO,MAAMA,IAAqB;AAAA,EAChC,MAAM;AAAA,IACJ,IAAI;AAAA,MACF,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,KAAK;AAAA,MACH,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,OAAO;AAAA,MACL,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,KAAK;AAAA,MACH,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,EACf;AAEJ,GAEaC,IAA6B;AAAA,EACxC,MAAM;AACR;AAkEO,SAASC,EAAa;AAAA,EAC3B,MAAAC,IAAOF,EAA2B;AACpC,IAA2B,IAAI;AAC7B,SAAOG;AAAA;AAAA,IAEL;AAAA;AAAA,IAEAJ,EAAmB,KAAKG,CAAI,GAAG,WAC7BH,EAAmB,KAAKC,EAA2B,IAAI,EAAE;AAAA,EAAA;AAE/D;AAgEA,SAASI,EAAc;AAAA,EACrB,MAAAC;AAAA,EACA,MAAAH,IAAOF,EAA2B;AAAA,EAClC,WAAAM;AAAA,EACA,OAAAC;AACF,GAAc;AACZ,SACE,gBAAAC,EAAC,OAAA,EAAI,WAAWL,EAAGF,EAAa,EAAE,MAAAC,EAAA,CAAM,GAAGI,CAAS,GAAG,OAAAC,GACpD,UAAAF,EAAA,CACH;AAEJ;AAEAD,EAAc,cAAc;AAkC5B,SAASK,EAAmB,EAAE,MAAAJ,GAAM,MAAAH,KAAwB;AAC1D,SACE,gBAAAM,EAAC,SAAI,WAAU,0EACb,4BAACJ,GAAA,EAAc,MAAAF,GAAY,MAAAG,GAAY,EAAA,CACzC;AAEJ;AAEAI,EAAmB,cAAc;AAG1B,MAAMC,IAAO,OAAO,OAAON,GAAe;AAAA,EAC/C,OAAOK;AACT,CAAC,GAGYE,IAAYF;"}
|