@namroodinc/liquid-editorial 0.0.0-stage → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (375) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +128 -2
  3. package/dist/chunks/EntryEditor-BF808OZR.js +181 -0
  4. package/dist/chunks/EntryEditor-BF808OZR.js.map +1 -0
  5. package/dist/chunks/EntryEditor-cjDk4vdH.cjs +2 -0
  6. package/dist/chunks/EntryEditor-cjDk4vdH.cjs.map +1 -0
  7. package/dist/chunks/Icon-CGY1FNXT.js +77 -0
  8. package/dist/chunks/Icon-CGY1FNXT.js.map +1 -0
  9. package/dist/chunks/Icon-CWsA1W83.cjs +2 -0
  10. package/dist/chunks/Icon-CWsA1W83.cjs.map +1 -0
  11. package/dist/chunks/RichTextEditor-DRt-kibg.js +248 -0
  12. package/dist/chunks/RichTextEditor-DRt-kibg.js.map +1 -0
  13. package/dist/chunks/RichTextEditor-tFkISOvq.cjs +2 -0
  14. package/dist/chunks/RichTextEditor-tFkISOvq.cjs.map +1 -0
  15. package/dist/components/AssetGrid/index.cjs +2 -0
  16. package/dist/components/AssetGrid/index.cjs.map +1 -0
  17. package/dist/components/AssetGrid/index.d.cts +54 -0
  18. package/dist/components/AssetGrid/index.d.cts.map +1 -0
  19. package/dist/components/AssetGrid/index.d.ts +54 -0
  20. package/dist/components/AssetGrid/index.d.ts.map +1 -0
  21. package/dist/components/AssetGrid/index.js +137 -0
  22. package/dist/components/AssetGrid/index.js.map +1 -0
  23. package/dist/components/AssetGrid/style.css +196 -0
  24. package/dist/components/Avatar/index.cjs +2 -0
  25. package/dist/components/Avatar/index.cjs.map +1 -0
  26. package/dist/components/Avatar/index.d.cts +24 -0
  27. package/dist/components/Avatar/index.d.cts.map +1 -0
  28. package/dist/components/Avatar/index.d.ts +24 -0
  29. package/dist/components/Avatar/index.d.ts.map +1 -0
  30. package/dist/components/Avatar/index.js +43 -0
  31. package/dist/components/Avatar/index.js.map +1 -0
  32. package/dist/components/Avatar/style.css +70 -0
  33. package/dist/components/Badge/index.cjs +2 -0
  34. package/dist/components/Badge/index.cjs.map +1 -0
  35. package/dist/components/Badge/index.d.cts +25 -0
  36. package/dist/components/Badge/index.d.cts.map +1 -0
  37. package/dist/components/Badge/index.d.ts +25 -0
  38. package/dist/components/Badge/index.d.ts.map +1 -0
  39. package/dist/components/Badge/index.js +28 -0
  40. package/dist/components/Badge/index.js.map +1 -0
  41. package/dist/components/Badge/style.css +103 -0
  42. package/dist/components/Board/index.cjs +2 -0
  43. package/dist/components/Board/index.cjs.map +1 -0
  44. package/dist/components/Board/index.d.cts +62 -0
  45. package/dist/components/Board/index.d.cts.map +1 -0
  46. package/dist/components/Board/index.d.ts +62 -0
  47. package/dist/components/Board/index.d.ts.map +1 -0
  48. package/dist/components/Board/index.js +227 -0
  49. package/dist/components/Board/index.js.map +1 -0
  50. package/dist/components/Board/style.css +145 -0
  51. package/dist/components/Button/index.cjs +2 -0
  52. package/dist/components/Button/index.cjs.map +1 -0
  53. package/dist/components/Button/index.d.cts +22 -0
  54. package/dist/components/Button/index.d.cts.map +1 -0
  55. package/dist/components/Button/index.d.ts +22 -0
  56. package/dist/components/Button/index.d.ts.map +1 -0
  57. package/dist/components/Button/index.js +37 -0
  58. package/dist/components/Button/index.js.map +1 -0
  59. package/dist/components/Button/style.css +139 -0
  60. package/dist/components/ButtonGroup/index.cjs +2 -0
  61. package/dist/components/ButtonGroup/index.cjs.map +1 -0
  62. package/dist/components/ButtonGroup/index.d.cts +17 -0
  63. package/dist/components/ButtonGroup/index.d.cts.map +1 -0
  64. package/dist/components/ButtonGroup/index.d.ts +17 -0
  65. package/dist/components/ButtonGroup/index.d.ts.map +1 -0
  66. package/dist/components/ButtonGroup/index.js +18 -0
  67. package/dist/components/ButtonGroup/index.js.map +1 -0
  68. package/dist/components/ButtonGroup/style.css +66 -0
  69. package/dist/components/Choice/index.cjs +2 -0
  70. package/dist/components/Choice/index.cjs.map +1 -0
  71. package/dist/components/Choice/index.d.cts +25 -0
  72. package/dist/components/Choice/index.d.cts.map +1 -0
  73. package/dist/components/Choice/index.d.ts +25 -0
  74. package/dist/components/Choice/index.d.ts.map +1 -0
  75. package/dist/components/Choice/index.js +58 -0
  76. package/dist/components/Choice/index.js.map +1 -0
  77. package/dist/components/Choice/style.css +96 -0
  78. package/dist/components/Container/index.cjs +2 -0
  79. package/dist/components/Container/index.cjs.map +1 -0
  80. package/dist/components/Container/index.d.cts +19 -0
  81. package/dist/components/Container/index.d.cts.map +1 -0
  82. package/dist/components/Container/index.d.ts +19 -0
  83. package/dist/components/Container/index.d.ts.map +1 -0
  84. package/dist/components/Container/index.js +20 -0
  85. package/dist/components/Container/index.js.map +1 -0
  86. package/dist/components/Container/style.css +41 -0
  87. package/dist/components/DatePicker/index.cjs +2 -0
  88. package/dist/components/DatePicker/index.cjs.map +1 -0
  89. package/dist/components/DatePicker/index.d.cts +57 -0
  90. package/dist/components/DatePicker/index.d.cts.map +1 -0
  91. package/dist/components/DatePicker/index.d.ts +57 -0
  92. package/dist/components/DatePicker/index.d.ts.map +1 -0
  93. package/dist/components/DatePicker/index.js +248 -0
  94. package/dist/components/DatePicker/index.js.map +1 -0
  95. package/dist/components/DatePicker/style.css +149 -0
  96. package/dist/components/Drawer/index.cjs +2 -0
  97. package/dist/components/Drawer/index.cjs.map +1 -0
  98. package/dist/components/Drawer/index.d.cts +23 -0
  99. package/dist/components/Drawer/index.d.cts.map +1 -0
  100. package/dist/components/Drawer/index.d.ts +23 -0
  101. package/dist/components/Drawer/index.d.ts.map +1 -0
  102. package/dist/components/Drawer/index.js +85 -0
  103. package/dist/components/Drawer/index.js.map +1 -0
  104. package/dist/components/Drawer/style.css +147 -0
  105. package/dist/components/EntryEditor/index.cjs +1 -0
  106. package/dist/components/EntryEditor/index.d.cts +21 -0
  107. package/dist/components/EntryEditor/index.d.cts.map +1 -0
  108. package/dist/components/EntryEditor/index.d.ts +21 -0
  109. package/dist/components/EntryEditor/index.d.ts.map +1 -0
  110. package/dist/components/EntryEditor/index.js +6 -0
  111. package/dist/components/EntryEditor/model.d.cts +33 -0
  112. package/dist/components/EntryEditor/model.d.cts.map +1 -0
  113. package/dist/components/EntryEditor/model.d.ts +33 -0
  114. package/dist/components/EntryEditor/model.d.ts.map +1 -0
  115. package/dist/components/EntryEditor/style.css +8 -0
  116. package/dist/components/EntryPicker/index.cjs +2 -0
  117. package/dist/components/EntryPicker/index.cjs.map +1 -0
  118. package/dist/components/EntryPicker/index.d.cts +36 -0
  119. package/dist/components/EntryPicker/index.d.cts.map +1 -0
  120. package/dist/components/EntryPicker/index.d.ts +36 -0
  121. package/dist/components/EntryPicker/index.d.ts.map +1 -0
  122. package/dist/components/EntryPicker/index.js +181 -0
  123. package/dist/components/EntryPicker/index.js.map +1 -0
  124. package/dist/components/EntryPicker/style.css +162 -0
  125. package/dist/components/Field/index.cjs +2 -0
  126. package/dist/components/Field/index.cjs.map +1 -0
  127. package/dist/components/Field/index.d.cts +22 -0
  128. package/dist/components/Field/index.d.cts.map +1 -0
  129. package/dist/components/Field/index.d.ts +22 -0
  130. package/dist/components/Field/index.d.ts.map +1 -0
  131. package/dist/components/Field/index.js +47 -0
  132. package/dist/components/Field/index.js.map +1 -0
  133. package/dist/components/Field/style.css +112 -0
  134. package/dist/components/FieldAffix/index.cjs +2 -0
  135. package/dist/components/FieldAffix/index.cjs.map +1 -0
  136. package/dist/components/FieldAffix/index.d.cts +19 -0
  137. package/dist/components/FieldAffix/index.d.cts.map +1 -0
  138. package/dist/components/FieldAffix/index.d.ts +19 -0
  139. package/dist/components/FieldAffix/index.d.ts.map +1 -0
  140. package/dist/components/FieldAffix/index.js +45 -0
  141. package/dist/components/FieldAffix/index.js.map +1 -0
  142. package/dist/components/FieldAffix/style.css +54 -0
  143. package/dist/components/Grid/index.cjs +2 -0
  144. package/dist/components/Grid/index.cjs.map +1 -0
  145. package/dist/components/Grid/index.d.cts +44 -0
  146. package/dist/components/Grid/index.d.cts.map +1 -0
  147. package/dist/components/Grid/index.d.ts +44 -0
  148. package/dist/components/Grid/index.d.ts.map +1 -0
  149. package/dist/components/Grid/index.js +49 -0
  150. package/dist/components/Grid/index.js.map +1 -0
  151. package/dist/components/Grid/style.css +226 -0
  152. package/dist/components/Icon/icons.d.cts +64 -0
  153. package/dist/components/Icon/icons.d.cts.map +1 -0
  154. package/dist/components/Icon/icons.d.ts +64 -0
  155. package/dist/components/Icon/icons.d.ts.map +1 -0
  156. package/dist/components/Icon/index.cjs +1 -0
  157. package/dist/components/Icon/index.d.cts +15 -0
  158. package/dist/components/Icon/index.d.cts.map +1 -0
  159. package/dist/components/Icon/index.d.ts +15 -0
  160. package/dist/components/Icon/index.d.ts.map +1 -0
  161. package/dist/components/Icon/index.js +1 -0
  162. package/dist/components/Icon/style.css +10 -0
  163. package/dist/components/ImageCropper/index.cjs +2 -0
  164. package/dist/components/ImageCropper/index.cjs.map +1 -0
  165. package/dist/components/ImageCropper/index.d.cts +66 -0
  166. package/dist/components/ImageCropper/index.d.cts.map +1 -0
  167. package/dist/components/ImageCropper/index.d.ts +66 -0
  168. package/dist/components/ImageCropper/index.d.ts.map +1 -0
  169. package/dist/components/ImageCropper/index.js +263 -0
  170. package/dist/components/ImageCropper/index.js.map +1 -0
  171. package/dist/components/ImageCropper/style.css +160 -0
  172. package/dist/components/Menu/index.cjs +2 -0
  173. package/dist/components/Menu/index.cjs.map +1 -0
  174. package/dist/components/Menu/index.d.cts +35 -0
  175. package/dist/components/Menu/index.d.cts.map +1 -0
  176. package/dist/components/Menu/index.d.ts +35 -0
  177. package/dist/components/Menu/index.d.ts.map +1 -0
  178. package/dist/components/Menu/index.js +110 -0
  179. package/dist/components/Menu/index.js.map +1 -0
  180. package/dist/components/Menu/style.css +87 -0
  181. package/dist/components/Modal/index.cjs +2 -0
  182. package/dist/components/Modal/index.cjs.map +1 -0
  183. package/dist/components/Modal/index.d.cts +19 -0
  184. package/dist/components/Modal/index.d.cts.map +1 -0
  185. package/dist/components/Modal/index.d.ts +19 -0
  186. package/dist/components/Modal/index.d.ts.map +1 -0
  187. package/dist/components/Modal/index.js +84 -0
  188. package/dist/components/Modal/index.js.map +1 -0
  189. package/dist/components/Modal/style.css +106 -0
  190. package/dist/components/NumberField/index.cjs +2 -0
  191. package/dist/components/NumberField/index.cjs.map +1 -0
  192. package/dist/components/NumberField/index.d.cts +50 -0
  193. package/dist/components/NumberField/index.d.cts.map +1 -0
  194. package/dist/components/NumberField/index.d.ts +50 -0
  195. package/dist/components/NumberField/index.d.ts.map +1 -0
  196. package/dist/components/NumberField/index.js +124 -0
  197. package/dist/components/NumberField/index.js.map +1 -0
  198. package/dist/components/NumberField/style.css +85 -0
  199. package/dist/components/Popover/index.cjs +2 -0
  200. package/dist/components/Popover/index.cjs.map +1 -0
  201. package/dist/components/Popover/index.d.cts +28 -0
  202. package/dist/components/Popover/index.d.cts.map +1 -0
  203. package/dist/components/Popover/index.d.ts +28 -0
  204. package/dist/components/Popover/index.d.ts.map +1 -0
  205. package/dist/components/Popover/index.js +52 -0
  206. package/dist/components/Popover/index.js.map +1 -0
  207. package/dist/components/Popover/style.css +23 -0
  208. package/dist/components/RichTextEditor/document.d.cts +10 -0
  209. package/dist/components/RichTextEditor/document.d.cts.map +1 -0
  210. package/dist/components/RichTextEditor/document.d.ts +10 -0
  211. package/dist/components/RichTextEditor/document.d.ts.map +1 -0
  212. package/dist/components/RichTextEditor/index.cjs +1 -0
  213. package/dist/components/RichTextEditor/index.d.cts +38 -0
  214. package/dist/components/RichTextEditor/index.d.cts.map +1 -0
  215. package/dist/components/RichTextEditor/index.d.ts +38 -0
  216. package/dist/components/RichTextEditor/index.d.ts.map +1 -0
  217. package/dist/components/RichTextEditor/index.js +1 -0
  218. package/dist/components/RichTextEditor/style.css +136 -0
  219. package/dist/components/SearchField/index.cjs +2 -0
  220. package/dist/components/SearchField/index.cjs.map +1 -0
  221. package/dist/components/SearchField/index.d.cts +11 -0
  222. package/dist/components/SearchField/index.d.cts.map +1 -0
  223. package/dist/components/SearchField/index.d.ts +11 -0
  224. package/dist/components/SearchField/index.d.ts.map +1 -0
  225. package/dist/components/SearchField/index.js +49 -0
  226. package/dist/components/SearchField/index.js.map +1 -0
  227. package/dist/components/SearchField/style.css +27 -0
  228. package/dist/components/Select/index.cjs +2 -0
  229. package/dist/components/Select/index.cjs.map +1 -0
  230. package/dist/components/Select/index.d.cts +26 -0
  231. package/dist/components/Select/index.d.cts.map +1 -0
  232. package/dist/components/Select/index.d.ts +26 -0
  233. package/dist/components/Select/index.d.ts.map +1 -0
  234. package/dist/components/Select/index.js +129 -0
  235. package/dist/components/Select/index.js.map +1 -0
  236. package/dist/components/Select/style.css +88 -0
  237. package/dist/components/SelectionCard/index.cjs +2 -0
  238. package/dist/components/SelectionCard/index.cjs.map +1 -0
  239. package/dist/components/SelectionCard/index.d.cts +32 -0
  240. package/dist/components/SelectionCard/index.d.cts.map +1 -0
  241. package/dist/components/SelectionCard/index.d.ts +32 -0
  242. package/dist/components/SelectionCard/index.d.ts.map +1 -0
  243. package/dist/components/SelectionCard/index.js +71 -0
  244. package/dist/components/SelectionCard/index.js.map +1 -0
  245. package/dist/components/SelectionCard/style.css +133 -0
  246. package/dist/components/SideNav/index.cjs +2 -0
  247. package/dist/components/SideNav/index.cjs.map +1 -0
  248. package/dist/components/SideNav/index.d.cts +58 -0
  249. package/dist/components/SideNav/index.d.cts.map +1 -0
  250. package/dist/components/SideNav/index.d.ts +58 -0
  251. package/dist/components/SideNav/index.d.ts.map +1 -0
  252. package/dist/components/SideNav/index.js +113 -0
  253. package/dist/components/SideNav/index.js.map +1 -0
  254. package/dist/components/SideNav/style.css +184 -0
  255. package/dist/components/Skeleton/index.cjs +2 -0
  256. package/dist/components/Skeleton/index.cjs.map +1 -0
  257. package/dist/components/Skeleton/index.d.cts +21 -0
  258. package/dist/components/Skeleton/index.d.cts.map +1 -0
  259. package/dist/components/Skeleton/index.d.ts +21 -0
  260. package/dist/components/Skeleton/index.d.ts.map +1 -0
  261. package/dist/components/Skeleton/index.js +31 -0
  262. package/dist/components/Skeleton/index.js.map +1 -0
  263. package/dist/components/Skeleton/style.css +55 -0
  264. package/dist/components/Slider/index.cjs +2 -0
  265. package/dist/components/Slider/index.cjs.map +1 -0
  266. package/dist/components/Slider/index.d.cts +40 -0
  267. package/dist/components/Slider/index.d.cts.map +1 -0
  268. package/dist/components/Slider/index.d.ts +40 -0
  269. package/dist/components/Slider/index.d.ts.map +1 -0
  270. package/dist/components/Slider/index.js +117 -0
  271. package/dist/components/Slider/index.js.map +1 -0
  272. package/dist/components/Slider/style.css +156 -0
  273. package/dist/components/SortableList/index.cjs +2 -0
  274. package/dist/components/SortableList/index.cjs.map +1 -0
  275. package/dist/components/SortableList/index.d.cts +27 -0
  276. package/dist/components/SortableList/index.d.cts.map +1 -0
  277. package/dist/components/SortableList/index.d.ts +27 -0
  278. package/dist/components/SortableList/index.d.ts.map +1 -0
  279. package/dist/components/SortableList/index.js +85 -0
  280. package/dist/components/SortableList/index.js.map +1 -0
  281. package/dist/components/SortableList/style.css +71 -0
  282. package/dist/components/Stepper/index.cjs +2 -0
  283. package/dist/components/Stepper/index.cjs.map +1 -0
  284. package/dist/components/Stepper/index.d.cts +32 -0
  285. package/dist/components/Stepper/index.d.cts.map +1 -0
  286. package/dist/components/Stepper/index.d.ts +32 -0
  287. package/dist/components/Stepper/index.d.ts.map +1 -0
  288. package/dist/components/Stepper/index.js +69 -0
  289. package/dist/components/Stepper/index.js.map +1 -0
  290. package/dist/components/Stepper/style.css +154 -0
  291. package/dist/components/SubNav/index.cjs +2 -0
  292. package/dist/components/SubNav/index.cjs.map +1 -0
  293. package/dist/components/SubNav/index.d.cts +31 -0
  294. package/dist/components/SubNav/index.d.cts.map +1 -0
  295. package/dist/components/SubNav/index.d.ts +31 -0
  296. package/dist/components/SubNav/index.d.ts.map +1 -0
  297. package/dist/components/SubNav/index.js +62 -0
  298. package/dist/components/SubNav/index.js.map +1 -0
  299. package/dist/components/SubNav/style.css +86 -0
  300. package/dist/components/Switch/index.cjs +2 -0
  301. package/dist/components/Switch/index.cjs.map +1 -0
  302. package/dist/components/Switch/index.d.cts +12 -0
  303. package/dist/components/Switch/index.d.cts.map +1 -0
  304. package/dist/components/Switch/index.d.ts +12 -0
  305. package/dist/components/Switch/index.d.ts.map +1 -0
  306. package/dist/components/Switch/index.js +37 -0
  307. package/dist/components/Switch/index.js.map +1 -0
  308. package/dist/components/Switch/style.css +65 -0
  309. package/dist/components/Table/index.cjs +2 -0
  310. package/dist/components/Table/index.cjs.map +1 -0
  311. package/dist/components/Table/index.d.cts +54 -0
  312. package/dist/components/Table/index.d.cts.map +1 -0
  313. package/dist/components/Table/index.d.ts +54 -0
  314. package/dist/components/Table/index.d.ts.map +1 -0
  315. package/dist/components/Table/index.js +102 -0
  316. package/dist/components/Table/index.js.map +1 -0
  317. package/dist/components/Table/style.css +122 -0
  318. package/dist/components/TagsInput/index.cjs +2 -0
  319. package/dist/components/TagsInput/index.cjs.map +1 -0
  320. package/dist/components/TagsInput/index.d.cts +22 -0
  321. package/dist/components/TagsInput/index.d.cts.map +1 -0
  322. package/dist/components/TagsInput/index.d.ts +22 -0
  323. package/dist/components/TagsInput/index.d.ts.map +1 -0
  324. package/dist/components/TagsInput/index.js +60 -0
  325. package/dist/components/TagsInput/index.js.map +1 -0
  326. package/dist/components/TagsInput/style.css +83 -0
  327. package/dist/components/TextField/index.cjs +2 -0
  328. package/dist/components/TextField/index.cjs.map +1 -0
  329. package/dist/components/TextField/index.d.cts +11 -0
  330. package/dist/components/TextField/index.d.cts.map +1 -0
  331. package/dist/components/TextField/index.d.ts +11 -0
  332. package/dist/components/TextField/index.d.ts.map +1 -0
  333. package/dist/components/TextField/index.js +29 -0
  334. package/dist/components/TextField/index.js.map +1 -0
  335. package/dist/components/TextField/style.css +1 -0
  336. package/dist/components/Time/index.cjs +2 -0
  337. package/dist/components/Time/index.cjs.map +1 -0
  338. package/dist/components/Time/index.d.cts +35 -0
  339. package/dist/components/Time/index.d.cts.map +1 -0
  340. package/dist/components/Time/index.d.ts +35 -0
  341. package/dist/components/Time/index.d.ts.map +1 -0
  342. package/dist/components/Time/index.js +98 -0
  343. package/dist/components/Time/index.js.map +1 -0
  344. package/dist/components/Time/style.css +30 -0
  345. package/dist/components/Toast/index.cjs +2 -0
  346. package/dist/components/Toast/index.cjs.map +1 -0
  347. package/dist/components/Toast/index.d.cts +30 -0
  348. package/dist/components/Toast/index.d.cts.map +1 -0
  349. package/dist/components/Toast/index.d.ts +30 -0
  350. package/dist/components/Toast/index.d.ts.map +1 -0
  351. package/dist/components/Toast/index.js +96 -0
  352. package/dist/components/Toast/index.js.map +1 -0
  353. package/dist/components/Toast/style.css +80 -0
  354. package/dist/components/TopNav/index.cjs +2 -0
  355. package/dist/components/TopNav/index.cjs.map +1 -0
  356. package/dist/components/TopNav/index.d.cts +28 -0
  357. package/dist/components/TopNav/index.d.cts.map +1 -0
  358. package/dist/components/TopNav/index.d.ts +28 -0
  359. package/dist/components/TopNav/index.d.ts.map +1 -0
  360. package/dist/components/TopNav/index.js +45 -0
  361. package/dist/components/TopNav/index.js.map +1 -0
  362. package/dist/components/TopNav/style.css +80 -0
  363. package/dist/index.cjs +1 -0
  364. package/dist/index.d.cts +79 -0
  365. package/dist/index.d.cts.map +1 -0
  366. package/dist/index.d.ts +79 -0
  367. package/dist/index.d.ts.map +1 -0
  368. package/dist/index.js +39 -0
  369. package/dist/reset.css +15 -0
  370. package/dist/reset.css.d.ts +2 -0
  371. package/dist/styles.css +40 -0
  372. package/dist/styles.css.d.ts +2 -0
  373. package/dist/tokens.css +457 -0
  374. package/dist/tokens.css.d.ts +2 -0
  375. package/package.json +156 -4
