@lumston/ds-angular 0.0.4 → 0.0.6

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 (29) hide show
  1. package/package.json +1 -1
  2. package/styles/data-display/badge/badge.styles.css +244 -0
  3. package/styles/data-display/chip/chip.styles.css +245 -0
  4. package/styles/dropdown/dropdown.styles.css +14 -0
  5. package/styles/feedback/alert/alert.styles.css +304 -0
  6. package/styles/feedback/loader/loader.styles.css +132 -0
  7. package/styles/feedback/progress-bar/progress-bar.styles.css +193 -0
  8. package/styles/icon/icon.styles.css +11 -0
  9. package/styles/inputs/button/button.styles.css +377 -0
  10. package/styles/inputs/checkbox/checkbox.styles.css +157 -0
  11. package/styles/inputs/icon-button/icon-button.styles.css +157 -0
  12. package/styles/inputs/radio-button/radio-button.styles.css +274 -0
  13. package/styles/inputs/slider/slider.styles.css +228 -0
  14. package/styles/inputs/switch/switch.styles.css +483 -0
  15. package/styles/media/avatar/avatar.styles.css +112 -0
  16. package/styles/media/avatar-group/avatar-group.styles.css +37 -0
  17. package/styles/media/logo/logo.styles.css +40 -0
  18. package/styles/navigation/breadcrumb/breadcrumb.styles.css +144 -0
  19. package/styles/navigation/pagination/pagination.styles.css +336 -0
  20. package/styles/overlay/menu/menu.styles.css +138 -0
  21. package/styles/overlay/modal/modal.styles.css +178 -0
  22. package/styles/overlay/popover/popover.styles.css +112 -0
  23. package/styles/overlay/tooltip/tooltip.styles.css +172 -0
  24. package/styles/styles/_base.css +10 -0
  25. package/styles/styles/_tokens.css +75 -0
  26. package/styles/styles/index.css +28 -0
  27. package/styles/typography/link/link.styles.css +93 -0
  28. package/styles/typography/tag/tag.styles.css +274 -0
  29. package/styles/typography/text/text.styles.css +176 -0
