@badnpm/ui 0.0.0-stage → 0.0.1

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 (310) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +193 -2
  3. package/dist/cjs/components/accordion.cjs +24 -0
  4. package/dist/cjs/components/alert-dialog.cjs +56 -0
  5. package/dist/cjs/components/alert.cjs +34 -0
  6. package/dist/cjs/components/aspect-ratio.cjs +12 -0
  7. package/dist/cjs/components/attachment.cjs +80 -0
  8. package/dist/cjs/components/avatar.cjs +31 -0
  9. package/dist/cjs/components/badge.cjs +38 -0
  10. package/dist/cjs/components/breadcrumb.cjs +46 -0
  11. package/dist/cjs/components/bubble.cjs +66 -0
  12. package/dist/cjs/components/button-group.cjs +43 -0
  13. package/dist/cjs/components/button.cjs +41 -0
  14. package/dist/cjs/components/calendar.cjs +100 -0
  15. package/dist/cjs/components/card.cjs +34 -0
  16. package/dist/cjs/components/carousel.cjs +113 -0
  17. package/dist/cjs/components/chart.cjs +160 -0
  18. package/dist/cjs/components/checkbox.cjs +13 -0
  19. package/dist/cjs/components/code-block.cjs +110 -0
  20. package/dist/cjs/components/collapsible.cjs +18 -0
  21. package/dist/cjs/components/combobox.cjs +96 -0
  22. package/dist/cjs/components/command.cjs +46 -0
  23. package/dist/cjs/components/context-menu.cjs +69 -0
  24. package/dist/cjs/components/dialog.cjs +50 -0
  25. package/dist/cjs/components/drawer.cjs +108 -0
  26. package/dist/cjs/components/dropdown-menu.cjs +68 -0
  27. package/dist/cjs/components/empty.cjs +42 -0
  28. package/dist/cjs/components/field.cjs +80 -0
  29. package/dist/cjs/components/hover-card.cjs +20 -0
  30. package/dist/cjs/components/input-group.cjs +66 -0
  31. package/dist/cjs/components/input-otp.cjs +46 -0
  32. package/dist/cjs/components/input.cjs +11 -0
  33. package/dist/cjs/components/item.cjs +91 -0
  34. package/dist/cjs/components/kbd.cjs +14 -0
  35. package/dist/cjs/components/label.cjs +11 -0
  36. package/dist/cjs/components/marker.cjs +41 -0
  37. package/dist/cjs/components/menubar.cjs +75 -0
  38. package/dist/cjs/components/message-scroller.cjs +45 -0
  39. package/dist/cjs/components/message.cjs +30 -0
  40. package/dist/cjs/components/native-select.cjs +19 -0
  41. package/dist/cjs/components/navigation-menu.cjs +43 -0
  42. package/dist/cjs/components/pagination.cjs +36 -0
  43. package/dist/cjs/components/popover.cjs +31 -0
  44. package/dist/cjs/components/progress.cjs +28 -0
  45. package/dist/cjs/components/questionnaire.cjs +70 -0
  46. package/dist/cjs/components/radio-group.cjs +16 -0
  47. package/dist/cjs/components/resizable.cjs +39 -0
  48. package/dist/cjs/components/scroll-area.cjs +15 -0
  49. package/dist/cjs/components/select.cjs +47 -0
  50. package/dist/cjs/components/separator.cjs +11 -0
  51. package/dist/cjs/components/sheet.cjs +47 -0
  52. package/dist/cjs/components/sidebar.cjs +301 -0
  53. package/dist/cjs/components/skeleton.cjs +10 -0
  54. package/dist/cjs/components/slider.cjs +16 -0
  55. package/dist/cjs/components/spinner.cjs +11 -0
  56. package/dist/cjs/components/switch.cjs +12 -0
  57. package/dist/cjs/components/table.cjs +38 -0
  58. package/dist/cjs/components/tabs.cjs +37 -0
  59. package/dist/cjs/components/textarea.cjs +10 -0
  60. package/dist/cjs/components/theme-toggle.cjs +19 -0
  61. package/dist/cjs/components/toast.cjs +82 -0
  62. package/dist/cjs/components/toggle-group.cjs +47 -0
  63. package/dist/cjs/components/toggle.cjs +30 -0
  64. package/dist/cjs/components/tooltip.cjs +24 -0
  65. package/dist/cjs/components/trace.cjs +40 -0
  66. package/dist/cjs/hooks/use-highlighted-code.cjs +73 -0
  67. package/dist/cjs/hooks/use-hydrated.cjs +15 -0
  68. package/dist/cjs/hooks/use-mobile.cjs +36 -0
  69. package/dist/cjs/index.cjs +497 -0
  70. package/dist/cjs/lib/highlighter.cjs +96 -0
  71. package/dist/cjs/lib/preference.cjs +40 -0
  72. package/dist/cjs/providers/preference-provider.cjs +127 -0
  73. package/dist/cjs/providers/theme-provider.cjs +181 -0
  74. package/dist/cjs/types/components/accordion.d.ts +9 -0
  75. package/dist/cjs/types/components/alert-dialog.d.ts +20 -0
  76. package/dist/cjs/types/components/alert.d.ts +13 -0
  77. package/dist/cjs/types/components/aspect-ratio.d.ts +7 -0
  78. package/dist/cjs/types/components/attachment.d.ts +26 -0
  79. package/dist/cjs/types/components/avatar.d.ts +13 -0
  80. package/dist/cjs/types/components/badge.d.ts +11 -0
  81. package/dist/cjs/types/components/breadcrumb.d.ts +12 -0
  82. package/dist/cjs/types/components/bubble.d.ts +19 -0
  83. package/dist/cjs/types/components/button-group.d.ts +14 -0
  84. package/dist/cjs/types/components/button.d.ts +12 -0
  85. package/dist/cjs/types/components/calendar.d.ts +12 -0
  86. package/dist/cjs/types/components/card.d.ts +13 -0
  87. package/dist/cjs/types/components/carousel.d.ts +31 -0
  88. package/dist/cjs/types/components/chart.d.ts +47 -0
  89. package/dist/cjs/types/components/checkbox.d.ts +6 -0
  90. package/dist/cjs/types/components/code-block.d.ts +29 -0
  91. package/dist/cjs/types/components/collapsible.d.ts +8 -0
  92. package/dist/cjs/types/components/combobox.d.ts +26 -0
  93. package/dist/cjs/types/components/command.d.ts +21 -0
  94. package/dist/cjs/types/components/context-menu.d.ts +31 -0
  95. package/dist/cjs/types/components/dialog.d.ts +19 -0
  96. package/dist/cjs/types/components/direction.d.ts +1 -0
  97. package/dist/cjs/types/components/drawer.d.ts +18 -0
  98. package/dist/cjs/types/components/dropdown-menu.d.ts +31 -0
  99. package/dist/cjs/types/components/empty.d.ts +15 -0
  100. package/dist/cjs/types/components/field.d.ts +28 -0
  101. package/dist/cjs/types/components/hover-card.d.ts +8 -0
  102. package/dist/cjs/types/components/index.d.ts +65 -0
  103. package/dist/cjs/types/components/input-group.d.ts +21 -0
  104. package/dist/cjs/types/components/input-otp.d.ts +13 -0
  105. package/dist/cjs/types/components/input.d.ts +5 -0
  106. package/dist/cjs/types/components/item.d.ts +25 -0
  107. package/dist/cjs/types/components/kbd.d.ts +6 -0
  108. package/dist/cjs/types/components/label.d.ts +5 -0
  109. package/dist/cjs/types/components/marker.d.ts +13 -0
  110. package/dist/cjs/types/components/menubar.d.ts +31 -0
  111. package/dist/cjs/types/components/message-scroller.d.ts +13 -0
  112. package/dist/cjs/types/components/message.d.ts +12 -0
  113. package/dist/cjs/types/components/native-select.d.ts +10 -0
  114. package/dist/cjs/types/components/navigation-menu.d.ts +15 -0
  115. package/dist/cjs/types/components/pagination.d.ts +19 -0
  116. package/dist/cjs/types/components/popover.d.ts +11 -0
  117. package/dist/cjs/types/components/progress.d.ts +10 -0
  118. package/dist/cjs/types/components/questionnaire.d.ts +21 -0
  119. package/dist/cjs/types/components/radio-group.d.ts +8 -0
  120. package/dist/cjs/types/components/resizable.d.ts +10 -0
  121. package/dist/cjs/types/components/scroll-area.d.ts +7 -0
  122. package/dist/cjs/types/components/select.d.ts +17 -0
  123. package/dist/cjs/types/components/separator.d.ts +6 -0
  124. package/dist/cjs/types/components/sheet.d.ts +16 -0
  125. package/dist/cjs/types/components/sidebar.d.ts +66 -0
  126. package/dist/cjs/types/components/skeleton.d.ts +5 -0
  127. package/dist/cjs/types/components/slider.d.ts +6 -0
  128. package/dist/cjs/types/components/spinner.d.ts +5 -0
  129. package/dist/cjs/types/components/switch.d.ts +8 -0
  130. package/dist/cjs/types/components/table.d.ts +12 -0
  131. package/dist/cjs/types/components/tabs.d.ts +14 -0
  132. package/dist/cjs/types/components/textarea.d.ts +5 -0
  133. package/dist/cjs/types/components/theme-toggle.d.ts +14 -0
  134. package/dist/cjs/types/components/toast.d.ts +19 -0
  135. package/dist/cjs/types/components/toggle-group.d.ts +13 -0
  136. package/dist/cjs/types/components/toggle.d.ts +12 -0
  137. package/dist/cjs/types/components/tooltip.d.ts +9 -0
  138. package/dist/cjs/types/components/trace.d.ts +20 -0
  139. package/dist/cjs/types/hooks/index.d.ts +3 -0
  140. package/dist/cjs/types/hooks/use-highlighted-code.d.ts +3 -0
  141. package/dist/cjs/types/hooks/use-hydrated.d.ts +4 -0
  142. package/dist/cjs/types/hooks/use-mobile.d.ts +3 -0
  143. package/dist/cjs/types/index.d.ts +73 -0
  144. package/dist/cjs/types/lib/highlighter.d.ts +11 -0
  145. package/dist/cjs/types/lib/index.d.ts +3 -0
  146. package/dist/cjs/types/lib/preference.d.ts +85 -0
  147. package/dist/cjs/types/lib/utils.d.ts +1 -0
  148. package/dist/cjs/types/package.json +1 -0
  149. package/dist/cjs/types/providers/index.d.ts +2 -0
  150. package/dist/cjs/types/providers/preference-provider.d.ts +20 -0
  151. package/dist/cjs/types/providers/theme-provider.d.ts +25 -0
  152. package/dist/esm/components/accordion.js +19 -0
  153. package/dist/esm/components/alert-dialog.js +43 -0
  154. package/dist/esm/components/alert.js +29 -0
  155. package/dist/esm/components/aspect-ratio.js +10 -0
  156. package/dist/esm/components/attachment.js +70 -0
  157. package/dist/esm/components/avatar.js +24 -0
  158. package/dist/esm/components/badge.js +35 -0
  159. package/dist/esm/components/breadcrumb.js +38 -0
  160. package/dist/esm/components/bubble.js +61 -0
  161. package/dist/esm/components/button-group.js +38 -0
  162. package/dist/esm/components/button.js +38 -0
  163. package/dist/esm/components/calendar.js +78 -0
  164. package/dist/esm/components/card.js +26 -0
  165. package/dist/esm/components/carousel.js +87 -0
  166. package/dist/esm/components/chart.js +133 -0
  167. package/dist/esm/components/checkbox.js +11 -0
  168. package/dist/esm/components/code-block.js +82 -0
  169. package/dist/esm/components/collapsible.js +14 -0
  170. package/dist/esm/components/combobox.js +60 -0
  171. package/dist/esm/components/command.js +36 -0
  172. package/dist/esm/components/context-menu.js +53 -0
  173. package/dist/esm/components/dialog.js +39 -0
  174. package/dist/esm/components/drawer.js +77 -0
  175. package/dist/esm/components/dropdown-menu.js +52 -0
  176. package/dist/esm/components/empty.js +35 -0
  177. package/dist/esm/components/field.js +69 -0
  178. package/dist/esm/components/hover-card.js +16 -0
  179. package/dist/esm/components/input-group.js +59 -0
  180. package/dist/esm/components/input-otp.js +22 -0
  181. package/dist/esm/components/input.js +9 -0
  182. package/dist/esm/components/item.js +80 -0
  183. package/dist/esm/components/kbd.js +11 -0
  184. package/dist/esm/components/label.js +9 -0
  185. package/dist/esm/components/marker.js +36 -0
  186. package/dist/esm/components/menubar.js +58 -0
  187. package/dist/esm/components/message-scroller.js +27 -0
  188. package/dist/esm/components/message.js +23 -0
  189. package/dist/esm/components/native-select.js +15 -0
  190. package/dist/esm/components/navigation-menu.js +33 -0
  191. package/dist/esm/components/pagination.js +28 -0
  192. package/dist/esm/components/popover.js +24 -0
  193. package/dist/esm/components/progress.js +22 -0
  194. package/dist/esm/components/questionnaire.js +54 -0
  195. package/dist/esm/components/radio-group.js +13 -0
  196. package/dist/esm/components/resizable.js +16 -0
  197. package/dist/esm/components/scroll-area.js +12 -0
  198. package/dist/esm/components/select.js +36 -0
  199. package/dist/esm/components/separator.js +9 -0
  200. package/dist/esm/components/sheet.js +38 -0
  201. package/dist/esm/components/sidebar.js +257 -0
  202. package/dist/esm/components/skeleton.js +8 -0
  203. package/dist/esm/components/slider.js +14 -0
  204. package/dist/esm/components/spinner.js +9 -0
  205. package/dist/esm/components/switch.js +10 -0
  206. package/dist/esm/components/table.js +29 -0
  207. package/dist/esm/components/tabs.js +31 -0
  208. package/dist/esm/components/textarea.js +8 -0
  209. package/dist/esm/components/theme-toggle.js +17 -0
  210. package/dist/esm/components/toast.js +68 -0
  211. package/dist/esm/components/toggle-group.js +25 -0
  212. package/dist/esm/components/toggle.js +27 -0
  213. package/dist/esm/components/tooltip.js +19 -0
  214. package/dist/esm/components/trace.js +31 -0
  215. package/dist/esm/hooks/use-highlighted-code.js +52 -0
  216. package/dist/esm/hooks/use-hydrated.js +13 -0
  217. package/dist/esm/hooks/use-mobile.js +15 -0
  218. package/dist/esm/index.js +73 -0
  219. package/dist/esm/lib/highlighter.js +93 -0
  220. package/dist/esm/lib/preference.js +35 -0
  221. package/dist/esm/providers/preference-provider.js +124 -0
  222. package/dist/esm/providers/theme-provider.js +178 -0
  223. package/dist/styles/custom.css +2 -0
  224. package/dist/styles/font/LICENSE +93 -0
  225. package/dist/styles/font/files/11944884.woff2 +0 -0
  226. package/dist/styles/font/files/3f081d19.woff2 +0 -0
  227. package/dist/styles/font/files/aa4aa22f.woff2 +0 -0
  228. package/dist/styles/font/files/ba1a9b92.woff2 +0 -0
  229. package/dist/styles/font/files/eadd8e6c.woff2 +0 -0
  230. package/dist/styles/font/geist.css +2 -0
  231. package/dist/styles/index.css +2 -0
  232. package/dist/types/components/accordion.d.ts +9 -0
  233. package/dist/types/components/alert-dialog.d.ts +20 -0
  234. package/dist/types/components/alert.d.ts +13 -0
  235. package/dist/types/components/aspect-ratio.d.ts +7 -0
  236. package/dist/types/components/attachment.d.ts +26 -0
  237. package/dist/types/components/avatar.d.ts +13 -0
  238. package/dist/types/components/badge.d.ts +11 -0
  239. package/dist/types/components/breadcrumb.d.ts +12 -0
  240. package/dist/types/components/bubble.d.ts +19 -0
  241. package/dist/types/components/button-group.d.ts +14 -0
  242. package/dist/types/components/button.d.ts +12 -0
  243. package/dist/types/components/calendar.d.ts +12 -0
  244. package/dist/types/components/card.d.ts +13 -0
  245. package/dist/types/components/carousel.d.ts +31 -0
  246. package/dist/types/components/chart.d.ts +47 -0
  247. package/dist/types/components/checkbox.d.ts +6 -0
  248. package/dist/types/components/code-block.d.ts +29 -0
  249. package/dist/types/components/collapsible.d.ts +8 -0
  250. package/dist/types/components/combobox.d.ts +26 -0
  251. package/dist/types/components/command.d.ts +21 -0
  252. package/dist/types/components/context-menu.d.ts +31 -0
  253. package/dist/types/components/dialog.d.ts +19 -0
  254. package/dist/types/components/direction.d.ts +1 -0
  255. package/dist/types/components/drawer.d.ts +18 -0
  256. package/dist/types/components/dropdown-menu.d.ts +31 -0
  257. package/dist/types/components/empty.d.ts +15 -0
  258. package/dist/types/components/field.d.ts +28 -0
  259. package/dist/types/components/hover-card.d.ts +8 -0
  260. package/dist/types/components/index.d.ts +65 -0
  261. package/dist/types/components/input-group.d.ts +21 -0
  262. package/dist/types/components/input-otp.d.ts +13 -0
  263. package/dist/types/components/input.d.ts +5 -0
  264. package/dist/types/components/item.d.ts +25 -0
  265. package/dist/types/components/kbd.d.ts +6 -0
  266. package/dist/types/components/label.d.ts +5 -0
  267. package/dist/types/components/marker.d.ts +13 -0
  268. package/dist/types/components/menubar.d.ts +31 -0
  269. package/dist/types/components/message-scroller.d.ts +13 -0
  270. package/dist/types/components/message.d.ts +12 -0
  271. package/dist/types/components/native-select.d.ts +10 -0
  272. package/dist/types/components/navigation-menu.d.ts +15 -0
  273. package/dist/types/components/pagination.d.ts +19 -0
  274. package/dist/types/components/popover.d.ts +11 -0
  275. package/dist/types/components/progress.d.ts +10 -0
  276. package/dist/types/components/questionnaire.d.ts +21 -0
  277. package/dist/types/components/radio-group.d.ts +8 -0
  278. package/dist/types/components/resizable.d.ts +10 -0
  279. package/dist/types/components/scroll-area.d.ts +7 -0
  280. package/dist/types/components/select.d.ts +17 -0
  281. package/dist/types/components/separator.d.ts +6 -0
  282. package/dist/types/components/sheet.d.ts +16 -0
  283. package/dist/types/components/sidebar.d.ts +66 -0
  284. package/dist/types/components/skeleton.d.ts +5 -0
  285. package/dist/types/components/slider.d.ts +6 -0
  286. package/dist/types/components/spinner.d.ts +5 -0
  287. package/dist/types/components/switch.d.ts +8 -0
  288. package/dist/types/components/table.d.ts +12 -0
  289. package/dist/types/components/tabs.d.ts +14 -0
  290. package/dist/types/components/textarea.d.ts +5 -0
  291. package/dist/types/components/theme-toggle.d.ts +14 -0
  292. package/dist/types/components/toast.d.ts +19 -0
  293. package/dist/types/components/toggle-group.d.ts +13 -0
  294. package/dist/types/components/toggle.d.ts +12 -0
  295. package/dist/types/components/tooltip.d.ts +9 -0
  296. package/dist/types/components/trace.d.ts +20 -0
  297. package/dist/types/hooks/index.d.ts +3 -0
  298. package/dist/types/hooks/use-highlighted-code.d.ts +3 -0
  299. package/dist/types/hooks/use-hydrated.d.ts +4 -0
  300. package/dist/types/hooks/use-mobile.d.ts +3 -0
  301. package/dist/types/index.d.ts +73 -0
  302. package/dist/types/lib/highlighter.d.ts +11 -0
  303. package/dist/types/lib/index.d.ts +3 -0
  304. package/dist/types/lib/preference.d.ts +85 -0
  305. package/dist/types/lib/utils.d.ts +1 -0
  306. package/dist/types/providers/index.d.ts +2 -0
  307. package/dist/types/providers/preference-provider.d.ts +20 -0
  308. package/dist/types/providers/theme-provider.d.ts +25 -0
  309. package/dist/umd/index.js +86818 -0
  310. package/package.json +116 -4
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var slider = require('@base-ui/react/slider');
5
+ var cn = require('cn');
6
+
7
+ function Slider({ className, defaultValue, value, min = 0, max = 100, ...props }) {
8
+ const _values = Array.isArray(value)
9
+ ? value
10
+ : Array.isArray(defaultValue)
11
+ ? defaultValue
12
+ : [min, max];
13
+ return (jsxRuntime.jsx(slider.Slider.Root, { className: cn.cn("data-horizontal:w-full data-vertical:h-full", className), "data-slot": "slider", defaultValue: defaultValue, value: value, min: min, max: max, thumbAlignment: "edge", ...props, children: jsxRuntime.jsxs(slider.Slider.Control, { className: "relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-vertical:h-full data-vertical:min-h-40 data-vertical:w-auto data-vertical:flex-col", children: [jsxRuntime.jsx(slider.Slider.Track, { "data-slot": "slider-track", className: "relative grow overflow-hidden rounded-full bg-muted select-none data-horizontal:h-1 data-horizontal:w-full data-vertical:h-full data-vertical:w-1", children: jsxRuntime.jsx(slider.Slider.Indicator, { "data-slot": "slider-range", className: "bg-primary select-none data-horizontal:h-full data-vertical:w-full" }) }), Array.from({ length: _values.length }, (_, index) => (jsxRuntime.jsx(slider.Slider.Thumb, { "data-slot": "slider-thumb", className: "relative block size-3 shrink-0 rounded-full border border-ring bg-white ring-ring/50 transition-[color,box-shadow] select-none after:absolute after:-inset-2 hover:ring-3 focus-visible:ring-3 focus-visible:outline-hidden active:ring-3 disabled:pointer-events-none disabled:opacity-50" }, index)))] }) }));
14
+ }
15
+
16
+ exports.Slider = Slider;
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var cn = require('cn');
5
+ var lucideReact = require('lucide-react');
6
+
7
+ function Spinner({ className, ...props }) {
8
+ return (jsxRuntime.jsx(lucideReact.Loader2Icon, { "data-slot": "spinner", role: "status", "aria-label": "Loading", className: cn.cn("size-4 animate-spin", className), ...props }));
9
+ }
10
+
11
+ exports.Spinner = Spinner;
@@ -0,0 +1,12 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var _switch = require('@base-ui/react/switch');
6
+ var cn = require('cn');
7
+
8
+ function Switch({ className, size = "default", ...props }) {
9
+ return (jsxRuntime.jsx(_switch.Switch.Root, { "data-slot": "switch", "data-size": size, className: cn.cn("peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none group-has-[:focus-visible]/field-label:border-transparent group-has-[:focus-visible]/field-label:ring-0 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50", className), ...props, children: jsxRuntime.jsx(_switch.Switch.Thumb, { "data-slot": "switch-thumb", className: "pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground" }) }));
10
+ }
11
+
12
+ exports.Switch = Switch;
@@ -0,0 +1,38 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var cn = require('cn');
5
+
6
+ function Table({ className, ...props }) {
7
+ return (jsxRuntime.jsx("div", { "data-slot": "table-container", className: "relative w-full overflow-x-auto", children: jsxRuntime.jsx("table", { "data-slot": "table", className: cn.cn("w-full caption-bottom text-sm", className), ...props }) }));
8
+ }
9
+ function TableHeader({ className, ...props }) {
10
+ return (jsxRuntime.jsx("thead", { "data-slot": "table-header", className: cn.cn("[&_tr]:border-b", className), ...props }));
11
+ }
12
+ function TableBody({ className, ...props }) {
13
+ return (jsxRuntime.jsx("tbody", { "data-slot": "table-body", className: cn.cn("[&_tr:last-child]:border-0", className), ...props }));
14
+ }
15
+ function TableFooter({ className, ...props }) {
16
+ return (jsxRuntime.jsx("tfoot", { "data-slot": "table-footer", className: cn.cn("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0", className), ...props }));
17
+ }
18
+ function TableRow({ className, ...props }) {
19
+ return (jsxRuntime.jsx("tr", { "data-slot": "table-row", className: cn.cn("border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted", className), ...props }));
20
+ }
21
+ function TableHead({ className, ...props }) {
22
+ return (jsxRuntime.jsx("th", { "data-slot": "table-head", className: cn.cn("h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0", className), ...props }));
23
+ }
24
+ function TableCell({ className, ...props }) {
25
+ return (jsxRuntime.jsx("td", { "data-slot": "table-cell", className: cn.cn("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0", className), ...props }));
26
+ }
27
+ function TableCaption({ className, ...props }) {
28
+ return (jsxRuntime.jsx("caption", { "data-slot": "table-caption", className: cn.cn("mt-4 text-sm text-muted-foreground", className), ...props }));
29
+ }
30
+
31
+ exports.Table = Table;
32
+ exports.TableBody = TableBody;
33
+ exports.TableCaption = TableCaption;
34
+ exports.TableCell = TableCell;
35
+ exports.TableFooter = TableFooter;
36
+ exports.TableHead = TableHead;
37
+ exports.TableHeader = TableHeader;
38
+ exports.TableRow = TableRow;
@@ -0,0 +1,37 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var tabs = require('@base-ui/react/tabs');
6
+ var classVarianceAuthority = require('class-variance-authority');
7
+ var cn = require('cn');
8
+
9
+ function Tabs({ className, orientation = "horizontal", ...props }) {
10
+ return (jsxRuntime.jsx(tabs.Tabs.Root, { "data-slot": "tabs", "data-orientation": orientation, className: cn.cn("group/tabs flex gap-2 data-horizontal:flex-col", className), ...props }));
11
+ }
12
+ const tabsListVariants = classVarianceAuthority.cva("group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none", {
13
+ variants: {
14
+ variant: {
15
+ default: "bg-muted",
16
+ line: "gap-1 bg-transparent",
17
+ },
18
+ },
19
+ defaultVariants: {
20
+ variant: "default",
21
+ },
22
+ });
23
+ function TabsList({ className, variant = "default", ...props }) {
24
+ return (jsxRuntime.jsx(tabs.Tabs.List, { "data-slot": "tabs-list", "data-variant": variant, className: cn.cn(tabsListVariants({ variant }), className), ...props }));
25
+ }
26
+ function TabsTrigger({ className, ...props }) {
27
+ return (jsxRuntime.jsx(tabs.Tabs.Tab, { "data-slot": "tabs-trigger", className: cn.cn("relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 aria-disabled:pointer-events-none aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", "group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent", "data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground", "after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100", className), ...props }));
28
+ }
29
+ function TabsContent({ className, ...props }) {
30
+ return (jsxRuntime.jsx(tabs.Tabs.Panel, { "data-slot": "tabs-content", className: cn.cn("flex-1 text-sm outline-none", className), ...props }));
31
+ }
32
+
33
+ exports.Tabs = Tabs;
34
+ exports.TabsContent = TabsContent;
35
+ exports.TabsList = TabsList;
36
+ exports.TabsTrigger = TabsTrigger;
37
+ exports.tabsListVariants = tabsListVariants;
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var cn = require('cn');
5
+
6
+ function Textarea({ className, ...props }) {
7
+ return (jsxRuntime.jsx("textarea", { "data-slot": "textarea", className: cn.cn("flex field-sizing-content min-h-16 w-full rounded-lg border border-input bg-transparent px-2.5 py-2 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40", className), ...props }));
8
+ }
9
+
10
+ exports.Textarea = Textarea;
@@ -0,0 +1,19 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var lucideReact = require('lucide-react');
6
+ var button = require('./button.cjs');
7
+ var themeProvider = require('../providers/theme-provider.cjs');
8
+
9
+ function ThemeToggle({ darkLabel = '切换到深色主题', lightLabel = '切换到浅色主题', variant = 'outline', size = 'icon', title = '切换主题', onClick, ...props }) {
10
+ const { toggleTheme } = themeProvider.useTheme();
11
+ return (jsxRuntime.jsxs(button.Button, { type: "button", variant: variant, size: size, title: title, ...props, onClick: (event) => {
12
+ // 先执行使用方回调,允许通过 preventDefault() 取消主题切换。
13
+ onClick?.(event);
14
+ if (!event.defaultPrevented)
15
+ toggleTheme();
16
+ }, children: [jsxRuntime.jsx(lucideReact.MoonIcon, { "data-icon": "inline-start", "aria-hidden": "true", className: "animate-in duration-200 ease-out zoom-in-75 fade-in spin-in-90 motion-reduce:animate-none dark:hidden" }), jsxRuntime.jsx(lucideReact.SunIcon, { "data-icon": "inline-start", "aria-hidden": "true", className: "hidden animate-in duration-200 ease-out zoom-in-75 fade-in spin-in-90 motion-reduce:animate-none dark:block" }), jsxRuntime.jsx("span", { className: "sr-only dark:hidden", children: darkLabel }), jsxRuntime.jsx("span", { className: "sr-only hidden dark:block", children: lightLabel })] }));
17
+ }
18
+
19
+ exports.ThemeToggle = ThemeToggle;
@@ -0,0 +1,82 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var toast$1 = require('@base-ui/react/toast');
6
+ var cn = require('cn');
7
+ var button = require('./button.cjs');
8
+ var lucideReact = require('lucide-react');
9
+
10
+ const toast = toast$1.Toast.createToastManager();
11
+ function ToastProvider({ ...props }) {
12
+ return jsxRuntime.jsx(toast$1.Toast.Provider, { ...props });
13
+ }
14
+ function ToastPortal({ ...props }) {
15
+ return jsxRuntime.jsx(toast$1.Toast.Portal, { "data-slot": "toast-portal", ...props });
16
+ }
17
+ function ToastViewport({ className, ...props }) {
18
+ return (jsxRuntime.jsx(toast$1.Toast.Viewport, { "data-slot": "toast-viewport", className: cn.cn("pointer-events-none fixed inset-x-4 bottom-4 z-50 mx-auto w-auto max-w-sm outline-none sm:right-4 sm:left-auto sm:mx-0 sm:w-full", className), ...props }));
19
+ }
20
+ function Toast({ className, ...props }) {
21
+ return (jsxRuntime.jsx(toast$1.Toast.Root, { "data-slot": "toast", className: cn.cn("group/toast pointer-events-auto absolute right-0 bottom-0 z-[calc(1000-var(--toast-index))] w-full origin-bottom rounded-2xl border bg-popover text-popover-foreground shadow-lg will-change-transform outline-none select-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50", "[--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))]", "h-(--height) [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_500ms_cubic-bezier(0.22,1,0.36,1),opacity_500ms,height_150ms]", "after:absolute after:top-full after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:content-['']", "data-expanded:h-(--toast-height) data-expanded:[transform:translateX(var(--toast-swipe-movement-x))_translateY(var(--offset-y))]", "data-limited:opacity-0 data-starting-style:[transform:translateY(150%)]", "[&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateY(150%)]", "data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]", "data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]", "data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]", "data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]", "data-expanded:data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]", "data-expanded:data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]", "data-expanded:data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]", "data-expanded:data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]", className), ...props }));
22
+ }
23
+ function ToastContent({ className, ...props }) {
24
+ return (jsxRuntime.jsx(toast$1.Toast.Content, { "data-slot": "toast-content", className: cn.cn("flex h-full items-center gap-3 overflow-hidden p-4 transition-opacity duration-250 ease-[cubic-bezier(0.22,1,0.36,1)] data-behind:opacity-0 data-expanded:opacity-100", className), ...props }));
25
+ }
26
+ function ToastTitle({ className, ...props }) {
27
+ return (jsxRuntime.jsx(toast$1.Toast.Title, { "data-slot": "toast-title", className: cn.cn("text-sm font-medium", className), ...props }));
28
+ }
29
+ function ToastDescription({ className, ...props }) {
30
+ return (jsxRuntime.jsx(toast$1.Toast.Description, { "data-slot": "toast-description", className: cn.cn("text-sm text-muted-foreground", className), ...props }));
31
+ }
32
+ function ToastAction({ className, render = jsxRuntime.jsx(button.Button, { variant: "outline", size: "sm" }), ...props }) {
33
+ return (jsxRuntime.jsx(toast$1.Toast.Action, { "data-slot": "toast-action", render: render, className: cn.cn("shrink-0", className), ...props }));
34
+ }
35
+ function ToastClose({ className, children, render = jsxRuntime.jsx(button.Button, { variant: "ghost", size: "icon-sm" }), ...props }) {
36
+ return (jsxRuntime.jsx(toast$1.Toast.Close, { "data-slot": "toast-close", "aria-label": "Close toast", render: render, className: cn.cn("relative shrink-0 text-muted-foreground after:absolute after:-inset-2 after:content-[''] hover:text-foreground", className), ...props, children: children ?? (jsxRuntime.jsx(lucideReact.XIcon, { "aria-hidden": "true" })) }));
37
+ }
38
+ function ToastIcon({ type }) {
39
+ let icon = null;
40
+ if (type === "success") {
41
+ icon = (jsxRuntime.jsx(lucideReact.CircleCheckIcon, { "aria-hidden": "true" }));
42
+ }
43
+ if (type === "info") {
44
+ icon = (jsxRuntime.jsx(lucideReact.InfoIcon, { "aria-hidden": "true" }));
45
+ }
46
+ if (type === "warning") {
47
+ icon = (jsxRuntime.jsx(lucideReact.TriangleAlertIcon, { "aria-hidden": "true" }));
48
+ }
49
+ if (type === "error") {
50
+ icon = (jsxRuntime.jsx(lucideReact.OctagonXIcon, { className: "text-destructive", "aria-hidden": "true" }));
51
+ }
52
+ if (type === "loading") {
53
+ icon = (jsxRuntime.jsx(lucideReact.Loader2Icon, { className: "animate-spin", "aria-hidden": "true" }));
54
+ }
55
+ if (!icon) {
56
+ return null;
57
+ }
58
+ return (jsxRuntime.jsx("span", { "data-slot": "toast-icon", className: "shrink-0 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4", children: icon }));
59
+ }
60
+ function ToastList() {
61
+ const { toasts } = toast$1.Toast.useToastManager();
62
+ return toasts.map((toastItem) => (jsxRuntime.jsx(Toast, { toast: toastItem, children: jsxRuntime.jsxs(ToastContent, { children: [jsxRuntime.jsx(ToastIcon, { type: toastItem.type }), jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [jsxRuntime.jsx(ToastTitle, {}), jsxRuntime.jsx(ToastDescription, {})] }), jsxRuntime.jsx(ToastAction, {}), jsxRuntime.jsx(ToastClose, {})] }) }, toastItem.id)));
63
+ }
64
+ function Toaster({ children, toastManager = toast, ...props }) {
65
+ return (jsxRuntime.jsxs(ToastProvider, { toastManager: toastManager, ...props, children: [children, jsxRuntime.jsx(ToastPortal, { children: jsxRuntime.jsx(ToastViewport, { children: jsxRuntime.jsx(ToastList, {}) }) })] }));
66
+ }
67
+ const createToastManager = toast$1.Toast.createToastManager;
68
+ const useToastManager = toast$1.Toast.useToastManager;
69
+
70
+ exports.Toast = Toast;
71
+ exports.ToastAction = ToastAction;
72
+ exports.ToastClose = ToastClose;
73
+ exports.ToastContent = ToastContent;
74
+ exports.ToastDescription = ToastDescription;
75
+ exports.ToastPortal = ToastPortal;
76
+ exports.ToastProvider = ToastProvider;
77
+ exports.ToastTitle = ToastTitle;
78
+ exports.ToastViewport = ToastViewport;
79
+ exports.Toaster = Toaster;
80
+ exports.createToastManager = createToastManager;
81
+ exports.toast = toast;
82
+ exports.useToastManager = useToastManager;
@@ -0,0 +1,47 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var toggle = require('@base-ui/react/toggle');
6
+ var toggleGroup = require('@base-ui/react/toggle-group');
7
+ var cn = require('cn');
8
+ var toggle$1 = require('./toggle.cjs');
9
+
10
+ function _interopNamespaceDefault(e) {
11
+ var n = Object.create(null);
12
+ if (e) {
13
+ Object.keys(e).forEach(function (k) {
14
+ if (k !== 'default') {
15
+ var d = Object.getOwnPropertyDescriptor(e, k);
16
+ Object.defineProperty(n, k, d.get ? d : {
17
+ enumerable: true,
18
+ get: function () { return e[k]; }
19
+ });
20
+ }
21
+ });
22
+ }
23
+ n.default = e;
24
+ return Object.freeze(n);
25
+ }
26
+
27
+ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
28
+
29
+ const ToggleGroupContext = React__namespace.createContext({
30
+ size: "default",
31
+ variant: "default",
32
+ spacing: 2,
33
+ orientation: "horizontal",
34
+ });
35
+ function ToggleGroup({ className, variant, size, spacing = 2, orientation = "horizontal", children, ...props }) {
36
+ return (jsxRuntime.jsx(toggleGroup.ToggleGroup, { "data-slot": "toggle-group", "data-variant": variant, "data-size": size, "data-spacing": spacing, "data-orientation": orientation, style: { "--gap": spacing }, className: cn.cn("group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-lg data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-vertical:flex-col data-vertical:items-stretch", className), ...props, children: jsxRuntime.jsx(ToggleGroupContext.Provider, { value: { variant, size, spacing, orientation }, children: children }) }));
37
+ }
38
+ function ToggleGroupItem({ className, children, variant = "default", size = "default", ...props }) {
39
+ const context = React__namespace.useContext(ToggleGroupContext);
40
+ return (jsxRuntime.jsx(toggle.Toggle, { "data-slot": "toggle-group-item", "data-variant": context.variant || variant, "data-size": context.size || size, "data-spacing": context.spacing, className: cn.cn("shrink-0 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 focus:z-10 focus-visible:z-10 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-end]:pr-1.5 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-start]:pl-1.5 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-lg group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-lg group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-lg group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-lg group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t", toggle$1.toggleVariants({
41
+ variant: context.variant || variant,
42
+ size: context.size || size,
43
+ }), className), ...props, children: children }));
44
+ }
45
+
46
+ exports.ToggleGroup = ToggleGroup;
47
+ exports.ToggleGroupItem = ToggleGroupItem;
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var toggle = require('@base-ui/react/toggle');
5
+ var classVarianceAuthority = require('class-variance-authority');
6
+ var cn = require('cn');
7
+
8
+ const toggleVariants = classVarianceAuthority.cva("group/toggle inline-flex items-center justify-center gap-1 rounded-lg text-sm font-medium whitespace-nowrap transition-all outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted data-[state=on]:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", {
9
+ variants: {
10
+ variant: {
11
+ default: "bg-transparent",
12
+ outline: "border border-input bg-transparent hover:bg-muted",
13
+ },
14
+ size: {
15
+ default: "h-8 min-w-8 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
16
+ sm: "h-7 min-w-7 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",
17
+ lg: "h-9 min-w-9 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
18
+ },
19
+ },
20
+ defaultVariants: {
21
+ variant: "default",
22
+ size: "default",
23
+ },
24
+ });
25
+ function Toggle({ className, variant = "default", size = "default", ...props }) {
26
+ return (jsxRuntime.jsx(toggle.Toggle, { "data-slot": "toggle", className: cn.cn(toggleVariants({ variant, size, className })), ...props }));
27
+ }
28
+
29
+ exports.Toggle = Toggle;
30
+ exports.toggleVariants = toggleVariants;
@@ -0,0 +1,24 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var tooltip = require('@base-ui/react/tooltip');
6
+ var cn = require('cn');
7
+
8
+ function TooltipProvider({ delay = 0, ...props }) {
9
+ return (jsxRuntime.jsx(tooltip.Tooltip.Provider, { "data-slot": "tooltip-provider", delay: delay, ...props }));
10
+ }
11
+ function Tooltip({ ...props }) {
12
+ return jsxRuntime.jsx(tooltip.Tooltip.Root, { "data-slot": "tooltip", ...props });
13
+ }
14
+ function TooltipTrigger({ ...props }) {
15
+ return jsxRuntime.jsx(tooltip.Tooltip.Trigger, { "data-slot": "tooltip-trigger", ...props });
16
+ }
17
+ function TooltipContent({ className, side = "top", sideOffset = 4, align = "center", alignOffset = 0, children, ...props }) {
18
+ return (jsxRuntime.jsx(tooltip.Tooltip.Portal, { children: jsxRuntime.jsx(tooltip.Tooltip.Positioner, { align: align, alignOffset: alignOffset, side: side, sideOffset: sideOffset, className: "isolate z-50", children: jsxRuntime.jsxs(tooltip.Tooltip.Popup, { "data-slot": "tooltip-content", className: cn.cn("z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className), ...props, children: [children, jsxRuntime.jsx(tooltip.Tooltip.Arrow, { className: "z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5" })] }) }) }));
19
+ }
20
+
21
+ exports.Tooltip = Tooltip;
22
+ exports.TooltipContent = TooltipContent;
23
+ exports.TooltipProvider = TooltipProvider;
24
+ exports.TooltipTrigger = TooltipTrigger;
@@ -0,0 +1,40 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var cn = require('cn');
5
+ var collapsible = require('./collapsible.cjs');
6
+ var lucideReact = require('lucide-react');
7
+
8
+ function Trace({ className, ...props }) {
9
+ return (jsxRuntime.jsx("div", { "data-slot": "trace", className: cn.cn("flex w-full min-w-0 flex-col gap-2 *:has-[>[data-slot=trace-line]]:flex *:has-[>[data-slot=trace-line]]:w-fit *:has-[>[data-slot=trace-line]]:max-w-full *:has-[>[data-slot=trace-line]]:min-w-0 *:has-[>[data-slot=trace-line]]:rounded-md *:has-[>[data-slot=trace-line]]:text-left *:has-[>[data-slot=trace-line]]:outline-none *:has-[>[data-slot=trace-line]]:focus-visible:ring-3 *:has-[>[data-slot=trace-line]]:focus-visible:ring-ring/50", className), ...props }));
10
+ }
11
+ function TraceLine({ className, status, ...props }) {
12
+ return (jsxRuntime.jsx("span", { "data-slot": "trace-line", "data-status": status, className: cn.cn("flex w-fit max-w-full min-w-0 items-center gap-2 text-sm text-muted-foreground transition-colors in-[a,button]:cursor-pointer in-[a:hover,button:hover]:text-foreground data-[status=error]:text-destructive data-[status=error]:in-[a:hover,button:hover]:text-destructive data-[status=running]:*:data-[slot=trace-title]:shimmer", className), ...props }));
13
+ }
14
+ function TraceIcon({ className, ...props }) {
15
+ return (jsxRuntime.jsx("span", { "data-slot": "trace-icon", "aria-hidden": "true", className: cn.cn("flex size-4 shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [[data-slot=trace-title]~&]:-ml-1", className), ...props }));
16
+ }
17
+ function TraceTitle({ className, ...props }) {
18
+ return (jsxRuntime.jsx("span", { "data-slot": "trace-title", className: cn.cn("min-w-0 truncate motion-reduce:shimmer-none", className), ...props }));
19
+ }
20
+ function TraceDescription({ className, ...props }) {
21
+ return (jsxRuntime.jsx("span", { "data-slot": "trace-description", className: cn.cn("shrink-0 text-muted-foreground tabular-nums", className), ...props }));
22
+ }
23
+ function TraceCollapsible({ className, ...props }) {
24
+ return (jsxRuntime.jsx(collapsible.Collapsible, { "data-slot": "trace-collapsible", className: cn.cn("flex w-full min-w-0 flex-col", className), ...props }));
25
+ }
26
+ function TraceCollapsibleTrigger({ className, children, ...props }) {
27
+ return (jsxRuntime.jsxs(collapsible.CollapsibleTrigger, { "data-slot": "trace-collapsible-trigger", className: cn.cn("group/trace-collapsible-trigger flex w-fit max-w-full min-w-0 cursor-pointer items-center gap-1 rounded-md text-left text-muted-foreground transition-colors outline-none hover:text-foreground focus-visible:ring-3 focus-visible:ring-ring/50 has-[[data-status=error]]:text-destructive", className), ...props, children: [children, jsxRuntime.jsx(TraceIcon, { className: "transition-transform group-aria-expanded/trace-collapsible-trigger:rotate-90", children: jsxRuntime.jsx(lucideReact.ChevronRightIcon, {}) })] }));
28
+ }
29
+ function TraceCollapsibleContent({ className, children, ...props }) {
30
+ return (jsxRuntime.jsx(collapsible.CollapsibleContent, { "data-slot": "trace-collapsible-content", className: "h-(--collapsible-panel-height) min-w-0 overflow-hidden transition-[height] duration-200 data-ending-style:h-0 data-starting-style:h-0", ...props, children: jsxRuntime.jsx("div", { "data-slot": "trace-collapsible-content-inner", className: cn.cn("mt-2 mb-1 ml-[calc(--spacing(2)-1px)] min-w-0 border-l pr-1 pl-4 leading-relaxed wrap-break-word text-muted-foreground", className), children: children }) }));
31
+ }
32
+
33
+ exports.Trace = Trace;
34
+ exports.TraceCollapsible = TraceCollapsible;
35
+ exports.TraceCollapsibleContent = TraceCollapsibleContent;
36
+ exports.TraceCollapsibleTrigger = TraceCollapsibleTrigger;
37
+ exports.TraceDescription = TraceDescription;
38
+ exports.TraceIcon = TraceIcon;
39
+ exports.TraceLine = TraceLine;
40
+ exports.TraceTitle = TraceTitle;
@@ -0,0 +1,73 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var highlighter = require('../lib/highlighter.cjs');
5
+
6
+ function _interopNamespaceDefault(e) {
7
+ var n = Object.create(null);
8
+ if (e) {
9
+ Object.keys(e).forEach(function (k) {
10
+ if (k !== 'default') {
11
+ var d = Object.getOwnPropertyDescriptor(e, k);
12
+ Object.defineProperty(n, k, d.get ? d : {
13
+ enumerable: true,
14
+ get: function () { return e[k]; }
15
+ });
16
+ }
17
+ });
18
+ }
19
+ n.default = e;
20
+ return Object.freeze(n);
21
+ }
22
+
23
+ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
24
+
25
+ function useHighlightedCode(value, language) {
26
+ // A trailing newline would render as an extra empty line.
27
+ const code = value.endsWith("\n") ? value.slice(0, -1) : value;
28
+ const [loaded, setLoaded] = React__namespace.useState(null);
29
+ const highlighter$1 = loaded?.language === language ? loaded.highlighter : null;
30
+ React__namespace.useEffect(() => {
31
+ let cancelled = false;
32
+ highlighter.loadHighlighter(language)
33
+ .then((next) => {
34
+ if (!cancelled) {
35
+ setLoaded({ language, highlighter: next });
36
+ }
37
+ })
38
+ .catch(() => { });
39
+ return () => {
40
+ cancelled = true;
41
+ };
42
+ }, [language]);
43
+ // The complete lines, highlighted. While the code streams, only the new
44
+ // lines are tokenized, starting from the grammar state of the last one.
45
+ const [done, setDone] = React__namespace.useState({ highlighter: null, text: "", lines: [] });
46
+ let next = done;
47
+ if (next.highlighter !== highlighter$1 || !code.startsWith(next.text)) {
48
+ next = { highlighter: highlighter$1, text: "", lines: [] };
49
+ }
50
+ const end = code.lastIndexOf("\n") + 1;
51
+ if (highlighter$1 && end > next.text.length) {
52
+ const result = highlighter$1.highlight(code.slice(next.text.length, end - 1), next.state);
53
+ next = {
54
+ highlighter: highlighter$1,
55
+ text: code.slice(0, end),
56
+ lines: [...next.lines, ...result.lines],
57
+ state: result.state,
58
+ };
59
+ }
60
+ if (next !== done) {
61
+ setDone(next);
62
+ }
63
+ // The last line is still being written, so it is tokenized on every render.
64
+ const tail = code.slice(end);
65
+ return React__namespace.useMemo(() => {
66
+ if (!highlighter$1) {
67
+ return code.split("\n");
68
+ }
69
+ return [...next.lines, highlighter$1.highlight(tail, next.state).lines[0]];
70
+ }, [code, highlighter$1, next, tail]);
71
+ }
72
+
73
+ exports.useHighlightedCode = useHighlightedCode;
@@ -0,0 +1,15 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var React = require('react');
5
+
6
+ // 水合完成与否由 React 的服务端快照机制区分,无需 effect 中同步设置状态。
7
+ const subscribe = () => () => { };
8
+ const getSnapshot = () => true;
9
+ const getServerSnapshot = () => false;
10
+ /** 服务端及客户端水合首帧返回 false,之后返回 true;纯客户端渲染直接返回 true。 */
11
+ function useHydrated() {
12
+ return React.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
13
+ }
14
+
15
+ exports.useHydrated = useHydrated;
@@ -0,0 +1,36 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+
5
+ function _interopNamespaceDefault(e) {
6
+ var n = Object.create(null);
7
+ if (e) {
8
+ Object.keys(e).forEach(function (k) {
9
+ if (k !== 'default') {
10
+ var d = Object.getOwnPropertyDescriptor(e, k);
11
+ Object.defineProperty(n, k, d.get ? d : {
12
+ enumerable: true,
13
+ get: function () { return e[k]; }
14
+ });
15
+ }
16
+ });
17
+ }
18
+ n.default = e;
19
+ return Object.freeze(n);
20
+ }
21
+
22
+ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
23
+
24
+ const MOBILE_BREAKPOINT = 768;
25
+ function subscribe(onChange) {
26
+ const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
27
+ mql.addEventListener("change", onChange);
28
+ return () => mql.removeEventListener("change", onChange);
29
+ }
30
+ const getSnapshot = () => window.innerWidth < MOBILE_BREAKPOINT;
31
+ const getServerSnapshot = () => false;
32
+ function useIsMobile() {
33
+ return React__namespace.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
34
+ }
35
+
36
+ exports.useIsMobile = useIsMobile;