ngx-strata 0.1.0 → 0.2.1

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 (72) hide show
  1. package/assets/styles/base.scss +7 -3
  2. package/assets/styles/colors.scss +3 -11
  3. package/assets/styles/components/_breadcrumb.scss +68 -0
  4. package/assets/styles/components/accordion.scss +4 -2
  5. package/assets/styles/components/action-menu.scss +14 -3
  6. package/assets/styles/components/alert.scss +112 -0
  7. package/assets/styles/components/avatar.scss +40 -22
  8. package/assets/styles/components/button.scss +27 -20
  9. package/assets/styles/components/card.scss +21 -13
  10. package/assets/styles/components/checkbox.scss +11 -9
  11. package/assets/styles/components/icon.scss +5 -0
  12. package/assets/styles/components/input-field.scss +6 -3
  13. package/assets/styles/components/item.scss +11 -1
  14. package/assets/styles/components/modal.scss +3 -9
  15. package/assets/styles/components/notification.scss +40 -20
  16. package/assets/styles/components/overlay.scss +4 -0
  17. package/assets/styles/components/pagination.scss +16 -8
  18. package/assets/styles/components/progress.scss +32 -22
  19. package/assets/styles/components/radio.scss +101 -0
  20. package/assets/styles/components/segmented-control.scss +41 -9
  21. package/assets/styles/components/select.scss +24 -30
  22. package/assets/styles/components/sidemenu.scss +62 -0
  23. package/assets/styles/components/spinner.scss +10 -7
  24. package/assets/styles/components/table.scss +4 -2
  25. package/assets/styles/components/tabs.scss +71 -0
  26. package/assets/styles/components/tag.scss +17 -13
  27. package/assets/styles/components/toggle.scss +69 -40
  28. package/assets/styles/focus-outline.scss +2 -1
  29. package/assets/styles/primitives/color-primitives.scss +88 -0
  30. package/assets/styles/primitives/spacing-primitives.scss +16 -0
  31. package/assets/styles/public-api.scss +43 -34
  32. package/assets/styles/semantics/color-semantic.scss +121 -0
  33. package/assets/styles/typography.scss +123 -34
  34. package/dist/strata/strata.css +1 -1
  35. package/fesm2022/ngx-strata.mjs +1154 -439
  36. package/fesm2022/ngx-strata.mjs.map +1 -1
  37. package/package.json +3 -3
  38. package/skills/ngx-strata/SKILL.md +106 -0
  39. package/skills/ngx-strata/components/accordion.md +38 -0
  40. package/skills/ngx-strata/components/action-menu.md +36 -0
  41. package/skills/ngx-strata/components/alert.md +28 -0
  42. package/skills/ngx-strata/components/avatar.md +33 -0
  43. package/skills/ngx-strata/components/breadcrumb.md +32 -0
  44. package/skills/ngx-strata/components/button.md +34 -0
  45. package/skills/ngx-strata/components/card.md +24 -0
  46. package/skills/ngx-strata/components/checkbox.md +22 -0
  47. package/skills/ngx-strata/components/divider.md +19 -0
  48. package/skills/ngx-strata/components/icon.md +21 -0
  49. package/skills/ngx-strata/components/input-field.md +29 -0
  50. package/skills/ngx-strata/components/item.md +31 -0
  51. package/skills/ngx-strata/components/kbd.md +18 -0
  52. package/skills/ngx-strata/components/message-state.md +32 -0
  53. package/skills/ngx-strata/components/modal.md +86 -0
  54. package/skills/ngx-strata/components/notification.md +46 -0
  55. package/skills/ngx-strata/components/number-display.md +26 -0
  56. package/skills/ngx-strata/components/overlay.md +20 -0
  57. package/skills/ngx-strata/components/pagination.md +23 -0
  58. package/skills/ngx-strata/components/progress.md +46 -0
  59. package/skills/ngx-strata/components/radio.md +29 -0
  60. package/skills/ngx-strata/components/segmented-control.md +38 -0
  61. package/skills/ngx-strata/components/shell.md +18 -0
  62. package/skills/ngx-strata/components/sidemenu.md +41 -0
  63. package/skills/ngx-strata/components/single-select.md +45 -0
  64. package/skills/ngx-strata/components/slider.md +24 -0
  65. package/skills/ngx-strata/components/spinner.md +17 -0
  66. package/skills/ngx-strata/components/tabs.md +27 -0
  67. package/skills/ngx-strata/components/tag.md +17 -0
  68. package/skills/ngx-strata/components/text-stack.md +21 -0
  69. package/skills/ngx-strata/components/theming.md +19 -0
  70. package/skills/ngx-strata/components/toggle.md +22 -0
  71. package/types/ngx-strata.d.ts +464 -228
  72. package/dist/my-lib/strata.css +0 -1
