@ketvietlab/design-system 0.1.9 → 0.1.13

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 (371) hide show
  1. package/README.md +92 -6
  2. package/dist/atlas/README.md +35 -0
  3. package/dist/atlas/adapter.schema.json +78 -0
  4. package/dist/atlas/profile.json +43 -0
  5. package/dist/atlas-cli.d.ts +3 -0
  6. package/dist/atlas-cli.d.ts.map +1 -0
  7. package/dist/atlas-cli.js +213 -0
  8. package/dist/atlas-cli.js.map +1 -0
  9. package/dist/catalogue/catalogue.css +198 -5
  10. package/dist/catalogue/groups.d.ts +11 -0
  11. package/dist/catalogue/groups.d.ts.map +1 -0
  12. package/dist/catalogue/groups.js +47 -0
  13. package/dist/catalogue/groups.js.map +1 -0
  14. package/dist/catalogue/index.d.ts +16 -17
  15. package/dist/catalogue/index.d.ts.map +1 -1
  16. package/dist/catalogue/index.js +39 -751
  17. package/dist/catalogue/index.js.map +1 -1
  18. package/dist/catalogue/inventory-policy.json +560 -0
  19. package/dist/catalogue/inventory.css +574 -0
  20. package/dist/catalogue/inventory.d.ts +16 -0
  21. package/dist/catalogue/inventory.d.ts.map +1 -0
  22. package/dist/catalogue/inventory.generated.d.ts +42 -0
  23. package/dist/catalogue/inventory.generated.d.ts.map +1 -0
  24. package/dist/catalogue/inventory.generated.js +3 -0
  25. package/dist/catalogue/inventory.generated.js.map +1 -0
  26. package/dist/catalogue/inventory.generated.json +9993 -0
  27. package/dist/catalogue/inventory.js +48 -0
  28. package/dist/catalogue/inventory.js.map +1 -0
  29. package/dist/catalogue/registry.d.ts +12 -0
  30. package/dist/catalogue/registry.d.ts.map +1 -0
  31. package/dist/catalogue/registry.js +134 -0
  32. package/dist/catalogue/registry.js.map +1 -0
  33. package/dist/catalogue/specimens.d.ts +15 -0
  34. package/dist/catalogue/specimens.d.ts.map +1 -0
  35. package/dist/catalogue/specimens.js +1186 -0
  36. package/dist/catalogue/specimens.js.map +1 -0
  37. package/dist/catalogue/styles.css +1 -0
  38. package/dist/contract/index.d.ts.map +1 -1
  39. package/dist/contract/index.js +64 -18
  40. package/dist/contract/index.js.map +1 -1
  41. package/dist/data-display/data-grid/index.d.ts +22 -0
  42. package/dist/data-display/data-grid/index.d.ts.map +1 -0
  43. package/dist/data-display/data-grid/index.js +15 -0
  44. package/dist/data-display/data-grid/index.js.map +1 -0
  45. package/dist/data-display/data-grid/styles.css +49 -0
  46. package/dist/data-display/resource-list/index.d.ts +22 -0
  47. package/dist/data-display/resource-list/index.d.ts.map +1 -0
  48. package/dist/data-display/resource-list/index.js +21 -0
  49. package/dist/data-display/resource-list/index.js.map +1 -0
  50. package/dist/data-display/resource-list/styles.css +39 -0
  51. package/dist/data-display/tree/index.d.ts +33 -0
  52. package/dist/data-display/tree/index.d.ts.map +1 -0
  53. package/dist/data-display/tree/index.js +21 -0
  54. package/dist/data-display/tree/index.js.map +1 -0
  55. package/dist/data-display/tree/styles.css +45 -0
  56. package/dist/data-operations/inline-edit/index.d.ts +19 -0
  57. package/dist/data-operations/inline-edit/index.d.ts.map +1 -0
  58. package/dist/data-operations/inline-edit/index.js +5 -0
  59. package/dist/data-operations/inline-edit/index.js.map +1 -0
  60. package/dist/data-operations/inline-edit/styles.css +34 -0
  61. package/dist/data-operations/list-controls/index.d.ts +67 -0
  62. package/dist/data-operations/list-controls/index.d.ts.map +1 -0
  63. package/dist/data-operations/list-controls/index.js +35 -0
  64. package/dist/data-operations/list-controls/index.js.map +1 -0
  65. package/dist/data-operations/list-controls/styles.css +82 -0
  66. package/dist/forms/combobox/index.d.ts +39 -0
  67. package/dist/forms/combobox/index.d.ts.map +1 -0
  68. package/dist/forms/combobox/index.js +23 -0
  69. package/dist/forms/combobox/index.js.map +1 -0
  70. package/dist/forms/combobox/styles.css +76 -0
  71. package/dist/forms/date-time/index.d.ts +25 -0
  72. package/dist/forms/date-time/index.d.ts.map +1 -0
  73. package/dist/forms/date-time/index.js +15 -0
  74. package/dist/forms/date-time/index.js.map +1 -0
  75. package/dist/forms/date-time/styles.css +25 -0
  76. package/dist/forms/relation-picker/index.d.ts +12 -0
  77. package/dist/forms/relation-picker/index.d.ts.map +1 -0
  78. package/dist/forms/relation-picker/index.js +13 -0
  79. package/dist/forms/relation-picker/index.js.map +1 -0
  80. package/dist/forms/relation-picker/styles.css +5 -0
  81. package/dist/forms/scalar-fields/index.d.ts +24 -0
  82. package/dist/forms/scalar-fields/index.d.ts.map +1 -0
  83. package/dist/forms/scalar-fields/index.js +23 -0
  84. package/dist/forms/scalar-fields/index.js.map +1 -0
  85. package/dist/forms/scalar-fields/styles.css +52 -0
  86. package/dist/forms/shared.d.ts +19 -0
  87. package/dist/forms/shared.d.ts.map +1 -0
  88. package/dist/forms/shared.js +9 -0
  89. package/dist/forms/shared.js.map +1 -0
  90. package/dist/forms/upload/index.d.ts +20 -0
  91. package/dist/forms/upload/index.d.ts.map +1 -0
  92. package/dist/forms/upload/index.js +11 -0
  93. package/dist/forms/upload/index.js.map +1 -0
  94. package/dist/forms/upload/styles.css +21 -0
  95. package/dist/foundations/reset.css +4 -0
  96. package/dist/foundations/tokens.css +31 -4
  97. package/dist/index.d.ts +78 -35
  98. package/dist/index.d.ts.map +1 -1
  99. package/dist/index.js +43 -19
  100. package/dist/index.js.map +1 -1
  101. package/dist/interactions/dialog/index.d.ts +25 -0
  102. package/dist/interactions/dialog/index.d.ts.map +1 -0
  103. package/dist/interactions/dialog/index.js +10 -0
  104. package/dist/interactions/dialog/index.js.map +1 -0
  105. package/dist/interactions/dialog/styles.css +11 -0
  106. package/dist/interactions/menu/index.d.ts +27 -0
  107. package/dist/interactions/menu/index.d.ts.map +1 -0
  108. package/dist/interactions/menu/index.js +13 -0
  109. package/dist/interactions/menu/index.js.map +1 -0
  110. package/dist/interactions/menu/styles.css +85 -0
  111. package/dist/interactions/popover/index.d.ts +15 -0
  112. package/dist/interactions/popover/index.d.ts.map +1 -0
  113. package/dist/interactions/popover/index.js +4 -0
  114. package/dist/interactions/popover/index.js.map +1 -0
  115. package/dist/interactions/popover/styles.css +47 -0
  116. package/dist/interactions/skeleton/index.d.ts +7 -0
  117. package/dist/interactions/skeleton/index.d.ts.map +1 -0
  118. package/dist/interactions/skeleton/index.js +5 -0
  119. package/dist/interactions/skeleton/index.js.map +1 -0
  120. package/dist/interactions/skeleton/styles.css +32 -0
  121. package/dist/interactions/spinner/index.d.ts +7 -0
  122. package/dist/interactions/spinner/index.d.ts.map +1 -0
  123. package/dist/interactions/spinner/index.js +4 -0
  124. package/dist/interactions/spinner/index.js.map +1 -0
  125. package/dist/interactions/spinner/styles.css +38 -0
  126. package/dist/interactions/toast/index.d.ts +16 -0
  127. package/dist/interactions/toast/index.d.ts.map +1 -0
  128. package/dist/interactions/toast/index.js +13 -0
  129. package/dist/interactions/toast/index.js.map +1 -0
  130. package/dist/interactions/toast/styles.css +64 -0
  131. package/dist/interactions/tooltip/index.d.ts +9 -0
  132. package/dist/interactions/tooltip/index.d.ts.map +1 -0
  133. package/dist/interactions/tooltip/index.js +4 -0
  134. package/dist/interactions/tooltip/index.js.map +1 -0
  135. package/dist/interactions/tooltip/styles.css +65 -0
  136. package/dist/layouts/app-navigation/index.d.ts +63 -0
  137. package/dist/layouts/app-navigation/index.d.ts.map +1 -0
  138. package/dist/layouts/app-navigation/index.js +50 -0
  139. package/dist/layouts/app-navigation/index.js.map +1 -0
  140. package/dist/layouts/app-navigation/styles.css +331 -0
  141. package/dist/layouts/app-navigation.d.ts +2 -0
  142. package/dist/layouts/app-navigation.d.ts.map +1 -0
  143. package/dist/layouts/app-navigation.js +2 -0
  144. package/dist/layouts/app-navigation.js.map +1 -0
  145. package/dist/layouts/flat/styles.css +74 -0
  146. package/dist/layouts/flat.css +1 -74
  147. package/dist/layouts/grouped/styles.css +131 -0
  148. package/dist/layouts/grouped.css +1 -126
  149. package/dist/layouts/index.d.ts +1 -69
  150. package/dist/layouts/index.d.ts.map +1 -1
  151. package/dist/layouts/index.js +1 -68
  152. package/dist/layouts/index.js.map +1 -1
  153. package/dist/layouts/layout/index.d.ts +70 -0
  154. package/dist/layouts/layout/index.d.ts.map +1 -0
  155. package/dist/layouts/layout/index.js +71 -0
  156. package/dist/layouts/layout/index.js.map +1 -0
  157. package/dist/layouts/layout/styles.css +369 -0
  158. package/dist/layouts/layouts.css +1 -369
  159. package/dist/layouts/shell/index.d.ts +27 -0
  160. package/dist/layouts/shell/index.d.ts.map +1 -0
  161. package/dist/layouts/shell/index.js +24 -0
  162. package/dist/layouts/shell/index.js.map +1 -0
  163. package/dist/layouts/shell/styles.css +168 -0
  164. package/dist/layouts/shell.css +1 -168
  165. package/dist/layouts/shell.d.ts +1 -26
  166. package/dist/layouts/shell.d.ts.map +1 -1
  167. package/dist/layouts/shell.js +1 -23
  168. package/dist/layouts/shell.js.map +1 -1
  169. package/dist/patterns/board-page/index.d.ts +16 -0
  170. package/dist/patterns/board-page/index.d.ts.map +1 -0
  171. package/dist/patterns/board-page/index.js +30 -0
  172. package/dist/patterns/board-page/index.js.map +1 -0
  173. package/dist/patterns/board-page/styles.css +164 -0
  174. package/dist/patterns/board-page.d.ts +1 -13
  175. package/dist/patterns/board-page.d.ts.map +1 -1
  176. package/dist/patterns/board-page.js +1 -27
  177. package/dist/patterns/board-page.js.map +1 -1
  178. package/dist/patterns/dashboard-page/index.d.ts +15 -0
  179. package/dist/patterns/dashboard-page/index.d.ts.map +1 -0
  180. package/dist/patterns/dashboard-page/index.js +27 -0
  181. package/dist/patterns/dashboard-page/index.js.map +1 -0
  182. package/dist/patterns/dashboard-page/styles.css +169 -0
  183. package/dist/patterns/dashboard-page.d.ts +1 -12
  184. package/dist/patterns/dashboard-page.d.ts.map +1 -1
  185. package/dist/patterns/dashboard-page.js +1 -24
  186. package/dist/patterns/dashboard-page.js.map +1 -1
  187. package/dist/patterns/data-table/index.d.ts +74 -0
  188. package/dist/patterns/data-table/index.d.ts.map +1 -0
  189. package/dist/patterns/data-table/index.js +60 -0
  190. package/dist/patterns/data-table/index.js.map +1 -0
  191. package/dist/patterns/data-table/styles.css +269 -0
  192. package/dist/patterns/data-table.d.ts +1 -73
  193. package/dist/patterns/data-table.d.ts.map +1 -1
  194. package/dist/patterns/data-table.js +1 -59
  195. package/dist/patterns/data-table.js.map +1 -1
  196. package/dist/patterns/form-page/index.d.ts +8 -0
  197. package/dist/patterns/form-page/index.d.ts.map +1 -0
  198. package/dist/patterns/form-page/index.js +22 -0
  199. package/dist/patterns/form-page/index.js.map +1 -0
  200. package/dist/patterns/form-page/styles.css +237 -0
  201. package/dist/patterns/form-page.d.ts +1 -7
  202. package/dist/patterns/form-page.d.ts.map +1 -1
  203. package/dist/patterns/form-page.js +1 -21
  204. package/dist/patterns/form-page.js.map +1 -1
  205. package/dist/patterns/list-chrome/index.d.ts +80 -0
  206. package/dist/patterns/list-chrome/index.d.ts.map +1 -0
  207. package/dist/patterns/list-chrome/index.js +45 -0
  208. package/dist/patterns/list-chrome/index.js.map +1 -0
  209. package/dist/patterns/list-chrome/styles.css +245 -0
  210. package/dist/patterns/list-chrome.d.ts +1 -79
  211. package/dist/patterns/list-chrome.d.ts.map +1 -1
  212. package/dist/patterns/list-chrome.js +1 -44
  213. package/dist/patterns/list-chrome.js.map +1 -1
  214. package/dist/patterns/list-page/index.d.ts +31 -0
  215. package/dist/patterns/list-page/index.d.ts.map +1 -0
  216. package/dist/patterns/list-page/index.js +41 -0
  217. package/dist/patterns/list-page/index.js.map +1 -0
  218. package/dist/patterns/list-page/responsive.css +140 -0
  219. package/dist/patterns/list-page/styles.css +228 -0
  220. package/dist/patterns/list-page.d.ts +1 -30
  221. package/dist/patterns/list-page.d.ts.map +1 -1
  222. package/dist/patterns/list-page.js +1 -40
  223. package/dist/patterns/list-page.js.map +1 -1
  224. package/dist/patterns/modal-sheet/index.d.ts +16 -0
  225. package/dist/patterns/modal-sheet/index.d.ts.map +1 -0
  226. package/dist/patterns/modal-sheet/index.js +15 -0
  227. package/dist/patterns/modal-sheet/index.js.map +1 -0
  228. package/dist/patterns/modal-sheet/styles.css +219 -0
  229. package/dist/patterns/modal-sheet.d.ts +1 -15
  230. package/dist/patterns/modal-sheet.d.ts.map +1 -1
  231. package/dist/patterns/modal-sheet.js +1 -14
  232. package/dist/patterns/modal-sheet.js.map +1 -1
  233. package/dist/patterns/page-shell/index.d.ts +24 -0
  234. package/dist/patterns/page-shell/index.d.ts.map +1 -0
  235. package/dist/patterns/page-shell/index.js +11 -0
  236. package/dist/patterns/page-shell/index.js.map +1 -0
  237. package/dist/patterns/page-shell.d.ts +1 -23
  238. package/dist/patterns/page-shell.d.ts.map +1 -1
  239. package/dist/patterns/page-shell.js +1 -10
  240. package/dist/patterns/page-shell.js.map +1 -1
  241. package/dist/patterns/patterns.css +12 -2247
  242. package/dist/patterns/pipeline/index.d.ts +29 -0
  243. package/dist/patterns/pipeline/index.d.ts.map +1 -0
  244. package/dist/patterns/pipeline/index.js +26 -0
  245. package/dist/patterns/pipeline/index.js.map +1 -0
  246. package/dist/patterns/pipeline/styles.css +168 -0
  247. package/dist/patterns/pipeline.d.ts +1 -28
  248. package/dist/patterns/pipeline.d.ts.map +1 -1
  249. package/dist/patterns/pipeline.js +1 -25
  250. package/dist/patterns/pipeline.js.map +1 -1
  251. package/dist/patterns/record-form/index.d.ts +18 -0
  252. package/dist/patterns/record-form/index.d.ts.map +1 -0
  253. package/dist/patterns/record-form/index.js +14 -0
  254. package/dist/patterns/record-form/index.js.map +1 -0
  255. package/dist/patterns/record-form/styles.css +175 -0
  256. package/dist/patterns/record-form.d.ts +1 -17
  257. package/dist/patterns/record-form.d.ts.map +1 -1
  258. package/dist/patterns/record-form.js +1 -13
  259. package/dist/patterns/record-form.js.map +1 -1
  260. package/dist/patterns/record-page/index.d.ts +31 -0
  261. package/dist/patterns/record-page/index.d.ts.map +1 -0
  262. package/dist/patterns/record-page/index.js +29 -0
  263. package/dist/patterns/record-page/index.js.map +1 -0
  264. package/dist/patterns/record-page/styles.css +228 -0
  265. package/dist/patterns/record-page.d.ts +1 -30
  266. package/dist/patterns/record-page.d.ts.map +1 -1
  267. package/dist/patterns/record-page.js +1 -28
  268. package/dist/patterns/record-page.js.map +1 -1
  269. package/dist/patterns/workspace-page/index.d.ts +23 -0
  270. package/dist/patterns/workspace-page/index.d.ts.map +1 -0
  271. package/dist/patterns/workspace-page/index.js +26 -0
  272. package/dist/patterns/workspace-page/index.js.map +1 -0
  273. package/dist/patterns/workspace-page/styles.css +9 -0
  274. package/dist/patterns/workspace-page.d.ts +1 -22
  275. package/dist/patterns/workspace-page.d.ts.map +1 -1
  276. package/dist/patterns/workspace-page.js +1 -25
  277. package/dist/patterns/workspace-page.js.map +1 -1
  278. package/dist/primitives/actions/index.d.ts +36 -0
  279. package/dist/primitives/actions/index.d.ts.map +1 -0
  280. package/dist/primitives/actions/index.js +10 -0
  281. package/dist/primitives/actions/index.js.map +1 -0
  282. package/dist/primitives/actions/styles.css +149 -0
  283. package/dist/primitives/actions.d.ts +1 -35
  284. package/dist/primitives/actions.d.ts.map +1 -1
  285. package/dist/primitives/actions.js +1 -9
  286. package/dist/primitives/actions.js.map +1 -1
  287. package/dist/primitives/feedback/index.d.ts +19 -0
  288. package/dist/primitives/feedback/index.d.ts.map +1 -0
  289. package/dist/primitives/feedback/index.js +21 -0
  290. package/dist/primitives/feedback/index.js.map +1 -0
  291. package/dist/primitives/feedback/styles.css +117 -0
  292. package/dist/primitives/feedback.d.ts +1 -18
  293. package/dist/primitives/feedback.d.ts.map +1 -1
  294. package/dist/primitives/feedback.js +1 -22
  295. package/dist/primitives/feedback.js.map +1 -1
  296. package/dist/primitives/field/index.d.ts +35 -0
  297. package/dist/primitives/field/index.d.ts.map +1 -0
  298. package/dist/primitives/field/index.js +34 -0
  299. package/dist/primitives/field/index.js.map +1 -0
  300. package/dist/primitives/field/native-control.d.ts +4 -0
  301. package/dist/primitives/field/native-control.d.ts.map +1 -0
  302. package/dist/primitives/field/native-control.js +12 -0
  303. package/dist/primitives/field/native-control.js.map +1 -0
  304. package/dist/primitives/field/styles.css +160 -0
  305. package/dist/primitives/field.d.ts +1 -34
  306. package/dist/primitives/field.d.ts.map +1 -1
  307. package/dist/primitives/field.js +1 -41
  308. package/dist/primitives/field.js.map +1 -1
  309. package/dist/primitives/navigation/index.d.ts +36 -0
  310. package/dist/primitives/navigation/index.d.ts.map +1 -0
  311. package/dist/primitives/navigation/index.js +19 -0
  312. package/dist/primitives/navigation/index.js.map +1 -0
  313. package/dist/primitives/{navigation.css → navigation/styles.css} +51 -0
  314. package/dist/primitives/navigation.d.ts +1 -25
  315. package/dist/primitives/navigation.d.ts.map +1 -1
  316. package/dist/primitives/navigation.js +1 -15
  317. package/dist/primitives/navigation.js.map +1 -1
  318. package/dist/primitives/primitives.css +4 -570
  319. package/dist/primitives/progress/index.d.ts +10 -0
  320. package/dist/primitives/progress/index.d.ts.map +1 -0
  321. package/dist/primitives/progress/index.js +13 -0
  322. package/dist/primitives/progress/index.js.map +1 -0
  323. package/dist/primitives/progress.d.ts +1 -9
  324. package/dist/primitives/progress.d.ts.map +1 -1
  325. package/dist/primitives/progress.js +1 -12
  326. package/dist/primitives/progress.js.map +1 -1
  327. package/dist/primitives/status/index.d.ts +27 -0
  328. package/dist/primitives/status/index.d.ts.map +1 -0
  329. package/dist/primitives/status/index.js +16 -0
  330. package/dist/primitives/status/index.js.map +1 -0
  331. package/dist/primitives/status/styles.css +114 -0
  332. package/dist/primitives/status.d.ts +1 -26
  333. package/dist/primitives/status.d.ts.map +1 -1
  334. package/dist/primitives/status.js +1 -15
  335. package/dist/primitives/status.js.map +1 -1
  336. package/dist/record/activity/index.d.ts +26 -0
  337. package/dist/record/activity/index.d.ts.map +1 -0
  338. package/dist/record/activity/index.js +33 -0
  339. package/dist/record/activity/index.js.map +1 -0
  340. package/dist/record/activity/styles.css +38 -0
  341. package/dist/record/composition/index.d.ts +33 -0
  342. package/dist/record/composition/index.d.ts.map +1 -0
  343. package/dist/record/composition/index.js +10 -0
  344. package/dist/record/composition/index.js.map +1 -0
  345. package/dist/record/composition/styles.css +30 -0
  346. package/dist/record/display/index.d.ts +37 -0
  347. package/dist/record/display/index.d.ts.map +1 -0
  348. package/dist/record/display/index.js +23 -0
  349. package/dist/record/display/index.js.map +1 -0
  350. package/dist/record/display/styles.css +63 -0
  351. package/dist/record/formatted-values/index.d.ts +19 -0
  352. package/dist/record/formatted-values/index.d.ts.map +1 -0
  353. package/dist/record/formatted-values/index.js +21 -0
  354. package/dist/record/formatted-values/index.js.map +1 -0
  355. package/dist/record/formatted-values/styles.css +8 -0
  356. package/dist/record/media/index.d.ts +31 -0
  357. package/dist/record/media/index.d.ts.map +1 -0
  358. package/dist/record/media/index.js +19 -0
  359. package/dist/record/media/index.js.map +1 -0
  360. package/dist/record/media/styles.css +38 -0
  361. package/dist/runtime/auto.d.ts +2 -0
  362. package/dist/runtime/auto.d.ts.map +1 -0
  363. package/dist/runtime/auto.js +5 -0
  364. package/dist/runtime/auto.js.map +1 -0
  365. package/dist/runtime/index.d.ts +9 -0
  366. package/dist/runtime/index.d.ts.map +1 -0
  367. package/dist/runtime/index.js +369 -0
  368. package/dist/runtime/index.js.map +1 -0
  369. package/dist/styles.css +47 -8
  370. package/package.json +9 -2
  371. /package/dist/primitives/{progress.css → progress/styles.css} +0 -0
