@techsio/ui-kit 0.10.1 → 0.11.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 (202) 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/src/atoms/badge.figma.d.ts.map +1 -0
  61. package/dist/src/atoms/button.figma.d.ts.map +1 -0
  62. package/dist/src/atoms/checkbox.figma.d.ts.map +1 -0
  63. package/dist/src/atoms/icon.figma.d.ts.map +1 -0
  64. package/dist/src/atoms/image.figma.d.ts.map +1 -0
  65. package/dist/src/atoms/input.figma.d.ts.map +1 -0
  66. package/dist/src/atoms/label.figma.d.ts.map +1 -0
  67. package/dist/src/atoms/link-button.figma.d.ts.map +1 -0
  68. package/dist/src/atoms/link.figma.d.ts.map +1 -0
  69. package/dist/src/atoms/numeric-input.figma.d.ts.map +1 -0
  70. package/dist/src/atoms/rating.figma.d.ts.map +1 -0
  71. package/dist/src/atoms/skeleton.figma.d.ts.map +1 -0
  72. package/dist/src/atoms/status-text.figma.d.ts.map +1 -0
  73. package/dist/src/atoms/textarea.figma.d.ts.map +1 -0
  74. package/dist/src/atoms/tooltip.figma.d.ts.map +1 -0
  75. package/dist/src/molecules/accordion.figma.d.ts.map +1 -0
  76. package/dist/src/molecules/breadcrumb.figma.d.ts.map +1 -0
  77. package/dist/src/molecules/carousel.figma.d.ts.map +1 -0
  78. package/dist/src/molecules/combobox.d.ts +3 -0
  79. package/dist/src/molecules/combobox.d.ts.map +1 -1
  80. package/dist/src/molecules/combobox.figma.d.ts.map +1 -0
  81. package/dist/src/molecules/dialog.figma.d.ts.map +1 -0
  82. package/dist/src/molecules/form-checkbox.figma.d.ts.map +1 -0
  83. package/dist/src/molecules/form-input.figma.d.ts.map +1 -0
  84. package/dist/src/molecules/form-numeric-input.figma.d.ts.map +1 -0
  85. package/dist/src/molecules/form-textarea.figma.d.ts.map +1 -0
  86. package/dist/src/molecules/menu.figma.d.ts.map +1 -0
  87. package/dist/src/molecules/pagination.figma.d.ts.map +1 -0
  88. package/dist/src/molecules/phone-input.figma.d.ts +2 -0
  89. package/dist/src/molecules/phone-input.figma.d.ts.map +1 -0
  90. package/dist/src/molecules/popover.figma.d.ts.map +1 -0
  91. package/dist/src/molecules/product-card.figma.d.ts.map +1 -0
  92. package/dist/src/molecules/radio-card.figma.d.ts.map +1 -0
  93. package/dist/src/molecules/radio-group.figma.d.ts.map +1 -0
  94. package/dist/src/molecules/search-form.figma.d.ts.map +1 -0
  95. package/dist/src/molecules/select.figma.d.ts.map +1 -0
  96. package/dist/src/molecules/slider.figma.d.ts.map +1 -0
  97. package/dist/src/molecules/steps.figma.d.ts.map +1 -0
  98. package/dist/src/molecules/switch.figma.d.ts.map +1 -0
  99. package/dist/src/molecules/tabs.figma.d.ts.map +1 -0
  100. package/dist/src/molecules/toast.figma.d.ts.map +1 -0
  101. package/dist/src/molecules/tree-view.figma.d.ts.map +1 -0
  102. package/package.json +1 -1
  103. package/src/tokens/components/molecules/_accordion.css +14 -67
  104. package/src/tokens/components/molecules/_breadcrumb.css +4 -58
  105. package/src/tokens/components/molecules/_carousel.css +17 -58
  106. package/src/tokens/components/molecules/_color-select.css +16 -32
  107. package/src/tokens/components/molecules/_combobox.css +13 -95
  108. package/src/tokens/components/molecules/_dialog.css +11 -62
  109. package/src/tokens/components/molecules/_menu.css +10 -32
  110. package/src/tokens/components/molecules/_pagination.css +13 -46
  111. package/src/tokens/components/molecules/_phone-input.css +11 -49
  112. package/src/tokens/components/molecules/_popover.css +12 -38
  113. package/src/tokens/components/molecules/_product-card.css +19 -56
  114. package/src/tokens/components/molecules/_radio-card.css +4 -193
  115. package/src/tokens/components/molecules/_radio-group.css +7 -143
  116. package/src/tokens/components/molecules/_search-form.css +4 -14
  117. package/src/tokens/components/molecules/_select.css +15 -88
  118. package/src/tokens/components/molecules/_slider.css +14 -69
  119. package/src/tokens/components/molecules/_steps.css +13 -123
  120. package/src/tokens/components/molecules/_switch.css +7 -52
  121. package/src/tokens/components/molecules/_tabs.css +14 -66
  122. package/src/tokens/components/molecules/_toast.css +7 -54
  123. package/src/tokens/components/molecules/_tree-view.css +9 -55
  124. package/src/tokens/figma/dark/variables.css +512 -309
  125. package/src/tokens/figma/light/variables.css +511 -308
  126. package/src/tokens/figma/variables.css +511 -308
  127. package/dist/src/atoms/figma/badge.figma.d.ts.map +0 -1
  128. package/dist/src/atoms/figma/button.figma.d.ts.map +0 -1
  129. package/dist/src/atoms/figma/checkbox.figma.d.ts.map +0 -1
  130. package/dist/src/atoms/figma/icon.figma.d.ts.map +0 -1
  131. package/dist/src/atoms/figma/image.figma.d.ts.map +0 -1
  132. package/dist/src/atoms/figma/input.figma.d.ts.map +0 -1
  133. package/dist/src/atoms/figma/label.figma.d.ts.map +0 -1
  134. package/dist/src/atoms/figma/link-button.figma.d.ts.map +0 -1
  135. package/dist/src/atoms/figma/link.figma.d.ts.map +0 -1
  136. package/dist/src/atoms/figma/numeric-input.figma.d.ts.map +0 -1
  137. package/dist/src/atoms/figma/rating.figma.d.ts.map +0 -1
  138. package/dist/src/atoms/figma/skeleton.figma.d.ts.map +0 -1
  139. package/dist/src/atoms/figma/status-text.figma.d.ts.map +0 -1
  140. package/dist/src/atoms/figma/textarea.figma.d.ts.map +0 -1
  141. package/dist/src/atoms/figma/tooltip.figma.d.ts.map +0 -1
  142. package/dist/src/molecules/figma/accordion.figma.d.ts.map +0 -1
  143. package/dist/src/molecules/figma/breadcrumb.figma.d.ts.map +0 -1
  144. package/dist/src/molecules/figma/carousel.figma.d.ts.map +0 -1
  145. package/dist/src/molecules/figma/combobox.figma.d.ts.map +0 -1
  146. package/dist/src/molecules/figma/dialog.figma.d.ts.map +0 -1
  147. package/dist/src/molecules/figma/form-checkbox.figma.d.ts.map +0 -1
  148. package/dist/src/molecules/figma/form-input.figma.d.ts.map +0 -1
  149. package/dist/src/molecules/figma/form-numeric-input.figma.d.ts.map +0 -1
  150. package/dist/src/molecules/figma/form-textarea.figma.d.ts.map +0 -1
  151. package/dist/src/molecules/figma/menu.figma.d.ts.map +0 -1
  152. package/dist/src/molecules/figma/pagination.figma.d.ts.map +0 -1
  153. package/dist/src/molecules/figma/popover.figma.d.ts.map +0 -1
  154. package/dist/src/molecules/figma/product-card.figma.d.ts.map +0 -1
  155. package/dist/src/molecules/figma/radio-card.figma.d.ts.map +0 -1
  156. package/dist/src/molecules/figma/radio-group.figma.d.ts.map +0 -1
  157. package/dist/src/molecules/figma/search-form.figma.d.ts.map +0 -1
  158. package/dist/src/molecules/figma/select.figma.d.ts.map +0 -1
  159. package/dist/src/molecules/figma/slider.figma.d.ts.map +0 -1
  160. package/dist/src/molecules/figma/steps.figma.d.ts.map +0 -1
  161. package/dist/src/molecules/figma/switch.figma.d.ts.map +0 -1
  162. package/dist/src/molecules/figma/tabs.figma.d.ts.map +0 -1
  163. package/dist/src/molecules/figma/toast.figma.d.ts.map +0 -1
  164. package/dist/src/molecules/figma/tree-view.figma.d.ts.map +0 -1
  165. /package/dist/src/atoms/{figma/badge.figma.d.ts → badge.figma.d.ts} +0 -0
  166. /package/dist/src/atoms/{figma/button.figma.d.ts → button.figma.d.ts} +0 -0
  167. /package/dist/src/atoms/{figma/checkbox.figma.d.ts → checkbox.figma.d.ts} +0 -0
  168. /package/dist/src/atoms/{figma/icon.figma.d.ts → icon.figma.d.ts} +0 -0
  169. /package/dist/src/atoms/{figma/image.figma.d.ts → image.figma.d.ts} +0 -0
  170. /package/dist/src/atoms/{figma/input.figma.d.ts → input.figma.d.ts} +0 -0
  171. /package/dist/src/atoms/{figma/label.figma.d.ts → label.figma.d.ts} +0 -0
  172. /package/dist/src/atoms/{figma/link-button.figma.d.ts → link-button.figma.d.ts} +0 -0
  173. /package/dist/src/atoms/{figma/link.figma.d.ts → link.figma.d.ts} +0 -0
  174. /package/dist/src/atoms/{figma/numeric-input.figma.d.ts → numeric-input.figma.d.ts} +0 -0
  175. /package/dist/src/atoms/{figma/rating.figma.d.ts → rating.figma.d.ts} +0 -0
  176. /package/dist/src/atoms/{figma/skeleton.figma.d.ts → skeleton.figma.d.ts} +0 -0
  177. /package/dist/src/atoms/{figma/status-text.figma.d.ts → status-text.figma.d.ts} +0 -0
  178. /package/dist/src/atoms/{figma/textarea.figma.d.ts → textarea.figma.d.ts} +0 -0
  179. /package/dist/src/atoms/{figma/tooltip.figma.d.ts → tooltip.figma.d.ts} +0 -0
  180. /package/dist/src/molecules/{figma/accordion.figma.d.ts → accordion.figma.d.ts} +0 -0
  181. /package/dist/src/molecules/{figma/breadcrumb.figma.d.ts → breadcrumb.figma.d.ts} +0 -0
  182. /package/dist/src/molecules/{figma/carousel.figma.d.ts → carousel.figma.d.ts} +0 -0
  183. /package/dist/src/molecules/{figma/combobox.figma.d.ts → combobox.figma.d.ts} +0 -0
  184. /package/dist/src/molecules/{figma/dialog.figma.d.ts → dialog.figma.d.ts} +0 -0
  185. /package/dist/src/molecules/{figma/form-checkbox.figma.d.ts → form-checkbox.figma.d.ts} +0 -0
  186. /package/dist/src/molecules/{figma/form-input.figma.d.ts → form-input.figma.d.ts} +0 -0
  187. /package/dist/src/molecules/{figma/form-numeric-input.figma.d.ts → form-numeric-input.figma.d.ts} +0 -0
  188. /package/dist/src/molecules/{figma/form-textarea.figma.d.ts → form-textarea.figma.d.ts} +0 -0
  189. /package/dist/src/molecules/{figma/menu.figma.d.ts → menu.figma.d.ts} +0 -0
  190. /package/dist/src/molecules/{figma/pagination.figma.d.ts → pagination.figma.d.ts} +0 -0
  191. /package/dist/src/molecules/{figma/popover.figma.d.ts → popover.figma.d.ts} +0 -0
  192. /package/dist/src/molecules/{figma/product-card.figma.d.ts → product-card.figma.d.ts} +0 -0
  193. /package/dist/src/molecules/{figma/radio-card.figma.d.ts → radio-card.figma.d.ts} +0 -0
  194. /package/dist/src/molecules/{figma/radio-group.figma.d.ts → radio-group.figma.d.ts} +0 -0
  195. /package/dist/src/molecules/{figma/search-form.figma.d.ts → search-form.figma.d.ts} +0 -0
  196. /package/dist/src/molecules/{figma/select.figma.d.ts → select.figma.d.ts} +0 -0
  197. /package/dist/src/molecules/{figma/slider.figma.d.ts → slider.figma.d.ts} +0 -0
  198. /package/dist/src/molecules/{figma/steps.figma.d.ts → steps.figma.d.ts} +0 -0
  199. /package/dist/src/molecules/{figma/switch.figma.d.ts → switch.figma.d.ts} +0 -0
  200. /package/dist/src/molecules/{figma/tabs.figma.d.ts → tabs.figma.d.ts} +0 -0
  201. /package/dist/src/molecules/{figma/toast.figma.d.ts → toast.figma.d.ts} +0 -0
  202. /package/dist/src/molecules/{figma/tree-view.figma.d.ts → tree-view.figma.d.ts} +0 -0
