@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,162 @@
1
+ @layer components {
2
+ .ds-entry-picker {
3
+ display: flex;
4
+ flex-direction: column;
5
+ gap: var(--space-3);
6
+ inline-size: 100%;
7
+ }
8
+
9
+ .ds-entry-picker__head {
10
+ display: flex;
11
+ align-items: center;
12
+ gap: var(--space-2);
13
+ }
14
+
15
+ .ds-entry-picker__label {
16
+ font-size: var(--font-size-sm);
17
+ font-weight: var(--font-weight-semibold);
18
+ }
19
+
20
+ .ds-entry-picker__empty {
21
+ margin: 0;
22
+ padding: var(--space-4);
23
+ border: var(--rule-width) dashed var(--color-border-strong);
24
+ border-radius: var(--radius-md);
25
+ color: var(--color-text-muted);
26
+ font-size: var(--font-size-sm);
27
+ }
28
+
29
+ .ds-entry-picker__list {
30
+ display: flex;
31
+ flex-direction: column;
32
+ gap: var(--space-2);
33
+ margin: 0;
34
+ padding: 0;
35
+ list-style: none;
36
+ }
37
+
38
+ .ds-entry-picker__row {
39
+ display: flex;
40
+ align-items: center;
41
+ gap: var(--space-3);
42
+ padding: var(--space-2) var(--space-3);
43
+ border: var(--control-border-width) solid var(--control-border-color);
44
+ border-radius: var(--radius-md);
45
+ background: var(--color-surface);
46
+ }
47
+
48
+ .ds-entry-picker__row .ds-entry {
49
+ flex: 1;
50
+ min-inline-size: 0;
51
+ }
52
+
53
+ .ds-entry-picker__actions {
54
+ display: flex;
55
+ align-items: center;
56
+ gap: var(--space-2);
57
+ }
58
+
59
+ /* One entry row: thumbnail, title, subtitle. Shared by the value list,
60
+ * the drag overlay and the picker results, so they never drift apart. */
61
+ .ds-entry {
62
+ display: flex;
63
+ align-items: center;
64
+ gap: var(--space-3);
65
+ min-inline-size: 0;
66
+ }
67
+
68
+ .ds-entry__thumb {
69
+ display: grid;
70
+ place-items: center;
71
+ flex: none;
72
+ inline-size: var(--entry-thumb-size);
73
+ block-size: var(--entry-thumb-size);
74
+ overflow: hidden;
75
+ border: var(--rule-width) solid var(--rule-color);
76
+ border-radius: var(--field-radius);
77
+ background: var(--color-surface-subtle);
78
+ color: var(--color-text-muted);
79
+ }
80
+
81
+ .ds-entry__thumb img {
82
+ inline-size: 100%;
83
+ block-size: 100%;
84
+ object-fit: cover;
85
+ }
86
+
87
+ .ds-entry__body {
88
+ display: flex;
89
+ flex-direction: column;
90
+ gap: 2px;
91
+ min-inline-size: 0;
92
+ }
93
+
94
+ .ds-entry__title {
95
+ overflow: hidden;
96
+ font-size: var(--font-size-sm);
97
+ font-weight: var(--font-weight-semibold);
98
+ text-overflow: ellipsis;
99
+ white-space: nowrap;
100
+ }
101
+
102
+ .ds-entry__subtitle {
103
+ color: var(--color-text-muted);
104
+ font-size: var(--font-size-xs);
105
+ }
106
+
107
+ .ds-entry-picker__search {
108
+ margin-block-end: var(--space-4);
109
+ }
110
+
111
+ .ds-entry-picker__results {
112
+ display: flex;
113
+ flex-direction: column;
114
+ gap: var(--space-1);
115
+ max-block-size: var(--entry-list-max-height);
116
+ overflow-y: auto;
117
+ margin: 0;
118
+ padding: 0;
119
+ list-style: none;
120
+ }
121
+
122
+ .ds-entry-picker__result {
123
+ display: flex;
124
+ align-items: center;
125
+ justify-content: space-between;
126
+ gap: var(--space-3);
127
+ inline-size: 100%;
128
+ padding: var(--space-2) var(--space-3);
129
+ border: var(--control-border-width) solid transparent;
130
+ border-radius: var(--radius-md);
131
+ background: transparent;
132
+ color: var(--color-text);
133
+ text-align: start;
134
+ cursor: pointer;
135
+ transition: background-color var(--duration-fast) var(--ease-standard);
136
+ }
137
+
138
+ .ds-entry-picker__result:hover:not(:disabled) {
139
+ background: var(--field-hover);
140
+ }
141
+
142
+ .ds-entry-picker__result:focus-visible {
143
+ outline: var(--control-border-width) solid var(--color-focus);
144
+ outline-offset: 2px;
145
+ }
146
+
147
+ .ds-entry-picker__result[aria-pressed="true"] {
148
+ background: var(--color-primary-soft);
149
+ box-shadow: inset var(--rail-width) 0 0 0 var(--rail-color);
150
+ }
151
+
152
+ .ds-entry-picker__result:disabled {
153
+ opacity: 45%;
154
+ cursor: not-allowed;
155
+ }
156
+
157
+ .ds-entry-picker__no-results {
158
+ padding: var(--space-4);
159
+ color: var(--color-text-muted);
160
+ font-size: var(--font-size-sm);
161
+ }
162
+ }
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});/* empty css */let e=require("react"),t=require("react/jsx-runtime");function n({label:n,hint:r,error:i,isRequired:a,isGroup:o=!1,children:s}){let c=(0,e.useId)(),l=`${c}-hint`,u=`${c}-error`,d=i?u:r?l:void 0,f=`${c}-label`,p=o?`fieldset`:`div`,m=(0,t.jsxs)(t.Fragment,{children:[n,a&&(0,t.jsx)(`span`,{className:`ds-field__required`,"aria-hidden":`true`,children:`*`})]});return(0,t.jsxs)(p,{className:`ds-field`,children:[o?(0,t.jsx)(`legend`,{id:f,className:`ds-field__label`,children:m}):(0,t.jsx)(`label`,{id:f,className:`ds-field__label`,htmlFor:c,children:m}),s({id:c,"aria-describedby":d,"aria-labelledby":f,"aria-invalid":i?!0:void 0,required:a}),r&&!i&&(0,t.jsx)(`span`,{className:`ds-field__hint`,id:l,children:r}),i&&(0,t.jsx)(`span`,{className:`ds-field__error`,id:u,children:i})]})}exports.Field=n;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["useId","_Fragment","react","react_jsx_runtime","Field","id","hintId","errorId","describedBy","error","hint","labelId","Wrapper","isGroup","labelContent","label","isRequired","children"],"sources":["../../../src/components/Field/index.tsx"],"sourcesContent":["import { useId, type ReactNode } from \"react\";\nimport \"../Field/style.css\";\n\nexport type FieldSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface FieldProps {\n label: string;\n hint?: string;\n /** Present means invalid: the message renders and the control is marked. */\n error?: string;\n isRequired?: boolean;\n /** Use a legend for a field containing a group of controls. */\n isGroup?: boolean;\n /** Receives the ids and invalid flag the control must carry. */\n children: (props: {\n id: string;\n \"aria-describedby\"?: string;\n \"aria-labelledby\": string;\n \"aria-invalid\"?: true;\n required?: boolean;\n }) => ReactNode;\n}\n\n/** Label, hint, error and required marker around any control wearing the field skin. */\nexport function Field({ label, hint, error, isRequired, isGroup = false, children }: FieldProps) {\n const id = useId();\n const hintId = `${id}-hint`;\n const errorId = `${id}-error`;\n const describedBy = error ? errorId : hint ? hintId : undefined;\n const labelId = `${id}-label`;\n const Wrapper = isGroup ? \"fieldset\" : \"div\";\n const labelContent = <>{label}{isRequired && <span className=\"ds-field__required\" aria-hidden=\"true\">*</span>}</>;\n\n return (\n <Wrapper className=\"ds-field\">\n {isGroup\n ? <legend id={labelId} className=\"ds-field__label\">{labelContent}</legend>\n : <label id={labelId} className=\"ds-field__label\" htmlFor={id}>{labelContent}</label>}\n {children({\n id,\n \"aria-describedby\": describedBy,\n \"aria-labelledby\": labelId,\n \"aria-invalid\": error ? true : undefined,\n required: isRequired,\n })}\n {hint && !error && (\n <span className=\"ds-field__hint\" id={hintId}>\n {hint}\n </span>\n )}\n {error && (\n <span className=\"ds-field__error\" id={errorId}>\n {error}\n </span>\n )}\n </Wrapper>\n );\n}\n"],"mappings":"A,oKAwBA,SAAgBI,EAAM,CAAE,QAAO,OAAM,QAAO,aAAY,UAAU,GAAO,YAAwB,CAC/F,IAAMC,GAAA,EAAKL,EAAAA,MAAAA,CAAM,EACXM,EAAS,GAAGD,EAAG,OACfE,EAAU,GAAGF,EAAG,QAChBG,EAAcC,EAAQF,EAAUG,EAAOJ,EAAS,IAAA,GAChDK,EAAU,GAAGN,EAAG,QAChBO,EAAUC,EAAU,WAAa,MACjCC,GAAe,EAAAX,EAAA,KAAA,CAAAF,EAAAA,SAAA,CAAA,SAAA,CAAGc,EAAOC,IAAc,EAAAb,EAAA,IAAA,CAAC,OAAD,CAAM,UAAU,qBAAqB,cAAY,OAAO,SAAA,GAAO,CAAA,CAAI,CAAA,CAAA,EAEhH,OACE,EAAAA,EAAA,KAAA,CAACS,EAAD,CAAS,UAAU,WAAnB,SAAA,CACGC,GACG,EAAAV,EAAA,IAAA,CAAC,SAAD,CAAQ,GAAIQ,EAAS,UAAU,kBAAmB,SAAAG,CAAqB,CAAA,GACvE,EAAAX,EAAA,IAAA,CAAC,QAAD,CAAO,GAAIQ,EAAS,UAAU,kBAAkB,QAASN,EAAK,SAAAS,CAAoB,CAAA,EACrFG,EAAS,CACR,KACA,mBAAoBT,EACpB,kBAAmBG,EACnB,eAAgBF,EAAQ,GAAO,IAAA,GAC/B,SAAUO,CACZ,CAAC,EACAN,GAAQ,CAACD,IACR,EAAAN,EAAA,IAAA,CAAC,OAAD,CAAM,UAAU,iBAAiB,GAAIG,EAClC,SAAAI,CACG,CAAA,EAEPD,IACC,EAAAN,EAAA,IAAA,CAAC,OAAD,CAAM,UAAU,kBAAkB,GAAII,EACnC,SAAAE,CACG,CAAA,CAED,C,EAEb,C"}
@@ -0,0 +1,22 @@
1
+ import { type ReactNode } from "react";
2
+ export type FieldSize = "sm" | "md" | "lg";
3
+ export interface FieldProps {
4
+ label: string;
5
+ hint?: string;
6
+ /** Present means invalid: the message renders and the control is marked. */
7
+ error?: string;
8
+ isRequired?: boolean;
9
+ /** Use a legend for a field containing a group of controls. */
10
+ isGroup?: boolean;
11
+ /** Receives the ids and invalid flag the control must carry. */
12
+ children: (props: {
13
+ id: string;
14
+ "aria-describedby"?: string;
15
+ "aria-labelledby": string;
16
+ "aria-invalid"?: true;
17
+ required?: boolean;
18
+ }) => ReactNode;
19
+ }
20
+ /** Label, hint, error and required marker around any control wearing the field skin. */
21
+ export declare function Field({ label, hint, error, isRequired, isGroup, children }: FieldProps): import("react").JSX.Element;
22
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../../src/components/Field/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,oBAAoB,CAAC;AAE5B,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE3C,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gEAAgE;IAChE,QAAQ,EAAE,CAAC,KAAK,EAAE;QAChB,EAAE,EAAE,MAAM,CAAC;QACX,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,iBAAiB,EAAE,MAAM,CAAC;QAC1B,cAAc,CAAC,EAAE,IAAI,CAAC;QACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,KAAK,SAAS,CAAC;CACjB;AAED,wFAAwF;AACxF,wBAAgB,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,OAAe,EAAE,QAAQ,EAAE,EAAE,UAAU,+BAiC9F"}
@@ -0,0 +1,22 @@
1
+ import { type ReactNode } from "react";
2
+ export type FieldSize = "sm" | "md" | "lg";
3
+ export interface FieldProps {
4
+ label: string;
5
+ hint?: string;
6
+ /** Present means invalid: the message renders and the control is marked. */
7
+ error?: string;
8
+ isRequired?: boolean;
9
+ /** Use a legend for a field containing a group of controls. */
10
+ isGroup?: boolean;
11
+ /** Receives the ids and invalid flag the control must carry. */
12
+ children: (props: {
13
+ id: string;
14
+ "aria-describedby"?: string;
15
+ "aria-labelledby": string;
16
+ "aria-invalid"?: true;
17
+ required?: boolean;
18
+ }) => ReactNode;
19
+ }
20
+ /** Label, hint, error and required marker around any control wearing the field skin. */
21
+ export declare function Field({ label, hint, error, isRequired, isGroup, children }: FieldProps): import("react").JSX.Element;
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Field/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,oBAAoB,CAAC;AAE5B,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE3C,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gEAAgE;IAChE,QAAQ,EAAE,CAAC,KAAK,EAAE;QAChB,EAAE,EAAE,MAAM,CAAC;QACX,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,iBAAiB,EAAE,MAAM,CAAC;QAC1B,cAAc,CAAC,EAAE,IAAI,CAAC;QACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,KAAK,SAAS,CAAC;CACjB;AAED,wFAAwF;AACxF,wBAAgB,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,OAAe,EAAE,QAAQ,EAAE,EAAE,UAAU,+BAiC9F"}
@@ -0,0 +1,47 @@
1
+ /* empty css */
2
+ import { useId as e } from "react";
3
+ import { Fragment as t, jsx as n, jsxs as r } from "react/jsx-runtime";
4
+ //#region src/components/Field/index.tsx
5
+ function i({ label: i, hint: a, error: o, isRequired: s, isGroup: c = !1, children: l }) {
6
+ let u = e(), d = `${u}-hint`, f = `${u}-error`, p = o ? f : a ? d : void 0, m = `${u}-label`, h = c ? "fieldset" : "div", g = /* @__PURE__ */ r(t, { children: [i, s && /* @__PURE__ */ n("span", {
7
+ className: "ds-field__required",
8
+ "aria-hidden": "true",
9
+ children: "*"
10
+ })] });
11
+ return /* @__PURE__ */ r(h, {
12
+ className: "ds-field",
13
+ children: [
14
+ c ? /* @__PURE__ */ n("legend", {
15
+ id: m,
16
+ className: "ds-field__label",
17
+ children: g
18
+ }) : /* @__PURE__ */ n("label", {
19
+ id: m,
20
+ className: "ds-field__label",
21
+ htmlFor: u,
22
+ children: g
23
+ }),
24
+ l({
25
+ id: u,
26
+ "aria-describedby": p,
27
+ "aria-labelledby": m,
28
+ "aria-invalid": o ? !0 : void 0,
29
+ required: s
30
+ }),
31
+ a && !o && /* @__PURE__ */ n("span", {
32
+ className: "ds-field__hint",
33
+ id: d,
34
+ children: a
35
+ }),
36
+ o && /* @__PURE__ */ n("span", {
37
+ className: "ds-field__error",
38
+ id: f,
39
+ children: o
40
+ })
41
+ ]
42
+ });
43
+ }
44
+ //#endregion
45
+ export { i as Field };
46
+
47
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_Fragment","Field","id","useId","hintId","errorId","describedBy","error","hint","labelId","Wrapper","isGroup","labelContent","Fragment","label","isRequired","children"],"sources":["../../../src/components/Field/index.tsx"],"sourcesContent":["import { useId, type ReactNode } from \"react\";\nimport \"../Field/style.css\";\n\nexport type FieldSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface FieldProps {\n label: string;\n hint?: string;\n /** Present means invalid: the message renders and the control is marked. */\n error?: string;\n isRequired?: boolean;\n /** Use a legend for a field containing a group of controls. */\n isGroup?: boolean;\n /** Receives the ids and invalid flag the control must carry. */\n children: (props: {\n id: string;\n \"aria-describedby\"?: string;\n \"aria-labelledby\": string;\n \"aria-invalid\"?: true;\n required?: boolean;\n }) => ReactNode;\n}\n\n/** Label, hint, error and required marker around any control wearing the field skin. */\nexport function Field({ label, hint, error, isRequired, isGroup = false, children }: FieldProps) {\n const id = useId();\n const hintId = `${id}-hint`;\n const errorId = `${id}-error`;\n const describedBy = error ? errorId : hint ? hintId : undefined;\n const labelId = `${id}-label`;\n const Wrapper = isGroup ? \"fieldset\" : \"div\";\n const labelContent = <>{label}{isRequired && <span className=\"ds-field__required\" aria-hidden=\"true\">*</span>}</>;\n\n return (\n <Wrapper className=\"ds-field\">\n {isGroup\n ? <legend id={labelId} className=\"ds-field__label\">{labelContent}</legend>\n : <label id={labelId} className=\"ds-field__label\" htmlFor={id}>{labelContent}</label>}\n {children({\n id,\n \"aria-describedby\": describedBy,\n \"aria-labelledby\": labelId,\n \"aria-invalid\": error ? true : undefined,\n required: isRequired,\n })}\n {hint && !error && (\n <span className=\"ds-field__hint\" id={hintId}>\n {hint}\n </span>\n )}\n {error && (\n <span className=\"ds-field__error\" id={errorId}>\n {error}\n </span>\n )}\n </Wrapper>\n );\n}\n"],"mappings":";;;;AAwBA,SAAgBC,EAAM,EAAE,UAAO,SAAM,UAAO,eAAY,aAAU,IAAO,eAAwB;CAC/F,IAAMC,IAAKC,EAAM,GACXC,IAAS,GAAGF,EAAG,QACfG,IAAU,GAAGH,EAAG,SAChBI,IAAcC,IAAQF,IAAUG,IAAOJ,IAAS,KAAA,GAChDK,IAAU,GAAGP,EAAG,SAChBQ,IAAUC,IAAU,aAAa,OACjCC,IAAe,kBAAAZ,GAAA,EAAA,UAAA,CAAGc,GAAOC,KAAc,kBAAC,QAAD;EAAM,WAAU;EAAqB,eAAY;EAAO,UAAA;CAAO,CAAA,CAAI,EAAA,CAAA;CAEhH,OACE,kBAACL,GAAD;EAAS,WAAU;EAAnB,UAAA;GACGC,IACG,kBAAC,UAAD;IAAQ,IAAIF;IAAS,WAAU;IAAmB,UAAAG;GAAqB,CAAA,IACvE,kBAAC,SAAD;IAAO,IAAIH;IAAS,WAAU;IAAkB,SAASP;IAAK,UAAAU;GAAoB,CAAA;GACrFI,EAAS;IACR;IACA,oBAAoBV;IACpB,mBAAmBG;IACnB,gBAAgBF,IAAQ,KAAO,KAAA;IAC/B,UAAUQ;GACZ,CAAC;GACAP,KAAQ,CAACD,KACR,kBAAC,QAAD;IAAM,WAAU;IAAiB,IAAIH;IAClC,UAAAI;GACG,CAAA;GAEPD,KACC,kBAAC,QAAD;IAAM,WAAU;IAAkB,IAAIF;IACnC,UAAAE;GACG,CAAA;EAED;;AAEb"}
@@ -0,0 +1,112 @@
1
+ @layer components {
2
+ /* The one input surface. Everything the user can type into or choose from
3
+ * wears it. State moves on the fill; the stroke never changes width. */
4
+ .ds-field-skin {
5
+ inline-size: 100%;
6
+ border: var(--control-border-width) solid var(--control-border-color);
7
+ border-radius: var(--field-radius);
8
+ background: var(--field-rest);
9
+ color: var(--color-text);
10
+ font-family: var(--font-sans);
11
+ transition: background-color var(--duration-fast) var(--ease-standard);
12
+ }
13
+
14
+ .ds-field-skin::placeholder {
15
+ color: var(--color-text-muted);
16
+ }
17
+
18
+ .ds-field-skin:hover:not(:disabled):not([readonly]) {
19
+ background: var(--field-hover);
20
+ }
21
+
22
+ .ds-field-skin:focus-visible {
23
+ background: var(--field-focus);
24
+ outline: var(--control-border-width) solid var(--color-focus);
25
+ outline-offset: 2px;
26
+ }
27
+
28
+ .ds-field-skin[aria-invalid="true"] {
29
+ border-color: var(--color-danger);
30
+ background: var(--field-invalid);
31
+ }
32
+
33
+ .ds-field-skin[aria-invalid="true"]:focus-visible {
34
+ background: var(--field-invalid-focus);
35
+ }
36
+
37
+ .ds-field-skin:disabled {
38
+ opacity: 45%;
39
+ cursor: not-allowed;
40
+ }
41
+
42
+ .ds-field-skin[readonly] {
43
+ cursor: default;
44
+ }
45
+
46
+ input.ds-field-skin[data-size="sm"] {
47
+ block-size: var(--field-height-sm);
48
+ padding: 0 10px;
49
+ font-size: var(--field-font-size-sm);
50
+ }
51
+
52
+ input.ds-field-skin[data-size="md"] {
53
+ block-size: var(--field-height-md);
54
+ padding: 0 10px;
55
+ font-size: var(--field-font-size-md);
56
+ }
57
+
58
+ input.ds-field-skin[data-size="lg"] {
59
+ block-size: var(--field-height-lg);
60
+ padding: 0 10px;
61
+ font-size: var(--field-font-size-md);
62
+ }
63
+
64
+ textarea.ds-field-skin {
65
+ display: block;
66
+ padding: var(--space-2) 10px;
67
+ font-size: var(--field-font-size-md);
68
+ line-height: var(--line-height-body);
69
+ resize: none;
70
+ overflow: hidden;
71
+ }
72
+
73
+ /* Field wrapper — label, hint, error, required marker. */
74
+ .ds-field {
75
+ display: flex;
76
+ flex-direction: column;
77
+ gap: var(--space-2);
78
+ }
79
+
80
+ .ds-field__label {
81
+ font-size: var(--font-size-sm);
82
+ font-weight: var(--font-weight-semibold);
83
+ }
84
+
85
+ fieldset.ds-field {
86
+ min-inline-size: 0;
87
+ margin: 0;
88
+ padding: 0;
89
+ border: 0;
90
+ }
91
+
92
+ fieldset.ds-field > legend {
93
+ padding: 0;
94
+ margin-block-end: var(--space-2);
95
+ }
96
+
97
+ .ds-field__required {
98
+ margin-inline-start: var(--space-1);
99
+ color: var(--color-danger);
100
+ }
101
+
102
+ .ds-field__hint {
103
+ color: var(--color-text-muted);
104
+ font-size: var(--font-size-xs);
105
+ }
106
+
107
+ .ds-field__error {
108
+ color: var(--color-danger-text);
109
+ font-size: var(--font-size-xs);
110
+ font-weight: var(--font-weight-medium);
111
+ }
112
+ }
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});/* empty css */let e=require("react"),t=require("react/jsx-runtime");function n(...e){return e.filter(Boolean).join(` `)}function r({lead:r,trail:i,isTrailInteractive:a=!1,className:o,children:s}){let c=(0,e.useRef)(null),l=(0,e.useRef)(null),[u,d]=(0,e.useState)({start:0,end:0});(0,e.useLayoutEffect)(()=>{let e=()=>d({start:c.current?.offsetWidth??0,end:l.current?.offsetWidth??0});if(e(),typeof ResizeObserver>`u`)return;let t=new ResizeObserver(e);return c.current&&t.observe(c.current),l.current&&t.observe(l.current),()=>t.disconnect()},[r,i]);let f={};return r&&(f[`--field-pad-start`]=`calc(${u.start}px + var(--field-affix-gap) * 2)`),i&&(f[`--field-pad-end`]=`calc(${u.end}px + var(--field-affix-gap) * 2)`),(0,t.jsxs)(`span`,{className:n(`ds-field-affix`,o),style:f,children:[r&&(0,t.jsx)(`span`,{className:`ds-field-affix__lead`,ref:c,children:r}),s,i&&(0,t.jsx)(`span`,{className:`ds-field-affix__trail`,ref:l,"data-interactive":a||void 0,children:i})]})}exports.FieldAffix=r;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["useRef","useState","react","react_jsx_runtime","cx","parts","FieldAffix","leadRef","trailRef","pad","setPad","measure","observer","lead","trail","style","className","children","isTrailInteractive"],"sources":["../../../src/components/FieldAffix/index.tsx"],"sourcesContent":["import {\n useLayoutEffect,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport \"../Field/style.css\";\nimport \"./style.css\";\n\nfunction cx(...parts: (string | undefined | false)[]) {\n return parts.filter(Boolean).join(\" \");\n}\n\nexport interface FieldAffixProps {\n /** Node pinned to the start of the field — a glyph, a currency mark. */\n lead?: ReactNode;\n /** Node pinned to the end of the field — a unit, a clear button. */\n trail?: ReactNode;\n /** Set when the trailing node is interactive, so it can take the pointer. */\n isTrailInteractive?: boolean;\n className?: string;\n /** The field itself — one `.ds-field-skin` control. */\n children: ReactNode;\n}\n\n/**\n * The one way a field carries something beside its text. Both affixes are\n * measured, and the control's inline padding is reserved from that measurement\n * — so content never runs under a glyph, whatever the affix holds.\n */\nexport function FieldAffix({\n lead,\n trail,\n isTrailInteractive = false,\n className,\n children,\n}: FieldAffixProps) {\n const leadRef = useRef<HTMLSpanElement | null>(null);\n const trailRef = useRef<HTMLSpanElement | null>(null);\n const [pad, setPad] = useState<{ start: number; end: number }>({ start: 0, end: 0 });\n\n useLayoutEffect(() => {\n const measure = () =>\n setPad({\n start: leadRef.current?.offsetWidth ?? 0,\n end: trailRef.current?.offsetWidth ?? 0,\n });\n measure();\n if (typeof ResizeObserver === \"undefined\") return;\n const observer = new ResizeObserver(measure);\n if (leadRef.current) observer.observe(leadRef.current);\n if (trailRef.current) observer.observe(trailRef.current);\n return () => observer.disconnect();\n }, [lead, trail]);\n\n const style: Record<string, string> = {};\n if (lead) style[\"--field-pad-start\"] = `calc(${pad.start}px + var(--field-affix-gap) * 2)`;\n if (trail) style[\"--field-pad-end\"] = `calc(${pad.end}px + var(--field-affix-gap) * 2)`;\n\n return (\n <span className={cx(\"ds-field-affix\", className)} style={style}>\n {lead && (\n <span className=\"ds-field-affix__lead\" ref={leadRef}>\n {lead}\n </span>\n )}\n {children}\n {trail && (\n <span\n className=\"ds-field-affix__trail\"\n ref={trailRef}\n data-interactive={isTrailInteractive || undefined}\n >\n {trail}\n </span>\n )}\n </span>\n );\n}\n"],"mappings":"A,oKASA,SAASI,EAAG,GAAGC,EAAuC,CACpD,OAAOA,EAAM,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,CACvC,CAmBA,SAAgBC,EAAW,CACzB,OACA,QACA,qBAAqB,GACrB,YACA,YACkB,CAClB,IAAMC,GAAA,EAAUP,EAAAA,OAAAA,CAA+B,IAAI,EAC7CQ,GAAA,EAAWR,EAAAA,OAAAA,CAA+B,IAAI,EAC9C,CAACS,EAAKC,IAAA,EAAUT,EAAAA,SAAAA,CAAyC,CAAE,MAAO,EAAG,IAAK,CAAE,CAAC,GAEnF,EAAAC,EAAA,gBAAA,KAAsB,CACpB,IAAMS,MACJD,EAAO,CACL,MAAOH,EAAQ,SAAS,aAAe,EACvC,IAAKC,EAAS,SAAS,aAAe,CACxC,CAAC,EAEH,GADAG,EAAQ,EACJ,OAAO,eAAmB,IAAa,OAC3C,IAAMC,EAAW,IAAI,eAAeD,CAAO,EAG3C,OAFIJ,EAAQ,SAASK,EAAS,QAAQL,EAAQ,OAAO,EACjDC,EAAS,SAASI,EAAS,QAAQJ,EAAS,OAAO,MAC1CI,EAAS,WAAW,CACnC,EAAG,CAACC,EAAMC,CAAK,CAAC,EAEhB,IAAMC,EAAgC,CAAC,EAIvC,OAHIF,IAAM,EAAM,qBAAuB,QAAQJ,EAAI,MAAM,mCACrDK,IAAO,EAAM,mBAAqB,QAAQL,EAAI,IAAI,oCAGpD,EAAAN,EAAA,KAAA,CAAC,OAAD,CAAM,UAAWC,EAAG,iBAAkBY,CAAS,EAAU,QAAzD,SAAA,CACGH,IACC,EAAAV,EAAA,IAAA,CAAC,OAAD,CAAM,UAAU,uBAAuB,IAAKI,EACzC,SAAAM,CACG,CAAA,EAEPI,EACAH,IACC,EAAAX,EAAA,IAAA,CAAC,OAAD,CACE,UAAU,wBACV,IAAKK,EACL,mBAAkBU,GAAsB,IAAA,GAEvC,SAAAJ,CACG,CAAA,CAEJ,C,EAEV,C"}
@@ -0,0 +1,19 @@
1
+ import { type ReactNode } from "react";
2
+ export interface FieldAffixProps {
3
+ /** Node pinned to the start of the field — a glyph, a currency mark. */
4
+ lead?: ReactNode;
5
+ /** Node pinned to the end of the field — a unit, a clear button. */
6
+ trail?: ReactNode;
7
+ /** Set when the trailing node is interactive, so it can take the pointer. */
8
+ isTrailInteractive?: boolean;
9
+ className?: string;
10
+ /** The field itself — one `.ds-field-skin` control. */
11
+ children: ReactNode;
12
+ }
13
+ /**
14
+ * The one way a field carries something beside its text. Both affixes are
15
+ * measured, and the control's inline padding is reserved from that measurement
16
+ * — so content never runs under a glyph, whatever the affix holds.
17
+ */
18
+ export declare function FieldAffix({ lead, trail, isTrailInteractive, className, children, }: FieldAffixProps): import("react").JSX.Element;
19
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../../src/components/FieldAffix/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,oBAAoB,CAAC;AAC5B,OAAO,aAAa,CAAC;AAMrB,MAAM,WAAW,eAAe;IAC9B,wEAAwE;IACxE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,oEAAoE;IACpE,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,6EAA6E;IAC7E,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,KAAK,EACL,kBAA0B,EAC1B,SAAS,EACT,QAAQ,GACT,EAAE,eAAe,+BA0CjB"}
@@ -0,0 +1,19 @@
1
+ import { type ReactNode } from "react";
2
+ export interface FieldAffixProps {
3
+ /** Node pinned to the start of the field — a glyph, a currency mark. */
4
+ lead?: ReactNode;
5
+ /** Node pinned to the end of the field — a unit, a clear button. */
6
+ trail?: ReactNode;
7
+ /** Set when the trailing node is interactive, so it can take the pointer. */
8
+ isTrailInteractive?: boolean;
9
+ className?: string;
10
+ /** The field itself — one `.ds-field-skin` control. */
11
+ children: ReactNode;
12
+ }
13
+ /**
14
+ * The one way a field carries something beside its text. Both affixes are
15
+ * measured, and the control's inline padding is reserved from that measurement
16
+ * — so content never runs under a glyph, whatever the affix holds.
17
+ */
18
+ export declare function FieldAffix({ lead, trail, isTrailInteractive, className, children, }: FieldAffixProps): import("react").JSX.Element;
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/FieldAffix/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,oBAAoB,CAAC;AAC5B,OAAO,aAAa,CAAC;AAMrB,MAAM,WAAW,eAAe;IAC9B,wEAAwE;IACxE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,oEAAoE;IACpE,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,6EAA6E;IAC7E,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,KAAK,EACL,kBAA0B,EAC1B,SAAS,EACT,QAAQ,GACT,EAAE,eAAe,+BA0CjB"}
@@ -0,0 +1,45 @@
1
+ /* empty css */
2
+ import { useLayoutEffect as e, useRef as t, useState as n } from "react";
3
+ import { jsx as r, jsxs as i } from "react/jsx-runtime";
4
+ //#region src/components/FieldAffix/index.tsx
5
+ function a(...e) {
6
+ return e.filter(Boolean).join(" ");
7
+ }
8
+ function o({ lead: o, trail: s, isTrailInteractive: c = !1, className: l, children: u }) {
9
+ let d = t(null), f = t(null), [p, m] = n({
10
+ start: 0,
11
+ end: 0
12
+ });
13
+ e(() => {
14
+ let e = () => m({
15
+ start: d.current?.offsetWidth ?? 0,
16
+ end: f.current?.offsetWidth ?? 0
17
+ });
18
+ if (e(), typeof ResizeObserver > "u") return;
19
+ let t = new ResizeObserver(e);
20
+ return d.current && t.observe(d.current), f.current && t.observe(f.current), () => t.disconnect();
21
+ }, [o, s]);
22
+ let h = {};
23
+ return o && (h["--field-pad-start"] = `calc(${p.start}px + var(--field-affix-gap) * 2)`), s && (h["--field-pad-end"] = `calc(${p.end}px + var(--field-affix-gap) * 2)`), /* @__PURE__ */ i("span", {
24
+ className: a("ds-field-affix", l),
25
+ style: h,
26
+ children: [
27
+ o && /* @__PURE__ */ r("span", {
28
+ className: "ds-field-affix__lead",
29
+ ref: d,
30
+ children: o
31
+ }),
32
+ u,
33
+ s && /* @__PURE__ */ r("span", {
34
+ className: "ds-field-affix__trail",
35
+ ref: f,
36
+ "data-interactive": c || void 0,
37
+ children: s
38
+ })
39
+ ]
40
+ });
41
+ }
42
+ //#endregion
43
+ export { o as FieldAffix };
44
+
45
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["cx","parts","FieldAffix","leadRef","useRef","trailRef","pad","setPad","useState","measure","observer","lead","trail","style","className","children","isTrailInteractive"],"sources":["../../../src/components/FieldAffix/index.tsx"],"sourcesContent":["import {\n useLayoutEffect,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport \"../Field/style.css\";\nimport \"./style.css\";\n\nfunction cx(...parts: (string | undefined | false)[]) {\n return parts.filter(Boolean).join(\" \");\n}\n\nexport interface FieldAffixProps {\n /** Node pinned to the start of the field — a glyph, a currency mark. */\n lead?: ReactNode;\n /** Node pinned to the end of the field — a unit, a clear button. */\n trail?: ReactNode;\n /** Set when the trailing node is interactive, so it can take the pointer. */\n isTrailInteractive?: boolean;\n className?: string;\n /** The field itself — one `.ds-field-skin` control. */\n children: ReactNode;\n}\n\n/**\n * The one way a field carries something beside its text. Both affixes are\n * measured, and the control's inline padding is reserved from that measurement\n * — so content never runs under a glyph, whatever the affix holds.\n */\nexport function FieldAffix({\n lead,\n trail,\n isTrailInteractive = false,\n className,\n children,\n}: FieldAffixProps) {\n const leadRef = useRef<HTMLSpanElement | null>(null);\n const trailRef = useRef<HTMLSpanElement | null>(null);\n const [pad, setPad] = useState<{ start: number; end: number }>({ start: 0, end: 0 });\n\n useLayoutEffect(() => {\n const measure = () =>\n setPad({\n start: leadRef.current?.offsetWidth ?? 0,\n end: trailRef.current?.offsetWidth ?? 0,\n });\n measure();\n if (typeof ResizeObserver === \"undefined\") return;\n const observer = new ResizeObserver(measure);\n if (leadRef.current) observer.observe(leadRef.current);\n if (trailRef.current) observer.observe(trailRef.current);\n return () => observer.disconnect();\n }, [lead, trail]);\n\n const style: Record<string, string> = {};\n if (lead) style[\"--field-pad-start\"] = `calc(${pad.start}px + var(--field-affix-gap) * 2)`;\n if (trail) style[\"--field-pad-end\"] = `calc(${pad.end}px + var(--field-affix-gap) * 2)`;\n\n return (\n <span className={cx(\"ds-field-affix\", className)} style={style}>\n {lead && (\n <span className=\"ds-field-affix__lead\" ref={leadRef}>\n {lead}\n </span>\n )}\n {children}\n {trail && (\n <span\n className=\"ds-field-affix__trail\"\n ref={trailRef}\n data-interactive={isTrailInteractive || undefined}\n >\n {trail}\n </span>\n )}\n </span>\n );\n}\n"],"mappings":";;;;AASA,SAASA,EAAG,GAAGC,GAAuC;CACpD,OAAOA,EAAM,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;AACvC;AAmBA,SAAgBC,EAAW,EACzB,SACA,UACA,wBAAqB,IACrB,cACA,eACkB;CAClB,IAAMC,IAAUC,EAA+B,IAAI,GAC7CC,IAAWD,EAA+B,IAAI,GAC9C,CAACE,GAAKC,KAAUC,EAAyC;EAAE,OAAO;EAAG,KAAK;CAAE,CAAC;CAEnF,QAAsB;EACpB,IAAMC,UACJF,EAAO;GACL,OAAOJ,EAAQ,SAAS,eAAe;GACvC,KAAKE,EAAS,SAAS,eAAe;EACxC,CAAC;EAEH,IADAI,EAAQ,GACJ,OAAO,iBAAmB,KAAa;EAC3C,IAAMC,IAAW,IAAI,eAAeD,CAAO;EAG3C,OAFIN,EAAQ,WAASO,EAAS,QAAQP,EAAQ,OAAO,GACjDE,EAAS,WAASK,EAAS,QAAQL,EAAS,OAAO,SAC1CK,EAAS,WAAW;CACnC,GAAG,CAACC,GAAMC,CAAK,CAAC;CAEhB,IAAMC,IAAgC,CAAC;CAIvC,OAHIF,MAAM,EAAM,uBAAuB,QAAQL,EAAI,MAAM,oCACrDM,MAAO,EAAM,qBAAqB,QAAQN,EAAI,IAAI,oCAGpD,kBAAC,QAAD;EAAM,WAAWN,EAAG,kBAAkBc,CAAS;EAAU;EAAzD,UAAA;GACGH,KACC,kBAAC,QAAD;IAAM,WAAU;IAAuB,KAAKR;IACzC,UAAAQ;GACG,CAAA;GAEPI;GACAH,KACC,kBAAC,QAAD;IACE,WAAU;IACV,KAAKP;IACL,oBAAkBW,KAAsB,KAAA;IAEvC,UAAAJ;GACG,CAAA;EAEJ;;AAEV"}
@@ -0,0 +1,54 @@
1
+ @layer components {
2
+ .ds-field-affix {
3
+ --field-affix-gap: 10px;
4
+
5
+ position: relative;
6
+ display: flex;
7
+ align-items: center;
8
+ inline-size: 100%;
9
+ min-inline-size: 0;
10
+ }
11
+
12
+ /* The measured reservation. Beats the sized padding on the field skin so a
13
+ * field with an affix never prints its text under one. */
14
+ .ds-field-affix > input.ds-field-skin[data-size],
15
+ .ds-field-affix > .ds-field-skin {
16
+ padding-inline: var(--field-pad-start, var(--field-affix-gap))
17
+ var(--field-pad-end, var(--field-affix-gap));
18
+ }
19
+
20
+ .ds-field-affix__lead,
21
+ .ds-field-affix__trail {
22
+ position: absolute;
23
+ display: flex;
24
+ align-items: center;
25
+ gap: var(--space-1);
26
+ color: var(--color-text-muted);
27
+ font-size: var(--field-font-size-md);
28
+ pointer-events: none;
29
+ }
30
+
31
+ .ds-field-affix:has(> .ds-field-skin[data-size="sm"]) .ds-field-affix__lead,
32
+ .ds-field-affix:has(> .ds-field-skin[data-size="sm"]) .ds-field-affix__trail {
33
+ font-size: var(--field-font-size-sm);
34
+ }
35
+
36
+ .ds-field-affix:has(> .ds-field-skin[data-size="md"]) .ds-field-affix__lead,
37
+ .ds-field-affix:has(> .ds-field-skin[data-size="md"]) .ds-field-affix__trail,
38
+ .ds-field-affix:has(> .ds-field-skin[data-size="lg"]) .ds-field-affix__lead,
39
+ .ds-field-affix:has(> .ds-field-skin[data-size="lg"]) .ds-field-affix__trail {
40
+ font-size: var(--field-font-size-md);
41
+ }
42
+
43
+ .ds-field-affix__lead {
44
+ inset-inline-start: var(--field-affix-gap);
45
+ }
46
+
47
+ .ds-field-affix__trail {
48
+ inset-inline-end: var(--field-affix-gap);
49
+ }
50
+
51
+ .ds-field-affix__trail[data-interactive] {
52
+ pointer-events: auto;
53
+ }
54
+ }
@@ -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({columns:e=`auto`,gap:n=`md`,rowGap:r,minColumnWidth:i=`var(--asset-tile-min-width)`,align:a=`stretch`,as:o=`div`,className:s,style:c,...l},u){return(0,t.jsx)(o,{ref:u,className:[`ds-grid`,`ds-grid--cols-${e}`,`ds-grid--gap-${n}`,r?`ds-grid--row-gap-${r}`:null,`ds-grid--align-${a}`,s].filter(Boolean).join(` `),style:{"--grid-min-column":i,...c},...l})}),r=(0,e.forwardRef)(function({span:e=1,as:n=`div`,className:r,...i},a){return(0,t.jsx)(n,{ref:a,className:[`ds-grid__item`,`ds-grid__item--span-${e}`,r].filter(Boolean).join(` `),...i})}),i=(0,e.forwardRef)(function({direction:e=`vertical`,gap:n=`md`,align:r=`stretch`,justify:i=`start`,wrap:a=!1,as:o=`div`,className:s,...c},l){return(0,t.jsx)(o,{ref:l,className:[`ds-stack`,`ds-stack--${e}`,`ds-grid--gap-${n}`,`ds-stack--align-${r}`,`ds-stack--justify-${i}`,a?`ds-stack--wrap`:null,s].filter(Boolean).join(` `),...c})});exports.Grid=n,exports.GridItem=r,exports.Stack=i;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["forwardRef","TagEl","react","react_jsx_runtime","Grid","asTag","rest","columns","gap","rowGap","align","className","minColumnWidth","style","GridItem","span","Stack","direction","justify","wrap"],"sources":["../../../src/components/Grid/index.tsx"],"sourcesContent":["import { forwardRef, type CSSProperties, type ElementType, type HTMLAttributes } from \"react\";\nimport \"./style.css\";\n\n/** Gap steps map onto the spacing scale — never a raw pixel value. */\nexport type GapSize = \"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\n\n/** Column counts the system offers. `auto` fills by minimum column width. */\nexport type GridColumns = 1 | 2 | 3 | 4 | 6 | 12 | \"auto\";\n\nexport type GridAlign = \"start\" | \"center\" | \"end\" | \"stretch\";\n\nexport interface GridProps extends HTMLAttributes<HTMLDivElement> {\n /** Columns at the widest. Narrow containers step down automatically. */\n columns?: GridColumns;\n /** Space between every child, in both axes. */\n gap?: GapSize;\n /** Override the row gap when rows should breathe differently. */\n rowGap?: GapSize;\n /** Smallest a column may get before the grid drops one, for `columns=\"auto\"`. */\n minColumnWidth?: string;\n align?: GridAlign;\n /** Render as a different element — `ul`, `section`, and so on. */\n as?: \"div\" | \"ul\" | \"ol\" | \"section\";\n}\n\n/**\n * A spacing wrapper. Put things inside it and they take their rhythm from the\n * wrapper's `gap` — no margins on the children, ever. Columns step down on\n * their own inside a narrow container, so a Grid is safe anywhere.\n */\nexport const Grid = forwardRef<HTMLDivElement, GridProps>(function Grid(\n {\n columns = \"auto\",\n gap = \"md\",\n rowGap,\n minColumnWidth = \"var(--asset-tile-min-width)\",\n align = \"stretch\",\n as: asTag = \"div\",\n className,\n style,\n ...rest\n },\n ref,\n) {\n const TagEl = asTag as ElementType;\n return (\n <TagEl\n ref={ref as never}\n className={[\n \"ds-grid\",\n `ds-grid--cols-${columns}`,\n `ds-grid--gap-${gap}`,\n rowGap ? `ds-grid--row-gap-${rowGap}` : null,\n `ds-grid--align-${align}`,\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n style={{ \"--grid-min-column\": minColumnWidth, ...style } as CSSProperties}\n {...rest}\n />\n );\n});\n\nexport interface GridItemProps extends HTMLAttributes<HTMLDivElement> {\n /** How many columns this child takes. `full` spans the whole row. */\n span?: 1 | 2 | 3 | 4 | 6 | 12 | \"full\";\n as?: \"div\" | \"li\" | \"article\" | \"section\";\n}\n\n/** Only needed when one child should be wider than the rest. */\nexport const GridItem = forwardRef<HTMLDivElement, GridItemProps>(function GridItem(\n { span = 1, as: asTag = \"div\", className, ...rest },\n ref,\n) {\n const TagEl = asTag as ElementType;\n return (\n <TagEl\n ref={ref as never}\n className={[\"ds-grid__item\", `ds-grid__item--span-${span}`, className]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n />\n );\n});\n\nexport type StackDirection = \"vertical\" | \"horizontal\";\n\nexport interface StackProps extends HTMLAttributes<HTMLDivElement> {\n direction?: StackDirection;\n gap?: GapSize;\n align?: \"start\" | \"center\" | \"end\" | \"stretch\" | \"baseline\";\n justify?: \"start\" | \"center\" | \"end\" | \"between\";\n wrap?: boolean;\n as?: \"div\" | \"ul\" | \"ol\" | \"section\" | \"header\" | \"footer\";\n}\n\n/** The one-axis version of Grid: same gap scale, no columns. */\nexport const Stack = forwardRef<HTMLDivElement, StackProps>(function Stack(\n {\n direction = \"vertical\",\n gap = \"md\",\n align = \"stretch\",\n justify = \"start\",\n wrap = false,\n as: asTag = \"div\",\n className,\n ...rest\n },\n ref,\n) {\n const TagEl = asTag as ElementType;\n return (\n <TagEl\n ref={ref as never}\n className={[\n \"ds-stack\",\n `ds-stack--${direction}`,\n `ds-grid--gap-${gap}`,\n `ds-stack--align-${align}`,\n `ds-stack--justify-${justify}`,\n wrap ? \"ds-stack--wrap\" : null,\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n />\n );\n});\n"],"mappings":"A,yHA8BA,IAAaI,GAAA,EAAOJ,EAAAA,WAAAA,CAAsC,SACxD,CACE,UAAU,OACV,MAAM,KACN,SACA,iBAAiB,8BACjB,QAAQ,UACR,GAAIK,EAAQ,MACZ,YACA,QACA,GAAGC,GAEL,EACA,CAEA,OACE,EAAAH,EAAA,IAAA,CAACF,EAAD,CACO,MACL,UAAW,CACT,UACA,iBAAiBM,IACjB,gBAAgBC,IAChBC,EAAS,oBAAoBA,IAAW,KACxC,kBAAkBC,IAClBC,CACF,CAAC,CACE,OAAO,OAAO,CAAC,CACf,KAAK,GAAG,EACX,MAAO,CAAE,oBAAqBC,EAAgB,GAAGC,CAAM,EACvD,GAAIP,CACL,CAAA,CAEL,CAAC,EASYQ,GAAA,EAAWd,EAAAA,WAAAA,CAA0C,SAChE,CAAE,OAAO,EAAG,GAAIK,EAAQ,MAAO,YAAW,GAAGC,GAC7C,EACA,CAEA,OACE,EAAAH,EAAA,IAAA,CAACF,EAAD,CACO,MACL,UAAW,CAAC,gBAAiB,uBAAuBc,IAAQJ,CAAS,CAAC,CACnE,OAAO,OAAO,CAAC,CACf,KAAK,GAAG,EACX,GAAIL,CACL,CAAA,CAEL,CAAC,EAcYU,GAAA,EAAQhB,EAAAA,WAAAA,CAAuC,SAC1D,CACE,YAAY,WACZ,MAAM,KACN,QAAQ,UACR,UAAU,QACV,OAAO,GACP,GAAIK,EAAQ,MACZ,YACA,GAAGC,GAEL,EACA,CAEA,OACE,EAAAH,EAAA,IAAA,CAACF,EAAD,CACO,MACL,UAAW,CACT,WACA,aAAagB,IACb,gBAAgBT,IAChB,mBAAmBE,IACnB,qBAAqBQ,IACrBC,EAAO,iBAAmB,KAC1BR,CACF,CAAC,CACE,OAAO,OAAO,CAAC,CACf,KAAK,GAAG,EACX,GAAIL,CACL,CAAA,CAEL,CAAC,E"}
@@ -0,0 +1,44 @@
1
+ import { type HTMLAttributes } from "react";
2
+ /** Gap steps map onto the spacing scale — never a raw pixel value. */
3
+ export type GapSize = "none" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
4
+ /** Column counts the system offers. `auto` fills by minimum column width. */
5
+ export type GridColumns = 1 | 2 | 3 | 4 | 6 | 12 | "auto";
6
+ export type GridAlign = "start" | "center" | "end" | "stretch";
7
+ export interface GridProps extends HTMLAttributes<HTMLDivElement> {
8
+ /** Columns at the widest. Narrow containers step down automatically. */
9
+ columns?: GridColumns;
10
+ /** Space between every child, in both axes. */
11
+ gap?: GapSize;
12
+ /** Override the row gap when rows should breathe differently. */
13
+ rowGap?: GapSize;
14
+ /** Smallest a column may get before the grid drops one, for `columns="auto"`. */
15
+ minColumnWidth?: string;
16
+ align?: GridAlign;
17
+ /** Render as a different element — `ul`, `section`, and so on. */
18
+ as?: "div" | "ul" | "ol" | "section";
19
+ }
20
+ /**
21
+ * A spacing wrapper. Put things inside it and they take their rhythm from the
22
+ * wrapper's `gap` — no margins on the children, ever. Columns step down on
23
+ * their own inside a narrow container, so a Grid is safe anywhere.
24
+ */
25
+ export declare const Grid: import("react").ForwardRefExoticComponent<GridProps & import("react").RefAttributes<HTMLDivElement>>;
26
+ export interface GridItemProps extends HTMLAttributes<HTMLDivElement> {
27
+ /** How many columns this child takes. `full` spans the whole row. */
28
+ span?: 1 | 2 | 3 | 4 | 6 | 12 | "full";
29
+ as?: "div" | "li" | "article" | "section";
30
+ }
31
+ /** Only needed when one child should be wider than the rest. */
32
+ export declare const GridItem: import("react").ForwardRefExoticComponent<GridItemProps & import("react").RefAttributes<HTMLDivElement>>;
33
+ export type StackDirection = "vertical" | "horizontal";
34
+ export interface StackProps extends HTMLAttributes<HTMLDivElement> {
35
+ direction?: StackDirection;
36
+ gap?: GapSize;
37
+ align?: "start" | "center" | "end" | "stretch" | "baseline";
38
+ justify?: "start" | "center" | "end" | "between";
39
+ wrap?: boolean;
40
+ as?: "div" | "ul" | "ol" | "section" | "header" | "footer";
41
+ }
42
+ /** The one-axis version of Grid: same gap scale, no columns. */
43
+ export declare const Stack: import("react").ForwardRefExoticComponent<StackProps & import("react").RefAttributes<HTMLDivElement>>;
44
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../../src/components/Grid/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAoD,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAC9F,OAAO,aAAa,CAAC;AAErB,sEAAsE;AACtE,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;AAExE,6EAA6E;AAC7E,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC;AAE1D,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;AAE/D,MAAM,WAAW,SAAU,SAAQ,cAAc,CAAC,cAAc,CAAC;IAC/D,wEAAwE;IACxE,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,+CAA+C;IAC/C,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,iEAAiE;IACjE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,iFAAiF;IACjF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,kEAAkE;IAClE,EAAE,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;CACtC;AAED;;;;GAIG;AACH,eAAO,MAAM,IAAI,sGAgCf,CAAC;AAEH,MAAM,WAAW,aAAc,SAAQ,cAAc,CAAC,cAAc,CAAC;IACnE,qEAAqE;IACrE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC;IACvC,EAAE,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,CAAC;CAC3C;AAED,gEAAgE;AAChE,eAAO,MAAM,QAAQ,0GAcnB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,YAAY,CAAC;AAEvD,MAAM,WAAW,UAAW,SAAQ,cAAc,CAAC,cAAc,CAAC;IAChE,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,UAAU,CAAC;IAC5D,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;IACjD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,EAAE,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;CAC5D;AAED,gEAAgE;AAChE,eAAO,MAAM,KAAK,uGA+BhB,CAAC"}