@ciridae/ui 0.2.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 (339) hide show
  1. package/README.md +31 -0
  2. package/dist/components/agentic/agent-card.d.ts +28 -0
  3. package/dist/components/agentic/agent-card.js +27 -0
  4. package/dist/components/agentic/agent-composer.d.ts +44 -0
  5. package/dist/components/agentic/agent-composer.js +104 -0
  6. package/dist/components/agentic/agent-context.d.ts +28 -0
  7. package/dist/components/agentic/agent-context.js +102 -0
  8. package/dist/components/agentic/agent-plan.d.ts +27 -0
  9. package/dist/components/agentic/agent-plan.js +43 -0
  10. package/dist/components/agentic/agent-queue.d.ts +46 -0
  11. package/dist/components/agentic/agent-queue.js +53 -0
  12. package/dist/components/agentic/agent-task.d.ts +16 -0
  13. package/dist/components/agentic/agent-task.js +20 -0
  14. package/dist/components/agentic/approval-request.d.ts +24 -0
  15. package/dist/components/agentic/approval-request.js +57 -0
  16. package/dist/components/agentic/artifact.d.ts +24 -0
  17. package/dist/components/agentic/artifact.js +72 -0
  18. package/dist/components/agentic/attachments.d.ts +124 -0
  19. package/dist/components/agentic/attachments.js +595 -0
  20. package/dist/components/agentic/audio-player.d.ts +16 -0
  21. package/dist/components/agentic/audio-player.js +21 -0
  22. package/dist/components/agentic/canvas.d.ts +10 -0
  23. package/dist/components/agentic/canvas.js +22 -0
  24. package/dist/components/agentic/clipboard.d.ts +2 -0
  25. package/dist/components/agentic/clipboard.js +12 -0
  26. package/dist/components/agentic/code-block.d.ts +43 -0
  27. package/dist/components/agentic/code-block.js +92 -0
  28. package/dist/components/agentic/commit.d.ts +57 -0
  29. package/dist/components/agentic/commit.js +85 -0
  30. package/dist/components/agentic/connection.d.ts +3 -0
  31. package/dist/components/agentic/connection.js +8 -0
  32. package/dist/components/agentic/controls.d.ts +6 -0
  33. package/dist/components/agentic/controls.js +7 -0
  34. package/dist/components/agentic/conversation.d.ts +25 -0
  35. package/dist/components/agentic/conversation.js +56 -0
  36. package/dist/components/agentic/edge.d.ts +8 -0
  37. package/dist/components/agentic/edge.js +65 -0
  38. package/dist/components/agentic/effort-selector.d.ts +43 -0
  39. package/dist/components/agentic/effort-selector.js +47 -0
  40. package/dist/components/agentic/environment-variables.d.ts +32 -0
  41. package/dist/components/agentic/environment-variables.js +66 -0
  42. package/dist/components/agentic/file-tree.d.ts +24 -0
  43. package/dist/components/agentic/file-tree.js +56 -0
  44. package/dist/components/agentic/image.d.ts +9 -0
  45. package/dist/components/agentic/image.js +11 -0
  46. package/dist/components/agentic/inline-citation.d.ts +40 -0
  47. package/dist/components/agentic/inline-citation.js +111 -0
  48. package/dist/components/agentic/jsx-preview.d.ts +19 -0
  49. package/dist/components/agentic/jsx-preview.js +34 -0
  50. package/dist/components/agentic/message-branch.d.ts +20 -0
  51. package/dist/components/agentic/message-branch.js +83 -0
  52. package/dist/components/agentic/message-response.css +265 -0
  53. package/dist/components/agentic/message-response.css.d.ts +2 -0
  54. package/dist/components/agentic/message.d.ts +27 -0
  55. package/dist/components/agentic/message.js +57 -0
  56. package/dist/components/agentic/mic-selector.d.ts +58 -0
  57. package/dist/components/agentic/mic-selector.js +173 -0
  58. package/dist/components/agentic/model-selector.d.ts +39 -0
  59. package/dist/components/agentic/model-selector.js +47 -0
  60. package/dist/components/agentic/node.d.ts +26 -0
  61. package/dist/components/agentic/node.js +29 -0
  62. package/dist/components/agentic/open-in-chat.d.ts +9 -0
  63. package/dist/components/agentic/open-in-chat.js +8 -0
  64. package/dist/components/agentic/package-info.d.ts +30 -0
  65. package/dist/components/agentic/package-info.js +44 -0
  66. package/dist/components/agentic/panel.d.ts +6 -0
  67. package/dist/components/agentic/panel.js +7 -0
  68. package/dist/components/agentic/persona.d.ts +16 -0
  69. package/dist/components/agentic/persona.js +116 -0
  70. package/dist/components/agentic/prompt-input-action-menu.d.ts +16 -0
  71. package/dist/components/agentic/prompt-input-action-menu.js +22 -0
  72. package/dist/components/agentic/prompt-input-command.d.ts +18 -0
  73. package/dist/components/agentic/prompt-input-command.js +25 -0
  74. package/dist/components/agentic/prompt-input-hover-card.d.ts +10 -0
  75. package/dist/components/agentic/prompt-input-hover-card.js +13 -0
  76. package/dist/components/agentic/prompt-input-select.d.ts +14 -0
  77. package/dist/components/agentic/prompt-input-select.js +19 -0
  78. package/dist/components/agentic/prompt-input-tabs.d.ts +17 -0
  79. package/dist/components/agentic/prompt-input-tabs.js +45 -0
  80. package/dist/components/agentic/prompt-input.d.ts +79 -0
  81. package/dist/components/agentic/prompt-input.js +206 -0
  82. package/dist/components/agentic/reasoning.d.ts +21 -0
  83. package/dist/components/agentic/reasoning.js +106 -0
  84. package/dist/components/agentic/run-checkpoint.d.ts +13 -0
  85. package/dist/components/agentic/run-checkpoint.js +19 -0
  86. package/dist/components/agentic/run-trace.d.ts +30 -0
  87. package/dist/components/agentic/run-trace.js +56 -0
  88. package/dist/components/agentic/sandbox.d.ts +24 -0
  89. package/dist/components/agentic/sandbox.js +33 -0
  90. package/dist/components/agentic/schema-display.d.ts +39 -0
  91. package/dist/components/agentic/schema-display.js +56 -0
  92. package/dist/components/agentic/shimmer.d.ts +11 -0
  93. package/dist/components/agentic/shimmer.js +16 -0
  94. package/dist/components/agentic/snippet.d.ts +18 -0
  95. package/dist/components/agentic/snippet.js +35 -0
  96. package/dist/components/agentic/sources.d.ts +16 -0
  97. package/dist/components/agentic/sources.js +17 -0
  98. package/dist/components/agentic/speech-input.d.ts +24 -0
  99. package/dist/components/agentic/speech-input.js +30 -0
  100. package/dist/components/agentic/stack-trace.d.ts +27 -0
  101. package/dist/components/agentic/stack-trace.js +76 -0
  102. package/dist/components/agentic/suggestion.d.ts +12 -0
  103. package/dist/components/agentic/suggestion.js +15 -0
  104. package/dist/components/agentic/terminal.d.ts +24 -0
  105. package/dist/components/agentic/terminal.js +47 -0
  106. package/dist/components/agentic/test-results.d.ts +51 -0
  107. package/dist/components/agentic/test-results.js +83 -0
  108. package/dist/components/agentic/theme.d.ts +5 -0
  109. package/dist/components/agentic/theme.js +31 -0
  110. package/dist/components/agentic/tool.d.ts +25 -0
  111. package/dist/components/agentic/tool.js +73 -0
  112. package/dist/components/agentic/toolbar.d.ts +6 -0
  113. package/dist/components/agentic/toolbar.js +7 -0
  114. package/dist/components/agentic/transcription.d.ts +20 -0
  115. package/dist/components/agentic/transcription.js +32 -0
  116. package/dist/components/agentic/types.d.ts +172 -0
  117. package/dist/components/agentic/types.js +1 -0
  118. package/dist/components/agentic/use-controllable-state.d.ts +6 -0
  119. package/dist/components/agentic/use-controllable-state.js +13 -0
  120. package/dist/components/agentic/voice-selector.d.ts +69 -0
  121. package/dist/components/agentic/voice-selector.js +122 -0
  122. package/dist/components/agentic/web-preview.d.ts +25 -0
  123. package/dist/components/agentic/web-preview.js +33 -0
  124. package/dist/components/ui/accordion.d.ts +7 -0
  125. package/dist/components/ui/accordion.js +17 -0
  126. package/dist/components/ui/alert-dialog.d.ts +22 -0
  127. package/dist/components/ui/alert-dialog.js +51 -0
  128. package/dist/components/ui/alert.d.ts +9 -0
  129. package/dist/components/ui/alert.js +24 -0
  130. package/dist/components/ui/aspect-ratio.d.ts +3 -0
  131. package/dist/components/ui/aspect-ratio.js +7 -0
  132. package/dist/components/ui/avatar.d.ts +11 -0
  133. package/dist/components/ui/avatar.js +22 -0
  134. package/dist/components/ui/badge-variants.d.ts +100 -0
  135. package/dist/components/ui/badge-variants.js +140 -0
  136. package/dist/components/ui/badge.d.ts +6 -0
  137. package/dist/components/ui/badge.js +9 -0
  138. package/dist/components/ui/breadcrumb.d.ts +11 -0
  139. package/dist/components/ui/breadcrumb.js +27 -0
  140. package/dist/components/ui/button-group-variants.d.ts +6 -0
  141. package/dist/components/ui/button-group-variants.js +13 -0
  142. package/dist/components/ui/button-group.d.ts +8 -0
  143. package/dist/components/ui/button-group.js +16 -0
  144. package/dist/components/ui/button-variants.d.ts +133 -0
  145. package/dist/components/ui/button-variants.js +170 -0
  146. package/dist/components/ui/button.d.ts +8 -0
  147. package/dist/components/ui/button.js +67 -0
  148. package/dist/components/ui/calendar.d.ts +9 -0
  149. package/dist/components/ui/calendar.js +99 -0
  150. package/dist/components/ui/card.d.ts +14 -0
  151. package/dist/components/ui/card.js +28 -0
  152. package/dist/components/ui/carousel.d.ts +19 -0
  153. package/dist/components/ui/carousel.js +104 -0
  154. package/dist/components/ui/chart-context.d.ts +33 -0
  155. package/dist/components/ui/chart-context.js +36 -0
  156. package/dist/components/ui/chart-panel.d.ts +11 -0
  157. package/dist/components/ui/chart-panel.js +6 -0
  158. package/dist/components/ui/chart-tooltip.d.ts +13 -0
  159. package/dist/components/ui/chart-tooltip.js +84 -0
  160. package/dist/components/ui/chart.d.ts +23 -0
  161. package/dist/components/ui/chart.js +52 -0
  162. package/dist/components/ui/checkbox.d.ts +4 -0
  163. package/dist/components/ui/checkbox.js +9 -0
  164. package/dist/components/ui/collapsible.d.ts +5 -0
  165. package/dist/components/ui/collapsible.js +12 -0
  166. package/dist/components/ui/combobox-anchor.d.ts +3 -0
  167. package/dist/components/ui/combobox-anchor.js +5 -0
  168. package/dist/components/ui/combobox.d.ts +23 -0
  169. package/dist/components/ui/combobox.js +54 -0
  170. package/dist/components/ui/command.d.ts +19 -0
  171. package/dist/components/ui/command.js +38 -0
  172. package/dist/components/ui/context-menu.d.ts +30 -0
  173. package/dist/components/ui/context-menu.js +63 -0
  174. package/dist/components/ui/data-table.d.ts +17 -0
  175. package/dist/components/ui/data-table.js +26 -0
  176. package/dist/components/ui/dialog.d.ts +22 -0
  177. package/dist/components/ui/dialog.js +48 -0
  178. package/dist/components/ui/direction-context.d.ts +3 -0
  179. package/dist/components/ui/direction-context.js +3 -0
  180. package/dist/components/ui/direction.d.ts +6 -0
  181. package/dist/components/ui/direction.js +7 -0
  182. package/dist/components/ui/drawer.d.ts +18 -0
  183. package/dist/components/ui/drawer.js +47 -0
  184. package/dist/components/ui/dropdown-menu.d.ts +30 -0
  185. package/dist/components/ui/dropdown-menu.js +63 -0
  186. package/dist/components/ui/empty.d.ts +11 -0
  187. package/dist/components/ui/empty.js +33 -0
  188. package/dist/components/ui/expandable-data-table.d.ts +24 -0
  189. package/dist/components/ui/expandable-data-table.js +62 -0
  190. package/dist/components/ui/field.d.ts +26 -0
  191. package/dist/components/ui/field.js +74 -0
  192. package/dist/components/ui/file-upload-field-parts.d.ts +21 -0
  193. package/dist/components/ui/file-upload-field-parts.js +55 -0
  194. package/dist/components/ui/file-upload-field.d.ts +15 -0
  195. package/dist/components/ui/file-upload-field.js +85 -0
  196. package/dist/components/ui/form-context.d.ts +23 -0
  197. package/dist/components/ui/form-context.js +35 -0
  198. package/dist/components/ui/form.d.ts +12 -0
  199. package/dist/components/ui/form.js +38 -0
  200. package/dist/components/ui/hover-card.d.ts +10 -0
  201. package/dist/components/ui/hover-card.js +22 -0
  202. package/dist/components/ui/input-group.d.ts +16 -0
  203. package/dist/components/ui/input-group.js +62 -0
  204. package/dist/components/ui/input-otp.d.ts +11 -0
  205. package/dist/components/ui/input-otp.js +21 -0
  206. package/dist/components/ui/input.d.ts +3 -0
  207. package/dist/components/ui/input.js +6 -0
  208. package/dist/components/ui/item.d.ts +23 -0
  209. package/dist/components/ui/item.js +66 -0
  210. package/dist/components/ui/kbd.d.ts +3 -0
  211. package/dist/components/ui/kbd.js +9 -0
  212. package/dist/components/ui/label.d.ts +4 -0
  213. package/dist/components/ui/label.js +7 -0
  214. package/dist/components/ui/loading-state.d.ts +27 -0
  215. package/dist/components/ui/loading-state.js +44 -0
  216. package/dist/components/ui/menubar.d.ts +30 -0
  217. package/dist/components/ui/menubar.js +63 -0
  218. package/dist/components/ui/metrics-strip.d.ts +7 -0
  219. package/dist/components/ui/metrics-strip.js +18 -0
  220. package/dist/components/ui/native-select.d.ts +7 -0
  221. package/dist/components/ui/native-select.js +13 -0
  222. package/dist/components/ui/navigation-menu-variants.d.ts +2 -0
  223. package/dist/components/ui/navigation-menu-variants.js +3 -0
  224. package/dist/components/ui/navigation-menu.d.ts +13 -0
  225. package/dist/components/ui/navigation-menu.js +30 -0
  226. package/dist/components/ui/page-header.d.ts +19 -0
  227. package/dist/components/ui/page-header.js +36 -0
  228. package/dist/components/ui/pagination.d.ts +13 -0
  229. package/dist/components/ui/pagination.js +29 -0
  230. package/dist/components/ui/popover.d.ts +14 -0
  231. package/dist/components/ui/popover.js +34 -0
  232. package/dist/components/ui/progress.d.ts +4 -0
  233. package/dist/components/ui/progress.js +8 -0
  234. package/dist/components/ui/property-list.d.ts +6 -0
  235. package/dist/components/ui/property-list.js +15 -0
  236. package/dist/components/ui/radio-group.d.ts +5 -0
  237. package/dist/components/ui/radio-group.js +11 -0
  238. package/dist/components/ui/registry-docs-api.d.ts +11 -0
  239. package/dist/components/ui/registry-docs-api.js +9 -0
  240. package/dist/components/ui/registry-docs-code.d.ts +19 -0
  241. package/dist/components/ui/registry-docs-code.js +78 -0
  242. package/dist/components/ui/registry-docs-showcase.d.ts +11 -0
  243. package/dist/components/ui/registry-docs-showcase.js +27 -0
  244. package/dist/components/ui/registry-docs.d.ts +27 -0
  245. package/dist/components/ui/registry-docs.js +32 -0
  246. package/dist/components/ui/resizable.d.ts +7 -0
  247. package/dist/components/ui/resizable.js +15 -0
  248. package/dist/components/ui/scroll-area.d.ts +7 -0
  249. package/dist/components/ui/scroll-area.js +10 -0
  250. package/dist/components/ui/select.d.ts +15 -0
  251. package/dist/components/ui/select.js +38 -0
  252. package/dist/components/ui/separator.d.ts +4 -0
  253. package/dist/components/ui/separator.js +7 -0
  254. package/dist/components/ui/sheet.d.ts +21 -0
  255. package/dist/components/ui/sheet.js +62 -0
  256. package/dist/components/ui/sidebar/context.d.ts +21 -0
  257. package/dist/components/ui/sidebar/context.js +15 -0
  258. package/dist/components/ui/sidebar/group.d.ts +10 -0
  259. package/dist/components/ui/sidebar/group.js +18 -0
  260. package/dist/components/ui/sidebar/layout.d.ts +17 -0
  261. package/dist/components/ui/sidebar/layout.js +73 -0
  262. package/dist/components/ui/sidebar/menu.d.ts +30 -0
  263. package/dist/components/ui/sidebar/menu.js +64 -0
  264. package/dist/components/ui/sidebar/provider.d.ts +7 -0
  265. package/dist/components/ui/sidebar/provider.js +53 -0
  266. package/dist/components/ui/sidebar/rail.d.ts +3 -0
  267. package/dist/components/ui/sidebar/rail.js +12 -0
  268. package/dist/components/ui/sidebar/trigger.d.ts +4 -0
  269. package/dist/components/ui/sidebar/trigger.js +16 -0
  270. package/dist/components/ui/sidebar-account-menu-theme.d.ts +7 -0
  271. package/dist/components/ui/sidebar-account-menu-theme.js +32 -0
  272. package/dist/components/ui/sidebar-account-menu.d.ts +14 -0
  273. package/dist/components/ui/sidebar-account-menu.js +51 -0
  274. package/dist/components/ui/sidebar.d.ts +7 -0
  275. package/dist/components/ui/sidebar.js +7 -0
  276. package/dist/components/ui/skeleton.d.ts +2 -0
  277. package/dist/components/ui/skeleton.js +15 -0
  278. package/dist/components/ui/slider.d.ts +4 -0
  279. package/dist/components/ui/slider.js +9 -0
  280. package/dist/components/ui/sonner.d.ts +3 -0
  281. package/dist/components/ui/sonner.js +33 -0
  282. package/dist/components/ui/spinner.d.ts +2 -0
  283. package/dist/components/ui/spinner.js +16 -0
  284. package/dist/components/ui/switch.d.ts +6 -0
  285. package/dist/components/ui/switch.js +7 -0
  286. package/dist/components/ui/table.d.ts +10 -0
  287. package/dist/components/ui/table.js +28 -0
  288. package/dist/components/ui/tabs-variants.d.ts +6 -0
  289. package/dist/components/ui/tabs-variants.js +13 -0
  290. package/dist/components/ui/tabs.d.ts +8 -0
  291. package/dist/components/ui/tabs.js +17 -0
  292. package/dist/components/ui/textarea.d.ts +3 -0
  293. package/dist/components/ui/textarea.js +6 -0
  294. package/dist/components/ui/toggle-group.d.ts +9 -0
  295. package/dist/components/ui/toggle-group.js +24 -0
  296. package/dist/components/ui/toggle-variants.d.ts +7 -0
  297. package/dist/components/ui/toggle-variants.js +19 -0
  298. package/dist/components/ui/toggle.d.ts +5 -0
  299. package/dist/components/ui/toggle.js +9 -0
  300. package/dist/components/ui/tooltip.d.ts +11 -0
  301. package/dist/components/ui/tooltip.js +25 -0
  302. package/dist/components/ui/workflow-timeline.d.ts +20 -0
  303. package/dist/components/ui/workflow-timeline.js +92 -0
  304. package/dist/hooks/use-mobile.d.ts +1 -0
  305. package/dist/hooks/use-mobile.js +15 -0
  306. package/dist/lib/utils.d.ts +5 -0
  307. package/dist/lib/utils.js +8 -0
  308. package/dist/styled-system/css/conditions.mjs +36 -0
  309. package/dist/styled-system/css/css.mjs +45 -0
  310. package/dist/styled-system/css/cva.mjs +87 -0
  311. package/dist/styled-system/css/cx.mjs +15 -0
  312. package/dist/styled-system/css/index.mjs +4 -0
  313. package/dist/styled-system/css/sva.mjs +46 -0
  314. package/dist/styled-system/helpers.mjs +316 -0
  315. package/dist/styled-system/patterns/aspect-ratio.mjs +38 -0
  316. package/dist/styled-system/patterns/bleed.mjs +24 -0
  317. package/dist/styled-system/patterns/box.mjs +15 -0
  318. package/dist/styled-system/patterns/center.mjs +21 -0
  319. package/dist/styled-system/patterns/circle.mjs +25 -0
  320. package/dist/styled-system/patterns/container.mjs +21 -0
  321. package/dist/styled-system/patterns/cq.mjs +21 -0
  322. package/dist/styled-system/patterns/divider.mjs +25 -0
  323. package/dist/styled-system/patterns/flex.mjs +26 -0
  324. package/dist/styled-system/patterns/float.mjs +52 -0
  325. package/dist/styled-system/patterns/grid-item.mjs +25 -0
  326. package/dist/styled-system/patterns/grid.mjs +27 -0
  327. package/dist/styled-system/patterns/hstack.mjs +24 -0
  328. package/dist/styled-system/patterns/index.mjs +20 -0
  329. package/dist/styled-system/patterns/link-overlay.mjs +24 -0
  330. package/dist/styled-system/patterns/spacer.mjs +25 -0
  331. package/dist/styled-system/patterns/square.mjs +24 -0
  332. package/dist/styled-system/patterns/stack.mjs +24 -0
  333. package/dist/styled-system/patterns/visually-hidden.mjs +18 -0
  334. package/dist/styled-system/patterns/vstack.mjs +24 -0
  335. package/dist/styled-system/patterns/wrap.mjs +25 -0
  336. package/dist/styled-system/styles.css +1089 -0
  337. package/dist/styled-system/styles.css.d.ts +2 -0
  338. package/dist/styled-system/tokens/index.mjs +2304 -0
  339. package/package.json +688 -0
