ngx-strata 0.2.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 (50) hide show
  1. package/assets/styles/components/_breadcrumb.scss +68 -0
  2. package/assets/styles/components/action-menu.scss +12 -1
  3. package/assets/styles/components/card.scss +1 -1
  4. package/assets/styles/components/icon.scss +5 -0
  5. package/assets/styles/components/item.scss +11 -1
  6. package/assets/styles/components/overlay.scss +4 -0
  7. package/assets/styles/components/segmented-control.scss +17 -2
  8. package/assets/styles/components/select.scss +16 -26
  9. package/assets/styles/components/sidemenu.scss +7 -0
  10. package/assets/styles/components/toggle.scss +40 -13
  11. package/assets/styles/public-api.scss +1 -0
  12. package/assets/styles/typography.scss +0 -1
  13. package/dist/strata/strata.css +1 -1
  14. package/fesm2022/ngx-strata.mjs +362 -229
  15. package/fesm2022/ngx-strata.mjs.map +1 -1
  16. package/package.json +1 -1
  17. package/skills/ngx-strata/SKILL.md +106 -0
  18. package/skills/ngx-strata/components/accordion.md +38 -0
  19. package/skills/ngx-strata/components/action-menu.md +36 -0
  20. package/skills/ngx-strata/components/alert.md +28 -0
  21. package/skills/ngx-strata/components/avatar.md +33 -0
  22. package/skills/ngx-strata/components/breadcrumb.md +32 -0
  23. package/skills/ngx-strata/components/button.md +34 -0
  24. package/skills/ngx-strata/components/card.md +24 -0
  25. package/skills/ngx-strata/components/checkbox.md +22 -0
  26. package/skills/ngx-strata/components/divider.md +19 -0
  27. package/skills/ngx-strata/components/icon.md +21 -0
  28. package/skills/ngx-strata/components/input-field.md +29 -0
  29. package/skills/ngx-strata/components/item.md +31 -0
  30. package/skills/ngx-strata/components/kbd.md +18 -0
  31. package/skills/ngx-strata/components/message-state.md +32 -0
  32. package/skills/ngx-strata/components/modal.md +86 -0
  33. package/skills/ngx-strata/components/notification.md +46 -0
  34. package/skills/ngx-strata/components/number-display.md +26 -0
  35. package/skills/ngx-strata/components/overlay.md +20 -0
  36. package/skills/ngx-strata/components/pagination.md +23 -0
  37. package/skills/ngx-strata/components/progress.md +46 -0
  38. package/skills/ngx-strata/components/radio.md +29 -0
  39. package/skills/ngx-strata/components/segmented-control.md +38 -0
  40. package/skills/ngx-strata/components/shell.md +18 -0
  41. package/skills/ngx-strata/components/sidemenu.md +41 -0
  42. package/skills/ngx-strata/components/single-select.md +45 -0
  43. package/skills/ngx-strata/components/slider.md +24 -0
  44. package/skills/ngx-strata/components/spinner.md +17 -0
  45. package/skills/ngx-strata/components/tabs.md +27 -0
  46. package/skills/ngx-strata/components/tag.md +17 -0
  47. package/skills/ngx-strata/components/text-stack.md +21 -0
  48. package/skills/ngx-strata/components/theming.md +19 -0
  49. package/skills/ngx-strata/components/toggle.md +22 -0
  50. package/types/ngx-strata.d.ts +102 -67