@@ -1,54 +1,16 @@
1
- @theme static {
2
- --gap-phone-input-root: var(--spacing-form-field-gap);
3
-
4
- --color-phone-input: var(--color-form-control-bg);
5
- --color-phone-input-fg: var(--color-fg-primary);
6
- --color-phone-input-bg-hover: oklch(
7
- from var(--color-phone-input) calc(l + var(--state-hover)) c h
8
- );
9
- --color-phone-input-bg-focus: oklch(
10
- from var(--color-phone-input) calc(l + var(--state-active)) c h
11
- );
12
- --color-phone-input-border-hover: var(--color-form-control-border-hover);
13
- --color-phone-input-border-focus: var(--color-form-control-border-focus);
14
- --color-phone-input-ring: var(--color-form-control-ring);
15
- --color-phone-input-input-bg-base: transparent;
16
- --color-phone-input-input-bg-hover: transparent;
17
- --color-phone-input-input-bg-focus: transparent;
18
-
19
- --color-phone-input-border-danger: var(--color-danger);
20
- --color-phone-input-border-success: var(--color-success);
21
- --color-phone-input-border-warning: var(--color-warning);
22
-
23
- --color-phone-input-placeholder: var(--color-form-control-placeholder);
24
- --color-phone-input-bg-disabled: var(--color-form-control-bg-disabled);
25
- --color-phone-input-fg-disabled: var(--color-form-control-fg-disabled);
26
- --color-phone-input-border-disabled: var(
27
- --color-form-control-border-disabled
28
- );
29
-
30
- --color-phone-input-divider: var(--color-border-primary);
31
- --color-phone-input-country-calling-code: var(--color-fg-secondary);
32
- --color-phone-input-item-meta: var(--color-phone-input-country-calling-code);
33
-
34
- --padding-phone-input-country-flag: 0;
35
- --spacing-phone-input-country-value: var(--spacing-100);
36
- --spacing-phone-input-item: var(--spacing-150);
37
- --spacing-phone-input-country-flag: 0;
38
-
39
- --text-phone-input-sm: var(--text-sm);
40
- --text-phone-input-md: var(--text-md);
41
- --text-phone-input-lg: var(--text-lg);
42
- --text-phone-input-country-flag: var(--text-xs);
1
+ /*
2
+ * PhoneInput — runtime tokens come from libs/ui/src/tokens/figma/variables.css.
3
+ *
4
+ * Kept here (Figma can't model these):
5
+ * - `--width-phone-input-trigger` — ch unit (12ch).
6
+ * - `--border-phone-input-trigger` — 0 (borderless trigger).
7
+ * - `--spacing-phone-input-country-flag` 0 (min-width reset).
8
+ */
43
9
 
44
- --radius-phone-input-sm: var(--radius-form-control-sm);
45
- --radius-phone-input-md: var(--radius-form-control-md);
46
- --radius-phone-input-lg: var(--radius-form-control-lg);
47
- --radius-phone-input-country-flag: var(--radius-button-sm);
48
- --color-phone-input-trigger-bg-base: transparent;
49
- --color-phone-input-trigger-bg-hover: var(--color-fill-hover);
50
- --border-phone-input-trigger: 0;
10
+ @theme static {
51
11
  --width-phone-input-trigger: 12ch;
12
+ --border-phone-input-trigger: 0;
13
+ --spacing-phone-input-country-flag: 0;
52
14
  }
53
15
 
54
16
  @utility phone-input-focus {
@@ -1,42 +1,16 @@
1
- @theme static {
2
- /* === ZAG.JS SPECIFIC TOKENS === */
3
- /* These tokens are used directly by Zag.js library */
4
- --arrow-size: var(--spacing-150);
5
- --arrow-background: var(--color-popover-bg);
6
-
7
- /* === DERIVED COLORS === */
8
- /* Background colors */
9
- --color-popover-bg: var(--color-overlay);
10
-
11
- /* Foreground colors */
12
- --color-popover-fg: var(--color-fg-primary);
13
- --color-popover-description-fg: var(--color-fg-secondary);
14
-
15
- /* Border colors */
16
- --color-popover-border: var(--color-highlight);
17
-
18
- /* Close trigger colors */
19
- --color-popover-close-trigger-fg: var(--color-popover-fg);
1
+ /*
2
+ * Popover runtime tokens come from libs/ui/src/tokens/figma/variables.css.
3
+ *
4
+ * Kept here:
5
+ * - `--arrow-size` / `--arrow-background` — Zag.js requires these exact
6
+ * CSS variable names; they alias the Figma popover tokens.
7
+ * - `--padding-popover-trigger` composite x/y shorthand (Figma has no
8
+ * composite paddings; queued for figma-additions as split x/y).
9
+ */
20
10
 
21
- /* === SPACING === */
22
- --spacing-popover-sm: var(--spacing-200);
23
- --spacing-popover-md: var(--spacing-250);
24
- --spacing-popover-lg: var(--spacing-350);
25
- --spacing-popover-title-mb: var(--spacing-150);
11
+ @theme static {
12
+ --arrow-size: var(--spacing-popover-arrow-size);
13
+ --arrow-background: var(--color-popover-arrow);
26
14
 
27
- /* Composite spacing */
28
15
  --padding-popover-trigger: var(--spacing-100) var(--spacing-150);
29
-
30
- /* === TYPOGRAPHY === */
31
- --text-popover-title-sm: var(--text-md);
32
- --text-popover-title-md: var(--text-lg);
33
- --text-popover-title-lg: var(--text-xl);
34
- --text-popover-description-size: var(--text-sm);
35
- --font-weight-popover-title: var(--font-weight-semibold);
36
-
37
- /* === BORDERS & RADIUS === */
38
- --radius-popover: var(--radius-sm);
39
-
40
- /* === SHADOWS === */
41
- --shadow-popover: var(--shadow-primary);
42
16
  }
@@ -1,3 +1,21 @@
1
+ /*
2
+ * ProductCard — runtime tokens come from libs/ui/src/tokens/figma/variables.css.
3
+ *
4
+ * Kept here:
5
+ * - `--product-card-layout-{row,column}-grid` — runtime grid templates
6
+ * composed from the Figma image min/max tokens.
7
+ * - `--spacing-product-card-max` (100%) — percent value.
8
+ * - `--border-product-card-width` — consumed via border-(length:--…);
9
+ * aliases Figma's --border-width-product-card.
10
+ *
11
+ * Note (Kai, #425): the button-slot linkage to the Button atom layer
12
+ * (cart/detail/wishlist → button primary/secondary/tertiary) now lives
13
+ * in Figma, where the product-card button tokens alias the same semantic
14
+ * tokens the Button atom uses. A Figma-side retheme of those semantics
15
+ * propagates to both. Queued Figma improvement: alias product-card
16
+ * button tokens to the button component layer directly.
17
+ */
18
+
1
19
  @theme static {
2
20
  --product-card-layout-row-grid: minmax(
3
21
  var(--width-product-card-image-min),
@@ -5,65 +23,10 @@
5
23
  )
6
24
  minmax(0, 1fr);
7
25
  --product-card-layout-column-grid: 1fr;
8
- /* === BASE COLORS === */
9
- --color-product-card-bg: var(--color-surface);
10
- --color-product-card-name-fg: var(--color-fg-primary);
11
-
12
- --color-product-card-price-fg: var(--color-fg-primary);
13
- --color-product-card-border: var(--color-border-primary);
14
-
15
- --color-product-card-stock-fg-in-stock: var(--color-success);
16
- --color-product-card-stock-fg-limited-stock: var(--color-warning);
17
- --color-product-card-stock-fg-out-of-stock: var(--color-danger);
18
-
19
- /* === Button slots ===
20
- * Per @KaiUweCZE on #425: keep ProductCard button tokens linked to the
21
- * Button atom's token layer so a brand-driven Button retheme propagates
22
- * automatically and hover values match Figma's hand-picked colors
23
- * instead of the old `oklch(... calc(l + var(--state-hover)) ...)`
24
- * derivation. cart/detail/wishlist map to primary/secondary/tertiary.
25
- */
26
- --color-product-card-button-cart-bg: var(--color-button-bg-primary-base);
27
- --color-product-card-button-cart-bg-hover: var(--color-button-bg-primary-hover);
28
- --color-product-card-button-cart-fg: var(--color-button-fg-primary);
29
-
30
- --color-product-card-button-detail-bg: var(--color-button-bg-secondary-base);
31
- --color-product-card-button-detail-bg-hover: var(--color-button-bg-secondary-hover);
32
- --color-product-card-button-detail-fg: var(--color-button-fg-secondary);
33
26
 
34
- --color-product-card-button-wishlist-bg: var(--color-button-bg-tertiary-base);
35
- --color-product-card-button-wishlist-bg-hover: var(--color-button-bg-tertiary-hover);
36
- --color-product-card-button-wishlist-fg: var(--color-button-fg-tertiary);
37
-
38
- /* === SPACING === */
39
- --spacing-product-card-padding: var(--spacing-150);
40
- --spacing-product-card-row-layout: var(--spacing-250);
41
- --spacing-product-card-col-layout: var(--spacing-100);
42
- --spacing-product-card-box: var(--spacing-150);
43
27
  --spacing-product-card-max: 100%;
44
- --spacing-product-card-buttons: var(--spacing-150);
45
-
46
- /* === SIZING === */
47
- --width-product-card-image-min: 8rem;
48
- --width-product-card-image-max: 12rem;
49
-
50
- /* === TYPOGRAPHY === */
51
- --text-product-card-name-size: var(--text-md);
52
- --text-product-card-stock-size: var(--text-sm);
53
- --text-product-card-price-size: var(--text-lg);
54
- --leading-product-card-name: var(--line-height-snug);
55
-
56
- --font-weight-product-card-name: var(--font-weight-medium);
57
- --font-weight-product-card-price: var(--font-weight-medium);
58
- --font-weight-product-card-stock: var(--font-weight-medium);
59
-
60
- /* === BORDERS & RADIUS === */
61
- --border-product-card-width: var(--border-width-sm);
62
- --radius-product-card: var(--radius-md);
63
- --radius-product-card-image: var(--radius-product-card);
64
28
 
65
- /* === ASPECT RATIOS === */
66
- --aspect-product-card-image: var(--aspect-square);
29
+ --border-product-card-width: var(--border-width-product-card);
67
30
  }
68
31
 
69
32
  /* === UTILITIES === */
@@ -1,196 +1,7 @@
1
- @theme static {
2
- /* === BASE COLOR MAPPING === */
3
- --color-radio-card-accent: var(--color-primary);
4
- --color-radio-card-accent-hover: var(--color-primary-hover);
5
- --color-radio-card-accent-light: var(--color-primary-light);
6
- --color-radio-card-accent-light-hover: var(--color-primary-light-hover);
7
- --color-radio-card-accent-contrast: var(--color-fg-light);
8
- --color-radio-card-danger: var(--color-danger);
9
- --color-radio-card-fg: var(--color-fg-primary);
10
- --color-radio-card-fg-secondary: var(--color-fg-secondary);
11
- --color-radio-card-fg-disabled: var(--color-fg-disabled);
12
- --color-radio-card-surface: var(--color-surface);
13
- --color-radio-card-border: var(--color-border-primary);
14
-
15
- /* === DERIVED COLORS === */
16
- --color-radio-card-item-bg: var(--color-radio-card-surface);
17
- --color-radio-card-item-border: var(--color-radio-card-border);
18
- --color-radio-card-item-fg: var(--color-radio-card-fg);
19
- --color-radio-card-item-description-fg: var(--color-radio-card-fg-secondary);
20
- --color-radio-card-item-addon-border: var(--color-radio-card-border);
21
- --color-radio-card-item-addon-fg: var(--color-radio-card-fg-secondary);
22
- --color-radio-card-item-indicator-border: var(--color-radio-card-border);
23
- --color-radio-card-item-indicator-bg: transparent;
24
- --color-radio-card-item-indicator-content-fg: var(--color-radio-card-accent);
25
-
26
- /* === STATE VARIATIONS === */
27
- --color-radio-card-item-bg-hover: oklch(
28
- from var(--color-radio-card-item-bg) calc(l + var(--state-hover)) c h
29
- );
30
- --color-radio-card-item-border-hover: oklch(
31
- from var(--color-radio-card-item-border) calc(l + var(--state-hover)) c h
32
- );
33
-
34
- /* === COMPONENT VARIANTS === */
35
- --color-radio-card-item-bg-outline-checked: var(--color-radio-card-item-bg);
36
- --color-radio-card-item-bg-outline-checked-hover: var(
37
- --color-radio-card-item-bg-hover
38
- );
39
- --color-radio-card-item-border-outline-checked: var(
40
- --color-radio-card-accent
41
- );
42
- --color-radio-card-item-border-outline-checked-hover: var(
43
- --color-radio-card-accent-hover
44
- );
45
- --color-radio-card-item-indicator-border-outline-checked: var(
46
- --color-radio-card-accent
47
- );
48
- --color-radio-card-item-indicator-content-fg-outline-checked: var(
49
- --color-radio-card-accent
50
- );
51
-
52
- --color-radio-card-item-bg-subtle-checked: var(
53
- --color-radio-card-accent-light
54
- );
55
- --color-radio-card-item-bg-subtle-checked-hover: var(
56
- --color-radio-card-accent-light-hover
57
- );
58
- --color-radio-card-item-border-subtle-checked: var(
59
- --color-radio-card-accent-light
60
- );
61
- --color-radio-card-item-border-subtle-checked-hover: var(
62
- --color-radio-card-accent-light-hover
63
- );
64
- --color-radio-card-item-fg-subtle-checked: var(
65
- --color-radio-card-accent-contrast
66
- );
67
- --color-radio-card-item-description-fg-subtle-checked: var(
68
- --color-radio-card-accent-contrast
69
- );
70
- --color-radio-card-item-addon-border-subtle-checked: var(
71
- --color-radio-card-accent-light-hover
72
- );
73
- --color-radio-card-item-addon-fg-subtle-checked: var(
74
- --color-radio-card-accent-contrast
75
- );
76
- --color-radio-card-item-indicator-border-subtle-checked: var(
77
- --color-radio-card-accent-contrast
78
- );
79
- --color-radio-card-item-indicator-content-fg-subtle-checked: var(
80
- --color-radio-card-accent-contrast
81
- );
82
-
83
- --color-radio-card-item-bg-solid-checked: var(--color-radio-card-accent);
84
- --color-radio-card-item-bg-solid-checked-hover: var(
85
- --color-radio-card-accent-hover
86
- );
87
- --color-radio-card-item-border-solid-checked: var(--color-radio-card-accent);
88
- --color-radio-card-item-border-solid-checked-hover: var(
89
- --color-radio-card-accent-hover
90
- );
91
- --color-radio-card-item-fg-solid-checked: var(
92
- --color-radio-card-accent-contrast
93
- );
94
- --color-radio-card-item-description-fg-solid-checked: var(
95
- --color-radio-card-accent-contrast
96
- );
97
- --color-radio-card-item-addon-border-solid-checked: var(
98
- --color-radio-card-accent-hover
99
- );
100
- --color-radio-card-item-addon-fg-solid-checked: var(
101
- --color-radio-card-accent-contrast
102
- );
103
- --color-radio-card-item-indicator-bg-solid-checked: var(
104
- --color-radio-card-accent-contrast
105
- );
106
- --color-radio-card-item-indicator-border-solid-checked: var(
107
- --color-radio-card-accent-contrast
108
- );
109
- --color-radio-card-item-indicator-content-fg-solid-checked: var(
110
- --color-radio-card-accent
111
- );
112
-
113
- /* === VALIDATION STATES === */
114
- --color-radio-card-item-border-error: var(--color-radio-card-danger);
115
-
116
- /* === DISABLED STATES === */
117
- --color-radio-card-item-bg-disabled: var(--color-bg-disabled);
118
- --color-radio-card-item-border-disabled: var(--color-border-disabled);
119
- --color-radio-card-item-fg-disabled: var(--color-radio-card-fg-disabled);
120
- --color-radio-card-item-description-fg-disabled: var(
121
- --color-radio-card-fg-disabled
122
- );
123
- --color-radio-card-item-addon-bg-disabled: var(--color-bg-disabled);
124
- --color-radio-card-item-addon-border-disabled: var(--color-border-disabled);
125
- --color-radio-card-item-addon-fg-disabled: var(
126
- --color-radio-card-fg-disabled
127
- );
128
- --color-radio-card-item-indicator-border-disabled: var(
129
- --color-radio-card-item-border-disabled
130
- );
131
- --color-radio-card-item-indicator-bg-disabled: transparent;
132
- --color-radio-card-item-indicator-content-fg-disabled: var(
133
- --color-radio-card-fg-disabled
134
- );
135
-
136
- /* === SPACING === */
137
- --gap-radio-card-root-sm: var(--spacing-100);
138
- --gap-radio-card-root-md: var(--spacing-150);
139
- --gap-radio-card-root-lg: var(--spacing-200);
140
-
141
- --gap-radio-card-item-control-sm: var(--spacing-100);
142
- --gap-radio-card-item-control-md: var(--spacing-150);
143
- --gap-radio-card-item-control-lg: var(--spacing-200);
144
-
145
- --gap-radio-card-item-content-sm: var(--spacing-50);
146
- --gap-radio-card-item-content-md: var(--spacing-100);
147
- --gap-radio-card-item-content-lg: var(--spacing-100);
148
-
149
- --padding-radio-card-item-control-sm: var(--spacing-150);
150
- --padding-radio-card-item-control-md: var(--spacing-200);
151
- --padding-radio-card-item-control-lg: var(--spacing-250);
152
-
153
- --padding-radio-card-item-addon-sm: var(--spacing-100);
154
- --padding-radio-card-item-addon-md: var(--spacing-150);
155
- --padding-radio-card-item-addon-lg: var(--spacing-200);
156
-
157
- --spacing-radio-card-indicator-sm: 1rem;
158
- --spacing-radio-card-indicator-md: 1.125rem;
159
- --spacing-radio-card-indicator-lg: 1.25rem;
160
-
161
- --spacing-radio-card-indicator-mark-sm: 0.375rem;
162
- --spacing-radio-card-indicator-mark-md: 0.5rem;
163
- --spacing-radio-card-indicator-mark-lg: 0.625rem;
164
-
165
- /* === TYPOGRAPHY === */
166
- --text-radio-card-item-sm: var(--text-sm);
167
- --text-radio-card-item-md: var(--text-md);
168
- --text-radio-card-item-lg: var(--text-lg);
169
-
170
- --text-radio-card-item-description-sm: var(--text-sm);
171
- --text-radio-card-item-description-md: var(--text-sm);
172
- --text-radio-card-item-description-lg: var(--text-md);
173
-
174
- --text-radio-card-item-addon-sm: var(--text-xs);
175
- --text-radio-card-item-addon-md: var(--text-sm);
176
- --text-radio-card-item-addon-lg: var(--text-md);
177
-
178
- --font-weight-radio-card-item: var(--font-weight-medium);
179
- --font-weight-radio-card-item-addon: var(--font-weight-medium);
180
-
181
- /* === BORDERS & RADIUS === */
182
- --border-width-radio-card: var(--border-width-sm);
183
- --border-width-radio-card-addon: var(--border-width-sm);
184
- --border-width-radio-card-indicator: var(--border-width-sm);
185
- --radius-radio-card-item: var(--radius-md);
186
- --radius-radio-card-indicator: var(--radius-full);
187
-
188
- /* === SHADOWS === */
189
- --shadow-radio-card-item: var(--shadow-sm);
190
-
191
- /* === FOCUS RINGS === */
192
- --color-radio-card-ring: var(--color-ring);
193
- }
1
+ /*
2
+ * RadioCard runtime tokens come entirely from
3
+ * libs/ui/src/tokens/figma/variables.css.
4
+ */
194
5
 
195
6
  @utility token-icon-radio-card-checked {
196
7
  @apply token-icon-circle;
@@ -1,150 +1,14 @@
1
+ /*
2
+ * RadioGroup — runtime tokens come entirely from
3
+ * libs/ui/src/tokens/figma/variables.css.
4
+ *
5
+ * Kept: `--radio-group-item-grid` runtime grid template.
6
+ */
7
+
1
8
  @theme static {
2
9
  --radio-group-item-grid: min-content minmax(0, 1fr);
3
-
4
- /* === BASE COLOR MAPPING === */
5
- --color-radio-group-accent: var(--color-primary);
6
- --color-radio-group-accent-hover: var(--color-primary-hover);
7
- --color-radio-group-accent-light: var(--color-primary-light);
8
- --color-radio-group-accent-light-hover: var(--color-primary-light-hover);
9
- --color-radio-group-accent-contrast: var(--color-fg-dark);
10
- --color-radio-group-danger: var(--color-danger);
11
- --color-radio-group-fg: var(--color-fg-primary);
12
- --color-radio-group-fg-secondary: var(--color-fg-secondary);
13
- --color-radio-group-fg-disabled: var(--color-fg-disabled);
14
- --color-radio-group-surface: var(--color-fill-active);
15
- --color-radio-group-border: var(--color-border-primary);
16
-
17
- /* === DERIVED COLORS === */
18
- --color-radio-group-item-control-bg: var(--color-radio-group-surface);
19
- --color-radio-group-item-control-border: var(--color-radio-group-border);
20
- --color-radio-group-item-indicator: var(--color-radio-group-accent);
21
- --color-radio-group-item-fg: var(--color-radio-group-fg);
22
- --color-radio-group-item-description: var(--color-radio-group-fg-secondary);
23
-
24
- /* === STATE VARIATIONS === */
25
- --color-radio-group-item-control-bg-hover: oklch(
26
- from var(--color-radio-group-item-control-bg) calc(l + var(--state-hover)) c
27
- h
28
- );
29
- --color-radio-group-item-control-border-hover: oklch(
30
- from var(--color-radio-group-item-control-border)
31
- calc(l + var(--state-hover)) c h
32
- );
33
-
34
- /* === COMPONENT VARIANTS === */
35
- --color-radio-group-item-control-bg-outline-checked: var(
36
- --color-radio-group-item-control-bg
37
- );
38
- --color-radio-group-item-control-bg-outline-checked-hover: var(
39
- --color-radio-group-item-control-bg-hover
40
- );
41
- --color-radio-group-item-control-border-outline-checked: var(
42
- --color-radio-group-accent
43
- );
44
- --color-radio-group-item-control-border-outline-checked-hover: var(
45
- --color-radio-group-accent-hover
46
- );
47
- --color-radio-group-item-indicator-outline: var(
48
- --color-radio-group-item-indicator
49
- );
50
-
51
- --color-radio-group-item-control-bg-subtle-checked: var(
52
- --color-radio-group-accent-light
53
- );
54
- --color-radio-group-item-control-bg-subtle-checked-hover: var(
55
- --color-radio-group-accent-light-hover
56
- );
57
- --color-radio-group-item-control-border-subtle-checked: var(
58
- --color-radio-group-accent-light
59
- );
60
- --color-radio-group-item-control-border-subtle-checked-hover: var(
61
- --color-radio-group-accent-light-hover
62
- );
63
- --color-radio-group-item-indicator-subtle: var(
64
- --color-radio-group-item-indicator
65
- );
66
-
67
- --color-radio-group-item-control-bg-solid-checked: var(
68
- --color-radio-group-accent
69
- );
70
- --color-radio-group-item-control-bg-solid-checked-hover: var(
71
- --color-radio-group-accent-hover
72
- );
73
- --color-radio-group-item-control-border-solid-checked: var(
74
- --color-radio-group-accent
75
- );
76
- --color-radio-group-item-control-border-solid-checked-hover: var(
77
- --color-radio-group-accent-hover
78
- );
79
- --color-radio-group-item-indicator-solid: var(
80
- --color-radio-group-accent-contrast
81
- );
82
-
83
- /* === VALIDATION STATES === */
84
- --color-radio-group-item-control-border-error: var(
85
- --color-radio-group-danger
86
- );
87
- --color-radio-group-ring-error: var(--color-radio-group-danger);
88
-
89
- /* === DISABLED STATES === */
90
- --color-radio-group-item-control-bg-disabled: var(--color-bg-disabled);
91
- --color-radio-group-item-control-border-disabled: var(
92
- --color-border-disabled
93
- );
94
- --color-radio-group-item-indicator-disabled: var(--color-fg-disabled);
95
- --color-radio-group-item-fg-disabled: var(--color-radio-group-fg-disabled);
96
- --color-radio-group-item-description-disabled: var(
97
- --color-radio-group-fg-disabled
98
- );
99
-
100
- /* === SPACING === */
101
- --gap-radio-group-root-sm: var(--spacing-100);
102
- --gap-radio-group-root-md: var(--spacing-150);
103
- --gap-radio-group-root-lg: var(--spacing-200);
104
-
105
- --gap-radio-group-items-vertical-sm: var(--spacing-100);
106
- --gap-radio-group-items-vertical-md: var(--spacing-150);
107
- --gap-radio-group-items-vertical-lg: var(--spacing-200);
108
-
109
- --gap-radio-group-items-horizontal-sm: var(--spacing-150);
110
- --gap-radio-group-items-horizontal-md: var(--spacing-250);
111
- --gap-radio-group-items-horizontal-lg: var(--spacing-300);
112
-
113
- --gap-radio-group-item-sm: var(--spacing-100);
114
- --gap-radio-group-item-md: var(--spacing-150);
115
- --gap-radio-group-item-lg: var(--spacing-200);
116
-
117
- --gap-radio-group-item-content-sm: var(--spacing-50);
118
- --gap-radio-group-item-content-md: var(--spacing-100);
119
- --gap-radio-group-item-content-lg: var(--spacing-100);
120
-
121
- --spacing-radio-group-control-sm: 0.875rem;
122
- --spacing-radio-group-control-md: 1rem;
123
- --spacing-radio-group-control-lg: 1.125rem;
124
- --spacing-radio-group-indicator-sm: 0.5rem;
125
- --spacing-radio-group-indicator-md: 0.625rem;
126
- --spacing-radio-group-indicator-lg: 0.75rem;
127
-
128
- /* === TYPOGRAPHY === */
129
- --text-radio-group-item-sm: var(--text-sm);
130
- --text-radio-group-item-md: var(--text-md);
131
- --text-radio-group-item-lg: var(--text-lg);
132
- --text-radio-group-item-description-sm: var(--text-sm);
133
- --text-radio-group-item-description-md: var(--text-sm);
134
- --text-radio-group-item-description-lg: var(--text-md);
135
-
136
- /* === BORDERS & RADIUS === */
137
- --border-width-radio-group: var(--border-width-sm);
138
- --radius-radio-group-control: var(--radius-full);
139
-
140
- /* === SHADOWS === */
141
- /* No shadows. */
142
-
143
- /* === FOCUS RINGS === */
144
- --color-radio-group-ring: var(--color-ring);
145
10
  }
146
11
 
147
-
148
12
  @utility token-icon-radio-group-checked {
149
13
  @apply token-icon-circle;
150
14
  }
@@ -1,14 +1,4 @@
1
- @theme static {
2
- --border-width-search-form: var(--border-width-form-control);
3
-
4
- /* Spacing for stacked layout */
5
- --spacing-search-form-sm: var(--spacing-150);
6
- --spacing-search-form-md: var(--spacing-200);
7
- --spacing-search-form-lg: var(--spacing-250);
8
-
9
- --radius-search-form: var(--radius-form-control);
10
- --radius-search-form-sm: var(--radius-form-control-sm);
11
- --radius-search-form-md: var(--radius-form-control-md);
12
- --radius-search-form-input: 0;
13
- --padding-search-form-clear-button: var(--spacing-200);
14
- }
1
+ /*
2
+ * SearchForm — runtime tokens come entirely from
3
+ * libs/ui/src/tokens/figma/variables.css.
4
+ */