@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 +0,0 @@
1
- {"version":3,"file":"switch-fukrbip86khvqjn7.js","sources":["../../src/components/switch/switch.tsx"],"sourcesContent":["import { Switch as BaseSwitch } from \"@base-ui/react/switch\";\nimport {\n forwardRef,\n type ButtonHTMLAttributes,\n type Ref,\n type ReactNode,\n createContext,\n useContext,\n} from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { Field } from \"../field/field\";\nimport { Fieldset } from \"@base-ui/react/fieldset\";\n\n/** Switch size and variant definitions mapping names to their Tailwind classes. */\nexport const KUMO_SWITCH_VARIANTS = {\n size: {\n sm: {\n classes: \"h-5.5 w-8.5\",\n description: \"Small switch for compact UIs\",\n },\n base: {\n classes: \"h-6.5 w-10.5\",\n description: \"Default switch size\",\n },\n lg: {\n classes: \"h-7.5 w-12.5\",\n description: \"Large switch for prominent toggles\",\n },\n },\n variant: {\n default: {\n classes: \"\",\n description: \"Default switch with squircle shape and brand blue color\",\n },\n neutral: {\n classes: \"\",\n description: \"Monochrome switch with squircle shape for subtle toggles\",\n },\n },\n} as const;\n\nexport const KUMO_SWITCH_DEFAULT_VARIANTS = {\n size: \"base\",\n variant: \"default\",\n} as const;\n\n// Derived types from KUMO_SWITCH_VARIANTS\nexport type KumoSwitchSize = keyof typeof KUMO_SWITCH_VARIANTS.size;\nexport type KumoSwitchVariant = keyof typeof KUMO_SWITCH_VARIANTS.variant;\n\nexport interface KumoSwitchVariantsProps {\n /**\n * Switch size.\n * - `\"sm\"` — Small for compact UIs\n * - `\"base\"` — Default size\n * - `\"lg\"` — Large for prominent toggles\n * @default \"base\"\n */\n size?: KumoSwitchSize;\n /**\n * Visual variant.\n * - `\"default\"` — Standard switch appearance\n * - `\"error\"` — Error state for validation failures\n * @default \"default\"\n */\n variant?: KumoSwitchVariant;\n}\n\nexport function switchVariants({\n size = KUMO_SWITCH_DEFAULT_VARIANTS.size,\n variant = KUMO_SWITCH_DEFAULT_VARIANTS.variant,\n}: KumoSwitchVariantsProps = {}) {\n // Fallback to defaults if invalid size/variant passed\n const sizeConfig =\n KUMO_SWITCH_VARIANTS.size[size] ?? KUMO_SWITCH_VARIANTS.size.base;\n const variantConfig =\n KUMO_SWITCH_VARIANTS.variant[variant] ??\n KUMO_SWITCH_VARIANTS.variant.default;\n return cn(sizeConfig.classes, variantConfig.classes);\n}\n\n// Legacy type aliases for backwards compatibility\nexport type SwitchSize = KumoSwitchSize;\nexport type SwitchVariant = KumoSwitchVariant;\n\n// Context for passing controlFirst from Group to Items\nconst SwitchGroupContext = createContext<{ controlFirst: boolean }>({\n controlFirst: true,\n});\n\n/**\n * Single switch component props (with built-in Field)\n *\n * Usage patterns:\n *\n * Basic usage:\n * ```tsx\n * <Switch label=\"Enable notifications\" checked={true} onCheckedChange={setChecked} />\n * ```\n *\n * Label first layout:\n * ```tsx\n * <Switch label=\"Dark mode\" checked={false} onCheckedChange={setChecked} controlFirst={false} />\n * ```\n *\n * Neutral variant (monochrome, squircle shape):\n * ```tsx\n * <Switch label=\"Setting\" variant=\"neutral\" checked={false} onCheckedChange={setChecked} />\n * ```\n *\n * @property {string} label - Label text for the switch (Field wrapper is built-in)\n * @property {boolean} [controlFirst] - When true (default), switch appears before label\n */\nexport type SwitchProps = Omit<\n ButtonHTMLAttributes<HTMLButtonElement>,\n \"children\"\n> & {\n /** Visual variant: \"default\" (pill, brand color) or \"neutral\" (squircle, monochrome) */\n variant?: SwitchVariant;\n /** Label content for the switch (Field wrapper is built-in) - can be a string or any React node. Optional when used standalone for visual-only purposes. */\n label?: ReactNode;\n /** Tooltip content to display next to the label via an info icon */\n labelTooltip?: ReactNode;\n /**\n * Whether the switch is required.\n * When explicitly false, shows \"(optional)\" text after the label.\n */\n required?: boolean;\n /** When true (default), switch appears before label. When false, label appears before switch. */\n controlFirst?: boolean;\n size?: KumoSwitchSize;\n checked?: boolean;\n disabled?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n transitioning?: boolean;\n};\n\n/**\n * Switch group component props (with built-in Fieldset)\n *\n * Usage:\n * ```tsx\n * <Switch.Group\n * legend=\"Notification settings\"\n * error=\"You must enable at least one notification type\"\n * >\n * <Switch.Item label=\"Email notifications\" value=\"email\" />\n * <Switch.Item label=\"SMS notifications\" value=\"sms\" />\n * </Switch.Group>\n * ```\n */\nexport interface SwitchGroupProps {\n /** Legend text for the group */\n legend: string;\n /** Child Switch.Item components */\n children: ReactNode;\n /** Error message for the group (only appears in groups, not single switches) */\n error?: string;\n /** Helper text for the group */\n description?: ReactNode;\n /** Whether all switches in the group are disabled */\n disabled?: boolean;\n /** When true (default), switch appears before label. When false, label appears before switch. */\n controlFirst?: boolean;\n /** Additional CSS classes */\n className?: string;\n}\n\n/**\n * Individual switch item within a group\n */\nexport type SwitchItemProps = {\n /** Visual variant: \"default\" or \"error\" for validation failures */\n variant?: SwitchVariant;\n /** Label text displayed next to switch */\n label: string;\n /** Additional CSS classes for the label wrapper */\n className?: string;\n checked?: boolean;\n disabled?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n size?: KumoSwitchSize;\n transitioning?: boolean;\n};\n\n// Single switch with built-in Field\nconst SwitchBase = forwardRef<HTMLButtonElement, SwitchProps>(\n (\n {\n className,\n checked,\n disabled,\n size = \"base\",\n variant = \"default\",\n label,\n labelTooltip,\n required,\n controlFirst = true,\n onCheckedChange,\n transitioning,\n ...props\n },\n ref,\n ) => {\n // For aria-label, only use string labels (ReactNode labels can't be used for aria-label)\n const ariaLabelFallback = typeof label === \"string\" ? label : \"Switch\";\n const switchControl = (\n <BaseSwitch.Root\n ref={ref}\n checked={checked}\n disabled={disabled}\n onCheckedChange={onCheckedChange}\n nativeButton\n render={(rootProps, state) => {\n const {\n ref: rootRef,\n className: baseClassName,\n role: baseRole,\n \"aria-checked\": _ariaChecked,\n \"aria-pressed\": _ariaPressed,\n ...restRootProps\n } = rootProps as typeof rootProps & {\n ref?: Ref<HTMLButtonElement>;\n className?: string;\n role?: string;\n \"aria-checked\"?: boolean;\n \"aria-pressed\"?: boolean;\n };\n\n const isNeutral = variant === \"neutral\";\n\n // Squircle-aware border-radius (used by both variants)\n const squircleRadius =\n \"rounded-[5px] supports-[corner-shape:squircle]:rounded-[10px] [corner-shape:squircle]\";\n\n // Size styles matching Kyle's stratus implementation\n const sizeStyles = {\n sm: { track: \"h-4 w-8\", thumb: \"w-4\", slide: \"left-4\" },\n base: { track: \"h-4.5 w-9\", thumb: \"w-4.5\", slide: \"left-4.5\" },\n lg: { track: \"h-5 w-10\", thumb: \"w-5\", slide: \"left-5\" },\n };\n const s = sizeStyles[size];\n\n // Track colors based on variant\n const trackColors = isNeutral\n ? state.checked\n ? \"bg-neutral-500 dark:bg-kumo-base ring-neutral-600 dark:ring-neutral-700\"\n : \"bg-neutral-150 dark:bg-kumo-base ring-kumo-line\"\n : state.checked\n ? \"bg-blue-500 dark:bg-blue-600 ring-blue-600 dark:ring-blue-500\"\n : \"bg-neutral-200 dark:bg-neutral-700 ring-neutral-300 dark:ring-neutral-600\";\n\n // Thumb colors based on variant\n const thumbColors = isNeutral\n ? state.checked\n ? \"ring-neutral-600 dark:ring-neutral-200 bg-kumo-base dark:bg-neutral-400\"\n : \"bg-kumo-base dark:bg-neutral-850 ring-neutral-300 dark:ring-neutral-700\"\n : state.checked\n ? \"ring-blue-600 dark:ring-blue-100 bg-kumo-base dark:bg-blue-300\"\n : \"bg-kumo-base dark:bg-neutral-850 ring-neutral-300 dark:ring-neutral-700\";\n\n const trackClassName = cn(\n \"relative inline-flex items-center ring cursor-pointer border-none p-0\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500\",\n \"transition-colors duration-150 ease-out motion-reduce:transition-none\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n s.track,\n squircleRadius,\n trackColors,\n className,\n baseClassName,\n );\n\n const thumbClassName = cn(\n \"absolute top-0 bottom-0 shadow-sm ring-1\",\n s.thumb,\n squircleRadius,\n thumbColors,\n \"transition-all duration-150 ease-out motion-reduce:transition-none\",\n state.checked ? s.slide : \"left-0\",\n );\n\n const role =\n (props.role as string | undefined) ?? baseRole ?? \"switch\";\n const checkedA11yProps =\n role === \"switch\"\n ? { \"aria-checked\": state.checked }\n : { \"aria-pressed\": state.checked };\n\n return (\n <button\n {...restRootProps}\n {...props}\n ref={rootRef}\n type=\"button\"\n role={role}\n {...checkedA11yProps}\n aria-busy={transitioning || undefined}\n aria-label={props[\"aria-label\"] ?? ariaLabelFallback}\n className={trackClassName}\n >\n <div className={thumbClassName} />\n </button>\n );\n }}\n />\n );\n\n // Wrap in Field (built-in) - no description for single switches\n // If no label provided, return bare switch (for use in other components)\n if (!label) {\n return switchControl;\n }\n\n return (\n <Field\n label={label}\n required={required}\n labelTooltip={labelTooltip}\n controlFirst={controlFirst}\n >\n {switchControl}\n </Field>\n );\n },\n);\n\nSwitchBase.displayName = \"Switch\";\n\n// Switch.Item for use within Switch.Group\nconst SwitchItem = forwardRef<HTMLButtonElement, SwitchItemProps>(\n (\n {\n className,\n checked,\n disabled,\n size = \"base\",\n variant = \"default\",\n label,\n onCheckedChange,\n transitioning,\n },\n ref,\n ) => {\n const { controlFirst } = useContext(SwitchGroupContext);\n\n return (\n <label\n className={cn(\n \"m-0 relative inline-flex items-center gap-2\",\n // Control first (default): switch before label\n // Label first: label before switch using flex-row-reverse\n !controlFirst && \"flex-row-reverse justify-end\",\n disabled ? \"cursor-not-allowed opacity-50\" : \"cursor-pointer\",\n className,\n )}\n >\n <BaseSwitch.Root\n ref={ref}\n checked={checked}\n disabled={disabled}\n onCheckedChange={onCheckedChange}\n nativeButton\n render={(rootProps, state) => {\n const {\n ref: rootRef,\n className: baseClassName,\n role: baseRole,\n \"aria-checked\": _ariaChecked,\n \"aria-pressed\": _ariaPressed,\n ...restRootProps\n } = rootProps as typeof rootProps & {\n ref?: Ref<HTMLButtonElement>;\n className?: string;\n role?: string;\n \"aria-checked\"?: boolean;\n \"aria-pressed\"?: boolean;\n };\n\n const isNeutral = variant === \"neutral\";\n\n // Squircle-aware border-radius (used by both variants)\n const squircleRadius =\n \"rounded-[5px] supports-[corner-shape:squircle]:rounded-[10px] [corner-shape:squircle]\";\n\n // Size styles matching Kyle's stratus implementation\n const sizeStyles = {\n sm: { track: \"h-4 w-8\", thumb: \"w-4\", slide: \"left-4\" },\n base: { track: \"h-4.5 w-9\", thumb: \"w-4.5\", slide: \"left-4.5\" },\n lg: { track: \"h-5 w-10\", thumb: \"w-5\", slide: \"left-5\" },\n };\n const s = sizeStyles[size];\n\n // Track colors based on variant\n const trackColors = isNeutral\n ? state.checked\n ? \"bg-neutral-500 dark:bg-kumo-base ring-neutral-600 dark:ring-neutral-700\"\n : \"bg-neutral-150 dark:bg-kumo-base ring-kumo-line\"\n : state.checked\n ? \"bg-blue-500 dark:bg-blue-600 ring-blue-600 dark:ring-blue-500\"\n : \"bg-neutral-200 dark:bg-neutral-700 ring-neutral-300 dark:ring-neutral-600\";\n\n // Thumb colors based on variant\n const thumbColors = isNeutral\n ? state.checked\n ? \"ring-neutral-600 dark:ring-neutral-200 bg-kumo-base dark:bg-neutral-400\"\n : \"bg-kumo-base dark:bg-neutral-850 ring-neutral-300 dark:ring-neutral-700\"\n : state.checked\n ? \"ring-blue-600 dark:ring-blue-100 bg-kumo-base dark:bg-blue-300\"\n : \"bg-kumo-base dark:bg-neutral-850 ring-neutral-300 dark:ring-neutral-700\";\n\n const trackClassName = cn(\n \"relative inline-flex items-center ring cursor-pointer border-none p-0\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500\",\n \"transition-colors duration-150 ease-out motion-reduce:transition-none\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n s.track,\n squircleRadius,\n trackColors,\n baseClassName,\n );\n\n const thumbClassName = cn(\n \"absolute top-0 bottom-0 shadow-sm ring-1\",\n s.thumb,\n squircleRadius,\n thumbColors,\n \"transition-all duration-150 ease-out motion-reduce:transition-none\",\n state.checked ? s.slide : \"left-0\",\n );\n\n const role = baseRole ?? \"switch\";\n const checkedA11yProps =\n role === \"switch\"\n ? { \"aria-checked\": state.checked }\n : { \"aria-pressed\": state.checked };\n\n return (\n <button\n {...restRootProps}\n ref={rootRef}\n type=\"button\"\n role={role}\n {...checkedA11yProps}\n aria-busy={transitioning || undefined}\n className={trackClassName}\n >\n <div className={thumbClassName} />\n </button>\n );\n }}\n />\n <span className=\"text-base font-medium text-kumo-default\">{label}</span>\n </label>\n );\n },\n);\n\nSwitchItem.displayName = \"Switch.Item\";\n\n// Switch.Group with built-in Fieldset\nfunction SwitchGroup({\n legend,\n children,\n error,\n description,\n disabled,\n controlFirst = true,\n className,\n}: SwitchGroupProps) {\n return (\n <SwitchGroupContext.Provider value={{ controlFirst }}>\n <Fieldset.Root\n className={cn(\n \"flex flex-col gap-4 rounded-lg border border-kumo-line p-4\",\n className,\n )}\n disabled={disabled}\n >\n <Fieldset.Legend className=\"text-lg font-medium text-kumo-default\">\n {legend}\n </Fieldset.Legend>\n <div className=\"flex flex-col gap-2\">{children}</div>\n {error && <p className=\"text-sm text-kumo-danger\">{error}</p>}\n {description && (\n <p className=\"text-sm text-kumo-subtle\">{description}</p>\n )}\n </Fieldset.Root>\n </SwitchGroupContext.Provider>\n );\n}\n\n// Compound component\nexport const Switch = Object.assign(SwitchBase, {\n Item: SwitchItem,\n Group: SwitchGroup,\n});\n\nSwitch.displayName = \"Switch\";\n"],"names":["KUMO_SWITCH_VARIANTS","KUMO_SWITCH_DEFAULT_VARIANTS","SwitchGroupContext","createContext","SwitchBase","forwardRef","className","checked","disabled","size","variant","label","labelTooltip","required","controlFirst","onCheckedChange","transitioning","props","ref","ariaLabelFallback","switchControl","jsx","BaseSwitch.Root","rootProps","state","rootRef","baseClassName","baseRole","_ariaChecked","_ariaPressed","restRootProps","isNeutral","squircleRadius","s","trackColors","thumbColors","trackClassName","cn","thumbClassName","role","checkedA11yProps","Field","SwitchItem","useContext","jsxs","SwitchGroup","legend","children","error","description","Fieldset.Root","Fieldset.Legend","Switch"],"mappings":"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"}
@@ -1,155 +0,0 @@
1
- "use client";
2
- import { jsx as t } from "react/jsx-runtime";
3
- import { forwardRef as s } from "react";
4
- import { c as r } from "./cn-ct4n7r74mh8y0f48.js";
5
- import { C as m } from "./checkbox-lawmt1894wr6rpgi.js";
6
- const h = {
7
- layout: {
8
- auto: {
9
- classes: "",
10
- description: "Auto table layout - columns resize based on content"
11
- },
12
- fixed: {
13
- classes: "table-fixed",
14
- description: "Fixed table layout - columns have equal width, controlled via colgroup"
15
- }
16
- },
17
- variant: {
18
- default: {
19
- classes: "",
20
- description: "Default row variant"
21
- },
22
- selected: {
23
- classes: "bg-kumo-tint",
24
- description: "Selected row variant"
25
- }
26
- }
27
- }, g = {
28
- layout: "auto",
29
- variant: "default"
30
- }, f = s(({ layout: a = "auto", ...e }, l) => {
31
- const o = r(
32
- "w-full",
33
- h.layout[a].classes,
34
- "[&_td]:border-b [&_td]:border-kumo-fill [&_tr:last-child_td]:border-b-0",
35
- // Row border
36
- "[&_td]:p-3",
37
- // Cell padding
38
- "[&_th]:border-b [&_th]:border-kumo-fill [&_th]:p-3 [&_th]:font-semibold [&_th]:text-base",
39
- // Header styles
40
- "[&_th]:bg-kumo-base",
41
- // Header background color
42
- "text-left text-kumo-default",
43
- e.className
44
- );
45
- return /* @__PURE__ */ t("table", { ref: l, ...e, className: o });
46
- }), N = s(({ variant: a = "default", ...e }, l) => {
47
- const o = r(
48
- a === "compact" && "[&_th]:bg-kumo-elevated [&_th]:py-2 text-xs text-kumo-strong",
49
- e.className
50
- );
51
- return /* @__PURE__ */ t("thead", { ref: l, ...e, className: o });
52
- }), b = s((a, e) => {
53
- const l = r("group relative", a.className);
54
- return /* @__PURE__ */ t("th", { ref: e, ...a, className: l });
55
- }), T = s(({ variant: a = g.variant, ...e }, l) => {
56
- const o = r(
57
- h.variant[a].classes,
58
- e.className
59
- );
60
- return /* @__PURE__ */ t("tr", { ref: l, ...e, className: o });
61
- }), y = s((a, e) => /* @__PURE__ */ t("tbody", { ref: e, ...a })), u = s((a, e) => /* @__PURE__ */ t("td", { ref: e, ...a })), p = s((a, e) => /* @__PURE__ */ t("tfoot", { ref: e, ...a })), k = s((a, e) => /* @__PURE__ */ t(
62
- "button",
63
- {
64
- ref: e,
65
- ...a,
66
- type: "button",
67
- "aria-label": "Resize column",
68
- className: r(
69
- "invisible h-full group-hover:visible",
70
- // Make the handle invisible by default
71
- "w-[10px]",
72
- // Hitting area
73
- "flex items-center justify-center",
74
- // Center the handle
75
- "cursor-col-resize touch-none select-none",
76
- // Prevent selection and touch events
77
- "absolute top-0 right-0",
78
- // Position the handle
79
- "m-0 bg-kumo-base p-0"
80
- // Override the stratus button styles
81
- ),
82
- children: /* @__PURE__ */ t("span", { className: "h-5 w-[2px] rounded bg-kumo-ring" })
83
- }
84
- )), C = s(
85
- ({ checked: a, indeterminate: e, onValueChange: l, label: o, disabled: c, ...n }, i) => /* @__PURE__ */ t(
86
- u,
87
- {
88
- ref: i,
89
- ...n,
90
- className: r("w-10 leading-none", n.className),
91
- children: /* @__PURE__ */ t(
92
- m,
93
- {
94
- checked: a,
95
- indeterminate: e,
96
- onCheckedChange: (d) => {
97
- l?.(d);
98
- },
99
- "aria-label": o ?? "Select row",
100
- disabled: c,
101
- className: "relative before:absolute before:-inset-3 before:content-['']"
102
- }
103
- )
104
- }
105
- )
106
- ), _ = s(
107
- ({ checked: a, indeterminate: e, onValueChange: l, label: o, disabled: c, ...n }, i) => /* @__PURE__ */ t(
108
- b,
109
- {
110
- ref: i,
111
- ...n,
112
- className: r("w-10 leading-none", n.className),
113
- children: /* @__PURE__ */ t(
114
- m,
115
- {
116
- checked: a,
117
- indeterminate: e,
118
- onCheckedChange: (d) => {
119
- l?.(d);
120
- },
121
- "aria-label": o ?? "Select all rows",
122
- disabled: c,
123
- className: "relative before:absolute before:-inset-3 before:content-['']"
124
- }
125
- )
126
- }
127
- )
128
- );
129
- f.displayName = "Table";
130
- y.displayName = "Table.Body";
131
- b.displayName = "Table.Head";
132
- T.displayName = "Table.Row";
133
- u.displayName = "Table.Cell";
134
- p.displayName = "Table.Footer";
135
- N.displayName = "Table.Header";
136
- k.displayName = "Table.ResizeHandle";
137
- C.displayName = "Table.CheckCell";
138
- _.displayName = "Table.CheckHead";
139
- const R = Object.assign(f, {
140
- Header: N,
141
- Head: b,
142
- Row: T,
143
- Body: y,
144
- Cell: u,
145
- CheckCell: C,
146
- CheckHead: _,
147
- Footer: p,
148
- ResizeHandle: k
149
- });
150
- export {
151
- g as K,
152
- R as T,
153
- h as a
154
- };
155
- //# sourceMappingURL=table-orfgzwvxh8yr90dk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"table-orfgzwvxh8yr90dk.js","sources":["../../src/components/table/table.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { cn } from \"../../utils\";\nimport { Checkbox } from \"../checkbox\";\n\n/** Table layout and row variant definitions mapping names to their Tailwind classes. */\nexport const KUMO_TABLE_VARIANTS = {\n layout: {\n auto: {\n classes: \"\",\n description: \"Auto table layout - columns resize based on content\",\n },\n fixed: {\n classes: \"table-fixed\",\n description:\n \"Fixed table layout - columns have equal width, controlled via colgroup\",\n },\n },\n variant: {\n default: {\n classes: \"\",\n description: \"Default row variant\",\n },\n selected: {\n classes: \"bg-kumo-tint\",\n description: \"Selected row variant\",\n },\n },\n} as const;\n\nexport const KUMO_TABLE_DEFAULT_VARIANTS = {\n layout: \"auto\",\n variant: \"default\",\n} as const;\n\nexport type KumoTableRowVariant = keyof typeof KUMO_TABLE_VARIANTS.variant;\nexport type KumoTableLayout = keyof typeof KUMO_TABLE_VARIANTS.layout;\n\n/**\n * Table root — applies layout, borders, padding, and header styles.\n *\n * @example\n * ```tsx\n * <Table layout=\"fixed\">\n * <Table.Header>\n * <Table.Row>\n * <Table.Head>Name</Table.Head>\n * <Table.Head>Status</Table.Head>\n * </Table.Row>\n * </Table.Header>\n * <Table.Body>\n * <Table.Row>\n * <Table.Cell>Worker A</Table.Cell>\n * <Table.Cell>Active</Table.Cell>\n * </Table.Row>\n * </Table.Body>\n * </Table>\n * ```\n */\nconst TableRoot = forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement> & {\n /**\n * Table layout algorithm.\n * - `\"auto\"` — columns resize based on content\n * - `\"fixed\"` — equal-width columns, controlled via `<colgroup>`\n * @default \"auto\"\n */\n layout?: KumoTableLayout;\n }\n>(({ layout = \"auto\", ...props }, ref) => {\n const className = cn(\n \"w-full\",\n KUMO_TABLE_VARIANTS.layout[layout].classes,\n \"[&_td]:border-b [&_td]:border-kumo-fill [&_tr:last-child_td]:border-b-0\", // Row border\n \"[&_td]:p-3\", // Cell padding\n \"[&_th]:border-b [&_th]:border-kumo-fill [&_th]:p-3 [&_th]:font-semibold [&_th]:text-base\", // Header styles\n \"[&_th]:bg-kumo-base\", // Header background color\n \"text-left text-kumo-default\",\n props.className,\n );\n\n return <table ref={ref} {...props} className={className} />;\n});\n\nconst TableHeader = forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement> & {\n variant?: \"default\" | \"compact\";\n }\n>(({ variant = \"default\", ...props }, ref) => {\n const className = cn(\n variant === \"compact\" &&\n \"[&_th]:bg-kumo-elevated [&_th]:py-2 text-xs text-kumo-strong\",\n props.className,\n );\n\n return <thead ref={ref} {...props} className={className} />;\n});\n\nconst TableHead = forwardRef<\n HTMLTableCellElement,\n React.HTMLAttributes<HTMLTableCellElement>\n>((props, ref) => {\n const className = cn(\"group relative\", props.className);\n return <th ref={ref} {...props} className={className} />;\n});\n\nconst TableRow = forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement> & {\n variant?: KumoTableRowVariant;\n }\n>(({ variant = KUMO_TABLE_DEFAULT_VARIANTS.variant, ...props }, ref) => {\n const className = cn(\n KUMO_TABLE_VARIANTS.variant[variant].classes,\n props.className,\n );\n\n return <tr ref={ref} {...props} className={className} />;\n});\n\nconst TableBody = forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>((props, ref) => {\n return <tbody ref={ref} {...props} />;\n});\n\nconst TableCell = forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>((props, ref) => {\n return <td ref={ref} {...props} />;\n});\n\nconst TableFooter = forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>((props, ref) => {\n return <tfoot ref={ref} {...props} />;\n});\n\nconst TableResizeHandle = forwardRef<\n HTMLButtonElement,\n React.HTMLAttributes<HTMLButtonElement>\n>((props, ref) => {\n return (\n <button\n ref={ref}\n {...props}\n type=\"button\"\n aria-label=\"Resize column\"\n className={cn(\n \"invisible h-full group-hover:visible\", // Make the handle invisible by default\n \"w-[10px]\", // Hitting area\n \"flex items-center justify-center\", // Center the handle\n \"cursor-col-resize touch-none select-none\", // Prevent selection and touch events\n \"absolute top-0 right-0\", // Position the handle\n \"m-0 bg-kumo-base p-0\", // Override the stratus button styles\n )}\n >\n <span className=\"h-5 w-[2px] rounded bg-kumo-ring\" />\n </button>\n );\n});\n\n/**\n * Special cell that makes the entire cell area a hit target for the checkbox.\n */\n\nconst TableCheckCell = forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement> & {\n checked?: boolean;\n indeterminate?: boolean;\n onValueChange?: (checked: boolean) => void;\n label?: string;\n disabled?: boolean;\n }\n>(\n (\n { checked, indeterminate, onValueChange, label, disabled, ...props },\n ref,\n ) => {\n return (\n <TableCell\n ref={ref}\n {...props}\n className={cn(\"w-10 leading-none\", props.className)}\n >\n <Checkbox\n checked={checked}\n indeterminate={indeterminate}\n onCheckedChange={(newChecked) => {\n onValueChange?.(newChecked);\n }}\n aria-label={label ?? \"Select row\"}\n disabled={disabled}\n className=\"relative before:absolute before:-inset-3 before:content-['']\"\n />\n </TableCell>\n );\n },\n);\n\nconst TableCheckHead = forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement> & {\n checked?: boolean;\n indeterminate?: boolean;\n onValueChange?: (checked: boolean) => void;\n label?: string;\n disabled?: boolean;\n }\n>(\n (\n { checked, indeterminate, onValueChange, label, disabled, ...props },\n ref,\n ) => {\n return (\n <TableHead\n ref={ref}\n {...props}\n className={cn(\"w-10 leading-none\", props.className)}\n >\n <Checkbox\n checked={checked}\n indeterminate={indeterminate}\n onCheckedChange={(newChecked) => {\n onValueChange?.(newChecked);\n }}\n aria-label={label ?? \"Select all rows\"}\n disabled={disabled}\n className=\"relative before:absolute before:-inset-3 before:content-['']\"\n />\n </TableHead>\n );\n },\n);\n\nTableRoot.displayName = \"Table\";\nTableBody.displayName = \"Table.Body\";\nTableHead.displayName = \"Table.Head\";\nTableRow.displayName = \"Table.Row\";\nTableCell.displayName = \"Table.Cell\";\nTableFooter.displayName = \"Table.Footer\";\nTableHeader.displayName = \"Table.Header\";\nTableResizeHandle.displayName = \"Table.ResizeHandle\";\nTableCheckCell.displayName = \"Table.CheckCell\";\nTableCheckHead.displayName = \"Table.CheckHead\";\n\n/**\n * Table — semantic HTML table with styled rows, cells, and selection support.\n *\n * Compound component: `Table` (Root), `.Header`, `.Head`, `.Body`, `.Row`,\n * `.Cell`, `.Footer`, `.CheckCell`, `.CheckHead`, `.ResizeHandle`.\n *\n * @example\n * ```tsx\n * <Table>\n * <Table.Header>\n * <Table.Row>\n * <Table.CheckHead checked={allSelected} onValueChange={toggleAll} />\n * <Table.Head>Name</Table.Head>\n * </Table.Row>\n * </Table.Header>\n * <Table.Body>\n * {rows.map((row) => (\n * <Table.Row key={row.id} variant={selected.has(row.id) ? \"selected\" : \"default\"}>\n * <Table.CheckCell checked={selected.has(row.id)} onValueChange={() => toggle(row.id)} />\n * <Table.Cell>{row.name}</Table.Cell>\n * </Table.Row>\n * ))}\n * </Table.Body>\n * </Table>\n * ```\n */\nexport const Table = Object.assign(TableRoot, {\n Header: TableHeader,\n Head: TableHead,\n Row: TableRow,\n Body: TableBody,\n Cell: TableCell,\n CheckCell: TableCheckCell,\n CheckHead: TableCheckHead,\n Footer: TableFooter,\n ResizeHandle: TableResizeHandle,\n});\n"],"names":["KUMO_TABLE_VARIANTS","KUMO_TABLE_DEFAULT_VARIANTS","TableRoot","forwardRef","layout","props","ref","className","cn","jsx","TableHeader","variant","TableHead","TableRow","TableBody","TableCell","TableFooter","TableResizeHandle","TableCheckCell","checked","indeterminate","onValueChange","label","disabled","Checkbox","newChecked","TableCheckHead","Table"],"mappings":"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"}
@@ -1,86 +0,0 @@
1
- "use client";
2
- import { jsxs as u, jsx as r } from "react/jsx-runtime";
3
- import { c as a } from "./cn-ct4n7r74mh8y0f48.js";
4
- import { b4 as k, b5 as T, b6 as w, b7 as N } from "./vendor-base-ui-ccr5l0ynrievzzv3.js";
5
- const V = {
6
- variant: "segmented"
7
- };
8
- function z({
9
- tabs: d,
10
- value: n,
11
- selectedValue: c,
12
- onValueChange: m,
13
- activateOnFocus: b,
14
- className: g,
15
- listClassName: f,
16
- indicatorClassName: v,
17
- variant: i = V.variant
18
- }) {
19
- const s = d ?? [];
20
- if (s.length === 0)
21
- return null;
22
- const h = s[0]?.value, l = n !== void 0, p = {
23
- value: l ? n : void 0,
24
- defaultValue: l ? void 0 : c ?? h
25
- }, t = i === "segmented", o = i === "underline";
26
- return /* @__PURE__ */ u(
27
- k,
28
- {
29
- ...p,
30
- className: a("relative isolate min-w-0 font-medium", g),
31
- onValueChange: (e) => {
32
- const x = String(e);
33
- m?.(x);
34
- },
35
- children: [
36
- t && /* @__PURE__ */ r("div", { className: "absolute inset-x-0 top-1/2 z-0 h-8.5 -translate-y-1/2 rounded-lg bg-kumo-surface" }),
37
- /* @__PURE__ */ u(
38
- T,
39
- {
40
- activateOnFocus: b,
41
- className: a(
42
- "scrollbar-hide relative flex min-w-0 shrink items-stretch",
43
- t && "h-8.5 rounded-lg bg-kumo-recessed px-px",
44
- o && "h-7 gap-4 border-b border-kumo-ring pb-2",
45
- f
46
- ),
47
- children: [
48
- s.map((e) => /* @__PURE__ */ r(
49
- w,
50
- {
51
- value: e.value,
52
- render: e.render,
53
- className: a(
54
- "relative z-2 flex cursor-pointer items-center rounded bg-transparent text-base whitespace-nowrap focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-kumo-ring",
55
- t && "my-px rounded-lg px-2.5 text-kumo-strong hover:text-kumo-default aria-selected:text-kumo-default focus-visible:ring-inset",
56
- o && "px-2 py-2.5 text-kumo-strong hover:bg-kumo-tint hover:text-kumo-subtle aria-selected:hover:bg-kumo-tint aria-selected:font-medium aria-selected:text-kumo-default",
57
- e.className
58
- ),
59
- children: e.label
60
- },
61
- e.value
62
- )),
63
- /* @__PURE__ */ r(
64
- N,
65
- {
66
- className: a(
67
- "absolute z-1 transition-[left,width,transform] duration-200 ease-out",
68
- "data-[rendered=false]:scale-90 data-[rendered=false]:opacity-0",
69
- "left-(--active-tab-left) w-(--active-tab-width)",
70
- t && "top-(--active-tab-top) h-(--active-tab-height) rounded-lg bg-kumo-base shadow-sm ring ring-kumo-ring",
71
- o && "bottom-0 h-0.5 bg-kumo-brand",
72
- v
73
- )
74
- }
75
- )
76
- ]
77
- }
78
- )
79
- ]
80
- }
81
- );
82
- }
83
- export {
84
- z as T
85
- };
86
- //# sourceMappingURL=tabs-n0t7iro7wr0pzgk2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"text-gzt92mlji1lug13d.js","sources":["../../src/components/text/text.tsx"],"sourcesContent":["import {\n type CSSProperties,\n type ComponentPropsWithoutRef,\n type ElementRef,\n type ForwardedRef,\n forwardRef,\n useMemo,\n type ElementType,\n} from \"react\";\nimport { cn } from \"../../utils/cn\";\n\n/** Text variant and size definitions mapping names to their Tailwind classes. */\nexport const KUMO_TEXT_VARIANTS = {\n variant: {\n heading1: {\n classes: \"text-3xl font-semibold\",\n description: \"Large heading for page titles\",\n },\n heading2: {\n classes: \"text-2xl font-semibold\",\n description: \"Medium heading for section titles\",\n },\n heading3: {\n classes: \"text-lg font-semibold\",\n description: \"Small heading for subsections\",\n },\n body: {\n classes: \"text-kumo-default\",\n description: \"Default body text\",\n },\n secondary: {\n classes: \"text-kumo-subtle\",\n description: \"Muted text for secondary information\",\n },\n success: {\n classes: \"text-kumo-link\",\n description: \"Success state text\",\n },\n error: {\n classes: \"text-kumo-danger\",\n description: \"Error state text\",\n },\n mono: {\n classes: \"font-mono\",\n description: \"Monospace text for code\",\n },\n \"mono-secondary\": {\n classes: \"font-mono text-kumo-subtle\",\n description: \"Muted monospace text\",\n },\n },\n size: {\n xs: {\n classes: \"text-xs\",\n description: \"Extra small text\",\n },\n sm: {\n classes: \"text-sm\",\n description: \"Small text\",\n },\n base: {\n classes: \"text-base\",\n description: \"Default text size\",\n },\n lg: {\n classes: \"text-lg\",\n description: \"Large text\",\n },\n },\n} as const;\n\nexport const KUMO_TEXT_DEFAULT_VARIANTS = {\n variant: \"body\",\n size: \"base\",\n} as const;\n\n/**\n * KUMO_TEXT_STYLING - Typography metadata for Figma generator\n *\n * This export provides structured styling information extracted from text.tsx\n * for use by the Figma plugin generator. It documents font sizes, weights,\n * colors, and font families used across all Text variants.\n *\n * Source of truth chain:\n * text.tsx (this file) → component-registry.json → text.ts (Figma generator)\n */\nexport const KUMO_TEXT_STYLING = {\n fontSizes: {\n xs: 12,\n sm: 14,\n base: 16,\n lg: 18,\n xl: 20,\n \"2xl\": 24,\n \"3xl\": 30,\n },\n fontWeights: {\n normal: 400,\n medium: 500,\n semibold: 600,\n },\n baseColor: \"text-kumo-default\",\n variantColors: {\n body: \"text-kumo-default\",\n secondary: \"text-kumo-subtle\",\n success: \"text-kumo-link\",\n error: \"text-kumo-danger\",\n mono: \"text-kumo-default\",\n \"mono-secondary\": \"text-kumo-subtle\",\n },\n fontFamilies: {\n default: \"sans-serif\",\n mono: \"monospace\",\n },\n} as const;\n\n// Derived types from KUMO_TEXT_VARIANTS\nexport type KumoTextVariant = keyof typeof KUMO_TEXT_VARIANTS.variant;\nexport type KumoTextSize = keyof typeof KUMO_TEXT_VARIANTS.size;\n\nexport interface KumoTextVariantsProps {\n variant?: KumoTextVariant;\n size?: KumoTextSize;\n}\n\nexport function textVariants({\n variant = KUMO_TEXT_DEFAULT_VARIANTS.variant,\n size = KUMO_TEXT_DEFAULT_VARIANTS.size,\n}: KumoTextVariantsProps = {}) {\n return cn(\n KUMO_TEXT_VARIANTS.variant[variant].classes,\n KUMO_TEXT_VARIANTS.size[size].classes,\n );\n}\n\n// Legacy types for backwards compatibility\ntype Heading = \"heading1\" | \"heading2\" | \"heading3\";\ntype Copy = \"body\" | \"secondary\" | \"success\" | \"error\";\ntype Monospace = \"mono\" | \"mono-secondary\";\ntype TextSize = KumoTextSize;\ntype TextVariant = KumoTextVariant;\n\ntype BaseTextProps = Omit<\n ComponentPropsWithoutRef<\"span\">,\n \"className\" | \"style\"\n> & {\n DANGEROUS_className?: string;\n DANGEROUS_style?: CSSProperties;\n as?: ElementType;\n};\n\ntype TextPropsInternal<Variant extends TextVariant = \"body\"> = BaseTextProps &\n (Variant extends Copy\n ? {\n variant?: Variant;\n bold?: boolean;\n size?: TextSize;\n }\n : Variant extends Monospace\n ? {\n variant?: Variant;\n bold?: never;\n size?: \"lg\";\n }\n : Variant extends Heading\n ? {\n variant?: Variant;\n bold?: never;\n size?: never;\n }\n : never);\n\n/**\n * Text component props.\n *\n * @example\n * ```tsx\n * <Text variant=\"heading1\">Page Title</Text>\n * <Text variant=\"body\">Default paragraph text.</Text>\n * <Text variant=\"secondary\" size=\"sm\">Muted helper text</Text>\n * <Text variant=\"error\">Something went wrong</Text>\n * <Text variant=\"mono\">console.log(\"code\")</Text>\n * ```\n */\nexport interface TextProps {\n /**\n * Text style variant. Determines color, font, and weight.\n * - `\"heading1\"` — Large page title (30px, semibold)\n * - `\"heading2\"` — Section title (24px, semibold)\n * - `\"heading3\"` — Subsection title (18px, semibold)\n * - `\"body\"` — Default body text\n * - `\"secondary\"` — Muted text for secondary information\n * - `\"success\"` — Success state text\n * - `\"error\"` — Error state text\n * - `\"mono\"` — Monospace text for code\n * - `\"mono-secondary\"` — Muted monospace text\n * @default \"body\"\n */\n variant?: KumoTextVariant;\n /**\n * Text size (only applies to body/secondary/success/error variants).\n * - `\"xs\"` — 12px\n * - `\"sm\"` — 14px\n * - `\"base\"` — 16px\n * - `\"lg\"` — 18px\n * @default \"base\"\n */\n size?: KumoTextSize;\n /** Whether to use bold font weight (only applies to body variants). */\n bold?: boolean;\n /** The HTML element type to render as (e.g. `\"span\"`, `\"p\"`, `\"h1\"`). Auto-selected based on variant if omitted. */\n as?: ElementType;\n /** Text content. */\n children?: React.ReactNode;\n}\n\n/**\n * Typography component for rendering text with consistent styling.\n * Automatically selects the appropriate HTML element based on variant\n * (`h1`/`h2`/`h3` for headings, `p` for body, `span` for mono).\n *\n * @example\n * ```tsx\n * <Text variant=\"heading1\">Dashboard</Text>\n * <Text>Default body text</Text>\n * ```\n */\nfunction _Text<Variant extends TextVariant = \"body\">(\n {\n variant = \"body\" as Variant,\n bold = false,\n size = \"base\",\n children,\n DANGEROUS_className,\n DANGEROUS_style,\n as,\n ...props\n }: TextPropsInternal<Variant>,\n ref: ForwardedRef<HTMLHeadingElement>,\n) {\n const isCopy = [\"body\", \"secondary\", \"success\", \"error\"].includes(variant);\n const isMono = [\"mono\", \"mono-secondary\"].includes(variant);\n\n const Component = useMemo(() => {\n if (as) return as;\n if (variant === \"heading1\") return \"h1\";\n if (variant === \"heading2\") return \"h2\";\n if (variant === \"heading3\") return \"h3\";\n if ([\"mono\", \"mono-secondary\"].includes(variant)) return \"span\";\n return \"p\";\n }, [variant, as]);\n\n return (\n <Component\n ref={ref}\n className={cn(\n \"text-kumo-default\",\n KUMO_TEXT_VARIANTS.variant[variant].classes,\n isCopy ? KUMO_TEXT_VARIANTS.size[size].classes : \"\",\n isCopy && bold ? \"font-medium\" : \"\",\n // Monospace fonts need to be 1pt smaller than body text to optically match\n isMono &&\n (size === \"lg\"\n ? KUMO_TEXT_VARIANTS.size.base.classes\n : KUMO_TEXT_VARIANTS.size.sm.classes),\n DANGEROUS_className,\n )}\n style={DANGEROUS_style}\n {...props}\n >\n {children}\n </Component>\n );\n}\n\nexport const Text = forwardRef(_Text) as <Variant extends TextVariant = \"body\">(\n props: TextPropsInternal<Variant> & {\n ref?: ForwardedRef<ElementRef<\"span\">>;\n },\n) => React.ReactElement;\n"],"names":["KUMO_TEXT_VARIANTS","_Text","variant","bold","size","children","DANGEROUS_className","DANGEROUS_style","as","props","ref","isCopy","isMono","Component","useMemo","jsx","cn","Text","forwardRef"],"mappings":";;;;AAYO,MAAMA,IAAqB;AAAA,EAChC,SAAS;AAAA,IACP,UAAU;AAAA,MACR,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,UAAU;AAAA,MACR,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,UAAU;AAAA,MACR,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,WAAW;AAAA,MACT,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,SAAS;AAAA,MACP,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,OAAO;AAAA,MACL,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,kBAAkB;AAAA,MAChB,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,EACf;AAAA,EAEF,MAAM;AAAA,IACJ,IAAI;AAAA,MACF,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,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;AA8JA,SAASC,EACP;AAAA,EACE,SAAAC,IAAU;AAAA,EACV,MAAAC,IAAO;AAAA,EACP,MAAAC,IAAO;AAAA,EACP,UAAAC;AAAA,EACA,qBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,IAAAC;AAAA,EACA,GAAGC;AACL,GACAC,GACA;AACA,QAAMC,IAAS,CAAC,QAAQ,aAAa,WAAW,OAAO,EAAE,SAAST,CAAO,GACnEU,IAAS,CAAC,QAAQ,gBAAgB,EAAE,SAASV,CAAO,GAEpDW,IAAYC,EAAQ,MACpBN,MACAN,MAAY,aAAmB,OAC/BA,MAAY,aAAmB,OAC/BA,MAAY,aAAmB,OAC/B,CAAC,QAAQ,gBAAgB,EAAE,SAASA,CAAO,IAAU,SAClD,MACN,CAACA,GAASM,CAAE,CAAC;AAEhB,SACE,gBAAAO;AAAA,IAACF;AAAA,IAAA;AAAA,MACC,KAAAH;AAAA,MACA,WAAWM;AAAA,QACT;AAAA,QACAhB,EAAmB,QAAQE,CAAO,EAAE;AAAA,QACpCS,IAASX,EAAmB,KAAKI,CAAI,EAAE,UAAU;AAAA,QACjDO,KAAUR,IAAO,gBAAgB;AAAA;AAAA,QAEjCS,MACGR,MAAS,OACNJ,EAAmB,KAAK,KAAK,UAC7BA,EAAmB,KAAK,GAAG;AAAA,QACjCM;AAAA,MAAA;AAAA,MAEF,OAAOC;AAAA,MACN,GAAGE;AAAA,MAEH,UAAAJ;AAAA,IAAA;AAAA,EAAA;AAGP;AAEO,MAAMY,IAAOC,EAAWjB,CAAK;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"toast-r9ajsces7xp8l85w.js","sources":["../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@phosphor-icons/react/dist/lib/SSRBase.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@phosphor-icons/react/dist/defs/CheckCircle.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@phosphor-icons/react/dist/ssr/CheckCircle.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@phosphor-icons/react/dist/defs/Info.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@phosphor-icons/react/dist/ssr/Info.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@phosphor-icons/react/dist/defs/Warning.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@phosphor-icons/react/dist/ssr/Warning.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@phosphor-icons/react/dist/defs/WarningOctagon.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@phosphor-icons/react/dist/ssr/WarningOctagon.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@phosphor-icons/react/dist/defs/X.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@phosphor-icons/react/dist/ssr/X.es.js","../../src/components/toast/toast.tsx"],"sourcesContent":["import * as e from \"react\";\nconst w = e.forwardRef((l, s) => {\n const {\n alt: r,\n color: a = \"currentColor\",\n size: t = \"1em\",\n weight: o = \"regular\",\n mirrored: i = !1,\n children: n,\n weights: c,\n ...m\n } = l;\n return /* @__PURE__ */ e.createElement(\n \"svg\",\n {\n ref: s,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: t,\n height: t,\n fill: a,\n viewBox: \"0 0 256 256\",\n transform: i ? \"scale(-1, 1)\" : void 0,\n ...m\n },\n !!r && /* @__PURE__ */ e.createElement(\"title\", null, r),\n n,\n c.get(o)\n );\n});\nw.displayName = \"SSRBase\";\nexport {\n w as default\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M176.49,95.51a12,12,0,0,1,0,17l-56,56a12,12,0,0,1-17,0l-24-24a12,12,0,1,1,17-17L112,143l47.51-47.52A12,12,0,0,1,176.49,95.51ZM236,128A108,108,0,1,1,128,20,108.12,108.12,0,0,1,236,128Zm-24,0a84,84,0,1,0-84,84A84.09,84.09,0,0,0,212,128Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M173.66,98.34a8,8,0,0,1,0,11.32l-56,56a8,8,0,0,1-11.32,0l-24-24a8,8,0,0,1,11.32-11.32L112,148.69l50.34-50.35A8,8,0,0,1,173.66,98.34ZM232,128A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88,88,0,1,0-88,88A88.1,88.1,0,0,0,216,128Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm45.66,85.66-56,56a8,8,0,0,1-11.32,0l-24-24a8,8,0,0,1,11.32-11.32L112,148.69l50.34-50.35a8,8,0,0,1,11.32,11.32Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M172.24,99.76a6,6,0,0,1,0,8.48l-56,56a6,6,0,0,1-8.48,0l-24-24a6,6,0,0,1,8.48-8.48L112,151.51l51.76-51.75A6,6,0,0,1,172.24,99.76ZM230,128A102,102,0,1,1,128,26,102.12,102.12,0,0,1,230,128Zm-12,0a90,90,0,1,0-90,90A90.1,90.1,0,0,0,218,128Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M173.66,98.34a8,8,0,0,1,0,11.32l-56,56a8,8,0,0,1-11.32,0l-24-24a8,8,0,0,1,11.32-11.32L112,148.69l50.34-50.35A8,8,0,0,1,173.66,98.34ZM232,128A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88,88,0,1,0-88,88A88.1,88.1,0,0,0,216,128Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M170.83,101.17a4,4,0,0,1,0,5.66l-56,56a4,4,0,0,1-5.66,0l-24-24a4,4,0,0,1,5.66-5.66L112,154.34l53.17-53.17A4,4,0,0,1,170.83,101.17ZM228,128A100,100,0,1,1,128,28,100.11,100.11,0,0,1,228,128Zm-8,0a92,92,0,1,0-92,92A92.1,92.1,0,0,0,220,128Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as e from \"react\";\nimport t from \"../lib/SSRBase.es.js\";\nimport a from \"../defs/CheckCircle.es.js\";\nconst r = e.forwardRef((c, o) => /* @__PURE__ */ e.createElement(t, { ref: o, ...c, weights: a }));\nr.displayName = \"CheckCircleIcon\";\nconst s = r;\nexport {\n s as CheckCircle,\n r as CheckCircleIcon\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M108,84a16,16,0,1,1,16,16A16,16,0,0,1,108,84Zm128,44A108,108,0,1,1,128,20,108.12,108.12,0,0,1,236,128Zm-24,0a84,84,0,1,0-84,84A84.09,84.09,0,0,0,212,128Zm-72,36.68V132a20,20,0,0,0-20-20,12,12,0,0,0-4,23.32V168a20,20,0,0,0,20,20,12,12,0,0,0,4-23.32Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M144,176a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176Zm88-48A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88,88,0,1,0-88,88A88.1,88.1,0,0,0,216,128ZM124,96a12,12,0,1,0-12-12A12,12,0,0,0,124,96Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm-4,48a12,12,0,1,1-12,12A12,12,0,0,1,124,72Zm12,112a16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40a8,8,0,0,1,0,16Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M142,176a6,6,0,0,1-6,6,14,14,0,0,1-14-14V128a2,2,0,0,0-2-2,6,6,0,0,1,0-12,14,14,0,0,1,14,14v40a2,2,0,0,0,2,2A6,6,0,0,1,142,176ZM124,94a10,10,0,1,0-10-10A10,10,0,0,0,124,94Zm106,34A102,102,0,1,1,128,26,102.12,102.12,0,0,1,230,128Zm-12,0a90,90,0,1,0-90,90A90.1,90.1,0,0,0,218,128Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M140,176a4,4,0,0,1-4,4,12,12,0,0,1-12-12V128a4,4,0,0,0-4-4,4,4,0,0,1,0-8,12,12,0,0,1,12,12v40a4,4,0,0,0,4,4A4,4,0,0,1,140,176ZM124,92a8,8,0,1,0-8-8A8,8,0,0,0,124,92Zm104,36A100,100,0,1,1,128,28,100.11,100.11,0,0,1,228,128Zm-8,0a92,92,0,1,0-92,92A92.1,92.1,0,0,0,220,128Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as o from \"react\";\nimport a from \"../lib/SSRBase.es.js\";\nimport f from \"../defs/Info.es.js\";\nconst e = o.forwardRef((r, t) => /* @__PURE__ */ o.createElement(a, { ref: t, ...r, weights: f }));\ne.displayName = \"InfoIcon\";\nconst s = e;\nexport {\n s as Info,\n e as InfoIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M240.26,186.1,152.81,34.23h0a28.74,28.74,0,0,0-49.62,0L15.74,186.1a27.45,27.45,0,0,0,0,27.71A28.31,28.31,0,0,0,40.55,228h174.9a28.31,28.31,0,0,0,24.79-14.19A27.45,27.45,0,0,0,240.26,186.1Zm-20.8,15.7a4.46,4.46,0,0,1-4,2.2H40.55a4.46,4.46,0,0,1-4-2.2,3.56,3.56,0,0,1,0-3.73L124,46.2a4.77,4.77,0,0,1,8,0l87.44,151.87A3.56,3.56,0,0,1,219.46,201.8ZM116,136V104a12,12,0,0,1,24,0v32a12,12,0,0,1-24,0Zm28,40a16,16,0,1,1-16-16A16,16,0,0,1,144,176Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M215.46,216H40.54C27.92,216,20,202.79,26.13,192.09L113.59,40.22c6.3-11,22.52-11,28.82,0l87.46,151.87C236,202.79,228.08,216,215.46,216Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M236.8,188.09,149.35,36.22h0a24.76,24.76,0,0,0-42.7,0L19.2,188.09a23.51,23.51,0,0,0,0,23.72A24.35,24.35,0,0,0,40.55,224h174.9a24.35,24.35,0,0,0,21.33-12.19A23.51,23.51,0,0,0,236.8,188.09ZM222.93,203.8a8.5,8.5,0,0,1-7.48,4.2H40.55a8.5,8.5,0,0,1-7.48-4.2,7.59,7.59,0,0,1,0-7.72L120.52,44.21a8.75,8.75,0,0,1,15,0l87.45,151.87A7.59,7.59,0,0,1,222.93,203.8ZM120,144V104a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,180Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M236.8,188.09,149.35,36.22h0a24.76,24.76,0,0,0-42.7,0L19.2,188.09a23.51,23.51,0,0,0,0,23.72A24.35,24.35,0,0,0,40.55,224h174.9a24.35,24.35,0,0,0,21.33-12.19A23.51,23.51,0,0,0,236.8,188.09ZM120,104a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm8,88a12,12,0,1,1,12-12A12,12,0,0,1,128,192Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M235.07,189.09,147.61,37.22h0a22.75,22.75,0,0,0-39.22,0L20.93,189.09a21.53,21.53,0,0,0,0,21.72A22.35,22.35,0,0,0,40.55,222h174.9a22.35,22.35,0,0,0,19.6-11.19A21.53,21.53,0,0,0,235.07,189.09ZM224.66,204.8a10.46,10.46,0,0,1-9.21,5.2H40.55a10.46,10.46,0,0,1-9.21-5.2,9.51,9.51,0,0,1,0-9.72L118.79,43.21a10.75,10.75,0,0,1,18.42,0l87.46,151.87A9.51,9.51,0,0,1,224.66,204.8ZM122,144V104a6,6,0,0,1,12,0v40a6,6,0,0,1-12,0Zm16,36a10,10,0,1,1-10-10A10,10,0,0,1,138,180Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M236.8,188.09,149.35,36.22h0a24.76,24.76,0,0,0-42.7,0L19.2,188.09a23.51,23.51,0,0,0,0,23.72A24.35,24.35,0,0,0,40.55,224h174.9a24.35,24.35,0,0,0,21.33-12.19A23.51,23.51,0,0,0,236.8,188.09ZM222.93,203.8a8.5,8.5,0,0,1-7.48,4.2H40.55a8.5,8.5,0,0,1-7.48-4.2,7.59,7.59,0,0,1,0-7.72L120.52,44.21a8.75,8.75,0,0,1,15,0l87.45,151.87A7.59,7.59,0,0,1,222.93,203.8ZM120,144V104a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,180Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M233.34,190.09,145.88,38.22h0a20.75,20.75,0,0,0-35.76,0L22.66,190.09a19.52,19.52,0,0,0,0,19.71A20.36,20.36,0,0,0,40.54,220H215.46a20.36,20.36,0,0,0,17.86-10.2A19.52,19.52,0,0,0,233.34,190.09ZM226.4,205.8a12.47,12.47,0,0,1-10.94,6.2H40.54a12.47,12.47,0,0,1-10.94-6.2,11.45,11.45,0,0,1,0-11.72L117.05,42.21a12.76,12.76,0,0,1,21.9,0L226.4,194.08A11.45,11.45,0,0,1,226.4,205.8ZM124,144V104a4,4,0,0,1,8,0v40a4,4,0,0,1-8,0Zm12,36a8,8,0,1,1-8-8A8,8,0,0,1,136,180Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as r from \"react\";\nimport e from \"../lib/SSRBase.es.js\";\nimport t from \"../defs/Warning.es.js\";\nconst o = r.forwardRef((a, n) => /* @__PURE__ */ r.createElement(e, { ref: n, ...a, weights: t }));\no.displayName = \"WarningIcon\";\nconst s = o;\nexport {\n s as Warning,\n o as WarningIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M116,132V80a12,12,0,0,1,24,0v52a12,12,0,0,1-24,0ZM236,91.55v72.9a19.86,19.86,0,0,1-5.86,14.14l-51.55,51.55A19.85,19.85,0,0,1,164.45,236H91.55a19.85,19.85,0,0,1-14.14-5.86L25.86,178.59A19.86,19.86,0,0,1,20,164.45V91.55a19.86,19.86,0,0,1,5.86-14.14L77.41,25.86A19.85,19.85,0,0,1,91.55,20h72.9a19.85,19.85,0,0,1,14.14,5.86l51.55,51.55A19.86,19.86,0,0,1,236,91.55Zm-24,1.66L162.79,44H93.21L44,93.21v69.58L93.21,212h69.58L212,162.79ZM128,156a16,16,0,1,0,16,16A16,16,0,0,0,128,156Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M224,91.55v72.9a8,8,0,0,1-2.34,5.66l-51.55,51.55a8,8,0,0,1-5.66,2.34H91.55a8,8,0,0,1-5.66-2.34L34.34,170.11A8,8,0,0,1,32,164.45V91.55a8,8,0,0,1,2.34-5.66L85.89,34.34A8,8,0,0,1,91.55,32h72.9a8,8,0,0,1,5.66,2.34l51.55,51.55A8,8,0,0,1,224,91.55Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M120,136V80a8,8,0,0,1,16,0v56a8,8,0,0,1-16,0ZM232,91.55v72.9a15.86,15.86,0,0,1-4.69,11.31l-51.55,51.55A15.86,15.86,0,0,1,164.45,232H91.55a15.86,15.86,0,0,1-11.31-4.69L28.69,175.76A15.86,15.86,0,0,1,24,164.45V91.55a15.86,15.86,0,0,1,4.69-11.31L80.24,28.69A15.86,15.86,0,0,1,91.55,24h72.9a15.86,15.86,0,0,1,11.31,4.69l51.55,51.55A15.86,15.86,0,0,1,232,91.55Zm-16,0L164.45,40H91.55L40,91.55v72.9L91.55,216h72.9L216,164.45ZM128,160a12,12,0,1,0,12,12A12,12,0,0,0,128,160Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M227.31,80.23,175.77,28.69A16.13,16.13,0,0,0,164.45,24H91.55a16.13,16.13,0,0,0-11.32,4.69L28.69,80.23A16.13,16.13,0,0,0,24,91.55v72.9a16.13,16.13,0,0,0,4.69,11.32l51.54,51.54A16.13,16.13,0,0,0,91.55,232h72.9a16.13,16.13,0,0,0,11.32-4.69l51.54-51.54A16.13,16.13,0,0,0,232,164.45V91.55A16.13,16.13,0,0,0,227.31,80.23ZM120,80a8,8,0,0,1,16,0v56a8,8,0,0,1-16,0Zm8,104a12,12,0,1,1,12-12A12,12,0,0,1,128,184Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M122,136V80a6,6,0,0,1,12,0v56a6,6,0,0,1-12,0ZM230,91.55v72.9a13.92,13.92,0,0,1-4.1,9.9L174.35,225.9a13.92,13.92,0,0,1-9.9,4.1H91.55a13.92,13.92,0,0,1-9.9-4.1L30.1,174.35a13.92,13.92,0,0,1-4.1-9.9V91.55a13.92,13.92,0,0,1,4.1-9.9L81.65,30.1a13.92,13.92,0,0,1,9.9-4.1h72.9a13.92,13.92,0,0,1,9.9,4.1L225.9,81.65A13.92,13.92,0,0,1,230,91.55Zm-12,0a2,2,0,0,0-.59-1.42L165.87,38.59a2,2,0,0,0-1.42-.59H91.55a2,2,0,0,0-1.41.59L38.58,90.13A2,2,0,0,0,38,91.55v72.9a2,2,0,0,0,.59,1.42l51.54,51.54a2,2,0,0,0,1.42.59h72.9a2,2,0,0,0,1.41-.59l51.56-51.54a2,2,0,0,0,.58-1.42ZM128,162a10,10,0,1,0,10,10A10,10,0,0,0,128,162Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M120,136V80a8,8,0,0,1,16,0v56a8,8,0,0,1-16,0ZM232,91.55v72.9a15.86,15.86,0,0,1-4.69,11.31l-51.55,51.55A15.86,15.86,0,0,1,164.45,232H91.55a15.86,15.86,0,0,1-11.31-4.69L28.69,175.76A15.86,15.86,0,0,1,24,164.45V91.55a15.86,15.86,0,0,1,4.69-11.31L80.24,28.69A15.86,15.86,0,0,1,91.55,24h72.9a15.86,15.86,0,0,1,11.31,4.69l51.55,51.55A15.86,15.86,0,0,1,232,91.55Zm-16,0L164.45,40H91.55L40,91.55v72.9L91.55,216h72.9L216,164.45ZM128,160a12,12,0,1,0,12,12A12,12,0,0,0,128,160Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M124,136V80a4,4,0,0,1,8,0v56a4,4,0,0,1-8,0ZM228,91.55v72.9a12,12,0,0,1-3.51,8.49l-51.55,51.55a12,12,0,0,1-8.49,3.51H91.55a12,12,0,0,1-8.49-3.51L31.51,172.94A12,12,0,0,1,28,164.45V91.55a12,12,0,0,1,3.51-8.49L83.06,31.51A12,12,0,0,1,91.55,28h72.9a12,12,0,0,1,8.49,3.51l51.55,51.55A12,12,0,0,1,228,91.55Zm-8,0a4,4,0,0,0-1.17-2.83L167.28,37.17A4.06,4.06,0,0,0,164.45,36H91.55a4.06,4.06,0,0,0-2.83,1.17L37.17,88.72A4,4,0,0,0,36,91.55v72.9a4,4,0,0,0,1.17,2.83l51.55,51.55A4.06,4.06,0,0,0,91.55,220h72.9a4.06,4.06,0,0,0,2.83-1.17l51.55-51.55a4,4,0,0,0,1.17-2.83ZM128,164a8,8,0,1,0,8,8A8,8,0,0,0,128,164Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as o from \"react\";\nimport t from \"../lib/SSRBase.es.js\";\nimport e from \"../defs/WarningOctagon.es.js\";\nconst a = o.forwardRef((n, r) => /* @__PURE__ */ o.createElement(t, { ref: r, ...n, weights: e }));\na.displayName = \"WarningOctagonIcon\";\nconst m = a;\nexport {\n m as WarningOctagon,\n a as WarningOctagonIcon\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M208.49,191.51a12,12,0,0,1-17,17L128,145,64.49,208.49a12,12,0,0,1-17-17L111,128,47.51,64.49a12,12,0,0,1,17-17L128,111l63.51-63.52a12,12,0,0,1,17,17L145,128Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\n \"path\",\n {\n d: \"M216,56V200a16,16,0,0,1-16,16H56a16,16,0,0,1-16-16V56A16,16,0,0,1,56,40H200A16,16,0,0,1,216,56Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ e.createElement(\"path\", { d: \"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM181.66,170.34a8,8,0,0,1-11.32,11.32L128,139.31,85.66,181.66a8,8,0,0,1-11.32-11.32L116.69,128,74.34,85.66A8,8,0,0,1,85.66,74.34L128,116.69l42.34-42.35a8,8,0,0,1,11.32,11.32L139.31,128Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M204.24,195.76a6,6,0,1,1-8.48,8.48L128,136.49,60.24,204.24a6,6,0,0,1-8.48-8.48L119.51,128,51.76,60.24a6,6,0,0,1,8.48-8.48L128,119.51l67.76-67.75a6,6,0,0,1,8.48,8.48L136.49,128Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M202.83,197.17a4,4,0,0,1-5.66,5.66L128,133.66,58.83,202.83a4,4,0,0,1-5.66-5.66L122.34,128,53.17,58.83a4,4,0,0,1,5.66-5.66L128,122.34l69.17-69.17a4,4,0,1,1,5.66,5.66L133.66,128Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as o from \"react\";\nimport a from \"../lib/SSRBase.es.js\";\nimport m from \"../defs/X.es.js\";\nconst e = o.forwardRef((r, t) => /* @__PURE__ */ o.createElement(a, { ref: t, ...r, weights: m }));\ne.displayName = \"XIcon\";\nconst f = e;\nexport {\n f as X,\n e as XIcon\n};\n","import {\n Toast,\n ToastManagerAddOptions,\n ToastObject,\n} from \"@base-ui/react/toast\";\nimport type React from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { Button, ButtonProps } from \"../../components/button\";\nimport {\n CheckCircleIcon,\n InfoIcon,\n WarningIcon,\n WarningOctagonIcon,\n XIcon,\n} from \"@phosphor-icons/react/dist/ssr\";\n\n/**\n * Toast styling configuration for Figma plugin consumption.\n * Toast has no user-facing variants but documents the styling structure.\n */\nexport const KUMO_TOAST_VARIANTS = {\n root: {\n classes:\n \"rounded-lg border border-kumo-fill bg-kumo-control p-4 shadow-lg text-kumo-default\",\n description: \"Toast container with background, border, and shadow\",\n },\n title: {\n classes: \"text-[0.975rem] leading-5 font-medium text-kumo-default\",\n description: \"Toast title with primary text color\",\n },\n description: {\n classes: \"text-[0.925rem] leading-5 text-kumo-subtle\",\n description: \"Toast description with muted text color\",\n },\n close: {\n classes:\n \"absolute top-2 right-2 flex h-5 w-5 items-center justify-center rounded border-none bg-transparent text-kumo-subtle hover:bg-kumo-fill-hover hover:text-kumo-strong\",\n description: \"Close button with X icon\",\n },\n variant: {\n default: {\n classes: \"border-kumo-fill bg-kumo-control\",\n description: \"Default toast style\",\n },\n success: {\n classes:\n \"border-kumo-success bg-kumo-control [&_[data-toast-icon]]:text-kumo-success [&_[data-toast-title]]:text-kumo-success\",\n description: \"Success toast for confirmations and positive outcomes\",\n icon: CheckCircleIcon,\n },\n error: {\n classes:\n \"border-kumo-danger bg-kumo-control [&_[data-toast-icon]]:text-kumo-danger [&_[data-toast-title]]:text-kumo-danger\",\n description: \"Error toast for critical issues\",\n icon: WarningOctagonIcon,\n },\n warning: {\n classes:\n \"border-kumo-warning bg-kumo-control [&_[data-toast-icon]]:text-kumo-warning [&_[data-toast-title]]:text-kumo-warning\",\n description: \"Warning toast for cautionary messages\",\n icon: WarningIcon,\n },\n info: {\n classes:\n \"border-kumo-info bg-kumo-control [&_[data-toast-icon]]:text-kumo-info [&_[data-toast-title]]:text-kumo-info\",\n description: \"Info toast for neutral informational messages\",\n icon: InfoIcon,\n },\n },\n} as const;\n\nexport const KUMO_TOAST_DEFAULT_VARIANTS = {\n variant: \"default\",\n} as const;\n\n/**\n * Toast styling configuration for Figma plugin consumption.\n * Provides structured metadata for generating Toast components in Figma.\n */\nexport const KUMO_TOAST_STYLING = {\n container: {\n width: 300,\n padding: 16,\n borderRadius: 8,\n background: \"color-secondary\",\n border: \"color-color\",\n shadow: \"shadow-lg\",\n gap: 4,\n },\n title: {\n fontSize: 16,\n fontWeight: 500,\n color: \"text-color-surface\",\n },\n description: {\n fontSize: 15,\n fontWeight: 400,\n color: \"text-color-muted\",\n },\n closeButton: {\n size: 20,\n iconSize: 16,\n iconName: \"ph-x\",\n iconColor: \"text-color-muted\",\n hoverBackground: \"color-color-2\",\n hoverColor: \"text-color-label\",\n borderRadius: 4,\n },\n} as const;\n\n// Derived types from KUMO_TOAST_VARIANTS\nexport type KumoToastVariant = keyof typeof KUMO_TOAST_VARIANTS.variant;\n\nexport interface KumoToastVariantsProps {\n variant?: KumoToastVariant;\n}\n\nexport function toastVariants({\n variant = KUMO_TOAST_DEFAULT_VARIANTS.variant,\n}: KumoToastVariantsProps = {}) {\n return cn(\n // Base styles for toast root\n \"rounded-xl border bg-clip-padding p-4 shadow-lg\",\n // Apply variant styles from KUMO_TOAST_VARIANTS\n KUMO_TOAST_VARIANTS.variant[variant].classes,\n );\n}\n\n/**\n * Toasty component props.\n *\n * Wrap your app with `<Toasty>` to enable toast notifications.\n * Use `Toast.useToastManager().notify(…)` to create toasts.\n *\n * @example\n * ```tsx\n * // 1. Wrap your app\n * <Toasty>\n * <App />\n * </Toasty>\n *\n * // 2. Show a toast from any child component\n * const toasts = Toast.useToastManager();\n * toasts.notify({ title: \"Saved\", description: \"Changes saved successfully.\" });\n * ```\n */\nexport interface ToastyProps extends KumoToastVariantsProps {\n /** Application content. Toasts render via a portal above this. */\n children: React.ReactNode;\n}\n\ntype KumoToastOptionsBase = {\n variant?: KumoToastVariant;\n content?: React.ReactNode;\n actions?: Array<ButtonProps>;\n bump?: boolean;\n};\n\nexport type KumoToastOptions<Data extends object> = ToastObject<Data> &\n KumoToastOptionsBase;\n\nexport type KumoToastManagerAddOptions<Data extends object> =\n ToastManagerAddOptions<Data> & KumoToastOptionsBase;\n\nfunction wrapManagerMethods<\n T extends { add: Function; update: Function; promise: Function },\n>(manager: T) {\n return {\n ...manager,\n\n add: (options: KumoToastManagerAddOptions<any>) => {\n if (options.id) {\n const toasts = (manager as any).toasts as\n | Array<ToastObject<any>>\n | undefined;\n\n if (toasts) {\n const existingToast = toasts.find((toast) => toast.id === options.id);\n\n // If toast exists and is not exiting, trigger bump and prevent duplicate\n if (existingToast && existingToast.transitionStatus !== \"ending\") {\n // Reset animation by disabling then re-enabling\n manager.update(options.id, { bump: false });\n requestAnimationFrame(() => {\n manager.update(options.id, {\n bump: true,\n ...(options.timeout !== undefined && {\n timeout: options.timeout,\n }),\n });\n });\n return options.id;\n }\n\n // If toast exists and is exiting, let it finish - don't add duplicate\n if (existingToast && existingToast.transitionStatus === \"ending\") {\n return options.id;\n }\n }\n }\n\n return manager.add({\n ...options,\n });\n },\n\n update: (id: string, options: Partial<KumoToastManagerAddOptions<any>>) => {\n return manager.update(id, {\n ...options,\n });\n },\n\n promise: <T,>(\n promise: Promise<T>,\n options: {\n loading: KumoToastManagerAddOptions<any>;\n success:\n | KumoToastManagerAddOptions<any>\n | ((data: T) => KumoToastManagerAddOptions<any>);\n error:\n | KumoToastManagerAddOptions<any>\n | ((error: Error) => KumoToastManagerAddOptions<any>);\n },\n ) => {\n return manager.promise(promise, {\n loading: { ...options.loading },\n success:\n typeof options.success === \"function\"\n ? (data: T) => ({\n ...(\n options.success as (\n data: T,\n ) => KumoToastManagerAddOptions<any>\n )(data),\n })\n : { ...options.success },\n error:\n typeof options.error === \"function\"\n ? (error: Error) => ({\n ...(\n options.error as (\n error: Error,\n ) => KumoToastManagerAddOptions<any>\n )(error),\n })\n : { ...options.error },\n });\n },\n };\n}\n\nexport const useKumoToastManager = () => {\n const manager = Toast.useToastManager();\n return {\n ...wrapManagerMethods(manager),\n toasts: manager.toasts as Array<KumoToastOptions<any>>,\n };\n};\n\nexport const createKumoToastManager = () => {\n return wrapManagerMethods(Toast.createToastManager());\n};\n\n/**\n * Toasty — toast notification provider and viewport.\n *\n * Renders a `Toast.Provider` with a fixed-position viewport in the bottom-right corner.\n * Toasts stack with smooth enter/exit animations, swipe-to-dismiss, and expand-on-hover.\n *\n * Built on `@base-ui/react/toast`.\n *\n * @example\n * ```tsx\n * <Toasty>\n * <App />\n * </Toasty>\n * ```\n */\nexport function Toasty({ children }: ToastyProps) {\n return (\n <Toast.Provider>\n {children}\n <Toast.Portal>\n <Toast.Viewport className=\"fixed top-auto right-4 bottom-4 z-1 mx-auto flex w-[calc(100%-2rem)] sm:right-8 sm:bottom-8 sm:w-[340px]\">\n <ToastList />\n </Toast.Viewport>\n </Toast.Portal>\n </Toast.Provider>\n );\n}\n\n/** Alias for Toasty — provided for discoverability when migrating from other libraries */\nexport const ToastProvider = Toasty;\n\nfunction ToastList() {\n const { toasts } = useKumoToastManager();\n return toasts.map((toast) => (\n <Toast.Root\n key={toast.id}\n toast={toast}\n className={cn(\n \"absolute right-0 bottom-0 left-auto z-[calc(1000-var(--toast-index))] mr-0 h-[var(--height)] w-full origin-bottom select-none\",\n toastVariants({ variant: toast.variant }),\n \"[--gap:0.75rem] [--height:var(--toast-frontmost-height,var(--toast-height))] [--offset-y:calc(var(--toast-offset-y)*-1+calc(var(--toast-index)*var(--gap)*-1)+var(--toast-swipe-movement-y))] [--peek:0.75rem] [--scale:calc(max(0,1-(var(--toast-index)*0.1)))] [--shrink:calc(1-var(--scale))]\",\n \"[transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)-(var(--toast-index)*var(--peek))-(var(--shrink)*var(--height))))_scale(var(--scale))] [transition:transform_0.5s_cubic-bezier(0.22,1,0.36,1),opacity_0.5s,height_0.15s]\",\n \"after:absolute after:top-full after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:content-['']\",\n \"data-[ending-style]:opacity-0 data-[expanded]:h-[var(--toast-height)] data-[expanded]:[transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--offset-y)))] data-[limited]:opacity-0 data-[starting-style]:[transform:translateY(150%)]\",\n \"data-[ending-style]:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))] data-[expanded]:data-[ending-style]:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]\",\n \"data-[ending-style]:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))] data-[expanded]:data-[ending-style]:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]\",\n \"data-[ending-style]:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))] data-[expanded]:data-[ending-style]:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]\",\n \"data-[ending-style]:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))] data-[expanded]:data-[ending-style]:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]\",\n \"[&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateY(150%)]\",\n toast.bump && \"animate-toast-bump\",\n )}\n >\n <ToastBackground variant={toast.variant} />\n <Toast.Content className=\"isolate flex flex-col gap-1 transition-opacity [transition-duration:250ms] data-[behind]:pointer-events-none data-[behind]:opacity-0 data-[expanded]:pointer-events-auto data-[expanded]:opacity-100\">\n {toast.content ?? (\n <>\n <div className=\"flex items-start gap-2\">\n <ToastIcon variant={toast.variant} />\n <div className=\"flex flex-col gap-1 overflow-hidden\">\n <Toast.Title\n data-toast-title\n className=\"text-[0.975rem] leading-5 font-medium text-kumo-default\"\n />\n <Toast.Description className=\"text-[0.925rem] leading-5 text-kumo-subtle\" />\n\n {!!toast.actions && (\n <div className=\"mt-2 flex min-w-0 flex-nowrap gap-2 overflow-x-auto p-px\">\n {toast.actions.map((actionProps, idx) => (\n <Button key={idx} {...actionProps} />\n ))}\n </div>\n )}\n </div>\n </div>\n </>\n )}\n <Toast.Close\n className=\"absolute top-2 right-2 flex h-4 w-4 items-center justify-center rounded border-none bg-transparent text-current/50 hover:bg-kumo-contrast/10 hover:text-current\"\n aria-label=\"Close\"\n >\n <XIcon className=\"h-3 w-3\" />\n </Toast.Close>\n </Toast.Content>\n </Toast.Root>\n ));\n}\n\nconst TOAST_TINT_CLASSES: Record<string, string> = {\n success: \"bg-kumo-success-tint/10\",\n error: \"bg-kumo-danger-tint/10\",\n warning: \"bg-kumo-warning-tint/10\",\n info: \"bg-kumo-info-tint/10\",\n};\n\nfunction ToastBackground({ variant }: { variant?: KumoToastVariant }) {\n const tint = variant && TOAST_TINT_CLASSES[variant];\n return (\n <div\n className={cn(\"absolute inset-0 rounded-[11px] bg-kumo-control/90\", tint)}\n />\n );\n}\n\nfunction ToastIcon({ variant }: { variant?: KumoToastVariant }) {\n if (!variant || variant === \"default\") return null;\n const variantConfig = KUMO_TOAST_VARIANTS.variant[variant];\n if (!(\"icon\" in variantConfig)) return null;\n const Icon = variantConfig.icon;\n return (\n <Icon data-toast-icon className=\"mt-0.5 h-4 w-4 shrink-0\" weight=\"fill\" />\n );\n}\n\n"],"names":["w","e","l","s","r","a","t","o","i","n","c","m","f","KUMO_TOAST_VARIANTS","CheckCircleIcon","WarningOctagonIcon","WarningIcon","InfoIcon","KUMO_TOAST_DEFAULT_VARIANTS","toastVariants","variant","cn","wrapManagerMethods","manager","options","toasts","existingToast","toast","id","promise","data","error","useKumoToastManager","Toast.useToastManager","createKumoToastManager","Toast.createToastManager","Toasty","children","jsxs","Toast.Provider","jsx","Toast.Portal","Toast.Viewport","ToastList","ToastProvider","Toast.Root","ToastBackground","Toast.Content","Fragment","ToastIcon","Toast.Title","Toast.Description","actionProps","idx","Button","Toast.Close","XIcon","TOAST_TINT_CLASSES","tint","variantConfig","Icon"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tooltip-hnc71tg4gz2gpcvc.js","sources":["../../src/components/tooltip/tooltip.tsx"],"sourcesContent":["import { Tooltip as TooltipBase } from \"@base-ui/react/tooltip\";\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn\";\n\n/** Tooltip side variant definitions mapping positions to their Tailwind classes. */\nexport const KUMO_TOOLTIP_VARIANTS = {\n side: {\n top: {\n classes: \"\",\n description: \"Tooltip appears above the trigger\",\n },\n bottom: {\n classes: \"\",\n description: \"Tooltip appears below the trigger\",\n },\n left: {\n classes: \"\",\n description: \"Tooltip appears to the left of the trigger\",\n },\n right: {\n classes: \"\",\n description: \"Tooltip appears to the right of the trigger\",\n },\n },\n} as const;\n\nexport const KUMO_TOOLTIP_DEFAULT_VARIANTS = {\n side: \"top\",\n} as const;\n\n// Derived types from KUMO_TOOLTIP_VARIANTS\nexport type KumoTooltipSide = keyof typeof KUMO_TOOLTIP_VARIANTS.side;\n\nexport interface KumoTooltipVariantsProps {\n /**\n * Preferred side of the trigger to render the tooltip.\n * - `\"top\"` — Tooltip appears above the trigger\n * - `\"bottom\"` — Tooltip appears below the trigger\n * - `\"left\"` — Tooltip appears to the left of the trigger\n * - `\"right\"` — Tooltip appears to the right of the trigger\n * @default \"top\"\n */\n side?: KumoTooltipSide;\n}\n\nexport function tooltipVariants({\n side = KUMO_TOOLTIP_DEFAULT_VARIANTS.side,\n}: KumoTooltipVariantsProps = {}) {\n return cn(\n // Base styles\n \"flex origin-[var(--transform-origin)] flex-col rounded-md bg-kumo-base px-2.5 py-1.5 text-sm text-kumo-default\",\n \"shadow-lg shadow-kumo-tip-shadow outline outline-1 outline-kumo-fill\",\n \"transition-[transform,opacity] duration-150\",\n \"data-[starting-style]:scale-90 data-[starting-style]:opacity-0\",\n \"data-[ending-style]:scale-90 data-[ending-style]:opacity-0\",\n \"data-[instant]:duration-0\",\n // Apply side-specific styles (currently none, but extensible)\n KUMO_TOOLTIP_VARIANTS.side[side].classes,\n );\n}\n\nexport const TooltipProvider = TooltipBase.Provider;\n\ntype BaseTooltipProps = ComponentPropsWithoutRef<typeof TooltipBase.Root>;\n\ntype TriggerProps = ComponentPropsWithoutRef<typeof TooltipBase.Trigger>;\n\n/** Alignment options for tooltip positioning. Source: PositionerProps[\"align\"] */\ntype TooltipAlign = \"start\" | \"center\" | \"end\";\n\n/**\n * Tooltip component props.\n *\n * @example\n * ```tsx\n * <TooltipProvider>\n * <Tooltip content=\"Add new item\" asChild>\n * <Button shape=\"square\" icon={PlusIcon} />\n * </Tooltip>\n * </TooltipProvider>\n * ```\n */\nexport type TooltipProps = BaseTooltipProps &\n KumoTooltipVariantsProps & {\n /**\n * Alignment on the axis perpendicular to `side`.\n * - `\"start\"` — Align to the start edge\n * - `\"center\"` — Center-aligned\n * - `\"end\"` — Align to the end edge\n */\n align?: TooltipAlign;\n /** When `true`, the trigger wraps the child element instead of adding a wrapper. */\n asChild?: boolean;\n /** Additional CSS classes merged via `cn()`. */\n className?: string;\n /** Content to display inside the tooltip popup. */\n content: ReactNode;\n };\n\n/**\n * Accessible popup that shows additional information on hover/focus.\n * Wrap your app or section with `<TooltipProvider>` to enable delay grouping.\n *\n * @example\n * ```tsx\n * <Tooltip content=\"Save changes\" asChild>\n * <Button variant=\"primary\">Save</Button>\n * </Tooltip>\n * ```\n */\nexport function Tooltip({\n content,\n children,\n align,\n asChild,\n side,\n className,\n ...props\n}: TooltipProps) {\n return (\n <TooltipBase.Root {...props}>\n <TooltipBase.Trigger\n className={cn(\n // Defensive resets when rendering as button wrapper (not asChild)\n // These prevent global button styles from polluting the trigger\n // Consumer styles passed via className will override these (tailwind-merge)\n !asChild &&\n \"inline-flex items-center bg-transparent border-none shadow-none p-0 m-0 h-auto min-h-0 leading-[0]\",\n className,\n )}\n render={asChild ? (children as TriggerProps[\"render\"]) : undefined}\n >\n {asChild ? undefined : (children as ReactNode)}\n </TooltipBase.Trigger>\n <TooltipBase.Portal>\n <TooltipBase.Positioner align={align} side={side} sideOffset={10}>\n <TooltipBase.Popup\n className={cn(\n \"flex origin-[var(--transform-origin)] flex-col rounded-md bg-kumo-base px-2.5 py-1.5 text-sm text-kumo-default\",\n \"shadow-lg shadow-kumo-tip-shadow outline outline-kumo-fill\",\n \"transition-[transform,opacity] duration-150\",\n \"data-[starting-style]:scale-90 data-[starting-style]:opacity-0\",\n \"data-[ending-style]:scale-90 data-[ending-style]:opacity-0\",\n \"data-[instant]:duration-0\",\n \"kumo-tooltip-popup\",\n )}\n >\n <TooltipBase.Arrow\n className={cn(\n \"flex\",\n \"data-[side=bottom]:top-[-8px]\",\n \"data-[side=left]:right-[-13px] data-[side=left]:rotate-90\",\n \"data-[side=right]:left-[-13px] data-[side=right]:-rotate-90\",\n \"data-[side=top]:bottom-[-8px] data-[side=top]:rotate-180\",\n )}\n >\n <ArrowSvg />\n </TooltipBase.Arrow>\n {content}\n </TooltipBase.Popup>\n </TooltipBase.Positioner>\n </TooltipBase.Portal>\n </TooltipBase.Root>\n );\n}\n\n/**\n * Arrow SVG with three paths for proper border rendering in both light and dark modes.\n * This approach matches Base UI's tooltip implementation.\n *\n * The three paths are:\n * 1. ArrowFill - The main arrow body, matches tooltip background\n * 2. ArrowOuterStroke - Border visible in light mode only (transparent in dark)\n * 3. ArrowInnerStroke - Border visible in dark mode only (transparent in light)\n *\n * This is necessary because the outer and inner stroke paths have different geometries,\n * and using both ensures the arrow border aligns perfectly with the tooltip's outline\n * in both color modes.\n *\n * @see https://base-ui.com/react/components/tooltip\n */\nfunction ArrowSvg(props: React.ComponentProps<\"svg\">) {\n return (\n <svg width=\"20\" height=\"10\" viewBox=\"0 0 20 10\" fill=\"none\" {...props}>\n <path\n d=\"M9.66437 2.60207L4.80758 6.97318C4.07308 7.63423 3.11989 8 2.13172 8H0V10H20V8H18.5349C17.5468 8 16.5936 7.63423 15.8591 6.97318L11.0023 2.60207C10.622 2.2598 10.0447 2.25979 9.66437 2.60207Z\"\n className=\"fill-kumo-base\"\n />\n <path\n d=\"M8.99542 1.85876C9.75604 1.17425 10.9106 1.17422 11.6713 1.85878L16.5281 6.22989C17.0789 6.72568 17.7938 7.00001 18.5349 7.00001L15.89 7L11.0023 2.60207C10.622 2.2598 10.0447 2.2598 9.66436 2.60207L4.77734 7L2.13171 7.00001C2.87284 7.00001 3.58774 6.72568 4.13861 6.22989L8.99542 1.85876Z\"\n className=\"fill-kumo-tip-shadow\"\n />\n <path\n d=\"M10.3333 3.34539L5.47654 7.71648C4.55842 8.54279 3.36693 9 2.13172 9H0V8H2.13172C3.11989 8 4.07308 7.63423 4.80758 6.97318L9.66437 2.60207C10.0447 2.25979 10.622 2.2598 11.0023 2.60207L15.8591 6.97318C16.5936 7.63423 17.5468 8 18.5349 8H20V9H18.5349C17.2998 9 16.1083 8.54278 15.1901 7.71648L10.3333 3.34539Z\"\n className=\"fill-kumo-tip-stroke\"\n />\n </svg>\n );\n}\n"],"names":["TooltipProvider","TooltipBase.Provider","Tooltip","content","children","align","asChild","side","className","props","jsxs","TooltipBase.Root","jsx","TooltipBase.Trigger","cn","TooltipBase.Portal","TooltipBase.Positioner","TooltipBase.Popup","TooltipBase.Arrow","ArrowSvg"],"mappings":";;;;AA6DO,MAAMA,IAAkBC;AAiDxB,SAASC,EAAQ;AAAA,EACtB,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,MAAAC;AAAA,EACA,WAAAC;AAAA,EACA,GAAGC;AACL,GAAiB;AACf,SACE,gBAAAC,EAACC,GAAA,EAAkB,GAAGF,GACpB,UAAA;AAAA,IAAA,gBAAAG;AAAA,MAACC;AAAAA,MAAA;AAAA,QACC,WAAWC;AAAA;AAAA;AAAA;AAAA,UAIT,CAACR,KACC;AAAA,UACFE;AAAA,QAAA;AAAA,QAEF,QAAQF,IAAWF,IAAsC;AAAA,QAExD,cAAU,SAAaA;AAAA,MAAA;AAAA,IAAA;AAAA,IAE1B,gBAAAQ,EAACG,GAAA,EACC,UAAA,gBAAAH,EAACI,GAAA,EAAuB,OAAAX,GAAc,MAAAE,GAAY,YAAY,IAC5D,UAAA,gBAAAG;AAAA,MAACO;AAAAA,MAAA;AAAA,QACC,WAAWH;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,QAGF,UAAA;AAAA,UAAA,gBAAAF;AAAA,YAACM;AAAAA,YAAA;AAAA,cACC,WAAWJ;AAAA,gBACT;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cAAA;AAAA,cAGF,4BAACK,GAAA,CAAA,CAAS;AAAA,YAAA;AAAA,UAAA;AAAA,UAEXhB;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,GAEL,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;AAiBA,SAASgB,EAASV,GAAoC;AACpD,SACE,gBAAAC,EAAC,OAAA,EAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAQ,GAAGD,GAC9D,UAAA;AAAA,IAAA,gBAAAG;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,GAAE;AAAA,QACF,WAAU;AAAA,MAAA;AAAA,IAAA;AAAA,IAEZ,gBAAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,GAAE;AAAA,QACF,WAAU;AAAA,MAAA;AAAA,IAAA;AAAA,IAEZ,gBAAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,GAAE;AAAA,QACF,WAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EACZ,GACF;AAEJ;"}