@uisatin/ui 0.2.0 → 0.4.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 (359) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +10 -1
  3. package/{chunk-P4O6TGDR.js → chunk-3VVO5MY5.js} +28 -26
  4. package/chunk-47DDBME3.js +87 -0
  5. package/{chunk-SHDFUXYV.js → chunk-5663JVE5.js} +16 -18
  6. package/chunk-67CBFB6Y.js +99 -0
  7. package/chunk-6DWLTGRQ.js +130 -0
  8. package/chunk-6GNMUJQ4.js +45 -0
  9. package/chunk-6JTSZAGO.js +177 -0
  10. package/chunk-6RLSRMB5.js +14 -0
  11. package/chunk-6Y6CY2DP.js +55 -0
  12. package/{chunk-O7F3CIDV.js → chunk-7NV53EL5.js} +10 -12
  13. package/{chunk-BNZVTLHV.js → chunk-7SVMERPH.js} +25 -21
  14. package/chunk-A52HUWVM.js +24 -0
  15. package/chunk-AKEZCWNW.js +29 -0
  16. package/{chunk-SH6NG6VN.js → chunk-APRVUOD6.js} +6 -8
  17. package/{chunk-QUF2IPOZ.js → chunk-C435UD7V.js} +14 -15
  18. package/{chunk-B2K45IUR.js → chunk-C6WRJ7DG.js} +5 -7
  19. package/{chunk-PF3YBUKT.js → chunk-CQFAMWZI.js} +16 -15
  20. package/chunk-DAKVTPYZ.js +86 -0
  21. package/{chunk-VAGIAREV.js → chunk-DMZW4LGU.js} +29 -26
  22. package/chunk-EBZHGRM5.js +46 -0
  23. package/chunk-EHEXE2UV.js +44 -0
  24. package/{chunk-72OCFAPT.js → chunk-EQAFDIPE.js} +26 -23
  25. package/{chunk-LLHTVIM3.js → chunk-EXKSKYG3.js} +7 -9
  26. package/chunk-FB6DG3LR.js +35 -0
  27. package/chunk-GH2DEOGO.js +67 -0
  28. package/{chunk-YG7JOOLJ.js → chunk-GKDMCY2S.js} +5 -7
  29. package/chunk-GTFUAA6H.js +42 -0
  30. package/{chunk-TX3H3QMA.js → chunk-HI6QIG55.js} +71 -70
  31. package/{chunk-6QMSWITQ.js → chunk-HZV7EXGU.js} +24 -26
  32. package/{chunk-A5XEM3GF.js → chunk-IKJIR6VL.js} +34 -36
  33. package/{chunk-DO3TBNSC.js → chunk-INJWE2LD.js} +15 -17
  34. package/chunk-J5UQPROI.js +56 -0
  35. package/{chunk-6YXUBP27.js → chunk-JCR5TWTF.js} +72 -67
  36. package/chunk-JKOBDLP3.js +25 -0
  37. package/chunk-JR3VVDV6.js +37 -0
  38. package/chunk-JYGCZWET.js +112 -0
  39. package/{chunk-UGRSWP6U.js → chunk-K5G5OEV5.js} +10 -12
  40. package/{chunk-B6V4VSGH.js → chunk-KDU7AT2T.js} +14 -15
  41. package/chunk-KITXKIYW.js +104 -0
  42. package/{chunk-NN6PKJWS.js → chunk-KQNA22D3.js} +7 -9
  43. package/{chunk-YPNKBE5X.js → chunk-L5PPN42A.js} +14 -9
  44. package/chunk-LAOE6Y57.js +95 -0
  45. package/chunk-LI5VYDLN.js +195 -0
  46. package/{chunk-7TXHCRAG.js → chunk-LKSFTNPF.js} +8 -10
  47. package/chunk-LLW3X4ZJ.js +39 -0
  48. package/{chunk-RTJ76X5U.js → chunk-LWRB4DED.js} +2 -4
  49. package/{chunk-NSRTTYQ4.js → chunk-M7RILZVW.js} +42 -35
  50. package/{chunk-LW3TRU5W.js → chunk-MOGWOUCN.js} +28 -16
  51. package/chunk-NCIRJ5V2.js +108 -0
  52. package/chunk-NQL6SIIB.js +168 -0
  53. package/chunk-NTSU44FY.js +81 -0
  54. package/{chunk-3DINAQLL.js → chunk-P36KBUYD.js} +33 -29
  55. package/chunk-P6RHT2VM.js +147 -0
  56. package/{chunk-CL2II6BX.js → chunk-PD2KD5OR.js} +11 -13
  57. package/{chunk-XL75JRUA.js → chunk-PP46SY7M.js} +42 -22
  58. package/{chunk-L6NCCSIP.js → chunk-PTK4QAOQ.js} +36 -29
  59. package/{chunk-HL42K2NH.js → chunk-Q7KVC5B4.js} +17 -17
  60. package/{chunk-H4NU7NPO.js → chunk-R3DTMBDT.js} +62 -61
  61. package/{chunk-KNUWZNFV.js → chunk-R4KPFBMK.js} +4 -6
  62. package/chunk-R5TQ3HNB.js +71 -0
  63. package/chunk-RFSPJECL.js +84 -0
  64. package/chunk-RPL6FRVX.js +88 -0
  65. package/{chunk-AN2RNJLR.js → chunk-STYOBAC7.js} +16 -16
  66. package/{chunk-X3PQANZO.js → chunk-SVUWR3HD.js} +47 -46
  67. package/chunk-T7P3OEBP.js +128 -0
  68. package/{chunk-QS4N4MNP.js → chunk-TB3ZRV3Y.js} +18 -20
  69. package/{chunk-MYEZXZZC.js → chunk-TOY6YPTG.js} +23 -25
  70. package/{chunk-XILQ7GXE.js → chunk-U6X6ODDJ.js} +11 -13
  71. package/{chunk-XZNHT6MO.js → chunk-UAJ6M34K.js} +115 -61
  72. package/chunk-W2EH6RY5.js +42 -0
  73. package/{chunk-FDKIX4DC.js → chunk-W2QQQWNE.js} +7 -9
  74. package/{chunk-LZMKSFCF.js → chunk-WALANB3V.js} +10 -12
  75. package/chunk-WCUR44O6.js +88 -0
  76. package/{chunk-BNTPPZCK.js → chunk-WJYJMX5S.js} +37 -39
  77. package/chunk-WZSLDYUU.js +131 -0
  78. package/{chunk-J3NSDRVH.js → chunk-XETMIETJ.js} +0 -2
  79. package/chunk-XU6JJDMZ.js +117 -0
  80. package/{chunk-BKZBWPUH.js → chunk-XWPH7C2W.js} +9 -11
  81. package/{chunk-GICKPMJU.js → chunk-YXWXSRXG.js} +31 -31
  82. package/{chunk-2HKBZFIK.js → chunk-YY236ZSJ.js} +31 -31
  83. package/{chunk-YX5VNRJX.js → chunk-YYFAZQ25.js} +0 -2
  84. package/{chunk-Y5AYU7PK.js → chunk-ZHFIWDGF.js} +0 -2
  85. package/components/accordion.js +2 -4
  86. package/components/action-button.d.ts +37 -0
  87. package/components/action-button.js +5 -0
  88. package/components/agent-loading.d.ts +2 -0
  89. package/components/agent-loading.js +2 -4
  90. package/components/agent-picker.js +5 -5
  91. package/components/agent-suggestion.js +5 -6
  92. package/components/alert.d.ts +37 -0
  93. package/components/alert.js +5 -0
  94. package/components/announcement-bar.js +7 -7
  95. package/components/attachment.js +5 -5
  96. package/components/avatar.js +4 -6
  97. package/components/badge.js +2 -4
  98. package/components/banner-mesh.js +1 -3
  99. package/components/banner.js +6 -6
  100. package/components/bar-chart.js +10 -11
  101. package/components/breadcrumb.js +5 -6
  102. package/components/button-group.d.ts +26 -0
  103. package/components/button-group.js +5 -0
  104. package/components/button.d.ts +13 -1
  105. package/components/button.js +4 -4
  106. package/components/card.js +5 -5
  107. package/components/channel-chart.js +10 -11
  108. package/components/chart.js +9 -10
  109. package/components/checkbox.js +2 -4
  110. package/components/chip.js +2 -4
  111. package/components/citations.d.ts +6 -4
  112. package/components/citations.js +4 -5
  113. package/components/code-block.js +5 -5
  114. package/components/combobox.d.ts +12 -3
  115. package/components/combobox.js +10 -10
  116. package/components/command-menu.d.ts +6 -2
  117. package/components/command-menu.js +5 -6
  118. package/components/context-menu.d.ts +12 -5
  119. package/components/context-menu.js +5 -6
  120. package/components/cookie-consent.js +5 -5
  121. package/components/date-picker.d.ts +26 -14
  122. package/components/date-picker.js +9 -9
  123. package/components/decision-card.js +7 -7
  124. package/components/dialog.d.ts +6 -8
  125. package/components/dialog.js +6 -5
  126. package/components/donut-chart.js +10 -11
  127. package/components/dot.js +2 -4
  128. package/components/dropdown.d.ts +6 -1
  129. package/components/dropdown.js +4 -5
  130. package/components/empty-state.js +2 -4
  131. package/components/field-group.d.ts +27 -0
  132. package/components/field-group.js +3 -0
  133. package/components/file-upload.js +7 -7
  134. package/components/floating.js +1 -3
  135. package/components/form-field.d.ts +38 -1
  136. package/components/form-field.js +2 -4
  137. package/components/form.d.ts +47 -0
  138. package/components/form.js +3 -0
  139. package/components/hover-card.d.ts +5 -2
  140. package/components/hover-card.js +2 -4
  141. package/components/input-group.d.ts +21 -0
  142. package/components/input-group.js +6 -0
  143. package/components/input-otp.d.ts +4 -2
  144. package/components/input-otp.js +7 -8
  145. package/components/input.d.ts +5 -1
  146. package/components/input.js +3 -5
  147. package/components/kbd.js +2 -4
  148. package/components/labels.d.ts +86 -0
  149. package/components/labels.js +1 -0
  150. package/components/line-chart.js +11 -12
  151. package/components/link.d.ts +20 -0
  152. package/components/link.js +3 -0
  153. package/components/list.d.ts +46 -0
  154. package/components/list.js +2 -0
  155. package/components/message-actions.js +5 -5
  156. package/components/message.js +8 -8
  157. package/components/number-input.d.ts +4 -2
  158. package/components/number-input.js +7 -8
  159. package/components/pagination.js +6 -6
  160. package/components/password-input.d.ts +16 -0
  161. package/components/password-input.js +7 -0
  162. package/components/popover.d.ts +11 -5
  163. package/components/popover.js +3 -4
  164. package/components/progress.js +2 -4
  165. package/components/prompt-bar.js +6 -6
  166. package/components/radio.js +2 -4
  167. package/components/search-bar.js +3 -5
  168. package/components/segmented-control.d.ts +4 -2
  169. package/components/segmented-control.js +3 -5
  170. package/components/select.d.ts +11 -2
  171. package/components/select.js +6 -7
  172. package/components/selectable-card.d.ts +37 -0
  173. package/components/selectable-card.js +2 -0
  174. package/components/selectable-checkbox.d.ts +14 -0
  175. package/components/selectable-checkbox.js +4 -0
  176. package/components/selectable-radio.d.ts +16 -0
  177. package/components/selectable-radio.js +3 -0
  178. package/components/separator.d.ts +18 -0
  179. package/components/separator.js +2 -0
  180. package/components/sheet.d.ts +4 -2
  181. package/components/sheet.js +7 -6
  182. package/components/sidebar.js +2 -4
  183. package/components/skeleton.js +2 -4
  184. package/components/slider.d.ts +6 -2
  185. package/components/slider.js +7 -8
  186. package/components/sliding-indicator.js +1 -3
  187. package/components/spinner.d.ts +18 -0
  188. package/components/spinner.js +3 -0
  189. package/components/split-button.d.ts +24 -0
  190. package/components/split-button.js +8 -0
  191. package/components/streaming-text.js +2 -4
  192. package/components/switch.js +2 -4
  193. package/components/table.d.ts +16 -5
  194. package/components/table.js +4 -5
  195. package/components/tabs.d.ts +4 -2
  196. package/components/tabs.js +3 -5
  197. package/components/textarea.js +3 -5
  198. package/components/thinking.js +3 -5
  199. package/components/toast.js +5 -5
  200. package/components/toggle.js +2 -4
  201. package/components/tooltip.d.ts +5 -2
  202. package/components/tooltip.js +3 -5
  203. package/index.d.ts +17 -2
  204. package/index.js +82 -231
  205. package/lib/utils.d.ts +8 -1
  206. package/lib/utils.js +1 -3
  207. package/package.json +11 -1
  208. package/styles.css +1 -1
  209. package/theme/create-theme.d.ts +6 -2
  210. package/theme/index.js +1 -0
  211. package/chunk-2HKBZFIK.js.map +0 -1
  212. package/chunk-3DINAQLL.js.map +0 -1
  213. package/chunk-3ERGAHKA.js +0 -179
  214. package/chunk-3ERGAHKA.js.map +0 -1
  215. package/chunk-6C7CGJX2.js +0 -86
  216. package/chunk-6C7CGJX2.js.map +0 -1
  217. package/chunk-6QMSWITQ.js.map +0 -1
  218. package/chunk-6YXUBP27.js.map +0 -1
  219. package/chunk-72OCFAPT.js.map +0 -1
  220. package/chunk-7TXHCRAG.js.map +0 -1
  221. package/chunk-A5XEM3GF.js.map +0 -1
  222. package/chunk-AN2RNJLR.js.map +0 -1
  223. package/chunk-B2K45IUR.js.map +0 -1
  224. package/chunk-B6V4VSGH.js.map +0 -1
  225. package/chunk-BKZBWPUH.js.map +0 -1
  226. package/chunk-BNTPPZCK.js.map +0 -1
  227. package/chunk-BNZVTLHV.js.map +0 -1
  228. package/chunk-CL2II6BX.js.map +0 -1
  229. package/chunk-D7RZNTFC.js +0 -95
  230. package/chunk-D7RZNTFC.js.map +0 -1
  231. package/chunk-DETGJAIC.js +0 -147
  232. package/chunk-DETGJAIC.js.map +0 -1
  233. package/chunk-DO3TBNSC.js.map +0 -1
  234. package/chunk-ESC5JCVQ.js +0 -90
  235. package/chunk-ESC5JCVQ.js.map +0 -1
  236. package/chunk-FDKIX4DC.js.map +0 -1
  237. package/chunk-GICKPMJU.js.map +0 -1
  238. package/chunk-GQA24FYG.js +0 -57
  239. package/chunk-GQA24FYG.js.map +0 -1
  240. package/chunk-H4NU7NPO.js.map +0 -1
  241. package/chunk-H63FYCMY.js +0 -11
  242. package/chunk-H63FYCMY.js.map +0 -1
  243. package/chunk-HL42K2NH.js.map +0 -1
  244. package/chunk-HNQUX43Z.js +0 -109
  245. package/chunk-HNQUX43Z.js.map +0 -1
  246. package/chunk-HRKPV66B.js +0 -32
  247. package/chunk-HRKPV66B.js.map +0 -1
  248. package/chunk-J3NSDRVH.js.map +0 -1
  249. package/chunk-JPNWHWAQ.js +0 -151
  250. package/chunk-JPNWHWAQ.js.map +0 -1
  251. package/chunk-KNUWZNFV.js.map +0 -1
  252. package/chunk-L6NCCSIP.js.map +0 -1
  253. package/chunk-LLHTVIM3.js.map +0 -1
  254. package/chunk-LW3TRU5W.js.map +0 -1
  255. package/chunk-LZMKSFCF.js.map +0 -1
  256. package/chunk-MR3JDI7E.js +0 -122
  257. package/chunk-MR3JDI7E.js.map +0 -1
  258. package/chunk-MYEZXZZC.js.map +0 -1
  259. package/chunk-NN6PKJWS.js.map +0 -1
  260. package/chunk-NSRTTYQ4.js.map +0 -1
  261. package/chunk-O7F3CIDV.js.map +0 -1
  262. package/chunk-P4O6TGDR.js.map +0 -1
  263. package/chunk-PF3YBUKT.js.map +0 -1
  264. package/chunk-PVOLDO4G.js +0 -47
  265. package/chunk-PVOLDO4G.js.map +0 -1
  266. package/chunk-QS4N4MNP.js.map +0 -1
  267. package/chunk-QUF2IPOZ.js.map +0 -1
  268. package/chunk-RTJ76X5U.js.map +0 -1
  269. package/chunk-SH6NG6VN.js.map +0 -1
  270. package/chunk-SHDFUXYV.js.map +0 -1
  271. package/chunk-TKO44NDI.js +0 -84
  272. package/chunk-TKO44NDI.js.map +0 -1
  273. package/chunk-TX3H3QMA.js.map +0 -1
  274. package/chunk-UBNHSZSE.js +0 -88
  275. package/chunk-UBNHSZSE.js.map +0 -1
  276. package/chunk-UC3ZJWOD.js +0 -73
  277. package/chunk-UC3ZJWOD.js.map +0 -1
  278. package/chunk-UGRSWP6U.js.map +0 -1
  279. package/chunk-VAGIAREV.js.map +0 -1
  280. package/chunk-WTMZT3IT.js +0 -105
  281. package/chunk-WTMZT3IT.js.map +0 -1
  282. package/chunk-WX6BP5ZP.js +0 -39
  283. package/chunk-WX6BP5ZP.js.map +0 -1
  284. package/chunk-X3PQANZO.js.map +0 -1
  285. package/chunk-XILQ7GXE.js.map +0 -1
  286. package/chunk-XL75JRUA.js.map +0 -1
  287. package/chunk-XZNHT6MO.js.map +0 -1
  288. package/chunk-Y5AYU7PK.js.map +0 -1
  289. package/chunk-YG7JOOLJ.js.map +0 -1
  290. package/chunk-YPJYW624.js +0 -195
  291. package/chunk-YPJYW624.js.map +0 -1
  292. package/chunk-YPNKBE5X.js.map +0 -1
  293. package/chunk-YX5VNRJX.js.map +0 -1
  294. package/components/accordion.js.map +0 -1
  295. package/components/agent-loading.js.map +0 -1
  296. package/components/agent-picker.js.map +0 -1
  297. package/components/agent-suggestion.js.map +0 -1
  298. package/components/announcement-bar.js.map +0 -1
  299. package/components/attachment.js.map +0 -1
  300. package/components/avatar.js.map +0 -1
  301. package/components/badge.js.map +0 -1
  302. package/components/banner-mesh.js.map +0 -1
  303. package/components/banner.js.map +0 -1
  304. package/components/bar-chart.js.map +0 -1
  305. package/components/breadcrumb.js.map +0 -1
  306. package/components/button.js.map +0 -1
  307. package/components/card.js.map +0 -1
  308. package/components/channel-chart.js.map +0 -1
  309. package/components/chart.js.map +0 -1
  310. package/components/checkbox.js.map +0 -1
  311. package/components/chip.js.map +0 -1
  312. package/components/citations.js.map +0 -1
  313. package/components/code-block.js.map +0 -1
  314. package/components/combobox.js.map +0 -1
  315. package/components/command-menu.js.map +0 -1
  316. package/components/context-menu.js.map +0 -1
  317. package/components/cookie-consent.js.map +0 -1
  318. package/components/date-picker.js.map +0 -1
  319. package/components/decision-card.js.map +0 -1
  320. package/components/dialog.js.map +0 -1
  321. package/components/donut-chart.js.map +0 -1
  322. package/components/dot.js.map +0 -1
  323. package/components/dropdown.js.map +0 -1
  324. package/components/empty-state.js.map +0 -1
  325. package/components/file-upload.js.map +0 -1
  326. package/components/floating.js.map +0 -1
  327. package/components/form-field.js.map +0 -1
  328. package/components/hover-card.js.map +0 -1
  329. package/components/input-otp.js.map +0 -1
  330. package/components/input.js.map +0 -1
  331. package/components/kbd.js.map +0 -1
  332. package/components/line-chart.js.map +0 -1
  333. package/components/message-actions.js.map +0 -1
  334. package/components/message.js.map +0 -1
  335. package/components/number-input.js.map +0 -1
  336. package/components/pagination.js.map +0 -1
  337. package/components/popover.js.map +0 -1
  338. package/components/progress.js.map +0 -1
  339. package/components/prompt-bar.js.map +0 -1
  340. package/components/radio.js.map +0 -1
  341. package/components/search-bar.js.map +0 -1
  342. package/components/segmented-control.js.map +0 -1
  343. package/components/select.js.map +0 -1
  344. package/components/sheet.js.map +0 -1
  345. package/components/sidebar.js.map +0 -1
  346. package/components/skeleton.js.map +0 -1
  347. package/components/slider.js.map +0 -1
  348. package/components/sliding-indicator.js.map +0 -1
  349. package/components/streaming-text.js.map +0 -1
  350. package/components/switch.js.map +0 -1
  351. package/components/table.js.map +0 -1
  352. package/components/tabs.js.map +0 -1
  353. package/components/textarea.js.map +0 -1
  354. package/components/thinking.js.map +0 -1
  355. package/components/toast.js.map +0 -1
  356. package/components/toggle.js.map +0 -1
  357. package/components/tooltip.js.map +0 -1
  358. package/index.js.map +0 -1
  359. package/lib/utils.js.map +0 -1
