@namroodinc/liquid-editorial 0.0.0-stage → 0.1.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 (354) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +67 -2
  3. package/dist/chunks/Icon-CGY1FNXT.js +77 -0
  4. package/dist/chunks/Icon-CGY1FNXT.js.map +1 -0
  5. package/dist/chunks/Icon-CWsA1W83.cjs +2 -0
  6. package/dist/chunks/Icon-CWsA1W83.cjs.map +1 -0
  7. package/dist/components/AssetGrid/index.cjs +2 -0
  8. package/dist/components/AssetGrid/index.cjs.map +1 -0
  9. package/dist/components/AssetGrid/index.d.cts +54 -0
  10. package/dist/components/AssetGrid/index.d.cts.map +1 -0
  11. package/dist/components/AssetGrid/index.d.ts +54 -0
  12. package/dist/components/AssetGrid/index.d.ts.map +1 -0
  13. package/dist/components/AssetGrid/index.js +137 -0
  14. package/dist/components/AssetGrid/index.js.map +1 -0
  15. package/dist/components/AssetGrid/style.css +196 -0
  16. package/dist/components/Avatar/index.cjs +2 -0
  17. package/dist/components/Avatar/index.cjs.map +1 -0
  18. package/dist/components/Avatar/index.d.cts +24 -0
  19. package/dist/components/Avatar/index.d.cts.map +1 -0
  20. package/dist/components/Avatar/index.d.ts +24 -0
  21. package/dist/components/Avatar/index.d.ts.map +1 -0
  22. package/dist/components/Avatar/index.js +43 -0
  23. package/dist/components/Avatar/index.js.map +1 -0
  24. package/dist/components/Avatar/style.css +70 -0
  25. package/dist/components/Badge/index.cjs +2 -0
  26. package/dist/components/Badge/index.cjs.map +1 -0
  27. package/dist/components/Badge/index.d.cts +25 -0
  28. package/dist/components/Badge/index.d.cts.map +1 -0
  29. package/dist/components/Badge/index.d.ts +25 -0
  30. package/dist/components/Badge/index.d.ts.map +1 -0
  31. package/dist/components/Badge/index.js +28 -0
  32. package/dist/components/Badge/index.js.map +1 -0
  33. package/dist/components/Badge/style.css +103 -0
  34. package/dist/components/Board/index.cjs +2 -0
  35. package/dist/components/Board/index.cjs.map +1 -0
  36. package/dist/components/Board/index.d.cts +62 -0
  37. package/dist/components/Board/index.d.cts.map +1 -0
  38. package/dist/components/Board/index.d.ts +62 -0
  39. package/dist/components/Board/index.d.ts.map +1 -0
  40. package/dist/components/Board/index.js +227 -0
  41. package/dist/components/Board/index.js.map +1 -0
  42. package/dist/components/Board/style.css +145 -0
  43. package/dist/components/Button/index.cjs +2 -0
  44. package/dist/components/Button/index.cjs.map +1 -0
  45. package/dist/components/Button/index.d.cts +22 -0
  46. package/dist/components/Button/index.d.cts.map +1 -0
  47. package/dist/components/Button/index.d.ts +22 -0
  48. package/dist/components/Button/index.d.ts.map +1 -0
  49. package/dist/components/Button/index.js +37 -0
  50. package/dist/components/Button/index.js.map +1 -0
  51. package/dist/components/Button/style.css +139 -0
  52. package/dist/components/ButtonGroup/index.cjs +2 -0
  53. package/dist/components/ButtonGroup/index.cjs.map +1 -0
  54. package/dist/components/ButtonGroup/index.d.cts +17 -0
  55. package/dist/components/ButtonGroup/index.d.cts.map +1 -0
  56. package/dist/components/ButtonGroup/index.d.ts +17 -0
  57. package/dist/components/ButtonGroup/index.d.ts.map +1 -0
  58. package/dist/components/ButtonGroup/index.js +18 -0
  59. package/dist/components/ButtonGroup/index.js.map +1 -0
  60. package/dist/components/ButtonGroup/style.css +66 -0
  61. package/dist/components/Choice/index.cjs +2 -0
  62. package/dist/components/Choice/index.cjs.map +1 -0
  63. package/dist/components/Choice/index.d.cts +25 -0
  64. package/dist/components/Choice/index.d.cts.map +1 -0
  65. package/dist/components/Choice/index.d.ts +25 -0
  66. package/dist/components/Choice/index.d.ts.map +1 -0
  67. package/dist/components/Choice/index.js +58 -0
  68. package/dist/components/Choice/index.js.map +1 -0
  69. package/dist/components/Choice/style.css +96 -0
  70. package/dist/components/Container/index.cjs +2 -0
  71. package/dist/components/Container/index.cjs.map +1 -0
  72. package/dist/components/Container/index.d.cts +19 -0
  73. package/dist/components/Container/index.d.cts.map +1 -0
  74. package/dist/components/Container/index.d.ts +19 -0
  75. package/dist/components/Container/index.d.ts.map +1 -0
  76. package/dist/components/Container/index.js +20 -0
  77. package/dist/components/Container/index.js.map +1 -0
  78. package/dist/components/Container/style.css +41 -0
  79. package/dist/components/DatePicker/index.cjs +2 -0
  80. package/dist/components/DatePicker/index.cjs.map +1 -0
  81. package/dist/components/DatePicker/index.d.cts +57 -0
  82. package/dist/components/DatePicker/index.d.cts.map +1 -0
  83. package/dist/components/DatePicker/index.d.ts +57 -0
  84. package/dist/components/DatePicker/index.d.ts.map +1 -0
  85. package/dist/components/DatePicker/index.js +248 -0
  86. package/dist/components/DatePicker/index.js.map +1 -0
  87. package/dist/components/DatePicker/style.css +149 -0
  88. package/dist/components/Drawer/index.cjs +2 -0
  89. package/dist/components/Drawer/index.cjs.map +1 -0
  90. package/dist/components/Drawer/index.d.cts +23 -0
  91. package/dist/components/Drawer/index.d.cts.map +1 -0
  92. package/dist/components/Drawer/index.d.ts +23 -0
  93. package/dist/components/Drawer/index.d.ts.map +1 -0
  94. package/dist/components/Drawer/index.js +85 -0
  95. package/dist/components/Drawer/index.js.map +1 -0
  96. package/dist/components/Drawer/style.css +147 -0
  97. package/dist/components/EntryPicker/index.cjs +2 -0
  98. package/dist/components/EntryPicker/index.cjs.map +1 -0
  99. package/dist/components/EntryPicker/index.d.cts +36 -0
  100. package/dist/components/EntryPicker/index.d.cts.map +1 -0
  101. package/dist/components/EntryPicker/index.d.ts +36 -0
  102. package/dist/components/EntryPicker/index.d.ts.map +1 -0
  103. package/dist/components/EntryPicker/index.js +178 -0
  104. package/dist/components/EntryPicker/index.js.map +1 -0
  105. package/dist/components/EntryPicker/style.css +162 -0
  106. package/dist/components/Field/index.cjs +2 -0
  107. package/dist/components/Field/index.cjs.map +1 -0
  108. package/dist/components/Field/index.d.cts +19 -0
  109. package/dist/components/Field/index.d.cts.map +1 -0
  110. package/dist/components/Field/index.d.ts +19 -0
  111. package/dist/components/Field/index.d.ts.map +1 -0
  112. package/dist/components/Field/index.js +41 -0
  113. package/dist/components/Field/index.js.map +1 -0
  114. package/dist/components/Field/style.css +100 -0
  115. package/dist/components/FieldAffix/index.cjs +2 -0
  116. package/dist/components/FieldAffix/index.cjs.map +1 -0
  117. package/dist/components/FieldAffix/index.d.cts +19 -0
  118. package/dist/components/FieldAffix/index.d.cts.map +1 -0
  119. package/dist/components/FieldAffix/index.d.ts +19 -0
  120. package/dist/components/FieldAffix/index.d.ts.map +1 -0
  121. package/dist/components/FieldAffix/index.js +45 -0
  122. package/dist/components/FieldAffix/index.js.map +1 -0
  123. package/dist/components/FieldAffix/style.css +54 -0
  124. package/dist/components/Grid/index.cjs +2 -0
  125. package/dist/components/Grid/index.cjs.map +1 -0
  126. package/dist/components/Grid/index.d.cts +44 -0
  127. package/dist/components/Grid/index.d.cts.map +1 -0
  128. package/dist/components/Grid/index.d.ts +44 -0
  129. package/dist/components/Grid/index.d.ts.map +1 -0
  130. package/dist/components/Grid/index.js +49 -0
  131. package/dist/components/Grid/index.js.map +1 -0
  132. package/dist/components/Grid/style.css +226 -0
  133. package/dist/components/Icon/icons.d.cts +64 -0
  134. package/dist/components/Icon/icons.d.cts.map +1 -0
  135. package/dist/components/Icon/icons.d.ts +64 -0
  136. package/dist/components/Icon/icons.d.ts.map +1 -0
  137. package/dist/components/Icon/index.cjs +1 -0
  138. package/dist/components/Icon/index.d.cts +15 -0
  139. package/dist/components/Icon/index.d.cts.map +1 -0
  140. package/dist/components/Icon/index.d.ts +15 -0
  141. package/dist/components/Icon/index.d.ts.map +1 -0
  142. package/dist/components/Icon/index.js +1 -0
  143. package/dist/components/Icon/style.css +10 -0
  144. package/dist/components/ImageCropper/index.cjs +2 -0
  145. package/dist/components/ImageCropper/index.cjs.map +1 -0
  146. package/dist/components/ImageCropper/index.d.cts +66 -0
  147. package/dist/components/ImageCropper/index.d.cts.map +1 -0
  148. package/dist/components/ImageCropper/index.d.ts +66 -0
  149. package/dist/components/ImageCropper/index.d.ts.map +1 -0
  150. package/dist/components/ImageCropper/index.js +263 -0
  151. package/dist/components/ImageCropper/index.js.map +1 -0
  152. package/dist/components/ImageCropper/style.css +160 -0
  153. package/dist/components/Menu/index.cjs +2 -0
  154. package/dist/components/Menu/index.cjs.map +1 -0
  155. package/dist/components/Menu/index.d.cts +35 -0
  156. package/dist/components/Menu/index.d.cts.map +1 -0
  157. package/dist/components/Menu/index.d.ts +35 -0
  158. package/dist/components/Menu/index.d.ts.map +1 -0
  159. package/dist/components/Menu/index.js +110 -0
  160. package/dist/components/Menu/index.js.map +1 -0
  161. package/dist/components/Menu/style.css +87 -0
  162. package/dist/components/Modal/index.cjs +2 -0
  163. package/dist/components/Modal/index.cjs.map +1 -0
  164. package/dist/components/Modal/index.d.cts +19 -0
  165. package/dist/components/Modal/index.d.cts.map +1 -0
  166. package/dist/components/Modal/index.d.ts +19 -0
  167. package/dist/components/Modal/index.d.ts.map +1 -0
  168. package/dist/components/Modal/index.js +84 -0
  169. package/dist/components/Modal/index.js.map +1 -0
  170. package/dist/components/Modal/style.css +106 -0
  171. package/dist/components/NumberField/index.cjs +2 -0
  172. package/dist/components/NumberField/index.cjs.map +1 -0
  173. package/dist/components/NumberField/index.d.cts +50 -0
  174. package/dist/components/NumberField/index.d.cts.map +1 -0
  175. package/dist/components/NumberField/index.d.ts +50 -0
  176. package/dist/components/NumberField/index.d.ts.map +1 -0
  177. package/dist/components/NumberField/index.js +124 -0
  178. package/dist/components/NumberField/index.js.map +1 -0
  179. package/dist/components/NumberField/style.css +85 -0
  180. package/dist/components/Popover/index.cjs +2 -0
  181. package/dist/components/Popover/index.cjs.map +1 -0
  182. package/dist/components/Popover/index.d.cts +28 -0
  183. package/dist/components/Popover/index.d.cts.map +1 -0
  184. package/dist/components/Popover/index.d.ts +28 -0
  185. package/dist/components/Popover/index.d.ts.map +1 -0
  186. package/dist/components/Popover/index.js +52 -0
  187. package/dist/components/Popover/index.js.map +1 -0
  188. package/dist/components/Popover/style.css +23 -0
  189. package/dist/components/RichTextEditor/index.cjs +2 -0
  190. package/dist/components/RichTextEditor/index.cjs.map +1 -0
  191. package/dist/components/RichTextEditor/index.d.cts +23 -0
  192. package/dist/components/RichTextEditor/index.d.cts.map +1 -0
  193. package/dist/components/RichTextEditor/index.d.ts +23 -0
  194. package/dist/components/RichTextEditor/index.d.ts.map +1 -0
  195. package/dist/components/RichTextEditor/index.js +175 -0
  196. package/dist/components/RichTextEditor/index.js.map +1 -0
  197. package/dist/components/RichTextEditor/style.css +136 -0
  198. package/dist/components/SearchField/index.cjs +2 -0
  199. package/dist/components/SearchField/index.cjs.map +1 -0
  200. package/dist/components/SearchField/index.d.cts +11 -0
  201. package/dist/components/SearchField/index.d.cts.map +1 -0
  202. package/dist/components/SearchField/index.d.ts +11 -0
  203. package/dist/components/SearchField/index.d.ts.map +1 -0
  204. package/dist/components/SearchField/index.js +49 -0
  205. package/dist/components/SearchField/index.js.map +1 -0
  206. package/dist/components/SearchField/style.css +27 -0
  207. package/dist/components/Select/index.cjs +2 -0
  208. package/dist/components/Select/index.cjs.map +1 -0
  209. package/dist/components/Select/index.d.cts +26 -0
  210. package/dist/components/Select/index.d.cts.map +1 -0
  211. package/dist/components/Select/index.d.ts +26 -0
  212. package/dist/components/Select/index.d.ts.map +1 -0
  213. package/dist/components/Select/index.js +129 -0
  214. package/dist/components/Select/index.js.map +1 -0
  215. package/dist/components/Select/style.css +88 -0
  216. package/dist/components/SelectionCard/index.cjs +2 -0
  217. package/dist/components/SelectionCard/index.cjs.map +1 -0
  218. package/dist/components/SelectionCard/index.d.cts +32 -0
  219. package/dist/components/SelectionCard/index.d.cts.map +1 -0
  220. package/dist/components/SelectionCard/index.d.ts +32 -0
  221. package/dist/components/SelectionCard/index.d.ts.map +1 -0
  222. package/dist/components/SelectionCard/index.js +71 -0
  223. package/dist/components/SelectionCard/index.js.map +1 -0
  224. package/dist/components/SelectionCard/style.css +133 -0
  225. package/dist/components/SideNav/index.cjs +2 -0
  226. package/dist/components/SideNav/index.cjs.map +1 -0
  227. package/dist/components/SideNav/index.d.cts +58 -0
  228. package/dist/components/SideNav/index.d.cts.map +1 -0
  229. package/dist/components/SideNav/index.d.ts +58 -0
  230. package/dist/components/SideNav/index.d.ts.map +1 -0
  231. package/dist/components/SideNav/index.js +113 -0
  232. package/dist/components/SideNav/index.js.map +1 -0
  233. package/dist/components/SideNav/style.css +184 -0
  234. package/dist/components/Skeleton/index.cjs +2 -0
  235. package/dist/components/Skeleton/index.cjs.map +1 -0
  236. package/dist/components/Skeleton/index.d.cts +21 -0
  237. package/dist/components/Skeleton/index.d.cts.map +1 -0
  238. package/dist/components/Skeleton/index.d.ts +21 -0
  239. package/dist/components/Skeleton/index.d.ts.map +1 -0
  240. package/dist/components/Skeleton/index.js +31 -0
  241. package/dist/components/Skeleton/index.js.map +1 -0
  242. package/dist/components/Skeleton/style.css +55 -0
  243. package/dist/components/Slider/index.cjs +2 -0
  244. package/dist/components/Slider/index.cjs.map +1 -0
  245. package/dist/components/Slider/index.d.cts +40 -0
  246. package/dist/components/Slider/index.d.cts.map +1 -0
  247. package/dist/components/Slider/index.d.ts +40 -0
  248. package/dist/components/Slider/index.d.ts.map +1 -0
  249. package/dist/components/Slider/index.js +117 -0
  250. package/dist/components/Slider/index.js.map +1 -0
  251. package/dist/components/Slider/style.css +156 -0
  252. package/dist/components/SortableList/index.cjs +2 -0
  253. package/dist/components/SortableList/index.cjs.map +1 -0
  254. package/dist/components/SortableList/index.d.cts +27 -0
  255. package/dist/components/SortableList/index.d.cts.map +1 -0
  256. package/dist/components/SortableList/index.d.ts +27 -0
  257. package/dist/components/SortableList/index.d.ts.map +1 -0
  258. package/dist/components/SortableList/index.js +85 -0
  259. package/dist/components/SortableList/index.js.map +1 -0
  260. package/dist/components/SortableList/style.css +71 -0
  261. package/dist/components/Stepper/index.cjs +2 -0
  262. package/dist/components/Stepper/index.cjs.map +1 -0
  263. package/dist/components/Stepper/index.d.cts +32 -0
  264. package/dist/components/Stepper/index.d.cts.map +1 -0
  265. package/dist/components/Stepper/index.d.ts +32 -0
  266. package/dist/components/Stepper/index.d.ts.map +1 -0
  267. package/dist/components/Stepper/index.js +69 -0
  268. package/dist/components/Stepper/index.js.map +1 -0
  269. package/dist/components/Stepper/style.css +154 -0
  270. package/dist/components/SubNav/index.cjs +2 -0
  271. package/dist/components/SubNav/index.cjs.map +1 -0
  272. package/dist/components/SubNav/index.d.cts +31 -0
  273. package/dist/components/SubNav/index.d.cts.map +1 -0
  274. package/dist/components/SubNav/index.d.ts +31 -0
  275. package/dist/components/SubNav/index.d.ts.map +1 -0
  276. package/dist/components/SubNav/index.js +62 -0
  277. package/dist/components/SubNav/index.js.map +1 -0
  278. package/dist/components/SubNav/style.css +86 -0
  279. package/dist/components/Switch/index.cjs +2 -0
  280. package/dist/components/Switch/index.cjs.map +1 -0
  281. package/dist/components/Switch/index.d.cts +12 -0
  282. package/dist/components/Switch/index.d.cts.map +1 -0
  283. package/dist/components/Switch/index.d.ts +12 -0
  284. package/dist/components/Switch/index.d.ts.map +1 -0
  285. package/dist/components/Switch/index.js +37 -0
  286. package/dist/components/Switch/index.js.map +1 -0
  287. package/dist/components/Switch/style.css +65 -0
  288. package/dist/components/Table/index.cjs +2 -0
  289. package/dist/components/Table/index.cjs.map +1 -0
  290. package/dist/components/Table/index.d.cts +54 -0
  291. package/dist/components/Table/index.d.cts.map +1 -0
  292. package/dist/components/Table/index.d.ts +54 -0
  293. package/dist/components/Table/index.d.ts.map +1 -0
  294. package/dist/components/Table/index.js +102 -0
  295. package/dist/components/Table/index.js.map +1 -0
  296. package/dist/components/Table/style.css +122 -0
  297. package/dist/components/TagsInput/index.cjs +2 -0
  298. package/dist/components/TagsInput/index.cjs.map +1 -0
  299. package/dist/components/TagsInput/index.d.cts +22 -0
  300. package/dist/components/TagsInput/index.d.cts.map +1 -0
  301. package/dist/components/TagsInput/index.d.ts +22 -0
  302. package/dist/components/TagsInput/index.d.ts.map +1 -0
  303. package/dist/components/TagsInput/index.js +60 -0
  304. package/dist/components/TagsInput/index.js.map +1 -0
  305. package/dist/components/TagsInput/style.css +83 -0
  306. package/dist/components/TextField/index.cjs +2 -0
  307. package/dist/components/TextField/index.cjs.map +1 -0
  308. package/dist/components/TextField/index.d.cts +11 -0
  309. package/dist/components/TextField/index.d.cts.map +1 -0
  310. package/dist/components/TextField/index.d.ts +11 -0
  311. package/dist/components/TextField/index.d.ts.map +1 -0
  312. package/dist/components/TextField/index.js +29 -0
  313. package/dist/components/TextField/index.js.map +1 -0
  314. package/dist/components/TextField/style.css +1 -0
  315. package/dist/components/Time/index.cjs +2 -0
  316. package/dist/components/Time/index.cjs.map +1 -0
  317. package/dist/components/Time/index.d.cts +35 -0
  318. package/dist/components/Time/index.d.cts.map +1 -0
  319. package/dist/components/Time/index.d.ts +35 -0
  320. package/dist/components/Time/index.d.ts.map +1 -0
  321. package/dist/components/Time/index.js +98 -0
  322. package/dist/components/Time/index.js.map +1 -0
  323. package/dist/components/Time/style.css +30 -0
  324. package/dist/components/Toast/index.cjs +2 -0
  325. package/dist/components/Toast/index.cjs.map +1 -0
  326. package/dist/components/Toast/index.d.cts +30 -0
  327. package/dist/components/Toast/index.d.cts.map +1 -0
  328. package/dist/components/Toast/index.d.ts +30 -0
  329. package/dist/components/Toast/index.d.ts.map +1 -0
  330. package/dist/components/Toast/index.js +96 -0
  331. package/dist/components/Toast/index.js.map +1 -0
  332. package/dist/components/Toast/style.css +80 -0
  333. package/dist/components/TopNav/index.cjs +2 -0
  334. package/dist/components/TopNav/index.cjs.map +1 -0
  335. package/dist/components/TopNav/index.d.cts +28 -0
  336. package/dist/components/TopNav/index.d.cts.map +1 -0
  337. package/dist/components/TopNav/index.d.ts +28 -0
  338. package/dist/components/TopNav/index.d.ts.map +1 -0
  339. package/dist/components/TopNav/index.js +45 -0
  340. package/dist/components/TopNav/index.js.map +1 -0
  341. package/dist/components/TopNav/style.css +80 -0
  342. package/dist/index.cjs +1 -0
  343. package/dist/index.d.cts +77 -0
  344. package/dist/index.d.cts.map +1 -0
  345. package/dist/index.d.ts +77 -0
  346. package/dist/index.d.ts.map +1 -0
  347. package/dist/index.js +38 -0
  348. package/dist/reset.css +15 -0
  349. package/dist/reset.css.d.ts +2 -0
  350. package/dist/styles.css +39 -0
  351. package/dist/styles.css.d.ts +2 -0
  352. package/dist/tokens.css +457 -0
  353. package/dist/tokens.css.d.ts +2 -0
  354. package/package.json +130 -4