@@ -0,0 +1,68 @@
1
+ .st-breadcrumb {
2
+ --st-breadcrumb-gap: var(--st-spacing-xs, 4px);
3
+ --st-breadcrumb-color: var(--st-color-text-secondary);
4
+ --st-breadcrumb-color-active: var(--st-color-text-primary);
5
+ --st-breadcrumb-separator-color: var(--st-color-text-tertiary);
6
+ --st-breadcrumb-font-size: var(--st-font-size-sm, 14px);
7
+
8
+ display: block;
9
+ font-size: var(--st-breadcrumb-font-size);
10
+
11
+ .st-breadcrumb-list {
12
+ display: flex;
13
+ flex-wrap: wrap;
14
+ align-items: center;
15
+ list-style: none;
16
+ padding: 0;
17
+ margin: 0;
18
+ }
19
+ }
20
+
21
+ .st-breadcrumb-item {
22
+ display: flex;
23
+ align-items: center;
24
+ color: var(--st-breadcrumb-color);
25
+
26
+ .st-breadcrumb-item-container {
27
+ display: flex;
28
+ align-items: center;
29
+ }
30
+
31
+ .st-breadcrumb-item-content {
32
+ display: flex;
33
+ align-items: center;
34
+ gap: var(--st-breadcrumb-gap);
35
+ border-radius: var(--st-border-radius-sm, 4px);
36
+ outline-offset: 2px;
37
+
38
+ &:focus-visible {
39
+ outline: 2px solid var(--st-color-accent-default);
40
+ }
41
+
42
+ &.interactable {
43
+ cursor: pointer;
44
+ transition: color 0.2s ease;
45
+
46
+ &:hover {
47
+ color: var(--st-breadcrumb-color-active);
48
+ }
49
+
50
+ &:active {
51
+ opacity: 0.8;
52
+ }
53
+ }
54
+
55
+ &.disabled {
56
+ opacity: 0.5;
57
+ cursor: not-allowed;
58
+ pointer-events: none;
59
+ }
60
+ }
61
+
62
+ .st-breadcrumb-separator {
63
+ color: var(--st-breadcrumb-separator-color);
64
+ display: flex;
65
+ align-items: center;
66
+ margin: 0 var(--st-breadcrumb-gap);
67
+ }
68
+ }
@@ -16,6 +16,11 @@ st-action-menu-item {
16
16
  cursor: pointer;
17
17
  }
18
18
 
19
+ &.active {
20
+ color: var(--st-color-accent-active);
21
+ background-color: var(--st-color-bg-raised);
22
+ }
23
+
19
24
  .item-start,
