@unifiedsoftware/styles 2.0.1-beta.9 → 2.0.3

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 (48) hide show
  1. package/css/fci.css +295 -9
  2. package/css/fci.min.css +1 -1
  3. package/css/styles.css +501 -11
  4. package/css/styles.min.css +1 -1
  5. package/package.json +1 -1
  6. package/scss/_utilities.scss +5 -1
  7. package/scss/components/_dropdown.scss +213 -0
  8. package/scss/components/_index.scss +7 -1
  9. package/scss/components/_list.scss +11 -9
  10. package/scss/components/_navigation-menu-grid.scss +23 -0
  11. package/scss/components/_navigation-menu-group.scss +25 -0
  12. package/scss/components/_navigation-menu-item.scss +154 -0
  13. package/scss/components/_navigation-menu-separator.scss +8 -0
  14. package/scss/components/_navigation-menu.scss +184 -0
  15. package/scss/themes/centurion/_index.scss +3 -0
  16. package/scss/themes/centurion/_tokens.scss +56 -0
  17. package/scss/themes/centurion/components/_accordion.scss +235 -0
  18. package/scss/themes/centurion/components/_badge.scss +41 -0
  19. package/scss/themes/centurion/components/_breadcrumb.scss +0 -0
  20. package/scss/themes/centurion/components/_button.scss +367 -0
  21. package/scss/themes/centurion/components/_card.scss +195 -0
  22. package/scss/themes/centurion/components/_checkbox.scss +136 -0
  23. package/scss/themes/centurion/components/_chip.scss +192 -0
  24. package/scss/themes/centurion/components/_descriptions.scss +51 -0
  25. package/scss/themes/centurion/components/_drawer.scss +66 -0
  26. package/scss/themes/centurion/components/_icon.scss +50 -0
  27. package/scss/themes/centurion/components/_index.scss +31 -0
  28. package/scss/themes/centurion/components/_input.scss +278 -0
  29. package/scss/themes/centurion/components/_list.scss +118 -0
  30. package/scss/themes/centurion/components/_menu.scss +65 -0
  31. package/scss/themes/centurion/components/_modal.scss +76 -0
  32. package/scss/themes/centurion/components/_nav-rail.scss +65 -0
  33. package/scss/themes/centurion/components/_radio.scss +133 -0
  34. package/scss/themes/centurion/components/_result.scss +106 -0
  35. package/scss/themes/centurion/components/_steps.scss +79 -0
  36. package/scss/themes/centurion/components/_swipe.scss +6 -0
  37. package/scss/themes/centurion/components/_switch.scss +116 -0
  38. package/scss/themes/centurion/components/_tabs.scss +165 -0
  39. package/scss/themes/centurion/components/_toolbar.scss +73 -0
  40. package/scss/themes/fci/components/_dropdown.scss +126 -0
  41. package/scss/themes/fci/components/_index.scss +9 -1
  42. package/scss/themes/fci/components/_modal.scss +9 -9
  43. package/scss/themes/fci/components/_navigation-menu-grid.scss +7 -0
  44. package/scss/themes/fci/components/_navigation-menu-group.scss +16 -0
  45. package/scss/themes/fci/components/_navigation-menu-item.scss +148 -0
  46. package/scss/themes/fci/components/_navigation-menu-separator.scss +8 -0
  47. package/scss/themes/fci/components/_navigation-menu.scss +19 -0
  48. package/scss/themes/fci/components/_tabs.scss +50 -0