@@ -1,19 +1,21 @@
1
- import { DropdownMenu, DropdownMenuItem } from './chunk-3DINAQLL.js';
2
- import { cn } from './chunk-H63FYCMY.js';
1
+ import { DropdownMenu, DropdownMenuItem } from './chunk-P36KBUYD.js';
2
+ import { useSatinLabels } from './chunk-NTSU44FY.js';
3
+ import { cn } from './chunk-EHEXE2UV.js';
3
4
  import * as React from 'react';
4
5
  import { MoreHoriz, NavArrowRight } from 'iconoir-react';
5
6
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
6
7
 
7
8
  var itemClass = cn(
8
- "inline-flex h-6 items-center gap-2 rounded-md px-1 text-sm leading-5 whitespace-nowrap text-text-muted",
9
- "[&_svg]:size-3.5 [&_svg]:shrink-0 [&_svg]:[stroke-width:1.875]",
10
- "transition-colors duration-(--duration-fast) ease-(--ease-out) outline-none focus-visible:shadow-border-focus"
9
+ "sa:inline-flex sa:h-6 sa:items-center sa:gap-2 sa:rounded-md sa:px-1 sa:text-sm sa:leading-5 sa:whitespace-nowrap sa:text-text-muted",
10
+ "sa:[&_svg]:size-3.5 sa:[&_svg]:shrink-0 sa:[&_svg]:[stroke-width:1.875]",
11
+ "sa:transition-colors sa:duration-(--sa-duration-fast) sa:ease-(--sa-ease-out) sa:outline-none sa:focus-visible:shadow-border-focus"
11
12
  );
