aeico-components 0.1.2 → 0.1.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 (33) hide show
  1. package/dist/index.cjs +1182 -1182
  2. package/dist/index.js +1182 -1182
  3. package/package.json +63 -63
  4. package/src/styles/color.css +117 -117
  5. package/src/styles/components/alert.css +104 -104
  6. package/src/styles/components/badge.css +67 -67
  7. package/src/styles/components/breadcrumb-item.css +59 -59
  8. package/src/styles/components/breadcrumb.css +19 -19
  9. package/src/styles/components/button-group.css +25 -25
  10. package/src/styles/components/button.css +213 -213
  11. package/src/styles/components/card.css +64 -64
  12. package/src/styles/components/checkbox.css +78 -78
  13. package/src/styles/components/detail.css +127 -127
  14. package/src/styles/components/dialog.css +103 -103
  15. package/src/styles/components/divider.css +18 -18
  16. package/src/styles/components/dropdown-item.css +91 -91
  17. package/src/styles/components/dropdown.css +179 -179
  18. package/src/styles/components/icon-button.css +116 -116
  19. package/src/styles/components/icon.css +29 -29
  20. package/src/styles/components/navbar.css +250 -250
  21. package/src/styles/components/radio-group.css +360 -360
  22. package/src/styles/components/select-option.css +43 -43
  23. package/src/styles/components/select.css +222 -222
  24. package/src/styles/components/slider.css +326 -326
  25. package/src/styles/components/switch.css +117 -117
  26. package/src/styles/components/tab-panel.css +8 -8
  27. package/src/styles/components/tab.css +44 -44
  28. package/src/styles/components/tabs.css +16 -16
  29. package/src/styles/components/tag.css +107 -107
  30. package/src/styles/components/text-input.css +110 -110
  31. package/src/styles/layout.css +43 -43
  32. package/src/styles/size.css +7 -7
  33. package/src/styles/variables.css +368 -368
