@entifix/react-controls 0.1.0-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (471) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +7 -0
  3. package/dist/i18n/catalog/en.d.ts +10 -0
  4. package/dist/i18n/catalog/en.d.ts.map +1 -0
  5. package/dist/i18n/catalog/en.js +211 -0
  6. package/dist/i18n/catalog/en.js.map +1 -0
  7. package/dist/i18n/catalog/es.d.ts +275 -0
  8. package/dist/i18n/catalog/es.d.ts.map +1 -0
  9. package/dist/i18n/catalog/es.js +261 -0
  10. package/dist/i18n/catalog/es.js.map +1 -0
  11. package/dist/i18n/catalog/index.d.ts +403 -0
  12. package/dist/i18n/catalog/index.d.ts.map +1 -0
  13. package/dist/i18n/catalog/index.js +23 -0
  14. package/dist/i18n/catalog/index.js.map +1 -0
  15. package/dist/i18n/entity-labels.d.ts +29 -0
  16. package/dist/i18n/entity-labels.d.ts.map +1 -0
  17. package/dist/i18n/entity-labels.js +49 -0
  18. package/dist/i18n/entity-labels.js.map +1 -0
  19. package/dist/i18n/fallback-catalogs.d.ts +5 -0
  20. package/dist/i18n/fallback-catalogs.d.ts.map +1 -0
  21. package/dist/i18n/fallback-catalogs.js +34 -0
  22. package/dist/i18n/fallback-catalogs.js.map +1 -0
  23. package/dist/i18n/i18n-context.d.ts +62 -0
  24. package/dist/i18n/i18n-context.d.ts.map +1 -0
  25. package/dist/i18n/i18n-context.js +128 -0
  26. package/dist/i18n/i18n-context.js.map +1 -0
  27. package/dist/i18n/index.d.ts +5 -0
  28. package/dist/i18n/index.d.ts.map +1 -0
  29. package/dist/i18n/index.js +6 -0
  30. package/dist/i18n/index.js.map +1 -0
  31. package/dist/i18n/spec-support/catalogs.d.ts +2 -0
  32. package/dist/i18n/spec-support/catalogs.d.ts.map +1 -0
  33. package/dist/i18n/spec-support/catalogs.js +142 -0
  34. package/dist/i18n/spec-support/catalogs.js.map +1 -0
  35. package/dist/i18next/index.d.ts +20 -0
  36. package/dist/i18next/index.d.ts.map +1 -0
  37. package/dist/i18next/index.js +60 -0
  38. package/dist/i18next/index.js.map +1 -0
  39. package/dist/index.d.ts +46 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +47 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/preferences/index.d.ts +7 -0
  44. package/dist/preferences/index.d.ts.map +1 -0
  45. package/dist/preferences/index.js +8 -0
  46. package/dist/preferences/index.js.map +1 -0
  47. package/dist/preferences/indexeddb-ui-preferences-state.d.ts +16 -0
  48. package/dist/preferences/indexeddb-ui-preferences-state.d.ts.map +1 -0
  49. package/dist/preferences/indexeddb-ui-preferences-state.js +50 -0
  50. package/dist/preferences/indexeddb-ui-preferences-state.js.map +1 -0
  51. package/dist/preferences/local-storage-ui-preferences-state.d.ts +16 -0
  52. package/dist/preferences/local-storage-ui-preferences-state.d.ts.map +1 -0
  53. package/dist/preferences/local-storage-ui-preferences-state.js +51 -0
  54. package/dist/preferences/local-storage-ui-preferences-state.js.map +1 -0
  55. package/dist/preferences/ui-preferences-context.d.ts +16 -0
  56. package/dist/preferences/ui-preferences-context.d.ts.map +1 -0
  57. package/dist/preferences/ui-preferences-context.js +31 -0
  58. package/dist/preferences/ui-preferences-context.js.map +1 -0
  59. package/dist/preferences/ui-preferences-state.d.ts +23 -0
  60. package/dist/preferences/ui-preferences-state.d.ts.map +1 -0
  61. package/dist/preferences/ui-preferences-state.js +5 -0
  62. package/dist/preferences/ui-preferences-state.js.map +1 -0
  63. package/dist/preferences/use-ui-preference.d.ts +20 -0
  64. package/dist/preferences/use-ui-preference.d.ts.map +1 -0
  65. package/dist/preferences/use-ui-preference.js +72 -0
  66. package/dist/preferences/use-ui-preference.js.map +1 -0
  67. package/dist/preferences/use-viewport-mode.d.ts +33 -0
  68. package/dist/preferences/use-viewport-mode.d.ts.map +1 -0
  69. package/dist/preferences/use-viewport-mode.js +53 -0
  70. package/dist/preferences/use-viewport-mode.js.map +1 -0
  71. package/dist/primitives.d.ts +25 -0
  72. package/dist/primitives.d.ts.map +1 -0
  73. package/dist/primitives.js +54 -0
  74. package/dist/primitives.js.map +1 -0
  75. package/dist/theme/index.d.ts +3 -0
  76. package/dist/theme/index.d.ts.map +1 -0
  77. package/dist/theme/index.js +4 -0
  78. package/dist/theme/index.js.map +1 -0
  79. package/dist/theme/theme-context.d.ts +26 -0
  80. package/dist/theme/theme-context.d.ts.map +1 -0
  81. package/dist/theme/theme-context.js +79 -0
  82. package/dist/theme/theme-context.js.map +1 -0
  83. package/dist/theme/types.d.ts +22 -0
  84. package/dist/theme/types.d.ts.map +1 -0
  85. package/dist/theme/types.js +6 -0
  86. package/dist/theme/types.js.map +1 -0
  87. package/dist/ui/actions/action-surfaces.d.ts +59 -0
  88. package/dist/ui/actions/action-surfaces.d.ts.map +1 -0
  89. package/dist/ui/actions/action-surfaces.js +109 -0
  90. package/dist/ui/actions/action-surfaces.js.map +1 -0
  91. package/dist/ui/actions/index.d.ts +2 -0
  92. package/dist/ui/actions/index.d.ts.map +1 -0
  93. package/dist/ui/actions/index.js +3 -0
  94. package/dist/ui/actions/index.js.map +1 -0
  95. package/dist/ui/atoms/button/button-link.d.ts +27 -0
  96. package/dist/ui/atoms/button/button-link.d.ts.map +1 -0
  97. package/dist/ui/atoms/button/button-link.js +23 -0
  98. package/dist/ui/atoms/button/button-link.js.map +1 -0
  99. package/dist/ui/atoms/button/button-recipe.d.ts +19 -0
  100. package/dist/ui/atoms/button/button-recipe.d.ts.map +1 -0
  101. package/dist/ui/atoms/button/button-recipe.js +42 -0
  102. package/dist/ui/atoms/button/button-recipe.js.map +1 -0
  103. package/dist/ui/atoms/button/button.d.ts +7 -0
  104. package/dist/ui/atoms/button/button.d.ts.map +1 -0
  105. package/dist/ui/atoms/button/button.js +22 -0
  106. package/dist/ui/atoms/button/button.js.map +1 -0
  107. package/dist/ui/atoms/button/index.d.ts +4 -0
  108. package/dist/ui/atoms/button/index.d.ts.map +1 -0
  109. package/dist/ui/atoms/button/index.js +5 -0
  110. package/dist/ui/atoms/button/index.js.map +1 -0
  111. package/dist/ui/atoms/cell-value/cell-value.d.ts +12 -0
  112. package/dist/ui/atoms/cell-value/cell-value.d.ts.map +1 -0
  113. package/dist/ui/atoms/cell-value/cell-value.js +101 -0
  114. package/dist/ui/atoms/cell-value/cell-value.js.map +1 -0
  115. package/dist/ui/atoms/cell-value/index.d.ts +2 -0
  116. package/dist/ui/atoms/cell-value/index.d.ts.map +1 -0
  117. package/dist/ui/atoms/cell-value/index.js +3 -0
  118. package/dist/ui/atoms/cell-value/index.js.map +1 -0
  119. package/dist/ui/atoms/field/checkbox.d.ts +35 -0
  120. package/dist/ui/atoms/field/checkbox.d.ts.map +1 -0
  121. package/dist/ui/atoms/field/checkbox.js +46 -0
  122. package/dist/ui/atoms/field/checkbox.js.map +1 -0
  123. package/dist/ui/atoms/field/field.d.ts +4 -0
  124. package/dist/ui/atoms/field/field.d.ts.map +1 -0
  125. package/dist/ui/atoms/field/field.js +29 -0
  126. package/dist/ui/atoms/field/field.js.map +1 -0
  127. package/dist/ui/atoms/field/index.d.ts +3 -0
  128. package/dist/ui/atoms/field/index.d.ts.map +1 -0
  129. package/dist/ui/atoms/field/index.js +4 -0
  130. package/dist/ui/atoms/field/index.js.map +1 -0
  131. package/dist/ui/atoms/field-control/field-control.d.ts +50 -0
  132. package/dist/ui/atoms/field-control/field-control.d.ts.map +1 -0
  133. package/dist/ui/atoms/field-control/field-control.js +82 -0
  134. package/dist/ui/atoms/field-control/field-control.js.map +1 -0
  135. package/dist/ui/atoms/field-control/index.d.ts +2 -0
  136. package/dist/ui/atoms/field-control/index.d.ts.map +1 -0
  137. package/dist/ui/atoms/field-control/index.js +3 -0
  138. package/dist/ui/atoms/field-control/index.js.map +1 -0
  139. package/dist/ui/atoms/skeleton/index.d.ts +2 -0
  140. package/dist/ui/atoms/skeleton/index.d.ts.map +1 -0
  141. package/dist/ui/atoms/skeleton/index.js +3 -0
  142. package/dist/ui/atoms/skeleton/index.js.map +1 -0
  143. package/dist/ui/atoms/skeleton/skeleton.d.ts +21 -0
  144. package/dist/ui/atoms/skeleton/skeleton.d.ts.map +1 -0
  145. package/dist/ui/atoms/skeleton/skeleton.js +33 -0
  146. package/dist/ui/atoms/skeleton/skeleton.js.map +1 -0
  147. package/dist/ui/atoms/table/index.d.ts +2 -0
  148. package/dist/ui/atoms/table/index.d.ts.map +1 -0
  149. package/dist/ui/atoms/table/index.js +3 -0
  150. package/dist/ui/atoms/table/index.js.map +1 -0
  151. package/dist/ui/atoms/table/table.d.ts +30 -0
  152. package/dist/ui/atoms/table/table.d.ts.map +1 -0
  153. package/dist/ui/atoms/table/table.js +84 -0
  154. package/dist/ui/atoms/table/table.js.map +1 -0
  155. package/dist/ui/atoms/text/index.d.ts +2 -0
  156. package/dist/ui/atoms/text/index.d.ts.map +1 -0
  157. package/dist/ui/atoms/text/index.js +3 -0
  158. package/dist/ui/atoms/text/index.js.map +1 -0
  159. package/dist/ui/atoms/text/text.d.ts +86 -0
  160. package/dist/ui/atoms/text/text.d.ts.map +1 -0
  161. package/dist/ui/atoms/text/text.js +221 -0
  162. package/dist/ui/atoms/text/text.js.map +1 -0
  163. package/dist/ui/layout/_demo.d.ts +6 -0
  164. package/dist/ui/layout/_demo.d.ts.map +1 -0
  165. package/dist/ui/layout/_demo.js +11 -0
  166. package/dist/ui/layout/_demo.js.map +1 -0
  167. package/dist/ui/layout/_shared.d.ts +9 -0
  168. package/dist/ui/layout/_shared.d.ts.map +1 -0
  169. package/dist/ui/layout/_shared.js +30 -0
  170. package/dist/ui/layout/_shared.js.map +1 -0
  171. package/dist/ui/layout/box/box.d.ts +10 -0
  172. package/dist/ui/layout/box/box.d.ts.map +1 -0
  173. package/dist/ui/layout/box/box.js +28 -0
  174. package/dist/ui/layout/box/box.js.map +1 -0
  175. package/dist/ui/layout/box/index.d.ts +2 -0
  176. package/dist/ui/layout/box/index.d.ts.map +1 -0
  177. package/dist/ui/layout/box/index.js +3 -0
  178. package/dist/ui/layout/box/index.js.map +1 -0
  179. package/dist/ui/layout/center/center.d.ts +13 -0
  180. package/dist/ui/layout/center/center.d.ts.map +1 -0
  181. package/dist/ui/layout/center/center.js +22 -0
  182. package/dist/ui/layout/center/center.js.map +1 -0
  183. package/dist/ui/layout/center/index.d.ts +2 -0
  184. package/dist/ui/layout/center/index.d.ts.map +1 -0
  185. package/dist/ui/layout/center/index.js +3 -0
  186. package/dist/ui/layout/center/index.js.map +1 -0
  187. package/dist/ui/layout/cluster/cluster.d.ts +11 -0
  188. package/dist/ui/layout/cluster/cluster.d.ts.map +1 -0
  189. package/dist/ui/layout/cluster/cluster.js +19 -0
  190. package/dist/ui/layout/cluster/cluster.js.map +1 -0
  191. package/dist/ui/layout/cluster/index.d.ts +2 -0
  192. package/dist/ui/layout/cluster/index.d.ts.map +1 -0
  193. package/dist/ui/layout/cluster/index.js +3 -0
  194. package/dist/ui/layout/cluster/index.js.map +1 -0
  195. package/dist/ui/layout/cover/cover.d.ts +26 -0
  196. package/dist/ui/layout/cover/cover.d.ts.map +1 -0
  197. package/dist/ui/layout/cover/cover.js +57 -0
  198. package/dist/ui/layout/cover/cover.js.map +1 -0
  199. package/dist/ui/layout/cover/index.d.ts +2 -0
  200. package/dist/ui/layout/cover/index.d.ts.map +1 -0
  201. package/dist/ui/layout/cover/index.js +3 -0
  202. package/dist/ui/layout/cover/index.js.map +1 -0
  203. package/dist/ui/layout/grid/grid.d.ts +14 -0
  204. package/dist/ui/layout/grid/grid.d.ts.map +1 -0
  205. package/dist/ui/layout/grid/grid.js +25 -0
  206. package/dist/ui/layout/grid/grid.js.map +1 -0
  207. package/dist/ui/layout/grid/index.d.ts +2 -0
  208. package/dist/ui/layout/grid/index.d.ts.map +1 -0
  209. package/dist/ui/layout/grid/index.js +3 -0
  210. package/dist/ui/layout/grid/index.js.map +1 -0
  211. package/dist/ui/layout/sidebar/index.d.ts +2 -0
  212. package/dist/ui/layout/sidebar/index.d.ts.map +1 -0
  213. package/dist/ui/layout/sidebar/index.js +3 -0
  214. package/dist/ui/layout/sidebar/index.js.map +1 -0
  215. package/dist/ui/layout/sidebar/sidebar.d.ts +33 -0
  216. package/dist/ui/layout/sidebar/sidebar.d.ts.map +1 -0
  217. package/dist/ui/layout/sidebar/sidebar.js +54 -0
  218. package/dist/ui/layout/sidebar/sidebar.js.map +1 -0
  219. package/dist/ui/layout/switcher/index.d.ts +2 -0
  220. package/dist/ui/layout/switcher/index.d.ts.map +1 -0
  221. package/dist/ui/layout/switcher/index.js +3 -0
  222. package/dist/ui/layout/switcher/index.js.map +1 -0
  223. package/dist/ui/layout/switcher/switcher.d.ts +15 -0
  224. package/dist/ui/layout/switcher/switcher.d.ts.map +1 -0
  225. package/dist/ui/layout/switcher/switcher.js +26 -0
  226. package/dist/ui/layout/switcher/switcher.js.map +1 -0
  227. package/dist/ui/molecules/breadcrumbs/breadcrumbs.d.ts +27 -0
  228. package/dist/ui/molecules/breadcrumbs/breadcrumbs.d.ts.map +1 -0
  229. package/dist/ui/molecules/breadcrumbs/breadcrumbs.js +50 -0
  230. package/dist/ui/molecules/breadcrumbs/breadcrumbs.js.map +1 -0
  231. package/dist/ui/molecules/breadcrumbs/index.d.ts +2 -0
  232. package/dist/ui/molecules/breadcrumbs/index.d.ts.map +1 -0
  233. package/dist/ui/molecules/breadcrumbs/index.js +3 -0
  234. package/dist/ui/molecules/breadcrumbs/index.js.map +1 -0
  235. package/dist/ui/molecules/bulk-action-bar/bulk-action-bar.d.ts +47 -0
  236. package/dist/ui/molecules/bulk-action-bar/bulk-action-bar.d.ts.map +1 -0
  237. package/dist/ui/molecules/bulk-action-bar/bulk-action-bar.js +63 -0
  238. package/dist/ui/molecules/bulk-action-bar/bulk-action-bar.js.map +1 -0
  239. package/dist/ui/molecules/bulk-action-bar/index.d.ts +2 -0
  240. package/dist/ui/molecules/bulk-action-bar/index.d.ts.map +1 -0
  241. package/dist/ui/molecules/bulk-action-bar/index.js +3 -0
  242. package/dist/ui/molecules/bulk-action-bar/index.js.map +1 -0
  243. package/dist/ui/molecules/bulk-result/bulk-result.d.ts +31 -0
  244. package/dist/ui/molecules/bulk-result/bulk-result.d.ts.map +1 -0
  245. package/dist/ui/molecules/bulk-result/bulk-result.js +86 -0
  246. package/dist/ui/molecules/bulk-result/bulk-result.js.map +1 -0
  247. package/dist/ui/molecules/bulk-result/index.d.ts +2 -0
  248. package/dist/ui/molecules/bulk-result/index.d.ts.map +1 -0
  249. package/dist/ui/molecules/bulk-result/index.js +3 -0
  250. package/dist/ui/molecules/bulk-result/index.js.map +1 -0
  251. package/dist/ui/molecules/card/card.d.ts +5 -0
  252. package/dist/ui/molecules/card/card.d.ts.map +1 -0
  253. package/dist/ui/molecules/card/card.js +14 -0
  254. package/dist/ui/molecules/card/card.js.map +1 -0
  255. package/dist/ui/molecules/card/index.d.ts +2 -0
  256. package/dist/ui/molecules/card/index.d.ts.map +1 -0
  257. package/dist/ui/molecules/card/index.js +3 -0
  258. package/dist/ui/molecules/card/index.js.map +1 -0
  259. package/dist/ui/molecules/column-settings/column-settings.d.ts +29 -0
  260. package/dist/ui/molecules/column-settings/column-settings.d.ts.map +1 -0
  261. package/dist/ui/molecules/column-settings/column-settings.js +117 -0
  262. package/dist/ui/molecules/column-settings/column-settings.js.map +1 -0
  263. package/dist/ui/molecules/column-settings/index.d.ts +2 -0
  264. package/dist/ui/molecules/column-settings/index.d.ts.map +1 -0
  265. package/dist/ui/molecules/column-settings/index.js +3 -0
  266. package/dist/ui/molecules/column-settings/index.js.map +1 -0
  267. package/dist/ui/molecules/confirm-dialog/confirm-dialog.d.ts +31 -0
  268. package/dist/ui/molecules/confirm-dialog/confirm-dialog.d.ts.map +1 -0
  269. package/dist/ui/molecules/confirm-dialog/confirm-dialog.js +68 -0
  270. package/dist/ui/molecules/confirm-dialog/confirm-dialog.js.map +1 -0
  271. package/dist/ui/molecules/confirm-dialog/index.d.ts +2 -0
  272. package/dist/ui/molecules/confirm-dialog/index.d.ts.map +1 -0
  273. package/dist/ui/molecules/confirm-dialog/index.js +3 -0
  274. package/dist/ui/molecules/confirm-dialog/index.js.map +1 -0
  275. package/dist/ui/molecules/drawer/drawer.d.ts +25 -0
  276. package/dist/ui/molecules/drawer/drawer.d.ts.map +1 -0
  277. package/dist/ui/molecules/drawer/drawer.js +60 -0
  278. package/dist/ui/molecules/drawer/drawer.js.map +1 -0
  279. package/dist/ui/molecules/drawer/index.d.ts +2 -0
  280. package/dist/ui/molecules/drawer/index.d.ts.map +1 -0
  281. package/dist/ui/molecules/drawer/index.js +3 -0
  282. package/dist/ui/molecules/drawer/index.js.map +1 -0
  283. package/dist/ui/molecules/entity-link-input/entity-link-input.d.ts +36 -0
  284. package/dist/ui/molecules/entity-link-input/entity-link-input.d.ts.map +1 -0
  285. package/dist/ui/molecules/entity-link-input/entity-link-input.js +191 -0
  286. package/dist/ui/molecules/entity-link-input/entity-link-input.js.map +1 -0
  287. package/dist/ui/molecules/entity-link-input/index.d.ts +2 -0
  288. package/dist/ui/molecules/entity-link-input/index.d.ts.map +1 -0
  289. package/dist/ui/molecules/entity-link-input/index.js +3 -0
  290. package/dist/ui/molecules/entity-link-input/index.js.map +1 -0
  291. package/dist/ui/molecules/entity-link-picker/entity-link-picker.d.ts +19 -0
  292. package/dist/ui/molecules/entity-link-picker/entity-link-picker.d.ts.map +1 -0
  293. package/dist/ui/molecules/entity-link-picker/entity-link-picker.js +78 -0
  294. package/dist/ui/molecules/entity-link-picker/entity-link-picker.js.map +1 -0
  295. package/dist/ui/molecules/entity-link-picker/index.d.ts +2 -0
  296. package/dist/ui/molecules/entity-link-picker/index.d.ts.map +1 -0
  297. package/dist/ui/molecules/entity-link-picker/index.js +3 -0
  298. package/dist/ui/molecules/entity-link-picker/index.js.map +1 -0
  299. package/dist/ui/molecules/entity-record-card/entity-record-card.d.ts +30 -0
  300. package/dist/ui/molecules/entity-record-card/entity-record-card.d.ts.map +1 -0
  301. package/dist/ui/molecules/entity-record-card/entity-record-card.js +39 -0
  302. package/dist/ui/molecules/entity-record-card/entity-record-card.js.map +1 -0
  303. package/dist/ui/molecules/entity-record-card/index.d.ts +2 -0
  304. package/dist/ui/molecules/entity-record-card/index.d.ts.map +1 -0
  305. package/dist/ui/molecules/entity-record-card/index.js +3 -0
  306. package/dist/ui/molecules/entity-record-card/index.js.map +1 -0
  307. package/dist/ui/molecules/filter-builder/filter-builder.d.ts +19 -0
  308. package/dist/ui/molecules/filter-builder/filter-builder.d.ts.map +1 -0
  309. package/dist/ui/molecules/filter-builder/filter-builder.js +333 -0
  310. package/dist/ui/molecules/filter-builder/filter-builder.js.map +1 -0
  311. package/dist/ui/molecules/filter-builder/filter-operators.d.ts +20 -0
  312. package/dist/ui/molecules/filter-builder/filter-operators.d.ts.map +1 -0
  313. package/dist/ui/molecules/filter-builder/filter-operators.js +56 -0
  314. package/dist/ui/molecules/filter-builder/filter-operators.js.map +1 -0
  315. package/dist/ui/molecules/filter-builder/index.d.ts +3 -0
  316. package/dist/ui/molecules/filter-builder/index.d.ts.map +1 -0
  317. package/dist/ui/molecules/filter-builder/index.js +4 -0
  318. package/dist/ui/molecules/filter-builder/index.js.map +1 -0
  319. package/dist/ui/molecules/loading-boundary/index.d.ts +2 -0
  320. package/dist/ui/molecules/loading-boundary/index.d.ts.map +1 -0
  321. package/dist/ui/molecules/loading-boundary/index.js +3 -0
  322. package/dist/ui/molecules/loading-boundary/index.js.map +1 -0
  323. package/dist/ui/molecules/loading-boundary/loading-boundary.d.ts +27 -0
  324. package/dist/ui/molecules/loading-boundary/loading-boundary.d.ts.map +1 -0
  325. package/dist/ui/molecules/loading-boundary/loading-boundary.js +42 -0
  326. package/dist/ui/molecules/loading-boundary/loading-boundary.js.map +1 -0
  327. package/dist/ui/molecules/menu/index.d.ts +2 -0
  328. package/dist/ui/molecules/menu/index.d.ts.map +1 -0
  329. package/dist/ui/molecules/menu/index.js +3 -0
  330. package/dist/ui/molecules/menu/index.js.map +1 -0
  331. package/dist/ui/molecules/menu/menu.d.ts +37 -0
  332. package/dist/ui/molecules/menu/menu.d.ts.map +1 -0
  333. package/dist/ui/molecules/menu/menu.js +71 -0
  334. package/dist/ui/molecules/menu/menu.js.map +1 -0
  335. package/dist/ui/molecules/pagination/index.d.ts +2 -0
  336. package/dist/ui/molecules/pagination/index.d.ts.map +1 -0
  337. package/dist/ui/molecules/pagination/index.js +3 -0
  338. package/dist/ui/molecules/pagination/index.js.map +1 -0
  339. package/dist/ui/molecules/pagination/pagination.d.ts +13 -0
  340. package/dist/ui/molecules/pagination/pagination.d.ts.map +1 -0
  341. package/dist/ui/molecules/pagination/pagination.js +68 -0
  342. package/dist/ui/molecules/pagination/pagination.js.map +1 -0
  343. package/dist/ui/molecules/sort-builder/index.d.ts +2 -0
  344. package/dist/ui/molecules/sort-builder/index.d.ts.map +1 -0
  345. package/dist/ui/molecules/sort-builder/index.js +3 -0
  346. package/dist/ui/molecules/sort-builder/index.js.map +1 -0
  347. package/dist/ui/molecules/sort-builder/sort-builder.d.ts +18 -0
  348. package/dist/ui/molecules/sort-builder/sort-builder.d.ts.map +1 -0
  349. package/dist/ui/molecules/sort-builder/sort-builder.js +185 -0
  350. package/dist/ui/molecules/sort-builder/sort-builder.js.map +1 -0
  351. package/dist/ui/molecules/stack/index.d.ts +2 -0
  352. package/dist/ui/molecules/stack/index.d.ts.map +1 -0
  353. package/dist/ui/molecules/stack/index.js +3 -0
  354. package/dist/ui/molecules/stack/index.js.map +1 -0
  355. package/dist/ui/molecules/stack/stack.d.ts +12 -0
  356. package/dist/ui/molecules/stack/stack.d.ts.map +1 -0
  357. package/dist/ui/molecules/stack/stack.js +36 -0
  358. package/dist/ui/molecules/stack/stack.js.map +1 -0
  359. package/dist/ui/molecules/tab-strip/index.d.ts +2 -0
  360. package/dist/ui/molecules/tab-strip/index.d.ts.map +1 -0
  361. package/dist/ui/molecules/tab-strip/index.js +3 -0
  362. package/dist/ui/molecules/tab-strip/index.js.map +1 -0
  363. package/dist/ui/molecules/tab-strip/tab-strip.d.ts +29 -0
  364. package/dist/ui/molecules/tab-strip/tab-strip.d.ts.map +1 -0
  365. package/dist/ui/molecules/tab-strip/tab-strip.js +82 -0
  366. package/dist/ui/molecules/tab-strip/tab-strip.js.map +1 -0
  367. package/dist/ui/molecules/table-toolbar/index.d.ts +2 -0
  368. package/dist/ui/molecules/table-toolbar/index.d.ts.map +1 -0
  369. package/dist/ui/molecules/table-toolbar/index.js +3 -0
  370. package/dist/ui/molecules/table-toolbar/index.js.map +1 -0
  371. package/dist/ui/molecules/table-toolbar/table-toolbar.d.ts +13 -0
  372. package/dist/ui/molecules/table-toolbar/table-toolbar.d.ts.map +1 -0
  373. package/dist/ui/molecules/table-toolbar/table-toolbar.js +28 -0
  374. package/dist/ui/molecules/table-toolbar/table-toolbar.js.map +1 -0
  375. package/dist/ui/molecules/theme-switcher/index.d.ts +2 -0
  376. package/dist/ui/molecules/theme-switcher/index.d.ts.map +1 -0
  377. package/dist/ui/molecules/theme-switcher/index.js +3 -0
  378. package/dist/ui/molecules/theme-switcher/index.js.map +1 -0
  379. package/dist/ui/molecules/theme-switcher/theme-switcher.d.ts +6 -0
  380. package/dist/ui/molecules/theme-switcher/theme-switcher.d.ts.map +1 -0
  381. package/dist/ui/molecules/theme-switcher/theme-switcher.js +24 -0
  382. package/dist/ui/molecules/theme-switcher/theme-switcher.js.map +1 -0
  383. package/dist/ui/organisms/command-palette/command-palette.d.ts +67 -0
  384. package/dist/ui/organisms/command-palette/command-palette.d.ts.map +1 -0
  385. package/dist/ui/organisms/command-palette/command-palette.js +226 -0
  386. package/dist/ui/organisms/command-palette/command-palette.js.map +1 -0
  387. package/dist/ui/organisms/command-palette/index.d.ts +2 -0
  388. package/dist/ui/organisms/command-palette/index.d.ts.map +1 -0
  389. package/dist/ui/organisms/command-palette/index.js +3 -0
  390. package/dist/ui/organisms/command-palette/index.js.map +1 -0
  391. package/dist/ui/organisms/entity-detail-grid/entity-detail-grid.d.ts +43 -0
  392. package/dist/ui/organisms/entity-detail-grid/entity-detail-grid.d.ts.map +1 -0
  393. package/dist/ui/organisms/entity-detail-grid/entity-detail-grid.js +281 -0
  394. package/dist/ui/organisms/entity-detail-grid/entity-detail-grid.js.map +1 -0
  395. package/dist/ui/organisms/entity-detail-grid/entity-detail-grid.types.d.ts +49 -0
  396. package/dist/ui/organisms/entity-detail-grid/entity-detail-grid.types.d.ts.map +1 -0
  397. package/dist/ui/organisms/entity-detail-grid/entity-detail-grid.types.js +3 -0
  398. package/dist/ui/organisms/entity-detail-grid/entity-detail-grid.types.js.map +1 -0
  399. package/dist/ui/organisms/entity-detail-grid/index.d.ts +3 -0
  400. package/dist/ui/organisms/entity-detail-grid/index.d.ts.map +1 -0
  401. package/dist/ui/organisms/entity-detail-grid/index.js +4 -0
  402. package/dist/ui/organisms/entity-detail-grid/index.js.map +1 -0
  403. package/dist/ui/organisms/entity-form/entity-form-slots.d.ts +53 -0
  404. package/dist/ui/organisms/entity-form/entity-form-slots.d.ts.map +1 -0
  405. package/dist/ui/organisms/entity-form/entity-form-slots.js +44 -0
  406. package/dist/ui/organisms/entity-form/entity-form-slots.js.map +1 -0
  407. package/dist/ui/organisms/entity-form/entity-form.d.ts +4 -0
  408. package/dist/ui/organisms/entity-form/entity-form.d.ts.map +1 -0
  409. package/dist/ui/organisms/entity-form/entity-form.js +494 -0
  410. package/dist/ui/organisms/entity-form/entity-form.js.map +1 -0
  411. package/dist/ui/organisms/entity-form/entity-form.types.d.ts +151 -0
  412. package/dist/ui/organisms/entity-form/entity-form.types.d.ts.map +1 -0
  413. package/dist/ui/organisms/entity-form/entity-form.types.js +3 -0
  414. package/dist/ui/organisms/entity-form/entity-form.types.js.map +1 -0
  415. package/dist/ui/organisms/entity-form/index.d.ts +5 -0
  416. package/dist/ui/organisms/entity-form/index.d.ts.map +1 -0
  417. package/dist/ui/organisms/entity-form/index.js +6 -0
  418. package/dist/ui/organisms/entity-form/index.js.map +1 -0
  419. package/dist/ui/organisms/entity-form/use-entity-form-fields.d.ts +13 -0
  420. package/dist/ui/organisms/entity-form/use-entity-form-fields.d.ts.map +1 -0
  421. package/dist/ui/organisms/entity-form/use-entity-form-fields.js +50 -0
  422. package/dist/ui/organisms/entity-form/use-entity-form-fields.js.map +1 -0
  423. package/dist/ui/organisms/entity-table/entity-table-slots.d.ts +55 -0
  424. package/dist/ui/organisms/entity-table/entity-table-slots.d.ts.map +1 -0
  425. package/dist/ui/organisms/entity-table/entity-table-slots.js +50 -0
  426. package/dist/ui/organisms/entity-table/entity-table-slots.js.map +1 -0
  427. package/dist/ui/organisms/entity-table/entity-table.d.ts +4 -0
  428. package/dist/ui/organisms/entity-table/entity-table.d.ts.map +1 -0
  429. package/dist/ui/organisms/entity-table/entity-table.js +529 -0
  430. package/dist/ui/organisms/entity-table/entity-table.js.map +1 -0
  431. package/dist/ui/organisms/entity-table/entity-table.types.d.ts +126 -0
  432. package/dist/ui/organisms/entity-table/entity-table.types.d.ts.map +1 -0
  433. package/dist/ui/organisms/entity-table/entity-table.types.js +3 -0
  434. package/dist/ui/organisms/entity-table/entity-table.types.js.map +1 -0
  435. package/dist/ui/organisms/entity-table/index.d.ts +5 -0
  436. package/dist/ui/organisms/entity-table/index.d.ts.map +1 -0
  437. package/dist/ui/organisms/entity-table/index.js +6 -0
  438. package/dist/ui/organisms/entity-table/index.js.map +1 -0
  439. package/dist/ui/organisms/entity-table/use-entity-table-columns.d.ts +29 -0
  440. package/dist/ui/organisms/entity-table/use-entity-table-columns.d.ts.map +1 -0
  441. package/dist/ui/organisms/entity-table/use-entity-table-columns.js +103 -0
  442. package/dist/ui/organisms/entity-table/use-entity-table-columns.js.map +1 -0
  443. package/dist/ui/organisms/top-bar/index.d.ts +2 -0
  444. package/dist/ui/organisms/top-bar/index.d.ts.map +1 -0
  445. package/dist/ui/organisms/top-bar/index.js +3 -0
  446. package/dist/ui/organisms/top-bar/index.js.map +1 -0
  447. package/dist/ui/organisms/top-bar/top-bar.d.ts +20 -0
  448. package/dist/ui/organisms/top-bar/top-bar.d.ts.map +1 -0
  449. package/dist/ui/organisms/top-bar/top-bar.js +43 -0
  450. package/dist/ui/organisms/top-bar/top-bar.js.map +1 -0
  451. package/dist/ui/organisms/wizard/index.d.ts +3 -0
  452. package/dist/ui/organisms/wizard/index.d.ts.map +1 -0
  453. package/dist/ui/organisms/wizard/index.js +4 -0
  454. package/dist/ui/organisms/wizard/index.js.map +1 -0
  455. package/dist/ui/organisms/wizard/wizard.d.ts +21 -0
  456. package/dist/ui/organisms/wizard/wizard.d.ts.map +1 -0
  457. package/dist/ui/organisms/wizard/wizard.js +260 -0
  458. package/dist/ui/organisms/wizard/wizard.js.map +1 -0
  459. package/dist/ui/organisms/wizard/wizard.types.d.ts +83 -0
  460. package/dist/ui/organisms/wizard/wizard.types.d.ts.map +1 -0
  461. package/dist/ui/organisms/wizard/wizard.types.js +3 -0
  462. package/dist/ui/organisms/wizard/wizard.types.js.map +1 -0
  463. package/dist/ui/utils/cn.d.ts +4 -0
  464. package/dist/ui/utils/cn.d.ts.map +1 -0
  465. package/dist/ui/utils/cn.js +5 -0
  466. package/dist/ui/utils/cn.js.map +1 -0
  467. package/dist/ui/utils/use-hotkey.d.ts +31 -0
  468. package/dist/ui/utils/use-hotkey.d.ts.map +1 -0
  469. package/dist/ui/utils/use-hotkey.js +69 -0
  470. package/dist/ui/utils/use-hotkey.js.map +1 -0
  471. package/package.json +118 -0