@@ -0,0 +1,137 @@
1
+ import { t as e } from "../../chunks/Icon-CGY1FNXT.js";
2
+ import { Grid as t } from "../Grid/index.js";
3
+ import { Skeleton as n } from "../Skeleton/index.js";
4
+ import { forwardRef as r, useState as i } from "react";
5
+ import { Fragment as a, jsx as o, jsxs as s } from "react/jsx-runtime";
6
+ //#region src/components/AssetGrid/index.tsx
7
+ function c(...e) {
8
+ return e.filter(Boolean).join(" ");
9
+ }
10
+ var l = r(function({ isLoading: e = !1, loadingCount: n = 8, className: r, children: i, ...a }, s) {
11
+ return /* @__PURE__ */ o(t, {
12
+ ref: s,
13
+ columns: "auto",
14
+ gap: "md",
15
+ minColumnWidth: "var(--asset-tile-min-width)",
16
+ className: c("ds-asset-grid", r),
17
+ "aria-busy": e || void 0,
18
+ ...a,
19
+ children: e ? Array.from({ length: n }, (e, t) => /* @__PURE__ */ o(u, { index: t }, t)) : i
20
+ });
21
+ });
22
+ function u({ index: e = 0 }) {
23
+ let t = { animationDelay: `calc(var(--skeleton-stagger) * ${e})` };
24
+ return /* @__PURE__ */ s("div", {
25
+ className: "ds-asset-tile",
26
+ "data-loading": "true",
27
+ "aria-hidden": "true",
28
+ children: [/* @__PURE__ */ o(n, {
29
+ shape: "block",
30
+ className: "ds-asset-tile__thumb",
31
+ style: t
32
+ }), /* @__PURE__ */ s("div", {
33
+ className: "ds-asset-tile__text",
34
+ children: [/* @__PURE__ */ o(n, {
35
+ shape: "text",
36
+ width: "80%",
37
+ style: t
38
+ }), /* @__PURE__ */ o(n, {
39
+ shape: "text",
40
+ width: "45%",
41
+ style: t
42
+ })]
43
+ })]
44
+ });
45
+ }
46
+ var d = r(function({ name: t, src: r, icon: l = "image", meta: u, isSelected: d = !1, isPending: f = !1, onSelect: p, actions: m, className: h, ...g }, _) {
47
+ let [v, y] = i(!1), [b, x] = i(!1), S = !!r && !v;
48
+ return /* @__PURE__ */ s("div", {
49
+ ref: _,
50
+ className: c("ds-asset-tile", h),
51
+ "data-selected": d || void 0,
52
+ "data-pending": f || void 0,
53
+ ...g,
54
+ children: [/* @__PURE__ */ s("div", {
55
+ className: "ds-asset-tile__thumb",
56
+ children: [
57
+ S ? /* @__PURE__ */ s(a, { children: [!b && /* @__PURE__ */ o(n, {
58
+ shape: "block",
59
+ className: "ds-asset-tile__thumb-skeleton"
60
+ }), /* @__PURE__ */ o("img", {
61
+ src: r,
62
+ alt: "",
63
+ loading: "lazy",
64
+ "data-loaded": b || void 0,
65
+ onLoad: () => x(!0),
66
+ onError: () => y(!0)
67
+ })] }) : /* @__PURE__ */ o("span", {
68
+ className: "ds-asset-tile__placeholder",
69
+ children: /* @__PURE__ */ o(e, {
70
+ name: v ? "alert-triangle" : l,
71
+ size: 24
72
+ })
73
+ }),
74
+ f && /* @__PURE__ */ s("span", {
75
+ className: "ds-asset-tile__pending",
76
+ role: "status",
77
+ children: [/* @__PURE__ */ o(e, {
78
+ name: "spinner",
79
+ size: 20,
80
+ className: "ds-asset-tile__spinner"
81
+ }), /* @__PURE__ */ o("span", {
82
+ className: "ds-asset-tile__pending-label",
83
+ children: "Uploading"
84
+ })]
85
+ }),
86
+ m && /* @__PURE__ */ o("div", {
87
+ className: "ds-asset-tile__actions",
88
+ children: m
89
+ }),
90
+ p && /* @__PURE__ */ o("button", {
91
+ type: "button",
92
+ className: "ds-asset-tile__hit",
93
+ "aria-pressed": d,
94
+ disabled: f,
95
+ onClick: p,
96
+ children: /* @__PURE__ */ o("span", {
97
+ className: "ds-asset-tile__hit-label",
98
+ children: t
99
+ })
100
+ })
101
+ ]
102
+ }), /* @__PURE__ */ s("div", {
103
+ className: "ds-asset-tile__text",
104
+ children: [/* @__PURE__ */ o("span", {
105
+ className: "ds-asset-tile__name",
106
+ children: t
107
+ }), u && /* @__PURE__ */ o("span", {
108
+ className: "ds-asset-tile__meta",
109
+ children: u
110
+ })]
111
+ })]
112
+ });
113
+ });
114
+ function f({ title: t, description: n, action: r }) {
115
+ return /* @__PURE__ */ s("div", {
116
+ className: "ds-asset-empty",
117
+ children: [
118
+ /* @__PURE__ */ o(e, {
119
+ name: "image",
120
+ size: 24
121
+ }),
122
+ /* @__PURE__ */ o("span", {
123
+ className: "ds-asset-empty__title",
124
+ children: t
125
+ }),
126
+ n && /* @__PURE__ */ o("span", {
127
+ className: "ds-asset-empty__description",
128
+ children: n
129
+ }),
130
+ r
131
+ ]
132
+ });
133
+ }
134
+ //#endregion
135
+ export { l as AssetGrid, f as AssetGridEmpty, d as AssetTile, u as AssetTileSkeleton };
136
+
137
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_Fragment","Icon","cx","parts","AssetGrid","forwardRef","rest","Grid","className","isLoading","loadingCount","AssetTileSkeleton","i","children","delay","index","Skeleton","AssetTile","hasFailed","setHasFailed","useState","isLoaded","setIsLoaded","showImage","src","isSelected","isPending","Fragment","icon","actions","onSelect","name","meta","AssetGridEmpty","title","description","action"],"sources":["../../../src/components/AssetGrid/index.tsx"],"sourcesContent":["import {\n forwardRef,\n useState,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { Grid } from \"../Grid\";\nimport { Icon } from \"../Icon\";\nimport type { IconName } from \"../Icon/icons\";\nimport { Skeleton } from \"../Skeleton\";\nimport \"./style.css\";\n\nfunction cx(...parts: (string | undefined | false)[]) {\n return parts.filter(Boolean).join(\" \");\n}\n\nexport interface AssetGridProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Renders placeholder tiles instead of children. The grid keeps its\n * geometry, so nothing moves when the real assets arrive.\n */\n isLoading?: boolean;\n /** How many placeholder tiles to show while loading. */\n loadingCount?: number;\n children?: ReactNode;\n}\n\n/**\n * The media library surface: an auto-filling grid of asset tiles. Sits inside\n * a `TableFrame` when it is the page's collection, bare inside a drawer.\n */\nexport const AssetGrid = forwardRef<HTMLDivElement, AssetGridProps>(function AssetGrid(\n { isLoading = false, loadingCount = 8, className, children, ...rest },\n ref,\n) {\n return (\n <Grid\n ref={ref}\n columns=\"auto\"\n gap=\"md\"\n minColumnWidth=\"var(--asset-tile-min-width)\"\n className={cx(\"ds-asset-grid\", className)}\n aria-busy={isLoading || undefined}\n {...rest}\n >\n {isLoading\n ? Array.from({ length: loadingCount }, (_, i) => <AssetTileSkeleton key={i} index={i} />)\n : children}\n </Grid>\n );\n});\n\nexport interface AssetTileSkeletonProps {\n /** Position in the grid — drives the stagger, nothing else. */\n index?: number;\n}\n\n/** One loading tile: thumbnail block, name line, meta line. */\nexport function AssetTileSkeleton({ index = 0 }: AssetTileSkeletonProps) {\n const delay = { animationDelay: `calc(var(--skeleton-stagger) * ${index})` };\n return (\n <div className=\"ds-asset-tile\" data-loading=\"true\" aria-hidden=\"true\">\n <Skeleton shape=\"block\" className=\"ds-asset-tile__thumb\" style={delay} />\n <div className=\"ds-asset-tile__text\">\n <Skeleton shape=\"text\" width=\"80%\" style={delay} />\n <Skeleton shape=\"text\" width=\"45%\" style={delay} />\n </div>\n </div>\n );\n}\n\nexport interface AssetTileProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onSelect\" | \"title\"> {\n /** File name, shown in full — asset names are how people find things again. */\n name: string;\n /** Thumbnail source. Omit for a non-image asset and pass an `icon` instead. */\n src?: string;\n /** Glyph shown when there is no thumbnail, or while one fails to load. */\n icon?: IconName;\n /** Second line: dimensions, size, date — whatever the library sorts by. */\n meta?: ReactNode;\n /** Paints the soft fill and the solid rail. Never changes the tile's size. */\n isSelected?: boolean;\n /** The asset is still uploading or processing: dimmed, with a spinner. */\n isPending?: boolean;\n /** Makes the whole tile a selection target. */\n onSelect?: () => void;\n /** Badges or a menu, pinned to the top of the thumbnail. */\n actions?: ReactNode;\n}\n\n/**\n * One asset in the library. Selection paints a fill and a rail exactly like a\n * table row, so a grid and a list read as the same collection in two shapes.\n */\nexport const AssetTile = forwardRef<HTMLDivElement, AssetTileProps>(function AssetTile(\n {\n name,\n src,\n icon = \"image\",\n meta,\n isSelected = false,\n isPending = false,\n onSelect,\n actions,\n className,\n ...rest\n },\n ref,\n) {\n const [hasFailed, setHasFailed] = useState(false);\n const [isLoaded, setIsLoaded] = useState(false);\n const showImage = Boolean(src) && !hasFailed;\n\n return (\n <div\n ref={ref}\n className={cx(\"ds-asset-tile\", className)}\n data-selected={isSelected || undefined}\n data-pending={isPending || undefined}\n {...rest}\n >\n <div className=\"ds-asset-tile__thumb\">\n {showImage ? (\n <>\n {!isLoaded && <Skeleton shape=\"block\" className=\"ds-asset-tile__thumb-skeleton\" />}\n <img\n src={src}\n alt=\"\"\n loading=\"lazy\"\n data-loaded={isLoaded || undefined}\n onLoad={() => setIsLoaded(true)}\n onError={() => setHasFailed(true)}\n />\n </>\n ) : (\n <span className=\"ds-asset-tile__placeholder\">\n <Icon name={hasFailed ? \"alert-triangle\" : icon} size={24} />\n </span>\n )}\n\n {isPending && (\n <span className=\"ds-asset-tile__pending\" role=\"status\">\n <Icon name=\"spinner\" size={20} className=\"ds-asset-tile__spinner\" />\n <span className=\"ds-asset-tile__pending-label\">Uploading</span>\n </span>\n )}\n\n {actions && <div className=\"ds-asset-tile__actions\">{actions}</div>}\n\n {onSelect && (\n <button\n type=\"button\"\n className=\"ds-asset-tile__hit\"\n aria-pressed={isSelected}\n disabled={isPending}\n onClick={onSelect}\n >\n <span className=\"ds-asset-tile__hit-label\">{name}</span>\n </button>\n )}\n </div>\n\n <div className=\"ds-asset-tile__text\">\n <span className=\"ds-asset-tile__name\">{name}</span>\n {meta && <span className=\"ds-asset-tile__meta\">{meta}</span>}\n </div>\n </div>\n );\n});\n\nexport interface AssetGridEmptyProps {\n title: string;\n description?: ReactNode;\n action?: ReactNode;\n}\n\n/** Nothing in the library yet — one action, the one that fills it. */\nexport function AssetGridEmpty({ title, description, action }: AssetGridEmptyProps) {\n return (\n <div className=\"ds-asset-empty\">\n <Icon name=\"image\" size={24} />\n <span className=\"ds-asset-empty__title\">{title}</span>\n {description && <span className=\"ds-asset-empty__description\">{description}</span>}\n {action}\n </div>\n );\n}\n"],"mappings":";;;;;;AAYA,SAASE,EAAG,GAAGC,GAAuC;CACpD,OAAOA,EAAM,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;AACvC;AAiBA,IAAaC,IAAYC,EAA2C,SAClE,EAAE,eAAY,IAAO,kBAAe,GAAG,cAAW,aAAU,GAAGC,KAC/D,GACA;CACA,OACE,kBAACC,GAAD;EACO;EACL,SAAQ;EACR,KAAI;EACJ,gBAAe;EACf,WAAWL,EAAG,iBAAiBM,CAAS;EACxC,aAAWC,KAAa,KAAA;EACxB,GAAIH;EAEH,UAAAG,IACG,MAAM,KAAK,EAAE,QAAQC,EAAa,IAAI,GAAG,MAAM,kBAACC,GAAD,EAA2B,OAAOC,EAAI,GAAdA,CAAc,CAAC,IACtFC;CACA,CAAA;AAEV,CAAC;AAQD,SAAgBF,EAAkB,EAAE,WAAQ,KAA6B;CACvE,IAAMG,IAAQ,EAAE,gBAAgB,kCAAkCC,EAAM,GAAG;CAC3E,OACE,kBAAC,OAAD;EAAK,WAAU;EAAgB,gBAAa;EAAO,eAAY;EAA/D,UAAA,CACE,kBAACC,GAAD;GAAU,OAAM;GAAQ,WAAU;GAAuB,OAAOF;EAAQ,CAAA,GACxE,kBAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACE,kBAACE,GAAD;IAAU,OAAM;IAAO,OAAM;IAAM,OAAOF;GAAQ,CAAA,GAClD,kBAACE,GAAD;IAAU,OAAM;IAAO,OAAM;IAAM,OAAOF;GAAQ,CAAA,CAC/C;EACF,CAAA,CAAA;;AAET;AA0BA,IAAaG,IAAYZ,EAA2C,SAClE,EACE,SACA,QACA,UAAO,SACP,SACA,gBAAa,IACb,eAAY,IACZ,aACA,YACA,cACA,GAAGC,KAEL,GACA;CACA,IAAM,CAACY,GAAWC,KAAgBC,EAAS,EAAK,GAC1C,CAACC,GAAUC,KAAeF,EAAS,EAAK,GACxCG,IAAY,EAAQC,KAAQ,CAACN;CAEnC,OACE,kBAAC,OAAD;EACO;EACL,WAAWhB,EAAG,iBAAiBM,CAAS;EACxC,iBAAeiB,KAAc,KAAA;EAC7B,gBAAcC,KAAa,KAAA;EAC3B,GAAIpB;EALN,UAAA,CAOE,kBAAC,OAAD;GAAK,WAAU;GAAf,UAAA;IACGiB,IACC,kBAAAvB,GAAA,EAAA,UAAA,CACG,CAACqB,KAAY,kBAACL,GAAD;KAAU,OAAM;KAAQ,WAAU;IAAiC,CAAA,GACjF,kBAAC,OAAD;KACO;KACL,KAAI;KACJ,SAAQ;KACR,eAAaK,KAAY,KAAA;KACzB,cAAcC,EAAY,EAAI;KAC9B,eAAeH,EAAa,EAAI;IACjC,CAAA,CACD,EAAA,CAAA,IAEF,kBAAC,QAAD;KAAM,WAAU;KACd,UAAA,kBAAClB,GAAD;MAAM,MAAMiB,IAAY,mBAAmBU;MAAM,MAAM;KAAK,CAAA;IACxD,CAAA;IAGPF,KACC,kBAAC,QAAD;KAAM,WAAU;KAAyB,MAAK;KAA9C,UAAA,CACE,kBAACzB,GAAD;MAAM,MAAK;MAAU,MAAM;MAAI,WAAU;KAA0B,CAAA,GACnE,kBAAC,QAAD;MAAM,WAAU;MAA+B,UAAA;KAAe,CAAA,CAC1D;;IAGP4B,KAAW,kBAAC,OAAD;KAAK,WAAU;KAA0B,UAAAA;IAAa,CAAA;IAEjEC,KACC,kBAAC,UAAD;KACE,MAAK;KACL,WAAU;KACV,gBAAcL;KACd,UAAUC;KACV,SAASI;KAET,UAAA,kBAAC,QAAD;MAAM,WAAU;MAA4B,UAAAC;KAAW,CAAA;IACjD,CAAA;GAEP;EAEL,CAAA,GAAA,kBAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACE,kBAAC,QAAD;IAAM,WAAU;IAAuB,UAAAA;GAAW,CAAA,GACjDC,KAAQ,kBAAC,QAAD;IAAM,WAAU;IAAuB,UAAAA;GAAW,CAAA,CACxD;EACF,CAAA,CAAA;;AAET,CAAC;AASD,SAAgBC,EAAe,EAAE,UAAO,gBAAa,aAA+B;CAClF,OACE,kBAAC,OAAD;EAAK,WAAU;EAAf,UAAA;GACE,kBAAChC,GAAD;IAAM,MAAK;IAAQ,MAAM;GAAK,CAAA;GAC9B,kBAAC,QAAD;IAAM,WAAU;IAAyB,UAAAiC;GAAY,CAAA;GACpDC,KAAe,kBAAC,QAAD;IAAM,WAAU;IAA+B,UAAAA;GAAkB,CAAA;GAChFC;EACE;;AAET"}
@@ -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