@duskmoon-dev/core 0.1.0 → 1.0.0

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 (51) hide show
  1. package/README.md +366 -78
  2. package/dist/components/accordion.css +244 -0
  3. package/dist/components/alert.css +199 -0
  4. package/dist/components/appbar.css +308 -0
  5. package/dist/components/autocomplete.css +269 -0
  6. package/dist/components/avatar.css +167 -0
  7. package/dist/components/badge.css +178 -0
  8. package/dist/components/bottom-navigation.css +263 -0
  9. package/dist/components/bottomsheet.css +334 -0
  10. package/dist/components/button.css +474 -0
  11. package/dist/components/card.css +220 -0
  12. package/dist/components/chip.css +211 -0
  13. package/dist/components/collapse.css +254 -0
  14. package/dist/components/datepicker.css +347 -0
  15. package/dist/components/dialog.css +173 -0
  16. package/dist/components/divider.css +284 -0
  17. package/dist/components/drawer.css +371 -0
  18. package/dist/components/file-upload.css +321 -0
  19. package/dist/components/form.css +441 -0
  20. package/dist/components/index.css +9994 -0
  21. package/dist/components/input.css +240 -0
  22. package/dist/components/list.css +188 -0
  23. package/dist/components/markdown-body.css +405 -0
  24. package/dist/components/modal.css +291 -0
  25. package/dist/components/navigation.css +392 -0
  26. package/dist/components/popover.css +326 -0
  27. package/dist/components/progress.css +238 -0
  28. package/dist/components/rating.css +230 -0
  29. package/dist/components/skeleton.css +216 -0
  30. package/dist/components/slider.css +327 -0
  31. package/dist/components/snackbar.css +311 -0
  32. package/dist/components/stepper.css +313 -0
  33. package/dist/components/switch.css +277 -0
  34. package/dist/components/table.css +199 -0
  35. package/dist/components/timeline.css +353 -0
  36. package/dist/components/toast.css +251 -0
  37. package/dist/components/tooltip.css +284 -0
  38. package/dist/index.css +10699 -0
  39. package/dist/themes/moonlight.css +168 -0
  40. package/dist/themes/sunshine.css +166 -0
  41. package/dist/types/index.d.ts +14 -0
  42. package/dist/types/index.d.ts.map +1 -0
  43. package/dist/types/plugin.d.ts +69 -0
  44. package/dist/types/plugin.d.ts.map +1 -0
  45. package/dist/types/theme.d.ts +202 -0
  46. package/dist/types/theme.d.ts.map +1 -0
  47. package/package.json +137 -18
  48. package/dist/index.cjs +0 -243
  49. package/dist/index.cjs.map +0 -15
  50. package/dist/index.js +0 -211
  51. package/dist/index.js.map +0 -15
