@tcn/ui 0.17.0 → 0.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (394) hide show
  1. package/AI_USAGE.md +59 -0
  2. package/CHANGELOG.md +1009 -0
  3. package/ai-docs/actions.md +43 -0
  4. package/ai-docs/decorators.md +34 -0
  5. package/ai-docs/feedback.md +31 -0
  6. package/ai-docs/form.md +58 -0
  7. package/ai-docs/inputs.md +71 -0
  8. package/ai-docs/layouts.md +76 -0
  9. package/ai-docs/mobile.md +34 -0
  10. package/ai-docs/navigation.md +48 -0
  11. package/ai-docs/overlay.md +58 -0
  12. package/ai-docs/stacks.md +59 -0
  13. package/ai-docs/surfaces.md +79 -0
  14. package/ai-docs/themes.md +47 -0
  15. package/ai-docs/tokens.md +35 -0
  16. package/ai-docs/typography.md +38 -0
  17. package/ai-docs/utils.md +51 -0
  18. package/dist/actions/index.d.ts +0 -1
  19. package/dist/actions/index.d.ts.map +1 -1
  20. package/dist/actions/index.js +6 -8
  21. package/dist/actions/index.js.map +1 -1
  22. package/dist/draggable.css +1 -1
  23. package/dist/draggable.module-DFYR5n3n.js +5 -0
  24. package/dist/draggable.module-DFYR5n3n.js.map +1 -0
  25. package/dist/field_set.css +1 -1
  26. package/dist/field_set.module-BpJTFCi4.js +5 -0
  27. package/dist/field_set.module-BpJTFCi4.js.map +1 -0
  28. package/dist/form/field/field.js +11 -10
  29. package/dist/form/field/field.js.map +1 -1
  30. package/dist/form/field_set/field_set.d.ts +6 -10
  31. package/dist/form/field_set/field_set.d.ts.map +1 -1
  32. package/dist/form/field_set/field_set.js +33 -61
  33. package/dist/form/field_set/field_set.js.map +1 -1
  34. package/dist/form/field_set/legend.d.ts +20 -0
  35. package/dist/form/field_set/legend.d.ts.map +1 -0
  36. package/dist/form/field_set/legend.js +28 -0
  37. package/dist/form/field_set/legend.js.map +1 -0
  38. package/dist/form/index.d.ts +2 -1
  39. package/dist/form/index.d.ts.map +1 -1
  40. package/dist/form/index.js +24 -22
  41. package/dist/form/index.js.map +1 -1
  42. package/dist/inputs/color_input/color_input.js +2 -3
  43. package/dist/inputs/color_input/color_input.js.map +1 -1
  44. package/dist/inputs/color_input/color_picker.js +11 -10
  45. package/dist/inputs/color_input/color_picker.js.map +1 -1
  46. package/dist/inputs/combo_box/combo_box.js +11 -10
  47. package/dist/inputs/combo_box/combo_box.js.map +1 -1
  48. package/dist/inputs/date_picker/date_picker.js +11 -10
  49. package/dist/inputs/date_picker/date_picker.js.map +1 -1
  50. package/dist/inputs/date_picker/date_picker_header.d.ts.map +1 -1
  51. package/dist/inputs/date_picker/date_picker_header.js +15 -14
  52. package/dist/inputs/date_picker/date_picker_header.js.map +1 -1
  53. package/dist/inputs/date_picker/date_picker_input.js +9 -9
  54. package/dist/inputs/date_picker/date_picker_time_selector.js +2 -3
  55. package/dist/inputs/date_picker/date_picker_time_selector.js.map +1 -1
  56. package/dist/inputs/date_picker/date_picker_year_input.js +2 -3
  57. package/dist/inputs/date_picker/date_picker_year_input.js.map +1 -1
  58. package/dist/inputs/date_picker/date_picker_year_selector.js +22 -22
  59. package/dist/inputs/date_picker/date_picker_year_selector.js.map +1 -1
  60. package/dist/inputs/mask_input/key_capture_input.js +21 -20
  61. package/dist/inputs/mask_input/key_capture_input.js.map +1 -1
  62. package/dist/inputs/mask_input/mask_input.js +18 -17
  63. package/dist/inputs/mask_input/mask_input.js.map +1 -1
  64. package/dist/inputs/multiselect/multiselect.js +11 -10
  65. package/dist/inputs/multiselect/multiselect.js.map +1 -1
  66. package/dist/inputs/multiselect/multiselect_inline_values.d.ts.map +1 -1
  67. package/dist/inputs/multiselect/multiselect_inline_values.js +15 -15
  68. package/dist/inputs/multiselect/multiselect_inline_values.js.map +1 -1
  69. package/dist/inputs/multiselect/multiselect_values.js +16 -17
  70. package/dist/inputs/multiselect/multiselect_values.js.map +1 -1
  71. package/dist/inputs/phone_number_input/phone_number_context.js +13 -12
  72. package/dist/inputs/phone_number_input/phone_number_context.js.map +1 -1
  73. package/dist/inputs/phone_number_input/phone_number_input_adapter.js +2 -3
  74. package/dist/inputs/phone_number_input/phone_number_input_adapter.js.map +1 -1
  75. package/dist/inputs/phone_number_input/sip_input.js +8 -9
  76. package/dist/inputs/phone_number_input/sip_input.js.map +1 -1
  77. package/dist/inputs/select/select.js +9 -9
  78. package/dist/inputs/slider/slider.js +21 -20
  79. package/dist/inputs/slider/slider.js.map +1 -1
  80. package/dist/inputs/suggestions/suggestion_list.js +9 -9
  81. package/dist/inputs/switch/switch.js +16 -15
  82. package/dist/inputs/switch/switch.js.map +1 -1
  83. package/dist/inputs/unit_input/unit_input.js +11 -10
  84. package/dist/inputs/unit_input/unit_input.js.map +1 -1
  85. package/dist/mobile/inputs/date_picker/mobile_date_picker_header.js +11 -10
  86. package/dist/mobile/inputs/date_picker/mobile_date_picker_header.js.map +1 -1
  87. package/dist/mobile/inputs/date_picker/mobile_date_picker_input.js +11 -10
  88. package/dist/mobile/inputs/date_picker/mobile_date_picker_input.js.map +1 -1
  89. package/dist/mobile/inputs/date_picker/mobile_date_picker_year_selector.js +11 -10
  90. package/dist/mobile/inputs/date_picker/mobile_date_picker_year_selector.js.map +1 -1
  91. package/dist/multiselect_values.css +1 -1
  92. package/dist/navigation/tabs/state/link/tab_link.js +11 -10
  93. package/dist/navigation/tabs/state/link/tab_link.js.map +1 -1
  94. package/dist/overlay/frame/frame.d.ts.map +1 -1
  95. package/dist/overlay/frame/frame.js +117 -76
  96. package/dist/overlay/frame/frame.js.map +1 -1
  97. package/dist/overlay/menu/menu.js +21 -20
  98. package/dist/overlay/menu/menu.js.map +1 -1
  99. package/dist/overlay/popper/base/dismissal_decorator.js +3 -3
  100. package/dist/overlay/popper/base/dismissal_decorator.js.map +1 -1
  101. package/dist/overlay/popper/context_popper.js +11 -10
  102. package/dist/overlay/popper/context_popper.js.map +1 -1
  103. package/dist/overlay/popper/element_popper.js +11 -10
  104. package/dist/overlay/popper/element_popper.js.map +1 -1
  105. package/dist/overlay/popper/legacy/popper.js +28 -27
  106. package/dist/overlay/popper/legacy/popper.js.map +1 -1
  107. package/dist/overlay/popper/preview_popper.js +11 -10
  108. package/dist/overlay/popper/preview_popper.js.map +1 -1
  109. package/dist/overlay/tethered/tethered.js +11 -10
  110. package/dist/overlay/tethered/tethered.js.map +1 -1
  111. package/dist/resizable.css +1 -1
  112. package/dist/resizable.module-ur5FBfxo.js +5 -0
  113. package/dist/resizable.module-ur5FBfxo.js.map +1 -0
  114. package/dist/resize_handle.css +1 -1
  115. package/dist/stacks/box/box.d.ts +14 -0
  116. package/dist/stacks/box/box.d.ts.map +1 -1
  117. package/dist/stacks/box/box.js +98 -99
  118. package/dist/stacks/box/box.js.map +1 -1
  119. package/dist/stacks/box/end_resize_handle.js +5 -5
  120. package/dist/stacks/box/end_resize_handle.js.map +1 -1
  121. package/dist/stacks/box/resize_handlers.d.ts.map +1 -1
  122. package/dist/stacks/box/resize_handlers.js +12 -12
  123. package/dist/stacks/box/resize_handlers.js.map +1 -1
  124. package/dist/stacks/box/start_resize_handle.js +7 -7
  125. package/dist/stacks/box/start_resize_handle.js.map +1 -1
  126. package/dist/stacks/box/types.d.ts +3 -2
  127. package/dist/stacks/box/types.d.ts.map +1 -1
  128. package/dist/stacks/h_collapsible_box.js +14 -13
  129. package/dist/stacks/h_collapsible_box.js.map +1 -1
  130. package/dist/stacks/v_collapsible_box.js +14 -13
  131. package/dist/stacks/v_collapsible_box.js.map +1 -1
  132. package/dist/surfaces/alert/alert.js +7 -8
  133. package/dist/surfaces/alert/alert.js.map +1 -1
  134. package/dist/themes/stories/button_showcase.d.ts.map +1 -1
  135. package/dist/themes/stories/controls_fieldset.d.ts.map +1 -1
  136. package/dist/themes/stories/menu_showcase.d.ts.map +1 -1
  137. package/dist/themes/themes/ergo/ergo_theme.css +1 -1
  138. package/dist/themes/themes/ergo/ergo_theme.d.ts.map +1 -1
  139. package/dist/themes/themes/ergo/ergo_theme.js +336 -294
  140. package/dist/themes/themes/ergo/ergo_theme.js.map +1 -1
  141. package/dist/themes/themes/ergo/parts/actions.css +1 -0
  142. package/dist/themes/themes/ergo/parts/base.css +1 -0
  143. package/dist/themes/themes/ergo/parts/form.css +1 -0
  144. package/dist/themes/themes/ergo/parts/inputs.css +1 -0
  145. package/dist/themes/themes/ergo/parts/navigation.css +1 -0
  146. package/dist/themes/themes/windows_98/windows_98.css +1 -1
  147. package/dist/themes/themes/windows_98/windows_98_theme.js +32 -43
  148. package/dist/themes/themes/windows_98/windows_98_theme.js.map +1 -1
  149. package/dist/utils/decorators/clone_with_decorator.d.ts +21 -0
  150. package/dist/utils/decorators/clone_with_decorator.d.ts.map +1 -0
  151. package/dist/utils/decorators/clone_with_decorator.js +16 -0
  152. package/dist/utils/decorators/clone_with_decorator.js.map +1 -0
  153. package/dist/utils/decorators/draggable/context.d.ts.map +1 -0
  154. package/dist/utils/decorators/draggable/context.js.map +1 -0
  155. package/dist/utils/{dnd/handle.d.ts → decorators/draggable/drag_handle.d.ts} +1 -1
  156. package/dist/utils/decorators/draggable/drag_handle.d.ts.map +1 -0
  157. package/dist/utils/{dnd/handle.js → decorators/draggable/drag_handle.js} +2 -2
  158. package/dist/utils/decorators/draggable/drag_handle.js.map +1 -0
  159. package/dist/utils/decorators/draggable/draggable.d.ts.map +1 -0
  160. package/dist/utils/{dnd → decorators}/draggable/draggable.js +3 -3
  161. package/dist/utils/decorators/draggable/draggable.js.map +1 -0
  162. package/dist/utils/decorators/draggable/index.d.ts +11 -0
  163. package/dist/utils/decorators/draggable/index.d.ts.map +1 -0
  164. package/dist/utils/decorators/draggable/index.js +14 -0
  165. package/dist/utils/{dnd → decorators/draggable}/types.d.ts +1 -1
  166. package/dist/utils/decorators/draggable/types.d.ts.map +1 -0
  167. package/dist/utils/{dnd/hooks → decorators/draggable}/use_drag_container.d.ts +2 -2
  168. package/dist/utils/decorators/draggable/use_drag_container.d.ts.map +1 -0
  169. package/dist/utils/decorators/draggable/use_drag_container.js.map +1 -0
  170. package/dist/utils/decorators/draggable/use_draggable.d.ts.map +1 -0
  171. package/dist/utils/decorators/draggable/use_draggable.js.map +1 -0
  172. package/dist/utils/decorators/index.d.ts +3 -0
  173. package/dist/utils/decorators/index.d.ts.map +1 -0
  174. package/dist/utils/decorators/index.js +27 -0
  175. package/dist/utils/decorators/index.js.map +1 -0
  176. package/dist/utils/decorators/resizable/context.d.ts.map +1 -0
  177. package/dist/utils/{resize → decorators/resizable}/context.js +1 -1
  178. package/dist/utils/decorators/resizable/context.js.map +1 -0
  179. package/dist/utils/decorators/resizable/handle_config.d.ts.map +1 -0
  180. package/dist/utils/decorators/resizable/handle_config.js +62 -0
  181. package/dist/utils/decorators/resizable/handle_config.js.map +1 -0
  182. package/dist/utils/decorators/resizable/index.d.ts.map +1 -0
  183. package/dist/utils/decorators/resizable/index.js.map +1 -0
  184. package/dist/utils/decorators/resizable/resizable.d.ts.map +1 -0
  185. package/dist/utils/{resize → decorators/resizable}/resizable.js +2 -2
  186. package/dist/utils/decorators/resizable/resizable.js.map +1 -0
  187. package/dist/utils/decorators/resizable/resize_handle.d.ts.map +1 -0
  188. package/dist/utils/{resize → decorators/resizable}/resize_handle.js +2 -2
  189. package/dist/utils/decorators/resizable/resize_handle.js.map +1 -0
  190. package/dist/utils/{resize → decorators/resizable}/resize_strategy.d.ts +1 -1
  191. package/dist/utils/decorators/resizable/resize_strategy.d.ts.map +1 -0
  192. package/dist/utils/decorators/resizable/resize_strategy.js.map +1 -0
  193. package/dist/utils/{resize → decorators/resizable}/types.d.ts +2 -2
  194. package/dist/utils/decorators/resizable/types.d.ts.map +1 -0
  195. package/dist/utils/hooks/labelled_by_context.d.ts +21 -0
  196. package/dist/utils/hooks/labelled_by_context.d.ts.map +1 -0
  197. package/dist/utils/hooks/labelled_by_context.js +12 -0
  198. package/dist/utils/hooks/labelled_by_context.js.map +1 -0
  199. package/dist/utils/index.d.ts +8 -8
  200. package/dist/utils/index.d.ts.map +1 -1
  201. package/dist/utils/index.js +44 -40
  202. package/dist/utils/index.js.map +1 -1
  203. package/dist/utils/listeners/click_away_listener.d.ts.map +1 -0
  204. package/dist/utils/{click_away_listener.js → listeners/click_away_listener.js} +1 -1
  205. package/dist/utils/listeners/click_away_listener.js.map +1 -0
  206. package/dist/utils/listeners/focus_redirect.d.ts.map +1 -0
  207. package/dist/utils/listeners/focus_redirect.js.map +1 -0
  208. package/dist/utils/listeners/index.d.ts +4 -0
  209. package/dist/utils/listeners/index.d.ts.map +1 -0
  210. package/dist/utils/listeners/index.js +10 -0
  211. package/dist/utils/listeners/index.js.map +1 -0
  212. package/dist/utils/listeners/mouse_leave_region.d.ts.map +1 -0
  213. package/dist/utils/listeners/mouse_leave_region.js.map +1 -0
  214. package/dist/utils/listeners/scroll_away_listener.d.ts.map +1 -0
  215. package/dist/utils/{scroll_away_listener.js → listeners/scroll_away_listener.js} +1 -1
  216. package/dist/utils/listeners/scroll_away_listener.js.map +1 -0
  217. package/dist/utils/system/index.d.ts +2 -0
  218. package/dist/utils/system/index.d.ts.map +1 -0
  219. package/dist/utils/system/index.js +2 -0
  220. package/dist/utils/system/index.js.map +1 -0
  221. package/dist/utils/system/variations.d.ts.map +1 -0
  222. package/dist/utils/system/variations.js +2 -0
  223. package/dist/utils/system/variations.js.map +1 -0
  224. package/dist/utils/types/sides.d.ts +3 -0
  225. package/dist/utils/types/sides.d.ts.map +1 -0
  226. package/package.json +7 -9
  227. package/src/actions/button/__stories__/button_group.stories.tsx +23 -24
  228. package/src/actions/index.ts +0 -1
  229. package/src/form/field/field.stories.tsx +2 -2
  230. package/src/form/field/h_field/h_field.stories.tsx +1 -1
  231. package/src/form/field/v_field/v_field.stories.tsx +1 -1
  232. package/src/form/field_set/field_set.module.css +0 -14
  233. package/src/form/field_set/field_set.stories.tsx +101 -1
  234. package/src/form/field_set/field_set.tsx +43 -57
  235. package/src/form/field_set/legend.tsx +44 -0
  236. package/src/form/index.ts +6 -1
  237. package/src/inputs/date_picker/date_picker_header.tsx +7 -5
  238. package/src/inputs/date_picker/date_picker_year_selector.tsx +5 -5
  239. package/src/inputs/multiselect/multiselect_inline_values.tsx +4 -3
  240. package/src/inputs/multiselect/multiselect_values.module.css +1 -0
  241. package/src/inputs/multiselect/multiselect_values.tsx +4 -4
  242. package/src/overlay/frame/frame.stories.tsx +2 -1
  243. package/src/overlay/frame/frame.tsx +68 -20
  244. package/src/overlay/popper/base/dismissal_decorator.tsx +3 -3
  245. package/src/overlay/popper/legacy/popper.stories.tsx +9 -2
  246. package/src/overlay/slide/slide.stories.tsx +1 -1
  247. package/src/stacks/box/box.tsx +29 -4
  248. package/src/stacks/box/end_resize_handle.tsx +1 -1
  249. package/src/stacks/box/resize_handlers.ts +1 -1
  250. package/src/stacks/box/start_resize_handle.tsx +1 -1
  251. package/src/stacks/box/types.ts +3 -2
  252. package/src/stacks/collapsible_box.stories.tsx +5 -5
  253. package/src/stacks/demo.stories.tsx +7 -7
  254. package/src/surfaces/page/page.stories.tsx +4 -4
  255. package/src/surfaces/window/window.stories.tsx +1 -1
  256. package/src/themes/stories/button_showcase.tsx +3 -1
  257. package/src/themes/stories/controls_fieldset.tsx +3 -1
  258. package/src/themes/stories/menu_showcase.tsx +3 -1
  259. package/src/themes/themes/ergo/INTERACTIVE.md +89 -0
  260. package/src/themes/themes/ergo/ROADMAP.md +116 -0
  261. package/src/themes/themes/ergo/ergo_theme.css +22 -717
  262. package/src/themes/themes/ergo/ergo_theme.ts +15 -1
  263. package/src/themes/themes/ergo/parts/actions.css +287 -0
  264. package/src/themes/themes/ergo/parts/base.css +62 -0
  265. package/src/themes/themes/ergo/parts/form.css +23 -0
  266. package/src/themes/themes/ergo/parts/inputs.css +252 -0
  267. package/src/themes/themes/ergo/parts/navigation.css +104 -0
  268. package/src/themes/themes/windows_98/windows_98.css +32 -43
  269. package/src/tokens/chip/chip.stories.tsx +5 -5
  270. package/src/utils/decorators/DECORATOR_PATTERN.md +86 -0
  271. package/src/utils/decorators/clone_with_decorator.ts +47 -0
  272. package/src/utils/{dnd → decorators/draggable}/__stories__/draggable.stories.tsx +7 -7
  273. package/src/utils/{dnd → decorators/draggable}/__stories__/use_draggable.stories.tsx +2 -2
  274. package/src/utils/{dnd/handle.tsx → decorators/draggable/drag_handle.tsx} +1 -1
  275. package/src/utils/{dnd → decorators}/draggable/draggable.tsx +2 -2
  276. package/src/utils/decorators/draggable/index.ts +15 -0
  277. package/src/utils/{dnd → decorators/draggable}/types.ts +1 -1
  278. package/src/utils/{dnd/hooks → decorators/draggable}/use_drag_container.ts +2 -2
  279. package/src/utils/decorators/index.ts +2 -0
  280. package/src/utils/{resize → decorators/resizable}/__stories__/resizable.stories.tsx +23 -23
  281. package/src/utils/{resize → decorators/resizable}/__tests__/handle_config.test.ts +19 -97
  282. package/src/utils/{resize → decorators/resizable}/__tests__/resize_strategy.test.ts +20 -20
  283. package/src/utils/{resize → decorators/resizable}/context.ts +1 -1
  284. package/src/utils/{resize → decorators/resizable}/handle_config.ts +7 -31
  285. package/src/utils/{resize → decorators/resizable}/resizable.tsx +1 -1
  286. package/src/utils/{resize → decorators/resizable}/resize_handle.module.css +1 -41
  287. package/src/utils/{resize → decorators/resizable}/resize_handle.tsx +1 -1
  288. package/src/utils/{resize → decorators/resizable}/resize_strategy.ts +1 -1
  289. package/src/utils/{resize → decorators/resizable}/types.ts +1 -7
  290. package/src/utils/hooks/labelled_by_context.ts +27 -0
  291. package/src/utils/index.ts +8 -8
  292. package/src/utils/{click_away_listener.tsx → listeners/click_away_listener.tsx} +1 -1
  293. package/src/utils/listeners/index.ts +3 -0
  294. package/src/utils/{scroll_away_listener.tsx → listeners/scroll_away_listener.tsx} +1 -1
  295. package/src/utils/system/index.ts +1 -0
  296. package/src/utils/types/sides.ts +2 -0
  297. package/dist/actions/button/slim_button/slim_button.d.ts +0 -9
  298. package/dist/actions/button/slim_button/slim_button.d.ts.map +0 -1
  299. package/dist/actions/button/slim_button/slim_button.js +0 -18
  300. package/dist/actions/button/slim_button/slim_button.js.map +0 -1
  301. package/dist/draggable.module-BgelQsuJ.js +0 -5
  302. package/dist/draggable.module-BgelQsuJ.js.map +0 -1
  303. package/dist/frame.css +0 -1
  304. package/dist/left_resize_handle.css +0 -1
  305. package/dist/resizable.module-I6iyBAvM.js +0 -5
  306. package/dist/resizable.module-I6iyBAvM.js.map +0 -1
  307. package/dist/right_resize_handle.css +0 -1
  308. package/dist/slim_button.css +0 -1
  309. package/dist/stacks/box/left_resize_handle.d.ts +0 -4
  310. package/dist/stacks/box/left_resize_handle.d.ts.map +0 -1
  311. package/dist/stacks/box/left_resize_handle.js +0 -36
  312. package/dist/stacks/box/left_resize_handle.js.map +0 -1
  313. package/dist/stacks/box/right_resize_handle.d.ts +0 -4
  314. package/dist/stacks/box/right_resize_handle.d.ts.map +0 -1
  315. package/dist/stacks/box/right_resize_handle.js +0 -36
  316. package/dist/stacks/box/right_resize_handle.js.map +0 -1
  317. package/dist/utils/click_away_listener.d.ts.map +0 -1
  318. package/dist/utils/click_away_listener.js.map +0 -1
  319. package/dist/utils/dnd/context.d.ts.map +0 -1
  320. package/dist/utils/dnd/context.js.map +0 -1
  321. package/dist/utils/dnd/draggable/draggable.d.ts.map +0 -1
  322. package/dist/utils/dnd/draggable/draggable.js.map +0 -1
  323. package/dist/utils/dnd/handle.d.ts.map +0 -1
  324. package/dist/utils/dnd/handle.js.map +0 -1
  325. package/dist/utils/dnd/hooks/use_drag_container.d.ts.map +0 -1
  326. package/dist/utils/dnd/hooks/use_drag_container.js.map +0 -1
  327. package/dist/utils/dnd/hooks/use_draggable.d.ts.map +0 -1
  328. package/dist/utils/dnd/hooks/use_draggable.js.map +0 -1
  329. package/dist/utils/dnd/types.d.ts.map +0 -1
  330. package/dist/utils/focus_redirect.d.ts.map +0 -1
  331. package/dist/utils/focus_redirect.js.map +0 -1
  332. package/dist/utils/mouse_leave_region.d.ts.map +0 -1
  333. package/dist/utils/mouse_leave_region.js.map +0 -1
  334. package/dist/utils/resize/context.d.ts.map +0 -1
  335. package/dist/utils/resize/context.js.map +0 -1
  336. package/dist/utils/resize/handle_config.d.ts.map +0 -1
  337. package/dist/utils/resize/handle_config.js +0 -85
  338. package/dist/utils/resize/handle_config.js.map +0 -1
  339. package/dist/utils/resize/index.d.ts.map +0 -1
  340. package/dist/utils/resize/resizable.d.ts.map +0 -1
  341. package/dist/utils/resize/resizable.js.map +0 -1
  342. package/dist/utils/resize/resize_handle.d.ts.map +0 -1
  343. package/dist/utils/resize/resize_handle.js.map +0 -1
  344. package/dist/utils/resize/resize_strategy.d.ts.map +0 -1
  345. package/dist/utils/resize/resize_strategy.js.map +0 -1
  346. package/dist/utils/resize/types.d.ts.map +0 -1
  347. package/dist/utils/scroll_away_listener.d.ts.map +0 -1
  348. package/dist/utils/scroll_away_listener.js.map +0 -1
  349. package/dist/utils/types/variations.d.ts.map +0 -1
  350. package/src/actions/button/__stories__/slim_button.stories.tsx +0 -274
  351. package/src/actions/button/slim_button/slim_button.module.css +0 -9
  352. package/src/actions/button/slim_button/slim_button.tsx +0 -26
  353. package/src/overlay/frame/frame.module.css +0 -5
  354. package/src/stacks/box/left_resize_handle.module.css +0 -12
  355. package/src/stacks/box/left_resize_handle.tsx +0 -39
  356. package/src/stacks/box/right_resize_handle.module.css +0 -12
  357. package/src/stacks/box/right_resize_handle.tsx +0 -38
  358. /package/dist/utils/{dnd → decorators/draggable}/context.d.ts +0 -0
  359. /package/dist/utils/{dnd → decorators/draggable}/context.js +0 -0
  360. /package/dist/utils/{dnd → decorators}/draggable/draggable.d.ts +0 -0
  361. /package/dist/utils/{resize → decorators/draggable}/index.js.map +0 -0
  362. /package/dist/utils/{dnd → decorators/draggable}/types.js +0 -0
  363. /package/dist/utils/{dnd → decorators/draggable}/types.js.map +0 -0
  364. /package/dist/utils/{dnd/hooks → decorators/draggable}/use_drag_container.js +0 -0
  365. /package/dist/utils/{dnd/hooks → decorators/draggable}/use_draggable.d.ts +0 -0
  366. /package/dist/utils/{dnd/hooks → decorators/draggable}/use_draggable.js +0 -0
  367. /package/dist/utils/{resize → decorators/resizable}/context.d.ts +0 -0
  368. /package/dist/utils/{resize → decorators/resizable}/handle_config.d.ts +0 -0
  369. /package/dist/utils/{resize → decorators/resizable}/index.d.ts +0 -0
  370. /package/dist/utils/{resize → decorators/resizable}/index.js +0 -0
  371. /package/dist/utils/{resize → decorators/resizable}/resizable.d.ts +0 -0
  372. /package/dist/utils/{resize → decorators/resizable}/resize_handle.d.ts +0 -0
  373. /package/dist/utils/{resize → decorators/resizable}/resize_strategy.js +0 -0
  374. /package/dist/utils/{resize → decorators/resizable}/types.js +0 -0
  375. /package/dist/utils/{resize → decorators/resizable}/types.js.map +0 -0
  376. /package/dist/utils/{click_away_listener.d.ts → listeners/click_away_listener.d.ts} +0 -0
  377. /package/dist/utils/{focus_redirect.d.ts → listeners/focus_redirect.d.ts} +0 -0
  378. /package/dist/utils/{focus_redirect.js → listeners/focus_redirect.js} +0 -0
  379. /package/dist/utils/{mouse_leave_region.d.ts → listeners/mouse_leave_region.d.ts} +0 -0
  380. /package/dist/utils/{mouse_leave_region.js → listeners/mouse_leave_region.js} +0 -0
  381. /package/dist/utils/{scroll_away_listener.d.ts → listeners/scroll_away_listener.d.ts} +0 -0
  382. /package/dist/utils/{types → system}/variations.d.ts +0 -0
  383. /package/src/utils/{dnd → decorators/draggable}/__stories__/draggable_stories.module.css +0 -0
  384. /package/src/utils/{dnd → decorators/draggable}/context.ts +0 -0
  385. /package/src/utils/{dnd → decorators}/draggable/draggable.module.css +0 -0
  386. /package/src/utils/{dnd/hooks → decorators/draggable}/use_draggable.ts +0 -0
  387. /package/src/utils/{resize → decorators/resizable}/__stories__/resizable_stories.module.css +0 -0
  388. /package/src/utils/{resize → decorators/resizable}/index.ts +0 -0
  389. /package/src/utils/{resize → decorators/resizable}/resizable.module.css +0 -0
  390. /package/src/utils/{click_away_listener.stories.tsx → listeners/click_away_listener.stories.tsx} +0 -0
  391. /package/src/utils/{focus_redirect.tsx → listeners/focus_redirect.tsx} +0 -0
  392. /package/src/utils/{mouse_leave_region.tsx → listeners/mouse_leave_region.tsx} +0 -0
  393. /package/src/utils/{scroll_away_listener.stories.tsx → listeners/scroll_away_listener.stories.tsx} +0 -0
  394. /package/src/utils/{types → system}/variations.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"windows_98_theme.js","sources":["../../../../src/themes/themes/windows_98/windows_98.css?raw","../../../../src/themes/themes/windows_98/windows_98_theme.ts"],"sourcesContent":["export default \"@layer tcn-theme {\\n /* ===== CSS VARIABLES ===== */\\n :root {\\n --scalar: 1;\\n --gap-small: 2px;\\n --gap-medium: 4px;\\n --gap-large: 8px;\\n\\n --padding-small: 2px;\\n --padding-medium: 4px;\\n --padding-large: 8px;\\n\\n --status-color-disabled: #7f7f7f;\\n --status-color-info: #000080;\\n --status-color-warning: #000080;\\n --status-color-error: #be0000;\\n\\n --async-color-initial: #c0c0c0;\\n --async-color-pending: #000080;\\n --async-color-success: #00ff00;\\n --async-color-failed: #be0000;\\n\\n --primary-color-faint: #c0c0c0;\\n --primary-color: #000080;\\n --primary-color-strong: #000080;\\n\\n --secondary-color-faint: #c0c0c0;\\n --secondary-color: #000080;\\n --secondary-color-strong: #000080;\\n\\n --tertiary-color-faint: #c0c0c0;\\n --tertiary-color: #000080;\\n --tertiary-color-strong: #000080;\\n\\n --quaternary-color-faint: #c0c0c0;\\n --quaternary-color: #000080;\\n --quaternary-color-strong: #000080;\\n\\n --background-color-primary: #c0c0c0;\\n --background-color-secondary: #c0c0c0;\\n --background-color-tertiary: #c0c0c0;\\n --background-color-quaternary: #c0c0c0;\\n\\n --foreground-color-primary: #222222;\\n --foreground-color-secondary: #222222;\\n --foreground-color-tertiary: #222222;\\n --foreground-color-quaternary: #222222;\\n\\n --accent-color: #000080;\\n\\n --font-color: #222222;\\n --font-family: \\\"Microsoft Sans Serif\\\", \\\"Arial\\\", sans-serif;\\n --font-size: 12px;\\n }\\n\\n .tcn-theme-root {\\n font-family: var(--font-family);\\n color: var(--font-color);\\n -webkit-font-smoothing: none;\\n }\\n\\n /* ===== TYPOGRAPHY ===== */\\n .tcn-title[data-size=\\\"sm\\\"] {\\n font-size: 10px;\\n }\\n .tcn-title[data-size=\\\"md\\\"] {\\n font-size: 12px;\\n }\\n .tcn-title[data-size=\\\"lg\\\"] {\\n font-size: 14px;\\n }\\n\\n .tcn-body-text[data-size=\\\"sm\\\"] {\\n font-size: 10px;\\n }\\n .tcn-body-text[data-size=\\\"md\\\"] {\\n font-size: 11px;\\n }\\n .tcn-body-text[data-size=\\\"lg\\\"] {\\n font-size: 12px;\\n }\\n\\n .tcn-button-text {\\n position: relative;\\n opacity: 1;\\n font-size: 12px !important;\\n }\\n\\n /* ===== BUTTONS ===== */\\n /* Base button styles */\\n .tcn-base-button,\\n .tcn-button,\\n .tcn-button[data-hierarchy=\\\"primary\\\"],\\n .tcn-button[data-hierarchy=\\\"secondary\\\"],\\n .tcn-button[data-hierarchy=\\\"primary\\\"]:hover,\\n .tcn-button[data-hierarchy=\\\"secondary\\\"]:hover {\\n background: silver;\\n border: none;\\n border-radius: 0;\\n box-shadow:\\n inset -1px -1px #0a0a0a,\\n inset 1px 1px #fff,\\n inset -2px -2px grey,\\n inset 2px 2px #c0c0c0;\\n box-sizing: border-box;\\n color: #222;\\n min-height: 23px;\\n min-width: 0;\\n padding: 0 12px;\\n font-size: 12px;\\n text-decoration: none;\\n outline: none;\\n }\\n\\n .tcn-button[data-is-disabled=\\\"true\\\"] {\\n text-shadow: 1px 1px 0 #fff;\\n }\\n\\n /* Button content positioning */\\n .tcn-button[data-hierarchy=\\\"primary\\\"] > *,\\n .tcn-button[data-hierarchy=\\\"secondary\\\"] > * {\\n position: relative;\\n }\\n\\n .tcn-button[data-hierarchy=\\\"primary\\\"]:active > *,\\n .tcn-button[data-hierarchy=\\\"secondary\\\"]:active > * {\\n position: relative;\\n top: 0;\\n left: 1px;\\n }\\n\\n /* Button focus states */\\n .tcn-button[data-hierarchy=\\\"primary\\\"]:focus:not(:active)::before,\\n .tcn-button[data-hierarchy=\\\"secondary\\\"]:focus:not(:active)::before {\\n content: \\\"\\\";\\n position: absolute;\\n top: 1px;\\n bottom: 2px;\\n left: 1px;\\n right: 2px;\\n outline: 1px dotted #222;\\n outline-offset: -3px;\\n }\\n\\n /* Primary button specific styles */\\n .tcn-button[data-hierarchy=\\\"primary\\\"],\\n .tcn-button[data-hierarchy=\\\"primary\\\"]:hover {\\n box-shadow:\\n inset -2px -2px #0a0a0a,\\n inset 1px 1px #0a0a0a,\\n inset -3px -3px grey,\\n inset 2px 2px #fff,\\n inset 3px 3px #c0c0c0;\\n }\\n\\n /* Active states */\\n .tcn-button[data-hierarchy=\\\"primary\\\"]:active,\\n .tcn-button[data-hierarchy=\\\"secondary\\\"]:active {\\n background: silver;\\n box-shadow:\\n inset -1px -1px #fff,\\n inset 1px 1px #0a0a0a,\\n inset -2px -2px #c0c0c0,\\n inset 2px 2px grey;\\n color: #222;\\n border: none;\\n text-decoration: none;\\n }\\n\\n /* Focus states */\\n .tcn-button[data-hierarchy=\\\"primary\\\"]:focus,\\n .tcn-button[data-hierarchy=\\\"secondary\\\"]:focus,\\n .tcn-button[data-hierarchy=\\\"primary\\\"]:focus:not(:active),\\n .tcn-button[data-hierarchy=\\\"secondary\\\"]:focus:not(:active) {\\n background: silver;\\n border: none;\\n text-decoration: none;\\n }\\n\\n /* Tertiary button styles */\\n .tcn-button[data-hierarchy=\\\"tertiary\\\"] {\\n padding: 0 4px;\\n background: none;\\n border: none;\\n border-radius: 0;\\n box-shadow: none;\\n box-sizing: border-box;\\n color: #000080;\\n min-height: auto;\\n min-width: auto;\\n text-decoration: none;\\n }\\n\\n .tcn-button[data-hierarchy=\\\"tertiary\\\"]:hover {\\n background: none;\\n border: none;\\n border-radius: 0;\\n box-shadow: none;\\n box-sizing: border-box;\\n color: #000080;\\n min-height: auto;\\n min-width: auto;\\n text-decoration: none;\\n }\\n\\n .tcn-button[data-hierarchy=\\\"tertiary\\\"]:active {\\n background: none;\\n border: none;\\n border-radius: 0;\\n box-shadow: none;\\n box-sizing: border-box;\\n color: rgba(0, 0, 128, 0.6);\\n min-height: auto;\\n min-width: auto;\\n text-decoration: none;\\n }\\n\\n .tcn-button[data-hierarchy=\\\"tertiary\\\"]:focus,\\n .tcn-button[data-hierarchy=\\\"tertiary\\\"]:focus:not(:active) {\\n background: none;\\n outline: 1px dotted #000080;\\n outline-offset: 0;\\n border: none;\\n text-decoration: none;\\n }\\n\\n /* Disabled states */\\n .tcn-button[data-hierarchy=\\\"secondary\\\"][data-is-disabled=\\\"true\\\"] {\\n box-shadow:\\n inset -1px -1px #717171,\\n inset 1px 1px #fff,\\n inset -2px -2px #999,\\n inset 2px 2px #c0c0c0;\\n }\\n\\n .tcn-button[data-hierarchy=\\\"primary\\\"][data-is-disabled=\\\"true\\\"] {\\n box-shadow:\\n inset -2px -2px #717171,\\n inset 1px 1px #717171,\\n inset -3px -3px #999,\\n inset 2px 2px #fff,\\n inset 3px 3px #c0c0c0;\\n }\\n\\n .tcn-button[data-hierarchy=\\\"primary\\\"][data-is-disabled=\\\"true\\\"],\\n .tcn-button[data-hierarchy=\\\"secondary\\\"][data-is-disabled=\\\"true\\\"],\\n .tcn-button[data-hierarchy=\\\"tertiary\\\"][data-is-disabled=\\\"true\\\"] {\\n color: #7f7f7f;\\n cursor: not-allowed;\\n }\\n\\n /* Select button styles */\\n .tcn-button.select,\\n .tcn-button.select:hover {\\n position: relative;\\n padding-inline-end: 20px;\\n padding-inline-start: 4px;\\n }\\n\\n .tcn-button.select:dir(ltr)::after {\\n content: \\\"\\\";\\n position: absolute;\\n right: calc(4px * var(--scalar, 1));\\n top: 50%;\\n transform: translateY(-50%);\\n width: calc(12px * var(--scalar, 1));\\n height: calc(12px * var(--scalar, 1));\\n background-color: currentColor;\\n mask-image: url(\\\"data:image/svg+xml,%3Csvg width='100%25' height='100%25' viewBox='0 0 12 12' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2 4l4 4 4-4z' fill='currentColor'/%3E%3C/svg%3E\\\");\\n mask-repeat: no-repeat;\\n mask-position: center;\\n mask-size: contain;\\n pointer-events: none;\\n }\\n\\n .tcn-button.select:dir(rtl)::after {\\n content: \\\"\\\";\\n position: absolute;\\n left: calc(4px * var(--scalar, 1));\\n top: 50%;\\n transform: translateY(-50%);\\n width: calc(12px * var(--scalar, 1));\\n height: calc(12px * var(--scalar, 1));\\n background-color: #222;\\n mask-image: url(\\\"data:image/svg+xml,%3Csvg width='100%25' height='100%25' viewBox='0 0 12 12' fill='black' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2 4l4 4 4-4z' fill='black'/%3E%3C/svg%3E\\\");\\n mask-repeat: no-repeat;\\n mask-position: center;\\n mask-size: contain;\\n pointer-events: none;\\n }\\n\\n /* Slim button styles */\\n .tcn-slim-button,\\n .tcn-slim-button[data-hierarchy=\\\"primary\\\"],\\n .tcn-slim-button[data-hierarchy=\\\"secondary\\\"],\\n .tcn-slim-button[data-hierarchy=\\\"primary\\\"]:hover,\\n .tcn-slim-button[data-hierarchy=\\\"secondary\\\"]:hover {\\n padding: 2px;\\n min-width: 0;\\n min-height: 0;\\n height: auto;\\n width: auto;\\n }\\n\\n .tcn-slim-button[data-size=\\\"sm\\\"],\\n .tcn-slim-button[data-hierarchy=\\\"primary\\\"][data-size=\\\"sm\\\"],\\n .tcn-slim-button[data-hierarchy=\\\"secondary\\\"][data-size=\\\"sm\\\"],\\n .tcn-slim-button[data-hierarchy=\\\"primary\\\"][data-size=\\\"sm\\\"]:hover,\\n .tcn-slim-button[data-hierarchy=\\\"secondary\\\"][data-size=\\\"sm\\\"]:hover {\\n padding: 1px;\\n }\\n\\n .tcn-slim-button[data-size=\\\"md\\\"],\\n .tcn-slim-button[data-hierarchy=\\\"primary\\\"][data-size=\\\"md\\\"],\\n .tcn-slim-button[data-hierarchy=\\\"secondary\\\"][data-size=\\\"md\\\"],\\n .tcn-slim-button[data-hierarchy=\\\"primary\\\"][data-size=\\\"md\\\"]:hover,\\n .tcn-slim-button[data-hierarchy=\\\"secondary\\\"][data-size=\\\"md\\\"]:hover {\\n padding: 2px;\\n }\\n\\n .tcn-slim-button[data-size=\\\"lg\\\"],\\n .tcn-slim-button[data-hierarchy=\\\"primary\\\"][data-size=\\\"lg\\\"],\\n .tcn-slim-button[data-hierarchy=\\\"secondary\\\"][data-size=\\\"lg\\\"],\\n .tcn-slim-button[data-hierarchy=\\\"primary\\\"][data-size=\\\"lg\\\"]:hover,\\n .tcn-slim-button[data-hierarchy=\\\"secondary\\\"][data-size=\\\"lg\\\"]:hover {\\n padding: 4px;\\n }\\n\\n /* Select group styles */\\n .tcn-select-group .tcn-button[data-hierarchy=\\\"primary\\\"],\\n .tcn-select-group .tcn-button[data-hierarchy=\\\"primary\\\"]:hover,\\n .tcn-select-group .tcn-button[data-hierarchy=\\\"primary\\\"]:focus {\\n background-color: #000080;\\n box-shadow:\\n inset -1px -1px #0a0a0a,\\n inset 1px 1px #fff,\\n inset -2px -2px grey,\\n inset 2px 2px #c0c0c0;\\n color: #fff;\\n }\\n\\n .tcn-select-group .tcn-button:hover,\\n .tcn-select-group .tcn-button:focus,\\n .tcn-button-group .tcn-button:hover,\\n .tcn-button-group .tcn-button:focus {\\n z-index: 1;\\n }\\n\\n /* ===== INPUT FIELDS ===== */\\n .tcn-input,\\n .tcn-textarea,\\n .tcn-suggestion-list-search-input,\\n .tcn-multi-combo-box-values-container,\\n .tcn-multiselect-values-container {\\n border-radius: 0;\\n outline: none;\\n border: none;\\n background-color: #fff;\\n box-shadow:\\n inset -1px -1px #fff,\\n inset 1px 1px grey,\\n inset -2px -2px #dfdfdf,\\n inset 2px 2px #0a0a0a;\\n box-sizing: border-box;\\n padding: 3px 4px;\\n }\\n\\n .tcn-suggestion-list-search-input {\\n box-shadow:\\n inset -1px -1px #fff,\\n inset 1px 1px grey,\\n inset -2px -2px #dfdfdf,\\n inset 2px 2px #0a0a0a,\\n 0px -2px 0px 2px #c0c0c0;\\n }\\n\\n .tcn-input,\\n .tcn-textarea,\\n .tcn-suggestion-list-search-input {\\n height: 23px;\\n }\\n\\n .tcn-input:is(:focus, :focus-visible, :active, :hover),\\n .tcn-input:is(:focus, :focus-visible, :active, :hover)[data-is-disabled=\\\"false\\\"],\\n .tcn-textarea:is(:focus, :focus-visible, :active, :hover),\\n .tcn-textarea:is(:focus, :focus-visible, :active, :hover)[data-is-disabled=\\\"false\\\"] {\\n outline: none;\\n border: none;\\n }\\n\\n .tcn-input[data-is-disabled=\\\"true\\\"],\\n .tcn-textarea[data-is-disabled=\\\"true\\\"],\\n .tcn-suggestion-list-search-input[data-is-disabled=\\\"true\\\"],\\n .tcn-multiselect-values-container[data-is-disabled=\\\"true\\\"] {\\n box-shadow:\\n inset -1px -1px #fff,\\n inset 1px 1px #999,\\n inset -2px -2px #dfdfdf,\\n inset 2px 2px #717171;\\n }\\n\\n .tcn-input[data-is-disabled=\\\"true\\\"],\\n .tcn-textarea[data-is-disabled=\\\"true\\\"],\\n .tcn-suggestion-list-search-input[data-is-disabled=\\\"true\\\"],\\n .tcn-multiselect-values-container[data-is-disabled=\\\"true\\\"],\\n .tcn-input[data-is-disabled=\\\"true\\\"]::placeholder,\\n .tcn-textarea[data-is-disabled=\\\"true\\\"]::placeholder,\\n .tcn-suggestion-list-search-input[data-is-disabled=\\\"true\\\"]::placeholder,\\n .tcn-multiselect-values-container[data-is-disabled=\\\"true\\\"]::placeholder {\\n color: #7f7f7f;\\n cursor: not-allowed;\\n background-color: #c0c0c0;\\n }\\n\\n /* Select group active and focus states */\\n .tcn-select-group .tcn-button[data-hierarchy=\\\"primary\\\"]:active {\\n box-shadow:\\n inset -1px -1px #fff,\\n inset 1px 1px #0a0a0a,\\n inset -2px -2px #c0c0c0,\\n inset 2px 2px grey;\\n color: #fff;\\n }\\n\\n .tcn-select-group .tcn-button[data-hierarchy=\\\"primary\\\"]:focus:not(:active)::before {\\n outline: 1px dotted #fcfcfc;\\n }\\n\\n /* ===== SUGGESTION LISTS ===== */\\n .tcn-suggestion-list {\\n padding: 2px;\\n }\\n\\n .tcn-suggestion-item {\\n padding: 0;\\n background: transparent;\\n border: none;\\n min-height: 0;\\n }\\n\\n .tcn-suggestion-item:hover {\\n background: #000080;\\n color: #fff;\\n }\\n\\n .tcn-suggestion-item[data-is-selected=\\\"true\\\"],\\n .tcn-suggestion-item[data-is-focused=\\\"true\\\"] {\\n padding: 0;\\n background: #000080;\\n color: #fff;\\n border: none;\\n }\\n\\n .tcn-suggestion-list-search-input {\\n border-radius: 0;\\n padding: 4px;\\n height: 24px;\\n min-height: 24px;\\n }\\n\\n /* ===== LAYOUT COMPONENTS ===== */\\n\\n .tcn-title {\\n color: black;\\n }\\n\\n .header .tcn-title {\\n color: #fff;\\n }\\n /* Headers */\\n .header[data-kind=\\\"window\\\"] {\\n padding: 4px;\\n background: linear-gradient(90deg, #000080, #1084d0);\\n border: none;\\n color: #fff;\\n }\\n\\n .header[data-kind=\\\"window\\\"] > .tcn-button {\\n color: #222;\\n }\\n\\n .header[data-kind=\\\"toolbar\\\"],\\n .header[data-kind=\\\"app\\\"],\\n .header[data-kind=\\\"nav\\\"] {\\n padding: 4px 0;\\n background: #c0c0c0;\\n color: #222222;\\n border-bottom: 1px solid #808080;\\n border-top: 1px solid #f5f5f5;\\n border-right: 1px solid #808080;\\n border-left: 1px solid #f5f5f5;\\n padding-inline-start: 4px;\\n }\\n\\n .header[data-kind=\\\"panel\\\"] {\\n padding: 4px;\\n background: linear-gradient(90deg, #7c7c7c, #aeaeae);\\n border: none;\\n color: #fff;\\n }\\n\\n /* Main content areas */\\n .tcn-main[data-kind=\\\"window\\\"],\\n .tcn-main[data-kind=\\\"app\\\"],\\n .tcn-main[data-kind=\\\"nav\\\"],\\n .tcn-main[data-kind=\\\"toolbar\\\"],\\n .tcn-main[data-kind=\\\"section\\\"],\\n .tcn-main[data-kind=\\\"panel\\\"],\\n .tcn-main[data-kind=\\\"panel\\\"],\\n .tcn-main[data-kind=\\\"drawer\\\"],\\n .tcn-main[data-kind=\\\"card\\\"],\\n .tcn-panel,\\n .tcn-h-panel,\\n .tcn-v-panel,\\n .tcn-sidebar-start[data-hierarchy],\\n .tcn-sidebar-end[data-hierarchy] {\\n border-radius: 0;\\n background: #c0c0c0;\\n color: #222222;\\n border-bottom: 1px solid #808080;\\n border-top: 1px solid #f5f5f5;\\n border-right: 1px solid #808080;\\n border-left: 1px solid #f5f5f5;\\n }\\n\\n .tcn-column:after {\\n content: \\\"\\\";\\n position: absolute;\\n bottom: var(--padding);\\n top: var(--padding);\\n right: 0;\\n width: 0px;\\n border-bottom: 1px solid #f5f5f5;\\n border-top: 1px solid #808080;\\n border-right: 1px solid #f5f5f5;\\n border-left: 1px solid #808080;\\n }\\n\\n .tcn-column:last-child:after {\\n display: none;\\n }\\n\\n .tcn-main[data-kind=\\\"panel\\\"],\\n .tcn-sidebar-start[data-kind=\\\"panel\\\"],\\n .tcn-sidebar-end[data-kind=\\\"panel\\\"] {\\n padding: 0;\\n }\\n\\n /* Sidebar styles */\\n .tcn-sidebar-start[data-hierarchy=\\\"tertiary\\\"],\\n .tcn-sidebar-start[data-hierarchy=\\\"secondary\\\"] {\\n background: #c0c0c0;\\n color: #222222;\\n }\\n\\n .tcn-sidebar-start[data-kind=\\\"nav\\\"],\\n .tcn-v-nav {\\n background: #fff;\\n padding: 2px;\\n border-top: 1px solid #808080;\\n border-bottom: 1px solid #f5f5f5;\\n border-right: 1px solid #f5f5f5;\\n border-left: 1px solid #808080;\\n }\\n\\n .tcn-sidebar-end[data-hierarchy=\\\"tertiary\\\"],\\n .tcn-sidebar-end[data-hierarchy=\\\"secondary\\\"] {\\n background: #c0c0c0;\\n color: #222222;\\n }\\n\\n .tcn-sidebar-end[data-hierarchy=\\\"primary\\\"],\\n .tcn-sidebar-start[data-hierarchy=\\\"primary\\\"] {\\n background: #fff;\\n color: #222222;\\n }\\n\\n /* Footer */\\n .tcn-footer[data-kind=\\\"window\\\"] {\\n padding: 4px;\\n background: #c0c0c0;\\n box-shadow:\\n inset 1px 1px #808080,\\n inset -1px -1px #f5f5f5,\\n inset 2px 2px #c1c1c1,\\n inset -2px -2px #c0c0c0;\\n color: #222222;\\n }\\n\\n /* ===== WINDOWS AND POPOVERS ===== */\\n .tcn-window,\\n .tcn-date-picker-popover,\\n .tcn-date-picker-year-selector,\\n .tcn-menu,\\n .tcn-suggestion-list {\\n border-radius: 0;\\n background: #c0c0c0;\\n padding: 4px;\\n box-shadow:\\n inset -1px -1px #0a0a0a,\\n inset 1px 1px #f5f5f5,\\n inset -2px -2px #808080,\\n inset 2px 2px #c0c0c0;\\n }\\n\\n .tcn-suggestion-list-header {\\n background: #c0c0c0;\\n }\\n\\n /* ===== DATE PICKER COMPONENTS ===== */\\n .tcn-date-picker-box {\\n background: #c0c0c0;\\n padding: 0;\\n }\\n\\n .tcn-date-picker-date {\\n box-shadow: none !important;\\n }\\n\\n .tcn-date-picker-year-button {\\n box-shadow: none !important;\\n }\\n\\n .tcn-date-picker-header {\\n height: 20px;\\n }\\n\\n .tcn-button.tcn-phone-number-input-select,\\n .tcn-button.tcn-phone-number-input-select:hover {\\n min-width: 0;\\n }\\n\\n .tcn-phone-number-input[data-has-phone-book=\\\"false\\\"] {\\n border-end-end-radius: 0px;\\n border-start-end-radius: 0px;\\n }\\n\\n .tcn-button.tcn-phone-number-input-phone-book {\\n max-width: 23px !important;\\n max-height: 23px !important;\\n height: 23px !important;\\n min-width: 23px !important;\\n min-height: 23px !important;\\n }\\n\\n .tcn-button.tcn-date-picker-year-select {\\n padding-inline-end: 20px;\\n }\\n\\n .tcn-button.tcn-date-picker-year-select:dir(ltr)::after {\\n width: calc(12px * var(--scalar, 1));\\n height: calc(12px * var(--scalar, 1));\\n mask-image: url(\\\"data:image/svg+xml,%3Csvg width='100%25' height='100%25' viewBox='0 0 12 12' fill='black' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2 4l4 4 4-4z' fill='black'/%3E%3C/svg%3E\\\");\\n }\\n\\n .tcn-button.tcn-date-picker-year-select:dir(rtl)::after {\\n width: calc(12px * var(--scalar, 1));\\n height: calc(12px * var(--scalar, 1));\\n mask-image: url(\\\"data:image/svg+xml,%3Csvg width='100%25' height='100%25' viewBox='0 0 12 12' fill='black' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2 4l4 4 4-4z' fill='black'/%3E%3C/svg%3E\\\");\\n }\\n\\n /* ===== TIME BOX ===== */\\n .tcn-time-box {\\n border-radius: 0;\\n background: #fff;\\n border: none;\\n box-shadow:\\n inset 1px 1px #808080,\\n inset -1px -1px #f5f5f5,\\n inset 2px 2px #c1c1c1,\\n inset -2px -2px #c0c0c0;\\n }\\n\\n .tcn-time-box-title-container {\\n min-height: 25px;\\n height: 25px;\\n }\\n\\n /* ===== FORM COMPONENTS ===== */\\n .tcn-field-set {\\n padding: 8px 12px 12px 12px;\\n margin-top: 10px;\\n border-radius: 0;\\n background: #c0c0c0;\\n box-shadow:\\n inset 1px 1px #808080,\\n inset -1px -1px #f5f5f5,\\n inset 2px 2px #f5f5f5,\\n inset -2px -2px #808080;\\n }\\n\\n .tcn-field-set > .tcn-field-set-body {\\n background: transparent;\\n padding: 0;\\n gap: 8px;\\n }\\n\\n .tcn-field-set > .tcn-field-set-legend {\\n position: relative;\\n top: -7px;\\n left: -4px;\\n height: 0;\\n }\\n\\n .tcn-field-set-legend-text {\\n background: #c0c0c0;\\n padding: 0;\\n font-size: 12px;\\n }\\n\\n /* ===== CHIPS ===== */\\n .tcn-chip {\\n background: #c0c0c0;\\n border-radius: 0;\\n color: #222222;\\n border: none;\\n font-size: 12px;\\n box-shadow:\\n inset -1px -1px #0a0a0a,\\n inset 1px 1px #fff,\\n inset -2px -2px grey,\\n inset 2px 2px #c0c0c0;\\n }\\n\\n /* ===== CHECKBOXES ===== */\\n .tcn-checkbox {\\n outline: none;\\n border-radius: 0;\\n background: #fff;\\n border: none;\\n background-position: center;\\n background-repeat: no-repeat;\\n box-shadow:\\n inset 1px 1px #808080,\\n inset -1px -1px #f5f5f5,\\n inset 2px 2px #c1c1c1,\\n inset -2px -2px #c0c0c0;\\n }\\n\\n .tcn-checkbox:focus {\\n outline: none;\\n }\\n\\n .tcn-checkbox[data-checked=\\\"true\\\"] {\\n background-color: #fff;\\n background-image: url(\\\"data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 24 24' fill='%23222' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20.5068 5.44714C20.8121 5.72703 20.8328 6.20146 20.5529 6.5068L9.55287 18.5068C9.41464 18.6576 9.22081 18.7454 9.01629 18.7498C8.81178 18.7543 8.61432 18.675 8.46967 18.5303L3.46967 13.5303C3.17678 13.2374 3.17678 12.7626 3.46967 12.4697C3.76256 12.1768 4.23744 12.1768 4.53033 12.4697L8.97644 16.9158L19.4471 5.49321C19.727 5.18787 20.2015 5.16724 20.5068 5.44714Z' stroke='%23222' stroke-width='2'/%3E%3C/svg%3E\\\");\\n }\\n\\n .tcn-checkbox[data-is-disabled=\\\"false\\\"]:active {\\n background-color: #fff;\\n background-image: url(\\\"data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 24 24' fill='%23222' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20.5068 5.44714C20.8121 5.72703 20.8328 6.20146 20.5529 6.5068L9.55287 18.5068C9.41464 18.6576 9.22081 18.7454 9.01629 18.7498C8.81178 18.7543 8.61432 18.675 8.46967 18.5303L3.46967 13.5303C3.17678 13.2374 3.17678 12.7626 3.46967 12.4697C3.76256 12.1768 4.23744 12.1768 4.53033 12.4697L8.97644 16.9158L19.4471 5.49321C19.727 5.18787 20.2015 5.16724 20.5068 5.44714Z' stroke='%23222' stroke-width='2'/%3E%3C/svg%3E\\\");\\n }\\n\\n .tcn-checkbox[data-is-disabled=\\\"true\\\"] {\\n background-color: #c0c0c0;\\n }\\n\\n .tcn-checkbox[data-checked=\\\"true\\\"][data-is-disabled=\\\"true\\\"] {\\n background-image: url(\\\"data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 24 24' fill='%23222' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20.5068 5.44714C20.8121 5.72703 20.8328 6.20146 20.5529 6.5068L9.55287 18.5068C9.41464 18.6576 9.22081 18.7454 9.01629 18.7498C8.81178 18.7543 8.61432 18.675 8.46967 18.5303L3.46967 13.5303C3.17678 13.2374 3.17678 12.7626 3.46967 12.4697C3.76256 12.1768 4.23744 12.1768 4.53033 12.4697L8.97644 16.9158L19.4471 5.49321C19.727 5.18787 20.2015 5.16724 20.5068 5.44714Z' stroke='%23707070' stroke-width='2'/%3E%3C/svg%3E\\\");\\n }\\n\\n /* ===== RADIO BUTTONS ===== */\\n .tcn-radio,\\n .tcn-radio[data-checked=\\\"true\\\"],\\n .tcn-radio[checked=\\\"true\\\"] {\\n width: 14px;\\n height: 14px;\\n min-width: 14px;\\n min-height: 14px;\\n border-inline-end: 1px solid #fff;\\n border-inline-start: 1px solid #222;\\n border-block-end: 1px solid #fff;\\n border-block-start: 1px solid #222;\\n }\\n\\n .tcn-radio:focus {\\n outline: none;\\n }\\n\\n .tcn-radio::before {\\n content: \\\"\\\";\\n background: transparent;\\n position: absolute;\\n border-radius: 50%;\\n inset: 0;\\n border-inline-end: 1px solid #dfdfdf;\\n border-inline-start: 1px solid #808080;\\n border-block-end: 1px solid #dfdfdf;\\n border-block-start: 1px solid #808080;\\n }\\n\\n .tcn-radio[data-checked=\\\"true\\\"]::after {\\n content: \\\"\\\";\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n width: 40%;\\n height: 40%;\\n background: #222;\\n border-radius: 50%;\\n }\\n\\n /* ===== SWITCHES ===== */\\n .tcn-switch:focus,\\n .tcn-switch:focus-visible,\\n .tcn-switch-wrapper[data-focused=\\\"true\\\"][data-is-checked=\\\"false\\\"],\\n .tcn-switch-wrapper[data-focused=\\\"true\\\"][data-is-checked=\\\"true\\\"] {\\n outline: none;\\n }\\n\\n .tcn-switch-wrapper {\\n border-radius: 0;\\n box-shadow:\\n inset -1px -1px #fff,\\n inset 1px 1px grey,\\n inset -2px -2px #dfdfdf,\\n inset 2px 2px #0a0a0a;\\n border-color: #c0c0c0;\\n background-color: #fff;\\n transition: background-color 200ms ease-out;\\n margin-top: 2px;\\n margin-bottom: 3px;\\n }\\n\\n .tcn-switch-wrapper[data-is-checked=\\\"false\\\"] > .tcn-switch-icon {\\n color: #222;\\n }\\n\\n .tcn-switch::after {\\n content: \\\"\\\";\\n cursor: pointer;\\n position: absolute;\\n top: 0;\\n transition: transform 200ms ease-out;\\n width: calc(16px * var(--scalar, 1));\\n height: calc(16px * var(--scalar, 1));\\n border-radius: 0;\\n background-color: #c0c0c0;\\n box-sizing: border-box;\\n box-shadow:\\n inset -1px -1px #0a0a0a,\\n inset 1px 1px #fff,\\n inset -2px -2px grey,\\n inset 2px 2px #c0c0c0;\\n }\\n\\n .tcn-switch-wrapper[data-is-checked=\\\"true\\\"][data-is-disabled=\\\"false\\\"] {\\n background-color: var(--accent-color);\\n border-color: #c0c0c0;\\n }\\n\\n .tcn-switch-wrapper[data-is-disabled=\\\"true\\\"] {\\n background-color: #c0c0c0;\\n border-color: #c0c0c0;\\n box-shadow:\\n inset -1px -1px #fff,\\n inset 1px 1px #999,\\n inset -2px -2px #dfdfdf,\\n inset 2px 2px #7f7f7f;\\n }\\n\\n .tcn-switch[data-is-disabled=\\\"true\\\"]:after {\\n box-shadow:\\n inset -1px -1px #666666,\\n inset 1px 1px #fff,\\n inset -2px -2px #949494,\\n inset 2px 2px #c0c0c0;\\n }\\n\\n .tcn-switch-wrapper[data-is-disabled=\\\"true\\\"] > .tcn-switch-icon {\\n color: #707070;\\n }\\n\\n /* ===== SLIDERS ===== */\\n .tcn-slider::-webkit-slider-runnable-track {\\n border-radius: 0;\\n height: 5px;\\n box-shadow:\\n inset -1px -1px #fff,\\n inset 1px 1px grey,\\n inset -2px -2px #dfdfdf,\\n inset 2px 2px #0a0a0a;\\n }\\n\\n .tcn-slider::-webkit-slider-runnable-track[data-is-disabled=\\\"true\\\"] {\\n box-shadow:\\n inset -1px -1px #fff,\\n inset 1px 1px #999,\\n inset -2px -2px #dfdfdf,\\n inset 2px 2px #717171;\\n }\\n\\n .tcn-slider::-webkit-slider-thumb {\\n outline: none;\\n width: calc(12px * var(--scalar, 1));\\n height: calc(16px * var(--scalar, 1));\\n border-radius: 0;\\n border: none;\\n background-color: #c0c0c0;\\n box-sizing: border-box;\\n box-shadow:\\n inset -1px -1px #0a0a0a,\\n inset 1px 1px #fff,\\n inset -2px -2px grey,\\n inset 2px 2px #c0c0c0;\\n }\\n\\n .tcn-slider[data-is-disabled=\\\"false\\\"]:active::-webkit-slider-thumb {\\n background-color: #c0c0c0;\\n }\\n\\n .tcn-slider[data-is-disabled=\\\"true\\\"]::-webkit-slider-thumb {\\n box-shadow:\\n inset -1px -1px #717171,\\n inset 1px 1px #fff,\\n inset -2px -2px #999,\\n inset 2px 2px #c0c0c0;\\n }\\n\\n /* Mozilla slider styles */\\n .tcn-slider::-moz-range-track {\\n border-radius: 0;\\n height: 5px;\\n border: none;\\n background: #c0c0c0;\\n box-shadow:\\n inset -1px -1px #fff,\\n inset 1px 1px grey,\\n inset -2px -2px #dfdfdf,\\n inset 2px 2px #0a0a0a;\\n }\\n\\n .tcn-slider::-moz-range-track[data-is-disabled=\\\"true\\\"] {\\n box-shadow:\\n inset -1px -1px #fff,\\n inset 1px 1px #999,\\n inset -2px -2px #dfdfdf,\\n inset 2px 2px #717171;\\n }\\n\\n .tcn-slider::-moz-range-thumb {\\n outline: none;\\n width: calc(12px * var(--scalar, 1));\\n height: calc(16px * var(--scalar, 1));\\n border-radius: 0;\\n border: none;\\n background-color: #c0c0c0;\\n box-sizing: border-box;\\n box-shadow:\\n inset -1px -1px #0a0a0a,\\n inset 1px 1px #fff,\\n inset -2px -2px grey,\\n inset 2px 2px #c0c0c0;\\n cursor: pointer;\\n }\\n\\n .tcn-slider[data-is-disabled=\\\"false\\\"]:active::-moz-range-thumb,\\n .tcn-slider[data-is-disabled=\\\"false\\\"]:focus::-moz-range-thumb {\\n background-color: #c0c0c0;\\n box-shadow:\\n inset -1px -1px #0a0a0a,\\n inset 1px 1px #fff,\\n inset -2px -2px grey,\\n inset 2px 2px #c0c0c0;\\n outline: none;\\n }\\n\\n .tcn-slider[data-is-disabled=\\\"true\\\"]::-moz-range-thumb {\\n box-shadow:\\n inset -1px -1px #717171,\\n inset 1px 1px #fff,\\n inset -2px -2px #999,\\n inset 2px 2px #c0c0c0;\\n cursor: not-allowed;\\n }\\n\\n .tcn-nav-item,\\n .tcn-nav-item[data-is-selected],\\n .tcn-menu-item {\\n border-radius: 0;\\n font-size: 12px;\\n }\\n\\n .tcn-nav-item,\\n .tcn-menu-item .tcn-body-text {\\n font-size: 12px;\\n }\\n\\n .tcn-main[data-hierarchy=\\\"primary\\\"] {\\n background: #c0c0c0;\\n padding: 0px;\\n }\\n\\n .tcn-main[data-hierarchy=\\\"secondary\\\"] {\\n background: #c0c0c0;\\n padding: 0px;\\n }\\n\\n .tcn-main[data-hierarchy=\\\"tertiary\\\"] {\\n background: #c0c0c0;\\n padding: 0px;\\n }\\n\\n .tcn-h-nav {\\n border: none;\\n }\\n\\n .tcn-h-nav:after {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n height: 0px;\\n border-bottom: 1px solid #f5f5f5;\\n border-top: 1px solid #808080;\\n border-right: 1px solid #f5f5f5;\\n border-left: 1px solid #808080;\\n }\\n\\n .tcn-footer {\\n border: none;\\n }\\n\\n .tcn-footer:after {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n right: 0;\\n top: 0;\\n height: 0px;\\n border-bottom: 1px solid #f5f5f5;\\n border-top: 1px solid #808080;\\n border-right: 1px solid #f5f5f5;\\n border-left: 1px solid #808080;\\n }\\n\\n /* ===== SECTIONS ===== */\\n\\n .tcn-section {\\n background: silver;\\n gap: 0px;\\n font-size: 12px;\\n }\\n\\n .tcn-heading {\\n background: silver;\\n padding-inline-start: 8px;\\n height: 23px;\\n z-index: 5;\\n box-shadow:\\n inset -1px -1px #0a0a0a,\\n inset 1px 1px #fff,\\n inset -2px -2px grey,\\n inset 2px 2px #c0c0c0;\\n }\\n\\n .tcn-section > .tcn-heading {\\n top: 0;\\n padding-inline-start: 8px;\\n z-index: 4;\\n }\\n\\n .tcn-section > .tcn-section > .tcn-heading {\\n top: 23px;\\n padding-inline-start: 12px;\\n z-index: 3;\\n }\\n\\n .tcn-section > .tcn-section > .tcn-section > .tcn-heading {\\n top: 46px;\\n padding-inline-start: 16px;\\n z-index: 2;\\n }\\n\\n .tcn-section > .tcn-section > .tcn-section > .tcn-section .tcn-heading {\\n top: 69px;\\n padding-inline-start: 20px;\\n z-index: 1;\\n }\\n\\n .tcn-section > :not(.tcn-heading, .tcn-section) {\\n padding-inline-start: 8px;\\n }\\n\\n .tcn-section > .tcn-section > :not(.tcn-heading, .tcn-section) {\\n padding-inline-start: 12px;\\n }\\n\\n .tcn-section > .tcn-section > .tcn-section > :not(.tcn-heading, .tcn-section) {\\n padding-inline-start: 16px;\\n }\\n\\n .tcn-section\\n > .tcn-section\\n > .tcn-section\\n > .tcn-section\\n > :not(.tcn-heading, .tcn-section) {\\n padding-inline-start: 20px;\\n }\\n\\n .tcn-section > .tcn-row {\\n background: #fff;\\n padding: 4px;\\n font-size: 12px;\\n gap: 4px;\\n }\\n\\n .tcn-caret {\\n --caret-size: 12px;\\n --caret-triangle-height: calc(var(--caret-size) / 2);\\n --caret-triangle-width: var(--caret-size);\\n --caret-triangle-base: var(--caret-triangle-height) solid transparent;\\n --caret-triangle-peak: var(--caret-triangle-width) solid #000;\\n\\n width: 0;\\n height: 0;\\n flex-grow: 0;\\n display: inline-block;\\n\\n &[data-direction=\\\"top\\\"] {\\n border-bottom: var(--caret-triangle-peak);\\n border-left: var(--caret-triangle-base);\\n border-right: var(--caret-triangle-base);\\n }\\n\\n &[data-direction=\\\"bottom\\\"] {\\n border-top: var(--caret-triangle-peak);\\n border-left: var(--caret-triangle-base);\\n border-right: var(--caret-triangle-base);\\n }\\n\\n &[data-direction=\\\"start\\\"] {\\n border-right: var(--caret-triangle-peak);\\n border-top: var(--caret-triangle-base);\\n border-bottom: var(--caret-triangle-base);\\n }\\n\\n &[data-direction=\\\"end\\\"] {\\n border-left: var(--caret-triangle-peak);\\n border-top: var(--caret-triangle-base);\\n border-bottom: var(--caret-triangle-base);\\n }\\n }\\n}\\n\\n/* ===== TABS ===== */\\n\\n.tcn-tabs-list {\\n display: flex;\\n list-style-type: none;\\n margin: 0 0 -2px;\\n padding-left: 3px;\\n position: relative;\\n text-indent: 0;\\n\\n .tcn-tab-item {\\n border-top-left-radius: 3px;\\n border-top-right-radius: 3px;\\n box-shadow:\\n inset -1px 0 #0a0a0a,\\n inset 1px 1px #dfdfdf,\\n inset -2px 0 grey,\\n inset 2px 2px #fff;\\n }\\n\\n .tcn-tab-item[data-is-selected=\\\"true\\\"] {\\n background-color: silver;\\n margin-left: -3px;\\n margin-top: -2px;\\n padding-bottom: 2px;\\n position: relative;\\n z-index: 8;\\n }\\n}\\n\"","import css from './windows_98.css?raw';\n\nexport const windows98StyleSheet = new CSSStyleSheet();\nwindows98StyleSheet.replaceSync(css);\n"],"names":["css","windows98StyleSheet"],"mappings":"AAAA,MAAAA,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCEFC,IAAsB,IAAI,cAAA;AACvCA,EAAoB,YAAYD,CAAG;"}