@@ -9,14 +9,24 @@ st-item {
9
9
  height: fit-content;
10
10
  padding-left: var(--st-size-xxs);
11
11
  padding-right: var(--st-size-xxs);
12
+ border-radius: var(--st-border-radius-sm);
12
13
 
13
14
  &.interactable {
14
- &:hover {
15
+ &:hover,
16
+ &:focus-visible {
15
17
  background-color: var(--st-bg-light);
16
18
  cursor: pointer;
17
19
  }
18
20
  }
19
21
 
22
+ &.disabled {
23
+ opacity: 0.5;
24
+ pointer-events: none;
25
+ &.interactable {
26
+ cursor: not-allowed;
27
+ }
28
+ }
29
+
20
30
  .item-start,
21
31
  .item-end {
22
32
  width: min-content;
@@ -43,17 +43,11 @@ st-modal-header {
43
43
  margin-left: auto;
44
44
  }
45
45
 
46
- h3 {
47
- margin-block-start: 0rem;
48
- margin-block-end: 0rem;
49
- margin-left: var(--st-size-xxxs);
50
- font-weight: 300;
51
- font-size: larger;
52
- }
53
46
  }
54
47
 
55
48
  st-modal {
56
- --st-modal-bg-color: var(--st-bg);
49
+ --st-modal-bg-color: var(--st-color-bg-raised);
50
+
57
51
  --st-modal-border-radius: var(--st-border-radius-sm);
58
52
  --st-modal-padding: var(--st-size-md);
59
53
  --st-modal-covered-modal-filter: brightness(70%);
@@ -123,4 +117,4 @@ st-modal-container {
123
117
  grid-column: 1;
124
118
  grid-row: 1;
125
119
  }
126
- }
120
+ }
@@ -1,6 +1,6 @@
1
1
  st-notification {
2
- --st-notification-background-color: var(--st-info);
3
- --st-notification-text-color: var(--st-text-contrast);
2
+ --st-notification-background-color: var(--st-color-neutral-200);
3
+ --st-notification-text-color: var(--st-color-neutral-900);
4
4
  display: flex;
5
5
  flex-direction: row;
6
6
  padding: var(--st-size-sm);
@@ -14,45 +14,65 @@ st-notification {
14
14
  justify-content: flex-start;
15
15
  border-radius: 4px;
16
16
  gap: 8px;
17
- margin-top: 16px;
18
- margin-right: 32px;
19
17
  font-size: 16px;
20
18
 
21
19
  &.st-theme-brand {
22
- --st-notification-background-color: var(--st-brand);
23
- --st-notification-text-color: var(--st-text-contrast);
20
+ --st-notification-background-color: var(--st-color-blue-50);
21
+ --st-notification-text-color: var(--st-color-blue-900);
24
22
  }
25
23
 
26
24
  &.st-theme-info {
27
- --st-notification-background-color: var(--st-info);
28
- --st-notification-text-color: var(--st-text-contrast);
25
+ --st-notification-background-color: var(--st-color-feedback-info-subtle);
26
+ --st-notification-text-color: var(--st-color-feedback-info-text);
29
27
  }
30
28
 
31
29
  &.st-theme-success {
32
- --st-notification-background-color: var(--st-success);
33
- --st-notification-text-color: var(--st-text-contrast);
30
+ --st-notification-background-color: var(--st-color-feedback-success-subtle);
31
+ --st-notification-text-color: var(--st-color-feedback-success-text);
34
32
  }
35
33
 
36
34
  &.st-theme-danger {
37
- --st-notification-background-color: var(--st-danger);
38
- --st-notification-text-color: var(--st-text-contrast);
35
+ --st-notification-background-color: var(--st-color-feedback-error-subtle);
36
+ --st-notification-text-color: var(--st-color-feedback-error-text);
39
37
  }
40
38
 
41
39
  &.st-theme-warning {
42
- --st-notification-background-color: var(--st-warning);
43
- --st-notification-text-color: var(--st-text-contrast);
40
+ --st-notification-background-color: var(--st-color-feedback-warning-subtle);
41
+ --st-notification-text-color: var(--st-color-feedback-warning-text);
42
+ }
43
+
44
+ [data-theme='dark'] & {
45
+ &.st-theme-brand {
46
+ --st-notification-background-color: rgba(37, 99, 235, 0.1);
47
+ --st-notification-text-color: var(--st-color-blue-100);
48
+ }
44
49
  }
45
50
  }
46
51
 
52
+
47
53
  st-notification-container {
48
54
  width: 100%;
49
55
  height: 100%;
50
- position: absolute;
56
+ position: fixed;
57
+ top: 0;
58
+ left: 0;
51
59
  overflow: hidden;
52
- display: grid;
53
- align-items: start;
54
- justify-items: end;
60
+ display: flex;
55
61
  z-index: 190;
56
62
  pointer-events: none;
57
- grid-template-rows: repeat(10, min-content);
58
- }
63
+ gap: var(--st-size-xs);
64
+
65
+ // Small screen defaults: top center, full width
66
+ flex-direction: column;
67
+ align-items: stretch;
68
+ justify-content: flex-start;
69
+ padding: var(--st-size-sm);
70
+
71
+ // Big screen overrides: bottom right, stacking upwards
72
+ @media (min-width: 768px) {
73
+ flex-direction: column-reverse;
74
+ align-items: flex-end;
75
+ justify-content: flex-start;
76
+ padding: var(--st-size-md);
77
+ }
78
+ }
@@ -1,3 +1,7 @@
1
1
  .full-anchor-width {
2
2
  width: var(--st-overlay-anchor-element-width) !important;
3
3
  }
4
+
5
+ :host-context(body) > * {
6
+ z-index: 1000;
7
+ }
@@ -2,27 +2,35 @@ st-pagination {
2
2
  display: flex;
3
3
  width: 100%;
4
4
  justify-content: center;
5
- gap: 8px;
5
+ gap: var(--st-size-xxs);
6
6
 
7
7
  button {
8
- padding: 8px 12px;
8
+ padding: var(--st-size-xxs) var(--st-size-xs);
9
9
  background: none;
10
10
  border: none;
11
- border-radius: 8px;
11
+ border-radius: var(--st-border-radius-sm);
12
+ color: var(--st-color-text-primary);
13
+
14
+ transition: linear 0.1s background-color;
15
+ font-size: var(--st-font-sm);
12
16
 
13
17
  &.clickable:not(.selected):not(:disabled):hover {
14
- background-color: whitesmoke;
18
+ background-color: var(--st-bg-light);
15
19
  cursor: pointer;
16
20
  }
17
21
 
18
22
  &.selected {
19
- background-color: black;
20
- color: white;
23
+ background-color: var(--st-bg-contrast);
24
+ color: var(--st-text-contrast);
21
25
  cursor: default;
22
26
  }
23
27
 
24
- &:disabled.hideOnDisabled {
25
- visibility: hidden;
28
+ &:disabled {
29
+ opacity: 0.5;
30
+
31
+ &.hideOnDisabled {
32
+ visibility: hidden;
33
+ }
26
34
  }
27
35
  }
28
36
  }
@@ -1,5 +1,6 @@
1
- st-progress {
2
- --st-progress-fill-color: var(--st-text);
1
+ st-progress-linear, st-progress-radial {
2
+ --st-progress-fill-color: var(--st-color-text-primary);
3
+
3
4
  --st-progress-radial-size: 120px;
4
5
  --st-progress-radial-half-size: calc(var(--st-progress-radial-size) / 2);
5
6
  --st-progress-radial-stroke-width: 10px;
@@ -8,47 +9,56 @@ st-progress {
8
9
  --st-progress-radial-dash-offset: calc(
9
10
  var(--st-progress-radial-circumference) * (1 - var(--st-progress-percentage) / 100)
10
11
  );
12
+ }
13
+
14
+ st-progress-linear {
15
+ display: flex;
16
+ flex-direction: row;
17
+ justify-content: center;
18
+ align-items: center;
19
+ gap: 8px;
20
+ width: 100%;
21
+ }
11
22
 
12
- &.linear {
23
+ st-progress-radial {
24
+ position: relative;
25
+ display: inline-flex;
26
+ justify-content: center;
27
+ align-items: center;
28
+ text-align: center;
29
+
30
+ .label {
31
+ position: absolute;
32
+ inset: 0;
13
33
  display: flex;
14
- flex-direction: row;
15
- justify-content: center;
16
34
  align-items: center;
17
- gap: 8px;
18
- width: 100%;
35
+ justify-content: center;
19
36
  }
37
+ }
20
38
 
21
- &.radial {
22
- text-align: center;
23
- .label {
24
- position: absolute;
25
- inset: 0;
26
- display: flex;
27
- align-items: center;
28
- justify-content: center;
29
- }
30
- }
39
+ st-progress-linear, st-progress-radial {
31
40
 
32
41
  &.st-theme-brand {
33
- --st-progress-fill-color: var(--st-brand);
42
+ --st-progress-fill-color: var(--st-color-accent-default);
34
43
  }
35
44
 
36
45
  &.st-theme-info {
37
- --st-progress-fill-color: var(--st-info);
46
+ --st-progress-fill-color: var(--st-color-feedback-info-default);
38
47
  }
39
48
 
40
49
  &.st-theme-success {
41
- --st-progress-fill-color: var(--st-success);
50
+ --st-progress-fill-color: var(--st-color-feedback-success-default);
42
51
  }
43
52
 
44
53
  &.st-theme-warning {
45
- --st-progress-fill-color: var(--st-warning);
54
+ --st-progress-fill-color: var(--st-color-feedback-warning-default);
46
55
  }
47
56
 
48
57
  &.st-theme-danger {
49
- --st-progress-fill-color: var(--st-danger);
58
+ --st-progress-fill-color: var(--st-color-feedback-error-default);
50
59
  }
51
60
 
61
+
52
62
  .linear-container {
53
63
  position: relative;
54
64
  width: 100%;
@@ -0,0 +1,101 @@
1
+ st-radio-group {
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: var(--st-size-xs);
5
+ }
6
+
7
+ st-radio {
8
+ --st-radio-checked-bg-color: var(--st-color-accent-default);
9
+ --st-radio-checked-bg-hover-color: var(--st-color-accent-hover);
10
+
11
+
12
+ user-select: none;
13
+ display: flex;
14
+ align-items: center;
15
+ gap: var(--st-size-xxs);
16
+
17
+ input {
18
+ position: absolute;
19
+ opacity: 0;
20
+ cursor: pointer;
21
+ height: 0;
22
+ width: 0;
23
+ }
24
+
25
+ label {
26
+ margin-block: 0px;
27
+ }
28
+
29
+ .radio-visual {
30
+ box-sizing: border-box;
31
+ height: var(--st-selection-control-size);
32
+ width: var(--st-selection-control-size);
33
+ min-width: var(--st-selection-control-size);
34
+ min-height: var(--st-selection-control-size);
35
+ background-color: var(--st-color-bg-default);
36
+
37
+ border: 1px solid var(--st-border);
38
+ border-radius: 50%;
39
+ display: grid;
40
+ place-items: center;
41
+ transition: background-color 0.1s linear;
42
+
43
+ &::after {
44
+ content: "";
45
+ display: block;
46
+ width: 0;
47
+ height: 0;
48
+ border-radius: 50%;
49
+ background-color: var(--st-radio-checked-bg-color);
50
+ transition: width 0.1s ease-in, height 0.1s ease-in;
51
+ }
52
+ }
53
+
54
+ input:checked + .radio-visual {
55
+ border-color: var(--st-radio-checked-bg-color);
56
+
57
+ &::after {
58
+ width: 60%;
59
+ height: 60%;
60
+ }
61
+ }
62
+
63
+ input:focus + .radio-visual {
64
+ outline: 1px solid var(--st-color-accent-default);
65
+
66
+ outline-offset: 2px;
67
+ }
68
+
69
+ &[data-disabled="true"] {
70
+ opacity: 0.5;
71
+ cursor: not-allowed;
72
+ pointer-events: none;
73
+
74
+ .radio-visual {
75
+ background-color: var(--st-color-bg-default);
76
+
77
+ border-color: var(--st-border);
78
+ }
79
+
80
+ input:checked + .radio-visual::after {
81
+ background-color: var(--st-color-text-tertiary);
82
+
83
+ }
84
+ }
85
+
86
+ &:hover:not([data-disabled="true"]) {
87
+ cursor: pointer;
88
+
89
+ .radio-visual {
90
+ background-color: var(--st-bg-light);
91
+ }
92
+
93
+ input:checked + .radio-visual {
94
+ border-color: var(--st-radio-checked-bg-hover-color);
95
+
96
+ &::after {
97
+ background-color: var(--st-radio-checked-bg-hover-color);
98
+ }
99
+ }
100
+ }
101
+ }
@@ -1,21 +1,48 @@
1
1
  st-segmented-control {
2
- display: flex;
2
+ display: inline-flex;
3
+ flex-direction: row;
4
+ flex-wrap: nowrap;
5
+ overflow-x: auto;
6
+ width: fit-content;
7
+ max-width: 100%;
8
+ min-width: 0;
3
9
  position: relative;
4
10
  border-radius: var(--st-border-radius-sm);
5
11
  box-sizing: border-box;
6
12
  background-color: var(--st-bg-light);
7
- width: fit-content;
8
- height: var(--st-interactive-element-height-md);
13
+ height: var(--st-space-10);
14
+ padding: var(--st-space-1);
15
+ gap: var(--st-space-1);
16
+
17
+ /* Hide scrollbar */
18
+ -ms-overflow-style: none;
19
+ scrollbar-width: none;
20
+ &::-webkit-scrollbar {
21
+ display: none;
22
+ }
23
+
24
+ &.st-segmented-control-full-width {
25
+ display: flex;
26
+ width: 100%;
27
+
28
+ st-segmented-control-item {
29
+ flex: 1;
30
+ }
31
+ }
9
32
 
10
33
  button,
11
34
  st-segmented-control-item {
12
35
  border: none;
13
- color: var(--st-text);
36
+ color: var(--st-color-text-primary);
37
+ flex-shrink: 0;
38
+ text-wrap: nowrap;
39
+
14
40
  background-color: transparent;
15
41
 
16
42
  &[disabled] {
17
43
  pointer-events: none;
18
- color: var(--st-text-faded);
44
+ color: var(--st-color-text-tertiary);
45
+
19
46
  cursor: unset;
20
47
  }
21
48
 
@@ -28,8 +55,11 @@ st-segmented-control {
28
55
 
29
56
  .selection-item,
30
57
  st-segmented-control-item {
31
- height: var(--st-interactive-element-height-md);
32
- padding: 8px 16px;
58
+ display: flex;
59
+ align-items: center;
60
+ justify-content: center;
61
+ height: var(--st-space-8);
62
+ padding: 0 var(--st-space-8);
33
63
  border-radius: var(--st-border-radius-sm);
34
64
  font-size: 16px;
35
65
  font-weight: 500;
@@ -39,11 +69,13 @@ st-segmented-control {
39
69
  #selection-indicator {
40
70
  cursor: default;
41
71
  position: absolute;
72
+ top: 0;
73
+ left: 0;
42
74
  background-color: var(--st-bg-contrast-light);
43
75
  color: var(--st-text-contrast);
44
76
  text-wrap: nowrap;
45
77
  transition:
46
- 0.15s ease-in margin-left,
78
+ 0.15s ease-in left,
47
79
  0.15s ease-in width;
48
80
  }
49
- }
81
+ }
@@ -1,26 +1,14 @@
1
- st-dropdown {
1
+ st-single-select {
2
2
  display: flex;
3
3
  flex-direction: column;
4
4
  width: 100%;
5
5
 
6
- &.sm .dropdown-input {
7
- height: var(--st-interactive-element-height-sm);
8
- font-size: var(--st-font-sm);
9
- st-icon {
10
- width: var(--st-icon-size-xs);
11
- height: var(--st-icon-size-xs);
12
- }
6
+ label {
7
+ margin-bottom: var(--st-space-2);
13
8
  }
14
9
 
15
- &.md .dropdown-input {
10
+ .single-select-input {
16
11
  height: var(--st-interactive-element-height-md);
17
- }
18
-
19
- &.lg .dropdown-input {
20
- height: var(--st-interactive-element-height-lg);
21
- }
22
-
23
- .dropdown-input {
24
12
  padding-left: var(--st-size-xs);
25
13
  padding-right: var(--st-size-xs);
26
14
  border: 1px solid var(--st-border);
@@ -33,32 +21,35 @@ st-dropdown {
33
21
  display: inline-flex;
34
22
  flex-direction: row;
35
23
  gap: 4px;
36
- background-color: var(--st-bg);
24
+ background-color: var(--st-color-bg-raised);
25
+
37
26
  justify-content: space-between;
38
27
  align-items: center;
39
28
 
40
29
  .placeholder-text {
41
- color: var(--st-text-faded);
30
+ color: var(--st-color-text-tertiary);
31
+
42
32
  }
43
33
 
44
34
  st-icon {
45
35
  width: var(--st-icon-size-sm);
46
36
  height: var(--st-icon-size-sm);
47
37
  }
38
+
48
39
  &:hover {
49
40
  background-color: var(--st-bg-light);
50
41
  }
51
42
 
52
- &:has(.dropdown-selector:hover) {
43
+ &:has(.single-select-selector:hover) {
53
44
  background-color: unset;
54
45
  }
55
46
 
56
- .dropdown-selector[data-show] {
47
+ .single-select-selector[data-show] {
57
48
  height: unset;
58
49
  visibility: visible;
59
50
  }
60
51
 
61
- .dropdown-selector {
52
+ .single-select-selector {
62
53
  border: 1px solid var(--st-border);
63
54
  border-radius: var(--st-border-radius-sm);
64
55
  width: max-content;
@@ -69,24 +60,25 @@ st-dropdown {
69
60
  left: 0;
70
61
  box-sizing: border-box;
71
62
  overflow: hidden;
72
- background-color: var(--st-bg);
63
+ background-color: var(--st-color-bg-raised);
64
+
73
65
  box-shadow: var(--st-shadow-1);
74
66
  z-index: 1000;
75
67
 
76
- .dropdown-item {
68
+ .single-select-item {
77
69
  padding: 8px;
78
70
  margin: 4px;
79
71
  border-radius: 4px;
80
72
  }
81
73
 
82
- .dropdown-item:hover {
74
+ .single-select-item:hover {
83
75
  background-color: var(--st-bg-light);
84
76
  }
85
77
  }
86
78
  }
87
79
  }
88
80
 
89
- .dropdown-selector {
81
+ .single-select-selector {
90
82
  border: 1px solid var(--st-border);
91
83
  border-radius: var(--st-border-radius-sm);
92
84
  width: max-content;
@@ -96,17 +88,18 @@ st-dropdown {
96
88
  left: 0;
97
89
  box-sizing: border-box;
98
90
  overflow: hidden;
99
- background-color: var(--st-bg);
91
+ background-color: var(--st-color-bg-raised);
92
+
100
93
  box-shadow: var(--st-shadow-1);
101
94
  z-index: 1000;
102
95
 
103
- .dropdown-item {
96
+ .single-select-item {
104
97
  padding: 8px;
105
98
  margin: 4px;
106
99
  border-radius: 4px;
107
100
  }
108
101
 
109
- .dropdown-item:hover {
102
+ .single-select-item:hover {
110
103
  background-color: var(--st-bg-light);
111
104
  }
112
105
 
@@ -115,6 +108,7 @@ st-dropdown {
115
108
 
116
109
  st-button {
117
110
  visibility: hidden;
111
+
118
112
  &.visible {
119
113
  visibility: visible;
120
114
  }
@@ -122,6 +116,6 @@ st-dropdown {
122
116
  }
123
117
  }
124
118
 
125
- .dropdown-selector.full-width {
119
+ .single-select-selector.full-width {
126
120
  width: var(--st-overlay-anchor-element-width);
127
- }
121
+ }
@@ -0,0 +1,62 @@
1
+ st-sidemenu {
2
+
3
+ // Directive Styles (Global)
4
+ .st-sidemenu-item {
5
+ --st-sidemenu-item-bg: transparent;
6
+ --st-sidemenu-item-hover-bg: var(--st-color-bg-raised);
7
+ --st-sidemenu-item-active-bg: var(--st-color-bg-raised);
8
+ --st-sidemenu-item-text: var(--st-color-text-secondary);
9
+ --st-sidemenu-item-hover-text: var(--st-color-text-primary);
10
+ --st-sidemenu-item-active-text: var(--st-color-accent-active);
11
+ --st-sidemenu-item-radius: var(--st-radius-md, 4px);
12
+ --st-sidemenu-item-padding: 6px var(--st-size-xs, 12px);
13
+ --st-sidemenu-item-font-size: var(--st-font-sm, 14px);
14
+ --st-sidemenu-item-font-weight: 500;
15
+
16
+ display: flex;
17
+ align-items: center;
18
+ gap: var(--st-space-2, 8px);
19
+ width: 100%;
20
+ padding: var(--st-sidemenu-item-padding);
21
+ box-sizing: border-box;
22
+ text-decoration: none;
23
+ font-size: var(--st-sidemenu-item-font-size);
24
+ font-weight: var(--st-sidemenu-item-font-weight);
25
+ border-radius: var(--st-sidemenu-item-radius);
26
+ background-color: var(--st-sidemenu-item-bg);
27
+ color: var(--st-sidemenu-item-text);
28
+ border: none;
29
+ cursor: pointer;
30
+ text-align: left;
31
+ transition: background-color 0.2s ease, color 0.2s ease;
32
+ user-select: none;
33
+ font-family: inherit;
34
+
35
+ &:hover {
36
+ background-color: var(--st-sidemenu-item-hover-bg);
37
+ color: var(--st-sidemenu-item-hover-text);
38
+ }
39
+
40
+ &.selected,
41
+ &.active {
42
+ background-color: var(--st-sidemenu-item-active-bg);
43
+ color: var(--st-sidemenu-item-active-text);
44
+ }
45
+
46
+ &[disabled],
47
+ &.disabled {
48
+ pointer-events: none;
49
+ opacity: 0.5;
50
+ }
51
+
52
+ st-tag {
53
+ margin-left: auto;
54
+ }
55
+
56
+ st-icon {
57
+ display: flex;
58
+ align-items: center;
59
+ --st-icon-size: var(--st-icon-size-sm, 16px);
60
+ }
61
+ }
62
+ }