@hakumi-dev/hakumi-components 0.1.18-pre → 0.1.19-pre

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 (56) hide show
  1. package/README.md +208 -381
  2. package/app/javascript/hakumi_components/controllers/hakumi/admin_panel_controller.js +5 -7
  3. package/app/javascript/hakumi_components/controllers/hakumi/back_top_controller.js +1 -1
  4. package/app/javascript/hakumi_components/controllers/hakumi/button_controller.js +108 -2
  5. package/app/javascript/hakumi_components/controllers/hakumi/calendar_controller.js +183 -95
  6. package/app/javascript/hakumi_components/controllers/hakumi/color_picker_controller.js +23 -285
  7. package/app/javascript/hakumi_components/controllers/hakumi/date_picker_controller.js +274 -262
  8. package/app/javascript/hakumi_components/controllers/hakumi/float_button_group_controller.js +2 -2
  9. package/app/javascript/hakumi_components/controllers/hakumi/message_controller.js +4 -2
  10. package/app/javascript/hakumi_components/controllers/hakumi/modal_controller.js +119 -125
  11. package/app/javascript/hakumi_components/controllers/hakumi/table/editable.js +291 -0
  12. package/app/javascript/hakumi_components/controllers/hakumi/table_controller.js +166 -366
  13. package/app/javascript/hakumi_components/controllers/hakumi/tabs_controller.js +8 -2
  14. package/app/javascript/hakumi_components/controllers/hakumi/tag_controller.js +27 -25
  15. package/app/javascript/hakumi_components/controllers/hakumi/tag_group_controller.js +19 -18
  16. package/app/javascript/hakumi_components/controllers/hakumi/theme_controller.js +116 -117
  17. package/app/javascript/hakumi_components/controllers/hakumi/transfer_controller.js +17 -1
  18. package/app/javascript/hakumi_components/controllers/hakumi/tree_controller.js +363 -78
  19. package/app/javascript/hakumi_components/controllers/hakumi/typography_controller.js +3 -3
  20. package/app/javascript/hakumi_components/controllers/hakumi/upload_controller.js +320 -204
  21. package/app/javascript/hakumi_components/core/render_component.js +37 -11
  22. package/app/javascript/hakumi_components/utils/color_helper.js +262 -0
  23. package/app/javascript/stylesheets/_base.scss +9 -0
  24. package/app/javascript/stylesheets/_hakumi_components.scss +1 -0
  25. package/app/javascript/stylesheets/components/_breadcrumb.scss +2 -2
  26. package/app/javascript/stylesheets/components/_calendar.scss +13 -13
  27. package/app/javascript/stylesheets/components/_cascader.scss +5 -5
  28. package/app/javascript/stylesheets/components/_checkbox.scss +9 -11
  29. package/app/javascript/stylesheets/components/_color_picker.scss +11 -11
  30. package/app/javascript/stylesheets/components/_date_picker.scss +4 -4
  31. package/app/javascript/stylesheets/components/_descriptions.scss +2 -2
  32. package/app/javascript/stylesheets/components/_drawer.scss +3 -3
  33. package/app/javascript/stylesheets/components/_dropdown.scss +2 -2
  34. package/app/javascript/stylesheets/components/_flex.scss +1 -1
  35. package/app/javascript/stylesheets/components/_float_button.scss +5 -5
  36. package/app/javascript/stylesheets/components/_form_item.scss +92 -0
  37. package/app/javascript/stylesheets/components/_image.scss +15 -15
  38. package/app/javascript/stylesheets/components/_input.scss +23 -113
  39. package/app/javascript/stylesheets/components/_layout.scss +27 -26
  40. package/app/javascript/stylesheets/components/_menu.scss +15 -15
  41. package/app/javascript/stylesheets/components/_modal.scss +13 -13
  42. package/app/javascript/stylesheets/components/_notification.scss +3 -3
  43. package/app/javascript/stylesheets/components/_popover.scss +1 -1
  44. package/app/javascript/stylesheets/components/_segmented.scss +3 -3
  45. package/app/javascript/stylesheets/components/_select.scss +6 -6
  46. package/app/javascript/stylesheets/components/_slider.scss +1 -1
  47. package/app/javascript/stylesheets/components/_spin.scss +2 -2
  48. package/app/javascript/stylesheets/components/_steps.scss +10 -10
  49. package/app/javascript/stylesheets/components/_switch.scss +11 -10
  50. package/app/javascript/stylesheets/components/_table.scss +6 -6
  51. package/app/javascript/stylesheets/components/_tag.scss +2 -2
  52. package/app/javascript/stylesheets/components/_tooltip.scss +4 -4
  53. package/app/javascript/stylesheets/components/_tree_select.scss +3 -3
  54. package/app/javascript/stylesheets/components/_typography.scss +3 -3
  55. package/app/javascript/stylesheets/components/_upload.scss +4 -4
  56. package/package.json +2 -2
