@cloudflare/kumo 1.17.0 → 1.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. package/CHANGELOG.md +143 -0
  2. package/ai/USAGE.md +38 -32
  3. package/ai/component-registry.json +289 -178
  4. package/ai/component-registry.md +980 -507
  5. package/ai/schemas.ts +20 -4
  6. package/dist/.build-complete +1 -1
  7. package/dist/ai/schemas.d.ts +95 -56
  8. package/dist/ai/schemas.d.ts.map +1 -1
  9. package/dist/ai/schemas.js +165 -148
  10. package/dist/ai/schemas.js.map +1 -1
  11. package/dist/chunks/{Legend-o0ntojbaplmszwk0.js → Legend-ks7se6149vsa3tze.js} +127 -118
  12. package/dist/chunks/Legend-ks7se6149vsa3tze.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-nz0eryqnz3qd86ln.js → banner-eiwcnk7ts21s3bnb.js} +4 -4
  16. package/dist/chunks/{banner-nz0eryqnz3qd86ln.js.map → banner-eiwcnk7ts21s3bnb.js.map} +1 -1
  17. package/dist/chunks/{breadcrumbs-cjgn3w4drahvqnuj.js → breadcrumbs-ge20hcb3o5spswrk.js} +2 -2
  18. package/dist/chunks/{breadcrumbs-cjgn3w4drahvqnuj.js.map → breadcrumbs-ge20hcb3o5spswrk.js.map} +1 -1
  19. package/dist/chunks/{button-odxi0hp4fvi5i2w3.js → button-oaqi7ykdisyskoos.js} +8 -8
  20. package/dist/chunks/button-oaqi7ykdisyskoos.js.map +1 -0
  21. package/dist/chunks/{checkbox-dx8x0rzv582yjv7n.js → checkbox-mwgmohffm22ut13s.js} +15 -15
  22. package/dist/chunks/checkbox-mwgmohffm22ut13s.js.map +1 -0
  23. package/dist/chunks/{clipboard-text-kyk51d1ze7zvdn4q.js → clipboard-text-dxczqon3d27xp6f0.js} +10 -10
  24. package/dist/chunks/{clipboard-text-kyk51d1ze7zvdn4q.js.map → clipboard-text-dxczqon3d27xp6f0.js.map} +1 -1
  25. package/dist/chunks/{cloudflare-logo-bgts2jgsdh7sslw4.js → cloudflare-logo-pbavoe1wu8nr5c4n.js} +9 -9
  26. package/dist/chunks/{cloudflare-logo-bgts2jgsdh7sslw4.js.map → cloudflare-logo-pbavoe1wu8nr5c4n.js.map} +1 -1
  27. package/dist/chunks/{code-liq1g6f5lhee305d.js → code-cz0w1y5z4h29a9eg.js} +18 -18
  28. package/dist/chunks/code-cz0w1y5z4h29a9eg.js.map +1 -0
  29. package/dist/chunks/{combobox-9fhjzprab46csmon.js → combobox-eaowwt1xr4d23gsn.js} +113 -101
  30. package/dist/chunks/combobox-eaowwt1xr4d23gsn.js.map +1 -0
  31. package/dist/chunks/{command-palette-kenx2bbdzd4kpx36.js → command-palette-maqtbmpfev9mysqd.js} +20 -20
  32. package/dist/chunks/command-palette-maqtbmpfev9mysqd.js.map +1 -0
  33. package/dist/chunks/{dialog-e05ysa8t2fklw065.js → dialog-e3m5bhs7fds26p9y.js} +25 -25
  34. package/dist/chunks/dialog-e3m5bhs7fds26p9y.js.map +1 -0
  35. package/dist/chunks/{dropdown-g587px7zv3ssaxr4.js → dropdown-ewte287db3vyt8t5.js} +94 -92
  36. package/dist/chunks/{dropdown-g587px7zv3ssaxr4.js.map → dropdown-ewte287db3vyt8t5.js.map} +1 -1
  37. package/dist/chunks/{empty-fuz1un7r7mbz0kim.js → empty-dr1eckm2z40euns6.js} +2 -2
  38. package/dist/chunks/{empty-fuz1un7r7mbz0kim.js.map → empty-dr1eckm2z40euns6.js.map} +1 -1
  39. package/dist/chunks/{field-fq504lyu7ttsh5m9.js → field-bo5gmna16odrrb1q.js} +3 -3
  40. package/dist/chunks/{field-fq504lyu7ttsh5m9.js.map → field-bo5gmna16odrrb1q.js.map} +1 -1
  41. package/dist/chunks/{grid-m9r71jxo2b8q1972.js → grid-hj1ylz16p7g5uelh.js} +2 -2
  42. package/dist/chunks/{grid-m9r71jxo2b8q1972.js.map → grid-hj1ylz16p7g5uelh.js.map} +1 -1
  43. package/dist/chunks/input-area-jkkkjej6luumrqpa.js +78 -0
  44. package/dist/chunks/input-area-jkkkjej6luumrqpa.js.map +1 -0
  45. package/dist/chunks/input-cw05pbqdburghkus.js +113 -0
  46. package/dist/chunks/input-cw05pbqdburghkus.js.map +1 -0
  47. package/dist/chunks/{input-group-hbebbyh8fo6aqydn.js → input-group-lfugneuz71g42n0w.js} +27 -27
  48. package/dist/chunks/input-group-lfugneuz71g42n0w.js.map +1 -0
  49. package/dist/chunks/label-cvyvbqmt4mt757ff.js +68 -0
  50. package/dist/chunks/{label-j9owppbgnn35mebg.js.map → label-cvyvbqmt4mt757ff.js.map} +1 -1
  51. package/dist/chunks/layer-card-ljqth3yxgnk04v2o.js +46 -0
  52. package/dist/chunks/layer-card-ljqth3yxgnk04v2o.js.map +1 -0
  53. package/dist/chunks/{link-hmmf3k1xn6rm72rt.js → link-fjnhtxvfe5ieamjf.js} +2 -2
  54. package/dist/chunks/{link-hmmf3k1xn6rm72rt.js.map → link-fjnhtxvfe5ieamjf.js.map} +1 -1
  55. package/dist/chunks/{loader-m5wfmqwgucrr4i5v.js → loader-hr2w7cpqeev3p3vl.js} +9 -6
  56. package/dist/chunks/loader-hr2w7cpqeev3p3vl.js.map +1 -0
  57. package/dist/chunks/menubar-e5e4zwfagr0wx023.js +96 -0
  58. package/dist/chunks/menubar-e5e4zwfagr0wx023.js.map +1 -0
  59. package/dist/chunks/{meter-i84dte2f82qmvn7y.js → meter-duj3micor1lqj3y2.js} +2 -2
  60. package/dist/chunks/{meter-i84dte2f82qmvn7y.js.map → meter-duj3micor1lqj3y2.js.map} +1 -1
  61. package/dist/chunks/pagination-olaypvwr8swsmn8m.js +266 -0
  62. package/dist/chunks/pagination-olaypvwr8swsmn8m.js.map +1 -0
  63. package/dist/chunks/{popover-i951xjcgezeqr4iv.js → popover-nv9cmzbo7mf6bky0.js} +68 -72
  64. package/dist/chunks/popover-nv9cmzbo7mf6bky0.js.map +1 -0
  65. package/dist/chunks/{radio-l2vkcue40d84fmo1.js → radio-ihxbe37us2jnqtzf.js} +38 -38
  66. package/dist/chunks/radio-ihxbe37us2jnqtzf.js.map +1 -0
  67. package/dist/chunks/select-nx6ded5swra74iar.js +213 -0
  68. package/dist/chunks/select-nx6ded5swra74iar.js.map +1 -0
  69. package/dist/chunks/{sensitive-input-kznmknpp5h1grc6k.js → sensitive-input-00fujb510rrn61v9.js} +34 -34
  70. package/dist/chunks/{sensitive-input-kznmknpp5h1grc6k.js.map → sensitive-input-00fujb510rrn61v9.js.map} +1 -1
  71. package/dist/chunks/{sidebar-jepeq7gaf4issuw6.js → sidebar-ltbfius1eolkl8tb.js} +24 -28
  72. package/dist/chunks/sidebar-ltbfius1eolkl8tb.js.map +1 -0
  73. package/dist/chunks/surface-dfgurg5eu3et4vw1.js +29 -0
  74. package/dist/chunks/surface-dfgurg5eu3et4vw1.js.map +1 -0
  75. package/dist/chunks/{switch-i0zwcp3wq6vsxm1c.js → switch-fbv3iawqo3o3jgap.js} +104 -102
  76. package/dist/chunks/switch-fbv3iawqo3o3jgap.js.map +1 -0
  77. package/dist/chunks/table-of-contents-f813ivi7ta23vqdm.js +88 -0
  78. package/dist/chunks/table-of-contents-f813ivi7ta23vqdm.js.map +1 -0
  79. package/dist/chunks/table-olwwulga2l3hdwlx.js +189 -0
  80. package/dist/chunks/table-olwwulga2l3hdwlx.js.map +1 -0
  81. package/dist/chunks/{tabs-bw92jb303zxw7w4f.js → tabs-lohcglgppp6gj0hp.js} +16 -16
  82. package/dist/chunks/{tabs-bw92jb303zxw7w4f.js.map → tabs-lohcglgppp6gj0hp.js.map} +1 -1
  83. package/dist/chunks/{toast-lrnwby56drs7vtae.js → toast-dg52x89yd231mxhe.js} +30 -30
  84. package/dist/chunks/{toast-lrnwby56drs7vtae.js.map → toast-dg52x89yd231mxhe.js.map} +1 -1
  85. package/dist/chunks/{tooltip-cit9ltlxfuhwctuj.js → tooltip-hikjvdbg3xghnq1x.js} +38 -33
  86. package/dist/chunks/tooltip-hikjvdbg3xghnq1x.js.map +1 -0
  87. package/dist/chunks/{vendor-base-ui-n30qblevnpk9cc5c.js → vendor-base-ui-m5pz3e8c4grg5qmj.js} +46 -43
  88. package/dist/chunks/{vendor-base-ui-n30qblevnpk9cc5c.js.map → vendor-base-ui-m5pz3e8c4grg5qmj.js.map} +1 -1
  89. package/dist/code.js +1 -1
  90. package/dist/components/badge.js +1 -1
  91. package/dist/components/banner.js +1 -1
  92. package/dist/components/breadcrumbs.js +1 -1
  93. package/dist/components/button.js +1 -1
  94. package/dist/components/chart.js +1 -1
  95. package/dist/components/checkbox.js +1 -1
  96. package/dist/components/clipboard-text.js +1 -1
  97. package/dist/components/cloudflare-logo.js +1 -1
  98. package/dist/components/code.js +1 -1
  99. package/dist/components/combobox.js +1 -1
  100. package/dist/components/command-palette.js +1 -1
  101. package/dist/components/dialog.js +1 -1
  102. package/dist/components/dropdown.js +1 -1
  103. package/dist/components/empty.js +1 -1
  104. package/dist/components/field.js +1 -1
  105. package/dist/components/flow.js +2 -2
  106. package/dist/components/flow.js.map +1 -1
  107. package/dist/components/grid.js +1 -1
  108. package/dist/components/input.js +3 -3
  109. package/dist/components/label.js +1 -1
  110. package/dist/components/layer-card.js +1 -1
  111. package/dist/components/link.js +1 -1
  112. package/dist/components/loader.js +1 -1
  113. package/dist/components/menubar.js +1 -1
  114. package/dist/components/meter.js +1 -1
  115. package/dist/components/pagination.js +1 -1
  116. package/dist/components/popover.js +1 -1
  117. package/dist/components/radio.js +1 -1
  118. package/dist/components/select.js +1 -1
  119. package/dist/components/sensitive-input.js +1 -1
  120. package/dist/components/sidebar.js +1 -1
  121. package/dist/components/surface.js +1 -1
  122. package/dist/components/switch.js +1 -1
  123. package/dist/components/table-of-contents.js +8 -0
  124. package/dist/components/table-of-contents.js.map +1 -0
  125. package/dist/components/table.js +1 -1
  126. package/dist/components/tabs.js +1 -1
  127. package/dist/components/toast.js +2 -2
  128. package/dist/components/tooltip.js +1 -1
  129. package/dist/index.js +128 -124
  130. package/dist/index.js.map +1 -1
  131. package/dist/primitives/accordion.js +1 -1
  132. package/dist/primitives/alert-dialog.js +1 -1
  133. package/dist/primitives/autocomplete.js +1 -1
  134. package/dist/primitives/avatar.js +1 -1
  135. package/dist/primitives/button.js +1 -1
  136. package/dist/primitives/checkbox-group.js +1 -1
  137. package/dist/primitives/checkbox.js +1 -1
  138. package/dist/primitives/collapsible.js +1 -1
  139. package/dist/primitives/combobox.js +1 -1
  140. package/dist/primitives/context-menu.js +1 -1
  141. package/dist/primitives/csp-provider.js +1 -1
  142. package/dist/primitives/dialog.js +1 -1
  143. package/dist/primitives/direction-provider.js +1 -1
  144. package/dist/primitives/drawer.js +1 -1
  145. package/dist/primitives/field.js +1 -1
  146. package/dist/primitives/fieldset.js +1 -1
  147. package/dist/primitives/form.js +1 -1
  148. package/dist/primitives/input.js +1 -1
  149. package/dist/primitives/menu.js +1 -1
  150. package/dist/primitives/menubar.js +1 -1
  151. package/dist/primitives/meter.js +1 -1
  152. package/dist/primitives/navigation-menu.js +1 -1
  153. package/dist/primitives/number-field.js +1 -1
  154. package/dist/primitives/popover.js +1 -1
  155. package/dist/primitives/preview-card.js +1 -1
  156. package/dist/primitives/progress.js +1 -1
  157. package/dist/primitives/radio-group.js +1 -1
  158. package/dist/primitives/radio.js +1 -1
  159. package/dist/primitives/scroll-area.js +1 -1
  160. package/dist/primitives/select.js +1 -1
  161. package/dist/primitives/separator.js +1 -1
  162. package/dist/primitives/slider.js +1 -1
  163. package/dist/primitives/switch.js +1 -1
  164. package/dist/primitives/tabs.js +1 -1
  165. package/dist/primitives/toast.js +1 -1
  166. package/dist/primitives/toggle-group.js +1 -1
  167. package/dist/primitives/toggle.js +1 -1
  168. package/dist/primitives/toolbar.js +1 -1
  169. package/dist/primitives/tooltip.js +1 -1
  170. package/dist/primitives.js +1 -1
  171. package/dist/scripts/theme-generator/config.d.ts.map +1 -1
  172. package/dist/scripts/theme-generator/config.js +32 -113
  173. package/dist/scripts/theme-generator/config.js.map +1 -1
  174. package/dist/src/components/badge/badge.d.ts +61 -79
  175. package/dist/src/components/badge/badge.d.ts.map +1 -1
  176. package/dist/src/components/banner/banner.d.ts +3 -3
  177. package/dist/src/components/button/button.d.ts +3 -3
  178. package/dist/src/components/button/button.d.ts.map +1 -1
  179. package/dist/src/components/chart/EChart.d.ts +18 -2
  180. package/dist/src/components/chart/EChart.d.ts.map +1 -1
  181. package/dist/src/components/chart/TimeseriesChart.d.ts.map +1 -1
  182. package/dist/src/components/chart/index.d.ts +1 -1
  183. package/dist/src/components/chart/index.d.ts.map +1 -1
  184. package/dist/src/components/checkbox/checkbox.d.ts +1 -1
  185. package/dist/src/components/code/code.d.ts.map +1 -1
  186. package/dist/src/components/combobox/combobox.d.ts +16 -2
  187. package/dist/src/components/combobox/combobox.d.ts.map +1 -1
  188. package/dist/src/components/dropdown/dropdown.d.ts.map +1 -1
  189. package/dist/src/components/input/input-area.d.ts.map +1 -1
  190. package/dist/src/components/input/input.d.ts +1 -2
  191. package/dist/src/components/input/input.d.ts.map +1 -1
  192. package/dist/src/components/label/label.d.ts.map +1 -1
  193. package/dist/src/components/layer-card/layer-card.d.ts +39 -5
  194. package/dist/src/components/layer-card/layer-card.d.ts.map +1 -1
  195. package/dist/src/components/loader/loader.d.ts +7 -1
  196. package/dist/src/components/loader/loader.d.ts.map +1 -1
  197. package/dist/src/components/menubar/menubar.d.ts.map +1 -1
  198. package/dist/src/components/pagination/pagination.d.ts +62 -2
  199. package/dist/src/components/pagination/pagination.d.ts.map +1 -1
  200. package/dist/src/components/popover/popover.d.ts +35 -8
  201. package/dist/src/components/popover/popover.d.ts.map +1 -1
  202. package/dist/src/components/radio/radio.d.ts +2 -2
  203. package/dist/src/components/select/select.d.ts +115 -7
  204. package/dist/src/components/select/select.d.ts.map +1 -1
  205. package/dist/src/components/sensitive-input/sensitive-input.d.ts +1 -1
  206. package/dist/src/components/sidebar/sidebar.d.ts +2 -2
  207. package/dist/src/components/sidebar/sidebar.d.ts.map +1 -1
  208. package/dist/src/components/surface/index.d.ts +3 -0
  209. package/dist/src/components/surface/index.d.ts.map +1 -1
  210. package/dist/src/components/surface/surface.d.ts +14 -10
  211. package/dist/src/components/surface/surface.d.ts.map +1 -1
  212. package/dist/src/components/switch/switch.d.ts.map +1 -1
  213. package/dist/src/components/table/table.d.ts.map +1 -1
  214. package/dist/src/components/table-of-contents/index.d.ts +2 -0
  215. package/dist/src/components/table-of-contents/index.d.ts.map +1 -0
  216. package/dist/src/components/table-of-contents/table-of-contents.d.ts +70 -0
  217. package/dist/src/components/table-of-contents/table-of-contents.d.ts.map +1 -0
  218. package/dist/src/components/toast/toast.d.ts +1 -1
  219. package/dist/src/components/tooltip/tooltip.d.ts +25 -6
  220. package/dist/src/components/tooltip/tooltip.d.ts.map +1 -1
  221. package/dist/src/index.d.ts +6 -2
  222. package/dist/src/index.d.ts.map +1 -1
  223. package/dist/styles/kumo-binding.css +4 -0
  224. package/dist/styles/kumo-standalone.css +1 -1
  225. package/dist/styles/theme-fedramp.css +3 -3
  226. package/dist/styles/theme-kumo.css +66 -127
  227. package/package.json +5 -1
  228. package/scripts/component-registry/index.test.ts +4 -4
  229. package/scripts/component-registry/metadata.ts +3 -3
  230. package/scripts/theme-generator/config.ts +37 -116
  231. package/dist/chunks/Legend-o0ntojbaplmszwk0.js.map +0 -1
  232. package/dist/chunks/badge-n80t3z8u9ttlxi20.js +0 -120
  233. package/dist/chunks/badge-n80t3z8u9ttlxi20.js.map +0 -1
  234. package/dist/chunks/button-odxi0hp4fvi5i2w3.js.map +0 -1
  235. package/dist/chunks/checkbox-dx8x0rzv582yjv7n.js.map +0 -1
  236. package/dist/chunks/code-liq1g6f5lhee305d.js.map +0 -1
  237. package/dist/chunks/combobox-9fhjzprab46csmon.js.map +0 -1
  238. package/dist/chunks/command-palette-kenx2bbdzd4kpx36.js.map +0 -1
  239. package/dist/chunks/dialog-e05ysa8t2fklw065.js.map +0 -1
  240. package/dist/chunks/input-area-nq40szg9110on89c.js +0 -74
  241. package/dist/chunks/input-area-nq40szg9110on89c.js.map +0 -1
  242. package/dist/chunks/input-group-hbebbyh8fo6aqydn.js.map +0 -1
  243. package/dist/chunks/input-kvhyo3p4859bexvx.js +0 -109
  244. package/dist/chunks/input-kvhyo3p4859bexvx.js.map +0 -1
  245. package/dist/chunks/label-j9owppbgnn35mebg.js +0 -62
  246. package/dist/chunks/layer-card-l5yjvrxry1dhte57.js +0 -44
  247. package/dist/chunks/layer-card-l5yjvrxry1dhte57.js.map +0 -1
  248. package/dist/chunks/loader-m5wfmqwgucrr4i5v.js.map +0 -1
  249. package/dist/chunks/menubar-abojnm0uwjuni8ok.js +0 -92
  250. package/dist/chunks/menubar-abojnm0uwjuni8ok.js.map +0 -1
  251. package/dist/chunks/pagination-pbd7qqik97ac0l7m.js +0 -224
  252. package/dist/chunks/pagination-pbd7qqik97ac0l7m.js.map +0 -1
  253. package/dist/chunks/popover-i951xjcgezeqr4iv.js.map +0 -1
  254. package/dist/chunks/radio-l2vkcue40d84fmo1.js.map +0 -1
  255. package/dist/chunks/select-paedwa3nlhpq82ua.js +0 -132
  256. package/dist/chunks/select-paedwa3nlhpq82ua.js.map +0 -1
  257. package/dist/chunks/sidebar-jepeq7gaf4issuw6.js.map +0 -1
  258. package/dist/chunks/surface-blo81kgy9g0sexgm.js +0 -36
  259. package/dist/chunks/surface-blo81kgy9g0sexgm.js.map +0 -1
  260. package/dist/chunks/switch-i0zwcp3wq6vsxm1c.js.map +0 -1
  261. package/dist/chunks/table-nrcw19tlpduayukl.js +0 -183
  262. package/dist/chunks/table-nrcw19tlpduayukl.js.map +0 -1
  263. package/dist/chunks/tooltip-cit9ltlxfuhwctuj.js.map +0 -1