20
25
  .item-end {
21
26
  width: min-content;
@@ -45,6 +50,7 @@ st-action-menu-item {
45
50
  }
46
51
 
47
52
  st-item .item-default {
53
+
48
54
  h1,
49
55
  h2,
50
56
  h3,
@@ -59,8 +65,13 @@ st-item .item-default {
59
65
 
60
66
  st-card.action-menu-card {
61
67
  min-width: 200px;
68
+ z-index: 10000;
69
+ background-color: var(--st-color-bg-overlay) !important;
70
+ box-shadow: var(--st-shadow-2);
71
+ display: block;
72
+ pointer-events: auto;
62
73
 
63
74
  st-action-menu-item:not(:last-child) {
64
75
  border-bottom: 1px solid var(--st-border-faded);
65
76
  }
66
- }
77
+ }
@@ -1,6 +1,6 @@
1
1
  st-card {
2
2
  --st-card-padding: var(--st-size-xs);
3
- --st-card-background-color: var(--st-color-bg-raised);
3
+ --st-card-background-color: var(--st-color-bg-subtle);
4
4
 
5
5
  width: 100%;
6
6
  display: inline-block;
@@ -32,5 +32,10 @@ st-icon {
32
32
  display: flex;
33
33
  width: inherit;
34
34
  height: inherit;
35
+
36
+ svg {
37
+ width: 100%;
38
+ height: 100%;
39
+ }
35
40
  }
36
41
  }
@@ -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;
@@ -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
+ }
@@ -1,15 +1,28 @@
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
13
  height: var(--st-space-10);
9
14
  padding: var(--st-space-1);
10
15
  gap: var(--st-space-1);
11
16
 
17
+ /* Hide scrollbar */
18
+ -ms-overflow-style: none;
19
+ scrollbar-width: none;
20
+ &::-webkit-scrollbar {
21
+ display: none;
22
+ }
23
+
12
24
  &.st-segmented-control-full-width {
25
+ display: flex;
13
26
  width: 100%;
14
27
 
15
28
  st-segmented-control-item {
@@ -21,6 +34,8 @@ st-segmented-control {
21
34
  st-segmented-control-item {
22
35
  border: none;
23
36
  color: var(--st-color-text-primary);
37
+ flex-shrink: 0;
38
+ text-wrap: nowrap;
24
39
 
25
40
  background-color: transparent;
26
41
 
@@ -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);
@@ -47,20 +35,21 @@ st-dropdown {
47
35
  width: var(--st-icon-size-sm);
48
36
  height: var(--st-icon-size-sm);
49
37
  }
38
+
50
39
  &:hover {
51
40
  background-color: var(--st-bg-light);
52
41
  }
53
42
 
54
- &:has(.dropdown-selector:hover) {
43
+ &:has(.single-select-selector:hover) {
55
44
  background-color: unset;
56
45
  }
57
46
 
58
- .dropdown-selector[data-show] {
47
+ .single-select-selector[data-show] {
59
48
  height: unset;
60
49
  visibility: visible;
61
50
  }
62
51
 
63
- .dropdown-selector {
52
+ .single-select-selector {
64
53
  border: 1px solid var(--st-border);
65
54
  border-radius: var(--st-border-radius-sm);
66
55
  width: max-content;
@@ -76,20 +65,20 @@ st-dropdown {
76
65
  box-shadow: var(--st-shadow-1);
77
66
  z-index: 1000;
78
67
 
79
- .dropdown-item {
68
+ .single-select-item {
80
69
  padding: 8px;
81
70
  margin: 4px;
82
71
  border-radius: 4px;
83
72
  }
84
73
 
85
- .dropdown-item:hover {
74
+ .single-select-item:hover {
86
75
  background-color: var(--st-bg-light);
87
76
  }
88
77
  }
89
78
  }
90
79
  }
91
80
 
92
- .dropdown-selector {
81
+ .single-select-selector {
93
82
  border: 1px solid var(--st-border);
94
83
  border-radius: var(--st-border-radius-sm);
95
84
  width: max-content;
@@ -104,13 +93,13 @@ st-dropdown {
104
93
  box-shadow: var(--st-shadow-1);
105
94
  z-index: 1000;
106
95
 
107
- .dropdown-item {
96
+ .single-select-item {
108
97
  padding: 8px;
109
98
  margin: 4px;
110
99
  border-radius: 4px;
111
100
  }
112
101
 
113
- .dropdown-item:hover {
102
+ .single-select-item:hover {
114
103
  background-color: var(--st-bg-light);
115
104
  }
116
105
 
@@ -119,6 +108,7 @@ st-dropdown {
119
108
 
120
109
  st-button {
121
110
  visibility: hidden;
111
+
122
112
  &.visible {
123
113
  visibility: visible;
124
114
  }
@@ -126,6 +116,6 @@ st-dropdown {
126
116
  }
127
117
  }
128
118
 
129
- .dropdown-selector.full-width {
119
+ .single-select-selector.full-width {
130
120
  width: var(--st-overlay-anchor-element-width);
131
- }
121
+ }
@@ -15,6 +15,7 @@ st-sidemenu {
15
15
 
16
16
  display: flex;
17
17
  align-items: center;
18
+ gap: var(--st-space-2, 8px);
18
19
  width: 100%;
19
20
  padding: var(--st-sidemenu-item-padding);
20
21
  box-sizing: border-box;
@@ -51,5 +52,11 @@ st-sidemenu {
51
52
  st-tag {
52
53
  margin-left: auto;
53
54
  }
55
+
56
+ st-icon {
57
+ display: flex;
58
+ align-items: center;
59
+ --st-icon-size: var(--st-icon-size-sm, 16px);
60
+ }
54
61
  }
55
62
  }
@@ -4,6 +4,7 @@ st-toggle {
4
4
  --st-toggle-width: var(--st-space-10);
5
5
  --st-toggle-padding: var(--st-size-xxxs);
6
6
  --st-toggle-handle-size: var(--st-size-sm);
7
+ --st-toggle-gap: var(--st-size-xxs);
7
8
 
8
9
  --st-toggle-bg-unchecked: var(--st-color-input-default);
9
10
  --st-toggle-bg-checked: var(--st-color-accent-default);
@@ -11,27 +12,47 @@ st-toggle {
11
12
 
12
13
  display: inline-flex;
13
14
  align-items: center;
14
- position: relative;
15
+ gap: var(--st-toggle-gap);
16
+ cursor: pointer;
17
+ user-select: none;
15
18
  box-sizing: border-box;
16
19
 
17
- height: var(--st-toggle-height);
18
- width: var(--st-toggle-width);
19
- padding: var(--st-toggle-padding);
20
- background-color: var(--st-toggle-bg-unchecked);
21
- border-radius: var(--st-size-xxxs); // 4px
22
- cursor: pointer;
23
- transition: background-color 0.2s ease;
20
+ &.st-toggle-label-before {
21
+ flex-direction: row-reverse;
22
+ }
24
23
 
25
24
  // Accessibility
26
25
  &:focus-visible {
27
- outline: 2px solid var(--st-color-accent-default);
28
- outline-offset: 2px;
26
+ outline: none;
27
+ .st-toggle-track {
28
+ outline: 2px solid var(--st-color-accent-default);
29
+ outline-offset: 2px;
30
+ }
29
31
  }
30
32
 
31
33
  &:focus {
32
34
  outline: none;
33
35
  }
34
36
 
37
+ .st-toggle-track {
38
+ position: relative;
39
+ display: flex;
40
+ align-items: center;
41
+ box-sizing: border-box;
42
+ height: var(--st-toggle-height);
43
+ width: var(--st-toggle-width);
44
+ padding: var(--st-toggle-padding);
45
+ background-color: var(--st-toggle-bg-unchecked);
46
+ border-radius: var(--st-size-xxxs); // 4px
47
+ transition: background-color 0.2s ease;
48
+ }
49
+
50
+ .st-toggle-label {
51
+ font-family: var(--st-font-family);
52
+ font-size: var(--st-font-size-md);
53
+ color: var(--st-color-text-primary);
54
+ }
55
+
35
56
  .toggle-handle {
36
57
  display: block;
37
58
  height: var(--st-toggle-handle-size);
@@ -43,7 +64,9 @@ st-toggle {
43
64
  }
44
65
 
45
66
  &[data-checked='true'] {
46
- background-color: var(--st-toggle-bg-checked);
67
+ .st-toggle-track {
68
+ background-color: var(--st-toggle-bg-checked);
69
+ }
47
70
 
48
71
  .toggle-handle {
49
72
  // Move by: Width (40) - Padding (4) - Handle (16) - Padding (4) = 16px
@@ -52,11 +75,15 @@ st-toggle {
52
75
  }
53
76
 
54
77
  &[data-checked='false']:not([data-disabled='true']):hover {
55
- background-color: var(--st-color-input-hover);
78
+ .st-toggle-track {
79
+ background-color: var(--st-color-input-hover);
80
+ }
56
81
  }
57
82
 
58
83
  &[data-checked='true']:not([data-disabled='true']):hover {
59
- background-color: var(--st-color-accent-hover);
84
+ .st-toggle-track {
85
+ background-color: var(--st-color-accent-hover);
86
+ }
60
87
  }
61
88
 
62
89
  &[data-disabled='true'] {
@@ -41,4 +41,5 @@
41
41
  @use "./components/text-stack";
42
42
  @use "./components/toggle";
43
43
  @use "./components/tooltip";
44
+ @use "./components/breadcrumb";
44
45
  @use "./components/sidemenu";
@@ -30,7 +30,6 @@ a {
30
30
  text-transform: uppercase;
31
31
  letter-spacing: 0.05em;
32
32
  color: var(--st-color-text-tertiary);
33
-
34
33
  }
35
34
 
36
35
  /* --- Typography utility classes --- */