@@ -1,250 +1,250 @@
1
- :host {
2
- /* layout — padding lives in .inner so document * { padding:0 } cannot override it */
3
- display: block;
4
- position: static;
5
- top: auto;
6
- z-index: var(--ae-navbar-z-index, 100);
7
- box-sizing: border-box;
8
- height: var(--ae-navbar-height, 3.25rem);
9
- border-radius: var(--ae-navbar-radius, 0);
10
-
11
- /* color */
12
- background: var(--ae-navbar-bg, var(--surface-base));
13
- color: var(--ae-navbar-color, var(--color-text-main));
14
- border-bottom: var(--ae-navbar-border-width, 1px) solid var(--ae-navbar-border-color, var(--border-default));
15
- box-shadow: var(--ae-navbar-shadow, none);
16
-
17
- /* layout tokens — declared here so they are clearly part of the public API */
18
- --ae-navbar-radius: 0;
19
- /* Default padding-x references the global layout token so ae-navbar content
20
- automatically aligns with .container / .container-fluid in light DOM.
21
- Override with --ae-navbar-padding-x to decouple if needed. */
22
- --ae-navbar-padding-x: var(--container-padding-x, 1.5rem);
23
- --ae-navbar-gap: 0.5rem;
24
-
25
- /* link style tokens — text mode defaults.
26
- CSS custom properties inherit into slotted content, so
27
- ::slotted(a[slot="start"]) can reference --ae-navbar-height. */
28
- --ae-navbar-link-color: inherit;
29
- --ae-navbar-link-font-size: inherit;
30
- --ae-navbar-link-padding-x: 0.75rem; /* horizontal padding only; height fills vertically */
31
- --ae-navbar-link-radius: 0;
32
- --ae-navbar-link-hover-color: var(--color-text-link-hover);
33
- --ae-navbar-link-hover-bg: transparent;
34
- --ae-navbar-link-active-color: var(--color-text-link);
35
- --ae-navbar-link-active-font-weight: 600;
36
- }
37
-
38
- :host([sticky]) {
39
- position: sticky;
40
- top: 0;
41
- }
42
-
43
- :host([color]) {
44
- --ae-navbar-bg: var(--color-solid);
45
- --ae-navbar-color: var(--color-on-solid);
46
- --ae-navbar-border-color: transparent;
47
- --ae-navbar-link-hover-color: var(--color-on-solid);
48
- --ae-navbar-link-active-color: var(--color-on-solid);
49
- }
50
-
51
- /* block preset: hover shows a subtle filled block */
52
- :host([appearance="block"]) {
53
- --ae-navbar-link-hover-bg: var(--color-bg-subtle);
54
- --ae-navbar-link-hover-color: inherit;
55
- }
56
-
57
- /* block preset on colored navbar: use semi-transparent white */
58
- :host([color][appearance="block"]) {
59
- --ae-navbar-link-hover-bg: rgba(255, 255, 255, 0.15);
60
- --ae-navbar-link-hover-color: var(--color-on-solid);
61
- }
62
-
63
- .inner {
64
- display: flex;
65
- align-items: center;
66
- height: 100%;
67
- padding: 0 var(--ae-navbar-padding-x);
68
- gap: var(--ae-navbar-gap);
69
- box-sizing: border-box;
70
- }
71
-
72
- [part="brand"] {
73
- flex: 0 0 auto;
74
- display: flex;
75
- align-items: center;
76
- }
77
-
78
- /* nav wraps start + end; takes all remaining space */
79
- [part="nav"] {
80
- flex: 1 1 auto;
81
- display: flex;
82
- align-self: stretch; /* stretch to host height so children can fill it */
83
- align-items: stretch;
84
- min-width: 0;
85
- }
86
-
87
- [part="start"],
88
- [part="end"] {
89
- flex: 0 0 auto;
90
- display: flex;
91
- align-self: stretch;
92
- }
93
-
94
- [part="start"] {
95
- align-items: stretch; /* slotted <a> will stretch to full height */
96
- gap: var(--ae-navbar-start-gap, 0);
97
- }
98
-
99
- [part="end"] {
100
- align-items: center; /* buttons / avatars stay vertically centred */
101
- gap: var(--ae-navbar-end-gap, 0.5rem);
102
- margin-left: auto;
103
- }
104
-
105
- /* hamburger — hidden on desktop */
106
- [part="hamburger"] {
107
- display: none;
108
- flex-direction: column;
109
- justify-content: center;
110
- align-items: center;
111
- gap: 5px;
112
- flex-shrink: 0;
113
- width: var(--ae-navbar-hamburger-size, 2rem);
114
- height: var(--ae-navbar-hamburger-size, 2rem);
115
- margin-left: auto;
116
- padding: 0;
117
- background: none;
118
- border: none;
119
- border-radius: 4px;
120
- cursor: pointer;
121
- color: var(--ae-navbar-hamburger-color, inherit);
122
- }
123
-
124
- [part="hamburger"]:hover {
125
- background: color-mix(in srgb, currentColor 10%, transparent);
126
- }
127
-
128
- [part="hamburger"] span {
129
- display: block;
130
- width: 18px;
131
- height: 2px;
132
- background: currentColor;
133
- border-radius: 1px;
134
- transition: transform 0.2s ease, opacity 0.2s ease;
135
- }
136
-
137
- /* Brand link — sensible defaults, no full-height stretch */
138
- ::slotted(a[slot="brand"]) {
139
- display: inline-flex;
140
- align-items: center;
141
- color: inherit;
142
- font-weight: 700;
143
- font-size: 1.05rem;
144
- text-decoration: none;
145
- white-space: nowrap;
146
- }
147
-
148
- /* Nav links (start / end slots) — fill full navbar height for block hover effect */
149
- ::slotted(a[slot="start"]),
150
- ::slotted(a[slot="end"]) {
151
- display: inline-flex;
152
- align-items: center;
153
- height: var(--ae-navbar-height, 3.25rem); /* full-height hover area */
154
- /* !important overrides document-level * { padding: 0 } reset */
155
- padding: 0 var(--ae-navbar-link-padding-x) !important;
156
- border-radius: var(--ae-navbar-link-radius);
157
- color: var(--ae-navbar-link-color);
158
- font-size: var(--ae-navbar-link-font-size);
159
- text-decoration: none;
160
- white-space: nowrap;
161
- transition: color 0.15s ease, background-color 0.15s ease;
162
- outline-offset: 2px;
163
- }
164
-
165
- ::slotted(a[slot="start"]:hover),
166
- ::slotted(a[slot="end"]:hover) {
167
- color: var(--ae-navbar-link-hover-color);
168
- background-color: var(--ae-navbar-link-hover-bg);
169
- }
170
-
171
- ::slotted(a[slot="start"][aria-current="page"]),
172
- ::slotted(a[slot="end"][aria-current="page"]) {
173
- color: var(--ae-navbar-link-active-color);
174
- font-weight: var(--ae-navbar-link-active-font-weight);
175
- }
176
-
177
- /* ae-dropdown inside navbar — map navbar tokens to dropdown trigger API */
178
- ::slotted(ae-dropdown) {
179
- align-self: stretch;
180
- --dropdown-trigger-height: 100%;
181
- --dropdown-trigger-padding-x: var(--ae-navbar-link-padding-x);
182
- --dropdown-trigger-color: var(--ae-navbar-link-color);
183
- --dropdown-trigger-bg: none;
184
- --dropdown-trigger-radius: var(--ae-navbar-link-radius);
185
- --dropdown-trigger-font-size: var(--ae-navbar-link-font-size);
186
- --dropdown-trigger-hover-color: var(--ae-navbar-link-hover-color);
187
- --dropdown-trigger-hover-bg: var(--ae-navbar-link-hover-bg);
188
- }
189
-
190
- @media (max-width: 768px) {
191
- /* collapse the nav container */
192
- [part="nav"] {
193
- display: none;
194
- position: absolute;
195
- top: 100%;
196
- left: 0;
197
- right: 0;
198
- flex-direction: column;
199
- align-items: stretch;
200
- gap: 0;
201
- padding: 0.5rem 0;
202
- background: var(--ae-navbar-mobile-bg, var(--ae-navbar-bg, var(--surface-base)));
203
- border-bottom: 1px solid var(--ae-navbar-border-color, var(--border-default));
204
- box-shadow: var(--ae-navbar-mobile-shadow, 0 4px 12px rgba(0, 0, 0, 0.1));
205
- z-index: 1;
206
- }
207
-
208
- :host([open]) [part="nav"] {
209
- display: flex;
210
- }
211
-
212
- /* stack start/end vertically inside the panel */
213
- [part="start"],
214
- [part="end"] {
215
- flex-direction: column;
216
- align-items: flex-start;
217
- align-self: auto;
218
- gap: 0;
219
- margin-left: 0;
220
- width: 100%;
221
- }
222
-
223
- /* Mobile: links revert to auto height and add vertical padding */
224
- ::slotted(a[slot="start"]),
225
- ::slotted(a[slot="end"]) {
226
- height: auto;
227
- width: 100%;
228
- padding: 0.75rem var(--ae-navbar-link-padding-x);
229
- border-radius: 0;
230
- }
231
-
232
- /* show hamburger */
233
- [part="hamburger"] {
234
- display: flex;
235
- }
236
-
237
- /* hamburger → × animation */
238
- :host([open]) [part="hamburger"] span:nth-child(1) {
239
- transform: translateY(7px) rotate(45deg);
240
- }
241
-
242
- :host([open]) [part="hamburger"] span:nth-child(2) {
243
- opacity: 0;
244
- transform: scaleX(0);
245
- }
246
-
247
- :host([open]) [part="hamburger"] span:nth-child(3) {
248
- transform: translateY(-7px) rotate(-45deg);
249
- }
250
- }
1
+ :host {
2
+ /* layout — padding lives in .inner so document * { padding:0 } cannot override it */
3
+ display: block;
4
+ position: static;
5
+ top: auto;
6
+ z-index: var(--ae-navbar-z-index, 100);
7
+ box-sizing: border-box;
8
+ height: var(--ae-navbar-height, 3.25rem);
9
+ border-radius: var(--ae-navbar-radius, 0);
10
+
11
+ /* color */
12
+ background: var(--ae-navbar-bg, var(--surface-base));
13
+ color: var(--ae-navbar-color, var(--color-text-main));
14
+ border-bottom: var(--ae-navbar-border-width, 1px) solid var(--ae-navbar-border-color, var(--border-default));
15
+ box-shadow: var(--ae-navbar-shadow, none);
16
+
17
+ /* layout tokens — declared here so they are clearly part of the public API */
18
+ --ae-navbar-radius: 0;
19
+ /* Default padding-x references the global layout token so ae-navbar content
20
+ automatically aligns with .container / .container-fluid in light DOM.
21
+ Override with --ae-navbar-padding-x to decouple if needed. */
22
+ --ae-navbar-padding-x: var(--container-padding-x, 1.5rem);
23
+ --ae-navbar-gap: 0.5rem;
24
+
25
+ /* link style tokens — text mode defaults.
26
+ CSS custom properties inherit into slotted content, so
27
+ ::slotted(a[slot="start"]) can reference --ae-navbar-height. */
28
+ --ae-navbar-link-color: inherit;
29
+ --ae-navbar-link-font-size: inherit;
30
+ --ae-navbar-link-padding-x: 0.75rem; /* horizontal padding only; height fills vertically */
31
+ --ae-navbar-link-radius: 0;
32
+ --ae-navbar-link-hover-color: var(--color-text-link-hover);
33
+ --ae-navbar-link-hover-bg: transparent;
34
+ --ae-navbar-link-active-color: var(--color-text-link);
35
+ --ae-navbar-link-active-font-weight: 600;
36
+ }
37
+
38
+ :host([sticky]) {
39
+ position: sticky;
40
+ top: 0;
41
+ }
42
+
43
+ :host([color]) {
44
+ --ae-navbar-bg: var(--color-solid);
45
+ --ae-navbar-color: var(--color-on-solid);
46
+ --ae-navbar-border-color: transparent;
47
+ --ae-navbar-link-hover-color: var(--color-on-solid);
48
+ --ae-navbar-link-active-color: var(--color-on-solid);
49
+ }
50
+
51
+ /* block preset: hover shows a subtle filled block */
52
+ :host([appearance="block"]) {
53
+ --ae-navbar-link-hover-bg: var(--color-bg-subtle);
54
+ --ae-navbar-link-hover-color: inherit;
55
+ }
56
+
57
+ /* block preset on colored navbar: use semi-transparent white */
58
+ :host([color][appearance="block"]) {
59
+ --ae-navbar-link-hover-bg: rgba(255, 255, 255, 0.15);
60
+ --ae-navbar-link-hover-color: var(--color-on-solid);
61
+ }
62
+
63
+ .inner {
64
+ display: flex;
65
+ align-items: center;
66
+ height: 100%;
67
+ padding: 0 var(--ae-navbar-padding-x);
68
+ gap: var(--ae-navbar-gap);
69
+ box-sizing: border-box;
70
+ }
71
+
72
+ [part="brand"] {
73
+ flex: 0 0 auto;
74
+ display: flex;
75
+ align-items: center;
76
+ }
77
+
78
+ /* nav wraps start + end; takes all remaining space */
79
+ [part="nav"] {
80
+ flex: 1 1 auto;
81
+ display: flex;
82
+ align-self: stretch; /* stretch to host height so children can fill it */
83
+ align-items: stretch;
84
+ min-width: 0;
85
+ }
86
+
87
+ [part="start"],
88
+ [part="end"] {
89
+ flex: 0 0 auto;
90
+ display: flex;
91
+ align-self: stretch;
92
+ }
93
+
94
+ [part="start"] {
95
+ align-items: stretch; /* slotted <a> will stretch to full height */
96
+ gap: var(--ae-navbar-start-gap, 0);
97
+ }
98
+
99
+ [part="end"] {
100
+ align-items: center; /* buttons / avatars stay vertically centred */
101
+ gap: var(--ae-navbar-end-gap, 0.5rem);
102
+ margin-left: auto;
103
+ }
104
+
105
+ /* hamburger — hidden on desktop */
106
+ [part="hamburger"] {
107
+ display: none;
108
+ flex-direction: column;
109
+ justify-content: center;
110
+ align-items: center;
111
+ gap: 5px;
112
+ flex-shrink: 0;
113
+ width: var(--ae-navbar-hamburger-size, 2rem);
114
+ height: var(--ae-navbar-hamburger-size, 2rem);
115
+ margin-left: auto;
116
+ padding: 0;
117
+ background: none;
118
+ border: none;
119
+ border-radius: 4px;
120
+ cursor: pointer;
121
+ color: var(--ae-navbar-hamburger-color, inherit);
122
+ }
123
+
124
+ [part="hamburger"]:hover {
125
+ background: color-mix(in srgb, currentColor 10%, transparent);
126
+ }
127
+
128
+ [part="hamburger"] span {
129
+ display: block;
130
+ width: 18px;
131
+ height: 2px;
132
+ background: currentColor;
133
+ border-radius: 1px;
134
+ transition: transform 0.2s ease, opacity 0.2s ease;
135
+ }
136
+
137
+ /* Brand link — sensible defaults, no full-height stretch */
138
+ ::slotted(a[slot="brand"]) {
139
+ display: inline-flex;
140
+ align-items: center;
141
+ color: inherit;
142
+ font-weight: 700;
143
+ font-size: 1.05rem;
144
+ text-decoration: none;
145
+ white-space: nowrap;
146
+ }
147
+
148
+ /* Nav links (start / end slots) — fill full navbar height for block hover effect */
149
+ ::slotted(a[slot="start"]),
150
+ ::slotted(a[slot="end"]) {
151
+ display: inline-flex;
152
+ align-items: center;
153
+ height: var(--ae-navbar-height, 3.25rem); /* full-height hover area */
154
+ /* !important overrides document-level * { padding: 0 } reset */
155
+ padding: 0 var(--ae-navbar-link-padding-x) !important;
156
+ border-radius: var(--ae-navbar-link-radius);
157
+ color: var(--ae-navbar-link-color);
158
+ font-size: var(--ae-navbar-link-font-size);
159
+ text-decoration: none;
160
+ white-space: nowrap;
161
+ transition: color 0.15s ease, background-color 0.15s ease;
162
+ outline-offset: 2px;
163
+ }
164
+
165
+ ::slotted(a[slot="start"]:hover),
166
+ ::slotted(a[slot="end"]:hover) {
167
+ color: var(--ae-navbar-link-hover-color);
168
+ background-color: var(--ae-navbar-link-hover-bg);
169
+ }
170
+
171
+ ::slotted(a[slot="start"][aria-current="page"]),
172
+ ::slotted(a[slot="end"][aria-current="page"]) {
173
+ color: var(--ae-navbar-link-active-color);
174
+ font-weight: var(--ae-navbar-link-active-font-weight);
175
+ }
176
+
177
+ /* ae-dropdown inside navbar — map navbar tokens to dropdown trigger API */
178
+ ::slotted(ae-dropdown) {
179
+ align-self: stretch;
180
+ --dropdown-trigger-height: 100%;
181
+ --dropdown-trigger-padding-x: var(--ae-navbar-link-padding-x);
182
+ --dropdown-trigger-color: var(--ae-navbar-link-color);
183
+ --dropdown-trigger-bg: none;
184
+ --dropdown-trigger-radius: var(--ae-navbar-link-radius);
185
+ --dropdown-trigger-font-size: var(--ae-navbar-link-font-size);
186
+ --dropdown-trigger-hover-color: var(--ae-navbar-link-hover-color);
187
+ --dropdown-trigger-hover-bg: var(--ae-navbar-link-hover-bg);
188
+ }
189
+
190
+ @media (max-width: 768px) {
191
+ /* collapse the nav container */
192
+ [part="nav"] {
193
+ display: none;
194
+ position: absolute;
195
+ top: 100%;
196
+ left: 0;
197
+ right: 0;
198
+ flex-direction: column;
199
+ align-items: stretch;
200
+ gap: 0;
201
+ padding: 0.5rem 0;
202
+ background: var(--ae-navbar-mobile-bg, var(--ae-navbar-bg, var(--surface-base)));
203
+ border-bottom: 1px solid var(--ae-navbar-border-color, var(--border-default));
204
+ box-shadow: var(--ae-navbar-mobile-shadow, 0 4px 12px rgba(0, 0, 0, 0.1));
205
+ z-index: 1;
206
+ }
207
+
208
+ :host([open]) [part="nav"] {
209
+ display: flex;
210
+ }
211
+
212
+ /* stack start/end vertically inside the panel */
213
+ [part="start"],
214
+ [part="end"] {
215
+ flex-direction: column;
216
+ align-items: flex-start;
217
+ align-self: auto;
218
+ gap: 0;
219
+ margin-left: 0;
220
+ width: 100%;
221
+ }
222
+
223
+ /* Mobile: links revert to auto height and add vertical padding */
224
+ ::slotted(a[slot="start"]),
225
+ ::slotted(a[slot="end"]) {
226
+ height: auto;
227
+ width: 100%;
228
+ padding: 0.75rem var(--ae-navbar-link-padding-x);
229
+ border-radius: 0;
230
+ }
231
+
232
+ /* show hamburger */
233
+ [part="hamburger"] {
234
+ display: flex;
235
+ }
236
+
237
+ /* hamburger → × animation */
238
+ :host([open]) [part="hamburger"] span:nth-child(1) {
239
+ transform: translateY(7px) rotate(45deg);
240
+ }
241
+
242
+ :host([open]) [part="hamburger"] span:nth-child(2) {
243
+ opacity: 0;
244
+ transform: scaleX(0);
245
+ }
246
+
247
+ :host([open]) [part="hamburger"] span:nth-child(3) {
248
+ transform: translateY(-7px) rotate(-45deg);
249
+ }
250
+ }