@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.
Files changed (286) hide show
  1. package/CHANGELOG.md +163 -0
  2. package/ai/USAGE.md +38 -30
  3. package/ai/component-registry.json +237 -93
  4. package/ai/component-registry.md +421 -45
  5. package/ai/schemas.ts +15 -5
  6. package/dist/.build-complete +1 -1
  7. package/dist/ai/schemas.d.ts +105 -49
  8. package/dist/ai/schemas.d.ts.map +1 -1
  9. package/dist/ai/schemas.js +187 -174
  10. package/dist/ai/schemas.js.map +1 -1
  11. package/dist/chunks/{Legend-bov5dqf08wemc2qj.js → Legend-o0ntojbaplmszwk0.js} +4 -2
  12. package/dist/chunks/Legend-o0ntojbaplmszwk0.js.map +1 -0
  13. package/dist/chunks/badge-dan90i0rzy4pwa1j.js +102 -0
  14. package/dist/chunks/badge-dan90i0rzy4pwa1j.js.map +1 -0
  15. package/dist/chunks/banner-eiwcnk7ts21s3bnb.js +79 -0
  16. package/dist/chunks/banner-eiwcnk7ts21s3bnb.js.map +1 -0
  17. package/dist/chunks/{breadcrumbs-m79gm4gjwbfajpna.js → breadcrumbs-k39s28qx05vbxxth.js} +3 -3
  18. package/dist/chunks/{breadcrumbs-m79gm4gjwbfajpna.js.map → breadcrumbs-k39s28qx05vbxxth.js.map} +1 -1
  19. package/dist/chunks/{button-j0hi0afn33w9lxgi.js → button-cdxnqcgzwko8ooha.js} +55 -53
  20. package/dist/chunks/button-cdxnqcgzwko8ooha.js.map +1 -0
  21. package/dist/chunks/{checkbox-lawmt1894wr6rpgi.js → checkbox-kt1uojk2f9e0d0h1.js} +46 -55
  22. package/dist/chunks/checkbox-kt1uojk2f9e0d0h1.js.map +1 -0
  23. package/dist/chunks/{clipboard-text-ohx8kkpxisz382rj.js → clipboard-text-vcbvmtne4zjk4b18.js} +55 -54
  24. package/dist/chunks/clipboard-text-vcbvmtne4zjk4b18.js.map +1 -0
  25. package/dist/chunks/{code-liq1g6f5lhee305d.js → code-cz0w1y5z4h29a9eg.js} +18 -18
  26. package/dist/chunks/code-cz0w1y5z4h29a9eg.js.map +1 -0
  27. package/dist/chunks/{combobox-ft0u7rfaxawk0r0c.js → combobox-he2hd9e2ruknq5mp.js} +97 -82
  28. package/dist/chunks/combobox-he2hd9e2ruknq5mp.js.map +1 -0
  29. package/dist/chunks/{command-palette-b31nq4wk7o7gx4sa.js → command-palette-jc1w07jwakxvj23a.js} +159 -155
  30. package/dist/chunks/command-palette-jc1w07jwakxvj23a.js.map +1 -0
  31. package/dist/chunks/{dialog-l5tmwxrzp9g83jmw.js → dialog-oqh8l3l3zutpibxx.js} +22 -20
  32. package/dist/chunks/dialog-oqh8l3l3zutpibxx.js.map +1 -0
  33. package/dist/chunks/{dropdown-icy3xatdwhzr4une.js → dropdown-ncwhcd912vmone8k.js} +96 -90
  34. package/dist/chunks/dropdown-ncwhcd912vmone8k.js.map +1 -0
  35. package/dist/chunks/{empty-hrwtammqp0b2nvtf.js → empty-cj898km1r8xwuw44.js} +2 -2
  36. package/dist/chunks/{empty-hrwtammqp0b2nvtf.js.map → empty-cj898km1r8xwuw44.js.map} +1 -1
  37. package/dist/chunks/{field-csje72m7j9403fj5.js → field-krp6z6vfbkrvufz2.js} +3 -3
  38. package/dist/chunks/{field-csje72m7j9403fj5.js.map → field-krp6z6vfbkrvufz2.js.map} +1 -1
  39. package/dist/chunks/input-area-no30c09udyjxshu5.js +78 -0
  40. package/dist/chunks/input-area-no30c09udyjxshu5.js.map +1 -0
  41. package/dist/chunks/{input-group-cjsy8kh4vf9312xl.js → input-group-lxdd09p60cf27pe1.js} +26 -26
  42. package/dist/chunks/input-group-lxdd09p60cf27pe1.js.map +1 -0
  43. package/dist/chunks/{input-c8jmidy7gdqfiky1.js → input-h48k3uagzrgb98au.js} +40 -36
  44. package/dist/chunks/input-h48k3uagzrgb98au.js.map +1 -0
  45. package/dist/chunks/{label-i46xnnzdh9bsxk6a.js → label-latndvb1ngem7we8.js} +3 -3
  46. package/dist/chunks/{label-i46xnnzdh9bsxk6a.js.map → label-latndvb1ngem7we8.js.map} +1 -1
  47. package/dist/chunks/{layer-card-mu2w82x6ko1nhhtr.js → layer-card-l5yjvrxry1dhte57.js} +8 -8
  48. package/dist/chunks/{layer-card-mu2w82x6ko1nhhtr.js.map → layer-card-l5yjvrxry1dhte57.js.map} +1 -1
  49. package/dist/chunks/{link-o7yfj4kwgl19fklp.js → link-hn5ejal7nhh0o0b4.js} +2 -2
  50. package/dist/chunks/{link-o7yfj4kwgl19fklp.js.map → link-hn5ejal7nhh0o0b4.js.map} +1 -1
  51. package/dist/chunks/{loader-m5wfmqwgucrr4i5v.js → loader-hr2w7cpqeev3p3vl.js} +9 -6
  52. package/dist/chunks/loader-hr2w7cpqeev3p3vl.js.map +1 -0
  53. package/dist/chunks/{menubar-g1wqqjuyyfvsim83.js → menubar-f1pilzooe5mue7c4.js} +20 -20
  54. package/dist/chunks/menubar-f1pilzooe5mue7c4.js.map +1 -0
  55. package/dist/chunks/{meter-cqkrg5axjenbsuue.js → meter-gfa1hz9fhjnvx784.js} +2 -2
  56. package/dist/chunks/{meter-cqkrg5axjenbsuue.js.map → meter-gfa1hz9fhjnvx784.js.map} +1 -1
  57. package/dist/chunks/pagination-cu5lm6p5dxuycta4.js +243 -0
  58. package/dist/chunks/pagination-cu5lm6p5dxuycta4.js.map +1 -0
  59. package/dist/chunks/{popover-jurf834u2uywluux.js → popover-h300w4vit0s2ayej.js} +31 -28
  60. package/dist/chunks/popover-h300w4vit0s2ayej.js.map +1 -0
  61. package/dist/chunks/portal-provider-hwmkdmkpvct0cb76.js +18 -0
  62. package/dist/chunks/portal-provider-hwmkdmkpvct0cb76.js.map +1 -0
  63. package/dist/chunks/{radio-l9dzm6sohcvvrsdc.js → radio-jouttv89lbvhs55r.js} +47 -50
  64. package/dist/chunks/radio-jouttv89lbvhs55r.js.map +1 -0
  65. package/dist/chunks/select-kva5ru5f673kah1m.js +179 -0
  66. package/dist/chunks/select-kva5ru5f673kah1m.js.map +1 -0
  67. package/dist/chunks/{sensitive-input-lvtccf3iqc06lj7b.js → sensitive-input-hd4tpqkzifad1yca.js} +90 -84
  68. package/dist/chunks/sensitive-input-hd4tpqkzifad1yca.js.map +1 -0
  69. package/dist/chunks/{sidebar-l6rk9o5qf8k5vth1.js → sidebar-hljy3ssm8itc0ucx.js} +5 -5
  70. package/dist/chunks/sidebar-hljy3ssm8itc0ucx.js.map +1 -0
  71. package/dist/chunks/skeleton-line-epxenksfesr2fkcv.js +33 -0
  72. package/dist/chunks/skeleton-line-epxenksfesr2fkcv.js.map +1 -0
  73. package/dist/chunks/surface-cilvbyhmyujz1bee.js +36 -0
  74. package/dist/chunks/surface-cilvbyhmyujz1bee.js.map +1 -0
  75. package/dist/chunks/switch-ihaydbzem62bey4p.js +243 -0
  76. package/dist/chunks/switch-ihaydbzem62bey4p.js.map +1 -0
  77. package/dist/chunks/table-inweecadl3her7pd.js +183 -0
  78. package/dist/chunks/table-inweecadl3her7pd.js.map +1 -0
  79. package/dist/chunks/tabs-e7eh7l3mpk3xgmwq.js +92 -0
  80. package/dist/chunks/{tabs-n0t7iro7wr0pzgk2.js.map → tabs-e7eh7l3mpk3xgmwq.js.map} +1 -1
  81. package/dist/chunks/{text-gzt92mlji1lug13d.js → text-nmyi1rkwdj37f30f.js} +24 -22
  82. package/dist/chunks/text-nmyi1rkwdj37f30f.js.map +1 -0
  83. package/dist/chunks/{toast-r9ajsces7xp8l85w.js → toast-bpz6iaq54u9jmuu8.js} +62 -60
  84. package/dist/chunks/toast-bpz6iaq54u9jmuu8.js.map +1 -0
  85. package/dist/chunks/toml-nczb2z9n0o23o3ci.js +8 -0
  86. package/dist/chunks/toml-nczb2z9n0o23o3ci.js.map +1 -0
  87. package/dist/chunks/{tooltip-hnc71tg4gz2gpcvc.js → tooltip-belkznz8t8333h5f.js} +28 -21
  88. package/dist/chunks/tooltip-belkznz8t8333h5f.js.map +1 -0
  89. package/dist/chunks/{vendor-base-ui-ccr5l0ynrievzzv3.js → vendor-base-ui-k7bzesq81ie36nya.js} +55 -51
  90. package/dist/chunks/{vendor-base-ui-ccr5l0ynrievzzv3.js.map → vendor-base-ui-k7bzesq81ie36nya.js.map} +1 -1
  91. package/dist/code/server.js +10 -9
  92. package/dist/code/server.js.map +1 -1
  93. package/dist/code.js +3 -2
  94. package/dist/code.js.map +1 -1
  95. package/dist/components/badge.js +1 -1
  96. package/dist/components/banner.js +1 -1
  97. package/dist/components/breadcrumbs.js +1 -1
  98. package/dist/components/button.js +1 -1
  99. package/dist/components/chart.js +1 -1
  100. package/dist/components/checkbox.js +1 -1
  101. package/dist/components/clipboard-text.js +1 -1
  102. package/dist/components/code.js +1 -1
  103. package/dist/components/combobox.js +1 -1
  104. package/dist/components/command-palette.js +1 -1
  105. package/dist/components/dialog.js +1 -1
  106. package/dist/components/dropdown.js +1 -1
  107. package/dist/components/empty.js +1 -1
  108. package/dist/components/field.js +1 -1
  109. package/dist/components/flow.js +5 -4
  110. package/dist/components/flow.js.map +1 -1
  111. package/dist/components/input.js +3 -3
  112. package/dist/components/label.js +1 -1
  113. package/dist/components/layer-card.js +1 -1
  114. package/dist/components/link.js +1 -1
  115. package/dist/components/loader.js +2 -2
  116. package/dist/components/menubar.js +1 -1
  117. package/dist/components/meter.js +1 -1
  118. package/dist/components/pagination.js +1 -1
  119. package/dist/components/popover.js +1 -1
  120. package/dist/components/radio.js +1 -1
  121. package/dist/components/select.js +1 -1
  122. package/dist/components/sensitive-input.js +1 -1
  123. package/dist/components/sidebar.js +1 -1
  124. package/dist/components/surface.js +1 -1
  125. package/dist/components/switch.js +1 -1
  126. package/dist/components/table.js +1 -1
  127. package/dist/components/tabs.js +1 -1
  128. package/dist/components/text.js +1 -1
  129. package/dist/components/toast.js +2 -2
  130. package/dist/components/tooltip.js +1 -1
  131. package/dist/index.js +76 -74
  132. package/dist/index.js.map +1 -1
  133. package/dist/primitives/accordion.js +1 -1
  134. package/dist/primitives/alert-dialog.js +1 -1
  135. package/dist/primitives/autocomplete.js +1 -1
  136. package/dist/primitives/avatar.js +1 -1
  137. package/dist/primitives/button.js +1 -1
  138. package/dist/primitives/checkbox-group.js +1 -1
  139. package/dist/primitives/checkbox.js +1 -1
  140. package/dist/primitives/collapsible.js +1 -1
  141. package/dist/primitives/combobox.js +1 -1
  142. package/dist/primitives/context-menu.js +1 -1
  143. package/dist/primitives/csp-provider.js +1 -1
  144. package/dist/primitives/dialog.js +1 -1
  145. package/dist/primitives/direction-provider.js +1 -1
  146. package/dist/primitives/drawer.js +1 -1
  147. package/dist/primitives/field.js +1 -1
  148. package/dist/primitives/fieldset.js +1 -1
  149. package/dist/primitives/form.js +1 -1
  150. package/dist/primitives/input.js +1 -1
  151. package/dist/primitives/menu.js +1 -1
  152. package/dist/primitives/menubar.js +1 -1
  153. package/dist/primitives/meter.js +1 -1
  154. package/dist/primitives/navigation-menu.js +1 -1
  155. package/dist/primitives/number-field.js +1 -1
  156. package/dist/primitives/popover.js +1 -1
  157. package/dist/primitives/preview-card.js +1 -1
  158. package/dist/primitives/progress.js +1 -1
  159. package/dist/primitives/radio-group.js +1 -1
  160. package/dist/primitives/radio.js +1 -1
  161. package/dist/primitives/scroll-area.js +1 -1
  162. package/dist/primitives/select.js +1 -1
  163. package/dist/primitives/separator.js +1 -1
  164. package/dist/primitives/slider.js +1 -1
  165. package/dist/primitives/switch.js +1 -1
  166. package/dist/primitives/tabs.js +1 -1
  167. package/dist/primitives/toast.js +1 -1
  168. package/dist/primitives/toggle-group.js +1 -1
  169. package/dist/primitives/toggle.js +1 -1
  170. package/dist/primitives/toolbar.js +1 -1
  171. package/dist/primitives/tooltip.js +1 -1
  172. package/dist/primitives.js +1 -1
  173. package/dist/scripts/theme-generator/config.d.ts.map +1 -1
  174. package/dist/scripts/theme-generator/config.js +226 -43
  175. package/dist/scripts/theme-generator/config.js.map +1 -1
  176. package/dist/src/code/provider.d.ts.map +1 -1
  177. package/dist/src/code/server.d.ts.map +1 -1
  178. package/dist/src/code/types.d.ts +1 -1
  179. package/dist/src/code/types.d.ts.map +1 -1
  180. package/dist/src/components/badge/badge.d.ts +76 -21
  181. package/dist/src/components/badge/badge.d.ts.map +1 -1
  182. package/dist/src/components/banner/banner.d.ts +5 -3
  183. package/dist/src/components/banner/banner.d.ts.map +1 -1
  184. package/dist/src/components/button/button.d.ts +4 -2
  185. package/dist/src/components/button/button.d.ts.map +1 -1
  186. package/dist/src/components/chart/TimeseriesChart.d.ts.map +1 -1
  187. package/dist/src/components/checkbox/checkbox.d.ts +1 -1
  188. package/dist/src/components/checkbox/checkbox.d.ts.map +1 -1
  189. package/dist/src/components/clipboard-text/clipboard-text.d.ts +2 -0
  190. package/dist/src/components/clipboard-text/clipboard-text.d.ts.map +1 -1
  191. package/dist/src/components/code/code.d.ts.map +1 -1
  192. package/dist/src/components/combobox/combobox.d.ts +8 -1
  193. package/dist/src/components/combobox/combobox.d.ts.map +1 -1
  194. package/dist/src/components/command-palette/command-palette.d.ts +9 -2
  195. package/dist/src/components/command-palette/command-palette.d.ts.map +1 -1
  196. package/dist/src/components/command-palette/types.d.ts +7 -0
  197. package/dist/src/components/command-palette/types.d.ts.map +1 -1
  198. package/dist/src/components/dialog/dialog.d.ts +8 -1
  199. package/dist/src/components/dialog/dialog.d.ts.map +1 -1
  200. package/dist/src/components/dropdown/dropdown.d.ts +17 -2
  201. package/dist/src/components/dropdown/dropdown.d.ts.map +1 -1
  202. package/dist/src/components/flow/diagram.d.ts.map +1 -1
  203. package/dist/src/components/input/input-area.d.ts.map +1 -1
  204. package/dist/src/components/input/input.d.ts +1 -2
  205. package/dist/src/components/input/input.d.ts.map +1 -1
  206. package/dist/src/components/loader/loader.d.ts +7 -1
  207. package/dist/src/components/loader/loader.d.ts.map +1 -1
  208. package/dist/src/components/loader/skeleton-line.d.ts +2 -1
  209. package/dist/src/components/loader/skeleton-line.d.ts.map +1 -1
  210. package/dist/src/components/pagination/pagination.d.ts +11 -1
  211. package/dist/src/components/pagination/pagination.d.ts.map +1 -1
  212. package/dist/src/components/popover/popover.d.ts +8 -1
  213. package/dist/src/components/popover/popover.d.ts.map +1 -1
  214. package/dist/src/components/radio/radio.d.ts +1 -1
  215. package/dist/src/components/radio/radio.d.ts.map +1 -1
  216. package/dist/src/components/select/select.d.ts +74 -3
  217. package/dist/src/components/select/select.d.ts.map +1 -1
  218. package/dist/src/components/sensitive-input/sensitive-input.d.ts +1 -1
  219. package/dist/src/components/sensitive-input/sensitive-input.d.ts.map +1 -1
  220. package/dist/src/components/surface/surface.d.ts +23 -23
  221. package/dist/src/components/surface/surface.d.ts.map +1 -1
  222. package/dist/src/components/switch/switch.d.ts.map +1 -1
  223. package/dist/src/components/table/table.d.ts +34 -2
  224. package/dist/src/components/table/table.d.ts.map +1 -1
  225. package/dist/src/components/tabs/tabs.d.ts.map +1 -1
  226. package/dist/src/components/text/text.d.ts +5 -0
  227. package/dist/src/components/text/text.d.ts.map +1 -1
  228. package/dist/src/components/toast/toast.d.ts +16 -9
  229. package/dist/src/components/toast/toast.d.ts.map +1 -1
  230. package/dist/src/components/tooltip/tooltip.d.ts +21 -6
  231. package/dist/src/components/tooltip/tooltip.d.ts.map +1 -1
  232. package/dist/src/index.d.ts +1 -0
  233. package/dist/src/index.d.ts.map +1 -1
  234. package/dist/src/utils/index.d.ts +1 -0
  235. package/dist/src/utils/index.d.ts.map +1 -1
  236. package/dist/src/utils/portal-provider.d.ts +56 -0
  237. package/dist/src/utils/portal-provider.d.ts.map +1 -0
  238. package/dist/styles/kumo-binding.css +52 -46
  239. package/dist/styles/kumo-standalone.css +1 -1
  240. package/dist/styles/theme-fedramp.css +6 -6
  241. package/dist/styles/theme-kumo.css +183 -64
  242. package/dist/utils.js +8 -6
  243. package/dist/utils.js.map +1 -1
  244. package/package.json +2 -2
  245. package/scripts/component-registry/index.test.ts +4 -4
  246. package/scripts/component-registry/metadata.ts +3 -3
  247. package/scripts/theme-generator/config.ts +236 -43
  248. package/dist/chunks/Legend-bov5dqf08wemc2qj.js.map +0 -1
  249. package/dist/chunks/badge-mrshucy2530o70cq.js +0 -56
  250. package/dist/chunks/badge-mrshucy2530o70cq.js.map +0 -1
  251. package/dist/chunks/banner-vzdjbqsb6em7tmdk.js +0 -75
  252. package/dist/chunks/banner-vzdjbqsb6em7tmdk.js.map +0 -1
  253. package/dist/chunks/button-j0hi0afn33w9lxgi.js.map +0 -1
  254. package/dist/chunks/checkbox-lawmt1894wr6rpgi.js.map +0 -1
  255. package/dist/chunks/clipboard-text-ohx8kkpxisz382rj.js.map +0 -1
  256. package/dist/chunks/code-liq1g6f5lhee305d.js.map +0 -1
  257. package/dist/chunks/combobox-ft0u7rfaxawk0r0c.js.map +0 -1
  258. package/dist/chunks/command-palette-b31nq4wk7o7gx4sa.js.map +0 -1
  259. package/dist/chunks/dialog-l5tmwxrzp9g83jmw.js.map +0 -1
  260. package/dist/chunks/dropdown-icy3xatdwhzr4une.js.map +0 -1
  261. package/dist/chunks/input-area-jko15sbc6zeage3l.js +0 -74
  262. package/dist/chunks/input-area-jko15sbc6zeage3l.js.map +0 -1
  263. package/dist/chunks/input-c8jmidy7gdqfiky1.js.map +0 -1
  264. package/dist/chunks/input-group-cjsy8kh4vf9312xl.js.map +0 -1
  265. package/dist/chunks/loader-m5wfmqwgucrr4i5v.js.map +0 -1
  266. package/dist/chunks/menubar-g1wqqjuyyfvsim83.js.map +0 -1
  267. package/dist/chunks/pagination-e3dp8bd80s35f7sd.js +0 -224
  268. package/dist/chunks/pagination-e3dp8bd80s35f7sd.js.map +0 -1
  269. package/dist/chunks/popover-jurf834u2uywluux.js.map +0 -1
  270. package/dist/chunks/radio-l9dzm6sohcvvrsdc.js.map +0 -1
  271. package/dist/chunks/select-hnt87e3cfos48qql.js +0 -130
  272. package/dist/chunks/select-hnt87e3cfos48qql.js.map +0 -1
  273. package/dist/chunks/sensitive-input-lvtccf3iqc06lj7b.js.map +0 -1
  274. package/dist/chunks/sidebar-l6rk9o5qf8k5vth1.js.map +0 -1
  275. package/dist/chunks/skeleton-line-1j5exu6vv07mmhfb.js +0 -28
  276. package/dist/chunks/skeleton-line-1j5exu6vv07mmhfb.js.map +0 -1
  277. package/dist/chunks/surface-dhshylwccuaz91d1.js +0 -21
  278. package/dist/chunks/surface-dhshylwccuaz91d1.js.map +0 -1
  279. package/dist/chunks/switch-fukrbip86khvqjn7.js +0 -241
  280. package/dist/chunks/switch-fukrbip86khvqjn7.js.map +0 -1
  281. package/dist/chunks/table-orfgzwvxh8yr90dk.js +0 -155
  282. package/dist/chunks/table-orfgzwvxh8yr90dk.js.map +0 -1
  283. package/dist/chunks/tabs-n0t7iro7wr0pzgk2.js +0 -86
  284. package/dist/chunks/text-gzt92mlji1lug13d.js.map +0 -1
  285. package/dist/chunks/toast-r9ajsces7xp8l85w.js.map +0 -1
  286. package/dist/chunks/tooltip-hnc71tg4gz2gpcvc.js.map +0 -1