@@ -0,0 +1,228 @@
1
+ @layer ket.app {
2
+ :where([data-kv-design-system])
3
+ :is(
4
+ [data-ui="list-page"],
5
+ [data-ui="record-page"],
6
+ [data-ui="form-page"],
7
+ [data-ui="dashboard-page"],
8
+ [data-ui="board-page"]
9
+ ) {
10
+ --kv-page-title-size: 1.5rem;
11
+ }
12
+
13
+ :where([data-kv-design-system]) [data-ui="list-page"] {
14
+ display: grid;
15
+ min-width: 0;
16
+ gap: var(--kv-space-3);
17
+ padding: var(--kv-space-6) var(--kv-page-padding-x) var(--kv-space-10);
18
+ }
19
+
20
+ :where([data-kv-design-system]) [data-ui="list-page-header"] {
21
+ min-width: 0;
22
+ padding-bottom: var(--kv-space-2);
23
+ }
24
+
25
+ :where([data-kv-design-system]) [data-ui="list-page-heading"] {
26
+ display: grid;
27
+ min-width: 0;
28
+ gap: var(--kv-space-1);
29
+ }
30
+
31
+ :where([data-kv-design-system]) [data-ui="list-page-title-row"] {
32
+ display: flex;
33
+ min-width: 0;
34
+ flex-wrap: wrap;
35
+ align-items: center;
36
+ gap: var(--kv-space-3);
37
+ }
38
+
39
+ :where([data-kv-design-system]) [data-ui="list-page-eyebrow"] {
40
+ margin: 0;
41
+ color: var(--kv-accent);
42
+ font-size: var(--kv-text-2xs);
43
+ font-weight: var(--kv-weight-bold);
44
+ letter-spacing: 0;
45
+ line-height: var(--kv-leading-tight);
46
+ text-transform: uppercase;
47
+ }
48
+
49
+ :where([data-kv-design-system]) [data-ui="list-page-title"] {
50
+ margin: 0;
51
+ color: var(--kv-text-main);
52
+ font-size: var(--kv-page-title-size);
53
+ font-weight: var(--kv-weight-semibold);
54
+ letter-spacing: 0;
55
+ line-height: var(--kv-leading-tight);
56
+ }
57
+
58
+ :where([data-kv-design-system]) [data-ui="list-page-description"] {
59
+ max-width: 48rem;
60
+ margin: 0;
61
+ color: var(--kv-text-muted);
62
+ font-size: var(--kv-text-sm);
63
+ line-height: var(--kv-leading-normal);
64
+ }
65
+
66
+ :where([data-kv-design-system]) [data-ui="list-page-actions"] {
67
+ display: flex;
68
+ flex: 0 0 auto;
69
+ flex-wrap: wrap;
70
+ align-items: center;
71
+ gap: var(--kv-space-2);
72
+ }
73
+
74
+ :where([data-kv-design-system]) [data-ui="list-page-toolbar"] {
75
+ display: flex;
76
+ width: 100%;
77
+ min-width: 0;
78
+ flex-wrap: wrap;
79
+ align-items: center;
80
+ gap: var(--kv-space-2);
81
+ padding: var(--kv-space-2);
82
+ border: 1px solid var(--kv-panel-border);
83
+ border-radius: var(--kv-radius-md);
84
+ background: var(--kv-panel-bg-subtle);
85
+ }
86
+
87
+ :where([data-kv-design-system]) [data-ui="list-page-controls"] {
88
+ min-width: min(100%, 24rem);
89
+ flex: 1 1 40rem;
90
+ }
91
+
92
+ :where([data-kv-design-system]) [data-ui="list-page-status"] {
93
+ min-width: max-content;
94
+ flex: 0 0 auto;
95
+ padding-inline: var(--kv-space-2);
96
+ color: var(--kv-text-muted);
97
+ font-size: var(--kv-text-xs);
98
+ font-variant-numeric: tabular-nums;
99
+ }
100
+
101
+ :where([data-kv-design-system]) [data-ui="list-page-body"] {
102
+ min-width: 0;
103
+ }
104
+
105
+ :where([data-kv-design-system]) [data-ui="list-page-footer"] {
106
+ min-width: 0;
107
+ padding-top: var(--kv-space-3);
108
+ border-top: 1px solid var(--kv-panel-divider);
109
+ color: var(--kv-text-muted);
110
+ font-size: var(--kv-text-xs);
111
+ }
112
+
113
+ /* Application collections opt into the full operational workspace. This keeps
114
+ context, identity, command bar and results in distinct horizontal bands so
115
+ dense records remain the visual focus. */
116
+ :where([data-kv-design-system]) [data-ui="list-page"][data-variant="operational"] {
117
+ gap: 0;
118
+ padding: 0 0 var(--kv-space-10);
119
+ background: var(--kv-page-content-bg);
120
+ }
121
+
122
+ :where([data-kv-design-system])
123
+ [data-ui="list-page"][data-variant="operational"]
124
+ [data-ui="list-page-context"] {
125
+ display: flex;
126
+ min-width: 0;
127
+ min-height: var(--kv-table-header-height);
128
+ align-items: center;
129
+ padding-inline: var(--kv-page-padding-x);
130
+ border-bottom: 1px solid var(--kv-panel-divider);
131
+ background: var(--kv-page-chrome-bg);
132
+ }
133
+
134
+ :where([data-kv-design-system])
135
+ [data-ui="list-page"][data-variant="operational"]
136
+ [data-ui="list-page-header"] {
137
+ padding: var(--kv-space-4) var(--kv-page-padding-x);
138
+ border-bottom: 1px solid var(--kv-panel-divider);
139
+ background: var(--kv-page-chrome-bg);
140
+ }
141
+
142
+ :where([data-kv-design-system])
143
+ [data-ui="list-page"][data-variant="operational"]
144
+ [data-ui="list-page-title-row"] {
145
+ display: grid;
146
+ grid-template-columns: minmax(0, 1fr) auto;
147
+ gap: var(--kv-space-5);
148
+ }
149
+
150
+ :where([data-kv-design-system])
151
+ [data-ui="list-page"][data-variant="operational"]
152
+ [data-ui="list-page-actions"] {
153
+ justify-content: flex-end;
154
+ }
155
+
156
+ :where([data-kv-design-system])
157
+ [data-ui="list-page"][data-variant="operational"]
158
+ [data-ui="list-page-toolbar"] {
159
+ padding: var(--kv-space-3) var(--kv-page-padding-x) var(--kv-space-2-5);
160
+ border: 0;
161
+ border-radius: 0;
162
+ background: var(--kv-page-bg);
163
+ }
164
+
165
+ :where([data-kv-design-system])
166
+ [data-ui="list-page"][data-variant="operational"]
167
+ [data-ui="list-page-controls"] {
168
+ min-width: 0;
169
+ flex-basis: 100%;
170
+ }
171
+
172
+ :where([data-kv-design-system])
173
+ [data-ui="list-page"][data-variant="operational"]
174
+ [data-ui="list-page-body"] {
175
+ padding-top: var(--kv-space-2);
176
+ padding-inline: var(--kv-page-padding-x);
177
+ background: var(--kv-page-content-bg);
178
+ }
179
+
180
+ :where([data-kv-design-system])
181
+ [data-ui="list-page"][data-variant="operational"]
182
+ [data-ui="list-page-footer"] {
183
+ margin: var(--kv-space-3) var(--kv-page-padding-x) 0;
184
+ padding: var(--kv-space-2-5) var(--kv-space-3);
185
+ border: 1px solid var(--kv-panel-border);
186
+ border-radius: var(--kv-radius-md);
187
+ background: var(--kv-panel-bg);
188
+ font-variant-numeric: tabular-nums;
189
+ }
190
+
191
+ :where([data-kv-design-system])
192
+ [data-ui="list-page"][data-variant="operational"]
193
+ [data-ui="list-page-body"]:has(+ [data-ui="list-page-footer"])
194
+ > [data-ui="table-scroll"] {
195
+ border-radius: var(--kv-radius-md) var(--kv-radius-md) 0 0;
196
+ }
197
+
198
+ :where([data-kv-design-system])
199
+ [data-ui="list-page"][data-variant="operational"]
200
+ [data-ui="list-page-body"]:has(> [data-ui="table-scroll"])
201
+ + [data-ui="list-page-footer"] {
202
+ margin-top: -1px;
203
+ border-radius: 0 0 var(--kv-radius-md) var(--kv-radius-md);
204
+ }
205
+
206
+ /* Lists are page regions, not cards. More capable application tables may add
207
+ selection, grouping or configurable columns while retaining this surface. */
208
+ :where([data-kv-design-system]) [data-ui="list-page"] [data-ui="table-scroll"] {
209
+ margin: 0;
210
+ border-color: var(--kv-table-border);
211
+ border-radius: var(--kv-radius-md);
212
+ background: var(--kv-table-bg);
213
+ box-shadow: none;
214
+ }
215
+
216
+ :where([data-kv-design-system]) [data-ui="list-page"] [data-ui="table"] th {
217
+ background: var(--kv-table-header-bg);
218
+ color: var(--kv-table-header-text);
219
+ }
220
+
221
+ :where([data-kv-design-system]) [data-ui="list-page"] [data-ui="row"] td {
222
+ background: var(--kv-table-row-bg);
223
+ }
224
+
225
+ :where([data-kv-design-system]) [data-ui="list-page"] [data-ui="row"]:hover td {
226
+ background: var(--kv-table-row-hover);
227
+ }
228
+ }
@@ -1,31 +1,2 @@
1
- import type { JSXChild, TemplateResult } from '@ketvietlab/ketjs-view';
2
- export declare const HOOKS: readonly ['list-page', 'list-page-context', 'list-page-header', 'list-page-heading', 'list-page-title-row', 'list-page-eyebrow', 'list-page-title', 'list-page-description', 'list-page-actions', 'list-page-toolbar', 'list-page-controls', 'list-page-status', 'list-page-body', 'list-page-footer'];
3
- export type ListPageProps = {
4
- title: string;
5
- body: JSXChild;
6
- /**
7
- * A narrow application context strip above the page identity. The application
8
- * owns its breadcrumbs and organisation switcher; the pattern owns the slot.
9
- */
10
- context?: JSXChild;
11
- /**
12
- * `operational` is the full workspace composition used by application collection
13
- * screens. The unadorned variant remains available for embedded specimens.
14
- */
15
- variant?: 'operational';
16
- eyebrow?: string | null;
17
- description?: string | null;
18
- actions?: JSXChild;
19
- controls?: JSXChild;
20
- status?: JSXChild;
21
- footer?: JSXChild;
22
- };
23
- /**
24
- * The baseline for an operational collection screen.
25
- *
26
- * Applications own the translated copy, URL-driven controls and records. This
27
- * pattern owns their order and rhythm: identity and primary action first, query
28
- * controls second, then the result status and the collection itself.
29
- */
30
- export declare const ListPage: (props: ListPageProps) => TemplateResult;
1
+ export * from './list-page/index.tsx';
31
2
  //# sourceMappingURL=list-page.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-page.d.ts","sourceRoot":"","sources":["../../../../../packages/design-system/src/patterns/list-page.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAGtE,eAAO,MAAM,KAAK,YAChB,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,CACV,CAAA;AAEV,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,QAAQ,CAAA;IACd;;;OAGG;IACH,OAAO,CAAC,EAAE,QAAQ,CAAA;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,OAAO,CAAC,EAAE,QAAQ,CAAA;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,MAAM,CAAC,EAAE,QAAQ,CAAA;IACjB,MAAM,CAAC,EAAE,QAAQ,CAAA;CAClB,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,UAAW,aAAa,KAAG,cA2B/C,CAAA"}
