@tcn/ui 0.16.0 → 0.18.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 (437) hide show
  1. package/dist/actions/index.d.ts +0 -1
  2. package/dist/actions/index.d.ts.map +1 -1
  3. package/dist/actions/index.js +6 -8
  4. package/dist/actions/index.js.map +1 -1
  5. package/dist/card.css +1 -0
  6. package/dist/column.css +1 -1
  7. package/dist/containers.css +1 -1
  8. package/dist/containers.module-BmICKsOK.js +5 -0
  9. package/dist/containers.module-BmICKsOK.js.map +1 -0
  10. package/dist/draggable.css +1 -1
  11. package/dist/draggable.module-DFYR5n3n.js +5 -0
  12. package/dist/draggable.module-DFYR5n3n.js.map +1 -0
  13. package/dist/field_set.css +1 -1
  14. package/dist/field_set.module-BpJTFCi4.js +5 -0
  15. package/dist/field_set.module-BpJTFCi4.js.map +1 -0
  16. package/dist/form/field/field.js +17 -13
  17. package/dist/form/field/field.js.map +1 -1
  18. package/dist/form/field_set/field_set.d.ts +6 -10
  19. package/dist/form/field_set/field_set.d.ts.map +1 -1
  20. package/dist/form/field_set/field_set.js +33 -61
  21. package/dist/form/field_set/field_set.js.map +1 -1
  22. package/dist/form/field_set/legend.d.ts +20 -0
  23. package/dist/form/field_set/legend.d.ts.map +1 -0
  24. package/dist/form/field_set/legend.js +28 -0
  25. package/dist/form/field_set/legend.js.map +1 -0
  26. package/dist/form/index.d.ts +2 -1
  27. package/dist/form/index.d.ts.map +1 -1
  28. package/dist/form/index.js +24 -22
  29. package/dist/form/index.js.map +1 -1
  30. package/dist/inputs/color_input/color_input.js +2 -3
  31. package/dist/inputs/color_input/color_input.js.map +1 -1
  32. package/dist/inputs/color_input/color_picker.js +11 -7
  33. package/dist/inputs/color_input/color_picker.js.map +1 -1
  34. package/dist/inputs/combo_box/combo_box.js +24 -20
  35. package/dist/inputs/combo_box/combo_box.js.map +1 -1
  36. package/dist/inputs/date_picker/date_picker.js +19 -15
  37. package/dist/inputs/date_picker/date_picker.js.map +1 -1
  38. package/dist/inputs/date_picker/date_picker_header.d.ts.map +1 -1
  39. package/dist/inputs/date_picker/date_picker_header.js +15 -14
  40. package/dist/inputs/date_picker/date_picker_header.js.map +1 -1
  41. package/dist/inputs/date_picker/date_picker_input.js +26 -23
  42. package/dist/inputs/date_picker/date_picker_input.js.map +1 -1
  43. package/dist/inputs/date_picker/date_picker_time_selector.js +2 -3
  44. package/dist/inputs/date_picker/date_picker_time_selector.js.map +1 -1
  45. package/dist/inputs/date_picker/date_picker_year_input.js +2 -3
  46. package/dist/inputs/date_picker/date_picker_year_input.js.map +1 -1
  47. package/dist/inputs/date_picker/date_picker_year_selector.js +24 -21
  48. package/dist/inputs/date_picker/date_picker_year_selector.js.map +1 -1
  49. package/dist/inputs/mask_input/key_capture_input.js +35 -31
  50. package/dist/inputs/mask_input/key_capture_input.js.map +1 -1
  51. package/dist/inputs/mask_input/mask_input.js +18 -14
  52. package/dist/inputs/mask_input/mask_input.js.map +1 -1
  53. package/dist/inputs/multiselect/multiselect.js +28 -24
  54. package/dist/inputs/multiselect/multiselect.js.map +1 -1
  55. package/dist/inputs/multiselect/multiselect_inline_values.d.ts.map +1 -1
  56. package/dist/inputs/multiselect/multiselect_inline_values.js +15 -15
  57. package/dist/inputs/multiselect/multiselect_inline_values.js.map +1 -1
  58. package/dist/inputs/multiselect/multiselect_values.js +16 -17
  59. package/dist/inputs/multiselect/multiselect_values.js.map +1 -1
  60. package/dist/inputs/phone_number_input/phone_number_context.js +13 -9
  61. package/dist/inputs/phone_number_input/phone_number_context.js.map +1 -1
  62. package/dist/inputs/phone_number_input/phone_number_input_adapter.js +2 -3
  63. package/dist/inputs/phone_number_input/phone_number_input_adapter.js.map +1 -1
  64. package/dist/inputs/phone_number_input/sip_input.js +8 -9
  65. package/dist/inputs/phone_number_input/sip_input.js.map +1 -1
  66. package/dist/inputs/select/select.js +11 -8
  67. package/dist/inputs/select/select.js.map +1 -1
  68. package/dist/inputs/slider/slider.js +28 -24
  69. package/dist/inputs/slider/slider.js.map +1 -1
  70. package/dist/inputs/suggestions/suggestion_list.js +11 -8
  71. package/dist/inputs/suggestions/suggestion_list.js.map +1 -1
  72. package/dist/inputs/switch/switch.js +29 -25
  73. package/dist/inputs/switch/switch.js.map +1 -1
  74. package/dist/inputs/unit_input/unit_input.js +21 -17
  75. package/dist/inputs/unit_input/unit_input.js.map +1 -1
  76. package/dist/layouts/containers/columns/columns.d.ts +6 -1
  77. package/dist/layouts/containers/columns/columns.d.ts.map +1 -1
  78. package/dist/layouts/containers/columns/columns.js +30 -7
  79. package/dist/layouts/containers/columns/columns.js.map +1 -1
  80. package/dist/layouts/containers/rail.d.ts +2 -5
  81. package/dist/layouts/containers/rail.d.ts.map +1 -1
  82. package/dist/layouts/containers/rail.js +17 -55
  83. package/dist/layouts/containers/rail.js.map +1 -1
  84. package/dist/layouts/containers/rows/index.d.ts +3 -0
  85. package/dist/layouts/containers/rows/index.d.ts.map +1 -0
  86. package/dist/layouts/containers/rows/index.js +7 -0
  87. package/dist/layouts/containers/rows/index.js.map +1 -0
  88. package/dist/layouts/containers/rows/row.d.ts +6 -0
  89. package/dist/layouts/containers/rows/row.d.ts.map +1 -0
  90. package/dist/layouts/containers/rows/row.js +20 -0
  91. package/dist/layouts/containers/rows/row.js.map +1 -0
  92. package/dist/layouts/containers/rows/rows.d.ts +11 -0
  93. package/dist/layouts/containers/rows/rows.d.ts.map +1 -0
  94. package/dist/layouts/containers/rows/rows.js +34 -0
  95. package/dist/layouts/containers/rows/rows.js.map +1 -0
  96. package/dist/layouts/containers/scaffold.d.ts +2 -5
  97. package/dist/layouts/containers/scaffold.d.ts.map +1 -1
  98. package/dist/layouts/containers/scaffold.js +17 -55
  99. package/dist/layouts/containers/scaffold.js.map +1 -1
  100. package/dist/layouts/index.d.ts +2 -0
  101. package/dist/layouts/index.d.ts.map +1 -1
  102. package/dist/layouts/index.js +26 -22
  103. package/dist/layouts/index.js.map +1 -1
  104. package/dist/mobile/inputs/date_picker/mobile_date_picker_header.js +11 -7
  105. package/dist/mobile/inputs/date_picker/mobile_date_picker_header.js.map +1 -1
  106. package/dist/mobile/inputs/date_picker/mobile_date_picker_input.js +11 -7
  107. package/dist/mobile/inputs/date_picker/mobile_date_picker_input.js.map +1 -1
  108. package/dist/mobile/inputs/date_picker/mobile_date_picker_year_selector.js +14 -10
  109. package/dist/mobile/inputs/date_picker/mobile_date_picker_year_selector.js.map +1 -1
  110. package/dist/multiselect_values.css +1 -1
  111. package/dist/navigation/tabs/state/link/tab_link.js +15 -11
  112. package/dist/navigation/tabs/state/link/tab_link.js.map +1 -1
  113. package/dist/overlay/frame/frame.d.ts.map +1 -1
  114. package/dist/overlay/frame/frame.js +117 -76
  115. package/dist/overlay/frame/frame.js.map +1 -1
  116. package/dist/overlay/menu/menu.js +21 -17
  117. package/dist/overlay/menu/menu.js.map +1 -1
  118. package/dist/overlay/popper/base/dismissal_decorator.js +3 -3
  119. package/dist/overlay/popper/base/dismissal_decorator.js.map +1 -1
  120. package/dist/overlay/popper/context_popper.js +14 -10
  121. package/dist/overlay/popper/context_popper.js.map +1 -1
  122. package/dist/overlay/popper/element_popper.js +15 -11
  123. package/dist/overlay/popper/element_popper.js.map +1 -1
  124. package/dist/overlay/popper/legacy/popper.js +32 -28
  125. package/dist/overlay/popper/legacy/popper.js.map +1 -1
  126. package/dist/overlay/popper/preview_popper.js +16 -12
  127. package/dist/overlay/popper/preview_popper.js.map +1 -1
  128. package/dist/overlay/tethered/tethered.js +17 -13
  129. package/dist/overlay/tethered/tethered.js.map +1 -1
  130. package/dist/resizable.css +1 -0
  131. package/dist/resizable.module-ur5FBfxo.js +5 -0
  132. package/dist/resizable.module-ur5FBfxo.js.map +1 -0
  133. package/dist/resize_handle.css +1 -0
  134. package/dist/row.css +1 -0
  135. package/dist/stacks/box/box.d.ts +14 -0
  136. package/dist/stacks/box/box.d.ts.map +1 -1
  137. package/dist/stacks/box/box.js +104 -102
  138. package/dist/stacks/box/box.js.map +1 -1
  139. package/dist/stacks/box/detect_resize_bounds.d.ts +1 -0
  140. package/dist/stacks/box/detect_resize_bounds.d.ts.map +1 -1
  141. package/dist/stacks/box/detect_resize_bounds.js +22 -20
  142. package/dist/stacks/box/detect_resize_bounds.js.map +1 -1
  143. package/dist/stacks/box/end_resize_handle.js +5 -5
  144. package/dist/stacks/box/end_resize_handle.js.map +1 -1
  145. package/dist/stacks/box/resize_handlers.d.ts.map +1 -1
  146. package/dist/stacks/box/resize_handlers.js +12 -12
  147. package/dist/stacks/box/resize_handlers.js.map +1 -1
  148. package/dist/stacks/box/start_resize_handle.js +7 -7
  149. package/dist/stacks/box/start_resize_handle.js.map +1 -1
  150. package/dist/stacks/box/types.d.ts +3 -2
  151. package/dist/stacks/box/types.d.ts.map +1 -1
  152. package/dist/stacks/h_collapsible_box.js +24 -20
  153. package/dist/stacks/h_collapsible_box.js.map +1 -1
  154. package/dist/stacks/v_collapsible_box.js +26 -22
  155. package/dist/stacks/v_collapsible_box.js.map +1 -1
  156. package/dist/surfaces/alert/alert.js +7 -8
  157. package/dist/surfaces/alert/alert.js.map +1 -1
  158. package/dist/surfaces/card/card.d.ts.map +1 -1
  159. package/dist/surfaces/card/card.js +14 -6
  160. package/dist/surfaces/card/card.js.map +1 -1
  161. package/dist/surfaces/pop_confirm/pop_confirm.js +4 -2
  162. package/dist/surfaces/pop_confirm/pop_confirm.js.map +1 -1
  163. package/dist/test-setup.d.ts +2 -0
  164. package/dist/test-setup.d.ts.map +1 -0
  165. package/dist/test-setup.js +10 -0
  166. package/dist/test-setup.js.map +1 -0
  167. package/dist/themes/stories/button_showcase.d.ts.map +1 -1
  168. package/dist/themes/stories/controls_fieldset.d.ts.map +1 -1
  169. package/dist/themes/stories/menu_showcase.d.ts.map +1 -1
  170. package/dist/themes/theme.d.ts.map +1 -1
  171. package/dist/themes/theme.js +17 -22
  172. package/dist/themes/theme.js.map +1 -1
  173. package/dist/themes/themes/ergo/ergo_theme.css +1 -1
  174. package/dist/themes/themes/ergo/ergo_theme.d.ts.map +1 -1
  175. package/dist/themes/themes/ergo/ergo_theme.js +653 -431
  176. package/dist/themes/themes/ergo/ergo_theme.js.map +1 -1
  177. package/dist/themes/themes/ergo/parts/actions.css +1 -0
  178. package/dist/themes/themes/ergo/parts/base.css +1 -0
  179. package/dist/themes/themes/ergo/parts/form.css +1 -0
  180. package/dist/themes/themes/ergo/parts/inputs.css +1 -0
  181. package/dist/themes/themes/ergo/parts/navigation.css +1 -0
  182. package/dist/themes/themes/windows_98/windows_98.css +1 -1
  183. package/dist/themes/themes/windows_98/windows_98_theme.js +32 -43
  184. package/dist/themes/themes/windows_98/windows_98_theme.js.map +1 -1
  185. package/dist/utils/decorators/clone_with_decorator.d.ts +21 -0
  186. package/dist/utils/decorators/clone_with_decorator.d.ts.map +1 -0
  187. package/dist/utils/decorators/clone_with_decorator.js +16 -0
  188. package/dist/utils/decorators/clone_with_decorator.js.map +1 -0
  189. package/dist/utils/decorators/draggable/context.d.ts.map +1 -0
  190. package/dist/utils/decorators/draggable/context.js.map +1 -0
  191. package/dist/utils/{dnd/handle.d.ts → decorators/draggable/drag_handle.d.ts} +1 -1
  192. package/dist/utils/decorators/draggable/drag_handle.d.ts.map +1 -0
  193. package/dist/utils/{dnd/handle.js → decorators/draggable/drag_handle.js} +2 -2
  194. package/dist/utils/decorators/draggable/drag_handle.js.map +1 -0
  195. package/dist/utils/decorators/draggable/draggable.d.ts.map +1 -0
  196. package/dist/utils/{dnd → decorators}/draggable/draggable.js +3 -3
  197. package/dist/utils/decorators/draggable/draggable.js.map +1 -0
  198. package/dist/utils/decorators/draggable/index.d.ts +11 -0
  199. package/dist/utils/decorators/draggable/index.d.ts.map +1 -0
  200. package/dist/utils/decorators/draggable/index.js +14 -0
  201. package/dist/utils/decorators/draggable/index.js.map +1 -0
  202. package/dist/utils/{dnd → decorators/draggable}/types.d.ts +1 -1
  203. package/dist/utils/decorators/draggable/types.d.ts.map +1 -0
  204. package/dist/utils/{dnd/hooks → decorators/draggable}/use_drag_container.d.ts +2 -2
  205. package/dist/utils/decorators/draggable/use_drag_container.d.ts.map +1 -0
  206. package/dist/utils/decorators/draggable/use_drag_container.js.map +1 -0
  207. package/dist/utils/decorators/draggable/use_draggable.d.ts.map +1 -0
  208. package/dist/utils/decorators/draggable/use_draggable.js.map +1 -0
  209. package/dist/utils/decorators/index.d.ts +3 -0
  210. package/dist/utils/decorators/index.d.ts.map +1 -0
  211. package/dist/utils/decorators/index.js +27 -0
  212. package/dist/utils/decorators/index.js.map +1 -0
  213. package/dist/utils/decorators/resizable/context.d.ts +4 -0
  214. package/dist/utils/decorators/resizable/context.d.ts.map +1 -0
  215. package/dist/utils/decorators/resizable/context.js +10 -0
  216. package/dist/utils/decorators/resizable/context.js.map +1 -0
  217. package/dist/utils/decorators/resizable/handle_config.d.ts +32 -0
  218. package/dist/utils/decorators/resizable/handle_config.d.ts.map +1 -0
  219. package/dist/utils/decorators/resizable/handle_config.js +62 -0
  220. package/dist/utils/decorators/resizable/handle_config.js.map +1 -0
  221. package/dist/utils/decorators/resizable/index.d.ts +10 -0
  222. package/dist/utils/decorators/resizable/index.d.ts.map +1 -0
  223. package/dist/utils/decorators/resizable/index.js +16 -0
  224. package/dist/utils/decorators/resizable/index.js.map +1 -0
  225. package/dist/utils/decorators/resizable/resizable.d.ts +11 -0
  226. package/dist/utils/decorators/resizable/resizable.d.ts.map +1 -0
  227. package/dist/utils/decorators/resizable/resizable.js +52 -0
  228. package/dist/utils/decorators/resizable/resizable.js.map +1 -0
  229. package/dist/utils/decorators/resizable/resize_handle.d.ts +7 -0
  230. package/dist/utils/decorators/resizable/resize_handle.d.ts.map +1 -0
  231. package/dist/utils/decorators/resizable/resize_handle.js +100 -0
  232. package/dist/utils/decorators/resizable/resize_handle.js.map +1 -0
  233. package/dist/utils/decorators/resizable/resize_strategy.d.ts +47 -0
  234. package/dist/utils/decorators/resizable/resize_strategy.d.ts.map +1 -0
  235. package/dist/utils/decorators/resizable/resize_strategy.js +108 -0
  236. package/dist/utils/decorators/resizable/resize_strategy.js.map +1 -0
  237. package/dist/utils/decorators/resizable/types.d.ts +28 -0
  238. package/dist/utils/decorators/resizable/types.d.ts.map +1 -0
  239. package/dist/utils/decorators/resizable/types.js +2 -0
  240. package/dist/utils/decorators/resizable/types.js.map +1 -0
  241. package/dist/utils/hooks/labelled_by_context.d.ts +21 -0
  242. package/dist/utils/hooks/labelled_by_context.d.ts.map +1 -0
  243. package/dist/utils/hooks/labelled_by_context.js +12 -0
  244. package/dist/utils/hooks/labelled_by_context.js.map +1 -0
  245. package/dist/utils/index.d.ts +8 -7
  246. package/dist/utils/index.d.ts.map +1 -1
  247. package/dist/utils/index.js +45 -28
  248. package/dist/utils/index.js.map +1 -1
  249. package/dist/utils/listeners/click_away_listener.d.ts.map +1 -0
  250. package/dist/utils/{click_away_listener.js → listeners/click_away_listener.js} +1 -1
  251. package/dist/utils/listeners/click_away_listener.js.map +1 -0
  252. package/dist/utils/listeners/focus_redirect.d.ts.map +1 -0
  253. package/dist/utils/listeners/focus_redirect.js.map +1 -0
  254. package/dist/utils/listeners/index.d.ts +4 -0
  255. package/dist/utils/listeners/index.d.ts.map +1 -0
  256. package/dist/utils/listeners/index.js +10 -0
  257. package/dist/utils/listeners/index.js.map +1 -0
  258. package/dist/utils/listeners/mouse_leave_region.d.ts.map +1 -0
  259. package/dist/utils/listeners/mouse_leave_region.js.map +1 -0
  260. package/dist/utils/listeners/scroll_away_listener.d.ts.map +1 -0
  261. package/dist/utils/{scroll_away_listener.js → listeners/scroll_away_listener.js} +1 -1
  262. package/dist/utils/listeners/scroll_away_listener.js.map +1 -0
  263. package/dist/utils/system/index.d.ts +2 -0
  264. package/dist/utils/system/index.d.ts.map +1 -0
  265. package/dist/utils/system/index.js +2 -0
  266. package/dist/utils/system/index.js.map +1 -0
  267. package/dist/utils/system/variations.d.ts.map +1 -0
  268. package/dist/utils/system/variations.js +2 -0
  269. package/dist/utils/system/variations.js.map +1 -0
  270. package/dist/utils/types/sides.d.ts +3 -0
  271. package/dist/utils/types/sides.d.ts.map +1 -0
  272. package/package.json +3 -9
  273. package/src/actions/button/__stories__/button_group.stories.tsx +23 -24
  274. package/src/actions/index.ts +0 -1
  275. package/src/form/field/field.stories.tsx +2 -2
  276. package/src/form/field/h_field/h_field.stories.tsx +1 -1
  277. package/src/form/field/v_field/v_field.stories.tsx +1 -1
  278. package/src/form/field_set/field_set.module.css +0 -14
  279. package/src/form/field_set/field_set.stories.tsx +101 -1
  280. package/src/form/field_set/field_set.tsx +43 -57
  281. package/src/form/field_set/legend.tsx +44 -0
  282. package/src/form/index.ts +6 -1
  283. package/src/inputs/date_picker/date_picker_header.tsx +7 -5
  284. package/src/inputs/date_picker/date_picker_year_selector.tsx +5 -5
  285. package/src/inputs/multiselect/multiselect_inline_values.tsx +4 -3
  286. package/src/inputs/multiselect/multiselect_values.module.css +1 -0
  287. package/src/inputs/multiselect/multiselect_values.tsx +4 -4
  288. package/src/layouts/__stories__/columns.stories.tsx +31 -0
  289. package/src/layouts/__stories__/composed.stories.tsx +77 -8
  290. package/src/layouts/__stories__/rows.stories.tsx +77 -0
  291. package/src/layouts/__stories__/utils.tsx +2 -84
  292. package/src/layouts/containers/columns/column.module.css +3 -2
  293. package/src/layouts/containers/columns/columns.tsx +29 -3
  294. package/src/layouts/containers/containers.module.css +27 -29
  295. package/src/layouts/containers/rail.tsx +9 -51
  296. package/src/layouts/containers/rows/index.ts +2 -0
  297. package/src/layouts/containers/rows/row.module.css +15 -0
  298. package/src/layouts/containers/rows/row.tsx +22 -0
  299. package/src/layouts/containers/rows/rows.tsx +42 -0
  300. package/src/layouts/containers/scaffold.tsx +9 -49
  301. package/src/layouts/index.ts +2 -0
  302. package/src/overlay/frame/frame.stories.tsx +2 -1
  303. package/src/overlay/frame/frame.tsx +68 -20
  304. package/src/overlay/popper/base/dismissal_decorator.tsx +3 -3
  305. package/src/overlay/slide/slide.stories.tsx +1 -1
  306. package/src/stacks/box/box.tsx +29 -4
  307. package/src/stacks/box/detect_resize_bounds.ts +5 -1
  308. package/src/stacks/box/end_resize_handle.tsx +1 -1
  309. package/src/stacks/box/resize_handlers.ts +1 -1
  310. package/src/stacks/box/start_resize_handle.tsx +1 -1
  311. package/src/stacks/box/types.ts +3 -2
  312. package/src/stacks/collapsible_box.stories.tsx +5 -5
  313. package/src/stacks/demo.stories.tsx +7 -7
  314. package/src/surfaces/card/card.module.css +5 -0
  315. package/src/surfaces/card/card.stories.tsx +66 -8
  316. package/src/surfaces/card/card.tsx +6 -2
  317. package/src/surfaces/page/page.stories.tsx +84 -4
  318. package/src/surfaces/panel/__stories__/panel.stories.tsx +84 -9
  319. package/src/surfaces/window/window.stories.tsx +1 -1
  320. package/src/test-setup.ts +11 -0
  321. package/src/themes/stories/button_showcase.tsx +3 -1
  322. package/src/themes/stories/controls_fieldset.tsx +3 -1
  323. package/src/themes/stories/menu_showcase.tsx +3 -1
  324. package/src/themes/theme.tsx +6 -16
  325. package/src/themes/themes/ergo/INTERACTIVE.md +89 -0
  326. package/src/themes/themes/ergo/ROADMAP.md +116 -0
  327. package/src/themes/themes/ergo/ergo_theme.css +219 -734
  328. package/src/themes/themes/ergo/ergo_theme.ts +15 -1
  329. package/src/themes/themes/ergo/parts/actions.css +287 -0
  330. package/src/themes/themes/ergo/parts/base.css +62 -0
  331. package/src/themes/themes/ergo/parts/form.css +23 -0
  332. package/src/themes/themes/ergo/parts/inputs.css +252 -0
  333. package/src/themes/themes/ergo/parts/navigation.css +104 -0
  334. package/src/themes/themes/windows_98/windows_98.css +32 -43
  335. package/src/tokens/chip/chip.stories.tsx +5 -5
  336. package/src/utils/decorators/DECORATOR_PATTERN.md +86 -0
  337. package/src/utils/decorators/clone_with_decorator.ts +47 -0
  338. package/src/utils/{dnd → decorators/draggable}/__stories__/draggable.stories.tsx +7 -7
  339. package/src/utils/{dnd → decorators/draggable}/__stories__/use_draggable.stories.tsx +2 -2
  340. package/src/utils/{dnd/handle.tsx → decorators/draggable/drag_handle.tsx} +1 -1
  341. package/src/utils/{dnd → decorators}/draggable/draggable.tsx +2 -2
  342. package/src/utils/decorators/draggable/index.ts +15 -0
  343. package/src/utils/{dnd → decorators/draggable}/types.ts +1 -1
  344. package/src/utils/{dnd/hooks → decorators/draggable}/use_drag_container.ts +2 -2
  345. package/src/utils/decorators/index.ts +2 -0
  346. package/src/utils/decorators/resizable/__stories__/resizable.stories.tsx +214 -0
  347. package/src/utils/decorators/resizable/__stories__/resizable_stories.module.css +47 -0
  348. package/src/utils/decorators/resizable/__tests__/handle_config.test.ts +191 -0
  349. package/src/utils/decorators/resizable/__tests__/resize_strategy.test.ts +163 -0
  350. package/src/utils/decorators/resizable/context.ts +9 -0
  351. package/src/utils/decorators/resizable/handle_config.ts +118 -0
  352. package/src/utils/decorators/resizable/index.ts +37 -0
  353. package/src/utils/decorators/resizable/resizable.module.css +5 -0
  354. package/src/utils/decorators/resizable/resizable.tsx +97 -0
  355. package/src/utils/decorators/resizable/resize_handle.module.css +106 -0
  356. package/src/utils/decorators/resizable/resize_handle.tsx +165 -0
  357. package/src/utils/decorators/resizable/resize_strategy.ts +190 -0
  358. package/src/utils/decorators/resizable/types.ts +58 -0
  359. package/src/utils/hooks/labelled_by_context.ts +27 -0
  360. package/src/utils/index.ts +9 -7
  361. package/src/utils/{click_away_listener.tsx → listeners/click_away_listener.tsx} +1 -1
  362. package/src/utils/listeners/index.ts +3 -0
  363. package/src/utils/{scroll_away_listener.tsx → listeners/scroll_away_listener.tsx} +1 -1
  364. package/src/utils/system/index.ts +1 -0
  365. package/src/utils/types/sides.ts +2 -0
  366. package/dist/actions/button/slim_button/slim_button.d.ts +0 -9
  367. package/dist/actions/button/slim_button/slim_button.d.ts.map +0 -1
  368. package/dist/actions/button/slim_button/slim_button.js +0 -18
  369. package/dist/actions/button/slim_button/slim_button.js.map +0 -1
  370. package/dist/containers.module-DlGySre0.js +0 -5
  371. package/dist/containers.module-DlGySre0.js.map +0 -1
  372. package/dist/draggable.module-BgelQsuJ.js +0 -5
  373. package/dist/draggable.module-BgelQsuJ.js.map +0 -1
  374. package/dist/frame.css +0 -1
  375. package/dist/left_resize_handle.css +0 -1
  376. package/dist/right_resize_handle.css +0 -1
  377. package/dist/slim_button.css +0 -1
  378. package/dist/stacks/box/left_resize_handle.d.ts +0 -4
  379. package/dist/stacks/box/left_resize_handle.d.ts.map +0 -1
  380. package/dist/stacks/box/left_resize_handle.js +0 -36
  381. package/dist/stacks/box/left_resize_handle.js.map +0 -1
  382. package/dist/stacks/box/right_resize_handle.d.ts +0 -4
  383. package/dist/stacks/box/right_resize_handle.d.ts.map +0 -1
  384. package/dist/stacks/box/right_resize_handle.js +0 -36
  385. package/dist/stacks/box/right_resize_handle.js.map +0 -1
  386. package/dist/utils/click_away_listener.d.ts.map +0 -1
  387. package/dist/utils/click_away_listener.js.map +0 -1
  388. package/dist/utils/dnd/context.d.ts.map +0 -1
  389. package/dist/utils/dnd/context.js.map +0 -1
  390. package/dist/utils/dnd/draggable/draggable.d.ts.map +0 -1
  391. package/dist/utils/dnd/draggable/draggable.js.map +0 -1
  392. package/dist/utils/dnd/handle.d.ts.map +0 -1
  393. package/dist/utils/dnd/handle.js.map +0 -1
  394. package/dist/utils/dnd/hooks/use_drag_container.d.ts.map +0 -1
  395. package/dist/utils/dnd/hooks/use_drag_container.js.map +0 -1
  396. package/dist/utils/dnd/hooks/use_draggable.d.ts.map +0 -1
  397. package/dist/utils/dnd/hooks/use_draggable.js.map +0 -1
  398. package/dist/utils/dnd/types.d.ts.map +0 -1
  399. package/dist/utils/focus_redirect.d.ts.map +0 -1
  400. package/dist/utils/focus_redirect.js.map +0 -1
  401. package/dist/utils/mouse_leave_region.d.ts.map +0 -1
  402. package/dist/utils/mouse_leave_region.js.map +0 -1
  403. package/dist/utils/scroll_away_listener.d.ts.map +0 -1
  404. package/dist/utils/scroll_away_listener.js.map +0 -1
  405. package/dist/utils/types/variations.d.ts.map +0 -1
  406. package/src/actions/button/__stories__/slim_button.stories.tsx +0 -274
  407. package/src/actions/button/slim_button/slim_button.module.css +0 -9
  408. package/src/actions/button/slim_button/slim_button.tsx +0 -26
  409. package/src/overlay/frame/frame.module.css +0 -5
  410. package/src/stacks/box/left_resize_handle.module.css +0 -12
  411. package/src/stacks/box/left_resize_handle.tsx +0 -39
  412. package/src/stacks/box/right_resize_handle.module.css +0 -12
  413. package/src/stacks/box/right_resize_handle.tsx +0 -38
  414. /package/dist/utils/{dnd → decorators/draggable}/context.d.ts +0 -0
  415. /package/dist/utils/{dnd → decorators/draggable}/context.js +0 -0
  416. /package/dist/utils/{dnd → decorators}/draggable/draggable.d.ts +0 -0
  417. /package/dist/utils/{dnd → decorators/draggable}/types.js +0 -0
  418. /package/dist/utils/{dnd → decorators/draggable}/types.js.map +0 -0
  419. /package/dist/utils/{dnd/hooks → decorators/draggable}/use_drag_container.js +0 -0
  420. /package/dist/utils/{dnd/hooks → decorators/draggable}/use_draggable.d.ts +0 -0
  421. /package/dist/utils/{dnd/hooks → decorators/draggable}/use_draggable.js +0 -0
  422. /package/dist/utils/{click_away_listener.d.ts → listeners/click_away_listener.d.ts} +0 -0
  423. /package/dist/utils/{focus_redirect.d.ts → listeners/focus_redirect.d.ts} +0 -0
  424. /package/dist/utils/{focus_redirect.js → listeners/focus_redirect.js} +0 -0
  425. /package/dist/utils/{mouse_leave_region.d.ts → listeners/mouse_leave_region.d.ts} +0 -0
  426. /package/dist/utils/{mouse_leave_region.js → listeners/mouse_leave_region.js} +0 -0
  427. /package/dist/utils/{scroll_away_listener.d.ts → listeners/scroll_away_listener.d.ts} +0 -0
  428. /package/dist/utils/{types → system}/variations.d.ts +0 -0
  429. /package/src/utils/{dnd → decorators/draggable}/__stories__/draggable_stories.module.css +0 -0
  430. /package/src/utils/{dnd → decorators/draggable}/context.ts +0 -0
  431. /package/src/utils/{dnd → decorators}/draggable/draggable.module.css +0 -0
  432. /package/src/utils/{dnd/hooks → decorators/draggable}/use_draggable.ts +0 -0
  433. /package/src/utils/{click_away_listener.stories.tsx → listeners/click_away_listener.stories.tsx} +0 -0
  434. /package/src/utils/{focus_redirect.tsx → listeners/focus_redirect.tsx} +0 -0
  435. /package/src/utils/{mouse_leave_region.tsx → listeners/mouse_leave_region.tsx} +0 -0
  436. /package/src/utils/{scroll_away_listener.stories.tsx → listeners/scroll_away_listener.stories.tsx} +0 -0
  437. /package/src/utils/{types → system}/variations.ts +0 -0
