@cloudflare/kumo 1.18.0 → 1.19.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 +90 -0
- package/ai/component-registry.json +174 -66
- package/ai/component-registry.md +836 -503
- package/ai/schemas.ts +19 -3
- package/dist/.build-complete +1 -1
- package/dist/ai/schemas.d.ts +55 -8
- package/dist/ai/schemas.d.ts.map +1 -1
- package/dist/ai/schemas.js +163 -146
- package/dist/ai/schemas.js.map +1 -1
- package/dist/chunks/{Legend-o0ntojbaplmszwk0.js → Legend-ks7se6149vsa3tze.js} +127 -118
- package/dist/chunks/Legend-ks7se6149vsa3tze.js.map +1 -0
- package/dist/chunks/{breadcrumbs-k39s28qx05vbxxth.js → breadcrumbs-ge20hcb3o5spswrk.js} +2 -2
- package/dist/chunks/{breadcrumbs-k39s28qx05vbxxth.js.map → breadcrumbs-ge20hcb3o5spswrk.js.map} +1 -1
- package/dist/chunks/{button-cdxnqcgzwko8ooha.js → button-oaqi7ykdisyskoos.js} +12 -12
- package/dist/chunks/button-oaqi7ykdisyskoos.js.map +1 -0
- package/dist/chunks/{checkbox-kt1uojk2f9e0d0h1.js → checkbox-mwgmohffm22ut13s.js} +5 -5
- package/dist/chunks/checkbox-mwgmohffm22ut13s.js.map +1 -0
- package/dist/chunks/{clipboard-text-vcbvmtne4zjk4b18.js → clipboard-text-dxczqon3d27xp6f0.js} +10 -10
- package/dist/chunks/{clipboard-text-vcbvmtne4zjk4b18.js.map → clipboard-text-dxczqon3d27xp6f0.js.map} +1 -1
- package/dist/chunks/{cloudflare-logo-bgts2jgsdh7sslw4.js → cloudflare-logo-pbavoe1wu8nr5c4n.js} +9 -9
- package/dist/chunks/{cloudflare-logo-bgts2jgsdh7sslw4.js.map → cloudflare-logo-pbavoe1wu8nr5c4n.js.map} +1 -1
- package/dist/chunks/{combobox-he2hd9e2ruknq5mp.js → combobox-eaowwt1xr4d23gsn.js} +113 -101
- package/dist/chunks/combobox-eaowwt1xr4d23gsn.js.map +1 -0
- package/dist/chunks/{command-palette-jc1w07jwakxvj23a.js → command-palette-maqtbmpfev9mysqd.js} +19 -19
- package/dist/chunks/command-palette-maqtbmpfev9mysqd.js.map +1 -0
- package/dist/chunks/{dialog-oqh8l3l3zutpibxx.js → dialog-e3m5bhs7fds26p9y.js} +25 -25
- package/dist/chunks/dialog-e3m5bhs7fds26p9y.js.map +1 -0
- package/dist/chunks/{dropdown-ncwhcd912vmone8k.js → dropdown-ewte287db3vyt8t5.js} +94 -92
- package/dist/chunks/{dropdown-ncwhcd912vmone8k.js.map → dropdown-ewte287db3vyt8t5.js.map} +1 -1
- package/dist/chunks/{empty-cj898km1r8xwuw44.js → empty-dr1eckm2z40euns6.js} +2 -2
- package/dist/chunks/{empty-cj898km1r8xwuw44.js.map → empty-dr1eckm2z40euns6.js.map} +1 -1
- package/dist/chunks/{field-krp6z6vfbkrvufz2.js → field-bo5gmna16odrrb1q.js} +3 -3
- package/dist/chunks/{field-krp6z6vfbkrvufz2.js.map → field-bo5gmna16odrrb1q.js.map} +1 -1
- package/dist/chunks/{grid-m9r71jxo2b8q1972.js → grid-hj1ylz16p7g5uelh.js} +2 -2
- package/dist/chunks/{grid-m9r71jxo2b8q1972.js.map → grid-hj1ylz16p7g5uelh.js.map} +1 -1
- package/dist/chunks/{input-area-no30c09udyjxshu5.js → input-area-jkkkjej6luumrqpa.js} +4 -4
- package/dist/chunks/{input-area-no30c09udyjxshu5.js.map → input-area-jkkkjej6luumrqpa.js.map} +1 -1
- package/dist/chunks/{input-h48k3uagzrgb98au.js → input-cw05pbqdburghkus.js} +31 -31
- package/dist/chunks/input-cw05pbqdburghkus.js.map +1 -0
- package/dist/chunks/{input-group-lxdd09p60cf27pe1.js → input-group-lfugneuz71g42n0w.js} +6 -6
- package/dist/chunks/input-group-lfugneuz71g42n0w.js.map +1 -0
- package/dist/chunks/label-cvyvbqmt4mt757ff.js +68 -0
- package/dist/chunks/{label-latndvb1ngem7we8.js.map → label-cvyvbqmt4mt757ff.js.map} +1 -1
- package/dist/chunks/layer-card-ljqth3yxgnk04v2o.js +46 -0
- package/dist/chunks/layer-card-ljqth3yxgnk04v2o.js.map +1 -0
- package/dist/chunks/{link-hn5ejal7nhh0o0b4.js → link-fjnhtxvfe5ieamjf.js} +2 -2
- package/dist/chunks/{link-hn5ejal7nhh0o0b4.js.map → link-fjnhtxvfe5ieamjf.js.map} +1 -1
- package/dist/chunks/menubar-e5e4zwfagr0wx023.js +96 -0
- package/dist/chunks/menubar-e5e4zwfagr0wx023.js.map +1 -0
- package/dist/chunks/{meter-gfa1hz9fhjnvx784.js → meter-duj3micor1lqj3y2.js} +2 -2
- package/dist/chunks/{meter-gfa1hz9fhjnvx784.js.map → meter-duj3micor1lqj3y2.js.map} +1 -1
- package/dist/chunks/pagination-olaypvwr8swsmn8m.js +266 -0
- package/dist/chunks/pagination-olaypvwr8swsmn8m.js.map +1 -0
- package/dist/chunks/{popover-h300w4vit0s2ayej.js → popover-nv9cmzbo7mf6bky0.js} +70 -74
- package/dist/chunks/popover-nv9cmzbo7mf6bky0.js.map +1 -0
- package/dist/chunks/{radio-jouttv89lbvhs55r.js → radio-ihxbe37us2jnqtzf.js} +5 -5
- package/dist/chunks/radio-ihxbe37us2jnqtzf.js.map +1 -0
- package/dist/chunks/select-nx6ded5swra74iar.js +213 -0
- package/dist/chunks/select-nx6ded5swra74iar.js.map +1 -0
- package/dist/chunks/{sensitive-input-hd4tpqkzifad1yca.js → sensitive-input-00fujb510rrn61v9.js} +4 -4
- package/dist/chunks/{sensitive-input-hd4tpqkzifad1yca.js.map → sensitive-input-00fujb510rrn61v9.js.map} +1 -1
- package/dist/chunks/{sidebar-hljy3ssm8itc0ucx.js → sidebar-ltbfius1eolkl8tb.js} +22 -26
- package/dist/chunks/sidebar-ltbfius1eolkl8tb.js.map +1 -0
- package/dist/chunks/surface-dfgurg5eu3et4vw1.js +29 -0
- package/dist/chunks/surface-dfgurg5eu3et4vw1.js.map +1 -0
- package/dist/chunks/{switch-ihaydbzem62bey4p.js → switch-fbv3iawqo3o3jgap.js} +17 -17
- package/dist/chunks/switch-fbv3iawqo3o3jgap.js.map +1 -0
- package/dist/chunks/table-of-contents-f813ivi7ta23vqdm.js +88 -0
- package/dist/chunks/table-of-contents-f813ivi7ta23vqdm.js.map +1 -0
- package/dist/chunks/table-olwwulga2l3hdwlx.js +189 -0
- package/dist/chunks/table-olwwulga2l3hdwlx.js.map +1 -0
- package/dist/chunks/{tabs-e7eh7l3mpk3xgmwq.js → tabs-lohcglgppp6gj0hp.js} +4 -4
- package/dist/chunks/{tabs-e7eh7l3mpk3xgmwq.js.map → tabs-lohcglgppp6gj0hp.js.map} +1 -1
- package/dist/chunks/{toast-bpz6iaq54u9jmuu8.js → toast-dg52x89yd231mxhe.js} +4 -4
- package/dist/chunks/{toast-bpz6iaq54u9jmuu8.js.map → toast-dg52x89yd231mxhe.js.map} +1 -1
- package/dist/chunks/{tooltip-belkznz8t8333h5f.js → tooltip-hikjvdbg3xghnq1x.js} +38 -37
- package/dist/chunks/tooltip-hikjvdbg3xghnq1x.js.map +1 -0
- package/dist/chunks/{vendor-base-ui-k7bzesq81ie36nya.js → vendor-base-ui-m5pz3e8c4grg5qmj.js} +21 -21
- package/dist/chunks/{vendor-base-ui-k7bzesq81ie36nya.js.map → vendor-base-ui-m5pz3e8c4grg5qmj.js.map} +1 -1
- package/dist/code.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/cloudflare-logo.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 +2 -2
- package/dist/components/flow.js.map +1 -1
- package/dist/components/grid.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-of-contents.js +8 -0
- package/dist/components/table-of-contents.js.map +1 -0
- 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 +124 -120
- 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 +3 -3
- package/dist/scripts/theme-generator/config.js.map +1 -1
- package/dist/src/components/button/button.d.ts +1 -1
- package/dist/src/components/button/button.d.ts.map +1 -1
- package/dist/src/components/chart/EChart.d.ts +18 -2
- package/dist/src/components/chart/EChart.d.ts.map +1 -1
- package/dist/src/components/chart/TimeseriesChart.d.ts.map +1 -1
- package/dist/src/components/chart/index.d.ts +1 -1
- package/dist/src/components/chart/index.d.ts.map +1 -1
- package/dist/src/components/combobox/combobox.d.ts +16 -2
- package/dist/src/components/combobox/combobox.d.ts.map +1 -1
- package/dist/src/components/dropdown/dropdown.d.ts.map +1 -1
- package/dist/src/components/input/input.d.ts.map +1 -1
- package/dist/src/components/label/label.d.ts.map +1 -1
- package/dist/src/components/layer-card/layer-card.d.ts +39 -5
- package/dist/src/components/layer-card/layer-card.d.ts.map +1 -1
- package/dist/src/components/menubar/menubar.d.ts.map +1 -1
- package/dist/src/components/pagination/pagination.d.ts +51 -1
- package/dist/src/components/pagination/pagination.d.ts.map +1 -1
- package/dist/src/components/popover/popover.d.ts +35 -8
- 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/select/select.d.ts +49 -5
- package/dist/src/components/select/select.d.ts.map +1 -1
- package/dist/src/components/sidebar/sidebar.d.ts +2 -2
- package/dist/src/components/sidebar/sidebar.d.ts.map +1 -1
- package/dist/src/components/surface/index.d.ts +3 -0
- package/dist/src/components/surface/index.d.ts.map +1 -1
- package/dist/src/components/surface/surface.d.ts +14 -10
- package/dist/src/components/surface/surface.d.ts.map +1 -1
- package/dist/src/components/table/table.d.ts.map +1 -1
- package/dist/src/components/table-of-contents/index.d.ts +2 -0
- package/dist/src/components/table-of-contents/index.d.ts.map +1 -0
- package/dist/src/components/table-of-contents/table-of-contents.d.ts +70 -0
- package/dist/src/components/table-of-contents/table-of-contents.d.ts.map +1 -0
- package/dist/src/components/tooltip/tooltip.d.ts +15 -6
- package/dist/src/components/tooltip/tooltip.d.ts.map +1 -1
- package/dist/src/index.d.ts +6 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/styles/kumo-binding.css +1 -0
- package/dist/styles/kumo-standalone.css +1 -1
- package/dist/styles/theme-kumo.css +6 -6
- package/package.json +5 -1
- package/scripts/theme-generator/config.ts +8 -6
- package/dist/chunks/Legend-o0ntojbaplmszwk0.js.map +0 -1
- package/dist/chunks/button-cdxnqcgzwko8ooha.js.map +0 -1
- package/dist/chunks/checkbox-kt1uojk2f9e0d0h1.js.map +0 -1
- package/dist/chunks/combobox-he2hd9e2ruknq5mp.js.map +0 -1
- package/dist/chunks/command-palette-jc1w07jwakxvj23a.js.map +0 -1
- package/dist/chunks/dialog-oqh8l3l3zutpibxx.js.map +0 -1
- package/dist/chunks/input-group-lxdd09p60cf27pe1.js.map +0 -1
- package/dist/chunks/input-h48k3uagzrgb98au.js.map +0 -1
- package/dist/chunks/label-latndvb1ngem7we8.js +0 -62
- package/dist/chunks/layer-card-l5yjvrxry1dhte57.js +0 -44
- package/dist/chunks/layer-card-l5yjvrxry1dhte57.js.map +0 -1
- package/dist/chunks/menubar-f1pilzooe5mue7c4.js +0 -92
- package/dist/chunks/menubar-f1pilzooe5mue7c4.js.map +0 -1
- package/dist/chunks/pagination-cu5lm6p5dxuycta4.js +0 -243
- package/dist/chunks/pagination-cu5lm6p5dxuycta4.js.map +0 -1
- package/dist/chunks/popover-h300w4vit0s2ayej.js.map +0 -1
- package/dist/chunks/radio-jouttv89lbvhs55r.js.map +0 -1
- package/dist/chunks/select-kva5ru5f673kah1m.js +0 -179
- package/dist/chunks/select-kva5ru5f673kah1m.js.map +0 -1
- package/dist/chunks/sidebar-hljy3ssm8itc0ucx.js.map +0 -1
- package/dist/chunks/surface-cilvbyhmyujz1bee.js +0 -36
- package/dist/chunks/surface-cilvbyhmyujz1bee.js.map +0 -1
- package/dist/chunks/switch-ihaydbzem62bey4p.js.map +0 -1
- package/dist/chunks/table-inweecadl3her7pd.js +0 -183
- package/dist/chunks/table-inweecadl3her7pd.js.map +0 -1
- package/dist/chunks/tooltip-belkznz8t8333h5f.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudflare-logo-bgts2jgsdh7sslw4.js","sources":["../../src/components/cloudflare-logo/cloudflare-logo.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\n\n// =============================================================================\n// Brand Colors (internal)\n// =============================================================================\n\nconst CLOUDFLARE_ORANGE = \"#F48120\";\nconst CLOUDFLARE_YELLOW = \"#FAAD3F\";\nconst CLOUDFLARE_TEXT_GRAY = \"#404041\";\n\n// =============================================================================\n// SVG Path Data (internal)\n// =============================================================================\n\nconst CLOUDFLARE_GLYPH_ORANGE_PATH =\n \"M33.204 20.4C33.3649 19.9741 33.4217 19.5159 33.3695 19.0636C33.3173 18.6113 33.1577 18.1781 32.904 17.8C32.6435 17.4876 32.3239 17.2297 31.9636 17.0409C31.6032 16.8522 31.2092 16.7363 30.804 16.7L13.404 16.5C13.304 16.5 13.204 16.4 13.104 16.4C13.0808 16.3825 13.0618 16.3599 13.0488 16.3339C13.0358 16.3078 13.029 16.2791 13.029 16.25C13.029 16.2209 13.0358 16.1922 13.0488 16.1662C13.0618 16.1401 13.0808 16.1175 13.104 16.1C13.204 15.9 13.304 15.8 13.504 15.8L31.004 15.6C32.115 15.4767 33.1731 15.0597 34.0695 14.3918C34.9659 13.7239 35.6681 12.8293 36.104 11.8L37.104 9.20002C37.104 9.10002 37.204 9.00001 37.104 8.90001C36.5604 6.47843 35.2411 4.30052 33.3466 2.69721C31.4521 1.09391 29.086 0.152865 26.6079 0.0170769C24.1298 -0.118712 21.675 0.558179 19.6167 1.94489C17.5584 3.33161 16.009 5.35233 15.204 7.70002C14.159 6.95365 12.8843 6.59957 11.604 6.70002C10.4291 6.83102 9.33369 7.35777 8.49774 8.19372C7.66179 9.02966 7.13505 10.1251 7.00404 11.3C6.93745 11.9014 6.97125 12.5097 7.10404 13.1C5.20298 13.1526 3.39743 13.9448 2.07147 15.3081C0.745511 16.6714 0.00377461 18.4982 0.00403983 20.4C-0.0123708 20.7695 0.0212659 21.1395 0.104038 21.5C0.10863 21.5781 0.141713 21.6517 0.19701 21.707C0.252307 21.7623 0.325975 21.7954 0.404041 21.8H32.504C32.704 21.8 32.904 21.7 32.904 21.5L33.204 20.4Z\";\n\nconst CLOUDFLARE_GLYPH_YELLOW_PATH =\n \"M38.704 9.20002H38.204C38.104 9.20002 38.004 9.30001 37.904 9.40001L37.204 11.8C37.0431 12.2259 36.9864 12.6841 37.0386 13.1364C37.0908 13.5887 37.2504 14.0219 37.504 14.4C37.7646 14.7124 38.0842 14.9704 38.4445 15.1591C38.8049 15.3479 39.1989 15.4637 39.604 15.5L43.304 15.7C43.404 15.7 43.504 15.8 43.604 15.8C43.6273 15.8175 43.6462 15.8401 43.6592 15.8662C43.6723 15.8922 43.679 15.9209 43.679 15.95C43.679 15.9791 43.6723 16.0078 43.6592 16.0339C43.6462 16.0599 43.6273 16.0826 43.604 16.1C43.504 16.3 43.404 16.4 43.204 16.4L39.404 16.6C38.293 16.7233 37.2349 17.1403 36.3386 17.8082C35.4422 18.4761 34.74 19.3707 34.304 20.4L34.104 21.3C34.004 21.4 34.104 21.6 34.304 21.6H47.504C47.5448 21.6058 47.5863 21.6021 47.6254 21.5891C47.6644 21.5761 47.6999 21.5541 47.729 21.525C47.7581 21.4959 47.7801 21.4604 47.7931 21.4214C47.8061 21.3823 47.8099 21.3408 47.804 21.3C48.0421 20.4527 48.1764 19.5797 48.204 18.7C48.1882 16.1854 47.1822 13.7782 45.404 12C43.6259 10.2218 41.2187 9.21587 38.704 9.20002Z\";\n\nconst CLOUDFLARE_WORDMARK_PATH =\n \"M100.5,27.2a.9.9,0,1,1,.9-.9.89626.89626,0,0,1-.9.9m0-1.6a.7.7,0,1,0,.7.7.68354.68354,0,0,0-.7-.7m.4,1.2h-.2l-.2-.3h-.2v.3h-.2v-.9h.5a.26517.26517,0,0,1,.3.3c0,.1-.1.2-.2.3l.2.3Zm-.3-.5c.1,0,.1,0,.1-.1a.09794.09794,0,0,0-.1-.1h-.3v.3h.3Zm-89.7-.9h2.2v6h3.8v1.9h-6Zm8.3,3.9a4.10491,4.10491,0,0,1,4.3-4.1,4.02,4.02,0,0,1,4.2,4.1,4.10491,4.10491,0,0,1-4.3,4.1,4.07888,4.07888,0,0,1-4.2-4.1m6.3,0a2.05565,2.05565,0,0,0-2-2.2,2.1025,2.1025,0,0,0,0,4.2c1.2.2,2-.8,2-2m4.9.5V25.4h2.2v4.4c0,1.1.6,1.7,1.5,1.7a1.39926,1.39926,0,0,0,1.5-1.6V25.4h2.2v4.4c0,2.6-1.5,3.7-3.7,3.7-2.3-.1-3.7-1.2-3.7-3.7m10.7-4.4h3.1c2.8,0,4.5,1.6,4.5,3.9s-1.7,4-4.5,4h-3V25.4Zm3.1,5.9a2.00909,2.00909,0,1,0,0-4h-.9v4Zm7.6-5.9h6.3v1.9H54v1.3h3.7v1.8H54v2.9H51.8Zm9.4,0h2.2v6h3.8v1.9h-6Zm11.7-.1h2.2l3.4,8H76.1l-.6-1.4H72.4l-.6,1.4H69.5Zm2,4.9L74,28l-.9,2.2Zm6.4-4.8H85a3.41818,3.41818,0,0,1,2.6.9,2.62373,2.62373,0,0,1-.9,4.2l1.9,2.8H86.1l-1.6-2.4h-1v2.4H81.3Zm3.6,3.8c.7,0,1.2-.4,1.2-.9,0-.6-.5-.9-1.2-.9H83.5v1.9h1.4Zm6.5-3.8h6.4v1.8H93.6v1.2h3.8v1.8H93.6v1.2h4.3v1.9H91.4ZM6.1,30.3a1.97548,1.97548,0,0,1-1.8,1.2,2.1025,2.1025,0,0,1,0-4.2,2.0977,2.0977,0,0,1,1.9,1.3H8.5a4.13459,4.13459,0,0,0-4.2-3.3A4.1651,4.1651,0,0,0,0,29.4a4.07888,4.07888,0,0,0,4.2,4.1,4.31812,4.31812,0,0,0,4.2-3.2Z\";\n\nconst CLOUDFLARE_FULL_LOGO_ORANGE_PATH =\n \"M84.2,20.4a2.85546,2.85546,0,0,0-.3-2.6,3.09428,3.09428,0,0,0-2.1-1.1l-17.4-.2c-.1,0-.2-.1-.3-.1a.1875.1875,0,0,1,0-.3c.1-.2.2-.3.4-.3L82,15.6a6.29223,6.29223,0,0,0,5.1-3.8l1-2.6c0-.1.1-.2,0-.3A11.39646,11.39646,0,0,0,66.2,7.7a5.45941,5.45941,0,0,0-3.6-1A5.20936,5.20936,0,0,0,58,11.3a5.46262,5.46262,0,0,0,.1,1.8A7.30177,7.30177,0,0,0,51,20.4a4.102,4.102,0,0,0,.1,1.1.3193.3193,0,0,0,.3.3H83.5c.2,0,.4-.1.4-.3Z\";\n\nconst CLOUDFLARE_FULL_LOGO_YELLOW_PATH =\n \"M89.7,9.2h-.5c-.1,0-.2.1-.3.2l-.7,2.4a2.85546,2.85546,0,0,0,.3,2.6,3.09428,3.09428,0,0,0,2.1,1.1l3.7.2c.1,0,.2.1.3.1a.1875.1875,0,0,1,0,.3c-.1.2-.2.3-.4.3l-3.8.2a6.29223,6.29223,0,0,0-5.1,3.8l-.2.9c-.1.1,0,.3.2.3H98.5a.26517.26517,0,0,0,.3-.3,10.87184,10.87184,0,0,0,.4-2.6,9.56045,9.56045,0,0,0-9.5-9.5\";\n\nconst CLOUDFLARE_GLYPH_VIEWBOX = \"0 0 49 22\";\nconst CLOUDFLARE_FULL_LOGO_VIEWBOX = \"0 0 101.4 33.5\";\n\n// =============================================================================\n// Component Variants\n// =============================================================================\n\nexport const KUMO_CLOUDFLARE_LOGO_VARIANTS = {\n variant: {\n glyph: {\n description: \"Cloud glyph only (logomark)\",\n },\n full: {\n description: \"Full logo with cloud glyph and wordmark stacked\",\n },\n },\n color: {\n color: {\n description:\n \"Brand colors (orange/yellow gradient cloud, dark gray text)\",\n },\n black: {\n description: \"Solid black logo\",\n },\n white: {\n description: \"Solid white logo (for dark backgrounds)\",\n },\n },\n} as const;\n\nexport const KUMO_CLOUDFLARE_LOGO_DEFAULT_VARIANTS = {\n variant: \"full\",\n color: \"color\",\n} as const;\n\nexport type CloudflareLogoVariant =\n keyof typeof KUMO_CLOUDFLARE_LOGO_VARIANTS.variant;\nexport type CloudflareLogoColor =\n keyof typeof KUMO_CLOUDFLARE_LOGO_VARIANTS.color;\n\nexport interface CloudflareLogoProps\n extends React.SVGAttributes<SVGSVGElement> {\n /**\n * Logo variant\n * - `glyph`: Cloud icon only\n * - `full`: Cloud icon with \"CLOUDFLARE\" wordmark below\n * @default \"full\"\n */\n variant?: CloudflareLogoVariant;\n /**\n * Color scheme\n * - `color`: Brand colors (orange/yellow cloud, dark gray wordmark)\n * - `black`: Solid black\n * - `white`: Solid white (for dark backgrounds)\n * @default \"color\"\n */\n color?: CloudflareLogoColor;\n}\n\n/**\n * Cloudflare logo component.\n *\n * @example Glyph only (cloud icon)\n * ```tsx\n * <CloudflareLogo variant=\"glyph\" className=\"w-12\" />\n * ```\n *\n * @example Full logo with wordmark\n * ```tsx\n * <CloudflareLogo variant=\"full\" className=\"w-40\" />\n * ```\n *\n * @example White logo for dark backgrounds\n * ```tsx\n * <CloudflareLogo color=\"white\" className=\"w-32\" />\n * ```\n *\n * @example Black logo\n * ```tsx\n * <CloudflareLogo color=\"black\" className=\"w-32\" />\n * ```\n */\nexport const CloudflareLogo = forwardRef<SVGSVGElement, CloudflareLogoProps>(\n (\n {\n variant = KUMO_CLOUDFLARE_LOGO_DEFAULT_VARIANTS.variant,\n color = KUMO_CLOUDFLARE_LOGO_DEFAULT_VARIANTS.color,\n className,\n ...props\n },\n ref,\n ) => {\n const isGlyph = variant === \"glyph\";\n\n // Determine fill colors\n // Cloud glyph always uses brand colors when color=\"color\", otherwise currentColor\n const fillOrange = color === \"color\" ? CLOUDFLARE_ORANGE : \"currentColor\";\n const fillYellow = color === \"color\" ? CLOUDFLARE_YELLOW : \"currentColor\";\n // Wordmark uses currentColor to respect dark mode (via text-kumo-default class)\n const fillText = \"currentColor\";\n\n if (isGlyph) {\n return (\n <svg\n ref={ref}\n viewBox={CLOUDFLARE_GLYPH_VIEWBOX}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n aria-label=\"Cloudflare logo\"\n className={cn(\n color === \"white\" && \"text-white\",\n color === \"black\" && \"text-black\",\n className,\n )}\n {...props}\n >\n <path\n d=\"M33.204 20.4C33.3649 19.9741 33.4217 19.5159 33.3695 19.0636C33.3173 18.6113 33.1577 18.1781 32.904 17.8C32.6435 17.4876 32.3239 17.2297 31.9636 17.0409C31.6032 16.8522 31.2092 16.7363 30.804 16.7L13.404 16.5C13.304 16.5 13.204 16.4 13.104 16.4C13.0808 16.3825 13.0618 16.3599 13.0488 16.3339C13.0358 16.3078 13.029 16.2791 13.029 16.25C13.029 16.2209 13.0358 16.1922 13.0488 16.1662C13.0618 16.1401 13.0808 16.1175 13.104 16.1C13.204 15.9 13.304 15.8 13.504 15.8L31.004 15.6C32.115 15.4767 33.1731 15.0597 34.0695 14.3918C34.9659 13.7239 35.6681 12.8293 36.104 11.8L37.104 9.20002C37.104 9.10002 37.204 9.00001 37.104 8.90001C36.5604 6.47843 35.2411 4.30052 33.3466 2.69721C31.4521 1.09391 29.086 0.152865 26.6079 0.0170769C24.1298 -0.118712 21.675 0.558179 19.6167 1.94489C17.5584 3.33161 16.009 5.35233 15.204 7.70002C14.159 6.95365 12.8843 6.59957 11.604 6.70002C10.4291 6.83102 9.33369 7.35777 8.49774 8.19372C7.66179 9.02966 7.13505 10.1251 7.00404 11.3C6.93745 11.9014 6.97125 12.5097 7.10404 13.1C5.20298 13.1526 3.39743 13.9448 2.07147 15.3081C0.745511 16.6714 0.00377461 18.4982 0.00403983 20.4C-0.0123708 20.7695 0.0212659 21.1395 0.104038 21.5C0.10863 21.5781 0.141713 21.6517 0.19701 21.707C0.252307 21.7623 0.325975 21.7954 0.404041 21.8H32.504C32.704 21.8 32.904 21.7 32.904 21.5L33.204 20.4Z\"\n fill={fillOrange}\n />\n <path\n d=\"M38.704 9.20002H38.204C38.104 9.20002 38.004 9.30001 37.904 9.40001L37.204 11.8C37.0431 12.2259 36.9864 12.6841 37.0386 13.1364C37.0908 13.5887 37.2504 14.0219 37.504 14.4C37.7646 14.7124 38.0842 14.9704 38.4445 15.1591C38.8049 15.3479 39.1989 15.4637 39.604 15.5L43.304 15.7C43.404 15.7 43.504 15.8 43.604 15.8C43.6273 15.8175 43.6462 15.8401 43.6592 15.8662C43.6723 15.8922 43.679 15.9209 43.679 15.95C43.679 15.9791 43.6723 16.0078 43.6592 16.0339C43.6462 16.0599 43.6273 16.0826 43.604 16.1C43.504 16.3 43.404 16.4 43.204 16.4L39.404 16.6C38.293 16.7233 37.2349 17.1403 36.3386 17.8082C35.4422 18.4761 34.74 19.3707 34.304 20.4L34.104 21.3C34.004 21.4 34.104 21.6 34.304 21.6H47.504C47.5448 21.6058 47.5863 21.6021 47.6254 21.5891C47.6644 21.5761 47.6999 21.5541 47.729 21.525C47.7581 21.4959 47.7801 21.4604 47.7931 21.4214C47.8061 21.3823 47.8099 21.3408 47.804 21.3C48.0421 20.4527 48.1764 19.5797 48.204 18.7C48.1882 16.1854 47.1822 13.7782 45.404 12C43.6259 10.2218 41.2187 9.21587 38.704 9.20002Z\"\n fill={fillYellow}\n />\n </svg>\n );\n }\n\n // Full logo with wordmark\n return (\n <svg\n ref={ref}\n viewBox={CLOUDFLARE_FULL_LOGO_VIEWBOX}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n aria-label=\"Cloudflare logo\"\n className={cn(\n // Wordmark text color - respects dark mode\n color === \"color\" && \"text-kumo-default\",\n color === \"white\" && \"text-white\",\n color === \"black\" && \"text-black\",\n className,\n )}\n {...props}\n >\n {/* Cloud glyph */}\n <path\n d=\"M84.2,20.4a2.85546,2.85546,0,0,0-.3-2.6,3.09428,3.09428,0,0,0-2.1-1.1l-17.4-.2c-.1,0-.2-.1-.3-.1a.1875.1875,0,0,1,0-.3c.1-.2.2-.3.4-.3L82,15.6a6.29223,6.29223,0,0,0,5.1-3.8l1-2.6c0-.1.1-.2,0-.3A11.39646,11.39646,0,0,0,66.2,7.7a5.45941,5.45941,0,0,0-3.6-1A5.20936,5.20936,0,0,0,58,11.3a5.46262,5.46262,0,0,0,.1,1.8A7.30177,7.30177,0,0,0,51,20.4a4.102,4.102,0,0,0,.1,1.1.3193.3193,0,0,0,.3.3H83.5c.2,0,.4-.1.4-.3Z\"\n fill={fillOrange}\n />\n <path\n d=\"M89.7,9.2h-.5c-.1,0-.2.1-.3.2l-.7,2.4a2.85546,2.85546,0,0,0,.3,2.6,3.09428,3.09428,0,0,0,2.1,1.1l3.7.2c.1,0,.2.1.3.1a.1875.1875,0,0,1,0,.3c-.1.2-.2.3-.4.3l-3.8.2a6.29223,6.29223,0,0,0-5.1,3.8l-.2.9c-.1.1,0,.3.2.3H98.5a.26517.26517,0,0,0,.3-.3,10.87184,10.87184,0,0,0,.4-2.6,9.56045,9.56045,0,0,0-9.5-9.5\"\n fill={fillYellow}\n />\n {/* Wordmark */}\n <path\n d=\"M100.5,27.2a.9.9,0,1,1,.9-.9.89626.89626,0,0,1-.9.9m0-1.6a.7.7,0,1,0,.7.7.68354.68354,0,0,0-.7-.7m.4,1.2h-.2l-.2-.3h-.2v.3h-.2v-.9h.5a.26517.26517,0,0,1,.3.3c0,.1-.1.2-.2.3l.2.3Zm-.3-.5c.1,0,.1,0,.1-.1a.09794.09794,0,0,0-.1-.1h-.3v.3h.3Zm-89.7-.9h2.2v6h3.8v1.9h-6Zm8.3,3.9a4.10491,4.10491,0,0,1,4.3-4.1,4.02,4.02,0,0,1,4.2,4.1,4.10491,4.10491,0,0,1-4.3,4.1,4.07888,4.07888,0,0,1-4.2-4.1m6.3,0a2.05565,2.05565,0,0,0-2-2.2,2.1025,2.1025,0,0,0,0,4.2c1.2.2,2-.8,2-2m4.9.5V25.4h2.2v4.4c0,1.1.6,1.7,1.5,1.7a1.39926,1.39926,0,0,0,1.5-1.6V25.4h2.2v4.4c0,2.6-1.5,3.7-3.7,3.7-2.3-.1-3.7-1.2-3.7-3.7m10.7-4.4h3.1c2.8,0,4.5,1.6,4.5,3.9s-1.7,4-4.5,4h-3V25.4Zm3.1,5.9a2.00909,2.00909,0,1,0,0-4h-.9v4Zm7.6-5.9h6.3v1.9H54v1.3h3.7v1.8H54v2.9H51.8Zm9.4,0h2.2v6h3.8v1.9h-6Zm11.7-.1h2.2l3.4,8H76.1l-.6-1.4H72.4l-.6,1.4H69.5Zm2,4.9L74,28l-.9,2.2Zm6.4-4.8H85a3.41818,3.41818,0,0,1,2.6.9,2.62373,2.62373,0,0,1-.9,4.2l1.9,2.8H86.1l-1.6-2.4h-1v2.4H81.3Zm3.6,3.8c.7,0,1.2-.4,1.2-.9,0-.6-.5-.9-1.2-.9H83.5v1.9h1.4Zm6.5-3.8h6.4v1.8H93.6v1.2h3.8v1.8H93.6v1.2h4.3v1.9H91.4ZM6.1,30.3a1.97548,1.97548,0,0,1-1.8,1.2,2.1025,2.1025,0,0,1,0-4.2,2.0977,2.0977,0,0,1,1.9,1.3H8.5a4.13459,4.13459,0,0,0-4.2-3.3A4.1651,4.1651,0,0,0,0,29.4a4.07888,4.07888,0,0,0,4.2,4.1,4.31812,4.31812,0,0,0,4.2-3.2Z\"\n fill={fillText}\n />\n </svg>\n );\n },\n);\n\nCloudflareLogo.displayName = \"CloudflareLogo\";\n\n// =============================================================================\n// PoweredByCloudflare Component\n// =============================================================================\n\nexport interface PoweredByCloudflareProps\n extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n /**\n * Color scheme for the logo and text\n * @default \"color\"\n */\n color?: CloudflareLogoColor;\n}\n\n/**\n * \"Powered by Cloudflare\" badge component.\n *\n * Renders a link to cloudflare.com with the Cloudflare glyph and \"Powered by Cloudflare\" text.\n *\n * @example Basic usage\n * ```tsx\n * <PoweredByCloudflare />\n * ```\n *\n * @example White variant for dark backgrounds\n * ```tsx\n * <PoweredByCloudflare color=\"white\" />\n * ```\n *\n * @example Custom link\n * ```tsx\n * <PoweredByCloudflare href=\"https://cloudflare.com/products/workers\" />\n * ```\n */\nexport const PoweredByCloudflare = forwardRef<\n HTMLAnchorElement,\n PoweredByCloudflareProps\n>(\n (\n {\n color = \"color\",\n href = \"https://www.cloudflare.com\",\n className,\n ...props\n },\n ref,\n ) => {\n return (\n <a\n ref={ref}\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={cn(\n // Base badge styles\n \"inline-flex items-center gap-2 rounded-lg py-2 pl-2.5 pr-3 text-sm font-medium\",\n \"ring-1 ring-inset transition-all hover:shadow-sm\",\n // Color variants using semantic tokens\n color === \"color\" && \"bg-kumo-base text-kumo-default ring-kumo-line\",\n color === \"black\" && \"bg-white text-black ring-black/20\",\n color === \"white\" && \"bg-black text-white ring-white/20\",\n className,\n )}\n {...props}\n >\n <CloudflareLogo variant=\"glyph\" color={color} className=\"h-4 w-auto\" />\n <span>\n Powered by <span className=\"font-semibold\">Cloudflare</span>\n </span>\n </a>\n );\n },\n);\n\nPoweredByCloudflare.displayName = \"PoweredByCloudflare\";\n\n// =============================================================================\n// SVG Generation Helper\n// =============================================================================\n\nexport type CloudflareLogoSvgVariant = \"glyph\" | \"full\";\nexport type CloudflareLogoSvgColor = \"color\" | \"black\" | \"white\";\n\nexport interface GenerateCloudflareLogoSvgOptions {\n /**\n * Logo variant\n * - `glyph`: Cloud icon only\n * - `full`: Cloud icon with \"CLOUDFLARE\" wordmark\n * @default \"full\"\n */\n variant?: CloudflareLogoSvgVariant;\n /**\n * Color scheme\n * - `color`: Brand colors (orange/yellow cloud, dark gray wordmark)\n * - `black`: Solid black\n * - `white`: Solid white\n * @default \"color\"\n */\n color?: CloudflareLogoSvgColor;\n}\n\n/**\n * Generates SVG markup string for the Cloudflare logo.\n *\n * Useful for copying to clipboard or embedding in non-React contexts.\n *\n * @example Copy glyph SVG to clipboard\n * ```tsx\n * const svg = generateCloudflareLogoSvg({ variant: \"glyph\" });\n * await navigator.clipboard.writeText(svg);\n * ```\n *\n * @example Generate full logo in black\n * ```tsx\n * const svg = generateCloudflareLogoSvg({ variant: \"full\", color: \"black\" });\n * ```\n */\nexport function generateCloudflareLogoSvg(\n options: GenerateCloudflareLogoSvgOptions = {},\n): string {\n const { variant = \"full\", color = \"color\" } = options;\n\n const isGlyph = variant === \"glyph\";\n\n // Determine fill colors\n const fillOrange = color === \"color\" ? CLOUDFLARE_ORANGE : color;\n const fillYellow = color === \"color\" ? CLOUDFLARE_YELLOW : color;\n const fillText = color === \"color\" ? CLOUDFLARE_TEXT_GRAY : color;\n\n if (isGlyph) {\n return `<svg viewBox=\"${CLOUDFLARE_GLYPH_VIEWBOX}\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Cloudflare logo\">\n <path d=\"${CLOUDFLARE_GLYPH_ORANGE_PATH}\" fill=\"${fillOrange}\"/>\n <path d=\"${CLOUDFLARE_GLYPH_YELLOW_PATH}\" fill=\"${fillYellow}\"/>\n</svg>`;\n }\n\n // Full logo with wordmark\n return `<svg viewBox=\"${CLOUDFLARE_FULL_LOGO_VIEWBOX}\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Cloudflare logo\">\n <path d=\"${CLOUDFLARE_FULL_LOGO_ORANGE_PATH}\" fill=\"${fillOrange}\"/>\n <path d=\"${CLOUDFLARE_FULL_LOGO_YELLOW_PATH}\" fill=\"${fillYellow}\"/>\n <path d=\"${CLOUDFLARE_WORDMARK_PATH}\" fill=\"${fillText}\"/>\n</svg>`;\n}\n"],"names":["CLOUDFLARE_ORANGE","CLOUDFLARE_YELLOW","CLOUDFLARE_TEXT_GRAY","CLOUDFLARE_GLYPH_ORANGE_PATH","CLOUDFLARE_GLYPH_YELLOW_PATH","CLOUDFLARE_WORDMARK_PATH","CLOUDFLARE_FULL_LOGO_ORANGE_PATH","CLOUDFLARE_FULL_LOGO_YELLOW_PATH","CLOUDFLARE_GLYPH_VIEWBOX","CLOUDFLARE_FULL_LOGO_VIEWBOX","KUMO_CLOUDFLARE_LOGO_VARIANTS","KUMO_CLOUDFLARE_LOGO_DEFAULT_VARIANTS","CloudflareLogo","forwardRef","variant","color","className","props","ref","isGlyph","fillOrange","fillYellow","fillText","jsxs","cn","jsx","PoweredByCloudflare","href","generateCloudflareLogoSvg","options"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cloudflare-logo-pbavoe1wu8nr5c4n.js","sources":["../../src/components/cloudflare-logo/cloudflare-logo.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\n\n// =============================================================================\n// Brand Colors (internal)\n// =============================================================================\n\nconst CLOUDFLARE_ORANGE = \"#F48120\";\nconst CLOUDFLARE_YELLOW = \"#FAAD3F\";\nconst CLOUDFLARE_TEXT_GRAY = \"#404041\";\n\n// =============================================================================\n// SVG Path Data (internal)\n// =============================================================================\n\nconst CLOUDFLARE_GLYPH_ORANGE_PATH =\n \"M33.204 20.4C33.3649 19.9741 33.4217 19.5159 33.3695 19.0636C33.3173 18.6113 33.1577 18.1781 32.904 17.8C32.6435 17.4876 32.3239 17.2297 31.9636 17.0409C31.6032 16.8522 31.2092 16.7363 30.804 16.7L13.404 16.5C13.304 16.5 13.204 16.4 13.104 16.4C13.0808 16.3825 13.0618 16.3599 13.0488 16.3339C13.0358 16.3078 13.029 16.2791 13.029 16.25C13.029 16.2209 13.0358 16.1922 13.0488 16.1662C13.0618 16.1401 13.0808 16.1175 13.104 16.1C13.204 15.9 13.304 15.8 13.504 15.8L31.004 15.6C32.115 15.4767 33.1731 15.0597 34.0695 14.3918C34.9659 13.7239 35.6681 12.8293 36.104 11.8L37.104 9.20002C37.104 9.10002 37.204 9.00001 37.104 8.90001C36.5604 6.47843 35.2411 4.30052 33.3466 2.69721C31.4521 1.09391 29.086 0.152865 26.6079 0.0170769C24.1298 -0.118712 21.675 0.558179 19.6167 1.94489C17.5584 3.33161 16.009 5.35233 15.204 7.70002C14.159 6.95365 12.8843 6.59957 11.604 6.70002C10.4291 6.83102 9.33369 7.35777 8.49774 8.19372C7.66179 9.02966 7.13505 10.1251 7.00404 11.3C6.93745 11.9014 6.97125 12.5097 7.10404 13.1C5.20298 13.1526 3.39743 13.9448 2.07147 15.3081C0.745511 16.6714 0.00377461 18.4982 0.00403983 20.4C-0.0123708 20.7695 0.0212659 21.1395 0.104038 21.5C0.10863 21.5781 0.141713 21.6517 0.19701 21.707C0.252307 21.7623 0.325975 21.7954 0.404041 21.8H32.504C32.704 21.8 32.904 21.7 32.904 21.5L33.204 20.4Z\";\n\nconst CLOUDFLARE_GLYPH_YELLOW_PATH =\n \"M38.704 9.20002H38.204C38.104 9.20002 38.004 9.30001 37.904 9.40001L37.204 11.8C37.0431 12.2259 36.9864 12.6841 37.0386 13.1364C37.0908 13.5887 37.2504 14.0219 37.504 14.4C37.7646 14.7124 38.0842 14.9704 38.4445 15.1591C38.8049 15.3479 39.1989 15.4637 39.604 15.5L43.304 15.7C43.404 15.7 43.504 15.8 43.604 15.8C43.6273 15.8175 43.6462 15.8401 43.6592 15.8662C43.6723 15.8922 43.679 15.9209 43.679 15.95C43.679 15.9791 43.6723 16.0078 43.6592 16.0339C43.6462 16.0599 43.6273 16.0826 43.604 16.1C43.504 16.3 43.404 16.4 43.204 16.4L39.404 16.6C38.293 16.7233 37.2349 17.1403 36.3386 17.8082C35.4422 18.4761 34.74 19.3707 34.304 20.4L34.104 21.3C34.004 21.4 34.104 21.6 34.304 21.6H47.504C47.5448 21.6058 47.5863 21.6021 47.6254 21.5891C47.6644 21.5761 47.6999 21.5541 47.729 21.525C47.7581 21.4959 47.7801 21.4604 47.7931 21.4214C47.8061 21.3823 47.8099 21.3408 47.804 21.3C48.0421 20.4527 48.1764 19.5797 48.204 18.7C48.1882 16.1854 47.1822 13.7782 45.404 12C43.6259 10.2218 41.2187 9.21587 38.704 9.20002Z\";\n\nconst CLOUDFLARE_WORDMARK_PATH =\n \"M100.5,27.2a.9.9,0,1,1,.9-.9.89626.89626,0,0,1-.9.9m0-1.6a.7.7,0,1,0,.7.7.68354.68354,0,0,0-.7-.7m.4,1.2h-.2l-.2-.3h-.2v.3h-.2v-.9h.5a.26517.26517,0,0,1,.3.3c0,.1-.1.2-.2.3l.2.3Zm-.3-.5c.1,0,.1,0,.1-.1a.09794.09794,0,0,0-.1-.1h-.3v.3h.3Zm-89.7-.9h2.2v6h3.8v1.9h-6Zm8.3,3.9a4.10491,4.10491,0,0,1,4.3-4.1,4.02,4.02,0,0,1,4.2,4.1,4.10491,4.10491,0,0,1-4.3,4.1,4.07888,4.07888,0,0,1-4.2-4.1m6.3,0a2.05565,2.05565,0,0,0-2-2.2,2.1025,2.1025,0,0,0,0,4.2c1.2.2,2-.8,2-2m4.9.5V25.4h2.2v4.4c0,1.1.6,1.7,1.5,1.7a1.39926,1.39926,0,0,0,1.5-1.6V25.4h2.2v4.4c0,2.6-1.5,3.7-3.7,3.7-2.3-.1-3.7-1.2-3.7-3.7m10.7-4.4h3.1c2.8,0,4.5,1.6,4.5,3.9s-1.7,4-4.5,4h-3V25.4Zm3.1,5.9a2.00909,2.00909,0,1,0,0-4h-.9v4Zm7.6-5.9h6.3v1.9H54v1.3h3.7v1.8H54v2.9H51.8Zm9.4,0h2.2v6h3.8v1.9h-6Zm11.7-.1h2.2l3.4,8H76.1l-.6-1.4H72.4l-.6,1.4H69.5Zm2,4.9L74,28l-.9,2.2Zm6.4-4.8H85a3.41818,3.41818,0,0,1,2.6.9,2.62373,2.62373,0,0,1-.9,4.2l1.9,2.8H86.1l-1.6-2.4h-1v2.4H81.3Zm3.6,3.8c.7,0,1.2-.4,1.2-.9,0-.6-.5-.9-1.2-.9H83.5v1.9h1.4Zm6.5-3.8h6.4v1.8H93.6v1.2h3.8v1.8H93.6v1.2h4.3v1.9H91.4ZM6.1,30.3a1.97548,1.97548,0,0,1-1.8,1.2,2.1025,2.1025,0,0,1,0-4.2,2.0977,2.0977,0,0,1,1.9,1.3H8.5a4.13459,4.13459,0,0,0-4.2-3.3A4.1651,4.1651,0,0,0,0,29.4a4.07888,4.07888,0,0,0,4.2,4.1,4.31812,4.31812,0,0,0,4.2-3.2Z\";\n\nconst CLOUDFLARE_FULL_LOGO_ORANGE_PATH =\n \"M84.2,20.4a2.85546,2.85546,0,0,0-.3-2.6,3.09428,3.09428,0,0,0-2.1-1.1l-17.4-.2c-.1,0-.2-.1-.3-.1a.1875.1875,0,0,1,0-.3c.1-.2.2-.3.4-.3L82,15.6a6.29223,6.29223,0,0,0,5.1-3.8l1-2.6c0-.1.1-.2,0-.3A11.39646,11.39646,0,0,0,66.2,7.7a5.45941,5.45941,0,0,0-3.6-1A5.20936,5.20936,0,0,0,58,11.3a5.46262,5.46262,0,0,0,.1,1.8A7.30177,7.30177,0,0,0,51,20.4a4.102,4.102,0,0,0,.1,1.1.3193.3193,0,0,0,.3.3H83.5c.2,0,.4-.1.4-.3Z\";\n\nconst CLOUDFLARE_FULL_LOGO_YELLOW_PATH =\n \"M89.7,9.2h-.5c-.1,0-.2.1-.3.2l-.7,2.4a2.85546,2.85546,0,0,0,.3,2.6,3.09428,3.09428,0,0,0,2.1,1.1l3.7.2c.1,0,.2.1.3.1a.1875.1875,0,0,1,0,.3c-.1.2-.2.3-.4.3l-3.8.2a6.29223,6.29223,0,0,0-5.1,3.8l-.2.9c-.1.1,0,.3.2.3H98.5a.26517.26517,0,0,0,.3-.3,10.87184,10.87184,0,0,0,.4-2.6,9.56045,9.56045,0,0,0-9.5-9.5\";\n\nconst CLOUDFLARE_GLYPH_VIEWBOX = \"0 0 49 22\";\nconst CLOUDFLARE_FULL_LOGO_VIEWBOX = \"0 0 101.4 33.5\";\n\n// =============================================================================\n// Component Variants\n// =============================================================================\n\nexport const KUMO_CLOUDFLARE_LOGO_VARIANTS = {\n variant: {\n glyph: {\n description: \"Cloud glyph only (logomark)\",\n },\n full: {\n description: \"Full logo with cloud glyph and wordmark stacked\",\n },\n },\n color: {\n color: {\n description:\n \"Brand colors (orange/yellow gradient cloud, dark gray text)\",\n },\n black: {\n description: \"Solid black logo\",\n },\n white: {\n description: \"Solid white logo (for dark backgrounds)\",\n },\n },\n} as const;\n\nexport const KUMO_CLOUDFLARE_LOGO_DEFAULT_VARIANTS = {\n variant: \"full\",\n color: \"color\",\n} as const;\n\nexport type CloudflareLogoVariant =\n keyof typeof KUMO_CLOUDFLARE_LOGO_VARIANTS.variant;\nexport type CloudflareLogoColor =\n keyof typeof KUMO_CLOUDFLARE_LOGO_VARIANTS.color;\n\nexport interface CloudflareLogoProps\n extends React.SVGAttributes<SVGSVGElement> {\n /**\n * Logo variant\n * - `glyph`: Cloud icon only\n * - `full`: Cloud icon with \"CLOUDFLARE\" wordmark below\n * @default \"full\"\n */\n variant?: CloudflareLogoVariant;\n /**\n * Color scheme\n * - `color`: Brand colors (orange/yellow cloud, dark gray wordmark)\n * - `black`: Solid black\n * - `white`: Solid white (for dark backgrounds)\n * @default \"color\"\n */\n color?: CloudflareLogoColor;\n}\n\n/**\n * Cloudflare logo component.\n *\n * @example Glyph only (cloud icon)\n * ```tsx\n * <CloudflareLogo variant=\"glyph\" className=\"w-12\" />\n * ```\n *\n * @example Full logo with wordmark\n * ```tsx\n * <CloudflareLogo variant=\"full\" className=\"w-40\" />\n * ```\n *\n * @example White logo for dark backgrounds\n * ```tsx\n * <CloudflareLogo color=\"white\" className=\"w-32\" />\n * ```\n *\n * @example Black logo\n * ```tsx\n * <CloudflareLogo color=\"black\" className=\"w-32\" />\n * ```\n */\nexport const CloudflareLogo = forwardRef<SVGSVGElement, CloudflareLogoProps>(\n (\n {\n variant = KUMO_CLOUDFLARE_LOGO_DEFAULT_VARIANTS.variant,\n color = KUMO_CLOUDFLARE_LOGO_DEFAULT_VARIANTS.color,\n className,\n ...props\n },\n ref,\n ) => {\n const isGlyph = variant === \"glyph\";\n\n // Determine fill colors\n // Cloud glyph always uses brand colors when color=\"color\", otherwise currentColor\n const fillOrange = color === \"color\" ? CLOUDFLARE_ORANGE : \"currentColor\";\n const fillYellow = color === \"color\" ? CLOUDFLARE_YELLOW : \"currentColor\";\n // Wordmark uses currentColor to respect dark mode (via text-kumo-default class)\n const fillText = \"currentColor\";\n\n if (isGlyph) {\n return (\n <svg\n ref={ref}\n viewBox={CLOUDFLARE_GLYPH_VIEWBOX}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n aria-label=\"Cloudflare logo\"\n className={cn(\n color === \"white\" && \"text-white\",\n color === \"black\" && \"text-black\",\n className,\n )}\n {...props}\n >\n <path\n d=\"M33.204 20.4C33.3649 19.9741 33.4217 19.5159 33.3695 19.0636C33.3173 18.6113 33.1577 18.1781 32.904 17.8C32.6435 17.4876 32.3239 17.2297 31.9636 17.0409C31.6032 16.8522 31.2092 16.7363 30.804 16.7L13.404 16.5C13.304 16.5 13.204 16.4 13.104 16.4C13.0808 16.3825 13.0618 16.3599 13.0488 16.3339C13.0358 16.3078 13.029 16.2791 13.029 16.25C13.029 16.2209 13.0358 16.1922 13.0488 16.1662C13.0618 16.1401 13.0808 16.1175 13.104 16.1C13.204 15.9 13.304 15.8 13.504 15.8L31.004 15.6C32.115 15.4767 33.1731 15.0597 34.0695 14.3918C34.9659 13.7239 35.6681 12.8293 36.104 11.8L37.104 9.20002C37.104 9.10002 37.204 9.00001 37.104 8.90001C36.5604 6.47843 35.2411 4.30052 33.3466 2.69721C31.4521 1.09391 29.086 0.152865 26.6079 0.0170769C24.1298 -0.118712 21.675 0.558179 19.6167 1.94489C17.5584 3.33161 16.009 5.35233 15.204 7.70002C14.159 6.95365 12.8843 6.59957 11.604 6.70002C10.4291 6.83102 9.33369 7.35777 8.49774 8.19372C7.66179 9.02966 7.13505 10.1251 7.00404 11.3C6.93745 11.9014 6.97125 12.5097 7.10404 13.1C5.20298 13.1526 3.39743 13.9448 2.07147 15.3081C0.745511 16.6714 0.00377461 18.4982 0.00403983 20.4C-0.0123708 20.7695 0.0212659 21.1395 0.104038 21.5C0.10863 21.5781 0.141713 21.6517 0.19701 21.707C0.252307 21.7623 0.325975 21.7954 0.404041 21.8H32.504C32.704 21.8 32.904 21.7 32.904 21.5L33.204 20.4Z\"\n fill={fillOrange}\n />\n <path\n d=\"M38.704 9.20002H38.204C38.104 9.20002 38.004 9.30001 37.904 9.40001L37.204 11.8C37.0431 12.2259 36.9864 12.6841 37.0386 13.1364C37.0908 13.5887 37.2504 14.0219 37.504 14.4C37.7646 14.7124 38.0842 14.9704 38.4445 15.1591C38.8049 15.3479 39.1989 15.4637 39.604 15.5L43.304 15.7C43.404 15.7 43.504 15.8 43.604 15.8C43.6273 15.8175 43.6462 15.8401 43.6592 15.8662C43.6723 15.8922 43.679 15.9209 43.679 15.95C43.679 15.9791 43.6723 16.0078 43.6592 16.0339C43.6462 16.0599 43.6273 16.0826 43.604 16.1C43.504 16.3 43.404 16.4 43.204 16.4L39.404 16.6C38.293 16.7233 37.2349 17.1403 36.3386 17.8082C35.4422 18.4761 34.74 19.3707 34.304 20.4L34.104 21.3C34.004 21.4 34.104 21.6 34.304 21.6H47.504C47.5448 21.6058 47.5863 21.6021 47.6254 21.5891C47.6644 21.5761 47.6999 21.5541 47.729 21.525C47.7581 21.4959 47.7801 21.4604 47.7931 21.4214C47.8061 21.3823 47.8099 21.3408 47.804 21.3C48.0421 20.4527 48.1764 19.5797 48.204 18.7C48.1882 16.1854 47.1822 13.7782 45.404 12C43.6259 10.2218 41.2187 9.21587 38.704 9.20002Z\"\n fill={fillYellow}\n />\n </svg>\n );\n }\n\n // Full logo with wordmark\n return (\n <svg\n ref={ref}\n viewBox={CLOUDFLARE_FULL_LOGO_VIEWBOX}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n aria-label=\"Cloudflare logo\"\n className={cn(\n // Wordmark text color - respects dark mode\n color === \"color\" && \"text-kumo-default\",\n color === \"white\" && \"text-white\",\n color === \"black\" && \"text-black\",\n className,\n )}\n {...props}\n >\n {/* Cloud glyph */}\n <path\n d=\"M84.2,20.4a2.85546,2.85546,0,0,0-.3-2.6,3.09428,3.09428,0,0,0-2.1-1.1l-17.4-.2c-.1,0-.2-.1-.3-.1a.1875.1875,0,0,1,0-.3c.1-.2.2-.3.4-.3L82,15.6a6.29223,6.29223,0,0,0,5.1-3.8l1-2.6c0-.1.1-.2,0-.3A11.39646,11.39646,0,0,0,66.2,7.7a5.45941,5.45941,0,0,0-3.6-1A5.20936,5.20936,0,0,0,58,11.3a5.46262,5.46262,0,0,0,.1,1.8A7.30177,7.30177,0,0,0,51,20.4a4.102,4.102,0,0,0,.1,1.1.3193.3193,0,0,0,.3.3H83.5c.2,0,.4-.1.4-.3Z\"\n fill={fillOrange}\n />\n <path\n d=\"M89.7,9.2h-.5c-.1,0-.2.1-.3.2l-.7,2.4a2.85546,2.85546,0,0,0,.3,2.6,3.09428,3.09428,0,0,0,2.1,1.1l3.7.2c.1,0,.2.1.3.1a.1875.1875,0,0,1,0,.3c-.1.2-.2.3-.4.3l-3.8.2a6.29223,6.29223,0,0,0-5.1,3.8l-.2.9c-.1.1,0,.3.2.3H98.5a.26517.26517,0,0,0,.3-.3,10.87184,10.87184,0,0,0,.4-2.6,9.56045,9.56045,0,0,0-9.5-9.5\"\n fill={fillYellow}\n />\n {/* Wordmark */}\n <path\n d=\"M100.5,27.2a.9.9,0,1,1,.9-.9.89626.89626,0,0,1-.9.9m0-1.6a.7.7,0,1,0,.7.7.68354.68354,0,0,0-.7-.7m.4,1.2h-.2l-.2-.3h-.2v.3h-.2v-.9h.5a.26517.26517,0,0,1,.3.3c0,.1-.1.2-.2.3l.2.3Zm-.3-.5c.1,0,.1,0,.1-.1a.09794.09794,0,0,0-.1-.1h-.3v.3h.3Zm-89.7-.9h2.2v6h3.8v1.9h-6Zm8.3,3.9a4.10491,4.10491,0,0,1,4.3-4.1,4.02,4.02,0,0,1,4.2,4.1,4.10491,4.10491,0,0,1-4.3,4.1,4.07888,4.07888,0,0,1-4.2-4.1m6.3,0a2.05565,2.05565,0,0,0-2-2.2,2.1025,2.1025,0,0,0,0,4.2c1.2.2,2-.8,2-2m4.9.5V25.4h2.2v4.4c0,1.1.6,1.7,1.5,1.7a1.39926,1.39926,0,0,0,1.5-1.6V25.4h2.2v4.4c0,2.6-1.5,3.7-3.7,3.7-2.3-.1-3.7-1.2-3.7-3.7m10.7-4.4h3.1c2.8,0,4.5,1.6,4.5,3.9s-1.7,4-4.5,4h-3V25.4Zm3.1,5.9a2.00909,2.00909,0,1,0,0-4h-.9v4Zm7.6-5.9h6.3v1.9H54v1.3h3.7v1.8H54v2.9H51.8Zm9.4,0h2.2v6h3.8v1.9h-6Zm11.7-.1h2.2l3.4,8H76.1l-.6-1.4H72.4l-.6,1.4H69.5Zm2,4.9L74,28l-.9,2.2Zm6.4-4.8H85a3.41818,3.41818,0,0,1,2.6.9,2.62373,2.62373,0,0,1-.9,4.2l1.9,2.8H86.1l-1.6-2.4h-1v2.4H81.3Zm3.6,3.8c.7,0,1.2-.4,1.2-.9,0-.6-.5-.9-1.2-.9H83.5v1.9h1.4Zm6.5-3.8h6.4v1.8H93.6v1.2h3.8v1.8H93.6v1.2h4.3v1.9H91.4ZM6.1,30.3a1.97548,1.97548,0,0,1-1.8,1.2,2.1025,2.1025,0,0,1,0-4.2,2.0977,2.0977,0,0,1,1.9,1.3H8.5a4.13459,4.13459,0,0,0-4.2-3.3A4.1651,4.1651,0,0,0,0,29.4a4.07888,4.07888,0,0,0,4.2,4.1,4.31812,4.31812,0,0,0,4.2-3.2Z\"\n fill={fillText}\n />\n </svg>\n );\n },\n);\n\nCloudflareLogo.displayName = \"CloudflareLogo\";\n\n// =============================================================================\n// PoweredByCloudflare Component\n// =============================================================================\n\nexport interface PoweredByCloudflareProps\n extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n /**\n * Color scheme for the logo and text\n * @default \"color\"\n */\n color?: CloudflareLogoColor;\n}\n\n/**\n * \"Powered by Cloudflare\" badge component.\n *\n * Renders a link to cloudflare.com with the Cloudflare glyph and \"Powered by Cloudflare\" text.\n *\n * @example Basic usage\n * ```tsx\n * <PoweredByCloudflare />\n * ```\n *\n * @example White variant for dark backgrounds\n * ```tsx\n * <PoweredByCloudflare color=\"white\" />\n * ```\n *\n * @example Custom link\n * ```tsx\n * <PoweredByCloudflare href=\"https://cloudflare.com/products/workers\" />\n * ```\n */\nexport const PoweredByCloudflare = forwardRef<\n HTMLAnchorElement,\n PoweredByCloudflareProps\n>(\n (\n {\n color = \"color\",\n href = \"https://www.cloudflare.com\",\n className,\n ...props\n },\n ref,\n ) => {\n return (\n <a\n ref={ref}\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={cn(\n // Base badge styles\n \"inline-flex items-center gap-2 rounded-lg py-2 pl-2.5 pr-3 text-sm font-medium\",\n \"ring-1 ring-inset transition-all hover:shadow-sm\",\n // Color variants using semantic tokens\n color === \"color\" && \"bg-kumo-base text-kumo-default ring-kumo-hairline\",\n color === \"black\" && \"bg-white text-black ring-black/20\",\n color === \"white\" && \"bg-black text-white ring-white/20\",\n className,\n )}\n {...props}\n >\n <CloudflareLogo variant=\"glyph\" color={color} className=\"h-4 w-auto\" />\n <span>\n Powered by <span className=\"font-semibold\">Cloudflare</span>\n </span>\n </a>\n );\n },\n);\n\nPoweredByCloudflare.displayName = \"PoweredByCloudflare\";\n\n// =============================================================================\n// SVG Generation Helper\n// =============================================================================\n\nexport type CloudflareLogoSvgVariant = \"glyph\" | \"full\";\nexport type CloudflareLogoSvgColor = \"color\" | \"black\" | \"white\";\n\nexport interface GenerateCloudflareLogoSvgOptions {\n /**\n * Logo variant\n * - `glyph`: Cloud icon only\n * - `full`: Cloud icon with \"CLOUDFLARE\" wordmark\n * @default \"full\"\n */\n variant?: CloudflareLogoSvgVariant;\n /**\n * Color scheme\n * - `color`: Brand colors (orange/yellow cloud, dark gray wordmark)\n * - `black`: Solid black\n * - `white`: Solid white\n * @default \"color\"\n */\n color?: CloudflareLogoSvgColor;\n}\n\n/**\n * Generates SVG markup string for the Cloudflare logo.\n *\n * Useful for copying to clipboard or embedding in non-React contexts.\n *\n * @example Copy glyph SVG to clipboard\n * ```tsx\n * const svg = generateCloudflareLogoSvg({ variant: \"glyph\" });\n * await navigator.clipboard.writeText(svg);\n * ```\n *\n * @example Generate full logo in black\n * ```tsx\n * const svg = generateCloudflareLogoSvg({ variant: \"full\", color: \"black\" });\n * ```\n */\nexport function generateCloudflareLogoSvg(\n options: GenerateCloudflareLogoSvgOptions = {},\n): string {\n const { variant = \"full\", color = \"color\" } = options;\n\n const isGlyph = variant === \"glyph\";\n\n // Determine fill colors\n const fillOrange = color === \"color\" ? CLOUDFLARE_ORANGE : color;\n const fillYellow = color === \"color\" ? CLOUDFLARE_YELLOW : color;\n const fillText = color === \"color\" ? CLOUDFLARE_TEXT_GRAY : color;\n\n if (isGlyph) {\n return `<svg viewBox=\"${CLOUDFLARE_GLYPH_VIEWBOX}\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Cloudflare logo\">\n <path d=\"${CLOUDFLARE_GLYPH_ORANGE_PATH}\" fill=\"${fillOrange}\"/>\n <path d=\"${CLOUDFLARE_GLYPH_YELLOW_PATH}\" fill=\"${fillYellow}\"/>\n</svg>`;\n }\n\n // Full logo with wordmark\n return `<svg viewBox=\"${CLOUDFLARE_FULL_LOGO_VIEWBOX}\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Cloudflare logo\">\n <path d=\"${CLOUDFLARE_FULL_LOGO_ORANGE_PATH}\" fill=\"${fillOrange}\"/>\n <path d=\"${CLOUDFLARE_FULL_LOGO_YELLOW_PATH}\" fill=\"${fillYellow}\"/>\n <path d=\"${CLOUDFLARE_WORDMARK_PATH}\" fill=\"${fillText}\"/>\n</svg>`;\n}\n"],"names":["CLOUDFLARE_ORANGE","CLOUDFLARE_YELLOW","CLOUDFLARE_TEXT_GRAY","CLOUDFLARE_GLYPH_ORANGE_PATH","CLOUDFLARE_GLYPH_YELLOW_PATH","CLOUDFLARE_WORDMARK_PATH","CLOUDFLARE_FULL_LOGO_ORANGE_PATH","CLOUDFLARE_FULL_LOGO_YELLOW_PATH","CLOUDFLARE_GLYPH_VIEWBOX","CLOUDFLARE_FULL_LOGO_VIEWBOX","KUMO_CLOUDFLARE_LOGO_VARIANTS","KUMO_CLOUDFLARE_LOGO_DEFAULT_VARIANTS","CloudflareLogo","forwardRef","variant","color","className","props","ref","isGlyph","fillOrange","fillYellow","fillText","jsxs","cn","jsx","PoweredByCloudflare","href","generateCloudflareLogoSvg","options"],"mappings":"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"}
|
|
@@ -1,59 +1,59 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as
|
|
2
|
+
import { jsx as e, jsxs as m } from "react/jsx-runtime";
|
|
3
3
|
import { CheckIcon as S, XIcon as h, CaretDownIcon as x } from "@phosphor-icons/react";
|
|
4
4
|
import { createContext as T, useContext as u, Fragment as P } from "react";
|
|
5
|
-
import { i as p, K as V } from "./input-
|
|
6
|
-
import { c as
|
|
7
|
-
import { F as j } from "./field-
|
|
5
|
+
import { i as p, K as V } from "./input-cw05pbqdburghkus.js";
|
|
6
|
+
import { c as i } from "./cn-ct4n7r74mh8y0f48.js";
|
|
7
|
+
import { F as j } from "./field-bo5gmna16odrrb1q.js";
|
|
8
8
|
import { u as G } from "./portal-provider-hwmkdmkpvct0cb76.js";
|
|
9
|
-
import { a5 as L, a6 as M, a7 as F, a8 as _, a9 as A, aa as E, ab as b, ac as K, ad as O, ae as U, af as W, ag as D, ah as f, ai as H, aj as C, ak as N, al as X, am as q, an as B } from "./vendor-base-ui-
|
|
9
|
+
import { a5 as L, a6 as M, a7 as F, a8 as _, a9 as A, aa as E, ab as b, ac as K, ad as O, ae as U, af as W, ag as D, ah as f, ai as H, aj as C, ak as N, al as X, am as q, an as B } from "./vendor-base-ui-m5pz3e8c4grg5qmj.js";
|
|
10
10
|
V.size;
|
|
11
11
|
const g = T("base");
|
|
12
12
|
function y({
|
|
13
|
-
label:
|
|
13
|
+
label: o,
|
|
14
14
|
required: t,
|
|
15
|
-
labelTooltip:
|
|
15
|
+
labelTooltip: n,
|
|
16
16
|
description: r,
|
|
17
|
-
error:
|
|
17
|
+
error: a,
|
|
18
18
|
children: c,
|
|
19
19
|
size: s = "base",
|
|
20
20
|
...l
|
|
21
21
|
}) {
|
|
22
|
-
const d = /* @__PURE__ */
|
|
23
|
-
return
|
|
22
|
+
const d = /* @__PURE__ */ e(g.Provider, { value: s, children: /* @__PURE__ */ e(M, { ...l, children: c }) });
|
|
23
|
+
return o ? /* @__PURE__ */ e(
|
|
24
24
|
j,
|
|
25
25
|
{
|
|
26
|
-
label:
|
|
26
|
+
label: o,
|
|
27
27
|
required: t,
|
|
28
|
-
labelTooltip:
|
|
28
|
+
labelTooltip: n,
|
|
29
29
|
description: r,
|
|
30
|
-
error:
|
|
30
|
+
error: a ? typeof a == "string" ? { message: a, match: !0 } : a : void 0,
|
|
31
31
|
children: d
|
|
32
32
|
}
|
|
33
33
|
) : d;
|
|
34
34
|
}
|
|
35
35
|
function v({
|
|
36
|
-
children:
|
|
36
|
+
children: o,
|
|
37
37
|
className: t,
|
|
38
|
-
align:
|
|
38
|
+
align: n = "start",
|
|
39
39
|
sideOffset: r = 4,
|
|
40
|
-
alignOffset:
|
|
40
|
+
alignOffset: a,
|
|
41
41
|
side: c,
|
|
42
42
|
container: s
|
|
43
43
|
}) {
|
|
44
44
|
const l = G();
|
|
45
|
-
return /* @__PURE__ */
|
|
45
|
+
return /* @__PURE__ */ e(X, { container: s ?? l ?? void 0, children: /* @__PURE__ */ e(
|
|
46
46
|
q,
|
|
47
47
|
{
|
|
48
48
|
className: "",
|
|
49
|
-
align:
|
|
49
|
+
align: n,
|
|
50
50
|
sideOffset: r,
|
|
51
|
-
alignOffset:
|
|
51
|
+
alignOffset: a,
|
|
52
52
|
side: c,
|
|
53
|
-
children: /* @__PURE__ */
|
|
53
|
+
children: /* @__PURE__ */ e(
|
|
54
54
|
B,
|
|
55
55
|
{
|
|
56
|
-
className:
|
|
56
|
+
className: i(
|
|
57
57
|
"flex flex-col",
|
|
58
58
|
// flexbox layout for sticky input + scrollable list
|
|
59
59
|
"max-h-[min(var(--available-height),24rem)] max-w-(--available-width) min-w-(--anchor-width) py-1.5",
|
|
@@ -63,7 +63,7 @@ function v({
|
|
|
63
63
|
// border part
|
|
64
64
|
t
|
|
65
65
|
),
|
|
66
|
-
children:
|
|
66
|
+
children: o
|
|
67
67
|
}
|
|
68
68
|
)
|
|
69
69
|
}
|
|
@@ -76,30 +76,30 @@ const J = {
|
|
|
76
76
|
lg: { padding: "pr-10", iconSize: 18, iconRight: "right-3" }
|
|
77
77
|
};
|
|
78
78
|
function z({
|
|
79
|
-
className:
|
|
79
|
+
className: o,
|
|
80
80
|
...t
|
|
81
81
|
}) {
|
|
82
|
-
const
|
|
82
|
+
const n = u(g), r = J[n];
|
|
83
83
|
return /* @__PURE__ */ m(
|
|
84
84
|
C,
|
|
85
85
|
{
|
|
86
|
-
className:
|
|
87
|
-
p({ size:
|
|
86
|
+
className: i(
|
|
87
|
+
p({ size: n }),
|
|
88
88
|
"relative flex items-center",
|
|
89
89
|
"data-[disabled]:opacity-50 data-[disabled]:cursor-not-allowed",
|
|
90
90
|
r.padding,
|
|
91
|
-
|
|
91
|
+
o
|
|
92
92
|
),
|
|
93
93
|
children: [
|
|
94
|
-
/* @__PURE__ */
|
|
95
|
-
/* @__PURE__ */
|
|
94
|
+
/* @__PURE__ */ e(f, { children: t.children }),
|
|
95
|
+
/* @__PURE__ */ e(
|
|
96
96
|
N,
|
|
97
97
|
{
|
|
98
|
-
className:
|
|
98
|
+
className: i(
|
|
99
99
|
"absolute top-1/2 -translate-y-1/2 flex items-center text-kumo-subtle",
|
|
100
100
|
r.iconRight
|
|
101
101
|
),
|
|
102
|
-
children: /* @__PURE__ */
|
|
102
|
+
children: /* @__PURE__ */ e(x, { size: r.iconSize, className: "fill-current" })
|
|
103
103
|
}
|
|
104
104
|
)
|
|
105
105
|
]
|
|
@@ -132,139 +132,150 @@ const Q = {
|
|
|
132
132
|
caretRight: "right-3"
|
|
133
133
|
}
|
|
134
134
|
};
|
|
135
|
-
function R(
|
|
136
|
-
|
|
135
|
+
function R({
|
|
136
|
+
clearLabel: o = "Clear selection",
|
|
137
|
+
showOptionsLabel: t = "Show options",
|
|
138
|
+
...n
|
|
139
|
+
}) {
|
|
140
|
+
const r = u(g), a = Q[r];
|
|
137
141
|
return /* @__PURE__ */ m(
|
|
138
142
|
"div",
|
|
139
143
|
{
|
|
140
|
-
className:
|
|
144
|
+
className: i(
|
|
141
145
|
"relative inline-block w-full max-w-xs",
|
|
142
146
|
"has-[:disabled]:opacity-50 has-[:disabled]:cursor-not-allowed",
|
|
143
|
-
|
|
147
|
+
n.className
|
|
144
148
|
),
|
|
145
149
|
children: [
|
|
146
|
-
/* @__PURE__ */
|
|
150
|
+
/* @__PURE__ */ e(
|
|
147
151
|
b,
|
|
148
152
|
{
|
|
149
|
-
...
|
|
150
|
-
className:
|
|
151
|
-
p({ size:
|
|
153
|
+
...n,
|
|
154
|
+
className: i(
|
|
155
|
+
p({ size: r }),
|
|
152
156
|
"w-full",
|
|
153
|
-
|
|
157
|
+
a.padding,
|
|
154
158
|
"disabled:cursor-not-allowed"
|
|
155
159
|
)
|
|
156
160
|
}
|
|
157
161
|
),
|
|
158
|
-
/* @__PURE__ */
|
|
162
|
+
/* @__PURE__ */ e(
|
|
159
163
|
H,
|
|
160
164
|
{
|
|
161
|
-
|
|
165
|
+
"aria-label": o,
|
|
166
|
+
className: i(
|
|
162
167
|
"absolute top-1/2 flex -translate-y-1/2 cursor-pointer bg-transparent p-0",
|
|
163
168
|
"data-[disabled]:pointer-events-none data-[disabled]:opacity-0",
|
|
164
|
-
|
|
169
|
+
a.clearRight
|
|
165
170
|
),
|
|
166
|
-
children: /* @__PURE__ */
|
|
171
|
+
children: /* @__PURE__ */ e(h, { size: a.iconSize })
|
|
167
172
|
}
|
|
168
173
|
),
|
|
169
|
-
/* @__PURE__ */
|
|
170
|
-
|
|
174
|
+
/* @__PURE__ */ e(
|
|
175
|
+
C,
|
|
171
176
|
{
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
177
|
+
"aria-label": t,
|
|
178
|
+
className: i(
|
|
179
|
+
"absolute top-1/2 -translate-y-1/2 flex items-center justify-center cursor-pointer text-kumo-subtle",
|
|
180
|
+
"m-0 bg-transparent p-0",
|
|
181
|
+
// Reset Stratus global button styles
|
|
182
|
+
a.caretRight
|
|
175
183
|
),
|
|
176
|
-
children: /* @__PURE__ */
|
|
184
|
+
children: /* @__PURE__ */ e(N, { children: /* @__PURE__ */ e(x, { size: a.iconSize, className: "fill-current" }) })
|
|
177
185
|
}
|
|
178
|
-
)
|
|
186
|
+
)
|
|
179
187
|
]
|
|
180
188
|
}
|
|
181
189
|
);
|
|
182
190
|
}
|
|
183
|
-
function
|
|
191
|
+
function w({ children: o, ...t }) {
|
|
184
192
|
return /* @__PURE__ */ m(
|
|
185
193
|
K,
|
|
186
194
|
{
|
|
187
195
|
...t,
|
|
188
196
|
className: "group mx-1.5 grid cursor-pointer grid-cols-[1fr_16px] gap-2 rounded px-2 py-1.5 text-base data-highlighted:bg-kumo-tint",
|
|
189
197
|
children: [
|
|
190
|
-
/* @__PURE__ */
|
|
191
|
-
/* @__PURE__ */
|
|
198
|
+
/* @__PURE__ */ e("div", { className: "col-start-1", children: o }),
|
|
199
|
+
/* @__PURE__ */ e(O, { className: "col-start-2 flex items-center", children: /* @__PURE__ */ e(S, {}) })
|
|
192
200
|
]
|
|
193
201
|
}
|
|
194
202
|
);
|
|
195
203
|
}
|
|
196
|
-
function Y(
|
|
197
|
-
return /* @__PURE__ */
|
|
204
|
+
function Y(o) {
|
|
205
|
+
return /* @__PURE__ */ e(
|
|
198
206
|
E,
|
|
199
207
|
{
|
|
200
|
-
...
|
|
201
|
-
className:
|
|
208
|
+
...o,
|
|
209
|
+
className: i(
|
|
202
210
|
"mx-1.5 shrink-0 px-4 py-2 text-[0.925rem] leading-4 text-kumo-subtle empty:m-0 empty:p-0"
|
|
203
211
|
),
|
|
204
|
-
children:
|
|
212
|
+
children: o.children ?? "No labels found."
|
|
205
213
|
}
|
|
206
214
|
);
|
|
207
215
|
}
|
|
208
|
-
function Z(
|
|
209
|
-
return /* @__PURE__ */
|
|
216
|
+
function Z(o) {
|
|
217
|
+
return /* @__PURE__ */ e(
|
|
210
218
|
b,
|
|
211
219
|
{
|
|
212
|
-
...
|
|
213
|
-
className:
|
|
220
|
+
...o,
|
|
221
|
+
className: i(
|
|
214
222
|
p(),
|
|
215
223
|
"mx-1.5 w-[calc(100%-0.75rem)] shrink-0 first:mb-2",
|
|
216
|
-
|
|
224
|
+
o.className
|
|
217
225
|
)
|
|
218
226
|
}
|
|
219
227
|
);
|
|
220
228
|
}
|
|
221
229
|
function $({
|
|
222
|
-
className:
|
|
230
|
+
className: o,
|
|
223
231
|
...t
|
|
224
232
|
}) {
|
|
225
|
-
return /* @__PURE__ */
|
|
233
|
+
return /* @__PURE__ */ e(
|
|
226
234
|
F,
|
|
227
235
|
{
|
|
228
236
|
...t,
|
|
229
|
-
className:
|
|
237
|
+
className: i(
|
|
230
238
|
"min-h-0 flex-1 overflow-y-auto overscroll-contain scroll-pt-2 scroll-pb-2",
|
|
231
|
-
|
|
239
|
+
o
|
|
232
240
|
)
|
|
233
241
|
}
|
|
234
242
|
);
|
|
235
243
|
}
|
|
236
|
-
function ee(
|
|
237
|
-
return /* @__PURE__ */
|
|
244
|
+
function ee(o) {
|
|
245
|
+
return /* @__PURE__ */ e(
|
|
238
246
|
A,
|
|
239
247
|
{
|
|
240
|
-
...
|
|
241
|
-
className:
|
|
248
|
+
...o,
|
|
249
|
+
className: i(
|
|
242
250
|
"mx-1.5 px-2 py-1.5 text-sm text-kumo-strong",
|
|
243
|
-
|
|
251
|
+
o.className
|
|
244
252
|
)
|
|
245
253
|
}
|
|
246
254
|
);
|
|
247
255
|
}
|
|
248
|
-
function oe(
|
|
249
|
-
return /* @__PURE__ */
|
|
256
|
+
function oe(o) {
|
|
257
|
+
return /* @__PURE__ */ e(
|
|
250
258
|
_,
|
|
251
259
|
{
|
|
252
|
-
...
|
|
253
|
-
className: "border-t border-kumo-
|
|
260
|
+
...o,
|
|
261
|
+
className: "border-t border-kumo-hairline mt-2 pt-2 first:border-t-0 first:mt-0 first:pt-0"
|
|
254
262
|
}
|
|
255
263
|
);
|
|
256
264
|
}
|
|
257
|
-
function
|
|
265
|
+
function I({
|
|
266
|
+
removeLabel: o = "Remove",
|
|
267
|
+
...t
|
|
268
|
+
}) {
|
|
258
269
|
return /* @__PURE__ */ m(
|
|
259
270
|
U,
|
|
260
271
|
{
|
|
261
|
-
...
|
|
262
|
-
className:
|
|
272
|
+
...t,
|
|
273
|
+
className: i(
|
|
263
274
|
"flex items-center gap-2.5",
|
|
264
275
|
// Layout
|
|
265
276
|
"h-6 pl-2 pr-[3px]",
|
|
266
277
|
// Dimensions
|
|
267
|
-
"rounded-sm ring-1 ring-kumo-
|
|
278
|
+
"rounded-sm ring-1 ring-kumo-hairline",
|
|
268
279
|
// Border
|
|
269
280
|
"bg-kumo-overlay",
|
|
270
281
|
// Background
|
|
@@ -272,15 +283,16 @@ function w(e) {
|
|
|
272
283
|
// Typography
|
|
273
284
|
),
|
|
274
285
|
children: [
|
|
275
|
-
|
|
276
|
-
/* @__PURE__ */
|
|
286
|
+
t.children,
|
|
287
|
+
/* @__PURE__ */ e(
|
|
277
288
|
W,
|
|
278
289
|
{
|
|
279
|
-
|
|
290
|
+
"aria-label": o,
|
|
291
|
+
className: i(
|
|
280
292
|
"cursor-pointer rounded-md p-1 hover:bg-kumo-fill-hover",
|
|
281
293
|
"bg-transparent flex"
|
|
282
294
|
),
|
|
283
|
-
children: /* @__PURE__ */
|
|
295
|
+
children: /* @__PURE__ */ e(h, { size: 10 })
|
|
284
296
|
}
|
|
285
297
|
)
|
|
286
298
|
]
|
|
@@ -294,40 +306,40 @@ const te = {
|
|
|
294
306
|
lg: "min-h-10"
|
|
295
307
|
};
|
|
296
308
|
function k({
|
|
297
|
-
placeholder:
|
|
309
|
+
placeholder: o,
|
|
298
310
|
renderItem: t,
|
|
299
|
-
className:
|
|
311
|
+
className: n,
|
|
300
312
|
inputSide: r = "right",
|
|
301
|
-
value:
|
|
313
|
+
value: a
|
|
302
314
|
}) {
|
|
303
|
-
const c = u(g), s =
|
|
315
|
+
const c = u(g), s = a;
|
|
304
316
|
return /* @__PURE__ */ m(
|
|
305
317
|
D,
|
|
306
318
|
{
|
|
307
|
-
className:
|
|
319
|
+
className: i(
|
|
308
320
|
p({ size: c }),
|
|
309
321
|
"flex flex-col",
|
|
310
322
|
"gap-1 py-1 px-1.5",
|
|
311
323
|
te[c],
|
|
312
324
|
"h-auto",
|
|
313
325
|
"data-[disabled]:opacity-50 data-[disabled]:cursor-not-allowed",
|
|
314
|
-
|
|
326
|
+
n
|
|
315
327
|
),
|
|
316
328
|
children: [
|
|
317
|
-
r === "top" && /* @__PURE__ */
|
|
329
|
+
r === "top" && /* @__PURE__ */ e(
|
|
318
330
|
b,
|
|
319
331
|
{
|
|
320
|
-
placeholder:
|
|
332
|
+
placeholder: o,
|
|
321
333
|
className: "w-full px-2 py-1 border-0 bg-inherit"
|
|
322
334
|
}
|
|
323
335
|
),
|
|
324
336
|
/* @__PURE__ */ m("div", { className: "flex items-center flex-wrap gap-1.5 flex-1", children: [
|
|
325
337
|
s !== void 0 && s.length > 0 && s.map((l) => t(l)),
|
|
326
|
-
/* @__PURE__ */
|
|
327
|
-
r === "right" && /* @__PURE__ */
|
|
338
|
+
/* @__PURE__ */ e(f, { children: (l) => s !== void 0 ? null : /* @__PURE__ */ e(P, { children: l.map((d) => t(d)) }) }),
|
|
339
|
+
r === "right" && /* @__PURE__ */ e(
|
|
328
340
|
b,
|
|
329
341
|
{
|
|
330
|
-
placeholder:
|
|
342
|
+
placeholder: o,
|
|
331
343
|
className: "min-w-[100px] flex-1 px-2 py-1 border-0 bg-inherit"
|
|
332
344
|
}
|
|
333
345
|
)
|
|
@@ -340,8 +352,8 @@ y.displayName = "Combobox.Root";
|
|
|
340
352
|
v.displayName = "Combobox.Content";
|
|
341
353
|
z.displayName = "Combobox.TriggerValue";
|
|
342
354
|
R.displayName = "Combobox.TriggerInput";
|
|
343
|
-
|
|
344
|
-
|
|
355
|
+
w.displayName = "Combobox.Item";
|
|
356
|
+
I.displayName = "Combobox.Chip";
|
|
345
357
|
k.displayName = "Combobox.TriggerMultipleWithInput";
|
|
346
358
|
const de = Object.assign(y, {
|
|
347
359
|
// Helper components
|
|
@@ -350,8 +362,8 @@ const de = Object.assign(y, {
|
|
|
350
362
|
TriggerInput: R,
|
|
351
363
|
TriggerMultipleWithInput: k,
|
|
352
364
|
// Slightly modified BaseUI
|
|
353
|
-
Chip:
|
|
354
|
-
Item:
|
|
365
|
+
Chip: I,
|
|
366
|
+
Item: w,
|
|
355
367
|
// Styled BaseUI
|
|
356
368
|
Input: Z,
|
|
357
369
|
Empty: Y,
|
|
@@ -365,4 +377,4 @@ const de = Object.assign(y, {
|
|
|
365
377
|
export {
|
|
366
378
|
de as C
|
|
367
379
|
};
|
|
368
|
-
//# sourceMappingURL=combobox-
|
|
380
|
+
//# sourceMappingURL=combobox-eaowwt1xr4d23gsn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combobox-eaowwt1xr4d23gsn.js","sources":["../../src/components/combobox/combobox.tsx"],"sourcesContent":["import { Combobox as ComboboxBase } from \"@base-ui/react/combobox\";\nimport { CaretDownIcon, CheckIcon, XIcon } from \"@phosphor-icons/react\";\nimport {\n Fragment,\n createContext,\n useContext,\n type PropsWithChildren,\n type ReactNode,\n} from \"react\";\nimport {\n inputVariants,\n KUMO_INPUT_VARIANTS,\n type KumoInputSize,\n} from \"../input/input\";\nimport { cn } from \"../../utils/cn\";\nimport { Field, type FieldErrorMatch } from \"../field/field\";\nimport {\n usePortalContainer,\n type PortalContainer,\n} from \"../../utils/portal-provider\";\n\n/** Combobox variant definitions. */\nexport const KUMO_COMBOBOX_VARIANTS = {\n size: KUMO_INPUT_VARIANTS.size,\n inputSide: {\n right: {\n classes: \"\",\n description: \"Input positioned inline to the right of chips\",\n },\n top: {\n classes: \"\",\n description: \"Input positioned above chips\",\n },\n },\n} as const;\n\nexport const KUMO_COMBOBOX_DEFAULT_VARIANTS = {\n size: \"base\",\n inputSide: \"right\",\n} as const;\n\n// Context to pass size down to sub-components\nconst ComboboxSizeContext = createContext<KumoInputSize>(\"base\");\n\n// Derived types from KUMO_COMBOBOX_VARIANTS\nexport type KumoComboboxSize = keyof typeof KUMO_COMBOBOX_VARIANTS.size;\nexport type KumoComboboxInputSide =\n keyof typeof KUMO_COMBOBOX_VARIANTS.inputSide;\n\nexport interface KumoComboboxVariantsProps {\n /**\n * Size of the combobox trigger. Matches Input component sizes.\n * - `\"xs\"` — Extra small for compact UIs (h-5 / 20px)\n * - `\"sm\"` — Small for secondary fields (h-6.5 / 26px)\n * - `\"base\"` — Default size (h-9 / 36px)\n * - `\"lg\"` — Large for prominent fields (h-10 / 40px)\n * @default \"base\"\n */\n size?: KumoComboboxSize;\n /**\n * Position of the text input relative to chips in multi-select mode.\n * - `\"right\"` — Input inline to the right of chips\n * - `\"top\"` — Input above chips\n * @default \"right\"\n */\n inputSide?: KumoComboboxInputSide;\n}\n\nexport function comboboxVariants({\n inputSide = KUMO_COMBOBOX_DEFAULT_VARIANTS.inputSide,\n}: KumoComboboxVariantsProps = {}) {\n return cn(KUMO_COMBOBOX_VARIANTS.inputSide[inputSide].classes);\n}\n\n// Legacy type alias for backwards compatibility\nexport type ComboboxInputSide = KumoComboboxInputSide;\nexport type ComboboxSize = KumoComboboxSize;\n\nexport type ComboboxRootProps<\n Value = unknown,\n Multiple extends boolean | undefined = false,\n> = ComboboxBase.Root.Props<Value, Multiple>;\n\n/**\n * Combobox component props (simplified for documentation; the actual Root is generic).\n *\n * Combobox provides an autocomplete/typeahead input with a filterable dropdown.\n * Supports single-select, multi-select with chips, grouped items, and Field wrapper integration.\n *\n * @example\n * ```tsx\n * // Single-select with search input\n * <Combobox value={value} onValueChange={setValue} items={options}>\n * <Combobox.TriggerInput placeholder=\"Search…\" />\n * <Combobox.Content>\n * <Combobox.List>\n * {(item) => <Combobox.Item value={item}>{item.label}</Combobox.Item>}\n * </Combobox.List>\n * <Combobox.Empty>No results</Combobox.Empty>\n * </Combobox.Content>\n * </Combobox>\n *\n * // Multi-select with chips\n * <Combobox multiple items={options} label=\"Tags\">\n * <Combobox.TriggerMultipleWithInput\n * placeholder=\"Add tag…\"\n * renderItem={(item) => <Combobox.Chip value={item}>{item.label}</Combobox.Chip>}\n * />\n * <Combobox.Content>\n * <Combobox.List>\n * {(item) => <Combobox.Item value={item}>{item.label}</Combobox.Item>}\n * </Combobox.List>\n * </Combobox.Content>\n * </Combobox>\n * ```\n */\nexport interface ComboboxProps extends KumoComboboxVariantsProps {\n /** Array of items to display in the dropdown */\n items: unknown[];\n /** Currently selected value(s) */\n value?: unknown;\n /** Callback when selection changes */\n onValueChange?: (value: unknown) => void;\n /** Enable multi-select mode */\n multiple?: boolean;\n /** Combobox content (trigger, content, items) */\n children: ReactNode;\n /** Additional CSS classes */\n className?: string;\n /** Label content for the combobox (enables Field wrapper) - can be a string or any React node */\n label?: ReactNode;\n /** Whether the combobox is required */\n required?: boolean;\n /** Tooltip content to display next to the label via an info icon */\n labelTooltip?: ReactNode;\n /** Helper text displayed below the combobox */\n description?: ReactNode;\n /** Error message or validation error object */\n error?: string | { message: ReactNode; match: FieldErrorMatch };\n}\n\nfunction Root<Value, Multiple extends boolean | undefined = false>({\n label,\n required,\n labelTooltip,\n description,\n error,\n children,\n size = \"base\",\n ...props\n}: ComboboxBase.Root.Props<Value, Multiple> & {\n label?: ReactNode;\n required?: boolean;\n labelTooltip?: ReactNode;\n description?: ReactNode;\n error?: string | { message: ReactNode; match: FieldErrorMatch };\n size?: KumoComboboxSize;\n}) {\n const comboboxControl = (\n <ComboboxSizeContext.Provider value={size}>\n <ComboboxBase.Root {...props}>{children}</ComboboxBase.Root>\n </ComboboxSizeContext.Provider>\n );\n\n // Render with Field wrapper if label, description, or error are provided\n if (label) {\n return (\n <Field\n label={label}\n required={required}\n labelTooltip={labelTooltip}\n description={description}\n error={\n error\n ? typeof error === \"string\"\n ? { message: error, match: true }\n : error\n : undefined\n }\n >\n {comboboxControl}\n </Field>\n );\n }\n\n // Render bare combobox without Field wrapper\n return comboboxControl;\n}\n\nfunction Content({\n children,\n className,\n align = \"start\",\n sideOffset = 4,\n alignOffset,\n side,\n container: containerProp,\n}: PropsWithChildren<{\n className?: string;\n align?: ComboboxBase.Positioner.Props[\"align\"];\n alignOffset?: ComboboxBase.Positioner.Props[\"alignOffset\"];\n side?: ComboboxBase.Positioner.Props[\"side\"];\n sideOffset?: ComboboxBase.Positioner.Props[\"sideOffset\"];\n /**\n * Container element for the portal. Use this to render the combobox inside\n * a Shadow DOM or custom container. Overrides `KumoPortalProvider` context.\n * @default document.body (or KumoPortalProvider container if set)\n */\n container?: PortalContainer;\n}>) {\n const contextContainer = usePortalContainer();\n const container = containerProp ?? contextContainer ?? undefined;\n\n return (\n <ComboboxBase.Portal container={container}>\n <ComboboxBase.Positioner\n className=\"\"\n align={align}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n side={side}\n >\n <ComboboxBase.Popup\n className={cn(\n \"flex flex-col\", // flexbox layout for sticky input + scrollable list\n \"max-h-[min(var(--available-height),24rem)] max-w-(--available-width) min-w-(--anchor-width) py-1.5\",\n \"bg-kumo-base text-kumo-default\", // background\n \"rounded-lg shadow-lg ring ring-kumo-line\", // border part\n className,\n )}\n >\n {children}\n </ComboboxBase.Popup>\n </ComboboxBase.Positioner>\n </ComboboxBase.Portal>\n );\n}\n\n// Size-dependent styles for TriggerValue icon\nconst triggerValueIconStyles: Record<\n KumoComboboxSize,\n { padding: string; iconSize: number; iconRight: string }\n> = {\n xs: { padding: \"pr-5\", iconSize: 12, iconRight: \"right-1\" },\n sm: { padding: \"pr-6\", iconSize: 14, iconRight: \"right-1.5\" },\n base: { padding: \"pr-8\", iconSize: 16, iconRight: \"right-2\" },\n lg: { padding: \"pr-10\", iconSize: 18, iconRight: \"right-3\" },\n};\n\nfunction TriggerValue({\n className,\n ...props\n}: ComboboxBase.Value.Props & { className?: string }) {\n const size = useContext(ComboboxSizeContext);\n const iconStyles = triggerValueIconStyles[size];\n\n return (\n <ComboboxBase.Trigger\n className={cn(\n inputVariants({ size }),\n \"relative flex items-center\",\n \"data-[disabled]:opacity-50 data-[disabled]:cursor-not-allowed\",\n iconStyles.padding,\n className,\n )}\n >\n <ComboboxBase.Value>{props.children}</ComboboxBase.Value>\n <ComboboxBase.Icon\n className={cn(\n \"absolute top-1/2 -translate-y-1/2 flex items-center text-kumo-subtle\",\n iconStyles.iconRight,\n )}\n >\n <CaretDownIcon size={iconStyles.iconSize} className=\"fill-current\" />\n </ComboboxBase.Icon>\n </ComboboxBase.Trigger>\n );\n}\n\n// Size-dependent styles for TriggerInput icons\nconst triggerInputIconStyles: Record<\n KumoComboboxSize,\n { padding: string; iconSize: number; clearRight: string; caretRight: string }\n> = {\n xs: {\n padding: \"pr-7\",\n iconSize: 12,\n clearRight: \"right-5\",\n caretRight: \"right-1\",\n },\n sm: {\n padding: \"pr-9\",\n iconSize: 14,\n clearRight: \"right-6\",\n caretRight: \"right-1.5\",\n },\n base: {\n padding: \"pr-12\",\n iconSize: 16,\n clearRight: \"right-8\",\n caretRight: \"right-2\",\n },\n lg: {\n padding: \"pr-14\",\n iconSize: 18,\n clearRight: \"right-9\",\n caretRight: \"right-3\",\n },\n};\n\nfunction TriggerInput({\n clearLabel = \"Clear selection\",\n showOptionsLabel = \"Show options\",\n ...props\n}: ComboboxBase.Input.Props & {\n /** Accessible label for the clear button. Pass a translated string for i18n.\n * @default \"Clear selection\"\n */\n clearLabel?: string;\n /** Accessible label for the dropdown trigger. Pass a translated string for i18n.\n * @default \"Show options\"\n */\n showOptionsLabel?: string;\n}) {\n const size = useContext(ComboboxSizeContext);\n const iconStyles = triggerInputIconStyles[size];\n\n return (\n <div\n className={cn(\n \"relative inline-block w-full max-w-xs\",\n \"has-[:disabled]:opacity-50 has-[:disabled]:cursor-not-allowed\",\n props.className,\n )}\n >\n <ComboboxBase.Input\n {...props}\n className={cn(\n inputVariants({ size }),\n \"w-full\",\n iconStyles.padding,\n \"disabled:cursor-not-allowed\",\n )}\n />\n\n <ComboboxBase.Clear\n aria-label={clearLabel}\n className={cn(\n \"absolute top-1/2 flex -translate-y-1/2 cursor-pointer bg-transparent p-0\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-0\",\n iconStyles.clearRight,\n )}\n >\n <XIcon size={iconStyles.iconSize} />\n </ComboboxBase.Clear>\n\n <ComboboxBase.Trigger\n aria-label={showOptionsLabel}\n className={cn(\n \"absolute top-1/2 -translate-y-1/2 flex items-center justify-center cursor-pointer text-kumo-subtle\",\n \"m-0 bg-transparent p-0\", // Reset Stratus global button styles\n iconStyles.caretRight,\n )}\n >\n <ComboboxBase.Icon>\n <CaretDownIcon size={iconStyles.iconSize} className=\"fill-current\" />\n </ComboboxBase.Icon>\n </ComboboxBase.Trigger>\n </div>\n );\n}\n\nfunction Item({ children, ...props }: ComboboxBase.Item.Props) {\n return (\n <ComboboxBase.Item\n {...props}\n className=\"group mx-1.5 grid cursor-pointer grid-cols-[1fr_16px] gap-2 rounded px-2 py-1.5 text-base data-highlighted:bg-kumo-tint\"\n >\n <div className=\"col-start-1\">{children}</div>\n <ComboboxBase.ItemIndicator className=\"col-start-2 flex items-center\">\n <CheckIcon />\n </ComboboxBase.ItemIndicator>\n </ComboboxBase.Item>\n );\n}\n\nfunction Empty(props: ComboboxBase.Empty.Props) {\n return (\n <ComboboxBase.Empty\n {...props}\n className={cn(\n \"mx-1.5 shrink-0 px-4 py-2 text-[0.925rem] leading-4 text-kumo-subtle empty:m-0 empty:p-0\",\n )}\n children={props.children ?? \"No labels found.\"}\n />\n );\n}\n\nfunction Input(props: ComboboxBase.Input.Props) {\n return (\n <ComboboxBase.Input\n {...props}\n className={cn(\n inputVariants(),\n \"mx-1.5 w-[calc(100%-0.75rem)] shrink-0 first:mb-2\",\n props.className,\n )}\n />\n );\n}\n\nfunction List({\n className,\n ...props\n}: ComboboxBase.List.Props & { className?: string }) {\n return (\n <ComboboxBase.List\n {...props}\n className={cn(\n \"min-h-0 flex-1 overflow-y-auto overscroll-contain scroll-pt-2 scroll-pb-2\",\n className,\n )}\n />\n );\n}\n\nfunction GroupLabel(props: ComboboxBase.GroupLabel.Props) {\n return (\n <ComboboxBase.GroupLabel\n {...props}\n className={cn(\n \"mx-1.5 px-2 py-1.5 text-sm text-kumo-strong\",\n props.className,\n )}\n />\n );\n}\n\nfunction Group(props: ComboboxBase.Group.Props) {\n return (\n <ComboboxBase.Group\n {...props}\n className=\"border-t border-kumo-hairline mt-2 pt-2 first:border-t-0 first:mt-0 first:pt-0\"\n />\n );\n}\n\nfunction Chip({\n removeLabel = \"Remove\",\n ...props\n}: ComboboxBase.Chip.Props & {\n /** Accessible label for the chip remove button. Pass a translated string for i18n.\n * @default \"Remove\"\n */\n removeLabel?: string;\n}) {\n return (\n <ComboboxBase.Chip\n {...props}\n className={cn(\n \"flex items-center gap-2.5\", // Layout\n \"h-6 pl-2 pr-[3px]\", // Dimensions\n \"rounded-sm ring-1 ring-kumo-hairline\", // Border\n \"bg-kumo-overlay\", // Background\n \"text-sm\", // Typography\n )}\n >\n {props.children}\n <ComboboxBase.ChipRemove\n aria-label={removeLabel}\n className={cn(\n \"cursor-pointer rounded-md p-1 hover:bg-kumo-fill-hover\",\n \"bg-transparent flex\",\n )}\n >\n <XIcon size={10} />\n </ComboboxBase.ChipRemove>\n </ComboboxBase.Chip>\n );\n}\n\n// Map size to min-height class for TriggerMultipleWithInput\nconst sizeToMinHeight: Record<KumoComboboxSize, string> = {\n xs: \"min-h-5\",\n sm: \"min-h-6.5\",\n base: \"min-h-9\",\n lg: \"min-h-10\",\n};\n\nfunction TriggerMultipleWithInput<ValueType>({\n placeholder,\n renderItem,\n className,\n inputSide = \"right\",\n value: controlledValue,\n}: {\n placeholder?: string;\n renderItem: (value: ValueType) => React.ReactNode;\n className?: string;\n inputSide?: \"right\" | \"top\";\n /** Optional controlled value for rendering chips (use when pre-selecting values) */\n value?: ValueType[];\n}) {\n const size = useContext(ComboboxSizeContext);\n // Determine which value to use for rendering chips\n const chipsToRender = controlledValue;\n\n return (\n <ComboboxBase.Chips\n className={cn(\n inputVariants({ size }),\n \"flex flex-col\",\n \"gap-1 py-1 px-1.5\",\n sizeToMinHeight[size],\n \"h-auto\",\n \"data-[disabled]:opacity-50 data-[disabled]:cursor-not-allowed\",\n className,\n )}\n >\n {inputSide === \"top\" && (\n <ComboboxBase.Input\n placeholder={placeholder}\n className=\"w-full px-2 py-1 border-0 bg-inherit\"\n />\n )}\n {/* Chips container */}\n <div className=\"flex items-center flex-wrap gap-1.5 flex-1\">\n {/* Render chips from controlled value if provided */}\n {chipsToRender !== undefined &&\n chipsToRender.length > 0 &&\n chipsToRender.map((item) => renderItem(item))}\n {/* Also render from BaseUI's internal value for user selections */}\n <ComboboxBase.Value>\n {(internalValue: ValueType[]) => {\n // Skip rendering if using controlled value (to avoid duplicates)\n if (chipsToRender !== undefined) return null;\n return (\n <Fragment>\n {internalValue.map((item) => renderItem(item))}\n </Fragment>\n );\n }}\n </ComboboxBase.Value>\n {inputSide === \"right\" && (\n <ComboboxBase.Input\n placeholder={placeholder}\n className=\"min-w-[100px] flex-1 px-2 py-1 border-0 bg-inherit\"\n />\n )}\n </div>\n </ComboboxBase.Chips>\n );\n}\n\nRoot.displayName = \"Combobox.Root\";\nContent.displayName = \"Combobox.Content\";\nTriggerValue.displayName = \"Combobox.TriggerValue\";\nTriggerInput.displayName = \"Combobox.TriggerInput\";\nItem.displayName = \"Combobox.Item\";\nChip.displayName = \"Combobox.Chip\";\nTriggerMultipleWithInput.displayName = \"Combobox.TriggerMultipleWithInput\";\n\n/**\n * Combobox — autocomplete input with filterable dropdown list.\n *\n * Compound component: `Combobox` (Root), `.TriggerInput`, `.TriggerValue`,\n * `.TriggerMultipleWithInput`, `.Content`, `.Item`, `.Chip`, `.Input`,\n * `.Empty`, `.GroupLabel`, `.Group`, `.List`, `.Collection`.\n *\n * @example\n * ```tsx\n * <Combobox items={fruits} label=\"Fruit\">\n * <Combobox.TriggerInput placeholder=\"Pick a fruit…\" />\n * <Combobox.Content>\n * <Combobox.List>\n * {(item) => <Combobox.Item value={item}>{item}</Combobox.Item>}\n * </Combobox.List>\n * </Combobox.Content>\n * </Combobox>\n * ```\n *\n * @see https://base-ui.com/react/components/combobox\n */\nexport const Combobox = Object.assign(Root, {\n // Helper components\n Content,\n TriggerValue,\n TriggerInput,\n TriggerMultipleWithInput,\n\n // Slightly modified BaseUI\n Chip,\n Item,\n\n // Styled BaseUI\n Input,\n Empty,\n GroupLabel,\n Group,\n\n // Styled BaseUI\n List,\n\n // BaseUI\n Collection: ComboboxBase.Collection,\n});\n"],"names":["KUMO_INPUT_VARIANTS","ComboboxSizeContext","createContext","Root","label","required","labelTooltip","description","error","children","size","props","comboboxControl","jsx","ComboboxBase.Root","Field","Content","className","align","sideOffset","alignOffset","side","containerProp","contextContainer","usePortalContainer","ComboboxBase.Portal","ComboboxBase.Positioner","ComboboxBase.Popup","cn","triggerValueIconStyles","TriggerValue","useContext","iconStyles","jsxs","ComboboxBase.Trigger","inputVariants","ComboboxBase.Value","ComboboxBase.Icon","CaretDownIcon","triggerInputIconStyles","TriggerInput","clearLabel","showOptionsLabel","ComboboxBase.Input","ComboboxBase.Clear","XIcon","Item","ComboboxBase.Item","ComboboxBase.ItemIndicator","CheckIcon","Empty","ComboboxBase.Empty","Input","List","ComboboxBase.List","GroupLabel","ComboboxBase.GroupLabel","Group","ComboboxBase.Group","Chip","removeLabel","ComboboxBase.Chip","ComboboxBase.ChipRemove","sizeToMinHeight","TriggerMultipleWithInput","placeholder","renderItem","inputSide","controlledValue","chipsToRender","ComboboxBase.Chips","item","internalValue","Fragment","Combobox","ComboboxBase.Collection"],"mappings":"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"}
|