@@ -0,0 +1,66 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cva } from "class-variance-authority";
3
+ import { Slot } from "radix-ui";
4
+ import { cn } from "@ciridae/ui/utils";
5
+ import { Separator } from "@ciridae/ui/separator";
6
+ function ItemGroup({ className, ...props }) {
7
+ return (_jsx("div", { role: "list", "data-slot": "item-group", className: cn("group/item-group flex flex-col", className), ...props }));
8
+ }
9
+ function ItemSeparator({ className, ...props }) {
10
+ return (_jsx(Separator, { "data-slot": "item-separator", orientation: "horizontal", className: cn("my-0", className), ...props }));
11
+ }
12
+ const itemVariants = cva("group/item flex flex-wrap items-center rounded-md border border-transparent text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[var(--focus-ring-width)] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-accent/50", {
13
+ variants: {
14
+ variant: {
15
+ default: "bg-transparent",
16
+ outline: "border-border",
17
+ muted: "bg-muted/50",
18
+ },
19
+ size: {
20
+ default: "gap-(--panel-gap) p-(--panel-padding)",
21
+ sm: "gap-2.5 px-(--panel-padding) py-3",
22
+ },
23
+ },
24
+ defaultVariants: {
25
+ variant: "default",
26
+ size: "default",
27
+ },
28
+ });
29
+ function Item({ className, variant = "default", size = "default", asChild = false, ...props }) {
30
+ const Comp = asChild ? Slot.Root : "div";
31
+ return (_jsx(Comp, { "data-slot": "item", "data-variant": variant, "data-size": size, className: cn(itemVariants({ variant, size, className })), ...props }));
32
+ }
33
+ const itemMediaVariants = cva("flex shrink-0 items-center justify-center gap-2 group-has-[[data-slot=item-description]]/item:translate-y-0.5 group-has-[[data-slot=item-description]]/item:self-start [&_svg]:pointer-events-none", {
34
+ variants: {
35
+ variant: {
36
+ default: "bg-transparent",
37
+ icon: "size-8 rounded-sm border bg-muted [&_svg:not([class*='size-'])]:size-4",
38
+ image: "size-10 overflow-hidden rounded-sm [&_img]:size-full [&_img]:object-cover",
39
+ },
40
+ },
41
+ defaultVariants: {
42
+ variant: "default",
43
+ },
44
+ });
45
+ function ItemMedia({ className, variant = "default", ...props }) {
46
+ return (_jsx("div", { "data-slot": "item-media", "data-variant": variant, className: cn(itemMediaVariants({ variant, className })), ...props }));
47
+ }
48
+ function ItemContent({ className, ...props }) {
49
+ return (_jsx("div", { "data-slot": "item-content", className: cn("flex flex-1 flex-col gap-1 [&+[data-slot=item-content]]:flex-none", className), ...props }));
50
+ }
51
+ function ItemTitle({ className, ...props }) {
52
+ return (_jsx("div", { "data-slot": "item-title", className: cn("flex w-fit items-center gap-2 text-sm leading-snug font-medium", className), ...props }));
53
+ }
54
+ function ItemDescription({ className, ...props }) {
55
+ return (_jsx("p", { "data-slot": "item-description", className: cn("line-clamp-2 text-sm leading-normal font-normal text-balance text-muted-foreground", "[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary", className), ...props }));
56
+ }
57
+ function ItemActions({ className, ...props }) {
58
+ return (_jsx("div", { "data-slot": "item-actions", className: cn("flex items-center gap-2", className), ...props }));
59
+ }
60
+ function ItemHeader({ className, ...props }) {
61
+ return (_jsx("div", { "data-slot": "item-header", className: cn("flex basis-full items-center justify-between gap-2", className), ...props }));
62
+ }
63
+ function ItemFooter({ className, ...props }) {
64
+ return (_jsx("div", { "data-slot": "item-footer", className: cn("flex basis-full items-center justify-between gap-2", className), ...props }));
65
+ }
66
+ export { Item, ItemMedia, ItemContent, ItemActions, ItemGroup, ItemSeparator, ItemTitle, ItemDescription, ItemHeader, ItemFooter, };
@@ -0,0 +1,3 @@
1
+ declare function Kbd({ className, ...props }: React.ComponentProps<"kbd">): import("react/jsx-runtime").JSX.Element;
2
+ declare function KbdGroup({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
3
+ export { Kbd, KbdGroup };
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cn } from "@ciridae/ui/utils";
3
+ function Kbd({ className, ...props }) {
4
+ return (_jsx("kbd", { "data-slot": "kbd", className: cn("pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm bg-muted px-1 font-sans text-xs font-medium text-muted-foreground select-none", "[&_svg:not([class*='size-'])]:size-3", "[[data-slot=tooltip-content]_&]:bg-background/20 [[data-slot=tooltip-content]_&]:text-background dark:[[data-slot=tooltip-content]_&]:bg-background/10", className), ...props }));
5
+ }
6
+ function KbdGroup({ className, ...props }) {
7
+ return (_jsx("kbd", { "data-slot": "kbd-group", className: cn("inline-flex items-center gap-1", className), ...props }));
8
+ }
9
+ export { Kbd, KbdGroup };
@@ -0,0 +1,4 @@
1
+ import * as React from "react";
2
+ import { Label as LabelPrimitive } from "radix-ui";
3
+ declare function Label({ className, ...props }: React.ComponentProps<typeof LabelPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
4
+ export { Label };
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Label as LabelPrimitive } from "radix-ui";
3
+ import { cn } from "@ciridae/ui/utils";
4
+ function Label({ className, ...props }) {
5
+ return (_jsx(LabelPrimitive.Root, { "data-slot": "label", className: cn("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50", className), ...props }));
6
+ }
7
+ export { Label };
@@ -0,0 +1,27 @@
1
+ import * as React from "react";
2
+ import { Card } from "@ciridae/ui/card";
3
+ type LoadingStateSize = "sm" | "default" | "lg";
4
+ type LoadingStateProps = React.ComponentProps<"div"> & {
5
+ description?: React.ReactNode;
6
+ label?: React.ReactNode;
7
+ size?: LoadingStateSize;
8
+ };
9
+ declare function LoadingState({ className, description, label, size, ...props }: LoadingStateProps): import("react/jsx-runtime").JSX.Element;
10
+ type PageLoadingStateProps = Omit<LoadingStateProps, "size">;
11
+ declare function PageLoadingState({ className, description, label, ...props }: PageLoadingStateProps): import("react/jsx-runtime").JSX.Element;
12
+ type TableSkeletonProps = React.ComponentProps<"div"> & {
13
+ columns?: number;
14
+ rows?: number;
15
+ showHeader?: boolean;
16
+ };
17
+ declare function TableSkeleton({ className, columns, rows, showHeader, ...props }: TableSkeletonProps): import("react/jsx-runtime").JSX.Element;
18
+ type CardSkeletonProps = React.ComponentProps<typeof Card> & {
19
+ lines?: number;
20
+ };
21
+ declare function CardSkeleton({ className, lines, variant, ...props }: CardSkeletonProps): import("react/jsx-runtime").JSX.Element;
22
+ type FormSkeletonProps = React.ComponentProps<"div"> & {
23
+ fields?: number;
24
+ };
25
+ declare function FormSkeleton({ className, fields, ...props }: FormSkeletonProps): import("react/jsx-runtime").JSX.Element;
26
+ export { LoadingState, PageLoadingState, TableSkeleton, CardSkeleton, FormSkeleton };
27
+ export type { LoadingStateProps, PageLoadingStateProps, TableSkeletonProps, CardSkeletonProps, FormSkeletonProps, };
@@ -0,0 +1,44 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { cn } from "@ciridae/ui/utils";
4
+ import { Card, CardContent, CardHeader } from "@ciridae/ui/card";
5
+ import { Skeleton } from "@ciridae/ui/skeleton";
6
+ import { Spinner } from "@ciridae/ui/spinner";
7
+ const loadingStateSizes = {
8
+ sm: "min-h-14 gap-2 p-3",
9
+ default: "min-h-24 gap-3 p-(--panel-padding)",
10
+ lg: "min-h-48 gap-3 p-8",
11
+ };
12
+ const loadingSpinnerSizes = {
13
+ sm: "size-3.5",
14
+ default: "size-4",
15
+ lg: "size-5",
16
+ };
17
+ function LoadingState({ className, description, label = "Loading", size = "default", ...props }) {
18
+ const labelId = React.useId();
19
+ return (_jsxs("div", { role: "status", "aria-labelledby": label ? labelId : undefined, "aria-live": "polite", "data-slot": "loading-state", "data-size": size, className: cn("flex flex-col items-center justify-center text-center text-muted-foreground", loadingStateSizes[size], className), ...props, children: [_jsx(Spinner, { "aria-hidden": "true", className: cn("text-muted-foreground", loadingSpinnerSizes[size]) }), label || description ? (_jsxs("div", { className: "grid gap-1", children: [label ? (_jsx("div", { id: labelId, className: "text-sm font-medium text-foreground", children: label })) : null, description ? _jsx("div", { className: "text-sm text-muted-foreground", children: description }) : null] })) : null] }));
20
+ }
21
+ function PageLoadingState({ className, description, label = "Preparing workspace", ...props }) {
22
+ return (_jsx("div", { "data-slot": "page-loading-state", className: cn("flex min-h-svh items-center justify-center bg-background p-6 text-foreground", className), ...props, children: _jsx(LoadingState, { description: description, label: label, size: "sm", className: "min-h-0 p-0" }) }));
23
+ }
24
+ function TableSkeleton({ className, columns = 4, rows = 5, showHeader = true, ...props }) {
25
+ const columnItems = Array.from({ length: columns });
26
+ const rowItems = Array.from({ length: rows });
27
+ const gridStyle = {
28
+ gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))`,
29
+ };
30
+ return (_jsx("div", { role: "status", "aria-label": "Loading table", "data-slot": "table-skeleton", className: cn("overflow-hidden rounded-md border bg-card text-card-foreground", className), ...props, children: _jsxs("div", { "aria-hidden": "true", children: [showHeader ? (_jsx("div", { className: "grid border-b bg-muted/40", style: gridStyle, children: columnItems.map((_, index) => (_jsx("div", { className: "px-(--table-cell-padding-x) py-(--table-cell-padding-y)", children: _jsx(Skeleton, { className: cn("h-3", index === columns - 1 ? "ml-auto w-12" : "w-16") }) }, index))) })) : null, rowItems.map((_, rowIndex) => (_jsx("div", { className: "grid border-b last:border-b-0", style: gridStyle, children: columnItems.map((_, columnIndex) => (_jsx("div", { className: "flex h-(--table-row-height) items-center px-(--table-cell-padding-x)", children: _jsx(Skeleton, { className: cn("h-3", columnIndex === columns - 1
31
+ ? "ml-auto w-14"
32
+ : columnIndex === 0
33
+ ? "w-24"
34
+ : "w-20") }) }, columnIndex))) }, rowIndex)))] }) }));
35
+ }
36
+ function CardSkeleton({ className, lines = 3, variant, ...props }) {
37
+ const lineItems = Array.from({ length: lines });
38
+ return (_jsx(Card, { role: "status", "aria-label": "Loading card", "data-slot": "card-skeleton", variant: variant, className: className, ...props, children: _jsxs("div", { "aria-hidden": "true", children: [_jsxs(CardHeader, { children: [_jsx(Skeleton, { className: "h-4 w-32" }), _jsx(Skeleton, { className: "h-3 w-48 max-w-full" })] }), _jsx(CardContent, { className: "grid gap-2", children: lineItems.map((_, index) => (_jsx(Skeleton, { className: cn("h-3", index === lineItems.length - 1 ? "w-2/3" : "w-full") }, index))) })] }) }));
39
+ }
40
+ function FormSkeleton({ className, fields = 4, ...props }) {
41
+ const fieldItems = Array.from({ length: fields });
42
+ return (_jsx("div", { role: "status", "aria-label": "Loading form", "data-slot": "form-skeleton", className: cn("grid gap-[calc(var(--panel-gap)+0.5rem)]", className), ...props, children: _jsx("div", { "aria-hidden": "true", className: "grid gap-[calc(var(--panel-gap)+0.5rem)]", children: fieldItems.map((_, index) => (_jsxs("div", { className: "grid gap-2", children: [_jsx(Skeleton, { className: "h-3 w-24" }), _jsx(Skeleton, { className: "h-(--control-height) w-full" })] }, index))) }) }));
43
+ }
44
+ export { LoadingState, PageLoadingState, TableSkeleton, CardSkeleton, FormSkeleton };
@@ -0,0 +1,30 @@
1
+ import * as React from "react";
2
+ import { Menubar as MenubarPrimitive } from "radix-ui";
3
+ declare function MenubarPortalContainerProvider({ children, container, }: {
4
+ children: React.ReactNode;
5
+ container: HTMLElement | null;
6
+ }): import("react/jsx-runtime").JSX.Element;
7
+ declare function Menubar({ className, ...props }: React.ComponentProps<typeof MenubarPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
8
+ declare function MenubarMenu({ ...props }: React.ComponentProps<typeof MenubarPrimitive.Menu>): import("react/jsx-runtime").JSX.Element;
9
+ declare function MenubarGroup({ ...props }: React.ComponentProps<typeof MenubarPrimitive.Group>): import("react/jsx-runtime").JSX.Element;
10
+ declare function MenubarPortal({ container, ...props }: React.ComponentProps<typeof MenubarPrimitive.Portal>): import("react/jsx-runtime").JSX.Element;
11
+ declare function MenubarRadioGroup({ ...props }: React.ComponentProps<typeof MenubarPrimitive.RadioGroup>): import("react/jsx-runtime").JSX.Element;
12
+ declare function MenubarTrigger({ className, ...props }: React.ComponentProps<typeof MenubarPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
13
+ declare function MenubarContent({ className, align, alignOffset, sideOffset, ...props }: React.ComponentProps<typeof MenubarPrimitive.Content>): import("react/jsx-runtime").JSX.Element;
14
+ declare function MenubarItem({ className, inset, variant, ...props }: React.ComponentProps<typeof MenubarPrimitive.Item> & {
15
+ inset?: boolean;
16
+ variant?: "default" | "destructive";
17
+ }): import("react/jsx-runtime").JSX.Element;
18
+ declare function MenubarCheckboxItem({ className, children, checked, ...props }: React.ComponentProps<typeof MenubarPrimitive.CheckboxItem>): import("react/jsx-runtime").JSX.Element;
19
+ declare function MenubarRadioItem({ className, children, ...props }: React.ComponentProps<typeof MenubarPrimitive.RadioItem>): import("react/jsx-runtime").JSX.Element;
20
+ declare function MenubarLabel({ className, inset, ...props }: React.ComponentProps<typeof MenubarPrimitive.Label> & {
21
+ inset?: boolean;
22
+ }): import("react/jsx-runtime").JSX.Element;
23
+ declare function MenubarSeparator({ className, ...props }: React.ComponentProps<typeof MenubarPrimitive.Separator>): import("react/jsx-runtime").JSX.Element;
24
+ declare function MenubarShortcut({ className, ...props }: React.ComponentProps<"span">): import("react/jsx-runtime").JSX.Element;
25
+ declare function MenubarSub({ ...props }: React.ComponentProps<typeof MenubarPrimitive.Sub>): import("react/jsx-runtime").JSX.Element;
26
+ declare function MenubarSubTrigger({ className, inset, children, ...props }: React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {
27
+ inset?: boolean;
28
+ }): import("react/jsx-runtime").JSX.Element;
29
+ declare function MenubarSubContent({ className, ...props }: React.ComponentProps<typeof MenubarPrimitive.SubContent>): import("react/jsx-runtime").JSX.Element;
30
+ export { Menubar, MenubarPortal, MenubarPortalContainerProvider, MenubarMenu, MenubarTrigger, MenubarContent, MenubarGroup, MenubarSeparator, MenubarLabel, MenubarItem, MenubarShortcut, MenubarCheckboxItem, MenubarRadioGroup, MenubarRadioItem, MenubarSub, MenubarSubTrigger, MenubarSubContent, };
@@ -0,0 +1,63 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react";
5
+ import { Menubar as MenubarPrimitive } from "radix-ui";
6
+ import { cn } from "@ciridae/ui/utils";
7
+ const MenubarPortalContainerContext = React.createContext({
8
+ container: null,
9
+ });
10
+ function MenubarPortalContainerProvider({ children, container, }) {
11
+ const value = React.useMemo(() => ({ container }), [container]);
12
+ return (_jsx(MenubarPortalContainerContext.Provider, { value: value, children: children }));
13
+ }
14
+ function Menubar({ className, ...props }) {
15
+ return (_jsx(MenubarPrimitive.Root, { "data-slot": "menubar", className: cn("flex h-9 items-center gap-1 rounded-md border bg-background p-1 shadow-xs", className), ...props }));
16
+ }
17
+ function MenubarMenu({ ...props }) {
18
+ return _jsx(MenubarPrimitive.Menu, { "data-slot": "menubar-menu", ...props });
19
+ }
20
+ function MenubarGroup({ ...props }) {
21
+ return _jsx(MenubarPrimitive.Group, { "data-slot": "menubar-group", ...props });
22
+ }
23
+ function MenubarPortal({ container, ...props }) {
24
+ const { container: contextualContainer } = React.useContext(MenubarPortalContainerContext);
25
+ return (_jsx(MenubarPrimitive.Portal, { container: container ?? contextualContainer ?? undefined, "data-slot": "menubar-portal", ...props }));
26
+ }
27
+ function MenubarRadioGroup({ ...props }) {
28
+ return _jsx(MenubarPrimitive.RadioGroup, { "data-slot": "menubar-radio-group", ...props });
29
+ }
30
+ function MenubarTrigger({ className, ...props }) {
31
+ return (_jsx(MenubarPrimitive.Trigger, { "data-slot": "menubar-trigger", className: cn("flex min-h-(--menu-item-height) items-center rounded-sm px-(--menu-item-padding-x) py-1 text-sm font-medium outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground", className), ...props }));
32
+ }
33
+ function MenubarContent({ className, align = "start", alignOffset = -4, sideOffset = 8, ...props }) {
34
+ return (_jsx(MenubarPortal, { children: _jsx(MenubarPrimitive.Content, { "data-slot": "menubar-content", align: align, alignOffset: alignOffset, sideOffset: sideOffset, className: cn("z-50 min-w-[12rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-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-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0", className), ...props }) }));
35
+ }
36
+ function MenubarItem({ className, inset, variant = "default", ...props }) {
37
+ return (_jsx(MenubarPrimitive.Item, { "data-slot": "menubar-item", "data-inset": inset, "data-variant": variant, className: cn("relative flex min-h-(--menu-item-height) cursor-default items-center gap-(--control-gap) rounded-sm px-(--menu-item-padding-x) py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!", className), ...props }));
38
+ }
39
+ function MenubarCheckboxItem({ className, children, checked, ...props }) {
40
+ return (_jsxs(MenubarPrimitive.CheckboxItem, { "data-slot": "menubar-checkbox-item", className: cn("relative flex min-h-(--menu-item-height) cursor-default items-center gap-(--control-gap) rounded-xs py-1 pr-(--menu-item-padding-x) pl-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className), checked: checked, ...props, children: [_jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: _jsx(MenubarPrimitive.ItemIndicator, { children: _jsx(CheckIcon, { className: "size-4" }) }) }), children] }));
41
+ }
42
+ function MenubarRadioItem({ className, children, ...props }) {
43
+ return (_jsxs(MenubarPrimitive.RadioItem, { "data-slot": "menubar-radio-item", className: cn("relative flex min-h-(--menu-item-height) cursor-default items-center gap-(--control-gap) rounded-xs py-1 pr-(--menu-item-padding-x) pl-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className), ...props, children: [_jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: _jsx(MenubarPrimitive.ItemIndicator, { children: _jsx(CircleIcon, { className: "size-2 fill-current" }) }) }), children] }));
44
+ }
45
+ function MenubarLabel({ className, inset, ...props }) {
46
+ return (_jsx(MenubarPrimitive.Label, { "data-slot": "menubar-label", "data-inset": inset, className: cn("px-(--menu-item-padding-x) py-1 text-meta text-muted-foreground data-[inset]:pl-8", className), ...props }));
47
+ }
48
+ function MenubarSeparator({ className, ...props }) {
49
+ return (_jsx(MenubarPrimitive.Separator, { "data-slot": "menubar-separator", className: cn("-mx-1 my-1 h-px bg-border", className), ...props }));
50
+ }
51
+ function MenubarShortcut({ className, ...props }) {
52
+ return (_jsx("span", { "data-slot": "menubar-shortcut", className: cn("ml-auto text-meta font-mono text-muted-foreground", className), ...props }));
53
+ }
54
+ function MenubarSub({ ...props }) {
55
+ return _jsx(MenubarPrimitive.Sub, { "data-slot": "menubar-sub", ...props });
56
+ }
57
+ function MenubarSubTrigger({ className, inset, children, ...props }) {
58
+ return (_jsxs(MenubarPrimitive.SubTrigger, { "data-slot": "menubar-sub-trigger", "data-inset": inset, className: cn("flex min-h-(--menu-item-height) cursor-default items-center rounded-sm px-(--menu-item-padding-x) py-1 text-sm outline-none select-none focus:bg-accent focus:text-accent-foreground data-[inset]:pl-8 data-[state=open]:bg-accent data-[state=open]:text-accent-foreground", className), ...props, children: [children, _jsx(ChevronRightIcon, { className: "ml-auto h-4 w-4" })] }));
59
+ }
60
+ function MenubarSubContent({ className, ...props }) {
61
+ return (_jsx(MenubarPrimitive.SubContent, { "data-slot": "menubar-sub-content", className: cn("z-50 min-w-[8rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-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-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0", className), ...props }));
62
+ }
63
+ export { Menubar, MenubarPortal, MenubarPortalContainerProvider, MenubarMenu, MenubarTrigger, MenubarContent, MenubarGroup, MenubarSeparator, MenubarLabel, MenubarItem, MenubarShortcut, MenubarCheckboxItem, MenubarRadioGroup, MenubarRadioItem, MenubarSub, MenubarSubTrigger, MenubarSubContent, };
@@ -0,0 +1,7 @@
1
+ import * as React from "react";
2
+ declare function MetricsStrip({ className, ...props }: React.ComponentProps<"section">): import("react/jsx-runtime").JSX.Element;
3
+ declare function MetricsStripItem({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
4
+ declare function MetricsStripLabel({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
5
+ declare function MetricsStripValue({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
6
+ declare function MetricsStripDetail({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
7
+ export { MetricsStrip, MetricsStripDetail, MetricsStripItem, MetricsStripLabel, MetricsStripValue };
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cn } from "@ciridae/ui/utils";
3
+ function MetricsStrip({ className, ...props }) {
4
+ return (_jsx("section", { "data-slot": "metrics-strip", className: cn("grid grid-cols-1 divide-y divide-border rounded-lg border bg-card text-card-foreground shadow-xs md:grid-cols-5 md:divide-x md:divide-y-0", className), ...props }));
5
+ }
6
+ function MetricsStripItem({ className, ...props }) {
7
+ return (_jsx("div", { "data-slot": "metrics-strip-item", className: cn("flex min-h-24 flex-col justify-between gap-3 p-(--panel-padding)", className), ...props }));
8
+ }
9
+ function MetricsStripLabel({ className, ...props }) {
10
+ return (_jsx("div", { "data-slot": "metrics-strip-label", className: cn("text-meta text-muted-foreground", className), ...props }));
11
+ }
12
+ function MetricsStripValue({ className, ...props }) {
13
+ return (_jsx("div", { "data-slot": "metrics-strip-value", className: cn("font-mono text-2xl leading-none text-foreground tabular-nums", className), ...props }));
14
+ }
15
+ function MetricsStripDetail({ className, ...props }) {
16
+ return (_jsx("div", { "data-slot": "metrics-strip-detail", className: cn("text-xs text-muted-foreground", className), ...props }));
17
+ }
18
+ export { MetricsStrip, MetricsStripDetail, MetricsStripItem, MetricsStripLabel, MetricsStripValue };
@@ -0,0 +1,7 @@
1
+ import * as React from "react";
2
+ declare function NativeSelect({ className, size, ...props }: Omit<React.ComponentProps<"select">, "size"> & {
3
+ size?: "sm" | "default";
4
+ }): import("react/jsx-runtime").JSX.Element;
5
+ declare function NativeSelectOption({ className, ...props }: React.ComponentProps<"option">): import("react/jsx-runtime").JSX.Element;
6
+ declare function NativeSelectOptGroup({ className, ...props }: React.ComponentProps<"optgroup">): import("react/jsx-runtime").JSX.Element;
7
+ export { NativeSelect, NativeSelectOptGroup, NativeSelectOption };
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ChevronDownIcon } from "lucide-react";
3
+ import { cn } from "@ciridae/ui/utils";
4
+ function NativeSelect({ className, size = "default", ...props }) {
5
+ return (_jsxs("div", { className: "group/native-select relative w-fit has-[select:disabled]:opacity-50", "data-slot": "native-select-wrapper", children: [_jsx("select", { "data-slot": "native-select", "data-size": size, className: cn("h-(--control-height) w-full min-w-0 appearance-none rounded-md border border-input bg-transparent px-(--control-padding-x) py-1 pr-9 text-sm shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed data-[size=sm]:h-(--control-height-sm) dark:bg-input/30 dark:hover:bg-input/50", "focus-visible:border-ring focus-visible:ring-[var(--focus-ring-width)] focus-visible:ring-ring/50", "aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40", className), ...props }), _jsx(ChevronDownIcon, { className: "pointer-events-none absolute top-1/2 right-3.5 size-4 -translate-y-1/2 text-muted-foreground opacity-50 select-none", "aria-hidden": "true", "data-slot": "native-select-icon" })] }));
6
+ }
7
+ function NativeSelectOption({ className, ...props }) {
8
+ return (_jsx("option", { "data-slot": "native-select-option", className: cn("bg-popover text-popover-foreground", className), ...props }));
9
+ }
10
+ function NativeSelectOptGroup({ className, ...props }) {
11
+ return (_jsx("optgroup", { "data-slot": "native-select-optgroup", className: cn("bg-popover text-popover-foreground", className), ...props }));
12
+ }
13
+ export { NativeSelect, NativeSelectOptGroup, NativeSelectOption };
@@ -0,0 +1,2 @@
1
+ declare const navigationMenuTriggerStyle: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
2
+ export { navigationMenuTriggerStyle };
@@ -0,0 +1,3 @@
1
+ import { cva } from "class-variance-authority";
2
+ const navigationMenuTriggerStyle = cva("group inline-flex h-(--control-height) w-max items-center justify-center gap-(--control-gap) rounded-md bg-background px-(--control-padding-x) py-1 text-sm font-medium transition-[color,box-shadow] outline-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-[var(--focus-ring-width)] focus-visible:ring-ring/50 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=open]:bg-accent/50 data-[state=open]:text-accent-foreground data-[state=open]:hover:bg-accent data-[state=open]:focus:bg-accent");
3
+ export { navigationMenuTriggerStyle };
@@ -0,0 +1,13 @@
1
+ import * as React from "react";
2
+ import { NavigationMenu as NavigationMenuPrimitive } from "radix-ui";
3
+ declare function NavigationMenu({ className, children, viewport, ...props }: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {
4
+ viewport?: boolean;
5
+ }): import("react/jsx-runtime").JSX.Element;
6
+ declare function NavigationMenuList({ className, ...props }: React.ComponentProps<typeof NavigationMenuPrimitive.List>): import("react/jsx-runtime").JSX.Element;
7
+ declare function NavigationMenuItem({ className, ...props }: React.ComponentProps<typeof NavigationMenuPrimitive.Item>): import("react/jsx-runtime").JSX.Element;
8
+ declare function NavigationMenuTrigger({ className, children, ...props }: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
9
+ declare function NavigationMenuContent({ className, ...props }: React.ComponentProps<typeof NavigationMenuPrimitive.Content>): import("react/jsx-runtime").JSX.Element;
10
+ declare function NavigationMenuViewport({ className, ...props }: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>): import("react/jsx-runtime").JSX.Element;
11
+ declare function NavigationMenuLink({ className, ...props }: React.ComponentProps<typeof NavigationMenuPrimitive.Link>): import("react/jsx-runtime").JSX.Element;
12
+ declare function NavigationMenuIndicator({ className, ...props }: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>): import("react/jsx-runtime").JSX.Element;
13
+ export { NavigationMenu, NavigationMenuList, NavigationMenuItem, NavigationMenuContent, NavigationMenuTrigger, NavigationMenuLink, NavigationMenuIndicator, NavigationMenuViewport, };
@@ -0,0 +1,30 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ChevronDownIcon } from "lucide-react";
3
+ import { NavigationMenu as NavigationMenuPrimitive } from "radix-ui";
4
+ import { cn } from "@ciridae/ui/utils";
5
+ import { navigationMenuTriggerStyle } from "@ciridae/ui/navigation-menu-variants";
6
+ function NavigationMenu({ className, children, viewport = true, ...props }) {
7
+ return (_jsxs(NavigationMenuPrimitive.Root, { "data-slot": "navigation-menu", "data-viewport": viewport, className: cn("group/navigation-menu relative flex max-w-max flex-1 items-center justify-center", className), ...props, children: [children, viewport && _jsx(NavigationMenuViewport, {})] }));
8
+ }
9
+ function NavigationMenuList({ className, ...props }) {
10
+ return (_jsx(NavigationMenuPrimitive.List, { "data-slot": "navigation-menu-list", className: cn("group flex flex-1 list-none items-center justify-center gap-1", className), ...props }));
11
+ }
12
+ function NavigationMenuItem({ className, ...props }) {
13
+ return (_jsx(NavigationMenuPrimitive.Item, { "data-slot": "navigation-menu-item", className: cn("relative", className), ...props }));
14
+ }
15
+ function NavigationMenuTrigger({ className, children, ...props }) {
16
+ return (_jsxs(NavigationMenuPrimitive.Trigger, { "data-slot": "navigation-menu-trigger", className: cn(navigationMenuTriggerStyle(), "group", className), ...props, children: [children, " ", _jsx(ChevronDownIcon, { className: "relative top-[1px] ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180", "aria-hidden": "true" })] }));
17
+ }
18
+ function NavigationMenuContent({ className, ...props }) {
19
+ return (_jsx(NavigationMenuPrimitive.Content, { "data-slot": "navigation-menu-content", className: cn("top-0 left-0 w-full p-(--menu-item-padding-x) data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 data-[motion^=from-]:animate-in data-[motion^=from-]:fade-in data-[motion^=to-]:animate-out data-[motion^=to-]:fade-out md:absolute md:w-auto", "group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-200 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0", className), ...props }));
20
+ }
21
+ function NavigationMenuViewport({ className, ...props }) {
22
+ return (_jsx("div", { className: cn("absolute top-full left-0 isolate z-50 flex justify-center"), children: _jsx(NavigationMenuPrimitive.Viewport, { "data-slot": "navigation-menu-viewport", className: cn("origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow data-[state=closed]:animate-out data-[state=open]:animate-in md:w-[var(--radix-navigation-menu-viewport-width)]", className), ...props }) }));
23
+ }
24
+ function NavigationMenuLink({ className, ...props }) {
25
+ return (_jsx(NavigationMenuPrimitive.Link, { "data-slot": "navigation-menu-link", className: cn("flex flex-col gap-1 rounded-sm p-(--menu-item-padding-x) text-sm transition-all outline-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-[var(--focus-ring-width)] focus-visible:ring-ring/50 focus-visible:outline-1 data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground data-[active=true]:hover:bg-accent data-[active=true]:focus:bg-accent [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground", className), ...props }));
26
+ }
27
+ function NavigationMenuIndicator({ className, ...props }) {
28
+ return (_jsx(NavigationMenuPrimitive.Indicator, { "data-slot": "navigation-menu-indicator", className: cn("top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:animate-in data-[state=visible]:fade-in", className), ...props, children: _jsx("div", { className: "relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md" }) }));
29
+ }
30
+ export { NavigationMenu, NavigationMenuList, NavigationMenuItem, NavigationMenuContent, NavigationMenuTrigger, NavigationMenuLink, NavigationMenuIndicator, NavigationMenuViewport, };
@@ -0,0 +1,19 @@
1
+ import * as React from "react";
2
+ import { Button } from "@ciridae/ui/button";
3
+ declare function PageHeader({ className, ...props }: React.ComponentProps<"header">): import("react/jsx-runtime").JSX.Element;
4
+ declare function PageHeaderMain({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
5
+ declare function PageHeaderContent({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
6
+ type PageHeaderBackButtonProps = (Omit<React.ComponentProps<typeof Button>, "asChild" | "children"> & {
7
+ asChild?: false;
8
+ children?: React.ReactNode;
9
+ }) | (Omit<React.ComponentProps<typeof Button>, "asChild" | "children"> & {
10
+ asChild: true;
11
+ children: React.ReactElement;
12
+ });
13
+ declare function PageHeaderBackButton({ asChild, children, className, ...props }: PageHeaderBackButtonProps): import("react/jsx-runtime").JSX.Element;
14
+ declare function PageHeaderEyebrow({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
15
+ declare function PageHeaderTitle({ className, ...props }: React.ComponentProps<"h1">): import("react/jsx-runtime").JSX.Element;
16
+ declare function PageHeaderDescription({ className, ...props }: React.ComponentProps<"p">): import("react/jsx-runtime").JSX.Element;
17
+ declare function PageHeaderMeta({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
18
+ declare function PageHeaderActions({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
19
+ export { PageHeader, PageHeaderActions, PageHeaderBackButton, PageHeaderContent, PageHeaderDescription, PageHeaderEyebrow, PageHeaderMain, PageHeaderMeta, PageHeaderTitle, };
@@ -0,0 +1,36 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ArrowLeftIcon } from "lucide-react";
3
+ import { Button } from "@ciridae/ui/button";
4
+ import { cn } from "@ciridae/ui/utils";
5
+ function PageHeader({ className, ...props }) {
6
+ return (_jsx("header", { "data-slot": "page-header", className: cn("border-b bg-background text-foreground", className), ...props }));
7
+ }
8
+ function PageHeaderMain({ className, ...props }) {
9
+ return (_jsx("div", { "data-slot": "page-header-main", className: cn("flex flex-col gap-3 px-4 py-3 md:flex-row md:items-center md:justify-between md:px-6 lg:px-8", className), ...props }));
10
+ }
11
+ function PageHeaderContent({ className, ...props }) {
12
+ return (_jsx("div", { "data-slot": "page-header-content", className: cn("flex min-w-0 max-w-3xl flex-col gap-1", className), ...props }));
13
+ }
14
+ function PageHeaderBackButton({ asChild = false, children, className, ...props }) {
15
+ if (asChild) {
16
+ return (_jsx(Button, { "data-slot": "page-header-back-button", asChild: true, variant: "ghost", size: "sm", className: cn("-ml-2 h-7 w-fit gap-1.5 px-2 text-muted-foreground hover:text-foreground", className), ...props, children: children }));
17
+ }
18
+ const content = children ?? "Back";
19
+ return (_jsxs(Button, { "data-slot": "page-header-back-button", variant: "ghost", size: "sm", className: cn("-ml-2 h-7 w-fit gap-1.5 px-2 text-muted-foreground hover:text-foreground", className), ...props, children: [_jsx(ArrowLeftIcon, {}), content] }));
20
+ }
21
+ function PageHeaderEyebrow({ className, ...props }) {
22
+ return (_jsx("div", { "data-slot": "page-header-eyebrow", className: cn("text-meta text-muted-foreground", className), ...props }));
23
+ }
24
+ function PageHeaderTitle({ className, ...props }) {
25
+ return (_jsx("h1", { "data-slot": "page-header-title", className: cn("text-xl leading-tight font-medium text-foreground sm:text-[1.375rem]", className), ...props }));
26
+ }
27
+ function PageHeaderDescription({ className, ...props }) {
28
+ return (_jsx("p", { "data-slot": "page-header-description", className: cn("max-w-2xl text-sm text-muted-foreground", className), ...props }));
29
+ }
30
+ function PageHeaderMeta({ className, ...props }) {
31
+ return (_jsx("div", { "data-slot": "page-header-meta", className: cn("flex flex-wrap items-center gap-y-1 font-mono text-xs text-muted-foreground [&>*]:after:mx-2 [&>*]:after:text-muted-foreground/45 [&>*]:after:content-['·'] [&>*:last-child]:after:hidden", className), ...props }));
32
+ }
33
+ function PageHeaderActions({ className, ...props }) {
34
+ return (_jsx("div", { "data-slot": "page-header-actions", className: cn("flex flex-wrap items-center gap-2 md:justify-end", className), ...props }));
35
+ }
36
+ export { PageHeader, PageHeaderActions, PageHeaderBackButton, PageHeaderContent, PageHeaderDescription, PageHeaderEyebrow, PageHeaderMain, PageHeaderMeta, PageHeaderTitle, };
@@ -0,0 +1,13 @@
1
+ import * as React from "react";
2
+ import type { Button } from "@ciridae/ui/button";
3
+ declare function Pagination({ className, ...props }: React.ComponentProps<"nav">): import("react/jsx-runtime").JSX.Element;
4
+ declare function PaginationContent({ className, ...props }: React.ComponentProps<"ul">): import("react/jsx-runtime").JSX.Element;
5
+ declare function PaginationItem({ ...props }: React.ComponentProps<"li">): import("react/jsx-runtime").JSX.Element;
6
+ type PaginationLinkProps = {
7
+ isActive?: boolean;
8
+ } & Pick<React.ComponentProps<typeof Button>, "size"> & React.ComponentProps<"a">;
9
+ declare function PaginationLink({ className, isActive, size, ...props }: PaginationLinkProps): import("react/jsx-runtime").JSX.Element;
10
+ declare function PaginationPrevious({ className, ...props }: React.ComponentProps<typeof PaginationLink>): import("react/jsx-runtime").JSX.Element;
11
+ declare function PaginationNext({ className, ...props }: React.ComponentProps<typeof PaginationLink>): import("react/jsx-runtime").JSX.Element;
12
+ declare function PaginationEllipsis({ className, ...props }: React.ComponentProps<"span">): import("react/jsx-runtime").JSX.Element;
13
+ export { Pagination, PaginationContent, PaginationLink, PaginationItem, PaginationPrevious, PaginationNext, PaginationEllipsis, };
@@ -0,0 +1,29 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ChevronLeftIcon, ChevronRightIcon, MoreHorizontalIcon } from "lucide-react";
3
+ import { cn } from "@ciridae/ui/utils";
4
+ import { buttonVariants } from "@ciridae/ui/button-variants";
5
+ function Pagination({ className, ...props }) {
6
+ return (_jsx("nav", { role: "navigation", "aria-label": "pagination", "data-slot": "pagination", className: cn("mx-auto flex w-full justify-center", className), ...props }));
7
+ }
8
+ function PaginationContent({ className, ...props }) {
9
+ return (_jsx("ul", { "data-slot": "pagination-content", className: cn("flex flex-row items-center gap-1", className), ...props }));
10
+ }
11
+ function PaginationItem({ ...props }) {
12
+ return _jsx("li", { "data-slot": "pagination-item", ...props });
13
+ }
14
+ function PaginationLink({ className, isActive, size = "icon", ...props }) {
15
+ return (_jsx("a", { "aria-current": isActive ? "page" : undefined, "data-slot": "pagination-link", "data-active": isActive, className: cn(buttonVariants({
16
+ variant: isActive ? "outline" : "ghost",
17
+ size,
18
+ }), className), ...props }));
19
+ }
20
+ function PaginationPrevious({ className, ...props }) {
21
+ return (_jsxs(PaginationLink, { "aria-label": "Go to previous page", size: "default", className: cn("gap-1 px-2.5 sm:pl-2.5", className), ...props, children: [_jsx(ChevronLeftIcon, {}), _jsx("span", { className: "hidden sm:block", children: "Previous" })] }));
22
+ }
23
+ function PaginationNext({ className, ...props }) {
24
+ return (_jsxs(PaginationLink, { "aria-label": "Go to next page", size: "default", className: cn("gap-1 px-2.5 sm:pr-2.5", className), ...props, children: [_jsx("span", { className: "hidden sm:block", children: "Next" }), _jsx(ChevronRightIcon, {})] }));
25
+ }
26
+ function PaginationEllipsis({ className, ...props }) {
27
+ return (_jsxs("span", { "aria-hidden": true, "data-slot": "pagination-ellipsis", className: cn("flex size-9 items-center justify-center", className), ...props, children: [_jsx(MoreHorizontalIcon, { className: "size-4" }), _jsx("span", { className: "sr-only", children: "More pages" })] }));
28
+ }
29
+ export { Pagination, PaginationContent, PaginationLink, PaginationItem, PaginationPrevious, PaginationNext, PaginationEllipsis, };
@@ -0,0 +1,14 @@
1
+ import * as React from "react";
2
+ import { Popover as PopoverPrimitive } from "radix-ui";
3
+ declare function PopoverPortalContainerProvider({ children, container, }: {
4
+ children: React.ReactNode;
5
+ container: HTMLElement | null;
6
+ }): import("react/jsx-runtime").JSX.Element;
7
+ declare function Popover({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
8
+ declare function PopoverTrigger({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
9
+ declare function PopoverContent({ className, align, sideOffset, ...props }: React.ComponentProps<typeof PopoverPrimitive.Content>): import("react/jsx-runtime").JSX.Element;
10
+ declare function PopoverAnchor({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Anchor>): import("react/jsx-runtime").JSX.Element;
11
+ declare function PopoverHeader({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
12
+ declare function PopoverTitle({ className, ...props }: React.ComponentProps<"h2">): import("react/jsx-runtime").JSX.Element;
13
+ declare function PopoverDescription({ className, ...props }: React.ComponentProps<"p">): import("react/jsx-runtime").JSX.Element;
14
+ export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor, PopoverHeader, PopoverTitle, PopoverDescription, PopoverPortalContainerProvider, };
@@ -0,0 +1,34 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { Popover as PopoverPrimitive } from "radix-ui";
4
+ import { cn } from "@ciridae/ui/utils";
5
+ const PopoverPortalContainerContext = React.createContext({
6
+ container: null,
7
+ });
8
+ function PopoverPortalContainerProvider({ children, container, }) {
9
+ const value = React.useMemo(() => ({ container }), [container]);
10
+ return (_jsx(PopoverPortalContainerContext.Provider, { value: value, children: children }));
11
+ }
12
+ function Popover({ ...props }) {
13
+ return _jsx(PopoverPrimitive.Root, { "data-slot": "popover", ...props });
14
+ }
15
+ function PopoverTrigger({ ...props }) {
16
+ return _jsx(PopoverPrimitive.Trigger, { "data-slot": "popover-trigger", ...props });
17
+ }
18
+ function PopoverContent({ className, align = "center", sideOffset = 4, ...props }) {
19
+ const { container } = React.useContext(PopoverPortalContainerContext);
20
+ return (_jsx(PopoverPrimitive.Portal, { container: container ?? undefined, children: _jsx(PopoverPrimitive.Content, { "data-slot": "popover-content", align: align, sideOffset: sideOffset, className: cn("z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border bg-popover p-(--panel-padding) text-popover-foreground shadow-md outline-hidden data-[side=bottom]:slide-in-from-top-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-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0", className), ...props }) }));
21
+ }
22
+ function PopoverAnchor({ ...props }) {
23
+ return _jsx(PopoverPrimitive.Anchor, { "data-slot": "popover-anchor", ...props });
24
+ }
25
+ function PopoverHeader({ className, ...props }) {
26
+ return (_jsx("div", { "data-slot": "popover-header", className: cn("flex flex-col gap-1 text-sm", className), ...props }));
27
+ }
28
+ function PopoverTitle({ className, ...props }) {
29
+ return _jsx("h2", { "data-slot": "popover-title", className: cn("font-medium", className), ...props });
30
+ }
31
+ function PopoverDescription({ className, ...props }) {
32
+ return (_jsx("p", { "data-slot": "popover-description", className: cn("text-muted-foreground", className), ...props }));
33
+ }
34
+ export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor, PopoverHeader, PopoverTitle, PopoverDescription, PopoverPortalContainerProvider, };
@@ -0,0 +1,4 @@
1
+ import * as React from "react";
2
+ import { Progress as ProgressPrimitive } from "radix-ui";
3
+ declare function Progress({ className, value, ...props }: React.ComponentProps<typeof ProgressPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
4
+ export { Progress };
@@ -0,0 +1,8 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { Progress as ProgressPrimitive } from "radix-ui";
4
+ import { cn } from "@ciridae/ui/utils";
5
+ function Progress({ className, value, ...props }) {
6
+ return (_jsx(ProgressPrimitive.Root, { "data-slot": "progress", className: cn("relative h-2 w-full overflow-hidden rounded-full bg-primary/20", className), ...props, children: _jsx(ProgressPrimitive.Indicator, { "data-slot": "progress-indicator", className: "h-full w-full flex-1 bg-primary transition-all", style: { transform: `translateX(-${100 - (value || 0)}%)` } }) }));
7
+ }
8
+ export { Progress };
@@ -0,0 +1,6 @@
1
+ import * as React from "react";
2
+ declare function PropertyList({ className, ...props }: React.ComponentProps<"dl">): import("react/jsx-runtime").JSX.Element;
3
+ declare function PropertyListItem({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
4
+ declare function PropertyListLabel({ className, ...props }: React.ComponentProps<"dt">): import("react/jsx-runtime").JSX.Element;
5
+ declare function PropertyListValue({ className, ...props }: React.ComponentProps<"dd">): import("react/jsx-runtime").JSX.Element;
6
+ export { PropertyList, PropertyListItem, PropertyListLabel, PropertyListValue };
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cn } from "@ciridae/ui/utils";
3
+ function PropertyList({ className, ...props }) {
4
+ return (_jsx("dl", { "data-slot": "property-list", className: cn("grid border-t border-border text-sm", className), ...props }));
5
+ }
6
+ function PropertyListItem({ className, ...props }) {
7
+ return (_jsx("div", { "data-slot": "property-list-item", className: cn("grid gap-1 border-b border-border py-2.5 sm:grid-cols-[8rem_minmax(0,1fr)] sm:gap-3", className), ...props }));
8
+ }
9
+ function PropertyListLabel({ className, ...props }) {
10
+ return (_jsx("dt", { "data-slot": "property-list-label", className: cn("text-meta text-muted-foreground", className), ...props }));
11
+ }
12
+ function PropertyListValue({ className, ...props }) {
13
+ return (_jsx("dd", { "data-slot": "property-list-value", className: cn("min-w-0 text-sm text-foreground", className), ...props }));
14
+ }
15
+ export { PropertyList, PropertyListItem, PropertyListLabel, PropertyListValue };
@@ -0,0 +1,5 @@
1
+ import * as React from "react";
2
+ import { RadioGroup as RadioGroupPrimitive } from "radix-ui";
3
+ declare function RadioGroup({ className, ...props }: React.ComponentProps<typeof RadioGroupPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
4
+ declare function RadioGroupItem({ className, ...props }: React.ComponentProps<typeof RadioGroupPrimitive.Item>): import("react/jsx-runtime").JSX.Element;
5
+ export { RadioGroup, RadioGroupItem };