@hellboy/ds 0.1.3 → 0.2.7

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 (298) hide show
  1. package/README.md +512 -162
  2. package/{src/style/components/badge → dist/components}/badge.css +9 -25
  3. package/dist/components/badge.d.mts +12 -0
  4. package/dist/components/badge.d.ts +12 -0
  5. package/dist/components/badge.js +42 -0
  6. package/dist/components/badge.mjs +15 -0
  7. package/dist/components/banner.css +280 -0
  8. package/dist/components/banner.d.mts +12 -0
  9. package/dist/components/banner.d.ts +12 -0
  10. package/dist/components/banner.js +184 -0
  11. package/dist/components/banner.mjs +147 -0
  12. package/dist/components/button-group.css +289 -0
  13. package/dist/components/button-group.d.mts +81 -0
  14. package/dist/components/button-group.d.ts +81 -0
  15. package/dist/components/button-group.js +180 -0
  16. package/dist/components/button-group.mjs +143 -0
  17. package/{src/style/components/button → dist/components}/button.css +59 -62
  18. package/dist/components/button.d.mts +57 -0
  19. package/dist/components/button.d.ts +57 -0
  20. package/dist/components/button.js +129 -0
  21. package/dist/components/button.mjs +92 -0
  22. package/{src/style/components/card → dist/components}/card.css +9 -30
  23. package/dist/components/card.d.mts +31 -0
  24. package/dist/components/card.d.ts +31 -0
  25. package/dist/components/card.js +59 -0
  26. package/dist/components/card.mjs +32 -0
  27. package/{src/style → dist}/components/checkbox.css +51 -43
  28. package/dist/components/checkbox.d.mts +31 -0
  29. package/dist/components/checkbox.d.ts +31 -0
  30. package/dist/components/checkbox.js +130 -0
  31. package/dist/components/checkbox.mjs +93 -0
  32. package/{src/style/components/code-block → dist/components}/code-block.css +3 -7
  33. package/dist/components/code-block.d.mts +24 -0
  34. package/dist/components/code-block.d.ts +24 -0
  35. package/dist/components/code-block.js +43 -0
  36. package/dist/components/code-block.mjs +16 -0
  37. package/dist/components/color-control.css +285 -0
  38. package/dist/components/color-control.d.mts +5 -0
  39. package/dist/components/color-control.d.ts +5 -0
  40. package/dist/components/color-control.js +534 -0
  41. package/dist/components/color-control.mjs +497 -0
  42. package/dist/components/dialog.css +930 -0
  43. package/dist/components/dialog.d.mts +32 -0
  44. package/dist/components/dialog.d.ts +32 -0
  45. package/dist/components/dialog.js +1111 -0
  46. package/dist/components/dialog.mjs +1074 -0
  47. package/dist/components/divider.css +356 -0
  48. package/dist/components/divider.d.mts +32 -0
  49. package/dist/components/divider.d.ts +32 -0
  50. package/dist/components/divider.js +344 -0
  51. package/dist/components/divider.mjs +307 -0
  52. package/{src/style/components/drag-handle → dist/components}/drag-handle.css +3 -18
  53. package/dist/components/drag-handle.d.mts +11 -0
  54. package/dist/components/drag-handle.d.ts +11 -0
  55. package/dist/components/drag-handle.js +103 -0
  56. package/dist/components/drag-handle.mjs +66 -0
  57. package/dist/components/drawer.css +1027 -0
  58. package/dist/components/drawer.d.mts +14 -0
  59. package/dist/components/drawer.d.ts +14 -0
  60. package/dist/components/drawer.js +1072 -0
  61. package/dist/components/drawer.mjs +1035 -0
  62. package/dist/components/floating-bar.css +17 -0
  63. package/dist/components/floating-bar.d.mts +25 -0
  64. package/dist/components/floating-bar.d.ts +25 -0
  65. package/dist/components/floating-bar.js +52 -0
  66. package/dist/components/floating-bar.mjs +25 -0
  67. package/dist/components/footer.css +40 -0
  68. package/dist/components/footer.d.mts +8 -0
  69. package/dist/components/footer.d.ts +8 -0
  70. package/dist/components/footer.js +44 -0
  71. package/dist/components/footer.mjs +17 -0
  72. package/dist/components/grid.css +47 -0
  73. package/dist/components/grid.d.mts +27 -0
  74. package/dist/components/grid.d.ts +27 -0
  75. package/dist/components/grid.js +52 -0
  76. package/dist/components/grid.mjs +25 -0
  77. package/dist/components/header.css +1075 -0
  78. package/dist/components/header.d.mts +35 -0
  79. package/dist/components/header.d.ts +35 -0
  80. package/dist/components/header.js +1402 -0
  81. package/dist/components/header.mjs +1365 -0
  82. package/dist/components/hero.css +121 -0
  83. package/dist/components/hero.d.mts +111 -0
  84. package/dist/components/hero.d.ts +111 -0
  85. package/dist/components/hero.js +285 -0
  86. package/dist/components/hero.mjs +248 -0
  87. package/{src/style/components/icons → dist/components}/icons.css +14 -15
  88. package/dist/components/icons.d.mts +104 -0
  89. package/dist/components/icons.d.ts +104 -0
  90. package/dist/components/icons.js +239 -0
  91. package/dist/components/icons.mjs +203 -0
  92. package/{src/style/components/input → dist/components}/input.css +189 -102
  93. package/dist/components/input.d.mts +114 -0
  94. package/dist/components/input.d.ts +114 -0
  95. package/dist/components/input.js +926 -0
  96. package/dist/components/input.mjs +879 -0
  97. package/dist/components/layout.css +551 -0
  98. package/dist/components/layout.d.mts +16 -0
  99. package/dist/components/layout.d.ts +16 -0
  100. package/dist/components/layout.js +387 -0
  101. package/dist/components/layout.mjs +352 -0
  102. package/{src/style/components/list → dist/components}/list.css +47 -41
  103. package/dist/components/list.d.mts +46 -0
  104. package/dist/components/list.d.ts +46 -0
  105. package/dist/components/list.js +124 -0
  106. package/dist/components/list.mjs +96 -0
  107. package/dist/components/navbar.css +706 -0
  108. package/dist/components/navbar.d.mts +56 -0
  109. package/dist/components/navbar.d.ts +56 -0
  110. package/dist/components/navbar.js +994 -0
  111. package/dist/components/navbar.mjs +952 -0
  112. package/{src/style/components/page-index → dist/components}/page-index.css +2 -47
  113. package/dist/components/page-index.d.mts +25 -0
  114. package/dist/components/page-index.d.ts +25 -0
  115. package/dist/components/page-index.js +239 -0
  116. package/dist/components/page-index.mjs +202 -0
  117. package/{src/style/components/page → dist/components}/page.css +4 -15
  118. package/dist/components/page.d.mts +30 -0
  119. package/dist/components/page.d.ts +30 -0
  120. package/dist/components/page.js +40 -0
  121. package/dist/components/page.mjs +13 -0
  122. package/dist/components/popover.css +87 -0
  123. package/dist/components/popover.d.mts +22 -0
  124. package/dist/components/popover.d.ts +22 -0
  125. package/dist/components/popover.js +243 -0
  126. package/dist/components/popover.mjs +206 -0
  127. package/{src/style → dist}/components/radio.css +8 -51
  128. package/dist/components/radio.d.mts +59 -0
  129. package/dist/components/radio.d.ts +59 -0
  130. package/dist/components/radio.js +133 -0
  131. package/dist/components/radio.mjs +95 -0
  132. package/dist/components/section.css +993 -0
  133. package/dist/components/section.d.mts +33 -0
  134. package/dist/components/section.d.ts +33 -0
  135. package/dist/components/section.js +1401 -0
  136. package/dist/components/section.mjs +1364 -0
  137. package/dist/components/select.css +391 -0
  138. package/dist/components/select.d.mts +63 -0
  139. package/dist/components/select.d.ts +63 -0
  140. package/dist/components/select.js +452 -0
  141. package/dist/components/select.mjs +415 -0
  142. package/{src/style/components/slider → dist/components}/slider.css +55 -33
  143. package/dist/components/slider.d.mts +69 -0
  144. package/dist/components/slider.d.ts +69 -0
  145. package/dist/components/slider.js +254 -0
  146. package/dist/components/slider.mjs +217 -0
  147. package/dist/components/switch.css +1081 -0
  148. package/dist/components/switch.d.mts +33 -0
  149. package/dist/components/switch.d.ts +33 -0
  150. package/dist/components/switch.js +1092 -0
  151. package/dist/components/switch.mjs +1055 -0
  152. package/{src/style/components/table → dist/components}/table.css +3 -28
  153. package/dist/components/table.d.mts +42 -0
  154. package/dist/components/table.d.ts +42 -0
  155. package/dist/components/table.js +108 -0
  156. package/dist/components/table.mjs +76 -0
  157. package/dist/components/tag.css +97 -0
  158. package/dist/components/tag.d.mts +12 -0
  159. package/dist/components/tag.d.ts +12 -0
  160. package/dist/components/tag.js +42 -0
  161. package/dist/components/tag.mjs +15 -0
  162. package/dist/components/textarea.css +1359 -0
  163. package/dist/components/textarea.d.mts +84 -0
  164. package/dist/components/textarea.d.ts +84 -0
  165. package/dist/components/textarea.js +1962 -0
  166. package/dist/components/textarea.mjs +1924 -0
  167. package/{src/style/components/theme-control → dist/components}/theme-control.css +3 -7
  168. package/dist/components/theme-control.d.mts +9 -0
  169. package/dist/components/theme-control.d.ts +9 -0
  170. package/dist/components/theme-control.js +235 -0
  171. package/dist/components/theme-control.mjs +200 -0
  172. package/{src/style/components/tooltip → dist/components}/tooltip.css +5 -13
  173. package/dist/components/tooltip.d.mts +12 -0
  174. package/dist/components/tooltip.d.ts +12 -0
  175. package/dist/components/tooltip.js +200 -0
  176. package/dist/components/tooltip.mjs +163 -0
  177. package/dist/icons-Czahnf-r.d.mts +15 -0
  178. package/dist/icons-Czahnf-r.d.ts +15 -0
  179. package/dist/index.css +2914 -2067
  180. package/dist/index.d.mts +144 -721
  181. package/dist/index.d.ts +144 -721
  182. package/dist/index.js +4076 -2282
  183. package/dist/index.mjs +4132 -2366
  184. package/dist/theme.css +34 -34
  185. package/package.json +27 -8
  186. package/dist/index.css.map +0 -1
  187. package/dist/index.js.map +0 -1
  188. package/dist/index.mjs.map +0 -1
  189. package/hellboy-ds-0.1.2.tgz +0 -0
  190. package/src/components/badge/Badge.tsx +0 -29
  191. package/src/components/badge/index.ts +0 -1
  192. package/src/components/banner/Banner.tsx +0 -48
  193. package/src/components/banner/banner.css +0 -44
  194. package/src/components/banner/index.ts +0 -1
  195. package/src/components/button/button.tsx +0 -127
  196. package/src/components/button/index.ts +0 -1
  197. package/src/components/card/card.tsx +0 -57
  198. package/src/components/card/index.ts +0 -1
  199. package/src/components/checkbox/Checkbox.tsx +0 -98
  200. package/src/components/checkbox/index.ts +0 -1
  201. package/src/components/code-block/code-block.tsx +0 -44
  202. package/src/components/code-block/index.ts +0 -1
  203. package/src/components/color-control/color-control.tsx +0 -322
  204. package/src/components/color-control/index.ts +0 -1
  205. package/src/components/drag-handle/DragHandle.tsx +0 -78
  206. package/src/components/drag-handle/index.ts +0 -1
  207. package/src/components/drawer/drawer.tsx +0 -82
  208. package/src/components/drawer/index.ts +0 -1
  209. package/src/components/floating-bar/floating-bar.tsx +0 -52
  210. package/src/components/floating-bar/index.ts +0 -2
  211. package/src/components/footer/footer.tsx +0 -28
  212. package/src/components/footer/index.ts +0 -1
  213. package/src/components/grid/Grid.tsx +0 -53
  214. package/src/components/grid/index.ts +0 -1
  215. package/src/components/header/header.tsx +0 -57
  216. package/src/components/header/index.ts +0 -1
  217. package/src/components/icons/icons.tsx +0 -44
  218. package/src/components/icons/index.ts +0 -1
  219. package/src/components/index.ts +0 -29
  220. package/src/components/input/DatePicker.tsx +0 -133
  221. package/src/components/input/Input.tsx +0 -220
  222. package/src/components/input/InputDate.tsx +0 -10
  223. package/src/components/input/InputDateTime.tsx +0 -10
  224. package/src/components/input/InputEmail.tsx +0 -10
  225. package/src/components/input/InputField.tsx +0 -137
  226. package/src/components/input/InputNumber.tsx +0 -10
  227. package/src/components/input/InputPassword.tsx +0 -10
  228. package/src/components/input/InputSearch.tsx +0 -10
  229. package/src/components/input/InputTel.tsx +0 -10
  230. package/src/components/input/InputText.tsx +0 -10
  231. package/src/components/input/InputTime.tsx +0 -10
  232. package/src/components/input/InputUrl.tsx +0 -10
  233. package/src/components/input/TimePicker.tsx +0 -151
  234. package/src/components/input/index.ts +0 -11
  235. package/src/components/layout/Layout.tsx +0 -244
  236. package/src/components/layout/index.ts +0 -1
  237. package/src/components/list/List.tsx +0 -159
  238. package/src/components/list/index.ts +0 -1
  239. package/src/components/navbar/MenuCategory.tsx +0 -20
  240. package/src/components/navbar/MenuGroup.tsx +0 -288
  241. package/src/components/navbar/MenuItem.tsx +0 -65
  242. package/src/components/navbar/Navbar.tsx +0 -23
  243. package/src/components/navbar/index.ts +0 -4
  244. package/src/components/page/index.ts +0 -1
  245. package/src/components/page/page.tsx +0 -46
  246. package/src/components/page-index/PageIndex.tsx +0 -275
  247. package/src/components/page-index/index.ts +0 -1
  248. package/src/components/popover/index.ts +0 -1
  249. package/src/components/popover/popover.tsx +0 -199
  250. package/src/components/radio/Radio.tsx +0 -176
  251. package/src/components/radio/index.ts +0 -1
  252. package/src/components/section/index.ts +0 -1
  253. package/src/components/section/section.tsx +0 -66
  254. package/src/components/select/Select.tsx +0 -212
  255. package/src/components/select/index.ts +0 -1
  256. package/src/components/slider/Slider.tsx +0 -267
  257. package/src/components/slider/index.ts +0 -1
  258. package/src/components/switch/index.ts +0 -1
  259. package/src/components/switch/switch.tsx +0 -99
  260. package/src/components/table/Table.tsx +0 -147
  261. package/src/components/table/index.ts +0 -1
  262. package/src/components/theme-control/index.ts +0 -1
  263. package/src/components/theme-control/theme-control.tsx +0 -78
  264. package/src/components/tooltip/index.ts +0 -1
  265. package/src/components/tooltip/tooltip.tsx +0 -207
  266. package/src/contexts/NavbarTooltipContext.tsx +0 -48
  267. package/src/contexts/index.ts +0 -1
  268. package/src/foundations/motion.md +0 -136
  269. package/src/index.ts +0 -40
  270. package/src/style/_shared/field.css +0 -69
  271. package/src/style/components/color-control/color-control.css +0 -126
  272. package/src/style/components/drawer/drawer.css +0 -210
  273. package/src/style/components/floating-bar/floating-bar.css +0 -39
  274. package/src/style/components/footer/footer.css +0 -108
  275. package/src/style/components/grid/grid.css +0 -33
  276. package/src/style/components/header/header.css +0 -44
  277. package/src/style/components/layout/layout.css +0 -205
  278. package/src/style/components/navbar/navbar.css +0 -342
  279. package/src/style/components/popover/popover.css +0 -44
  280. package/src/style/components/section/section.css +0 -67
  281. package/src/style/components/select/select.css +0 -143
  282. package/src/style/components/switch/switch.css +0 -267
  283. package/src/style/foundations/global.css +0 -316
  284. package/src/style/foundations/motion.css +0 -164
  285. package/src/style/foundations/spacing.css +0 -51
  286. package/src/style/foundations/typography.css +0 -39
  287. package/src/style/foundations/z-index.css +0 -81
  288. package/src/style/modes/dark.css +0 -146
  289. package/src/style/modes/light.css +0 -147
  290. package/src/style/semantic.css +0 -52
  291. package/src/style/styles.css +0 -51
  292. package/src/style/themes/theme.json +0 -37
  293. package/src/utils/README.md +0 -305
  294. package/src/utils/USER_PREFERENCES.md +0 -558
  295. package/src/utils/theme.ts +0 -127
  296. package/src/utils/user-preferences.ts +0 -577
  297. package/tsconfig.json +0 -25
  298. package/tsup.config.ts +0 -52
