@hellboy/ds 0.1.2

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 (137) hide show
  1. package/README.md +111 -0
  2. package/dist/index.css +3699 -0
  3. package/dist/index.css.map +1 -0
  4. package/dist/index.d.mts +1087 -0
  5. package/dist/index.d.ts +1087 -0
  6. package/dist/index.js +3391 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/index.mjs +3287 -0
  9. package/dist/index.mjs.map +1 -0
  10. package/dist/theme.css +55 -0
  11. package/hellboy-ds-0.1.2.tgz +0 -0
  12. package/package.json +42 -0
  13. package/src/components/badge/Badge.tsx +29 -0
  14. package/src/components/badge/index.ts +1 -0
  15. package/src/components/banner/Banner.tsx +48 -0
  16. package/src/components/banner/banner.css +44 -0
  17. package/src/components/banner/index.ts +1 -0
  18. package/src/components/button/button.tsx +127 -0
  19. package/src/components/button/index.ts +1 -0
  20. package/src/components/card/card.tsx +57 -0
  21. package/src/components/card/index.ts +1 -0
  22. package/src/components/checkbox/Checkbox.tsx +98 -0
  23. package/src/components/checkbox/index.ts +1 -0
  24. package/src/components/code-block/code-block.tsx +44 -0
  25. package/src/components/code-block/index.ts +1 -0
  26. package/src/components/color-control/color-control.tsx +322 -0
  27. package/src/components/color-control/index.ts +1 -0
  28. package/src/components/drag-handle/DragHandle.tsx +78 -0
  29. package/src/components/drag-handle/index.ts +1 -0
  30. package/src/components/drawer/drawer.tsx +82 -0
  31. package/src/components/drawer/index.ts +1 -0
  32. package/src/components/floating-bar/floating-bar.tsx +52 -0
  33. package/src/components/floating-bar/index.ts +2 -0
  34. package/src/components/footer/footer.tsx +28 -0
  35. package/src/components/footer/index.ts +1 -0
  36. package/src/components/grid/Grid.tsx +53 -0
  37. package/src/components/grid/index.ts +1 -0
  38. package/src/components/header/header.tsx +57 -0
  39. package/src/components/header/index.ts +1 -0
  40. package/src/components/icons/icons.tsx +44 -0
  41. package/src/components/icons/index.ts +1 -0
  42. package/src/components/index.ts +29 -0
  43. package/src/components/input/DatePicker.tsx +133 -0
  44. package/src/components/input/Input.tsx +220 -0
  45. package/src/components/input/InputDate.tsx +10 -0
  46. package/src/components/input/InputDateTime.tsx +10 -0
  47. package/src/components/input/InputEmail.tsx +10 -0
  48. package/src/components/input/InputField.tsx +137 -0
  49. package/src/components/input/InputNumber.tsx +10 -0
  50. package/src/components/input/InputPassword.tsx +10 -0
  51. package/src/components/input/InputSearch.tsx +10 -0
  52. package/src/components/input/InputTel.tsx +10 -0
  53. package/src/components/input/InputText.tsx +10 -0
  54. package/src/components/input/InputTime.tsx +10 -0
  55. package/src/components/input/InputUrl.tsx +10 -0
  56. package/src/components/input/TimePicker.tsx +151 -0
  57. package/src/components/input/index.ts +11 -0
  58. package/src/components/layout/Layout.tsx +244 -0
  59. package/src/components/layout/index.ts +1 -0
  60. package/src/components/list/List.tsx +159 -0
  61. package/src/components/list/index.ts +1 -0
  62. package/src/components/navbar/MenuCategory.tsx +20 -0
  63. package/src/components/navbar/MenuGroup.tsx +288 -0
  64. package/src/components/navbar/MenuItem.tsx +65 -0
  65. package/src/components/navbar/Navbar.tsx +23 -0
  66. package/src/components/navbar/index.ts +4 -0
  67. package/src/components/page/index.ts +1 -0
  68. package/src/components/page/page.tsx +46 -0
  69. package/src/components/page-index/PageIndex.tsx +275 -0
  70. package/src/components/page-index/index.ts +1 -0
  71. package/src/components/popover/index.ts +1 -0
  72. package/src/components/popover/popover.tsx +199 -0
  73. package/src/components/radio/Radio.tsx +176 -0
  74. package/src/components/radio/index.ts +1 -0
  75. package/src/components/section/index.ts +1 -0
  76. package/src/components/section/section.tsx +66 -0
  77. package/src/components/select/Select.tsx +212 -0
  78. package/src/components/select/index.ts +1 -0
  79. package/src/components/slider/Slider.tsx +267 -0
  80. package/src/components/slider/index.ts +1 -0
  81. package/src/components/switch/index.ts +1 -0
  82. package/src/components/switch/switch.tsx +99 -0
  83. package/src/components/table/Table.tsx +147 -0
  84. package/src/components/table/index.ts +1 -0
  85. package/src/components/theme-control/index.ts +1 -0
  86. package/src/components/theme-control/theme-control.tsx +78 -0
  87. package/src/components/tooltip/index.ts +1 -0
  88. package/src/components/tooltip/tooltip.tsx +207 -0
  89. package/src/contexts/NavbarTooltipContext.tsx +48 -0
  90. package/src/contexts/index.ts +1 -0
  91. package/src/foundations/motion.md +136 -0
  92. package/src/index.ts +40 -0
  93. package/src/style/_shared/field.css +69 -0
  94. package/src/style/components/badge/badge.css +74 -0
  95. package/src/style/components/button/button.css +244 -0
  96. package/src/style/components/card/card.css +69 -0
  97. package/src/style/components/checkbox.css +142 -0
  98. package/src/style/components/code-block/code-block.css +34 -0
  99. package/src/style/components/color-control/color-control.css +126 -0
  100. package/src/style/components/drag-handle/drag-handle.css +68 -0
  101. package/src/style/components/drawer/drawer.css +210 -0
  102. package/src/style/components/floating-bar/floating-bar.css +39 -0
  103. package/src/style/components/footer/footer.css +108 -0
  104. package/src/style/components/grid/grid.css +33 -0
  105. package/src/style/components/header/header.css +44 -0
  106. package/src/style/components/icons/icons.css +44 -0
  107. package/src/style/components/input/input.css +393 -0
  108. package/src/style/components/layout/layout.css +205 -0
  109. package/src/style/components/list/list.css +140 -0
  110. package/src/style/components/navbar/navbar.css +342 -0
  111. package/src/style/components/page/page.css +46 -0
  112. package/src/style/components/page-index/page-index.css +158 -0
  113. package/src/style/components/popover/popover.css +44 -0
  114. package/src/style/components/radio.css +178 -0
  115. package/src/style/components/section/section.css +67 -0
  116. package/src/style/components/select/select.css +143 -0
  117. package/src/style/components/slider/slider.css +159 -0
  118. package/src/style/components/switch/switch.css +267 -0
  119. package/src/style/components/table/table.css +108 -0
  120. package/src/style/components/theme-control/theme-control.css +35 -0
  121. package/src/style/components/tooltip/tooltip.css +52 -0
  122. package/src/style/foundations/global.css +316 -0
  123. package/src/style/foundations/motion.css +164 -0
  124. package/src/style/foundations/spacing.css +51 -0
  125. package/src/style/foundations/typography.css +39 -0
  126. package/src/style/foundations/z-index.css +81 -0
  127. package/src/style/modes/dark.css +146 -0
  128. package/src/style/modes/light.css +147 -0
  129. package/src/style/semantic.css +52 -0
  130. package/src/style/styles.css +51 -0
  131. package/src/style/themes/theme.json +37 -0
  132. package/src/utils/README.md +305 -0
  133. package/src/utils/USER_PREFERENCES.md +558 -0
  134. package/src/utils/theme.ts +127 -0
  135. package/src/utils/user-preferences.ts +577 -0
  136. package/tsconfig.json +25 -0
  137. package/tsup.config.ts +52 -0
