@techsio/ui-kit 0.10.1 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. package/dist/atoms/{figma/badge.figma.js → badge.figma.js} +1 -1
  2. package/dist/atoms/{figma/button.figma.js → button.figma.js} +1 -1
  3. package/dist/atoms/{figma/checkbox.figma.js → checkbox.figma.js} +1 -1
  4. package/dist/atoms/{figma/icon.figma.js → icon.figma.js} +1 -1
  5. package/dist/atoms/{figma/image.figma.js → image.figma.js} +1 -1
  6. package/dist/atoms/{figma/input.figma.js → input.figma.js} +1 -1
  7. package/dist/atoms/{figma/label.figma.js → label.figma.js} +1 -1
  8. package/dist/atoms/{figma/link-button.figma.js → link-button.figma.js} +1 -1
  9. package/dist/atoms/{figma/link.figma.js → link.figma.js} +1 -1
  10. package/dist/atoms/{figma/numeric-input.figma.js → numeric-input.figma.js} +1 -1
  11. package/dist/atoms/{figma/rating.figma.js → rating.figma.js} +1 -1
  12. package/dist/atoms/{figma/skeleton.figma.js → skeleton.figma.js} +1 -1
  13. package/dist/atoms/{figma/status-text.figma.js → status-text.figma.js} +1 -1
  14. package/dist/atoms/{figma/textarea.figma.js → textarea.figma.js} +1 -1
  15. package/dist/atoms/{figma/tooltip.figma.js → tooltip.figma.js} +2 -2
  16. package/dist/molecules/{figma/accordion.figma.js → accordion.figma.js} +1 -1
  17. package/dist/molecules/accordion.js +2 -2
  18. package/dist/molecules/{figma/breadcrumb.figma.js → breadcrumb.figma.js} +1 -1
  19. package/dist/molecules/breadcrumb.js +13 -13
  20. package/dist/molecules/{figma/carousel.figma.js → carousel.figma.js} +1 -1
  21. package/dist/molecules/carousel.js +5 -5
  22. package/dist/molecules/color-select.js +5 -5
  23. package/dist/molecules/{figma/combobox.figma.js → combobox.figma.js} +5 -5
  24. package/dist/molecules/combobox.js +24 -19
  25. package/dist/molecules/{figma/dialog.figma.js → dialog.figma.js} +2 -2
  26. package/dist/molecules/dialog.js +10 -10
  27. package/dist/molecules/{figma/form-checkbox.figma.js → form-checkbox.figma.js} +1 -1
  28. package/dist/molecules/{figma/form-input.figma.js → form-input.figma.js} +4 -4
  29. package/dist/molecules/{figma/form-numeric-input.figma.js → form-numeric-input.figma.js} +5 -5
  30. package/dist/molecules/{figma/form-textarea.figma.js → form-textarea.figma.js} +4 -4
  31. package/dist/molecules/{figma/menu.figma.js → menu.figma.js} +1 -1
  32. package/dist/molecules/menu.js +6 -6
  33. package/dist/molecules/{figma/pagination.figma.js → pagination.figma.js} +1 -1
  34. package/dist/molecules/pagination.js +11 -11
  35. package/dist/molecules/phone-input.figma.js +62 -0
  36. package/dist/molecules/phone-input.js +4 -4
  37. package/dist/molecules/{figma/popover.figma.js → popover.figma.js} +1 -1
  38. package/dist/molecules/popover.js +2 -2
  39. package/dist/molecules/{figma/product-card.figma.js → product-card.figma.js} +1 -1
  40. package/dist/molecules/product-card.js +5 -5
  41. package/dist/molecules/{figma/radio-card.figma.js → radio-card.figma.js} +1 -1
  42. package/dist/molecules/radio-card.js +22 -22
  43. package/dist/molecules/{figma/radio-group.figma.js → radio-group.figma.js} +1 -1
  44. package/dist/molecules/radio-group.js +25 -25
  45. package/dist/molecules/{figma/search-form.figma.js → search-form.figma.js} +1 -1
  46. package/dist/molecules/{figma/select.figma.js → select.figma.js} +4 -4
  47. package/dist/molecules/select.js +9 -9
  48. package/dist/molecules/{figma/slider.figma.js → slider.figma.js} +7 -7
  49. package/dist/molecules/slider.js +2 -2
  50. package/dist/molecules/{figma/steps.figma.js → steps.figma.js} +1 -1
  51. package/dist/molecules/steps.js +6 -6
  52. package/dist/molecules/{figma/switch.figma.js → switch.figma.js} +1 -1
  53. package/dist/molecules/switch.js +3 -3
  54. package/dist/molecules/{figma/tabs.figma.js → tabs.figma.js} +1 -1
  55. package/dist/molecules/tabs.js +8 -8
  56. package/dist/molecules/{figma/toast.figma.js → toast.figma.js} +1 -1
  57. package/dist/molecules/toast.js +3 -3
  58. package/dist/molecules/{figma/tree-view.figma.js → tree-view.figma.js} +3 -3
  59. package/dist/molecules/tree-view.js +34 -34
  60. package/dist/organisms/footer.figma.js +51 -0
  61. package/dist/organisms/footer.js +11 -11
  62. package/dist/organisms/gallery.figma.js +34 -0
  63. package/dist/organisms/header.figma.js +58 -0
  64. package/dist/organisms/table.figma.js +87 -0
  65. package/dist/organisms/table.js +6 -6
  66. package/dist/src/atoms/badge.figma.d.ts.map +1 -0
  67. package/dist/src/atoms/button.figma.d.ts.map +1 -0
  68. package/dist/src/atoms/checkbox.figma.d.ts.map +1 -0
  69. package/dist/src/atoms/icon.figma.d.ts.map +1 -0
  70. package/dist/src/atoms/image.figma.d.ts.map +1 -0
  71. package/dist/src/atoms/input.figma.d.ts.map +1 -0
  72. package/dist/src/atoms/label.figma.d.ts.map +1 -0
  73. package/dist/src/atoms/link-button.figma.d.ts.map +1 -0
  74. package/dist/src/atoms/link.figma.d.ts.map +1 -0
  75. package/dist/src/atoms/numeric-input.figma.d.ts.map +1 -0
  76. package/dist/src/atoms/rating.figma.d.ts.map +1 -0
  77. package/dist/src/atoms/skeleton.figma.d.ts.map +1 -0
  78. package/dist/src/atoms/status-text.figma.d.ts.map +1 -0
  79. package/dist/src/atoms/textarea.figma.d.ts.map +1 -0
  80. package/dist/src/atoms/tooltip.figma.d.ts.map +1 -0
  81. package/dist/src/molecules/accordion.figma.d.ts.map +1 -0
  82. package/dist/src/molecules/breadcrumb.figma.d.ts.map +1 -0
  83. package/dist/src/molecules/carousel.figma.d.ts.map +1 -0
  84. package/dist/src/molecules/combobox.d.ts +3 -0
  85. package/dist/src/molecules/combobox.d.ts.map +1 -1
  86. package/dist/src/molecules/combobox.figma.d.ts.map +1 -0
  87. package/dist/src/molecules/dialog.figma.d.ts.map +1 -0
  88. package/dist/src/molecules/form-checkbox.figma.d.ts.map +1 -0
  89. package/dist/src/molecules/form-input.figma.d.ts.map +1 -0
  90. package/dist/src/molecules/form-numeric-input.figma.d.ts.map +1 -0
  91. package/dist/src/molecules/form-textarea.figma.d.ts.map +1 -0
  92. package/dist/src/molecules/menu.figma.d.ts.map +1 -0
  93. package/dist/src/molecules/pagination.figma.d.ts.map +1 -0
  94. package/dist/src/molecules/phone-input.figma.d.ts +2 -0
  95. package/dist/src/molecules/phone-input.figma.d.ts.map +1 -0
  96. package/dist/src/molecules/popover.figma.d.ts.map +1 -0
  97. package/dist/src/molecules/product-card.figma.d.ts.map +1 -0
  98. package/dist/src/molecules/radio-card.figma.d.ts.map +1 -0
  99. package/dist/src/molecules/radio-group.figma.d.ts.map +1 -0
  100. package/dist/src/molecules/search-form.figma.d.ts.map +1 -0
  101. package/dist/src/molecules/select.figma.d.ts.map +1 -0
  102. package/dist/src/molecules/slider.figma.d.ts.map +1 -0
  103. package/dist/src/molecules/steps.figma.d.ts.map +1 -0
  104. package/dist/src/molecules/switch.figma.d.ts.map +1 -0
  105. package/dist/src/molecules/tabs.figma.d.ts.map +1 -0
  106. package/dist/src/molecules/toast.figma.d.ts.map +1 -0
  107. package/dist/src/molecules/tree-view.figma.d.ts.map +1 -0
  108. package/dist/src/organisms/footer.d.ts.map +1 -1
  109. package/dist/src/organisms/footer.figma.d.ts +2 -0
  110. package/dist/src/organisms/footer.figma.d.ts.map +1 -0
  111. package/dist/src/organisms/gallery.figma.d.ts +2 -0
  112. package/dist/src/organisms/gallery.figma.d.ts.map +1 -0
  113. package/dist/src/organisms/header.figma.d.ts +2 -0
  114. package/dist/src/organisms/header.figma.d.ts.map +1 -0
  115. package/dist/src/organisms/table.figma.d.ts +2 -0
  116. package/dist/src/organisms/table.figma.d.ts.map +1 -0
  117. package/package.json +22 -22
  118. package/src/tokens/components/molecules/_accordion.css +14 -67
  119. package/src/tokens/components/molecules/_breadcrumb.css +4 -58
  120. package/src/tokens/components/molecules/_carousel.css +17 -58
  121. package/src/tokens/components/molecules/_color-select.css +16 -32
  122. package/src/tokens/components/molecules/_combobox.css +13 -95
  123. package/src/tokens/components/molecules/_dialog.css +11 -62
  124. package/src/tokens/components/molecules/_menu.css +10 -32
  125. package/src/tokens/components/molecules/_pagination.css +13 -46
  126. package/src/tokens/components/molecules/_phone-input.css +11 -49
  127. package/src/tokens/components/molecules/_popover.css +12 -38
  128. package/src/tokens/components/molecules/_product-card.css +19 -56
  129. package/src/tokens/components/molecules/_radio-card.css +4 -193
  130. package/src/tokens/components/molecules/_radio-group.css +7 -143
  131. package/src/tokens/components/molecules/_search-form.css +4 -14
  132. package/src/tokens/components/molecules/_select.css +15 -88
  133. package/src/tokens/components/molecules/_slider.css +14 -69
  134. package/src/tokens/components/molecules/_steps.css +13 -123
  135. package/src/tokens/components/molecules/_switch.css +7 -52
  136. package/src/tokens/components/molecules/_tabs.css +14 -66
  137. package/src/tokens/components/molecules/_toast.css +7 -54
  138. package/src/tokens/components/molecules/_tree-view.css +9 -55
  139. package/src/tokens/components/organisms/_footer.css +8 -82
  140. package/src/tokens/components/organisms/_gallery.css +11 -33
  141. package/src/tokens/components/organisms/_header.css +11 -80
  142. package/src/tokens/components/organisms/_table.css +15 -61
  143. package/src/tokens/figma/dark/variables.css +521 -314
  144. package/src/tokens/figma/light/variables.css +520 -313
  145. package/src/tokens/figma/variables.css +520 -313
  146. package/dist/src/atoms/figma/badge.figma.d.ts.map +0 -1
  147. package/dist/src/atoms/figma/button.figma.d.ts.map +0 -1
  148. package/dist/src/atoms/figma/checkbox.figma.d.ts.map +0 -1
  149. package/dist/src/atoms/figma/icon.figma.d.ts.map +0 -1
  150. package/dist/src/atoms/figma/image.figma.d.ts.map +0 -1
  151. package/dist/src/atoms/figma/input.figma.d.ts.map +0 -1
  152. package/dist/src/atoms/figma/label.figma.d.ts.map +0 -1
  153. package/dist/src/atoms/figma/link-button.figma.d.ts.map +0 -1
  154. package/dist/src/atoms/figma/link.figma.d.ts.map +0 -1
  155. package/dist/src/atoms/figma/numeric-input.figma.d.ts.map +0 -1
  156. package/dist/src/atoms/figma/rating.figma.d.ts.map +0 -1
  157. package/dist/src/atoms/figma/skeleton.figma.d.ts.map +0 -1
  158. package/dist/src/atoms/figma/status-text.figma.d.ts.map +0 -1
  159. package/dist/src/atoms/figma/textarea.figma.d.ts.map +0 -1
  160. package/dist/src/atoms/figma/tooltip.figma.d.ts.map +0 -1
  161. package/dist/src/molecules/figma/accordion.figma.d.ts.map +0 -1
  162. package/dist/src/molecules/figma/breadcrumb.figma.d.ts.map +0 -1
  163. package/dist/src/molecules/figma/carousel.figma.d.ts.map +0 -1
  164. package/dist/src/molecules/figma/combobox.figma.d.ts.map +0 -1
  165. package/dist/src/molecules/figma/dialog.figma.d.ts.map +0 -1
  166. package/dist/src/molecules/figma/form-checkbox.figma.d.ts.map +0 -1
  167. package/dist/src/molecules/figma/form-input.figma.d.ts.map +0 -1
  168. package/dist/src/molecules/figma/form-numeric-input.figma.d.ts.map +0 -1
  169. package/dist/src/molecules/figma/form-textarea.figma.d.ts.map +0 -1
  170. package/dist/src/molecules/figma/menu.figma.d.ts.map +0 -1
  171. package/dist/src/molecules/figma/pagination.figma.d.ts.map +0 -1
  172. package/dist/src/molecules/figma/popover.figma.d.ts.map +0 -1
  173. package/dist/src/molecules/figma/product-card.figma.d.ts.map +0 -1
  174. package/dist/src/molecules/figma/radio-card.figma.d.ts.map +0 -1
  175. package/dist/src/molecules/figma/radio-group.figma.d.ts.map +0 -1
  176. package/dist/src/molecules/figma/search-form.figma.d.ts.map +0 -1
  177. package/dist/src/molecules/figma/select.figma.d.ts.map +0 -1
  178. package/dist/src/molecules/figma/slider.figma.d.ts.map +0 -1
  179. package/dist/src/molecules/figma/steps.figma.d.ts.map +0 -1
  180. package/dist/src/molecules/figma/switch.figma.d.ts.map +0 -1
  181. package/dist/src/molecules/figma/tabs.figma.d.ts.map +0 -1
  182. package/dist/src/molecules/figma/toast.figma.d.ts.map +0 -1
  183. package/dist/src/molecules/figma/tree-view.figma.d.ts.map +0 -1
  184. /package/dist/src/atoms/{figma/badge.figma.d.ts → badge.figma.d.ts} +0 -0
  185. /package/dist/src/atoms/{figma/button.figma.d.ts → button.figma.d.ts} +0 -0
  186. /package/dist/src/atoms/{figma/checkbox.figma.d.ts → checkbox.figma.d.ts} +0 -0
  187. /package/dist/src/atoms/{figma/icon.figma.d.ts → icon.figma.d.ts} +0 -0
  188. /package/dist/src/atoms/{figma/image.figma.d.ts → image.figma.d.ts} +0 -0
  189. /package/dist/src/atoms/{figma/input.figma.d.ts → input.figma.d.ts} +0 -0
  190. /package/dist/src/atoms/{figma/label.figma.d.ts → label.figma.d.ts} +0 -0
  191. /package/dist/src/atoms/{figma/link-button.figma.d.ts → link-button.figma.d.ts} +0 -0
  192. /package/dist/src/atoms/{figma/link.figma.d.ts → link.figma.d.ts} +0 -0
  193. /package/dist/src/atoms/{figma/numeric-input.figma.d.ts → numeric-input.figma.d.ts} +0 -0
  194. /package/dist/src/atoms/{figma/rating.figma.d.ts → rating.figma.d.ts} +0 -0
  195. /package/dist/src/atoms/{figma/skeleton.figma.d.ts → skeleton.figma.d.ts} +0 -0
  196. /package/dist/src/atoms/{figma/status-text.figma.d.ts → status-text.figma.d.ts} +0 -0
  197. /package/dist/src/atoms/{figma/textarea.figma.d.ts → textarea.figma.d.ts} +0 -0
  198. /package/dist/src/atoms/{figma/tooltip.figma.d.ts → tooltip.figma.d.ts} +0 -0
  199. /package/dist/src/molecules/{figma/accordion.figma.d.ts → accordion.figma.d.ts} +0 -0
  200. /package/dist/src/molecules/{figma/breadcrumb.figma.d.ts → breadcrumb.figma.d.ts} +0 -0
  201. /package/dist/src/molecules/{figma/carousel.figma.d.ts → carousel.figma.d.ts} +0 -0
  202. /package/dist/src/molecules/{figma/combobox.figma.d.ts → combobox.figma.d.ts} +0 -0
  203. /package/dist/src/molecules/{figma/dialog.figma.d.ts → dialog.figma.d.ts} +0 -0
  204. /package/dist/src/molecules/{figma/form-checkbox.figma.d.ts → form-checkbox.figma.d.ts} +0 -0
  205. /package/dist/src/molecules/{figma/form-input.figma.d.ts → form-input.figma.d.ts} +0 -0
  206. /package/dist/src/molecules/{figma/form-numeric-input.figma.d.ts → form-numeric-input.figma.d.ts} +0 -0
  207. /package/dist/src/molecules/{figma/form-textarea.figma.d.ts → form-textarea.figma.d.ts} +0 -0
  208. /package/dist/src/molecules/{figma/menu.figma.d.ts → menu.figma.d.ts} +0 -0
  209. /package/dist/src/molecules/{figma/pagination.figma.d.ts → pagination.figma.d.ts} +0 -0
  210. /package/dist/src/molecules/{figma/popover.figma.d.ts → popover.figma.d.ts} +0 -0
  211. /package/dist/src/molecules/{figma/product-card.figma.d.ts → product-card.figma.d.ts} +0 -0
  212. /package/dist/src/molecules/{figma/radio-card.figma.d.ts → radio-card.figma.d.ts} +0 -0
  213. /package/dist/src/molecules/{figma/radio-group.figma.d.ts → radio-group.figma.d.ts} +0 -0
  214. /package/dist/src/molecules/{figma/search-form.figma.d.ts → search-form.figma.d.ts} +0 -0
  215. /package/dist/src/molecules/{figma/select.figma.d.ts → select.figma.d.ts} +0 -0
  216. /package/dist/src/molecules/{figma/slider.figma.d.ts → slider.figma.d.ts} +0 -0
  217. /package/dist/src/molecules/{figma/steps.figma.d.ts → steps.figma.d.ts} +0 -0
  218. /package/dist/src/molecules/{figma/switch.figma.d.ts → switch.figma.d.ts} +0 -0
  219. /package/dist/src/molecules/{figma/tabs.figma.d.ts → tabs.figma.d.ts} +0 -0
  220. /package/dist/src/molecules/{figma/toast.figma.d.ts → toast.figma.d.ts} +0 -0
  221. /package/dist/src/molecules/{figma/tree-view.figma.d.ts → tree-view.figma.d.ts} +0 -0
