@cloudflare/kumo 1.18.0 → 1.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. package/CHANGELOG.md +90 -0
  2. package/ai/component-registry.json +174 -66
  3. package/ai/component-registry.md +836 -503
  4. package/ai/schemas.ts +19 -3
  5. package/dist/.build-complete +1 -1
  6. package/dist/ai/schemas.d.ts +55 -8
  7. package/dist/ai/schemas.d.ts.map +1 -1
  8. package/dist/ai/schemas.js +163 -146
  9. package/dist/ai/schemas.js.map +1 -1
  10. package/dist/chunks/{Legend-o0ntojbaplmszwk0.js → Legend-ks7se6149vsa3tze.js} +127 -118
  11. package/dist/chunks/Legend-ks7se6149vsa3tze.js.map +1 -0
  12. package/dist/chunks/{breadcrumbs-k39s28qx05vbxxth.js → breadcrumbs-ge20hcb3o5spswrk.js} +2 -2
  13. package/dist/chunks/{breadcrumbs-k39s28qx05vbxxth.js.map → breadcrumbs-ge20hcb3o5spswrk.js.map} +1 -1
  14. package/dist/chunks/{button-cdxnqcgzwko8ooha.js → button-oaqi7ykdisyskoos.js} +12 -12
  15. package/dist/chunks/button-oaqi7ykdisyskoos.js.map +1 -0
  16. package/dist/chunks/{checkbox-kt1uojk2f9e0d0h1.js → checkbox-mwgmohffm22ut13s.js} +5 -5
  17. package/dist/chunks/checkbox-mwgmohffm22ut13s.js.map +1 -0
  18. package/dist/chunks/{clipboard-text-vcbvmtne4zjk4b18.js → clipboard-text-dxczqon3d27xp6f0.js} +10 -10
  19. package/dist/chunks/{clipboard-text-vcbvmtne4zjk4b18.js.map → clipboard-text-dxczqon3d27xp6f0.js.map} +1 -1
  20. package/dist/chunks/{cloudflare-logo-bgts2jgsdh7sslw4.js → cloudflare-logo-pbavoe1wu8nr5c4n.js} +9 -9
  21. package/dist/chunks/{cloudflare-logo-bgts2jgsdh7sslw4.js.map → cloudflare-logo-pbavoe1wu8nr5c4n.js.map} +1 -1
  22. package/dist/chunks/{combobox-he2hd9e2ruknq5mp.js → combobox-eaowwt1xr4d23gsn.js} +113 -101
  23. package/dist/chunks/combobox-eaowwt1xr4d23gsn.js.map +1 -0
  24. package/dist/chunks/{command-palette-jc1w07jwakxvj23a.js → command-palette-maqtbmpfev9mysqd.js} +19 -19
  25. package/dist/chunks/command-palette-maqtbmpfev9mysqd.js.map +1 -0
  26. package/dist/chunks/{dialog-oqh8l3l3zutpibxx.js → dialog-e3m5bhs7fds26p9y.js} +25 -25
  27. package/dist/chunks/dialog-e3m5bhs7fds26p9y.js.map +1 -0
  28. package/dist/chunks/{dropdown-ncwhcd912vmone8k.js → dropdown-ewte287db3vyt8t5.js} +94 -92
  29. package/dist/chunks/{dropdown-ncwhcd912vmone8k.js.map → dropdown-ewte287db3vyt8t5.js.map} +1 -1
  30. package/dist/chunks/{empty-cj898km1r8xwuw44.js → empty-dr1eckm2z40euns6.js} +2 -2
  31. package/dist/chunks/{empty-cj898km1r8xwuw44.js.map → empty-dr1eckm2z40euns6.js.map} +1 -1
  32. package/dist/chunks/{field-krp6z6vfbkrvufz2.js → field-bo5gmna16odrrb1q.js} +3 -3
  33. package/dist/chunks/{field-krp6z6vfbkrvufz2.js.map → field-bo5gmna16odrrb1q.js.map} +1 -1
  34. package/dist/chunks/{grid-m9r71jxo2b8q1972.js → grid-hj1ylz16p7g5uelh.js} +2 -2
  35. package/dist/chunks/{grid-m9r71jxo2b8q1972.js.map → grid-hj1ylz16p7g5uelh.js.map} +1 -1
  36. package/dist/chunks/{input-area-no30c09udyjxshu5.js → input-area-jkkkjej6luumrqpa.js} +4 -4
  37. package/dist/chunks/{input-area-no30c09udyjxshu5.js.map → input-area-jkkkjej6luumrqpa.js.map} +1 -1
  38. package/dist/chunks/{input-h48k3uagzrgb98au.js → input-cw05pbqdburghkus.js} +31 -31
  39. package/dist/chunks/input-cw05pbqdburghkus.js.map +1 -0
  40. package/dist/chunks/{input-group-lxdd09p60cf27pe1.js → input-group-lfugneuz71g42n0w.js} +6 -6
  41. package/dist/chunks/input-group-lfugneuz71g42n0w.js.map +1 -0
  42. package/dist/chunks/label-cvyvbqmt4mt757ff.js +68 -0
  43. package/dist/chunks/{label-latndvb1ngem7we8.js.map → label-cvyvbqmt4mt757ff.js.map} +1 -1
  44. package/dist/chunks/layer-card-ljqth3yxgnk04v2o.js +46 -0
  45. package/dist/chunks/layer-card-ljqth3yxgnk04v2o.js.map +1 -0
  46. package/dist/chunks/{link-hn5ejal7nhh0o0b4.js → link-fjnhtxvfe5ieamjf.js} +2 -2
  47. package/dist/chunks/{link-hn5ejal7nhh0o0b4.js.map → link-fjnhtxvfe5ieamjf.js.map} +1 -1
  48. package/dist/chunks/menubar-e5e4zwfagr0wx023.js +96 -0
  49. package/dist/chunks/menubar-e5e4zwfagr0wx023.js.map +1 -0
  50. package/dist/chunks/{meter-gfa1hz9fhjnvx784.js → meter-duj3micor1lqj3y2.js} +2 -2
  51. package/dist/chunks/{meter-gfa1hz9fhjnvx784.js.map → meter-duj3micor1lqj3y2.js.map} +1 -1
  52. package/dist/chunks/pagination-olaypvwr8swsmn8m.js +266 -0
  53. package/dist/chunks/pagination-olaypvwr8swsmn8m.js.map +1 -0
  54. package/dist/chunks/{popover-h300w4vit0s2ayej.js → popover-nv9cmzbo7mf6bky0.js} +70 -74
  55. package/dist/chunks/popover-nv9cmzbo7mf6bky0.js.map +1 -0
  56. package/dist/chunks/{radio-jouttv89lbvhs55r.js → radio-ihxbe37us2jnqtzf.js} +5 -5
  57. package/dist/chunks/radio-ihxbe37us2jnqtzf.js.map +1 -0
  58. package/dist/chunks/select-nx6ded5swra74iar.js +213 -0
  59. package/dist/chunks/select-nx6ded5swra74iar.js.map +1 -0
  60. package/dist/chunks/{sensitive-input-hd4tpqkzifad1yca.js → sensitive-input-00fujb510rrn61v9.js} +4 -4
  61. package/dist/chunks/{sensitive-input-hd4tpqkzifad1yca.js.map → sensitive-input-00fujb510rrn61v9.js.map} +1 -1
  62. package/dist/chunks/{sidebar-hljy3ssm8itc0ucx.js → sidebar-ltbfius1eolkl8tb.js} +22 -26
  63. package/dist/chunks/sidebar-ltbfius1eolkl8tb.js.map +1 -0
  64. package/dist/chunks/surface-dfgurg5eu3et4vw1.js +29 -0
  65. package/dist/chunks/surface-dfgurg5eu3et4vw1.js.map +1 -0
  66. package/dist/chunks/{switch-ihaydbzem62bey4p.js → switch-fbv3iawqo3o3jgap.js} +17 -17
  67. package/dist/chunks/switch-fbv3iawqo3o3jgap.js.map +1 -0
  68. package/dist/chunks/table-of-contents-f813ivi7ta23vqdm.js +88 -0
  69. package/dist/chunks/table-of-contents-f813ivi7ta23vqdm.js.map +1 -0
  70. package/dist/chunks/table-olwwulga2l3hdwlx.js +189 -0
  71. package/dist/chunks/table-olwwulga2l3hdwlx.js.map +1 -0
  72. package/dist/chunks/{tabs-e7eh7l3mpk3xgmwq.js → tabs-lohcglgppp6gj0hp.js} +4 -4
  73. package/dist/chunks/{tabs-e7eh7l3mpk3xgmwq.js.map → tabs-lohcglgppp6gj0hp.js.map} +1 -1
  74. package/dist/chunks/{toast-bpz6iaq54u9jmuu8.js → toast-dg52x89yd231mxhe.js} +4 -4
  75. package/dist/chunks/{toast-bpz6iaq54u9jmuu8.js.map → toast-dg52x89yd231mxhe.js.map} +1 -1
  76. package/dist/chunks/{tooltip-belkznz8t8333h5f.js → tooltip-hikjvdbg3xghnq1x.js} +38 -37
  77. package/dist/chunks/tooltip-hikjvdbg3xghnq1x.js.map +1 -0
  78. package/dist/chunks/{vendor-base-ui-k7bzesq81ie36nya.js → vendor-base-ui-m5pz3e8c4grg5qmj.js} +21 -21
  79. package/dist/chunks/{vendor-base-ui-k7bzesq81ie36nya.js.map → vendor-base-ui-m5pz3e8c4grg5qmj.js.map} +1 -1
  80. package/dist/code.js +1 -1
  81. package/dist/components/breadcrumbs.js +1 -1
  82. package/dist/components/button.js +1 -1
  83. package/dist/components/chart.js +1 -1
  84. package/dist/components/checkbox.js +1 -1
  85. package/dist/components/clipboard-text.js +1 -1
  86. package/dist/components/cloudflare-logo.js +1 -1
  87. package/dist/components/combobox.js +1 -1
  88. package/dist/components/command-palette.js +1 -1
  89. package/dist/components/dialog.js +1 -1
  90. package/dist/components/dropdown.js +1 -1
  91. package/dist/components/empty.js +1 -1
  92. package/dist/components/field.js +1 -1
  93. package/dist/components/flow.js +2 -2
  94. package/dist/components/flow.js.map +1 -1
  95. package/dist/components/grid.js +1 -1
  96. package/dist/components/input.js +3 -3
  97. package/dist/components/label.js +1 -1
  98. package/dist/components/layer-card.js +1 -1
  99. package/dist/components/link.js +1 -1
  100. package/dist/components/menubar.js +1 -1
  101. package/dist/components/meter.js +1 -1
  102. package/dist/components/pagination.js +1 -1
  103. package/dist/components/popover.js +1 -1
  104. package/dist/components/radio.js +1 -1
  105. package/dist/components/select.js +1 -1
  106. package/dist/components/sensitive-input.js +1 -1
  107. package/dist/components/sidebar.js +1 -1
  108. package/dist/components/surface.js +1 -1
  109. package/dist/components/switch.js +1 -1
  110. package/dist/components/table-of-contents.js +8 -0
  111. package/dist/components/table-of-contents.js.map +1 -0
  112. package/dist/components/table.js +1 -1
  113. package/dist/components/tabs.js +1 -1
  114. package/dist/components/toast.js +2 -2
  115. package/dist/components/tooltip.js +1 -1
  116. package/dist/index.js +124 -120
  117. package/dist/index.js.map +1 -1
  118. package/dist/primitives/accordion.js +1 -1
  119. package/dist/primitives/alert-dialog.js +1 -1
  120. package/dist/primitives/autocomplete.js +1 -1
  121. package/dist/primitives/avatar.js +1 -1
  122. package/dist/primitives/button.js +1 -1
  123. package/dist/primitives/checkbox-group.js +1 -1
  124. package/dist/primitives/checkbox.js +1 -1
  125. package/dist/primitives/collapsible.js +1 -1
  126. package/dist/primitives/combobox.js +1 -1
  127. package/dist/primitives/context-menu.js +1 -1
  128. package/dist/primitives/csp-provider.js +1 -1
  129. package/dist/primitives/dialog.js +1 -1
  130. package/dist/primitives/direction-provider.js +1 -1
  131. package/dist/primitives/drawer.js +1 -1
  132. package/dist/primitives/field.js +1 -1
  133. package/dist/primitives/fieldset.js +1 -1
  134. package/dist/primitives/form.js +1 -1
  135. package/dist/primitives/input.js +1 -1
  136. package/dist/primitives/menu.js +1 -1
  137. package/dist/primitives/menubar.js +1 -1
  138. package/dist/primitives/meter.js +1 -1
  139. package/dist/primitives/navigation-menu.js +1 -1
  140. package/dist/primitives/number-field.js +1 -1
  141. package/dist/primitives/popover.js +1 -1
  142. package/dist/primitives/preview-card.js +1 -1
  143. package/dist/primitives/progress.js +1 -1
  144. package/dist/primitives/radio-group.js +1 -1
  145. package/dist/primitives/radio.js +1 -1
  146. package/dist/primitives/scroll-area.js +1 -1
  147. package/dist/primitives/select.js +1 -1
  148. package/dist/primitives/separator.js +1 -1
  149. package/dist/primitives/slider.js +1 -1
  150. package/dist/primitives/switch.js +1 -1
  151. package/dist/primitives/tabs.js +1 -1
  152. package/dist/primitives/toast.js +1 -1
  153. package/dist/primitives/toggle-group.js +1 -1
  154. package/dist/primitives/toggle.js +1 -1
  155. package/dist/primitives/toolbar.js +1 -1
  156. package/dist/primitives/tooltip.js +1 -1
  157. package/dist/primitives.js +1 -1
  158. package/dist/scripts/theme-generator/config.d.ts.map +1 -1
  159. package/dist/scripts/theme-generator/config.js +3 -3
  160. package/dist/scripts/theme-generator/config.js.map +1 -1
  161. package/dist/src/components/button/button.d.ts +1 -1
  162. package/dist/src/components/button/button.d.ts.map +1 -1
  163. package/dist/src/components/chart/EChart.d.ts +18 -2
  164. package/dist/src/components/chart/EChart.d.ts.map +1 -1
  165. package/dist/src/components/chart/TimeseriesChart.d.ts.map +1 -1
  166. package/dist/src/components/chart/index.d.ts +1 -1
  167. package/dist/src/components/chart/index.d.ts.map +1 -1
  168. package/dist/src/components/combobox/combobox.d.ts +16 -2
  169. package/dist/src/components/combobox/combobox.d.ts.map +1 -1
  170. package/dist/src/components/dropdown/dropdown.d.ts.map +1 -1
  171. package/dist/src/components/input/input.d.ts.map +1 -1
  172. package/dist/src/components/label/label.d.ts.map +1 -1
  173. package/dist/src/components/layer-card/layer-card.d.ts +39 -5
  174. package/dist/src/components/layer-card/layer-card.d.ts.map +1 -1
  175. package/dist/src/components/menubar/menubar.d.ts.map +1 -1
  176. package/dist/src/components/pagination/pagination.d.ts +51 -1
  177. package/dist/src/components/pagination/pagination.d.ts.map +1 -1
  178. package/dist/src/components/popover/popover.d.ts +35 -8
  179. package/dist/src/components/popover/popover.d.ts.map +1 -1
  180. package/dist/src/components/radio/radio.d.ts +1 -1
  181. package/dist/src/components/select/select.d.ts +49 -5
  182. package/dist/src/components/select/select.d.ts.map +1 -1
  183. package/dist/src/components/sidebar/sidebar.d.ts +2 -2
  184. package/dist/src/components/sidebar/sidebar.d.ts.map +1 -1
  185. package/dist/src/components/surface/index.d.ts +3 -0
  186. package/dist/src/components/surface/index.d.ts.map +1 -1
  187. package/dist/src/components/surface/surface.d.ts +14 -10
  188. package/dist/src/components/surface/surface.d.ts.map +1 -1
  189. package/dist/src/components/table/table.d.ts.map +1 -1
  190. package/dist/src/components/table-of-contents/index.d.ts +2 -0
  191. package/dist/src/components/table-of-contents/index.d.ts.map +1 -0
  192. package/dist/src/components/table-of-contents/table-of-contents.d.ts +70 -0
  193. package/dist/src/components/table-of-contents/table-of-contents.d.ts.map +1 -0
  194. package/dist/src/components/tooltip/tooltip.d.ts +15 -6
  195. package/dist/src/components/tooltip/tooltip.d.ts.map +1 -1
  196. package/dist/src/index.d.ts +6 -2
  197. package/dist/src/index.d.ts.map +1 -1
  198. package/dist/styles/kumo-binding.css +1 -0
  199. package/dist/styles/kumo-standalone.css +1 -1
  200. package/dist/styles/theme-kumo.css +6 -6
  201. package/package.json +5 -1
  202. package/scripts/theme-generator/config.ts +8 -6
  203. package/dist/chunks/Legend-o0ntojbaplmszwk0.js.map +0 -1
  204. package/dist/chunks/button-cdxnqcgzwko8ooha.js.map +0 -1
  205. package/dist/chunks/checkbox-kt1uojk2f9e0d0h1.js.map +0 -1
  206. package/dist/chunks/combobox-he2hd9e2ruknq5mp.js.map +0 -1
  207. package/dist/chunks/command-palette-jc1w07jwakxvj23a.js.map +0 -1
  208. package/dist/chunks/dialog-oqh8l3l3zutpibxx.js.map +0 -1
  209. package/dist/chunks/input-group-lxdd09p60cf27pe1.js.map +0 -1
  210. package/dist/chunks/input-h48k3uagzrgb98au.js.map +0 -1
  211. package/dist/chunks/label-latndvb1ngem7we8.js +0 -62
  212. package/dist/chunks/layer-card-l5yjvrxry1dhte57.js +0 -44
  213. package/dist/chunks/layer-card-l5yjvrxry1dhte57.js.map +0 -1
  214. package/dist/chunks/menubar-f1pilzooe5mue7c4.js +0 -92
  215. package/dist/chunks/menubar-f1pilzooe5mue7c4.js.map +0 -1
  216. package/dist/chunks/pagination-cu5lm6p5dxuycta4.js +0 -243
  217. package/dist/chunks/pagination-cu5lm6p5dxuycta4.js.map +0 -1
  218. package/dist/chunks/popover-h300w4vit0s2ayej.js.map +0 -1
  219. package/dist/chunks/radio-jouttv89lbvhs55r.js.map +0 -1
  220. package/dist/chunks/select-kva5ru5f673kah1m.js +0 -179
  221. package/dist/chunks/select-kva5ru5f673kah1m.js.map +0 -1
  222. package/dist/chunks/sidebar-hljy3ssm8itc0ucx.js.map +0 -1
  223. package/dist/chunks/surface-cilvbyhmyujz1bee.js +0 -36
  224. package/dist/chunks/surface-cilvbyhmyujz1bee.js.map +0 -1
  225. package/dist/chunks/switch-ihaydbzem62bey4p.js.map +0 -1
  226. package/dist/chunks/table-inweecadl3her7pd.js +0 -183
  227. package/dist/chunks/table-inweecadl3her7pd.js.map +0 -1
  228. package/dist/chunks/tooltip-belkznz8t8333h5f.js.map +0 -1