1
+ {"version":3,"file":"windows_98_theme.js","sources":["../../../../src/themes/themes/windows_98/windows_98.css?raw","../../../../src/themes/themes/windows_98/windows_98_theme.ts"],"sourcesContent":["export default \"@layer tcn-theme {\\n /* ===== CSS VARIABLES ===== */\\n :root {\\n --scalar: 1;\\n --gap-small: 2px;\\n --gap-medium: 4px;\\n --gap-large: 8px;\\n\\n --padding-small: 2px;\\n --padding-medium: 4px;\\n --padding-large: 8px;\\n\\n --status-color-disabled: #7f7f7f;\\n --status-color-info: #000080;\\n --status-color-warning: #000080;\\n --status-color-error: #be0000;\\n\\n --async-color-initial: #c0c0c0;\\n --async-color-pending: #000080;\\n --async-color-success: #00ff00;\\n --async-color-failed: #be0000;\\n\\n --primary-color-faint: #c0c0c0;\\n --primary-color: #000080;\\n --primary-color-strong: #000080;\\n\\n --secondary-color-faint: #c0c0c0;\\n --secondary-color: #000080;\\n --secondary-color-strong: #000080;\\n\\n --tertiary-color-faint: #c0c0c0;\\n --tertiary-color: #000080;\\n --tertiary-color-strong: #000080;\\n\\n --quaternary-color-faint: #c0c0c0;\\n --quaternary-color: #000080;\\n --quaternary-color-strong: #000080;\\n\\n --background-color-primary: #c0c0c0;\\n --background-color-secondary: #c0c0c0;\\n --background-color-tertiary: #c0c0c0;\\n --background-color-quaternary: #c0c0c0;\\n\\n --foreground-color-primary: #222222;\\n --foreground-color-secondary: #222222;\\n --foreground-color-tertiary: #222222;\\n --foreground-color-quaternary: #222222;\\n\\n --accent-color: #000080;\\n\\n --font-color: #222222;\\n --font-family: \\\"Microsoft Sans Serif\\\", \\\"Arial\\\", sans-serif;\\n --font-size: 12px;\\n }\\n\\n .tcn-theme-root {\\n font-family: var(--font-family);\\n color: var(--font-color);\\n -webkit-font-smoothing: none;\\n }\\n\\n /* ===== TYPOGRAPHY ===== */\\n .tcn-title[data-size=\\\"sm\\\"] {\\n font-size: 10px;\\n }\\n .tcn-title[data-size=\\\"md\\\"] {\\n font-size: 12px;\\n }\\n .tcn-title[data-size=\\\"lg\\\"] {\\n font-size: 14px;\\n }\\n\\n .tcn-body-text[data-size=\\\"sm\\\"] {\\n font-size: 10px;\\n }\\n .tcn-body-text[data-size=\\\"md\\\"] {\\n font-size: 11px;\\n }\\n .tcn-body-text[data-size=\\\"lg\\\"] {\\n font-size: 12px;\\n }\\n\\n .tcn-button-text {\\n position: relative;\\n opacity: 1;\\n font-size: 12px !important;\\n }\\n\\n /* ===== BUTTONS ===== */\\n /* Base button styles */\\n .tcn-base-button,\\n .tcn-button,\\n .tcn-button[data-hierarchy=\\\"primary\\\"],\\n .tcn-button[data-hierarchy=\\\"secondary\\\"],\\n .tcn-button[data-hierarchy=\\\"primary\\\"]:hover,\\n .tcn-button[data-hierarchy=\\\"secondary\\\"]:hover {\\n background: silver;\\n border: none;\\n border-radius: 0;\\n box-shadow:\\n inset -1px -1px #0a0a0a,\\n inset 1px 1px #fff,\\n inset -2px -2px grey,\\n inset 2px 2px #c0c0c0;\\n box-sizing: border-box;\\n color: #222;\\n min-height: 23px;\\n min-width: 0;\\n padding: 0 12px;\\n font-size: 12px;\\n text-decoration: none;\\n outline: none;\\n }\\n\\n /* Utility button styles — selectors mirror hierarchy/hover combos above to win specificity */\\n .tcn-button[data-is-utility=\\\"true\\\"],\\n .tcn-button[data-is-utility=\\\"true\\\"][data-hierarchy=\\\"primary\\\"],\\n .tcn-button[data-is-utility=\\\"true\\\"][data-hierarchy=\\\"secondary\\\"],\\n .tcn-button[data-is-utility=\\\"true\\\"][data-hierarchy=\\\"primary\\\"]:hover,\\n .tcn-button[data-is-utility=\\\"true\\\"][data-hierarchy=\\\"secondary\\\"]:hover {\\n padding: 2px;\\n min-width: 0;\\n min-height: 0;\\n height: auto;\\n width: auto;\\n }\\n\\n .tcn-button[data-is-utility=\\\"true\\\"][data-size=\\\"sm\\\"],\\n .tcn-button[data-is-utility=\\\"true\\\"][data-hierarchy=\\\"primary\\\"][data-size=\\\"sm\\\"]:hover,\\n .tcn-button[data-is-utility=\\\"true\\\"][data-hierarchy=\\\"secondary\\\"][data-size=\\\"sm\\\"]:hover {\\n padding: 1px;\\n }\\n\\n .tcn-button[data-is-utility=\\\"true\\\"][data-size=\\\"md\\\"],\\n .tcn-button[data-is-utility=\\\"true\\\"][data-hierarchy=\\\"primary\\\"][data-size=\\\"md\\\"]:hover,\\n .tcn-button[data-is-utility=\\\"true\\\"][data-hierarchy=\\\"secondary\\\"][data-size=\\\"md\\\"]:hover {\\n padding: 2px;\\n }\\n\\n .tcn-button[data-is-utility=\\\"true\\\"][data-size=\\\"lg\\\"],\\n .tcn-button[data-is-utility=\\\"true\\\"][data-hierarchy=\\\"primary\\\"][data-size=\\\"lg\\\"]:hover,\\n .tcn-button[data-is-utility=\\\"true\\\"][data-hierarchy=\\\"secondary\\\"][data-size=\\\"lg\\\"]:hover {\\n padding: 4px;\\n }\\n\\n .tcn-button[data-is-disabled=\\\"true\\\"] {\\n text-shadow: 1px 1px 0 #fff;\\n }\\n\\n /* Button content positioning */\\n .tcn-button[data-hierarchy=\\\"primary\\\"] > *,\\n .tcn-button[data-hierarchy=\\\"secondary\\\"] > * {\\n position: relative;\\n }\\n\\n .tcn-button[data-hierarchy=\\\"primary\\\"]:active > *,\\n .tcn-button[data-hierarchy=\\\"secondary\\\"]:active > * {\\n position: relative;\\n top: 0;\\n left: 1px;\\n }\\n\\n /* Button focus states */\\n .tcn-button[data-hierarchy=\\\"primary\\\"]:focus:not(:active)::before,\\n .tcn-button[data-hierarchy=\\\"secondary\\\"]:focus:not(:active)::before {\\n content: \\\"\\\";\\n position: absolute;\\n top: 1px;\\n bottom: 2px;\\n left: 1px;\\n right: 2px;\\n outline: 1px dotted #222;\\n outline-offset: -3px;\\n }\\n\\n /* Primary button specific styles */\\n .tcn-button[data-hierarchy=\\\"primary\\\"],\\n .tcn-button[data-hierarchy=\\\"primary\\\"]:hover {\\n box-shadow:\\n inset -2px -2px #0a0a0a,\\n inset 1px 1px #0a0a0a,\\n inset -3px -3px grey,\\n inset 2px 2px #fff,\\n inset 3px 3px #c0c0c0;\\n }\\n\\n /* Active states */\\n .tcn-button[data-hierarchy=\\\"primary\\\"]:active,\\n .tcn-button[data-hierarchy=\\\"secondary\\\"]:active {\\n background: silver;\\n box-shadow:\\n inset -1px -1px #fff,\\n inset 1px 1px #0a0a0a,\\n inset -2px -2px #c0c0c0,\\n inset 2px 2px grey;\\n color: #222;\\n border: none;\\n text-decoration: none;\\n }\\n\\n /* Focus states */\\n .tcn-button[data-hierarchy=\\\"primary\\\"]:focus,\\n .tcn-button[data-hierarchy=\\\"secondary\\\"]:focus,\\n .tcn-button[data-hierarchy=\\\"primary\\\"]:focus:not(:active),\\n .tcn-button[data-hierarchy=\\\"secondary\\\"]:focus:not(:active) {\\n background: silver;\\n border: none;\\n text-decoration: none;\\n }\\n\\n /* Tertiary button styles */\\n .tcn-button[data-hierarchy=\\\"tertiary\\\"] {\\n padding: 0 4px;\\n background: none;\\n border: none;\\n border-radius: 0;\\n box-shadow: none;\\n box-sizing: border-box;\\n color: #000080;\\n min-height: auto;\\n min-width: auto;\\n text-decoration: none;\\n }\\n\\n .tcn-button[data-hierarchy=\\\"tertiary\\\"]:hover {\\n background: none;\\n border: none;\\n border-radius: 0;\\n box-shadow: none;\\n box-sizing: border-box;\\n color: #000080;\\n min-height: auto;\\n min-width: auto;\\n text-decoration: none;\\n }\\n\\n .tcn-button[data-hierarchy=\\\"tertiary\\\"]:active {\\n background: none;\\n border: none;\\n border-radius: 0;\\n box-shadow: none;\\n box-sizing: border-box;\\n color: rgba(0, 0, 128, 0.6);\\n min-height: auto;\\n min-width: auto;\\n text-decoration: none;\\n }\\n\\n .tcn-button[data-hierarchy=\\\"tertiary\\\"]:focus,\\n .tcn-button[data-hierarchy=\\\"tertiary\\\"]:focus:not(:active) {\\n background: none;\\n outline: 1px dotted #000080;\\n outline-offset: 0;\\n border: none;\\n text-decoration: none;\\n }\\n\\n /* Disabled states */\\n .tcn-button[data-hierarchy=\\\"secondary\\\"][data-is-disabled=\\\"true\\\"] {\\n box-shadow:\\n inset -1px -1px #717171,\\n inset 1px 1px #fff,\\n inset -2px -2px #999,\\n inset 2px 2px #c0c0c0;\\n }\\n\\n .tcn-button[data-hierarchy=\\\"primary\\\"][data-is-disabled=\\\"true\\\"] {\\n box-shadow:\\n inset -2px -2px #717171,\\n inset 1px 1px #717171,\\n inset -3px -3px #999,\\n inset 2px 2px #fff,\\n inset 3px 3px #c0c0c0;\\n }\\n\\n .tcn-button[data-hierarchy=\\\"primary\\\"][data-is-disabled=\\\"true\\\"],\\n .tcn-button[data-hierarchy=\\\"secondary\\\"][data-is-disabled=\\\"true\\\"],\\n .tcn-button[data-hierarchy=\\\"tertiary\\\"][data-is-disabled=\\\"true\\\"] {\\n color: #7f7f7f;\\n cursor: not-allowed;\\n }\\n\\n /* Select button styles */\\n .tcn-button.select,\\n .tcn-button.select:hover {\\n position: relative;\\n padding-inline-end: 20px;\\n padding-inline-start: 4px;\\n }\\n\\n .tcn-button.select:dir(ltr)::after {\\n content: \\\"\\\";\\n position: absolute;\\n right: calc(4px * var(--scalar, 1));\\n top: 50%;\\n transform: translateY(-50%);\\n width: calc(12px * var(--scalar, 1));\\n height: calc(12px * var(--scalar, 1));\\n background-color: currentColor;\\n mask-image: url(\\\"data:image/svg+xml,%3Csvg width='100%25' height='100%25' viewBox='0 0 12 12' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2 4l4 4 4-4z' fill='currentColor'/%3E%3C/svg%3E\\\");\\n mask-repeat: no-repeat;\\n mask-position: center;\\n mask-size: contain;\\n pointer-events: none;\\n }\\n\\n .tcn-button.select:dir(rtl)::after {\\n content: \\\"\\\";\\n position: absolute;\\n left: calc(4px * var(--scalar, 1));\\n top: 50%;\\n transform: translateY(-50%);\\n width: calc(12px * var(--scalar, 1));\\n height: calc(12px * var(--scalar, 1));\\n background-color: #222;\\n mask-image: url(\\\"data:image/svg+xml,%3Csvg width='100%25' height='100%25' viewBox='0 0 12 12' fill='black' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2 4l4 4 4-4z' fill='black'/%3E%3C/svg%3E\\\");\\n mask-repeat: no-repeat;\\n mask-position: center;\\n mask-size: contain;\\n pointer-events: none;\\n }\\n\\n /* Select group styles */\\n .tcn-select-group .tcn-button[data-hierarchy=\\\"primary\\\"],\\n .tcn-select-group .tcn-button[data-hierarchy=\\\"primary\\\"]:hover,\\n .tcn-select-group .tcn-button[data-hierarchy=\\\"primary\\\"]:focus {\\n background-color: #000080;\\n box-shadow:\\n inset -1px -1px #0a0a0a,\\n inset 1px 1px #fff,\\n inset -2px -2px grey,\\n inset 2px 2px #c0c0c0;\\n color: #fff;\\n }\\n\\n .tcn-select-group .tcn-button:hover,\\n .tcn-select-group .tcn-button:focus,\\n .tcn-button-group .tcn-button:hover,\\n .tcn-button-group .tcn-button:focus {\\n z-index: 1;\\n }\\n\\n /* ===== INPUT FIELDS ===== */\\n .tcn-input,\\n .tcn-textarea,\\n .tcn-suggestion-list-search-input,\\n .tcn-multi-combo-box-values-container,\\n .tcn-multiselect-values-container {\\n border-radius: 0;\\n outline: none;\\n border: none;\\n background-color: #fff;\\n box-shadow:\\n inset -1px -1px #fff,\\n inset 1px 1px grey,\\n inset -2px -2px #dfdfdf,\\n inset 2px 2px #0a0a0a;\\n box-sizing: border-box;\\n padding: 3px 4px;\\n }\\n\\n .tcn-suggestion-list-search-input {\\n box-shadow:\\n inset -1px -1px #fff,\\n inset 1px 1px grey,\\n inset -2px -2px #dfdfdf,\\n inset 2px 2px #0a0a0a,\\n 0px -2px 0px 2px #c0c0c0;\\n }\\n\\n .tcn-input,\\n .tcn-textarea,\\n .tcn-suggestion-list-search-input {\\n height: 23px;\\n }\\n\\n .tcn-input:is(:focus, :focus-visible, :active, :hover),\\n .tcn-input:is(:focus, :focus-visible, :active, :hover)[data-is-disabled=\\\"false\\\"],\\n .tcn-textarea:is(:focus, :focus-visible, :active, :hover),\\n .tcn-textarea:is(:focus, :focus-visible, :active, :hover)[data-is-disabled=\\\"false\\\"] {\\n outline: none;\\n border: none;\\n }\\n\\n .tcn-input[data-is-disabled=\\\"true\\\"],\\n .tcn-textarea[data-is-disabled=\\\"true\\\"],\\n .tcn-suggestion-list-search-input[data-is-disabled=\\\"true\\\"],\\n .tcn-multiselect-values-container[data-is-disabled=\\\"true\\\"] {\\n box-shadow:\\n inset -1px -1px #fff,\\n inset 1px 1px #999,\\n inset -2px -2px #dfdfdf,\\n inset 2px 2px #717171;\\n }\\n\\n .tcn-input[data-is-disabled=\\\"true\\\"],\\n .tcn-textarea[data-is-disabled=\\\"true\\\"],\\n .tcn-suggestion-list-search-input[data-is-disabled=\\\"true\\\"],\\n .tcn-multiselect-values-container[data-is-disabled=\\\"true\\\"],\\n .tcn-input[data-is-disabled=\\\"true\\\"]::placeholder,\\n .tcn-textarea[data-is-disabled=\\\"true\\\"]::placeholder,\\n .tcn-suggestion-list-search-input[data-is-disabled=\\\"true\\\"]::placeholder,\\n .tcn-multiselect-values-container[data-is-disabled=\\\"true\\\"]::placeholder {\\n color: #7f7f7f;\\n cursor: not-allowed;\\n background-color: #c0c0c0;\\n }\\n\\n /* Select group active and focus states */\\n .tcn-select-group .tcn-button[data-hierarchy=\\\"primary\\\"]:active {\\n box-shadow:\\n inset -1px -1px #fff,\\n inset 1px 1px #0a0a0a,\\n inset -2px -2px #c0c0c0,\\n inset 2px 2px grey;\\n color: #fff;\\n }\\n\\n .tcn-select-group .tcn-button[data-hierarchy=\\\"primary\\\"]:focus:not(:active)::before {\\n outline: 1px dotted #fcfcfc;\\n }\\n\\n /* ===== SUGGESTION LISTS ===== */\\n .tcn-suggestion-list {\\n padding: 2px;\\n }\\n\\n .tcn-suggestion-item {\\n padding: 0;\\n background: transparent;\\n border: none;\\n min-height: 0;\\n }\\n\\n .tcn-suggestion-item:hover {\\n background: #000080;\\n color: #fff;\\n }\\n\\n .tcn-suggestion-item[data-is-selected=\\\"true\\\"],\\n .tcn-suggestion-item[data-is-focused=\\\"true\\\"] {\\n padding: 0;\\n background: #000080;\\n color: #fff;\\n border: none;\\n }\\n\\n .tcn-suggestion-list-search-input {\\n border-radius: 0;\\n padding: 4px;\\n height: 24px;\\n min-height: 24px;\\n }\\n\\n /* ===== LAYOUT COMPONENTS ===== */\\n\\n .tcn-title {\\n color: black;\\n }\\n\\n .header .tcn-title {\\n color: #fff;\\n }\\n /* Headers */\\n .header[data-kind=\\\"window\\\"] {\\n padding: 4px;\\n background: linear-gradient(90deg, #000080, #1084d0);\\n border: none;\\n color: #fff;\\n }\\n\\n .header[data-kind=\\\"window\\\"] > .tcn-button {\\n color: #222;\\n }\\n\\n .header[data-kind=\\\"toolbar\\\"],\\n .header[data-kind=\\\"app\\\"],\\n .header[data-kind=\\\"nav\\\"] {\\n padding: 4px 0;\\n background: #c0c0c0;\\n color: #222222;\\n border-bottom: 1px solid #808080;\\n border-top: 1px solid #f5f5f5;\\n border-right: 1px solid #808080;\\n border-left: 1px solid #f5f5f5;\\n padding-inline-start: 4px;\\n }\\n\\n .header[data-kind=\\\"panel\\\"] {\\n padding: 4px;\\n background: linear-gradient(90deg, #7c7c7c, #aeaeae);\\n border: none;\\n color: #fff;\\n }\\n\\n /* Main content areas */\\n .tcn-main[data-kind=\\\"window\\\"],\\n .tcn-main[data-kind=\\\"app\\\"],\\n .tcn-main[data-kind=\\\"nav\\\"],\\n .tcn-main[data-kind=\\\"toolbar\\\"],\\n .tcn-main[data-kind=\\\"section\\\"],\\n .tcn-main[data-kind=\\\"panel\\\"],\\n .tcn-main[data-kind=\\\"panel\\\"],\\n .tcn-main[data-kind=\\\"drawer\\\"],\\n .tcn-main[data-kind=\\\"card\\\"],\\n .tcn-panel,\\n .tcn-h-panel,\\n .tcn-v-panel,\\n .tcn-sidebar-start[data-hierarchy],\\n .tcn-sidebar-end[data-hierarchy] {\\n border-radius: 0;\\n background: #c0c0c0;\\n color: #222222;\\n border-bottom: 1px solid #808080;\\n border-top: 1px solid #f5f5f5;\\n border-right: 1px solid #808080;\\n border-left: 1px solid #f5f5f5;\\n }\\n\\n .tcn-column:after {\\n content: \\\"\\\";\\n position: absolute;\\n bottom: var(--padding);\\n top: var(--padding);\\n right: 0;\\n width: 0px;\\n border-bottom: 1px solid #f5f5f5;\\n border-top: 1px solid #808080;\\n border-right: 1px solid #f5f5f5;\\n border-left: 1px solid #808080;\\n }\\n\\n .tcn-column:last-child:after {\\n display: none;\\n }\\n\\n .tcn-main[data-kind=\\\"panel\\\"],\\n .tcn-sidebar-start[data-kind=\\\"panel\\\"],\\n .tcn-sidebar-end[data-kind=\\\"panel\\\"] {\\n padding: 0;\\n }\\n\\n /* Sidebar styles */\\n .tcn-sidebar-start[data-hierarchy=\\\"tertiary\\\"],\\n .tcn-sidebar-start[data-hierarchy=\\\"secondary\\\"] {\\n background: #c0c0c0;\\n color: #222222;\\n }\\n\\n .tcn-sidebar-start[data-kind=\\\"nav\\\"],\\n .tcn-v-nav {\\n background: #fff;\\n padding: 2px;\\n border-top: 1px solid #808080;\\n border-bottom: 1px solid #f5f5f5;\\n border-right: 1px solid #f5f5f5;\\n border-left: 1px solid #808080;\\n }\\n\\n .tcn-sidebar-end[data-hierarchy=\\\"tertiary\\\"],\\n .tcn-sidebar-end[data-hierarchy=\\\"secondary\\\"] {\\n background: #c0c0c0;\\n color: #222222;\\n }\\n\\n .tcn-sidebar-end[data-hierarchy=\\\"primary\\\"],\\n .tcn-sidebar-start[data-hierarchy=\\\"primary\\\"] {\\n background: #fff;\\n color: #222222;\\n }\\n\\n /* Footer */\\n .tcn-footer[data-kind=\\\"window\\\"] {\\n padding: 4px;\\n background: #c0c0c0;\\n box-shadow:\\n inset 1px 1px #808080,\\n inset -1px -1px #f5f5f5,\\n inset 2px 2px #c1c1c1,\\n inset -2px -2px #c0c0c0;\\n color: #222222;\\n }\\n\\n /* ===== WINDOWS AND POPOVERS ===== */\\n .tcn-window,\\n .tcn-date-picker-popover,\\n .tcn-date-picker-year-selector,\\n .tcn-menu,\\n .tcn-suggestion-list {\\n border-radius: 0;\\n background: #c0c0c0;\\n padding: 4px;\\n box-shadow:\\n inset -1px -1px #0a0a0a,\\n inset 1px 1px #f5f5f5,\\n inset -2px -2px #808080,\\n inset 2px 2px #c0c0c0;\\n }\\n\\n .tcn-suggestion-list-header {\\n background: #c0c0c0;\\n }\\n\\n /* ===== DATE PICKER COMPONENTS ===== */\\n .tcn-date-picker-box {\\n background: #c0c0c0;\\n padding: 0;\\n }\\n\\n .tcn-date-picker-date {\\n box-shadow: none !important;\\n }\\n\\n .tcn-date-picker-year-button {\\n box-shadow: none !important;\\n }\\n\\n .tcn-date-picker-header {\\n height: 20px;\\n }\\n\\n .tcn-button.tcn-phone-number-input-select,\\n .tcn-button.tcn-phone-number-input-select:hover {\\n min-width: 0;\\n }\\n\\n .tcn-phone-number-input[data-has-phone-book=\\\"false\\\"] {\\n border-end-end-radius: 0px;\\n border-start-end-radius: 0px;\\n }\\n\\n .tcn-button.tcn-phone-number-input-phone-book {\\n max-width: 23px !important;\\n max-height: 23px !important;\\n height: 23px !important;\\n min-width: 23px !important;\\n min-height: 23px !important;\\n }\\n\\n .tcn-button.tcn-date-picker-year-select {\\n padding-inline-end: 20px;\\n }\\n\\n .tcn-button.tcn-date-picker-year-select:dir(ltr)::after {\\n width: calc(12px * var(--scalar, 1));\\n height: calc(12px * var(--scalar, 1));\\n mask-image: url(\\\"data:image/svg+xml,%3Csvg width='100%25' height='100%25' viewBox='0 0 12 12' fill='black' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2 4l4 4 4-4z' fill='black'/%3E%3C/svg%3E\\\");\\n }\\n\\n .tcn-button.tcn-date-picker-year-select:dir(rtl)::after {\\n width: calc(12px * var(--scalar, 1));\\n height: calc(12px * var(--scalar, 1));\\n mask-image: url(\\\"data:image/svg+xml,%3Csvg width='100%25' height='100%25' viewBox='0 0 12 12' fill='black' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2 4l4 4 4-4z' fill='black'/%3E%3C/svg%3E\\\");\\n }\\n\\n /* ===== TIME BOX ===== */\\n .tcn-time-box {\\n border-radius: 0;\\n background: #fff;\\n border: none;\\n box-shadow:\\n inset 1px 1px #808080,\\n inset -1px -1px #f5f5f5,\\n inset 2px 2px #c1c1c1,\\n inset -2px -2px #c0c0c0;\\n }\\n\\n .tcn-time-box-title-container {\\n min-height: 25px;\\n height: 25px;\\n }\\n\\n /* ===== FORM COMPONENTS ===== */\\n .tcn-field-set {\\n padding: 8px 12px 12px 12px;\\n margin-top: 10px;\\n border-radius: 0;\\n background: #c0c0c0;\\n gap: 8px;\\n box-shadow:\\n inset 1px 1px #808080,\\n inset -1px -1px #f5f5f5,\\n inset 2px 2px #f5f5f5,\\n inset -2px -2px #808080;\\n }\\n\\n .tcn-field-set > .tcn-field-set-legend {\\n position: relative;\\n top: -7px;\\n left: -4px;\\n height: 0;\\n }\\n\\n .tcn-field-set-legend-text {\\n background: #c0c0c0;\\n padding: 0;\\n font-size: 12px;\\n }\\n\\n /* ===== CHIPS ===== */\\n .tcn-chip {\\n background: #c0c0c0;\\n border-radius: 0;\\n color: #222222;\\n border: none;\\n font-size: 12px;\\n box-shadow:\\n inset -1px -1px #0a0a0a,\\n inset 1px 1px #fff,\\n inset -2px -2px grey,\\n inset 2px 2px #c0c0c0;\\n }\\n\\n /* ===== CHECKBOXES ===== */\\n .tcn-checkbox {\\n outline: none;\\n border-radius: 0;\\n background: #fff;\\n border: none;\\n background-position: center;\\n background-repeat: no-repeat;\\n box-shadow:\\n inset 1px 1px #808080,\\n inset -1px -1px #f5f5f5,\\n inset 2px 2px #c1c1c1,\\n inset -2px -2px #c0c0c0;\\n }\\n\\n .tcn-checkbox:focus {\\n outline: none;\\n }\\n\\n .tcn-checkbox[data-checked=\\\"true\\\"] {\\n background-color: #fff;\\n background-image: url(\\\"data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 24 24' fill='%23222' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20.5068 5.44714C20.8121 5.72703 20.8328 6.20146 20.5529 6.5068L9.55287 18.5068C9.41464 18.6576 9.22081 18.7454 9.01629 18.7498C8.81178 18.7543 8.61432 18.675 8.46967 18.5303L3.46967 13.5303C3.17678 13.2374 3.17678 12.7626 3.46967 12.4697C3.76256 12.1768 4.23744 12.1768 4.53033 12.4697L8.97644 16.9158L19.4471 5.49321C19.727 5.18787 20.2015 5.16724 20.5068 5.44714Z' stroke='%23222' stroke-width='2'/%3E%3C/svg%3E\\\");\\n }\\n\\n .tcn-checkbox[data-is-disabled=\\\"false\\\"]:active {\\n background-color: #fff;\\n background-image: url(\\\"data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 24 24' fill='%23222' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20.5068 5.44714C20.8121 5.72703 20.8328 6.20146 20.5529 6.5068L9.55287 18.5068C9.41464 18.6576 9.22081 18.7454 9.01629 18.7498C8.81178 18.7543 8.61432 18.675 8.46967 18.5303L3.46967 13.5303C3.17678 13.2374 3.17678 12.7626 3.46967 12.4697C3.76256 12.1768 4.23744 12.1768 4.53033 12.4697L8.97644 16.9158L19.4471 5.49321C19.727 5.18787 20.2015 5.16724 20.5068 5.44714Z' stroke='%23222' stroke-width='2'/%3E%3C/svg%3E\\\");\\n }\\n\\n .tcn-checkbox[data-is-disabled=\\\"true\\\"] {\\n background-color: #c0c0c0;\\n }\\n\\n .tcn-checkbox[data-checked=\\\"true\\\"][data-is-disabled=\\\"true\\\"] {\\n background-image: url(\\\"data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 24 24' fill='%23222' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20.5068 5.44714C20.8121 5.72703 20.8328 6.20146 20.5529 6.5068L9.55287 18.5068C9.41464 18.6576 9.22081 18.7454 9.01629 18.7498C8.81178 18.7543 8.61432 18.675 8.46967 18.5303L3.46967 13.5303C3.17678 13.2374 3.17678 12.7626 3.46967 12.4697C3.76256 12.1768 4.23744 12.1768 4.53033 12.4697L8.97644 16.9158L19.4471 5.49321C19.727 5.18787 20.2015 5.16724 20.5068 5.44714Z' stroke='%23707070' stroke-width='2'/%3E%3C/svg%3E\\\");\\n }\\n\\n /* ===== RADIO BUTTONS ===== */\\n .tcn-radio,\\n .tcn-radio[data-checked=\\\"true\\\"],\\n .tcn-radio[checked=\\\"true\\\"] {\\n width: 14px;\\n height: 14px;\\n min-width: 14px;\\n min-height: 14px;\\n border-inline-end: 1px solid #fff;\\n border-inline-start: 1px solid #222;\\n border-block-end: 1px solid #fff;\\n border-block-start: 1px solid #222;\\n }\\n\\n .tcn-radio:focus {\\n outline: none;\\n }\\n\\n .tcn-radio::before {\\n content: \\\"\\\";\\n background: transparent;\\n position: absolute;\\n border-radius: 50%;\\n inset: 0;\\n border-inline-end: 1px solid #dfdfdf;\\n border-inline-start: 1px solid #808080;\\n border-block-end: 1px solid #dfdfdf;\\n border-block-start: 1px solid #808080;\\n }\\n\\n .tcn-radio[data-checked=\\\"true\\\"]::after {\\n content: \\\"\\\";\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n width: 40%;\\n height: 40%;\\n background: #222;\\n border-radius: 50%;\\n }\\n\\n /* ===== SWITCHES ===== */\\n .tcn-switch:focus,\\n .tcn-switch:focus-visible,\\n .tcn-switch-wrapper[data-focused=\\\"true\\\"][data-is-checked=\\\"false\\\"],\\n .tcn-switch-wrapper[data-focused=\\\"true\\\"][data-is-checked=\\\"true\\\"] {\\n outline: none;\\n }\\n\\n .tcn-switch-wrapper {\\n border-radius: 0;\\n box-shadow:\\n inset -1px -1px #fff,\\n inset 1px 1px grey,\\n inset -2px -2px #dfdfdf,\\n inset 2px 2px #0a0a0a;\\n border-color: #c0c0c0;\\n background-color: #fff;\\n transition: background-color 200ms ease-out;\\n margin-top: 2px;\\n margin-bottom: 3px;\\n }\\n\\n .tcn-switch-wrapper[data-is-checked=\\\"false\\\"] > .tcn-switch-icon {\\n color: #222;\\n }\\n\\n .tcn-switch::after {\\n content: \\\"\\\";\\n cursor: pointer;\\n position: absolute;\\n top: 0;\\n transition: transform 200ms ease-out;\\n width: calc(16px * var(--scalar, 1));\\n height: calc(16px * var(--scalar, 1));\\n border-radius: 0;\\n background-color: #c0c0c0;\\n box-sizing: border-box;\\n box-shadow:\\n inset -1px -1px #0a0a0a,\\n inset 1px 1px #fff,\\n inset -2px -2px grey,\\n inset 2px 2px #c0c0c0;\\n }\\n\\n .tcn-switch-wrapper[data-is-checked=\\\"true\\\"][data-is-disabled=\\\"false\\\"] {\\n background-color: var(--accent-color);\\n border-color: #c0c0c0;\\n }\\n\\n .tcn-switch-wrapper[data-is-disabled=\\\"true\\\"] {\\n background-color: #c0c0c0;\\n border-color: #c0c0c0;\\n box-shadow:\\n inset -1px -1px #fff,\\n inset 1px 1px #999,\\n inset -2px -2px #dfdfdf,\\n inset 2px 2px #7f7f7f;\\n }\\n\\n .tcn-switch[data-is-disabled=\\\"true\\\"]:after {\\n box-shadow:\\n inset -1px -1px #666666,\\n inset 1px 1px #fff,\\n inset -2px -2px #949494,\\n inset 2px 2px #c0c0c0;\\n }\\n\\n .tcn-switch-wrapper[data-is-disabled=\\\"true\\\"] > .tcn-switch-icon {\\n color: #707070;\\n }\\n\\n /* ===== SLIDERS ===== */\\n .tcn-slider::-webkit-slider-runnable-track {\\n border-radius: 0;\\n height: 5px;\\n box-shadow:\\n inset -1px -1px #fff,\\n inset 1px 1px grey,\\n inset -2px -2px #dfdfdf,\\n inset 2px 2px #0a0a0a;\\n }\\n\\n .tcn-slider::-webkit-slider-runnable-track[data-is-disabled=\\\"true\\\"] {\\n box-shadow:\\n inset -1px -1px #fff,\\n inset 1px 1px #999,\\n inset -2px -2px #dfdfdf,\\n inset 2px 2px #717171;\\n }\\n\\n .tcn-slider::-webkit-slider-thumb {\\n outline: none;\\n width: calc(12px * var(--scalar, 1));\\n height: calc(16px * var(--scalar, 1));\\n border-radius: 0;\\n border: none;\\n background-color: #c0c0c0;\\n box-sizing: border-box;\\n box-shadow:\\n inset -1px -1px #0a0a0a,\\n inset 1px 1px #fff,\\n inset -2px -2px grey,\\n inset 2px 2px #c0c0c0;\\n }\\n\\n .tcn-slider[data-is-disabled=\\\"false\\\"]:active::-webkit-slider-thumb {\\n background-color: #c0c0c0;\\n }\\n\\n .tcn-slider[data-is-disabled=\\\"true\\\"]::-webkit-slider-thumb {\\n box-shadow:\\n inset -1px -1px #717171,\\n inset 1px 1px #fff,\\n inset -2px -2px #999,\\n inset 2px 2px #c0c0c0;\\n }\\n\\n /* Mozilla slider styles */\\n .tcn-slider::-moz-range-track {\\n border-radius: 0;\\n height: 5px;\\n border: none;\\n background: #c0c0c0;\\n box-shadow:\\n inset -1px -1px #fff,\\n inset 1px 1px grey,\\n inset -2px -2px #dfdfdf,\\n inset 2px 2px #0a0a0a;\\n }\\n\\n .tcn-slider::-moz-range-track[data-is-disabled=\\\"true\\\"] {\\n box-shadow:\\n inset -1px -1px #fff,\\n inset 1px 1px #999,\\n inset -2px -2px #dfdfdf,\\n inset 2px 2px #717171;\\n }\\n\\n .tcn-slider::-moz-range-thumb {\\n outline: none;\\n width: calc(12px * var(--scalar, 1));\\n height: calc(16px * var(--scalar, 1));\\n border-radius: 0;\\n border: none;\\n background-color: #c0c0c0;\\n box-sizing: border-box;\\n box-shadow:\\n inset -1px -1px #0a0a0a,\\n inset 1px 1px #fff,\\n inset -2px -2px grey,\\n inset 2px 2px #c0c0c0;\\n cursor: pointer;\\n }\\n\\n .tcn-slider[data-is-disabled=\\\"false\\\"]:active::-moz-range-thumb,\\n .tcn-slider[data-is-disabled=\\\"false\\\"]:focus::-moz-range-thumb {\\n background-color: #c0c0c0;\\n box-shadow:\\n inset -1px -1px #0a0a0a,\\n inset 1px 1px #fff,\\n inset -2px -2px grey,\\n inset 2px 2px #c0c0c0;\\n outline: none;\\n }\\n\\n .tcn-slider[data-is-disabled=\\\"true\\\"]::-moz-range-thumb {\\n box-shadow:\\n inset -1px -1px #717171,\\n inset 1px 1px #fff,\\n inset -2px -2px #999,\\n inset 2px 2px #c0c0c0;\\n cursor: not-allowed;\\n }\\n\\n .tcn-nav-item,\\n .tcn-nav-item[data-is-selected],\\n .tcn-menu-item {\\n border-radius: 0;\\n font-size: 12px;\\n }\\n\\n .tcn-nav-item,\\n .tcn-menu-item .tcn-body-text {\\n font-size: 12px;\\n }\\n\\n .tcn-main[data-hierarchy=\\\"primary\\\"] {\\n background: #c0c0c0;\\n padding: 0px;\\n }\\n\\n .tcn-main[data-hierarchy=\\\"secondary\\\"] {\\n background: #c0c0c0;\\n padding: 0px;\\n }\\n\\n .tcn-main[data-hierarchy=\\\"tertiary\\\"] {\\n background: #c0c0c0;\\n padding: 0px;\\n }\\n\\n .tcn-h-nav {\\n border: none;\\n }\\n\\n .tcn-h-nav:after {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n height: 0px;\\n border-bottom: 1px solid #f5f5f5;\\n border-top: 1px solid #808080;\\n border-right: 1px solid #f5f5f5;\\n border-left: 1px solid #808080;\\n }\\n\\n .tcn-footer {\\n border: none;\\n }\\n\\n .tcn-footer:after {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n right: 0;\\n top: 0;\\n height: 0px;\\n border-bottom: 1px solid #f5f5f5;\\n border-top: 1px solid #808080;\\n border-right: 1px solid #f5f5f5;\\n border-left: 1px solid #808080;\\n }\\n\\n /* ===== SECTIONS ===== */\\n\\n .tcn-section {\\n background: silver;\\n gap: 0px;\\n font-size: 12px;\\n }\\n\\n .tcn-heading {\\n background: silver;\\n padding-inline-start: 8px;\\n height: 23px;\\n z-index: 5;\\n box-shadow:\\n inset -1px -1px #0a0a0a,\\n inset 1px 1px #fff,\\n inset -2px -2px grey,\\n inset 2px 2px #c0c0c0;\\n }\\n\\n .tcn-section > .tcn-heading {\\n top: 0;\\n padding-inline-start: 8px;\\n z-index: 4;\\n }\\n\\n .tcn-section > .tcn-section > .tcn-heading {\\n top: 23px;\\n padding-inline-start: 12px;\\n z-index: 3;\\n }\\n\\n .tcn-section > .tcn-section > .tcn-section > .tcn-heading {\\n top: 46px;\\n padding-inline-start: 16px;\\n z-index: 2;\\n }\\n\\n .tcn-section > .tcn-section > .tcn-section > .tcn-section .tcn-heading {\\n top: 69px;\\n padding-inline-start: 20px;\\n z-index: 1;\\n }\\n\\n .tcn-section > :not(.tcn-heading, .tcn-section) {\\n padding-inline-start: 8px;\\n }\\n\\n .tcn-section > .tcn-section > :not(.tcn-heading, .tcn-section) {\\n padding-inline-start: 12px;\\n }\\n\\n .tcn-section > .tcn-section > .tcn-section > :not(.tcn-heading, .tcn-section) {\\n padding-inline-start: 16px;\\n }\\n\\n .tcn-section\\n > .tcn-section\\n > .tcn-section\\n > .tcn-section\\n > :not(.tcn-heading, .tcn-section) {\\n padding-inline-start: 20px;\\n }\\n\\n .tcn-section > .tcn-row {\\n background: #fff;\\n padding: 4px;\\n font-size: 12px;\\n gap: 4px;\\n }\\n\\n .tcn-caret {\\n --caret-size: 12px;\\n --caret-triangle-height: calc(var(--caret-size) / 2);\\n --caret-triangle-width: var(--caret-size);\\n --caret-triangle-base: var(--caret-triangle-height) solid transparent;\\n --caret-triangle-peak: var(--caret-triangle-width) solid #000;\\n\\n width: 0;\\n height: 0;\\n flex-grow: 0;\\n display: inline-block;\\n\\n &[data-direction=\\\"top\\\"] {\\n border-bottom: var(--caret-triangle-peak);\\n border-left: var(--caret-triangle-base);\\n border-right: var(--caret-triangle-base);\\n }\\n\\n &[data-direction=\\\"bottom\\\"] {\\n border-top: var(--caret-triangle-peak);\\n border-left: var(--caret-triangle-base);\\n border-right: var(--caret-triangle-base);\\n }\\n\\n &[data-direction=\\\"start\\\"] {\\n border-right: var(--caret-triangle-peak);\\n border-top: var(--caret-triangle-base);\\n border-bottom: var(--caret-triangle-base);\\n }\\n\\n &[data-direction=\\\"end\\\"] {\\n border-left: var(--caret-triangle-peak);\\n border-top: var(--caret-triangle-base);\\n border-bottom: var(--caret-triangle-base);\\n }\\n }\\n}\\n\\n/* ===== TABS ===== */\\n\\n.tcn-tabs-list {\\n display: flex;\\n list-style-type: none;\\n margin: 0 0 -2px;\\n padding-left: 3px;\\n position: relative;\\n text-indent: 0;\\n\\n .tcn-tab-item {\\n border-top-left-radius: 3px;\\n border-top-right-radius: 3px;\\n box-shadow:\\n inset -1px 0 #0a0a0a,\\n inset 1px 1px #dfdfdf,\\n inset -2px 0 grey,\\n inset 2px 2px #fff;\\n }\\n\\n .tcn-tab-item[data-is-selected=\\\"true\\\"] {\\n background-color: silver;\\n margin-left: -3px;\\n margin-top: -2px;\\n padding-bottom: 2px;\\n position: relative;\\n z-index: 8;\\n }\\n}\\n\"","import css from './windows_98.css?raw';\n\nexport const windows98StyleSheet = new CSSStyleSheet();\nwindows98StyleSheet.replaceSync(css);\n"],"names":["css","windows98StyleSheet"],"mappings":"AAAA,MAAAA,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCEFC,IAAsB,IAAI,cAAA;AACvCA,EAAoB,YAAYD,CAAG;"}
@@ -0,0 +1,21 @@
1
+ import { default as React } from 'react';
2
+ import { ClassValue } from 'clsx';
3
+ /**
4
+ * Shared utility for decorator-pattern components that wrap a child via cloneElement.
5
+ *
6
+ * Consolidates the boilerplate: merges className via clsx, spreads style,
7
+ * accepts a pre-forked ref (callers must invoke useForkRef themselves),
8
+ * and optionally appends extra children (e.g. handles).
9
+ *
10
+ * Internal only — not exported from the package.
11
+ */
12
+ interface DecoratorProps {
13
+ className?: ClassValue;
14
+ style?: React.CSSProperties;
15
+ ref?: React.Ref<unknown>;
16
+ children?: React.ReactNode;
17
+ [key: string]: unknown;
18
+ }
19
+ export declare function cloneWithDecorator(child: React.ReactElement, injectedProps: DecoratorProps, extraChildren?: React.ReactNode[]): React.ReactElement;
20
+ export {};
21
+ //# sourceMappingURL=clone_with_decorator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clone_with_decorator.d.ts","sourceRoot":"","sources":["../../../src/utils/decorators/clone_with_decorator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAGvC;;;;;;;;GAQG;AAEH,UAAU,cAAc;IACtB,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACzB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,CAAC,YAAY,EACzB,aAAa,EAAE,cAAc,EAC7B,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,GAChC,KAAK,CAAC,YAAY,CAoBpB"}
@@ -0,0 +1,16 @@
1
+ import r from "react";
2
+ import { clsx as a } from "clsx";
3
+ function y(e, n, o) {
4
+ const { className: c, style: l, ref: s, children: m, ...p } = n, t = {
5
+ ...p,
6
+ className: a(e.props.className, c),
7
+ style: { ...e.props.style, ...l }
8
+ };
9
+ s !== void 0 && (t.ref = s);
10
+ const f = m ?? e.props.children;
11
+ return o && o.length > 0 ? r.cloneElement(e, t, f, ...o) : r.cloneElement(e, t);
12
+ }
13
+ export {
14
+ y as cloneWithDecorator
15
+ };
16
+ //# sourceMappingURL=clone_with_decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clone_with_decorator.js","sources":["../../../src/utils/decorators/clone_with_decorator.ts"],"sourcesContent":["import React from 'react';\nimport type { ClassValue } from 'clsx';\nimport { clsx } from 'clsx';\n\n/**\n * Shared utility for decorator-pattern components that wrap a child via cloneElement.\n *\n * Consolidates the boilerplate: merges className via clsx, spreads style,\n * accepts a pre-forked ref (callers must invoke useForkRef themselves),\n * and optionally appends extra children (e.g. handles).\n *\n * Internal only — not exported from the package.\n */\n\ninterface DecoratorProps {\n className?: ClassValue;\n style?: React.CSSProperties;\n ref?: React.Ref<unknown>;\n children?: React.ReactNode;\n [key: string]: unknown;\n}\n\nexport function cloneWithDecorator(\n child: React.ReactElement,\n injectedProps: DecoratorProps,\n extraChildren?: React.ReactNode[]\n): React.ReactElement {\n const { className, style, ref, children, ...rest } = injectedProps;\n\n const mergedProps: Record<string, unknown> = {\n ...rest,\n className: clsx(child.props.className, className),\n style: { ...child.props.style, ...(style as object) },\n };\n\n if (ref !== undefined) {\n mergedProps.ref = ref;\n }\n\n const childContent = children ?? child.props.children;\n\n if (extraChildren && extraChildren.length > 0) {\n return React.cloneElement(child, mergedProps, childContent, ...extraChildren);\n }\n\n return React.cloneElement(child, mergedProps);\n}\n"],"names":["cloneWithDecorator","child","injectedProps","extraChildren","className","style","ref","children","rest","mergedProps","clsx","childContent","React"],"mappings":";;AAsBO,SAASA,EACdC,GACAC,GACAC,GACoB;AACpB,QAAM,EAAE,WAAAC,GAAW,OAAAC,GAAO,KAAAC,GAAK,UAAAC,GAAU,GAAGC,MAASN,GAE/CO,IAAuC;AAAA,IAC3C,GAAGD;AAAA,IACH,WAAWE,EAAKT,EAAM,MAAM,WAAWG,CAAS;AAAA,IAChD,OAAO,EAAE,GAAGH,EAAM,MAAM,OAAO,GAAII,EAAA;AAAA,EAAiB;AAGtD,EAAIC,MAAQ,WACVG,EAAY,MAAMH;AAGpB,QAAMK,IAAeJ,KAAYN,EAAM,MAAM;AAE7C,SAAIE,KAAiBA,EAAc,SAAS,IACnCS,EAAM,aAAaX,GAAOQ,GAAaE,GAAc,GAAGR,CAAa,IAGvES,EAAM,aAAaX,GAAOQ,CAAW;AAC9C;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/utils/decorators/draggable/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAUhD,eAAO,MAAM,oBAAoB,wCAA6C,CAAC;AAE/E,wBAAgB,gBAAgB,IAAI,aAAa,CAWhD"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sources":["../../../../src/utils/decorators/draggable/context.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { DragContainer } from './types.js';\n\nconst defaultValue: DragContainer = {\n registerHandle: () => {},\n unregisterHandle: () => {},\n isDragging: false,\n position: { x: 0, y: 0 },\n setPosition: () => {},\n};\n\nexport const DragContainerContext = createContext<DragContainer>(defaultValue);\n\nexport function useDragContainer(): DragContainer {\n const context = useContext(DragContainerContext);\n\n if (context === defaultValue) {\n // biome-ignore lint/suspicious/noConsole: Let devs know if they're not using the context correctly\n console.warn(\n 'useDragContainer: No DragContainerContext found. Handles may will not register or trigger drag events.'\n );\n }\n\n return context;\n}\n"],"names":["defaultValue","DragContainerContext","createContext","useDragContainer","context","useContext"],"mappings":";AAGA,MAAMA,IAA8B;AAAA,EAClC,gBAAgB,MAAM;AAAA,EAAC;AAAA,EACvB,kBAAkB,MAAM;AAAA,EAAC;AAAA,EACzB,YAAY;AAAA,EACZ,UAAU,EAAE,GAAG,GAAG,GAAG,EAAA;AAAA,EACrB,aAAa,MAAM;AAAA,EAAC;AACtB,GAEaC,IAAuBC,EAA6BF,CAAY;AAEtE,SAASG,IAAkC;AAChD,QAAMC,IAAUC,EAAWJ,CAAoB;AAE/C,SAAIG,MAAYJ,KAEd,QAAQ;AAAA,IACN;AAAA,EAAA,GAIGI;AACT;"}
@@ -3,4 +3,4 @@ export interface DragHandleProps {
3
3
  children: React.ReactElement;
4
4
  }
