@skygraph/styles 0.0.0-placeholder.0 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +92 -6
  3. package/components/autocomplete.css +33 -0
  4. package/components/avatar.css +37 -0
  5. package/components/badge.css +102 -0
  6. package/components/breadcrumb.css +29 -0
  7. package/components/button.css +181 -0
  8. package/components/calendar.css +408 -0
  9. package/components/carousel.css +102 -0
  10. package/components/cascader.css +354 -0
  11. package/components/charts.css +408 -0
  12. package/components/checkbox.css +29 -0
  13. package/components/collapse.css +166 -0
  14. package/components/colorpicker.css +252 -0
  15. package/components/context-menu.css +95 -0
  16. package/components/dashboard.css +299 -0
  17. package/components/datagrid.css +86 -0
  18. package/components/datepicker.css +601 -0
  19. package/components/descriptions.css +82 -0
  20. package/components/diagram.css +422 -0
  21. package/components/drawer.css +103 -0
  22. package/components/dropdown.css +93 -0
  23. package/components/empty.css +25 -0
  24. package/components/event-timeline.css +100 -0
  25. package/components/field.css +35 -0
  26. package/components/form.css +115 -0
  27. package/components/gantt.css +161 -0
  28. package/components/inline-edit.css +113 -0
  29. package/components/input-group.css +79 -0
  30. package/components/input-number.css +76 -0
  31. package/components/input-password.css +104 -0
  32. package/components/input.css +110 -0
  33. package/components/list.css +357 -0
  34. package/components/mentions.css +54 -0
  35. package/components/menu.css +309 -0
  36. package/components/modal.css +77 -0
  37. package/components/notification.css +128 -0
  38. package/components/pagination.css +162 -0
  39. package/components/pin-input.css +71 -0
  40. package/components/popconfirm.css +95 -0
  41. package/components/progress.css +116 -0
  42. package/components/radio.css +38 -0
  43. package/components/rate.css +34 -0
  44. package/components/resource-calendar.css +219 -0
  45. package/components/result.css +45 -0
  46. package/components/schema-form-editor.css +425 -0
  47. package/components/search-input.css +112 -0
  48. package/components/segmented.css +76 -0
  49. package/components/select.css +172 -0
  50. package/components/skeleton.css +68 -0
  51. package/components/slider.css +51 -0
  52. package/components/spin.css +86 -0
  53. package/components/steps.css +185 -0
  54. package/components/switch.css +69 -0
  55. package/components/table.css +984 -0
  56. package/components/tabs.css +117 -0
  57. package/components/tag-input.css +94 -0
  58. package/components/tag.css +61 -0
  59. package/components/textarea.css +22 -0
  60. package/components/timeline.css +169 -0
  61. package/components/timepicker.css +213 -0
  62. package/components/tooltip.css +91 -0
  63. package/components/transfer.css +140 -0
  64. package/components/tree.css +574 -0
  65. package/components/treeselect.css +219 -0
  66. package/components/upload.css +124 -0
  67. package/index.css +69 -3
  68. package/index.d.ts +9 -0
  69. package/package.json +102 -18
  70. package/print.css +88 -0
  71. package/reset.css +17 -0
  72. package/themes/dark.css +17 -0
  73. package/themes/default.css +14 -0
  74. package/tokens.css +312 -0
  75. package/transitions.css +158 -0