@@ -0,0 +1,251 @@
1
+ /**
2
+ * Toast Component Styles
3
+ * DuskMoonUI - Material Design 3 inspired toast notification system
4
+ */
5
+
6
+ @layer components {
7
+ /* Toast Container */
8
+ .toast-container {
9
+ position: fixed;
10
+ z-index: 1200;
11
+ display: flex;
12
+ flex-direction: column;
13
+ gap: 0.5rem;
14
+ padding: 1rem;
15
+ pointer-events: none;
16
+ }
17
+
18
+ /* Position Variants */
19
+ .toast-container-top-right {
20
+ top: 0;
21
+ right: 0;
22
+ align-items: flex-end;
23
+ }
24
+
25
+ .toast-container-top-left {
26
+ top: 0;
27
+ left: 0;
28
+ align-items: flex-start;
29
+ }
30
+
31
+ .toast-container-top-center {
32
+ top: 0;
33
+ left: 50%;
34
+ transform: translateX(-50%);
35
+ align-items: center;
36
+ }
37
+
38
+ .toast-container-bottom-right {
39
+ bottom: 0;
40
+ right: 0;
41
+ align-items: flex-end;
42
+ }
43
+
44
+ .toast-container-bottom-left {
45
+ bottom: 0;
46
+ left: 0;
47
+ align-items: flex-start;
48
+ }
49
+
50
+ .toast-container-bottom-center {
51
+ bottom: 0;
52
+ left: 50%;
53
+ transform: translateX(-50%);
54
+ align-items: center;
55
+ }
56
+
57
+ /* Base Toast */
58
+ .toast {
59
+ display: flex;
60
+ align-items: flex-start;
61
+ gap: 0.75rem;
62
+ width: 22rem;
63
+ max-width: calc(100vw - 2rem);
64
+ padding: 1rem;
65
+ background-color: var(--color-surface);
66
+ color: var(--color-on-surface);
67
+ border: 1px solid var(--color-outline);
68
+ border-radius: 0.75rem;
69
+ box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
70
+ pointer-events: auto;
71
+ opacity: 0;
72
+ transform: translateX(100%);
73
+ transition: opacity 300ms ease-out, transform 300ms ease-out;
74
+ }
75
+
76
+ .toast-container-top-left .toast,
77
+ .toast-container-bottom-left .toast {
78
+ transform: translateX(-100%);
79
+ }
80
+
81
+ .toast-container-top-center .toast,
82
+ .toast-container-bottom-center .toast {
83
+ transform: translateY(-20px);
84
+ }
85
+
86
+ /* Toast Open State */
87
+ .toast.toast-open,
88
+ .toast.show,
89
+ .toast-show {
90
+ opacity: 1;
91
+ transform: translateX(0) translateY(0);
92
+ }
93
+
94
+ /* Toast Icon */
95
+ .toast-icon {
96
+ display: flex;
97
+ align-items: center;
98
+ justify-content: center;
99
+ width: 1.5rem;
100
+ height: 1.5rem;
101
+ font-size: 1.25rem;
102
+ flex-shrink: 0;
103
+ }
104
+
105
+ /* Toast Content */
106
+ .toast-content {
107
+ display: flex;
108
+ flex-direction: column;
109
+ gap: 0.25rem;
110
+ flex: 1;
111
+ min-width: 0;
112
+ }
113
+
114
+ .toast-title {
115
+ font-size: 0.875rem;
116
+ font-weight: 600;
117
+ line-height: 1.25rem;
118
+ color: var(--color-on-surface);
119
+ }
120
+
121
+ .toast-message {
122
+ font-size: 0.875rem;
123
+ line-height: 1.25rem;
124
+ color: var(--color-on-surface-variant);
125
+ }
126
+
127
+ /* Toast Close Button */
128
+ .toast-close {
129
+ display: flex;
130
+ align-items: center;
131
+ justify-content: center;
132
+ width: 1.5rem;
133
+ height: 1.5rem;
134
+ font-size: 1rem;
135
+ color: var(--color-on-surface-variant);
136
+ background-color: transparent;
137
+ border: none;
138
+ border-radius: 0.25rem;
139
+ cursor: pointer;
140
+ transition: background-color 150ms ease-in-out, color 150ms ease-in-out;
141
+ flex-shrink: 0;
142
+ margin-left: auto;
143
+ }
144
+
145
+ .toast-close:hover {
146
+ background-color: var(--color-surface-container);
147
+ color: var(--color-on-surface);
148
+ }
149
+
150
+ .toast-close:focus-visible {
151
+ outline: 2px solid var(--color-primary);
152
+ outline-offset: 2px;
153
+ }
154
+
155
+ /* Toast Actions */
156
+ .toast-actions {
157
+ display: flex;
158
+ gap: 0.5rem;
159
+ margin-top: 0.5rem;
160
+ }
161
+
162
+ /* Type Variants */
163
+ .toast-info {
164
+ border-color: var(--color-info);
165
+ }
166
+
167
+ .toast-info .toast-icon {
168
+ color: var(--color-info);
169
+ }
170
+
171
+ .toast-success {
172
+ border-color: var(--color-success);
173
+ }
174
+
175
+ .toast-success .toast-icon {
176
+ color: var(--color-success);
177
+ }
178
+
179
+ .toast-warning {
180
+ border-color: var(--color-warning);
181
+ }
182
+
183
+ .toast-warning .toast-icon {
184
+ color: var(--color-warning);
185
+ }
186
+
187
+ .toast-error {
188
+ border-color: var(--color-error);
189
+ }
190
+
191
+ .toast-error .toast-icon {
192
+ color: var(--color-error);
193
+ }
194
+
195
+ /* Filled Variants */
196
+ .toast-filled.toast-info {
197
+ background-color: var(--color-info-container);
198
+ border-color: transparent;
199
+ color: var(--color-on-info-container);
200
+ }
201
+
202
+ .toast-filled.toast-success {
203
+ background-color: var(--color-success-container);
204
+ border-color: transparent;
205
+ color: var(--color-on-success-container);
206
+ }
207
+
208
+ .toast-filled.toast-warning {
209
+ background-color: var(--color-warning-container);
210
+ border-color: transparent;
211
+ color: var(--color-on-warning-container);
212
+ }
213
+
214
+ .toast-filled.toast-error {
215
+ background-color: var(--color-error-container);
216
+ border-color: transparent;
217
+ color: var(--color-on-error-container);
218
+ }
219
+
220
+ /* Progress Bar (for auto-dismiss) */
221
+ .toast-progress {
222
+ position: absolute;
223
+ bottom: 0;
224
+ left: 0;
225
+ height: 3px;
226
+ background-color: var(--color-primary);
227
+ border-radius: 0 0 0.75rem 0.75rem;
228
+ animation: toast-progress linear forwards;
229
+ }
230
+
231
+ @keyframes toast-progress {
232
+ from {
233
+ width: 100%;
234
+ }
235
+ to {
236
+ width: 0%;
237
+ }
238
+ }
239
+
240
+ /* Reduce Motion */
241
+ @media (prefers-reduced-motion: reduce) {
242
+ .toast {
243
+ transition: opacity 0ms;
244
+ transform: none;
245
+ }
246
+
247
+ .toast-progress {
248
+ animation: none;
249
+ }
250
+ }
251
+ }
@@ -0,0 +1,284 @@
1
+ /**
2
+ * Tooltip Component Styles
3
+ * DuskMoonUI - Material Design 3 inspired tooltip system
4
+ */
5
+
6
+ @layer components {
7
+ /* Base Tooltip */
8
+ .tooltip {
9
+ position: relative;
10
+ display: inline-block;
11
+ }
12
+
13
+ /* Tooltip Content */
14
+ .tooltip-content {
15
+ position: absolute;
16
+ z-index: 1000;
17
+ padding: 0.375rem 0.75rem;
18
+ font-size: 0.75rem;
19
+ font-weight: 500;
20
+ line-height: 1rem;
21
+ white-space: nowrap;
22
+ background-color: var(--color-on-surface);
23
+ color: var(--color-surface);
24
+ border-radius: 0.25rem;
25
+ box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1);
26
+ opacity: 0;
27
+ visibility: hidden;
28
+ transition: opacity 150ms ease-out, visibility 150ms ease-out;
29
+ pointer-events: none;
30
+ }
31
+
32
+ /* Tooltip Arrow */
33
+ .tooltip-content::before {
34
+ content: '';
35
+ position: absolute;
36
+ width: 0;
37
+ height: 0;
38
+ border: 0.375rem solid transparent;
39
+ }
40
+
41
+ /* Show Tooltip */
42
+ .tooltip:hover .tooltip-content,
43
+ .tooltip:focus-within .tooltip-content,
44
+ .tooltip-open .tooltip-content {
45
+ opacity: 1;
46
+ visibility: visible;
47
+ }
48
+
49
+ /* Position: Top (default) - applied to all tooltips as base */
50
+ .tooltip .tooltip-content {
51
+ bottom: 100%;
52
+ top: auto;
53
+ left: 50%;
54
+ right: auto;
55
+ transform: translateX(-50%);
56
+ margin-bottom: 0.5rem;
57
+ margin-top: 0;
58
+ margin-left: 0;
59
+ margin-right: 0;
60
+ }
61
+
62
+ .tooltip .tooltip-content::before {
63
+ top: 100%;
64
+ bottom: auto;
65
+ left: 50%;
66
+ right: auto;
67
+ transform: translateX(-50%);
68
+ border-top-color: var(--color-on-surface);
69
+ border-bottom-color: transparent;
70
+ border-left-color: transparent;
71
+ border-right-color: transparent;
72
+ }
73
+
74
+ /* Position: Bottom */
75
+ .tooltip.tooltip-bottom .tooltip-content {
76
+ top: 100%;
77
+ bottom: auto;
78
+ left: 50%;
79
+ right: auto;
80
+ transform: translateX(-50%);
81
+ margin-top: 0.5rem;
82
+ margin-bottom: 0;
83
+ margin-left: 0;
84
+ margin-right: 0;
85
+ }
86
+
87
+ .tooltip.tooltip-bottom .tooltip-content::before {
88
+ bottom: 100%;
89
+ top: auto;
90
+ left: 50%;
91
+ right: auto;
92
+ transform: translateX(-50%);
93
+ border-bottom-color: var(--color-on-surface);
94
+ border-top-color: transparent;
95
+ border-left-color: transparent;
96
+ border-right-color: transparent;
97
+ }
98
+
99
+ /* Position: Left */
100
+ .tooltip.tooltip-left .tooltip-content {
101
+ right: 100%;
102
+ left: auto;
103
+ top: 50%;
104
+ bottom: auto;
105
+ transform: translateY(-50%);
106
+ margin-right: 0.5rem;
107
+ margin-left: 0;
108
+ margin-top: 0;
109
+ margin-bottom: 0;
110
+ }
111
+
112
+ .tooltip.tooltip-left .tooltip-content::before {
113
+ left: 100%;
114
+ right: auto;
115
+ top: 50%;
116
+ bottom: auto;
117
+ transform: translateY(-50%);
118
+ border-left-color: var(--color-on-surface);
119
+ border-right-color: transparent;
120
+ border-top-color: transparent;
121
+ border-bottom-color: transparent;
122
+ }
123
+
124
+ /* Position: Right */
125
+ .tooltip.tooltip-right .tooltip-content {
126
+ left: 100%;
127
+ right: auto;
128
+ top: 50%;
129
+ bottom: auto;
130
+ transform: translateY(-50%);
131
+ margin-left: 0.5rem;
132
+ margin-right: 0;
133
+ margin-top: 0;
134
+ margin-bottom: 0;
135
+ }
136
+
137
+ .tooltip.tooltip-right .tooltip-content::before {
138
+ right: 100%;
139
+ left: auto;
140
+ top: 50%;
141
+ bottom: auto;
142
+ transform: translateY(-50%);
143
+ border-right-color: var(--color-on-surface);
144
+ border-left-color: transparent;
145
+ border-top-color: transparent;
146
+ border-bottom-color: transparent;
147
+ }
148
+
149
+ /* Light Tooltip */
150
+ .tooltip.tooltip-light .tooltip-content {
151
+ background-color: var(--color-surface);
152
+ color: var(--color-on-surface);
153
+ border: 1px solid var(--color-outline);
154
+ box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
155
+ }
156
+
157
+ .tooltip.tooltip-light .tooltip-content::before {
158
+ border-top-color: var(--color-surface);
159
+ }
160
+
161
+ .tooltip.tooltip-light.tooltip-bottom .tooltip-content::before {
162
+ border-bottom-color: var(--color-surface);
163
+ }
164
+
165
+ .tooltip.tooltip-light.tooltip-left .tooltip-content::before {
166
+ border-left-color: var(--color-surface);
167
+ }
168
+
169
+ .tooltip.tooltip-light.tooltip-right .tooltip-content::before {
170
+ border-right-color: var(--color-surface);
171
+ }
172
+
173
+ /* Color Variants */
174
+ .tooltip.tooltip-primary .tooltip-content {
175
+ background-color: var(--color-primary);
176
+ color: var(--color-primary-content);
177
+ }
178
+
179
+ .tooltip.tooltip-primary .tooltip-content::before {
180
+ border-top-color: var(--color-primary);
181
+ }
182
+
183
+ .tooltip.tooltip-primary.tooltip-bottom .tooltip-content::before {
184
+ border-bottom-color: var(--color-primary);
185
+ }
186
+
187
+ .tooltip.tooltip-primary.tooltip-left .tooltip-content::before {
188
+ border-left-color: var(--color-primary);
189
+ }
190
+
191
+ .tooltip.tooltip-primary.tooltip-right .tooltip-content::before {
192
+ border-right-color: var(--color-primary);
193
+ }
194
+
195
+ .tooltip.tooltip-secondary .tooltip-content {
196
+ background-color: var(--color-secondary);
197
+ color: var(--color-secondary-content);
198
+ }
199
+
200
+ .tooltip.tooltip-secondary .tooltip-content::before {
201
+ border-top-color: var(--color-secondary);
202
+ }
203
+
204
+ .tooltip.tooltip-secondary.tooltip-bottom .tooltip-content::before {
205
+ border-bottom-color: var(--color-secondary);
206
+ }
207
+
208
+ .tooltip.tooltip-secondary.tooltip-left .tooltip-content::before {
209
+ border-left-color: var(--color-secondary);
210
+ }
211
+
212
+ .tooltip.tooltip-secondary.tooltip-right .tooltip-content::before {
213
+ border-right-color: var(--color-secondary);
214
+ }
215
+
216
+ .tooltip.tooltip-error .tooltip-content {
217
+ background-color: var(--color-error);
218
+ color: var(--color-error-content);
219
+ }
220
+
221
+ .tooltip.tooltip-error .tooltip-content::before {
222
+ border-top-color: var(--color-error);
223
+ }
224
+
225
+ .tooltip.tooltip-error.tooltip-bottom .tooltip-content::before {
226
+ border-bottom-color: var(--color-error);
227
+ }
228
+
229
+ .tooltip.tooltip-error.tooltip-left .tooltip-content::before {
230
+ border-left-color: var(--color-error);
231
+ }
232
+
233
+ .tooltip.tooltip-error.tooltip-right .tooltip-content::before {
234
+ border-right-color: var(--color-error);
235
+ }
236
+
237
+ /* Multi-line Tooltip */
238
+ .tooltip-multiline .tooltip-content {
239
+ white-space: normal;
240
+ max-width: 16rem;
241
+ text-align: center;
242
+ }
243
+
244
+ /* Rich Tooltip */
245
+ .tooltip-rich .tooltip-content {
246
+ padding: 0.75rem 1rem;
247
+ max-width: 20rem;
248
+ white-space: normal;
249
+ text-align: left;
250
+ }
251
+
252
+ .tooltip-rich-title {
253
+ font-size: 0.8125rem;
254
+ font-weight: 600;
255
+ margin-bottom: 0.25rem;
256
+ }
257
+
258
+ .tooltip-rich-description {
259
+ font-size: 0.75rem;
260
+ font-weight: 400;
261
+ opacity: 0.9;
262
+ }
263
+
264
+ /* Delay Variants */
265
+ .tooltip-delay .tooltip-content {
266
+ transition-delay: 300ms;
267
+ }
268
+
269
+ .tooltip-delay-long .tooltip-content {
270
+ transition-delay: 500ms;
271
+ }
272
+
273
+ /* Interactive Tooltip */
274
+ .tooltip-interactive .tooltip-content {
275
+ pointer-events: auto;
276
+ }
277
+
278
+ /* Reduce Motion */
279
+ @media (prefers-reduced-motion: reduce) {
280
+ .tooltip-content {
281
+ transition: none;
282
+ }
283
+ }
284
+ }