@@ -0,0 +1,88 @@
1
+ "use client";
2
+ import { jsx as a, jsxs as u, Fragment as C } from "react/jsx-runtime";
3
+ import { forwardRef as l, isValidElement as k, cloneElement as v } from "react";
4
+ import { c as o } from "./cn-ct4n7r74mh8y0f48.js";
5
+ const m = {
6
+ state: {
7
+ default: {
8
+ classes: "text-kumo-subtle hover:bg-kumo-tint hover:text-kumo-default hover:font-medium",
9
+ description: "Inactive section link"
10
+ },
11
+ active: {
12
+ classes: "text-kumo-default font-medium",
13
+ description: "Currently visible / active section"
14
+ }
15
+ }
16
+ }, g = {
17
+ state: "default"
18
+ }, y = "group relative block w-full truncate rounded-md py-1 pl-5 text-sm text-left no-underline transition-all duration-500", h = "absolute inset-y-0 left-0.5 w-0.5 rounded-full transition-all duration-200 bg-kumo-brand", d = l(
19
+ ({ className: e, "aria-label": t = "Table of contents", ...s }, n) => /* @__PURE__ */ a("nav", { ref: n, "aria-label": t, className: e, ...s })
20
+ ), f = l(({ className: e, ...t }, s) => /* @__PURE__ */ a(
21
+ "p",
22
+ {
23
+ ref: s,
24
+ className: o(
25
+ "mb-3 text-xs font-semibold tracking-wide text-kumo-subtle uppercase",
26
+ e
27
+ ),
28
+ ...t
29
+ }
30
+ )), b = l(({ className: e, ...t }, s) => /* @__PURE__ */ a(
31
+ "div",
32
+ {
33
+ ref: s,
34
+ className: o(
35
+ "relative space-y-1.5 before:absolute before:inset-y-0 before:left-0.5 before:w-px before:bg-kumo-line",
36
+ e
37
+ ),
38
+ ...t
39
+ }
40
+ )), p = l(({ active: e = !1, className: t, children: s, render: n, ...i }, r) => {
41
+ const N = e ? m.state.active.classes : m.state.default.classes, x = o(y, N, t), O = /* @__PURE__ */ u(C, { children: [
42
+ /* @__PURE__ */ a(
43
+ "span",
44
+ {
45
+ "aria-hidden": "true",
46
+ className: o(
47
+ h,
48
+ e ? "opacity-100" : "opacity-0 group-hover:opacity-60"
49
+ )
50
+ }
51
+ ),
52
+ /* @__PURE__ */ a("span", { className: "block min-w-0 leading-5", children: s })
53
+ ] }), c = {
54
+ ref: r,
55
+ "aria-current": e ? "true" : void 0,
56
+ className: x,
57
+ children: O,
58
+ ...i
59
+ };
60
+ return n && k(n) ? v(n, c) : /* @__PURE__ */ a("a", { ...c });
61
+ }), T = l(({ label: e, href: t, className: s, children: n, ...i }, r) => /* @__PURE__ */ u("div", { ref: r, className: o("mt-3", s), ...i, children: [
62
+ t ? /* @__PURE__ */ a(
63
+ "a",
64
+ {
65
+ href: t,
66
+ className: "mb-1.5 block pl-5 text-xs font-medium text-kumo-subtle no-underline hover:text-kumo-default",
67
+ children: e
68
+ }
69
+ ) : /* @__PURE__ */ a("p", { className: "mb-1.5 pl-5 text-xs font-medium text-kumo-subtle", children: e }),
70
+ /* @__PURE__ */ a("div", { className: "space-y-1.5 pl-3", children: n })
71
+ ] }));
72
+ d.displayName = "TableOfContents";
73
+ f.displayName = "TableOfContents.Title";
74
+ b.displayName = "TableOfContents.List";
75
+ p.displayName = "TableOfContents.Item";
76
+ T.displayName = "TableOfContents.Group";
77
+ const I = Object.assign(d, {
78
+ Title: f,
79
+ List: b,
80
+ Item: p,
81
+ Group: T
82
+ });
83
+ export {
84
+ m as K,
85
+ I as T,
86
+ g as a
87
+ };
88
+ //# sourceMappingURL=table-of-contents-f813ivi7ta23vqdm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-of-contents-f813ivi7ta23vqdm.js","sources":["../../src/components/table-of-contents/table-of-contents.tsx"],"sourcesContent":["import { cloneElement, forwardRef, isValidElement } from \"react\";\nimport { cn } from \"../../utils/cn\";\n\n/** TableOfContents item state variant definitions. */\nexport const KUMO_TABLE_OF_CONTENTS_VARIANTS = {\n state: {\n default: {\n classes:\n \"text-kumo-subtle hover:bg-kumo-tint hover:text-kumo-default hover:font-medium\",\n description: \"Inactive section link\",\n },\n active: {\n classes: \"text-kumo-default font-medium\",\n description: \"Currently visible / active section\",\n },\n },\n} as const;\n\nexport const KUMO_TABLE_OF_CONTENTS_DEFAULT_VARIANTS = {\n state: \"default\",\n} as const;\n\nexport type KumoTableOfContentsState =\n keyof typeof KUMO_TABLE_OF_CONTENTS_VARIANTS.state;\n\nconst ITEM_BASE =\n \"group relative block w-full truncate rounded-md py-1 pl-5 text-sm text-left no-underline transition-all duration-500\";\n\nconst INDICATOR_BASE =\n \"absolute inset-y-0 left-0.5 w-0.5 rounded-full transition-all duration-200 bg-kumo-brand\";\n\nexport type TableOfContentsProps = React.HTMLAttributes<HTMLElement>;\n\nconst TableOfContentsRoot = forwardRef<HTMLElement, TableOfContentsProps>(\n (\n { className, \"aria-label\": ariaLabel = \"Table of contents\", ...props },\n ref,\n ) => (\n <nav ref={ref} aria-label={ariaLabel} className={className} {...props} />\n ),\n);\n\nexport type TableOfContentsTitleProps =\n React.HTMLAttributes<HTMLParagraphElement>;\n\nconst TableOfContentsTitle = forwardRef<\n HTMLParagraphElement,\n TableOfContentsTitleProps\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\n \"mb-3 text-xs font-semibold tracking-wide text-kumo-subtle uppercase\",\n className,\n )}\n {...props}\n />\n));\n\nexport type TableOfContentsListProps = React.HTMLAttributes<HTMLDivElement>;\n\nconst TableOfContentsList = forwardRef<\n HTMLDivElement,\n TableOfContentsListProps\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"relative space-y-1.5 before:absolute before:inset-y-0 before:left-0.5 before:w-px before:bg-kumo-line\",\n className,\n )}\n {...props}\n />\n));\nexport interface TableOfContentsItemProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n /** Whether this item represents the currently active section. */\n active?: boolean;\n /**\n * Custom element to render as the link. Use this to integrate with\n * framework routers (e.g., Next.js `<Link>`, React Router `<NavLink>`).\n * The element receives all anchor props including `href`, `className`, and `children`.\n *\n * @example\n * ```tsx\n * <TableOfContents.Item render={<Link />} href=\"/intro\" active>\n * Introduction\n * </TableOfContents.Item>\n * ```\n */\n render?: React.ReactElement;\n}\n\nconst TableOfContentsItem = forwardRef<\n HTMLAnchorElement,\n TableOfContentsItemProps\n>(({ active = false, className, children, render, ...props }, ref) => {\n const stateClasses = active\n ? KUMO_TABLE_OF_CONTENTS_VARIANTS.state.active.classes\n : KUMO_TABLE_OF_CONTENTS_VARIANTS.state.default.classes;\n\n const combinedClassName = cn(ITEM_BASE, stateClasses, className);\n\n const innerContent = (\n <>\n <span\n aria-hidden=\"true\"\n className={cn(\n INDICATOR_BASE,\n active ? \"opacity-100\" : \"opacity-0 group-hover:opacity-60\",\n )}\n />\n <span className=\"block min-w-0 leading-5\">{children}</span>\n </>\n );\n\n const sharedProps = {\n ref,\n \"aria-current\": active ? (\"true\" as const) : undefined,\n className: combinedClassName,\n children: innerContent,\n ...props,\n };\n\n // If a render prop is provided, clone it with our props\n if (render && isValidElement(render)) {\n return cloneElement(render, sharedProps);\n }\n\n // Default to anchor tag\n // oxlint-disable-next-line anchor-has-content -- children are in sharedProps\n return <a {...sharedProps} />;\n});\n\nexport interface TableOfContentsGroupProps extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n \"title\"\n> {\n /** Label displayed above the group's items. */\n label: string;\n /** URL the group label links to. */\n href?: string;\n}\n\nconst TableOfContentsGroup = forwardRef<\n HTMLDivElement,\n TableOfContentsGroupProps\n>(({ label, href, className, children, ...props }, ref) => (\n <div ref={ref} className={cn(\"mt-3\", className)} {...props}>\n {href ? (\n <a\n href={href}\n className=\"mb-1.5 block pl-5 text-xs font-medium text-kumo-subtle no-underline hover:text-kumo-default\"\n >\n {label}\n </a>\n ) : (\n <p className=\"mb-1.5 pl-5 text-xs font-medium text-kumo-subtle\">\n {label}\n </p>\n )}\n <div className=\"space-y-1.5 pl-3\">{children}</div>\n </div>\n));\n\nTableOfContentsRoot.displayName = \"TableOfContents\";\nTableOfContentsTitle.displayName = \"TableOfContents.Title\";\nTableOfContentsList.displayName = \"TableOfContents.List\";\nTableOfContentsItem.displayName = \"TableOfContents.Item\";\nTableOfContentsGroup.displayName = \"TableOfContents.Group\";\n\n/**\n * TableOfContents — presentational compound component for section navigation.\n *\n * Purely visual; all interaction logic (scroll tracking, active state management)\n * is left to the consumer.\n *\n * @example\n * ```tsx\n * <TableOfContents>\n * <TableOfContents.Title>On this page</TableOfContents.Title>\n * <TableOfContents.List>\n * <TableOfContents.Item href=\"#intro\" active>Introduction</TableOfContents.Item>\n * <TableOfContents.Group label=\"Getting Started\">\n * <TableOfContents.Item href=\"#install\">Installation</TableOfContents.Item>\n * <TableOfContents.Item href=\"#setup\">Setup</TableOfContents.Item>\n * </TableOfContents.Group>\n * </TableOfContents.List>\n * </TableOfContents>\n * ```\n */\nexport const TableOfContents = Object.assign(TableOfContentsRoot, {\n Title: TableOfContentsTitle,\n List: TableOfContentsList,\n Item: TableOfContentsItem,\n Group: TableOfContentsGroup,\n});\n"],"names":["KUMO_TABLE_OF_CONTENTS_VARIANTS","KUMO_TABLE_OF_CONTENTS_DEFAULT_VARIANTS","ITEM_BASE","INDICATOR_BASE","TableOfContentsRoot","forwardRef","className","ariaLabel","props","ref","TableOfContentsTitle","jsx","cn","TableOfContentsList","TableOfContentsItem","active","children","render","stateClasses","combinedClassName","innerContent","jsxs","Fragment","sharedProps","isValidElement","cloneElement","TableOfContentsGroup","label","href","TableOfContents"],"mappings":"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"}
@@ -0,0 +1,189 @@
1
+ "use client";
2
+ import { jsx as s } from "react/jsx-runtime";
3
+ import { forwardRef as n } from "react";
4
+ import { c as r } from "./cn-ct4n7r74mh8y0f48.js";
5
+ import { C as f } from "./checkbox-mwgmohffm22ut13s.js";
6
+ const d = {
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
+ sticky: {
28
+ left: {
29
+ classes: "sticky left-0",
30
+ description: "Pin column to the left edge of the scroll container"
31
+ },
32
+ right: {
33
+ classes: "sticky right-0",
34
+ description: "Pin column to the right edge of the scroll container"
35
+ }
36
+ }
37
+ }, h = (e, a) => {
38
+ const t = d.sticky[e].classes, o = a === "head" ? "z-2" : "z-1", c = e === "right" ? "before:-left-6" : "before:-right-6", l = "before:pointer-events-none before:absolute before:inset-y-0 before:w-6";
39
+ return a === "cell" ? r(t, o, "bg-kumo-base", l, c, e === "right" ? "before:bg-gradient-to-r before:from-transparent before:to-kumo-base" : "before:bg-gradient-to-l before:from-transparent before:to-kumo-base") : r(t, o, "bg-kumo-base group-data-[compact]/header:bg-kumo-elevated", l, c, e === "right" ? "before:bg-gradient-to-r before:from-transparent before:to-kumo-base group-data-[compact]/header:before:to-kumo-elevated" : "before:bg-gradient-to-l before:from-transparent before:to-kumo-base group-data-[compact]/header:before:to-kumo-elevated");
40
+ }, v = {
41
+ layout: "auto",
42
+ variant: "default"
43
+ }, g = n(({ layout: e = "auto", ...a }, t) => {
44
+ const o = r(
45
+ "isolate w-full",
46
+ // isolate creates a stacking context so z-0/z-1/z-2 never leak out
47
+ d.layout[e].classes,
48
+ "[&_td]:border-b [&_td]:border-kumo-fill [&_tr:last-child_td]:border-b-0",
49
+ // Row border
50
+ "[&_td]:p-3",
51
+ // Cell padding
52
+ "[&_th]:border-b [&_th]:border-kumo-fill [&_th]:p-3 [&_th]:font-semibold [&_th]:text-base",
53
+ // Header styles
54
+ "[&_th]:bg-kumo-base",
55
+ // Header background color
56
+ "text-left text-kumo-default",
57
+ a.className
58
+ );
59
+ return /* @__PURE__ */ s("table", { ref: t, ...a, className: o });
60
+ }), p = n(({ variant: e = "default", sticky: a, ...t }, o) => {
61
+ const c = e === "compact", l = r(
62
+ "group/header",
63
+ c && "[&_th]:bg-kumo-elevated [&_th]:py-2 text-xs text-kumo-strong",
64
+ a && "[&_th]:sticky [&_th]:top-0 [&_th]:z-1",
65
+ t.className
66
+ );
67
+ return /* @__PURE__ */ s(
68
+ "thead",
69
+ {
70
+ ref: o,
71
+ ...t,
72
+ className: l,
73
+ ...c && { "data-compact": "" }
74
+ }
75
+ );
76
+ }), m = n(({ sticky: e, ...a }, t) => {
77
+ const o = r(
78
+ "group relative",
79
+ e && h(e, "head"),
80
+ a.className
81
+ );
82
+ return /* @__PURE__ */ s("th", { ref: t, ...a, className: o });
83
+ }), k = n(({ variant: e = v.variant, ...a }, t) => {
84
+ const o = r(
85
+ d.variant[e].classes,
86
+ a.className
87
+ );
88
+ return /* @__PURE__ */ s("tr", { ref: t, ...a, className: o });
89
+ }), N = n((e, a) => /* @__PURE__ */ s("tbody", { ref: a, ...e })), u = n(({ sticky: e, ...a }, t) => {
90
+ const o = r(
91
+ e && h(e, "cell"),
92
+ a.className
93
+ );
94
+ return /* @__PURE__ */ s("td", { ref: t, ...a, className: o });
95
+ }), y = n((e, a) => /* @__PURE__ */ s("tfoot", { ref: a, ...e })), T = n((e, a) => /* @__PURE__ */ s(
96
+ "button",
97
+ {
98
+ ref: a,
99
+ ...e,
100
+ type: "button",
101
+ "aria-label": "Resize column",
102
+ className: r(
103
+ "invisible h-full group-hover:visible",
104
+ // Make the handle invisible by default
105
+ "w-[10px]",
106
+ // Hitting area
107
+ "flex items-center justify-center",
108
+ // Center the handle
109
+ "cursor-col-resize touch-none select-none",
110
+ // Prevent selection and touch events
111
+ "absolute top-0 right-0",
112
+ // Position the handle
113
+ "m-0 bg-kumo-base p-0"
114
+ // Override the stratus button styles
115
+ ),
116
+ children: /* @__PURE__ */ s("span", { className: "h-5 w-[2px] rounded bg-kumo-hairline" })
117
+ }
118
+ )), C = n(
119
+ ({ checked: e, indeterminate: a, onValueChange: t, label: o, disabled: c, ...l }, b) => /* @__PURE__ */ s(
120
+ u,
121
+ {
122
+ ref: b,
123
+ ...l,
124
+ className: r("w-10 leading-none", l.className),
125
+ children: /* @__PURE__ */ s(
126
+ f,
127
+ {
128
+ checked: e,
129
+ indeterminate: a,
130
+ onCheckedChange: (i) => {
131
+ t?.(i);
132
+ },
133
+ "aria-label": o ?? "Select row",
134
+ disabled: c,
135
+ className: "relative before:absolute before:-inset-3 before:content-['']"
136
+ }
137
+ )
138
+ }
139
+ )
140
+ ), _ = n(
141
+ ({ checked: e, indeterminate: a, onValueChange: t, label: o, disabled: c, ...l }, b) => /* @__PURE__ */ s(
142
+ m,
143
+ {
144
+ ref: b,
145
+ ...l,
146
+ className: r("w-10 leading-none", l.className),
147
+ children: /* @__PURE__ */ s(
148
+ f,
149
+ {
150
+ checked: e,
151
+ indeterminate: a,
152
+ onCheckedChange: (i) => {
153
+ t?.(i);
154
+ },
155
+ "aria-label": o ?? "Select all rows",
156
+ disabled: c,
157
+ className: "relative before:absolute before:-inset-3 before:content-['']"
158
+ }
159
+ )
160
+ }
161
+ )
162
+ );
163
+ g.displayName = "Table";
164
+ N.displayName = "Table.Body";
165
+ m.displayName = "Table.Head";
166
+ k.displayName = "Table.Row";
167
+ u.displayName = "Table.Cell";
168
+ y.displayName = "Table.Footer";
169
+ p.displayName = "Table.Header";
170
+ T.displayName = "Table.ResizeHandle";
171
+ C.displayName = "Table.CheckCell";
172
+ _.displayName = "Table.CheckHead";
173
+ const A = Object.assign(g, {
174
+ Header: p,
175
+ Head: m,
176
+ Row: k,
177
+ Body: N,
178
+ Cell: u,
179
+ CheckCell: C,
180
+ CheckHead: _,
181
+ Footer: y,
182
+ ResizeHandle: T
183
+ });
184
+ export {
185
+ v as K,
186
+ A as T,
187
+ d as a
188
+ };
189
+ //# sourceMappingURL=table-olwwulga2l3hdwlx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-olwwulga2l3hdwlx.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 sticky: {\n left: {\n classes: \"sticky left-0\",\n description: \"Pin column to the left edge of the scroll container\",\n },\n right: {\n classes: \"sticky right-0\",\n description: \"Pin column to the right edge of the scroll container\",\n },\n },\n} as const;\n\nexport type KumoTableStickyColumn = keyof typeof KUMO_TABLE_VARIANTS.sticky;\n\n/**\n * Shared sticky-column styles for `<th>` and `<td>`.\n *\n * - Opaque background so scrolling content doesn't show through.\n * - Gradient fade on the inner edge so the sticky boundary isn't a hard clip.\n * - z-index kept to z-0/z-1/z-2 within the table's `isolate` stacking context:\n * - `z-0` — normal cells (default)\n * - `z-1` — sticky body cells (`<td>`)\n * - `z-2` — sticky header cells (`<th>`) so they sit above sticky body cells\n *\n * Header cells use `:has()` to detect if they're in a compact header (which has\n * `bg-kumo-elevated`) and adjust both the background and gradient fade colors.\n */\nconst stickyColumnClasses = (\n side: KumoTableStickyColumn,\n /** \"head\" renders at z-2, \"cell\" at z-1 */\n element: \"head\" | \"cell\",\n) => {\n const base = KUMO_TABLE_VARIANTS.sticky[side].classes;\n const z = element === \"head\" ? \"z-2\" : \"z-1\";\n\n const fadePosition = side === \"right\" ? \"before:-left-6\" : \"before:-right-6\";\n const fadeBase =\n \"before:pointer-events-none before:absolute before:inset-y-0 before:w-6\";\n\n if (element === \"cell\") {\n // Body cells always use kumo-base\n const fade =\n side === \"right\"\n ? \"before:bg-gradient-to-r before:from-transparent before:to-kumo-base\"\n : \"before:bg-gradient-to-l before:from-transparent before:to-kumo-base\";\n return cn(base, z, \"bg-kumo-base\", fadeBase, fadePosition, fade);\n }\n\n // Header cells: use kumo-base by default, kumo-elevated when in compact header\n // The compact header applies a data attribute we can target with :has()\n const bg = \"bg-kumo-base group-data-[compact]/header:bg-kumo-elevated\";\n const fade =\n side === \"right\"\n ? \"before:bg-gradient-to-r before:from-transparent before:to-kumo-base group-data-[compact]/header:before:to-kumo-elevated\"\n : \"before:bg-gradient-to-l before:from-transparent before:to-kumo-base group-data-[compact]/header:before:to-kumo-elevated\";\n\n return cn(base, z, bg, fadeBase, fadePosition, fade);\n};\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 \"isolate w-full\", // isolate creates a stacking context so z-0/z-1/z-2 never leak out\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 * Make the header row stick to the top of the scroll container.\n * Requires the table's parent to have a constrained height with\n * `overflow-y: auto`.\n */\n sticky?: boolean;\n }\n>(({ variant = \"default\", sticky, ...props }, ref) => {\n const isCompact = variant === \"compact\";\n const className = cn(\n \"group/header\",\n isCompact && \"[&_th]:bg-kumo-elevated [&_th]:py-2 text-xs text-kumo-strong\",\n sticky && \"[&_th]:sticky [&_th]:top-0 [&_th]:z-1\",\n props.className,\n );\n\n return (\n <thead\n ref={ref}\n {...props}\n className={className}\n {...(isCompact && { \"data-compact\": \"\" })}\n />\n );\n});\n\nconst TableHead = forwardRef<\n HTMLTableCellElement,\n React.HTMLAttributes<HTMLTableCellElement> & {\n /**\n * Pin this header cell to the left or right edge of the scroll container.\n * Adds `position: sticky`, an opaque background, and a gradient fade on the\n * inner edge. Sticky header columns render at `z-2` so they sit above both\n * normal cells and sticky body cells (`z-1`).\n */\n sticky?: KumoTableStickyColumn;\n }\n>(({ sticky, ...props }, ref) => {\n const className = cn(\n \"group relative\",\n sticky && stickyColumnClasses(sticky, \"head\"),\n props.className,\n );\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 /**\n * Pin this cell to the left or right edge of the scroll container.\n * Adds `position: sticky`, an opaque background, and a gradient fade on\n * the inner edge. Requires the table's parent to have `overflow-x: auto`.\n */\n sticky?: KumoTableStickyColumn;\n }\n>(({ sticky, ...props }, ref) => {\n const className = cn(\n sticky && stickyColumnClasses(sticky, \"cell\"),\n props.className,\n );\n return <td ref={ref} {...props} className={className} />;\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-hairline\" />\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","stickyColumnClasses","side","element","base","z","fadePosition","fadeBase","cn","KUMO_TABLE_DEFAULT_VARIANTS","TableRoot","forwardRef","layout","props","ref","className","jsx","TableHeader","variant","sticky","isCompact","TableHead","TableRow","TableBody","TableCell","TableFooter","TableResizeHandle","TableCheckCell","checked","indeterminate","onValueChange","label","disabled","Checkbox","newChecked","TableCheckHead","Table"],"mappings":";;;;;AAKO,MAAMA,IAAsB;AAAA,EACjC,QAAQ;AAAA,IACN,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,OAAO;AAAA,MACL,SAAS;AAAA,MACT,aACE;AAAA,IAAA;AAAA,EACJ;AAAA,EAEF,SAAS;AAAA,IACP,SAAS;AAAA,MACP,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,UAAU;AAAA,MACR,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,EACf;AAAA,EAEF,QAAQ;AAAA,IACN,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,OAAO;AAAA,MACL,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,EACf;AAEJ,GAiBMC,IAAsB,CAC1BC,GAEAC,MACG;AACH,QAAMC,IAAOJ,EAAoB,OAAOE,CAAI,EAAE,SACxCG,IAAIF,MAAY,SAAS,QAAQ,OAEjCG,IAAeJ,MAAS,UAAU,mBAAmB,mBACrDK,IACJ;AAEF,SAAIJ,MAAY,SAMPK,EAAGJ,GAAMC,GAAG,gBAAgBE,GAAUD,GAH3CJ,MAAS,UACL,wEACA,qEACyD,IAW1DM,EAAGJ,GAAMC,GANL,6DAMYE,GAAUD,GAJ/BJ,MAAS,UACL,4HACA,yHAE6C;AACrD,GAEaO,IAA8B;AAAA,EACzC,QAAQ;AAAA,EACR,SAAS;AACX,GA0BMC,IAAYC,EAWhB,CAAC,EAAE,QAAAC,IAAS,QAAQ,GAAGC,EAAA,GAASC,MAAQ;AACxC,QAAMC,IAAYP;AAAA,IAChB;AAAA;AAAA,IACAR,EAAoB,OAAOY,CAAM,EAAE;AAAA,IACnC;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA,IACAC,EAAM;AAAA,EAAA;AAGR,SAAO,gBAAAG,EAAC,SAAA,EAAM,KAAAF,GAAW,GAAGD,GAAO,WAAAE,GAAsB;AAC3D,CAAC,GAEKE,IAAcN,EAWlB,CAAC,EAAE,SAAAO,IAAU,WAAW,QAAAC,GAAQ,GAAGN,EAAA,GAASC,MAAQ;AACpD,QAAMM,IAAYF,MAAY,WACxBH,IAAYP;AAAA,IAChB;AAAA,IACAY,KAAa;AAAA,IACbD,KAAU;AAAA,IACVN,EAAM;AAAA,EAAA;AAGR,SACE,gBAAAG;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAF;AAAA,MACC,GAAGD;AAAA,MACJ,WAAAE;AAAA,MACC,GAAIK,KAAa,EAAE,gBAAgB,GAAA;AAAA,IAAG;AAAA,EAAA;AAG7C,CAAC,GAEKC,IAAYV,EAWhB,CAAC,EAAE,QAAAQ,GAAQ,GAAGN,EAAA,GAASC,MAAQ;AAC/B,QAAMC,IAAYP;AAAA,IAChB;AAAA,IACAW,KAAUlB,EAAoBkB,GAAQ,MAAM;AAAA,IAC5CN,EAAM;AAAA,EAAA;AAER,SAAO,gBAAAG,EAAC,MAAA,EAAG,KAAAF,GAAW,GAAGD,GAAO,WAAAE,GAAsB;AACxD,CAAC,GAEKO,IAAWX,EAKf,CAAC,EAAE,SAAAO,IAAUT,EAA4B,SAAS,GAAGI,EAAA,GAASC,MAAQ;AACtE,QAAMC,IAAYP;AAAA,IAChBR,EAAoB,QAAQkB,CAAO,EAAE;AAAA,IACrCL,EAAM;AAAA,EAAA;AAGR,SAAO,gBAAAG,EAAC,MAAA,EAAG,KAAAF,GAAW,GAAGD,GAAO,WAAAE,GAAsB;AACxD,CAAC,GAEKQ,IAAYZ,EAGhB,CAACE,GAAOC,MACD,gBAAAE,EAAC,SAAA,EAAM,KAAAF,GAAW,GAAGD,EAAA,CAAO,CACpC,GAEKW,IAAYb,EAUhB,CAAC,EAAE,QAAAQ,GAAQ,GAAGN,EAAA,GAASC,MAAQ;AAC/B,QAAMC,IAAYP;AAAA,IAChBW,KAAUlB,EAAoBkB,GAAQ,MAAM;AAAA,IAC5CN,EAAM;AAAA,EAAA;AAER,SAAO,gBAAAG,EAAC,MAAA,EAAG,KAAAF,GAAW,GAAGD,GAAO,WAAAE,GAAsB;AACxD,CAAC,GAEKU,IAAcd,EAGlB,CAACE,GAAOC,MACD,gBAAAE,EAAC,SAAA,EAAM,KAAAF,GAAW,GAAGD,EAAA,CAAO,CACpC,GAEKa,IAAoBf,EAGxB,CAACE,GAAOC,MAEN,gBAAAE;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAF;AAAA,IACC,GAAGD;AAAA,IACJ,MAAK;AAAA,IACL,cAAW;AAAA,IACX,WAAWL;AAAA,MACT;AAAA;AAAA,MACA;AAAA;AAAA,MACA;AAAA;AAAA,MACA;AAAA;AAAA,MACA;AAAA;AAAA,MACA;AAAA;AAAA,IAAA;AAAA,IAGF,UAAA,gBAAAQ,EAAC,QAAA,EAAK,WAAU,uCAAA,CAAuC;AAAA,EAAA;AAAA,CAG5D,GAMKW,IAAiBhB;AAAA,EAUrB,CACE,EAAE,SAAAiB,GAAS,eAAAC,GAAe,eAAAC,GAAe,OAAAC,GAAO,UAAAC,GAAU,GAAGnB,EAAA,GAC7DC,MAGE,gBAAAE;AAAA,IAACQ;AAAA,IAAA;AAAA,MACC,KAAAV;AAAA,MACC,GAAGD;AAAA,MACJ,WAAWL,EAAG,qBAAqBK,EAAM,SAAS;AAAA,MAElD,UAAA,gBAAAG;AAAA,QAACiB;AAAA,QAAA;AAAA,UACC,SAAAL;AAAA,UACA,eAAAC;AAAA,UACA,iBAAiB,CAACK,MAAe;AAC/B,YAAAJ,IAAgBI,CAAU;AAAA,UAC5B;AAAA,UACA,cAAYH,KAAS;AAAA,UACrB,UAAAC;AAAA,UACA,WAAU;AAAA,QAAA;AAAA,MAAA;AAAA,IACZ;AAAA,EAAA;AAIR,GAEMG,IAAiBxB;AAAA,EAUrB,CACE,EAAE,SAAAiB,GAAS,eAAAC,GAAe,eAAAC,GAAe,OAAAC,GAAO,UAAAC,GAAU,GAAGnB,EAAA,GAC7DC,MAGE,gBAAAE;AAAA,IAACK;AAAA,IAAA;AAAA,MACC,KAAAP;AAAA,MACC,GAAGD;AAAA,MACJ,WAAWL,EAAG,qBAAqBK,EAAM,SAAS;AAAA,MAElD,UAAA,gBAAAG;AAAA,QAACiB;AAAA,QAAA;AAAA,UACC,SAAAL;AAAA,UACA,eAAAC;AAAA,UACA,iBAAiB,CAACK,MAAe;AAC/B,YAAAJ,IAAgBI,CAAU;AAAA,UAC5B;AAAA,UACA,cAAYH,KAAS;AAAA,UACrB,UAAAC;AAAA,UACA,WAAU;AAAA,QAAA;AAAA,MAAA;AAAA,IACZ;AAAA,EAAA;AAIR;AAEAtB,EAAU,cAAc;AACxBa,EAAU,cAAc;AACxBF,EAAU,cAAc;AACxBC,EAAS,cAAc;AACvBE,EAAU,cAAc;AACxBC,EAAY,cAAc;AAC1BR,EAAY,cAAc;AAC1BS,EAAkB,cAAc;AAChCC,EAAe,cAAc;AAC7BQ,EAAe,cAAc;AA4BtB,MAAMC,IAAQ,OAAO,OAAO1B,GAAW;AAAA,EAC5C,QAAQO;AAAA,EACR,MAAMI;AAAA,EACN,KAAKC;AAAA,EACL,MAAMC;AAAA,EACN,MAAMC;AAAA,EACN,WAAWG;AAAA,EACX,WAAWQ;AAAA,EACX,QAAQV;AAAA,EACR,cAAcC;AAChB,CAAC;"}
@@ -1,28 +1,28 @@
1
1
  "use client";