@@ -6,7 +6,7 @@
6
6
  flex: auto;
7
7
  flex-direction: column;
8
8
  min-height: 0;
9
- background: var(--hakumi-color-bg-layout);
9
+ background: var(--color-bg-light);
10
10
 
11
11
  &,
12
12
  * {
@@ -27,9 +27,9 @@
27
27
  .hakumi-layout-header {
28
28
  height: 64px;
29
29
  padding: 0 50px;
30
- color: var(--hakumi-color-text);
30
+ color: var(--color-text);
31
31
  line-height: 64px;
32
- background: var(--hakumi-color-bg-header);
32
+ background: var(--color-bg-container);
33
33
  }
34
34
 
35
35
 
@@ -41,17 +41,17 @@
41
41
 
42
42
  .hakumi-layout-footer {
43
43
  padding: 24px 50px;
44
- color: var(--hakumi-color-text);
44
+ color: var(--color-text);
45
45
  font-size: 14px;
46
- background: var(--hakumi-color-bg-layout);
46
+ background: var(--color-bg-light);
47
47
  }
48
48
 
49
49
 
50
50
  .hakumi-layout-sider {
51
51
  position: relative;
52
52
  min-width: 0;
53
- background: var(--hakumi-color-bg-sider);
54
- transition: all 0.2s;
53
+ background: var(--color-bg-light);
54
+ transition: all $transition-duration-base;
55
55
 
56
56
  &-children {
57
57
  height: 100%;
@@ -68,15 +68,15 @@
68
68
  bottom: 0;
69
69
  z-index: 1;
70
70
  height: 48px;
71
- color: #fff;
71
+ color: var(--color-text-inverse);
72
72
  line-height: 48px;
73
73
  text-align: center;
74
- background: rgba(0, 0, 0, 0.25);
74
+ background: var(--color-fill-secondary);
75
75
  cursor: pointer;
76
- transition: all 0.2s;
76
+ transition: all $transition-duration-base;
77
77
 
78
78
  &:hover {
79
- background: rgba(0, 0, 0, 0.4);
79
+ background: var(--color-fill-tertiary);
80
80
  }
81
81
  }
82
82
 
@@ -92,17 +92,17 @@
92
92
  z-index: 1;
93
93
  width: 36px;
94
94
  height: 42px;
95
- color: #fff;
95
+ color: var(--color-text-inverse);
96
96
  font-size: 18px;
97
97
  line-height: 42px;
98
98
  text-align: center;
99
- background: var(--hakumi-color-bg-sider);
99
+ background: var(--color-bg-light);
100
100
  border-radius: 0 4px 4px 0;
101
101
  cursor: pointer;
102
- transition: background 0.3s ease;
102
+ transition: background $transition-duration-slow ease;
103
103
 
104
104
  &:hover {
105
- background: rgba(0, 0, 0, 0.6);
105
+ background: var(--color-fill-secondary);
106
106
  }
107
107
 
108
108
  &::after {
@@ -112,7 +112,7 @@
112
112
  bottom: 0;
113
113
  left: 0;
114
114
  background: transparent;
115
- transition: all 0.3s;
115
+ transition: all $transition-duration-slow;
116
116
  content: '';
117
117
  }
118
118
  }
@@ -120,32 +120,33 @@
120
120
 
121
121
 
122
122
  &-light {
123
- background: #fff;
123
+ background: var(--color-bg-container);
124
124
 
125
125
  .hakumi-layout-sider-trigger {
126
- color: var(--hakumi-color-text);
127
- background: #fff;
128
- border-top: 1px solid var(--hakumi-color-border);
126
+ color: var(--color-text);
127
+ background: var(--color-bg-container);
128
+ border-top: 1px solid var(--color-border);
129
129
  }
130
130
 
131
131
  .hakumi-layout-sider-zero-width-trigger {
132
- color: var(--hakumi-color-text);
133
- background: #fff;
134
- border: 1px solid var(--hakumi-color-border);
132
+ color: var(--color-text);
133
+ background: var(--color-bg-container);
134
+ border: 1px solid var(--color-border);
135
135
  }
136
136
  }
137
137
 
138
138
 
139
+ // Dark sider theme - uses specific dark navy colors
139
140
  &-dark {
140
141
  background: #001529;
141
142
 
142
143
  .hakumi-layout-sider-trigger {
143
- color: rgba(255, 255, 255, 0.85);
144
+ color: var(--color-text-inverse);
144
145
  background: #002140;
145
146
  }
146
147
 
147
148
  .hakumi-layout-sider-zero-width-trigger {
148
- color: #fff;
149
+ color: var(--color-text-inverse);
149
150
  background: #001529;
150
151
  }
151
152
  }
@@ -195,4 +196,4 @@
195
196
  min-width: 0 !important;
196
197
  width: 0 !important;
197
198
  }