12
- var linkClass = "cursor-pointer hover:text-text-default";
13
+ var linkClass = "sa:cursor-pointer sa:hover:text-text-default";
13
14
  function Separator() {
14
- return /* @__PURE__ */ jsx("li", { role: "presentation", "aria-hidden": true, className: "flex text-text-subtle [&_svg]:size-3.5 [&_svg]:[stroke-width:1.875]", children: /* @__PURE__ */ jsx(NavArrowRight, {}) });
15
+ return /* @__PURE__ */ jsx("li", { role: "presentation", "aria-hidden": true, className: "sa:flex sa:text-text-subtle sa:[&_svg]:size-3.5 sa:[&_svg]:[stroke-width:1.875]", children: /* @__PURE__ */ jsx(NavArrowRight, {}) });
15
16
  }
16
17
  function Breadcrumb({ items, maxItems, className, "aria-label": ariaLabel = "Breadcrumb", ...props }) {
18
+ const labels = useSatinLabels();
17
19
  const fold = maxItems != null && maxItems >= 2 && items.length > maxItems;
18
20
  const head = fold ? items.slice(0, 1) : items;
19
21
  const hidden = fold ? items.slice(1, items.length - (maxItems - 1)) : [];
@@ -22,30 +24,30 @@ function Breadcrumb({ items, maxItems, className, "aria-label": ariaLabel = "Bre
22
24
  const crumb = (item, index) => {
23
25
  const current = index === last;
24
26
  const content = item.icon ? /* @__PURE__ */ jsxs(Fragment, { children: [
25
- /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "grid size-3.5 shrink-0 place-items-center", children: item.icon }),
26
- /* @__PURE__ */ jsx("span", { className: item.hideLabel ? "sr-only" : void 0, children: item.label })
27
+ /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "sa:grid sa:size-3.5 sa:shrink-0 sa:place-items-center", children: item.icon }),
28
+ /* @__PURE__ */ jsx("span", { className: item.hideLabel ? "sa:sr-only" : void 0, children: item.label })
27
29
  ] }) : item.label;
28
- const el = current ? /* @__PURE__ */ jsx("span", { "aria-current": "page", className: cn(itemClass, "font-medium text-text-default"), children: content }) : item.href ? /* @__PURE__ */ jsx("a", { href: item.href, onClick: item.onSelect, className: cn(itemClass, linkClass), children: content }) : item.onSelect ? /* @__PURE__ */ jsx("button", { type: "button", onClick: item.onSelect, className: cn(itemClass, linkClass), children: content }) : /* @__PURE__ */ jsx("span", { className: itemClass, children: content });
29
- return /* @__PURE__ */ jsx("li", { className: "flex", children: el });
30
+ const el = current ? /* @__PURE__ */ jsx("span", { "aria-current": "page", className: cn(itemClass, "sa:font-medium sa:text-text-default"), children: content }) : item.href ? /* @__PURE__ */ jsx("a", { href: item.href, onClick: item.onSelect, className: cn(itemClass, linkClass), children: content }) : item.onSelect ? /* @__PURE__ */ jsx("button", { type: "button", onClick: item.onSelect, className: cn(itemClass, linkClass), children: content }) : /* @__PURE__ */ jsx("span", { className: itemClass, children: content });
31
+ return /* @__PURE__ */ jsx("li", { className: "sa:flex", children: el });
30
32
  };