@@ -0,0 +1,213 @@
1
+ @use '../variables' as *;
2
+
3
+ .#{$prefix}dropdown {
4
+ // Root dropdown container
5
+ display: inline-block;
6
+
7
+ &-trigger {
8
+ // Trigger button - styles will be inherited from Button component
9
+ // Base UI adds data-popup-open attribute when open
10
+ }
11
+
12
+ &-positioner {
13
+ outline: 0;
14
+ z-index: 1000;
15
+ }
16
+
17
+ &-popup {
18
+ box-sizing: border-box;
19
+ padding-block: var(--#{$prefix}dropdown-popup-padding-block, 0.375rem);
20
+ border-radius: var(--#{$prefix}dropdown-popup-border-radius, 0.5rem);
21
+ background-color: var(--#{$prefix}dropdown-popup-background, rgba(255, 255, 255, 0.98));
22
+ backdrop-filter: blur(10px);
23
+ -webkit-backdrop-filter: blur(10px);
24
+ color: var(--#{$prefix}dropdown-popup-color, #343a40);
25
+ transform-origin: var(--transform-origin);
26
+ transition:
27
+ transform 200ms cubic-bezier(0.34, 1.56, 0.64, 1),
28
+ opacity 200ms ease-out,
29
+ backdrop-filter 200ms ease-out;
30
+ border: 1px solid var(--#{$prefix}dropdown-popup-border-color, rgba(0, 0, 0, 0.08));
31
+ box-shadow: var(
32
+ --#{$prefix}dropdown-popup-shadow,
33
+ 0 0 0 1px rgba(0, 0, 0, 0.02),
34
+ 0 2px 4px rgba(0, 0, 0, 0.04),
35
+ 0 8px 16px rgba(0, 0, 0, 0.08),
36
+ 0 16px 32px rgba(0, 0, 0, 0.06)
37
+ );
38
+ overflow: hidden;
39
+
40
+ &[data-starting-style],
41
+ &[data-ending-style] {
42
+ opacity: 0;
43
+ transform: scale(0.92) translateY(-8px);
44
+ }
45
+ }
46
+
47
+ &-arrow {
48
+ display: flex;
49
+
50
+ &[data-side='top'] {
51
+ bottom: -8px;
52
+ rotate: 180deg;
53
+ }
54
+
55
+ &[data-side='bottom'] {
56
+ top: -8px;
57
+ rotate: 0deg;
58
+ }
59
+
60
+ &[data-side='left'] {
61
+ right: -13px;
62
+ rotate: 90deg;
63
+ }
64
+
65
+ &[data-side='right'] {
66
+ left: -13px;
67
+ rotate: -90deg;
68
+ }
69
+
70
+ &__fill {
71
+ fill: var(--#{$prefix}dropdown-popup-background, #ffffff);
72
+ }
73
+
74
+ &__stroke {
75
+ fill: var(--#{$prefix}dropdown-popup-border-color, #dee2e6);
76
+ }
77
+ }
78
+
79
+ &-item {
80
+ outline: 0;
81
+ cursor: default;
82
+ user-select: none;
83
+ padding-block: var(--#{$prefix}dropdown-item-padding-block, 0.5rem);
84
+ padding-left: var(--#{$prefix}dropdown-item-padding-left, 1rem);
85
+ padding-right: var(--#{$prefix}dropdown-item-padding-right, 2rem);
86
+ display: flex;
87
+ font-size: var(--#{$prefix}dropdown-item-font-size, 0.875rem);
88
+ line-height: var(--#{$prefix}dropdown-item-line-height, 1.25rem);
89
+ border-radius: var(--#{$prefix}dropdown-item-border-radius, 0.375rem);
90
+ margin-inline: var(--#{$prefix}dropdown-item-margin-inline, 0.25rem);
91
+ position: relative;
92
+ z-index: 0;
93
+ transition: transform 150ms cubic-bezier(0.34, 1.56, 0.64, 1);
94
+
95
+ &:focus-visible {
96
+ outline: 2px solid var(--#{$prefix}dropdown-item-focus-outline, var(--#{$prefix}primary-color));
97
+ outline-offset: 2px;
98
+ outline-style: solid;
99
+ }
100
+
101
+ &--selected {
102
+ color: var(--#{$prefix}dropdown-item-selected-color, inherit);
103
+ }
104
+
105
+ &--disabled {
106
+ opacity: 0.5;
107
+ cursor: not-allowed;
108
+ }
109
+
110
+ &__container {
111
+ display: flex;
112
+ align-items: center;
113
+ gap: var(--#{$prefix}dropdown-item-gap, 0.75rem);
114
+ width: 100%;
115
+ position: relative;
116
+ z-index: 1;
117
+ }
118
+
119
+ &__start-content {
120
+ display: flex;
121
+ align-items: center;
122
+ flex-shrink: 0;
123
+ }
124
+
125
+ &__content {
126
+ display: flex;
127
+ flex-direction: column;
128
+ flex: 1;
129
+ min-width: 0;
130
+ }
131
+
132
+ &__title {
133
+ font-weight: 600;
134
+ font-size: var(--#{$prefix}dropdown-item-title-font-size, inherit);
135
+ line-height: var(--#{$prefix}dropdown-item-title-line-height, inherit);
136
+ color: var(--#{$prefix}dropdown-item-title-color, inherit);
137
+ letter-spacing: -0.01em;
138
+ transition: color 150ms ease-out;
139
+ }
140
+
141
+ &__subtitle {
142
+ font-size: var(--#{$prefix}dropdown-item-subtitle-font-size, 0.75rem);
143
+ color: var(--#{$prefix}dropdown-item-subtitle-color, #4b5563);
144
+ margin-top: 0.125rem;
145
+ line-height: var(--#{$prefix}dropdown-item-subtitle-line-height, 1rem);
146
+ font-weight: 400;
147
+ letter-spacing: 0;
148
+ transition: color 150ms ease-out;
149
+ }
150
+
151
+ &__description {
152
+ font-size: clamp(0.625rem, 0.5vw + 0.5rem, var(--#{$prefix}dropdown-item-description-font-size, 0.6875rem));
153
+ color: var(--#{$prefix}dropdown-item-description-color, #64748b);
154
+ margin-top: 0.0625rem;
155
+ line-height: var(--#{$prefix}dropdown-item-description-line-height, 0.875rem);
156
+ font-weight: 400;
157
+ letter-spacing: 0.01em;
158
+ font-style: normal;
159
+ transition: color 150ms ease-out;
160
+
161
+ // Text truncation for long descriptions
162
+ overflow: hidden;
163
+ text-overflow: ellipsis;
164
+ display: -webkit-box;
165
+ -webkit-line-clamp: 2;
166
+ line-clamp: 2;
167
+ -webkit-box-orient: vertical;
168
+ }
169
+
170
+ &__end-content {
171
+ display: flex;
172
+ align-items: center;
173
+ flex-shrink: 0;
174
+ margin-left: auto;
175
+ }
176
+ }
177
+
178
+ &-separator {
179
+ margin: var(--#{$prefix}dropdown-separator-margin, 0.375rem 1rem);
180
+ height: 1px;
181
+ background-color: var(--#{$prefix}dropdown-separator-color, #dee2e6);
182
+ }
183
+
184
+ &-submenu {
185
+ // Submenu root - no specific styles needed
186
+ }
187
+
188
+ &-submenu-trigger {
189
+ outline: 0;
190
+ cursor: default;
191
+ user-select: none;
192
+ padding-block: var(--#{$prefix}dropdown-item-padding-block, 0.5rem);
193
+ padding-left: var(--#{$prefix}dropdown-item-padding-left, 1rem);
194
+ padding-right: var(--#{$prefix}dropdown-item-padding-right, 2rem);
195
+ display: flex;
196
+ align-items: center;
197
+ justify-content: space-between;
198
+ gap: 1rem;
199
+ font-size: var(--#{$prefix}dropdown-item-font-size, 0.875rem);
200
+ line-height: var(--#{$prefix}dropdown-item-line-height, 1.25rem);
201
+ border-radius: var(--#{$prefix}dropdown-item-border-radius, 0.375rem);
202
+ margin-inline: var(--#{$prefix}dropdown-item-margin-inline, 0.25rem);
203
+ position: relative;
204
+ z-index: 0;
205
+ transition: transform 150ms cubic-bezier(0.34, 1.56, 0.64, 1);
206
+
207
+ &:focus-visible {
208
+ outline: 2px solid var(--#{$prefix}dropdown-item-focus-outline, var(--#{$prefix}primary-color));
209
+ outline-offset: 2px;
210
+ outline-style: solid;
211
+ }
212
+ }
213
+ }
@@ -12,14 +12,20 @@
12
12
 
13
13
  @use 'backdrop';
14
14
  @use 'popover';
15
+ @use 'dropdown';
15
16
  @use 'drawer';
16
17
  @use 'modal';
17
18
 
19
+ @use 'divider';
18
20
  @use 'accordion';
19
21
  @use 'list';
20
22
  @use 'data-list';
21
23
  @use 'menu';
22
- @use 'divider';
24
+ @use 'navigation-menu';
25
+ @use 'navigation-menu-item';
26
+ @use 'navigation-menu-group';
27
+ @use 'navigation-menu-separator';
28
+ @use 'navigation-menu-grid';
23
29
 
24
30
  @use 'breadcrumb';
25
31
  @use 'swipe';
@@ -8,21 +8,25 @@
8
8
 
9
9
  &-item {
10
10
  position: relative;
11
- height: var(--#{$prefix}list-item-height);
12
- min-height: var(--#{$prefix}list-item-min-height);
13
- padding-block: var(--#{$prefix}list-item-padding-y);
14
- padding-inline: var(--#{$prefix}list-item-padding-x);
15
11
  font-size: var(--#{$prefix}list-item-font-size);
16
12
  font-weight: var(--#{$prefix}list-item-font-weight);
17
13
  border-radius: var(--#{$prefix}list-item-border-radius);
18
14
  text-decoration: none;
19
15
  z-index: 0;
20
- display: flex;
21
- align-items: center;
22
16
  color: var(--#{$prefix}list-item-color);
23
17
  background-color: var(--#{$prefix}list-item-background);
24
18
  -webkit-tap-highlight-color: transparent;
25
- gap: var(--#{$prefix}list-item-gap);
19
+
20
+ &__container {
21
+ position: relative;
22
+ padding-block: var(--#{$prefix}list-item-padding-y);
23
+ padding-inline: var(--#{$prefix}list-item-padding-x);
24
+ height: var(--#{$prefix}list-item-height);
25
+ min-height: var(--#{$prefix}list-item-min-height);
26
+ display: flex;
27
+ align-items: center;
28
+ gap: var(--#{$prefix}list-item-gap);
29
+ }
26
30
 
27
31
  &:hover {
28
32
  text-decoration: none;
@@ -41,7 +45,6 @@
41
45
 
42
46
  &__start-content,
43
47
  &__end-content {
44
- position: relative;
45
48
  flex-shrink: 0;
46
49
  display: flex;
47
50
  justify-content: center;
@@ -50,7 +53,6 @@
50
53
  }
51
54
 
52
55
  &__content {
53
- position: relative;
54
56
  flex-grow: 1;
55
57
  display: grid;
56
58
  overflow: hidden;
@@ -0,0 +1,23 @@
1
+ @use '../variables' as *;
2
+
3
+ .#{$prefix}navigation-menu-grid {
4
+ display: grid;
5
+ gap: var(--#{$prefix}navigation-menu-grid-gap, 1.5rem);
6
+ padding: var(--#{$prefix}navigation-menu-grid-padding, 1.25rem);
7
+
8
+ &--columns-1 {
9
+ grid-template-columns: 1fr;
10
+ }
11
+
12
+ &--columns-2 {
13
+ grid-template-columns: repeat(2, 1fr);
14
+ }
15
+
16
+ &--columns-3 {
17
+ grid-template-columns: repeat(3, 1fr);
18
+ }
19
+
20
+ &--columns-4 {
21
+ grid-template-columns: repeat(4, 1fr);
22
+ }
23
+ }
@@ -0,0 +1,25 @@
1
+ @use '../variables' as *;
2
+
3
+ .#{$prefix}navigation-menu-group {
4
+ display: flex;
5
+ flex-direction: column;
6
+ gap: var(--#{$prefix}navigation-menu-group-gap, 0.5rem);
7
+ padding: var(--#{$prefix}navigation-menu-group-padding, 1.25rem);
8
+
9
+ &__label {
10
+ font-size: var(--#{$prefix}navigation-menu-group-label-font-size, 0.75rem);
11
+ font-weight: var(--#{$prefix}navigation-menu-group-label-font-weight, 600);
12
+ text-transform: uppercase;
13
+ letter-spacing: 0.05em;
14
+ color: var(--#{$prefix}navigation-menu-group-label-color, #6c757d);
15
+ padding-block: var(--#{$prefix}navigation-menu-group-label-padding-block, 0.25rem);
16
+ padding-inline: var(--#{$prefix}navigation-menu-group-label-padding-inline, 0);
17
+ margin-bottom: var(--#{$prefix}navigation-menu-group-label-margin-bottom, 0.25rem);
18
+ }
19
+
20
+ &__content {
21
+ display: flex;
22
+ flex-direction: column;
23
+ gap: var(--#{$prefix}navigation-menu-group-content-gap, 0.25rem);
24
+ }
25
+ }
@@ -0,0 +1,154 @@
1
+ @use '../variables' as *;
2
+
3
+ .#{$prefix}navigation-menu-item {
4
+ position: relative;
5
+ z-index: 0;
6
+ display: flex;
7
+ padding-block: var(--#{$prefix}navigation-menu-item-padding-block, 0.5rem);
8
+ padding-left: var(--#{$prefix}navigation-menu-item-padding-left, 0.75rem);
9
+ padding-right: var(--#{$prefix}navigation-menu-item-padding-right, 0.75rem);
10
+ border-radius: var(--#{$prefix}navigation-menu-item-border-radius, 0.375rem);
11
+ margin-inline: var(--#{$prefix}navigation-menu-item-margin-inline, 0.125rem);
12
+ margin-bottom: 0;
13
+ min-height: var(--#{$prefix}navigation-menu-item-min-height, 2rem);
14
+ text-decoration: none;
15
+ color: inherit;
16
+ cursor: pointer;
17
+ user-select: none;
18
+ border: 1px solid transparent;
19
+ transition: background-color 120ms ease-out,
20
+ border-color 120ms ease-out,
21
+ box-shadow 120ms ease-out;
22
+
23
+ // Reset button styles when rendered as button
24
+ border: none;
25
+ background: none;
26
+ font-family: inherit;
27
+ font-size: inherit;
28
+ text-align: left;
29
+ outline: none;
30
+
31
+ &:hover {
32
+ text-decoration: none;
33
+ }
34
+
35
+ &--selected {
36
+ color: var(--#{$prefix}navigation-menu-item-selected-color, inherit);
37
+ }
38
+
39
+ &--disabled {
40
+ opacity: 0.5;
41
+ pointer-events: none;
42
+ cursor: not-allowed;
43
+ }
44
+
45
+ &__container {
46
+ display: flex;
47
+ align-items: center;
48
+ gap: var(--#{$prefix}navigation-menu-item-gap, 0.625rem);
49
+ width: 100%;
50
+ position: relative;
51
+ z-index: 1;
52
+ }
53
+
54
+ &__start-content {
55
+ display: flex;
56
+ align-items: center;
57
+ flex-shrink: 0;
58
+ }
59
+
60
+ &__end-content {
61
+ display: flex;
62
+ align-items: center;
63
+ flex-shrink: 0;
64
+ margin-left: auto;
65
+ }
66
+
67
+ &__content {
68
+ display: flex;
69
+ flex-direction: column;
70
+ justify-content: center;
71
+ flex: 1;
72
+ min-width: 0;
73
+ }
74
+
75
+ &__title {
76
+ font-weight: 600;
77
+ font-size: var(--#{$prefix}navigation-menu-item-title-font-size, 0.875rem);
78
+ line-height: var(--#{$prefix}navigation-menu-item-title-line-height, 1.25rem);
79
+ color: var(--#{$prefix}navigation-menu-item-title-color, inherit);
80
+ letter-spacing: -0.01em;
81
+ transition: color 120ms ease-out;
82
+ }
83
+
84
+ &__subtitle {
85
+ font-size: var(--#{$prefix}navigation-menu-item-subtitle-font-size, 0.75rem);
86
+ line-height: var(--#{$prefix}navigation-menu-item-subtitle-line-height, 1.125rem);
87
+ color: var(--#{$prefix}navigation-menu-item-subtitle-color, #6b7280);
88
+ margin-top: 0.125rem;
89
+ font-weight: 400;
90
+ letter-spacing: 0;
91
+ transition: color 120ms ease-out;
92
+ }
93
+
94
+ &__description {
95
+ font-size: var(--#{$prefix}navigation-menu-item-description-font-size, 0.6875rem);
96
+ color: var(--#{$prefix}navigation-menu-item-description-color, #9ca3af);
97
+ margin-top: 0.1875rem;
98
+ line-height: var(--#{$prefix}navigation-menu-item-description-line-height, 1.125rem);
99
+ font-weight: 400;
100
+ letter-spacing: 0;
101
+ font-style: normal;
102
+ transition: color 120ms ease-out;
103
+ max-width: 95%;
104
+ }
105
+ }
106
+
107
+ // ============================================
108
+ // ENTERPRISE STYLES - ONLY FOR POPUP ITEMS
109
+ // ============================================
110
+ // Target items inside NavigationMenuContent (popup/submenu)
111
+ .#{$prefix}navigation-menu-content .#{$prefix}navigation-menu-item {
112
+ // Enhanced padding for popup items (but respect size variables)
113
+ padding-block: var(--#{$prefix}navigation-menu-item-padding-block, 0.75rem);
114
+ padding-left: var(--#{$prefix}navigation-menu-item-padding-left, 1rem);
115
+ padding-right: var(--#{$prefix}navigation-menu-item-padding-right, 1rem);
116
+ margin-inline: 0;
117
+ margin-bottom: 0.125rem;
118
+
119
+ &__container {
120
+ gap: var(--#{$prefix}navigation-menu-item-gap, 0.75rem);
121
+ }
122
+
123
+ // Icon with background circle (enterprise style) - uses CSS variables
124
+ &__start-content {
125
+ display: flex;
126
+ align-items: center;
127
+ justify-content: center;
128
+ width: var(--#{$prefix}navigation-menu-item-icon-size, 2rem);
129
+ height: var(--#{$prefix}navigation-menu-item-icon-size, 2rem);
130
+ border-radius: var(--#{$prefix}navigation-menu-item-icon-radius, 0.375rem);
131
+ background: var(--#{$prefix}navigation-menu-item-icon-bg, rgba(0, 0, 0, 0.04));
132
+ transition: background-color 120ms ease-out;
133
+ }
134
+
135
+ // Use variables for typography (respects SM/MD/LG)
136
+ &__title {
137
+ font-size: var(--#{$prefix}navigation-menu-item-title-font-size);
138
+ line-height: var(--#{$prefix}navigation-menu-item-title-line-height);
139
+ color: var(--#{$prefix}navigation-menu-item-title-color, #111827);
140
+ letter-spacing: -0.015em;
141
+ }
142
+
143
+ &__subtitle {
144
+ font-size: var(--#{$prefix}navigation-menu-item-subtitle-font-size);
145
+ line-height: var(--#{$prefix}navigation-menu-item-subtitle-line-height);
146
+ letter-spacing: -0.005em;
147
+ }
148
+
149
+ &__description {
150
+ font-size: var(--#{$prefix}navigation-menu-item-description-font-size);
151
+ line-height: var(--#{$prefix}navigation-menu-item-description-line-height);
152
+ letter-spacing: -0.005em;
153
+ }
154
+ }
@@ -0,0 +1,8 @@
1
+ @use '../variables' as *;
2
+
3
+ .#{$prefix}navigation-menu-separator {
4
+ height: 1px;
5
+ background-color: var(--#{$prefix}navigation-menu-separator-color, #e9ecef);
6
+ margin-block: var(--#{$prefix}navigation-menu-separator-margin-block, 0.5rem);
7
+ margin-inline: var(--#{$prefix}navigation-menu-separator-margin-inline, 1.25rem);
8
+ }
@@ -0,0 +1,184 @@
1
+ @use '../variables' as *;
2
+
3
+ .#{$prefix}navigation-menu {
4
+ background-color: var(--#{$prefix}navigation-menu-background);
5
+ border-radius: var(--#{$prefix}navigation-menu-border-radius);
6
+ padding: var(--#{$prefix}navigation-menu-padding);
7
+ color: var(--#{$prefix}navigation-menu-color);
8
+ min-width: max-content;
9
+
10
+ &-list {
11
+ display: flex;
12
+ position: relative;
13
+ list-style: none;
14
+ padding: 0;
15
+ margin: 0;
16
+ }
17
+
18
+ &-item {
19
+ display: flex;
20
+ }
21
+
22
+ &-icon {
23
+ display: flex;
24
+ align-items: center;
25
+ justify-content: center;
26
+ transition: transform 0.2s ease;
27
+ transform-origin: center;
28
+
29
+ &[data-popup-open] {
30
+ transform: rotate(180deg);
31
+ }
32
+ }
33
+
34
+ &-positioner {
35
+ --easing: cubic-bezier(0.22, 1, 0.36, 1);
36
+ --duration: 0.35s;
37
+ box-sizing: border-box;
38
+ transition-property: top, left, right, bottom;
39
+ transition-duration: var(--duration);
40
+ transition-timing-function: var(--easing);
41
+ width: var(--positioner-width);
42
+ height: var(--positioner-height);
43
+ max-width: var(--available-width);
44
+ z-index: 1000;
45
+
46
+ &[data-instant] {
47
+ transition: none;
48
+ }
49
+ }
50
+
51
+ &-popup {
52
+ position: relative;
53
+ box-sizing: border-box;
54
+ padding-block: var(--#{$prefix}navigation-menu-popup-padding-block, 0.375rem);
55
+ padding-inline: var(--#{$prefix}navigation-menu-popup-padding-inline, 0.375rem);
56
+ border-radius: var(--#{$prefix}navigation-menu-popup-border-radius, 0.5rem);
57
+ background-color: var(--#{$prefix}navigation-menu-popup-background, rgba(255, 255, 255, 0.98));
58
+ backdrop-filter: blur(10px);
59
+ -webkit-backdrop-filter: blur(10px);
60
+ color: var(--#{$prefix}navigation-menu-popup-color, #343a40);
61
+ transform-origin: var(--transform-origin);
62
+ transition-property: opacity, transform, width, height, backdrop-filter;
63
+ transition-duration: var(--duration);
64
+ transition-timing-function: var(--easing);
65
+ width: var(--popup-width);
66
+ height: var(--popup-height);
67
+ border: 1px solid var(--#{$prefix}navigation-menu-popup-border-color, rgba(0, 0, 0, 0.08));
68
+ box-shadow: var(
69
+ --#{$prefix}navigation-menu-popup-shadow,
70
+ 0 0 0 1px rgba(0, 0, 0, 0.02),
71
+ 0 2px 4px rgba(0, 0, 0, 0.04),
72
+ 0 8px 16px rgba(0, 0, 0, 0.08),
73
+ 0 16px 32px rgba(0, 0, 0, 0.06)
74
+ );
75
+ overflow: hidden;
76
+
77
+ &[data-starting-style],
78
+ &[data-ending-style] {
79
+ opacity: 0;
80
+ transform: scale(0.92) translateY(-8px);
81
+ }
82
+
83
+ &[data-ending-style] {
84
+ transition-timing-function: ease;
85
+ transition-duration: 0.15s;
86
+ }
87
+ }
88
+
89
+ &-content {
90
+ box-sizing: border-box;
91
+ transition:
92
+ opacity calc(var(--duration) * 0.5) ease,
93
+ transform var(--duration) var(--easing);
94
+ width: calc(100vw - 40px);
95
+ height: 100%;
96
+
97
+ @media (min-width: 500px) {
98
+ width: max-content;
99
+ min-width: 400px;
100
+ }
101
+
102
+ &[data-starting-style],
103
+ &[data-ending-style] {
104
+ opacity: 0;
105
+ }
106
+
107
+ &[data-starting-style] {
108
+ &[data-activation-direction='left'] {
109
+ transform: translateX(-50%);
110
+ }
111
+ &[data-activation-direction='right'] {
112
+ transform: translateX(50%);
113
+ }
114
+ }
115
+
116
+ &[data-ending-style] {
117
+ &[data-activation-direction='left'] {
118
+ transform: translateX(50%);
119
+ }
120
+ &[data-activation-direction='right'] {
121
+ transform: translateX(-50%);
122
+ }
123
+ }
124
+ }
125
+
126
+ &-link {
127
+ text-decoration: none !important;
128
+ color: inherit !important;
129
+ border-radius: 0.375rem;
130
+ transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1);
131
+ display: block;
132
+
133
+ &,
134
+ &:visited,
135
+ &:link {
136
+ text-decoration: none !important;
137
+ color: inherit !important;
138
+ }
139
+
140
+ @media (hover: hover) {
141
+ &:hover {
142
+ background-color: var(--#{$prefix}navigation-menu-link-hover-background, rgba(0, 0, 0, 0.05)) !important;
143
+ }
144
+ }
145
+
146
+ &:focus-visible {
147
+ outline: 2px solid var(--#{$prefix}navigation-menu-trigger-focus-outline, var(--#{$prefix}primary-color));
148
+ outline-offset: 2px;
149
+ outline-style: solid;
150
+ }
151
+ }
152
+
153
+ &-viewport {
154
+ position: relative;
155
+ overflow: hidden;
156
+ width: 100%;
157
+ height: 100%;
158
+ }
159
+
160
+ &-arrow {
161
+ display: flex;
162
+ transition: left calc(var(--duration)) var(--easing);
163
+
164
+ &[data-side='top'] {
165
+ bottom: -8px;
166
+ rotate: 180deg;
167
+ }
168
+
169
+ &[data-side='bottom'] {
170
+ top: -8px;
171
+ rotate: 0deg;
172
+ }
173
+
174
+ &[data-side='left'] {
175
+ right: -13px;
176
+ rotate: 90deg;
177
+ }
178
+
179
+ &[data-side='right'] {
180
+ left: -13px;
181
+ rotate: -90deg;
182
+ }
183
+ }
184
+ }
@@ -0,0 +1,3 @@
1
+ @use 'components';
2
+
3
+ @use 'tokens';