@crisp-ui-kit/crisp 0.31.5 → 0.32.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 (403) hide show
  1. package/NOTICE +88 -0
  2. package/README.md +22 -0
  3. package/dist/accordion.css +13 -13
  4. package/dist/accordion.layered.css +23 -0
  5. package/dist/appshell.css +11 -11
  6. package/dist/appshell.layered.css +25 -0
  7. package/dist/authshell.css +23 -23
  8. package/dist/authshell.layered.css +59 -0
  9. package/dist/avatar.css +23 -23
  10. package/dist/avatar.layered.css +41 -0
  11. package/dist/avatargroup.css +2 -2
  12. package/dist/avatargroup.layered.css +7 -0
  13. package/dist/badge.css +31 -31
  14. package/dist/badge.layered.css +51 -0
  15. package/dist/barchart.css +15 -15
  16. package/dist/barchart.layered.css +25 -0
  17. package/dist/base.css +4 -4
  18. package/dist/board.css +20 -20
  19. package/dist/board.layered.css +34 -0
  20. package/dist/breadcrumb.css +8 -8
  21. package/dist/breadcrumb.layered.css +13 -0
  22. package/dist/bulkbar.css +13 -13
  23. package/dist/bulkbar.layered.css +23 -0
  24. package/dist/button.css +21 -21
  25. package/dist/button.layered.css +46 -0
  26. package/dist/callout.css +15 -15
  27. package/dist/callout.layered.css +18 -0
  28. package/dist/card.css +14 -14
  29. package/dist/card.layered.css +30 -0
  30. package/dist/checkbox.css +9 -9
  31. package/dist/checkbox.layered.css +21 -0
  32. package/dist/cjs/components/accordion/accordion.js +1 -1
  33. package/dist/cjs/components/accordion/accordion.recipe.js +10 -10
  34. package/dist/cjs/components/badge/badge.js +1 -1
  35. package/dist/cjs/components/badge/badge.recipe.js +1 -1
  36. package/dist/cjs/components/barchart/barchart.js +3 -3
  37. package/dist/cjs/components/barchart/barchart.recipe.js +14 -14
  38. package/dist/cjs/components/breadcrumb/breadcrumb.js +1 -1
  39. package/dist/cjs/components/breadcrumb/breadcrumb.recipe.js +6 -6
  40. package/dist/cjs/components/bulkbar/bulkbar.js +2 -2
  41. package/dist/cjs/components/bulkbar/bulkbar.recipe.js +10 -10
  42. package/dist/cjs/components/callout/callout.js +1 -1
  43. package/dist/cjs/components/callout/callout.recipe.js +9 -9
  44. package/dist/cjs/components/card/card.js +3 -3
  45. package/dist/cjs/components/card/card.recipe.js +5 -5
  46. package/dist/cjs/components/columncalc/columncalc.js +1 -1
  47. package/dist/cjs/components/columncalc/columncalc.recipe.js +16 -9
  48. package/dist/cjs/components/contextmenu/contextmenu.js +4 -4
  49. package/dist/cjs/components/contextmenu/contextmenu.recipe.js +9 -9
  50. package/dist/cjs/components/datatable/datatable.js +21 -19
  51. package/dist/cjs/components/datatable/datatable.recipe.js +57 -57
  52. package/dist/cjs/components/datepicker/datepicker.js +12 -12
  53. package/dist/cjs/components/datepicker/datepicker.recipe.js +45 -45
  54. package/dist/cjs/components/datepickerfield/datepickerfield.js +2 -2
  55. package/dist/cjs/components/datepickerfield/datepickerfield.recipe.js +9 -9
  56. package/dist/cjs/components/dialog/dialog.js +5 -5
  57. package/dist/cjs/components/dialog/dialog.recipe.js +16 -16
  58. package/dist/cjs/components/donutchart/donutchart.js +1 -1
  59. package/dist/cjs/components/donutchart/donutchart.recipe.js +12 -12
  60. package/dist/cjs/components/drawer/drawer.js +3 -3
  61. package/dist/cjs/components/drawer/drawer.recipe.js +14 -14
  62. package/dist/cjs/components/emptystate/emptystate.js +1 -1
  63. package/dist/cjs/components/emptystate/emptystate.recipe.js +9 -9
  64. package/dist/cjs/components/fileupload/fileupload.js +3 -3
  65. package/dist/cjs/components/fileupload/fileupload.recipe.js +23 -23
  66. package/dist/cjs/components/formfield/formfield.js +1 -1
  67. package/dist/cjs/components/formfield/formfield.recipe.js +5 -5
  68. package/dist/cjs/components/input/input.js +1 -1
  69. package/dist/cjs/components/input/input.recipe.js +6 -6
  70. package/dist/cjs/components/linechart/linechart.js +4 -4
  71. package/dist/cjs/components/linechart/linechart.recipe.js +14 -14
  72. package/dist/cjs/components/menu/menu.js +6 -6
  73. package/dist/cjs/components/menu/menu.recipe.js +19 -19
  74. package/dist/cjs/components/multiselect/multiselect.js +5 -5
  75. package/dist/cjs/components/multiselect/multiselect.recipe.js +29 -29
  76. package/dist/cjs/components/popover/popover.js +1 -1
  77. package/dist/cjs/components/popover/popover.recipe.js +3 -3
  78. package/dist/cjs/components/progress/progress.js +2 -2
  79. package/dist/cjs/components/progress/progress.recipe.js +3 -3
  80. package/dist/cjs/components/quantitypicker/quantitypicker.js +2 -2
  81. package/dist/cjs/components/quantitypicker/quantitypicker.recipe.js +16 -16
  82. package/dist/cjs/components/radiogroup/radiogroup.js +1 -1
  83. package/dist/cjs/components/radiogroup/radiogroup.recipe.js +14 -14
  84. package/dist/cjs/components/resizablepanel/resizablepanel.js +3 -3
  85. package/dist/cjs/components/resizablepanel/resizablepanel.recipe.js +24 -24
  86. package/dist/cjs/components/segmented/segmented.js +4 -4
  87. package/dist/cjs/components/segmented/segmented.recipe.js +7 -7
  88. package/dist/cjs/components/select/select.js +3 -3
  89. package/dist/cjs/components/select/select.recipe.js +25 -25
  90. package/dist/cjs/components/slider/slider.js +2 -2
  91. package/dist/cjs/components/slider/slider.recipe.js +15 -15
  92. package/dist/cjs/components/stagebar/stagebar.js +1 -1
  93. package/dist/cjs/components/stagebar/stagebar.recipe.js +1 -1
  94. package/dist/cjs/components/statcard/statcard.js +1 -1
  95. package/dist/cjs/components/statcard/statcard.recipe.js +9 -9
  96. package/dist/cjs/components/switch/switch.js +1 -1
  97. package/dist/cjs/components/switch/switch.recipe.js +2 -2
  98. package/dist/cjs/components/table/table.js +1 -1
  99. package/dist/cjs/components/table/table.recipe.js +1 -1
  100. package/dist/cjs/components/tabletoolbar/tabletoolbar.chrome.js +65 -64
  101. package/dist/cjs/components/tabletoolbar/tabletoolbar.js +13 -13
  102. package/dist/cjs/components/tabs/tabs.js +4 -4
  103. package/dist/cjs/components/tabs/tabs.recipe.js +12 -12
  104. package/dist/cjs/components/textarea/textarea.js +2 -2
  105. package/dist/cjs/components/textarea/textarea.recipe.js +11 -11
  106. package/dist/cjs/components/toast/toast.js +4 -4
  107. package/dist/cjs/components/toast/toast.recipe.js +14 -14
  108. package/dist/cjs/components/wheelpicker/wheelpicker.js +2 -2
  109. package/dist/cjs/components/wheelpicker/wheelpicker.recipe.js +19 -19
  110. package/dist/cjs/core/dialog-description.js +1 -1
  111. package/dist/cjs/core/namespace.js +17 -0
  112. package/dist/cjs/core/resolve.js +5 -3
  113. package/dist/cjs/index.js +1 -1
  114. package/dist/cjs/product/appshell/appshell.js +2 -2
  115. package/dist/cjs/product/appshell/appshell.recipe.js +8 -8
  116. package/dist/cjs/product/authshell/authshell.js +1 -1
  117. package/dist/cjs/product/authshell/authshell.recipe.js +20 -20
  118. package/dist/cjs/product/board/board.js +3 -3
  119. package/dist/cjs/product/board/board.recipe.js +17 -17
  120. package/dist/cjs/product/command/command.js +3 -3
  121. package/dist/cjs/product/command/command.recipe.js +25 -25
  122. package/dist/cjs/product/entitycard/entitycard.js +1 -1
  123. package/dist/cjs/product/entitycard/entitycard.recipe.js +7 -7
  124. package/dist/cjs/product/flowcanvas/flowcanvas.js +5 -5
  125. package/dist/cjs/product/flowcanvas/flowcanvas.recipe.js +11 -11
  126. package/dist/cjs/product/inbox/inbox.js +1 -1
  127. package/dist/cjs/product/inbox/inbox.recipe.js +22 -22
  128. package/dist/cjs/product/listpage/listpage.js +3 -3
  129. package/dist/cjs/product/listpage/listpage.recipe.js +18 -18
  130. package/dist/cjs/product/navitem/navitem.js +1 -1
  131. package/dist/cjs/product/navitem/navitem.recipe.js +2 -2
  132. package/dist/cjs/product/onboarding/onboarding.js +1 -1
  133. package/dist/cjs/product/onboarding/onboarding.recipe.js +19 -19
  134. package/dist/cjs/product/recordpage/recordpage.js +24 -24
  135. package/dist/cjs/product/recordpage/recordpage.recipe.js +117 -117
  136. package/dist/cjs/product/recordpanel/recordpanel.js +4 -4
  137. package/dist/cjs/product/recordpanel/recordpanel.recipe.js +15 -15
  138. package/dist/cjs/product/recordstable/recordstable.js +48 -48
  139. package/dist/cjs/product/recordstable/recordstable.recipe.js +87 -87
  140. package/dist/cjs/product/recordstable/recordstable.tag.js +8 -8
  141. package/dist/cjs/product/richtext/richtext.js +4 -4
  142. package/dist/cjs/product/richtext/richtext.recipe.js +21 -21
  143. package/dist/cjs/product/settingssection/settingssection.js +1 -1
  144. package/dist/cjs/product/settingssection/settingssection.recipe.js +6 -6
  145. package/dist/cjs/product/settingsshell/settingsshell.js +1 -1
  146. package/dist/cjs/product/settingsshell/settingsshell.recipe.js +20 -20
  147. package/dist/cjs/product/sidebar/sidebar.js +2 -2
  148. package/dist/cjs/product/sidebar/sidebar.recipe.js +21 -21
  149. package/dist/cjs/product/tasklist/tasklist.js +2 -2
  150. package/dist/cjs/product/tasklist/tasklist.recipe.js +14 -14
  151. package/dist/cjs/product/trialbanner/trialbanner.js +1 -1
  152. package/dist/cjs/product/trialbanner/trialbanner.recipe.js +6 -6
  153. package/dist/cjs/product/viewtoggle/viewtoggle.js +1 -1
  154. package/dist/cjs/product/viewtoggle/viewtoggle.recipe.js +4 -4
  155. package/dist/cjs/tokens/contract.js +3 -2
  156. package/dist/cjs/tokens/elevation.js +4 -4
  157. package/dist/cjs/tokens/palette.js +2 -2
  158. package/dist/cjs/tokens/scale.js +6 -6
  159. package/dist/cjs/tokens/semantic.js +1 -1
  160. package/dist/columncalc.css +19 -12
  161. package/dist/columncalc.layered.css +35 -0
  162. package/dist/command.css +28 -28
  163. package/dist/command.layered.css +44 -0
  164. package/dist/contextmenu.css +12 -12
  165. package/dist/contextmenu.layered.css +22 -0
  166. package/dist/datatable.css +66 -66
  167. package/dist/datatable.layered.css +108 -0
  168. package/dist/datepicker.css +86 -86
  169. package/dist/datepicker.layered.css +179 -0
  170. package/dist/datepickerfield.css +19 -19
  171. package/dist/datepickerfield.layered.css +29 -0
  172. package/dist/dialog.css +19 -19
  173. package/dist/dialog.layered.css +29 -0
  174. package/dist/divider.css +2 -2
  175. package/dist/divider.layered.css +7 -0
  176. package/dist/donutchart.css +15 -15
  177. package/dist/donutchart.layered.css +26 -0
  178. package/dist/drawer.css +17 -17
  179. package/dist/drawer.layered.css +27 -0
  180. package/dist/emptystate.css +15 -15
  181. package/dist/emptystate.layered.css +22 -0
  182. package/dist/entitycard.css +14 -14
  183. package/dist/entitycard.layered.css +28 -0
  184. package/dist/esm/components/accordion/accordion.js +1 -1
  185. package/dist/esm/components/accordion/accordion.recipe.js +10 -10
  186. package/dist/esm/components/badge/badge.js +1 -1
  187. package/dist/esm/components/badge/badge.recipe.js +1 -1
  188. package/dist/esm/components/barchart/barchart.js +3 -3
  189. package/dist/esm/components/barchart/barchart.recipe.js +14 -14
  190. package/dist/esm/components/breadcrumb/breadcrumb.js +1 -1
  191. package/dist/esm/components/breadcrumb/breadcrumb.recipe.js +6 -6
  192. package/dist/esm/components/bulkbar/bulkbar.js +2 -2
  193. package/dist/esm/components/bulkbar/bulkbar.recipe.js +10 -10
  194. package/dist/esm/components/callout/callout.js +1 -1
  195. package/dist/esm/components/callout/callout.recipe.js +9 -9
  196. package/dist/esm/components/card/card.js +3 -3
  197. package/dist/esm/components/card/card.recipe.js +5 -5
  198. package/dist/esm/components/columncalc/columncalc.js +1 -1
  199. package/dist/esm/components/columncalc/columncalc.recipe.js +16 -9
  200. package/dist/esm/components/contextmenu/contextmenu.js +4 -4
  201. package/dist/esm/components/contextmenu/contextmenu.recipe.js +9 -9
  202. package/dist/esm/components/datatable/datatable.js +21 -19
  203. package/dist/esm/components/datatable/datatable.recipe.js +57 -57
  204. package/dist/esm/components/datepicker/datepicker.js +12 -12
  205. package/dist/esm/components/datepicker/datepicker.recipe.js +45 -45
  206. package/dist/esm/components/datepickerfield/datepickerfield.js +2 -2
  207. package/dist/esm/components/datepickerfield/datepickerfield.recipe.js +9 -9
  208. package/dist/esm/components/dialog/dialog.js +5 -5
  209. package/dist/esm/components/dialog/dialog.recipe.js +16 -16
  210. package/dist/esm/components/donutchart/donutchart.js +1 -1
  211. package/dist/esm/components/donutchart/donutchart.recipe.js +12 -12
  212. package/dist/esm/components/drawer/drawer.js +3 -3
  213. package/dist/esm/components/drawer/drawer.recipe.js +14 -14
  214. package/dist/esm/components/emptystate/emptystate.js +1 -1
  215. package/dist/esm/components/emptystate/emptystate.recipe.js +9 -9
  216. package/dist/esm/components/fileupload/fileupload.js +3 -3
  217. package/dist/esm/components/fileupload/fileupload.recipe.js +23 -23
  218. package/dist/esm/components/formfield/formfield.js +1 -1
  219. package/dist/esm/components/formfield/formfield.recipe.js +5 -5
  220. package/dist/esm/components/input/input.js +1 -1
  221. package/dist/esm/components/input/input.recipe.js +6 -6
  222. package/dist/esm/components/linechart/linechart.js +4 -4
  223. package/dist/esm/components/linechart/linechart.recipe.js +14 -14
  224. package/dist/esm/components/menu/menu.js +6 -6
  225. package/dist/esm/components/menu/menu.recipe.js +19 -19
  226. package/dist/esm/components/multiselect/multiselect.js +5 -5
  227. package/dist/esm/components/multiselect/multiselect.recipe.js +29 -29
  228. package/dist/esm/components/popover/popover.js +1 -1
  229. package/dist/esm/components/popover/popover.recipe.js +3 -3
  230. package/dist/esm/components/progress/progress.js +2 -2
  231. package/dist/esm/components/progress/progress.recipe.js +3 -3
  232. package/dist/esm/components/quantitypicker/quantitypicker.js +2 -2
  233. package/dist/esm/components/quantitypicker/quantitypicker.recipe.js +16 -16
  234. package/dist/esm/components/radiogroup/radiogroup.js +1 -1
  235. package/dist/esm/components/radiogroup/radiogroup.recipe.js +14 -14
  236. package/dist/esm/components/resizablepanel/resizablepanel.js +3 -3
  237. package/dist/esm/components/resizablepanel/resizablepanel.recipe.js +24 -24
  238. package/dist/esm/components/segmented/segmented.js +4 -4
  239. package/dist/esm/components/segmented/segmented.recipe.js +7 -7
  240. package/dist/esm/components/select/select.js +3 -3
  241. package/dist/esm/components/select/select.recipe.js +25 -25
  242. package/dist/esm/components/slider/slider.js +2 -2
  243. package/dist/esm/components/slider/slider.recipe.js +15 -15
  244. package/dist/esm/components/stagebar/stagebar.js +1 -1
  245. package/dist/esm/components/stagebar/stagebar.recipe.js +1 -1
  246. package/dist/esm/components/statcard/statcard.js +1 -1
  247. package/dist/esm/components/statcard/statcard.recipe.js +9 -9
  248. package/dist/esm/components/switch/switch.js +1 -1
  249. package/dist/esm/components/switch/switch.recipe.js +2 -2
  250. package/dist/esm/components/table/table.js +1 -1
  251. package/dist/esm/components/table/table.recipe.js +1 -1
  252. package/dist/esm/components/tabletoolbar/tabletoolbar.chrome.js +65 -64
  253. package/dist/esm/components/tabletoolbar/tabletoolbar.js +13 -13
  254. package/dist/esm/components/tabs/tabs.js +4 -4
  255. package/dist/esm/components/tabs/tabs.recipe.js +12 -12
  256. package/dist/esm/components/textarea/textarea.js +2 -2
  257. package/dist/esm/components/textarea/textarea.recipe.js +11 -11
  258. package/dist/esm/components/toast/toast.js +4 -4
  259. package/dist/esm/components/toast/toast.recipe.js +14 -14
  260. package/dist/esm/components/wheelpicker/wheelpicker.js +2 -2
  261. package/dist/esm/components/wheelpicker/wheelpicker.recipe.js +19 -19
  262. package/dist/esm/core/dialog-description.js +1 -1
  263. package/dist/esm/core/namespace.js +14 -0
  264. package/dist/esm/core/resolve.js +5 -3
  265. package/dist/esm/index.js +1 -1
  266. package/dist/esm/product/appshell/appshell.js +2 -2
  267. package/dist/esm/product/appshell/appshell.recipe.js +8 -8
  268. package/dist/esm/product/authshell/authshell.js +1 -1
  269. package/dist/esm/product/authshell/authshell.recipe.js +20 -20
  270. package/dist/esm/product/board/board.js +3 -3
  271. package/dist/esm/product/board/board.recipe.js +17 -17
  272. package/dist/esm/product/command/command.js +3 -3
  273. package/dist/esm/product/command/command.recipe.js +25 -25
  274. package/dist/esm/product/entitycard/entitycard.js +1 -1
  275. package/dist/esm/product/entitycard/entitycard.recipe.js +7 -7
  276. package/dist/esm/product/flowcanvas/flowcanvas.js +5 -5
  277. package/dist/esm/product/flowcanvas/flowcanvas.recipe.js +11 -11
  278. package/dist/esm/product/inbox/inbox.js +1 -1
  279. package/dist/esm/product/inbox/inbox.recipe.js +22 -22
  280. package/dist/esm/product/listpage/listpage.js +3 -3
  281. package/dist/esm/product/listpage/listpage.recipe.js +18 -18
  282. package/dist/esm/product/navitem/navitem.js +1 -1
  283. package/dist/esm/product/navitem/navitem.recipe.js +2 -2
  284. package/dist/esm/product/onboarding/onboarding.js +1 -1
  285. package/dist/esm/product/onboarding/onboarding.recipe.js +19 -19
  286. package/dist/esm/product/recordpage/recordpage.js +24 -24
  287. package/dist/esm/product/recordpage/recordpage.recipe.js +117 -117
  288. package/dist/esm/product/recordpanel/recordpanel.js +4 -4
  289. package/dist/esm/product/recordpanel/recordpanel.recipe.js +15 -15
  290. package/dist/esm/product/recordstable/recordstable.js +48 -48
  291. package/dist/esm/product/recordstable/recordstable.recipe.js +87 -87
  292. package/dist/esm/product/recordstable/recordstable.tag.js +8 -8
  293. package/dist/esm/product/richtext/richtext.js +4 -4
  294. package/dist/esm/product/richtext/richtext.recipe.js +21 -21
  295. package/dist/esm/product/settingssection/settingssection.js +1 -1
  296. package/dist/esm/product/settingssection/settingssection.recipe.js +6 -6
  297. package/dist/esm/product/settingsshell/settingsshell.js +1 -1
  298. package/dist/esm/product/settingsshell/settingsshell.recipe.js +20 -20
  299. package/dist/esm/product/sidebar/sidebar.js +2 -2
  300. package/dist/esm/product/sidebar/sidebar.recipe.js +21 -21
  301. package/dist/esm/product/tasklist/tasklist.js +2 -2
  302. package/dist/esm/product/tasklist/tasklist.recipe.js +14 -14
  303. package/dist/esm/product/trialbanner/trialbanner.js +1 -1
  304. package/dist/esm/product/trialbanner/trialbanner.recipe.js +6 -6
  305. package/dist/esm/product/viewtoggle/viewtoggle.js +1 -1
  306. package/dist/esm/product/viewtoggle/viewtoggle.recipe.js +4 -4
  307. package/dist/esm/tokens/contract.js +3 -2
  308. package/dist/esm/tokens/elevation.js +4 -4
  309. package/dist/esm/tokens/palette.js +2 -2
  310. package/dist/esm/tokens/scale.js +6 -6
  311. package/dist/esm/tokens/semantic.js +1 -1
  312. package/dist/fileupload.css +46 -46
  313. package/dist/fileupload.layered.css +91 -0
  314. package/dist/flowcanvas.css +13 -13
  315. package/dist/flowcanvas.layered.css +17 -0
  316. package/dist/formfield.css +7 -7
  317. package/dist/formfield.layered.css +10 -0
  318. package/dist/inbox.css +26 -26
  319. package/dist/inbox.layered.css +41 -0
  320. package/dist/input.css +17 -17
  321. package/dist/input.layered.css +45 -0
  322. package/dist/kbd.css +2 -2
  323. package/dist/kbd.layered.css +5 -0
  324. package/dist/linechart.css +14 -14
  325. package/dist/linechart.layered.css +17 -0
  326. package/dist/listpage.css +22 -22
  327. package/dist/listpage.layered.css +41 -0
  328. package/dist/menu.css +29 -29
  329. package/dist/menu.layered.css +48 -0
  330. package/dist/multiselect.css +42 -42
  331. package/dist/multiselect.layered.css +63 -0
  332. package/dist/navitem.css +14 -14
  333. package/dist/navitem.layered.css +25 -0
  334. package/dist/onboarding.css +24 -24
  335. package/dist/onboarding.layered.css +39 -0
  336. package/dist/popover.css +6 -6
  337. package/dist/popover.layered.css +16 -0
  338. package/dist/progress.css +7 -7
  339. package/dist/progress.layered.css +17 -0
  340. package/dist/quantitypicker.css +34 -34
  341. package/dist/quantitypicker.layered.css +80 -0
  342. package/dist/radiogroup.css +18 -18
  343. package/dist/radiogroup.layered.css +33 -0
  344. package/dist/recordpage.css +122 -122
  345. package/dist/recordpage.layered.css +153 -0
  346. package/dist/recordpanel.css +31 -31
  347. package/dist/recordpanel.layered.css +50 -0
  348. package/dist/recordstable.css +162 -162
  349. package/dist/recordstable.layered.css +222 -0
  350. package/dist/resizablepanel.css +26 -26
  351. package/dist/resizablepanel.layered.css +55 -0
  352. package/dist/richtext.css +24 -24
  353. package/dist/richtext.layered.css +38 -0
  354. package/dist/segmented.css +10 -10
  355. package/dist/segmented.layered.css +20 -0
  356. package/dist/select.css +43 -43
  357. package/dist/select.layered.css +72 -0
  358. package/dist/settingssection.css +8 -8
  359. package/dist/settingssection.layered.css +11 -0
  360. package/dist/settingsshell.css +23 -23
  361. package/dist/settingsshell.layered.css +44 -0
  362. package/dist/sidebar.css +27 -27
  363. package/dist/sidebar.layered.css +40 -0
  364. package/dist/skeleton.css +4 -4
  365. package/dist/skeleton.layered.css +15 -0
  366. package/dist/slider.css +23 -23
  367. package/dist/slider.layered.css +58 -0
  368. package/dist/spinner.css +3 -3
  369. package/dist/spinner.layered.css +14 -0
  370. package/dist/stagebar.css +4 -4
  371. package/dist/stagebar.layered.css +14 -0
  372. package/dist/statcard.css +14 -14
  373. package/dist/statcard.layered.css +21 -0
  374. package/dist/styles.css +1816 -1725
  375. package/dist/styles.layered.css +2932 -0
  376. package/dist/switch.css +7 -7
  377. package/dist/switch.layered.css +22 -0
  378. package/dist/table.css +16 -16
  379. package/dist/table.layered.css +36 -0
  380. package/dist/tabletoolbar.css +67 -67
  381. package/dist/tabletoolbar.layered.css +80 -0
  382. package/dist/tabs.css +15 -15
  383. package/dist/tabs.layered.css +29 -0
  384. package/dist/tasklist.css +17 -17
  385. package/dist/tasklist.layered.css +34 -0
  386. package/dist/textarea.css +18 -18
  387. package/dist/textarea.layered.css +42 -0
  388. package/dist/toast.css +17 -17
  389. package/dist/toast.layered.css +27 -0
  390. package/dist/tokens.css +199 -115
  391. package/dist/tooltip.css +3 -3
  392. package/dist/tooltip.layered.css +13 -0
  393. package/dist/trialbanner.css +13 -13
  394. package/dist/trialbanner.layered.css +28 -0
  395. package/dist/types/core/dialog-description.d.ts +1 -1
  396. package/dist/types/core/namespace.d.ts +2 -0
  397. package/dist/types/tokens/elevation.d.ts +4 -4
  398. package/dist/viewtoggle.css +10 -10
  399. package/dist/viewtoggle.layered.css +23 -0
  400. package/dist/wheelpicker.css +29 -29
  401. package/dist/wheelpicker.layered.css +70 -0
  402. package/licenses/Apache-2.0.txt +201 -0
  403. package/package.json +5 -2