31
- return /* @__PURE__ */ jsx("nav", { "data-slot": "breadcrumb", "aria-label": ariaLabel, className, ...props, children: /* @__PURE__ */ jsxs("ol", { className: "flex flex-wrap items-center gap-1", children: [
33
+ return /* @__PURE__ */ jsx("nav", { "data-slot": "breadcrumb", "aria-label": ariaLabel, className, ...props, children: /* @__PURE__ */ jsxs("ol", { className: "sa:flex sa:flex-wrap sa:items-center sa:gap-1", children: [
32
34
  head.map((item, i) => /* @__PURE__ */ jsxs(React.Fragment, { children: [
33
35
  i > 0 && /* @__PURE__ */ jsx(Separator, {}),
34
36
  crumb(item, i)
35
37
  ] }, `h${i}`)),
36
38
  fold && /* @__PURE__ */ jsxs(Fragment, { children: [
37
39
  /* @__PURE__ */ jsx(Separator, {}),
38
- /* @__PURE__ */ jsx("li", { className: "flex", children: /* @__PURE__ */ jsx(
40
+ /* @__PURE__ */ jsx("li", { className: "sa:flex", children: /* @__PURE__ */ jsx(
39
41
  DropdownMenu,
40
42
  {
41
- "aria-label": "Hidden pages",
43
+ "aria-label": labels.hiddenPages,
42
44
  align: "start",
43
45
  trigger: /* @__PURE__ */ jsx(
44
46
  "button",
45
47
  {
46
48
  type: "button",
47
49
  "aria-label": `Show ${hidden.length} more`,
48
- className: cn(itemClass, linkClass, "w-6 justify-center px-0 hover:bg-bg-hover [&_svg]:size-4"),
50
+ className: cn(itemClass, linkClass, "sa:w-6 sa:justify-center sa:px-0 sa:hover:bg-bg-hover sa:[&_svg]:size-4"),
49
51
  children: /* @__PURE__ */ jsx(MoreHoriz, { "aria-hidden": true })
50
52
  }
51
53
  ),
@@ -72,5 +74,3 @@ function Breadcrumb({ items, maxItems, className, "aria-label": ariaLabel = "Bre
72
74
  }
73
75
 
74
76
  export { Breadcrumb };
75
- //# sourceMappingURL=chunk-HL42K2NH.js.map
76
- //# sourceMappingURL=chunk-HL42K2NH.js.map
@@ -1,5 +1,6 @@
1
- import { Button } from './chunk-HNQUX43Z.js';
2
- import { cn } from './chunk-H63FYCMY.js';
1
+ import { Button } from './chunk-6DWLTGRQ.js';
2
+ import { useSatinLabels } from './chunk-NTSU44FY.js';
3
+ import { cn } from './chunk-EHEXE2UV.js';
3
4
  import 'react';
4
5
  import { HoverCard } from 'radix-ui';
5
6
  import { Xmark, ArrowUpRight, NavArrowUp, NavArrowDown } from 'iconoir-react';
@@ -25,23 +26,23 @@ function Attachment({
25
26
  {
26
27
  "data-slot": "attachment",
27
28
  className: cn(
28
- "group/attachment relative inline-flex max-w-full shrink-0 items-center border border-border-default bg-bg-popover",
29
- "[box-shadow:0_1px_1px_0_var(--effect-shadow-xs)]",
30
- "transition-[background-color,border-color,box-shadow] duration-(--duration-fast) ease-(--ease-out)",
31
- lg ? "gap-2.5 px-2" : "h-control-height gap-1.5 pl-2",
32
- !lg && (onRemove ? "pr-0.5" : "pr-2.5"),
33
- lg && (rounded ? "rounded-pill py-1" : "rounded-xl py-1.5"),
34
- !lg && (rounded ? "rounded-pill" : "rounded-md"),
29
+ "sa:group/attachment sa:relative sa:inline-flex sa:max-w-full sa:shrink-0 sa:items-center sa:border sa:border-border-default sa:bg-bg-popover",
30
+ "sa:[box-shadow:0_1px_1px_0_var(--effect-shadow-xs)]",
31
+ "sa:transition-[background-color,border-color,box-shadow] sa:duration-(--sa-duration-fast) sa:ease-(--sa-ease-out)",
32
+ lg ? "sa:gap-2.5 sa:px-2" : "sa:h-control-height sa:gap-1.5 sa:pl-2",
33
+ !lg && (onRemove ? "sa:pr-0.5" : "sa:pr-2.5"),
34
+ lg && (rounded ? "sa:rounded-pill sa:py-1" : "sa:rounded-xl sa:py-1.5"),
35
+ !lg && (rounded ? "sa:rounded-pill" : "sa:rounded-md"),
35
36
  // Hover (satin-pressed, declared later, wins while pressed)
36
- "satin-hover:border-border-strong",
37
- !lg && "satin-hover:bg-bg-canvas",
37
+ "sa:satin-hover:border-border-strong",
38
+ !lg && "sa:satin-hover:bg-bg-canvas",
38
39
  // Pressed
39
- "satin-pressed:border-border-strong satin-pressed:bg-bg-muted",
40
+ "sa:satin-pressed:border-border-strong sa:satin-pressed:bg-bg-muted",
40
41
  // Focus
41
- "has-[[data-attachment-main]:focus-visible]:border-border-default has-[[data-attachment-main]:focus-visible]:bg-bg-popover",
42
- "has-[[data-attachment-main]:focus-visible]:[box-shadow:0_1px_2px_0_var(--effect-shadow-xs),0_0_0_2px_var(--action-focus-ring)]",
43
- "data-[force=focus]:border-border-default data-[force=focus]:bg-bg-popover",
44
- "data-[force=focus]:[box-shadow:0_1px_2px_0_var(--effect-shadow-xs),0_0_0_2px_var(--action-focus-ring)]",
42
+ "sa:has-[[data-attachment-main]:focus-visible]:border-border-default sa:has-[[data-attachment-main]:focus-visible]:bg-bg-popover",
43
+ "sa:has-[[data-attachment-main]:focus-visible]:[box-shadow:0_1px_2px_0_var(--effect-shadow-xs),0_0_0_2px_var(--action-focus-ring)]",
44
+ "sa:data-[force=focus]:border-border-default sa:data-[force=focus]:bg-bg-popover",
45
+ "sa:data-[force=focus]:[box-shadow:0_1px_2px_0_var(--effect-shadow-xs),0_0_0_2px_var(--action-focus-ring)]",
45
46
  className
46
47
  ),
47
48
  ...props,
@@ -53,32 +54,32 @@ function Attachment({
53
54
  "data-attachment-main": "",
54
55
  onClick: onOpen,
55
56
  className: cn(
56
- "flex min-w-0 items-center text-left outline-none",
57
+ "sa:flex sa:min-w-0 sa:items-center sa:text-left sa:outline-none",
57
58
  // The whole chip is the click target; the remove button sits above it.
58
- "after:absolute after:inset-0 after:rounded-[inherit]",
59
- lg ? "gap-2.5" : "gap-1.5"
59
+ "sa:after:absolute sa:after:inset-0 sa:after:rounded-[inherit]",
60
+ lg ? "sa:gap-2.5" : "sa:gap-1.5"
60
61
  ),
61
62
  children: lg ? /* @__PURE__ */ jsxs(Fragment, { children: [
62
63
  /* @__PURE__ */ jsx(
63
64
  "span",
64
65
  {
65
66
  className: cn(
66
- "flex size-8 shrink-0 items-center justify-center bg-bg-muted [&_svg]:size-icon-size",
67
- rounded ? "rounded-xl" : "rounded-md",
68
- "group-active/attachment:bg-bg-card group-data-[force=pressed]/attachment:bg-bg-card"
67
+ "sa:flex sa:size-8 sa:shrink-0 sa:items-center sa:justify-center sa:bg-bg-muted sa:[&_svg]:size-icon-size",
68
+ rounded ? "sa:rounded-xl" : "sa:rounded-md",
69
+ "sa:group-active/attachment:bg-bg-card sa:group-data-[force=pressed]/attachment:bg-bg-card"
69
70
  ),
70
71
  children: fileIcon
71
72
  }
72
73
  ),
73
- /* @__PURE__ */ jsxs("span", { className: "flex min-w-0 flex-col", children: [
74
- /* @__PURE__ */ jsx("span", { "data-attachment-name": "", className: "max-w-[200px] truncate text-sm font-medium text-text-default", children: name }),
75
- meta && /* @__PURE__ */ jsx("span", { className: "sr-only", children: ", " }),
76
- meta && /* @__PURE__ */ jsx("span", { className: "truncate text-xs text-text-muted", children: meta })
74
+ /* @__PURE__ */ jsxs("span", { className: "sa:flex sa:min-w-0 sa:flex-col", children: [
75
+ /* @__PURE__ */ jsx("span", { "data-attachment-name": "", className: "sa:max-w-[200px] sa:truncate sa:text-sm sa:font-medium sa:text-text-default", children: name }),
76
+ meta && /* @__PURE__ */ jsx("span", { className: "sa:sr-only", children: ", " }),
77
+ meta && /* @__PURE__ */ jsx("span", { className: "sa:truncate sa:text-xs sa:text-text-muted", children: meta })
77
78
  ] })
78
79
  ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
79
- /* @__PURE__ */ jsx("span", { className: "flex shrink-0 [&_svg]:size-icon-size", children: fileIcon }),
80
- /* @__PURE__ */ jsx("span", { "data-attachment-name": "", className: "max-w-[200px] truncate text-sm font-medium text-text-default", children: name }),
81
- meta && /* @__PURE__ */ jsxs("span", { className: "sr-only", children: [
80
+ /* @__PURE__ */ jsx("span", { className: "sa:flex sa:shrink-0 sa:[&_svg]:size-icon-size", children: fileIcon }),
81
+ /* @__PURE__ */ jsx("span", { "data-attachment-name": "", className: "sa:max-w-[200px] sa:truncate sa:text-sm sa:font-medium sa:text-text-default", children: name }),
82
+ meta && /* @__PURE__ */ jsxs("span", { className: "sa:sr-only", children: [
82
83
  ", ",
83
84
  meta
84
85
  ] })
@@ -94,7 +95,7 @@ function Attachment({
94
95
  iconOnly: true,
95
96
  "aria-label": `Remove ${name}`,
96
97
  onClick: onRemove,
97
- className: "relative z-10",
98
+ className: "sa:relative sa:z-10",
98
99
  children: /* @__PURE__ */ jsx(Xmark, { "aria-hidden": true })
99
100
  }
100
101
  )
@@ -110,7 +111,7 @@ function Attachment({
110
111
  side: "top",
111
112
  align: "start",
112
113
  sideOffset: 8,
113
- className: "z-50 outline-none data-[state=open]:[animation:satin-enter_var(--duration-fast)_var(--ease-out)]",
114
+ className: "sa:z-50 sa:outline-none sa:data-[state=open]:[animation:satin-enter_var(--sa-duration-fast)_var(--sa-ease-out)]",
114
115
  children: preview
115
116
  }
116
117
  ) })
@@ -121,7 +122,7 @@ function AttachmentGroup({ className, ...props }) {
121
122
  "div",
122
123
  {
123
124
  "data-slot": "attachment-group",
124
- className: cn("flex max-w-[576px] flex-wrap items-start gap-1 [&>*]:shrink-0", className),
125
+ className: cn("sa:flex sa:max-w-[576px] sa:flex-wrap sa:items-start sa:gap-1 sa:[&>*]:shrink-0", className),
125
126
  ...props
126
127
  }
127
128
  );
@@ -141,41 +142,41 @@ function AttachmentPreview({
141
142
  {
142
143
  "data-slot": "attachment-preview",
143
144
  className: cn(
144
- "flex w-[296px] flex-col overflow-clip rounded-xl border border-border-default bg-bg-popover",
145
- "[box-shadow:0_4px_6px_-1px_var(--effect-shadow-sm),0_2px_4px_-2px_var(--effect-shadow-sm)]",
145
+ "sa:flex sa:w-[296px] sa:flex-col sa:overflow-clip sa:rounded-xl sa:border sa:border-border-default sa:bg-bg-popover",
146
+ "sa:[box-shadow:0_4px_6px_-1px_var(--effect-shadow-sm),0_2px_4px_-2px_var(--effect-shadow-sm)]",
146
147
  className
147
148
  ),
148
149
  ...props,
149
150
  children: [
150
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 px-3 py-2 [&_svg]:size-icon-size", children: [
151
- /* @__PURE__ */ jsx("span", { className: "flex shrink-0", children: icon ?? /* @__PURE__ */ jsx(FileIcon, { type: "pdf" }) }),
152
- /* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate text-sm font-medium text-text-default", children: name })
151
+ /* @__PURE__ */ jsxs("div", { className: "sa:flex sa:items-center sa:gap-2 sa:px-3 sa:py-2 sa:[&_svg]:size-icon-size", children: [
152
+ /* @__PURE__ */ jsx("span", { className: "sa:flex sa:shrink-0", children: icon ?? /* @__PURE__ */ jsx(FileIcon, { type: "pdf" }) }),
153
+ /* @__PURE__ */ jsx("span", { className: "sa:min-w-0 sa:flex-1 sa:truncate sa:text-sm sa:font-medium sa:text-text-default", children: name })
153
154
  ] }),
154
- /* @__PURE__ */ jsxs("div", { className: "relative", children: [
155
+ /* @__PURE__ */ jsxs("div", { className: "sa:relative", children: [
155
156
  /* @__PURE__ */ jsx(
156
157
  "div",
157
158
  {
158
159
  tabIndex: 0,
159
160
  "aria-label": `Preview of ${name}`,
160
161
  className: cn(
161
- "h-[176px] overflow-x-clip overflow-y-auto pr-4 pl-3 outline-none",
162
- "[scrollbar-color:var(--border-strong)_transparent] [scrollbar-width:thin]",
163
- "focus-visible:[box-shadow:inset_0_0_0_2px_var(--action-focus-ring)]"
162
+ "sa:h-[176px] sa:overflow-x-clip sa:overflow-y-auto sa:pr-4 sa:pl-3 sa:outline-none",
163
+ "sa:[scrollbar-color:var(--border-strong)_transparent] sa:[scrollbar-width:thin]",
164
+ "sa:focus-visible:[box-shadow:inset_0_0_0_2px_var(--action-focus-ring)]"
164
165
  ),
165
- children: /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-2 pt-2 pb-3", children })
166
+ children: /* @__PURE__ */ jsx("div", { className: "sa:flex sa:flex-col sa:gap-2 sa:pt-2 sa:pb-3", children })
166
167
  }
167
168
  ),
168
169
  /* @__PURE__ */ jsx(
169
170
  "div",
170
171
  {
171
172
  "aria-hidden": true,
172
- className: "pointer-events-none absolute right-2.5 bottom-0 left-0 h-8 bg-linear-to-b from-transparent to-bg-popover"
173
+ className: "sa:pointer-events-none sa:absolute sa:right-2.5 sa:bottom-0 sa:left-0 sa:h-8 sa:bg-linear-to-b sa:from-transparent sa:to-bg-popover"
173
174
  }
174
175
  )
175
176
  ] }),
176
- /* @__PURE__ */ jsx("div", { className: "h-px bg-border-subtle" }),
177
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 px-2 py-1.5", children: [
178
- /* @__PURE__ */ jsx("div", { className: "flex min-w-0 flex-1 items-center gap-1", children: navigation }),
177
+ /* @__PURE__ */ jsx("div", { className: "sa:h-px sa:bg-border-subtle" }),
178
+ /* @__PURE__ */ jsxs("div", { className: "sa:flex sa:items-center sa:gap-2 sa:px-2 sa:py-1.5", children: [
179
+ /* @__PURE__ */ jsx("div", { className: "sa:flex sa:min-w-0 sa:flex-1 sa:items-center sa:gap-1", children: navigation }),
179
180
  /* @__PURE__ */ jsxs(Button, { variant: "tertiary", size: "xs", onClick: onOpen, children: [
180
181
  openLabel,
181
182
  /* @__PURE__ */ jsx(ArrowUpRight, { "aria-hidden": true })
@@ -191,10 +192,11 @@ function AttachmentPreviewPager({
191
192
  onPrevious,
192
193
  onNext
193
194
  }) {
195
+ const labels = useSatinLabels();
194
196
  return /* @__PURE__ */ jsxs(Fragment, { children: [
195
- /* @__PURE__ */ jsx(Button, { variant: "tertiary", size: "xs", shape: "rounded", iconOnly: true, "aria-label": "Previous section", disabled: page <= 1, onClick: onPrevious, children: /* @__PURE__ */ jsx(NavArrowUp, { "aria-hidden": true }) }),
196
- /* @__PURE__ */ jsx(Button, { variant: "tertiary", size: "xs", shape: "rounded", iconOnly: true, "aria-label": "Next section", disabled: page >= total, onClick: onNext, children: /* @__PURE__ */ jsx(NavArrowDown, { "aria-hidden": true }) }),
197
- /* @__PURE__ */ jsxs("span", { className: "text-xs whitespace-nowrap text-text-muted", "aria-live": "polite", children: [
197
+ /* @__PURE__ */ jsx(Button, { variant: "tertiary", size: "xs", shape: "rounded", iconOnly: true, "aria-label": labels.previousSection, disabled: page <= 1, onClick: onPrevious, children: /* @__PURE__ */ jsx(NavArrowUp, { "aria-hidden": true }) }),
198
+ /* @__PURE__ */ jsx(Button, { variant: "tertiary", size: "xs", shape: "rounded", iconOnly: true, "aria-label": labels.nextSection, disabled: page >= total, onClick: onNext, children: /* @__PURE__ */ jsx(NavArrowDown, { "aria-hidden": true }) }),
199
+ /* @__PURE__ */ jsxs("span", { className: "sa:text-xs sa:whitespace-nowrap sa:text-text-muted", "aria-live": "polite", children: [
198
200
  "Page ",
199
201
  page,
200
202
  " of ",
@@ -207,7 +209,8 @@ function AttachmentPreviewSheets({
207
209
  value,
208
210
  onValueChange
209
211
  }) {
210
- return /* @__PURE__ */ jsx("div", { role: "tablist", "aria-label": "Sheets", className: "flex items-center gap-1", children: sheets.map((sheet) => {
212
+ const labels = useSatinLabels();
213
+ return /* @__PURE__ */ jsx("div", { role: "tablist", "aria-label": labels.sheets, className: "sa:flex sa:items-center sa:gap-1", children: sheets.map((sheet) => {
211
214
  const selected = sheet === value;
212
215
  return /* @__PURE__ */ jsx(
213
216
  "button",
@@ -217,10 +220,10 @@ function AttachmentPreviewSheets({
217
220
  "aria-selected": selected,
218
221
  onClick: () => onValueChange?.(sheet),
219
222
  className: cn(
220
- "rounded-sm px-2 py-0.5 text-xs whitespace-nowrap outline-none",
221
- "transition-[background-color,color,box-shadow] duration-(--duration-fast) ease-(--ease-out)",
222
- "focus-visible:[box-shadow:0_0_0_2px_var(--action-focus-ring)]",
223
- selected ? "bg-bg-muted text-text-default" : "text-text-muted hover:text-text-default"
223
+ "sa:rounded-sm sa:px-2 sa:py-0.5 sa:text-xs sa:whitespace-nowrap sa:outline-none",
224
+ "sa:transition-[background-color,color,box-shadow] sa:duration-(--sa-duration-fast) sa:ease-(--sa-ease-out)",
225
+ "sa:focus-visible:[box-shadow:0_0_0_2px_var(--action-focus-ring)]",
226
+ selected ? "sa:bg-bg-muted sa:text-text-default" : "sa:text-text-muted sa:hover:text-text-default"
224
227
  ),
225
228
  children: sheet
226
229
  },
@@ -229,9 +232,9 @@ function AttachmentPreviewSheets({
229
232
  }) });
230
233
  }
231
234
  function FileIcon({ type, className }) {
232
- const page = type === "pdf" ? "var(--color-red-500)" : "var(--color-green-700)";
233
- const fold = type === "pdf" ? "var(--color-red-300)" : "var(--color-green-300)";
234
- return /* @__PURE__ */ jsxs("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": true, className: cn("size-icon-size shrink-0", className), children: [
235
+ const page = type === "pdf" ? "var(--sa-color-red-500)" : "var(--sa-color-green-700)";
236
+ const fold = type === "pdf" ? "var(--sa-color-red-300)" : "var(--sa-color-green-300)";
237
+ return /* @__PURE__ */ jsxs("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": true, className: cn("sa:size-icon-size sa:shrink-0", className), children: [
235
238
  /* @__PURE__ */ jsx(
236
239
  "path",
237
240
  {
@@ -246,11 +249,11 @@ function FileIcon({ type, className }) {
246
249
  fill: fold
247
250
  }
248
251
  ),
249
- type === "pdf" ? /* @__PURE__ */ jsxs("g", { fill: "var(--color-white)", children: [
252
+ type === "pdf" ? /* @__PURE__ */ jsxs("g", { fill: "var(--sa-color-white)", children: [
250
253
  /* @__PURE__ */ jsx("path", { d: "M4.62457 12.9938V10.3491H5.66796C5.86855 10.3491 6.03943 10.3874 6.18062 10.4641C6.3218 10.5398 6.42941 10.6453 6.50345 10.7804C6.57835 10.9147 6.61579 11.0697 6.61579 11.2453C6.61579 11.4209 6.57792 11.5759 6.50216 11.7102C6.4264 11.8445 6.31664 11.9491 6.17287 12.024C6.02996 12.0989 5.85693 12.1363 5.65376 12.1363H4.98873V11.6882H5.56337C5.67098 11.6882 5.75965 11.6697 5.82938 11.6327C5.89997 11.5948 5.95248 11.5428 5.98692 11.4765C6.02222 11.4093 6.03986 11.3323 6.03986 11.2453C6.03986 11.1575 6.02222 11.0809 5.98692 11.0155C5.95248 10.9492 5.89997 10.898 5.82938 10.8618C5.75879 10.8248 5.66925 10.8063 5.56078 10.8063H5.18372V12.9938H4.62457Z" }),
251
254
  /* @__PURE__ */ jsx("path", { d: "M7.91648 12.9938H6.97898V10.3491H7.92423C8.19024 10.3491 8.41923 10.4021 8.61121 10.508C8.80319 10.613 8.95083 10.7641 9.05413 10.9612C9.1583 11.1584 9.21038 11.3943 9.21038 11.6689C9.21038 11.9444 9.1583 12.1811 9.05413 12.3791C8.95083 12.5771 8.80233 12.729 8.60863 12.8349C8.41579 12.9408 8.18507 12.9938 7.91648 12.9938ZM7.53812 12.5147H7.89323C8.05852 12.5147 8.19756 12.4854 8.31033 12.4269C8.42397 12.3675 8.5092 12.2758 8.56601 12.1518C8.62369 12.027 8.65253 11.866 8.65253 11.6689C8.65253 11.4735 8.62369 11.3138 8.56601 11.1898C8.5092 11.0658 8.4244 10.9746 8.31162 10.916C8.19885 10.8575 8.05981 10.8282 7.89453 10.8282H7.53812V12.5147Z" }),
252
255
  /* @__PURE__ */ jsx("path", { d: "M9.62457 12.9938V10.3491H11.3756V10.8101H10.1837V11.4403H11.2594V11.9013H10.1837V12.9938H9.62457Z" })
253
- ] }) : /* @__PURE__ */ jsxs("g", { fill: "var(--color-white)", children: [
256
+ ] }) : /* @__PURE__ */ jsxs("g", { fill: "var(--sa-color-white)", children: [
254
257
  /* @__PURE__ */ jsx("path", { d: "M4.54258 10.5469L4.99589 11.3131H5.01346L5.46897 10.5469H6.00571L5.31969 11.6709L6.02107 12.7949H5.47446L5.01346 12.0276H4.99589L4.53489 12.7949H3.99047L4.69405 11.6709L4.00364 10.5469H4.54258Z" }),
255
258
  /* @__PURE__ */ jsx("path", { d: "M6.30646 12.7949V10.5469H6.78173V12.403H7.74544V12.7949H6.30646Z" }),
256
259
  /* @__PURE__ */ jsx("path", { d: "M9.27965 11.1934C9.27086 11.1049 9.23318 11.0361 9.16659 10.9871C9.1 10.9381 9.00963 10.9135 8.89548 10.9135C8.81791 10.9135 8.75242 10.9245 8.699 10.9465C8.64559 10.9677 8.60461 10.9973 8.57607 11.0354C8.54826 11.0734 8.53436 11.1166 8.53436 11.1649C8.5329 11.2051 8.54131 11.2403 8.5596 11.2703C8.57863 11.3003 8.60461 11.3263 8.63754 11.3482C8.67046 11.3694 8.70852 11.3881 8.75169 11.4042C8.79486 11.4196 8.84096 11.4327 8.88999 11.4437L9.09195 11.492C9.19001 11.5139 9.28001 11.5432 9.36197 11.5798C9.44392 11.6164 9.5149 11.6614 9.57491 11.7148C9.63491 11.7682 9.68138 11.8312 9.71431 11.9036C9.74797 11.976 9.76516 12.0591 9.76589 12.1528C9.76516 12.2903 9.73004 12.4096 9.66052 12.5106C9.59174 12.6108 9.49222 12.6888 9.36197 12.7444C9.23245 12.7993 9.07622 12.8267 8.89328 12.8267C8.71181 12.8267 8.55375 12.7989 8.41911 12.7433C8.2852 12.6877 8.18056 12.6054 8.10519 12.4963C8.03055 12.3866 7.9914 12.2508 7.98774 12.0891H8.44765C8.45277 12.1645 8.47436 12.2274 8.51241 12.2779C8.55119 12.3277 8.60278 12.3653 8.66717 12.3909C8.7323 12.4158 8.80584 12.4283 8.88779 12.4283C8.96829 12.4283 9.03817 12.4166 9.09744 12.3931C9.15744 12.3697 9.20391 12.3372 9.23684 12.2955C9.26977 12.2537 9.28623 12.2058 9.28623 12.1517C9.28623 12.1012 9.27123 12.0587 9.24123 12.0243C9.21196 11.9899 9.16879 11.9607 9.11171 11.9365C9.05536 11.9124 8.98621 11.8904 8.90426 11.8707L8.65949 11.8092C8.46997 11.7631 8.32032 11.691 8.21056 11.593C8.1008 11.4949 8.04628 11.3628 8.04701 11.1967C8.04628 11.0606 8.0825 10.9417 8.15568 10.84C8.22959 10.7383 8.33093 10.6589 8.45972 10.6018C8.58851 10.5447 8.73486 10.5162 8.89877 10.5162C9.06561 10.5162 9.21123 10.5447 9.33562 10.6018C9.46075 10.6589 9.55808 10.7383 9.62759 10.84C9.69711 10.9417 9.73296 11.0595 9.73516 11.1934H9.27965Z" }),
@@ -260,5 +263,3 @@ function FileIcon({ type, className }) {
260
263
  }
261
264
 
262
265
  export { Attachment, AttachmentGroup, AttachmentPreview, AttachmentPreviewPager, AttachmentPreviewSheets, FileIcon };
263
- //# sourceMappingURL=chunk-H4NU7NPO.js.map
264
- //# sourceMappingURL=chunk-H4NU7NPO.js.map
@@ -1,4 +1,4 @@
1
- import { cn } from './chunk-H63FYCMY.js';
1
+ import { cn } from './chunk-EHEXE2UV.js';
2
2
  import * as React from 'react';
3
3
  import { jsx, jsxs } from 'react/jsx-runtime';
4
4
 
@@ -228,13 +228,11 @@ function FlappySprite({ size = 16, run = true, className }) {
228
228
  );
229
229
  }
230
230
  function AgentLoading({ label = "Thinking\u2026", time, indicator = "tetris", glimmer = "color", className, ...props }) {
231
- return /* @__PURE__ */ jsxs("div", { "data-slot": "agent-loading", role: "status", "aria-live": "polite", className: cn("flex items-center gap-3 p-1", className), ...props, children: [
231
+ return /* @__PURE__ */ jsxs("div", { "data-slot": "agent-loading", role: "status", "aria-live": "polite", className: cn("sa:flex sa:items-center sa:gap-3 sa:p-1", className), ...props, children: [
232
232
  indicator === "flappy" ? /* @__PURE__ */ jsx(FlappySprite, { size: 16 }) : /* @__PURE__ */ jsx(TetrisMark, { glimmer }),
233
- indicator === "tetris" ? /* @__PURE__ */ jsx(TetrisLabel, { glimmer, className: "text-sm whitespace-nowrap", children: label }) : /* @__PURE__ */ jsx(ShimmerLabel, { className: "text-sm whitespace-nowrap", children: label }),
234
- time != null && /* @__PURE__ */ jsx("span", { className: "text-sm whitespace-nowrap text-text-subtle tabular-nums", children: time })
233
+ indicator === "tetris" ? /* @__PURE__ */ jsx(TetrisLabel, { glimmer, className: "sa:text-sm sa:whitespace-nowrap", children: label }) : /* @__PURE__ */ jsx(ShimmerLabel, { className: "sa:text-sm sa:whitespace-nowrap", children: label }),
234
+ time != null && /* @__PURE__ */ jsx("span", { className: "sa:text-sm sa:whitespace-nowrap sa:text-text-subtle sa:tabular-nums", children: time })
235
235
  ] });
236
236
  }
237
237
 
238
238
  export { AgentLoading, FlappySprite, ShimmerLabel, TetrisLabel, TetrisMark, TetrisStill };
239
- //# sourceMappingURL=chunk-KNUWZNFV.js.map
240
- //# sourceMappingURL=chunk-KNUWZNFV.js.map
@@ -0,0 +1,71 @@
1
+ import { cn } from './chunk-EHEXE2UV.js';
2
+ import 'react';
3
+ import { Toggle as Toggle$1 } from 'radix-ui';
4
+ import { cva } from 'class-variance-authority';
5
+ import { jsxs } from 'react/jsx-runtime';
6
+
7
+ var toggleVariants = cva(
8
+ [
9
+ "sa:inline-flex sa:shrink-0 sa:items-center sa:justify-center sa:gap-2 sa:border sa:font-medium sa:whitespace-nowrap sa:select-none sa:text-text-muted",
10
+ "sa:transition-[background-color,border-color,color,box-shadow,border-radius] sa:duration-(--sa-duration-fast) sa:ease-(--sa-ease-out)",
11
+ "sa:focus-visible:outline-none sa:disabled:pointer-events-none sa:disabled:text-text-subtle",
12
+ "sa:satin-hover:text-text-default sa:satin-focus:text-text-default sa:data-[state=on]:text-text-default",
13
+ // Figma icons are 1.25px at 16; on Iconoir's 24 grid that is 1.875.
14
+ "sa:[&_svg]:pointer-events-none sa:[&_svg]:size-icon-size sa:[&_svg]:shrink-0 sa:[&_svg]:[stroke-width:1.875]"
15
+ ],
16
+ {
17
+ variants: {
18
+ variant: {
19
+ outline: [
20
+ "sa:rounded-lg sa:border-border-default sa:bg-bg-popover",
21
+ "sa:satin-hover:border-border-strong sa:satin-hover:bg-bg-muted",
22
+ "sa:satin-focus:border-action-primary-bg sa:satin-focus:bg-bg-popover sa:satin-focus:[box-shadow:0_0_0_2px_var(--action-focus-ring)]",
23
+ "sa:data-[state=on]:border-border-strong sa:data-[state=on]:bg-action-secondary-bg-pressed",
24
+ "sa:data-[state=on]:satin-hover:border-border-strong sa:data-[state=on]:satin-hover:bg-action-secondary-bg-pressed",
25
+ "sa:data-[state=on]:satin-focus:border-action-primary-bg sa:data-[state=on]:satin-focus:bg-action-secondary-bg-pressed",
26
+ "sa:disabled:border-border-default sa:disabled:bg-bg-muted",
27
+ "sa:disabled:data-[state=on]:border-border-default sa:disabled:data-[state=on]:bg-action-secondary-bg-pressed"
28
+ ],
29
+ ghost: [
30
+ "sa:rounded-md sa:border-transparent sa:bg-transparent",
31
+ "sa:satin-hover:rounded-lg sa:satin-hover:bg-bg-muted",
32
+ // Figma's ghost focus is the primary border alone (its ring is 0px); pressed + focus has the ring.
33
+ "sa:satin-focus:rounded-lg sa:satin-focus:border-action-primary-bg sa:satin-focus:[box-shadow:none]",
34
+ "sa:data-[state=on]:rounded-lg sa:data-[state=on]:bg-action-secondary-bg-pressed",
35
+ "sa:data-[state=on]:satin-hover:bg-action-secondary-bg-pressed",
36
+ "sa:data-[state=on]:satin-focus:[box-shadow:0_0_0_2px_var(--action-focus-ring)]",
37
+ "sa:disabled:rounded-md sa:disabled:data-[state=on]:rounded-md"
38
+ ]
39
+ },
40
+ size: {
41
+ md: "sa:h-control-height-lg sa:px-2.5 sa:text-base",
42
+ sm: "sa:h-control-height sa:px-2.5 sa:text-sm sa:leading-[18px]"
43
+ },
44
+ iconOnly: {
45
+ true: "sa:px-0",
46
+ false: ""
47
+ }
48
+ },
49
+ compoundVariants: [
50
+ { iconOnly: true, size: "md", className: "sa:w-control-height-lg" },
51
+ { iconOnly: true, size: "sm", className: "sa:w-control-height" }
52
+ ],
53
+ defaultVariants: { variant: "sa:outline", size: "md", iconOnly: false }
54
+ }
55
+ );
56
+ function Toggle({ className, variant, size, iconOnly, icon, children, ...props }) {
57
+ return /* @__PURE__ */ jsxs(
58
+ Toggle$1.Root,
59
+ {
60
+ "data-slot": "toggle",
61
+ className: cn(toggleVariants({ variant, size, iconOnly }), className),
62
+ ...props,
63
+ children: [
64
+ icon,
65
+ !iconOnly && children
66
+ ]
67
+ }
68
+ );
69
+ }
70
+
71
+ export { Toggle, toggleVariants };
@@ -0,0 +1,84 @@
1
+ import { useFormContext, RequiredMark, FieldDescription, FormContext, FieldError } from './chunk-KITXKIYW.js';
2
+ import { cn } from './chunk-EHEXE2UV.js';
3
+ import * as React from 'react';
4
+ import { jsxs, jsx } from 'react/jsx-runtime';
5
+
6
+ var columnClass = { 1: "", 2: "sa:sm:grid-cols-2", 3: "sa:sm:grid-cols-3" };
7
+ function FieldGroup({
8
+ legend,
9
+ description,
10
+ error: ownError,
11
+ name,
12
+ required,
13
+ variant = "fields",
14
+ columns = 1,
15
+ layout: ownLayout,
16
+ disabled: ownDisabled,
17
+ className,
18
+ children,
19
+ ...props
20
+ }) {
21
+ const form = useFormContext();
22
+ const id = React.useId();
23
+ const error = ownError ?? (name ? form?.errors?.[name] : void 0);
24
+ const layout = ownLayout ?? form?.layout ?? "vertical";
25
+ const disabled = ownDisabled ?? form?.disabled;
26
+ const invalid = Boolean(error);
27
+ const horizontal = layout === "horizontal";
28
+ const choices = variant === "choices";
29
+ const descriptionId = description ? `${id}-description` : void 0;
30
+ const errorId = invalid ? `${id}-error` : void 0;
31
+ const inner = React.useMemo(
32
+ () => ({ ...form, layout: "vertical", disabled }),
33
+ [form, disabled]
34
+ );
35
+ return /* @__PURE__ */ jsxs(
36
+ "fieldset",
37
+ {
38
+ "data-slot": "field-group",
39
+ "data-variant": variant,
40
+ "data-layout": layout,
41
+ "data-invalid": invalid || void 0,
42
+ disabled,
43
+ "aria-describedby": [descriptionId, errorId].filter(Boolean).join(" ") || void 0,
44
+ className: cn("sa:m-0 sa:min-w-0 sa:border-0 sa:p-0", className),
45
+ ...props,
46
+ children: [
47
+ /* @__PURE__ */ jsxs(
48
+ "legend",
49
+ {
50
+ className: cn(
51
+ "sa:float-left sa:p-0 sa:text-text-default",
52
+ horizontal ? "sa:w-40" : "sa:w-full",
53
+ choices ? "sa:text-sm sa:leading-[18px] sa:font-medium" : "sa:text-base sa:font-medium",
54
+ disabled && "sa:opacity-50"
55
+ ),
56
+ children: [
57
+ /* @__PURE__ */ jsxs("span", { className: "sa:flex sa:items-start sa:gap-0.5", children: [
58
+ legend,
59
+ required && /* @__PURE__ */ jsx(RequiredMark, {})
60
+ ] }),
61
+ description && /* @__PURE__ */ jsx(FieldDescription, { id: descriptionId, className: "sa:mt-1 sa:font-normal", children: description })
62
+ ]
63
+ }
64
+ ),
65
+ /* @__PURE__ */ jsxs(
66
+ "div",
67
+ {
68
+ className: cn(
69
+ "sa:grid sa:min-w-0",
70
+ horizontal ? "sa:ml-46" : cn("sa:clear-both", choices ? "sa:pt-2" : "sa:pt-4"),
71
+ choices ? "sa:gap-3" : cn("sa:gap-5", columnClass[columns])
72
+ ),
73
+ children: [
74
+ /* @__PURE__ */ jsx(FormContext.Provider, { value: inner, children }),
75
+ invalid && /* @__PURE__ */ jsx(FieldError, { id: errorId, className: cn(columns > 1 && "sa:sm:col-span-full"), children: error })
76
+ ]
77
+ }
78
+ )
79
+ ]
80
+ }
81
+ );
82
+ }
83
+
84
+ export { FieldGroup };
@@ -0,0 +1,88 @@
1
+ import { Button } from './chunk-6DWLTGRQ.js';
2
+ import { useSatinLabels } from './chunk-NTSU44FY.js';
3
+ import { cn } from './chunk-EHEXE2UV.js';
4
+ import 'react';
5
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
6
+
7
+ var soft = {
8
+ neutral: "sa:bg-status-neutral-bg",
9
+ info: "sa:bg-status-sky-bg",
10
+ success: "sa:bg-status-green-bg",
11
+ warning: "sa:bg-status-amber-bg",
12
+ error: "sa:bg-status-red-bg"
13
+ };
14
+ var iconColor = {
15
+ neutral: "sa:text-status-neutral-fg",
16
+ info: "sa:text-status-sky-fg",
17
+ success: "sa:text-status-green-fg",
18
+ warning: "sa:text-status-amber-fg",
19
+ error: "sa:text-status-red-fg"
20
+ };
21
+ function Alert({
22
+ intent = "neutral",
23
+ variant = "soft",
24
+ title,
25
+ description,
26
+ icon = true,
27
+ action,
28
+ onDismiss,
29
+ className,
30
+ children,
31
+ ...props
32
+ }) {
33
+ const labels = useSatinLabels();
34
+ const body = description ?? children;
35
+ const actionBelow = action && body;
36
+ return /* @__PURE__ */ jsxs(
37
+ "div",
38
+ {
39
+ role: intent === "error" || intent === "warning" ? "alert" : "status",
40
+ "data-slot": "alert",
41
+ "data-intent": intent,
42
+ "data-variant": variant,
43
+ className: cn(
44
+ "sa:flex sa:w-full sa:items-start sa:gap-2.5 sa:rounded-xl sa:px-4 sa:py-3",
45
+ variant === "soft" ? soft[intent] : "sa:border sa:border-border-default sa:bg-bg-card sa:[box-shadow:0_1px_2px_0_var(--effect-shadow-xs)]",
46
+ className
47
+ ),
48
+ ...props,
49
+ children: [
50
+ icon !== false && // 16px on the middle of the title's 20px line.
51
+ /* @__PURE__ */ jsx("span", { className: cn("sa:mt-0.5 sa:grid sa:shrink-0 sa:place-items-center sa:[&_svg]:size-4", iconColor[intent]), children: icon === true ? /* @__PURE__ */ jsx(StatusIcon, { intent }) : icon }),
52
+ /* @__PURE__ */ jsxs("div", { className: "sa:flex sa:min-w-0 sa:flex-1 sa:flex-col", children: [
53
+ title && /* @__PURE__ */ jsx("p", { className: "sa:text-base sa:leading-5 sa:font-medium sa:text-text-default", children: title }),
54
+ body && /* @__PURE__ */ jsx("div", { className: "sa:text-body sa:text-text-muted", children: body }),
55
+ actionBelow && /* @__PURE__ */ jsx("div", { className: "sa:mt-2.5 sa:flex sa:flex-wrap sa:items-center sa:gap-2", children: action })
56
+ ] }),
57
+ action && !actionBelow && /* @__PURE__ */ jsx("div", { className: "sa:-my-1 sa:flex sa:shrink-0 sa:items-center sa:gap-2", children: action }),
58
+ onDismiss && /* @__PURE__ */ jsx(Button, { variant: "tertiary", size: "xs", iconOnly: true, "aria-label": labels.dismiss, onClick: onDismiss, className: "sa:-my-0.5 sa:-mr-1.5", children: /* @__PURE__ */ jsx(CloseIcon, {}) })
59
+ ]
60
+ }
61
+ );
62
+ }
63
+ function StatusIcon({ intent }) {
64
+ return /* @__PURE__ */ jsx("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": true, className: "sa:shrink-0", children: /* @__PURE__ */ jsx("g", { stroke: "currentColor", style: { strokeWidth: 1.25 }, strokeLinecap: "round", strokeLinejoin: "round", children: intent === "success" ? /* @__PURE__ */ jsx("path", { d: "M3.33333 8.66667L6 11.3333L12.6667 4.66667" }) : /* @__PURE__ */ jsxs(Fragment, { children: [
65
+ intent === "info" ? /* @__PURE__ */ jsxs(Fragment, { children: [
66
+ /* @__PURE__ */ jsx("path", { d: "M8 7.70494V10.6557" }),
67
+ /* @__PURE__ */ jsx("path", { d: "M8 5.35022L8.0059 5.34366" })
68
+ ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
69
+ /* @__PURE__ */ jsx("path", { d: "M8 5.34428V8.29506" }),
70
+ /* @__PURE__ */ jsx("path", { d: "M8 10.6563L8.0059 10.6498" })
71
+ ] }),
72
+ /* @__PURE__ */ jsx("path", { d: "M8 13.9015C11.2593 13.9015 13.9015 11.2593 13.9015 8C13.9015 4.74066 11.2593 2.09845 8 2.09845C4.74066 2.09845 2.09845 4.74066 2.09845 8C2.09845 11.2593 4.74066 13.9015 8 13.9015Z" })
73
+ ] }) }) });
74
+ }
75
+ function CloseIcon() {
76
+ return /* @__PURE__ */ jsx("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": true, children: /* @__PURE__ */ jsx(
77
+ "path",
78
+ {
79
+ d: "M4.50551 11.4951L8.0006 8M8.0006 8L11.4957 4.50491M8.0006 8L4.50551 4.50491M8.0006 8L11.4957 11.4951",
80
+ stroke: "currentColor",
81
+ strokeWidth: "1.25",
82
+ strokeLinecap: "round",
83
+ strokeLinejoin: "round"
84
+ }
85
+ ) });
86
+ }
87
+
88
+ export { Alert, CloseIcon, StatusIcon };