@@ -1,183 +0,0 @@
1
- "use client";
2
- import { jsx as l } from "react/jsx-runtime";
3
- import { forwardRef as s } from "react";
4
- import { c as r } from "./cn-ct4n7r74mh8y0f48.js";
5
- import { C as f } from "./checkbox-kt1uojk2f9e0d0h1.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 = (t, e) => {
38
- const a = d.sticky[t].classes;
39
- return r(a, e === "head" ? "z-2" : "z-1", "bg-kumo-base", t === "right" ? (
40
- // Gradient fades from transparent on the left to opaque on the right
41
- "before:pointer-events-none before:absolute before:inset-y-0 before:-left-6 before:w-6 before:bg-gradient-to-r before:from-transparent before:to-kumo-base"
42
- ) : "before:pointer-events-none before:absolute before:inset-y-0 before:-right-6 before:w-6 before:bg-gradient-to-l before:from-transparent before:to-kumo-base");
43
- }, v = {
44
- layout: "auto",
45
- variant: "default"
46
- }, N = s(({ layout: t = "auto", ...e }, a) => {
47
- const o = r(
48
- "isolate w-full",
49
- // isolate creates a stacking context so z-0/z-1/z-2 never leak out
50
- d.layout[t].classes,
51
- "[&_td]:border-b [&_td]:border-kumo-fill [&_tr:last-child_td]:border-b-0",
52
- // Row border
53
- "[&_td]:p-3",
54
- // Cell padding
55
- "[&_th]:border-b [&_th]:border-kumo-fill [&_th]:p-3 [&_th]:font-semibold [&_th]:text-base",
56
- // Header styles
57
- "[&_th]:bg-kumo-base",
58
- // Header background color
59
- "text-left text-kumo-default",
60
- e.className
61
- );
62
- return /* @__PURE__ */ l("table", { ref: a, ...e, className: o });
63
- }), y = s(({ variant: t = "default", sticky: e, ...a }, o) => {
64
- const n = r(
65
- t === "compact" && "[&_th]:bg-kumo-elevated [&_th]:py-2 text-xs text-kumo-strong",
66
- e && "[&_th]:sticky [&_th]:top-0 [&_th]:z-1",
67
- a.className
68
- );
69
- return /* @__PURE__ */ l("thead", { ref: o, ...a, className: n });
70
- }), u = s(({ sticky: t, ...e }, a) => {
71
- const o = r(
72
- "group relative",
73
- t && h(t, "head"),
74
- e.className
75
- );
76
- return /* @__PURE__ */ l("th", { ref: a, ...e, className: o });
77
- }), g = s(({ variant: t = v.variant, ...e }, a) => {
78
- const o = r(
79
- d.variant[t].classes,
80
- e.className
81
- );
82
- return /* @__PURE__ */ l("tr", { ref: a, ...e, className: o });
83
- }), T = s((t, e) => /* @__PURE__ */ l("tbody", { ref: e, ...t })), m = s(({ sticky: t, ...e }, a) => {
84
- const o = r(
85
- t && h(t, "cell"),
86
- e.className
87
- );
88
- return /* @__PURE__ */ l("td", { ref: a, ...e, className: o });
89
- }), k = s((t, e) => /* @__PURE__ */ l("tfoot", { ref: e, ...t })), p = s((t, e) => /* @__PURE__ */ l(
90
- "button",
91
- {
92
- ref: e,
93
- ...t,
94
- type: "button",
95
- "aria-label": "Resize column",
96
- className: r(
97
- "invisible h-full group-hover:visible",
98
- // Make the handle invisible by default
99
- "w-[10px]",
100
- // Hitting area
101
- "flex items-center justify-center",
102
- // Center the handle
103
- "cursor-col-resize touch-none select-none",
104
- // Prevent selection and touch events
105
- "absolute top-0 right-0",
106
- // Position the handle
107
- "m-0 bg-kumo-base p-0"
108
- // Override the stratus button styles
109
- ),
110
- children: /* @__PURE__ */ l("span", { className: "h-5 w-[2px] rounded bg-kumo-hairline" })
111
- }
112
- )), _ = s(
113
- ({ checked: t, indeterminate: e, onValueChange: a, label: o, disabled: n, ...c }, i) => /* @__PURE__ */ l(
114
- m,
115
- {
116
- ref: i,
117
- ...c,
118
- className: r("w-10 leading-none", c.className),
119
- children: /* @__PURE__ */ l(
120
- f,
121
- {
122
- checked: t,
123
- indeterminate: e,
124
- onCheckedChange: (b) => {
125
- a?.(b);
126
- },
127
- "aria-label": o ?? "Select row",
128
- disabled: n,
129
- className: "relative before:absolute before:-inset-3 before:content-['']"
130
- }
131
- )
132
- }
133
- )
134
- ), C = s(
135
- ({ checked: t, indeterminate: e, onValueChange: a, label: o, disabled: n, ...c }, i) => /* @__PURE__ */ l(
136
- u,
137
- {
138
- ref: i,
139
- ...c,
140
- className: r("w-10 leading-none", c.className),
141
- children: /* @__PURE__ */ l(
142
- f,
143
- {
144
- checked: t,
145
- indeterminate: e,
146
- onCheckedChange: (b) => {
147
- a?.(b);
148
- },
149
- "aria-label": o ?? "Select all rows",
150
- disabled: n,
151
- className: "relative before:absolute before:-inset-3 before:content-['']"
152
- }
153
- )
154
- }
155
- )
156
- );
157
- N.displayName = "Table";
158
- T.displayName = "Table.Body";
159
- u.displayName = "Table.Head";
160
- g.displayName = "Table.Row";
161
- m.displayName = "Table.Cell";
162
- k.displayName = "Table.Footer";
163
- y.displayName = "Table.Header";
164
- p.displayName = "Table.ResizeHandle";
165
- _.displayName = "Table.CheckCell";
166
- C.displayName = "Table.CheckHead";
167
- const R = Object.assign(N, {
168
- Header: y,
169
- Head: u,
170
- Row: g,
171
- Body: T,
172
- Cell: m,
173
- CheckCell: _,
174
- CheckHead: C,
175
- Footer: k,
176
- ResizeHandle: p
177
- });
178
- export {
179
- v as K,
180
- R as T,
181
- d as a
182
- };
183
- //# sourceMappingURL=table-inweecadl3her7pd.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"table-inweecadl3her7pd.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 */\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 fade =\n side === \"right\"\n ? // Gradient fades from transparent on the left to opaque on the right\n \"before:pointer-events-none before:absolute before:inset-y-0 before:-left-6 before:w-6 before:bg-gradient-to-r before:from-transparent before:to-kumo-base\"\n : \"before:pointer-events-none before:absolute before:inset-y-0 before:-right-6 before:w-6 before:bg-gradient-to-l before:from-transparent before:to-kumo-base\";\n\n const z = element === \"head\" ? \"z-2\" : \"z-1\";\n\n return cn(base, z, \"bg-kumo-base\", 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 className = cn(\n variant === \"compact\" &&\n \"[&_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 <thead ref={ref} {...props} className={className} />;\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","cn","KUMO_TABLE_DEFAULT_VARIANTS","TableRoot","forwardRef","layout","props","ref","className","jsx","TableHeader","variant","sticky","TableHead","TableRow","TableBody","TableCell","TableFooter","TableResizeHandle","TableCheckCell","checked","indeterminate","onValueChange","label","disabled","Checkbox","newChecked","TableCheckHead","Table"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tooltip-belkznz8t8333h5f.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\";\nimport {\n usePortalContainer,\n type PortalContainer,\n} from \"../../utils/portal-provider\";\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 * <Tooltip content=\"Add new item\" asChild>\n * <Button shape=\"square\" icon={PlusIcon} />\n * </Tooltip>\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 * Container element for the portal. Use this to render the tooltip inside\n * a Shadow DOM or custom container. Overrides `KumoPortalProvider` context.\n * @default document.body (or KumoPortalProvider container if set)\n */\n container?: PortalContainer;\n /**\n * How long to wait before closing the tooltip. Specified in milliseconds.\n * @default 0\n */\n closeDelay?: number;\n /**\n * How long to wait before opening the tooltip. Specified in milliseconds.\n * @default 600\n */\n delay?: number;\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 container: containerProp,\n closeDelay,\n delay,\n ...props\n}: TooltipProps) {\n const contextContainer = usePortalContainer();\n const container = containerProp ?? contextContainer ?? undefined;\n\n return (\n <TooltipBase.Root {...props}>\n <TooltipBase.Trigger\n closeDelay={closeDelay}\n delay={delay}\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 container={container}>\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","containerProp","closeDelay","delay","props","contextContainer","usePortalContainer","container","jsxs","TooltipBase.Root","jsx","TooltipBase.Trigger","cn","TooltipBase.Portal","TooltipBase.Positioner","TooltipBase.Popup","TooltipBase.Arrow","ArrowSvg"],"mappings":";;;;;AAiEO,MAAMA,IAAkBC;AA+DxB,SAASC,EAAQ;AAAA,EACtB,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,MAAAC;AAAA,EACA,WAAAC;AAAA,EACA,WAAWC;AAAA,EACX,YAAAC;AAAA,EACA,OAAAC;AAAA,EACA,GAAGC;AACL,GAAiB;AACf,QAAMC,IAAmBC,EAAA,GACnBC,IAAYN,KAAiBI,KAAoB;AAEvD,SACE,gBAAAG,EAACC,GAAA,EAAkB,GAAGL,GACpB,UAAA;AAAA,IAAA,gBAAAM;AAAA,MAACC;AAAAA,MAAA;AAAA,QACC,YAAAT;AAAA,QACA,OAAAC;AAAA,QACA,WAAWS;AAAA;AAAA;AAAA;AAAA,UAIT,CAACd,KACC;AAAA,UACFE;AAAA,QAAA;AAAA,QAEF,QAAQF,IAAWF,IAAsC;AAAA,QAExD,cAAU,SAAaA;AAAA,MAAA;AAAA,IAAA;AAAA,IAE1B,gBAAAc,EAACG,GAAA,EAAmB,WAAAN,GAClB,UAAA,gBAAAG,EAACI,GAAA,EAAuB,OAAAjB,GAAc,MAAAE,GAAY,YAAY,IAC5D,UAAA,gBAAAS;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,UAEXtB;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,GAEL,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;AAiBA,SAASsB,EAASb,GAAoC;AACpD,SACE,gBAAAI,EAAC,OAAA,EAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAQ,GAAGJ,GAC9D,UAAA;AAAA,IAAA,gBAAAM;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;"}