@@ -1,10 +1,11 @@
1
1
  "use client";
2
2
  import { jsx as e, jsxs as b } from "react/jsx-runtime";
3
- import { createContext as R, useContext as C } from "react";
4
- import { S as N } from "./surface-dhshylwccuaz91d1.js";
3
+ import { createContext as v, useContext as N } from "react";
4
+ import { S as P } from "./surface-cilvbyhmyujz1bee.js";
5
5
  import { c as D } from "./cn-ct4n7r74mh8y0f48.js";
6
- import { ao as v, ap as A, aq as n, ar as c, as as g, at as d, au as p, av as m, aw as u } from "./vendor-base-ui-ccr5l0ynrievzzv3.js";
7
- const P = {
6
+ import { u as A } from "./portal-provider-hwmkdmkpvct0cb76.js";
7
+ import { ao as h, ap as k, aq as n, ar as c, as as g, at as d, au as p, av as m, aw as u } from "./vendor-base-ui-k7bzesq81ie36nya.js";
8
+ const z = {
8
9
  size: {
9
10
  base: {
10
11
  classes: "sm:min-w-96",
@@ -26,34 +27,35 @@ const P = {
26
27
  }, r = {
27
28
  size: "base",
28
29
  role: "dialog"
29
- }, f = R("dialog");
30
+ }, f = v("dialog");
30
31
  function s() {
31
- return C(f);
32
+ return N(f);
32
33
  }
33
- function h({
34
+ function O({
34
35
  size: a = r.size
35
36
  } = {}) {
36
37
  return D(
37
38
  // Base styles
38
39
  "shadow-m fixed top-1/2 left-1/2 w-full sm:w-auto max-w-[calc(100vw-2rem)] sm:max-w-[calc(100vw-3rem)] -translate-x-1/2 -translate-y-1/2 overflow-hidden rounded-xl bg-kumo-base text-kumo-default duration-150 data-ending-style:scale-90 data-ending-style:opacity-0 data-starting-style:scale-90 data-starting-style:opacity-0",
39
40
  // Apply size from KUMO_DIALOG_VARIANTS
40
- P.size[a].classes
41
+ z.size[a].classes
41
42
  );
42
43
  }
43
- function k({
44
+ function S({
44
45
  className: a,
45
46
  children: o,
46
47
  style: i,
47
- size: t = r.size
48
+ size: t = r.size,
49
+ container: C
48
50
  }) {
49
- const l = s();
50
- return /* @__PURE__ */ b(l === "alertdialog" ? p : p, { children: [
51
- /* @__PURE__ */ e(l === "alertdialog" ? m : m, { className: "fixed inset-0 bg-kumo-base opacity-80 transition-all duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0" }),
51
+ const l = s(), R = A();
52
+ return /* @__PURE__ */ b(l === "alertdialog" ? p : p, { container: C ?? R ?? void 0, children: [
53
+ /* @__PURE__ */ e(l === "alertdialog" ? m : m, { className: "fixed inset-0 bg-kumo-recessed opacity-80 transition-all duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0" }),
52
54
  /* @__PURE__ */ e(
53
- N,
55
+ P,
54
56
  {
55
- as: l === "alertdialog" ? u : u,
56
- className: D(h({ size: t }), a),
57
+ render: /* @__PURE__ */ e(l === "alertdialog" ? u : u, {}),
58
+ className: D(O({ size: t }), a),
57
59
  style: {
58
60
  transitionProperty: "scale, opacity",
59
61
  transitionTimingFunction: "var(--default-transition-timing-function)",
@@ -70,7 +72,7 @@ function x({
70
72
  role: o = r.role,
71
73
  ...i
72
74
  }) {
73
- const t = o === "alertdialog" ? v : A;
75
+ const t = o === "alertdialog" ? h : k;
74
76
  return /* @__PURE__ */ e(f.Provider, { value: o, children: /* @__PURE__ */ e(t, { ...i, children: a }) });
75
77
  }
76
78
  x.displayName = "Dialog.Root";
@@ -94,7 +96,7 @@ function T({ children: a, ...o }) {
94
96
  return /* @__PURE__ */ e(t, { ...o, children: a });
95
97
  }
96
98
  T.displayName = "Dialog.Close";
97
- const U = Object.assign(k, {
99
+ const K = Object.assign(S, {
98
100
  Root: x,
99
101
  Trigger: y,
100
102
  Title: w,
@@ -102,11 +104,11 @@ const U = Object.assign(k, {
102
104
  Close: T
103
105
  });
104
106
  export {
105
- U as D,
107
+ K as D,
106
108
  x as a,
107
109
  y as b,
108
110
  w as c,
109
111
  B as d,
110
112
  T as e
111
113
  };
112
- //# sourceMappingURL=dialog-l5tmwxrzp9g83jmw.js.map
114
+ //# sourceMappingURL=dialog-oqh8l3l3zutpibxx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog-oqh8l3l3zutpibxx.js","sources":["../../src/components/dialog/dialog.tsx"],"sourcesContent":["import {\n createContext,\n useContext,\n type ComponentPropsWithoutRef,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\nimport { Dialog as DialogBase } from \"@base-ui/react/dialog\";\nimport { AlertDialog as AlertDialogBase } from \"@base-ui/react/alert-dialog\";\nimport { Surface } from \"../surface\";\nimport { cn } from \"../../utils/cn\";\nimport {\n usePortalContainer,\n type PortalContainer,\n} from \"../../utils/portal-provider\";\n\n/** Dialog size variant definitions mapping sizes to their minimum widths. */\nexport const KUMO_DIALOG_VARIANTS = {\n size: {\n base: {\n classes: \"sm:min-w-96\",\n description: \"Default dialog width\",\n },\n sm: {\n classes: \"min-w-72\",\n description: \"Small dialog for simple confirmations\",\n },\n lg: {\n classes: \"min-w-[32rem]\",\n description: \"Large dialog for complex content\",\n },\n xl: {\n classes: \"min-w-[48rem]\",\n description: \"Extra large dialog for detailed views\",\n },\n },\n role: {\n dialog: {\n classes: \"\",\n description: \"Standard dialog for general-purpose modals\",\n },\n alertdialog: {\n classes: \"\",\n description:\n \"Alert dialog for confirmation flows requiring explicit user acknowledgment\",\n },\n },\n} as const;\n\nexport const KUMO_DIALOG_DEFAULT_VARIANTS = {\n size: \"base\",\n role: \"dialog\",\n} as const;\n\nexport const KUMO_DIALOG_STYLING = {\n dimensions: {\n sm: {\n width: 350,\n titleSize: 20,\n descSize: 16,\n padding: 16,\n gap: 8,\n buttonSize: \"sm\",\n },\n base: {\n width: 384,\n titleSize: 20,\n descSize: 16,\n padding: 24,\n gap: 16,\n buttonSize: \"base\",\n },\n lg: {\n width: 512,\n titleSize: 20,\n descSize: 16,\n padding: 24,\n gap: 16,\n buttonSize: \"base\",\n },\n xl: {\n width: 768,\n titleSize: 20,\n descSize: 16,\n padding: 24,\n gap: 16,\n buttonSize: \"base\",\n },\n },\n baseTokens: {\n background: \"color-surface\",\n text: \"text-color-surface\",\n borderRadius: 12,\n shadow: \"shadow-m\",\n },\n backdrop: {\n background: \"color-surface-secondary\",\n opacity: 0.8,\n },\n header: {\n title: { fontWeight: 600, color: \"text-color-surface\" },\n closeIcon: { name: \"ph-x\", size: 20, color: \"text-color-muted\" },\n },\n description: {\n fontWeight: 400,\n color: \"text-color-muted\",\n },\n buttons: {\n primary: { background: \"color-primary\", text: \"white\" },\n secondary: { ring: \"color-border\", text: \"text-color-surface\" },\n },\n} as const;\n\n// Derived types from KUMO_DIALOG_VARIANTS\nexport type KumoDialogSize = keyof typeof KUMO_DIALOG_VARIANTS.size;\nexport type KumoDialogRole = keyof typeof KUMO_DIALOG_VARIANTS.role;\n\nexport interface KumoDialogVariantsProps {\n /**\n * Dialog width.\n * - `\"sm\"` — Small (min 288px) for simple confirmations\n * - `\"base\"` — Default (min 384px)\n * - `\"lg\"` — Large (min 512px) for complex content\n * - `\"xl\"` — Extra large (min 768px) for detailed views\n * @default \"base\"\n */\n size?: KumoDialogSize;\n}\n\n// ============================================================================\n// Dialog Role Context\n// ============================================================================\n\nconst DialogRoleContext = createContext<KumoDialogRole>(\"dialog\");\n\nfunction useDialogRole() {\n return useContext(DialogRoleContext);\n}\n\nexport function dialogVariants({\n size = KUMO_DIALOG_DEFAULT_VARIANTS.size,\n}: KumoDialogVariantsProps = {}) {\n return cn(\n // Base styles\n \"shadow-m fixed top-1/2 left-1/2 w-full sm:w-auto max-w-[calc(100vw-2rem)] sm:max-w-[calc(100vw-3rem)] -translate-x-1/2 -translate-y-1/2 overflow-hidden rounded-xl bg-kumo-base text-kumo-default duration-150 data-ending-style:scale-90 data-ending-style:opacity-0 data-starting-style:scale-90 data-starting-style:opacity-0\",\n // Apply size from KUMO_DIALOG_VARIANTS\n KUMO_DIALOG_VARIANTS.size[size].classes,\n );\n}\n\n/**\n * Dialog component props — the modal content panel.\n *\n * @example\n * ```tsx\n * <Dialog.Root>\n * <Dialog.Trigger render={(p) => <Button {...p}>Open</Button>} />\n * <Dialog className=\"p-8\">\n * <Dialog.Title>Confirm Action</Dialog.Title>\n * <Dialog.Description>Are you sure?</Dialog.Description>\n * <Dialog.Close render={(p) => <Button {...p}>Cancel</Button>} />\n * </Dialog>\n * </Dialog.Root>\n * ```\n */\nexport type DialogProps = KumoDialogVariantsProps & {\n /** Additional CSS classes merged via `cn()`. */\n className?: string;\n /** Dialog content (typically Title, Description, Close, and action buttons). */\n children: ReactNode;\n /** Inline styles. */\n style?: CSSProperties;\n /**\n * Container element for the portal. Use this to render the dialog 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\n/**\n * Modal dialog overlay with backdrop. Compound component with `Dialog.Root`,\n * `Dialog.Trigger`, `Dialog.Title`, `Dialog.Description`, and `Dialog.Close`.\n *\n * @example\n * ```tsx\n * <Dialog.Root>\n * <Dialog.Trigger render={(p) => <Button {...p}>Delete</Button>} />\n * <Dialog className=\"p-8\">\n * <Dialog.Title>Delete Item</Dialog.Title>\n * <Dialog.Description>This action cannot be undone.</Dialog.Description>\n * <Dialog.Close render={(p) => <Button variant=\"destructive\" {...p}>Delete</Button>} />\n * </Dialog>\n * </Dialog.Root>\n * ```\n *\n * @example Alert Dialog for destructive actions\n * ```tsx\n * <Dialog.Root role=\"alertdialog\">\n * <Dialog.Trigger render={(p) => <Button variant=\"destructive\" {...p}>Delete Project</Button>} />\n * <Dialog className=\"p-8\">\n * <Dialog.Title>Delete Project?</Dialog.Title>\n * <Dialog.Description>This action cannot be undone.</Dialog.Description>\n * <Dialog.Close render={(p) => <Button variant=\"secondary\" {...p}>Cancel</Button>} />\n * <Dialog.Close render={(p) => <Button variant=\"destructive\" {...p}>Delete</Button>} />\n * </Dialog>\n * </Dialog.Root>\n * ```\n */\nfunction DialogContent({\n className,\n children,\n style,\n size = KUMO_DIALOG_DEFAULT_VARIANTS.size,\n container: containerProp,\n}: DialogProps) {\n const role = useDialogRole();\n const contextContainer = usePortalContainer();\n const container = containerProp ?? contextContainer ?? undefined;\n\n const BasePortal =\n role === \"alertdialog\" ? AlertDialogBase.Portal : DialogBase.Portal;\n const BaseBackdrop =\n role === \"alertdialog\" ? AlertDialogBase.Backdrop : DialogBase.Backdrop;\n const BasePopup =\n role === \"alertdialog\" ? AlertDialogBase.Popup : DialogBase.Popup;\n\n return (\n <BasePortal container={container}>\n <BaseBackdrop className=\"fixed inset-0 bg-kumo-recessed opacity-80 transition-all duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0\" />\n <Surface\n render={<BasePopup />}\n className={cn(dialogVariants({ size }), className)}\n style={\n {\n transitionProperty: \"scale, opacity\",\n transitionTimingFunction:\n \"var(--default-transition-timing-function)\",\n \"--tw-shadow\":\n \"0 20px 25px -5px rgb(0 0 0 / 0.03), 0 8px 10px -6px rgb(0 0 0 / 0.03)\",\n ...style,\n } as CSSProperties\n }\n >\n {children}\n </Surface>\n </BasePortal>\n );\n}\n\n// ============================================================================\n// Dialog Root\n// ============================================================================\n\ntype BaseDialogRootProps = ComponentPropsWithoutRef<typeof DialogBase.Root>;\n\nexport type DialogRootProps = BaseDialogRootProps & {\n /**\n * The ARIA role for the dialog.\n * - `\"dialog\"` — Standard dialog for general-purpose modals. Dismissible via outside click by default.\n * - `\"alertdialog\"` — Alert dialog for destructive or confirmation flows. Not dismissible via outside click.\n *\n * Use `role=\"alertdialog\"` for:\n * - Destructive actions (delete, discard, remove)\n * - Confirmation dialogs requiring explicit user acknowledgment\n * - Actions that cannot be undone\n *\n * @default \"dialog\"\n */\n role?: KumoDialogRole;\n};\n\nfunction DialogRoot({\n children,\n role = KUMO_DIALOG_DEFAULT_VARIANTS.role,\n ...props\n}: DialogRootProps) {\n const BaseRoot =\n role === \"alertdialog\" ? AlertDialogBase.Root : DialogBase.Root;\n return (\n <DialogRoleContext.Provider value={role}>\n <BaseRoot {...props}>{children}</BaseRoot>\n </DialogRoleContext.Provider>\n );\n}\n\nDialogRoot.displayName = \"Dialog.Root\";\n\n// ============================================================================\n// Dialog Trigger\n// ============================================================================\n\ntype BaseDialogTriggerProps = ComponentPropsWithoutRef<\n typeof DialogBase.Trigger\n>;\n\nexport type DialogTriggerProps = BaseDialogTriggerProps;\n\nfunction DialogTrigger({ children, ...props }: DialogTriggerProps) {\n const role = useDialogRole();\n const BaseTrigger =\n role === \"alertdialog\" ? AlertDialogBase.Trigger : DialogBase.Trigger;\n return <BaseTrigger {...props}>{children}</BaseTrigger>;\n}\n\nDialogTrigger.displayName = \"Dialog.Trigger\";\n\n// ============================================================================\n// Dialog Title\n// ============================================================================\n\ntype BaseDialogTitleProps = ComponentPropsWithoutRef<typeof DialogBase.Title>;\n\nexport type DialogTitleProps = BaseDialogTitleProps;\n\nfunction DialogTitle({ className, ...props }: DialogTitleProps) {\n const role = useDialogRole();\n const BaseTitle =\n role === \"alertdialog\" ? AlertDialogBase.Title : DialogBase.Title;\n return <BaseTitle className={className} {...props} />;\n}\n\nDialogTitle.displayName = \"Dialog.Title\";\n\n// ============================================================================\n// Dialog Description\n// ============================================================================\n\ntype BaseDialogDescriptionProps = ComponentPropsWithoutRef<\n typeof DialogBase.Description\n>;\n\nexport type DialogDescriptionProps = BaseDialogDescriptionProps;\n\nfunction DialogDescription({ className, ...props }: DialogDescriptionProps) {\n const role = useDialogRole();\n const BaseDescription =\n role === \"alertdialog\"\n ? AlertDialogBase.Description\n : DialogBase.Description;\n return <BaseDescription className={className} {...props} />;\n}\n\nDialogDescription.displayName = \"Dialog.Description\";\n\n// ============================================================================\n// Dialog Close\n// ============================================================================\n\ntype BaseDialogCloseProps = ComponentPropsWithoutRef<typeof DialogBase.Close>;\n\nexport type DialogCloseProps = BaseDialogCloseProps;\n\nfunction DialogClose({ children, ...props }: DialogCloseProps) {\n const role = useDialogRole();\n const BaseClose =\n role === \"alertdialog\" ? AlertDialogBase.Close : DialogBase.Close;\n return <BaseClose {...props}>{children}</BaseClose>;\n}\n\nDialogClose.displayName = \"Dialog.Close\";\n\n// ============================================================================\n// Compound Component Export\n// ============================================================================\n\nconst Dialog = Object.assign(DialogContent, {\n Root: DialogRoot,\n Trigger: DialogTrigger,\n Title: DialogTitle,\n Description: DialogDescription,\n Close: DialogClose,\n});\n\nexport {\n Dialog,\n DialogRoot,\n DialogTrigger,\n DialogTitle,\n DialogDescription,\n DialogClose,\n};\n"],"names":["KUMO_DIALOG_VARIANTS","KUMO_DIALOG_DEFAULT_VARIANTS","DialogRoleContext","createContext","useDialogRole","useContext","dialogVariants","size","cn","DialogContent","className","children","style","containerProp","role","contextContainer","usePortalContainer","jsxs","AlertDialogBase.Portal","DialogBase.Portal","jsx","AlertDialogBase.Backdrop","DialogBase.Backdrop","Surface","AlertDialogBase.Popup","DialogBase.Popup","DialogRoot","props","BaseRoot","AlertDialogBase.Root","DialogBase.Root","DialogTrigger","BaseTrigger","AlertDialogBase.Trigger","DialogBase.Trigger","DialogTitle","BaseTitle","AlertDialogBase.Title","DialogBase.Title","DialogDescription","BaseDescription","AlertDialogBase.Description","DialogBase.Description","DialogClose","BaseClose","AlertDialogBase.Close","DialogBase.Close","Dialog"],"mappings":";;;;;;;AAiBO,MAAMA,IAAuB;AAAA,EAClC,MAAM;AAAA,IACJ,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,IAAI;AAAA,MACF,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,IAAI;AAAA,MACF,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,IAAI;AAAA,MACF,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,EACf;AAaJ,GAEaC,IAA+B;AAAA,EAC1C,MAAM;AAAA,EACN,MAAM;AACR,GAiFMC,IAAoBC,EAA8B,QAAQ;AAEhE,SAASC,IAAgB;AACvB,SAAOC,EAAWH,CAAiB;AACrC;AAEO,SAASI,EAAe;AAAA,EAC7B,MAAAC,IAAON,EAA6B;AACtC,IAA6B,IAAI;AAC/B,SAAOO;AAAA;AAAA,IAEL;AAAA;AAAA,IAEAR,EAAqB,KAAKO,CAAI,EAAE;AAAA,EAAA;AAEpC;AA6DA,SAASE,EAAc;AAAA,EACrB,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAL,IAAON,EAA6B;AAAA,EACpC,WAAWY;AACb,GAAgB;AACd,QAAMC,IAAOV,EAAA,GACPW,IAAmBC,EAAA;AAUzB,SACE,gBAAAC,EAPAH,MAAS,gBAAgBI,IAAyBC,KAOtC,WAVIN,KAAiBE,KAAoB,QAWnD,UAAA;AAAA,IAAA,gBAAAK,EANFN,MAAS,gBAAgBO,IAA2BC,GAMjD,EAAa,WAAU,kIAAA,CAAkI;AAAA,IAC1J,gBAAAF;AAAA,MAACG;AAAA,MAAA;AAAA,QACC,0BANJT,MAAS,gBAAgBU,IAAwBC,GAMpC,EAAU;AAAA,QACnB,WAAWjB,EAAGF,EAAe,EAAE,MAAAC,EAAA,CAAM,GAAGG,CAAS;AAAA,QACjD,OACE;AAAA,UACE,oBAAoB;AAAA,UACpB,0BACE;AAAA,UACF,eACE;AAAA,UACF,GAAGE;AAAA,QAAA;AAAA,QAIN,UAAAD;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GACF;AAEJ;AAwBA,SAASe,EAAW;AAAA,EAClB,UAAAf;AAAA,EACA,MAAAG,IAAOb,EAA6B;AAAA,EACpC,GAAG0B;AACL,GAAoB;AAClB,QAAMC,IACJd,MAAS,gBAAgBe,IAAuBC;AAClD,SACE,gBAAAV,EAAClB,EAAkB,UAAlB,EAA2B,OAAOY,GACjC,UAAA,gBAAAM,EAACQ,GAAA,EAAU,GAAGD,GAAQ,UAAAhB,EAAA,CAAS,EAAA,CACjC;AAEJ;AAEAe,EAAW,cAAc;AAYzB,SAASK,EAAc,EAAE,UAAApB,GAAU,GAAGgB,KAA6B;AAEjE,QAAMK,IADO5B,EAAA,MAEF,gBAAgB6B,IAA0BC;AACrD,SAAO,gBAAAd,EAACY,GAAA,EAAa,GAAGL,GAAQ,UAAAhB,EAAA,CAAS;AAC3C;AAEAoB,EAAc,cAAc;AAU5B,SAASI,EAAY,EAAE,WAAAzB,GAAW,GAAGiB,KAA2B;AAE9D,QAAMS,IADOhC,EAAA,MAEF,gBAAgBiC,IAAwBC;AACnD,SAAO,gBAAAlB,EAACgB,GAAA,EAAU,WAAA1B,GAAuB,GAAGiB,EAAA,CAAO;AACrD;AAEAQ,EAAY,cAAc;AAY1B,SAASI,EAAkB,EAAE,WAAA7B,GAAW,GAAGiB,KAAiC;AAE1E,QAAMa,IADOpC,EAAA,MAEF,gBACLqC,IACAC;AACN,SAAO,gBAAAtB,EAACoB,GAAA,EAAgB,WAAA9B,GAAuB,GAAGiB,EAAA,CAAO;AAC3D;AAEAY,EAAkB,cAAc;AAUhC,SAASI,EAAY,EAAE,UAAAhC,GAAU,GAAGgB,KAA2B;AAE7D,QAAMiB,IADOxC,EAAA,MAEF,gBAAgByC,IAAwBC;AACnD,SAAO,gBAAA1B,EAACwB,GAAA,EAAW,GAAGjB,GAAQ,UAAAhB,EAAA,CAAS;AACzC;AAEAgC,EAAY,cAAc;AAM1B,MAAMI,IAAS,OAAO,OAAOtC,GAAe;AAAA,EAC1C,MAAMiB;AAAA,EACN,SAASK;AAAA,EACT,OAAOI;AAAA,EACP,aAAaI;AAAA,EACb,OAAOI;AACT,CAAC;"}
@@ -1,11 +1,12 @@
1
1
  "use client";
2
2
  import { jsx as o, jsxs as u, Fragment as F } from "react/jsx-runtime";
3
- import * as d from "react";
3
+ import * as s from "react";
4
4
  import { c as i } from "./cn-ct4n7r74mh8y0f48.js";
5
5
  import { u as K } from "./link-provider-mn2voeohon7cj9o4.js";
6
- import { CheckIcon as f, CaretRightIcon as U } from "@phosphor-icons/react";
7
- import { ax as W, ay as B, az as H, aA as J, aB as w, S as M, aC as N, aD as q, aE as Q, aF as k, aG as X, aH as Y, aI as y, aJ as Z, aK as $, aL as R, aM as ee } from "./vendor-base-ui-ccr5l0ynrievzzv3.js";
8
- const te = {
6
+ import { u as U } from "./portal-provider-hwmkdmkpvct0cb76.js";
7
+ import { CheckIcon as f, CaretRightIcon as W } from "@phosphor-icons/react";
8
+ import { ax as B, ay as H, az as J, aA as q, aB as w, S as M, aC as N, aD as Q, aE as X, aF as k, aG as Y, aH as Z, aI as y, aJ as $, aK as ee, aL as R, aM as te } from "./vendor-base-ui-k7bzesq81ie36nya.js";
9
+ const ae = {
9
10
  variant: {
10
11
  default: {
11
12
  classes: "",
@@ -16,18 +17,18 @@ const te = {
16
17
  description: "Destructive action item"
17
18
  }
18
19
  }
19
- }, ae = {
20
+ }, ne = {
20
21
  variant: "default"
21
22
  };
22
23
  function D({
23
- variant: e = ae.variant
24
+ variant: e = ne.variant
24
25
  } = {}) {
25
- return i(te.variant[e].classes);
26
+ return i(ae.variant[e].classes);
26
27
  }
27
- const I = d.forwardRef(({ className: e, inset: t, children: a, icon: n, ...r }, s) => /* @__PURE__ */ u(
28
+ const I = s.forwardRef(({ className: e, inset: t, children: a, icon: n, ...r }, d) => /* @__PURE__ */ u(
28
29
  R,
29
30
  {
30
- ref: s,
31
+ ref: d,
31
32
  className: i(
32
33
  "flex cursor-default items-center rounded-sm text-base outline-hidden select-none",
33
34
  // base styles
@@ -45,91 +46,96 @@ const I = d.forwardRef(({ className: e, inset: t, children: a, icon: n, ...r },
45
46
  children: [
46
47
  n && /* @__PURE__ */ o(n, { className: "mr-2 h-4 w-4" }),
47
48
  a,
48
- /* @__PURE__ */ o(U, { className: "ml-auto h-4 w-4" })
49
+ /* @__PURE__ */ o(W, { className: "ml-auto h-4 w-4" })
49
50
  ]
50
51
  }
51
52
  ));
52
53
  I.displayName = R.displayName;
53
- const x = d.forwardRef(({ className: e, sideOffset: t = 8, children: a, ...n }, r) => /* @__PURE__ */ o(w, { children: /* @__PURE__ */ o(
54
- Z,
55
- {
56
- ref: r,
57
- sideOffset: t,
58
- ...n,
59
- children: /* @__PURE__ */ o(
54
+ const b = s.forwardRef(
55
+ ({ className: e, sideOffset: t = 8, children: a, container: n, ...r }, d) => {
56
+ const l = U();
57
+ return /* @__PURE__ */ o(w, { container: n ?? l ?? void 0, children: /* @__PURE__ */ o(
60
58
  $,
61
59
  {
62
- className: i(
63
- "overflow-hidden bg-kumo-control text-kumo-default",
64
- // background
65
- "rounded-lg shadow-lg ring ring-kumo-line",
66
- // border part
67
- "min-w-36 p-1.5",
68
- // spacing
69
- "data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
70
- // open animation
71
- "data-[side=bottom]:slide-in-from-top-2",
72
- // bottom side animation
73
- "data-[side=left]:slide-in-from-right-2",
74
- // left side animation
75
- "data-[side=right]:slide-in-from-left-2",
76
- // right side animation
77
- "data-[side=top]:slide-in-from-bottom-2",
78
- // top side animation
79
- "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
80
- // close animation
81
- e
82
- ),
83
- children: a
60
+ ref: d,
61
+ sideOffset: t,
62
+ ...r,
63
+ children: /* @__PURE__ */ o(
64
+ ee,
65
+ {
66
+ className: i(
67
+ "overflow-hidden bg-kumo-control text-kumo-default",
68
+ // background
69
+ "rounded-lg shadow-lg ring ring-kumo-line",
70
+ // border part
71
+ "min-w-36 p-1.5",
72
+ // spacing
73
+ "data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
74
+ // open animation
75
+ "data-[side=bottom]:slide-in-from-top-2",
76
+ // bottom side animation
77
+ "data-[side=left]:slide-in-from-right-2",
78
+ // left side animation
79
+ "data-[side=right]:slide-in-from-left-2",
80
+ // right side animation
81
+ "data-[side=top]:slide-in-from-bottom-2",
82
+ // top side animation
83
+ "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
84
+ // close animation
85
+ e
86
+ ),
87
+ children: a
88
+ }
89
+ )
84
90
  }
85
- )
91
+ ) });
86
92
  }
87
- ) })), g = (e) => e ? d.isValidElement(e) ? e : /* @__PURE__ */ o(e, { className: "mr-2 h-4 w-4" }) : null, v = d.forwardRef(
93
+ ), g = (e) => e ? s.isValidElement(e) ? e : /* @__PURE__ */ o(e, { className: "mr-2 h-4 w-4" }) : null, v = s.forwardRef(
88
94
  ({
89
95
  className: e,
90
96
  inset: t,
91
97
  icon: a,
92
98
  children: n,
93
99
  selected: r,
94
- render: s,
100
+ render: d,
95
101
  href: l,
96
- variant: c = "default",
102
+ variant: m = "default",
97
103
  ...G
98
104
  }, _) => {
99
- const h = K(), m = d.useMemo(
105
+ const h = K(), c = s.useMemo(
100
106
  () => /* @__PURE__ */ u(F, { children: [
101
107
  a && g(a),
102
108
  n,
103
109
  r && /* @__PURE__ */ o("span", { className: "inline-flex", children: /* @__PURE__ */ o(f, {}) })
104
110
  ] }),
105
111
  [a, n, r]
106
- ), V = d.useMemo(() => {
112
+ ), V = s.useMemo(() => {
107
113
  if (!l) return;
108
- const z = /^(https?:)?\/\//.test(l), b = i(
114
+ const z = /^(https?:)?\/\//.test(l), x = i(
109
115
  "flex items-center",
110
- c === "danger" && "text-kumo-danger data-highlighted:bg-kumo-danger/5 data-highlighted:text-kumo-danger"
116
+ m === "danger" && "text-kumo-danger data-highlighted:bg-kumo-danger/5 data-highlighted:text-kumo-danger"
111
117
  );
112
118
  return z ? /* @__PURE__ */ o(
113
119
  "a",
114
120
  {
115
- className: i(b, "w-full text-inherit! no-underline!"),
121
+ className: i(x, "w-full text-inherit! no-underline!"),
116
122
  href: l,
117
123
  target: "_blank",
118
124
  rel: "noreferrer",
119
125
  onClick: (p) => p.stopPropagation(),
120
- children: m
126
+ children: c
121
127
  }
122
128
  ) : /* @__PURE__ */ o(
123
129
  h,
124
130
  {
125
- className: i(b, "w-full text-inherit! no-underline!"),
131
+ className: i(x, "w-full text-inherit! no-underline!"),
126
132
  href: l,
127
133
  to: l,
128
134
  onClick: (p) => p.stopPropagation(),
129
- children: m
135
+ children: c
130
136
  }
131
137
  );
132
- }, [l, m, c, h]), j = l || s;
138
+ }, [l, c, m, h]), j = l || d;
133
139
  return /* @__PURE__ */ o(
134
140
  y,
135
141
  {
@@ -137,27 +143,27 @@ const x = d.forwardRef(({ className: e, sideOffset: t = 8, children: a, ...n },
137
143
  className: i(
138
144
  "relative flex cursor-default items-center rounded-md px-2 py-1.5 text-base outline-hidden select-none focus:text-kumo-default data-disabled:pointer-events-none data-disabled:opacity-50 data-highlighted:bg-kumo-overlay",
139
145
  t && "pl-8",
140
- D({ variant: c }),
146
+ D({ variant: m }),
141
147
  e
142
148
  ),
143
- render: l ? V : s,
149
+ render: l ? V : d,
144
150
  ...G,
145
- children: j ? void 0 : m
151
+ children: j ? void 0 : c
146
152
  }
147
153
  );
148
154
  }
149
155
  );
150
156
  v.displayName = y.displayName;
151
- const S = d.forwardRef(
157
+ const S = s.forwardRef(
152
158
  ({
153
159
  className: e,
154
160
  inset: t,
155
161
  icon: a,
156
162
  children: n,
157
163
  variant: r = "default",
158
- ...s
164
+ ...d
159
165
  }, l) => /* @__PURE__ */ u(
160
- Y,
166
+ Z,
161
167
  {
162
168
  ref: l,
163
169
  className: i(
@@ -168,7 +174,7 @@ const S = d.forwardRef(
168
174
  D({ variant: r }),
169
175
  e
170
176
  ),
171
- ...s,
177
+ ...d,
172
178
  children: [
173
179
  a && g(a),
174
180
  n
@@ -177,7 +183,7 @@ const S = d.forwardRef(
177
183
  )
178
184
  );
179
185
  S.displayName = "DropdownMenuLinkItem";
180
- const L = d.forwardRef(({ className: e, children: t, checked: a, ...n }, r) => /* @__PURE__ */ u(
186
+ const C = s.forwardRef(({ className: e, children: t, checked: a, ...n }, r) => /* @__PURE__ */ u(
181
187
  k,
182
188
  {
183
189
  ref: r,
@@ -188,13 +194,13 @@ const L = d.forwardRef(({ className: e, children: t, checked: a, ...n }, r) => /
188
194
  checked: a,
189
195
  ...n,
190
196
  children: [
191
- /* @__PURE__ */ o(X, { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center text-inherit", children: /* @__PURE__ */ o(f, { weight: "bold", size: 12 }) }),
197
+ /* @__PURE__ */ o(Y, { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center text-inherit", children: /* @__PURE__ */ o(f, { weight: "bold", size: 12 }) }),
192
198
  t
193
199
  ]
194
200
  }
195
201
  ));
196
- L.displayName = k.displayName;
197
- const C = d.forwardRef(({ className: e, inset: t, ...a }, n) => /* @__PURE__ */ o(
202
+ C.displayName = k.displayName;
203
+ const L = s.forwardRef(({ className: e, inset: t, ...a }, n) => /* @__PURE__ */ o(
198
204
  N,
199
205
  {
200
206
  ref: n,
@@ -206,8 +212,8 @@ const C = d.forwardRef(({ className: e, inset: t, ...a }, n) => /* @__PURE__ */
206
212
  ...a
207
213
  }
208
214
  ));
209
- C.displayName = N.displayName;
210
- const T = d.forwardRef(({ className: e, ...t }, a) => /* @__PURE__ */ o(
215
+ L.displayName = N.displayName;
216
+ const P = s.forwardRef(({ className: e, ...t }, a) => /* @__PURE__ */ o(
211
217
  M,
212
218
  {
213
219
  ref: a,
@@ -215,8 +221,8 @@ const T = d.forwardRef(({ className: e, ...t }, a) => /* @__PURE__ */ o(
215
221
  ...t
216
222
  }
217
223
  ));
218
- T.displayName = M.displayName;
219
- const P = ({
224
+ P.displayName = M.displayName;
225
+ const T = ({
220
226
  className: e,
221
227
  ...t
222
228
  }) => /* @__PURE__ */ o(
@@ -226,11 +232,11 @@ const P = ({
226
232
  ...t
227
233
  }
228
234
  );
229
- P.displayName = "DropdownMenuShortcut";
230
- const O = d.forwardRef(({ className: e, children: t, inset: a, icon: n, ...r }, s) => /* @__PURE__ */ u(
231
- Q,
235
+ T.displayName = "DropdownMenuShortcut";
236
+ const O = s.forwardRef(({ className: e, children: t, inset: a, icon: n, ...r }, d) => /* @__PURE__ */ u(
237
+ X,
232
238
  {
233
- ref: s,
239
+ ref: d,
234
240
  className: i(
235
241
  "relative flex cursor-default items-center rounded-md px-2 py-1.5 text-base outline-hidden select-none",
236
242
  "data-disabled:pointer-events-none data-disabled:opacity-50 data-highlighted:bg-kumo-tint",
@@ -245,8 +251,8 @@ const O = d.forwardRef(({ className: e, children: t, inset: a, icon: n, ...r },
245
251
  }
246
252
  ));
247
253
  O.displayName = "DropdownMenuRadioItem";
248
- const A = d.forwardRef(({ className: e, children: t, ...a }, n) => /* @__PURE__ */ o(
249
- q,
254
+ const A = s.forwardRef(({ className: e, children: t, ...a }, n) => /* @__PURE__ */ o(
255
+ Q,
250
256
  {
251
257
  ref: n,
252
258
  className: i("ml-auto", e),
@@ -255,40 +261,40 @@ const A = d.forwardRef(({ className: e, children: t, ...a }, n) => /* @__PURE__
255
261
  }
256
262
  ));
257
263
  A.displayName = "DropdownMenuRadioItemIndicator";
258
- const E = d.forwardRef(({ children: e, render: t, ...a }, n) => {
259
- const r = d.isValidElement(e) ? e : null, s = t ?? r;
264
+ const E = s.forwardRef(({ children: e, render: t, ...a }, n) => {
265
+ const r = s.isValidElement(e) ? e : null, d = t ?? r;
260
266
  return /* @__PURE__ */ o(
261
- ee,
267
+ te,
262
268
  {
263
269
  ref: n,
264
270
  ...a,
265
- ...s && {
266
- render: s
271
+ ...d && {
272
+ render: d
267
273
  },
268
274
  children: r ? void 0 : e
269
275
  }
270
276
  );
271
277
  });
272
278
  E.displayName = "DropdownMenuTrigger";
273
- const se = Object.assign(W, {
279
+ const ue = Object.assign(B, {
274
280
  Trigger: E,
275
281
  Portal: w,
276
- Sub: J,
282
+ Sub: q,
277
283
  SubTrigger: I,
278
- SubContent: x,
279
- Content: x,
284
+ SubContent: b,
285
+ Content: b,
280
286
  Item: v,
281
287
  LinkItem: S,
282
- CheckboxItem: L,
283
- RadioGroup: H,
288
+ CheckboxItem: C,
289
+ RadioGroup: J,
284
290
  RadioItem: O,
285
291
  RadioItemIndicator: A,
286
- Label: C,
287
- Separator: T,
288
- Shortcut: P,
289
- Group: B
292
+ Label: L,
293
+ Separator: P,
294
+ Shortcut: T,
295
+ Group: H
290
296
  });
291
297
  export {
292
- se as D
298
+ ue as D
293
299
  };
294
- //# sourceMappingURL=dropdown-icy3xatdwhzr4une.js.map
300
+ //# sourceMappingURL=dropdown-ncwhcd912vmone8k.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown-ncwhcd912vmone8k.js","sources":["../../src/components/dropdown/dropdown.tsx"],"sourcesContent":["import { Menu as DropdownMenuPrimitive } from \"@base-ui/react/menu\";\nimport * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useLinkComponent } from \"../../utils/link-provider\";\nimport {\n usePortalContainer,\n type PortalContainer,\n} from \"../../utils/portal-provider\";\nimport {\n CaretRightIcon as CaretRight,\n CheckIcon,\n CheckIcon as Check,\n type Icon,\n} from \"@phosphor-icons/react\";\n\n/** Dropdown item variant definitions (default and danger styles). */\nexport const KUMO_DROPDOWN_VARIANTS = {\n variant: {\n default: {\n classes: \"\",\n description: \"Default dropdown item appearance\",\n },\n danger: {\n classes:\n \"text-kumo-danger data-highlighted:bg-kumo-danger/5 data-highlighted:text-kumo-danger\",\n description: \"Destructive action item\",\n },\n },\n} as const;\n\nexport const KUMO_DROPDOWN_DEFAULT_VARIANTS = {\n variant: \"default\",\n} as const;\n\n// Derived types from KUMO_DROPDOWN_VARIANTS\nexport type KumoDropdownVariant = keyof typeof KUMO_DROPDOWN_VARIANTS.variant;\n\nexport interface KumoDropdownVariantsProps {\n /**\n * Visual style of the dropdown item.\n * - `\"default\"` — Standard item appearance\n * - `\"danger\"` — Destructive action with red text\n * @default \"default\"\n */\n variant?: KumoDropdownVariant;\n}\n\nexport function dropdownVariants({\n variant = KUMO_DROPDOWN_DEFAULT_VARIANTS.variant,\n}: KumoDropdownVariantsProps = {}) {\n return cn(KUMO_DROPDOWN_VARIANTS.variant[variant].classes);\n}\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubmenuTrigger>,\n React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.SubmenuTrigger\n > & {\n inset?: boolean;\n icon?: Icon;\n }\n>(({ className, inset, children, icon: IconComponent, ...props }, ref) => (\n <DropdownMenuPrimitive.SubmenuTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default items-center rounded-sm text-base outline-hidden select-none\", // base styles\n \"px-2 py-1.5\", // spacing\n \"focus:bg-kumo-tint\", // focus state\n \"data-[state=open]:bg-kumo-tint\", // open state\n inset && \"pl-8\", // conditional inset\n className,\n )}\n {...props}\n >\n {IconComponent && <IconComponent className=\"mr-2 h-4 w-4\" />}\n {children}\n <CaretRight className=\"ml-auto h-4 w-4\" />\n </DropdownMenuPrimitive.SubmenuTrigger>\n));\n\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubmenuTrigger.displayName;\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Positioner>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Positioner> & {\n /**\n * Container element for the portal. Use this to render the dropdown 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>(\n (\n { className, sideOffset = 8, children, container: containerProp, ...props },\n ref,\n ) => {\n const contextContainer = usePortalContainer();\n const container = containerProp ?? contextContainer ?? undefined;\n\n return (\n <DropdownMenuPrimitive.Portal container={container}>\n <DropdownMenuPrimitive.Positioner\n ref={ref}\n sideOffset={sideOffset}\n {...props}\n >\n <DropdownMenuPrimitive.Popup\n className={cn(\n \"overflow-hidden bg-kumo-control text-kumo-default\", // background\n \"rounded-lg shadow-lg ring ring-kumo-line\", // border part\n \"min-w-36 p-1.5\", // spacing\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\", // open animation\n \"data-[side=bottom]:slide-in-from-top-2\", // bottom side animation\n \"data-[side=left]:slide-in-from-right-2\", // left side animation\n \"data-[side=right]:slide-in-from-left-2\", // right side animation\n \"data-[side=top]:slide-in-from-bottom-2\", // top side animation\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\", // close animation\n className,\n )}\n >\n {children}\n </DropdownMenuPrimitive.Popup>\n </DropdownMenuPrimitive.Positioner>\n </DropdownMenuPrimitive.Portal>\n );\n },\n);\n\nconst renderIconNode = (IconComponent?: Icon | React.ReactNode) => {\n if (!IconComponent) return null;\n if (React.isValidElement(IconComponent)) return IconComponent;\n const Comp = IconComponent as React.ComponentType<Record<string, unknown>>;\n return <Comp className=\"mr-2 h-4 w-4\" />;\n};\n\n/**\n * DropdownMenuItem — a single actionable item within a dropdown menu.\n *\n * For navigation links, use `DropdownMenu.LinkItem` instead.\n *\n * @example\n * ```tsx\n * <DropdownMenu.Item>Edit</DropdownMenu.Item>\n * <DropdownMenu.Item icon={CopyIcon}>Duplicate</DropdownMenu.Item>\n * <DropdownMenu.Item variant=\"danger\">Delete</DropdownMenu.Item>\n * ```\n */\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n icon?: Icon | React.ReactNode;\n selected?: boolean;\n /**\n * @deprecated Use `DropdownMenu.LinkItem` instead for navigation links.\n * This prop will be removed in a future major version.\n */\n href?: string;\n variant?: \"default\" | \"danger\";\n }\n>(\n (\n {\n className,\n inset,\n icon: IconComponent,\n children,\n selected,\n render,\n href,\n variant = \"default\",\n ...props\n },\n ref,\n ) => {\n const LinkComponent = useLinkComponent();\n\n // Build the inner content with icon, children, and selected indicator\n const innerContent = React.useMemo(\n () => (\n <>\n {IconComponent && renderIconNode(IconComponent)}\n {children}\n {selected && (\n <span className=\"inline-flex\">\n <Check />\n </span>\n )}\n </>\n ),\n [IconComponent, children, selected],\n );\n\n // Legacy href support (deprecated)\n const linkContent = React.useMemo(() => {\n if (!href) return undefined;\n\n // Matches http://, https://, or protocol-relative //\n const isExternal = /^(https?:)?\\/\\//.test(href);\n const styles = cn(\n \"flex items-center\",\n variant === \"danger\" &&\n \"text-kumo-danger data-highlighted:bg-kumo-danger/5 data-highlighted:text-kumo-danger\",\n );\n if (isExternal) {\n return (\n <a\n className={cn(styles, \"w-full text-inherit! no-underline!\")}\n href={href}\n target=\"_blank\"\n rel=\"noreferrer\"\n onClick={(e) => e.stopPropagation()}\n >\n {innerContent}\n </a>\n );\n }\n return (\n <LinkComponent\n className={cn(styles, \"w-full text-inherit! no-underline!\")}\n href={href}\n to={href}\n onClick={(e) => e.stopPropagation()}\n >\n {innerContent}\n </LinkComponent>\n );\n }, [href, innerContent, variant, LinkComponent]);\n\n // When href is provided, use linkContent as render prop\n // When render prop is provided, caller controls children rendering\n const useRenderProp = href || render;\n\n return (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default items-center rounded-md px-2 py-1.5 text-base outline-hidden select-none focus:text-kumo-default data-disabled:pointer-events-none data-disabled:opacity-50 data-highlighted:bg-kumo-overlay\",\n inset && \"pl-8\",\n dropdownVariants({ variant }),\n className,\n )}\n render={href ? linkContent : render}\n {...props}\n >\n {useRenderProp ? undefined : innerContent}\n </DropdownMenuPrimitive.Item>\n );\n },\n);\n\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\n\n/**\n * DropdownMenuLinkItem — a menu item that navigates to a URL.\n *\n * Use this instead of `DropdownMenu.Item` with `href` for navigation links.\n * Provides full control over link attributes like `target` and `rel`.\n *\n * @example\n * ```tsx\n * // External link\n * <DropdownMenu.LinkItem href=\"https://example.com\" target=\"_blank\">\n * Documentation\n * </DropdownMenu.LinkItem>\n *\n * // Internal link\n * <DropdownMenu.LinkItem href=\"/settings\">\n * Settings\n * </DropdownMenu.LinkItem>\n *\n * // With icon\n * <DropdownMenu.LinkItem href=\"/profile\" icon={UserIcon}>\n * Profile\n * </DropdownMenu.LinkItem>\n * ```\n */\nconst DropdownMenuLinkItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.LinkItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.LinkItem> & {\n inset?: boolean;\n icon?: Icon | React.ReactNode;\n variant?: \"default\" | \"danger\";\n }\n>(\n (\n {\n className,\n inset,\n icon: IconComponent,\n children,\n variant = \"default\",\n ...props\n },\n ref,\n ) => {\n return (\n <DropdownMenuPrimitive.LinkItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default items-center rounded-md px-2 py-1.5 text-base outline-hidden select-none\",\n \"focus:text-kumo-default data-disabled:pointer-events-none data-disabled:opacity-50 data-highlighted:bg-kumo-overlay\",\n \"text-inherit no-underline\",\n inset && \"pl-8\",\n dropdownVariants({ variant }),\n className,\n )}\n {...props}\n >\n {IconComponent && renderIconNode(IconComponent)}\n {children}\n </DropdownMenuPrimitive.LinkItem>\n );\n },\n);\n\nDropdownMenuLinkItem.displayName = \"DropdownMenuLinkItem\";\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default items-center rounded-sm py-1.5 pr-2 pl-8 text-base outline-hidden transition-colors select-none focus:bg-kumo-tint focus:text-kumo-default data-disabled:pointer-events-none data-disabled:opacity-50\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <DropdownMenuPrimitive.CheckboxItemIndicator className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center text-inherit\">\n <CheckIcon weight=\"bold\" size={12} />\n </DropdownMenuPrimitive.CheckboxItemIndicator>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n));\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName;\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.GroupLabel>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.GroupLabel> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.GroupLabel\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-base font-semibold\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.GroupLabel.displayName;\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-kumo-line\", className)}\n {...props}\n />\n));\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n {...props}\n />\n );\n};\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\";\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem> & {\n inset?: boolean;\n icon?: Icon | React.ReactNode;\n }\n>(({ className, children, inset, icon: IconComponent, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default items-center rounded-md px-2 py-1.5 text-base outline-hidden select-none\",\n \"data-disabled:pointer-events-none data-disabled:opacity-50 data-highlighted:bg-kumo-tint\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n >\n {IconComponent && renderIconNode(IconComponent)}\n {children}\n </DropdownMenuPrimitive.RadioItem>\n));\nDropdownMenuRadioItem.displayName = \"DropdownMenuRadioItem\";\n\nconst DropdownMenuRadioItemIndicator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItemIndicator>,\n React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.RadioItemIndicator\n >\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItemIndicator\n ref={ref}\n className={cn(\"ml-auto\", className)}\n {...props}\n >\n {children ?? <Check className=\"h-4 w-4\" />}\n </DropdownMenuPrimitive.RadioItemIndicator>\n));\nDropdownMenuRadioItemIndicator.displayName = \"DropdownMenuRadioItemIndicator\";\n\n/**\n * Custom Trigger that converts a single child element to the `render` prop\n * to avoid nested button issues with base-ui's Menu.Trigger.\n */\nconst DropdownMenuTrigger = React.forwardRef<\n HTMLButtonElement,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Trigger>\n>(({ children, render, ...props }, ref) => {\n // If render prop is provided, use it directly\n // Otherwise, convert single child element to render prop\n const childElement = React.isValidElement(children) ? children : null;\n const effectiveRender = render ?? childElement;\n\n return (\n <DropdownMenuPrimitive.Trigger\n ref={ref}\n {...props}\n {...(effectiveRender && {\n render: effectiveRender as React.ReactElement<Record<string, unknown>>,\n })}\n >\n {/* Only pass children if not using as render prop */}\n {childElement ? undefined : children}\n </DropdownMenuPrimitive.Trigger>\n );\n});\nDropdownMenuTrigger.displayName = \"DropdownMenuTrigger\";\n\n/**\n * DropdownMenu — accessible dropdown menu anchored to a trigger.\n *\n * Compound component: `DropdownMenu` (Root), `.Trigger`, `.Content`, `.Item`,\n * `.LinkItem`, `.CheckboxItem`, `.RadioGroup`, `.RadioItem`, `.RadioItemIndicator`,\n * `.Sub`, `.SubTrigger`, `.SubContent`, `.Label`, `.Separator`, `.Shortcut`, `.Group`.\n *\n * Built on `@base-ui/react/menu`.\n *\n * @example\n * ```tsx\n * <DropdownMenu>\n * <DropdownMenu.Trigger>\n * <Button>Actions</Button>\n * </DropdownMenu.Trigger>\n * <DropdownMenu.Content>\n * <DropdownMenu.Item>Edit</DropdownMenu.Item>\n * <DropdownMenu.Item icon={CopyIcon}>Duplicate</DropdownMenu.Item>\n * <DropdownMenu.LinkItem href=\"/settings\" icon={GearIcon}>Settings</DropdownMenu.LinkItem>\n * <DropdownMenu.Separator />\n * <DropdownMenu.Item variant=\"danger\">Delete</DropdownMenu.Item>\n * </DropdownMenu.Content>\n * </DropdownMenu>\n * ```\n *\n * @see https://base-ui.com/react/components/menu\n */\nexport const DropdownMenu = Object.assign(DropdownMenuPrimitive.Root, {\n Trigger: DropdownMenuTrigger,\n Portal: DropdownMenuPrimitive.Portal,\n Sub: DropdownMenuPrimitive.SubmenuRoot,\n SubTrigger: DropdownMenuSubTrigger,\n SubContent: DropdownMenuContent,\n Content: DropdownMenuContent,\n Item: DropdownMenuItem,\n LinkItem: DropdownMenuLinkItem,\n CheckboxItem: DropdownMenuCheckboxItem,\n RadioGroup: DropdownMenuPrimitive.RadioGroup,\n RadioItem: DropdownMenuRadioItem,\n RadioItemIndicator: DropdownMenuRadioItemIndicator,\n Label: DropdownMenuLabel,\n Separator: DropdownMenuSeparator,\n Shortcut: DropdownMenuShortcut,\n Group: DropdownMenuPrimitive.Group,\n});\n"],"names":["KUMO_DROPDOWN_VARIANTS","KUMO_DROPDOWN_DEFAULT_VARIANTS","dropdownVariants","variant","cn","DropdownMenuSubTrigger","React","className","inset","children","IconComponent","props","ref","jsxs","DropdownMenuPrimitive.SubmenuTrigger","jsx","CaretRight","DropdownMenuContent","sideOffset","containerProp","contextContainer","usePortalContainer","DropdownMenuPrimitive.Portal","DropdownMenuPrimitive.Positioner","DropdownMenuPrimitive.Popup","renderIconNode","DropdownMenuItem","selected","render","href","LinkComponent","useLinkComponent","innerContent","Fragment","Check","linkContent","isExternal","styles","e","useRenderProp","DropdownMenuPrimitive.Item","DropdownMenuLinkItem","DropdownMenuPrimitive.LinkItem","DropdownMenuCheckboxItem","checked","DropdownMenuPrimitive.CheckboxItem","DropdownMenuPrimitive.CheckboxItemIndicator","CheckIcon","DropdownMenuLabel","DropdownMenuPrimitive.GroupLabel","DropdownMenuSeparator","DropdownMenuPrimitive.Separator","DropdownMenuShortcut","DropdownMenuRadioItem","DropdownMenuPrimitive.RadioItem","DropdownMenuRadioItemIndicator","DropdownMenuPrimitive.RadioItemIndicator","DropdownMenuTrigger","childElement","effectiveRender","DropdownMenuPrimitive.Trigger","DropdownMenu","DropdownMenuPrimitive.Root","DropdownMenuPrimitive.SubmenuRoot","DropdownMenuPrimitive.RadioGroup","DropdownMenuPrimitive.Group"],"mappings":";;;;;;;;AAgBO,MAAMA,KAAyB;AAAA,EACpC,SAAS;AAAA,IACP,SAAS;AAAA,MACP,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,QAAQ;AAAA,MACN,SACE;AAAA,MACF,aAAa;AAAA,IAAA;AAAA,EACf;AAEJ,GAEaC,KAAiC;AAAA,EAC5C,SAAS;AACX;AAeO,SAASC,EAAiB;AAAA,EAC/B,SAAAC,IAAUF,GAA+B;AAC3C,IAA+B,IAAI;AACjC,SAAOG,EAAGJ,GAAuB,QAAQG,CAAO,EAAE,OAAO;AAC3D;AAEA,MAAME,IAAyBC,EAAM,WAQnC,CAAC,EAAE,WAAAC,GAAW,OAAAC,GAAO,UAAAC,GAAU,MAAMC,GAAe,GAAGC,EAAA,GAASC,MAChE,gBAAAC;AAAA,EAACC;AAAAA,EAAA;AAAA,IACC,KAAAF;AAAA,IACA,WAAWR;AAAA,MACT;AAAA;AAAA,MACA;AAAA;AAAA,MACA;AAAA;AAAA,MACA;AAAA;AAAA,MACAI,KAAS;AAAA;AAAA,MACTD;AAAA,IAAA;AAAA,IAED,GAAGI;AAAA,IAEH,UAAA;AAAA,MAAAD,KAAiB,gBAAAK,EAACL,GAAA,EAAc,WAAU,eAAA,CAAe;AAAA,MACzDD;AAAA,MACD,gBAAAM,EAACC,GAAA,EAAW,WAAU,kBAAA,CAAkB;AAAA,IAAA;AAAA,EAAA;AAC1C,CACD;AAEDX,EAAuB,cACrBS,EAAqC;AAEvC,MAAMG,IAAsBX,EAAM;AAAA,EAWhC,CACE,EAAE,WAAAC,GAAW,YAAAW,IAAa,GAAG,UAAAT,GAAU,WAAWU,GAAe,GAAGR,EAAA,GACpEC,MACG;AACH,UAAMQ,IAAmBC,EAAA;AAGzB,WACE,gBAAAN,EAACO,GAAA,EAA6B,WAHdH,KAAiBC,KAAoB,QAInD,UAAA,gBAAAL;AAAA,MAACQ;AAAAA,MAAA;AAAA,QACC,KAAAX;AAAA,QACA,YAAAM;AAAA,QACC,GAAGP;AAAA,QAEJ,UAAA,gBAAAI;AAAA,UAACS;AAAAA,UAAA;AAAA,YACC,WAAWpB;AAAA,cACT;AAAA;AAAA,cACA;AAAA;AAAA,cACA;AAAA;AAAA,cACA;AAAA;AAAA,cACA;AAAA;AAAA,cACA;AAAA;AAAA,cACA;AAAA;AAAA,cACA;AAAA;AAAA,cACA;AAAA;AAAA,cACAG;AAAA,YAAA;AAAA,YAGD,UAAAE;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA,GAEJ;AAAA,EAEJ;AACF,GAEMgB,IAAiB,CAACf,MACjBA,IACDJ,EAAM,eAAeI,CAAa,IAAUA,IAEzC,gBAAAK,EADML,GACL,EAAK,WAAU,eAAA,CAAe,IAHX,MAkBvBgB,IAAmBpB,EAAM;AAAA,EAc7B,CACE;AAAA,IACE,WAAAC;AAAA,IACA,OAAAC;AAAA,IACA,MAAME;AAAA,IACN,UAAAD;AAAA,IACA,UAAAkB;AAAA,IACA,QAAAC;AAAA,IACA,MAAAC;AAAA,IACA,SAAA1B,IAAU;AAAA,IACV,GAAGQ;AAAA,EAAA,GAELC,MACG;AACH,UAAMkB,IAAgBC,EAAA,GAGhBC,IAAe1B,EAAM;AAAA,MACzB,MACE,gBAAAO,EAAAoB,GAAA,EACG,UAAA;AAAA,QAAAvB,KAAiBe,EAAef,CAAa;AAAA,QAC7CD;AAAA,QACAkB,KACC,gBAAAZ,EAAC,QAAA,EAAK,WAAU,eACd,UAAA,gBAAAA,EAACmB,KAAM,EAAA,CACT;AAAA,MAAA,GAEJ;AAAA,MAEF,CAACxB,GAAeD,GAAUkB,CAAQ;AAAA,IAAA,GAI9BQ,IAAc7B,EAAM,QAAQ,MAAM;AACtC,UAAI,CAACuB,EAAM;AAGX,YAAMO,IAAa,kBAAkB,KAAKP,CAAI,GACxCQ,IAASjC;AAAA,QACb;AAAA,QACAD,MAAY,YACV;AAAA,MAAA;AAEJ,aAAIiC,IAEA,gBAAArB;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWX,EAAGiC,GAAQ,oCAAoC;AAAA,UAC1D,MAAAR;AAAA,UACA,QAAO;AAAA,UACP,KAAI;AAAA,UACJ,SAAS,CAACS,MAAMA,EAAE,gBAAA;AAAA,UAEjB,UAAAN;AAAA,QAAA;AAAA,MAAA,IAKL,gBAAAjB;AAAA,QAACe;AAAA,QAAA;AAAA,UACC,WAAW1B,EAAGiC,GAAQ,oCAAoC;AAAA,UAC1D,MAAAR;AAAA,UACA,IAAIA;AAAA,UACJ,SAAS,CAACS,MAAMA,EAAE,gBAAA;AAAA,UAEjB,UAAAN;AAAA,QAAA;AAAA,MAAA;AAAA,IAGP,GAAG,CAACH,GAAMG,GAAc7B,GAAS2B,CAAa,CAAC,GAIzCS,IAAgBV,KAAQD;AAE9B,WACE,gBAAAb;AAAA,MAACyB;AAAAA,MAAA;AAAA,QACC,KAAA5B;AAAA,QACA,WAAWR;AAAA,UACT;AAAA,UACAI,KAAS;AAAA,UACTN,EAAiB,EAAE,SAAAC,GAAS;AAAA,UAC5BI;AAAA,QAAA;AAAA,QAEF,QAAQsB,IAAOM,IAAcP;AAAA,QAC5B,GAAGjB;AAAA,QAEH,cAAgB,SAAYqB;AAAA,MAAA;AAAA,IAAA;AAAA,EAGnC;AACF;AAEAN,EAAiB,cAAcc,EAA2B;AA0B1D,MAAMC,IAAuBnC,EAAM;AAAA,EAQjC,CACE;AAAA,IACE,WAAAC;AAAA,IACA,OAAAC;AAAA,IACA,MAAME;AAAA,IACN,UAAAD;AAAA,IACA,SAAAN,IAAU;AAAA,IACV,GAAGQ;AAAA,EAAA,GAELC,MAGE,gBAAAC;AAAA,IAAC6B;AAAAA,IAAA;AAAA,MACC,KAAA9B;AAAA,MACA,WAAWR;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACAI,KAAS;AAAA,QACTN,EAAiB,EAAE,SAAAC,GAAS;AAAA,QAC5BI;AAAA,MAAA;AAAA,MAED,GAAGI;AAAA,MAEH,UAAA;AAAA,QAAAD,KAAiBe,EAAef,CAAa;AAAA,QAC7CD;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIT;AAEAgC,EAAqB,cAAc;AAEnC,MAAME,IAA2BrC,EAAM,WAGrC,CAAC,EAAE,WAAAC,GAAW,UAAAE,GAAU,SAAAmC,GAAS,GAAGjC,KAASC,MAC7C,gBAAAC;AAAA,EAACgC;AAAAA,EAAA;AAAA,IACC,KAAAjC;AAAA,IACA,WAAWR;AAAA,MACT;AAAA,MACAG;AAAA,IAAA;AAAA,IAEF,SAAAqC;AAAA,IACC,GAAGjC;AAAA,IAEJ,UAAA;AAAA,MAAA,gBAAAI,EAAC+B,GAAA,EAA4C,WAAU,6EACrD,UAAA,gBAAA/B,EAACgC,GAAA,EAAU,QAAO,QAAO,MAAM,GAAA,CAAI,EAAA,CACrC;AAAA,MACCtC;AAAA,IAAA;AAAA,EAAA;AACH,CACD;AACDkC,EAAyB,cACvBE,EAAmC;AAErC,MAAMG,IAAoB1C,EAAM,WAK9B,CAAC,EAAE,WAAAC,GAAW,OAAAC,GAAO,GAAGG,KAASC,MACjC,gBAAAG;AAAA,EAACkC;AAAAA,EAAA;AAAA,IACC,KAAArC;AAAA,IACA,WAAWR;AAAA,MACT;AAAA,MACAI,KAAS;AAAA,MACTD;AAAA,IAAA;AAAA,IAED,GAAGI;AAAA,EAAA;AACN,CACD;AACDqC,EAAkB,cAAcC,EAAiC;AAEjE,MAAMC,IAAwB5C,EAAM,WAGlC,CAAC,EAAE,WAAAC,GAAW,GAAGI,EAAA,GAASC,MAC1B,gBAAAG;AAAA,EAACoC;AAAAA,EAAA;AAAA,IACC,KAAAvC;AAAA,IACA,WAAWR,EAAG,gCAAgCG,CAAS;AAAA,IACtD,GAAGI;AAAA,EAAA;AACN,CACD;AACDuC,EAAsB,cAAcC,EAAgC;AAEpE,MAAMC,IAAuB,CAAC;AAAA,EAC5B,WAAA7C;AAAA,EACA,GAAGI;AACL,MAEI,gBAAAI;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWX,EAAG,8CAA8CG,CAAS;AAAA,IACpE,GAAGI;AAAA,EAAA;AAAA;AAIVyC,EAAqB,cAAc;AAEnC,MAAMC,IAAwB/C,EAAM,WAMlC,CAAC,EAAE,WAAAC,GAAW,UAAAE,GAAU,OAAAD,GAAO,MAAME,GAAe,GAAGC,EAAA,GAASC,MAChE,gBAAAC;AAAA,EAACyC;AAAAA,EAAA;AAAA,IACC,KAAA1C;AAAA,IACA,WAAWR;AAAA,MACT;AAAA,MACA;AAAA,MACAI,KAAS;AAAA,MACTD;AAAA,IAAA;AAAA,IAED,GAAGI;AAAA,IAEH,UAAA;AAAA,MAAAD,KAAiBe,EAAef,CAAa;AAAA,MAC7CD;AAAA,IAAA;AAAA,EAAA;AACH,CACD;AACD4C,EAAsB,cAAc;AAEpC,MAAME,IAAiCjD,EAAM,WAK3C,CAAC,EAAE,WAAAC,GAAW,UAAAE,GAAU,GAAGE,KAASC,MACpC,gBAAAG;AAAA,EAACyC;AAAAA,EAAA;AAAA,IACC,KAAA5C;AAAA,IACA,WAAWR,EAAG,WAAWG,CAAS;AAAA,IACjC,GAAGI;AAAA,IAEH,UAAAF,KAAY,gBAAAM,EAACmB,GAAA,EAAM,WAAU,UAAA,CAAU;AAAA,EAAA;AAC1C,CACD;AACDqB,EAA+B,cAAc;AAM7C,MAAME,IAAsBnD,EAAM,WAGhC,CAAC,EAAE,UAAAG,GAAU,QAAAmB,GAAQ,GAAGjB,EAAA,GAASC,MAAQ;AAGzC,QAAM8C,IAAepD,EAAM,eAAeG,CAAQ,IAAIA,IAAW,MAC3DkD,IAAkB/B,KAAU8B;AAElC,SACE,gBAAA3C;AAAA,IAAC6C;AAAAA,IAAA;AAAA,MACC,KAAAhD;AAAA,MACC,GAAGD;AAAA,MACH,GAAIgD,KAAmB;AAAA,QACtB,QAAQA;AAAA,MAAA;AAAA,MAIT,cAAe,SAAYlD;AAAA,IAAA;AAAA,EAAA;AAGlC,CAAC;AACDgD,EAAoB,cAAc;AA6B3B,MAAMI,KAAe,OAAO,OAAOC,GAA4B;AAAA,EACpE,SAASL;AAAA,EACT,QAAQnC;AAAAA,EACR,KAAKyC;AAAAA,EACL,YAAY1D;AAAA,EACZ,YAAYY;AAAA,EACZ,SAASA;AAAA,EACT,MAAMS;AAAA,EACN,UAAUe;AAAA,EACV,cAAcE;AAAA,EACd,YAAYqB;AAAAA,EACZ,WAAWX;AAAA,EACX,oBAAoBE;AAAA,EACpB,OAAOP;AAAA,EACP,WAAWE;AAAA,EACX,UAAUE;AAAA,EACV,OAAOa;AACT,CAAC;"}
@@ -2,7 +2,7 @@
2
2
  import { jsxs as l, jsx as e } from "react/jsx-runtime";
3
3
  import { CheckIcon as u, CopyIcon as d } from "@phosphor-icons/react";
4
4
  import { useState as x } from "react";
5
- import { B as f } from "./button-j0hi0afn33w9lxgi.js";
5
+ import { B as f } from "./button-cdxnqcgzwko8ooha.js";
6
6
  import { c as a } from "./cn-ct4n7r74mh8y0f48.js";
7
7
  const h = {
8
8
  size: {
@@ -90,4 +90,4 @@ export {
90
90
  b as a,
91
91
  g as e
92
92
  };
93
- //# sourceMappingURL=empty-hrwtammqp0b2nvtf.js.map
93
+ //# sourceMappingURL=empty-cj898km1r8xwuw44.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"empty-hrwtammqp0b2nvtf.js","sources":["../../src/components/empty/empty.tsx"],"sourcesContent":["import { CheckIcon, CopyIcon } from \"@phosphor-icons/react\";\nimport { useState } from \"react\";\nimport { Button } from \"../../components/button\";\nimport { cn } from \"../../utils/cn\";\n\n/** Empty state size variant definitions mapping sizes to their Tailwind classes. */\nexport const KUMO_EMPTY_VARIANTS = {\n size: {\n sm: {\n classes: \"px-6 py-8 gap-4\",\n description: \"Compact empty state for smaller containers\",\n },\n base: {\n classes: \"px-10 py-16 gap-6\",\n description: \"Default empty state size\",\n },\n lg: {\n classes: \"px-12 py-20 gap-8\",\n description: \"Large empty state for prominent placement\",\n },\n },\n} as const;\n\nexport const KUMO_EMPTY_DEFAULT_VARIANTS = {\n size: \"base\",\n} as const;\n\nexport type KumoEmptySize = keyof typeof KUMO_EMPTY_VARIANTS.size;\n\nexport interface KumoEmptyVariantsProps {\n /**\n * Size of the empty state container.\n * - `\"sm\"` — Compact empty state for smaller containers\n * - `\"base\"` — Default empty state size\n * - `\"lg\"` — Large empty state for prominent placement\n * @default \"base\"\n */\n size?: KumoEmptySize;\n}\n\nexport function emptyVariants({\n size = KUMO_EMPTY_DEFAULT_VARIANTS.size,\n}: KumoEmptyVariantsProps = {}) {\n return cn(\n \"flex w-full flex-col items-center rounded-xl border border-kumo-fill bg-kumo-control text-kumo-default\",\n KUMO_EMPTY_VARIANTS.size[size].classes,\n );\n}\n\n/**\n * Empty state component props.\n *\n * @example\n * ```tsx\n * <Empty\n * icon={<PackageIcon size={48} />}\n * title=\"No packages found\"\n * description=\"Get started by installing your first package.\"\n * commandLine=\"npm install @cloudflare/kumo\"\n * />\n * ```\n */\nexport interface EmptyProps extends KumoEmptyVariantsProps {\n /** Decorative icon displayed above the title (e.g. from `@phosphor-icons/react`). */\n icon?: React.ReactNode;\n /** Primary heading text for the empty state. */\n title: string;\n /** Secondary description text displayed below the title. */\n description?: string;\n /** Shell command displayed in a copyable code block. */\n commandLine?: string;\n /** Additional content (buttons, links) rendered below the description. */\n contents?: React.ReactNode;\n /** Additional CSS classes merged via `cn()`. */\n className?: string;\n}\n\n/**\n * Placeholder shown when a list, table, or page has no content to display.\n *\n * @example\n * ```tsx\n * <Empty title=\"No results found\" description=\"Try adjusting your search.\" />\n * ```\n */\nexport function Empty({\n icon,\n title,\n description,\n commandLine,\n contents,\n size = \"base\",\n className,\n}: EmptyProps) {\n const [emptyStateCopied, setEmptyStateCopied] = useState<boolean>(false);\n\n return (\n <div className={cn(emptyVariants({ size }), className)}>\n {icon}\n <h2 className=\"text-2xl font-semibold\">{title}</h2>\n\n {description && (\n <p className=\"max-w-140 text-center text-kumo-strong\">{description}</p>\n )}\n\n {commandLine && (\n <div\n className={cn(\n \"group/cmd relative inline-flex h-10 max-w-8/10 transform-gpu items-center gap-2 rounded-lg font-mono shadow-sm\",\n \"bg-kumo-overlay pr-2 pl-3\",\n \"transition-all duration-300 hover:border-kumo-interact/80 hover:shadow-md\",\n \"border border-kumo-fill/60\",\n )}\n >\n <span className=\"text-xs text-kumo-inactive select-none\">$</span>\n <span className=\"no-scrollbar overflow-scroll text-[14px] whitespace-nowrap text-kumo-brand\">\n {commandLine}\n </span>\n <Button\n className=\"group\"\n size=\"sm\"\n variant=\"ghost\"\n shape=\"square\"\n aria-label=\"Copy command\"\n onClick={async () => {\n setEmptyStateCopied(true);\n setTimeout(() => {\n setEmptyStateCopied(false);\n }, 1000);\n await navigator.clipboard.writeText(commandLine);\n }}\n >\n {emptyStateCopied ? (\n <CheckIcon size={16} className=\"animate-bounce-in text-kumo-success\" />\n ) : (\n <CopyIcon\n size={16}\n className=\"text-kumo-inactive group-hover:text-kumo-brand\"\n />\n )}\n </Button>\n </div>\n )}\n\n {contents}\n </div>\n );\n}\n"],"names":["KUMO_EMPTY_VARIANTS","KUMO_EMPTY_DEFAULT_VARIANTS","emptyVariants","size","cn","Empty","icon","title","description","commandLine","contents","className","emptyStateCopied","setEmptyStateCopied","useState","jsxs","jsx","Button","CheckIcon","CopyIcon"],"mappings":";;;;;;AAMO,MAAMA,IAAsB;AAAA,EACjC,MAAM;AAAA,IACJ,IAAI;AAAA,MACF,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,IAAI;AAAA,MACF,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,EACf;AAEJ,GAEaC,IAA8B;AAAA,EACzC,MAAM;AACR;AAeO,SAASC,EAAc;AAAA,EAC5B,MAAAC,IAAOF,EAA4B;AACrC,IAA4B,IAAI;AAC9B,SAAOG;AAAA,IACL;AAAA,IACAJ,EAAoB,KAAKG,CAAI,EAAE;AAAA,EAAA;AAEnC;AAsCO,SAASE,EAAM;AAAA,EACpB,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAP,IAAO;AAAA,EACP,WAAAQ;AACF,GAAe;AACb,QAAM,CAACC,GAAkBC,CAAmB,IAAIC,EAAkB,EAAK;AAEvE,SACE,gBAAAC,EAAC,OAAA,EAAI,WAAWX,EAAGF,EAAc,EAAE,MAAAC,EAAA,CAAM,GAAGQ,CAAS,GAClD,UAAA;AAAA,IAAAL;AAAA,IACD,gBAAAU,EAAC,MAAA,EAAG,WAAU,0BAA0B,UAAAT,GAAM;AAAA,IAE7CC,KACC,gBAAAQ,EAAC,KAAA,EAAE,WAAU,0CAA0C,UAAAR,GAAY;AAAA,IAGpEC,KACC,gBAAAM;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWX;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,QAGF,UAAA;AAAA,UAAA,gBAAAY,EAAC,QAAA,EAAK,WAAU,0CAAyC,UAAA,KAAC;AAAA,UAC1D,gBAAAA,EAAC,QAAA,EAAK,WAAU,8EACb,UAAAP,GACH;AAAA,UACA,gBAAAO;AAAA,YAACC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,MAAK;AAAA,cACL,SAAQ;AAAA,cACR,OAAM;AAAA,cACN,cAAW;AAAA,cACX,SAAS,YAAY;AACnB,gBAAAJ,EAAoB,EAAI,GACxB,WAAW,MAAM;AACf,kBAAAA,EAAoB,EAAK;AAAA,gBAC3B,GAAG,GAAI,GACP,MAAM,UAAU,UAAU,UAAUJ,CAAW;AAAA,cACjD;AAAA,cAEC,cACC,gBAAAO,EAACE,GAAA,EAAU,MAAM,IAAI,WAAU,uCAAsC,IAErE,gBAAAF;AAAA,gBAACG;AAAA,gBAAA;AAAA,kBACC,MAAM;AAAA,kBACN,WAAU;AAAA,gBAAA;AAAA,cAAA;AAAA,YACZ;AAAA,UAAA;AAAA,QAEJ;AAAA,MAAA;AAAA,IAAA;AAAA,IAIHT;AAAA,EAAA,GACH;AAEJ;"}
1
+ {"version":3,"file":"empty-cj898km1r8xwuw44.js","sources":["../../src/components/empty/empty.tsx"],"sourcesContent":["import { CheckIcon, CopyIcon } from \"@phosphor-icons/react\";\nimport { useState } from \"react\";\nimport { Button } from \"../../components/button\";\nimport { cn } from \"../../utils/cn\";\n\n/** Empty state size variant definitions mapping sizes to their Tailwind classes. */\nexport const KUMO_EMPTY_VARIANTS = {\n size: {\n sm: {\n classes: \"px-6 py-8 gap-4\",\n description: \"Compact empty state for smaller containers\",\n },\n base: {\n classes: \"px-10 py-16 gap-6\",\n description: \"Default empty state size\",\n },\n lg: {\n classes: \"px-12 py-20 gap-8\",\n description: \"Large empty state for prominent placement\",\n },\n },\n} as const;\n\nexport const KUMO_EMPTY_DEFAULT_VARIANTS = {\n size: \"base\",\n} as const;\n\nexport type KumoEmptySize = keyof typeof KUMO_EMPTY_VARIANTS.size;\n\nexport interface KumoEmptyVariantsProps {\n /**\n * Size of the empty state container.\n * - `\"sm\"` — Compact empty state for smaller containers\n * - `\"base\"` — Default empty state size\n * - `\"lg\"` — Large empty state for prominent placement\n * @default \"base\"\n */\n size?: KumoEmptySize;\n}\n\nexport function emptyVariants({\n size = KUMO_EMPTY_DEFAULT_VARIANTS.size,\n}: KumoEmptyVariantsProps = {}) {\n return cn(\n \"flex w-full flex-col items-center rounded-xl border border-kumo-fill bg-kumo-control text-kumo-default\",\n KUMO_EMPTY_VARIANTS.size[size].classes,\n );\n}\n\n/**\n * Empty state component props.\n *\n * @example\n * ```tsx\n * <Empty\n * icon={<PackageIcon size={48} />}\n * title=\"No packages found\"\n * description=\"Get started by installing your first package.\"\n * commandLine=\"npm install @cloudflare/kumo\"\n * />\n * ```\n */\nexport interface EmptyProps extends KumoEmptyVariantsProps {\n /** Decorative icon displayed above the title (e.g. from `@phosphor-icons/react`). */\n icon?: React.ReactNode;\n /** Primary heading text for the empty state. */\n title: string;\n /** Secondary description text displayed below the title. */\n description?: string;\n /** Shell command displayed in a copyable code block. */\n commandLine?: string;\n /** Additional content (buttons, links) rendered below the description. */\n contents?: React.ReactNode;\n /** Additional CSS classes merged via `cn()`. */\n className?: string;\n}\n\n/**\n * Placeholder shown when a list, table, or page has no content to display.\n *\n * @example\n * ```tsx\n * <Empty title=\"No results found\" description=\"Try adjusting your search.\" />\n * ```\n */\nexport function Empty({\n icon,\n title,\n description,\n commandLine,\n contents,\n size = \"base\",\n className,\n}: EmptyProps) {\n const [emptyStateCopied, setEmptyStateCopied] = useState<boolean>(false);\n\n return (\n <div className={cn(emptyVariants({ size }), className)}>\n {icon}\n <h2 className=\"text-2xl font-semibold\">{title}</h2>\n\n {description && (\n <p className=\"max-w-140 text-center text-kumo-strong\">{description}</p>\n )}\n\n {commandLine && (\n <div\n className={cn(\n \"group/cmd relative inline-flex h-10 max-w-8/10 transform-gpu items-center gap-2 rounded-lg font-mono shadow-sm\",\n \"bg-kumo-overlay pr-2 pl-3\",\n \"transition-all duration-300 hover:border-kumo-interact/80 hover:shadow-md\",\n \"border border-kumo-fill/60\",\n )}\n >\n <span className=\"text-xs text-kumo-inactive select-none\">$</span>\n <span className=\"no-scrollbar overflow-scroll text-[14px] whitespace-nowrap text-kumo-brand\">\n {commandLine}\n </span>\n <Button\n className=\"group\"\n size=\"sm\"\n variant=\"ghost\"\n shape=\"square\"\n aria-label=\"Copy command\"\n onClick={async () => {\n setEmptyStateCopied(true);\n setTimeout(() => {\n setEmptyStateCopied(false);\n }, 1000);\n await navigator.clipboard.writeText(commandLine);\n }}\n >\n {emptyStateCopied ? (\n <CheckIcon size={16} className=\"animate-bounce-in text-kumo-success\" />\n ) : (\n <CopyIcon\n size={16}\n className=\"text-kumo-inactive group-hover:text-kumo-brand\"\n />\n )}\n </Button>\n </div>\n )}\n\n {contents}\n </div>\n );\n}\n"],"names":["KUMO_EMPTY_VARIANTS","KUMO_EMPTY_DEFAULT_VARIANTS","emptyVariants","size","cn","Empty","icon","title","description","commandLine","contents","className","emptyStateCopied","setEmptyStateCopied","useState","jsxs","jsx","Button","CheckIcon","CopyIcon"],"mappings":";;;;;;AAMO,MAAMA,IAAsB;AAAA,EACjC,MAAM;AAAA,IACJ,IAAI;AAAA,MACF,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,IAAI;AAAA,MACF,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,EACf;AAEJ,GAEaC,IAA8B;AAAA,EACzC,MAAM;AACR;AAeO,SAASC,EAAc;AAAA,EAC5B,MAAAC,IAAOF,EAA4B;AACrC,IAA4B,IAAI;AAC9B,SAAOG;AAAA,IACL;AAAA,IACAJ,EAAoB,KAAKG,CAAI,EAAE;AAAA,EAAA;AAEnC;AAsCO,SAASE,EAAM;AAAA,EACpB,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAP,IAAO;AAAA,EACP,WAAAQ;AACF,GAAe;AACb,QAAM,CAACC,GAAkBC,CAAmB,IAAIC,EAAkB,EAAK;AAEvE,SACE,gBAAAC,EAAC,OAAA,EAAI,WAAWX,EAAGF,EAAc,EAAE,MAAAC,EAAA,CAAM,GAAGQ,CAAS,GAClD,UAAA;AAAA,IAAAL;AAAA,IACD,gBAAAU,EAAC,MAAA,EAAG,WAAU,0BAA0B,UAAAT,GAAM;AAAA,IAE7CC,KACC,gBAAAQ,EAAC,KAAA,EAAE,WAAU,0CAA0C,UAAAR,GAAY;AAAA,IAGpEC,KACC,gBAAAM;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWX;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,QAGF,UAAA;AAAA,UAAA,gBAAAY,EAAC,QAAA,EAAK,WAAU,0CAAyC,UAAA,KAAC;AAAA,UAC1D,gBAAAA,EAAC,QAAA,EAAK,WAAU,8EACb,UAAAP,GACH;AAAA,UACA,gBAAAO;AAAA,YAACC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,MAAK;AAAA,cACL,SAAQ;AAAA,cACR,OAAM;AAAA,cACN,cAAW;AAAA,cACX,SAAS,YAAY;AACnB,gBAAAJ,EAAoB,EAAI,GACxB,WAAW,MAAM;AACf,kBAAAA,EAAoB,EAAK;AAAA,gBAC3B,GAAG,GAAI,GACP,MAAM,UAAU,UAAU,UAAUJ,CAAW;AAAA,cACjD;AAAA,cAEC,cACC,gBAAAO,EAACE,GAAA,EAAU,MAAM,IAAI,WAAU,uCAAsC,IAErE,gBAAAF;AAAA,gBAACG;AAAA,gBAAA;AAAA,kBACC,MAAM;AAAA,kBACN,WAAU;AAAA,gBAAA;AAAA,cAAA;AAAA,YACZ;AAAA,UAAA;AAAA,QAEJ;AAAA,MAAA;AAAA,IAAA;AAAA,IAIHT;AAAA,EAAA,GACH;AAEJ;"}
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import { jsxs as h, jsx as e } from "react/jsx-runtime";
3
3
  import { c as a } from "./cn-ct4n7r74mh8y0f48.js";
4
- import { L as m } from "./label-i46xnnzdh9bsxk6a.js";
5
- import { N as f, O as p, aN as u, aO as x } from "./vendor-base-ui-ccr5l0ynrievzzv3.js";
4
+ import { L as m } from "./label-latndvb1ngem7we8.js";
5
+ import { N as f, O as p, aN as u, aO as x } from "./vendor-base-ui-k7bzesq81ie36nya.js";
6
6
  const F = {
7
7
  // Field currently has no variant options but structure is ready for future additions
8
8
  }, N = {};
@@ -68,4 +68,4 @@ export {
68
68
  N as a,
69
69
  d as f
70
70
  };
71
- //# sourceMappingURL=field-csje72m7j9403fj5.js.map
71
+ //# sourceMappingURL=field-krp6z6vfbkrvufz2.js.map