@weave-framework/ui 0.2.107

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 (384) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +17 -0
  3. package/dist/autocomplete/autocomplete.d.ts +86 -0
  4. package/dist/autocomplete/autocomplete.d.ts.map +1 -0
  5. package/dist/autocomplete/autocomplete.js +263 -0
  6. package/dist/autocomplete/autocomplete.js.map +1 -0
  7. package/dist/badge/badge.d.ts +39 -0
  8. package/dist/badge/badge.d.ts.map +1 -0
  9. package/dist/badge/badge.js +59 -0
  10. package/dist/badge/badge.js.map +1 -0
  11. package/dist/bottom-sheet/bottom-sheet.d.ts +21 -0
  12. package/dist/bottom-sheet/bottom-sheet.d.ts.map +1 -0
  13. package/dist/bottom-sheet/bottom-sheet.js +82 -0
  14. package/dist/bottom-sheet/bottom-sheet.js.map +1 -0
  15. package/dist/button/button.d.ts +47 -0
  16. package/dist/button/button.d.ts.map +1 -0
  17. package/dist/button/button.js +47 -0
  18. package/dist/button/button.js.map +1 -0
  19. package/dist/button-toggle/button-toggle.d.ts +65 -0
  20. package/dist/button-toggle/button-toggle.d.ts.map +1 -0
  21. package/dist/button-toggle/button-toggle.js +127 -0
  22. package/dist/button-toggle/button-toggle.js.map +1 -0
  23. package/dist/card/card.d.ts +30 -0
  24. package/dist/card/card.d.ts.map +1 -0
  25. package/dist/card/card.js +32 -0
  26. package/dist/card/card.js.map +1 -0
  27. package/dist/cdk/bidi.d.ts +19 -0
  28. package/dist/cdk/bidi.d.ts.map +1 -0
  29. package/dist/cdk/bidi.js +32 -0
  30. package/dist/cdk/bidi.js.map +1 -0
  31. package/dist/cdk/breakpoints.d.ts +21 -0
  32. package/dist/cdk/breakpoints.d.ts.map +1 -0
  33. package/dist/cdk/breakpoints.js +39 -0
  34. package/dist/cdk/breakpoints.js.map +1 -0
  35. package/dist/cdk/clipboard.d.ts +8 -0
  36. package/dist/cdk/clipboard.d.ts.map +1 -0
  37. package/dist/cdk/clipboard.js +38 -0
  38. package/dist/cdk/clipboard.js.map +1 -0
  39. package/dist/cdk/data-source.d.ts +41 -0
  40. package/dist/cdk/data-source.d.ts.map +1 -0
  41. package/dist/cdk/data-source.js +36 -0
  42. package/dist/cdk/data-source.js.map +1 -0
  43. package/dist/cdk/date-adapter.d.ts +63 -0
  44. package/dist/cdk/date-adapter.d.ts.map +1 -0
  45. package/dist/cdk/date-adapter.js +155 -0
  46. package/dist/cdk/date-adapter.js.map +1 -0
  47. package/dist/cdk/drag-drop.d.ts +77 -0
  48. package/dist/cdk/drag-drop.d.ts.map +1 -0
  49. package/dist/cdk/drag-drop.js +268 -0
  50. package/dist/cdk/drag-drop.js.map +1 -0
  51. package/dist/cdk/focus-monitor.d.ts +27 -0
  52. package/dist/cdk/focus-monitor.d.ts.map +1 -0
  53. package/dist/cdk/focus-monitor.js +66 -0
  54. package/dist/cdk/focus-monitor.js.map +1 -0
  55. package/dist/cdk/focus-trap.d.ts +39 -0
  56. package/dist/cdk/focus-trap.d.ts.map +1 -0
  57. package/dist/cdk/focus-trap.js +127 -0
  58. package/dist/cdk/focus-trap.js.map +1 -0
  59. package/dist/cdk/index.d.ts +29 -0
  60. package/dist/cdk/index.d.ts.map +1 -0
  61. package/dist/cdk/index.js +29 -0
  62. package/dist/cdk/index.js.map +1 -0
  63. package/dist/cdk/interactivity.d.ts +19 -0
  64. package/dist/cdk/interactivity.d.ts.map +1 -0
  65. package/dist/cdk/interactivity.js +70 -0
  66. package/dist/cdk/interactivity.js.map +1 -0
  67. package/dist/cdk/key-manager.d.ts +41 -0
  68. package/dist/cdk/key-manager.d.ts.map +1 -0
  69. package/dist/cdk/key-manager.js +126 -0
  70. package/dist/cdk/key-manager.js.map +1 -0
  71. package/dist/cdk/live-announcer.d.ts +19 -0
  72. package/dist/cdk/live-announcer.d.ts.map +1 -0
  73. package/dist/cdk/live-announcer.js +48 -0
  74. package/dist/cdk/live-announcer.js.map +1 -0
  75. package/dist/cdk/observers.d.ts +17 -0
  76. package/dist/cdk/observers.d.ts.map +1 -0
  77. package/dist/cdk/observers.js +35 -0
  78. package/dist/cdk/observers.js.map +1 -0
  79. package/dist/cdk/overlay.d.ts +73 -0
  80. package/dist/cdk/overlay.d.ts.map +1 -0
  81. package/dist/cdk/overlay.js +154 -0
  82. package/dist/cdk/overlay.js.map +1 -0
  83. package/dist/cdk/platform.d.ts +22 -0
  84. package/dist/cdk/platform.d.ts.map +1 -0
  85. package/dist/cdk/platform.js +55 -0
  86. package/dist/cdk/platform.js.map +1 -0
  87. package/dist/cdk/portal.d.ts +31 -0
  88. package/dist/cdk/portal.d.ts.map +1 -0
  89. package/dist/cdk/portal.js +55 -0
  90. package/dist/cdk/portal.js.map +1 -0
  91. package/dist/cdk/positioning.d.ts +53 -0
  92. package/dist/cdk/positioning.d.ts.map +1 -0
  93. package/dist/cdk/positioning.js +140 -0
  94. package/dist/cdk/positioning.js.map +1 -0
  95. package/dist/cdk/scroll.d.ts +43 -0
  96. package/dist/cdk/scroll.d.ts.map +1 -0
  97. package/dist/cdk/scroll.js +97 -0
  98. package/dist/cdk/scroll.js.map +1 -0
  99. package/dist/cdk/selection-model.d.ts +50 -0
  100. package/dist/cdk/selection-model.d.ts.map +1 -0
  101. package/dist/cdk/selection-model.js +77 -0
  102. package/dist/cdk/selection-model.js.map +1 -0
  103. package/dist/cdk/virtual-scroll.d.ts +50 -0
  104. package/dist/cdk/virtual-scroll.d.ts.map +1 -0
  105. package/dist/cdk/virtual-scroll.js +92 -0
  106. package/dist/cdk/virtual-scroll.js.map +1 -0
  107. package/dist/checkbox/checkbox.d.ts +65 -0
  108. package/dist/checkbox/checkbox.d.ts.map +1 -0
  109. package/dist/checkbox/checkbox.js +82 -0
  110. package/dist/checkbox/checkbox.js.map +1 -0
  111. package/dist/chips/chips.d.ts +65 -0
  112. package/dist/chips/chips.d.ts.map +1 -0
  113. package/dist/chips/chips.js +119 -0
  114. package/dist/chips/chips.js.map +1 -0
  115. package/dist/context-menu/context-menu.d.ts +32 -0
  116. package/dist/context-menu/context-menu.d.ts.map +1 -0
  117. package/dist/context-menu/context-menu.js +63 -0
  118. package/dist/context-menu/context-menu.js.map +1 -0
  119. package/dist/datepicker/datepicker.d.ts +100 -0
  120. package/dist/datepicker/datepicker.d.ts.map +1 -0
  121. package/dist/datepicker/datepicker.js +440 -0
  122. package/dist/datepicker/datepicker.js.map +1 -0
  123. package/dist/dialog/dialog.d.ts +27 -0
  124. package/dist/dialog/dialog.d.ts.map +1 -0
  125. package/dist/dialog/dialog.js +47 -0
  126. package/dist/dialog/dialog.js.map +1 -0
  127. package/dist/dialog/modal-core.d.ts +42 -0
  128. package/dist/dialog/modal-core.d.ts.map +1 -0
  129. package/dist/dialog/modal-core.js +103 -0
  130. package/dist/dialog/modal-core.js.map +1 -0
  131. package/dist/expansion/expansion.d.ts +71 -0
  132. package/dist/expansion/expansion.d.ts.map +1 -0
  133. package/dist/expansion/expansion.js +127 -0
  134. package/dist/expansion/expansion.js.map +1 -0
  135. package/dist/form-field/form-field.d.ts +48 -0
  136. package/dist/form-field/form-field.d.ts.map +1 -0
  137. package/dist/form-field/form-field.js +89 -0
  138. package/dist/form-field/form-field.js.map +1 -0
  139. package/dist/grid-list/grid-list.d.ts +25 -0
  140. package/dist/grid-list/grid-list.d.ts.map +1 -0
  141. package/dist/grid-list/grid-list.js +22 -0
  142. package/dist/grid-list/grid-list.js.map +1 -0
  143. package/dist/icon/icon.d.ts +40 -0
  144. package/dist/icon/icon.d.ts.map +1 -0
  145. package/dist/icon/icon.js +99 -0
  146. package/dist/icon/icon.js.map +1 -0
  147. package/dist/icon/icons.d.ts +60 -0
  148. package/dist/icon/icons.d.ts.map +1 -0
  149. package/dist/icon/icons.js +126 -0
  150. package/dist/icon/icons.js.map +1 -0
  151. package/dist/icon/lucide-icons.d.ts +11 -0
  152. package/dist/icon/lucide-icons.d.ts.map +1 -0
  153. package/dist/icon/lucide-icons.js +65 -0
  154. package/dist/icon/lucide-icons.js.map +1 -0
  155. package/dist/index.d.ts +12 -0
  156. package/dist/index.d.ts.map +1 -0
  157. package/dist/index.js +2 -0
  158. package/dist/index.js.map +1 -0
  159. package/dist/input/input.d.ts +90 -0
  160. package/dist/input/input.d.ts.map +1 -0
  161. package/dist/input/input.js +138 -0
  162. package/dist/input/input.js.map +1 -0
  163. package/dist/internal/compose.d.ts +26 -0
  164. package/dist/internal/compose.d.ts.map +1 -0
  165. package/dist/internal/compose.js +32 -0
  166. package/dist/internal/compose.js.map +1 -0
  167. package/dist/list/list.d.ts +70 -0
  168. package/dist/list/list.d.ts.map +1 -0
  169. package/dist/list/list.js +144 -0
  170. package/dist/list/list.js.map +1 -0
  171. package/dist/menu/menu-core.d.ts +56 -0
  172. package/dist/menu/menu-core.d.ts.map +1 -0
  173. package/dist/menu/menu-core.js +122 -0
  174. package/dist/menu/menu-core.js.map +1 -0
  175. package/dist/menu/menu.d.ts +31 -0
  176. package/dist/menu/menu.d.ts.map +1 -0
  177. package/dist/menu/menu.js +68 -0
  178. package/dist/menu/menu.js.map +1 -0
  179. package/dist/menubar/menubar.d.ts +49 -0
  180. package/dist/menubar/menubar.d.ts.map +1 -0
  181. package/dist/menubar/menubar.js +162 -0
  182. package/dist/menubar/menubar.js.map +1 -0
  183. package/dist/paginator/paginator.d.ts +89 -0
  184. package/dist/paginator/paginator.d.ts.map +1 -0
  185. package/dist/paginator/paginator.js +159 -0
  186. package/dist/paginator/paginator.js.map +1 -0
  187. package/dist/popover-edit/popover-edit.d.ts +33 -0
  188. package/dist/popover-edit/popover-edit.d.ts.map +1 -0
  189. package/dist/popover-edit/popover-edit.js +107 -0
  190. package/dist/popover-edit/popover-edit.js.map +1 -0
  191. package/dist/progress-bar/progress-bar.d.ts +32 -0
  192. package/dist/progress-bar/progress-bar.d.ts.map +1 -0
  193. package/dist/progress-bar/progress-bar.js +42 -0
  194. package/dist/progress-bar/progress-bar.js.map +1 -0
  195. package/dist/progress-spinner/progress-spinner.d.ts +25 -0
  196. package/dist/progress-spinner/progress-spinner.d.ts.map +1 -0
  197. package/dist/progress-spinner/progress-spinner.js +25 -0
  198. package/dist/progress-spinner/progress-spinner.js.map +1 -0
  199. package/dist/radio/radio.d.ts +68 -0
  200. package/dist/radio/radio.d.ts.map +1 -0
  201. package/dist/radio/radio.js +81 -0
  202. package/dist/radio/radio.js.map +1 -0
  203. package/dist/ripple/ripple.d.ts +20 -0
  204. package/dist/ripple/ripple.d.ts.map +1 -0
  205. package/dist/ripple/ripple.js +41 -0
  206. package/dist/ripple/ripple.js.map +1 -0
  207. package/dist/select/select.d.ts +83 -0
  208. package/dist/select/select.d.ts.map +1 -0
  209. package/dist/select/select.js +320 -0
  210. package/dist/select/select.js.map +1 -0
  211. package/dist/shared/options.d.ts +44 -0
  212. package/dist/shared/options.d.ts.map +1 -0
  213. package/dist/shared/options.js +59 -0
  214. package/dist/shared/options.js.map +1 -0
  215. package/dist/shared/positions.d.ts +20 -0
  216. package/dist/shared/positions.d.ts.map +1 -0
  217. package/dist/shared/positions.js +27 -0
  218. package/dist/shared/positions.js.map +1 -0
  219. package/dist/sidenav/sidenav.d.ts +65 -0
  220. package/dist/sidenav/sidenav.d.ts.map +1 -0
  221. package/dist/sidenav/sidenav.js +120 -0
  222. package/dist/sidenav/sidenav.js.map +1 -0
  223. package/dist/slide-toggle/slide-toggle.d.ts +56 -0
  224. package/dist/slide-toggle/slide-toggle.d.ts.map +1 -0
  225. package/dist/slide-toggle/slide-toggle.js +62 -0
  226. package/dist/slide-toggle/slide-toggle.js.map +1 -0
  227. package/dist/slider/slider.d.ts +69 -0
  228. package/dist/slider/slider.d.ts.map +1 -0
  229. package/dist/slider/slider.js +184 -0
  230. package/dist/slider/slider.js.map +1 -0
  231. package/dist/snackbar/snackbar.d.ts +25 -0
  232. package/dist/snackbar/snackbar.d.ts.map +1 -0
  233. package/dist/snackbar/snackbar.js +135 -0
  234. package/dist/snackbar/snackbar.js.map +1 -0
  235. package/dist/stepper/stepper.d.ts +87 -0
  236. package/dist/stepper/stepper.d.ts.map +1 -0
  237. package/dist/stepper/stepper.js +142 -0
  238. package/dist/stepper/stepper.js.map +1 -0
  239. package/dist/table/table.d.ts +140 -0
  240. package/dist/table/table.d.ts.map +1 -0
  241. package/dist/table/table.js +312 -0
  242. package/dist/table/table.js.map +1 -0
  243. package/dist/tabs/tabs.d.ts +64 -0
  244. package/dist/tabs/tabs.d.ts.map +1 -0
  245. package/dist/tabs/tabs.js +126 -0
  246. package/dist/tabs/tabs.js.map +1 -0
  247. package/dist/timepicker/timepicker.d.ts +83 -0
  248. package/dist/timepicker/timepicker.d.ts.map +1 -0
  249. package/dist/timepicker/timepicker.js +303 -0
  250. package/dist/timepicker/timepicker.js.map +1 -0
  251. package/dist/toolbar/toolbar.d.ts +34 -0
  252. package/dist/toolbar/toolbar.d.ts.map +1 -0
  253. package/dist/toolbar/toolbar.js +35 -0
  254. package/dist/toolbar/toolbar.js.map +1 -0
  255. package/dist/tooltip/tooltip.d.ts +30 -0
  256. package/dist/tooltip/tooltip.d.ts.map +1 -0
  257. package/dist/tooltip/tooltip.js +109 -0
  258. package/dist/tooltip/tooltip.js.map +1 -0
  259. package/dist/tree/tree.d.ts +100 -0
  260. package/dist/tree/tree.d.ts.map +1 -0
  261. package/dist/tree/tree.js +288 -0
  262. package/dist/tree/tree.js.map +1 -0
  263. package/package.json +230 -0
  264. package/src/styles/_api.scss +384 -0
  265. package/src/styles/_helpers.scss +101 -0
  266. package/src/styles/_index.scss +12 -0
  267. package/src/styles/_ref.scss +20 -0
  268. package/src/styles/_sass-utils.scss +14 -0
  269. package/src/styles/_token-utils.scss +24 -0
  270. package/src/styles/components/autocomplete/_index.scss +10 -0
  271. package/src/styles/components/autocomplete/_styles.scss +46 -0
  272. package/src/styles/components/autocomplete/_tokens.scss +28 -0
  273. package/src/styles/components/badge/_index.scss +12 -0
  274. package/src/styles/components/badge/_styles.scss +72 -0
  275. package/src/styles/components/badge/_tokens.scss +27 -0
  276. package/src/styles/components/bottom-sheet/_index.scss +9 -0
  277. package/src/styles/components/bottom-sheet/_styles.scss +77 -0
  278. package/src/styles/components/bottom-sheet/_tokens.scss +33 -0
  279. package/src/styles/components/button/_index.scss +12 -0
  280. package/src/styles/components/button/_styles.scss +106 -0
  281. package/src/styles/components/button/_tokens.scss +36 -0
  282. package/src/styles/components/button-toggle/_index.scss +12 -0
  283. package/src/styles/components/button-toggle/_styles.scss +57 -0
  284. package/src/styles/components/button-toggle/_tokens.scss +25 -0
  285. package/src/styles/components/card/_index.scss +15 -0
  286. package/src/styles/components/card/_styles.scss +68 -0
  287. package/src/styles/components/card/_tokens.scss +26 -0
  288. package/src/styles/components/checkbox/_index.scss +13 -0
  289. package/src/styles/components/checkbox/_styles.scss +108 -0
  290. package/src/styles/components/checkbox/_tokens.scss +25 -0
  291. package/src/styles/components/chips/_index.scss +12 -0
  292. package/src/styles/components/chips/_styles.scss +83 -0
  293. package/src/styles/components/chips/_tokens.scss +28 -0
  294. package/src/styles/components/datepicker/_index.scss +10 -0
  295. package/src/styles/components/datepicker/_styles.scss +203 -0
  296. package/src/styles/components/datepicker/_tokens.scss +50 -0
  297. package/src/styles/components/dialog/_index.scss +9 -0
  298. package/src/styles/components/dialog/_styles.scss +54 -0
  299. package/src/styles/components/dialog/_tokens.scss +29 -0
  300. package/src/styles/components/divider/_index.scss +8 -0
  301. package/src/styles/components/divider/_styles.scss +18 -0
  302. package/src/styles/components/divider/_tokens.scss +12 -0
  303. package/src/styles/components/expansion/_index.scss +14 -0
  304. package/src/styles/components/expansion/_styles.scss +128 -0
  305. package/src/styles/components/expansion/_tokens.scss +32 -0
  306. package/src/styles/components/form-field/_index.scss +13 -0
  307. package/src/styles/components/form-field/_styles.scss +39 -0
  308. package/src/styles/components/form-field/_tokens.scss +19 -0
  309. package/src/styles/components/grid-list/_index.scss +12 -0
  310. package/src/styles/components/grid-list/_styles.scss +31 -0
  311. package/src/styles/components/grid-list/_tokens.scss +18 -0
  312. package/src/styles/components/icon/_index.scss +8 -0
  313. package/src/styles/components/icon/_styles.scss +18 -0
  314. package/src/styles/components/icon/_tokens.scss +8 -0
  315. package/src/styles/components/input/_index.scss +13 -0
  316. package/src/styles/components/input/_styles.scss +111 -0
  317. package/src/styles/components/input/_tokens.scss +21 -0
  318. package/src/styles/components/list/_index.scss +12 -0
  319. package/src/styles/components/list/_styles.scss +87 -0
  320. package/src/styles/components/list/_tokens.scss +31 -0
  321. package/src/styles/components/menu/_index.scss +9 -0
  322. package/src/styles/components/menu/_styles.scss +60 -0
  323. package/src/styles/components/menu/_tokens.scss +33 -0
  324. package/src/styles/components/menubar/_index.scss +9 -0
  325. package/src/styles/components/menubar/_styles.scss +41 -0
  326. package/src/styles/components/menubar/_tokens.scss +25 -0
  327. package/src/styles/components/overlay/_index.scss +8 -0
  328. package/src/styles/components/overlay/_styles.scss +25 -0
  329. package/src/styles/components/overlay/_tokens.scss +21 -0
  330. package/src/styles/components/paginator/_index.scss +14 -0
  331. package/src/styles/components/paginator/_styles.scss +77 -0
  332. package/src/styles/components/paginator/_tokens.scss +28 -0
  333. package/src/styles/components/popover-edit/_index.scss +9 -0
  334. package/src/styles/components/popover-edit/_styles.scss +31 -0
  335. package/src/styles/components/popover-edit/_tokens.scss +21 -0
  336. package/src/styles/components/progress-bar/_index.scss +11 -0
  337. package/src/styles/components/progress-bar/_styles.scss +39 -0
  338. package/src/styles/components/progress-bar/_tokens.scss +17 -0
  339. package/src/styles/components/progress-spinner/_index.scss +11 -0
  340. package/src/styles/components/progress-spinner/_styles.scss +26 -0
  341. package/src/styles/components/progress-spinner/_tokens.scss +15 -0
  342. package/src/styles/components/radio/_index.scss +14 -0
  343. package/src/styles/components/radio/_styles.scss +92 -0
  344. package/src/styles/components/radio/_tokens.scss +24 -0
  345. package/src/styles/components/ripple/_index.scss +8 -0
  346. package/src/styles/components/ripple/_styles.scss +20 -0
  347. package/src/styles/components/ripple/_tokens.scss +12 -0
  348. package/src/styles/components/select/_index.scss +9 -0
  349. package/src/styles/components/select/_styles.scss +120 -0
  350. package/src/styles/components/select/_tokens.scss +35 -0
  351. package/src/styles/components/sidenav/_index.scss +14 -0
  352. package/src/styles/components/sidenav/_styles.scss +105 -0
  353. package/src/styles/components/sidenav/_tokens.scss +24 -0
  354. package/src/styles/components/slide-toggle/_index.scss +13 -0
  355. package/src/styles/components/slide-toggle/_styles.scss +86 -0
  356. package/src/styles/components/slide-toggle/_tokens.scss +24 -0
  357. package/src/styles/components/slider/_index.scss +13 -0
  358. package/src/styles/components/slider/_styles.scss +77 -0
  359. package/src/styles/components/slider/_tokens.scss +21 -0
  360. package/src/styles/components/snackbar/_index.scss +8 -0
  361. package/src/styles/components/snackbar/_styles.scss +59 -0
  362. package/src/styles/components/snackbar/_tokens.scss +28 -0
  363. package/src/styles/components/stepper/_index.scss +14 -0
  364. package/src/styles/components/stepper/_styles.scss +129 -0
  365. package/src/styles/components/stepper/_tokens.scss +44 -0
  366. package/src/styles/components/table/_index.scss +14 -0
  367. package/src/styles/components/table/_styles.scss +202 -0
  368. package/src/styles/components/table/_tokens.scss +47 -0
  369. package/src/styles/components/tabs/_index.scss +13 -0
  370. package/src/styles/components/tabs/_styles.scss +76 -0
  371. package/src/styles/components/tabs/_tokens.scss +28 -0
  372. package/src/styles/components/timepicker/_index.scss +9 -0
  373. package/src/styles/components/timepicker/_styles.scss +136 -0
  374. package/src/styles/components/timepicker/_tokens.scss +46 -0
  375. package/src/styles/components/toolbar/_index.scss +12 -0
  376. package/src/styles/components/toolbar/_styles.scss +41 -0
  377. package/src/styles/components/toolbar/_tokens.scss +17 -0
  378. package/src/styles/components/tooltip/_index.scss +8 -0
  379. package/src/styles/components/tooltip/_styles.scss +29 -0
  380. package/src/styles/components/tooltip/_tokens.scss +22 -0
  381. package/src/styles/components/tree/_index.scss +13 -0
  382. package/src/styles/components/tree/_styles.scss +99 -0
  383. package/src/styles/components/tree/_tokens.scss +38 -0
  384. package/src/styles/theme/_defaults.scss +50 -0