@@ -0,0 +1,144 @@
1
+ :host {
2
+ display: block;
3
+ --ls-breadcrumb-main-color: #4361ee;
4
+ }
5
+
6
+ /* ── Estructura Base (Común a todos) ────────────────────────────────── */
7
+ .ls-breadcrumb {
8
+ display: flex;
9
+ align-items: center;
10
+ flex-wrap: wrap;
11
+ list-style: none;
12
+ margin: 0;
13
+ padding: 0;
14
+ font-family: var(--ls-font-family, sans-serif);
15
+ font-size: 0.875rem;
16
+ }
17
+
18
+ .ls-breadcrumb-item {
19
+ display: inline-flex;
20
+ align-items: center;
21
+ gap: 0.5rem;
22
+ color: #6c757d; /* Gris término medio para niveles previos */
23
+ }
24
+
25
+ .ls-breadcrumb-item a {
26
+ color: inherit;
27
+ text-decoration: none !important;
28
+ transition: color 0.2s;
29
+ border: none;
30
+ }
31
+
32
+ .ls-breadcrumb-item a:hover {
33
+ text-decoration: none !important;
34
+ color: var(--ls-breadcrumb-main-color);
35
+ }
36
+
37
+ /* Fix para Iconos */
38
+ .ls-breadcrumb-icon {
39
+ width: 1.15rem;
40
+ height: 1.15rem;
41
+ display: flex;
42
+ align-items: center;
43
+ justify-content: center;
44
+ color: currentColor;
45
+ }
46
+
47
+ .ls-breadcrumb-icon svg {
48
+ width: 100%;
49
+ height: 100%;
50
+ display: block;
51
+ }
52
+
53
+ /* Separador (Solo para Default y Dotted) */
54
+ .ls-breadcrumb-separator {
55
+ margin: 0 0.5rem;
56
+ color: #888ea8;
57
+ user-select: none;
58
+ }
59
+
60
+ /* ── Variante: Default (Slash) ─────────────────────────────────────── */
61
+ .ls-breadcrumb--default .ls-breadcrumb-item--active {
62
+ color: #000000;
63
+ font-weight: 600;
64
+ }
65
+
66
+ /* ── Variante: Dotted ─────────────────────────────────────────────── */
67
+ .ls-breadcrumb--dotted .ls-breadcrumb-separator {
68
+ font-size: 0;
69
+ display: flex;
70
+ align-items: center;
71
+ }
72
+
73
+ .ls-breadcrumb--dotted .ls-breadcrumb-separator::before {
74
+ content: '';
75
+ width: 6px;
76
+ height: 6px;
77
+ background: var(--ls-breadcrumb-main-color);
78
+ border-radius: 50%;
79
+ display: inline-block;
80
+ }
81
+
82
+ .ls-breadcrumb--dotted .ls-breadcrumb-item--active {
83
+ color: #000000;
84
+ font-weight: 600;
85
+ }
86
+
87
+ /* ── Variante: Arrowed (Geometric Steps) ────────────────────────────── */
88
+ .ls-breadcrumb--arrowed {
89
+ gap: 0;
90
+ }
91
+
92
+ .ls-breadcrumb--arrowed .ls-breadcrumb-item {
93
+ position: relative;
94
+ background: #e9ecef;
95
+ padding: 0.5rem 1rem 0.5rem 1.5rem;
96
+ margin-left: -10px;
97
+ clip-path: polygon(calc(100% - 12px) 0%, 100% 50%, calc(100% - 12px) 100%, 0% 100%, 12px 50%, 0% 0%);
98
+ filter: drop-shadow(1px 0 1px rgba(0,0,0,0.08));
99
+ color: #515365;
100
+ }
101
+
102
+ .ls-breadcrumb--arrowed .ls-breadcrumb-item:first-child {
103
+ margin-left: 0;
104
+ padding-left: 0.75rem;
105
+ clip-path: polygon(calc(100% - 12px) 0%, 100% 50%, calc(100% - 12px) 100%, 0% 100%, 0% 0%);
106
+ border-radius: 4px 0 0 4px;
107
+ }
108
+
109
+ .ls-breadcrumb--arrowed .ls-breadcrumb-item:last-child {
110
+ padding-right: 1.25rem;
111
+ clip-path: polygon(100% 0%, 100% 100%, 0% 100%, 12px 50%, 0% 0%);
112
+ border-radius: 0 4px 4px 0;
113
+ }
114
+
115
+ .ls-breadcrumb--arrowed .ls-breadcrumb-item--active {
116
+ background: var(--ls-breadcrumb-main-color) !important;
117
+ color: #ffffff !important;
118
+ z-index: 10 !important;
119
+ }
120
+
121
+ /* Escalera de Z-index para Arrowed */
122
+ .ls-breadcrumb--arrowed .ls-breadcrumb-item:nth-child(1) { z-index: 5; }
123
+ .ls-breadcrumb--arrowed .ls-breadcrumb-item:nth-child(2) { z-index: 4; }
124
+ .ls-breadcrumb--arrowed .ls-breadcrumb-item:nth-child(3) { z-index: 3; }
125
+
126
+ /* ── Dark Mode ──────────────────────────────────────────────────────── */
127
+ body.dark .ls-breadcrumb-item {
128
+ color: #bfc9d4;
129
+ }
130
+
131
+ /* Forzamos blanco en activo para Default y Dotted en Dark Mode */
132
+ body.dark .ls-breadcrumb--default .ls-breadcrumb-item--active,
133
+ body.dark .ls-breadcrumb--dotted .ls-breadcrumb-item--active {
134
+ color: #ffffff !important;
135
+ }
136
+
137
+ body.dark .ls-breadcrumb--arrowed .ls-breadcrumb-item:not(.ls-breadcrumb-item--active) {
138
+ background: #1b2e4b !important;
139
+ color: #e0e6ed !important;
140
+ }
141
+
142
+ body.dark .ls-breadcrumb-separator {
143
+ color: #3b3f5c;
144
+ }
@@ -0,0 +1,336 @@
1
+ /* Pagination Component — Pure CSS */
2
+
3
+ :host {
4
+ display: contents;
5
+ }
6
+
7
+ /* === Nav icons === */
8
+
9
+ .pg-icon-left {
10
+ transform: rotate(90deg);
11
+ }
12
+
13
+ .pg-icon-right {
14
+ transform: rotate(-90deg);
15
+ }
16
+
17
+ /* === List === */
18
+
19
+ .pg-list {
20
+ display: inline-flex;
21
+ align-items: center;
22
+ gap: 0.25rem;
23
+ list-style: none;
24
+ margin: 0;
25
+ padding: 0;
26
+ }
27
+
28
+ /* === Base item === */
29
+
30
+ .pg-item {
31
+ display: inline-flex;
32
+ align-items: center;
33
+ justify-content: center;
34
+ font-weight: 600;
35
+ cursor: pointer;
36
+ transition: all var(--ls-transition-duration) ease;
37
+ border: 2px solid transparent;
38
+ background: none;
39
+ outline: none;
40
+ font-family: var(--ls-font-family);
41
+ line-height: 1;
42
+ user-select: none;
43
+ }
44
+
45
+ /* === Sizes === */
46
+
47
+ .pg-item-sm {
48
+ padding: 0.375rem 0.625rem;
49
+ font-size: 0.75rem;
50
+ min-width: 1.75rem;
51
+ height: 1.75rem;
52
+ }
53
+
54
+ .pg-item-md {
55
+ padding: 0.5rem 0.875rem;
56
+ font-size: 0.875rem;
57
+ min-width: 2.25rem;
58
+ height: 2.25rem;
59
+ }
60
+
61
+ .pg-item-lg {
62
+ padding: 0.625rem 1.25rem;
63
+ font-size: 1rem;
64
+ min-width: 2.75rem;
65
+ height: 2.75rem;
66
+ }
67
+
68
+ /* === Shapes === */
69
+
70
+ .pg-item-rounded {
71
+ border-radius: var(--ls-border-radius-md);
72
+ }
73
+
74
+ .pg-item-circular {
75
+ border-radius: var(--ls-border-radius-full);
76
+ padding-inline: 0;
77
+ }
78
+
79
+ .pg-item-circular.pg-item-sm {
80
+ width: 1.75rem;
81
+ }
82
+
83
+ .pg-item-circular.pg-item-md {
84
+ width: 2.25rem;
85
+ }
86
+
87
+ .pg-item-circular.pg-item-lg {
88
+ width: 2.75rem;
89
+ }
90
+
91
+ /* === Disabled === */
92
+
93
+ .pg-item-disabled,
94
+ .pg-item[disabled] {
95
+ cursor: not-allowed;
96
+ opacity: 0.6;
97
+ }
98
+
99
+ /* === Solid variant === */
100
+
101
+ /* Solid — primary */
102
+
103
+ .pg-item-solid-primary {
104
+ background-color: var(--ls-color-white-light);
105
+ color: var(--ls-color-dark);
106
+ }
107
+
108
+ .pg-item-solid-primary:not([disabled]):hover {
109
+ background-color: var(--ls-color-primary);
110
+ color: var(--ls-color-white);
111
+ }
112
+
113
+ .pg-item-solid-primary.pg-item-active {
114
+ background-color: var(--ls-color-primary);
115
+ color: var(--ls-color-white);
116
+ }
117
+
118
+ /* Solid — secondary */
119
+
120
+ .pg-item-solid-secondary {
121
+ background-color: var(--ls-color-white-light);
122
+ color: var(--ls-color-dark);
123
+ }
124
+
125
+ .pg-item-solid-secondary:not([disabled]):hover {
126
+ background-color: var(--ls-color-secondary);
127
+ color: var(--ls-color-white);
128
+ }
129
+
130
+ .pg-item-solid-secondary.pg-item-active {
131
+ background-color: var(--ls-color-secondary);
132
+ color: var(--ls-color-white);
133
+ }
134
+
135
+ /* Solid — default */
136
+
137
+ .pg-item-solid-default {
138
+ background-color: var(--ls-color-white-light);
139
+ color: var(--ls-color-dark);
140
+ }
141
+
142
+ .pg-item-solid-default:not([disabled]):hover {
143
+ background-color: var(--ls-color-dark);
144
+ color: var(--ls-color-white);
145
+ }
146
+
147
+ .pg-item-solid-default.pg-item-active {
148
+ background-color: var(--ls-color-dark);
149
+ color: var(--ls-color-white);
150
+ }
151
+
152
+ /* === Outlined variant === */
153
+
154
+ /* Outlined — primary */
155
+
156
+ .pg-item-outlined-primary {
157
+ background-color: transparent;
158
+ border-color: var(--ls-color-white-light);
159
+ color: var(--ls-color-dark);
160
+ }
161
+
162
+ .pg-item-outlined-primary:not([disabled]):hover {
163
+ border-color: var(--ls-color-primary);
164
+ color: var(--ls-color-primary);
165
+ }
166
+
167
+ .pg-item-outlined-primary.pg-item-active {
168
+ border-color: var(--ls-color-primary);
169
+ color: var(--ls-color-primary);
170
+ }
171
+
172
+ /* Outlined — secondary */
173
+
174
+ .pg-item-outlined-secondary {
175
+ background-color: transparent;
176
+ border-color: var(--ls-color-white-light);
177
+ color: var(--ls-color-dark);
178
+ }
179
+
180
+ .pg-item-outlined-secondary:not([disabled]):hover {
181
+ border-color: var(--ls-color-secondary);
182
+ color: var(--ls-color-secondary);
183
+ }
184
+
185
+ .pg-item-outlined-secondary.pg-item-active {
186
+ border-color: var(--ls-color-secondary);
187
+ color: var(--ls-color-secondary);
188
+ }
189
+
190
+ /* Outlined — default */
191
+
192
+ .pg-item-outlined-default {
193
+ background-color: transparent;
194
+ border-color: var(--ls-color-white-light);
195
+ color: var(--ls-color-dark);
196
+ }
197
+
198
+ .pg-item-outlined-default:not([disabled]):hover {
199
+ border-color: var(--ls-color-dark);
200
+ color: var(--ls-color-dark);
201
+ }
202
+
203
+ .pg-item-outlined-default.pg-item-active {
204
+ border-color: var(--ls-color-dark);
205
+ color: var(--ls-color-dark);
206
+ }
207
+
208
+ /* === Text variant === */
209
+
210
+ /* Text — primary */
211
+
212
+ .pg-item-text-primary {
213
+ background-color: transparent;
214
+ border-color: transparent;
215
+ color: var(--ls-color-white-dark);
216
+ }
217
+
218
+ .pg-item-text-primary:not([disabled]):hover {
219
+ background-color: rgb(67 97 238 / 0.1);
220
+ color: var(--ls-color-primary);
221
+ }
222
+
223
+ .pg-item-text-primary.pg-item-active {
224
+ color: var(--ls-color-primary);
225
+ }
226
+
227
+ /* Text — secondary */
228
+
229
+ .pg-item-text-secondary {
230
+ background-color: transparent;
231
+ border-color: transparent;
232
+ color: var(--ls-color-white-dark);
233
+ }
234
+
235
+ .pg-item-text-secondary:not([disabled]):hover {
236
+ background-color: rgb(128 93 202 / 0.1);
237
+ color: var(--ls-color-secondary);
238
+ }
239
+
240
+ .pg-item-text-secondary.pg-item-active {
241
+ color: var(--ls-color-secondary);
242
+ }
243
+
244
+ /* Text — default */
245
+
246
+ .pg-item-text-default {
247
+ background-color: transparent;
248
+ border-color: transparent;
249
+ color: var(--ls-color-white-dark);
250
+ }
251
+
252
+ .pg-item-text-default:not([disabled]):hover {
253
+ background-color: rgb(59 63 92 / 0.1);
254
+ color: var(--ls-color-dark);
255
+ }
256
+
257
+ .pg-item-text-default.pg-item-active {
258
+ color: var(--ls-color-dark);
259
+ }
260
+
261
+ /* === Dark mode — Solid === */
262
+
263
+ body.dark .pg-item-solid-primary,
264
+ body.dark .pg-item-solid-secondary,
265
+ body.dark .pg-item-solid-default {
266
+ background-color: #191e3a;
267
+ color: var(--ls-color-white-light);
268
+ }
269
+
270
+ body.dark .pg-item-solid-primary:not([disabled]):hover,
271
+ body.dark .pg-item-solid-primary.pg-item-active {
272
+ background-color: var(--ls-color-primary);
273
+ color: var(--ls-color-white-light);
274
+ }
275
+
276
+ body.dark .pg-item-solid-secondary:not([disabled]):hover,
277
+ body.dark .pg-item-solid-secondary.pg-item-active {
278
+ background-color: var(--ls-color-secondary);
279
+ color: var(--ls-color-white-light);
280
+ }
281
+
282
+ body.dark .pg-item-solid-default:not([disabled]):hover,
283
+ body.dark .pg-item-solid-default.pg-item-active {
284
+ background-color: var(--ls-color-dark);
285
+ color: var(--ls-color-white-light);
286
+ }
287
+
288
+ /* === Dark mode — Outlined === */
289
+
290
+ body.dark .pg-item-outlined-primary,
291
+ body.dark .pg-item-outlined-secondary,
292
+ body.dark .pg-item-outlined-default {
293
+ border-color: #191e3a;
294
+ color: var(--ls-color-white-light);
295
+ }
296
+
297
+ body.dark .pg-item-outlined-primary:not([disabled]):hover,
298
+ body.dark .pg-item-outlined-primary.pg-item-active {
299
+ border-color: var(--ls-color-primary);
300
+ color: var(--ls-color-white-light);
301
+ }
302
+
303
+ body.dark .pg-item-outlined-secondary:not([disabled]):hover,
304
+ body.dark .pg-item-outlined-secondary.pg-item-active {
305
+ border-color: var(--ls-color-secondary);
306
+ color: var(--ls-color-white-light);
307
+ }
308
+
309
+ body.dark .pg-item-outlined-default:not([disabled]):hover,
310
+ body.dark .pg-item-outlined-default.pg-item-active {
311
+ border-color: var(--ls-color-dark);
312
+ color: var(--ls-color-white-light);
313
+ }
314
+
315
+ /* === Dark mode — Text === */
316
+
317
+ body.dark .pg-item-text-primary,
318
+ body.dark .pg-item-text-secondary,
319
+ body.dark .pg-item-text-default {
320
+ color: var(--ls-color-white-dark);
321
+ }
322
+
323
+ body.dark .pg-item-text-primary:not([disabled]):hover,
324
+ body.dark .pg-item-text-primary.pg-item-active {
325
+ color: var(--ls-color-primary);
326
+ }
327
+
328
+ body.dark .pg-item-text-secondary:not([disabled]):hover,
329
+ body.dark .pg-item-text-secondary.pg-item-active {
330
+ color: var(--ls-color-secondary);
331
+ }
332
+
333
+ body.dark .pg-item-text-default:not([disabled]):hover,
334
+ body.dark .pg-item-text-default.pg-item-active {
335
+ color: var(--ls-color-white-light);
336
+ }
@@ -0,0 +1,138 @@
1
+ /* Menu Component — Pure CSS */
2
+
3
+ :host {
4
+ display: contents;
5
+ }
6
+
7
+ /* ─── Backdrop ─────────────────────────────────────────────────── */
8
+
9
+ .menu-backdrop {
10
+ position: fixed;
11
+ inset: 0;
12
+ z-index: var(--ls-menu-z-index);
13
+ background-color: transparent;
14
+ }
15
+
16
+ /* ─── Panel ─────────────────────────────────────────────────────── */
17
+
18
+ .menu-panel {
19
+ position: fixed;
20
+ top: var(--menu-top, 0px);
21
+ left: var(--menu-left, 0px);
22
+ z-index: calc(var(--ls-menu-z-index) + 1);
23
+ min-width: 10rem;
24
+ padding: 0.25rem 0;
25
+ background-color: #fff;
26
+ border-radius: var(--ls-border-radius-md);
27
+ box-shadow: 0 4px 24px rgba(0, 0, 0, 0.12);
28
+ outline: none;
29
+ }
30
+
31
+ .menu-panel.menu-panel-inline {
32
+ position: absolute;
33
+ }
34
+
35
+ /* ─── Animations ─────────────────────────────────────────────────── */
36
+
37
+ @keyframes menu-enter-kf {
38
+ from {
39
+ opacity: 0;
40
+ transform: scale(0.95) translateY(-4px);
41
+ }
42
+ to {
43
+ opacity: 1;
44
+ transform: scale(1) translateY(0);
45
+ }
46
+ }
47
+
48
+ @keyframes menu-leave-kf {
49
+ from {
50
+ opacity: 1;
51
+ transform: scale(1) translateY(0);
52
+ }
53
+ to {
54
+ opacity: 0;
55
+ transform: scale(0.95) translateY(-4px);
56
+ }
57
+ }
58
+
59
+ .menu-panel.menu-enter {
60
+ animation: menu-enter-kf 150ms ease-out forwards;
61
+ }
62
+
63
+ .menu-panel.menu-leave {
64
+ animation: menu-leave-kf 100ms ease-in forwards;
65
+ }
66
+
67
+ /* ─── Menu Item ──────────────────────────────────────────────────── */
68
+
69
+ .menu-item {
70
+ display: flex;
71
+ align-items: center;
72
+ width: 100%;
73
+ padding: 0.5rem 1rem;
74
+ background: none;
75
+ border: none;
76
+ text-align: left;
77
+ font-family: var(--ls-font-family);
78
+ font-size: 0.875rem;
79
+ color: #3b3f5c;
80
+ cursor: pointer;
81
+ transition: background-color var(--ls-transition-duration) ease;
82
+ }
83
+
84
+ .menu-item:hover:not(:disabled) {
85
+ background-color: #f1f2f3;
86
+ }
87
+
88
+ .menu-item:focus-visible {
89
+ outline: 2px solid var(--ls-color-primary);
90
+ outline-offset: -2px;
91
+ background-color: #f1f2f3;
92
+ }
93
+
94
+ .menu-item-dense {
95
+ padding-top: 0.25rem;
96
+ padding-bottom: 0.25rem;
97
+ }
98
+
99
+ .menu-item-no-gutters {
100
+ padding-inline: 0;
101
+ }
102
+
103
+ .menu-item-divider {
104
+ border-bottom: 1px solid #e0e6ed;
105
+ }
106
+
107
+ .menu-item-disabled {
108
+ color: #888ea8;
109
+ pointer-events: none;
110
+ cursor: not-allowed;
111
+ }
112
+
113
+ /* ─── Dark mode ──────────────────────────────────────────────────── */
114
+
115
+ body.dark .menu-panel {
116
+ background-color: #1b2e4b;
117
+ box-shadow: 0 4px 24px rgba(0, 0, 0, 0.4);
118
+ }
119
+
120
+ body.dark .menu-item {
121
+ color: #e0e6ed;
122
+ }
123
+
124
+ body.dark .menu-item:hover:not(:disabled) {
125
+ background-color: #253b5e;
126
+ }
127
+
128
+ body.dark .menu-item:focus-visible {
129
+ background-color: #253b5e;
130
+ }
131
+
132
+ body.dark .menu-item-divider {
133
+ border-bottom-color: #253b5e;
134
+ }
135
+
136
+ body.dark .menu-item-disabled {
137
+ color: #506690;
138
+ }