@@ -99,7 +99,7 @@ const r = `@layer tcn-theme {
99
99
  --on-material: var(--ergo-accent-blue);
100
100
  }
101
101
  }
102
- `, a = `@layer tcn-theme {
102
+ `, e = `@layer tcn-theme {
103
103
  :root {
104
104
  /* ========== Blackcat System Tokens ========== */
105
105
  --scalar: 1;
@@ -167,7 +167,7 @@ const r = `@layer tcn-theme {
167
167
  --foreground-color-quaternary: var(--ergo-text-color-primary);
168
168
  }
169
169
  }
170
- `, e = `@layer tcn-theme {
170
+ `, a = `@layer tcn-theme {
171
171
  /* ===== CSS VARIABLES ===== */
172
172
 
173
173
  .tcn-theme-root {
@@ -183,13 +183,6 @@ const r = `@layer tcn-theme {
183
183
  /* ===== Actions ===== */
184
184
 
185
185
  .tcn-interactive {
186
- cursor: pointer;
187
- user-select: none;
188
- transition:
189
- transform 0.1s,
190
- background 0.1s,
191
- color 0.1s;
192
-
193
186
  --ink: var(--on-material);
194
187
  --act: var(--action);
195
188
  --mat: var(--material);
@@ -199,6 +192,8 @@ const r = `@layer tcn-theme {
199
192
  --act-focus: color-mix(in srgb, var(--mat), var(--act) 16%);
200
193
  --act-drag: color-mix(in srgb, var(--mat), var(--act) 24%);
201
194
 
195
+ cursor: pointer;
196
+ user-select: none;
202
197
  background: var(--mat);
203
198
  color: var(--ink);
204
199
  transition:
@@ -227,7 +222,15 @@ const r = `@layer tcn-theme {
227
222
  }
228
223
  }
229
224
 
230
- /* ===== Base Button =====
225
+ /* ===== MATERIAL ===== */
226
+
227
+ .material {
228
+ background-color: var(--material);
229
+ color: var(--on-material);
230
+ }
231
+ }
232
+ `, t = `@layer tcn-theme {
233
+ /* ===== Base Button =====
231
234
  * Shared between Button and Toggle.
232
235
  * Primarily manages button dimensions and sizing ratios.
233
236
  */
@@ -276,7 +279,7 @@ const r = `@layer tcn-theme {
276
279
  }
277
280
  }
278
281
 
279
- /* ===== Button =====
282
+ /* ===== Button =====
280
283
  * Manages Hierarchy and Severity.
281
284
  */
282
285
  .tcn-button {
@@ -378,42 +381,6 @@ const r = `@layer tcn-theme {
378
381
  }
379
382
  }
380
383
 
381
- /* @deprecated - use Button with utility prop instead */
382
- .tcn-slim-button {
383
- height: auto;
384
- width: auto;
385
- padding: 0;
386
-
387
- &[data-size="sm"] {
388
- min-height: 12px;
389
- min-width: 12px;
390
- padding: 0;
391
- .tcn-icon {
392
- min-height: 10px;
393
- min-width: 10px;
394
- }
395
- }
396
- &[data-size="md"] {
397
- min-height: 18px;
398
- min-width: 18px;
399
- padding: 0;
400
- .tcn-icon {
401
- min-height: 14px;
402
- min-width: 14px;
403
- }
404
- }
405
-
406
- &[data-size="lg"] {
407
- min-height: 24px;
408
- min-width: 24px;
409
- padding: 0;
410
- .tcn-icon {
411
- min-height: 20px;
412
- min-width: 20px;
413
- }
414
- }
415
- }
416
-
417
384
  .tcn-button[data-size].tcn-select {
418
385
  padding-inline-end: 26px;
419
386
  }
@@ -504,6 +471,7 @@ const r = `@layer tcn-theme {
504
471
  }
505
472
  }
506
473
 
474
+ /* TODO: move to inputs.css once that part file is extracted */
507
475
  .tcn-select-group {
508
476
  .tcn-select-group-option:hover,
509
477
  .tcn-select-group-option:active {
@@ -547,174 +515,446 @@ const r = `@layer tcn-theme {
547
515
  border-bottom-right-radius: var(--ergo-shape-radius-medium);
548
516
  }
549
517
  }
518
+ }
519
+ `, o = `@layer tcn-theme {
520
+ /* ===== INPUTS ===== */
521
+ .tcn-entry,
522
+ .tcn-control {
523
+ --act: var(--action);
524
+ --mat: var(--material);
525
+ --act-raised: color-mix(in srgb, var(--mat), var(--act) 12%);
550
526
 
551
- /* ===== Tabs ===== */
552
- .tcn-tabs-bar {
553
- .tcn-tabs-list {
554
- .tcn-tab-item {
555
- min-height: 24px;
556
- padding: 0px var(--padding-medium);
557
- text-decoration: none;
558
- text-overflow: ellipsis;
559
- overflow: hidden;
560
- white-space: nowrap;
561
- }
562
- }
527
+ font-size: var(--ergo-text-size-input);
528
+ border: 1px solid var(--ergo-grey);
529
+ box-sizing: border-box;
530
+ min-height: var(--ergo-sizing-action-md);
531
+ border-radius: var(--ergo-shape-radius-medium);
532
+ padding-inline: 4px;
563
533
  }
564
534
 
565
- /* Default */
566
- .tcn-tabs-bar[data-variant="default"] {
567
- .tcn-tabs-list {
568
- .tcn-tab-item {
569
- box-sizing: border-box;
570
- border: none;
571
- padding: 0px var(--padding-medium);
572
- border-radius: 0;
573
- }
574
- .tcn-tab-item[data-is-selected="true"] {
575
- --mat: var(--tcn-button-color, var(--material));
576
- --ink: var(--tcn-button-text-color, var(--ergo-primary));
577
- --act: var(--ergo-primary);
578
- }
579
-
580
- .tcn-tab-item:focus-visible {
581
- z-index: 2;
582
- }
583
- /* Hover Indicator */
584
- .tcn-tab-item[data-is-selected="false"]:hover::after,
585
- .tcn-tab-item[data-is-selected="false"]:focus-visible::after {
586
- content: "";
587
- display: block;
588
- position: absolute;
589
- left: 0;
590
- right: 0;
591
- bottom: 0px;
592
- height: 1px;
593
- background: var(--ergo-accent-blue);
594
- pointer-events: none;
595
- width: 100%;
596
- z-index: 3;
597
- }
535
+ .tcn-radio-label,
536
+ .tcn-select-selected-label {
537
+ font-size: var(--ergo-text-size-input);
538
+ }
598
539
 
599
- /* Indicator */
600
- &::after {
601
- content: "";
602
- position: absolute;
603
- bottom: -1px;
604
- left: 0;
605
- min-height: 2px;
606
- transform: translateX(var(--tabs-active-rectangle-position-x, 0));
607
- width: var(--tabs-active-rectangle-width, 0);
608
- background: var(--ergo-primary);
609
- pointer-events: none;
610
- border-bottom-left-radius: 2px;
611
- border-bottom-right-radius: 2px;
612
- transition:
613
- transform 300ms ease-in-out,
614
- width 300ms ease-in-out;
615
- will-change: transform, width;
616
- z-index: 2;
617
- }
618
- }
540
+ .tcn-control[data-is-disabled="false"]:hover {
541
+ background: var(--act-raised);
542
+ }
619
543
 
620
- /* Rail */
621
- &::before {
622
- content: "";
623
- position: absolute;
624
- bottom: 0px;
625
- left: 0;
626
- width: 100%;
627
- height: 1px;
628
- background: var(--ergo-material-divider);
629
- pointer-events: none;
630
- z-index: 1;
631
- }
544
+ .tcn-control:focus-within {
545
+ outline: 2px solid var(--ergo-primary);
546
+ outline-offset: 2px;
632
547
  }
633
548
 
634
- /* Inline */
635
- .tcn-tabs-bar[data-variant="inline"] {
636
- font-size: 12px;
637
- min-width: min-content;
638
- width: auto;
639
- flex-grow: 0;
640
- border-radius: 6px;
641
- border: 1px solid var(--on-material);
642
- padding: 2px;
549
+ .tcn-control:focus {
550
+ border: 1px solid var(--act);
551
+ }
643
552
 
644
- .tcn-tabs-list {
645
- height: 20px;
646
- gap: var(--ergo-spacing-xs);
647
- .tcn-tab-item {
648
- border-radius: var(--ergo-shape-radius-medium);
649
- min-height: 20px;
650
- }
651
- }
553
+ .tcn-control::placeholder {
554
+ color: var(--ergo-grey);
652
555
  }
653
556
 
654
- /* ===== MATERIAL ===== */
557
+ .tcn-control[data-is-disabled="true"] {
558
+ cursor: not-allowed;
559
+ background: var(--ergo-material-disabled-outline);
560
+ color: var(--ergo-text-color-disabled-outline);
561
+ }
655
562
 
656
- .material {
657
- background-color: var(--material);
658
- color: var(--on-material);
563
+ .tcn-control[data-is-disabled="true"]::placeholder {
564
+ color: var(--ergo-text-color-disabled-outline);
659
565
  }
660
566
 
661
- /* Divider: use material-line; emphasis variants for strong/faint */
662
- .tcn-divider-line,
663
- .tcn-divider-line[data-emphasis="normal"] {
664
- background: var(--material-line);
567
+ .tcn-control {
568
+ display: flex;
569
+ justify-content: center;
570
+ gap: var(--gap-small);
665
571
  }
666
- .tcn-divider-line[data-emphasis="strong"] {
667
- background: color-mix(in srgb, var(--material-line) 80%, black 20%);
572
+
573
+ .tcn-control-row {
574
+ min-height: 22px;
575
+ height: auto;
576
+ align-items: center;
577
+ gap: var(--gap-small);
578
+ padding-block: 2px;
668
579
  }
669
- .tcn-divider-line[data-emphasis="faint"] {
670
- background: color-mix(in srgb, var(--material-line) 80%, white 20%);
580
+
581
+ .tcn-control-row > .tcn-icon {
582
+ color: var(--ergo-grey);
671
583
  }
672
584
 
673
- /* ===== SURFACES ===== */
674
- .tcn-draggable[data-is-draggable="true"] {
675
- .tcn-drag-handle {
676
- cursor: move;
585
+ .tcn-control .tcn-entry {
586
+ border: none;
587
+ background: transparent;
588
+ padding: 0;
589
+ min-height: unset;
590
+ border-radius: 0;
591
+ height: 100%;
592
+ flex-grow: 1;
593
+
594
+ &:hover,
595
+ &:active,
596
+ &:focus-visible,
597
+ &:focus {
598
+ outline: none;
599
+ border: none;
600
+ background: transparent;
677
601
  }
678
602
  }
679
603
 
680
- .tcn-frame-dialog {
681
- border: inherit;
604
+ .tcn-input {
605
+ height: auto;
682
606
  }
683
607
 
684
- .tcn-tethered {
685
- /* Managing offset of the indicator in relation for the tethered element
686
- pad defaults to 0, but should be set depending on the surface */
687
-
688
- --tether-pad-x: 0px;
689
- --tether-pad-y: 0px;
690
- --indicator-pad-x: 0px;
691
- --indicator-pad-y: 0px;
692
- --tether-pad-size: 0px;
693
- --tether-pad-pos: var(--tether-pad-size);
694
- --tether-pad-neg: calc(-1 * var(--tether-pad-size));
695
- left: calc(
696
- var(--tether-pad-x, 0) -
697
- var(--indicator-pad-x, 0) +
698
- var(--tethered-left, 0)
699
- );
700
- top: calc(var(--tether-pad-y, 0) + var(--tethered-top, 0));
701
-
702
- :where(.tcn-tethered-origin-indicator) {
703
- left: calc(var(--indicator-pad-x, 0) + var(--tethered-origin-delta-x, 0));
704
- top: calc(var(--indicator-pad-y, 0) + var(--tethered-origin-delta-y, 0));
705
- }
608
+ .tcn-textarea,
609
+ .tcn-input {
610
+ cursor: text;
611
+ }
706
612
 
707
- &[data-h-anchor="start"] {
708
- --tether-pad-x: var(--tether-pad-pos);
709
- }
613
+ .tcn-control-set {
614
+ border-radius: var(--ergo-shape-radius-medium);
710
615
 
711
- &[data-h-anchor="end"] {
712
- --tether-pad-x: var(--tether-pad-neg);
616
+ &:focus-within {
617
+ outline: 2px solid var(--ergo-primary);
618
+ outline-offset: 2px;
713
619
  }
714
620
 
715
- &[data-h-origin="start"] {
716
- --indicator-pad-x: var(--tether-pad-pos);
717
- }
621
+ .tcn-control-set-item {
622
+ z-index: 1;
623
+ border-radius: 0;
624
+ height: auto;
625
+ min-height: var(--ergo-sizing-action-md);
626
+ padding-block: 0;
627
+ &:focus,
628
+ &:focus-visible {
629
+ z-index: 3;
630
+ outline: none;
631
+ }
632
+ }
633
+
634
+ .tcn-control-set-item:first-child {
635
+ border-top-left-radius: var(--ergo-shape-radius-medium);
636
+ border-bottom-left-radius: var(--ergo-shape-radius-medium);
637
+ }
638
+
639
+ .tcn-control-set-item:not(:last-child) {
640
+ margin-right: -1px;
641
+ }
642
+
643
+ .tcn-control-set-item:last-child {
644
+ border-top-right-radius: var(--ergo-shape-radius-medium);
645
+ border-bottom-right-radius: var(--ergo-shape-radius-medium);
646
+ }
647
+
648
+ .tcn-select,
649
+ .tcn-button,
650
+ .tcn-button[data-hierarchy] {
651
+ border: 1px solid var(--ergo-grey);
652
+ height: auto;
653
+ min-height: var(--ergo-sizing-action-md);
654
+ min-width: var(--ergo-sizing-action-md);
655
+ box-sizing: border-box;
656
+ &:hover,
657
+ &[data-hover] {
658
+ transform: none;
659
+ }
660
+ }
661
+
662
+ .tcn-button.tcn-select,
663
+ .tcn-button[data-hierarchy].tcn-select {
664
+ border-color: var(--ergo-grey);
665
+ }
666
+
667
+ .tcn-select:focus-visible,
668
+ .tcn-button:focus-visible,
669
+ .tcn-button[data-hierarchy]:focus-visible {
670
+ border-color: var(--ergo-primary);
671
+ }
672
+ }
673
+
674
+ .tcn-slider[data-is-disabled="true"] {
675
+ &::-webkit-slider-runnable-track {
676
+ background: var(--ergo-grey-light);
677
+ }
678
+
679
+ &::-webkit-slider-thumb {
680
+ background-color: var(--ergo-white);
681
+ border: 1px solid var(--ergo-grey-light);
682
+ }
683
+ }
684
+
685
+ .tcn-checkbox {
686
+ --checkbox-color: var(--action, var(--ergo-primary));
687
+
688
+ border-color: var(--checkbox-color);
689
+
690
+ &:focus-visible,
691
+ &:focus {
692
+ outline: 2px solid var(--checkbox-color);
693
+ outline-offset: 2px;
694
+ }
695
+
696
+ &[data-is-disabled="true"] {
697
+ cursor: not-allowed;
698
+ border-color: var(--ergo-material-disabled-outline);
699
+ }
700
+
701
+ &[data-checked="true"] {
702
+ background-color: var(--checkbox-color);
703
+ }
704
+
705
+ &[data-checked="true"][data-is-disabled="true"] {
706
+ background-color: var(--ergo-grey-light);
707
+ }
708
+
709
+ &[data-checked="false"][data-is-disabled="true"] {
710
+ background: var(--material);
711
+ border-color: var(--ergo-grey-light);
712
+ color: var(--ergo-grey-light);
713
+ }
714
+
715
+ &[data-is-disabled="false"]:active {
716
+ background-color: var(--checkbox-color);
717
+ }
718
+ }
719
+
720
+ .tcn-switch-wrapper[data-focused="true"][data-is-checked="false"],
721
+ .tcn-switch-wrapper[data-focused="true"][data-is-checked="true"] {
722
+ outline: 2px solid var(--ergo-primary);
723
+ outline-offset: 2px;
724
+ }
725
+
726
+ /* Quick fix to use some of the default module styles.*/
727
+ .tcn-input,
728
+ .tcn-select,
729
+ .tcn-slider,
730
+ .tcn-textarea,
731
+ .tcn-checkbox,
732
+ .tcn-switch-wrapper,
733
+ .tcn-date-picker,
734
+ .tcn-date-picker-year-selector,
735
+ .tcn-radio,
736
+ .tcn-date-picker-input,
737
+ .tcn-mobile-date-picker,
738
+ .tcn-mobile-date-picker-year-selector,
739
+ .tcn-suggestion-list-search-input,
740
+ .tcn-suggestion-list {
741
+ --accent-color: var(--ergo-primary);
742
+ }
743
+
744
+ /* ===== MultiSelect / MultiComboBox =====
745
+ * Some visual styles below override chrome that is currently baked into
746
+ * the system layer (CSS modules) and should not be there.
747
+ * See: https://git.tcncloud.net/blackcat-ui/blackcat/-/issues/318
748
+ */
749
+
750
+ .tcn-multiselect-values-container {
751
+ background-color: var(--material);
752
+ border: 1px solid var(--ergo-grey);
753
+ border-radius: var(--ergo-shape-radius-medium);
754
+ }
755
+
756
+ .tcn-multiselect-values-container[data-is-disabled="true"] {
757
+ background-color: var(--ergo-material-disabled-outline);
758
+ color: var(--ergo-text-color-disabled-outline);
759
+ cursor: not-allowed;
760
+ }
761
+
762
+ .tcn-multiselect-values-container[data-is-disabled="true"] > .tcn-multiselect-chip {
763
+ opacity: 0.5;
764
+ cursor: not-allowed;
765
+ }
766
+
767
+ .tcn-multiselect-chip {
768
+ --accent-color: var(--ergo-accent-blue);
769
+ }
770
+ }
771
+ `, i = `@layer tcn-theme {
772
+ /* ===== FIELD SET ===== */
773
+
774
+ .tcn-field-set {
775
+ gap: var(--gap-medium);
776
+
777
+ .tcn-field-set-legend {
778
+ padding-block: var(--padding-medium);
779
+ min-height: var(--ergo-sizing-bar-md);
780
+ border-bottom: 1px solid var(--ergo-material-divider);
781
+ }
782
+ }
783
+
784
+ .tcn-field-set[data-is-disabled="true"] .tcn-entry {
785
+ cursor: not-allowed;
786
+ background: var(--ergo-material-disabled-outline);
787
+ color: var(--ergo-text-color-disabled-outline);
788
+ }
789
+
790
+ .tcn-field-set[data-is-disabled="true"] .tcn-entry::placeholder {
791
+ color: var(--ergo-text-color-disabled-outline);
792
+ }
793
+ }
794
+ `, d = `@layer tcn-theme {
795
+ /* ===== Tabs ===== */
796
+ .tcn-tabs-bar {
797
+ .tcn-tabs-list {
798
+ .tcn-tab-item {
799
+ min-height: 24px;
800
+ padding: 0px var(--padding-medium);
801
+ text-decoration: none;
802
+ text-overflow: ellipsis;
803
+ overflow: hidden;
804
+ white-space: nowrap;
805
+ }
806
+ }
807
+ }
808
+
809
+ /* Default */
810
+ .tcn-tabs-bar[data-variant="default"] {
811
+ .tcn-tabs-list {
812
+ .tcn-tab-item {
813
+ box-sizing: border-box;
814
+ border: none;
815
+ padding: 0px var(--padding-medium);
816
+ border-radius: 0;
817
+ }
818
+ .tcn-tab-item[data-is-selected="true"] {
819
+ --mat: var(--tcn-button-color, var(--material));
820
+ --ink: var(--tcn-button-text-color, var(--ergo-primary));
821
+ --act: var(--ergo-primary);
822
+ }
823
+
824
+ .tcn-tab-item:focus-visible {
825
+ z-index: 2;
826
+ }
827
+ /* Hover Indicator */
828
+ .tcn-tab-item[data-is-selected="false"]:hover::after,
829
+ .tcn-tab-item[data-is-selected="false"]:focus-visible::after {
830
+ content: "";
831
+ display: block;
832
+ position: absolute;
833
+ left: 0;
834
+ right: 0;
835
+ bottom: 0px;
836
+ height: 1px;
837
+ background: var(--ergo-accent-blue);
838
+ pointer-events: none;
839
+ width: 100%;
840
+ z-index: 3;
841
+ }
842
+
843
+ /* Indicator */
844
+ &::after {
845
+ content: "";
846
+ position: absolute;
847
+ bottom: -1px;
848
+ left: 0;
849
+ min-height: 2px;
850
+ transform: translateX(var(--tabs-active-rectangle-position-x, 0));
851
+ width: var(--tabs-active-rectangle-width, 0);
852
+ background: var(--ergo-primary);
853
+ pointer-events: none;
854
+ border-bottom-left-radius: 2px;
855
+ border-bottom-right-radius: 2px;
856
+ transition:
857
+ transform 300ms ease-in-out,
858
+ width 300ms ease-in-out;
859
+ will-change: transform, width;
860
+ z-index: 2;
861
+ }
862
+ }
863
+
864
+ /* Rail */
865
+ &::before {
866
+ content: "";
867
+ position: absolute;
868
+ bottom: 0px;
869
+ left: 0;
870
+ width: 100%;
871
+ height: 1px;
872
+ background: var(--ergo-material-divider);
873
+ pointer-events: none;
874
+ z-index: 1;
875
+ }
876
+ }
877
+
878
+ /* Inline */
879
+ .tcn-tabs-bar[data-variant="inline"] {
880
+ font-size: 12px;
881
+ min-width: min-content;
882
+ width: auto;
883
+ flex-grow: 0;
884
+ border-radius: 6px;
885
+ border: 1px solid var(--on-material);
886
+ padding: 2px;
887
+
888
+ .tcn-tabs-list {
889
+ height: 20px;
890
+ gap: var(--ergo-spacing-xs);
891
+ .tcn-tab-item {
892
+ border-radius: var(--ergo-shape-radius-medium);
893
+ min-height: 20px;
894
+ }
895
+ }
896
+ }
897
+ }
898
+ `, c = `@layer tcn-theme {
899
+ /* ===== DIVIDER ===== */
900
+
901
+ /* Divider: use ergo-material-divider token; emphasis variants for strong/faint */
902
+ .tcn-divider-line,
903
+ .tcn-divider-line[data-emphasis="normal"] {
904
+ background: var(--ergo-material-divider, #aaa);
905
+ }
906
+ .tcn-divider-line[data-emphasis="strong"] {
907
+ background: color-mix(in srgb, var(--ergo-material-divider, #aaa) 80%, black 20%);
908
+ }
909
+ .tcn-divider-line[data-emphasis="faint"] {
910
+ background: color-mix(in srgb, var(--ergo-material-divider, #aaa) 80%, white 20%);
911
+ }
912
+
913
+ /* ===== SURFACES ===== */
914
+ .tcn-draggable[data-is-draggable="true"] {
915
+ .tcn-drag-handle {
916
+ cursor: move;
917
+ }
918
+ }
919
+
920
+ .tcn-frame-dialog {
921
+ border: inherit;
922
+ }
923
+
924
+ .tcn-tethered {
925
+ /* Managing offset of the indicator in relation for the tethered element
926
+ pad defaults to 0, but should be set depending on the surface */
927
+
928
+ --tether-pad-x: 0px;
929
+ --tether-pad-y: 0px;
930
+ --indicator-pad-x: 0px;
931
+ --indicator-pad-y: 0px;
932
+ --tether-pad-size: 0px;
933
+ --tether-pad-pos: var(--tether-pad-size);
934
+ --tether-pad-neg: calc(-1 * var(--tether-pad-size));
935
+ left: calc(
936
+ var(--tether-pad-x, 0) -
937
+ var(--indicator-pad-x, 0) +
938
+ var(--tethered-left, 0)
939
+ );
940
+ top: calc(var(--tether-pad-y, 0) + var(--tethered-top, 0));
941
+
942
+ :where(.tcn-tethered-origin-indicator) {
943
+ left: calc(var(--indicator-pad-x, 0) + var(--tethered-origin-delta-x, 0));
944
+ top: calc(var(--indicator-pad-y, 0) + var(--tethered-origin-delta-y, 0));
945
+ }
946
+
947
+ &[data-h-anchor="start"] {
948
+ --tether-pad-x: var(--tether-pad-pos);
949
+ }
950
+
951
+ &[data-h-anchor="end"] {
952
+ --tether-pad-x: var(--tether-pad-neg);
953
+ }
954
+
955
+ &[data-h-origin="start"] {
956
+ --indicator-pad-x: var(--tether-pad-pos);
957
+ }
718
958
 
719
959
  &[data-h-origin="end"] {
720
960
  --indicator-pad-x: var(--tether-pad-neg);
@@ -803,20 +1043,19 @@ const r = `@layer tcn-theme {
803
1043
  .tcn-scaffold {
804
1044
  --scaffold-divide-footer: var(--divide-footer, 1);
805
1045
  --scaffold-divide-header: var(--divide-header, 1);
806
- --pad-inline: var(--padding-large);
1046
+ /* Since Scaffold now acts as body too - there is no pad inline default - each outer container should set it */
1047
+ /* --pad-inline: var(--padding-large); */
807
1048
 
808
1049
  /* Border appears on nested scaffold/rail when it follows header or utility-bar */
809
- :where(.tcn-header) + :where(.tcn-scaffold),
810
- :where(.tcn-header) + :where(.tcn-rail),
811
- :where(.tcn-utility-bar) + :where(.tcn-scaffold),
812
- :where(.tcn-utility-bar) + :where(.tcn-rail) {
813
- border-top: calc(var(--scaffold-divide-header) * 1px) solid
1050
+ :where(.tcn-header) {
1051
+ border-bottom: calc(var(--scaffold-divide-header) * 1px) solid
814
1052
  var(--ergo-material-border);
815
1053
  }
1054
+ :where(.tcn-utility-bar) {
1055
+ border-bottom: 1px solid var(--ergo-material-border);
1056
+ }
816
1057
 
817
- /* Border appears on footer when it follows scaffold/rail */
818
- :where(.tcn-scaffold) + :where(.tcn-footer),
819
- :where(.tcn-rail) + :where(.tcn-footer) {
1058
+ :where(.tcn-footer) {
820
1059
  border-top: calc(var(--scaffold-divide-footer) * 1px) solid
821
1060
  var(--ergo-material-border);
822
1061
  }
@@ -826,10 +1065,19 @@ const r = `@layer tcn-theme {
826
1065
  background-color: rgba(0, 0, 0, 0.5);
827
1066
  }
828
1067
 
1068
+ :where(.tcn-frame) {
1069
+ --resize-offset: -6px;
1070
+ }
1071
+
1072
+ .tcn-frame > .tcn-scaffold {
1073
+ overflow: hidden;
1074
+ }
1075
+
829
1076
  /* PAGE: */
830
1077
  .tcn-page {
831
1078
  --divide-header: 0;
832
1079
  --divide-footer: 0;
1080
+ --pad-inline: var(--padding-large);
833
1081
  --material: var(--background-color-tertiary);
834
1082
  background-color: var(--material);
835
1083
  }
@@ -837,10 +1085,10 @@ const r = `@layer tcn-theme {
837
1085
  /* MODAL: */
838
1086
  .tcn-modal {
839
1087
  --divide-header: 0;
1088
+ --pad-inline: var(--padding-large);
840
1089
  box-shadow: 0px 4px 34px 0px #00000096;
841
1090
  border-radius: var(--ergo-shape-radius-medium);
842
1091
  background-color: var(--background-color-primary);
843
- overflow: hidden;
844
1092
  border: 1px solid var(--ergo-material-border);
845
1093
 
846
1094
  :where(.tcn-header) {
@@ -860,9 +1108,9 @@ const r = `@layer tcn-theme {
860
1108
  /* DRAWER: */
861
1109
  .tcn-drawer {
862
1110
  --divide-header: 0;
1111
+ --pad-inline: var(--padding-large);
863
1112
  box-shadow: 0px 4px 34px 0px #00000096;
864
1113
  background-color: var(--background-color-primary);
865
- overflow: hidden;
866
1114
 
867
1115
  :where(.tcn-header) {
868
1116
  --material: var(--ergo-material-overlay);
@@ -882,9 +1130,9 @@ const r = `@layer tcn-theme {
882
1130
  .tcn-window {
883
1131
  box-shadow: 0px 4px 34px 0px #00000096;
884
1132
  --divide-header: 0;
1133
+ --pad-inline: var(--padding-large);
885
1134
  border-radius: var(--ergo-shape-radius-medium);
886
1135
  background-color: var(--background-color-primary);
887
- overflow: hidden;
888
1136
  border: 2px solid white;
889
1137
 
890
1138
  :where(.tcn-header) {
@@ -906,7 +1154,7 @@ const r = `@layer tcn-theme {
906
1154
  --tether-pad-size: 16px;
907
1155
  --pad-inline: var(--padding-medium);
908
1156
 
909
- .tcn-pop-confirm-scaffold > .tcn-scaffold-stack {
1157
+ .tcn-pop-confirm-scaffold {
910
1158
  border-radius: var(--ergo-shape-radius-medium);
911
1159
  box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.4);
912
1160
  background-color: var(--background-color-primary);
@@ -963,6 +1211,7 @@ const r = `@layer tcn-theme {
963
1211
  .tcn-panel {
964
1212
  --divide-header: 1;
965
1213
  --divide-footer: 1;
1214
+ --pad-inline: var(--padding-large);
966
1215
  --material: var(--background-color-primary);
967
1216
  background-color: var(--material);
968
1217
  border-radius: var(--ergo-shape-radius-medium);
@@ -977,6 +1226,7 @@ const r = `@layer tcn-theme {
977
1226
  .tcn-aside {
978
1227
  --divide-header: 1;
979
1228
  --divide-footer: 1;
1229
+ --pad-inline: var(--padding-large);
980
1230
 
981
1231
  --material: var(--background-color-secondary);
982
1232
  background-color: var(--material);
@@ -1024,13 +1274,6 @@ const r = `@layer tcn-theme {
1024
1274
  :where(.tcn-utility-bar) {
1025
1275
  min-height: var(--ergo-sizing-bar-sm);
1026
1276
  }
1027
-
1028
- :where(.tcn-scaffold-stack) > :where(.tcn-scaffold) > :where(.tcn-scaffold-stack),
1029
- :where(.tcn-scaffold-stack) > :where(.tcn-rail) > :where(.tcn-rail-stack),
1030
- :where(.tcn-rail-stack) > :where(.tcn-scaffold) > :where(.tcn-scaffold-stack),
1031
- :where(.tcn-rail-stack) > :where(.tcn-rail) > :where(.tcn-rail-stack) {
1032
- padding-inline: var(--padding-medium);
1033
- }
1034
1277
  }
1035
1278
 
1036
1279
  /* Columns: */
@@ -1039,6 +1282,7 @@ const r = `@layer tcn-theme {
1039
1282
  padding: var(--padding-large);
1040
1283
 
1041
1284
  :where(.tcn-column) {
1285
+ gap: var(--gap-medium);
1042
1286
  border-right: 1px solid var(--ergo-material-border);
1043
1287
  padding-inline-end: var(--padding-medium);
1044
1288
  }
@@ -1049,12 +1293,50 @@ const r = `@layer tcn-theme {
1049
1293
  }
1050
1294
  }
1051
1295
 
1296
+ /* Resize handle offsets */
1297
+ :where(.tcn-rail.tcn-columns) {
1298
+ --resize-offset: calc(-1 * var(--padding-medium));
1299
+ }
1300
+
1301
+ :where(.tcn-rail):not(.tcn-columns) {
1302
+ --resize-offset: 0px;
1303
+ }
1304
+
1052
1305
  .tcn-page {
1053
1306
  :where(.tcn-columns) {
1054
1307
  padding: var(--padding-medium);
1055
1308
 
1056
- :where(.tcn-column):not(:last-child) {
1057
- padding-inline-end: var(--padding-medium);
1309
+ :where(.tcn-column) {
1310
+ gap: var(--gap-medium);
1311
+ }
1312
+
1313
+ > .tcn-column:not(:last-child) {
1314
+ padding-inline-end: var(--padding-medium);
1315
+ }
1316
+ }
1317
+ }
1318
+
1319
+ /* Rows: */
1320
+ .tcn-panel,
1321
+ .tcn-card {
1322
+ :where(.tcn-rows) {
1323
+ :where(.tcn-row):not(:last-child) {
1324
+ border-bottom: 1px solid var(--ergo-material-border);
1325
+ padding-block-end: var(--padding-medium);
1326
+ }
1327
+
1328
+ :where(.tcn-row):not(:first-child) {
1329
+ padding-block-start: var(--padding-medium);
1330
+ }
1331
+ }
1332
+ }
1333
+
1334
+ .tcn-page {
1335
+ :where(.tcn-rows) {
1336
+ padding: var(--padding-medium);
1337
+
1338
+ :where(.tcn-row):not(:last-child) {
1339
+ padding-block-end: var(--padding-medium);
1058
1340
  }
1059
1341
  }
1060
1342
  }
@@ -1107,7 +1389,7 @@ const r = `@layer tcn-theme {
1107
1389
  padding-inline-end: var(--pad-inline, var(--padding-medium));
1108
1390
  }
1109
1391
 
1110
- .tcn-scaffold-stack > .tcn-detail {
1392
+ .tcn-scaffold > .tcn-detail {
1111
1393
  padding-inline: var(--pad-inline, var(--padding-medium));
1112
1394
  }
1113
1395
 
@@ -1309,292 +1591,232 @@ const r = `@layer tcn-theme {
1309
1591
  }
1310
1592
  }
1311
1593
 
1312
- /* ===== INPUTS ===== */
1313
- .tcn-entry,
1314
- .tcn-control {
1315
- --act: var(--action);
1316
- --mat: var(--material);
1317
- --act-raised: color-mix(in srgb, var(--mat), var(--act) 12%);
1594
+ /* ===== TYPOGRAPHY ===== */
1318
1595
 
1319
- font-size: var(--ergo-text-size-input);
1320
- border: 1px solid var(--ergo-grey);
1321
- box-sizing: border-box;
1322
- min-height: var(--ergo-sizing-action-md);
1323
- border-radius: var(--ergo-shape-radius-medium);
1324
- padding-inline: 4px;
1596
+ .tcn-body-text[data-emphasis="faint"],
1597
+ .tcn-headline[data-emphasis="faint"],
1598
+ .tcn-subheadline[data-emphasis="faint"],
1599
+ .tcn-callout[data-emphasis="faint"],
1600
+ .tcn-footnote[data-emphasis="faint"],
1601
+ .tcn-caption[data-emphasis="faint"],
1602
+ .tcn-title[data-emphasis="faint"] {
1603
+ color: color-mix(in srgb, var(--font-color) 70%, transparent);
1325
1604
  }
1326
1605
 
1327
- .tcn-radio-label,
1328
- .tcn-select-selected-label {
1329
- font-size: var(--ergo-text-size-input);
1606
+ /* Datum/Tokens */
1607
+ .tcn-chip {
1608
+ --action: var(--ergo-primary);
1609
+ --accent-color: var(--ergo-primary);
1330
1610
  }
1331
1611
 
1332
- .tcn-control[data-is-disabled="false"]:hover {
1333
- background: var(--act-raised);
1612
+ .tcn-datum[data-emphasis="normal"] {
1613
+ --datum-font-color: var(--on-material);
1334
1614
  }
1335
1615
 
1336
- .tcn-control:focus-within {
1337
- outline: 2px solid var(--ergo-primary);
1338
- outline-offset: 2px;
1616
+ .tcn-datum[data-emphasis="strong"] {
1617
+ --datum-font-weight: 700;
1339
1618
  }
1340
1619
 
1341
- .tcn-control:focus {
1342
- border: 1px solid var(--act);
1620
+ .tcn-datum[data-emphasis="faint"] {
1621
+ --datum-font-color: color-mix(in srgb, var(--on-material), transparent 12%);
1343
1622
  }
1344
1623
 
1345
- .tcn-control::placeholder {
1346
- color: var(--ergo-grey);
1624
+ .tcn-datum[data-severity="dangerous"] {
1625
+ --datum-font-color: var(--ergo-status-red);
1347
1626
  }
1348
1627
 
1349
- .tcn-control[data-is-disabled="true"] {
1350
- cursor: not-allowed;
1351
- background: var(--ergo-material-disabled-outline);
1352
- color: var(--ergo-text-color-disabled-outline);
1628
+ .tcn-datum[data-severity="cautious"] {
1629
+ --datum-font-color: var(--ergo-status-yellow);
1353
1630
  }
1354
1631
 
1355
- .tcn-control[data-is-disabled="true"]::placeholder {
1356
- color: var(--ergo-text-color-disabled-outline);
1632
+ .tcn-datum[data-severity="suggested"] {
1633
+ --datum-font-color: var(--ergo-status-blue);
1357
1634
  }
1358
1635
 
1359
- .tcn-control {
1360
- display: flex;
1361
- justify-content: center;
1362
- gap: var(--gap-small);
1636
+ .tcn-datum[data-severity="encouraged"] {
1637
+ --datum-font-color: var(--ergo-status-green);
1363
1638
  }
1364
1639
 
1365
- .tcn-control-row {
1366
- min-height: 22px;
1367
- height: auto;
1368
- align-items: center;
1369
- gap: var(--gap-small);
1370
- padding-block: 2px;
1640
+ .tcn-key {
1641
+ --accent-color: var(--action);
1642
+ font-size: 14px;
1643
+ color: var(--datum-font-color);
1644
+ font-weight: var(--datum-font-weight, 400);
1371
1645
  }
1372
1646
 
1373
- .tcn-control-row > .tcn-icon {
1374
- color: var(--ergo-grey);
1647
+ .tcn-value {
1648
+ font-size: 12px;
1649
+
1650
+ color: var(--datum-font-color);
1651
+ font-weight: var(--datum-font-weight, 400);
1375
1652
  }
1376
1653
 
1377
- .tcn-control .tcn-entry {
1378
- border: none;
1379
- background: transparent;
1380
- padding: 0;
1381
- min-height: unset;
1382
- border-radius: 0;
1383
- height: 100%;
1384
- flex-grow: 1;
1654
+ .tcn-term > .tcn-key,
1655
+ .tcn-term > .tcn-value {
1656
+ max-width: 50%;
1657
+ }
1385
1658
 
1386
- &:hover,
1387
- &:active,
1388
- &:focus-visible,
1389
- &:focus {
1390
- outline: none;
1391
- border: none;
1392
- background: transparent;
1659
+ .tcn-value {
1660
+ :where(.tcn-chip) {
1661
+ --action: var(--ergo-accent-blue);
1662
+ --accent-color: var(--ergo-accent-blue);
1393
1663
  }
1394
1664
  }
1395
1665
 
1396
- .tcn-input {
1397
- height: auto;
1666
+ /* ===== Resize Handle ===== */
1667
+
1668
+ /* Edge indicators: centered pill chip */
1669
+ .tcn-resize-handle[data-axis="horizontal"] {
1670
+ width: 8px;
1398
1671
  }
1399
1672
 
1400
- .tcn-textarea,
1401
- .tcn-input {
1402
- cursor: text;
1673
+ .tcn-resize-handle[data-axis="vertical"] {
1674
+ height: 8px;
1403
1675
  }
1404
1676
 
1405
- .tcn-control-set {
1677
+ .tcn-resize-handle[data-axis="horizontal"]::after,
1678
+ .tcn-resize-handle[data-axis="vertical"]::after {
1679
+ content: "";
1680
+ position: absolute;
1406
1681
  border-radius: var(--ergo-shape-radius-medium);
1407
-
1408
- &:focus-within {
1409
- outline: 2px solid var(--ergo-primary);
1410
- outline-offset: 2px;
1411
- }
1412
-
1413
- .tcn-control-set-item {
1414
- z-index: 1;
1415
- border-radius: 0;
1416
- height: auto;
1417
- min-height: var(--ergo-sizing-action-md);
1418
- padding-block: 0;
1419
- &:focus,
1420
- &:focus-visible {
1421
- z-index: 3;
1422
- outline: none;
1423
- }
1424
- }
1425
-
1426
- .tcn-control-set-item:first-child {
1427
- border-top-left-radius: var(--ergo-shape-radius-medium);
1428
- border-bottom-left-radius: var(--ergo-shape-radius-medium);
1429
- }
1430
-
1431
- .tcn-control-set-item:not(:last-child) {
1432
- margin-right: -1px;
1433
- }
1434
-
1435
- .tcn-control-set-item:last-child {
1436
- border-top-right-radius: var(--ergo-shape-radius-medium);
1437
- border-bottom-right-radius: var(--ergo-shape-radius-medium);
1438
- }
1439
-
1440
- .tcn-select,
1441
- .tcn-button,
1442
- .tcn-button[data-hierarchy] {
1443
- border: 1px solid var(--ergo-grey);
1444
- height: auto;
1445
- min-height: var(--ergo-sizing-action-md);
1446
- min-width: var(--ergo-sizing-action-md);
1447
- box-sizing: border-box;
1448
- &:hover,
1449
- &[data-hover] {
1450
- transform: none;
1451
- }
1452
- }
1453
-
1454
- .tcn-button.tcn-select,
1455
- .tcn-button[data-hierarchy].tcn-select {
1456
- border-color: var(--ergo-grey);
1457
- }
1458
-
1459
- .tcn-select:focus-visible,
1460
- .tcn-button:focus-visible,
1461
- .tcn-button[data-hierarchy]:focus-visible {
1462
- border-color: var(--ergo-primary);
1463
- }
1682
+ background-color: var(--ergo-grey-light);
1683
+ pointer-events: none;
1684
+ transition: background-color 0.3s;
1685
+ top: 50%;
1686
+ left: 50%;
1687
+ transform: translate(-50%, -50%);
1464
1688
  }
1465
1689
 
1466
- .tcn-slider[data-is-disabled="true"] {
1467
- &::-webkit-slider-runnable-track {
1468
- background: var(--ergo-grey-light);
1469
- }
1470
-
1471
- &::-webkit-slider-thumb {
1472
- background-color: var(--ergo-white);
1473
- border: 1px solid var(--ergo-grey-light);
1474
- }
1690
+ .tcn-resize-handle[data-axis="horizontal"]::after {
1691
+ width: 4px;
1692
+ height: 16px;
1475
1693
  }
1476
1694
 
1477
- .tcn-checkbox {
1478
- --checkbox-color: var(--action, var(--ergo-primary));
1479
-
1480
- border-color: var(--checkbox-color);
1481
-
1482
- &:focus-visible,
1483
- &:focus {
1484
- outline: 2px solid var(--checkbox-color);
1485
- outline-offset: 2px;
1486
- }
1487
-
1488
- &[data-is-disabled="true"] {
1489
- cursor: not-allowed;
1490
- border-color: var(--ergo-material-disabled-outline);
1491
- }
1492
-
1493
- &[data-checked="true"] {
1494
- background-color: var(--checkbox-color);
1495
- }
1496
-
1497
- &[data-checked="true"][data-is-disabled="true"] {
1498
- background-color: var(--ergo-grey-light);
1499
- }
1500
-
1501
- &[data-checked="false"][data-is-disabled="true"] {
1502
- background: var(--material);
1503
- border-color: var(--ergo-grey-light);
1504
- color: var(--ergo-grey-light);
1505
- }
1506
-
1507
- &[data-is-disabled="false"]:active {
1508
- background-color: var(--checkbox-color);
1509
- }
1695
+ .tcn-resize-handle[data-axis="vertical"]::after {
1696
+ width: 16px;
1697
+ height: 4px;
1510
1698
  }
1511
1699
 
1512
- .tcn-switch-wrapper[data-focused="true"][data-is-checked="false"],
1513
- .tcn-switch-wrapper[data-focused="true"][data-is-checked="true"] {
1514
- outline: 2px solid var(--ergo-primary);
1515
- outline-offset: 2px;
1700
+ /* Corner L-shape indicator */
1701
+ .tcn-resize-handle[data-axis="corner"]::after {
1702
+ content: "";
1703
+ position: absolute;
1704
+ width: 8px;
1705
+ height: 8px;
1706
+ border-style: solid;
1707
+ border-color: var(--ergo-grey-light);
1708
+ border-width: 0;
1709
+ pointer-events: none;
1710
+ transition: border-color 0.15s;
1516
1711
  }
1517
1712
 
1518
- /* Quick fix to use some of the default module styles.*/
1519
- .tcn-input,
1520
- .tcn-select,
1521
- .tcn-slider,
1522
- .tcn-textarea,
1523
- .tcn-checkbox,
1524
- .tcn-switch-wrapper,
1525
- .tcn-date-picker,
1526
- .tcn-date-picker-year-selector,
1527
- .tcn-radio,
1528
- .tcn-date-picker-input,
1529
- .tcn-mobile-date-picker,
1530
- .tcn-mobile-date-picker-year-selector,
1531
- .tcn-suggestion-list-search-input,
1532
- .tcn-suggestion-list {
1533
- --accent-color: var(--ergo-primary);
1713
+ /* Physical corners */
1714
+ .tcn-resize-handle[data-position="top-left"]::after {
1715
+ top: 0;
1716
+ left: 0;
1717
+ border-top-width: 4px;
1718
+ border-left-width: 4px;
1534
1719
  }
1535
1720
 
1536
- /* Datum/Tokens */
1537
- .tcn-chip {
1538
- --action: var(--ergo-primary);
1539
- --accent-color: var(--ergo-primary);
1721
+ .tcn-resize-handle[data-position="top-right"]::after {
1722
+ top: 0;
1723
+ right: 0;
1724
+ border-top-width: 4px;
1725
+ border-right-width: 4px;
1540
1726
  }
1541
1727
 
1542
- .tcn-datum[data-emphasis="normal"] {
1543
- --datum-font-color: var(--on-material);
1728
+ .tcn-resize-handle[data-position="bottom-left"]::after {
1729
+ bottom: 0;
1730
+ left: 0;
1731
+ border-bottom-width: 4px;
1732
+ border-left-width: 4px;
1544
1733
  }
1545
1734
 
1546
- .tcn-datum[data-emphasis="strong"] {
1547
- --datum-font-weight: 700;
1735
+ .tcn-resize-handle[data-position="bottom-right"]::after {
1736
+ bottom: 0;
1737
+ right: 0;
1738
+ border-bottom-width: 4px;
1739
+ border-right-width: 4px;
1548
1740
  }
1549
1741
 
1550
- .tcn-datum[data-emphasis="faint"] {
1551
- --datum-font-color: color-mix(in srgb, var(--on-material), transparent 12%);
1742
+ /* Logical corners (RTL-aware) */
1743
+ .tcn-resize-handle[data-position="top-start"]:dir(ltr)::after {
1744
+ top: 0;
1745
+ left: 0;
1746
+ border-top-width: 4px;
1747
+ border-left-width: 4px;
1552
1748
  }
1553
1749
 
1554
- .tcn-datum[data-severity="dangerous"] {
1555
- --datum-font-color: var(--ergo-status-red);
1750
+ .tcn-resize-handle[data-position="top-start"]:dir(rtl)::after {
1751
+ top: 0;
1752
+ right: 0;
1753
+ border-top-width: 4px;
1754
+ border-right-width: 4px;
1556
1755
  }
1557
1756
 
1558
- .tcn-datum[data-severity="cautious"] {
1559
- --datum-font-color: var(--ergo-status-yellow);
1757
+ .tcn-resize-handle[data-position="top-end"]:dir(ltr)::after {
1758
+ top: 0;
1759
+ right: 0;
1760
+ border-top-width: 4px;
1761
+ border-right-width: 4px;
1560
1762
  }
1561
1763
 
1562
- .tcn-datum[data-severity="suggested"] {
1563
- --datum-font-color: var(--ergo-status-blue);
1764
+ .tcn-resize-handle[data-position="top-end"]:dir(rtl)::after {
1765
+ top: 0;
1766
+ left: 0;
1767
+ border-top-width: 4px;
1768
+ border-left-width: 4px;
1564
1769
  }
1565
1770
 
1566
- .tcn-datum[data-severity="encouraged"] {
1567
- --datum-font-color: var(--ergo-status-green);
1771
+ .tcn-resize-handle[data-position="bottom-start"]:dir(ltr)::after {
1772
+ bottom: 0;
1773
+ left: 0;
1774
+ border-bottom-width: 4px;
1775
+ border-left-width: 4px;
1568
1776
  }
1569
1777
 
1570
- .tcn-key {
1571
- --accent-color: var(--action);
1572
- font-size: 14px;
1573
- color: var(--datum-font-color);
1574
- font-weight: var(--datum-font-weight, 400);
1778
+ .tcn-resize-handle[data-position="bottom-start"]:dir(rtl)::after {
1779
+ bottom: 0;
1780
+ right: 0;
1781
+ border-bottom-width: 4px;
1782
+ border-right-width: 4px;
1575
1783
  }
1576
1784
 
1577
- .tcn-value {
1578
- font-size: 12px;
1785
+ .tcn-resize-handle[data-position="bottom-end"]:dir(ltr)::after {
1786
+ bottom: 0;
1787
+ right: 0;
1788
+ border-bottom-width: 4px;
1789
+ border-right-width: 4px;
1790
+ }
1579
1791
 
1580
- color: var(--datum-font-color);
1581
- font-weight: var(--datum-font-weight, 400);
1792
+ .tcn-resize-handle[data-position="bottom-end"]:dir(rtl)::after {
1793
+ bottom: 0;
1794
+ left: 0;
1795
+ border-bottom-width: 4px;
1796
+ border-left-width: 4px;
1582
1797
  }
1583
1798
 
1584
- .tcn-term > .tcn-key,
1585
- .tcn-term > .tcn-value {
1586
- max-width: 50%;
1799
+ /* Hover */
1800
+ .tcn-resize-handle[data-axis="horizontal"]:hover::after,
1801
+ .tcn-resize-handle[data-axis="vertical"]:hover::after {
1802
+ background-color: var(--ergo-grey-dark);
1587
1803
  }
1588
1804
 
1589
- .tcn-value {
1590
- :where(.tcn-chip) {
1591
- --action: var(--ergo-accent-blue);
1592
- --accent-color: var(--ergo-accent-blue);
1593
- }
1805
+ .tcn-resize-handle:hover::after {
1806
+ border-color: var(--ergo-grey-dark);
1594
1807
  }
1595
1808
  }
1596
- `, i = n([r, a, e]);
1809
+ `, g = n([
1810
+ r,
1811
+ e,
1812
+ a,
1813
+ t,
1814
+ o,
1815
+ i,
1816
+ d,
1817
+ c
1818
+ ]);
1597
1819
  export {
1598
- i as ergoStyleSheet
1820
+ g as ergoStyleSheet
1599
1821
  };
1600
1822
  //# sourceMappingURL=ergo_theme.js.map