2
2
  import { jsxs as d, jsx as a } from "react/jsx-runtime";
3
3
  import { c as s } from "./cn-ct4n7r74mh8y0f48.js";
4
- import { b6 as x, b7 as T, b8 as w, b9 as N } from "./vendor-base-ui-n30qblevnpk9cc5c.js";
4
+ import { b9 as x, ba as T, bb as w, bc as N } from "./vendor-base-ui-m5pz3e8c4grg5qmj.js";
5
5
  const V = {
6
6
  variant: "segmented"
7
7
  };
8
8
  function z({
9
9
  tabs: u,
10
- value: n,
10
+ value: i,
11
11
  selectedValue: m,
12
12
  onValueChange: c,
13
13
  activateOnFocus: b,
14
14
  className: g,
15
- listClassName: v,
16
- indicatorClassName: f,
17
- variant: i = V.variant
15
+ listClassName: h,
16
+ indicatorClassName: v,
17
+ variant: n = V.variant
18
18
  }) {
19
19
  const r = u ?? [];
20
20
  if (r.length === 0)
21
21
  return null;
22
- const h = r[0]?.value, l = n !== void 0, p = {
23
- value: l ? n : void 0,
24
- defaultValue: l ? void 0 : m ?? h
25
- }, t = i === "segmented", o = i === "underline";
22
+ const f = r[0]?.value, l = i !== void 0, p = {
23
+ value: l ? i : void 0,
24
+ defaultValue: l ? void 0 : m ?? f
25
+ }, t = n === "segmented", o = n === "underline";
26
26
  return /* @__PURE__ */ d(
27
27
  x,
28
28
  {
@@ -40,9 +40,9 @@ function z({
40
40
  activateOnFocus: b,
41
41
  className: s(
42
42
  "scrollbar-hide relative flex min-w-0 shrink items-stretch",
43
- t && "h-9 rounded-lg bg-kumo-recessed px-0.5 ring ring-kumo-line/70",
44
- o && "h-7 gap-4 border-b border-kumo-ring pb-2",
45
- v
43
+ t && "h-9 rounded-lg bg-kumo-recessed px-0.5 ring ring-kumo-hairline/70",
44
+ o && "h-7 gap-4 border-b border-kumo-hairline pb-2",
45
+ h
46
46
  ),
47
47
  children: [
48
48
  r.map((e) => /* @__PURE__ */ a(
@@ -51,7 +51,7 @@ function z({
51
51
  value: e.value,
52
52
  render: e.render,
53
53
  className: s(
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",
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-hairline",
55
55
  t && "my-0.5 rounded-md px-2.5 text-kumo-strong hover:text-kumo-default aria-selected:text-kumo-default focus-visible:ring-inset",
56
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
57
  e.className
@@ -71,9 +71,9 @@ function z({
71
71
  "absolute z-1 left-0",
72
72
  "w-(--active-tab-width) translate-x-(--active-tab-left) transition-all duration-200",
73
73
  "data-[rendered=false]:scale-90 data-[rendered=false]:opacity-0",
74
- t && "top-(--active-tab-top) h-(--active-tab-height) rounded-md bg-kumo-base shadow-sm ring ring-kumo-ring",
74
+ t && "top-(--active-tab-top) h-(--active-tab-height) rounded-md bg-kumo-base shadow-sm ring ring-kumo-line",
75
75
  o && "bottom-0 h-0.5 bg-kumo-brand",
76
- f
76
+ v
77
77
  )
78
78
  }
79
79
  )
@@ -89,4 +89,4 @@ function z({
89
89
  export {
90
90
  z as T
91
91
  };
92
- //# sourceMappingURL=tabs-bw92jb303zxw7w4f.js.map
92
+ //# sourceMappingURL=tabs-lohcglgppp6gj0hp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tabs-bw92jb303zxw7w4f.js","sources":["../../src/components/tabs/tabs.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport type { TabsTab } from \"@base-ui/react/tabs\";\nimport { Tabs as TabsPrimitive } from \"@base-ui/react/tabs\";\nimport { cn } from \"../../utils/cn\";\n\n/** Tabs variant definitions. */\nexport const KUMO_TABS_VARIANTS = {\n variant: [\"segmented\", \"underline\"],\n} as const;\n\nexport const KUMO_TABS_DEFAULT_VARIANTS = {\n variant: \"segmented\",\n} as const;\n\nexport const KUMO_TABS_STYLING = {\n container: {\n height: 34,\n borderRadius: 8,\n background: \"color-accent\",\n padding: 1,\n },\n tab: {\n paddingX: 10,\n verticalMargin: 1,\n fontSize: 16,\n fontWeight: 500,\n borderRadius: 8,\n activeColor: \"text-color-surface\",\n inactiveColor: \"text-color-label\",\n },\n indicator: {\n background: \"color-surface-secondary\",\n ring: \"color-color-2\",\n borderRadius: 6,\n shadow: \"shadow-sm\",\n },\n} as const;\n\n// Derived types from KUMO_TABS_VARIANTS\nexport interface KumoTabsVariantsProps {\n /**\n * Tab style.\n * - `\"segmented\"` — Pill-shaped indicator on a filled track\n * - `\"underline\"` — Underline indicator below tab text\n * @default \"segmented\"\n */\n variant?: (typeof KUMO_TABS_VARIANTS.variant)[number];\n}\n\n/** Configuration for a single tab within the Tabs component. */\nexport type TabsItem = {\n /** Unique identifier for the tab, used as the controlled value. */\n value: string;\n /** Display content for the tab trigger. */\n label: ReactNode;\n /** Additional CSS classes for this tab trigger. */\n className?: string;\n /**\n * Custom render function or element to replace the tab element (e.g. for link-based tabs).\n * When using a function, it receives the props to spread on the element and the tab's state.\n */\n render?: TabsTab.Props[\"render\"];\n};\n\n/**\n * Tabs component props.\n *\n * @example\n * ```tsx\n * <Tabs\n * tabs={[\n * { value: \"overview\", label: \"Overview\" },\n * { value: \"settings\", label: \"Settings\" },\n * ]}\n * value={activeTab}\n * onValueChange={setActiveTab}\n * />\n * ```\n */\nexport type TabsProps = KumoTabsVariantsProps & {\n /** Array of tab items to render. */\n tabs?: TabsItem[];\n /** Controlled value. When set, component becomes controlled. */\n value?: string;\n /** Default selected value for uncontrolled mode. Ignored when `value` is set. */\n selectedValue?: string;\n /** Callback fired when the active tab changes. */\n onValueChange?: (value: string) => void;\n /**\n * When `true`, tabs are activated immediately upon receiving focus via arrow keys.\n * When `false` (default), tabs receive focus but require Enter/Space to activate.\n */\n activateOnFocus?: boolean;\n /** Additional CSS classes for the root element. */\n className?: string;\n /** Additional CSS classes for the tab list element. */\n listClassName?: string;\n /** Additional CSS classes for the indicator element. */\n indicatorClassName?: string;\n};\n\n/**\n * Tab navigation component with segmented or underline style.\n * Built on Base UI Tabs with animated active indicator.\n *\n * @example\n * ```tsx\n * <Tabs\n * variant=\"segmented\"\n * tabs={[{ value: \"tab1\", label: \"Tab 1\" }, { value: \"tab2\", label: \"Tab 2\" }]}\n * value={active}\n * onValueChange={setActive}\n * />\n * ```\n */\nexport function Tabs({\n tabs,\n value,\n selectedValue,\n onValueChange,\n activateOnFocus,\n className,\n listClassName,\n indicatorClassName,\n variant = KUMO_TABS_DEFAULT_VARIANTS.variant,\n}: TabsProps) {\n const items: TabsItem[] = tabs ?? [];\n\n if (items.length === 0) {\n return null;\n }\n\n const fallbackValue = items[0]?.value;\n const isControlled = value !== undefined;\n const rootProps = {\n value: isControlled ? value : undefined,\n defaultValue: isControlled ? undefined : (selectedValue ?? fallbackValue),\n };\n\n const isSegmented = variant === \"segmented\";\n const isUnderline = variant === \"underline\";\n\n return (\n <TabsPrimitive.Root\n {...rootProps}\n className={cn(\"relative isolate min-w-0 font-medium\", className)}\n onValueChange={(nextValue) => {\n const stringValue = String(nextValue);\n onValueChange?.(stringValue);\n }}\n >\n {/* Background element for segmented variant */}\n {isSegmented && (\n <div className=\"absolute inset-x-0 top-1/2 z-0 h-9 -translate-y-1/2 rounded-lg bg-kumo-recessed\" />\n )}\n <TabsPrimitive.List\n activateOnFocus={activateOnFocus}\n className={cn(\n \"scrollbar-hide relative flex min-w-0 shrink items-stretch\",\n isSegmented && \"h-9 rounded-lg bg-kumo-recessed px-0.5 ring ring-kumo-line/70\",\n isUnderline && \"h-7 gap-4 border-b border-kumo-ring pb-2\",\n listClassName,\n )}\n >\n {items.map((tab) => (\n <TabsPrimitive.Tab\n key={tab.value}\n value={tab.value}\n render={tab.render}\n className={cn(\n \"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\",\n isSegmented &&\n \"my-0.5 rounded-md px-2.5 text-kumo-strong hover:text-kumo-default aria-selected:text-kumo-default focus-visible:ring-inset\",\n isUnderline &&\n \"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\",\n tab.className,\n )}\n >\n {tab.label}\n </TabsPrimitive.Tab>\n ))}\n <TabsPrimitive.Indicator\n render={(props) => (\n <div\n {...props}\n className={cn(\n \"absolute z-1 left-0\",\n \"w-(--active-tab-width) translate-x-(--active-tab-left) transition-all duration-200\",\n \"data-[rendered=false]:scale-90 data-[rendered=false]:opacity-0\",\n isSegmented &&\n \"top-(--active-tab-top) h-(--active-tab-height) rounded-md bg-kumo-base shadow-sm ring ring-kumo-ring\",\n isUnderline && \"bottom-0 h-0.5 bg-kumo-brand\",\n indicatorClassName,\n )}\n />\n )}\n />\n </TabsPrimitive.List>\n </TabsPrimitive.Root>\n );\n}\n"],"names":["KUMO_TABS_DEFAULT_VARIANTS","Tabs","tabs","value","selectedValue","onValueChange","activateOnFocus","className","listClassName","indicatorClassName","variant","items","fallbackValue","isControlled","rootProps","isSegmented","isUnderline","jsxs","TabsPrimitive.Root","cn","nextValue","stringValue","jsx","TabsPrimitive.List","tab","TabsPrimitive.Tab","TabsPrimitive.Indicator","props"],"mappings":";;;;AAUO,MAAMA,IAA6B;AAAA,EACxC,SAAS;AACX;AAuGO,SAASC,EAAK;AAAA,EACnB,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,eAAAC;AAAA,EACA,eAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,eAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,SAAAC,IAAUV,EAA2B;AACvC,GAAc;AACZ,QAAMW,IAAoBT,KAAQ,CAAA;AAElC,MAAIS,EAAM,WAAW;AACnB,WAAO;AAGT,QAAMC,IAAgBD,EAAM,CAAC,GAAG,OAC1BE,IAAeV,MAAU,QACzBW,IAAY;AAAA,IAChB,OAAOD,IAAeV,IAAQ;AAAA,IAC9B,cAAcU,IAAe,SAAaT,KAAiBQ;AAAA,EAAA,GAGvDG,IAAcL,MAAY,aAC1BM,IAAcN,MAAY;AAEhC,SACE,gBAAAO;AAAA,IAACC;AAAAA,IAAA;AAAA,MACE,GAAGJ;AAAA,MACJ,WAAWK,EAAG,wCAAwCZ,CAAS;AAAA,MAC/D,eAAe,CAACa,MAAc;AAC5B,cAAMC,IAAc,OAAOD,CAAS;AACpC,QAAAf,IAAgBgB,CAAW;AAAA,MAC7B;AAAA,MAGC,UAAA;AAAA,QAAAN,KACC,gBAAAO,EAAC,OAAA,EAAI,WAAU,kFAAA,CAAkF;AAAA,QAEnG,gBAAAL;AAAA,UAACM;AAAAA,UAAA;AAAA,YACC,iBAAAjB;AAAA,YACA,WAAWa;AAAA,cACT;AAAA,cACAJ,KAAe;AAAA,cACfC,KAAe;AAAA,cACfR;AAAA,YAAA;AAAA,YAGD,UAAA;AAAA,cAAAG,EAAM,IAAI,CAACa,MACV,gBAAAF;AAAA,gBAACG;AAAAA,gBAAA;AAAA,kBAEC,OAAOD,EAAI;AAAA,kBACX,QAAQA,EAAI;AAAA,kBACZ,WAAWL;AAAA,oBACT;AAAA,oBACAJ,KACE;AAAA,oBACFC,KACE;AAAA,oBACFQ,EAAI;AAAA,kBAAA;AAAA,kBAGL,UAAAA,EAAI;AAAA,gBAAA;AAAA,gBAZAA,EAAI;AAAA,cAAA,CAcZ;AAAA,cACD,gBAAAF;AAAA,gBAACI;AAAAA,gBAAA;AAAA,kBACC,QAAQ,CAACC,MACP,gBAAAL;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACE,GAAGK;AAAA,sBACJ,WAAWR;AAAA,wBACT;AAAA,wBACA;AAAA,wBACA;AAAA,wBACAJ,KACE;AAAA,wBACFC,KAAe;AAAA,wBACfP;AAAA,sBAAA;AAAA,oBACF;AAAA,kBAAA;AAAA,gBACF;AAAA,cAAA;AAAA,YAEJ;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAGN;"}
1
+ {"version":3,"file":"tabs-lohcglgppp6gj0hp.js","sources":["../../src/components/tabs/tabs.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport type { TabsTab } from \"@base-ui/react/tabs\";\nimport { Tabs as TabsPrimitive } from \"@base-ui/react/tabs\";\nimport { cn } from \"../../utils/cn\";\n\n/** Tabs variant definitions. */\nexport const KUMO_TABS_VARIANTS = {\n variant: [\"segmented\", \"underline\"],\n} as const;\n\nexport const KUMO_TABS_DEFAULT_VARIANTS = {\n variant: \"segmented\",\n} as const;\n\nexport const KUMO_TABS_STYLING = {\n container: {\n height: 34,\n borderRadius: 8,\n background: \"color-accent\",\n padding: 1,\n },\n tab: {\n paddingX: 10,\n verticalMargin: 1,\n fontSize: 16,\n fontWeight: 500,\n borderRadius: 8,\n activeColor: \"text-color-surface\",\n inactiveColor: \"text-color-label\",\n },\n indicator: {\n background: \"color-surface-secondary\",\n ring: \"color-color-2\",\n borderRadius: 6,\n shadow: \"shadow-sm\",\n },\n} as const;\n\n// Derived types from KUMO_TABS_VARIANTS\nexport interface KumoTabsVariantsProps {\n /**\n * Tab style.\n * - `\"segmented\"` — Pill-shaped indicator on a filled track\n * - `\"underline\"` — Underline indicator below tab text\n * @default \"segmented\"\n */\n variant?: (typeof KUMO_TABS_VARIANTS.variant)[number];\n}\n\n/** Configuration for a single tab within the Tabs component. */\nexport type TabsItem = {\n /** Unique identifier for the tab, used as the controlled value. */\n value: string;\n /** Display content for the tab trigger. */\n label: ReactNode;\n /** Additional CSS classes for this tab trigger. */\n className?: string;\n /**\n * Custom render function or element to replace the tab element (e.g. for link-based tabs).\n * When using a function, it receives the props to spread on the element and the tab's state.\n */\n render?: TabsTab.Props[\"render\"];\n};\n\n/**\n * Tabs component props.\n *\n * @example\n * ```tsx\n * <Tabs\n * tabs={[\n * { value: \"overview\", label: \"Overview\" },\n * { value: \"settings\", label: \"Settings\" },\n * ]}\n * value={activeTab}\n * onValueChange={setActiveTab}\n * />\n * ```\n */\nexport type TabsProps = KumoTabsVariantsProps & {\n /** Array of tab items to render. */\n tabs?: TabsItem[];\n /** Controlled value. When set, component becomes controlled. */\n value?: string;\n /** Default selected value for uncontrolled mode. Ignored when `value` is set. */\n selectedValue?: string;\n /** Callback fired when the active tab changes. */\n onValueChange?: (value: string) => void;\n /**\n * When `true`, tabs are activated immediately upon receiving focus via arrow keys.\n * When `false` (default), tabs receive focus but require Enter/Space to activate.\n */\n activateOnFocus?: boolean;\n /** Additional CSS classes for the root element. */\n className?: string;\n /** Additional CSS classes for the tab list element. */\n listClassName?: string;\n /** Additional CSS classes for the indicator element. */\n indicatorClassName?: string;\n};\n\n/**\n * Tab navigation component with segmented or underline style.\n * Built on Base UI Tabs with animated active indicator.\n *\n * @example\n * ```tsx\n * <Tabs\n * variant=\"segmented\"\n * tabs={[{ value: \"tab1\", label: \"Tab 1\" }, { value: \"tab2\", label: \"Tab 2\" }]}\n * value={active}\n * onValueChange={setActive}\n * />\n * ```\n */\nexport function Tabs({\n tabs,\n value,\n selectedValue,\n onValueChange,\n activateOnFocus,\n className,\n listClassName,\n indicatorClassName,\n variant = KUMO_TABS_DEFAULT_VARIANTS.variant,\n}: TabsProps) {\n const items: TabsItem[] = tabs ?? [];\n\n if (items.length === 0) {\n return null;\n }\n\n const fallbackValue = items[0]?.value;\n const isControlled = value !== undefined;\n const rootProps = {\n value: isControlled ? value : undefined,\n defaultValue: isControlled ? undefined : (selectedValue ?? fallbackValue),\n };\n\n const isSegmented = variant === \"segmented\";\n const isUnderline = variant === \"underline\";\n\n return (\n <TabsPrimitive.Root\n {...rootProps}\n className={cn(\"relative isolate min-w-0 font-medium\", className)}\n onValueChange={(nextValue) => {\n const stringValue = String(nextValue);\n onValueChange?.(stringValue);\n }}\n >\n {/* Background element for segmented variant */}\n {isSegmented && (\n <div className=\"absolute inset-x-0 top-1/2 z-0 h-9 -translate-y-1/2 rounded-lg bg-kumo-recessed\" />\n )}\n <TabsPrimitive.List\n activateOnFocus={activateOnFocus}\n className={cn(\n \"scrollbar-hide relative flex min-w-0 shrink items-stretch\",\n isSegmented && \"h-9 rounded-lg bg-kumo-recessed px-0.5 ring ring-kumo-hairline/70\",\n isUnderline && \"h-7 gap-4 border-b border-kumo-hairline pb-2\",\n listClassName,\n )}\n >\n {items.map((tab) => (\n <TabsPrimitive.Tab\n key={tab.value}\n value={tab.value}\n render={tab.render}\n className={cn(\n \"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-hairline\",\n isSegmented &&\n \"my-0.5 rounded-md px-2.5 text-kumo-strong hover:text-kumo-default aria-selected:text-kumo-default focus-visible:ring-inset\",\n isUnderline &&\n \"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\",\n tab.className,\n )}\n >\n {tab.label}\n </TabsPrimitive.Tab>\n ))}\n <TabsPrimitive.Indicator\n render={(props) => (\n <div\n {...props}\n className={cn(\n \"absolute z-1 left-0\",\n \"w-(--active-tab-width) translate-x-(--active-tab-left) transition-all duration-200\",\n \"data-[rendered=false]:scale-90 data-[rendered=false]:opacity-0\",\n isSegmented &&\n \"top-(--active-tab-top) h-(--active-tab-height) rounded-md bg-kumo-base shadow-sm ring ring-kumo-line\",\n isUnderline && \"bottom-0 h-0.5 bg-kumo-brand\",\n indicatorClassName,\n )}\n />\n )}\n />\n </TabsPrimitive.List>\n </TabsPrimitive.Root>\n );\n}\n"],"names":["KUMO_TABS_DEFAULT_VARIANTS","Tabs","tabs","value","selectedValue","onValueChange","activateOnFocus","className","listClassName","indicatorClassName","variant","items","fallbackValue","isControlled","rootProps","isSegmented","isUnderline","jsxs","TabsPrimitive.Root","cn","nextValue","stringValue","jsx","TabsPrimitive.List","tab","TabsPrimitive.Tab","TabsPrimitive.Indicator","props"],"mappings":";;;;AAUO,MAAMA,IAA6B;AAAA,EACxC,SAAS;AACX;AAuGO,SAASC,EAAK;AAAA,EACnB,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,eAAAC;AAAA,EACA,eAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,eAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,SAAAC,IAAUV,EAA2B;AACvC,GAAc;AACZ,QAAMW,IAAoBT,KAAQ,CAAA;AAElC,MAAIS,EAAM,WAAW;AACnB,WAAO;AAGT,QAAMC,IAAgBD,EAAM,CAAC,GAAG,OAC1BE,IAAeV,MAAU,QACzBW,IAAY;AAAA,IAChB,OAAOD,IAAeV,IAAQ;AAAA,IAC9B,cAAcU,IAAe,SAAaT,KAAiBQ;AAAA,EAAA,GAGvDG,IAAcL,MAAY,aAC1BM,IAAcN,MAAY;AAEhC,SACE,gBAAAO;AAAA,IAACC;AAAAA,IAAA;AAAA,MACE,GAAGJ;AAAA,MACJ,WAAWK,EAAG,wCAAwCZ,CAAS;AAAA,MAC/D,eAAe,CAACa,MAAc;AAC5B,cAAMC,IAAc,OAAOD,CAAS;AACpC,QAAAf,IAAgBgB,CAAW;AAAA,MAC7B;AAAA,MAGC,UAAA;AAAA,QAAAN,KACC,gBAAAO,EAAC,OAAA,EAAI,WAAU,kFAAA,CAAkF;AAAA,QAEnG,gBAAAL;AAAA,UAACM;AAAAA,UAAA;AAAA,YACC,iBAAAjB;AAAA,YACA,WAAWa;AAAA,cACT;AAAA,cACAJ,KAAe;AAAA,cACfC,KAAe;AAAA,cACfR;AAAA,YAAA;AAAA,YAGD,UAAA;AAAA,cAAAG,EAAM,IAAI,CAACa,MACV,gBAAAF;AAAA,gBAACG;AAAAA,gBAAA;AAAA,kBAEC,OAAOD,EAAI;AAAA,kBACX,QAAQA,EAAI;AAAA,kBACZ,WAAWL;AAAA,oBACT;AAAA,oBACAJ,KACE;AAAA,oBACFC,KACE;AAAA,oBACFQ,EAAI;AAAA,kBAAA;AAAA,kBAGL,UAAAA,EAAI;AAAA,gBAAA;AAAA,gBAZAA,EAAI;AAAA,cAAA,CAcZ;AAAA,cACD,gBAAAF;AAAA,gBAACI;AAAAA,gBAAA;AAAA,kBACC,QAAQ,CAACC,MACP,gBAAAL;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACE,GAAGK;AAAA,sBACJ,WAAWR;AAAA,wBACT;AAAA,wBACA;AAAA,wBACA;AAAA,wBACAJ,KACE;AAAA,wBACFC,KAAe;AAAA,wBACfP;AAAA,sBAAA;AAAA,oBACF;AAAA,kBAAA;AAAA,gBACF;AAAA,cAAA;AAAA,YAEJ;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAGN;"}
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  import { jsxs as o, jsx as r, Fragment as E } from "react/jsx-runtime";
3
3
  import { c } from "./cn-ct4n7r74mh8y0f48.js";
4
- import { B as w } from "./button-odxi0hp4fvi5i2w3.js";
4
+ import { B as w } from "./button-oaqi7ykdisyskoos.js";
5
5
  import { u as x } from "./portal-provider-hwmkdmkpvct0cb76.js";
6
6
  import * as a from "react";
7
- import { $ as b, bq as y, a1 as k, a0 as F, a3 as V, br as T, bs as _, a4 as H, bt as N, U as S } from "./vendor-base-ui-n30qblevnpk9cc5c.js";
7
+ import { $ as b, bt as y, a1 as k, a0 as F, a3 as V, bu as T, bv as _, a4 as H, bw as N, U as C } from "./vendor-base-ui-m5pz3e8c4grg5qmj.js";
8
8
  const s = a.forwardRef((t, e) => {
9
9
  const {
10
10
  alt: n,
@@ -34,7 +34,7 @@ const s = a.forwardRef((t, e) => {
34
34
  );
35
35
  });
36
36
  s.displayName = "SSRBase";
37
- const C = /* @__PURE__ */ new Map([
37
+ const S = /* @__PURE__ */ new Map([
38
38
  [
39
39
  "bold",
40
40
  /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.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" }))
@@ -59,9 +59,9 @@ const C = /* @__PURE__ */ new Map([
59
59
  "thin",
60
60
  /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.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" }))
61
61
  ]
62
- ]), m = a.forwardRef((t, e) => /* @__PURE__ */ a.createElement(s, { ref: e, ...t, weights: C }));
62
+ ]), m = a.forwardRef((t, e) => /* @__PURE__ */ a.createElement(s, { ref: e, ...t, weights: S }));
63
63
  m.displayName = "CheckCircleIcon";
64
- const I = /* @__PURE__ */ new Map([
64
+ const Y = /* @__PURE__ */ new Map([
65
65
  [
66
66
  "bold",
67
67
  /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.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" }))
@@ -86,9 +86,9 @@ const I = /* @__PURE__ */ new Map([
86
86
  "thin",
87
87
  /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.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" }))
88
88
  ]
89
- ]), d = a.forwardRef((t, e) => /* @__PURE__ */ a.createElement(s, { ref: e, ...t, weights: I }));
89
+ ]), d = a.forwardRef((t, e) => /* @__PURE__ */ a.createElement(s, { ref: e, ...t, weights: Y }));
90
90
  d.displayName = "InfoIcon";
91
- const Y = /* @__PURE__ */ new Map([
91
+ const I = /* @__PURE__ */ new Map([
92
92
  [
93
93
  "bold",
94
94
  /* @__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" }))
@@ -119,7 +119,7 @@ const Y = /* @__PURE__ */ new Map([
119
119
  "thin",
120
120
  /* @__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" }))
121
121
  ]
122
- ]), u = a.forwardRef((t, e) => /* @__PURE__ */ a.createElement(s, { ref: e, ...t, weights: Y }));
122
+ ]), u = a.forwardRef((t, e) => /* @__PURE__ */ a.createElement(s, { ref: e, ...t, weights: I }));
123
123
  u.displayName = "WarningIcon";
124
124
  const R = /* @__PURE__ */ new Map([
125
125
  [
@@ -214,15 +214,15 @@ const h = {
214
214
  icon: d
215
215
  }
216
216
  }
217
- }, X = {
217
+ }, O = {
218
218
  variant: "default"
219
219
  };
220
- function O({
221
- variant: t = X.variant
220
+ function X({
221
+ variant: t = O.variant
222
222
  } = {}) {
223
223
  return c(
224
224
  // Base styles for toast root
225
- "rounded-xl ring ring-kumo-ring bg-clip-padding p-4 shadow-lg",
225
+ "rounded-xl ring ring-kumo-line bg-clip-padding p-4 shadow-lg",
226
226
  // Apply variant styles from KUMO_TOAST_VARIANTS
227
227
  h.variant[t].classes
228
228
  );
@@ -272,16 +272,16 @@ const B = () => {
272
272
  ...f(t),
273
273
  toasts: t.toasts
274
274
  };
275
- }, Q = () => f(S());
276
- function z({ children: t, container: e }) {
275
+ }, Q = () => f(C());
276
+ function K({ children: t, container: e }) {
277
277
  const n = x();
278
278
  return /* @__PURE__ */ o(b, { children: [
279
279
  t,
280
- /* @__PURE__ */ r(y, { container: e ?? n ?? void 0, children: /* @__PURE__ */ r(k, { 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]", children: /* @__PURE__ */ r(K, {}) }) })
280
+ /* @__PURE__ */ r(y, { container: e ?? n ?? void 0, children: /* @__PURE__ */ r(k, { 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]", children: /* @__PURE__ */ r(U, {}) }) })
281
281
  ] });
282
282
  }
283
- const a1 = z;
284
- function K() {
283
+ const a1 = K;
284
+ function U() {
285
285
  const { toasts: t } = B();
286
286
  return t.map((e) => /* @__PURE__ */ o(
287
287
  V,
@@ -289,7 +289,7 @@ function K() {
289
289
  toast: e,
290
290
  className: c(
291
291
  "absolute right-0 bottom-0 left-auto z-[calc(1000-var(--toast-index))] mr-0 h-[var(--height)] w-full origin-bottom select-none",
292
- O({ variant: e.variant }),
292
+ X({ variant: e.variant }),
293
293
  "[--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))]",
294
294
  "[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]",
295
295
  "after:absolute after:top-full after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:content-['']",
@@ -302,10 +302,10 @@ function K() {
302
302
  e.bump && "animate-toast-bump"
303
303
  ),
304
304
  children: [
305
- /* @__PURE__ */ r(U, { variant: e.variant }),
305
+ /* @__PURE__ */ r(D, { variant: e.variant }),
306
306
  /* @__PURE__ */ o(T, { 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", children: [
307
307
  e.content ?? /* @__PURE__ */ r(E, { children: /* @__PURE__ */ o("div", { className: "flex items-start gap-2", children: [
308
- /* @__PURE__ */ r(j, { variant: e.variant }),
308
+ /* @__PURE__ */ r(P, { variant: e.variant }),
309
309
  /* @__PURE__ */ o("div", { className: "flex flex-col gap-1 overflow-hidden", children: [
310
310
  /* @__PURE__ */ r(
311
311
  _,
@@ -332,14 +332,14 @@ function K() {
332
332
  e.id
333
333
  ));
334
334
  }
335
- const P = {
336
- success: "bg-kumo-success-tint/5",
337
- error: "bg-kumo-danger-tint/5",
338
- warning: "bg-kumo-warning-tint/5",
339
- info: "bg-kumo-info-tint/5"
335
+ const z = {
336
+ success: "bg-kumo-success/5",
337
+ error: "bg-kumo-danger/5",
338
+ warning: "bg-kumo-warning/5",
339
+ info: "bg-kumo-info/5"
340
340
  };
341
- function U({ variant: t }) {
342
- const e = t && P[t];
341
+ function D({ variant: t }) {
342
+ const e = t && z[t];
343
343
  return /* @__PURE__ */ r(
344
344
  "div",
345
345
  {
@@ -347,7 +347,7 @@ function U({ variant: t }) {
347
347
  }
348
348
  );
349
349
  }
350
- function j({ variant: t }) {
350
+ function P({ variant: t }) {
351
351
  if (!t || t === "default") return null;
352
352
  const e = h.variant[t];
353
353
  if (!("icon" in e)) return null;
@@ -355,9 +355,9 @@ function j({ variant: t }) {
355
355
  return /* @__PURE__ */ r(n, { "data-toast-icon": !0, className: "mt-0.5 h-4 w-4 shrink-0", weight: "fill" });
356
356
  }
357
357
  export {
358
- z as T,
358
+ K as T,
359
359
  a1 as a,
360
360
  Q as c,
361
361
  B as u
362
362
  };
363
- //# sourceMappingURL=toast-lrnwby56drs7vtae.js.map
363
+ //# sourceMappingURL=toast-dg52x89yd231mxhe.js.map