@@ -0,0 +1,178 @@
1
+ /* Radio Component Styles */
2
+
3
+ .radio {
4
+ display: inline-flex;
5
+ align-items: center;
6
+ gap: var(--spacing-2);
7
+ cursor: pointer;
8
+ user-select: none;
9
+ position: relative;
10
+ }
11
+
12
+ .radio__input {
13
+ position: absolute;
14
+ opacity: 0;
15
+ width: 0;
16
+ height: 0;
17
+ pointer-events: none;
18
+ }
19
+
20
+ .radio__box {
21
+ position: relative;
22
+ display: inline-flex;
23
+ align-items: center;
24
+ justify-content: center;
25
+ flex-shrink: 0;
26
+ border: 2px solid var(--color-foreground-2);
27
+ border-radius: 50%;
28
+ background-color: var(--color-bg-1);
29
+ transition: all 0.2s ease;
30
+ }
31
+
32
+ .radio__dot {
33
+ width: 50%;
34
+ height: 50%;
35
+ border-radius: 50%;
36
+ background-color: var(--color-on-primary);
37
+ opacity: 0;
38
+ transform: scale(0);
39
+ transition: all 0.2s ease;
40
+ }
41
+
42
+ .radio__label {
43
+ font-size: var(--font-size-md);
44
+ color: var(--color-foreground-1);
45
+ line-height: 1.5;
46
+ }
47
+
48
+ /* Size variants */
49
+ .radio--sm .radio__box {
50
+ width: 16px;
51
+ height: 16px;
52
+ }
53
+
54
+ .radio--sm .radio__label {
55
+ font-size: var(--font-size-sm);
56
+ }
57
+
58
+ .radio--md .radio__box {
59
+ width: 20px;
60
+ height: 20px;
61
+ }
62
+
63
+ .radio--lg .radio__box {
64
+ width: 24px;
65
+ height: 24px;
66
+ }
67
+
68
+ .radio--lg .radio__label {
69
+ font-size: var(--font-size-lg);
70
+ }
71
+
72
+ /* Checked state */
73
+ .radio__input[aria-checked="true"] + .radio__box,
74
+ .radio__input:checked + .radio__box {
75
+ background-color: var(--color-primary);
76
+ border-color: var(--color-primary);
77
+ }
78
+
79
+ .radio__input[aria-checked="true"] + .radio__box .radio__dot,
80
+ .radio__input:checked + .radio__box .radio__dot {
81
+ opacity: 1;
82
+ transform: scale(1);
83
+ }
84
+
85
+ /* Focus state */
86
+ .radio__input:focus-visible + .radio__box {
87
+ outline: 2px solid var(--color-primary);
88
+ outline-offset: 2px;
89
+ }
90
+
91
+ /* Hover state */
92
+ .radio:hover .radio__box {
93
+ border-color: var(--color-primary);
94
+ }
95
+
96
+ .radio:hover .radio__input[aria-checked="true"] + .radio__box,
97
+ .radio:hover .radio__input:checked + .radio__box {
98
+ background-color: HSLA(
99
+ var(--primary-hue),
100
+ var(--primary-saturation),
101
+ calc(var(--primary-lightness) - 5%),
102
+ 1
103
+ );
104
+ }
105
+
106
+ /* Disabled state */
107
+ .radio--disabled {
108
+ cursor: not-allowed;
109
+ opacity: 0.5;
110
+ }
111
+
112
+ .radio--disabled .radio__box {
113
+ background-color: var(--color-bg-2);
114
+ border-color: var(--color-foreground-3);
115
+ }
116
+
117
+ /* Error state */
118
+ .radio--error .radio__box {
119
+ border-color: hsla(var(--error-hue), var(--error-saturation), 50%, 1);
120
+ }
121
+
122
+ .radio--error .radio__input:focus-visible + .radio__box {
123
+ outline-color: hsla(var(--error-hue), var(--error-saturation), 50%, 1);
124
+ }
125
+
126
+ /* Radio Group Styles */
127
+
128
+ .radio-group {
129
+ display: flex;
130
+ flex-direction: column;
131
+ gap: var(--spacing-1);
132
+ }
133
+
134
+ .radio-group__label {
135
+ font-size: var(--font-size-md);
136
+ font-weight: 600;
137
+ color: var(--color-foreground-1);
138
+ margin-bottom: var(--spacing-1);
139
+ }
140
+
141
+ .radio-group__container {
142
+ display: flex;
143
+ gap: var(--spacing-3);
144
+ }
145
+
146
+ .radio-group--vertical .radio-group__container {
147
+ flex-direction: column;
148
+ }
149
+
150
+ .radio-group--horizontal .radio-group__container {
151
+ flex-direction: row;
152
+ flex-wrap: wrap;
153
+ }
154
+
155
+ .radio-group__feedback {
156
+ margin-top: var(--spacing-1);
157
+ }
158
+
159
+ .radio-group__error-text {
160
+ font-size: var(--font-size-sm);
161
+ color: hsla(var(--error-hue), var(--error-saturation), var(--error-lightness), 1);
162
+ display: block;
163
+ }
164
+
165
+ .radio-group__helper-text {
166
+ font-size: var(--font-size-sm);
167
+ color: var(--color-foreground-2);
168
+ display: block;
169
+ }
170
+
171
+ /* Radio group error state */
172
+ .radio-group--error .radio__box {
173
+ border-color: hsla(var(--error-hue), var(--error-saturation), 50%, 1);
174
+ }
175
+
176
+ .radio-group--error .radio__input:focus-visible + .radio__box {
177
+ outline-color: hsla(var(--error-hue), var(--error-saturation), 50%, 1);
178
+ }
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Section Component Styles
3
+ * Responsive section component for content organization
4
+ */
5
+
6
+ .section {
7
+ padding: var(--spacing-8) var(--spacing-4);
8
+ border-bottom: 1px solid var(--color-foreground-2);
9
+ border-bottom-color: rgba(0, 0, 0, 0.1);
10
+ width: 100%;
11
+ transition: border-color var(--motion-transition-color);
12
+ }
13
+
14
+ .section:last-of-type {
15
+ border-bottom: none;
16
+ }
17
+
18
+ .section__title {
19
+ margin: 0 0 var(--spacing-4) 0;
20
+ font-size: var(--font-size-2xl);
21
+ font-weight: var(--font-weight-bold);
22
+ color: var(--color-foreground-1);
23
+ }
24
+
25
+ .section__content {
26
+ font-size: var(--font-size-base);
27
+ line-height: var(--line-height-relaxed);
28
+ color: var(--color-foreground-2);
29
+ }
30
+
31
+ .section--sm {
32
+ padding: var(--spacing-4) var(--spacing-4);
33
+ }
34
+
35
+ .section--lg {
36
+ padding: var(--spacing-12) var(--spacing-4);
37
+ }
38
+
39
+ @media (min-width: 768px) {
40
+ .section {
41
+ padding: var(--spacing-8) var(--spacing-6);
42
+ }
43
+
44
+ .section--sm {
45
+ padding: var(--spacing-4) var(--spacing-6);
46
+ }
47
+
48
+ .section--lg {
49
+ padding: var(--spacing-12) var(--spacing-6);
50
+ }
51
+ }
52
+
53
+ @media (min-width: 1024px) {
54
+ .section {
55
+ padding: var(--spacing-8) var(--spacing-8);
56
+ max-width: 1200px;
57
+ margin: 0 auto;
58
+ }
59
+
60
+ .section--sm {
61
+ padding: var(--spacing-4) var(--spacing-8);
62
+ }
63
+
64
+ .section--lg {
65
+ padding: var(--spacing-12) var(--spacing-8);
66
+ }
67
+ }
@@ -0,0 +1,143 @@
1
+ /**
2
+ * Select Component Styles
3
+ * Custom select using Popover + List with action colors
4
+ */
5
+
6
+ @import '../../_shared/field.css';
7
+
8
+ .select-container {
9
+ display: flex;
10
+ flex-direction: column;
11
+ gap: var(--spacing-2);
12
+ }
13
+
14
+ .select-container--full-width {
15
+ width: 100%;
16
+ }
17
+
18
+ .select__label {
19
+ font-size: var(--font-size-sm);
20
+ font-weight: 500;
21
+ color: var(--color-foreground-1);
22
+ cursor: pointer;
23
+ }
24
+
25
+ .select__trigger {
26
+ width: 100%;
27
+ display: flex;
28
+ align-items: center;
29
+ justify-content: space-between;
30
+ gap: var(--spacing-2);
31
+ font-family: inherit;
32
+ font-size: var(--font-size-base);
33
+ line-height: 1.5;
34
+ color: var(--color-foreground-1);
35
+ background-color: var(--color-bg-1);
36
+ border: none;
37
+ outline: 2px solid var(--color-foreground-3);
38
+ outline-offset: -2px;
39
+ border-radius: var(--radius-base);
40
+ padding: var(--spacing-2) var(--spacing-3);
41
+ cursor: pointer;
42
+ transition: outline-color var(--motion-duration-fast) var(--motion-easing-linear), box-shadow var(--motion-duration-fast) var(--motion-easing-linear);
43
+ text-align: left;
44
+ }
45
+
46
+ .select__trigger:not(:hover):not(:focus-visible):not(.select__trigger--open) {
47
+ transition: outline-color var(--motion-duration-fast) var(--motion-easing-accelerate), box-shadow var(--motion-duration-fast) var(--motion-easing-accelerate);
48
+ }
49
+
50
+ /* Size variants */
51
+ .select__trigger--sm {
52
+ font-size: var(--font-size-sm);
53
+ padding: var(--spacing-1) var(--spacing-2);
54
+ }
55
+
56
+ .select__trigger--lg {
57
+ font-size: var(--font-size-lg);
58
+ padding: var(--spacing-3) var(--spacing-4);
59
+ }
60
+
61
+ /* Trigger content */
62
+ .select__trigger-content {
63
+ display: flex;
64
+ align-items: center;
65
+ gap: var(--spacing-2);
66
+ flex: 1;
67
+ }
68
+
69
+ .select__trigger-text {
70
+ flex: 1;
71
+ overflow: hidden;
72
+ text-overflow: ellipsis;
73
+ white-space: nowrap;
74
+ }
75
+
76
+ /* Trigger icon (chevron) */
77
+ .select__trigger-icon {
78
+ flex-shrink: 0;
79
+ color: var(--color-foreground-2);
80
+ transition: transform var(--transition-fast);
81
+ }
82
+
83
+ .select__trigger--open .select__trigger-icon {
84
+ transform: rotate(180deg);
85
+ }
86
+
87
+ /* Focus state - uses action colors */
88
+ .select__trigger:focus-visible {
89
+ outline-color: var(--color-action-primary);
90
+ box-shadow: 0 0 0 3px hsla(var(--accent-hue), var(--accent-saturation), var(--accent-lightness), 0.1);
91
+ }
92
+
93
+ /* Hover state */
94
+ .select__trigger:hover:not(:disabled):not(.select__trigger--error) {
95
+ outline-color: var(--color-action-primary-hover);
96
+ }
97
+
98
+ /* Open state */
99
+ .select__trigger--open {
100
+ outline-color: var(--color-action-primary);
101
+ }
102
+
103
+ /* Error state */
104
+ .select__trigger--error {
105
+ outline-color: hsla(var(--error-hue), var(--error-saturation), 50%, 1);
106
+ }
107
+
108
+ .select__trigger--error:focus-visible {
109
+ outline-color: hsla(var(--error-hue), var(--error-saturation), 50%, 1);
110
+ box-shadow: 0 0 0 3px hsla(var(--error-hue), var(--error-saturation), var(--error-lightness), 0.1);
111
+ }
112
+
113
+ /* Disabled state */
114
+ .select__trigger:disabled,
115
+ .select__trigger--disabled {
116
+ cursor: not-allowed;
117
+ opacity: 0.6;
118
+ background-color: var(--color-bg-2);
119
+ }
120
+
121
+ /* Dropdown */
122
+ .select__dropdown {
123
+ min-width: 200px;
124
+ max-height: 300px;
125
+ overflow-y: auto;
126
+ padding: var(--spacing-2);
127
+ }
128
+
129
+ /* Messages */
130
+ .select__message {
131
+ font-size: var(--font-size-sm);
132
+ margin: 0;
133
+ color: var(--color-foreground-2);
134
+ }
135
+
136
+ .select__message--error {
137
+ color: hsla(var(--error-hue), var(--error-saturation), var(--error-lightness), 1);
138
+ }
139
+
140
+ /* Dark theme adjustments */
141
+ :root[data-theme="dark"] .select__trigger {
142
+ background-color: var(--color-bg-2);
143
+ }
@@ -0,0 +1,159 @@
1
+ /**
2
+ * Slider Component Styles
3
+ * Custom range input with improved drag behavior
4
+ */
5
+
6
+ .slider {
7
+ display: flex;
8
+ flex-direction: column;
9
+ gap: var(--spacing-2);
10
+ width: 100%;
11
+ }
12
+
13
+ .slider__header {
14
+ display: flex;
15
+ justify-content: space-between;
16
+ align-items: center;
17
+ }
18
+
19
+ .slider__label {
20
+ font-weight: 500;
21
+ color: var(--color-foreground-1);
22
+ font-size: var(--font-size-sm);
23
+ }
24
+
25
+ .slider__value {
26
+ font-family: var(--font-family-mono);
27
+ font-size: var(--font-size-xs);
28
+ color: var(--color-foreground-2);
29
+ background-color: var(--color-bg-2);
30
+ padding: var(--spacing-1) var(--spacing-2);
31
+ border-radius: 4px;
32
+ min-width: 3rem;
33
+ text-align: center;
34
+ transition: all var(--transition-base, 0.2s ease);
35
+ }
36
+
37
+ .slider__container {
38
+ position: relative;
39
+ width: 100%;
40
+ cursor: grab;
41
+ }
42
+
43
+ .slider--dragging .slider__container {
44
+ cursor: grabbing;
45
+ }
46
+
47
+ .slider__input {
48
+ width: 100%;
49
+ height: 8px;
50
+ border-radius: 4px;
51
+ outline: none;
52
+ cursor: pointer;
53
+ appearance: none;
54
+ /* Default: single color background */
55
+ background: var(--color-action-primary);
56
+ }
57
+
58
+ /* Override with custom gradient for hue slider */
59
+ .slider__input[style*="hsl"],
60
+ .slider__input[style*="linear-gradient"] {
61
+ /* Custom background will be applied via inline styles */
62
+ }
63
+
64
+ .slider__input::-webkit-slider-thumb {
65
+ appearance: none;
66
+ width: 32px;
67
+ height: 32px;
68
+ border: none;
69
+ background: transparent;
70
+ cursor: grab;
71
+ pointer-events: auto;
72
+ margin-top: -16px;
73
+ }
74
+
75
+ .slider__input::-webkit-slider-thumb:hover,
76
+ .slider__input::-webkit-slider-thumb:active,
77
+ .slider--dragging .slider__input::-webkit-slider-thumb {
78
+ border: none;
79
+ background: transparent;
80
+ cursor: grabbing;
81
+ }
82
+
83
+ .slider__input::-moz-range-thumb {
84
+ width: 32px;
85
+ height: 32px;
86
+ border: none;
87
+ background: transparent;
88
+ cursor: grab;
89
+ pointer-events: auto;
90
+ }
91
+
92
+ .slider__input::-moz-range-thumb:hover,
93
+ .slider__input::-moz-range-thumb:active {
94
+ border: none;
95
+ background: transparent;
96
+ cursor: grabbing;
97
+ }
98
+
99
+ .slider__input::-ms-thumb {
100
+ width: 32px;
101
+ height: 32px;
102
+ border: none;
103
+ background: transparent;
104
+ cursor: grab;
105
+ pointer-events: auto;
106
+ }
107
+
108
+ .slider--disabled .slider__input {
109
+ cursor: not-allowed;
110
+ filter: brightness(0.6);
111
+ }
112
+
113
+ .slider__marks {
114
+ position: absolute;
115
+ top: -6px;
116
+ left: 0;
117
+ right: 0;
118
+ height: 8px;
119
+ pointer-events: none;
120
+ }
121
+
122
+ .slider__thumb {
123
+ position: absolute;
124
+ top: -4px;
125
+ pointer-events: none;
126
+ z-index: 1;
127
+ }
128
+
129
+ .slider__thumb-icon {
130
+ width: 32px;
131
+ height: 32px;
132
+ border-radius: 50%;
133
+ background-color: var(--color-action-primary);
134
+ border: 2px solid var(--color-action-primary);
135
+ display: flex;
136
+ align-items: center;
137
+ justify-content: center;
138
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);
139
+ transition: transform 0.1s ease, box-shadow 0.1s ease, border-color 0.1s ease;
140
+ }
141
+
142
+ .slider__input:hover + .slider__thumb .slider__thumb-icon,
143
+ .slider__input:focus + .slider__thumb .slider__thumb-icon {
144
+ border-color: var(--color-action-primary-hover);
145
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.4);
146
+ }
147
+
148
+ .slider__input:active + .slider__thumb .slider__thumb-icon,
149
+ .slider--dragging .slider__thumb .slider__thumb-icon {
150
+ transform: scale(1.2);
151
+ border-color: var(--color-action-primary-active);
152
+ box-shadow: 0 6px 12px rgba(0, 0, 0, 0.5);
153
+ }
154
+
155
+ .slider--disabled .slider__thumb .slider__thumb-icon {
156
+ border-color: var(--color-foreground-3);
157
+ background-color: var(--color-bg-3);
158
+ opacity: 0.6;
159
+ }