198
- }
199
+ }
@@ -10,7 +10,7 @@
10
10
  line-height: 0;
11
11
  list-style: none;
12
12
  outline: none;
13
- transition: width 0.3s cubic-bezier(0.2, 0, 0, 1);
13
+ transition: width $transition-duration-slow cubic-bezier(0.2, 0, 0, 1);
14
14
 
15
15
  &-root {
16
16
  background: var(--color-bg-container);
@@ -40,14 +40,14 @@
40
40
  padding: 0 20px;
41
41
  vertical-align: bottom;
42
42
  color: var(--color-text);
43
- transition: color 0.3s;
43
+ transition: color $transition-duration-slow;
44
44
 
45
45
  &::after {
46
46
  position: absolute;
47
47
  inset-inline: 20px;
48
48
  bottom: 0;
49
49
  border-bottom: 2px solid transparent;
50
- transition: border-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
50
+ transition: border-color $transition-duration-slow $ease-in-out;
51
51
  content: "";
52
52
  }
53
53
  }
@@ -105,7 +105,7 @@
105
105
  opacity: 0;
106
106
  visibility: hidden;
107
107
  transform: translateY(-4px);
108
- transition: opacity 0.2s, transform 0.2s, visibility 0.2s;
108
+ transition: opacity $transition-duration-base, transform $transition-duration-base, visibility $transition-duration-base;
109
109
  z-index: 1050;
110
110
 
111
111
 
@@ -159,7 +159,7 @@
159
159
  overflow: hidden;
160
160
  text-overflow: ellipsis;
161
161
  color: var(--color-text);
162
- transition: all 0.3s;
162
+ transition: all $transition-duration-slow;
163
163
 
164
164
  &:hover:not(.hakumi-menu-item-disabled):not(.hakumi-menu-item-selected) {
165
165
  background-color: var(--color-bg-spot);
@@ -276,7 +276,7 @@
276
276
  opacity: 0;
277
277
  visibility: hidden;
278
278
  transform: translateX(-4px);
279
- transition: opacity 0.2s, transform 0.2s, visibility 0.2s;
279
+ transition: opacity $transition-duration-base, transform $transition-duration-base, visibility $transition-duration-base;
280
280
  z-index: 1050;
281
281
  }
282
282
 
@@ -302,7 +302,7 @@
302
302
  .hakumi-menu-sub {
303
303
  max-height: 0;
304
304
  overflow: hidden;
305
- transition: max-height 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
305
+ transition: max-height $transition-duration-slow $ease-in-out;
306
306
 
307
307
  .hakumi-menu-item-link,
308
308
  .hakumi-menu-item-content,
@@ -393,7 +393,7 @@
393
393
  overflow-y: auto;
394
394
  overflow-x: hidden;
395
395
  transform: translateX(-4px);
396
- transition: opacity 0.2s, transform 0.2s, visibility 0.2s;
396
+ transition: opacity $transition-duration-base, transform $transition-duration-base, visibility $transition-duration-base;
397
397
  z-index: 1050;
398
398
 
399
399
 
@@ -447,7 +447,7 @@
447
447
  display: flex;
448
448
  align-items: center;
449
449
  cursor: pointer;
450
- transition: all 0.3s;
450
+ transition: all $transition-duration-slow;
451
451
 
452
452
  &:hover {
453
453
  background-color: var(--color-bg-spot);
@@ -488,10 +488,10 @@
488
488
 
489
489
  &.hakumi-menu-item-selected {
490
490
  background-color: var(--color-error);
491
- color: #fff;
491
+ color: var(--color-text-inverse);
492
492
 
493
493
  .hakumi-menu-item-icon {
494
- color: #fff;
494
+ color: var(--color-text-inverse);
495
495
  }
496
496
  }
497
497
  }
@@ -515,7 +515,7 @@
515
515
  margin-inline-end: 10px;
516
516
  font-size: 14px;
517
517
  color: var(--color-text-secondary);
518
- transition: color 0.3s;
518
+ transition: color $transition-duration-slow;
519
519
  }