@@ -0,0 +1,2 @@
1
+ export * from './cover.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ui/layout/cover/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './cover.js';
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/ui/layout/cover/index.ts"],"sourcesContent":["export * from './cover.js';\n"],"names":[],"mappings":"AAAA,cAAc,aAAa"}
@@ -0,0 +1,14 @@
1
+ import type { ComponentPropsWithoutRef, ElementType } from 'react';
2
+ import { type SpacingToken } from '../_shared.js';
3
+ export interface GridProps extends ComponentPropsWithoutRef<'div'> {
4
+ /** Minimum column width before wrapping (defaults to the --grid-min token). */
5
+ min?: string;
6
+ gap?: SpacingToken;
7
+ as?: ElementType;
8
+ }
9
+ /**
10
+ * The single CSS-Grid escape hatch in a flex-first kit: auto-fill responsive
11
+ * columns for card grids, each at least `min` wide.
12
+ */
13
+ export declare function Grid({ min, gap, as: Tag, className, style, ...props }: GridProps): import("react").JSX.Element;
14
+ //# sourceMappingURL=grid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../../../src/ui/layout/grid/grid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EAExB,WAAW,EACZ,MAAM,OAAO,CAAC;AAGf,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAEvD,MAAM,WAAW,SAAU,SAAQ,wBAAwB,CAAC,KAAK,CAAC;IAChE,+EAA+E;IAC/E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,YAAY,CAAC;IACnB,EAAE,CAAC,EAAE,WAAW,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,IAAI,CAAC,EACnB,GAAG,EACH,GAAS,EACT,EAAE,EAAE,GAAW,EACf,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,SAAS,+BAYX"}
@@ -0,0 +1,25 @@
1
+ import { _ as _extends } from "@swc/helpers/_/_extends";
2
+ import { _ as _object_without_properties_loose } from "@swc/helpers/_/_object_without_properties_loose";
3
+ import { jsx as _jsx } from "react/jsx-runtime";
4
+ import { cn } from '../../utils/cn.js';
5
+ import { GAP } from '../_shared.js';
6
+ /**
7
+ * The single CSS-Grid escape hatch in a flex-first kit: auto-fill responsive
8
+ * columns for card grids, each at least `min` wide.
9
+ */ export function Grid(_0) {
10
+ let { min, gap = 'm', as: Tag = 'div', className, style } = _0, props = _object_without_properties_loose(_0, [
11
+ "min",
12
+ "gap",
13
+ "as",
14
+ "className",
15
+ "style"
16
+ ]);
17
+ return /*#__PURE__*/ _jsx(Tag, _extends({
18
+ className: cn('grid grid-cols-[repeat(auto-fill,minmax(min(var(--_grid-min,16rem),100%),1fr))]', GAP[gap], className),
19
+ style: min ? _extends({}, style, {
20
+ '--_grid-min': min
21
+ }) : style
22
+ }, props));
23
+ }
24
+
25
+ //# sourceMappingURL=grid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/ui/layout/grid/grid.tsx"],"sourcesContent":["import type {\n ComponentPropsWithoutRef,\n CSSProperties,\n ElementType,\n} from 'react';\n\nimport { cn } from '../../utils/cn.js';\nimport { GAP, type SpacingToken } from '../_shared.js';\n\nexport interface GridProps extends ComponentPropsWithoutRef<'div'> {\n /** Minimum column width before wrapping (defaults to the --grid-min token). */\n min?: string;\n gap?: SpacingToken;\n as?: ElementType;\n}\n\n/**\n * The single CSS-Grid escape hatch in a flex-first kit: auto-fill responsive\n * columns for card grids, each at least `min` wide.\n */\nexport function Grid({\n min,\n gap = 'm',\n as: Tag = 'div',\n className,\n style,\n ...props\n}: GridProps) {\n return (\n <Tag\n className={cn(\n 'grid grid-cols-[repeat(auto-fill,minmax(min(var(--_grid-min,16rem),100%),1fr))]',\n GAP[gap],\n className,\n )}\n style={min ? ({ ...style, '--_grid-min': min } as CSSProperties) : style}\n {...props}\n />\n );\n}\n"],"names":["cn","GAP","Grid","min","gap","as","Tag","className","style","props"],"mappings":";;;AAMA,SAASA,EAAE,QAAQ,oBAAoB;AACvC,SAASC,GAAG,QAA2B,gBAAgB;AASvD;;;CAGC,GACD,OAAO,SAASC,KAAK,EAOT;QAPS,EACnBC,GAAG,EACHC,MAAM,GAAG,EACTC,IAAIC,MAAM,KAAK,EACfC,SAAS,EACTC,KAAK,EAEK,OADPC;;;;;;;IAEH,qBACE,KAACH;QACCC,WAAWP,GACT,mFACAC,GAAG,CAACG,IAAI,EACRG;QAEFC,OAAOL,MAAO,aAAKK;YAAO,eAAeL;aAA0BK;OAC/DC;AAGV"}
@@ -0,0 +1,2 @@
1
+ export * from './grid.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ui/layout/grid/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './grid.js';
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/ui/layout/grid/index.ts"],"sourcesContent":["export * from './grid.js';\n"],"names":[],"mappings":"AAAA,cAAc,YAAY"}
@@ -0,0 +1,2 @@
1
+ export * from './sidebar.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ui/layout/sidebar/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './sidebar.js';
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/ui/layout/sidebar/index.ts"],"sourcesContent":["export * from './sidebar.js';\n"],"names":[],"mappings":"AAAA,cAAc,eAAe"}
@@ -0,0 +1,33 @@
1
+ import type { ComponentPropsWithoutRef, ElementType } from 'react';
2
+ import { type SpacingToken } from '../_shared.js';
3
+ export interface SidebarProps extends ComponentPropsWithoutRef<'div'> {
4
+ /** Which edge the fixed panel sits on. */
5
+ side?: 'start' | 'end';
6
+ /** Gap between the side and the main. `'none'` renders them flush. */
7
+ gap?: SpacingToken | 'none';
8
+ as?: ElementType;
9
+ }
10
+ /**
11
+ * Two-panel layout: a fixed-width side + a fluid main that wraps below the
12
+ * side once the main can no longer hold its minimum inline size — no media
13
+ * query. Compose with `Sidebar.Side` and `Sidebar.Main`.
14
+ */
15
+ declare function SidebarRoot({ side, gap, as: Tag, className, ...props }: SidebarProps): import("react").JSX.Element;
16
+ export interface SidebarSideProps extends ComponentPropsWithoutRef<'div'> {
17
+ /** Width of the fixed panel (defaults to 20rem). */
18
+ width?: string;
19
+ as?: ElementType;
20
+ }
21
+ declare function SidebarSide({ width, as: Tag, className, style, ...props }: SidebarSideProps): import("react").JSX.Element;
22
+ export interface SidebarMainProps extends ComponentPropsWithoutRef<'div'> {
23
+ /** Minimum inline size before the main wraps below the side. */
24
+ contentMin?: string;
25
+ as?: ElementType;
26
+ }
27
+ declare function SidebarMain({ contentMin, as: Tag, className, style, ...props }: SidebarMainProps): import("react").JSX.Element;
28
+ export declare const Sidebar: typeof SidebarRoot & {
29
+ Side: typeof SidebarSide;
30
+ Main: typeof SidebarMain;
31
+ };
32
+ export {};
33
+ //# sourceMappingURL=sidebar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../../src/ui/layout/sidebar/sidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EAExB,WAAW,EACZ,MAAM,OAAO,CAAC;AAGf,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAEvD,MAAM,WAAW,YAAa,SAAQ,wBAAwB,CAAC,KAAK,CAAC;IACnE,0CAA0C;IAC1C,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IACvB,sEAAsE;IACtE,GAAG,CAAC,EAAE,YAAY,GAAG,MAAM,CAAC;IAC5B,EAAE,CAAC,EAAE,WAAW,CAAC;CAClB;AAED;;;;GAIG;AACH,iBAAS,WAAW,CAAC,EACnB,IAAc,EACd,GAAS,EACT,EAAE,EAAE,GAAW,EACf,SAAS,EACT,GAAG,KAAK,EACT,EAAE,YAAY,+BAYd;AAED,MAAM,WAAW,gBAAiB,SAAQ,wBAAwB,CAAC,KAAK,CAAC;IACvE,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,WAAW,CAAC;CAClB;AAED,iBAAS,WAAW,CAAC,EACnB,KAAK,EACL,EAAE,EAAE,GAAW,EACf,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,gBAAgB,+BAUlB;AAED,MAAM,WAAW,gBAAiB,SAAQ,wBAAwB,CAAC,KAAK,CAAC;IACvE,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,EAAE,CAAC,EAAE,WAAW,CAAC;CAClB;AAED,iBAAS,WAAW,CAAC,EACnB,UAAU,EACV,EAAE,EAAE,GAAW,EACf,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,gBAAgB,+BAelB;AAED,eAAO,MAAM,OAAO;;;CAGlB,CAAC"}
@@ -0,0 +1,54 @@
1
+ import { _ as _extends } from "@swc/helpers/_/_extends";
2
+ import { _ as _object_without_properties_loose } from "@swc/helpers/_/_object_without_properties_loose";
3
+ import { jsx as _jsx } from "react/jsx-runtime";
4
+ import { cn } from '../../utils/cn.js';
5
+ import { GAP } from '../_shared.js';
6
+ /**
7
+ * Two-panel layout: a fixed-width side + a fluid main that wraps below the
8
+ * side once the main can no longer hold its minimum inline size — no media
9
+ * query. Compose with `Sidebar.Side` and `Sidebar.Main`.
10
+ */ function SidebarRoot(_0) {
11
+ let { side = 'start', gap = 'm', as: Tag = 'div', className } = _0, props = _object_without_properties_loose(_0, [
12
+ "side",
13
+ "gap",
14
+ "as",
15
+ "className"
16
+ ]);
17
+ return /*#__PURE__*/ _jsx(Tag, _extends({
18
+ className: cn('flex flex-wrap', side === 'end' && 'flex-row-reverse', gap !== 'none' && GAP[gap], className)
19
+ }, props));
20
+ }
21
+ function SidebarSide(_0) {
22
+ let { width, as: Tag = 'div', className, style } = _0, props = _object_without_properties_loose(_0, [
23
+ "width",
24
+ "as",
25
+ "className",
26
+ "style"
27
+ ]);
28
+ return /*#__PURE__*/ _jsx(Tag, _extends({
29
+ className: cn('shrink grow basis-[var(--_side-width,20rem)]', className),
30
+ style: width ? _extends({}, style, {
31
+ '--_side-width': width
32
+ }) : style
33
+ }, props));
34
+ }
35
+ function SidebarMain(_0) {
36
+ let { contentMin, as: Tag = 'div', className, style } = _0, props = _object_without_properties_loose(_0, [
37
+ "contentMin",
38
+ "as",
39
+ "className",
40
+ "style"
41
+ ]);
42
+ return /*#__PURE__*/ _jsx(Tag, _extends({
43
+ className: cn('basis-0 min-w-[var(--_content-min,50%)] shrink grow-[999]', className),
44
+ style: contentMin ? _extends({}, style, {
45
+ '--_content-min': contentMin
46
+ }) : style
47
+ }, props));
48
+ }
49
+ export const Sidebar = Object.assign(SidebarRoot, {
50
+ Side: SidebarSide,
51
+ Main: SidebarMain
52
+ });
53
+
54
+ //# sourceMappingURL=sidebar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/ui/layout/sidebar/sidebar.tsx"],"sourcesContent":["import type {\n ComponentPropsWithoutRef,\n CSSProperties,\n ElementType,\n} from 'react';\n\nimport { cn } from '../../utils/cn.js';\nimport { GAP, type SpacingToken } from '../_shared.js';\n\nexport interface SidebarProps extends ComponentPropsWithoutRef<'div'> {\n /** Which edge the fixed panel sits on. */\n side?: 'start' | 'end';\n /** Gap between the side and the main. `'none'` renders them flush. */\n gap?: SpacingToken | 'none';\n as?: ElementType;\n}\n\n/**\n * Two-panel layout: a fixed-width side + a fluid main that wraps below the\n * side once the main can no longer hold its minimum inline size — no media\n * query. Compose with `Sidebar.Side` and `Sidebar.Main`.\n */\nfunction SidebarRoot({\n side = 'start',\n gap = 'm',\n as: Tag = 'div',\n className,\n ...props\n}: SidebarProps) {\n return (\n <Tag\n className={cn(\n 'flex flex-wrap',\n side === 'end' && 'flex-row-reverse',\n gap !== 'none' && GAP[gap],\n className,\n )}\n {...props}\n />\n );\n}\n\nexport interface SidebarSideProps extends ComponentPropsWithoutRef<'div'> {\n /** Width of the fixed panel (defaults to 20rem). */\n width?: string;\n as?: ElementType;\n}\n\nfunction SidebarSide({\n width,\n as: Tag = 'div',\n className,\n style,\n ...props\n}: SidebarSideProps) {\n return (\n <Tag\n className={cn('shrink grow basis-[var(--_side-width,20rem)]', className)}\n style={\n width ? ({ ...style, '--_side-width': width } as CSSProperties) : style\n }\n {...props}\n />\n );\n}\n\nexport interface SidebarMainProps extends ComponentPropsWithoutRef<'div'> {\n /** Minimum inline size before the main wraps below the side. */\n contentMin?: string;\n as?: ElementType;\n}\n\nfunction SidebarMain({\n contentMin,\n as: Tag = 'div',\n className,\n style,\n ...props\n}: SidebarMainProps) {\n return (\n <Tag\n className={cn(\n 'basis-0 min-w-[var(--_content-min,50%)] shrink grow-[999]',\n className,\n )}\n style={\n contentMin\n ? ({ ...style, '--_content-min': contentMin } as CSSProperties)\n : style\n }\n {...props}\n />\n );\n}\n\nexport const Sidebar = Object.assign(SidebarRoot, {\n Side: SidebarSide,\n Main: SidebarMain,\n});\n"],"names":["cn","GAP","SidebarRoot","side","gap","as","Tag","className","props","SidebarSide","width","style","SidebarMain","contentMin","Sidebar","Object","assign","Side","Main"],"mappings":";;;AAMA,SAASA,EAAE,QAAQ,oBAAoB;AACvC,SAASC,GAAG,QAA2B,gBAAgB;AAUvD;;;;CAIC,GACD,SAASC,YAAY,EAMN;QANM,EACnBC,OAAO,OAAO,EACdC,MAAM,GAAG,EACTC,IAAIC,MAAM,KAAK,EACfC,SAAS,EAEI,OADVC;;;;;;IAEH,qBACE,KAACF;QACCC,WAAWP,GACT,kBACAG,SAAS,SAAS,oBAClBC,QAAQ,UAAUH,GAAG,CAACG,IAAI,EAC1BG;OAEEC;AAGV;AAQA,SAASC,YAAY,EAMF;QANE,EACnBC,KAAK,EACLL,IAAIC,MAAM,KAAK,EACfC,SAAS,EACTI,KAAK,EAEY,OADdH;;;;;;IAEH,qBACE,KAACF;QACCC,WAAWP,GAAG,gDAAgDO;QAC9DI,OACED,QAAS,aAAKC;YAAO,iBAAiBD;aAA4BC;OAEhEH;AAGV;AAQA,SAASI,YAAY,EAMF;QANE,EACnBC,UAAU,EACVR,IAAIC,MAAM,KAAK,EACfC,SAAS,EACTI,KAAK,EAEY,OADdH;;;;;;IAEH,qBACE,KAACF;QACCC,WAAWP,GACT,6DACAO;QAEFI,OACEE,aACK,aAAKF;YAAO,kBAAkBE;aAC/BF;OAEFH;AAGV;AAEA,OAAO,MAAMM,UAAUC,OAAOC,MAAM,CAACd,aAAa;IAChDe,MAAMR;IACNS,MAAMN;AACR,GAAG"}
@@ -0,0 +1,2 @@
1
+ export * from './switcher.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ui/layout/switcher/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './switcher.js';
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/ui/layout/switcher/index.ts"],"sourcesContent":["export * from './switcher.js';\n"],"names":[],"mappings":"AAAA,cAAc,gBAAgB"}
@@ -0,0 +1,15 @@
1
+ import type { ComponentPropsWithoutRef, ElementType } from 'react';
2
+ import { type SpacingToken } from '../_shared.js';
3
+ export interface SwitcherProps extends ComponentPropsWithoutRef<'div'> {
4
+ /** Container width at which the row switches to a vertical stack. */
5
+ threshold?: string;
6
+ gap?: SpacingToken;
7
+ as?: ElementType;
8
+ }
9
+ /**
10
+ * Lays children out as equal-width columns, switching to a vertical stack when
11
+ * the container is narrower than `threshold` — achieved purely with flex-basis
12
+ * arithmetic, no media query.
13
+ */
14
+ export declare function Switcher({ threshold, gap, as: Tag, className, style, ...props }: SwitcherProps): import("react").JSX.Element;
15
+ //# sourceMappingURL=switcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switcher.d.ts","sourceRoot":"","sources":["../../../../src/ui/layout/switcher/switcher.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EAExB,WAAW,EACZ,MAAM,OAAO,CAAC;AAGf,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAEvD,MAAM,WAAW,aAAc,SAAQ,wBAAwB,CAAC,KAAK,CAAC;IACpE,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,YAAY,CAAC;IACnB,EAAE,CAAC,EAAE,WAAW,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,EACvB,SAAS,EACT,GAAS,EACT,EAAE,EAAE,GAAW,EACf,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,aAAa,+BAiBf"}
@@ -0,0 +1,26 @@
1
+ import { _ as _extends } from "@swc/helpers/_/_extends";
2
+ import { _ as _object_without_properties_loose } from "@swc/helpers/_/_object_without_properties_loose";
3
+ import { jsx as _jsx } from "react/jsx-runtime";
4
+ import { cn } from '../../utils/cn.js';
5
+ import { GAP } from '../_shared.js';
6
+ /**
7
+ * Lays children out as equal-width columns, switching to a vertical stack when
8
+ * the container is narrower than `threshold` — achieved purely with flex-basis
9
+ * arithmetic, no media query.
10
+ */ export function Switcher(_0) {
11
+ let { threshold, gap = 'm', as: Tag = 'div', className, style } = _0, props = _object_without_properties_loose(_0, [
12
+ "threshold",
13
+ "gap",
14
+ "as",
15
+ "className",
16
+ "style"
17
+ ]);
18
+ return /*#__PURE__*/ _jsx(Tag, _extends({
19
+ className: cn('flex flex-wrap', GAP[gap], '[&>*]:grow [&>*]:basis-[calc((var(--_threshold,30rem)_-_100%)_*_999)]', className),
20
+ style: threshold ? _extends({}, style, {
21
+ '--_threshold': threshold
22
+ }) : style
23
+ }, props));
24
+ }
25
+
26
+ //# sourceMappingURL=switcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/ui/layout/switcher/switcher.tsx"],"sourcesContent":["import type {\n ComponentPropsWithoutRef,\n CSSProperties,\n ElementType,\n} from 'react';\n\nimport { cn } from '../../utils/cn.js';\nimport { GAP, type SpacingToken } from '../_shared.js';\n\nexport interface SwitcherProps extends ComponentPropsWithoutRef<'div'> {\n /** Container width at which the row switches to a vertical stack. */\n threshold?: string;\n gap?: SpacingToken;\n as?: ElementType;\n}\n\n/**\n * Lays children out as equal-width columns, switching to a vertical stack when\n * the container is narrower than `threshold` — achieved purely with flex-basis\n * arithmetic, no media query.\n */\nexport function Switcher({\n threshold,\n gap = 'm',\n as: Tag = 'div',\n className,\n style,\n ...props\n}: SwitcherProps) {\n return (\n <Tag\n className={cn(\n 'flex flex-wrap',\n GAP[gap],\n '[&>*]:grow [&>*]:basis-[calc((var(--_threshold,30rem)_-_100%)_*_999)]',\n className,\n )}\n style={\n threshold\n ? ({ ...style, '--_threshold': threshold } as CSSProperties)\n : style\n }\n {...props}\n />\n );\n}\n"],"names":["cn","GAP","Switcher","threshold","gap","as","Tag","className","style","props"],"mappings":";;;AAMA,SAASA,EAAE,QAAQ,oBAAoB;AACvC,SAASC,GAAG,QAA2B,gBAAgB;AASvD;;;;CAIC,GACD,OAAO,SAASC,SAAS,EAOT;QAPS,EACvBC,SAAS,EACTC,MAAM,GAAG,EACTC,IAAIC,MAAM,KAAK,EACfC,SAAS,EACTC,KAAK,EAES,OADXC;;;;;;;IAEH,qBACE,KAACH;QACCC,WAAWP,GACT,kBACAC,GAAG,CAACG,IAAI,EACR,yEACAG;QAEFC,OACEL,YACK,aAAKK;YAAO,gBAAgBL;aAC7BK;OAEFC;AAGV"}
@@ -0,0 +1,27 @@
1
+ import type { ComponentPropsWithoutRef, ReactNode } from 'react';
2
+ export interface BreadcrumbItem {
3
+ label: string;
4
+ href?: string;
5
+ }
6
+ export interface BreadcrumbsProps extends Omit<ComponentPropsWithoutRef<'nav'>, 'children'> {
7
+ items: BreadcrumbItem[];
8
+ /** Glyph between crumbs. */
9
+ separator?: ReactNode;
10
+ /**
11
+ * Optional custom link renderer for a crumb that has an `href` and is not the
12
+ * last one — lets a Next shell inject `<Link>` for client-side navigation.
13
+ * Falls back to a plain `<a>`.
14
+ */
15
+ /**
16
+ * Routing escape hatch. It receives `className` alongside the item and must
17
+ * spread it onto whatever it renders — the design system owns how a
18
+ * breadcrumb link looks, including its focus ring, and a host that supplied
19
+ * only an href silently lost both.
20
+ */
21
+ renderLink?: (item: Required<BreadcrumbItem> & {
22
+ className: string;
23
+ }) => ReactNode;
24
+ }
25
+ /** Accessible breadcrumb trail. Presentational only — no routing knowledge. */
26
+ export declare function Breadcrumbs({ items, separator, renderLink, className, ...props }: BreadcrumbsProps): import("react").JSX.Element;
27
+ //# sourceMappingURL=breadcrumbs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breadcrumbs.d.ts","sourceRoot":"","sources":["../../../../src/ui/molecules/breadcrumbs/breadcrumbs.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKjE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAC5C,wBAAwB,CAAC,KAAK,CAAC,EAC/B,UAAU,CACX;IACC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;OAIG;IACH;;;;;OAKG;IACH,UAAU,CAAC,EAAE,CACX,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,KACnD,SAAS,CAAC;CAChB;AAKD,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,SAAe,EACf,UAAU,EACV,SAAS,EACT,GAAG,KAAK,EACT,EAAE,gBAAgB,+BA4ClB"}
@@ -0,0 +1,50 @@
1
+ 'use client';
2
+ import { _ as _extends } from "@swc/helpers/_/_extends";
3
+ import { _ as _object_without_properties_loose } from "@swc/helpers/_/_object_without_properties_loose";
4
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
+ import { useT } from '../../../i18n/index.js';
6
+ import { cn } from '../../utils/cn.js';
7
+ /** How a breadcrumb link looks, wherever it is rendered from. */ const LINK_CLASS = 'focus-ring rounded-sm hover:text-content hover:underline';
8
+ /** Accessible breadcrumb trail. Presentational only — no routing knowledge. */ export function Breadcrumbs(_0) {
9
+ let { items, separator = '/', renderLink, className } = _0, props = _object_without_properties_loose(_0, [
10
+ "items",
11
+ "separator",
12
+ "renderLink",
13
+ "className"
14
+ ]);
15
+ const t = useT();
16
+ return /*#__PURE__*/ _jsx("nav", _extends({
17
+ "aria-label": t('breadcrumbs.label'),
18
+ className: cn('text-step-sm text-content-muted', className)
19
+ }, props, {
20
+ children: /*#__PURE__*/ _jsx("ol", {
21
+ className: "flex flex-wrap items-center gap-2xs",
22
+ children: items.map((item, index)=>{
23
+ const isLast = index === items.length - 1;
24
+ const linkable = item.href !== undefined && !isLast;
25
+ return /*#__PURE__*/ _jsxs("li", {
26
+ className: "flex items-center gap-2xs",
27
+ children: [
28
+ linkable ? renderLink ? renderLink(_extends({}, item, {
29
+ className: LINK_CLASS
30
+ })) : /*#__PURE__*/ _jsx("a", {
31
+ href: item.href,
32
+ className: LINK_CLASS,
33
+ children: item.label
34
+ }) : /*#__PURE__*/ _jsx("span", {
35
+ "aria-current": isLast ? 'page' : undefined,
36
+ className: cn(isLast && 'font-medium text-content'),
37
+ children: item.label
38
+ }),
39
+ !isLast && /*#__PURE__*/ _jsx("span", {
40
+ "aria-hidden": "true",
41
+ children: separator
42
+ })
43
+ ]
44
+ }, `${item.label}-${index}`);
45
+ })
46
+ })
47
+ }));
48
+ }
49
+
50
+ //# sourceMappingURL=breadcrumbs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/ui/molecules/breadcrumbs/breadcrumbs.tsx"],"sourcesContent":["'use client';\n\nimport type { ComponentPropsWithoutRef, ReactNode } from 'react';\n\nimport { useT } from '../../../i18n/index.js';\nimport { cn } from '../../utils/cn.js';\n\nexport interface BreadcrumbItem {\n label: string;\n href?: string;\n}\n\nexport interface BreadcrumbsProps extends Omit<\n ComponentPropsWithoutRef<'nav'>,\n 'children'\n> {\n items: BreadcrumbItem[];\n /** Glyph between crumbs. */\n separator?: ReactNode;\n /**\n * Optional custom link renderer for a crumb that has an `href` and is not the\n * last one — lets a Next shell inject `<Link>` for client-side navigation.\n * Falls back to a plain `<a>`.\n */\n /**\n * Routing escape hatch. It receives `className` alongside the item and must\n * spread it onto whatever it renders — the design system owns how a\n * breadcrumb link looks, including its focus ring, and a host that supplied\n * only an href silently lost both.\n */\n renderLink?: (\n item: Required<BreadcrumbItem> & { className: string },\n ) => ReactNode;\n}\n\n/** How a breadcrumb link looks, wherever it is rendered from. */\nconst LINK_CLASS = 'focus-ring rounded-sm hover:text-content hover:underline';\n\n/** Accessible breadcrumb trail. Presentational only — no routing knowledge. */\nexport function Breadcrumbs({\n items,\n separator = '/',\n renderLink,\n className,\n ...props\n}: BreadcrumbsProps) {\n const t = useT();\n\n return (\n <nav\n aria-label={t('breadcrumbs.label')}\n className={cn('text-step-sm text-content-muted', className)}\n {...props}\n >\n <ol className=\"flex flex-wrap items-center gap-2xs\">\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n const linkable = item.href !== undefined && !isLast;\n return (\n <li\n key={`${item.label}-${index}`}\n className=\"flex items-center gap-2xs\"\n >\n {linkable ? (\n renderLink ? (\n renderLink({\n ...(item as Required<BreadcrumbItem>),\n className: LINK_CLASS,\n })\n ) : (\n <a href={item.href} className={LINK_CLASS}>\n {item.label}\n </a>\n )\n ) : (\n <span\n aria-current={isLast ? 'page' : undefined}\n className={cn(isLast && 'font-medium text-content')}\n >\n {item.label}\n </span>\n )}\n {!isLast && <span aria-hidden=\"true\">{separator}</span>}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n}\n"],"names":["useT","cn","LINK_CLASS","Breadcrumbs","items","separator","renderLink","className","props","t","nav","aria-label","ol","map","item","index","isLast","length","linkable","href","undefined","li","a","label","span","aria-current","aria-hidden"],"mappings":"AAAA;;;;AAIA,SAASA,IAAI,QAAQ,yBAAyB;AAC9C,SAASC,EAAE,QAAQ,oBAAoB;AA8BvC,+DAA+D,GAC/D,MAAMC,aAAa;AAEnB,6EAA6E,GAC7E,OAAO,SAASC,YAAY,EAMT;QANS,EAC1BC,KAAK,EACLC,YAAY,GAAG,EACfC,UAAU,EACVC,SAAS,EAEQ,OADdC;;;;;;IAEH,MAAMC,IAAIT;IAEV,qBACE,KAACU;QACCC,cAAYF,EAAE;QACdF,WAAWN,GAAG,mCAAmCM;OAC7CC;kBAEJ,cAAA,KAACI;YAAGL,WAAU;sBACXH,MAAMS,GAAG,CAAC,CAACC,MAAMC;gBAChB,MAAMC,SAASD,UAAUX,MAAMa,MAAM,GAAG;gBACxC,MAAMC,WAAWJ,KAAKK,IAAI,KAAKC,aAAa,CAACJ;gBAC7C,qBACE,MAACK;oBAECd,WAAU;;wBAETW,WACCZ,aACEA,WAAW,aACLQ;4BACJP,WAAWL;4CAGb,KAACoB;4BAAEH,MAAML,KAAKK,IAAI;4BAAEZ,WAAWL;sCAC5BY,KAAKS,KAAK;2CAIf,KAACC;4BACCC,gBAAcT,SAAS,SAASI;4BAChCb,WAAWN,GAAGe,UAAU;sCAEvBF,KAAKS,KAAK;;wBAGd,CAACP,wBAAU,KAACQ;4BAAKE,eAAY;sCAAQrB;;;mBAtBjC,GAAGS,KAAKS,KAAK,CAAC,CAAC,EAAER,OAAO;YAyBnC;;;AAIR"}
@@ -0,0 +1,2 @@
1
+ export * from './breadcrumbs.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ui/molecules/breadcrumbs/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './breadcrumbs.js';
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/ui/molecules/breadcrumbs/index.ts"],"sourcesContent":["export * from './breadcrumbs.js';\n"],"names":[],"mappings":"AAAA,cAAc,mBAAmB"}
@@ -0,0 +1,47 @@
1
+ import type { UseCaseDescriptor } from '@entifix/core';
2
+ export interface BulkActionBarProps {
3
+ /** How many rows the action would touch. */
4
+ count: number;
5
+ /**
6
+ * The collection-bound verbs this caller may run, already filtered against
7
+ * the verified principal by the service. The bar renders what it is given and
8
+ * re-checks nothing — hiding an action protects nothing, the route guard is
9
+ * the enforcement (ADR 0026).
10
+ */
11
+ useCases: readonly UseCaseDescriptor[];
12
+ /**
13
+ * Offered only when the selection is a page's worth of ids *and* more rows
14
+ * match than are shown. Absent means there is no larger set to escalate to.
15
+ *
16
+ * It is a **separate affordance carrying the count**, never a widening of the
17
+ * header checkbox: "select all on this page" and "select all 3.200 matching"
18
+ * are different actions and the second has to be chosen deliberately.
19
+ */
20
+ matchingTotal?: number;
21
+ onSelectAllMatching?: () => void;
22
+ onClear: () => void;
23
+ /**
24
+ * Hands back the descriptor it rendered, not just its key.
25
+ *
26
+ * The caller has to know whether the verb asked to be confirmed, and the bar
27
+ * is already holding the answer. Passing the key alone forced a lookup back
28
+ * into the same list — a branch for "not found" that cannot happen, since
29
+ * every key here came from this array (#216).
30
+ */
31
+ onUseCase: (useCase: UseCaseDescriptor) => void;
32
+ /** Disables every verb while one is running. */
33
+ busy?: boolean;
34
+ className?: string;
35
+ }
36
+ /**
37
+ * The bar that appears once rows are selected: what is selected, what can be
38
+ * done to it, and the way out.
39
+ *
40
+ * It is `aria-live="polite"` on the count rather than on the whole region — a
41
+ * region that re-announces its buttons every time one more row is ticked is
42
+ * noise, and the count is the only part that changed. `role="region"` with a
43
+ * name is what lets a screen-reader user jump to it at all, since it appears
44
+ * without the focus moving.
45
+ */
46
+ export declare function BulkActionBar({ count, useCases, matchingTotal, onSelectAllMatching, onClear, onUseCase, busy, className, }: BulkActionBarProps): import("react").JSX.Element;
47
+ //# sourceMappingURL=bulk-action-bar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bulk-action-bar.d.ts","sourceRoot":"","sources":["../../../../src/ui/molecules/bulk-action-bar/bulk-action-bar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAMvD,MAAM,WAAW,kBAAkB;IACjC,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACvC;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB;;;;;;;OAOG;IACH,SAAS,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAChD,gDAAgD;IAChD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,QAAQ,EACR,aAAa,EACb,mBAAmB,EACnB,OAAO,EACP,SAAS,EACT,IAAY,EACZ,SAAS,GACV,EAAE,kBAAkB,+BA2DpB"}
@@ -0,0 +1,63 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useT, useTranslateKey } from '../../../i18n/index.js';
4
+ import { Button } from '../../atoms/button/index.js';
5
+ import { cn } from '../../utils/cn.js';
6
+ /**
7
+ * The bar that appears once rows are selected: what is selected, what can be
8
+ * done to it, and the way out.
9
+ *
10
+ * It is `aria-live="polite"` on the count rather than on the whole region — a
11
+ * region that re-announces its buttons every time one more row is ticked is
12
+ * noise, and the count is the only part that changed. `role="region"` with a
13
+ * name is what lets a screen-reader user jump to it at all, since it appears
14
+ * without the focus moving.
15
+ */ export function BulkActionBar({ count, useCases, matchingTotal, onSelectAllMatching, onClear, onUseCase, busy = false, className }) {
16
+ const t = useT();
17
+ const translateKey = useTranslateKey();
18
+ return /*#__PURE__*/ _jsxs("div", {
19
+ role: "region",
20
+ "aria-label": t('bulk.barLabel'),
21
+ "data-testid": "bulk-action-bar",
22
+ className: cn('flex flex-wrap items-center gap-2xs rounded-lg border border-border bg-surface-elevated px-s py-2xs', className),
23
+ children: [
24
+ /*#__PURE__*/ _jsx("span", {
25
+ "aria-live": "polite",
26
+ className: "text-step-sm text-content",
27
+ children: t('table.selectedCount', {
28
+ count
29
+ })
30
+ }),
31
+ matchingTotal !== undefined && onSelectAllMatching && /*#__PURE__*/ _jsx(Button, {
32
+ type: "button",
33
+ variant: "ghost",
34
+ size: "sm",
35
+ onClick: onSelectAllMatching,
36
+ children: t('table.selectAllMatching', {
37
+ count: matchingTotal
38
+ })
39
+ }),
40
+ useCases.map((descriptor)=>{
41
+ var _descriptor_confirm;
42
+ return /*#__PURE__*/ _jsx(Button, {
43
+ type: "button",
44
+ variant: ((_descriptor_confirm = descriptor.confirm) == null ? void 0 : _descriptor_confirm.tone) === 'destructive' ? 'destructive' : 'secondary',
45
+ size: "sm",
46
+ disabled: busy,
47
+ onClick: ()=>onUseCase(descriptor),
48
+ children: translateKey(descriptor.labelKey)
49
+ }, descriptor.key);
50
+ }),
51
+ /*#__PURE__*/ _jsx(Button, {
52
+ type: "button",
53
+ variant: "ghost",
54
+ size: "sm",
55
+ disabled: busy,
56
+ onClick: onClear,
57
+ children: t('table.clearSelection')
58
+ })
59
+ ]
60
+ });
61
+ }
62
+
63
+ //# sourceMappingURL=bulk-action-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/ui/molecules/bulk-action-bar/bulk-action-bar.tsx"],"sourcesContent":["'use client';\n\nimport type { UseCaseDescriptor } from '@entifix/core';\n\nimport { useT, useTranslateKey } from '../../../i18n/index.js';\nimport { Button } from '../../atoms/button/index.js';\nimport { cn } from '../../utils/cn.js';\n\nexport interface BulkActionBarProps {\n /** How many rows the action would touch. */\n count: number;\n /**\n * The collection-bound verbs this caller may run, already filtered against\n * the verified principal by the service. The bar renders what it is given and\n * re-checks nothing — hiding an action protects nothing, the route guard is\n * the enforcement (ADR 0026).\n */\n useCases: readonly UseCaseDescriptor[];\n /**\n * Offered only when the selection is a page's worth of ids *and* more rows\n * match than are shown. Absent means there is no larger set to escalate to.\n *\n * It is a **separate affordance carrying the count**, never a widening of the\n * header checkbox: \"select all on this page\" and \"select all 3.200 matching\"\n * are different actions and the second has to be chosen deliberately.\n */\n matchingTotal?: number;\n onSelectAllMatching?: () => void;\n onClear: () => void;\n /**\n * Hands back the descriptor it rendered, not just its key.\n *\n * The caller has to know whether the verb asked to be confirmed, and the bar\n * is already holding the answer. Passing the key alone forced a lookup back\n * into the same list — a branch for \"not found\" that cannot happen, since\n * every key here came from this array (#216).\n */\n onUseCase: (useCase: UseCaseDescriptor) => void;\n /** Disables every verb while one is running. */\n busy?: boolean;\n className?: string;\n}\n\n/**\n * The bar that appears once rows are selected: what is selected, what can be\n * done to it, and the way out.\n *\n * It is `aria-live=\"polite\"` on the count rather than on the whole region — a\n * region that re-announces its buttons every time one more row is ticked is\n * noise, and the count is the only part that changed. `role=\"region\"` with a\n * name is what lets a screen-reader user jump to it at all, since it appears\n * without the focus moving.\n */\nexport function BulkActionBar({\n count,\n useCases,\n matchingTotal,\n onSelectAllMatching,\n onClear,\n onUseCase,\n busy = false,\n className,\n}: BulkActionBarProps) {\n const t = useT();\n const translateKey = useTranslateKey();\n\n return (\n <div\n role=\"region\"\n aria-label={t('bulk.barLabel')}\n data-testid=\"bulk-action-bar\"\n className={cn(\n 'flex flex-wrap items-center gap-2xs rounded-lg border border-border bg-surface-elevated px-s py-2xs',\n className,\n )}\n >\n <span aria-live=\"polite\" className=\"text-step-sm text-content\">\n {t('table.selectedCount', { count })}\n </span>\n\n {matchingTotal !== undefined && onSelectAllMatching && (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={onSelectAllMatching}\n >\n {t('table.selectAllMatching', { count: matchingTotal })}\n </Button>\n )}\n\n {useCases.map(descriptor => (\n <Button\n key={descriptor.key}\n type=\"button\"\n variant={\n descriptor.confirm?.tone === 'destructive'\n ? 'destructive'\n : 'secondary'\n }\n size=\"sm\"\n disabled={busy}\n onClick={() => onUseCase(descriptor)}\n >\n {/* A descriptor's label is a *runtime* catalog key — the type system\n cannot see a typo here, `@r10c/i18n-check` is what does. */}\n {translateKey(descriptor.labelKey)}\n </Button>\n ))}\n\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n disabled={busy}\n onClick={onClear}\n >\n {t('table.clearSelection')}\n </Button>\n </div>\n );\n}\n"],"names":["useT","useTranslateKey","Button","cn","BulkActionBar","count","useCases","matchingTotal","onSelectAllMatching","onClear","onUseCase","busy","className","t","translateKey","div","role","aria-label","data-testid","span","aria-live","undefined","type","variant","size","onClick","map","descriptor","confirm","tone","disabled","labelKey","key"],"mappings":"AAAA;;AAIA,SAASA,IAAI,EAAEC,eAAe,QAAQ,yBAAyB;AAC/D,SAASC,MAAM,QAAQ,8BAA8B;AACrD,SAASC,EAAE,QAAQ,oBAAoB;AAqCvC;;;;;;;;;CASC,GACD,OAAO,SAASC,cAAc,EAC5BC,KAAK,EACLC,QAAQ,EACRC,aAAa,EACbC,mBAAmB,EACnBC,OAAO,EACPC,SAAS,EACTC,OAAO,KAAK,EACZC,SAAS,EACU;IACnB,MAAMC,IAAIb;IACV,MAAMc,eAAeb;IAErB,qBACE,MAACc;QACCC,MAAK;QACLC,cAAYJ,EAAE;QACdK,eAAY;QACZN,WAAWT,GACT,uGACAS;;0BAGF,KAACO;gBAAKC,aAAU;gBAASR,WAAU;0BAChCC,EAAE,uBAAuB;oBAAER;gBAAM;;YAGnCE,kBAAkBc,aAAab,qCAC9B,KAACN;gBACCoB,MAAK;gBACLC,SAAQ;gBACRC,MAAK;gBACLC,SAASjB;0BAERK,EAAE,2BAA2B;oBAAER,OAAOE;gBAAc;;YAIxDD,SAASoB,GAAG,CAACC,CAAAA;oBAKRA;qCAJJ,KAACzB;oBAECoB,MAAK;oBACLC,SACEI,EAAAA,sBAAAA,WAAWC,OAAO,qBAAlBD,oBAAoBE,IAAI,MAAK,gBACzB,gBACA;oBAENL,MAAK;oBACLM,UAAUnB;oBACVc,SAAS,IAAMf,UAAUiB;8BAIxBb,aAAaa,WAAWI,QAAQ;mBAb5BJ,WAAWK,GAAG;;0BAiBvB,KAAC9B;gBACCoB,MAAK;gBACLC,SAAQ;gBACRC,MAAK;gBACLM,UAAUnB;gBACVc,SAAShB;0BAERI,EAAE;;;;AAIX"}
@@ -0,0 +1,2 @@
1
+ export * from './bulk-action-bar.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ui/molecules/bulk-action-bar/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './bulk-action-bar.js';
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/ui/molecules/bulk-action-bar/index.ts"],"sourcesContent":["export * from './bulk-action-bar.js';\n"],"names":[],"mappings":"AAAA,cAAc,uBAAuB"}
@@ -0,0 +1,31 @@
1
+ import { type BulkOutcome, type EntityId } from '@entifix/core';
2
+ export interface BulkResultProps {
3
+ outcomes: readonly BulkOutcome[];
4
+ /**
5
+ * How a failed row is named to the user. An id is not an answer to "which
6
+ * ones failed" — the caller holds the rows and can render the same label the
7
+ * table shows. Falls back to the id when the row is no longer on the page.
8
+ */
9
+ labelFor?: (id: EntityId) => string | undefined;
10
+ /** Re-runs the failures **only**. Absent hides the affordance. */
11
+ onRetryFailed?: (ids: EntityId[]) => void;
12
+ onDismiss: () => void;
13
+ busy?: boolean;
14
+ className?: string;
15
+ }
16
+ /**
17
+ * What a bulk action actually did, per row.
18
+ *
19
+ * The requirement this exists for: 40 selected, 3 fail. A single notice lies
20
+ * whichever way it is written — as a failure it hides the 37 rows that were
21
+ * written, and as a success it hides the 3 that were not, which is worse
22
+ * because the user walks away believing the work is done. So both counts are
23
+ * always stated, and every failure is named with its own reason.
24
+ *
25
+ * `role="status"`, not `role="alert"`: a partial failure is an outcome to read,
26
+ * not an interruption, and `alert` on a list this long is hostile. The region
27
+ * is `tabIndex={-1}` so the caller can move focus to it once the run ends,
28
+ * which is the only reliable way a keyboard user learns the result arrived.
29
+ */
30
+ export declare function BulkResult({ outcomes, labelFor, onRetryFailed, onDismiss, busy, className, }: BulkResultProps): import("react").JSX.Element;
31
+ //# sourceMappingURL=bulk-result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bulk-result.d.ts","sourceRoot":"","sources":["../../../../src/ui/molecules/bulk-result/bulk-result.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,QAAQ,EAGd,MAAM,eAAe,CAAC;AAMvB,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IACjC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,MAAM,GAAG,SAAS,CAAC;IAChD,kEAAkE;IAClE,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;IAC1C,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,SAAS,EACT,IAAY,EACZ,SAAS,GACV,EAAE,eAAe,+BAyEjB"}