@@ -0,0 +1,59 @@
1
+ // snackbar — styles() mixin (class rules). An inverted (ink) bar anchored to the bottom
2
+ // edge by the CDK overlay; its own margin insets it from the edge, and it slides up on open.
3
+ // The action is an accent-tinted text button. Forwarded by ./_index.scss.
4
+
5
+ @mixin styles() {
6
+ .weave-snackbar {
7
+ display: flex;
8
+ align-items: center;
9
+ gap: var(--weave-snackbar-gap);
10
+ box-sizing: border-box;
11
+ margin: var(--weave-snackbar-offset);
12
+ max-width: var(--weave-snackbar-max-width);
13
+ padding: var(--weave-snackbar-padding-y) var(--weave-snackbar-padding-x);
14
+ border-radius: var(--weave-snackbar-radius);
15
+ background: var(--weave-snackbar-background);
16
+ color: var(--weave-snackbar-text);
17
+ font-size: var(--weave-snackbar-font-size);
18
+ font-weight: var(--weave-snackbar-weight);
19
+ line-height: var(--weave-snackbar-line-height);
20
+ animation: weave-snackbar-in var(--weave-snackbar-duration) ease;
21
+ }
22
+
23
+ @keyframes weave-snackbar-in {
24
+ from {
25
+ transform: translateY(12px);
26
+ opacity: 0;
27
+ }
28
+
29
+ to {
30
+ transform: translateY(0);
31
+ opacity: 1;
32
+ }
33
+ }
34
+
35
+ .weave-snackbar__message {
36
+ flex: 1 1 auto;
37
+ }
38
+
39
+ // Accent text button (no fill) — reads on the dark bar.
40
+ .weave-snackbar__action {
41
+ flex: 0 0 auto;
42
+ border: 0;
43
+ background: transparent;
44
+ padding: 0;
45
+ margin-inline-start: var(--weave-snackbar-gap);
46
+ color: var(--weave-snackbar-action);
47
+ font: inherit;
48
+ font-weight: var(--weave-snackbar-action-weight);
49
+ text-transform: uppercase;
50
+ letter-spacing: 0.04em;
51
+ cursor: pointer;
52
+ }
53
+
54
+ .weave-snackbar__action:hover,
55
+ .weave-snackbar__action:focus-visible {
56
+ text-decoration: underline;
57
+ outline: none;
58
+ }
59
+ }
@@ -0,0 +1,28 @@
1
+ // snackbar — design tokens (schema). A bottom-anchored toast bar (inverted: ink bg, canvas
2
+ // text) with an accent action. Forwarded by ./_index.scss.
3
+ @use '../../ref' as ref;
4
+
5
+ $tokens: (
6
+ color: (
7
+ background: ref.ref('color.ink'),
8
+ text: ref.ref('color.surface'),
9
+ // The action reads as an accent-tinted label on the dark bar.
10
+ action: ref.ref('color.accent'),
11
+ ),
12
+ size: (
13
+ // Inset from the viewport edges (the CDK anchors the bar to the bottom edge).
14
+ offset: 24px,
15
+ max-width: 480px,
16
+ radius: ref.ref('shape.radius'),
17
+ padding-y: 12px,
18
+ padding-x: 16px,
19
+ gap: 12px,
20
+ duration: ref.ref('motion.fast'),
21
+ ),
22
+ typography: (
23
+ font-size: 13px,
24
+ weight: 500,
25
+ line-height: 1.4,
26
+ action-weight: 600,
27
+ ),
28
+ );
@@ -0,0 +1,14 @@
1
+ // Stepper — a horizontal step-through (wizard). Behavior lives in stepper.ts (current-
2
+ // index nav + linear gating + Back/Continue; panel contents appended on mount); this is
3
+ // the visual.
4
+ //
5
+ // Numbered circles joined by connector lines, state via the NATIVE data attr (not a class):
6
+ // [data-state=done] = accent fill + a pure-CSS ✓ (number hidden), [data-state=active] =
7
+ // accent fill + number, [data-state=upcoming] = bordered circle. Connectors go accent once
8
+ // the step before them is done.
9
+ //
10
+ // Barrel — forwards the split partials ($tokens + the styles() mixin). Add another
11
+ // concern as its own file and @forward it here.
12
+
13
+ @forward 'tokens';
14
+ @forward 'styles';
@@ -0,0 +1,129 @@
1
+ // stepper — styles() mixin (class rules). Forwarded by ./_index.scss.
2
+ @use '../../helpers' as helpers;
3
+
4
+ @mixin styles() {
5
+ .weave-stepper {
6
+ display: flex;
7
+ flex-direction: column;
8
+
9
+ @content;
10
+ }
11
+
12
+ .weave-stepper__header {
13
+ display: flex;
14
+ align-items: center;
15
+ }
16
+
17
+ .weave-stepper__step {
18
+ display: inline-flex;
19
+ align-items: center;
20
+ gap: var(--weave-stepper-gap);
21
+ min-width: 0; // allow the step to shrink so the header never overflows its box
22
+ padding: var(--weave-stepper-step-padding-y) var(--weave-stepper-step-padding-x);
23
+ border: 0;
24
+ background: transparent;
25
+ color: var(--weave-stepper-label);
26
+ font-family: inherit;
27
+ font-size: var(--weave-stepper-label-size);
28
+ font-weight: var(--weave-stepper-label-weight);
29
+ cursor: pointer;
30
+ }
31
+
32
+ // The label shrinks + ellipsizes rather than pushing the header past its width.
33
+ .weave-stepper__label {
34
+ min-width: 0;
35
+ overflow: hidden;
36
+ white-space: nowrap;
37
+ text-overflow: ellipsis;
38
+ }
39
+
40
+ .weave-stepper__step[aria-disabled='true'] {
41
+ cursor: not-allowed;
42
+ }
43
+
44
+ .weave-stepper__step:focus-visible {
45
+ @include helpers.focus-ring;
46
+ border-radius: var(--weave-stepper-radius);
47
+ }
48
+
49
+ // The numbered circle.
50
+ .weave-stepper__indicator {
51
+ flex: none;
52
+ display: inline-flex;
53
+ align-items: center;
54
+ justify-content: center;
55
+ box-sizing: border-box;
56
+ width: var(--weave-stepper-indicator-size);
57
+ height: var(--weave-stepper-indicator-size);
58
+ border-radius: 50%;
59
+ font-size: var(--weave-stepper-number-size);
60
+ line-height: 1;
61
+ transition:
62
+ background var(--weave-stepper-duration) ease,
63
+ border-color var(--weave-stepper-duration) ease,
64
+ color var(--weave-stepper-duration) ease;
65
+ }
66
+
67
+ // Upcoming — a bordered circle with a sub number + sub label (state via data-state).
68
+ .weave-stepper__step[data-state='upcoming'] .weave-stepper__indicator {
69
+ border: var(--weave-stepper-border-width) solid var(--weave-stepper-upcoming-border);
70
+ color: var(--weave-stepper-upcoming-text);
71
+ }
72
+
73
+ .weave-stepper__step[data-state='upcoming'] .weave-stepper__label {
74
+ color: var(--weave-stepper-label-upcoming);
75
+ }
76
+
77
+ // Active — accent fill with the number.
78
+ .weave-stepper__step[data-state='active'] .weave-stepper__indicator {
79
+ background: var(--weave-stepper-active-background);
80
+ color: var(--weave-stepper-on-accent);
81
+ }
82
+
83
+ // Done — accent fill with a ✓ (pure CSS rotated-L check), number hidden.
84
+ .weave-stepper__step[data-state='done'] .weave-stepper__indicator {
85
+ background: var(--weave-stepper-done-background);
86
+ }
87
+
88
+ .weave-stepper__step[data-state='done'] .weave-stepper__number {
89
+ display: none;
90
+ }
91
+
92
+ .weave-stepper__step[data-state='done'] .weave-stepper__indicator::after {
93
+ @include helpers.checkmark(var(--weave-stepper-on-accent), var(--weave-stepper-check-width), var(--weave-stepper-check-height));
94
+ margin-top: -2px;
95
+ transform: rotate(45deg);
96
+ }
97
+
98
+ .weave-stepper__optional {
99
+ margin-inline-start: var(--weave-stepper-optional-gap);
100
+ color: var(--weave-stepper-optional);
101
+ font-size: var(--weave-stepper-optional-size);
102
+ }
103
+
104
+ // Connector line between steps; accent once the step before it is done.
105
+ .weave-stepper__connector {
106
+ flex: 1 1 auto;
107
+ min-width: var(--weave-stepper-connector-min);
108
+ height: var(--weave-stepper-connector-height);
109
+ margin: 0 var(--weave-stepper-connector-gap);
110
+ background: var(--weave-stepper-connector);
111
+ transition: background var(--weave-stepper-duration) ease;
112
+ }
113
+
114
+ .weave-stepper__connector[data-state='done'] {
115
+ background: var(--weave-stepper-connector-done);
116
+ }
117
+
118
+ .weave-stepper__panel {
119
+ padding: var(--weave-stepper-panel-padding-y) 0;
120
+ }
121
+
122
+ // The Back / Continue actions ARE the Button component (composed, not re-created) —
123
+ // this is just their layout row.
124
+ .weave-stepper__actions {
125
+ display: flex;
126
+ gap: var(--weave-stepper-actions-gap);
127
+ margin-top: var(--weave-stepper-actions-margin);
128
+ }
129
+ }
@@ -0,0 +1,44 @@
1
+ // stepper — design tokens (schema). Forwarded by ./_index.scss.
2
+ @use '../../ref' as ref;
3
+
4
+ $tokens: (
5
+ color: (
6
+ // Numbered circles: done = accent + ✓, active = accent + number, upcoming = bordered.
7
+ active-background: ref.ref('color.accent'),
8
+ done-background: ref.ref('color.accent'),
9
+ // On-accent glyphs are a fixed light literal (accent is dark in both Light + Dim,
10
+ // so surface/canvas wouldn't contrast) — same call as Badge.
11
+ on-accent: #fff,
12
+ upcoming-border: ref.ref('color.line'),
13
+ upcoming-text: ref.ref('color.sub'),
14
+ label: ref.ref('color.ink'),
15
+ label-upcoming: ref.ref('color.sub'),
16
+ optional: ref.ref('color.sub'),
17
+ connector: ref.ref('color.line'),
18
+ connector-done: ref.ref('color.accent'),
19
+ ),
20
+ size: (
21
+ indicator-size: 26px,
22
+ gap: 10px,
23
+ step-padding-x: 2px,
24
+ step-padding-y: 4px,
25
+ connector-min: 24px,
26
+ connector-height: 1px,
27
+ connector-gap: 6px,
28
+ border-width: 1.5px,
29
+ radius: ref.ref('shape.radius'),
30
+ check-width: 5px,
31
+ check-height: 9px,
32
+ optional-gap: 6px,
33
+ panel-padding-y: 16px,
34
+ actions-gap: 8px,
35
+ actions-margin: 8px,
36
+ duration: ref.ref('motion.fast'),
37
+ ),
38
+ typography: (
39
+ label-size: 13px,
40
+ label-weight: 500,
41
+ number-size: 12px,
42
+ optional-size: 10px,
43
+ ),
44
+ );
@@ -0,0 +1,14 @@
1
+ // Table — the flagship data surface. Behavior lives in table.ts (column-def + DataSource,
2
+ // sortable headers, row selection + expansion via CDK SelectionModel, sticky header +
3
+ // columns, show/hide, built imperatively so cells can be arbitrary nodes and the body stays
4
+ // reactive); this is the visual.
5
+ //
6
+ // A real <table> in an overflow-x:auto scroll box. Hairline separators (box-shadow, no
7
+ // borders/shadow), compact rows, sticky header (+ optional sticky columns), and accent as a
8
+ // mark: the sort arrow, the 2px accent left border + accentSoft tint on a selected row.
9
+ // State rides native attrs — [aria-sort] / [aria-selected] / [aria-expanded].
10
+ //
11
+ // Barrel — forwards the split partials ($tokens + the styles() mixin).
12
+
13
+ @forward 'tokens';
14
+ @forward 'styles';
@@ -0,0 +1,202 @@
1
+ // table — styles() mixin (class rules). A real <table> (thead/tbody/th/td) in an
2
+ // overflow-x:auto scroll box: sticky header, optional sticky columns, hairline row
3
+ // separators (box-shadow, no borders/shadow), compact rows, accent-as-a-mark selection.
4
+ // State rides native attrs ([aria-sort], [aria-selected], [aria-expanded]). Forwarded by
5
+ // ./_index.scss.
6
+ @use '../../helpers' as helpers;
7
+
8
+ @mixin styles() {
9
+ .weave-table {
10
+ position: relative;
11
+ }
12
+
13
+ // Scroll box for BOTH axes — a max-height (set inline) makes the body scroll vertically
14
+ // while the sticky header stays pinned to the box top; wide tables scroll horizontally
15
+ // while sticky columns stay pinned to the box edge.
16
+ .weave-table__scroll {
17
+ overflow: auto;
18
+ }
19
+
20
+ .weave-table__grid {
21
+ width: 100%;
22
+ border-collapse: separate;
23
+ border-spacing: 0;
24
+ background: var(--weave-table-surface);
25
+ color: var(--weave-table-text);
26
+ font-size: var(--weave-table-font-size);
27
+ line-height: var(--weave-table-line-height);
28
+ }
29
+
30
+ /* ── header ── */
31
+ .weave-table__header-cell {
32
+ position: sticky;
33
+ top: 0;
34
+ z-index: 2; // above scrolling body rows
35
+ box-sizing: border-box;
36
+ padding: var(--weave-table-cell-padding-y) var(--weave-table-cell-padding-x);
37
+ background: var(--weave-table-surface);
38
+ color: var(--weave-table-header-text);
39
+ font-size: var(--weave-table-header-size);
40
+ font-weight: var(--weave-table-header-weight);
41
+ text-align: left;
42
+ white-space: nowrap;
43
+ box-shadow: 0 1px 0 var(--weave-table-line); // hairline under the header
44
+ }
45
+
46
+ .weave-table__sort {
47
+ display: inline-flex;
48
+ align-items: center;
49
+ gap: var(--weave-table-control-gap);
50
+ padding: 0;
51
+ border: 0;
52
+ background: transparent;
53
+ color: inherit;
54
+ font: inherit;
55
+ cursor: pointer;
56
+ }
57
+
58
+ .weave-table__sort--active {
59
+ color: var(--weave-table-header-active);
60
+ }
61
+
62
+ .weave-table__sort:focus-visible {
63
+ @include helpers.focus-ring;
64
+ }
65
+
66
+ .weave-table__sort-arrow {
67
+ display: inline-block;
68
+ width: 1em;
69
+ color: var(--weave-table-sort-arrow);
70
+ font-size: var(--weave-table-arrow-size);
71
+ }
72
+
73
+ /* ── column resize grip (drag the header edge; keyboard on the separator) ── */
74
+ .weave-table__resize-grip {
75
+ position: absolute;
76
+ top: 0;
77
+ right: 0;
78
+ height: 100%;
79
+ width: var(--weave-table-resize-grip-width);
80
+ cursor: col-resize;
81
+ touch-action: none;
82
+ user-select: none;
83
+ outline: none;
84
+ }
85
+
86
+ // The visible hairline, centred in the (wider) hit area.
87
+ .weave-table__resize-grip::after {
88
+ content: '';
89
+ position: absolute;
90
+ top: 20%;
91
+ right: calc((var(--weave-table-resize-grip-width) - var(--weave-table-resize-grip-line)) / 2);
92
+ width: var(--weave-table-resize-grip-line);
93
+ height: 60%;
94
+ background: var(--weave-table-resize-grip);
95
+ }
96
+
97
+ .weave-table__resize-grip:hover::after,
98
+ .weave-table__resize-grip:focus-visible::after {
99
+ background: var(--weave-table-resize-grip-active);
100
+ }
101
+
102
+ // While dragging a grip, suppress text selection across the table.
103
+ .weave-table[data-resizing] {
104
+ user-select: none;
105
+ }
106
+
107
+ /* ── body cells ── */
108
+ .weave-table__cell {
109
+ box-sizing: border-box;
110
+ padding: var(--weave-table-cell-padding-y) var(--weave-table-cell-padding-x);
111
+ box-shadow: 0 -1px 0 var(--weave-table-line); // hairline row separator (no borders)
112
+ white-space: nowrap;
113
+ }
114
+
115
+ .weave-table__cell--numeric {
116
+ text-align: right;
117
+ font-variant-numeric: tabular-nums;
118
+ }
119
+
120
+ // Reserve the selected-row marker space on the first cell so selecting never shifts content.
121
+ .weave-table__row > .weave-table__cell:first-child {
122
+ border-left: var(--weave-table-marker-width) solid transparent;
123
+ }
124
+
125
+ .weave-table__row:hover > .weave-table__cell {
126
+ background: var(--weave-table-row-hover);
127
+ }
128
+
129
+ /* ── selection (native ARIA attr, no state class) ── */
130
+ .weave-table__row[aria-selected='true'] > .weave-table__cell {
131
+ background: var(--weave-table-selected-background);
132
+ }
133
+
134
+ .weave-table__row[aria-selected='true'] > .weave-table__cell:first-child {
135
+ border-left-color: var(--weave-table-selected-marker);
136
+ }
137
+
138
+ /* ── sticky columns (offsets set inline by JS) ── */
139
+ .weave-table__cell--sticky-start,
140
+ .weave-table__cell--sticky-end {
141
+ position: sticky;
142
+ z-index: 1;
143
+ background: var(--weave-table-surface);
144
+ }
145
+
146
+ // Sticky header cells sit at the corner — above both the sticky body columns and rows.
147
+ .weave-table__header-cell.weave-table__cell--sticky-start,
148
+ .weave-table__header-cell.weave-table__cell--sticky-end {
149
+ z-index: 3;
150
+ }
151
+
152
+ /* ── select + expand utility columns (fixed width set inline for sticky offsets) ── */
153
+ .weave-table__select,
154
+ .weave-table__expand {
155
+ text-align: center;
156
+ white-space: nowrap;
157
+ }
158
+
159
+ // Selection checkboxes = the real Checkbox component's class contract (.weave-checkbox),
160
+ // rendered by table.ts — one checkbox visual across the library (no table-local restyle).
161
+
162
+ .weave-table__expand-toggle {
163
+ display: inline-flex;
164
+ align-items: center;
165
+ justify-content: center;
166
+ width: var(--weave-table-expand-size);
167
+ height: var(--weave-table-expand-size);
168
+ padding: 0;
169
+ border: 0;
170
+ background: transparent;
171
+ color: var(--weave-table-header-text);
172
+ cursor: pointer;
173
+ }
174
+
175
+ .weave-table__expand-toggle::before {
176
+ content: '\25B8'; // ▸
177
+ display: inline-block;
178
+ transition: transform var(--weave-table-duration) ease;
179
+ }
180
+
181
+ .weave-table__expand-toggle[aria-expanded='true']::before {
182
+ transform: rotate(90deg);
183
+ }
184
+
185
+ .weave-table__expand-toggle:focus-visible {
186
+ @include helpers.focus-ring;
187
+ }
188
+
189
+ /* ── expanded detail row ── */
190
+ .weave-table__detail-cell {
191
+ padding: var(--weave-table-cell-padding-y) var(--weave-table-cell-padding-x);
192
+ background: var(--weave-table-detail-background);
193
+ box-shadow: 0 -1px 0 var(--weave-table-line);
194
+ }
195
+
196
+ /* ── empty state ── */
197
+ .weave-table__empty {
198
+ padding: var(--weave-table-cell-padding-y) var(--weave-table-cell-padding-x);
199
+ color: var(--weave-table-empty-text);
200
+ text-align: center;
201
+ }
202
+ }
@@ -0,0 +1,47 @@
1
+ // table — design tokens (schema). A hairline data grid: compact rows, sticky header,
2
+ // accent-as-a-mark (sort arrow, 2px selected-row border, accentSoft tint). Forwarded by
3
+ // ./_index.scss.
4
+ @use '../../ref' as ref;
5
+
6
+ $tokens: (
7
+ color: (
8
+ surface: ref.ref('color.surface'),
9
+ text: ref.ref('color.ink'),
10
+ // Header labels: inactive = sub, active sort column = ink.
11
+ header-text: ref.ref('color.sub'),
12
+ header-active: ref.ref('color.ink'),
13
+ line: ref.ref('color.line'),
14
+ row-hover: ref.ref('color.field'),
15
+ // accentSoft = accent at ~12% alpha (the selected-row tint from the design).
16
+ selected-background: color-mix(in srgb, ref.ref('color.accent') 12%, transparent),
17
+ selected-marker: ref.ref('color.accent'),
18
+ sort-arrow: ref.ref('color.accent'),
19
+ // Column-resize grip: a hairline that lights to accent on hover/drag.
20
+ resize-grip: ref.ref('color.line'),
21
+ resize-grip-active: ref.ref('color.accent'),
22
+ // Expanded-row detail panel — a subtle inset tint.
23
+ detail-background: ref.ref('color.field'),
24
+ empty-text: ref.ref('color.sub'),
25
+ ),
26
+ size: (
27
+ row-height: 34px,
28
+ cell-padding-x: 12px,
29
+ cell-padding-y: 7px,
30
+ // 2px accent left border on the selected row (reserved transparent otherwise).
31
+ marker-width: 2px,
32
+ // Gap between a sort header's label and its arrow.
33
+ control-gap: 6px,
34
+ expand-size: 20px,
35
+ // Column-resize grip: hit area + the visible hairline width.
36
+ resize-grip-width: 9px,
37
+ resize-grip-line: 2px,
38
+ duration: ref.ref('motion.fast'),
39
+ ),
40
+ typography: (
41
+ font-size: 13px,
42
+ header-size: 12px,
43
+ header-weight: 600,
44
+ line-height: 1.3,
45
+ arrow-size: 12px,
46
+ ),
47
+ );
@@ -0,0 +1,13 @@
1
+ // Tabs — a tablist with one visible panel. Behavior lives in tabs.ts (active-index
2
+ // selection + roving tabindex via the CDK listKeyManager; panel contents appended on
3
+ // mount); this is the visual.
4
+ //
5
+ // A row of role=tab buttons over a 1px rule; the active tab inks and shows a 5px accent
6
+ // square before its label (the Weave mark — no sliding underline). State rides the NATIVE
7
+ // ARIA attr, not a class: [aria-selected=true] inks the tab + paints the ::before square.
8
+ //
9
+ // Barrel — forwards the split partials ($tokens + the styles() mixin). Add another
10
+ // concern as its own file and @forward it here.
11
+
12
+ @forward 'tokens';
13
+ @forward 'styles';
@@ -0,0 +1,76 @@
1
+ // tabs — styles() mixin (class rules). Forwarded by ./_index.scss.
2
+ @use '../../helpers' as helpers;
3
+
4
+ @mixin styles() {
5
+ .weave-tabs {
6
+ display: flex;
7
+ flex-direction: column;
8
+
9
+ @content;
10
+ }
11
+
12
+ // The tab row sits over a 1px rule (design).
13
+ .weave-tabs__list {
14
+ display: flex;
15
+ border-bottom: 1px solid var(--weave-tabs-line);
16
+ }
17
+
18
+ .weave-tabs__tab {
19
+ display: inline-flex;
20
+ align-items: center;
21
+ gap: var(--weave-tabs-gap);
22
+ padding: var(--weave-tabs-tab-padding-y) var(--weave-tabs-tab-padding-x);
23
+ border: 0;
24
+ background: transparent;
25
+ color: var(--weave-tabs-text);
26
+ font-family: inherit;
27
+ font-size: var(--weave-tabs-tab-size);
28
+ font-weight: var(--weave-tabs-tab-weight);
29
+ cursor: pointer;
30
+ transition: color var(--weave-tabs-duration) ease;
31
+ }
32
+
33
+ // The 5px accent square before the label — space is always reserved (transparent when
34
+ // inactive) so activating a tab never shifts its label. State via the ARIA attr.
35
+ .weave-tabs__tab::before {
36
+ content: '';
37
+ flex: none;
38
+ width: var(--weave-tabs-marker-size);
39
+ height: var(--weave-tabs-marker-size);
40
+ background: transparent;
41
+ }
42
+
43
+ .weave-tabs__tab[aria-selected='true'] {
44
+ color: var(--weave-tabs-text-active);
45
+ }
46
+
47
+ .weave-tabs__tab[aria-selected='true']::before {
48
+ background: var(--weave-tabs-marker);
49
+ }
50
+
51
+ // Subtle hover — ink the label (enabled tabs only).
52
+ .weave-tabs__tab:not([aria-disabled='true']):hover {
53
+ color: var(--weave-tabs-text-active);
54
+ }
55
+
56
+ .weave-tabs__tab[aria-disabled='true'] {
57
+ color: var(--weave-tabs-disabled-text);
58
+ cursor: not-allowed;
59
+ }
60
+
61
+ .weave-tabs__tab:focus-visible {
62
+ @include helpers.focus-ring;
63
+ outline-offset: -2px; // ring sits inside the tab
64
+ }
65
+
66
+ .weave-tabs__panel {
67
+ padding: var(--weave-tabs-panel-padding-y) 0;
68
+ color: var(--weave-tabs-panel-text);
69
+ font-size: var(--weave-tabs-panel-size);
70
+ }
71
+
72
+ .weave-tabs__panel:focus-visible {
73
+ @include helpers.focus-ring;
74
+ outline-offset: -2px;
75
+ }
76
+ }
@@ -0,0 +1,28 @@
1
+ // tabs — design tokens (schema). Forwarded by ./_index.scss.
2
+ @use '../../ref' as ref;
3
+
4
+ $tokens: (
5
+ color: (
6
+ // Inactive tabs are sub; the active tab inks + gets an accent square mark
7
+ // (design: "active = ink + 5px accent square before label; no sliding underline").
8
+ text: ref.ref('color.sub'),
9
+ text-active: ref.ref('color.ink'),
10
+ marker: ref.ref('color.accent'),
11
+ line: ref.ref('color.line'),
12
+ disabled-text: ref.ref('color.sub'),
13
+ panel-text: ref.ref('color.ink'),
14
+ ),
15
+ size: (
16
+ tab-padding-x: 14px,
17
+ tab-padding-y: 10px,
18
+ marker-size: 5px,
19
+ gap: 7px,
20
+ panel-padding-y: 14px,
21
+ duration: ref.ref('motion.fast'),
22
+ ),
23
+ typography: (
24
+ tab-size: 13px,
25
+ tab-weight: 500,
26
+ panel-size: 13px,
27
+ ),
28
+ );
@@ -0,0 +1,9 @@
1
+ // Timepicker — a time field + spinner popover. Behavior lives in timepicker.ts (trigger field
2
+ // + a CDK-overlay panel of hour/minute spinbutton columns + an AM/PM toggle, per the design);
3
+ // this is the visual. An underline trigger field (shared field-underline helper, like
4
+ // Datepicker) with a clock icon; the panel reuses the overlay-panel chrome.
5
+ //
6
+ // Barrel — forwards the split partials ($tokens + the styles() mixin).
7
+
8
+ @forward 'tokens';
9
+ @forward 'styles';