@@ -1,133 +1,23 @@
1
- @theme static {
2
- /* === REFERENCE LAYER === */
3
- --color-steps-base: var(--color-surface);
4
- --color-steps-overlay: var(--color-overlay);
5
- --color-steps-float: var(--color-float);
6
- --color-steps-accent: var(--color-primary);
7
- --color-steps-success: var(--color-success);
8
- --color-steps-fg-reverse: var(--color-fg-reverse);
9
-
10
- /* === DERIVED COLORS === */
11
- --color-steps-fg: var(--color-fg-primary);
12
-
13
- --color-steps-trigger-bg-hover: oklch(
14
- from var(--color-steps-overlay) calc(l - var(--surface-increment)) c h
15
- );
16
- --color-steps-trigger-bg-current: oklch(
17
- from var(--color-steps-accent) l c h /
18
- 0.12
19
- );
20
- --color-steps-trigger-bg-complete: oklch(
21
- from var(--color-steps-success) l c h /
22
- 0.12
23
- );
24
-
25
- --color-steps-indicator-bg: var(--color-steps-overlay);
26
- --color-steps-indicator-bg-hover: var(--color-steps-float);
27
- --color-steps-indicator-bg-current: var(--color-steps-accent);
28
- --color-steps-indicator-bg-complete: var(--color-steps-success);
29
- --color-steps-indicator-border: var(--color-border-primary);
30
- --color-steps-indicator-border-hover: var(--color-steps-accent);
31
- --color-steps-indicator-border-current: var(--color-steps-accent);
32
- --color-steps-indicator-border-complete: var(--color-steps-success);
33
- --color-steps-indicator-fg: var(--color-fg-secondary);
34
- --color-steps-indicator-fg-current: var(--color-steps-fg-reverse);
35
- --color-steps-indicator-fg-complete: var(--color-steps-fg-reverse);
36
-
37
- --color-steps-indicator-bg-solid: var(--color-steps-float);
38
- --color-steps-indicator-bg-solid-hover: oklch(
39
- from var(--color-steps-float) calc(l - var(--surface-increment)) c h
40
- );
41
- --color-steps-indicator-bg-solid-current: var(--color-steps-accent);
42
- --color-steps-indicator-bg-solid-complete: var(--color-steps-success);
43
- --color-steps-indicator-fg-solid: var(--color-fg-primary);
44
- --color-steps-indicator-fg-solid-current: var(--color-steps-fg-reverse);
45
- --color-steps-indicator-fg-solid-complete: var(--color-steps-fg-reverse);
46
-
47
- --color-steps-title-fg: var(--color-fg-primary);
48
- --color-steps-title-fg-current: var(--color-primary);
49
- --color-steps-title-fg-complete: var(--color-success);
50
- --color-steps-description-fg: var(--color-fg-secondary);
51
- --color-steps-description-fg-current: var(--color-fg-primary);
52
- --color-steps-description-fg-complete: var(--color-fg-primary);
53
-
54
- --color-steps-separator-bg: var(--color-border-primary);
55
- --color-steps-separator-bg-current: var(--color-primary-light);
56
- --color-steps-separator-bg-complete: var(--color-success);
57
-
58
- --color-steps-progress-bg: var(--color-border-primary);
59
- --color-steps-progress-range-bg: var(--color-steps-accent);
60
-
61
- --color-steps-content-bg: var(--color-steps-base);
62
- --color-steps-content-bg-complete: var(--color-steps-overlay);
63
- --color-steps-content-border: var(--color-border-primary);
64
- --color-steps-content-border-complete: var(--color-success);
65
- --color-steps-content-fg: var(--color-fg-primary);
1
+ /*
2
+ * Steps runtime tokens come from libs/ui/src/tokens/figma/variables.css.
3
+ *
4
+ * Kept here:
5
+ * - `--spacing-steps-list-vertical` (container-based width).
6
+ * - bare text defaults (Figma exports per-size only).
7
+ * - h-/w- aliases for the Figma progress/separator size axes.
8
+ */
66
9
 
67
- /* === SPACING === */
68
- --gap-steps-root: var(--spacing-300);
69
- --gap-steps-list: var(--spacing-150);
70
- --gap-steps-panels: var(--spacing-250);
71
- --gap-steps-item: var(--spacing-150);
72
- --gap-steps-trigger: var(--spacing-150);
73
- --gap-steps-text: var(--spacing-50);
74
- --gap-steps-navigation: var(--spacing-150);
75
-
76
- --padding-steps-trigger-x: var(--spacing-150);
77
- --padding-steps-trigger-y: var(--spacing-100);
78
- --padding-steps-content-sm: var(--spacing-200);
79
- --padding-steps-content-md: var(--spacing-250);
80
- --padding-steps-content-lg: var(--spacing-300);
81
-
82
- --spacing-steps-indicator-sm: var(--spacing-300);
83
- --spacing-steps-indicator-md: var(--spacing-350);
84
- --spacing-steps-indicator-lg: var(--spacing-400);
10
+ @theme static {
85
11
  --spacing-steps-list-vertical: var(--container-xs);
86
- --spacing-steps-separator-offset: var(--spacing-200);
87
- --spacing-steps-separator-vertical: var(--spacing-400);
88
-
89
- /* === TYPOGRAPHY === */
90
- --font-weight-steps-title: var(--font-weight-medium);
91
- --font-weight-steps-number: var(--font-weight-semibold);
92
12
 
93
13
  --text-steps-title: var(--text-md);
94
- --text-steps-title-sm: var(--text-sm);
95
- --text-steps-title-md: var(--text-md);
96
- --text-steps-title-lg: var(--text-lg);
97
-
98
14
  --text-steps-description: var(--text-sm);
99
- --text-steps-description-sm: var(--text-xs);
100
- --text-steps-description-md: var(--text-sm);
101
- --text-steps-description-lg: var(--text-md);
102
-
103
- --text-steps-content-sm: var(--text-sm);
104
- --text-steps-content-md: var(--text-md);
105
- --text-steps-content-lg: var(--text-lg);
106
-
107
- --text-steps-number-sm: var(--text-sm);
108
- --text-steps-number-md: var(--text-md);
109
- --text-steps-number-lg: var(--text-lg);
110
-
111
15
  --text-steps-icon: var(--text-md);
112
- --text-steps-icon-sm: var(--text-sm);
113
- --text-steps-icon-md: var(--text-md);
114
- --text-steps-icon-lg: var(--text-lg);
115
-
116
- /* === BORDERS & RADIUS === */
117
- --border-width-steps-indicator: var(--border-width-sm);
118
- --border-width-steps-content: var(--border-width-sm);
119
- --radius-steps-indicator: 999px;
120
- --radius-steps-trigger: var(--radius-sm);
121
- --radius-steps-content: var(--radius-md);
122
- --radius-steps-progress: 999px;
123
- --radius-steps-separator: 999px;
124
- --height-steps-progress: 4px;
125
- --height-steps-separator: 2px;
126
- --width-steps-progress: 4px;
127
- --width-steps-separator: 2px;
128
16
 
129
- /* === FOCUS RINGS === */
130
- --color-steps-ring: var(--color-ring);
17
+ --height-steps-progress: var(--size-steps-progress-height);
18
+ --width-steps-progress: var(--size-steps-progress-width);
19
+ --height-steps-separator: var(--size-steps-separator-height);
20
+ --width-steps-separator: var(--size-steps-separator-width);
131
21
  }
132
22
 
133
23
  @utility token-icon-steps-check {
@@ -1,60 +1,15 @@
1
- :root {
2
- /* The red colour will be less noticeable. */
3
- --opacity-switch-invalid: 80%;
4
- }
1
+ /*
2
+ * Switch runtime tokens come from libs/ui/src/tokens/figma/variables.css.
3
+ *
4
+ * Kept here:
5
+ * - `--spacing-switch-translate-track` — runtime calc() of Figma track
6
+ * tokens (thumb travel distance); can't be a static Figma variable.
7
+ */
5
8
 
6
9
  @theme static {
7
- /* === BASE TOKEN MAPPING === */
8
- --color-switch-bg: var(--color-overlay);
9
- --color-switch-success: var(--color-success);
10
- --color-switch-invalid: --alpha(
11
- var(--color-danger) /
12
- var(--opacity-switch-invalid)
13
- );
14
- --color-switch-border: var(--color-border-primary);
15
- --color-switch-thumb-bg: var(--color-base-light);
16
- --color-switch-label-fg: var(--color-fg-primary);
17
- --color-switch-label-fg-disabled: var(--color-fg-disabled);
18
-
19
- /* Backgrounds colors */
20
- --color-switch-bg-checked: var(--color-switch-success);
21
-
22
- /* === STATE VARIATIONS === */
23
- --color-switch-bg-hover: oklch(
24
- from var(--color-switch-bg) calc(l + var(--state-hover)) c h
25
- );
26
- --color-switch-bg-checked-hover: oklch(
27
- from var(--color-switch-success) calc(l + var(--state-hover)) c h
28
- );
29
-
30
- /* === DISABLED STATES === */
31
- /* Using unified disabled tokens for consistency across all components */
32
- --color-switch-bg-disabled: var(--color-bg-disabled);
33
- --color-switch-thumb-bg-disabled: var(--color-fg-disabled);
34
- --color-switch-border-disabled: var(--color-border-disabled);
35
-
36
- /* === INVALID STATES === */
37
- --color-switch-bg-invalid: var(--color-switch-invalid);
38
-
39
- /* === SPACING === */
40
- --spacing-switch-root: var(--spacing-200);
41
- --spacing-switch-control: var(--spacing-50);
42
- --spacing-switch-track-width: var(--spacing-600);
43
- --spacing-switch-track-height: var(--spacing-350);
44
- --spacing-switch-thumb-height: calc(
45
- var(--spacing-switch-track-height) -
46
- (var(--spacing-switch-control) * 2)
47
- );
48
10
  --spacing-switch-translate-track: calc(
49
11
  var(--spacing-switch-track-width) -
50
12
  var(--spacing-switch-track-height) -
51
13
  var(--spacing-switch-control)
52
14
  );
53
-
54
- /* === BORDERS & RADIUS === */
55
- --border-width-switch: var(--border-width-sm);
56
- --radius-switch: var(--radius-full);
57
-
58
- /* === FOCUS RINGS === */
59
- --color-switch-ring: var(--color-ring);
60
15
  }
@@ -1,69 +1,17 @@
1
- @theme static {
2
- /* === BASE TOKEN MAPPING === */
3
- --color-tabs-bg: var(--color-surface);
4
- --color-tabs-fg: var(--color-fg-secondary);
5
- --color-tabs-active: var(--color-primary);
6
- --color-tabs-fg-primary: var(--color-fg-primary);
7
- --color-tabs-fg-secondary: var(--color-fg-reverse);
8
-
9
- /* === LIST COMPONENT === */
10
- --color-tabs-list-bg: oklch(
11
- from var(--color-tabs-bg) calc(l - var(--surface-increment)) c h
12
- );
13
-
14
- /* === TRIGGER COMPONENT === */
15
- --color-tabs-trigger-fg: var(--color-tabs-fg);
16
- --color-tabs-trigger-solid-fg: var(--color-tabs-fg-secondary);
17
- --color-tabs-trigger-fg-selected: var(--color-tabs-active);
18
- --color-tabs-trigger-bg-selected: var(--color-tabs-active);
19
- --color-tabs-trigger-bg-outline-selected: oklch(
20
- from var(--color-tabs-active) l c h /
21
- 0.1
22
- );
23
-
24
- --color-tabs-trigger-bg-hover: oklch(
25
- from var(--color-tabs-bg) calc(l - var(--surface-increment) * 2) c h
26
- );
27
-
28
- /* === INDICATOR === */
29
- --color-tabs-indicator-bg: var(--color-tabs-active);
30
- --width-tabs-indicator: 2px;
31
- --height-tabs-indicator: 2px;
32
-
33
- /* === CONTENT === */
34
- --color-tabs-content-fg: var(--color-tabs-fg-primary);
1
+ /*
2
+ * Tabs runtime tokens come from libs/ui/src/tokens/figma/variables.css.
3
+ *
4
+ * Kept here:
5
+ * - `--padding-tabs-trigger-{sm,md,lg}` combined shorthands for the
6
+ * `p-tabs-trigger-{size}` utility (Figma has split x/y axes).
7
+ * - `--width-tabs-indicator` — alias for the Figma width axis (w-
8
+ * utility can't read --size-*).
9
+ */
35
10
 
36
- /* === FOCUS RING === */
37
- --color-tabs-ring: var(--color-ring);
38
-
39
- /* === PADDING === */
40
- /* Trigger padding */
41
- --padding-tabs-trigger-sm: var(--spacing-100) var(--spacing-150);
42
- --padding-tabs-trigger-md: var(--spacing-150) var(--spacing-200);
43
- --padding-tabs-trigger-lg: var(--spacing-200) var(--spacing-250);
44
-
45
- /* Content padding */
46
- --spacing-tabs-content-sm: var(--spacing-200);
47
- --spacing-tabs-content-md: var(--spacing-250);
48
- --spacing-tabs-content-lg: var(--spacing-350);
49
-
50
- /* === TYPOGRAPHY === */
51
- --text-tabs-trigger-sm: var(--text-sm);
52
- --text-tabs-trigger-md: var(--text-md);
53
- --text-tabs-trigger-lg: var(--text-lg);
54
-
55
- --text-tabs-content-sm: var(--text-sm);
56
- --text-tabs-content-md: var(--text-md);
57
- --text-tabs-content-lg: var(--text-lg);
58
-
59
- /* === BORDER & RADIUS === */
60
- --border-width-tabs: var(--border-width-md);
61
- --color-tabs-border: var(--color-border-primary);
62
- --color-tabs-border-selected: var(--color-tabs-active);
63
- --radius-tabs: 0;
64
- --radius-tabs-trigger: 0;
65
- --radius-tabs-indicator: 0;
11
+ @theme static {
12
+ --padding-tabs-trigger-sm: var(--padding-tabs-trigger-y-sm) var(--padding-tabs-trigger-x-sm);
13
+ --padding-tabs-trigger-md: var(--padding-tabs-trigger-y-md) var(--padding-tabs-trigger-x-md);
14
+ --padding-tabs-trigger-lg: var(--padding-tabs-trigger-y-lg) var(--padding-tabs-trigger-x-lg);
66
15
 
67
- /* === DISABLED STATE === */
68
- --color-tabs-fg-disabled: var(--color-fg-disabled);
16
+ --width-tabs-indicator: var(--size-tabs-indicator-width);
69
17
  }
@@ -1,58 +1,11 @@
1
- @theme static {
2
- /* === BASE TOKEN MAPPING === */
3
- --color-toast-bg: var(--color-highlight);
4
- --color-toast-fg: var(--color-fg-dark);
5
- --color-toast-error: var(--color-danger);
6
- --color-toast-success: var(--color-success);
7
- --color-toast-info: var(--color-info);
8
- --color-toast-warning: var(--color-warning);
9
-
10
- /* === TYPE SPECIFIC COLORS === */
11
- /* Error */
12
- --color-toast-error-bg: var(--color-toast-error);
13
- --color-toast-error-border: var(--color-toast-error);
14
- --color-toast-error-title: var(--color-toast-fg);
15
- --color-toast-error-icon: var(--color-toast-fg);
16
-
17
- /* Success */
18
- --color-toast-success-bg: var(--color-toast-success);
19
- --color-toast-success-border: var(--color-toast-success);
20
- --color-toast-success-title: var(--color-toast-fg);
21
- --color-toast-success-icon: var(--color-toast-fg);
22
-
23
- /* Info */
24
- --color-toast-info-bg: var(--color-toast-info);
25
- --color-toast-info-border: var(--color-toast-info);
26
- --color-toast-info-title: var(--color-toast-fg);
27
- --color-toast-info-icon: var(--color-toast-fg);
28
-
29
- /* Warning */
30
- --color-toast-warning-bg: var(--color-toast-warning);
31
- --color-toast-warning-border: var(--color-toast-warning);
32
- --color-toast-warning-title: var(--color-toast-fg);
33
- --color-toast-warning-icon: var(--color-toast-fg);
1
+ /*
2
+ * Toast runtime tokens come from libs/ui/src/tokens/figma/variables.css.
3
+ *
4
+ * Kept: `--spacing-toast-width` alias — w- utility can't read --size-*.
5
+ */
34
6
 
35
- /* === CLOSE BUTTON === */
36
- --color-toast-close-fg: var(--color-toast-fg);
37
- --color-toast-close-fg-hover: var(--color-fg-primary);
38
-
39
- /* === ROOT === */
40
- --spacing-toast-width: 360px;
41
-
42
- /* === SPACING === */
43
- --padding-toast-root: var(--spacing-250);
44
- --gap-toast-content: var(--spacing-200);
45
- --spacing-toast-description-gap: var(--spacing-100);
46
-
47
- /* === TYPOGRAPHY === */
48
- --font-weight-toast-title: var(--font-weight-medium);
49
- --text-toast-title-size: var(--text-md);
50
- --text-toast-description-size: var(--text-sm);
51
- --text-toast-icon-size: var(--text-lg);
52
-
53
- /* === BORDERS & RADIUS === */
54
- --border-width-toast: var(--border-width-sm);
55
- --radius-toast-root: var(--radius-sm);
7
+ @theme static {
8
+ --spacing-toast-width: var(--size-toast-width);
56
9
  }
57
10
 
58
11
  /* Icons */
@@ -1,59 +1,13 @@
1
- @theme static {
2
- /* === BASE TOKEN MAPPING === */
3
- --color-tree-bg: var(--color-base);
4
- --color-tree-fg: var(--color-fg-primary);
5
- --color-tree-border: var(--color-border-primary);
6
- --color-tree-icon-hover: var(--color-fg-primary);
7
- --color-tree-accent: var(--color-primary);
8
-
9
- /* === STATE VARIATIONS === */
10
- --color-tree-node-bg-hover: var(--color-primary-hover);
11
- --color-tree-fg-hover: var(--color-fg-reverse);
12
- --color-tree-fg-selected: var(--color-tree-accent);
13
-
14
- /* === ROOT === */
15
- --color-tree-root-bg: transparent;
16
-
17
- /* === LABEL === */
18
- --color-tree-label-fg: var(--color-tree-fg);
19
-
20
- /* === NODE === */
21
- --color-tree-ring: var(--color-ring);
22
-
23
- /* === INDENT GUIDE === */
24
- --color-tree-indent-bg: var(--color-tree-border);
25
- --width-tree-indent: 1px;
26
-
27
- /* === DISABLED STATES === */
28
- --color-tree-fg-disabled: var(--color-fg-disabled);
1
+ /*
2
+ * TreeView runtime tokens come entirely from
3
+ * libs/ui/src/tokens/figma/variables.css (tree-view namespace).
4
+ *
5
+ * Kept: `--tree-indent-per-level` — consumed as a raw var() in the TSX
6
+ * indent calc; aliases Figma's indent-per-level token.
7
+ */
29
8
 
30
- /* === SPACING === */
31
- --tree-indent-per-level: var(--spacing-100);
32
- --spacing-tree-icon: var(--spacing-150);
33
- --padding-tree-node: var(--spacing-100);
34
-
35
- /* === TYPOGRAPHY === */
36
- /* Tree text size */
37
- --text-tree-sm: var(--text-sm);
38
- --text-tree-md: var(--text-md);
39
- --text-tree-lg: var(--text-lg);
40
-
41
- /* Node icon size */
42
- --text-tree-icon-sm: var(--text-icon-sm);
43
- --text-tree-icon-md: var(--text-icon-md);
44
- --text-tree-icon-lg: var(--text-icon-lg);
45
-
46
- --text-tree-indicator-sm: var(--text-icon-md);
47
- --text-tree-indicator-md: var(--text-icon-lg);
48
- --text-tree-indicator-lg: var(--text-icon-xl);
49
-
50
- /* Tree font weight */
51
- --font-weight-tree-label: var(--font-weight-medium);
52
-
53
- /* === BORDERS & RADIUS === */
54
- --radius-tree: 0;
55
- /* === OPACITY === */
56
- --opacity-tree-indent: 100%;
9
+ @theme static {
10
+ --tree-indent-per-level: var(--spacing-tree-view-indent-per-level);
57
11
  }
58
12
 
59
13
  /* Tree Icons - using semantic tokens */
@@ -1,85 +1,11 @@
1
+ /*
2
+ * Footer — runtime tokens come entirely from
3
+ * libs/ui/src/tokens/figma/variables.css.
4
+ *
5
+ * Kept: `--footer-cols` runtime grid-template-columns value
6
+ * (repeat/minmax can't be expressed as a Figma variable).
7
+ */
8
+
1
9
  @theme static {
2
10
  --footer-cols: repeat(auto-fit, minmax(22%, 1fr));
3
-
4
- /* === COLORS === */
5
- --color-footer: var(--color-surface);
6
-
7
- /* Background */
8
- --color-footer-bg: var(--color-footer);
9
- --color-footer-container-bg: var(--color-footer);
10
- --color-footer-section-bg: var(--color-footer);
11
- --color-footer-list-bg: var(--color-footer);
12
- --color-footer-bottom-bg: var(--color-footer);
13
-
14
- /* Foreground */
15
- --color-footer-fg-primary: var(--color-fg-primary);
16
- --color-footer-fg-secondary: var(--color-fg-secondary);
17
-
18
- --color-footer-title-fg: var(--color-footer-fg-primary);
19
- --color-footer-title-fg-hover: var(--color-primary);
20
- --color-footer-link-fg: var(--color-footer-fg-secondary);
21
- --color-footer-link-fg-hover: var(--color-primary);
22
- --color-footer-text-fg: var(--color-footer-fg-secondary);
23
-
24
- /* Divider & Bottom */
25
- --color-footer-divider-bg: var(--color-fg-reverse);
26
-
27
- /* === TYPOGRAPHY === */
28
- --text-footer-title-sm: var(--text-md);
29
- --text-footer-title-md: var(--text-lg);
30
- --text-footer-title-lg: var(--text-xl);
31
-
32
- --text-footer-link-sm: var(--text-sm);
33
- --text-footer-link-md: var(--text-md);
34
- --text-footer-link-lg: var(--text-lg);
35
-
36
- --text-footer-text-sm: var(--text-xs);
37
- --text-footer-text-md: var(--text-sm);
38
- --text-footer-text-lg: var(--text-md);
39
-
40
- --font-weight-footer-title: var(--font-weight-semibold);
41
- --font-weight-footer-link: var(--font-weight-normal);
42
-
43
- /* === SIZES === */
44
- --container-footer-max: var(--container-max-w);
45
-
46
- /* === SPACING === */
47
- /* Root padding */
48
- --padding-footer-root-sm: var(--spacing-100);
49
- --padding-footer-root-md: var(--spacing-200);
50
- --padding-footer-root-lg: var(--spacing-300);
51
-
52
- /* Container spacing */
53
- --spacing-footer-container-sm: var(--spacing-300);
54
- --spacing-footer-container-md: var(--spacing-400);
55
- --spacing-footer-container-lg: var(--spacing-500);
56
-
57
- /* Section spacing */
58
- --spacing-footer-section-sm: var(--spacing-50);
59
- --spacing-footer-section-md: var(--spacing-100);
60
- --spacing-footer-section-lg: var(--spacing-150);
61
-
62
- /* List spacing */
63
- --spacing-footer-list-gap: var(--spacing-100);
64
- --spacing-footer-list-gap-sm: var(--spacing-50);
65
- --spacing-footer-list-gap-md: var(--spacing-100);
66
- --spacing-footer-list-gap-lg: var(--spacing-150);
67
-
68
- /* Bottom padding */
69
- --padding-footer-bottom: var(--spacing-300);
70
- --padding-footer-bottom-sm: var(--spacing-200);
71
- --padding-footer-bottom-md: var(--spacing-300);
72
- --padding-footer-bottom-lg: var(--spacing-400);
73
-
74
- /* Divider margins */
75
- --margin-footer-divider-sm: var(--spacing-200);
76
- --margin-footer-divider-md: var(--spacing-300);
77
- --margin-footer-divider-lg: var(--spacing-400);
78
-
79
- /* === BORDERS & EFFECTS === */
80
- --border-width-footer: var(--border-width-md);
81
- --color-footer-border: var(--color-border-primary);
82
- --height-footer-divider: 2px;
83
-
84
- --radius-footer: 0;
85
11
  }
@@ -1,35 +1,13 @@
1
- @theme static {
2
- /* === REFERENCE LAYER === */
3
- --color-gallery: var(--color-surface);
4
- --color-gallery-accent: var(--color-primary);
5
-
6
- /* === DERIVED COLORS === */
7
- --color-gallery-trigger-bg: oklch(
8
- from var(--color-gallery) calc(l - var(--surface-increment) * 2) c h
9
- );
10
- --color-gallery-trigger-bg-active: oklch(
11
- from var(--color-gallery) calc(l - var(--surface-increment) * 3) c h
12
- );
13
- --color-gallery-trigger-border: var(--color-border-primary);
14
- --color-gallery-trigger-border-active: var(--color-gallery-accent);
15
- --color-gallery-trigger-ring: var(--color-ring);
16
-
17
- /* === SPACING === */
18
- --spacing-gallery-xs: var(--spacing-50);
19
- --spacing-gallery-sm: var(--spacing-100);
20
- --spacing-gallery-md: var(--spacing-200);
21
- --spacing-gallery-lg: var(--spacing-300);
22
- --spacing-gallery-root: var(--spacing-200);
23
- --padding-gallery-trigger: 0 0;
24
-
25
- /* === DIMENSIONS === */
1
+ /*
2
+ * Gallery runtime tokens come entirely from
3
+ * libs/ui/src/tokens/figma/variables.css.
4
+ *
5
+ * Kept: `--height-gallery` responsive cap. Figma flattens it to a fixed
6
+ * dimension (576px); the `min(60svh, 36rem)` viewport behaviour can't be
7
+ * expressed as a Figma variable, so an unlayered `:root` override (which
8
+ * beats Figma's `@theme static`) restores it.
9
+ */
10
+
11
+ :root {
26
12
  --height-gallery: min(60svh, 36rem);
27
-
28
- /* === EFFECTS === */
29
- --brightness-gallery-trigger: 70%;
30
- --brightness-gallery-trigger-active: 100%;
31
- --shadow-gallery-trigger: var(--shadow-sm);
32
-
33
- /* === BORDERS === */
34
- --radius-gallery-trigger: var(--radius-sm);
35
13
  }
@@ -1,3 +1,13 @@
1
+ /*
2
+ * Header — runtime tokens come entirely from
3
+ * libs/ui/src/tokens/figma/variables.css.
4
+ *
5
+ * Kept:
6
+ * - `:root @media (width < 48rem)` nav-spacing override (responsive,
7
+ * conditional value — can't be expressed as a Figma variable).
8
+ * - glyph utilities mapping the menu/close icons.
9
+ */
10
+
1
11
  :root {
2
12
  @media (width < 48rem) {
3
13
  --spacing-header-nav-sm: var(--spacing-50);
@@ -6,89 +16,10 @@
6
16
  }
7
17
  }
8
18
 
9
- @theme static {
10
- /* === REFERENCE LAYER === */
11
- /* These tokens reference semantic tokens from _semantic.css */
12
- --color-header: var(--color-surface);
13
- --color-header-accent: var(--color-primary);
14
-
15
- /* Reference typhography */
16
- --text-header-sm: var(--text-sm);
17
- --text-header-md: var(--text-md);
18
- --text-header-lg: var(--text-lg);
19
-
20
- /* === DERIVED COLORS === */
21
- /* Background colors */
22
- --color-header-bg: var(--color-header);
23
-
24
- /* === ITEMS === */
25
- --color-header-nav-item-bg: transparent;
26
- --color-header-nav-item-bg-hover: transparent;
27
-
28
- --text-header-item-sm: var(--text-header-sm);
29
- --text-header-item-md: var(--text-header-md);
30
- --text-header-item-lg: var(--text-header-lg);
31
-
32
- /* === ACTIONS === */
33
-
34
- /* Foreground colors */
35
- --color-header-fg: var(--color-fg-primary);
36
- --color-header-nav-fg: var(--color-fg-secondary);
37
- --color-header-nav-fg-hover: var(--color-header-fg);
38
- --color-header-nav-fg-active: var(--color-header-accent);
39
- --color-header-actions-fg: var(--color-primary);
40
- --color-header-actions-fg-hover: var(--color-header-fg);
41
-
42
- /* Border colors */
43
-
44
- /* === SIZE === */
45
- /* Width constraints */
46
- --width-header-max: 100%;
47
-
48
- /* === SPACING === */
49
- /* Section spacing */
50
- --spacing-header-container: var(--spacing-100);
51
-
52
- --padding-header-item-sm: var(--spacing-100);
53
- --padding-header-item-md: var(--spacing-150);
54
- --padding-header-item-lg: var(--spacing-200);
55
-
56
- --spacing-header-nav-sm: var(--spacing-200);
57
- --spacing-header-nav-md: var(--spacing-300);
58
- --spacing-header-nav-lg: var(--spacing-400);
59
-
60
- --spacing-header-actions-sm: var(--spacing-200);
61
- --spacing-header-actions-md: var(--spacing-300);
62
- --spacing-header-actions-lg: var(--spacing-400);
63
-
64
- /* === TYPOGRAPHY === */
65
- --font-weight-header-nav: var(--font-weight-medium);
66
- --font-weight-header-nav-active: var(--font-weight-semibold);
67
-
68
- /* === Z-INDEX === */
69
- /* Mobile menu hamburger colors */
70
- --color-header-hamburger-fg: var(--color-fg-primary);
71
- --color-header-hamburger-fg-hover: var(--color-fg-secondary);
72
-
73
- /* hamburger button */
74
- --text-header-hamburger-sm: var(--text-header-sm);
75
- --text-header-hamburger-md: var(--text-header-md);
76
- --text-header-hamburger-lg: var(--text-header-lg);
77
-
78
- --padding-header-hamburger-sm: var(--spacing-100);
79
- --padding-header-hamburger-md: var(--spacing-150);
80
- --padding-header-hamburger-lg: var(--spacing-200);
81
-
82
- /* breakpoint */
83
- --container-header-desktop: 48rem;
84
-
85
- --duration-header: 300ms;
86
- }
87
-
88
19
  @utility token-icon-header-menu {
89
20
  @apply token-icon-menu;
90
21
  }
91
22
 
92
23
  @utility token-icon-header-close {
93
24
  @apply token-icon-close;
94
- }
25
+ }