@@ -0,0 +1,1081 @@
1
+ /* src/style/_shared/backdrop.css */
2
+ .backdrop {
3
+ position: fixed;
4
+ top: 0;
5
+ left: 0;
6
+ right: 0;
7
+ bottom: 0;
8
+ background-color: hsla(var(--secondary-hue), var(--secondary-saturation), var(--secondary-lightness), 0.5);
9
+ opacity: 0;
10
+ visibility: hidden;
11
+ }
12
+ .backdrop[data-enter] {
13
+ opacity: 1;
14
+ visibility: visible;
15
+ animation: fadeIn var(--motion-duration-base) var(--motion-easing-decelerate);
16
+ }
17
+ .backdrop[data-leave] {
18
+ opacity: 0;
19
+ visibility: hidden;
20
+ animation: fadeOut var(--motion-duration-base) var(--motion-easing-accelerate);
21
+ }
22
+ .backdrop--blur {
23
+ backdrop-filter: blur(4px);
24
+ }
25
+ @keyframes fadeIn {
26
+ from {
27
+ opacity: 0;
28
+ }
29
+ to {
30
+ opacity: 1;
31
+ }
32
+ }
33
+ @keyframes fadeOut {
34
+ from {
35
+ opacity: 1;
36
+ }
37
+ to {
38
+ opacity: 0;
39
+ }
40
+ }
41
+
42
+ /* src/style/components/icons/icons.css */
43
+ .icon {
44
+ display: inline-flex;
45
+ align-items: center;
46
+ justify-content: center;
47
+ }
48
+ .icon--skeleton {
49
+ background:
50
+ linear-gradient(
51
+ 90deg,
52
+ rgba(0, 0, 0, 0.06) 0%,
53
+ rgba(0, 0, 0, 0.03) 50%,
54
+ rgba(0, 0, 0, 0.06) 100%);
55
+ border-radius: 4px;
56
+ animation: hb-skeleton 1.2s ease-in-out infinite;
57
+ }
58
+ @keyframes hb-skeleton {
59
+ 0% {
60
+ background-position: 200% 0;
61
+ }
62
+ 100% {
63
+ background-position: -200% 0;
64
+ }
65
+ }
66
+ .icon {
67
+ display: inline-block;
68
+ flex-shrink: 0;
69
+ transition: color var(--transition-base, 0.2s ease);
70
+ }
71
+ .icon--interactive {
72
+ cursor: pointer;
73
+ color: var(--color-foreground-1);
74
+ }
75
+ .icon--interactive:hover:not(:disabled) {
76
+ color: var(--color-action-primary-hover);
77
+ }
78
+ .icon--interactive:active:not(:disabled) {
79
+ color: var(--color-action-primary-active);
80
+ }
81
+ .icon--interactive:disabled {
82
+ cursor: not-allowed;
83
+ color: var(--color-foreground-2);
84
+ }
85
+
86
+ /* src/style/components/button/button.css */
87
+ .btn {
88
+ position: relative;
89
+ display: inline-flex;
90
+ align-items: center;
91
+ justify-content: center;
92
+ gap: var(--spacing-2);
93
+ white-space: nowrap;
94
+ text-decoration: none;
95
+ user-select: none;
96
+ border-radius: var(--radius-base);
97
+ border: 1px solid transparent;
98
+ font-family: var(--font-family-action);
99
+ font-weight: var(--font-weight-semibold);
100
+ line-height: var(--line-height-normal);
101
+ letter-spacing: var(--letter-spacing-normal);
102
+ transition: var(--motion-transition-hover-in), transform var(--motion-duration-fast) var(--motion-easing-linear);
103
+ cursor: pointer;
104
+ }
105
+ .btn:not(:hover):not(:active) {
106
+ transition: var(--motion-transition-hover-out), transform var(--motion-duration-fast) var(--motion-easing-accelerate);
107
+ }
108
+ .btn--xs {
109
+ padding: var(--spacing-1);
110
+ font-size: var(--font-size-xs);
111
+ }
112
+ .btn--sm {
113
+ padding: var(--spacing-2) var(--spacing-3);
114
+ font-size: var(--font-size-sm);
115
+ min-height: 32px;
116
+ }
117
+ .btn--md {
118
+ padding: var(--spacing-2) var(--spacing-4);
119
+ font-size: var(--font-size-base);
120
+ min-height: 40px;
121
+ }
122
+ .btn--lg {
123
+ padding: var(--spacing-3) var(--spacing-6);
124
+ font-size: var(--font-size-lg);
125
+ min-height: 48px;
126
+ }
127
+ .btn--icon-only {
128
+ padding: var(--spacing-2);
129
+ width: auto;
130
+ aspect-ratio: 1;
131
+ }
132
+ .btn--icon-only.btn--xs {
133
+ padding: var(--spacing-1);
134
+ min-width: 24px;
135
+ min-height: 24px;
136
+ }
137
+ .btn--icon-only.btn--sm {
138
+ padding: var(--spacing-1);
139
+ min-width: 32px;
140
+ min-height: 32px;
141
+ }
142
+ .btn--icon-only.btn--md {
143
+ padding: var(--spacing-2);
144
+ min-width: 40px;
145
+ min-height: 40px;
146
+ }
147
+ .btn--icon-only.btn--lg {
148
+ padding: var(--spacing-3);
149
+ min-width: 48px;
150
+ min-height: 48px;
151
+ }
152
+ .btn--active {
153
+ background-color: var(--color-accent);
154
+ color: var(--color-on-accent);
155
+ }
156
+ .btn--active:hover:not(:disabled) {
157
+ background-color: var(--color-accent-hover);
158
+ color: var(--color-on-accent);
159
+ }
160
+ .btn--active:active:not(:disabled) {
161
+ background-color: var(--color-accent-active);
162
+ color: var(--color-on-accent);
163
+ }
164
+ .btn--primary {
165
+ background-color: var(--color-action-primary);
166
+ outline: 0px solid var(--color-action-primary);
167
+ box-shadow: 0 0 0 0 var(--color-action-primary);
168
+ color: var(--color-on-action-primary);
169
+ }
170
+ .btn--primary:hover:not(:disabled) {
171
+ background-color: var(--color-action-primary-hover);
172
+ box-shadow: 0 0 0 2px var(--color-action-primary-hover);
173
+ outline: 2px solid var(--color-action-primary-hover);
174
+ }
175
+ .btn--primary:active:not(:disabled) {
176
+ background-color: var(--color-action-primary-active);
177
+ transform: scale(0.98);
178
+ }
179
+ .btn--primary:focus-visible:not(:disabled) {
180
+ outline: 2px solid var(--color-action-primary);
181
+ outline-offset: 2px;
182
+ }
183
+ .btn--secondary {
184
+ background-color: var(--color-action-secondary);
185
+ color: var(--color-on-action-secondary);
186
+ }
187
+ .btn--secondary:hover:not(:disabled) {
188
+ background-color: var(--color-action-secondary-hover);
189
+ }
190
+ .btn--secondary:active:not(:disabled) {
191
+ background-color: var(--color-action-secondary-active);
192
+ transform: scale(0.98);
193
+ }
194
+ .btn--secondary:focus-visible:not(:disabled) {
195
+ outline: 2px solid var(--color-action-secondary);
196
+ outline-offset: 2px;
197
+ }
198
+ .btn--tertiary {
199
+ background-color: transparent;
200
+ color: var(--color-foreground-2);
201
+ border-color: var(--color-action-tertiary);
202
+ border-width: 2px;
203
+ }
204
+ .btn--tertiary:hover:not(:disabled) {
205
+ background-color: hsla(var(--accent-hue), var(--accent-saturation), var(--accent-lightness-hover), 0.2);
206
+ border-color: var(--color-action-primary-hover);
207
+ color: var(--color-foreground-2);
208
+ }
209
+ .btn--tertiary:active:not(:disabled) {
210
+ background-color: hsla(var(--accent-hue), var(--accent-saturation), var(--accent-lightness-active), 0.2);
211
+ border-color: var(--color-action-primary-active);
212
+ color: var(--color-action-primary-active);
213
+ transform: scale(0.98);
214
+ }
215
+ .btn--tertiary:focus-visible:not(:disabled) {
216
+ outline: 2px solid var(--color-action-primary);
217
+ outline-offset: 2px;
218
+ }
219
+ .btn--ghost {
220
+ background-color: transparent;
221
+ color: var(--color-foreground-2);
222
+ border-color: transparent;
223
+ border-width: 2px;
224
+ }
225
+ .btn--ghost:hover:not(:disabled) {
226
+ background-color: transparent;
227
+ border-color: var(--color-action-primary-hover);
228
+ color: var(--color-foreground-2);
229
+ }
230
+ .btn--ghost:active:not(:disabled) {
231
+ background-color: hsla(var(--accent-hue), var(--accent-saturation), var(--accent-lightness-active), 0.2);
232
+ border-color: var(--color-action-primary-active);
233
+ color: var(--color-action-primary-active);
234
+ transform: scale(0.98);
235
+ }
236
+ .btn--ghost:focus-visible:not(:disabled) {
237
+ outline: 2px solid var(--color-action-primary);
238
+ outline-offset: 2px;
239
+ }
240
+ .btn:disabled {
241
+ background-color: var(--color-primary-disabled);
242
+ color: var(--color-foreground-2);
243
+ cursor: not-allowed;
244
+ border-color: var(--color-primary-disabled);
245
+ }
246
+ .btn--full-width {
247
+ width: 100%;
248
+ }
249
+ @media (hover: none) and (pointer: coarse) {
250
+ .btn--primary:active:not(:disabled) {
251
+ background-color: var(--color-primary-active);
252
+ }
253
+ .btn--secondary:active:not(:disabled) {
254
+ background-color: var(--color-secondary-active);
255
+ }
256
+ .btn--tertiary:active:not(:disabled) {
257
+ background-color: hsla(var(--primary-hue), var(--primary-saturation), var(--primary-lightness-active), 0.2);
258
+ }
259
+ .btn--ghost:active:not(:disabled) {
260
+ background-color: hsla(var(--primary-hue), var(--primary-saturation), var(--primary-lightness-active), 0.2);
261
+ }
262
+ }
263
+ .btn__spinner {
264
+ display: inline-block;
265
+ width: 16px;
266
+ height: 16px;
267
+ border-radius: 50%;
268
+ border: 2px solid currentColor;
269
+ border-top-color: transparent;
270
+ animation: btn-spin 0.6s linear infinite;
271
+ }
272
+ .btn__icon {
273
+ flex-shrink: 0;
274
+ }
275
+ .btn__icon-placeholder {
276
+ flex-shrink: 0;
277
+ }
278
+ @keyframes btn-spin {
279
+ to {
280
+ transform: rotate(360deg);
281
+ }
282
+ }
283
+
284
+ /* src/style/components/dialog/dialog.css */
285
+ .dialog__portal {
286
+ position: fixed;
287
+ top: 0;
288
+ left: 0;
289
+ right: 0;
290
+ bottom: 0;
291
+ z-index: var(--z-dialog);
292
+ display: flex;
293
+ align-items: center;
294
+ justify-content: center;
295
+ padding: var(--spacing-4);
296
+ }
297
+ .dialog {
298
+ position: relative;
299
+ display: flex;
300
+ flex-direction: column;
301
+ background-color: var(--color-bg-1);
302
+ border-radius: 12px;
303
+ box-shadow: 0 20px 25px -5px hsla(var(--primary-hue), var(--primary-saturation), var(--primary-lightness), 0.1), 0 10px 10px -5px hsla(var(--primary-hue), var(--primary-saturation), var(--primary-lightness), 0.04);
304
+ max-height: calc(100vh - var(--spacing-8));
305
+ width: 100%;
306
+ animation: dialogSlideIn var(--motion-duration-slow) var(--motion-easing-decelerate);
307
+ overflow: hidden;
308
+ }
309
+ .dialog--sm {
310
+ max-width: 400px;
311
+ }
312
+ .dialog--md {
313
+ max-width: 600px;
314
+ }
315
+ .dialog--lg {
316
+ max-width: 800px;
317
+ }
318
+ .dialog__header {
319
+ display: flex;
320
+ align-items: center;
321
+ justify-content: space-between;
322
+ gap: var(--spacing-3);
323
+ padding: var(--spacing-4);
324
+ border-bottom: 1px solid var(--color-bg-2);
325
+ }
326
+ .dialog__title {
327
+ margin: 0;
328
+ font-size: var(--font-size-lg);
329
+ font-weight: var(--font-weight-semibold);
330
+ color: var(--color-foreground-0);
331
+ line-height: var(--line-height-tight);
332
+ }
333
+ .dialog__content {
334
+ flex: 1;
335
+ overflow-y: auto;
336
+ padding: var(--spacing-4);
337
+ color: var(--color-foreground-1);
338
+ }
339
+ .dialog__footer {
340
+ display: flex;
341
+ align-items: center;
342
+ justify-content: flex-end;
343
+ gap: var(--spacing-2);
344
+ padding: var(--spacing-4);
345
+ border-top: 1px solid var(--color-bg-2);
346
+ }
347
+ @keyframes dialogBackdropFadeIn {
348
+ from {
349
+ opacity: 0;
350
+ }
351
+ to {
352
+ opacity: 1;
353
+ }
354
+ }
355
+ @keyframes dialogSlideIn {
356
+ from {
357
+ opacity: 0;
358
+ transform: scale(0.95) translateY(-10px);
359
+ }
360
+ to {
361
+ opacity: 1;
362
+ transform: scale(1) translateY(0);
363
+ }
364
+ }
365
+ @media (max-width: 640px) {
366
+ .dialog__portal {
367
+ padding: 0;
368
+ align-items: flex-end;
369
+ }
370
+ .dialog {
371
+ max-width: 100%;
372
+ max-height: 90vh;
373
+ border-radius: 12px 12px 0 0;
374
+ animation: dialogSlideUp var(--motion-duration-slow) var(--motion-easing-decelerate);
375
+ }
376
+ .dialog--sm,
377
+ .dialog--md,
378
+ .dialog--lg {
379
+ max-width: 100%;
380
+ }
381
+ @keyframes dialogSlideUp {
382
+ from {
383
+ opacity: 0;
384
+ transform: translateY(100%);
385
+ }
386
+ to {
387
+ opacity: 1;
388
+ transform: translateY(0);
389
+ }
390
+ }
391
+ }
392
+ @media (min-width: 641px) and (max-width: 1024px) {
393
+ .dialog__portal {
394
+ padding: var(--spacing-3);
395
+ }
396
+ .dialog--lg {
397
+ max-width: 90vw;
398
+ }
399
+ }
400
+
401
+ /* src/style/_shared/field.css */
402
+ .field {
403
+ width: 100%;
404
+ font-family: inherit;
405
+ font-size: var(--font-size-base);
406
+ line-height: 1.5;
407
+ color: var(--color-foreground-1);
408
+ background-color: var(--color-bg-1);
409
+ border: none;
410
+ outline: 2px solid var(--color-foreground-3);
411
+ outline-offset: -2px;
412
+ border-radius: var(--radius-base);
413
+ padding: var(--spacing-2) var(--spacing-3);
414
+ transition: outline-color var(--transition-base), box-shadow var(--transition-base);
415
+ cursor: pointer;
416
+ }
417
+ .field--sm {
418
+ font-size: var(--font-size-sm);
419
+ padding: var(--spacing-1) var(--spacing-2);
420
+ }
421
+ .field--lg {
422
+ font-size: var(--font-size-lg);
423
+ padding: var(--spacing-3) var(--spacing-4);
424
+ }
425
+ .field:focus,
426
+ .field:focus-visible {
427
+ outline-color: var(--color-action-primary);
428
+ box-shadow: var(--shadow-focus-ring);
429
+ }
430
+ .field:hover:not(:disabled):not(.field--error) {
431
+ outline-color: var(--color-action-primary-hover);
432
+ }
433
+ .field--error {
434
+ outline-color: hsla(var(--error-hue), var(--error-saturation), 50%, 1);
435
+ }
436
+ .field--error:focus,
437
+ .field--error:focus-visible {
438
+ outline-color: hsla(var(--error-hue), var(--error-saturation), 50%, 1);
439
+ box-shadow: var(--shadow-focus-ring-error);
440
+ }
441
+ .field:disabled,
442
+ .field--disabled {
443
+ cursor: not-allowed;
444
+ opacity: 0.6;
445
+ background-color: var(--color-bg-2);
446
+ }
447
+ .field--open {
448
+ outline-color: var(--color-action-primary);
449
+ }
450
+
451
+ /* src/style/components/input/input.css */
452
+ .input-container {
453
+ display: flex;
454
+ flex-direction: column;
455
+ gap: var(--spacing-2);
456
+ }
457
+ .input-container--full-width {
458
+ width: 100%;
459
+ }
460
+ .input__label {
461
+ font-size: var(--font-size-sm);
462
+ font-weight: 500;
463
+ color: var(--color-foreground-1);
464
+ cursor: pointer;
465
+ }
466
+ .input__wrapper {
467
+ position: relative;
468
+ display: flex;
469
+ align-items: center;
470
+ }
471
+ .input {
472
+ width: 100%;
473
+ font-family: inherit;
474
+ font-size: var(--font-size-base);
475
+ line-height: 1.5;
476
+ color: var(--color-foreground-1);
477
+ background-color: var(--color-bg-1);
478
+ border: none;
479
+ outline: 2px solid var(--color-foreground-3);
480
+ outline-offset: -2px;
481
+ border-radius: var(--radius-base);
482
+ padding: var(--spacing-2) var(--spacing-3);
483
+ transition: outline-color var(--transition-base), box-shadow var(--transition-base);
484
+ }
485
+ .input--sm {
486
+ font-size: var(--font-size-sm);
487
+ padding: var(--spacing-1) var(--spacing-2);
488
+ }
489
+ .input--lg {
490
+ font-size: var(--font-size-lg);
491
+ padding: var(--spacing-3) var(--spacing-4);
492
+ }
493
+ .input--error {
494
+ outline-color: hsla(var(--error-hue), var(--error-saturation), 50%, 1);
495
+ }
496
+ .input--error:focus {
497
+ outline-color: hsla(var(--error-hue), var(--error-saturation), 50%, 1);
498
+ box-shadow: var(--shadow-focus-ring-error);
499
+ }
500
+ .input--disabled {
501
+ cursor: not-allowed;
502
+ opacity: 0.6;
503
+ background-color: var(--color-bg-2);
504
+ }
505
+ .input:focus {
506
+ outline-color: var(--color-action-primary);
507
+ box-shadow: var(--shadow-focus-ring);
508
+ }
509
+ .input:hover:not(:disabled):not(.input--error) {
510
+ outline-color: var(--color-action-primary-hover);
511
+ }
512
+ .input::placeholder {
513
+ color: var(--color-foreground-2);
514
+ opacity: 0.7;
515
+ }
516
+ .input--has-icon-left {
517
+ padding-left: var(--spacing-10);
518
+ }
519
+ .input--has-icon-right {
520
+ padding-right: var(--spacing-10);
521
+ }
522
+ .input--sm.input--has-icon-left {
523
+ padding-left: var(--spacing-8);
524
+ }
525
+ .input--sm.input--has-icon-right {
526
+ padding-right: var(--spacing-8);
527
+ }
528
+ .input--lg.input--has-icon-left {
529
+ padding-left: var(--spacing-12);
530
+ }
531
+ .input--lg.input--has-icon-right {
532
+ padding-right: var(--spacing-12);
533
+ }
534
+ .input__icon {
535
+ position: absolute;
536
+ display: flex;
537
+ align-items: center;
538
+ justify-content: center;
539
+ color: var(--color-foreground-2);
540
+ pointer-events: none;
541
+ }
542
+ .input__icon--left {
543
+ left: var(--spacing-3);
544
+ }
545
+ .input__icon--right {
546
+ right: var(--spacing-3);
547
+ pointer-events: auto;
548
+ background: none;
549
+ border: none;
550
+ cursor: pointer;
551
+ padding: var(--spacing-1);
552
+ border-radius: var(--radius-sm);
553
+ transition: background-color var(--transition-fast);
554
+ }
555
+ .input__icon--right:hover:not(:disabled) {
556
+ background-color: var(--color-bg-3);
557
+ color: var(--color-action-primary-hover);
558
+ }
559
+ .input__icon--right:active:not(:disabled) {
560
+ background-color: var(--color-bg-2);
561
+ color: var(--color-action-primary-active);
562
+ }
563
+ .input__icon--right:disabled {
564
+ cursor: not-allowed;
565
+ opacity: 0.6;
566
+ }
567
+ .input__icon--right:focus-visible {
568
+ outline: 2px solid var(--color-action-primary);
569
+ outline-offset: 2px;
570
+ }
571
+ .input__message {
572
+ font-size: var(--font-size-sm);
573
+ margin: 0;
574
+ color: var(--color-foreground-2);
575
+ }
576
+ .input__message--error {
577
+ color: hsla(var(--error-hue), var(--error-saturation), 60%, 1);
578
+ }
579
+ :root[data-theme=dark] .input {
580
+ background-color: var(--color-bg-2);
581
+ }
582
+ .input:-webkit-autofill,
583
+ .input:-webkit-autofill:hover,
584
+ .input:-webkit-autofill:focus {
585
+ -webkit-text-fill-color: var(--color-foreground-1);
586
+ -webkit-box-shadow: 0 0 0 1000px var(--color-bg-1) inset;
587
+ transition: background-color 5000s ease-in-out 0s;
588
+ }
589
+ :root[data-theme=dark] .input:-webkit-autofill,
590
+ :root[data-theme=dark] .input:-webkit-autofill:hover,
591
+ :root[data-theme=dark] .input:-webkit-autofill:focus {
592
+ -webkit-box-shadow: 0 0 0 1000px var(--color-bg-2) inset;
593
+ }
594
+ .input[type=search]::-webkit-search-cancel-button {
595
+ -webkit-appearance: none;
596
+ appearance: none;
597
+ }
598
+ .input__datetime-picker {
599
+ padding: var(--spacing-3);
600
+ min-width: 300px;
601
+ }
602
+ .input__datetime-combined {
603
+ display: flex;
604
+ gap: var(--spacing-3);
605
+ }
606
+ .input__trigger-wrapper {
607
+ position: relative;
608
+ display: flex;
609
+ align-items: center;
610
+ width: 100%;
611
+ }
612
+ .date-picker {
613
+ display: flex;
614
+ flex-direction: column;
615
+ gap: var(--spacing-2);
616
+ }
617
+ .date-picker__header {
618
+ display: flex;
619
+ align-items: center;
620
+ justify-content: space-between;
621
+ gap: var(--spacing-2);
622
+ padding-bottom: var(--spacing-2);
623
+ border-bottom: 1px solid var(--color-foreground-2);
624
+ }
625
+ .date-picker__nav {
626
+ background: none;
627
+ border: none;
628
+ color: var(--color-foreground-1);
629
+ font-size: var(--font-size-xl);
630
+ cursor: pointer;
631
+ padding: var(--spacing-1) var(--spacing-2);
632
+ border-radius: var(--radius-sm);
633
+ transition: background-color var(--transition-fast);
634
+ }
635
+ .date-picker__nav:hover:not(:disabled) {
636
+ background-color: var(--color-bg-3);
637
+ }
638
+ .date-picker__nav:disabled {
639
+ opacity: 0.5;
640
+ cursor: not-allowed;
641
+ }
642
+ .date-picker__title {
643
+ display: flex;
644
+ gap: var(--spacing-2);
645
+ align-items: center;
646
+ }
647
+ .date-picker__select {
648
+ background-color: var(--color-bg-1);
649
+ color: var(--color-foreground-1);
650
+ border: 1px solid var(--color-foreground-2);
651
+ border-radius: var(--radius-sm);
652
+ padding: var(--spacing-1) var(--spacing-2);
653
+ font-size: var(--font-size-sm);
654
+ cursor: pointer;
655
+ }
656
+ .date-picker__weekdays {
657
+ display: grid;
658
+ grid-template-columns: repeat(7, 1fr);
659
+ gap: var(--spacing-1);
660
+ margin-top: var(--spacing-2);
661
+ }
662
+ .date-picker__weekday {
663
+ text-align: center;
664
+ font-size: var(--font-size-xs);
665
+ font-weight: 600;
666
+ color: var(--color-foreground-2);
667
+ padding: var(--spacing-1);
668
+ }
669
+ .date-picker__days {
670
+ display: grid;
671
+ grid-template-columns: repeat(7, 1fr);
672
+ gap: var(--spacing-1);
673
+ }
674
+ .date-picker__day {
675
+ aspect-ratio: 1;
676
+ background: none;
677
+ border: none;
678
+ color: var(--color-foreground-1);
679
+ font-size: var(--font-size-sm);
680
+ cursor: pointer;
681
+ border-radius: var(--radius-sm);
682
+ transition: background-color var(--transition-fast);
683
+ padding: var(--spacing-1);
684
+ }
685
+ .date-picker__day:hover:not(:disabled):not(.date-picker__day--empty) {
686
+ background-color: var(--color-bg-3);
687
+ }
688
+ .date-picker__day--selected {
689
+ background-color: var(--color-action-primary);
690
+ color: white;
691
+ font-weight: 600;
692
+ }
693
+ .date-picker__day--empty {
694
+ cursor: default;
695
+ visibility: hidden;
696
+ }
697
+ .date-picker__day:disabled {
698
+ opacity: 0.5;
699
+ cursor: not-allowed;
700
+ }
701
+ .time-picker {
702
+ display: flex;
703
+ gap: var(--spacing-2);
704
+ min-width: 240px;
705
+ }
706
+ .time-picker__column {
707
+ flex: 1;
708
+ display: flex;
709
+ flex-direction: column;
710
+ gap: var(--spacing-1);
711
+ }
712
+ .time-picker__label {
713
+ text-align: center;
714
+ font-size: var(--font-size-xs);
715
+ font-weight: 600;
716
+ color: var(--color-foreground-2);
717
+ padding: var(--spacing-1);
718
+ }
719
+ .time-picker__scroll {
720
+ max-height: 200px;
721
+ overflow-y: auto;
722
+ border-radius: var(--radius-sm);
723
+ background: var(--color-bg-2);
724
+ }
725
+ .time-picker__item {
726
+ width: 100%;
727
+ background: none;
728
+ border: none;
729
+ color: var(--color-foreground-1);
730
+ font-size: var(--font-size-sm);
731
+ padding: var(--spacing-2);
732
+ cursor: pointer;
733
+ transition: background-color var(--transition-fast);
734
+ text-align: center;
735
+ font-variant-numeric: tabular-nums;
736
+ }
737
+ .time-picker__item:hover:not(:disabled) {
738
+ background-color: var(--color-bg-3);
739
+ }
740
+ .time-picker__item--selected {
741
+ background-color: var(--color-action-primary);
742
+ color: white;
743
+ font-weight: 600;
744
+ }
745
+ .time-picker__item:disabled {
746
+ opacity: 0.5;
747
+ cursor: not-allowed;
748
+ }
749
+
750
+ /* src/style/components/popover/popover.css */
751
+ .popover {
752
+ position: fixed;
753
+ background: var(--color-bg-1);
754
+ border-radius: var(--radius-base);
755
+ outline: 2px solid var(--color-bg-3);
756
+ outline-offset: -2px;
757
+ box-shadow: var(--shadow-md);
758
+ z-index: var(--z-popover);
759
+ min-width: 200px;
760
+ margin-top: var(--spacing-1);
761
+ animation: popover-slide-in var(--transition-base, 0.2s ease);
762
+ opacity: 0;
763
+ visibility: hidden;
764
+ pointer-events: none;
765
+ }
766
+ .popover--top {
767
+ animation: popover-slide-in-top var(--transition-base, 0.2s ease);
768
+ margin-bottom: var(--spacing-2);
769
+ }
770
+ .popover--bottom {
771
+ animation: popover-slide-in-bottom var(--transition-base, 0.2s ease);
772
+ margin-top: var(--spacing-2);
773
+ }
774
+ .popover--left {
775
+ animation: popover-slide-in-left var(--transition-base, 0.2s ease);
776
+ margin-right: var(--spacing-2);
777
+ }
778
+ .popover--right {
779
+ animation: popover-slide-in-right var(--transition-base, 0.2s ease);
780
+ margin-left: var(--spacing-2);
781
+ }
782
+ .popover:hover {
783
+ outline: 2px solid var(--color-primary-hover);
784
+ }
785
+ @keyframes popover-slide-in {
786
+ from {
787
+ opacity: 0;
788
+ transform: translateY(-8px);
789
+ }
790
+ to {
791
+ opacity: 1;
792
+ transform: translateY(0);
793
+ }
794
+ }
795
+ @keyframes popover-slide-in-top {
796
+ from {
797
+ opacity: 0;
798
+ transform: translateY(8px);
799
+ }
800
+ to {
801
+ opacity: 1;
802
+ transform: translateY(0);
803
+ }
804
+ }
805
+ @keyframes popover-slide-in-bottom {
806
+ from {
807
+ opacity: 0;
808
+ transform: translateY(-8px);
809
+ }
810
+ to {
811
+ opacity: 1;
812
+ transform: translateY(0);
813
+ }
814
+ }
815
+ @keyframes popover-slide-in-left {
816
+ from {
817
+ opacity: 0;
818
+ transform: translateX(8px);
819
+ }
820
+ to {
821
+ opacity: 1;
822
+ transform: translateX(0);
823
+ }
824
+ }
825
+ @keyframes popover-slide-in-right {
826
+ from {
827
+ opacity: 0;
828
+ transform: translateX(-8px);
829
+ }
830
+ to {
831
+ opacity: 1;
832
+ transform: translateX(0);
833
+ }
834
+ }
835
+ .popover__content {
836
+ }
837
+
838
+ /* src/style/components/tooltip/tooltip.css */
839
+ .tooltip {
840
+ position: fixed;
841
+ z-index: var(--z-tooltip);
842
+ background: var(--color-bg-1);
843
+ border: 1px solid var(--color-bg-3);
844
+ border-color: rgba(0, 0, 0, 0.15);
845
+ border-radius: var(--radius-base);
846
+ box-shadow: var(--shadow-md);
847
+ max-width: 200px;
848
+ padding: var(--spacing-2, 0.5rem) var(--spacing-3, 0.75rem);
849
+ font-size: var(--font-size-xs, 0.75rem);
850
+ font-weight: 500;
851
+ color: var(--color-foreground-1);
852
+ white-space: nowrap;
853
+ animation: tooltip-fade-in var(--transition-fast, 0.15s ease);
854
+ opacity: 0;
855
+ visibility: hidden;
856
+ pointer-events: none;
857
+ }
858
+ .tooltip--top {
859
+ margin-bottom: var(--spacing-1);
860
+ }
861
+ .tooltip--bottom {
862
+ margin-top: var(--spacing-1);
863
+ }
864
+ .tooltip--left {
865
+ margin-right: var(--spacing-1);
866
+ }
867
+ .tooltip--right {
868
+ margin-left: var(--spacing-1);
869
+ }
870
+ @keyframes tooltip-fade-in {
871
+ from {
872
+ opacity: 0;
873
+ transform: translateY(-2px);
874
+ }
875
+ to {
876
+ opacity: 1;
877
+ transform: translateY(0);
878
+ }
879
+ }
880
+ .tooltip__content {
881
+ }
882
+
883
+ /* src/style/components/_shared/heading-anchor.css */
884
+ .heading-anchor {
885
+ opacity: 0;
886
+ margin-left: var(--spacing-1);
887
+ }
888
+ *:hover > .heading-anchor,
889
+ .heading-anchor:focus {
890
+ opacity: 1;
891
+ }
892
+
893
+ /* src/style/_shared/thumb.css */
894
+ .thumb {
895
+ position: relative;
896
+ display: inline-flex;
897
+ align-items: center;
898
+ justify-content: center;
899
+ border-radius: 50%;
900
+ background-color: var(--color-action-primary);
901
+ border: 2px solid var(--color-action-primary);
902
+ box-shadow: var(--shadow-thumb);
903
+ color: var(--color-on-accent);
904
+ transition:
905
+ transform var(--motion-transition-fast),
906
+ box-shadow var(--motion-transition-fast),
907
+ border-color var(--motion-transition-fast),
908
+ background-color var(--motion-transition-fast);
909
+ z-index: 1;
910
+ }
911
+ .thumb--hover,
912
+ .thumb:hover {
913
+ border-color: var(--color-action-primary-hover);
914
+ box-shadow: var(--shadow-thumb-hover);
915
+ }
916
+ .thumb--active {
917
+ transform: scale(1.2);
918
+ border-color: var(--color-action-primary-active);
919
+ box-shadow: var(--shadow-thumb-active);
920
+ }
921
+ .thumb--disabled {
922
+ border-color: var(--color-foreground-3);
923
+ background-color: var(--color-bg-3);
924
+ opacity: 0.6;
925
+ cursor: not-allowed;
926
+ }
927
+ .thumb--checked {
928
+ background-color: var(--color-accent);
929
+ border-color: var(--color-accent);
930
+ }
931
+
932
+ /* src/style/components/switch/switch.css */
933
+ .switch__wrapper {
934
+ display: inline-flex;
935
+ flex-direction: column;
936
+ gap: var(--spacing-1);
937
+ }
938
+ .switch__label {
939
+ display: inline-flex;
940
+ align-items: center;
941
+ gap: var(--spacing-2);
942
+ cursor: pointer;
943
+ user-select: none;
944
+ }
945
+ .switch__input {
946
+ position: absolute;
947
+ opacity: 0;
948
+ width: 0;
949
+ height: 0;
950
+ pointer-events: none;
951
+ }
952
+ .switch {
953
+ position: relative;
954
+ display: inline-block;
955
+ flex-shrink: 0;
956
+ }
957
+ .switch__track {
958
+ position: relative;
959
+ display: inline-flex;
960
+ align-items: center;
961
+ border-radius: var(--radius-full);
962
+ background-color: var(--color-bg-1);
963
+ border: none;
964
+ outline: 2px solid var(--color-foreground-3);
965
+ outline-offset: -2px;
966
+ transition:
967
+ outline-color var(--transition-base),
968
+ box-shadow var(--transition-base),
969
+ background-color var(--transition-base);
970
+ overflow: hidden;
971
+ }
972
+ .switch--sm {
973
+ width: 33px;
974
+ height: 24px;
975
+ }
976
+ .switch--sm .switch__track {
977
+ width: 39px;
978
+ height: 24px;
979
+ }
980
+ .switch--sm .switch__thumb {
981
+ width: 24px;
982
+ height: 24px;
983
+ margin: 0;
984
+ }
985
+ .switch--sm .switch__text {
986
+ font-size: var(--font-size-sm);
987
+ }
988
+ .switch--sm.switch--checked .switch__thumb {
989
+ transform: translateX(15px);
990
+ }
991
+ .switch--md {
992
+ width: 44px;
993
+ height: 32px;
994
+ }
995
+ .switch--md .switch__track {
996
+ width: 52px;
997
+ height: 32px;
998
+ }
999
+ .switch--md .switch__thumb {
1000
+ width: 32px;
1001
+ height: 32px;
1002
+ margin: 0;
1003
+ }
1004
+ .switch--md.switch--checked .switch__thumb {
1005
+ transform: translateX(20px);
1006
+ }
1007
+ .switch--lg {
1008
+ width: 55px;
1009
+ height: 40px;
1010
+ }
1011
+ .switch--lg .switch__track {
1012
+ width: 65px;
1013
+ height: 40px;
1014
+ }
1015
+ .switch--lg .switch__thumb {
1016
+ width: 40px;
1017
+ height: 40px;
1018
+ margin: 0;
1019
+ }
1020
+ .switch--lg.switch--checked .switch__thumb {
1021
+ transform: translateX(25px);
1022
+ }
1023
+ .switch--checked .switch__track {
1024
+ background-color: var(--color-accent);
1025
+ outline-color: var(--color-accent);
1026
+ }
1027
+ .switch__input:hover + .switch__track {
1028
+ outline-color: var(--color-action-primary-hover);
1029
+ }
1030
+ .switch__input:hover + .switch__track {
1031
+ outline-color: var(--color-action-primary-hover);
1032
+ }
1033
+ .switch__input:focus + .switch__track {
1034
+ outline-color: var(--color-action-primary);
1035
+ box-shadow: var(--shadow-focus-ring);
1036
+ }
1037
+ .switch--checked .switch__input:hover + .switch__track {
1038
+ outline-color: var(--color-accent);
1039
+ }
1040
+ .switch--checked .switch__input:focus + .switch__track {
1041
+ outline-color: var(--color-accent);
1042
+ box-shadow: var(--shadow-focus-ring);
1043
+ }
1044
+ .switch__input:active + .switch__track .thumb {
1045
+ transform: scale(1.2);
1046
+ }
1047
+ .switch--checked .switch__input:active + .switch__track .thumb {
1048
+ }
1049
+ .switch--disabled {
1050
+ opacity: 0.5;
1051
+ cursor: not-allowed;
1052
+ }
1053
+ .switch--disabled .switch__label {
1054
+ cursor: not-allowed;
1055
+ }
1056
+ .switch--error .switch__track {
1057
+ outline-color: var(--color-error);
1058
+ }
1059
+ .switch--error.switch--checked .switch__track {
1060
+ background-color: var(--color-error);
1061
+ outline-color: var(--color-error);
1062
+ }
1063
+ .switch__text {
1064
+ margin: 0 var(--spacing-2);
1065
+ color: var(--color-foreground-1);
1066
+ line-height: 1.5;
1067
+ }
1068
+ .switch__message {
1069
+ margin-top: var(--spacing-1);
1070
+ }
1071
+ .switch__helper-text {
1072
+ font-size: var(--font-size-xs);
1073
+ color: var(--color-foreground-3);
1074
+ }
1075
+ :root[data-theme=dark] .switch__track {
1076
+ background-color: var(--color-bg-2);
1077
+ outline-color: var(--color-foreground-4);
1078
+ }
1079
+ :root[data-theme=dark] .switch:not(.switch--checked) .switch__icon--off {
1080
+ color: var(--color-foreground-4);
1081
+ }