@@ -1,12 +1,12 @@
1
- .datatable {
2
- display: flex; flex-direction: column; gap: var(--space-2-5); font-family: var(--font-sans);
3
- & .datatable-toolbar { display: flex; align-items: center; gap: var(--space-2); }
4
- & .datatable-search { position: relative; flex: 1; max-width: 280px; display: inline-flex; align-items: center; }
5
- & .datatable-search svg { position: absolute; inset-inline-start: var(--space-2); color: var(--fg-muted); pointer-events: none; }
6
- & .datatable-search input { width: 100%; height: 32px; padding: 0 var(--space-2) 0 var(--space-6); border: none; border-radius: var(--radius-md); background: var(--bg-surface); box-shadow: inset 0 0 0 1px var(--ring-neutral), 0 0 2px rgba(28,40,64,0.18), 0 1px 3px rgba(0,0,0,0.04); font-family: inherit; font-size: var(--text-lg); color: var(--fg-primary); outline: none; transition: box-shadow .15s; }
7
- & .datatable-search input::placeholder { color: var(--fg-muted); }
8
- & .datatable-search input:focus { box-shadow: inset 0 0 0 1px var(--bg-brand-solid); }
9
- & .datatable-count { margin-inline-start: auto; font-size: var(--text-md); color: var(--fg-muted); }
1
+ .crisp-datatable {
2
+ display: flex; flex-direction: column; gap: var(--crisp-space-2-5); font-family: var(--crisp-font-sans);
3
+ & .crisp-datatable-toolbar { display: flex; align-items: center; gap: var(--crisp-space-2); }
4
+ & .crisp-datatable-search { position: relative; flex: 1; max-width: 280px; display: inline-flex; align-items: center; }
5
+ & .crisp-datatable-search svg { position: absolute; inset-inline-start: var(--crisp-space-2); color: var(--crisp-fg-muted); pointer-events: none; }
6
+ & .crisp-datatable-search input { width: 100%; height: 32px; padding: 0 var(--crisp-space-2) 0 var(--crisp-space-6); border: none; border-radius: var(--crisp-radius-md); background: var(--crisp-bg-surface); box-shadow: inset 0 0 0 1px var(--crisp-ring-neutral), 0 0 2px rgba(28,40,64,0.18), 0 1px 3px rgba(0,0,0,0.04); font-family: inherit; font-size: var(--crisp-text-lg); color: var(--crisp-fg-primary); outline: none; transition: box-shadow .15s; }
7
+ & .crisp-datatable-search input::placeholder { color: var(--crisp-fg-muted); }
8
+ & .crisp-datatable-search input:focus { box-shadow: inset 0 0 0 1px var(--crisp-bg-brand-solid); }
9
+ & .crisp-datatable-count { margin-inline-start: auto; font-size: var(--crisp-text-md); color: var(--crisp-fg-muted); }
10
10
  /* The header cell has no padding of its own -- the button owns the
11
11
  full cell so the whole header is clickable (its own inset is 12px).
12
12
  Mirrors the summary-row fix. */
@@ -18,71 +18,71 @@
18
18
  -sized box to truncate against, and the th's own overflow hard-clipped
19
19
  it with no "...". Fill the wrapper, scoped to th so Menu's default
20
20
  (correct everywhere else) is untouched. */
21
- & th .menu { width: 100%; height: 100%; }
22
- & .datatable-th-inner { display: inline-flex; align-items: center; gap: var(--space-1-5); width: 100%; min-width: 0; height: 100%; }
23
- & .datatable-th-inner > svg { flex-shrink: 0; color: var(--fg-muted); }
21
+ & th .crisp-menu { width: 100%; height: 100%; }
22
+ & .crisp-datatable-th-inner { display: inline-flex; align-items: center; gap: var(--crisp-space-1-5); width: 100%; min-width: 0; height: 100%; }
23
+ & .crisp-datatable-th-inner > svg { flex-shrink: 0; color: var(--crisp-fg-muted); }
24
24
  /* The summary cell has NO padding of its own -- the calculation trigger
25
25
  owns the whole 246x37 area so a click anywhere in the cell opens the
26
26
  menu. Zero the cell's inset and let ColumnCalc supply the 12px. */
27
27
  & tfoot td { padding: 0; }
28
28
  /* Group heading row -- a view is grouped under a subtle label with the
29
29
  bucket's count beside it. */
30
- & .datatable-viewsettings { display: inline-flex; align-items: center; gap: var(--space-1-5); height: var(--size-row); margin: 0; padding: 0 var(--space-2); border: none; border-radius: var(--radius-md); background: transparent; color: var(--fg-muted); font-family: inherit; font-size: var(--text-md); font-weight: var(--weight-medium); white-space: nowrap; cursor: pointer; transition: background-color .12s, color .12s; }
31
- & .datatable-viewsettings:hover { background: color-mix(in srgb, var(--fg-primary) 4%, transparent); color: var(--fg-primary); }
32
- & .datatable-group-label { padding: var(--space-1-5) var(--space-2) var(--space-1); font-size: var(--text-sm); font-weight: var(--weight-medium); color: var(--fg-muted); }
33
- & .datatable-group { height: var(--size-menuRow); padding: 0 var(--space-3); background: var(--bg-subtle); border-bottom: 1px solid var(--border-subtle); font-size: var(--text-md); font-weight: var(--weight-medium); color: color-mix(in srgb, var(--fg-primary) 63%, transparent); }
34
- & .datatable-group-count { margin-inline-start: var(--space-1-5); color: var(--fg-muted); font-variant-numeric: tabular-nums; }
35
- & .datatable-th-rename { width: 100%; min-width: 0; height: var(--size-row); margin: 0; padding: 0 var(--space-1); border: none; border-radius: var(--radius-md); background: var(--bg-surface); box-shadow: inset 0 0 0 1px var(--bg-brand-solid); font-family: inherit; font-size: var(--text-lg); font-weight: var(--weight-medium); color: var(--fg-primary); outline: none; }
36
- & .datatable-th-rename:focus { box-shadow: inset 0 0 0 1px var(--bg-brand-solid); }
37
- & .datatable-th-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
38
- & .datatable-sort { display: flex; align-items: center; gap: var(--space-1-5); width: 100%; min-width: 0; height: 100%; margin: 0; padding: 0 var(--space-2); border: none; background: none; font: inherit; letter-spacing: inherit; color: inherit; text-align: start; cursor: pointer; }
39
- & th[data-align="right"] .datatable-sort { justify-content: flex-end; }
40
- & .datatable-chevron { margin-inline-start: auto; flex-shrink: 0; color: var(--fg-muted); opacity: 0; transition: opacity .12s; }
41
- & th[data-align="right"] .datatable-chevron { margin-inline-start: 0; }
42
- & .datatable-sort:hover .datatable-chevron { opacity: 0.6; }
43
- & .datatable-sort[data-sorted] .datatable-chevron { opacity: 1; color: var(--fg-primary); }
30
+ & .crisp-datatable-viewsettings { display: inline-flex; align-items: center; gap: var(--crisp-space-1-5); height: var(--crisp-size-row); margin: 0; padding: 0 var(--crisp-space-2); border: none; border-radius: var(--crisp-radius-md); background: transparent; color: var(--crisp-fg-muted); font-family: inherit; font-size: var(--crisp-text-md); font-weight: var(--crisp-weight-medium); white-space: nowrap; cursor: pointer; transition: background-color .12s, color .12s; }
31
+ & .crisp-datatable-viewsettings:hover { background: color-mix(in srgb, var(--crisp-fg-primary) 4%, transparent); color: var(--crisp-fg-primary); }
32
+ & .crisp-datatable-group-label { padding: var(--crisp-space-1-5) var(--crisp-space-2) var(--crisp-space-1); font-size: var(--crisp-text-sm); font-weight: var(--crisp-weight-medium); color: var(--crisp-fg-muted); }
33
+ & .crisp-datatable-group { height: var(--crisp-size-menuRow); padding: 0 var(--crisp-space-3); background: var(--crisp-bg-subtle); border-bottom: 1px solid var(--crisp-border-subtle); font-size: var(--crisp-text-md); font-weight: var(--crisp-weight-medium); color: color-mix(in srgb, var(--crisp-fg-primary) 63%, transparent); }
34
+ & .crisp-datatable-group-count { margin-inline-start: var(--crisp-space-1-5); color: var(--crisp-fg-muted); font-variant-numeric: tabular-nums; }
35
+ & .crisp-datatable-th-rename { width: 100%; min-width: 0; height: var(--crisp-size-row); margin: 0; padding: 0 var(--crisp-space-1); border: none; border-radius: var(--crisp-radius-md); background: var(--crisp-bg-surface); box-shadow: inset 0 0 0 1px var(--crisp-bg-brand-solid); font-family: inherit; font-size: var(--crisp-text-lg); font-weight: var(--crisp-weight-medium); color: var(--crisp-fg-primary); outline: none; }
36
+ & .crisp-datatable-th-rename:focus { box-shadow: inset 0 0 0 1px var(--crisp-bg-brand-solid); }
37
+ & .crisp-datatable-th-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
38
+ & .crisp-datatable-sort { display: flex; align-items: center; gap: var(--crisp-space-1-5); width: 100%; min-width: 0; height: 100%; margin: 0; padding: 0 var(--crisp-space-2); border: none; background: none; font: inherit; letter-spacing: inherit; color: inherit; text-align: start; cursor: pointer; }
39
+ & th[data-align="right"] .crisp-datatable-sort { justify-content: flex-end; }
40
+ & .crisp-datatable-chevron { margin-inline-start: auto; flex-shrink: 0; color: var(--crisp-fg-muted); opacity: 0; transition: opacity .12s; }
41
+ & th[data-align="right"] .crisp-datatable-chevron { margin-inline-start: 0; }
42
+ & .crisp-datatable-sort:hover .crisp-datatable-chevron { opacity: 0.6; }
43
+ & .crisp-datatable-sort[data-sorted] .crisp-datatable-chevron { opacity: 1; color: var(--crisp-fg-primary); }
44
44
  /* sticky first column(s) + horizontal scroll shadow — RecordsTable's feel */
45
- & th[data-sticky], & td[data-sticky] { position: sticky; z-index: 1; background: var(--bg-surface); }
45
+ & th[data-sticky], & td[data-sticky] { position: sticky; z-index: 1; background: var(--crisp-bg-surface); }
46
46
  & th[data-sticky] { z-index: 3; }
47
- & tbody tr[data-selected] td[data-sticky] { background: color-mix(in srgb, var(--bg-brand-solid) 10%, var(--bg-surface)); }
48
- & tbody tr:hover td[data-sticky] { background: color-mix(in srgb, var(--fg-primary) 4%, var(--bg-surface)); }
49
- & .table-scroll[data-scrolled-x] [data-sticky-edge] { clip-path: inset(0 -38px 0 0); box-shadow: 6px 0 16px 4px rgba(0,0,0,0.12); }
47
+ & tbody tr[data-selected] td[data-sticky] { background: color-mix(in srgb, var(--crisp-bg-brand-solid) 10%, var(--crisp-bg-surface)); }
48
+ & tbody tr:hover td[data-sticky] { background: color-mix(in srgb, var(--crisp-fg-primary) 4%, var(--crisp-bg-surface)); }
49
+ & .crisp-table-scroll[data-scrolled-x] [data-sticky-edge] { clip-path: inset(0 -38px 0 0); box-shadow: 6px 0 16px 4px rgba(0,0,0,0.12); }
50
50
  /* add-row + summary footer */
51
- & .datatable-addcell { padding: 0; border-top: none; }
52
- & .datatable-addrow { display: flex; align-items: center; gap: var(--space-2); width: 100%; height: var(--size-tableRow); padding: 0 var(--space-2); border: none; border-top: 1px solid var(--border-subtle); background: var(--bg-surface); color: var(--fg-muted); font-family: inherit; font-size: var(--text-lg); cursor: pointer; transition: background-color .12s; }
53
- & .datatable-addrow:hover { background: var(--bg-raised); color: var(--fg-primary); }
54
- & .datatable-addrow svg { flex-shrink: 0; }
55
- & .datatable-check { display: flex; align-items: center; justify-content: center; }
56
- & .datatable-col-check { width: 40px; padding: 0; text-align: center; }
57
- & tbody tr[data-selected] td { background: color-mix(in srgb, var(--bg-brand-solid) 10%, var(--bg-surface)); }
58
- & tbody tr[data-selected]:hover td { background: color-mix(in srgb, var(--fg-primary) 4%, color-mix(in srgb, var(--bg-brand-solid) 10%, var(--bg-surface))); }
59
- & .datatable-editable:hover { background: color-mix(in srgb, var(--fg-primary) 4%, var(--bg-surface)); cursor: text; }
60
- & .datatable-edit { width: 100%; height: 28px; margin: 0; padding: 0 var(--space-1-5); border: none; border-radius: var(--radius-sm); background: var(--bg-surface); box-shadow: inset 0 0 0 1px var(--bg-brand-solid); font-family: inherit; font-size: var(--text-lg); color: var(--fg-primary); outline: none; vertical-align: middle; }
61
- & .datatable-edit:focus { box-shadow: inset 0 0 0 1px var(--bg-brand-solid); }
62
- & .datatable-empty { padding: var(--space-8) var(--space-3); text-align: center; color: var(--fg-muted); font-size: var(--text-lg); }
51
+ & .crisp-datatable-addcell { padding: 0; border-top: none; }
52
+ & .crisp-datatable-addrow { display: flex; align-items: center; gap: var(--crisp-space-2); width: 100%; height: var(--crisp-size-tableRow); padding: 0 var(--crisp-space-2); border: none; border-top: 1px solid var(--crisp-border-subtle); background: var(--crisp-bg-surface); color: var(--crisp-fg-muted); font-family: inherit; font-size: var(--crisp-text-lg); cursor: pointer; transition: background-color .12s; }
53
+ & .crisp-datatable-addrow:hover { background: var(--crisp-bg-raised); color: var(--crisp-fg-primary); }
54
+ & .crisp-datatable-addrow svg { flex-shrink: 0; }
55
+ & .crisp-datatable-check { display: flex; align-items: center; justify-content: center; }
56
+ & .crisp-datatable-col-check { width: 40px; padding: 0; text-align: center; }
57
+ & tbody tr[data-selected] td { background: color-mix(in srgb, var(--crisp-bg-brand-solid) 10%, var(--crisp-bg-surface)); }
58
+ & tbody tr[data-selected]:hover td { background: color-mix(in srgb, var(--crisp-fg-primary) 4%, color-mix(in srgb, var(--crisp-bg-brand-solid) 10%, var(--crisp-bg-surface))); }
59
+ & .crisp-datatable-editable:hover { background: color-mix(in srgb, var(--crisp-fg-primary) 4%, var(--crisp-bg-surface)); cursor: text; }
60
+ & .crisp-datatable-edit { width: 100%; height: 28px; margin: 0; padding: 0 var(--crisp-space-1-5); border: none; border-radius: var(--crisp-radius-sm); background: var(--crisp-bg-surface); box-shadow: inset 0 0 0 1px var(--crisp-bg-brand-solid); font-family: inherit; font-size: var(--crisp-text-lg); color: var(--crisp-fg-primary); outline: none; vertical-align: middle; }
61
+ & .crisp-datatable-edit:focus { box-shadow: inset 0 0 0 1px var(--crisp-bg-brand-solid); }
62
+ & .crisp-datatable-empty { padding: var(--crisp-space-8) var(--crisp-space-3); text-align: center; color: var(--crisp-fg-muted); font-size: var(--crisp-text-lg); }
63
63
  /* fixed layout so column widths (and resize) are exact — like RecordsTable */
64
64
  & table { table-layout: fixed; }
65
65
  /* column resize grip */
66
- & .datatable-resize { position: absolute; top: 0; inset-inline-end: -3px; width: 9px; height: 100%; cursor: col-resize; z-index: 6; touch-action: none; }
67
- & .datatable-resize::after { content: ""; position: absolute; top: 0; inset-inline-start: 3px; width: 2px; height: 100%; background: var(--bg-brand-solid); opacity: 0; transition: opacity .12s; }
68
- & .datatable-resize:hover::after, & .datatable-resize[data-resizing]::after { opacity: 1; }
66
+ & .crisp-datatable-resize { position: absolute; top: 0; inset-inline-end: -3px; width: 9px; height: 100%; cursor: col-resize; z-index: 6; touch-action: none; }
67
+ & .crisp-datatable-resize::after { content: ""; position: absolute; top: 0; inset-inline-start: 3px; width: 2px; height: 100%; background: var(--crisp-bg-brand-solid); opacity: 0; transition: opacity .12s; }
68
+ & .crisp-datatable-resize:hover::after, & .crisp-datatable-resize[data-resizing]::after { opacity: 1; }
69
69
  /* typed cells — entity (avatar + name), colour-coded tags, numbers, dates */
70
- & .datatable-entity { display: flex; align-items: center; gap: var(--space-1-5); min-width: 0; color: var(--fg-primary); font-weight: var(--weight-medium); }
71
- & .datatable-entity-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
72
- & .datatable-avatar { width: var(--size-icon); height: var(--size-icon); border-radius: var(--radius-sm); flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; font-size: 10px; line-height: 1; font-weight: var(--weight-semibold); text-transform: uppercase; color: var(--fg-on-brand); background: var(--bg-brand-solid); }
73
- & .datatable-avatar[data-tone="success"] { background: var(--bg-success); } & .datatable-avatar[data-tone="warning"] { background: var(--bg-warning); } & .datatable-avatar[data-tone="danger"] { background: var(--bg-danger); } & .datatable-avatar[data-tone="purple"] { background: var(--bg-purple); } & .datatable-avatar[data-tone="cyan"] { background: var(--bg-cyan); } & .datatable-avatar[data-tone="orange"] { background: var(--bg-orange); }
74
- & .datatable-avatar img { width: 100%; height: 100%; border-radius: inherit; object-fit: cover; }
75
- & .datatable-tags { display: flex; align-items: center; gap: var(--space-1); overflow: hidden; }
76
- & .datatable-tag { display: inline-flex; align-items: center; height: var(--size-chip); padding: 0 var(--space-1); border-radius: var(--radius-chip); font-size: var(--text-lg); line-height: 20px; font-weight: var(--weight-medium); white-space: nowrap; background: color-mix(in srgb, var(--fg-primary) 6%, transparent); color: color-mix(in srgb, var(--fg-primary) 82%, transparent); }
77
- & .datatable-tag[data-tone="brand"] { background: color-mix(in srgb, var(--bg-brand-solid) 14%, transparent); color: color-mix(in srgb, var(--bg-brand-solid) 82%, var(--fg-primary)); }
78
- & .datatable-tag[data-tone="success"] { background: color-mix(in srgb, var(--bg-success) 16%, transparent); color: color-mix(in srgb, var(--bg-success) 78%, var(--fg-primary)); }
79
- & .datatable-tag[data-tone="warning"] { background: color-mix(in srgb, var(--bg-warning) 18%, transparent); color: color-mix(in srgb, var(--bg-warning) 82%, var(--fg-primary)); }
80
- & .datatable-tag[data-tone="danger"] { background: color-mix(in srgb, var(--bg-danger) 15%, transparent); color: color-mix(in srgb, var(--bg-danger) 80%, var(--fg-primary)); }
81
- & .datatable-tag[data-tone="purple"] { background: color-mix(in srgb, var(--bg-purple) 16%, transparent); color: color-mix(in srgb, var(--bg-purple) 80%, var(--fg-primary)); }
82
- & .datatable-tag[data-tone="cyan"] { background: color-mix(in srgb, var(--bg-cyan) 18%, transparent); color: color-mix(in srgb, var(--bg-cyan) 82%, var(--fg-primary)); }
83
- & .datatable-tag[data-tone="orange"] { background: color-mix(in srgb, var(--bg-orange) 16%, transparent); color: color-mix(in srgb, var(--bg-orange) 82%, var(--fg-primary)); }
84
- & .datatable-num { font-variant-numeric: tabular-nums; }
85
- & .datatable-muted { color: var(--fg-muted); }
70
+ & .crisp-datatable-entity { display: flex; align-items: center; gap: var(--crisp-space-1-5); min-width: 0; color: var(--crisp-fg-primary); font-weight: var(--crisp-weight-medium); }
71
+ & .crisp-datatable-entity-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
72
+ & .crisp-datatable-avatar { width: var(--crisp-size-icon); height: var(--crisp-size-icon); border-radius: var(--crisp-radius-sm); flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; font-size: 10px; line-height: 1; font-weight: var(--crisp-weight-semibold); text-transform: uppercase; color: var(--crisp-fg-on-brand); background: var(--crisp-bg-brand-solid); }
73
+ & .crisp-datatable-avatar[data-tone="success"] { background: var(--crisp-bg-success); } & .crisp-datatable-avatar[data-tone="warning"] { background: var(--crisp-bg-warning); } & .crisp-datatable-avatar[data-tone="danger"] { background: var(--crisp-bg-danger); } & .crisp-datatable-avatar[data-tone="purple"] { background: var(--crisp-bg-purple); } & .crisp-datatable-avatar[data-tone="cyan"] { background: var(--crisp-bg-cyan); } & .crisp-datatable-avatar[data-tone="orange"] { background: var(--crisp-bg-orange); }
74
+ & .crisp-datatable-avatar img { width: 100%; height: 100%; border-radius: inherit; object-fit: cover; }
75
+ & .crisp-datatable-tags { display: flex; align-items: center; gap: var(--crisp-space-1); overflow: hidden; }
76
+ & .crisp-datatable-tag { display: inline-flex; align-items: center; height: var(--crisp-size-chip); padding: 0 var(--crisp-space-1); border-radius: var(--crisp-radius-chip); font-size: var(--crisp-text-lg); line-height: 20px; font-weight: var(--crisp-weight-medium); white-space: nowrap; background: color-mix(in srgb, var(--crisp-fg-primary) 6%, transparent); color: color-mix(in srgb, var(--crisp-fg-primary) 82%, transparent); }
77
+ & .crisp-datatable-tag[data-tone="brand"] { background: color-mix(in srgb, var(--crisp-bg-brand-solid) 14%, transparent); color: color-mix(in srgb, var(--crisp-bg-brand-solid) 82%, var(--crisp-fg-primary)); }
78
+ & .crisp-datatable-tag[data-tone="success"] { background: color-mix(in srgb, var(--crisp-bg-success) 16%, transparent); color: color-mix(in srgb, var(--crisp-bg-success) 78%, var(--crisp-fg-primary)); }
79
+ & .crisp-datatable-tag[data-tone="warning"] { background: color-mix(in srgb, var(--crisp-bg-warning) 18%, transparent); color: color-mix(in srgb, var(--crisp-bg-warning) 82%, var(--crisp-fg-primary)); }
80
+ & .crisp-datatable-tag[data-tone="danger"] { background: color-mix(in srgb, var(--crisp-bg-danger) 15%, transparent); color: color-mix(in srgb, var(--crisp-bg-danger) 80%, var(--crisp-fg-primary)); }
81
+ & .crisp-datatable-tag[data-tone="purple"] { background: color-mix(in srgb, var(--crisp-bg-purple) 16%, transparent); color: color-mix(in srgb, var(--crisp-bg-purple) 80%, var(--crisp-fg-primary)); }
82
+ & .crisp-datatable-tag[data-tone="cyan"] { background: color-mix(in srgb, var(--crisp-bg-cyan) 18%, transparent); color: color-mix(in srgb, var(--crisp-bg-cyan) 82%, var(--crisp-fg-primary)); }
83
+ & .crisp-datatable-tag[data-tone="orange"] { background: color-mix(in srgb, var(--crisp-bg-orange) 16%, transparent); color: color-mix(in srgb, var(--crisp-bg-orange) 82%, var(--crisp-fg-primary)); }
84
+ & .crisp-datatable-num { font-variant-numeric: tabular-nums; }
85
+ & .crisp-datatable-muted { color: var(--crisp-fg-muted); }
86
86
  /* row drag-to-reorder -- a Settings > Objects > Attributes screen measures
87
87
  a leading 20px grip column, a 16px grip icon, and the row's own
88
88
  hairline doubling as the drop indicator (it tints toward the brand
@@ -91,14 +91,14 @@
91
91
  draggable + dataTransfer, the same one column reorder already uses
92
92
  (RecordsTable's reorderColumn) -- not a proprietary
93
93
  pointer-events implementation. */
94
- & .datatable-col-grip { width: 20px; padding: 0; text-align: center; }
95
- & .datatable-grip { display: inline-flex; align-items: center; justify-content: center; width: 100%; height: 100%; margin: 0; border: none; border-radius: 0; background: none; font-family: inherit; color: var(--fg-muted); cursor: grab; }
96
- & .datatable-grip:active { cursor: grabbing; }
97
- & tbody tr[data-drop-target] td, & tbody tr[data-drop-target] th { box-shadow: inset 0 2px 0 0 var(--bg-brand-solid); transition: box-shadow .12s; }
94
+ & .crisp-datatable-col-grip { width: 20px; padding: 0; text-align: center; }
95
+ & .crisp-datatable-grip { display: inline-flex; align-items: center; justify-content: center; width: 100%; height: 100%; margin: 0; border: none; border-radius: 0; background: none; font-family: inherit; color: var(--crisp-fg-muted); cursor: grab; }
96
+ & .crisp-datatable-grip:active { cursor: grabbing; }
97
+ & tbody tr[data-drop-target] td, & tbody tr[data-drop-target] th { box-shadow: inset 0 2px 0 0 var(--crisp-bg-brand-solid); transition: box-shadow .12s; }
98
98
  }
99
99
 
100
100
  @media (prefers-reduced-motion: reduce) {
101
- .datatable, .datatable * {
101
+ .crisp-datatable, .crisp-datatable * {
102
102
  animation-duration: 0.01ms !important;
103
103
  animation-iteration-count: 1 !important;
104
104
  transition-duration: 0.01ms !important;
@@ -0,0 +1,108 @@
1
+ @layer crisp-components {
2
+ .crisp-datatable {
3
+ display: flex; flex-direction: column; gap: var(--crisp-space-2-5); font-family: var(--crisp-font-sans);
4
+ & .crisp-datatable-toolbar { display: flex; align-items: center; gap: var(--crisp-space-2); }
5
+ & .crisp-datatable-search { position: relative; flex: 1; max-width: 280px; display: inline-flex; align-items: center; }
6
+ & .crisp-datatable-search svg { position: absolute; inset-inline-start: var(--crisp-space-2); color: var(--crisp-fg-muted); pointer-events: none; }
7
+ & .crisp-datatable-search input { width: 100%; height: 32px; padding: 0 var(--crisp-space-2) 0 var(--crisp-space-6); border: none; border-radius: var(--crisp-radius-md); background: var(--crisp-bg-surface); box-shadow: inset 0 0 0 1px var(--crisp-ring-neutral), 0 0 2px rgba(28,40,64,0.18), 0 1px 3px rgba(0,0,0,0.04); font-family: inherit; font-size: var(--crisp-text-lg); color: var(--crisp-fg-primary); outline: none; transition: box-shadow .15s; }
8
+ & .crisp-datatable-search input::placeholder { color: var(--crisp-fg-muted); }
9
+ & .crisp-datatable-search input:focus { box-shadow: inset 0 0 0 1px var(--crisp-bg-brand-solid); }
10
+ & .crisp-datatable-count { margin-inline-start: auto; font-size: var(--crisp-text-md); color: var(--crisp-fg-muted); }
11
+ /* The header cell has no padding of its own -- the button owns the
12
+ full cell so the whole header is clickable (its own inset is 12px).
13
+ Mirrors the summary-row fix. */
14
+ & th { padding: 0; }
15
+ /* Same wrapper trap as AUTHORING.md Lesson 40 (ColumnCalc's summary trigger):
16
+ Menu wraps its trigger in a flex div that sizes to its content, so a
17
+ long header grew past the column instead of filling it -- with nothing
18
+ left to squeeze, the label's own ellipsis CSS (below) had no properly
19
+ -sized box to truncate against, and the th's own overflow hard-clipped
20
+ it with no "...". Fill the wrapper, scoped to th so Menu's default
21
+ (correct everywhere else) is untouched. */
22
+ & th .crisp-menu { width: 100%; height: 100%; }
23
+ & .crisp-datatable-th-inner { display: inline-flex; align-items: center; gap: var(--crisp-space-1-5); width: 100%; min-width: 0; height: 100%; }
24
+ & .crisp-datatable-th-inner > svg { flex-shrink: 0; color: var(--crisp-fg-muted); }
25
+ /* The summary cell has NO padding of its own -- the calculation trigger
26
+ owns the whole 246x37 area so a click anywhere in the cell opens the
27
+ menu. Zero the cell's inset and let ColumnCalc supply the 12px. */
28
+ & tfoot td { padding: 0; }
29
+ /* Group heading row -- a view is grouped under a subtle label with the
30
+ bucket's count beside it. */
31
+ & .crisp-datatable-viewsettings { display: inline-flex; align-items: center; gap: var(--crisp-space-1-5); height: var(--crisp-size-row); margin: 0; padding: 0 var(--crisp-space-2); border: none; border-radius: var(--crisp-radius-md); background: transparent; color: var(--crisp-fg-muted); font-family: inherit; font-size: var(--crisp-text-md); font-weight: var(--crisp-weight-medium); white-space: nowrap; cursor: pointer; transition: background-color .12s, color .12s; }
32
+ & .crisp-datatable-viewsettings:hover { background: color-mix(in srgb, var(--crisp-fg-primary) 4%, transparent); color: var(--crisp-fg-primary); }
33
+ & .crisp-datatable-group-label { padding: var(--crisp-space-1-5) var(--crisp-space-2) var(--crisp-space-1); font-size: var(--crisp-text-sm); font-weight: var(--crisp-weight-medium); color: var(--crisp-fg-muted); }
34
+ & .crisp-datatable-group { height: var(--crisp-size-menuRow); padding: 0 var(--crisp-space-3); background: var(--crisp-bg-subtle); border-bottom: 1px solid var(--crisp-border-subtle); font-size: var(--crisp-text-md); font-weight: var(--crisp-weight-medium); color: color-mix(in srgb, var(--crisp-fg-primary) 63%, transparent); }
35
+ & .crisp-datatable-group-count { margin-inline-start: var(--crisp-space-1-5); color: var(--crisp-fg-muted); font-variant-numeric: tabular-nums; }
36
+ & .crisp-datatable-th-rename { width: 100%; min-width: 0; height: var(--crisp-size-row); margin: 0; padding: 0 var(--crisp-space-1); border: none; border-radius: var(--crisp-radius-md); background: var(--crisp-bg-surface); box-shadow: inset 0 0 0 1px var(--crisp-bg-brand-solid); font-family: inherit; font-size: var(--crisp-text-lg); font-weight: var(--crisp-weight-medium); color: var(--crisp-fg-primary); outline: none; }
37
+ & .crisp-datatable-th-rename:focus { box-shadow: inset 0 0 0 1px var(--crisp-bg-brand-solid); }
38
+ & .crisp-datatable-th-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
39
+ & .crisp-datatable-sort { display: flex; align-items: center; gap: var(--crisp-space-1-5); width: 100%; min-width: 0; height: 100%; margin: 0; padding: 0 var(--crisp-space-2); border: none; background: none; font: inherit; letter-spacing: inherit; color: inherit; text-align: start; cursor: pointer; }
40
+ & th[data-align="right"] .crisp-datatable-sort { justify-content: flex-end; }
41
+ & .crisp-datatable-chevron { margin-inline-start: auto; flex-shrink: 0; color: var(--crisp-fg-muted); opacity: 0; transition: opacity .12s; }
42
+ & th[data-align="right"] .crisp-datatable-chevron { margin-inline-start: 0; }
43
+ & .crisp-datatable-sort:hover .crisp-datatable-chevron { opacity: 0.6; }
44
+ & .crisp-datatable-sort[data-sorted] .crisp-datatable-chevron { opacity: 1; color: var(--crisp-fg-primary); }
45
+ /* sticky first column(s) + horizontal scroll shadow — RecordsTable's feel */
46
+ & th[data-sticky], & td[data-sticky] { position: sticky; z-index: 1; background: var(--crisp-bg-surface); }
47
+ & th[data-sticky] { z-index: 3; }
48
+ & tbody tr[data-selected] td[data-sticky] { background: color-mix(in srgb, var(--crisp-bg-brand-solid) 10%, var(--crisp-bg-surface)); }
49
+ & tbody tr:hover td[data-sticky] { background: color-mix(in srgb, var(--crisp-fg-primary) 4%, var(--crisp-bg-surface)); }
50
+ & .crisp-table-scroll[data-scrolled-x] [data-sticky-edge] { clip-path: inset(0 -38px 0 0); box-shadow: 6px 0 16px 4px rgba(0,0,0,0.12); }
51
+ /* add-row + summary footer */
52
+ & .crisp-datatable-addcell { padding: 0; border-top: none; }
53
+ & .crisp-datatable-addrow { display: flex; align-items: center; gap: var(--crisp-space-2); width: 100%; height: var(--crisp-size-tableRow); padding: 0 var(--crisp-space-2); border: none; border-top: 1px solid var(--crisp-border-subtle); background: var(--crisp-bg-surface); color: var(--crisp-fg-muted); font-family: inherit; font-size: var(--crisp-text-lg); cursor: pointer; transition: background-color .12s; }
54
+ & .crisp-datatable-addrow:hover { background: var(--crisp-bg-raised); color: var(--crisp-fg-primary); }
55
+ & .crisp-datatable-addrow svg { flex-shrink: 0; }
56
+ & .crisp-datatable-check { display: flex; align-items: center; justify-content: center; }
57
+ & .crisp-datatable-col-check { width: 40px; padding: 0; text-align: center; }
58
+ & tbody tr[data-selected] td { background: color-mix(in srgb, var(--crisp-bg-brand-solid) 10%, var(--crisp-bg-surface)); }
59
+ & tbody tr[data-selected]:hover td { background: color-mix(in srgb, var(--crisp-fg-primary) 4%, color-mix(in srgb, var(--crisp-bg-brand-solid) 10%, var(--crisp-bg-surface))); }
60
+ & .crisp-datatable-editable:hover { background: color-mix(in srgb, var(--crisp-fg-primary) 4%, var(--crisp-bg-surface)); cursor: text; }
61
+ & .crisp-datatable-edit { width: 100%; height: 28px; margin: 0; padding: 0 var(--crisp-space-1-5); border: none; border-radius: var(--crisp-radius-sm); background: var(--crisp-bg-surface); box-shadow: inset 0 0 0 1px var(--crisp-bg-brand-solid); font-family: inherit; font-size: var(--crisp-text-lg); color: var(--crisp-fg-primary); outline: none; vertical-align: middle; }
62
+ & .crisp-datatable-edit:focus { box-shadow: inset 0 0 0 1px var(--crisp-bg-brand-solid); }
63
+ & .crisp-datatable-empty { padding: var(--crisp-space-8) var(--crisp-space-3); text-align: center; color: var(--crisp-fg-muted); font-size: var(--crisp-text-lg); }
64
+ /* fixed layout so column widths (and resize) are exact — like RecordsTable */
65
+ & table { table-layout: fixed; }
66
+ /* column resize grip */
67
+ & .crisp-datatable-resize { position: absolute; top: 0; inset-inline-end: -3px; width: 9px; height: 100%; cursor: col-resize; z-index: 6; touch-action: none; }
68
+ & .crisp-datatable-resize::after { content: ""; position: absolute; top: 0; inset-inline-start: 3px; width: 2px; height: 100%; background: var(--crisp-bg-brand-solid); opacity: 0; transition: opacity .12s; }
69
+ & .crisp-datatable-resize:hover::after, & .crisp-datatable-resize[data-resizing]::after { opacity: 1; }
70
+ /* typed cells — entity (avatar + name), colour-coded tags, numbers, dates */
71
+ & .crisp-datatable-entity { display: flex; align-items: center; gap: var(--crisp-space-1-5); min-width: 0; color: var(--crisp-fg-primary); font-weight: var(--crisp-weight-medium); }
72
+ & .crisp-datatable-entity-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
73
+ & .crisp-datatable-avatar { width: var(--crisp-size-icon); height: var(--crisp-size-icon); border-radius: var(--crisp-radius-sm); flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; font-size: 10px; line-height: 1; font-weight: var(--crisp-weight-semibold); text-transform: uppercase; color: var(--crisp-fg-on-brand); background: var(--crisp-bg-brand-solid); }
74
+ & .crisp-datatable-avatar[data-tone="success"] { background: var(--crisp-bg-success); } & .crisp-datatable-avatar[data-tone="warning"] { background: var(--crisp-bg-warning); } & .crisp-datatable-avatar[data-tone="danger"] { background: var(--crisp-bg-danger); } & .crisp-datatable-avatar[data-tone="purple"] { background: var(--crisp-bg-purple); } & .crisp-datatable-avatar[data-tone="cyan"] { background: var(--crisp-bg-cyan); } & .crisp-datatable-avatar[data-tone="orange"] { background: var(--crisp-bg-orange); }
75
+ & .crisp-datatable-avatar img { width: 100%; height: 100%; border-radius: inherit; object-fit: cover; }
76
+ & .crisp-datatable-tags { display: flex; align-items: center; gap: var(--crisp-space-1); overflow: hidden; }
77
+ & .crisp-datatable-tag { display: inline-flex; align-items: center; height: var(--crisp-size-chip); padding: 0 var(--crisp-space-1); border-radius: var(--crisp-radius-chip); font-size: var(--crisp-text-lg); line-height: 20px; font-weight: var(--crisp-weight-medium); white-space: nowrap; background: color-mix(in srgb, var(--crisp-fg-primary) 6%, transparent); color: color-mix(in srgb, var(--crisp-fg-primary) 82%, transparent); }
78
+ & .crisp-datatable-tag[data-tone="brand"] { background: color-mix(in srgb, var(--crisp-bg-brand-solid) 14%, transparent); color: color-mix(in srgb, var(--crisp-bg-brand-solid) 82%, var(--crisp-fg-primary)); }
79
+ & .crisp-datatable-tag[data-tone="success"] { background: color-mix(in srgb, var(--crisp-bg-success) 16%, transparent); color: color-mix(in srgb, var(--crisp-bg-success) 78%, var(--crisp-fg-primary)); }
80
+ & .crisp-datatable-tag[data-tone="warning"] { background: color-mix(in srgb, var(--crisp-bg-warning) 18%, transparent); color: color-mix(in srgb, var(--crisp-bg-warning) 82%, var(--crisp-fg-primary)); }
81
+ & .crisp-datatable-tag[data-tone="danger"] { background: color-mix(in srgb, var(--crisp-bg-danger) 15%, transparent); color: color-mix(in srgb, var(--crisp-bg-danger) 80%, var(--crisp-fg-primary)); }
82
+ & .crisp-datatable-tag[data-tone="purple"] { background: color-mix(in srgb, var(--crisp-bg-purple) 16%, transparent); color: color-mix(in srgb, var(--crisp-bg-purple) 80%, var(--crisp-fg-primary)); }
83
+ & .crisp-datatable-tag[data-tone="cyan"] { background: color-mix(in srgb, var(--crisp-bg-cyan) 18%, transparent); color: color-mix(in srgb, var(--crisp-bg-cyan) 82%, var(--crisp-fg-primary)); }
84
+ & .crisp-datatable-tag[data-tone="orange"] { background: color-mix(in srgb, var(--crisp-bg-orange) 16%, transparent); color: color-mix(in srgb, var(--crisp-bg-orange) 82%, var(--crisp-fg-primary)); }
85
+ & .crisp-datatable-num { font-variant-numeric: tabular-nums; }
86
+ & .crisp-datatable-muted { color: var(--crisp-fg-muted); }
87
+ /* row drag-to-reorder -- a Settings > Objects > Attributes screen measures
88
+ a leading 20px grip column, a 16px grip icon, and the row's own
89
+ hairline doubling as the drop indicator (it tints toward the brand
90
+ colour as the active drop target). The affordance + geometry are
91
+ measured; the drag MECHANISM is crisp's existing house idiom -- HTML5
92
+ draggable + dataTransfer, the same one column reorder already uses
93
+ (RecordsTable's reorderColumn) -- not a proprietary
94
+ pointer-events implementation. */
95
+ & .crisp-datatable-col-grip { width: 20px; padding: 0; text-align: center; }
96
+ & .crisp-datatable-grip { display: inline-flex; align-items: center; justify-content: center; width: 100%; height: 100%; margin: 0; border: none; border-radius: 0; background: none; font-family: inherit; color: var(--crisp-fg-muted); cursor: grab; }
97
+ & .crisp-datatable-grip:active { cursor: grabbing; }
98
+ & tbody tr[data-drop-target] td, & tbody tr[data-drop-target] th { box-shadow: inset 0 2px 0 0 var(--crisp-bg-brand-solid); transition: box-shadow .12s; }
99
+ }
100
+
101
+ @media (prefers-reduced-motion: reduce) {
102
+ .crisp-datatable, .crisp-datatable * {
103
+ animation-duration: 0.01ms !important;
104
+ animation-iteration-count: 1 !important;
105
+ transition-duration: 0.01ms !important;
106
+ }
107
+ }
108
+ }
@@ -1,66 +1,66 @@
1
- .datepicker {
1
+ .crisp-datepicker {
2
2
 
3
3
  position: relative; box-sizing: border-box; width: 100%; min-width: 0;
4
- font-family: var(--font-sans); color: var(--fg-primary); background: var(--bg-surface);
4
+ font-family: var(--crisp-font-sans); color: var(--crisp-fg-primary); background: var(--crisp-bg-surface);
5
5
 
6
- & .datepicker-header {
6
+ & .crisp-datepicker-header {
7
7
  display: flex; align-items: center; justify-content: space-between;
8
- height: var(--size-menuRow);
9
- }
10
- & .datepicker-header-label {
11
- display: inline-flex; align-items: center; gap: var(--space-1);
12
- height: 100%; min-width: 0; border: 0; padding: 0 var(--space-1);
13
- border-radius: var(--radius-md); background: transparent; cursor: pointer;
14
- color: var(--fg-primary); font-family: inherit;
15
- font-size: var(--text-lg); line-height: 20px; font-weight: var(--weight-medium);
8
+ height: var(--crisp-size-menuRow);
9
+ }
10
+ & .crisp-datepicker-header-label {
11
+ display: inline-flex; align-items: center; gap: var(--crisp-space-1);
12
+ height: 100%; min-width: 0; border: 0; padding: 0 var(--crisp-space-1);
13
+ border-radius: var(--crisp-radius-md); background: transparent; cursor: pointer;
14
+ color: var(--crisp-fg-primary); font-family: inherit;
15
+ font-size: var(--crisp-text-lg); line-height: 20px; font-weight: var(--crisp-weight-medium);
16
16
  white-space: nowrap;
17
17
  outline: 2px solid transparent; outline-offset: -2px;
18
18
  transition: outline-color .2s ease;
19
19
  }
20
- & .datepicker-header-label:focus-visible { outline-color: var(--stroke-focus-ring); }
21
- & .datepicker-header-chevron { display: inline-flex; transition: transform .2s ease; }
22
- & .datepicker-header-chevron[data-open] { transform: rotate(180deg); }
20
+ & .crisp-datepicker-header-label:focus-visible { outline-color: var(--crisp-stroke-focus-ring); }
21
+ & .crisp-datepicker-header-chevron { display: inline-flex; transition: transform .2s ease; }
22
+ & .crisp-datepicker-header-chevron[data-open] { transform: rotate(180deg); }
23
23
 
24
- & .datepicker-nav { display: flex; align-items: center; }
25
- & .datepicker-nav-button {
24
+ & .crisp-datepicker-nav { display: flex; align-items: center; }
25
+ & .crisp-datepicker-nav-button {
26
26
  display: inline-flex; align-items: center; justify-content: center;
27
- width: var(--size-menuRow); height: var(--size-menuRow); padding: 0;
28
- border: none; border-radius: var(--radius-md); background: none;
29
- color: var(--fg-muted); font-family: inherit; cursor: pointer;
27
+ width: var(--crisp-size-menuRow); height: var(--crisp-size-menuRow); padding: 0;
28
+ border: none; border-radius: var(--crisp-radius-md); background: none;
29
+ color: var(--crisp-fg-muted); font-family: inherit; cursor: pointer;
30
30
  outline: 2px solid transparent; outline-offset: -2px;
31
31
  transition: background-color .12s, outline-color .2s ease;
32
32
  }
33
- & .datepicker-nav-button:hover { background: var(--bg-raised); }
34
- & .datepicker-nav-button:focus-visible { outline-color: var(--stroke-focus-ring); }
35
- & .datepicker-nav-button:disabled { opacity: .4; cursor: not-allowed; }
33
+ & .crisp-datepicker-nav-button:hover { background: var(--crisp-bg-raised); }
34
+ & .crisp-datepicker-nav-button:focus-visible { outline-color: var(--crisp-stroke-focus-ring); }
35
+ & .crisp-datepicker-nav-button:disabled { opacity: .4; cursor: not-allowed; }
36
36
 
37
- & .datepicker-weekday-row {
37
+ & .crisp-datepicker-weekday-row {
38
38
  display: grid; grid-template-columns: repeat(7, minmax(0, 1fr));
39
- position: relative; z-index: 2; background: var(--bg-surface);
39
+ position: relative; z-index: 2; background: var(--crisp-bg-surface);
40
40
  }
41
- & .datepicker-weekday {
41
+ & .crisp-datepicker-weekday {
42
42
  display: flex; align-items: center; justify-content: center;
43
- height: var(--size-calendarCell); color: var(--fg-neutral-subtle);
44
- font-size: var(--text-sm); line-height: 16px; font-weight: var(--weight-medium);
43
+ height: var(--crisp-size-calendarCell); color: var(--crisp-fg-neutral-subtle);
44
+ font-size: var(--crisp-text-sm); line-height: 16px; font-weight: var(--crisp-weight-medium);
45
45
  }
46
46
 
47
- & .datepicker-months { display: grid; grid-template-columns: minmax(0, 1fr); align-items: start; min-width: 0; }
48
- & .datepicker-months[data-wheel-open] { visibility: hidden; }
49
- & .datepicker-month { min-width: 0; }
50
- & .datepicker-month-label {
47
+ & .crisp-datepicker-months { display: grid; grid-template-columns: minmax(0, 1fr); align-items: start; min-width: 0; }
48
+ & .crisp-datepicker-months[data-wheel-open] { visibility: hidden; }
49
+ & .crisp-datepicker-month { min-width: 0; }
50
+ & .crisp-datepicker-month-label {
51
51
  display: flex; align-items: center; height: 24px;
52
- color: var(--fg-primary); font-size: var(--text-lg); line-height: 20px;
53
- font-weight: var(--weight-medium);
52
+ color: var(--crisp-fg-primary); font-size: var(--crisp-text-lg); line-height: 20px;
53
+ font-weight: var(--crisp-weight-medium);
54
54
  }
55
55
 
56
- & .datepicker-grid { display: grid; min-width: 0; }
57
- & .datepicker-week-row { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
56
+ & .crisp-datepicker-grid { display: grid; min-width: 0; }
57
+ & .crisp-datepicker-week-row { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
58
58
 
59
- & .datepicker-cell {
60
- position: relative; min-width: 0; min-height: var(--size-calendarCell);
59
+ & .crisp-datepicker-cell {
60
+ position: relative; min-width: 0; min-height: var(--crisp-size-calendarCell);
61
61
  isolation: isolate;
62
62
  }
63
- & .datepicker-empty-cell { min-height: var(--size-calendarCell); }
63
+ & .crisp-datepicker-empty-cell { min-height: var(--crisp-size-calendarCell); }
64
64
 
65
65
  /* The bridge joining days inside a completed range.
66
66
  The endpoints do NOT carry data-in-range -- only the interior days do --
@@ -69,107 +69,107 @@
69
69
  element on an endpoint, which leaves a half-cell of white between the
70
70
  endpoint's pill and the run of grey beside it. Each rule declares its
71
71
  own content. */
72
- & .datepicker-cell[data-range-complete][data-in-range]::before {
72
+ & .crisp-datepicker-cell[data-range-complete][data-in-range]::before {
73
73
  content: ""; position: absolute; z-index: -1; inset-inline: 0;
74
- top: calc((var(--size-calendarCell) - var(--size-calendarPill)) / 2); height: var(--size-calendarPill); background: var(--bg-neutral-weak);
74
+ top: calc((var(--crisp-size-calendarCell) - var(--crisp-size-calendarPill)) / 2); height: var(--crisp-size-calendarPill); background: var(--crisp-bg-neutral-weak);
75
75
  }
76
- & .datepicker-cell[data-range-complete][data-range-start]:not([data-range-end])::before {
76
+ & .crisp-datepicker-cell[data-range-complete][data-range-start]:not([data-range-end])::before {
77
77
  content: ""; position: absolute; z-index: -1;
78
78
  inset-inline-start: 50%; inset-inline-end: 0;
79
- top: calc((var(--size-calendarCell) - var(--size-calendarPill)) / 2); height: var(--size-calendarPill); background: var(--bg-neutral-weak);
79
+ top: calc((var(--crisp-size-calendarCell) - var(--crisp-size-calendarPill)) / 2); height: var(--crisp-size-calendarPill); background: var(--crisp-bg-neutral-weak);
80
80
  }
81
- & .datepicker-cell[data-range-complete][data-range-end]:not([data-range-start])::before {
81
+ & .crisp-datepicker-cell[data-range-complete][data-range-end]:not([data-range-start])::before {
82
82
  content: ""; position: absolute; z-index: -1;
83
83
  inset-inline-start: 0; inset-inline-end: 50%;
84
- top: calc((var(--size-calendarCell) - var(--size-calendarPill)) / 2); height: var(--size-calendarPill); background: var(--bg-neutral-weak);
84
+ top: calc((var(--crisp-size-calendarCell) - var(--crisp-size-calendarPill)) / 2); height: var(--crisp-size-calendarPill); background: var(--crisp-bg-neutral-weak);
85
85
  }
86
86
 
87
- & .datepicker-date {
87
+ & .crisp-datepicker-date {
88
88
  position: relative; display: flex; width: 100%; height: 100%;
89
- min-height: var(--size-calendarCell); min-width: 0;
89
+ min-height: var(--crisp-size-calendarCell); min-width: 0;
90
90
  align-items: flex-start; justify-content: center;
91
91
  border: 0; padding: 0; background: transparent; cursor: pointer;
92
- color: var(--fg-primary); font: inherit; outline: none;
92
+ color: var(--crisp-fg-primary); font: inherit; outline: none;
93
93
  isolation: isolate;
94
94
  }
95
95
  /* the round day highlight, behind the numeral */
96
- & .datepicker-date::before {
97
- content: ""; position: absolute; z-index: -1; top: calc((var(--size-calendarCell) - var(--size-calendarPill)) / 2); left: 50%;
98
- width: var(--size-calendarPill); height: var(--size-calendarPill);
99
- border-radius: var(--radius-md);
96
+ & .crisp-datepicker-date::before {
97
+ content: ""; position: absolute; z-index: -1; top: calc((var(--crisp-size-calendarCell) - var(--crisp-size-calendarPill)) / 2); left: 50%;
98
+ width: var(--crisp-size-calendarPill); height: var(--crisp-size-calendarPill);
99
+ border-radius: var(--crisp-radius-md);
100
100
  background: transparent; transform: translateX(-50%);
101
101
  }
102
- & .datepicker-date[data-today]::before { background: var(--bg-neutral-weak); }
103
- & .datepicker-date[data-selected]::before { background: var(--bg-brand-solid); }
104
- & .datepicker-date[data-selected] { color: var(--fg-on-brand); }
105
- & .datepicker-date[data-in-range] { color: var(--fg-primary); }
106
- & .datepicker-date[data-in-range]::before { background: transparent; }
107
- & .datepicker-date[data-unavailable] { color: var(--fg-disabled); }
108
- & .datepicker-date:disabled { color: var(--fg-disabled); cursor: not-allowed; }
109
- & .datepicker-date:focus-visible::after {
110
- content: ""; position: absolute; top: calc((var(--size-calendarCell) - var(--size-calendarPill)) / 2); left: 50%;
111
- width: var(--size-calendarPill); height: var(--size-calendarPill);
112
- transform: translateX(-50%); border-radius: var(--radius-md);
113
- outline: 2px solid var(--stroke-focus-ring); outline-offset: -2px;
102
+ & .crisp-datepicker-date[data-today]::before { background: var(--crisp-bg-neutral-weak); }
103
+ & .crisp-datepicker-date[data-selected]::before { background: var(--crisp-bg-brand-solid); }
104
+ & .crisp-datepicker-date[data-selected] { color: var(--crisp-fg-on-brand); }
105
+ & .crisp-datepicker-date[data-in-range] { color: var(--crisp-fg-primary); }
106
+ & .crisp-datepicker-date[data-in-range]::before { background: transparent; }
107
+ & .crisp-datepicker-date[data-unavailable] { color: var(--crisp-fg-disabled); }
108
+ & .crisp-datepicker-date:disabled { color: var(--crisp-fg-disabled); cursor: not-allowed; }
109
+ & .crisp-datepicker-date:focus-visible::after {
110
+ content: ""; position: absolute; top: calc((var(--crisp-size-calendarCell) - var(--crisp-size-calendarPill)) / 2); left: 50%;
111
+ width: var(--crisp-size-calendarPill); height: var(--crisp-size-calendarPill);
112
+ transform: translateX(-50%); border-radius: var(--crisp-radius-md);
113
+ outline: 2px solid var(--crisp-stroke-focus-ring); outline-offset: -2px;
114
114
  }
115
115
 
116
- & .datepicker-date-content {
116
+ & .crisp-datepicker-date-content {
117
117
  position: relative; z-index: 1; display: flex; width: 100%;
118
- min-height: var(--size-calendarCell); min-width: 0; box-sizing: border-box;
118
+ min-height: var(--crisp-size-calendarCell); min-width: 0; box-sizing: border-box;
119
119
  flex-direction: column; align-items: center; gap: 3px;
120
- padding-top: calc((var(--size-calendarCell) - var(--size-calendarPill)) / 2); color: inherit;
121
- font-size: var(--text-lg); line-height: 20px; font-weight: var(--weight-medium);
120
+ padding-top: calc((var(--crisp-size-calendarCell) - var(--crisp-size-calendarPill)) / 2); color: inherit;
121
+ font-size: var(--crisp-text-lg); line-height: 20px; font-weight: var(--crisp-weight-medium);
122
122
  font-variant-numeric: tabular-nums;
123
123
  }
124
124
  /* The numeral is its own 42px flex box so it centres on the 42px pill.
125
125
  Without this the content column top-aligns the glyph and the pill reads
126
126
  as offset — the cell is 48px, the pill 42px inset 3px, and only a
127
127
  42px-tall numeral box shares the pill's centre line. */
128
- & .datepicker-date-content > [data-date-picker-day] {
129
- display: flex; min-height: var(--size-calendarPill); flex-shrink: 0;
128
+ & .crisp-datepicker-date-content > [data-date-picker-day] {
129
+ display: flex; min-height: var(--crisp-size-calendarPill); flex-shrink: 0;
130
130
  align-items: center; justify-content: center;
131
131
  }
132
132
 
133
133
  /* the year/month wheel, laid over the grid it replaces */
134
- & .datepicker-wheel-container {
134
+ & .crisp-datepicker-wheel-container {
135
135
  position: absolute; z-index: 1; inset-inline: 0;
136
- top: var(--size-menuRow); bottom: 0;
136
+ top: var(--crisp-size-menuRow); bottom: 0;
137
137
  display: flex; align-items: center; overflow: hidden;
138
- background: var(--bg-surface);
138
+ background: var(--crisp-bg-surface);
139
139
  }
140
- & .datepicker-wheel { width: 100%; }
140
+ & .crisp-datepicker-wheel { width: 100%; }
141
141
 
142
- & .datepicker-continuous-scroll {
142
+ & .crisp-datepicker-continuous-scroll {
143
143
  height: 100%; min-height: 0; overflow-y: auto;
144
144
  overscroll-behavior: contain; scrollbar-width: none;
145
145
  }
146
- & .datepicker-continuous-scroll::-webkit-scrollbar { display: none; }
147
- & .datepicker-continuous-content { display: flex; flex-direction: column; }
146
+ & .crisp-datepicker-continuous-scroll::-webkit-scrollbar { display: none; }
147
+ & .crisp-datepicker-continuous-content { display: flex; flex-direction: column; }
148
148
 
149
149
  /* announced, never drawn */
150
- & .datepicker-live-region {
150
+ & .crisp-datepicker-live-region {
151
151
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
152
152
  overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
153
153
  }
154
154
 
155
155
  }
156
- .datepicker--visibleRange_month {
156
+ .crisp-datepicker--visibleRange_month {
157
157
 
158
158
  }
159
- .datepicker--visibleRange_twoMonths {
160
- & .datepicker-months { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--space-6); }
161
- & .datepicker-two-month-header { display: flex; align-items: center; justify-content: space-between; height: var(--size-menuRow); }
162
- & .datepicker-two-month-label { color: var(--fg-primary); font-size: var(--text-lg); line-height: 20px; font-weight: var(--weight-medium); }
159
+ .crisp-datepicker--visibleRange_twoMonths {
160
+ & .crisp-datepicker-months { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--crisp-space-6); }
161
+ & .crisp-datepicker-two-month-header { display: flex; align-items: center; justify-content: space-between; height: var(--crisp-size-menuRow); }
162
+ & .crisp-datepicker-two-month-label { color: var(--crisp-fg-primary); font-size: var(--crisp-text-lg); line-height: 20px; font-weight: var(--crisp-weight-medium); }
163
163
  }
164
- .datepicker--visibleRange_week {
164
+ .crisp-datepicker--visibleRange_week {
165
165
 
166
166
  }
167
- .datepicker--visibleRange_continuous {
168
- & .datepicker-weekday-row { position: sticky; top: 0; }
167
+ .crisp-datepicker--visibleRange_continuous {
168
+ & .crisp-datepicker-weekday-row { position: sticky; top: 0; }
169
169
  }
170
170
 
171
171
  @media (prefers-reduced-motion: reduce) {
172
- .datepicker, .datepicker * {
172
+ .crisp-datepicker, .crisp-datepicker * {
173
173
  animation-duration: 0.01ms !important;
174
174
  animation-iteration-count: 1 !important;
175
175
  transition-duration: 0.01ms !important;