520
520
  }
521
521
 
@@ -535,7 +535,7 @@
535
535
  display: flex;
536
536
  align-items: center;
537
537
  cursor: pointer;
538
- transition: all 0.3s;
538
+ transition: all $transition-duration-slow;
539
539
 
540
540
  &:hover {
541
541
  background-color: var(--color-bg-spot);
@@ -553,7 +553,7 @@
553
553
  height: 10px;
554
554
  color: var(--color-text-secondary);
555
555
  transform-style: preserve-3d;
556
- transition: transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
556
+ transition: transform $transition-duration-slow $ease-in-out;
557
557
 
558
558
  &::before,
559
559
  &::after {
@@ -624,7 +624,7 @@
624
624
  color: var(--color-text-tertiary);
625
625
  font-size: 12px;
626
626
  line-height: 1.5;
627
- transition: all 0.3s;
627
+ transition: all $transition-duration-slow;
628
628
  }
629
629
 
630
630
  &-list {
@@ -25,7 +25,7 @@
25
25
  -webkit-backdrop-filter: blur(2px);
26
26
 
27
27
 
28
- transition: opacity 0.2s, backdrop-filter 0.2s;
28
+ transition: opacity $transition-duration-base, backdrop-filter $transition-duration-base;
29
29
  }
30
30
 
31
31
  .hakumi-modal-wrap {
@@ -96,7 +96,7 @@
96
96
  border: 0;
97
97
  outline: 0;
98
98
  cursor: pointer;
99
- transition: color 0.2s;
99
+ transition: color $transition-duration-base;
100
100
  user-select: none;
101
101
 
102
102
  &:hover {
@@ -156,30 +156,30 @@
156
156
 
157
157
  .hakumi-modal-root {
158
158
  .hakumi-modal-mask {
159
- &.fade-enter {
159
+ &.hakumi-fade-enter {
160
160
  opacity: 0;
161
161
  backdrop-filter: blur(0px);
162
162
  -webkit-backdrop-filter: blur(0px);
163
163
  }
164
164
 
165
- &.fade-enter-active {
165
+ &.hakumi-fade-enter-active {
166
166
  opacity: 1;
167
167
  backdrop-filter: blur(2px);
168
168
  -webkit-backdrop-filter: blur(2px);
169
- transition: opacity 0.2s, backdrop-filter 0.2s;
169
+ transition: opacity $transition-duration-base, backdrop-filter $transition-duration-base;
170
170
  }
171
171
 
172
- &.fade-leave {
172
+ &.hakumi-fade-leave {
173
173
  opacity: 1;
174
174
  backdrop-filter: blur(2px);
175
175
  -webkit-backdrop-filter: blur(2px);
176
176
  }
177
177
 
178
- &.fade-leave-active {
178
+ &.hakumi-fade-leave-active {
179
179
  opacity: 0;
180
180
  backdrop-filter: blur(0px);
181
181
  -webkit-backdrop-filter: blur(0px);
182
- transition: opacity 0.2s, backdrop-filter 0.2s;
182
+ transition: opacity $transition-duration-base, backdrop-filter $transition-duration-base;
183
183
  }
184
184
  }
185
185
  }
@@ -193,8 +193,8 @@
193
193
  .hakumi-zoom-enter-active {
194
194
  opacity: 1;
195
195
  transform: scale(1);
196
- transition: opacity 0.3s cubic-bezier(0.08, 0.82, 0.17, 1),
197
- transform 0.3s cubic-bezier(0.08, 0.82, 0.17, 1);
196
+ transition: opacity $transition-duration-slow $ease-out-circ,
197
+ transform $transition-duration-slow $ease-out-circ;
198
198
  }
199
199
 
200
200
  .hakumi-zoom-leave {
@@ -205,8 +205,8 @@
205
205
  .hakumi-zoom-leave-active {
206
206
  opacity: 0;
207
207
  transform: scale(0.2);
208
- transition: opacity 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86),
209
- transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);
208
+ transition: opacity $transition-duration-slow $ease-in-out-circ,
209
+ transform $transition-duration-slow $ease-in-out-circ;
210
210
  }
211
211
 
212
212
  // Modal Confirm variant
@@ -220,4 +220,4 @@
220
220
  p {
221
221
  margin: 0;
222
222
  }
223
- }
223
+ }
@@ -69,7 +69,7 @@
69
69
  border-radius: 8px;
70
70
  box-shadow: var(--shadow-base);
71
71
  pointer-events: all;
72
- transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
72
+ transition: all $transition-duration-slow $ease-in-out;
73
73
 
74
74
  &-enter {
75
75
  opacity: 0;
@@ -101,7 +101,7 @@
101
101
  opacity: 0;
102
102
  transform: translateX(100%) !important;
103
103
  filter: blur(5px);
104
- transition: all 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
104
+ transition: all $transition-duration-base $ease-in-out;
105
105
 
106
106
  .hakumi-notification-topLeft &,
107
107
  .hakumi-notification-bottomLeft & {
@@ -172,7 +172,7 @@
172
172
  border: none;
173
173
  background: transparent;
174
174
  cursor: pointer;
175
- transition: color 0.2s;
175
+ transition: color $transition-duration-base;
176
176
  font-size: 14px;
177
177
  display: flex;
178
178
  align-items: center;
@@ -17,7 +17,7 @@
17
17
  cursor: auto;
18
18
  user-select: text;
19
19
  opacity: 0;
20
- transition: opacity 0.3s, transform 0.3s;
20
+ transition: opacity $transition-duration-slow, transform $transition-duration-slow;
21
21
  pointer-events: none;
22
22
  width: max-content;
23
23
  min-width: 160px;
@@ -42,7 +42,7 @@
42
42
  border-radius: var(--border-radius-sm);
43
43
  cursor: pointer;
44
44
  user-select: none;
45
- transition: background-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease;
45
+ transition: background-color $transition-duration-base ease, color $transition-duration-base ease, box-shadow $transition-duration-base ease;
46
46
 
47
47
  &:not(.hakumi-segmented-item-selected):hover {
48
48
  background-color: var(--color-control-item-bg-hover);
@@ -134,9 +134,9 @@
134
134
  top: 0;
135
135
  left: 0;
136
136
  border-radius: var(--border-radius-sm);
137
- background-color: var(--color-bg-container, #fff);
137
+ background-color: var(--color-bg-container, var(--color-text-inverse));
138
138
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.05), var(--shadow-xs, none);
139
- transition: transform 0.2s ease, width 0.2s ease, height 0.2s ease, opacity 0.2s ease;
139
+ transition: transform $transition-duration-base ease, width $transition-duration-base ease, height $transition-duration-base ease, opacity $transition-duration-base ease;
140
140
  pointer-events: none;
141
141
  opacity: 0;
142
142
  z-index: 0;
@@ -25,7 +25,7 @@
25
25
  background-color: var(--color-bg-container);
26
26
  border: 1px solid var(--color-border);
27
27
  border-radius: 6px;
28
- transition: all 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
28
+ transition: all $transition-duration-base $ease-in-out;
29
29
  width: 100%;
30
30
  height: 32px;
31
31
  padding: 0 30px 0 11px;
@@ -138,7 +138,7 @@
138
138
  margin-top: -6px;
139
139
  font-size: 12px;
140
140
  pointer-events: none;
141
- transition: transform 0.3s;
141
+ transition: transform $transition-duration-slow;
142
142
 
143
143
  .hakumi-select-open & {
144
144
  transform: rotate(180deg);
@@ -165,7 +165,7 @@
165
165
  background: var(--color-bg-container);
166
166
  cursor: pointer;
167
167
  opacity: 0;
168
- transition: color 0.3s ease, opacity 0.15s ease;
168
+ transition: color $transition-duration-slow ease, opacity 0.15s ease;
169
169
  text-rendering: optimizeLegibility;
170
170
 
171
171
  &:hover {
@@ -206,7 +206,7 @@
206
206
  scrollbar-width: thin;
207
207
  background-color: var(--color-bg-elevated);
208
208
  border-radius: 8px;
209
- box-shadow: 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);
209
+ box-shadow: var(--shadow-lg);
210
210
  z-index: 1050;
211
211
  margin-top: 4px;
212
212
 
@@ -238,7 +238,7 @@
238
238
  font-size: 14px;
239
239
  line-height: 22px;
240
240
  cursor: pointer;
241
- transition: background 0.3s ease;
241
+ transition: background $transition-duration-slow ease;
242
242
  border-radius: 4px;
243
243
 
244
244
  &-option-content {
@@ -401,7 +401,7 @@
401
401
  .hakumi-select-dropdown {
402
402
  opacity: 0;
403
403
  visibility: hidden;
404
- transition: opacity 0.2s, visibility 0.2s;
404
+ transition: opacity $transition-duration-base, visibility $transition-duration-base;
405
405
  display: block !important;
406
406
  }
407
407
 
@@ -59,7 +59,7 @@
59
59
  left: 50%;
60
60
  transform: translateX(-50%);
61
61
  background-color: var(--color-bg-spotlight);
62
- color: #fff;
62
+ color: var(--color-text-inverse);
63
63
  font-size: $font-size-sm;
64
64
  line-height: 1;
65
65
  padding: 6px 8px;
@@ -102,12 +102,12 @@
102
102
  z-index: 1;
103
103
  background-color: color-mix(in srgb, var(--color-bg-container) 72%, transparent);
104
104
  border-radius: var(--border-radius-base);
105
- transition: opacity 0.2s ease;
105
+ transition: opacity $transition-duration-base ease;
106
106
  }
107
107
 
108
108
  .hakumi-spin-nested-loading .hakumi-spin-container {
109
109
  position: relative;
110
- transition: opacity 0.2s ease;
110
+ transition: opacity $transition-duration-base ease;
111
111
  }
112
112
 
113
113
  .hakumi-spin-nested-loading:not(.hakumi-spin-spinning) .hakumi-spin-overlay {
@@ -50,7 +50,7 @@
50
50
  width: 9999px;
51
51
  height: 1px;
52
52
  background: var(--color-border);
53
- transition: background 0.3s;
53
+ transition: background $transition-duration-slow;
54
54
  content: "";
55
55
  }
56
56
 
@@ -120,7 +120,7 @@
120
120
  inset-inline-start: 15px;
121
121
  width: 1px;
122
122
  background: var(--color-border);
123
- transition: background 0.3s;
123
+ transition: background $transition-duration-slow;
124
124
  }
125
125
 
126
126
  .hakumi-steps-item:last-child .hakumi-steps-item-container::after {
@@ -301,7 +301,7 @@
301
301
  height: 1px;
302
302
  background: var(--color-border);
303
303
  border-radius: 1px;
304
- transition: background 0.3s;
304
+ transition: background $transition-duration-slow;
305
305
  content: "";
306
306
  }
307
307
  }
@@ -321,7 +321,7 @@
321
321
  border: 1px solid var(--color-border);
322
322
  border-radius: 50%;
323
323
  background: var(--color-bg-container);
324
- transition: background-color 0.3s, border-color 0.3s;
324
+ transition: background-color $transition-duration-slow, border-color $transition-duration-slow;
325
325
  margin-inline-end: 8px;
326
326
 
327
327
  .hakumi-steps-icon {
@@ -575,7 +575,7 @@
575
575
  stroke: var(--color-primary);
576
576
  stroke-width: 4;
577
577
  stroke-linecap: round;
578
- transition: stroke-dasharray 0.3s;
578
+ transition: stroke-dasharray $transition-duration-slow;
579
579
  }
580
580
  }
581
581
 
@@ -629,7 +629,7 @@
629
629
  height: 8px;
630
630
  background: var(--color-border);
631
631
  border-radius: 100px;
632
- transition: all 0.3s;
632
+ transition: all $transition-duration-slow;
633
633
  }
634
634
  }
635
635
 
@@ -675,7 +675,7 @@
675
675
  inset-inline-start: 4px;
676
676
  width: 1px;
677
677
  background: var(--color-border);
678
- transition: background 0.3s;
678
+ transition: background $transition-duration-slow;
679
679
  }
680
680
 
681
681
  .hakumi-steps-item:last-child .hakumi-steps-item-container::after {
@@ -736,7 +736,7 @@
736
736
  width: 0;
737
737
  height: 2px;
738
738
  background-color: var(--color-primary);
739
- transition: width 0.3s, inset-inline-start 0.3s;
739
+ transition: width $transition-duration-slow, inset-inline-start $transition-duration-slow;
740
740
  content: "";
741
741
  }
742
742
 
@@ -772,7 +772,7 @@
772
772
  height: 100%;
773
773
  padding-bottom: 12px;
774
774
  text-align: start;
775
- transition: opacity 0.3s;
775
+ transition: opacity $transition-duration-slow;
776
776
  }
777
777
 
778
778
  .hakumi-steps-item-icon {
@@ -909,7 +909,7 @@
909
909
  background-color: transparent;
910
910
  border-radius: var(--border-radius-sm);
911
911
  cursor: pointer;
912
- transition: background-color 0.2s;
912
+ transition: background-color $transition-duration-base;
913
913
  }
914
914
 
915
915
  .hakumi-steps-item:hover .hakumi-steps-item-container {
@@ -1,4 +1,5 @@
1
1
  // Hakumi Switch Component
2
+ @use '../variables' as *;
2
3
 
3
4
  .hakumi-switch {
4
5
  position: relative;
@@ -8,7 +9,7 @@
8
9
  background-color: var(--color-border);
9
10
  border-radius: 999px;
10
11
  cursor: pointer;
11
- transition: background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1);
12
+ transition: background-color $transition-duration-base cubic-bezier(0.4, 0, 0.2, 1);
12
13
  vertical-align: middle;
13
14
  line-height: 22px;
14
15
  overflow: hidden;
@@ -19,7 +20,7 @@
19
20
 
20
21
  &.hakumi-switch-disabled {
21
22
  cursor: not-allowed;
22
- background-color: rgba(0, 0, 0, 0.25);
23
+ background-color: var(--color-disabled);
23
24
  }
24
25
 
25
26
  &.hakumi-switch-loading {
@@ -51,7 +52,7 @@
51
52
  border-radius: 50%;
52
53
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12);
53
54
  transform: translateX(0);
54
- transition: transform 0.2s cubic-bezier(0.4, 0, 0.2, 1);
55
+ transition: transform $transition-duration-base cubic-bezier(0.4, 0, 0.2, 1);
55
56
  }
56
57
 
57
58
  .hakumi-switch-loading-icon {
@@ -84,8 +85,8 @@
84
85
  grid-column: 1;
85
86
  grid-row: 1;
86
87
  white-space: nowrap;
87
- transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1),
88
- transform 0.2s cubic-bezier(0.4, 0, 0.2, 1);
88
+ transition: opacity $transition-duration-base cubic-bezier(0.4, 0, 0.2, 1),
89
+ transform $transition-duration-base cubic-bezier(0.4, 0, 0.2, 1);
89
90
  }
90
91
 
91
92
  .hakumi-switch-inner-checked {
@@ -112,7 +113,7 @@
112
113
  }
113
114
 
114
115
  .hakumi-switch-inner {
115
- color: #fff;
116
+ color: var(--color-text-inverse);
116
117
  }
117
118
 
118
119
  .hakumi-switch-inner-checked {
@@ -135,18 +136,18 @@
135
136
  .hakumi-switch-disabled {
136
137
  .hakumi-switch-handle {
137
138
  box-shadow: none;
138
- background-color: rgba(255, 255, 255, 0.8);
139
+ background-color: var(--color-bg-container);
139
140
  }
140
141
 
141
142
  .hakumi-switch-inner {
142
- color: rgba(0, 0, 0, 0.4);
143
+ color: var(--color-text-tertiary);
143
144
  }
144
145
 
145
146
  &.hakumi-switch-checked {
146
- background-color: rgba(24, 144, 255, 0.4);
147
+ opacity: 0.4;
147
148
 
148
149
  .hakumi-switch-inner {
149
- color: rgba(255, 255, 255, 0.6);
150
+ color: var(--color-text-inverse);
150
151
  }
151
152
  }
152
153
  }