@@ -0,0 +1,196 @@
1
+ @layer components {
2
+ /* Columns and gap come from Grid; the grid only adds its own inset. */
3
+ .ds-asset-grid {
4
+ padding: var(--space-4);
5
+ }
6
+
7
+ .ds-asset-tile {
8
+ position: relative;
9
+ display: flex;
10
+ flex-direction: column;
11
+ gap: var(--space-3);
12
+ padding: var(--space-3);
13
+ background: var(--color-surface);
14
+ border: var(--control-border-width) solid var(--control-border-color);
15
+ border-radius: var(--radius-md);
16
+ /* The rail exists on every tile, so selecting one never shifts the grid. */
17
+ box-shadow: inset var(--rail-width) 0 0 0 transparent;
18
+ transition:
19
+ background-color var(--duration-fast) var(--ease-standard),
20
+ box-shadow var(--duration-fast) var(--ease-standard);
21
+ }
22
+
23
+ .ds-asset-tile:hover:not([data-pending]) {
24
+ background: var(--field-hover);
25
+ }
26
+
27
+ .ds-asset-tile[data-selected] {
28
+ background: var(--color-primary-soft);
29
+ box-shadow: inset var(--rail-width) 0 0 0 var(--rail-color);
30
+ }
31
+
32
+ .ds-asset-tile[data-pending] {
33
+ opacity: 70%;
34
+ }
35
+
36
+ .ds-asset-tile[data-loading="true"] {
37
+ background: var(--color-surface);
38
+ }
39
+
40
+ .ds-asset-tile__thumb {
41
+ position: relative;
42
+ aspect-ratio: var(--asset-thumb-aspect);
43
+ overflow: hidden;
44
+ border-radius: var(--field-radius);
45
+ background: var(--field-rest);
46
+ display: grid;
47
+ place-content: center;
48
+ }
49
+
50
+ .ds-asset-tile__thumb img {
51
+ position: absolute;
52
+ inset: 0;
53
+ inline-size: 100%;
54
+ block-size: 100%;
55
+ object-fit: cover;
56
+ opacity: 0;
57
+ transition: opacity var(--duration-base) var(--ease-standard);
58
+ }
59
+
60
+ .ds-asset-tile__thumb img[data-loaded] {
61
+ opacity: 100%;
62
+ }
63
+
64
+ .ds-asset-tile__thumb-skeleton {
65
+ position: absolute;
66
+ inset: 0;
67
+ block-size: 100%;
68
+ border-radius: 0;
69
+ }
70
+
71
+ .ds-asset-tile__placeholder {
72
+ display: grid;
73
+ place-content: center;
74
+ color: var(--color-text-muted);
75
+ }
76
+
77
+ .ds-asset-tile__pending {
78
+ position: absolute;
79
+ inset: 0;
80
+ display: flex;
81
+ flex-direction: column;
82
+ align-items: center;
83
+ justify-content: center;
84
+ gap: var(--space-2);
85
+ background: color-mix(in srgb, var(--color-surface) 72%, transparent);
86
+ color: var(--color-text-muted);
87
+ font-size: var(--font-size-xs);
88
+ font-weight: var(--font-weight-bold);
89
+ }
90
+
91
+ .ds-asset-tile__spinner {
92
+ animation: ds-asset-spin 900ms linear infinite;
93
+ }
94
+
95
+ @keyframes ds-asset-spin {
96
+ to {
97
+ transform: rotate(360deg);
98
+ }
99
+ }
100
+
101
+ .ds-asset-tile__actions {
102
+ position: absolute;
103
+ inset-block-start: var(--space-2);
104
+ inset-inline: var(--space-2);
105
+ z-index: 1;
106
+ display: flex;
107
+ justify-content: space-between;
108
+ gap: var(--space-2);
109
+ pointer-events: none;
110
+ }
111
+
112
+ .ds-asset-tile__actions > * {
113
+ pointer-events: auto;
114
+ }
115
+
116
+ /* The whole thumbnail is the selection target; the name stays readable text
117
+ * underneath rather than being swallowed by the button. */
118
+ .ds-asset-tile__hit {
119
+ position: absolute;
120
+ inset: 0;
121
+ padding: 0;
122
+ border: 0;
123
+ background: transparent;
124
+ cursor: pointer;
125
+ }
126
+
127
+ .ds-asset-tile__hit:focus-visible {
128
+ outline: var(--control-border-width) solid var(--color-focus);
129
+ outline-offset: -2px;
130
+ }
131
+
132
+ .ds-asset-tile__hit:disabled {
133
+ cursor: not-allowed;
134
+ }
135
+
136
+ .ds-asset-tile__hit-label {
137
+ position: absolute;
138
+ inline-size: 1px;
139
+ block-size: 1px;
140
+ overflow: hidden;
141
+ clip-path: inset(50%);
142
+ }
143
+
144
+ .ds-asset-tile__text {
145
+ display: flex;
146
+ flex-direction: column;
147
+ gap: var(--space-1);
148
+ min-inline-size: 0;
149
+ }
150
+
151
+ .ds-asset-tile__name {
152
+ font-size: var(--font-size-sm);
153
+ font-weight: var(--font-weight-bold);
154
+ line-height: var(--line-height-body);
155
+ overflow-wrap: anywhere;
156
+ }
157
+
158
+ .ds-asset-tile__meta {
159
+ font-family: var(--font-mono);
160
+ font-size: var(--font-size-xs);
161
+ line-height: var(--line-height-body);
162
+ color: var(--color-text-muted);
163
+ }
164
+
165
+ .ds-asset-empty {
166
+ display: flex;
167
+ flex-direction: column;
168
+ align-items: center;
169
+ gap: var(--space-3);
170
+ padding: var(--space-12) var(--space-6);
171
+ text-align: center;
172
+ color: var(--color-text-muted);
173
+ }
174
+
175
+ .ds-asset-empty__title {
176
+ font-size: var(--font-size-lead);
177
+ font-weight: var(--font-weight-bold);
178
+ color: var(--color-text);
179
+ }
180
+
181
+ .ds-asset-empty__description {
182
+ max-inline-size: 34rem;
183
+ line-height: var(--line-height-body);
184
+ }
185
+
186
+ @media (prefers-reduced-motion: reduce) {
187
+ .ds-asset-tile,
188
+ .ds-asset-tile__thumb img {
189
+ transition: none;
190
+ }
191
+
192
+ .ds-asset-tile__spinner {
193
+ animation: none;
194
+ }
195
+ }
196
+ }
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("react"),t=require("react/jsx-runtime");function n(e){let t=e.trim().split(/\s+/);return((t[0]?.[0]??``)+(t.length>1?t[t.length-1][0]:``)).toUpperCase()}var r=(0,e.forwardRef)(function({name:e,src:r,size:i=24,className:a,...o},s){return(0,t.jsx)(`span`,{ref:s,role:`img`,"aria-label":e,title:e,"data-size":i,className:[`ds-avatar`,a].filter(Boolean).join(` `),...o,children:r?(0,t.jsx)(`img`,{src:r,alt:``}):n(e)})}),i=(0,e.forwardRef)(function({people:e,size:n=24,className:i,...a},o){let s=e.slice(0,3),c=e.length-s.length;return(0,t.jsxs)(`span`,{ref:o,role:`group`,"aria-label":e.map(e=>e.name).join(`, `),className:[`ds-avatar-group`,i].filter(Boolean).join(` `),...a,children:[s.map(e=>(0,t.jsx)(r,{name:e.name,src:e.src,size:n},e.name)),c>0&&(0,t.jsxs)(`span`,{className:`ds-avatar-group__count`,children:[`+`,c]})]})});exports.Avatar=r,exports.AvatarGroup=i;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["forwardRef","react","react_jsx_runtime","initialsOf","words","name","Avatar","rest","size","className","src","AvatarGroup","shown","people","overflow","p","person"],"sources":["../../../src/components/Avatar/index.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes } from \"react\";\nimport \"./style.css\";\n\nexport type AvatarSize = 24 | 32 | 40;\n\nexport interface AvatarProps extends HTMLAttributes<HTMLSpanElement> {\n /** Required — drives the initials and the accessible name. */\n name: string;\n src?: string;\n size?: AvatarSize;\n}\n\nfunction initialsOf(name: string) {\n const words = name.trim().split(/\\s+/);\n const first = words[0]?.[0] ?? \"\";\n const last = words.length > 1 ? words[words.length - 1][0] : \"\";\n return (first + last).toUpperCase();\n}\n\n/**\n * Identifies a person at a glance in a dense surface. An identifier, not a\n * control — never colour-generated, never carrying a status dot.\n */\nexport const Avatar = forwardRef<HTMLSpanElement, AvatarProps>(function Avatar(\n { name, src, size = 24, className, ...rest },\n ref,\n) {\n return (\n <span\n ref={ref}\n role=\"img\"\n aria-label={name}\n title={name}\n data-size={size}\n className={[\"ds-avatar\", className].filter(Boolean).join(\" \")}\n {...rest}\n >\n {src ? <img src={src} alt=\"\" /> : initialsOf(name)}\n </span>\n );\n});\n\nexport interface AvatarGroupProps extends HTMLAttributes<HTMLSpanElement> {\n /** Up to three render; the rest become a `+n` count. */\n people: { name: string; src?: string }[];\n size?: AvatarSize;\n}\n\n/** Overlapping stack of at most three avatars, then a `+n` chip. */\nexport const AvatarGroup = forwardRef<HTMLSpanElement, AvatarGroupProps>(\n function AvatarGroup({ people, size = 24, className, ...rest }, ref) {\n const shown = people.slice(0, 3);\n const overflow = people.length - shown.length;\n return (\n <span\n ref={ref}\n role=\"group\"\n aria-label={people.map((p) => p.name).join(\", \")}\n className={[\"ds-avatar-group\", className].filter(Boolean).join(\" \")}\n {...rest}\n >\n {shown.map((person) => (\n <Avatar key={person.name} name={person.name} src={person.src} size={size} />\n ))}\n {overflow > 0 && <span className=\"ds-avatar-group__count\">+{overflow}</span>}\n </span>\n );\n },\n);\n"],"mappings":"A,yHAYA,SAASG,EAAW,EAAc,CAChC,IAAMC,EAAQC,EAAK,KAAK,CAAC,CAAC,MAAM,KAAK,EAGrC,QAFcD,EAAM,EAAE,GAAG,IAAM,KAClBA,EAAM,OAAS,EAAIA,EAAMA,EAAM,OAAS,EAAE,CAAC,GAAK,IAAA,CACvC,YAAY,CACpC,CAMA,IAAaE,GAAA,EAASN,EAAAA,WAAAA,CAAyC,SAC7D,CAAE,OAAM,MAAK,OAAO,GAAI,YAAW,GAAGO,GACtC,EACA,CACA,OACE,EAAAL,EAAA,IAAA,CAAC,OAAD,CACO,MACL,KAAK,MACL,aAAYG,EACZ,MAAOA,EACP,YAAWG,EACX,UAAW,CAAC,YAAaC,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,EAC5D,GAAIF,EAEH,SAAAG,GAAM,EAAAR,EAAA,IAAA,CAAC,MAAD,CAAU,MAAK,IAAI,EAAI,CAAA,EAAIC,EAAWE,CAAI,CAC7C,CAAA,CAEV,CAAC,EASYM,GAAA,EAAcX,EAAAA,WAAAA,CACzB,SAAqB,CAAE,SAAQ,OAAO,GAAI,YAAW,GAAGO,GAAQ,EAAK,CACnE,IAAMK,EAAQC,EAAO,MAAM,EAAG,CAAC,EACzBC,EAAWD,EAAO,OAASD,EAAM,OACvC,OACE,EAAAV,EAAA,KAAA,CAAC,OAAD,CACO,MACL,KAAK,QACL,aAAYW,EAAO,IAAK,GAAME,EAAE,IAAI,CAAC,CAAC,KAAK,IAAI,EAC/C,UAAW,CAAC,kBAAmBN,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,EAClE,GAAIF,EALN,SAAA,CAOGK,EAAM,IAAK,IACV,EAAAV,EAAA,IAAA,CAACI,EAAD,CAA0B,KAAMU,EAAO,KAAM,IAAKA,EAAO,IAAW,MAAO,EAA9DA,EAAO,IAAuD,CAC5E,EACAF,EAAW,IAAK,EAAAZ,EAAA,KAAA,CAAC,OAAD,CAAM,UAAU,yBAAhB,SAAA,CAAyC,IAAEY,CAAe,CACvE,CAAA,CAAA,C,EAEV,CACF,E"}
@@ -0,0 +1,24 @@
1
+ import { type HTMLAttributes } from "react";
2
+ export type AvatarSize = 24 | 32 | 40;
3
+ export interface AvatarProps extends HTMLAttributes<HTMLSpanElement> {
4
+ /** Required — drives the initials and the accessible name. */
5
+ name: string;
6
+ src?: string;
7
+ size?: AvatarSize;
8
+ }
9
+ /**
10
+ * Identifies a person at a glance in a dense surface. An identifier, not a
11
+ * control — never colour-generated, never carrying a status dot.
12
+ */
13
+ export declare const Avatar: import("react").ForwardRefExoticComponent<AvatarProps & import("react").RefAttributes<HTMLSpanElement>>;
14
+ export interface AvatarGroupProps extends HTMLAttributes<HTMLSpanElement> {
15
+ /** Up to three render; the rest become a `+n` count. */
16
+ people: {
17
+ name: string;
18
+ src?: string;
19
+ }[];
20
+ size?: AvatarSize;
21
+ }
22
+ /** Overlapping stack of at most three avatars, then a `+n` chip. */
23
+ export declare const AvatarGroup: import("react").ForwardRefExoticComponent<AvatarGroupProps & import("react").RefAttributes<HTMLSpanElement>>;
24
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../../src/components/Avatar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AACxD,OAAO,aAAa,CAAC;AAErB,MAAM,MAAM,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAEtC,MAAM,WAAW,WAAY,SAAQ,cAAc,CAAC,eAAe,CAAC;IAClE,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AASD;;;GAGG;AACH,eAAO,MAAM,MAAM,yGAiBjB,CAAC;AAEH,MAAM,WAAW,gBAAiB,SAAQ,cAAc,CAAC,eAAe,CAAC;IACvE,wDAAwD;IACxD,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACzC,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED,oEAAoE;AACpE,eAAO,MAAM,WAAW,8GAmBvB,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { type HTMLAttributes } from "react";
2
+ export type AvatarSize = 24 | 32 | 40;
3
+ export interface AvatarProps extends HTMLAttributes<HTMLSpanElement> {
4
+ /** Required — drives the initials and the accessible name. */
5
+ name: string;
6
+ src?: string;
7
+ size?: AvatarSize;
8
+ }
9
+ /**
10
+ * Identifies a person at a glance in a dense surface. An identifier, not a
11
+ * control — never colour-generated, never carrying a status dot.
12
+ */
13
+ export declare const Avatar: import("react").ForwardRefExoticComponent<AvatarProps & import("react").RefAttributes<HTMLSpanElement>>;
14
+ export interface AvatarGroupProps extends HTMLAttributes<HTMLSpanElement> {
15
+ /** Up to three render; the rest become a `+n` count. */
16
+ people: {
17
+ name: string;
18
+ src?: string;
19
+ }[];
20
+ size?: AvatarSize;
21
+ }
22
+ /** Overlapping stack of at most three avatars, then a `+n` chip. */
23
+ export declare const AvatarGroup: import("react").ForwardRefExoticComponent<AvatarGroupProps & import("react").RefAttributes<HTMLSpanElement>>;
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Avatar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AACxD,OAAO,aAAa,CAAC;AAErB,MAAM,MAAM,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAEtC,MAAM,WAAW,WAAY,SAAQ,cAAc,CAAC,eAAe,CAAC;IAClE,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AASD;;;GAGG;AACH,eAAO,MAAM,MAAM,yGAiBjB,CAAC;AAEH,MAAM,WAAW,gBAAiB,SAAQ,cAAc,CAAC,eAAe,CAAC;IACvE,wDAAwD;IACxD,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACzC,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED,oEAAoE;AACpE,eAAO,MAAM,WAAW,8GAmBvB,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { forwardRef as e } from "react";
2
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
3
+ //#region src/components/Avatar/index.tsx
4
+ function r(e) {
5
+ let t = e.trim().split(/\s+/);
6
+ return ((t[0]?.[0] ?? "") + (t.length > 1 ? t[t.length - 1][0] : "")).toUpperCase();
7
+ }
8
+ var i = e(function({ name: e, src: n, size: i = 24, className: a, ...o }, s) {
9
+ return /* @__PURE__ */ t("span", {
10
+ ref: s,
11
+ role: "img",
12
+ "aria-label": e,
13
+ title: e,
14
+ "data-size": i,
15
+ className: ["ds-avatar", a].filter(Boolean).join(" "),
16
+ ...o,
17
+ children: n ? /* @__PURE__ */ t("img", {
18
+ src: n,
19
+ alt: ""
20
+ }) : r(e)
21
+ });
22
+ }), a = e(function({ people: e, size: r = 24, className: a, ...o }, s) {
23
+ let c = e.slice(0, 3), l = e.length - c.length;
24
+ return /* @__PURE__ */ n("span", {
25
+ ref: s,
26
+ role: "group",
27
+ "aria-label": e.map((e) => e.name).join(", "),
28
+ className: ["ds-avatar-group", a].filter(Boolean).join(" "),
29
+ ...o,
30
+ children: [c.map((e) => /* @__PURE__ */ t(i, {
31
+ name: e.name,
32
+ src: e.src,
33
+ size: r
34
+ }, e.name)), l > 0 && /* @__PURE__ */ n("span", {
35
+ className: "ds-avatar-group__count",
36
+ children: ["+", l]
37
+ })]
38
+ });
39
+ });
40
+ //#endregion
41
+ export { i as Avatar, a as AvatarGroup };
42
+
43
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["initialsOf","words","name","Avatar","forwardRef","rest","size","className","src","AvatarGroup","shown","people","overflow","p","person"],"sources":["../../../src/components/Avatar/index.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes } from \"react\";\nimport \"./style.css\";\n\nexport type AvatarSize = 24 | 32 | 40;\n\nexport interface AvatarProps extends HTMLAttributes<HTMLSpanElement> {\n /** Required — drives the initials and the accessible name. */\n name: string;\n src?: string;\n size?: AvatarSize;\n}\n\nfunction initialsOf(name: string) {\n const words = name.trim().split(/\\s+/);\n const first = words[0]?.[0] ?? \"\";\n const last = words.length > 1 ? words[words.length - 1][0] : \"\";\n return (first + last).toUpperCase();\n}\n\n/**\n * Identifies a person at a glance in a dense surface. An identifier, not a\n * control — never colour-generated, never carrying a status dot.\n */\nexport const Avatar = forwardRef<HTMLSpanElement, AvatarProps>(function Avatar(\n { name, src, size = 24, className, ...rest },\n ref,\n) {\n return (\n <span\n ref={ref}\n role=\"img\"\n aria-label={name}\n title={name}\n data-size={size}\n className={[\"ds-avatar\", className].filter(Boolean).join(\" \")}\n {...rest}\n >\n {src ? <img src={src} alt=\"\" /> : initialsOf(name)}\n </span>\n );\n});\n\nexport interface AvatarGroupProps extends HTMLAttributes<HTMLSpanElement> {\n /** Up to three render; the rest become a `+n` count. */\n people: { name: string; src?: string }[];\n size?: AvatarSize;\n}\n\n/** Overlapping stack of at most three avatars, then a `+n` chip. */\nexport const AvatarGroup = forwardRef<HTMLSpanElement, AvatarGroupProps>(\n function AvatarGroup({ people, size = 24, className, ...rest }, ref) {\n const shown = people.slice(0, 3);\n const overflow = people.length - shown.length;\n return (\n <span\n ref={ref}\n role=\"group\"\n aria-label={people.map((p) => p.name).join(\", \")}\n className={[\"ds-avatar-group\", className].filter(Boolean).join(\" \")}\n {...rest}\n >\n {shown.map((person) => (\n <Avatar key={person.name} name={person.name} src={person.src} size={size} />\n ))}\n {overflow > 0 && <span className=\"ds-avatar-group__count\">+{overflow}</span>}\n </span>\n );\n },\n);\n"],"mappings":";;;AAYA,SAASA,EAAW,GAAc;CAChC,IAAMC,IAAQC,EAAK,KAAK,CAAC,CAAC,MAAM,KAAK;CAGrC,SAFcD,EAAM,EAAE,GAAG,MAAM,OAClBA,EAAM,SAAS,IAAIA,EAAMA,EAAM,SAAS,EAAE,CAAC,KAAK,IAAA,CACvC,YAAY;AACpC;AAMA,IAAaE,IAASC,EAAyC,SAC7D,EAAE,SAAM,QAAK,UAAO,IAAI,cAAW,GAAGC,KACtC,GACA;CACA,OACE,kBAAC,QAAD;EACO;EACL,MAAK;EACL,cAAYH;EACZ,OAAOA;EACP,aAAWI;EACX,WAAW,CAAC,aAAaC,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;EAC5D,GAAIF;EAEH,UAAAG,IAAM,kBAAC,OAAD;GAAU;GAAK,KAAI;EAAI,CAAA,IAAIR,EAAWE,CAAI;CAC7C,CAAA;AAEV,CAAC,GASYO,IAAcL,EACzB,SAAqB,EAAE,WAAQ,UAAO,IAAI,cAAW,GAAGC,KAAQ,GAAK;CACnE,IAAMK,IAAQC,EAAO,MAAM,GAAG,CAAC,GACzBC,IAAWD,EAAO,SAASD,EAAM;CACvC,OACE,kBAAC,QAAD;EACO;EACL,MAAK;EACL,cAAYC,EAAO,KAAK,MAAME,EAAE,IAAI,CAAC,CAAC,KAAK,IAAI;EAC/C,WAAW,CAAC,mBAAmBN,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;EAClE,GAAIF;EALN,UAAA,CAOGK,EAAM,KAAK,MACV,kBAACP,GAAD;GAA0B,MAAMW,EAAO;GAAM,KAAKA,EAAO;GAAW;EAAO,GAA9DA,EAAO,IAAuD,CAC5E,GACAF,IAAW,KAAK,kBAAC,QAAD;GAAM,WAAU;GAAhB,UAAA,CAAyC,KAAEA,CAAe;EACvE,CAAA,CAAA;;AAEV,CACF"}
@@ -0,0 +1,70 @@
1
+ @layer components {
2
+ .ds-avatar {
3
+ display: inline-flex;
4
+ align-items: center;
5
+ justify-content: center;
6
+ overflow: hidden;
7
+ border: var(--control-border-width) solid var(--control-border-color);
8
+ border-radius: var(--radius-pill);
9
+ background: var(--color-surface-subtle);
10
+ color: var(--color-text);
11
+ font-weight: var(--font-weight-bold);
12
+ line-height: 1;
13
+ user-select: none;
14
+ }
15
+
16
+ .ds-avatar img {
17
+ inline-size: 100%;
18
+ block-size: 100%;
19
+ object-fit: cover;
20
+ }
21
+
22
+ .ds-avatar[data-size="24"] {
23
+ inline-size: var(--icon-lg);
24
+ block-size: var(--icon-lg);
25
+ font-size: 10px;
26
+ }
27
+
28
+ .ds-avatar[data-size="32"] {
29
+ inline-size: var(--space-8);
30
+ block-size: var(--space-8);
31
+ font-size: var(--field-font-size-sm);
32
+ }
33
+
34
+ .ds-avatar[data-size="40"] {
35
+ inline-size: var(--space-10);
36
+ block-size: var(--space-10);
37
+ font-size: var(--font-size-md);
38
+ }
39
+
40
+ .ds-avatar-group {
41
+ display: inline-flex;
42
+ align-items: center;
43
+ }
44
+
45
+ .ds-avatar-group .ds-avatar + .ds-avatar {
46
+ margin-inline-start: calc(-1 * var(--space-2));
47
+ }
48
+
49
+ .ds-avatar-group .ds-avatar:nth-child(1) {
50
+ z-index: 3;
51
+ }
52
+
53
+ .ds-avatar-group .ds-avatar:nth-child(2) {
54
+ z-index: 2;
55
+ }
56
+
57
+ .ds-avatar-group .ds-avatar:nth-child(3) {
58
+ z-index: 1;
59
+ }
60
+
61
+ .ds-avatar-group__count {
62
+ margin-inline-start: var(--space-2);
63
+ padding: 2px var(--space-2);
64
+ border: var(--badge-border-width) solid var(--color-text-muted);
65
+ border-radius: var(--radius-pill);
66
+ color: var(--color-text-muted);
67
+ font-size: var(--font-size-xs);
68
+ font-weight: var(--font-weight-bold);
69
+ }
70
+ }
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("react"),t=require("react/jsx-runtime");var n=(0,e.forwardRef)(function({shape:e=`tag`,tone:n,appearance:r=`outline`,className:i,children:a,...o},s){if(e===`count`){let e=Number(a);if(!Number.isNaN(e)){if(e===0)return null;a=e>99?`99+`:String(e)}}return(0,t.jsxs)(`span`,{ref:s,"data-shape":e,"data-appearance":r,"data-tone":e===`status`?n:void 0,className:[`ds-badge`,i].filter(Boolean).join(` `),...o,children:[e===`status`&&(0,t.jsx)(`span`,{className:`ds-badge__dot`,"aria-hidden":`true`}),a]})});exports.Badge=n;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["forwardRef","react","react_jsx_runtime","Badge","rest","shape","value","children","appearance","tone","className"],"sources":["../../../src/components/Badge/index.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport \"./style.css\";\n\nexport type BadgeShape = \"status\" | \"tag\" | \"count\";\n\n/**\n * How much ink the badge spends.\n * - `outline` — the tone as a 2px stroke on the surface. The quiet default.\n * - `soft` — the tone's soft fill behind tone-coloured text. For dense tables.\n * - `solid` — the tone as a full fill. Reserve it for the one state a row is\n * really about; a table of solid badges reads as noise.\n */\nexport type BadgeAppearance = \"outline\" | \"soft\" | \"solid\";\n\n/** Six publication states, and no seventh without a decision record. */\nexport type StatusTone =\n | \"draft\"\n | \"scheduled\"\n | \"published\"\n | \"changed\"\n | \"unpublished\"\n | \"archived\";\n\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\n shape?: BadgeShape;\n /** Required on `status`, forbidden on `tag` and `count`. */\n tone?: StatusTone;\n appearance?: BadgeAppearance;\n children?: ReactNode;\n}\n\n/**\n * A small, non-interactive label attached to something else. Never a button,\n * never a filter. Status tones are reserved for publication state.\n */\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\n { shape = \"tag\", tone, appearance = \"outline\", className, children, ...rest },\n ref,\n) {\n if (shape === \"count\") {\n const value = Number(children);\n if (!Number.isNaN(value)) {\n if (value === 0) return null;\n children = value > 99 ? \"99+\" : String(value);\n }\n }\n\n return (\n <span\n ref={ref}\n data-shape={shape}\n data-appearance={appearance}\n data-tone={shape === \"status\" ? tone : undefined}\n className={[\"ds-badge\", className].filter(Boolean).join(\" \")}\n {...rest}\n >\n {shape === \"status\" && <span className=\"ds-badge__dot\" aria-hidden=\"true\" />}\n {children}\n </span>\n );\n});\n"],"mappings":"A,yHAmCA,IAAaG,GAAA,EAAQH,EAAAA,WAAAA,CAAwC,SAC3D,CAAE,QAAQ,MAAO,OAAM,aAAa,UAAW,YAAW,WAAU,GAAGI,GACvE,EACA,CACA,GAAIC,IAAU,QAAS,CACrB,IAAMC,EAAQ,OAAOC,CAAQ,EAC7B,GAAI,CAAC,OAAO,MAAMD,CAAK,EAAG,CACxB,GAAIA,IAAU,EAAG,OAAO,KACxB,EAAWA,EAAQ,GAAK,MAAQ,OAAOA,CAAK,CAC9C,CACF,CAEA,OACE,EAAAJ,EAAA,KAAA,CAAC,OAAD,CACO,MACL,aAAYG,EACZ,kBAAiBG,EACjB,YAAWH,IAAU,SAAWI,EAAO,IAAA,GACvC,UAAW,CAAC,WAAYC,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,EAC3D,GAAIN,EANN,SAAA,CAQGC,IAAU,WAAY,EAAAH,EAAA,IAAA,CAAC,OAAD,CAAM,UAAU,gBAAgB,cAAY,MAAQ,CAAA,EAC1EK,CACG,C,EAEV,CAAC,E"}
@@ -0,0 +1,25 @@
1
+ import { type HTMLAttributes, type ReactNode } from "react";
2
+ export type BadgeShape = "status" | "tag" | "count";
3
+ /**
4
+ * How much ink the badge spends.
5
+ * - `outline` — the tone as a 2px stroke on the surface. The quiet default.
6
+ * - `soft` — the tone's soft fill behind tone-coloured text. For dense tables.
7
+ * - `solid` — the tone as a full fill. Reserve it for the one state a row is
8
+ * really about; a table of solid badges reads as noise.
9
+ */
10
+ export type BadgeAppearance = "outline" | "soft" | "solid";
11
+ /** Six publication states, and no seventh without a decision record. */
12
+ export type StatusTone = "draft" | "scheduled" | "published" | "changed" | "unpublished" | "archived";
13
+ export interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {
14
+ shape?: BadgeShape;
15
+ /** Required on `status`, forbidden on `tag` and `count`. */
16
+ tone?: StatusTone;
17
+ appearance?: BadgeAppearance;
18
+ children?: ReactNode;
19
+ }
20
+ /**
21
+ * A small, non-interactive label attached to something else. Never a button,
22
+ * never a filter. Status tones are reserved for publication state.
23
+ */
24
+ export declare const Badge: import("react").ForwardRefExoticComponent<BadgeProps & import("react").RefAttributes<HTMLSpanElement>>;
25
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../../src/components/Badge/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACxE,OAAO,aAAa,CAAC;AAErB,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,wEAAwE;AACxE,MAAM,MAAM,UAAU,GAClB,OAAO,GACP,WAAW,GACX,WAAW,GACX,SAAS,GACT,aAAa,GACb,UAAU,CAAC;AAEf,MAAM,WAAW,UAAW,SAAQ,cAAc,CAAC,eAAe,CAAC;IACjE,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;GAGG;AACH,eAAO,MAAM,KAAK,wGAyBhB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { type HTMLAttributes, type ReactNode } from "react";
2
+ export type BadgeShape = "status" | "tag" | "count";
3
+ /**
4
+ * How much ink the badge spends.
5
+ * - `outline` — the tone as a 2px stroke on the surface. The quiet default.
6
+ * - `soft` — the tone's soft fill behind tone-coloured text. For dense tables.
7
+ * - `solid` — the tone as a full fill. Reserve it for the one state a row is
8
+ * really about; a table of solid badges reads as noise.
9
+ */
10
+ export type BadgeAppearance = "outline" | "soft" | "solid";
11
+ /** Six publication states, and no seventh without a decision record. */
12
+ export type StatusTone = "draft" | "scheduled" | "published" | "changed" | "unpublished" | "archived";
13
+ export interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {
14
+ shape?: BadgeShape;
15
+ /** Required on `status`, forbidden on `tag` and `count`. */
16
+ tone?: StatusTone;
17
+ appearance?: BadgeAppearance;
18
+ children?: ReactNode;
19
+ }
20
+ /**
21
+ * A small, non-interactive label attached to something else. Never a button,
22
+ * never a filter. Status tones are reserved for publication state.
23
+ */
24
+ export declare const Badge: import("react").ForwardRefExoticComponent<BadgeProps & import("react").RefAttributes<HTMLSpanElement>>;
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Badge/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACxE,OAAO,aAAa,CAAC;AAErB,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,wEAAwE;AACxE,MAAM,MAAM,UAAU,GAClB,OAAO,GACP,WAAW,GACX,WAAW,GACX,SAAS,GACT,aAAa,GACb,UAAU,CAAC;AAEf,MAAM,WAAW,UAAW,SAAQ,cAAc,CAAC,eAAe,CAAC;IACjE,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;GAGG;AACH,eAAO,MAAM,KAAK,wGAyBhB,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { forwardRef as e } from "react";
2
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
3
+ //#region src/components/Badge/index.tsx
4
+ var r = e(function({ shape: e = "tag", tone: r, appearance: i = "outline", className: a, children: o, ...s }, c) {
5
+ if (e === "count") {
6
+ let e = Number(o);
7
+ if (!Number.isNaN(e)) {
8
+ if (e === 0) return null;
9
+ o = e > 99 ? "99+" : String(e);
10
+ }
11
+ }
12
+ return /* @__PURE__ */ n("span", {
13
+ ref: c,
14
+ "data-shape": e,
15
+ "data-appearance": i,
16
+ "data-tone": e === "status" ? r : void 0,
17
+ className: ["ds-badge", a].filter(Boolean).join(" "),
18
+ ...s,
19
+ children: [e === "status" && /* @__PURE__ */ t("span", {
20
+ className: "ds-badge__dot",
21
+ "aria-hidden": "true"
22
+ }), o]
23
+ });
24
+ });
25
+ //#endregion
26
+ export { r as Badge };
27
+
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["Badge","forwardRef","rest","shape","value","children","appearance","tone","className"],"sources":["../../../src/components/Badge/index.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport \"./style.css\";\n\nexport type BadgeShape = \"status\" | \"tag\" | \"count\";\n\n/**\n * How much ink the badge spends.\n * - `outline` — the tone as a 2px stroke on the surface. The quiet default.\n * - `soft` — the tone's soft fill behind tone-coloured text. For dense tables.\n * - `solid` — the tone as a full fill. Reserve it for the one state a row is\n * really about; a table of solid badges reads as noise.\n */\nexport type BadgeAppearance = \"outline\" | \"soft\" | \"solid\";\n\n/** Six publication states, and no seventh without a decision record. */\nexport type StatusTone =\n | \"draft\"\n | \"scheduled\"\n | \"published\"\n | \"changed\"\n | \"unpublished\"\n | \"archived\";\n\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\n shape?: BadgeShape;\n /** Required on `status`, forbidden on `tag` and `count`. */\n tone?: StatusTone;\n appearance?: BadgeAppearance;\n children?: ReactNode;\n}\n\n/**\n * A small, non-interactive label attached to something else. Never a button,\n * never a filter. Status tones are reserved for publication state.\n */\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\n { shape = \"tag\", tone, appearance = \"outline\", className, children, ...rest },\n ref,\n) {\n if (shape === \"count\") {\n const value = Number(children);\n if (!Number.isNaN(value)) {\n if (value === 0) return null;\n children = value > 99 ? \"99+\" : String(value);\n }\n }\n\n return (\n <span\n ref={ref}\n data-shape={shape}\n data-appearance={appearance}\n data-tone={shape === \"status\" ? tone : undefined}\n className={[\"ds-badge\", className].filter(Boolean).join(\" \")}\n {...rest}\n >\n {shape === \"status\" && <span className=\"ds-badge__dot\" aria-hidden=\"true\" />}\n {children}\n </span>\n );\n});\n"],"mappings":";;;AAmCA,IAAaA,IAAQC,EAAwC,SAC3D,EAAE,WAAQ,OAAO,SAAM,gBAAa,WAAW,cAAW,aAAU,GAAGC,KACvE,GACA;CACA,IAAIC,MAAU,SAAS;EACrB,IAAMC,IAAQ,OAAOC,CAAQ;EAC7B,IAAI,CAAC,OAAO,MAAMD,CAAK,GAAG;GACxB,IAAIA,MAAU,GAAG,OAAO;GACxB,IAAWA,IAAQ,KAAK,QAAQ,OAAOA,CAAK;EAC9C;CACF;CAEA,OACE,kBAAC,QAAD;EACO;EACL,cAAYD;EACZ,mBAAiBG;EACjB,aAAWH,MAAU,WAAWI,IAAO,KAAA;EACvC,WAAW,CAAC,YAAYC,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;EAC3D,GAAIN;EANN,UAAA,CAQGC,MAAU,YAAY,kBAAC,QAAD;GAAM,WAAU;GAAgB,eAAY;EAAQ,CAAA,GAC1EE,CACG;;AAEV,CAAC"}
@@ -0,0 +1,103 @@
1
+ @layer components {
2
+ .ds-badge {
3
+ /* Three inks per badge: the stroke/text tone, the soft fill it sits on,
4
+ * and the solid pair. A tone sets all four; appearance picks which two
5
+ * are used. Nothing else in the component knows a colour. */
6
+ --badge-ink: var(--color-text-muted);
7
+ --badge-soft: var(--color-surface-subtle);
8
+ --badge-solid: var(--color-text);
9
+ --badge-on-solid: var(--color-surface);
10
+
11
+ display: inline-flex;
12
+ align-items: center;
13
+ gap: var(--space-2);
14
+ padding: 2px var(--space-2);
15
+ border: var(--badge-border-width) solid transparent;
16
+ border-radius: var(--radius-pill);
17
+ font-size: var(--font-size-xs);
18
+ font-weight: var(--font-weight-bold);
19
+ line-height: var(--line-height-tight);
20
+ white-space: nowrap;
21
+ }
22
+
23
+ .ds-badge[data-shape="status"] {
24
+ padding: 2px 10px;
25
+ }
26
+
27
+ /* A count reads as one glyph: never narrower than it is tall. */
28
+ .ds-badge[data-shape="count"] {
29
+ justify-content: center;
30
+ min-inline-size: var(--space-6);
31
+ padding-inline: var(--space-2);
32
+ font-variant-numeric: tabular-nums;
33
+ }
34
+
35
+ /* ── Appearances ─────────────────────────────────────────────────────── */
36
+ .ds-badge[data-appearance="outline"] {
37
+ background: transparent;
38
+ border-color: var(--badge-ink);
39
+ color: var(--badge-ink);
40
+ }
41
+
42
+ .ds-badge[data-appearance="soft"] {
43
+ background: var(--badge-soft);
44
+ border-color: color-mix(in srgb, var(--badge-ink) 30%, transparent);
45
+ color: var(--badge-ink);
46
+ }
47
+
48
+ .ds-badge[data-appearance="solid"] {
49
+ background: var(--badge-solid);
50
+ border-color: var(--badge-solid);
51
+ color: var(--badge-on-solid);
52
+ }
53
+
54
+ .ds-badge__dot {
55
+ inline-size: var(--space-2);
56
+ block-size: var(--space-2);
57
+ border-radius: var(--radius-pill);
58
+ background: currentColor;
59
+ }
60
+
61
+ /* ── Publication tones ───────────────────────────────────────────────── */
62
+ .ds-badge[data-tone="draft"] {
63
+ --badge-ink: var(--status-draft-text);
64
+ --badge-soft: var(--status-draft-soft);
65
+ --badge-solid: var(--color-text-muted);
66
+ --badge-on-solid: var(--color-surface);
67
+ }
68
+
69
+ .ds-badge[data-tone="scheduled"] {
70
+ --badge-ink: var(--status-scheduled);
71
+ --badge-soft: var(--status-scheduled-soft);
72
+ --badge-solid: var(--color-primary);
73
+ --badge-on-solid: var(--color-text-on-solid);
74
+ }
75
+
76
+ .ds-badge[data-tone="published"] {
77
+ --badge-ink: var(--status-published);
78
+ --badge-soft: var(--status-published-soft);
79
+ --badge-solid: var(--color-success);
80
+ --badge-on-solid: var(--color-text-on-solid);
81
+ }
82
+
83
+ .ds-badge[data-tone="changed"] {
84
+ --badge-ink: var(--status-changed);
85
+ --badge-soft: var(--status-changed-soft);
86
+ --badge-solid: var(--color-warning);
87
+ --badge-on-solid: var(--color-text-on-solid);
88
+ }
89
+
90
+ .ds-badge[data-tone="unpublished"] {
91
+ --badge-ink: var(--status-unpublished);
92
+ --badge-soft: var(--status-unpublished-soft);
93
+ --badge-solid: var(--color-danger);
94
+ --badge-on-solid: var(--color-text-on-solid);
95
+ }
96
+
97
+ .ds-badge[data-tone="archived"] {
98
+ --badge-ink: var(--status-archived-text);
99
+ --badge-soft: var(--color-surface-subtle);
100
+ --badge-solid: var(--color-border-strong);
101
+ --badge-on-solid: var(--color-text);
102
+ }
103
+ }
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../chunks/Icon-CWsA1W83.cjs");let t=require("react"),n=require("react/jsx-runtime"),r=require("@dnd-kit/core"),i=require("@dnd-kit/sortable"),a=require("@dnd-kit/utilities");var o=(e,t)=>{let{currentCoordinates:n,context:r}=t;if(e.code===`ArrowLeft`||e.code===`ArrowRight`){let t=r.droppableContainers.getEnabled().filter(e=>e.data.current?.type===`column-body`).sort((e,t)=>(e.rect.current?.left??0)-(t.rect.current?.left??0)),i=r.active?.rect.current.translated;if(!i)return;let a=t[t.findIndex(e=>(e.rect.current?.left??0)<=i.left+1&&(e.rect.current?.right??0)>=i.left-1)+(e.code===`ArrowRight`?1:-1)]?.rect.current;return a?(e.preventDefault(),{x:a.left+a.width/2-i.width/2,y:n.y}):void 0}return(0,i.sortableKeyboardCoordinates)(e,t)},s=e=>{let t=e.active.data.current?.type===`column`,n=e.droppableContainers.filter(e=>{let n=e.data.current?.type;return t?n===`column`:n!==`column`}),i={...e,droppableContainers:n};if(t)return(0,r.closestCorners)(i);let a=(0,r.pointerWithin)(i);if(a.length>0){let e=e=>n.find(t=>t.id===e)?.data.current?.type===`card`?0:1;return[...a].sort((t,n)=>e(t.id)-e(n.id))}return(0,r.closestCorners)(i)},c=(0,t.createContext)({activeId:null,activeType:null,overColumnId:null}),l=(0,t.forwardRef)(function({columnIds:a,onMove:l,onColumnMove:u,renderDragOverlay:d,renderColumnDragOverlay:f,className:p,children:m,...h},g){let _=(0,t.useId)(),[v,y]=(0,t.useState)(null),[b,x]=(0,t.useState)(null),[S,C]=(0,t.useState)(null),w=(0,r.useSensors)((0,r.useSensor)(r.PointerSensor,{activationConstraint:{distance:4}}),(0,r.useSensor)(r.KeyboardSensor,{coordinateGetter:o})),T=(0,t.useCallback)(e=>{y(String(e.active.id)),x(e.active.data.current?.type===`column`?`column`:`card`)},[]),E=(0,t.useCallback)(e=>{let t=e.over;if(!t){C(null);return}let n=t.data.current??{},r=n.type===`column`?String(t.id):String(n.columnId??``);C(r||null)},[]),D=(0,t.useCallback)(()=>{y(null),x(null),C(null)},[]),O=(0,t.useCallback)(e=>{let{active:t,over:n}=e;if(D(),!n)return;let r=t.data.current??{},i=n.data.current??{};if(r.type===`column`){let e=a??[],r=i.type===`column`?String(n.id):String(i.columnId??``),o=e.indexOf(r);if(o<0||r===String(t.id))return;u?.({columnId:String(t.id),toIndex:o});return}let o=String(r.columnId??``),s=``,c=0;i.type===`card`?(s=String(i.columnId??``),c=i.sortable?.index??0):(s=String(i.columnId??n.id),c=(i.items??[]).length),s&&(o!==s||String(t.id)!==String(n.id))&&l?.({cardId:String(t.id),fromColumnId:o,toColumnId:s,toIndex:c})},[a,u,l,D]),k=(0,t.useMemo)(()=>({activeId:v,activeType:b,overColumnId:S}),[v,b,S]),A=(0,n.jsx)(`div`,{ref:g,className:[`ds-board`,p].filter(Boolean).join(` `),...h,children:m});return(0,n.jsx)(c.Provider,{value:k,children:(0,n.jsxs)(r.DndContext,{id:`ds-board-${_}`,sensors:w,collisionDetection:s,measuring:{droppable:{strategy:r.MeasuringStrategy.Always}},onDragStart:T,onDragOver:E,onDragEnd:O,onDragCancel:D,children:[a?(0,n.jsx)(i.SortableContext,{items:a,strategy:i.horizontalListSortingStrategy,children:A}):A,(0,n.jsxs)(r.DragOverlay,{children:[v&&b===`card`?(0,n.jsxs)(`div`,{className:`ds-board-card`,"data-overlay":!0,children:[(0,n.jsx)(`span`,{className:`ds-board-card__handle`,"aria-hidden":`true`,children:(0,n.jsx)(e.t,{name:`grip-vertical`})}),(0,n.jsx)(`div`,{className:`ds-board-card__content`,children:d?.(v)})]}):null,v&&b===`column`?(0,n.jsx)(`div`,{className:`ds-board-column`,"data-overlay":!0,children:f?.(v)}):null]})]})})}),u=(0,t.forwardRef)(function({id:o,title:s,itemIds:l,count:u,action:d,isDraggable:f=!0,className:p,children:m,...h},g){let{activeType:_,overColumnId:v}=(0,t.useContext)(c),{setNodeRef:y}=(0,r.useDroppable)({id:`${o}::body`,data:{type:`column-body`,columnId:o,items:l}}),{attributes:b,listeners:x,setNodeRef:S,transform:C,transition:w,isDragging:T}=(0,i.useSortable)({id:o,disabled:!f,data:{type:`column`,columnId:o,items:l}});return(0,n.jsxs)(`section`,{ref:e=>{S(e),typeof g==`function`?g(e):g&&(g.current=e)},style:{transform:a.CSS.Translate.toString(C),transition:w},className:[`ds-board-column`,p].filter(Boolean).join(` `),"data-over":_===`card`&&v===o||void 0,"data-dragging":T||void 0,"aria-label":s,...h,children:[f&&(0,n.jsx)(`button`,{type:`button`,className:`ds-board-column__grip`,"aria-label":`Reorder ${s}`,...b,...x,children:(0,n.jsx)(e.t,{name:`grip-horizontal`})}),(0,n.jsxs)(`header`,{className:`ds-board-column__head`,children:[(0,n.jsx)(`span`,{className:`ds-board-column__title`,children:s}),(0,n.jsx)(`span`,{className:`ds-board-column__count`,children:u??l.length}),d&&(0,n.jsx)(`span`,{className:`ds-board-column__action`,children:d})]}),(0,n.jsx)(`div`,{ref:y,className:`ds-board-column__body`,children:(0,n.jsx)(i.SortableContext,{items:l,strategy:i.verticalListSortingStrategy,children:m})})]})}),d=(0,t.forwardRef)(function({id:r,columnId:o,label:s,className:l,children:u,...d},f){let{attributes:p,listeners:m,setNodeRef:h,transform:g,transition:_,isDragging:v}=(0,i.useSortable)({id:r,data:{type:`card`,columnId:o}}),{activeId:y}=(0,t.useContext)(c);return(0,n.jsxs)(`div`,{ref:e=>{h(e),typeof f==`function`?f(e):f&&(f.current=e)},style:{transform:a.CSS.Translate.toString(g),transition:_},className:[`ds-board-card`,l].filter(Boolean).join(` `),"data-dragging":v||void 0,"data-idle":y&&y!==r?``:void 0,...d,children:[(0,n.jsx)(`button`,{type:`button`,className:`ds-board-card__handle`,"aria-label":s?`Move ${s}`:`Move card`,...p,...m,children:(0,n.jsx)(e.t,{name:`grip-vertical`})}),(0,n.jsx)(`div`,{className:`ds-board-card__content`,children:u})]})});exports.Board=l,exports.BoardCard=d,exports.BoardColumn=u;
2
+ //# sourceMappingURL=index.cjs.map