1
+ {"version":3,"file":"list-page.d.ts","sourceRoot":"","sources":["../../../../../packages/design-system/src/patterns/list-page.tsx"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA"}
@@ -1,41 +1,2 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "@ketvietlab/ketjs-view/jsx-runtime";
2
- import { pageIdentity } from './page-shell.js';
3
- export const HOOKS = [
4
- 'list-page',
5
- 'list-page-context',
6
- 'list-page-header',
7
- 'list-page-heading',
8
- 'list-page-title-row',
9
- 'list-page-eyebrow',
10
- 'list-page-title',
11
- 'list-page-description',
12
- 'list-page-actions',
13
- 'list-page-toolbar',
14
- 'list-page-controls',
15
- 'list-page-status',
16
- 'list-page-body',
17
- 'list-page-footer',
18
- ];
19
- /**
20
- * The baseline for an operational collection screen.
21
- *
22
- * Applications own the translated copy, URL-driven controls and records. This
23
- * pattern owns their order and rhythm: identity and primary action first, query
24
- * controls second, then the result status and the collection itself.
25
- */
26
- export const ListPage = (props) => {
27
- const operational = props.variant === 'operational';
28
- // Result summaries close the collection in an operational workspace. Keeping
29
- // the legacy `status` prop as the input lets existing screens migrate without
30
- // duplicating their translated count as a separate footer value.
31
- const toolbarStatus = operational ? undefined : props.status;
32
- const footer = props.footer ?? (operational ? props.status : undefined);
33
- return (_jsxs("section", { "data-ui": "list-page", "data-variant": props.variant ?? null, "data-pattern": "list", children: [pageIdentity('list-page', {
34
- context: props.context,
35
- eyebrow: props.eyebrow,
36
- title: props.title,
37
- description: props.description,
38
- actions: props.actions,
39
- }), (props.controls !== undefined || toolbarStatus !== undefined) && (_jsxs("div", { "data-ui": "list-page-toolbar", children: [toolbarStatus !== undefined && _jsx("div", { "data-ui": "list-page-status", children: toolbarStatus }), props.controls !== undefined && _jsx("div", { "data-ui": "list-page-controls", children: props.controls })] })), _jsx("div", { "data-ui": "list-page-body", children: props.body }), footer !== undefined && _jsx("footer", { "data-ui": "list-page-footer", children: footer })] }));
40
- };
1
+ export * from './list-page/index.js';
41
2
  //# sourceMappingURL=list-page.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-page.js","sourceRoot":"","sources":["../../../../../../packages/design-system/src/patterns/list-page.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAkB,CAAA;AAE/C,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,WAAW;IACX,mBAAmB;IACnB,kBAAkB;IAClB,mBAAmB;IACnB,qBAAqB;IACrB,mBAAmB;IACnB,iBAAiB;IACjB,uBAAuB;IACvB,mBAAmB;IACnB,mBAAmB;IACnB,oBAAoB;IACpB,kBAAkB;IAClB,gBAAgB;IAChB,kBAAkB;CACV,CAAA;AAuBV;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAoB,EAAkB,EAAE;IAC/D,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,KAAK,aAAa,CAAA;IACnD,6EAA6E;IAC7E,8EAA8E;IAC9E,iEAAiE;IACjE,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAA;IAC5D,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAEvE,OAAO,CACL,8BAAiB,WAAW,kBAAe,KAAK,CAAC,OAAO,IAAI,IAAI,kBAAe,MAAM,aAClF,YAAY,CAAC,WAAW,EAAE;gBACzB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,EACD,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,aAAa,KAAK,SAAS,CAAC,IAAI,CAChE,0BAAa,mBAAmB,aAC7B,aAAa,KAAK,SAAS,IAAI,yBAAa,kBAAkB,YAAE,aAAa,GAAO,EACpF,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,yBAAa,oBAAoB,YAAE,KAAK,CAAC,QAAQ,GAAO,IACrF,CACP,EACD,yBAAa,gBAAgB,YAAE,KAAK,CAAC,IAAI,GAAO,EAC/C,MAAM,KAAK,SAAS,IAAI,4BAAgB,kBAAkB,YAAE,MAAM,GAAU,IACrE,CACX,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"list-page.js","sourceRoot":"","sources":["../../../../../../packages/design-system/src/patterns/list-page.tsx"],"names":[],"mappings":"AAAA,cAAc,sBAAuB,CAAA"}
@@ -0,0 +1,16 @@
1
+ import type { JSXChild, TemplateResult } from '@ketvietlab/ketjs-view';
2
+ export declare const HOOKS: readonly ['modal-layer', 'modal-backdrop', 'modal-sheet', 'modal-head', 'modal-heading', 'modal-title', 'modal-description', 'modal-close', 'modal-body', 'modal-actions'];
3
+ export declare const ModalSheet: (props: {
4
+ id: string;
5
+ title: string;
6
+ body: JSXChild;
7
+ closeHref: string;
8
+ closeLabel: string;
9
+ description?: string | null;
10
+ actions?: JSXChild;
11
+ presentation?: 'sheet' | 'dialog';
12
+ size?: 'default' | 'large';
13
+ mode?: 'overlay' | 'embedded';
14
+ unsavedPrompt?: string | null;
15
+ }) => TemplateResult;
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/design-system/src/patterns/modal-sheet/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAEtE,eAAO,MAAM,KAAK,YAChB,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,eAAe,CACP,CAAA;AAEV,eAAO,MAAM,UAAU,UAAW;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,QAAQ,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,OAAO,CAAC,EAAE,QAAQ,CAAA;IAClB,YAAY,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;IACjC,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAA;IAC1B,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU,CAAA;IAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B,KAAG,cA6CH,CAAA"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@ketvietlab/ketjs-view/jsx-runtime";
2
+ export const HOOKS = [
3
+ 'modal-layer',
4
+ 'modal-backdrop',
5
+ 'modal-sheet',
6
+ 'modal-head',
7
+ 'modal-heading',
8
+ 'modal-title',
9
+ 'modal-description',
10
+ 'modal-close',
11
+ 'modal-body',
12
+ 'modal-actions',
13
+ ];
14
+ export const ModalSheet = (props) => (_jsxs("div", { "data-ui": "modal-layer", "data-mode": props.mode ?? 'overlay', "data-route-modal": props.mode === 'embedded' ? null : 'true', "data-presentation": props.presentation ?? 'sheet', "data-unsaved-prompt": props.unsavedPrompt ?? null, children: [_jsx("a", { "data-ui": "modal-backdrop", href: props.closeHref, "aria-label": props.closeLabel, children: _jsx("span", { children: props.closeLabel }) }), _jsxs("section", { id: props.id, "data-ui": "modal-sheet", "data-size": props.size ?? 'default', role: "dialog", "aria-modal": props.mode === 'embedded' ? 'false' : 'true', "aria-labelledby": `${props.id}-title`, "aria-describedby": props.description ? `${props.id}-description` : null, tabindex: props.mode === 'embedded' ? null : '-1', children: [_jsxs("header", { "data-ui": "modal-head", children: [_jsxs("div", { "data-ui": "modal-heading", children: [_jsx("h2", { "data-ui": "modal-title", id: `${props.id}-title`, children: props.title }), !!props.description && (_jsx("p", { "data-ui": "modal-description", id: `${props.id}-description`, children: props.description }))] }), _jsx("a", { "data-ui": "modal-close", href: props.closeHref, "aria-label": props.closeLabel, title: props.closeLabel, children: "\u00D7" })] }), _jsx("div", { "data-ui": "modal-body", children: props.body }), props.actions !== undefined && _jsx("footer", { "data-ui": "modal-actions", children: props.actions })] })] }));
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/design-system/src/patterns/modal-sheet/index.tsx"],"names":[],"mappings":";AAEA,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,aAAa;IACb,gBAAgB;IAChB,aAAa;IACb,YAAY;IACZ,eAAe;IACf,aAAa;IACb,mBAAmB;IACnB,aAAa;IACb,YAAY;IACZ,eAAe;CACP,CAAA;AAEV,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAY1B,EAAkB,EAAE,CAAC,CACpB,0BACU,aAAa,eACV,KAAK,CAAC,IAAI,IAAI,SAAS,sBAChB,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,uBACxC,KAAK,CAAC,YAAY,IAAI,OAAO,yBAC3B,KAAK,CAAC,aAAa,IAAI,IAAI,aAEhD,uBAAW,gBAAgB,EAAC,IAAI,EAAE,KAAK,CAAC,SAAS,gBAAc,KAAK,CAAC,UAAU,YAC7E,yBAAO,KAAK,CAAC,UAAU,GAAQ,GAC7B,EACJ,mBACE,EAAE,EAAE,KAAK,CAAC,EAAE,aACJ,aAAa,eACV,KAAK,CAAC,IAAI,IAAI,SAAS,EAClC,IAAI,EAAC,QAAQ,gBACD,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,qBACvC,GAAG,KAAK,CAAC,EAAE,QAAQ,sBAClB,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,EACtE,QAAQ,EAAE,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,aAEjD,6BAAgB,YAAY,aAC1B,0BAAa,eAAe,aAC1B,wBAAY,aAAa,EAAC,EAAE,EAAE,GAAG,KAAK,CAAC,EAAE,QAAQ,YAC9C,KAAK,CAAC,KAAK,GACT,EACJ,CAAC,CAAC,KAAK,CAAC,WAAW,IAAI,CACtB,uBAAW,mBAAmB,EAAC,EAAE,EAAE,GAAG,KAAK,CAAC,EAAE,cAAc,YACzD,KAAK,CAAC,WAAW,GAChB,CACL,IACG,EACN,uBACU,aAAa,EACrB,IAAI,EAAE,KAAK,CAAC,SAAS,gBACT,KAAK,CAAC,UAAU,EAC5B,KAAK,EAAE,KAAK,CAAC,UAAU,uBAGrB,IACG,EACT,yBAAa,YAAY,YAAE,KAAK,CAAC,IAAI,GAAO,EAC3C,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,4BAAgB,eAAe,YAAE,KAAK,CAAC,OAAO,GAAU,IAChF,IACN,CACP,CAAA"}
@@ -0,0 +1,219 @@
1
+ @layer ket.app {
2
+ :where([data-kv-design-system]) [data-ui="modal-layer"] {
3
+ position: fixed;
4
+ inset: 0;
5
+ z-index: var(--kv-z-modal);
6
+ display: grid;
7
+ min-width: 0;
8
+ justify-items: end;
9
+ overflow: hidden;
10
+ }
11
+
12
+ body:has([data-kv-design-system] [data-ui="modal-layer"][data-route-modal="true"]) {
13
+ overflow: hidden;
14
+ }
15
+
16
+ :where([data-kv-design-system]) [data-ui="modal-layer"][data-presentation="dialog"] {
17
+ place-items: center;
18
+ padding: var(--kv-space-6);
19
+ }
20
+
21
+ :where([data-kv-design-system]) [data-ui="modal-layer"][data-mode="embedded"] {
22
+ position: relative;
23
+ min-height: 20rem;
24
+ inset: auto;
25
+ padding: var(--kv-space-4);
26
+ place-items: center;
27
+ border-radius: var(--kv-radius-md);
28
+ background:
29
+ linear-gradient(135deg, color-mix(in srgb, var(--kv-color-accent-soft) 60%, transparent), transparent),
30
+ var(--kv-color-canvas);
31
+ }
32
+
33
+ :where([data-kv-design-system]) [data-ui="modal-backdrop"] {
34
+ position: absolute;
35
+ z-index: 0;
36
+ inset: 0;
37
+ display: block;
38
+ background: rgb(12 14 16 / 52%);
39
+ backdrop-filter: blur(3px);
40
+ text-decoration: none;
41
+ }
42
+
43
+ :where([data-kv-design-system]) [data-ui="modal-backdrop"] > span {
44
+ position: absolute;
45
+ width: 1px;
46
+ height: 1px;
47
+ overflow: hidden;
48
+ clip-path: inset(50%);
49
+ white-space: nowrap;
50
+ }
51
+
52
+ :where([data-kv-design-system]) [data-ui="modal-layer"][data-mode="embedded"] [data-ui="modal-backdrop"] {
53
+ background: transparent;
54
+ backdrop-filter: none;
55
+ }
56
+
57
+ :where([data-kv-design-system]) [data-ui="modal-sheet"] {
58
+ position: relative;
59
+ z-index: 1;
60
+ display: grid;
61
+ width: min(34rem, 100vw);
62
+ max-width: 100%;
63
+ height: 100dvh;
64
+ min-width: 0;
65
+ grid-template-rows: auto minmax(0, 1fr) auto;
66
+ border-left: 1px solid var(--kv-color-line-strong);
67
+ background: var(--kv-color-surface);
68
+ box-shadow: var(--kv-shadow-popover);
69
+ }
70
+
71
+ :where([data-kv-design-system]) [data-ui="modal-sheet"][data-size="large"] {
72
+ width: min(56rem, 100vw);
73
+ }
74
+
75
+ :where([data-kv-design-system])
76
+ [data-ui="modal-layer"][data-presentation="dialog"]
77
+ [data-ui="modal-sheet"] {
78
+ width: min(56rem, 100%);
79
+ height: auto;
80
+ max-height: calc(100dvh - var(--kv-space-12));
81
+ overflow: hidden;
82
+ border: 1px solid var(--kv-color-line-strong);
83
+ border-radius: var(--kv-radius-lg);
84
+ }
85
+
86
+ :where([data-kv-design-system])
87
+ [data-ui="modal-layer"][data-presentation="dialog"]
88
+ [data-ui="modal-sheet"][data-size="large"] {
89
+ width: min(75rem, 100%);
90
+ height: min(62.5rem, calc(100dvh - var(--kv-space-12)));
91
+ }
92
+
93
+ :where([data-kv-design-system]) [data-ui="modal-layer"][data-mode="embedded"] [data-ui="modal-sheet"] {
94
+ width: min(34rem, 100%);
95
+ height: auto;
96
+ max-height: calc(100dvh - 2rem);
97
+ overflow: hidden;
98
+ border: 1px solid var(--kv-color-line-strong);
99
+ border-radius: var(--kv-radius-lg);
100
+ }
101
+
102
+ :where([data-kv-design-system]) [data-ui="modal-head"] {
103
+ display: flex;
104
+ min-width: 0;
105
+ align-items: center;
106
+ justify-content: space-between;
107
+ gap: var(--kv-space-4);
108
+ padding: var(--kv-space-4) var(--kv-space-5);
109
+ border-bottom: 1px solid var(--kv-color-line);
110
+ }
111
+
112
+ :where([data-kv-design-system]) [data-ui="modal-heading"] {
113
+ display: grid;
114
+ min-width: 0;
115
+ gap: var(--kv-space-1);
116
+ }
117
+
118
+ :where([data-kv-design-system]) [data-ui="modal-title"] {
119
+ min-width: 0;
120
+ margin: 0;
121
+ overflow: hidden;
122
+ color: var(--kv-color-ink);
123
+ font-family: var(--kv-font-display);
124
+ font-size: var(--kv-text-lg);
125
+ font-weight: 650;
126
+ line-height: var(--kv-leading-tight);
127
+ text-overflow: ellipsis;
128
+ white-space: nowrap;
129
+ }
130
+
131
+ :where([data-kv-design-system]) [data-ui="modal-description"] {
132
+ margin: 0;
133
+ color: var(--kv-color-ink-secondary);
134
+ font-size: var(--kv-text-sm);
135
+ line-height: var(--kv-leading-normal);
136
+ }
137
+
138
+ :where([data-kv-design-system]) [data-ui="modal-close"] {
139
+ display: grid;
140
+ flex: none;
141
+ width: 2rem;
142
+ height: 2rem;
143
+ place-items: center;
144
+ border-radius: 50%;
145
+ color: var(--kv-color-ink-muted);
146
+ font-size: 1.4rem;
147
+ line-height: 1;
148
+ text-decoration: none;
149
+ }
150
+
151
+ :where([data-kv-design-system]) [data-ui="modal-close"]:hover {
152
+ background: var(--kv-color-surface-hover);
153
+ color: var(--kv-color-ink);
154
+ }
155
+
156
+ :where([data-kv-design-system]) [data-ui="modal-body"] {
157
+ min-width: 0;
158
+ overflow: auto;
159
+ padding: var(--kv-space-5);
160
+ overscroll-behavior: contain;
161
+ }
162
+
163
+ :where([data-kv-design-system]) [data-ui="modal-actions"] {
164
+ display: flex;
165
+ flex-wrap: wrap;
166
+ justify-content: flex-end;
167
+ gap: var(--kv-space-2);
168
+ padding: var(--kv-space-4) var(--kv-space-5);
169
+ border-top: 1px solid var(--kv-color-line);
170
+ background: var(--kv-color-surface);
171
+ }
172
+
173
+ @media (max-width: 47.9375rem) {
174
+ :where([data-kv-design-system]) [data-ui="modal-layer"],
175
+ :where([data-kv-design-system]) [data-ui="modal-layer"][data-presentation="dialog"] {
176
+ padding: 0;
177
+ place-items: stretch;
178
+ justify-items: stretch;
179
+ }
180
+
181
+ :where([data-kv-design-system])
182
+ [data-ui="modal-layer"]:not([data-mode="embedded"])
183
+ [data-ui="modal-sheet"],
184
+ :where([data-kv-design-system])
185
+ [data-ui="modal-layer"]:not([data-mode="embedded"])
186
+ [data-ui="modal-sheet"][data-size],
187
+ :where([data-kv-design-system])
188
+ [data-ui="modal-layer"][data-presentation="dialog"]:not([data-mode="embedded"])
189
+ [data-ui="modal-sheet"][data-size] {
190
+ width: 100%;
191
+ height: 100dvh;
192
+ max-height: 100dvh;
193
+ border: 0;
194
+ border-radius: 0;
195
+ box-shadow: none;
196
+ }
197
+
198
+ :where([data-kv-design-system]) [data-ui="modal-head"] {
199
+ padding: var(--kv-space-4);
200
+ }
201
+
202
+ :where([data-kv-design-system]) [data-ui="modal-title"] {
203
+ white-space: normal;
204
+ }
205
+
206
+ :where([data-kv-design-system]) [data-ui="modal-body"] {
207
+ padding: var(--kv-space-4);
208
+ }
209
+
210
+ :where([data-kv-design-system]) [data-ui="modal-actions"] {
211
+ justify-content: stretch;
212
+ padding: var(--kv-space-3) var(--kv-space-4) max(var(--kv-space-4), env(safe-area-inset-bottom));
213
+ }
214
+
215
+ :where([data-kv-design-system]) [data-ui="modal-actions"] > [data-ui="action"] {
216
+ flex: 1 1 auto;
217
+ }
218
+ }
219
+ }
@@ -1,16 +1,2 @@
1
- import type { JSXChild, TemplateResult } from '@ketvietlab/ketjs-view';
2
- export declare const HOOKS: readonly ['modal-layer', 'modal-backdrop', 'modal-sheet', 'modal-head', 'modal-heading', 'modal-title', 'modal-description', 'modal-close', 'modal-body', 'modal-actions'];
3
- export declare const ModalSheet: (props: {
4
- id: string;
5
- title: string;
6
- body: JSXChild;
7
- closeHref: string;
8
- closeLabel: string;
9
- description?: string | null;
10
- actions?: JSXChild;
11
- presentation?: 'sheet' | 'dialog';
12
- size?: 'default' | 'large';
13
- mode?: 'overlay' | 'embedded';
14
- unsavedPrompt?: string | null;
15
- }) => TemplateResult;
1
+ export * from './modal-sheet/index.tsx';
16
2
  //# sourceMappingURL=modal-sheet.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"modal-sheet.d.ts","sourceRoot":"","sources":["../../../../../packages/design-system/src/patterns/modal-sheet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAEtE,eAAO,MAAM,KAAK,YAChB,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,eAAe,CACP,CAAA;AAEV,eAAO,MAAM,UAAU,UAAW;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,QAAQ,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,OAAO,CAAC,EAAE,QAAQ,CAAA;IAClB,YAAY,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;IACjC,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAA;IAC1B,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU,CAAA;IAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B,KAAG,cA6CH,CAAA"}
1
+ {"version":3,"file":"modal-sheet.d.ts","sourceRoot":"","sources":["../../../../../packages/design-system/src/patterns/modal-sheet.tsx"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA"}
@@ -1,15 +1,2 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "@ketvietlab/ketjs-view/jsx-runtime";
2
- export const HOOKS = [
3
- 'modal-layer',
4
- 'modal-backdrop',
5
- 'modal-sheet',
6
- 'modal-head',
7
- 'modal-heading',
8
- 'modal-title',
9
- 'modal-description',
10
- 'modal-close',
11
- 'modal-body',
12
- 'modal-actions',
13
- ];
14
- export const ModalSheet = (props) => (_jsxs("div", { "data-ui": "modal-layer", "data-mode": props.mode ?? 'overlay', "data-route-modal": props.mode === 'embedded' ? null : 'true', "data-presentation": props.presentation ?? 'sheet', "data-unsaved-prompt": props.unsavedPrompt ?? null, children: [_jsx("a", { "data-ui": "modal-backdrop", href: props.closeHref, "aria-label": props.closeLabel, children: _jsx("span", { children: props.closeLabel }) }), _jsxs("section", { id: props.id, "data-ui": "modal-sheet", "data-size": props.size ?? 'default', role: "dialog", "aria-modal": props.mode === 'embedded' ? 'false' : 'true', "aria-labelledby": `${props.id}-title`, "aria-describedby": props.description ? `${props.id}-description` : null, tabindex: props.mode === 'embedded' ? null : '-1', children: [_jsxs("header", { "data-ui": "modal-head", children: [_jsxs("div", { "data-ui": "modal-heading", children: [_jsx("h2", { "data-ui": "modal-title", id: `${props.id}-title`, children: props.title }), !!props.description && (_jsx("p", { "data-ui": "modal-description", id: `${props.id}-description`, children: props.description }))] }), _jsx("a", { "data-ui": "modal-close", href: props.closeHref, "aria-label": props.closeLabel, title: props.closeLabel, children: "\u00D7" })] }), _jsx("div", { "data-ui": "modal-body", children: props.body }), props.actions !== undefined && _jsx("footer", { "data-ui": "modal-actions", children: props.actions })] })] }));
1
+ export * from './modal-sheet/index.js';
15
2
  //# sourceMappingURL=modal-sheet.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"modal-sheet.js","sourceRoot":"","sources":["../../../../../../packages/design-system/src/patterns/modal-sheet.tsx"],"names":[],"mappings":";AAEA,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,aAAa;IACb,gBAAgB;IAChB,aAAa;IACb,YAAY;IACZ,eAAe;IACf,aAAa;IACb,mBAAmB;IACnB,aAAa;IACb,YAAY;IACZ,eAAe;CACP,CAAA;AAEV,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAY1B,EAAkB,EAAE,CAAC,CACpB,0BACU,aAAa,eACV,KAAK,CAAC,IAAI,IAAI,SAAS,sBAChB,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,uBACxC,KAAK,CAAC,YAAY,IAAI,OAAO,yBAC3B,KAAK,CAAC,aAAa,IAAI,IAAI,aAEhD,uBAAW,gBAAgB,EAAC,IAAI,EAAE,KAAK,CAAC,SAAS,gBAAc,KAAK,CAAC,UAAU,YAC7E,yBAAO,KAAK,CAAC,UAAU,GAAQ,GAC7B,EACJ,mBACE,EAAE,EAAE,KAAK,CAAC,EAAE,aACJ,aAAa,eACV,KAAK,CAAC,IAAI,IAAI,SAAS,EAClC,IAAI,EAAC,QAAQ,gBACD,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,qBACvC,GAAG,KAAK,CAAC,EAAE,QAAQ,sBAClB,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,EACtE,QAAQ,EAAE,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,aAEjD,6BAAgB,YAAY,aAC1B,0BAAa,eAAe,aAC1B,wBAAY,aAAa,EAAC,EAAE,EAAE,GAAG,KAAK,CAAC,EAAE,QAAQ,YAC9C,KAAK,CAAC,KAAK,GACT,EACJ,CAAC,CAAC,KAAK,CAAC,WAAW,IAAI,CACtB,uBAAW,mBAAmB,EAAC,EAAE,EAAE,GAAG,KAAK,CAAC,EAAE,cAAc,YACzD,KAAK,CAAC,WAAW,GAChB,CACL,IACG,EACN,uBACU,aAAa,EACrB,IAAI,EAAE,KAAK,CAAC,SAAS,gBACT,KAAK,CAAC,UAAU,EAC5B,KAAK,EAAE,KAAK,CAAC,UAAU,uBAGrB,IACG,EACT,yBAAa,YAAY,YAAE,KAAK,CAAC,IAAI,GAAO,EAC3C,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,4BAAgB,eAAe,YAAE,KAAK,CAAC,OAAO,GAAU,IAChF,IACN,CACP,CAAA"}
1
+ {"version":3,"file":"modal-sheet.js","sourceRoot":"","sources":["../../../../../../packages/design-system/src/patterns/modal-sheet.tsx"],"names":[],"mappings":"AAAA,cAAc,wBAAyB,CAAA"}
@@ -0,0 +1,24 @@
1
+ import type { JSXChild, TemplateResult } from '@ketvietlab/ketjs-view';
2
+ export type PageIdentityKind = 'list-page' | 'record-page' | 'form-page' | 'workspace-page' | 'dashboard-page' | 'board-page';
3
+ export type PageIdentityProps = {
4
+ context?: JSXChild;
5
+ eyebrow?: string | null;
6
+ title: string;
7
+ description?: string | null;
8
+ status?: JSXChild;
9
+ actions?: JSXChild;
10
+ meta?: JSXChild;
11
+ };
12
+ type PageIdentityContentProps = PageIdentityProps & {
13
+ groupDescription?: boolean;
14
+ };
15
+ /**
16
+ * The single identity band shared by every full-page pattern.
17
+ *
18
+ * The pattern name remains in each hook so consumers can style the content
19
+ * contract without reimplementing breadcrumbs, title hierarchy or actions.
20
+ */
21
+ export declare const pageIdentityContent: (kind: PageIdentityKind, props: PageIdentityContentProps) => TemplateResult;
22
+ export declare const pageIdentity: (kind: PageIdentityKind, props: PageIdentityProps) => TemplateResult;
23
+ export {};
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/design-system/src/patterns/page-shell/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAEtE,MAAM,MAAM,gBAAgB,GACxB,WAAW,GACX,aAAa,GACb,WAAW,GACX,gBAAgB,GAChB,gBAAgB,GAChB,YAAY,CAAA;AAEhB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,CAAC,EAAE,QAAQ,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,MAAM,CAAC,EAAE,QAAQ,CAAA;IACjB,OAAO,CAAC,EAAE,QAAQ,CAAA;IAClB,IAAI,CAAC,EAAE,QAAQ,CAAA;CAChB,CAAA;AAED,KAAK,wBAAwB,GAAG,iBAAiB,GAAG;IAClD,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,SACxB,gBAAgB,SACf,wBAAwB,KAC9B,cAoBF,CAAA;AAED,eAAO,MAAM,YAAY,SAAU,gBAAgB,SAAS,iBAAiB,KAAG,cAK/E,CAAA"}