5
5
  export declare const DragHandle: React.FC<DragHandleProps>;
6
- //# sourceMappingURL=handle.d.ts.map
6
+ //# sourceMappingURL=drag_handle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drag_handle.d.ts","sourceRoot":"","sources":["../../../../src/utils/decorators/draggable/drag_handle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAKjD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC;CAC9B;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAsBhD,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import s, { useRef as f, useEffect as u } from "react";
2
2
  import a from "clsx";
3
3
  import { useDragContainer as l } from "./context.js";
4
- import { useForkRef as m } from "../hooks/use_fork_ref.js";
4
+ import { useForkRef as m } from "../../hooks/use_fork_ref.js";
5
5
  const d = ({ children: r }) => {
6
6
  const { registerHandle: t, unregisterHandle: n } = l(), e = f(null);
7
7
  u(() => {
@@ -19,4 +19,4 @@ const d = ({ children: r }) => {
19
19
  export {
20
20
  d as DragHandle
21
21
  };
22
- //# sourceMappingURL=handle.js.map
22
+ //# sourceMappingURL=drag_handle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drag_handle.js","sources":["../../../../src/utils/decorators/draggable/drag_handle.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport clsx from 'clsx';\nimport { useDragContainer } from './context.js';\nimport { useForkRef } from '../../hooks/use_fork_ref.js';\n\nexport interface DragHandleProps {\n children: React.ReactElement;\n}\n\nexport const DragHandle: React.FC<DragHandleProps> = ({ children }) => {\n const { registerHandle, unregisterHandle } = useDragContainer();\n const ref = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n if (ref.current == null) {\n return;\n }\n registerHandle(ref);\n return () => {\n if (ref.current == null) {\n return;\n }\n unregisterHandle(ref);\n };\n }, [registerHandle, unregisterHandle]);\n\n const mergedRef = useForkRef(ref, children.props.ref);\n return React.cloneElement(children, {\n className: clsx('tcn-drag-handle', children.props.className),\n ref: mergedRef,\n });\n};\n"],"names":["DragHandle","children","registerHandle","unregisterHandle","useDragContainer","ref","useRef","useEffect","mergedRef","useForkRef","React","clsx"],"mappings":";;;;AASO,MAAMA,IAAwC,CAAC,EAAE,UAAAC,QAAe;AACrE,QAAM,EAAE,gBAAAC,GAAgB,kBAAAC,EAAA,IAAqBC,EAAA,GACvCC,IAAMC,EAA2B,IAAI;AAE3C,EAAAC,EAAU,MAAM;AACd,QAAIF,EAAI,WAAW;AAGnB,aAAAH,EAAeG,CAAG,GACX,MAAM;AACX,QAAIA,EAAI,WAAW,QAGnBF,EAAiBE,CAAG;AAAA,MACtB;AAAA,EACF,GAAG,CAACH,GAAgBC,CAAgB,CAAC;AAErC,QAAMK,IAAYC,EAAWJ,GAAKJ,EAAS,MAAM,GAAG;AACpD,SAAOS,EAAM,aAAaT,GAAU;AAAA,IAClC,WAAWU,EAAK,mBAAmBV,EAAS,MAAM,SAAS;AAAA,IAC3D,KAAKO;AAAA,EAAA,CACN;AACH;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draggable.d.ts","sourceRoot":"","sources":["../../../../src/utils/decorators/draggable/draggable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAQ3D,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA4B9C,CAAC"}
@@ -1,9 +1,9 @@
1
1
  import { jsx as e } from "react/jsx-runtime";
2
2
  import i, { useMemo as n } from "react";
3
- import { DragContainerContext as g } from "../context.js";
3
+ import { DragContainerContext as g } from "./context.js";
4
4
  import p from "clsx";
5
- import { useMakeDragContainer as l } from "../hooks/use_drag_container.js";
6
- import { s as m } from "../../../draggable.module-BgelQsuJ.js";
5
+ import { useMakeDragContainer as l } from "./use_drag_container.js";
6
+ import { s as m } from "../../../draggable.module-DFYR5n3n.js";
7
7
  const y = ({
8
8
  children: t,
9
9
  draggable: r = !0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draggable.js","sources":["../../../../src/utils/decorators/draggable/draggable.tsx"],"sourcesContent":["import React, { useMemo, type CSSProperties } from 'react';\n\nimport { DragContainerContext } from './context.js';\nimport clsx from 'clsx';\nimport { useMakeDragContainer } from './use_drag_container.js';\n\nimport styles from './draggable.module.css';\n\nexport interface DraggableProps {\n children: React.ReactElement;\n draggable?: boolean;\n}\n\nexport const Draggable: React.FC<DraggableProps> = ({\n children,\n draggable: isDraggable = true,\n}) => {\n const context = useMakeDragContainer({});\n\n const cssVariables = useMemo(\n () =>\n ({\n '--position-x': `${context.position.x}px`,\n '--position-y': `${context.position.y}px`,\n }) as CSSProperties,\n\n [context.position]\n );\n\n const clonedChildren = React.cloneElement(children, {\n className: clsx('tcn-draggable', styles.draggable, children.props.className),\n style: { ...cssVariables, ...children.props.style },\n 'data-is-dragging': context.isDragging,\n 'data-is-draggable': isDraggable,\n });\n\n return (\n <DragContainerContext.Provider value={context}>\n {clonedChildren}\n </DragContainerContext.Provider>\n );\n};\n"],"names":["Draggable","children","isDraggable","context","useMakeDragContainer","cssVariables","useMemo","clonedChildren","React","clsx","styles","DragContainerContext"],"mappings":";;;;;;AAaO,MAAMA,IAAsC,CAAC;AAAA,EAClD,UAAAC;AAAA,EACA,WAAWC,IAAc;AAC3B,MAAM;AACJ,QAAMC,IAAUC,EAAqB,EAAE,GAEjCC,IAAeC;AAAA,IACnB,OACG;AAAA,MACC,gBAAgB,GAAGH,EAAQ,SAAS,CAAC;AAAA,MACrC,gBAAgB,GAAGA,EAAQ,SAAS,CAAC;AAAA,IAAA;AAAA,IAGzC,CAACA,EAAQ,QAAQ;AAAA,EAAA,GAGbI,IAAiBC,EAAM,aAAaP,GAAU;AAAA,IAClD,WAAWQ,EAAK,iBAAiBC,EAAO,WAAWT,EAAS,MAAM,SAAS;AAAA,IAC3E,OAAO,EAAE,GAAGI,GAAc,GAAGJ,EAAS,MAAM,MAAA;AAAA,IAC5C,oBAAoBE,EAAQ;AAAA,IAC5B,qBAAqBD;AAAA,EAAA,CACtB;AAED,2BACGS,EAAqB,UAArB,EAA8B,OAAOR,GACnC,UAAAI,GACH;AAEJ;"}
@@ -0,0 +1,11 @@
1
+ export { Draggable } from './draggable.js';
2
+ export type { DraggableProps } from './draggable.js';
3
+ export { DragHandle } from './drag_handle.js';
4
+ export type { DragHandleProps } from './drag_handle.js';
5
+ export { useDragContainer, DragContainerContext } from './context.js';
6
+ export { useDraggable } from './use_draggable.js';
7
+ export type { UseDraggableOptions } from './use_draggable.js';
8
+ export { useMakeDragContainer } from './use_drag_container.js';
9
+ export type { UseDragContainerOptions } from './use_drag_container.js';
10
+ export type { DragContainer } from './types.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/decorators/draggable/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEtE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,YAAY,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAEvE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { Draggable as o } from "./draggable.js";
2
+ import { DragHandle as t } from "./drag_handle.js";
3
+ import { DragContainerContext as n, useDragContainer as x } from "./context.js";
4
+ import { useDraggable as f } from "./use_draggable.js";
5
+ import { useMakeDragContainer as p } from "./use_drag_container.js";
6
+ export {
7
+ n as DragContainerContext,
8
+ t as DragHandle,
9
+ o as Draggable,
10
+ x as useDragContainer,
11
+ f as useDraggable,
12
+ p as useMakeDragContainer
13
+ };
14
+ //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- import { Position } from '../types/dimensions.js';
1
+ import { Position } from '../../types/dimensions.js';
2
2
  export interface DragContainer {
3
3
  registerHandle: (handle: React.RefObject<HTMLElement>) => void;
4
4
  unregisterHandle: (handle: React.RefObject<HTMLElement>) => void;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/utils/decorators/draggable/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE1D,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAC/D,gBAAgB,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACjE,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,KAAK,QAAQ,CAAC,KAAK,IAAI,CAAC;CACzE"}
@@ -1,5 +1,5 @@
1
- import { Position } from '../../index.js';
2
- import { DragContainer } from '../types.js';
1
+ import { Position } from '../../types/dimensions.js';
2
+ import { DragContainer } from './types.js';
3
3
  export interface UseDragContainerOptions {
4
4
  initialPosition?: Position;
5
5
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use_drag_container.d.ts","sourceRoot":"","sources":["../../../../src/utils/decorators/draggable/use_drag_container.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,MAAM,WAAW,uBAAuB;IACtC,eAAe,CAAC,EAAE,QAAQ,CAAC;CAC5B;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,uBAAuB,GAAG,aAAa,CAoDpF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use_drag_container.js","sources":["../../../../src/utils/decorators/draggable/use_drag_container.ts"],"sourcesContent":["import { useCallback, useRef, useState } from 'react';\nimport type { Position } from '../../types/dimensions.js';\nimport type { DragContainer } from './types.js';\nimport { useDraggable } from './use_draggable.js';\n\nexport interface UseDragContainerOptions {\n initialPosition?: Position;\n}\n\nexport function useMakeDragContainer(options: UseDragContainerOptions): DragContainer {\n const [handles, setHandles] = useState<React.RefObject<HTMLElement>[]>([]);\n const positionRef = useRef<Position>(options.initialPosition ?? { x: 0, y: 0 });\n const [position, setPosition] = useState(positionRef.current);\n const [isDragging, setIsDragging] = useState(false);\n\n useDraggable({\n handles: handles,\n startDragCallback: () => {\n setIsDragging(true);\n },\n dragCallback: (deltaX, deltaY) => {\n setPosition({\n x: positionRef.current.x + deltaX,\n y: positionRef.current.y + deltaY,\n });\n },\n endDragCallback: (deltaX, deltaY) => {\n positionRef.current = {\n x: positionRef.current.x + deltaX,\n y: positionRef.current.y + deltaY,\n };\n setIsDragging(false);\n },\n });\n\n const setPositionState = useCallback(\n (value: Position | ((prev: Position) => Position)) => {\n setPosition(prev => {\n const next = typeof value === 'function' ? value(prev) : value;\n positionRef.current = next;\n return next;\n });\n },\n []\n );\n\n const registerHandle = useCallback((handle: React.RefObject<HTMLElement>) => {\n setHandles(prev => [...prev, handle]);\n }, []);\n\n const unregisterHandle = useCallback((handle: React.RefObject<HTMLElement>) => {\n setHandles(prev => prev.filter(h => h !== handle));\n }, []);\n\n return {\n registerHandle,\n unregisterHandle,\n position,\n isDragging,\n setPosition: setPositionState,\n };\n}\n"],"names":["useMakeDragContainer","options","handles","setHandles","useState","positionRef","useRef","position","setPosition","isDragging","setIsDragging","useDraggable","deltaX","deltaY","setPositionState","useCallback","value","prev","next","registerHandle","handle","unregisterHandle","h"],"mappings":";;AASO,SAASA,EAAqBC,GAAiD;AACpF,QAAM,CAACC,GAASC,CAAU,IAAIC,EAAyC,CAAA,CAAE,GACnEC,IAAcC,EAAiBL,EAAQ,mBAAmB,EAAE,GAAG,GAAG,GAAG,GAAG,GACxE,CAACM,GAAUC,CAAW,IAAIJ,EAASC,EAAY,OAAO,GACtD,CAACI,GAAYC,CAAa,IAAIN,EAAS,EAAK;AAElD,EAAAO,EAAa;AAAA,IACX,SAAAT;AAAA,IACA,mBAAmB,MAAM;AACvB,MAAAQ,EAAc,EAAI;AAAA,IACpB;AAAA,IACA,cAAc,CAACE,GAAQC,MAAW;AAChC,MAAAL,EAAY;AAAA,QACV,GAAGH,EAAY,QAAQ,IAAIO;AAAA,QAC3B,GAAGP,EAAY,QAAQ,IAAIQ;AAAA,MAAA,CAC5B;AAAA,IACH;AAAA,IACA,iBAAiB,CAACD,GAAQC,MAAW;AACnC,MAAAR,EAAY,UAAU;AAAA,QACpB,GAAGA,EAAY,QAAQ,IAAIO;AAAA,QAC3B,GAAGP,EAAY,QAAQ,IAAIQ;AAAA,MAAA,GAE7BH,EAAc,EAAK;AAAA,IACrB;AAAA,EAAA,CACD;AAED,QAAMI,IAAmBC;AAAA,IACvB,CAACC,MAAqD;AACpD,MAAAR,EAAY,CAAAS,MAAQ;AAClB,cAAMC,IAAO,OAAOF,KAAU,aAAaA,EAAMC,CAAI,IAAID;AACzD,eAAAX,EAAY,UAAUa,GACfA;AAAA,MACT,CAAC;AAAA,IACH;AAAA,IACA,CAAA;AAAA,EAAC,GAGGC,IAAiBJ,EAAY,CAACK,MAAyC;AAC3E,IAAAjB,EAAW,CAAAc,MAAQ,CAAC,GAAGA,GAAMG,CAAM,CAAC;AAAA,EACtC,GAAG,CAAA,CAAE,GAECC,IAAmBN,EAAY,CAACK,MAAyC;AAC7E,IAAAjB,EAAW,OAAQc,EAAK,OAAO,CAAAK,MAAKA,MAAMF,CAAM,CAAC;AAAA,EACnD,GAAG,CAAA,CAAE;AAEL,SAAO;AAAA,IACL,gBAAAD;AAAA,IACA,kBAAAE;AAAA,IACA,UAAAd;AAAA,IACA,YAAAE;AAAA,IACA,aAAaK;AAAA,EAAA;AAEjB;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use_draggable.d.ts","sourceRoot":"","sources":["../../../../src/utils/decorators/draggable/use_draggable.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,mBAAmB;IAClC,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvF,eAAe,EAAE,CACf,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,KACX,IAAI,CAAC;IACV,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;CACzE;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,QAiExD"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use_draggable.js","sources":["../../../../src/utils/decorators/draggable/use_draggable.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nexport interface UseDraggableOptions {\n startDragCallback: (startX: number, startY: number) => void;\n dragCallback: (deltaX: number, deltaY: number, startX: number, startY: number) => void;\n endDragCallback: (\n deltaX: number,\n deltaY: number,\n startX: number,\n startY: number\n ) => void;\n handles?: React.RefObject<HTMLElement>[] | React.RefObject<HTMLElement>;\n}\n\nexport function useDraggable(options: UseDraggableOptions) {\n const startDragCallbackRef = useRef(options.startDragCallback);\n startDragCallbackRef.current = options.startDragCallback;\n const dragCallbackRef = useRef(options.dragCallback);\n dragCallbackRef.current = options.dragCallback;\n const endDragCallbackRef = useRef(options.endDragCallback);\n endDragCallbackRef.current = options.endDragCallback;\n\n useEffect(() => {\n const handles = options.handles;\n if (handles === undefined) return;\n let startX = 0;\n let startY = 0;\n\n function drag(event: MouseEvent) {\n const deltaX = event.clientX - startX;\n const deltaY = event.clientY - startY;\n\n dragCallbackRef.current(deltaX, deltaY, startX, startY);\n }\n\n function endDrag(event: MouseEvent) {\n const deltaX = event.clientX !== undefined ? event.clientX - startX : 0;\n const deltaY = event.clientY !== undefined ? event.clientY - startY : 0;\n endDragCallbackRef.current(deltaX, deltaY, startX, startY);\n document.body.removeEventListener('mousemove', drag);\n document.body.removeEventListener('mouseup', endDrag);\n document.body.removeEventListener('mouseleave', endDrag);\n }\n\n function startDrag(event: MouseEvent) {\n startX = event.clientX;\n startY = event.clientY;\n\n startDragCallbackRef.current(startX, startY);\n\n document.body.addEventListener('mousemove', drag);\n document.body.addEventListener('mouseup', endDrag);\n document.body.addEventListener('mouseleave', endDrag);\n }\n\n if (Array.isArray(handles)) {\n for (const element of handles) {\n if (element != null) {\n element.current?.addEventListener('mousedown', startDrag);\n }\n }\n } else {\n handles?.current?.addEventListener('mousedown', startDrag);\n }\n return () => {\n if (Array.isArray(handles)) {\n for (const element of handles) {\n if (element != null) {\n element.current?.removeEventListener('mousedown', startDrag);\n }\n }\n } else {\n handles?.current?.removeEventListener('mousedown', startDrag);\n }\n document.body.removeEventListener('mousemove', drag);\n document.body.removeEventListener('mouseup', endDrag);\n document.body.removeEventListener('mouseleave', endDrag);\n };\n }, [options.handles]);\n}\n"],"names":["useDraggable","options","startDragCallbackRef","useRef","dragCallbackRef","endDragCallbackRef","useEffect","handles","startX","startY","drag","event","deltaX","deltaY","endDrag","startDrag","element"],"mappings":";AAcO,SAASA,EAAaC,GAA8B;AACzD,QAAMC,IAAuBC,EAAOF,EAAQ,iBAAiB;AAC7D,EAAAC,EAAqB,UAAUD,EAAQ;AACvC,QAAMG,IAAkBD,EAAOF,EAAQ,YAAY;AACnD,EAAAG,EAAgB,UAAUH,EAAQ;AAClC,QAAMI,IAAqBF,EAAOF,EAAQ,eAAe;AACzD,EAAAI,EAAmB,UAAUJ,EAAQ,iBAErCK,EAAU,MAAM;AACd,UAAMC,IAAUN,EAAQ;AACxB,QAAIM,MAAY,OAAW;AAC3B,QAAIC,IAAS,GACTC,IAAS;AAEb,aAASC,EAAKC,GAAmB;AAC/B,YAAMC,IAASD,EAAM,UAAUH,GACzBK,IAASF,EAAM,UAAUF;AAE/B,MAAAL,EAAgB,QAAQQ,GAAQC,GAAQL,GAAQC,CAAM;AAAA,IACxD;AAEA,aAASK,EAAQH,GAAmB;AAClC,YAAMC,IAASD,EAAM,YAAY,SAAYA,EAAM,UAAUH,IAAS,GAChEK,IAASF,EAAM,YAAY,SAAYA,EAAM,UAAUF,IAAS;AACtE,MAAAJ,EAAmB,QAAQO,GAAQC,GAAQL,GAAQC,CAAM,GACzD,SAAS,KAAK,oBAAoB,aAAaC,CAAI,GACnD,SAAS,KAAK,oBAAoB,WAAWI,CAAO,GACpD,SAAS,KAAK,oBAAoB,cAAcA,CAAO;AAAA,IACzD;AAEA,aAASC,EAAUJ,GAAmB;AACpC,MAAAH,IAASG,EAAM,SACfF,IAASE,EAAM,SAEfT,EAAqB,QAAQM,GAAQC,CAAM,GAE3C,SAAS,KAAK,iBAAiB,aAAaC,CAAI,GAChD,SAAS,KAAK,iBAAiB,WAAWI,CAAO,GACjD,SAAS,KAAK,iBAAiB,cAAcA,CAAO;AAAA,IACtD;AAEA,QAAI,MAAM,QAAQP,CAAO;AACvB,iBAAWS,KAAWT;AACpB,QACES,GAAQ,SAAS,iBAAiB,aAAaD,CAAS;AAAA;AAI5D,MAAAR,GAAS,SAAS,iBAAiB,aAAaQ,CAAS;AAE3D,WAAO,MAAM;AACX,UAAI,MAAM,QAAQR,CAAO;AACvB,mBAAWS,KAAWT;AACpB,UACES,GAAQ,SAAS,oBAAoB,aAAaD,CAAS;AAAA;AAI/D,QAAAR,GAAS,SAAS,oBAAoB,aAAaQ,CAAS;AAE9D,eAAS,KAAK,oBAAoB,aAAaL,CAAI,GACnD,SAAS,KAAK,oBAAoB,WAAWI,CAAO,GACpD,SAAS,KAAK,oBAAoB,cAAcA,CAAO;AAAA,IACzD;AAAA,EACF,GAAG,CAACb,EAAQ,OAAO,CAAC;AACtB;"}
@@ -0,0 +1,3 @@
1
+ export * from './resizable/index.js';
2
+ export * from './draggable/index.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/decorators/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { Resizable as o } from "./resizable/resizable.js";
2
+ import { ResizeHandle as a } from "./resizable/resize_handle.js";
3
+ import { useResizable as f } from "./resizable/context.js";
4
+ import { computeResizeState as i, getHandleConfig as l, resolveDirection as m, resolveHandleConfig as p } from "./resizable/handle_config.js";
5
+ import { ResizeHandleStrategy as x } from "./resizable/resize_strategy.js";
6
+ import { Draggable as C } from "./draggable/draggable.js";
7
+ import { DragHandle as u } from "./draggable/drag_handle.js";
8
+ import { DragContainerContext as H, useDragContainer as R } from "./draggable/context.js";
9
+ import { useDraggable as c } from "./draggable/use_draggable.js";
10
+ import { useMakeDragContainer as S } from "./draggable/use_drag_container.js";
11
+ export {
12
+ H as DragContainerContext,
13
+ u as DragHandle,
14
+ C as Draggable,
15
+ o as Resizable,
16
+ a as ResizeHandle,
17
+ x as ResizeHandleStrategy,
18
+ i as computeResizeState,
19
+ l as getHandleConfig,
20
+ m as resolveDirection,
21
+ p as resolveHandleConfig,
22
+ R as useDragContainer,
23
+ c as useDraggable,
24
+ S as useMakeDragContainer,
25
+ f as useResizable
26
+ };
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/utils/decorators/resizable/context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,eAAO,MAAM,gBAAgB,4DAE5B,CAAC;AAEF,eAAO,MAAM,YAAY,6BAAwD,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { createContext as e } from "react";
2
- import { makeContextHook as o } from "../hooks/make_context_hook.js";
2
+ import { makeContextHook as o } from "../../hooks/make_context_hook.js";
3
3
  const t = e(
4
4
  void 0
5
5
  ), r = o(t, "ResizableContext");
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sources":["../../../../src/utils/decorators/resizable/context.ts"],"sourcesContent":["import { createContext } from 'react';\nimport { makeContextHook } from '../../hooks/make_context_hook.js';\nimport type { ResizableContextValue } from './types.js';\n\nexport const ResizableContext = createContext<ResizableContextValue | undefined>(\n undefined\n);\n\nexport const useResizable = makeContextHook(ResizableContext, 'ResizableContext');\n"],"names":["ResizableContext","createContext","useResizable","makeContextHook"],"mappings":";;AAIO,MAAMA,IAAmBC;AAAA,EAC9B;AACF,GAEaC,IAAeC,EAAgBH,GAAkB,kBAAkB;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handle_config.d.ts","sourceRoot":"","sources":["../../../../src/utils/decorators/resizable/handle_config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AA4CpB,wBAAgB,eAAe,CAAC,QAAQ,EAAE,oBAAoB,GAAG,YAAY,CAE5E;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,iBAAiB,EAAE,MAAM,EACzB,MAAM,EAAE,OAAO,EACf,gBAAgB,EAAE,OAAO,GACxB,MAAM,CAGR;AASD;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,oBAAoB,EAC9B,iBAAiB,EAAE,MAAM,GACxB,oBAAoB,CAUtB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAK/D"}
@@ -0,0 +1,62 @@
1
+ const l = {
2
+ // Edges — single axis
3
+ start: {
4
+ horizontal: { origin: "start", invert: !0, disableDirection: !1 }
5
+ },
6
+ end: {
7
+ horizontal: { origin: "end", invert: !1, disableDirection: !1 }
8
+ },
9
+ top: {
10
+ vertical: { origin: "top", invert: !0, disableDirection: !0 }
11
+ },
12
+ bottom: {
13
+ vertical: { origin: "bottom", invert: !1, disableDirection: !0 }
14
+ },
15
+ // Corners — dual axis
16
+ "top-start": {
17
+ horizontal: { origin: "start", invert: !0, disableDirection: !1 },
18
+ vertical: { origin: "top", invert: !0, disableDirection: !0 }
19
+ },
20
+ "top-end": {
21
+ horizontal: { origin: "end", invert: !1, disableDirection: !1 },
22
+ vertical: { origin: "top", invert: !0, disableDirection: !0 }
23
+ },
24
+ "bottom-start": {
25
+ horizontal: { origin: "start", invert: !0, disableDirection: !1 },
26
+ vertical: { origin: "bottom", invert: !1, disableDirection: !0 }
27
+ },
28
+ "bottom-end": {
29
+ horizontal: { origin: "end", invert: !1, disableDirection: !1 },
30
+ vertical: { origin: "bottom", invert: !1, disableDirection: !0 }
31
+ }
32
+ };
33
+ function d(t) {
34
+ return l[t];
35
+ }
36
+ function v(t, i, e) {
37
+ return (t === "rtl" && !e ? !i : i) ? -1 : 1;
38
+ }
39
+ function a(t, i) {
40
+ return {
41
+ origin: t.origin,
42
+ direction: v(i, t.invert, t.disableDirection)
43
+ };
44
+ }
45
+ function f(t, i) {
46
+ const e = l[t];
47
+ return {
48
+ horizontal: e.horizontal ? a(e.horizontal, i) : void 0,
49
+ vertical: e.vertical ? a(e.vertical, i) : void 0
50
+ };
51
+ }
52
+ function u(t, i, e, r, s) {
53
+ const n = r * (e - i), o = t + n, c = o - s;
54
+ return { newSize: o, totalDelta: n, currentDelta: c };
55
+ }
56
+ export {
57
+ u as computeResizeState,
58
+ d as getHandleConfig,
59
+ v as resolveDirection,
60
+ f as resolveHandleConfig
61
+ };
62
+ //# sourceMappingURL=handle_config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handle_config.js","sources":["../../../../src/utils/decorators/resizable/handle_config.ts"],"sourcesContent":["import type {\n AxisConfig,\n HandleConfig,\n ResolvedHandleConfig,\n ResizeHandlePosition,\n} from './types.js';\n\n/**\n * Pure position → config lookup. No DOM, no React.\n *\n * Edges populate one axis, corners populate both.\n * The React adapter reads DOM state (getBoundingClientRect, getComputedStyle)\n * and feeds resolved values into resolveDirection / computeResizeState.\n */\n\nconst configs: Record<ResizeHandlePosition, HandleConfig> = {\n // Edges — single axis\n start: {\n horizontal: { origin: 'start', invert: true, disableDirection: false },\n },\n end: {\n horizontal: { origin: 'end', invert: false, disableDirection: false },\n },\n top: {\n vertical: { origin: 'top', invert: true, disableDirection: true },\n },\n bottom: {\n vertical: { origin: 'bottom', invert: false, disableDirection: true },\n },\n\n // Corners — dual axis\n 'top-start': {\n horizontal: { origin: 'start', invert: true, disableDirection: false },\n vertical: { origin: 'top', invert: true, disableDirection: true },\n },\n 'top-end': {\n horizontal: { origin: 'end', invert: false, disableDirection: false },\n vertical: { origin: 'top', invert: true, disableDirection: true },\n },\n 'bottom-start': {\n horizontal: { origin: 'start', invert: true, disableDirection: false },\n vertical: { origin: 'bottom', invert: false, disableDirection: true },\n },\n 'bottom-end': {\n horizontal: { origin: 'end', invert: false, disableDirection: false },\n vertical: { origin: 'bottom', invert: false, disableDirection: true },\n },\n};\n\nexport function getHandleConfig(position: ResizeHandlePosition): HandleConfig {\n return configs[position];\n}\n\n/**\n * Resolve the direction multiplier for a resize axis.\n *\n * @param languageDirection - 'ltr' or 'rtl' from getComputedStyle (passed by React adapter)\n * @param invert - whether the axis inverts the delta (e.g. dragging left-handle right shrinks)\n * @param disableDirection - if true, ignore RTL (physical positions like left/right)\n * @returns +1 or -1\n */\nexport function resolveDirection(\n languageDirection: string,\n invert: boolean,\n disableDirection: boolean\n): number {\n const finalInvert = languageDirection === 'rtl' && !disableDirection ? !invert : invert;\n return finalInvert ? -1 : 1;\n}\n\nfunction resolveAxis(axis: AxisConfig, languageDirection: string) {\n return {\n origin: axis.origin,\n direction: resolveDirection(languageDirection, axis.invert, axis.disableDirection),\n };\n}\n\n/**\n * Combines position lookup with direction resolution.\n * The caller only needs to provide the language direction from the DOM —\n * all config internals (invert, disableDirection) are resolved here.\n */\nexport function resolveHandleConfig(\n position: ResizeHandlePosition,\n languageDirection: string\n): ResolvedHandleConfig {\n const config = configs[position];\n return {\n horizontal: config.horizontal\n ? resolveAxis(config.horizontal, languageDirection)\n : undefined,\n vertical: config.vertical\n ? resolveAxis(config.vertical, languageDirection)\n : undefined,\n };\n}\n\n/**\n * Pure resize state computation. Called per-axis on each mousemove.\n *\n * @param startSize - element width/height at mousedown (from getBoundingClientRect)\n * @param startCoord - clientX/clientY at mousedown\n * @param currentCoord - clientX/clientY at this mousemove\n * @param direction - +1 or -1 from resolveDirection\n * @param previousSize - the size after the last mousemove (for currentDelta)\n */\nexport function computeResizeState(\n startSize: number,\n startCoord: number,\n currentCoord: number,\n direction: number,\n previousSize: number\n): { newSize: number; totalDelta: number; currentDelta: number } {\n const totalDelta = direction * (currentCoord - startCoord);\n const newSize = startSize + totalDelta;\n const currentDelta = newSize - previousSize;\n return { newSize, totalDelta, currentDelta };\n}\n"],"names":["configs","getHandleConfig","position","resolveDirection","languageDirection","invert","disableDirection","resolveAxis","axis","resolveHandleConfig","config","computeResizeState","startSize","startCoord","currentCoord","direction","previousSize","totalDelta","newSize","currentDelta"],"mappings":"AAeA,MAAMA,IAAsD;AAAA;AAAA,EAE1D,OAAO;AAAA,IACL,YAAY,EAAE,QAAQ,SAAS,QAAQ,IAAM,kBAAkB,GAAA;AAAA,EAAM;AAAA,EAEvE,KAAK;AAAA,IACH,YAAY,EAAE,QAAQ,OAAO,QAAQ,IAAO,kBAAkB,GAAA;AAAA,EAAM;AAAA,EAEtE,KAAK;AAAA,IACH,UAAU,EAAE,QAAQ,OAAO,QAAQ,IAAM,kBAAkB,GAAA;AAAA,EAAK;AAAA,EAElE,QAAQ;AAAA,IACN,UAAU,EAAE,QAAQ,UAAU,QAAQ,IAAO,kBAAkB,GAAA;AAAA,EAAK;AAAA;AAAA,EAItE,aAAa;AAAA,IACX,YAAY,EAAE,QAAQ,SAAS,QAAQ,IAAM,kBAAkB,GAAA;AAAA,IAC/D,UAAU,EAAE,QAAQ,OAAO,QAAQ,IAAM,kBAAkB,GAAA;AAAA,EAAK;AAAA,EAElE,WAAW;AAAA,IACT,YAAY,EAAE,QAAQ,OAAO,QAAQ,IAAO,kBAAkB,GAAA;AAAA,IAC9D,UAAU,EAAE,QAAQ,OAAO,QAAQ,IAAM,kBAAkB,GAAA;AAAA,EAAK;AAAA,EAElE,gBAAgB;AAAA,IACd,YAAY,EAAE,QAAQ,SAAS,QAAQ,IAAM,kBAAkB,GAAA;AAAA,IAC/D,UAAU,EAAE,QAAQ,UAAU,QAAQ,IAAO,kBAAkB,GAAA;AAAA,EAAK;AAAA,EAEtE,cAAc;AAAA,IACZ,YAAY,EAAE,QAAQ,OAAO,QAAQ,IAAO,kBAAkB,GAAA;AAAA,IAC9D,UAAU,EAAE,QAAQ,UAAU,QAAQ,IAAO,kBAAkB,GAAA;AAAA,EAAK;AAExE;AAEO,SAASC,EAAgBC,GAA8C;AAC5E,SAAOF,EAAQE,CAAQ;AACzB;AAUO,SAASC,EACdC,GACAC,GACAC,GACQ;AAER,UADoBF,MAAsB,SAAS,CAACE,IAAmB,CAACD,IAASA,KAC5D,KAAK;AAC5B;AAEA,SAASE,EAAYC,GAAkBJ,GAA2B;AAChE,SAAO;AAAA,IACL,QAAQI,EAAK;AAAA,IACb,WAAWL,EAAiBC,GAAmBI,EAAK,QAAQA,EAAK,gBAAgB;AAAA,EAAA;AAErF;AAOO,SAASC,EACdP,GACAE,GACsB;AACtB,QAAMM,IAASV,EAAQE,CAAQ;AAC/B,SAAO;AAAA,IACL,YAAYQ,EAAO,aACfH,EAAYG,EAAO,YAAYN,CAAiB,IAChD;AAAA,IACJ,UAAUM,EAAO,WACbH,EAAYG,EAAO,UAAUN,CAAiB,IAC9C;AAAA,EAAA;AAER;AAWO,SAASO,EACdC,GACAC,GACAC,GACAC,GACAC,GAC+D;AAC/D,QAAMC,IAAaF,KAAaD,IAAeD,IACzCK,IAAUN,IAAYK,GACtBE,IAAeD,IAAUF;AAC/B,SAAO,EAAE,SAAAE,GAAS,YAAAD,GAAY,cAAAE,EAAA;AAChC;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/decorators/resizable/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,YAAY,EACV,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,YAAY,EACZ,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EACV,oBAAoB,EACpB,YAAY,EACZ,UAAU,EACV,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,YAAY,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resizable.d.ts","sourceRoot":"","sources":["../../../../src/utils/decorators/resizable/resizable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0B,MAAM,OAAO,CAAC;AAI/C,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EAElB,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAwBD,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,iBAAiB,GAClB,EAAE,cAAc,2CA+ChB"}
@@ -1,9 +1,9 @@
1
1
  import { jsx as c } from "react/jsx-runtime";
2
2
  import o, { useRef as b, useMemo as R } from "react";
3
3
  import { clsx as g } from "clsx";
4
- import { useForkRef as x } from "../hooks/use_fork_ref.js";
4
+ import { useForkRef as x } from "../../hooks/use_fork_ref.js";
5
5
  import { ResizableContext as u } from "./context.js";
6
- import { s as v } from "../../resizable.module-I6iyBAvM.js";
6
+ import { s as v } from "../../../resizable.module-ur5FBfxo.js";
7
7
  function m(e) {
8
8
  if (!o.isValidElement(e)) return !1;
9
9
  const r = e.type;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resizable.js","sources":["../../../../src/utils/decorators/resizable/resizable.tsx"],"sourcesContent":["import React, { useMemo, useRef } from 'react';\nimport { clsx } from 'clsx';\nimport { useForkRef } from '../../hooks/use_fork_ref.js';\nimport { ResizableContext } from './context.js';\nimport type {\n OnWidthResize,\n OnWidthResizeEnd,\n OnHeightResize,\n OnHeightResizeEnd,\n ResizableContextValue,\n} from './types.js';\nimport styles from './resizable.module.css';\n\nexport interface ResizableProps {\n children: React.ReactNode;\n onWidthResize?: OnWidthResize;\n onWidthResizeEnd?: OnWidthResizeEnd;\n onHeightResize?: OnHeightResize;\n onHeightResizeEnd?: OnHeightResizeEnd;\n}\n\ninterface ResizableTargetProps {\n className?: string;\n children?: React.ReactNode;\n ref?: React.Ref<HTMLElement>;\n}\n\ntype ResizableTarget = React.ReactElement<ResizableTargetProps>;\n\nfunction isResizableTarget(child: React.ReactNode): child is ResizableTarget {\n if (!React.isValidElement(child)) return false;\n const type = child.type;\n if (typeof type === 'string') return true;\n if (typeof type === 'function' || typeof type === 'object') {\n return (type as { displayName?: string }).displayName !== 'ResizeHandle';\n }\n return false;\n}\n\nfunction isResizeHandle(child: React.ReactNode): boolean {\n return React.isValidElement(child) && !isResizableTarget(child);\n}\n\nexport function Resizable({\n children,\n onWidthResize,\n onWidthResizeEnd,\n onHeightResize,\n onHeightResizeEnd,\n}: ResizableProps) {\n const targetRef = useRef<HTMLElement | null>(null);\n\n const childArray = React.Children.toArray(children);\n const targetChild = childArray.find(isResizableTarget);\n const handleChildren = childArray.filter(isResizeHandle);\n\n const contextValue = useMemo<ResizableContextValue>(\n () => ({\n targetRef,\n onWidthResize,\n onWidthResizeEnd,\n onHeightResize,\n onHeightResizeEnd,\n }),\n [onWidthResize, onWidthResizeEnd, onHeightResize, onHeightResizeEnd]\n );\n\n const forkedRef = useForkRef(targetRef, targetChild?.props.ref);\n\n if (!targetChild) {\n return (\n <ResizableContext.Provider value={contextValue}>\n {children}\n </ResizableContext.Provider>\n );\n }\n\n const clonedTarget = React.cloneElement(\n targetChild,\n {\n ref: forkedRef,\n className: clsx(\n targetChild.props.className,\n styles['resizable-target'],\n 'tcn-resizable-target'\n ),\n },\n targetChild.props.children,\n ...handleChildren\n );\n\n return (\n <ResizableContext.Provider value={contextValue}>\n {clonedTarget}\n </ResizableContext.Provider>\n );\n}\n"],"names":["isResizableTarget","child","React","type","isResizeHandle","Resizable","children","onWidthResize","onWidthResizeEnd","onHeightResize","onHeightResizeEnd","targetRef","useRef","childArray","targetChild","handleChildren","contextValue","useMemo","forkedRef","useForkRef","ResizableContext","clonedTarget","clsx","styles"],"mappings":";;;;;;AA6BA,SAASA,EAAkBC,GAAkD;AAC3E,MAAI,CAACC,EAAM,eAAeD,CAAK,EAAG,QAAO;AACzC,QAAME,IAAOF,EAAM;AACnB,SAAI,OAAOE,KAAS,WAAiB,KACjC,OAAOA,KAAS,cAAc,OAAOA,KAAS,WACxCA,EAAkC,gBAAgB,iBAErD;AACT;AAEA,SAASC,EAAeH,GAAiC;AACvD,SAAOC,EAAM,eAAeD,CAAK,KAAK,CAACD,EAAkBC,CAAK;AAChE;AAEO,SAASI,EAAU;AAAA,EACxB,UAAAC;AAAA,EACA,eAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,mBAAAC;AACF,GAAmB;AACjB,QAAMC,IAAYC,EAA2B,IAAI,GAE3CC,IAAaX,EAAM,SAAS,QAAQI,CAAQ,GAC5CQ,IAAcD,EAAW,KAAKb,CAAiB,GAC/Ce,IAAiBF,EAAW,OAAOT,CAAc,GAEjDY,IAAeC;AAAA,IACnB,OAAO;AAAA,MACL,WAAAN;AAAA,MACA,eAAAJ;AAAA,MACA,kBAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,mBAAAC;AAAA,IAAA;AAAA,IAEF,CAACH,GAAeC,GAAkBC,GAAgBC,CAAiB;AAAA,EAAA,GAG/DQ,IAAYC,EAAWR,GAAWG,GAAa,MAAM,GAAG;AAE9D,MAAI,CAACA;AACH,6BACGM,EAAiB,UAAjB,EAA0B,OAAOJ,GAC/B,UAAAV,GACH;AAIJ,QAAMe,IAAenB,EAAM;AAAA,IACzBY;AAAA,IACA;AAAA,MACE,KAAKI;AAAA,MACL,WAAWI;AAAA,QACTR,EAAY,MAAM;AAAA,QAClBS,EAAO,kBAAkB;AAAA,QACzB;AAAA,MAAA;AAAA,IACF;AAAA,IAEFT,EAAY,MAAM;AAAA,IAClB,GAAGC;AAAA,EAAA;AAGL,2BACGK,EAAiB,UAAjB,EAA0B,OAAOJ,GAC/B,UAAAK,GACH;AAEJ;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resize_handle.d.ts","sourceRoot":"","sources":["../../../../src/utils/decorators/resizable/resize_handle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAMnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGvD,MAAM,WAAW,iBAAkB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC7E,QAAQ,EAAE,oBAAoB,CAAC;CAChC;AAED,eAAO,MAAM,YAAY,0FAqJxB,CAAC"}