@@ -0,0 +1,117 @@
1
+ /* ── Shared ─────────────────────────────────────────────────────────── */
2
+
3
+ .sg-tabs {
4
+ font-size: var(--sg-font-size);
5
+ }
6
+
7
+ .sg-tabs-tab-disabled {
8
+ color: var(--sg-color-text-disabled);
9
+ cursor: not-allowed;
10
+ }
11
+
12
+ .sg-tabs-tab-loading {
13
+ display: inline-flex;
14
+ align-items: center;
15
+ gap: var(--sg-padding-xs);
16
+ --sg-spin-color: var(--sg-color-text-tertiary);
17
+ }
18
+
19
+ .sg-tabs-tab-loading.sg-tabs-tab-active {
20
+ --sg-spin-color: var(--sg-color-primary);
21
+ }
22
+
23
+ .sg-tabs-content {
24
+ color: var(--sg-color-text);
25
+ }
26
+
27
+ /* ── Line (minimal underline) ───────────────────────────────────────── */
28
+
29
+ .sg-tabs-line .sg-tabs-nav {
30
+ display: flex;
31
+ border-bottom: 1px solid var(--sg-color-border-secondary);
32
+ margin-bottom: var(--sg-margin-md);
33
+ }
34
+
35
+ .sg-tabs-line .sg-tabs-tab {
36
+ padding: var(--sg-padding-sm) var(--sg-padding-lg);
37
+ cursor: pointer;
38
+ color: var(--sg-color-text-secondary);
39
+ border-bottom: 2px solid transparent;
40
+ margin-bottom: -1px;
41
+ transition: all var(--sg-transition-duration);
42
+ user-select: none;
43
+ }
44
+
45
+ .sg-tabs-line .sg-tabs-tab:hover {
46
+ color: var(--sg-color-primary-hover);
47
+ }
48
+
49
+ .sg-tabs-line .sg-tabs-tab-active {
50
+ color: var(--sg-color-primary);
51
+ border-bottom-color: var(--sg-color-primary);
52
+ }
53
+
54
+ /* ── Card (classic bordered tabs + panel) ─────────────────────────── */
55
+
56
+ .sg-tabs-card {
57
+ border: 1px solid var(--sg-color-border-secondary);
58
+ border-radius: var(--sg-border-radius);
59
+ overflow: hidden;
60
+ background: var(--sg-color-bg);
61
+ }
62
+
63
+ .sg-tabs-card .sg-tabs-nav {
64
+ display: flex;
65
+ flex-wrap: wrap;
66
+ gap: 0;
67
+ margin: 0;
68
+ padding: 4px 4px 0;
69
+ background: var(--sg-color-bg-secondary);
70
+ border-bottom: none;
71
+ }
72
+
73
+ .sg-tabs-card .sg-tabs-tab {
74
+ /* Reserve the same vertical space for active and idle tabs so flipping
75
+ * between them never resizes the nav strip (no more 1px jitter on tab
76
+ * switch). The bottom border is always drawn but transparent until the
77
+ * tab becomes active. */
78
+ padding: var(--sg-padding-sm) var(--sg-padding-lg);
79
+ cursor: pointer;
80
+ margin: 0 2px -1px 0;
81
+ color: var(--sg-color-text-secondary);
82
+ border: 1px solid transparent;
83
+ border-bottom: 1px solid transparent;
84
+ border-radius: var(--sg-border-radius-sm) var(--sg-border-radius-sm) 0 0;
85
+ background: transparent;
86
+ transition:
87
+ color var(--sg-transition-duration),
88
+ background var(--sg-transition-duration),
89
+ border-color var(--sg-transition-duration);
90
+ user-select: none;
91
+ position: relative;
92
+ z-index: 0;
93
+ }
94
+
95
+ .sg-tabs-card .sg-tabs-tab:hover {
96
+ color: var(--sg-color-primary-hover);
97
+ background: color-mix(in srgb, var(--sg-color-bg) 55%, var(--sg-color-bg-secondary));
98
+ }
99
+
100
+ .sg-tabs-card .sg-tabs-tab-active {
101
+ color: var(--sg-color-primary);
102
+ background: var(--sg-color-bg);
103
+ border-color: var(--sg-color-border-secondary);
104
+ border-bottom-color: var(--sg-color-bg);
105
+ z-index: 1;
106
+ }
107
+
108
+ .sg-tabs-card .sg-tabs-tab-active:hover {
109
+ color: var(--sg-color-primary);
110
+ }
111
+
112
+ .sg-tabs-card .sg-tabs-content {
113
+ margin: 0;
114
+ padding: var(--sg-padding-md) var(--sg-padding-lg);
115
+ border-top: 1px solid var(--sg-color-border-secondary);
116
+ min-height: 0;
117
+ }
@@ -0,0 +1,94 @@
1
+ /* TagInput */
2
+ .sg-tag-input {
3
+ display: flex;
4
+ flex-wrap: wrap;
5
+ align-items: center;
6
+ gap: var(--sg-margin-xs);
7
+ min-height: var(--sg-height-md);
8
+ padding: var(--sg-padding-xs) var(--sg-padding-sm);
9
+ background: var(--sg-color-bg-container);
10
+ border: 1px solid var(--sg-color-border);
11
+ border-radius: var(--sg-border-radius);
12
+ cursor: text;
13
+ transition: border-color var(--sg-transition-duration) var(--sg-transition-timing),
14
+ box-shadow var(--sg-transition-duration) var(--sg-transition-timing);
15
+ }
16
+
17
+ .sg-tag-input:hover {
18
+ border-color: var(--sg-color-primary-hover);
19
+ }
20
+
21
+ .sg-tag-input:focus-within {
22
+ border-color: var(--sg-color-primary);
23
+ box-shadow: 0 0 0 2px var(--sg-color-primary-bg);
24
+ }
25
+
26
+ .sg-tag-input-field {
27
+ flex: 1;
28
+ min-width: 80px;
29
+ border: none;
30
+ outline: none;
31
+ background: transparent;
32
+ color: var(--sg-color-text);
33
+ font-size: var(--sg-font-size);
34
+ font-family: inherit;
35
+ line-height: var(--sg-line-height);
36
+ padding: 0;
37
+ }
38
+
39
+ .sg-tag-input-field::placeholder {
40
+ color: var(--sg-color-text-placeholder);
41
+ }
42
+
43
+ .sg-tag-input .sg-tag {
44
+ margin: 0;
45
+ max-width: 200px;
46
+ overflow: hidden;
47
+ text-overflow: ellipsis;
48
+ }
49
+
50
+ .sg-tag-input-count {
51
+ font-size: var(--sg-font-size-sm);
52
+ color: var(--sg-color-text-tertiary);
53
+ margin-left: auto;
54
+ white-space: nowrap;
55
+ padding-left: var(--sg-padding-xs);
56
+ }
57
+
58
+ /* Sizes */
59
+ .sg-tag-input-small {
60
+ min-height: var(--sg-height-sm);
61
+ padding: 2px var(--sg-padding-xs);
62
+ }
63
+
64
+ .sg-tag-input-small .sg-tag-input-field {
65
+ font-size: var(--sg-font-size-sm);
66
+ }
67
+
68
+ .sg-tag-input-large {
69
+ min-height: var(--sg-height-lg);
70
+ padding: var(--sg-padding-sm) var(--sg-padding-md);
71
+ }
72
+
73
+ .sg-tag-input-large .sg-tag-input-field {
74
+ font-size: var(--sg-font-size-lg);
75
+ }
76
+
77
+ /* Disabled */
78
+ .sg-tag-input-disabled {
79
+ background: var(--sg-color-bg-disabled);
80
+ cursor: not-allowed;
81
+ }
82
+
83
+ .sg-tag-input-disabled:hover {
84
+ border-color: var(--sg-color-border);
85
+ }
86
+
87
+ .sg-tag-input-disabled:focus-within {
88
+ border-color: var(--sg-color-border);
89
+ box-shadow: none;
90
+ }
91
+
92
+ .sg-tag-input-disabled .sg-tag-input-field {
93
+ cursor: not-allowed;
94
+ }
@@ -0,0 +1,61 @@
1
+ .sg-tag {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ gap: 4px;
5
+ padding: 0 var(--sg-padding-sm);
6
+ height: 22px;
7
+ font-size: var(--sg-font-size-sm);
8
+ line-height: 20px;
9
+ white-space: nowrap;
10
+ border-radius: var(--sg-border-radius-sm);
11
+ border: 1px solid var(--sg-color-border);
12
+ background: var(--sg-color-bg-secondary);
13
+ color: var(--sg-color-text);
14
+ transition: all var(--sg-transition-duration) var(--sg-transition-timing);
15
+ }
16
+
17
+ .sg-tag-borderless {
18
+ border-color: transparent;
19
+ }
20
+
21
+ .sg-tag-default {
22
+ background: var(--sg-color-bg-secondary);
23
+ border-color: var(--sg-color-border);
24
+ color: var(--sg-color-text);
25
+ }
26
+
27
+ .sg-tag-success {
28
+ background: var(--sg-color-success-bg);
29
+ border-color: var(--sg-color-success);
30
+ color: var(--sg-color-success);
31
+ }
32
+
33
+ .sg-tag-error {
34
+ background: var(--sg-color-error-bg);
35
+ border-color: var(--sg-color-error);
36
+ color: var(--sg-color-error);
37
+ }
38
+
39
+ .sg-tag-warning {
40
+ background: var(--sg-color-warning-bg);
41
+ border-color: var(--sg-color-warning);
42
+ color: var(--sg-color-warning);
43
+ }
44
+
45
+ .sg-tag-processing {
46
+ background: var(--sg-color-primary-bg);
47
+ border-color: var(--sg-color-primary);
48
+ color: var(--sg-color-primary);
49
+ }
50
+
51
+ .sg-tag-close {
52
+ cursor: pointer;
53
+ font-size: 10px;
54
+ color: inherit;
55
+ opacity: 0.6;
56
+ transition: opacity var(--sg-transition-duration) var(--sg-transition-timing);
57
+ }
58
+
59
+ .sg-tag-close:hover {
60
+ opacity: 1;
61
+ }
@@ -0,0 +1,22 @@
1
+ .sg-textarea-wrapper {
2
+ position: relative;
3
+ display: block;
4
+ }
5
+
6
+ .sg-textarea-wrapper-loading {
7
+ --sg-spin-color: var(--sg-color-text-tertiary);
8
+ }
9
+
10
+ .sg-textarea-wrapper .sg-spin {
11
+ position: absolute;
12
+ right: var(--sg-padding-sm);
13
+ top: var(--sg-padding-sm);
14
+ }
15
+
16
+ .sg-textarea-count {
17
+ display: block;
18
+ text-align: right;
19
+ font-size: var(--sg-font-size-sm);
20
+ color: var(--sg-color-text-tertiary);
21
+ margin-top: var(--sg-margin-xs);
22
+ }
@@ -0,0 +1,169 @@
1
+ .sg-timeline {
2
+ list-style: none;
3
+ margin: 0;
4
+ padding: 0;
5
+ font-size: var(--sg-font-size);
6
+ color: var(--sg-color-text);
7
+ }
8
+
9
+ .sg-timeline-item {
10
+ position: relative;
11
+ display: flex;
12
+ padding-bottom: var(--sg-padding-xl);
13
+ }
14
+
15
+ .sg-timeline-item:last-child {
16
+ padding-bottom: 0;
17
+ }
18
+
19
+ /* Head wrapper (dot + tail) */
20
+ .sg-timeline-item-head-wrapper {
21
+ position: relative;
22
+ display: flex;
23
+ flex-direction: column;
24
+ align-items: center;
25
+ flex-shrink: 0;
26
+ width: 20px;
27
+ }
28
+
29
+ .sg-timeline-item-head {
30
+ width: 10px;
31
+ height: 10px;
32
+ border-radius: 50%;
33
+ border: 2px solid var(--sg-color-primary);
34
+ background: var(--sg-color-bg);
35
+ flex-shrink: 0;
36
+ z-index: 1;
37
+ /* Drop-shadow on the head doubles as a focus halo + visual weight,
38
+ * so timeline items have a sense of being "pinned" rather than
39
+ * floating against an empty rail. Reuses the event-timeline token
40
+ * for visual consistency. */
41
+ box-shadow: var(--sg-event-timeline-dot-shadow);
42
+ transition:
43
+ box-shadow var(--sg-transition-medium),
44
+ transform var(--sg-transition-medium);
45
+ }
46
+
47
+ .sg-timeline-item:hover .sg-timeline-item-head {
48
+ box-shadow: var(--sg-event-timeline-dot-shadow-hover);
49
+ transform: scale(1.15);
50
+ }
51
+
52
+ .sg-timeline-item-head-custom {
53
+ width: auto;
54
+ height: auto;
55
+ border: none;
56
+ background: transparent;
57
+ display: flex;
58
+ align-items: center;
59
+ justify-content: center;
60
+ font-size: var(--sg-font-size-lg);
61
+ /* Custom-icon heads don't need the dot halo; the user-supplied
62
+ * graphic carries its own weight. */
63
+ box-shadow: none;
64
+ }
65
+
66
+ .sg-timeline-item:hover .sg-timeline-item-head-custom {
67
+ box-shadow: none;
68
+ transform: none;
69
+ }
70
+
71
+ .sg-timeline-item-tail {
72
+ flex: 1;
73
+ width: 2px;
74
+ /* Gradient tail — the rail fades from `--sg-timeline-tail-color` at
75
+ * the dot down to a slightly more transparent version, giving the
76
+ * timeline a sense of motion. The two stops use the same token so a
77
+ * theme override re-tints the entire rail. */
78
+ background: linear-gradient(
79
+ to bottom,
80
+ var(--sg-timeline-tail-color) 0%,
81
+ var(--sg-timeline-tail-color) 60%,
82
+ var(--sg-color-border-secondary) 100%
83
+ );
84
+ margin-top: var(--sg-margin-xs);
85
+ min-height: 16px;
86
+ border-radius: 1px;
87
+ }
88
+
89
+ /* Content */
90
+ .sg-timeline-item-content {
91
+ flex: 1;
92
+ min-width: 0;
93
+ padding: 0 0 0 var(--sg-padding-md);
94
+ line-height: var(--sg-line-height);
95
+ position: relative;
96
+ top: -3px;
97
+ }
98
+
99
+ /* Label */
100
+ .sg-timeline-item-label {
101
+ width: 120px;
102
+ flex-shrink: 0;
103
+ text-align: right;
104
+ padding-right: var(--sg-padding-md);
105
+ color: var(--sg-color-text-secondary);
106
+ font-size: var(--sg-font-size-sm);
107
+ position: relative;
108
+ top: -3px;
109
+ }
110
+
111
+ /* Mode: left (default) */
112
+ .sg-timeline-left .sg-timeline-item {
113
+ flex-direction: row;
114
+ }
115
+
116
+ .sg-timeline-left .sg-timeline-item-label {
117
+ display: none;
118
+ }
119
+
120
+ /* Mode: right */
121
+ .sg-timeline-right .sg-timeline-item {
122
+ flex-direction: row-reverse;
123
+ }
124
+
125
+ .sg-timeline-right .sg-timeline-item-content {
126
+ padding: 0 var(--sg-padding-md) 0 0;
127
+ text-align: right;
128
+ }
129
+
130
+ .sg-timeline-right .sg-timeline-item-label {
131
+ display: none;
132
+ }
133
+
134
+ /* Mode: alternate */
135
+ .sg-timeline-alternate .sg-timeline-item-label {
136
+ display: block;
137
+ }
138
+
139
+ .sg-timeline-alternate .sg-timeline-item-left {
140
+ flex-direction: row;
141
+ }
142
+
143
+ .sg-timeline-alternate .sg-timeline-item-left .sg-timeline-item-label {
144
+ text-align: right;
145
+ }
146
+
147
+ .sg-timeline-alternate .sg-timeline-item-right {
148
+ flex-direction: row-reverse;
149
+ }
150
+
151
+ .sg-timeline-alternate .sg-timeline-item-right .sg-timeline-item-content {
152
+ padding: 0 var(--sg-padding-md) 0 0;
153
+ text-align: right;
154
+ }
155
+
156
+ .sg-timeline-alternate .sg-timeline-item-right .sg-timeline-item-label {
157
+ text-align: left;
158
+ padding-right: 0;
159
+ padding-left: var(--sg-padding-md);
160
+ }
161
+
162
+ /* Pending */
163
+ .sg-timeline-item-pending .sg-timeline-item-head {
164
+ border-color: var(--sg-color-text-disabled);
165
+ }
166
+
167
+ .sg-timeline-item-pending .sg-timeline-item-content {
168
+ color: var(--sg-color-text-tertiary);
169
+ }
@@ -0,0 +1,213 @@
1
+ /* ═══════════════════════════════════════════════════════
2
+ TimePicker / TimeRangePicker
3
+ ═══════════════════════════════════════════════════════ */
4
+
5
+ .sg-timepicker {
6
+ position: relative;
7
+ display: inline-block;
8
+ }
9
+
10
+ .sg-timepicker-disabled {
11
+ opacity: 0.5;
12
+ pointer-events: none;
13
+ }
14
+
15
+ /* ── Input ── */
16
+
17
+ .sg-timepicker-input {
18
+ display: flex;
19
+ align-items: center;
20
+ gap: var(--sg-padding-xs);
21
+ height: var(--sg-height-md);
22
+ padding: 0 var(--sg-padding-sm) 0 var(--sg-padding-md);
23
+ border: 1px solid var(--sg-color-border);
24
+ border-radius: var(--sg-border-radius);
25
+ background: var(--sg-color-bg-container);
26
+ cursor: pointer;
27
+ min-width: 140px;
28
+ font-size: var(--sg-font-size);
29
+ color: var(--sg-color-text);
30
+ transition: border-color var(--sg-transition-duration), box-shadow var(--sg-transition-duration);
31
+ }
32
+
33
+ .sg-timepicker-input:hover {
34
+ border-color: var(--sg-color-primary-hover);
35
+ }
36
+
37
+ .sg-timepicker-open .sg-timepicker-input {
38
+ border-color: var(--sg-color-primary);
39
+ box-shadow: 0 0 0 2px var(--sg-color-primary-bg);
40
+ }
41
+
42
+ .sg-timepicker-input:focus-visible {
43
+ outline: none;
44
+ border-color: var(--sg-color-primary);
45
+ box-shadow: 0 0 0 2px var(--sg-color-primary-bg);
46
+ }
47
+
48
+ .sg-timepicker-placeholder {
49
+ color: var(--sg-color-text-quaternary);
50
+ }
51
+
52
+ .sg-timepicker-suffix {
53
+ display: flex;
54
+ align-items: center;
55
+ gap: var(--sg-padding-xs);
56
+ margin-left: auto;
57
+ color: var(--sg-color-text-tertiary);
58
+ flex-shrink: 0;
59
+ }
60
+
61
+ .sg-timepicker-icon-svg {
62
+ opacity: 0.65;
63
+ }
64
+
65
+ .sg-timepicker-clear {
66
+ cursor: pointer;
67
+ font-size: var(--sg-font-size);
68
+ line-height: 1;
69
+ color: var(--sg-color-text-quaternary);
70
+ transition: color var(--sg-transition-duration);
71
+ }
72
+
73
+ .sg-timepicker-clear:hover {
74
+ color: var(--sg-color-text-secondary);
75
+ }
76
+
77
+ /* Size variants */
78
+
79
+ .sg-timepicker-small .sg-timepicker-input {
80
+ height: var(--sg-height-sm);
81
+ font-size: var(--sg-font-size-sm);
82
+ min-width: 120px;
83
+ }
84
+
85
+ .sg-timepicker-large .sg-timepicker-input {
86
+ height: var(--sg-height-lg);
87
+ font-size: var(--sg-font-size-lg);
88
+ min-width: 160px;
89
+ }
90
+
91
+ /* Range input */
92
+
93
+ .sg-timepicker-range-input {
94
+ min-width: 240px;
95
+ }
96
+
97
+ .sg-timepicker-separator {
98
+ color: var(--sg-color-text-quaternary);
99
+ padding: 0 var(--sg-padding-xs);
100
+ }
101
+
102
+ /* ═══════════════════════════════════════════════════════
103
+ Dropdown
104
+ ═══════════════════════════════════════════════════════ */
105
+
106
+ .sg-tp-dropdown {
107
+ position: absolute;
108
+ top: 100%;
109
+ left: 0;
110
+ z-index: var(--sg-z-dropdown);
111
+ margin-top: var(--sg-padding-xs);
112
+ background: var(--sg-color-bg-elevated);
113
+ border-radius: var(--sg-border-radius-lg);
114
+ box-shadow: var(--sg-shadow-lg);
115
+ overflow: hidden;
116
+ }
117
+
118
+ .sg-tp-dropdown-range {
119
+ min-width: 280px;
120
+ }
121
+
122
+ .sg-tp-range-panels {
123
+ display: flex;
124
+ gap: 1px;
125
+ background: var(--sg-color-border-secondary);
126
+ }
127
+
128
+ .sg-tp-range-panels > * {
129
+ background: var(--sg-color-bg-elevated);
130
+ }
131
+
132
+ /* ── Scroll columns ── */
133
+
134
+ .sg-tp-columns {
135
+ display: flex;
136
+ max-height: 224px;
137
+ }
138
+
139
+ .sg-tp-col {
140
+ flex: 1;
141
+ overflow-y: auto;
142
+ min-width: 56px;
143
+ border-right: 1px solid var(--sg-color-border-secondary);
144
+ scrollbar-width: thin;
145
+ }
146
+
147
+ .sg-tp-col:last-child {
148
+ border-right: none;
149
+ }
150
+
151
+ .sg-tp-col-ampm {
152
+ min-width: 48px;
153
+ }
154
+
155
+ .sg-tp-cell {
156
+ display: flex;
157
+ align-items: center;
158
+ justify-content: center;
159
+ height: 28px;
160
+ font-size: var(--sg-font-size-sm);
161
+ color: var(--sg-color-text);
162
+ cursor: pointer;
163
+ transition: background var(--sg-transition-duration);
164
+ user-select: none;
165
+ }
166
+
167
+ .sg-tp-cell:hover {
168
+ background: var(--sg-color-bg-hover);
169
+ }
170
+
171
+ .sg-tp-cell-active {
172
+ background: var(--sg-color-primary-bg);
173
+ color: var(--sg-color-primary);
174
+ font-weight: 600;
175
+ }
176
+
177
+ .sg-tp-cell-disabled {
178
+ color: var(--sg-color-text-disabled);
179
+ cursor: not-allowed;
180
+ }
181
+
182
+ .sg-tp-cell-disabled:hover {
183
+ background: transparent;
184
+ }
185
+
186
+ /* ── Footer ── */
187
+
188
+ .sg-tp-footer {
189
+ display: flex;
190
+ align-items: center;
191
+ justify-content: flex-end;
192
+ padding: var(--sg-padding-xs) var(--sg-padding-sm);
193
+ border-top: 1px solid var(--sg-color-border-secondary);
194
+ }
195
+
196
+ .sg-tp-now-btn {
197
+ padding: 2px var(--sg-padding-sm);
198
+ border: 1px solid var(--sg-color-primary);
199
+ border-radius: var(--sg-border-radius-sm);
200
+ background: transparent;
201
+ color: var(--sg-color-primary);
202
+ font-size: var(--sg-font-size-sm);
203
+ cursor: pointer;
204
+ transition: color var(--sg-transition-duration),
205
+ background var(--sg-transition-duration),
206
+ border-color var(--sg-transition-duration),
207
+ box-shadow var(--sg-transition-duration);
208
+ }
209
+
210
+ .sg-tp-now-btn:hover {
211
+ background: var(--sg-color-primary);
212
+ color: var(--sg-color-white);
213
+ }