@duskmoon-dev/core 1.18.6 → 1.19.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.
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Sign Page Layout
3
+ * Responsive authentication shell driven by its containing width.
4
+ */
5
+
6
+ @layer components {
7
+ .sign-page {
8
+ container-type: inline-size;
9
+ container-name: sign-page;
10
+ width: 100%;
11
+ min-width: 0;
12
+ min-height: var(--sign-page-min-height, 100dvh);
13
+ overflow: hidden;
14
+ background-color: var(--color-surface);
15
+ color: var(--color-on-surface);
16
+ }
17
+
18
+ .sign-page-frame {
19
+ display: grid;
20
+ min-height: inherit;
21
+ grid-template-columns: minmax(0, 1fr);
22
+ }
23
+
24
+ .sign-page-aside {
25
+ display: none;
26
+ position: relative;
27
+ isolation: isolate;
28
+ overflow: hidden;
29
+ padding: clamp(2rem, 6cqi, 5rem);
30
+ background-color: var(--color-primary-container);
31
+ color: var(--color-on-primary-container);
32
+ }
33
+
34
+ .sign-page-aside::before,
35
+ .sign-page-aside::after {
36
+ content: "";
37
+ position: absolute;
38
+ z-index: -1;
39
+ border-radius: var(--radius-full);
40
+ background: color-mix(in oklch, var(--color-tertiary) 24%, transparent);
41
+ filter: blur(1px);
42
+ }
43
+
44
+ .sign-page-aside::before {
45
+ width: 22rem;
46
+ height: 22rem;
47
+ inset: -8rem -6rem auto auto;
48
+ }
49
+
50
+ .sign-page-aside::after {
51
+ width: 15rem;
52
+ height: 15rem;
53
+ inset: auto auto -5rem -4rem;
54
+ background: color-mix(in oklch, var(--color-secondary) 22%, transparent);
55
+ }
56
+
57
+ .sign-page-main {
58
+ display: grid;
59
+ place-items: center;
60
+ min-width: 0;
61
+ padding: clamp(1rem, 6cqi, 4rem);
62
+ background-color: var(--color-surface);
63
+ }
64
+
65
+ .sign-page-content {
66
+ width: min(100%, 30rem);
67
+ }
68
+
69
+ @container sign-page (min-width: 48rem) {
70
+ .sign-page-frame {
71
+ grid-template-columns: minmax(20rem, 1.15fr) minmax(24rem, 0.85fr);
72
+ }
73
+
74
+ .sign-page-aside {
75
+ display: flex;
76
+ flex-direction: column;
77
+ justify-content: space-between;
78
+ }
79
+ }
80
+ }
@@ -21,6 +21,26 @@ export const css = `/**
21
21
  visibility: visible;
22
22
  }
23
23
 
24
+ /* Native surfaces keep the browser's closed state and reset UA dialog/popover geometry. */
25
+ :where(.bottomsheet[popover], dialog.bottomsheet) {
26
+ inset: auto;
27
+ margin: 0;
28
+ width: auto;
29
+ height: auto;
30
+ padding: 0;
31
+ border: 0;
32
+ color: var(--color-on-surface);
33
+ max-width: none;
34
+ max-height: none;
35
+ overflow: auto;
36
+ box-sizing: border-box;
37
+ }
38
+
39
+ .bottomsheet[popover]:not(:popover-open),
40
+ dialog.bottomsheet:not([open]) {
41
+ display: none;
42
+ }
43
+
24
44
  /* Base Bottom Sheet */
25
45
  .bottomsheet {
26
46
  position: fixed;
@@ -322,8 +342,57 @@ export const css = `/**
322
342
  }
323
343
  }
324
344
 
345
+ /* Native state overrides legacy transforms without requiring class toggles. */
346
+ .bottomsheet[popover],
347
+ dialog.bottomsheet {
348
+ transition: transform 300ms ease-out, opacity 300ms ease-out,
349
+ display 300ms allow-discrete, overlay 300ms allow-discrete;
350
+ opacity: 0;
351
+ }
352
+
353
+ .bottomsheet[popover]:popover-open,
354
+ dialog.bottomsheet[open] {
355
+ display: flex;
356
+ transform: translate(0, 0);
357
+ opacity: 1;
358
+ }
359
+
360
+ dialog.bottomsheet::backdrop {
361
+ background-color: color-mix(in srgb, var(--color-scrim) 50%, transparent);
362
+ opacity: 0;
363
+ transition: opacity 300ms ease-out, display 300ms allow-discrete,
364
+ overlay 300ms allow-discrete;
365
+ }
366
+
367
+ dialog.bottomsheet[open]::backdrop {
368
+ opacity: 1;
369
+ }
370
+
371
+ @starting-style {
372
+ .bottomsheet[popover]:popover-open,
373
+ dialog.bottomsheet[open],
374
+ dialog.bottomsheet[open]::backdrop {
375
+ opacity: 0;
376
+ }
377
+
378
+ .bottomsheet[popover]:popover-open,
379
+ dialog.bottomsheet[open] {
380
+ transform: translateY(100%);
381
+ }
382
+
383
+ @media (min-width: 768px) {
384
+ .bottomsheet-responsive[popover]:popover-open,
385
+ dialog.bottomsheet-responsive[open] {
386
+ transform: translateX(100%);
387
+ }
388
+ }
389
+ }
390
+
325
391
  /* Reduce Motion */
326
392
  @media (prefers-reduced-motion: reduce) {
393
+ .bottomsheet[popover],
394
+ dialog.bottomsheet,
395
+ dialog.bottomsheet::backdrop,
327
396
  .bottomsheet,
328
397
  .bottomsheet-backdrop,
329
398
  .bottomsheet-close,
@@ -0,0 +1,5 @@
1
+ // Auto-generated type declaration for console-page
2
+ export declare const css: string;
3
+ export declare const styles: CSSStyleSheet | null;
4
+ declare const sheet: CSSStyleSheet | null;
5
+ export default sheet;
@@ -0,0 +1,187 @@
1
+ // Auto-generated from console-page.css
2
+ export const css = `/**
3
+ * Console Page Layout
4
+ * Responsive application shell with expanded, icon-rail, and hidden sidebar states.
5
+ */
6
+
7
+ @layer components {
8
+ .console-page {
9
+ --console-page-sidebar-width: 17.5rem;
10
+ --console-page-sidebar-compact-width: 5rem;
11
+ container-type: inline-size;
12
+ container-name: console-page;
13
+ width: 100%;
14
+ min-width: 0;
15
+ min-height: var(--console-page-min-height, 100dvh);
16
+ background-color: var(--color-surface);
17
+ color: var(--color-on-surface);
18
+ }
19
+
20
+ .console-page-frame {
21
+ display: grid;
22
+ min-height: inherit;
23
+ grid-template-areas:
24
+ "appbar"
25
+ "main";
26
+ grid-template-columns: minmax(0, 1fr);
27
+ grid-template-rows: auto minmax(0, 1fr);
28
+ transition: grid-template-columns 240ms ease-out;
29
+ }
30
+
31
+ .console-page-appbar {
32
+ grid-area: appbar;
33
+ z-index: 20;
34
+ }
35
+
36
+ .console-page-sidebar {
37
+ display: none;
38
+ grid-area: sidebar;
39
+ min-width: 0;
40
+ overflow: hidden;
41
+ background-color: var(--color-surface-container-low);
42
+ border-inline-end: 1px solid var(--color-outline-variant);
43
+ transition:
44
+ opacity 160ms ease-out,
45
+ visibility 160ms ease-out;
46
+ }
47
+
48
+ .console-page-sidebar-header,
49
+ .console-page-sidebar-footer {
50
+ display: flex;
51
+ align-items: center;
52
+ gap: 0.75rem;
53
+ min-height: 4rem;
54
+ padding: 0.75rem 1rem;
55
+ flex-shrink: 0;
56
+ }
57
+
58
+ .console-page-sidebar-header {
59
+ border-bottom: 1px solid var(--color-outline-variant);
60
+ }
61
+
62
+ .console-page-sidebar-body {
63
+ flex: 1;
64
+ min-height: 0;
65
+ overflow-y: auto;
66
+ overflow-x: hidden;
67
+ padding-block: 0.5rem;
68
+ }
69
+
70
+ .console-page-sidebar-footer {
71
+ border-top: 1px solid var(--color-outline-variant);
72
+ }
73
+
74
+ .console-page-main {
75
+ grid-area: main;
76
+ min-width: 0;
77
+ overflow: auto;
78
+ padding: clamp(1rem, 4cqi, 2.5rem);
79
+ background-color: var(--color-surface);
80
+ }
81
+
82
+ .console-page-nav-label {
83
+ overflow: hidden;
84
+ text-overflow: ellipsis;
85
+ white-space: nowrap;
86
+ }
87
+
88
+ .console-page-sidebar-toggle {
89
+ display: none;
90
+ }
91
+
92
+ .console-page-menu-trigger {
93
+ display: inline-flex;
94
+ }
95
+
96
+ .console-page-mobile-menu {
97
+ max-width: min(20rem, calc(100cqi - 2rem));
98
+ }
99
+
100
+ @container console-page (min-width: 48rem) {
101
+ .console-page-frame {
102
+ grid-template-areas:
103
+ "appbar appbar"
104
+ "sidebar main";
105
+ grid-template-columns: var(--console-page-sidebar-width) minmax(0, 1fr);
106
+ }
107
+
108
+ .console-page-sidebar {
109
+ display: flex;
110
+ flex-direction: column;
111
+ }
112
+
113
+ .console-page-sidebar-toggle {
114
+ display: inline-flex;
115
+ }
116
+
117
+ .console-page-menu-trigger {
118
+ display: none;
119
+ }
120
+
121
+ .console-page-mobile-menu {
122
+ display: none;
123
+ }
124
+
125
+ .console-page-sidebar-compact .console-page-frame {
126
+ grid-template-columns: var(--console-page-sidebar-compact-width) minmax(0, 1fr);
127
+ }
128
+
129
+ .console-page-sidebar-compact .console-page-nav-label {
130
+ position: absolute;
131
+ width: 1px;
132
+ height: 1px;
133
+ padding: 0;
134
+ margin: -1px;
135
+ overflow: hidden;
136
+ clip: rect(0, 0, 0, 0);
137
+ white-space: nowrap;
138
+ border: 0;
139
+ }
140
+
141
+ .console-page-sidebar-compact .console-page-sidebar-header,
142
+ .console-page-sidebar-compact .console-page-sidebar-footer {
143
+ justify-content: center;
144
+ padding-inline: 0.75rem;
145
+ }
146
+
147
+ .console-page-sidebar-compact .console-page-sidebar-body :is(.nested-menu li > a, .nested-menu li > button, .nested-menu summary) {
148
+ justify-content: center;
149
+ padding-inline: 0.75rem;
150
+ }
151
+
152
+ .console-page-sidebar-compact .console-page-sidebar-body .drawer-item {
153
+ justify-content: center;
154
+ padding-inline: 0.75rem;
155
+ }
156
+
157
+ .console-page-sidebar-compact .console-page-sidebar-body :is(.nested-menu-title, details > ul, summary::after) {
158
+ display: none;
159
+ }
160
+
161
+ .console-page-sidebar-hidden .console-page-frame {
162
+ grid-template-areas:
163
+ "appbar"
164
+ "main";
165
+ grid-template-columns: minmax(0, 1fr);
166
+ }
167
+
168
+ .console-page-sidebar-hidden .console-page-sidebar {
169
+ display: none;
170
+ }
171
+ }
172
+
173
+ @media (prefers-reduced-motion: reduce) {
174
+ .console-page-frame,
175
+ .console-page-sidebar {
176
+ transition: none;
177
+ }
178
+ }
179
+ }
180
+ `;
181
+
182
+ const sheet = typeof CSSStyleSheet !== 'undefined' ? new CSSStyleSheet() : null;
183
+ if (sheet) {
184
+ sheet.replaceSync(css);
185
+ }
186
+ export const styles = sheet;
187
+ export default sheet;
@@ -21,6 +21,26 @@ export const css = `/**
21
21
  visibility: visible;
22
22
  }
23
23
 
24
+ /* Native surfaces keep the browser's closed state and reset UA dialog/popover geometry. */
25
+ :where(.drawer[popover], dialog.drawer) {
26
+ inset: auto;
27
+ margin: 0;
28
+ width: auto;
29
+ height: auto;
30
+ padding: 0;
31
+ border: 0;
32
+ color: var(--color-on-surface);
33
+ max-width: none;
34
+ max-height: none;
35
+ overflow: auto;
36
+ box-sizing: border-box;
37
+ }
38
+
39
+ .drawer[popover]:not(:popover-open),
40
+ dialog.drawer:not([open]) {
41
+ display: none;
42
+ }
43
+
24
44
  /* Base Drawer */
25
45
  .drawer {
26
46
  position: fixed;
@@ -359,8 +379,65 @@ export const css = `/**
359
379
  border-radius: 0;
360
380
  }
361
381
 
382
+ /* Native state overrides legacy transforms without requiring class toggles. */
383
+ .drawer[popover],
384
+ dialog.drawer {
385
+ transition: transform 300ms ease-out, opacity 300ms ease-out,
386
+ display 300ms allow-discrete, overlay 300ms allow-discrete;
387
+ opacity: 0;
388
+ }
389
+
390
+ .drawer[popover]:popover-open,
391
+ dialog.drawer[open] {
392
+ display: flex;
393
+ transform: translate(0, 0);
394
+ opacity: 1;
395
+ }
396
+
397
+ dialog.drawer::backdrop {
398
+ background-color: color-mix(in srgb, var(--color-scrim) 50%, transparent);
399
+ opacity: 0;
400
+ transition: opacity 300ms ease-out, display 300ms allow-discrete,
401
+ overlay 300ms allow-discrete;
402
+ }
403
+
404
+ dialog.drawer[open]::backdrop {
405
+ opacity: 1;
406
+ }
407
+
408
+ @starting-style {
409
+ .drawer[popover]:popover-open,
410
+ dialog.drawer[open],
411
+ dialog.drawer[open]::backdrop {
412
+ opacity: 0;
413
+ }
414
+
415
+ .drawer-left[popover]:popover-open,
416
+ dialog.drawer-left[open] {
417
+ transform: translateX(-100%);
418
+ }
419
+
420
+ .drawer-right[popover]:popover-open,
421
+ dialog.drawer-right[open] {
422
+ transform: translateX(100%);
423
+ }
424
+
425
+ .drawer-top[popover]:popover-open,
426
+ dialog.drawer-top[open] {
427
+ transform: translateY(-100%);
428
+ }
429
+
430
+ .drawer-bottom[popover]:popover-open,
431
+ dialog.drawer-bottom[open] {
432
+ transform: translateY(100%);
433
+ }
434
+ }
435
+
362
436
  /* Reduce Motion */
363
437
  @media (prefers-reduced-motion: reduce) {
438
+ .drawer[popover],
439
+ dialog.drawer,
440
+ dialog.drawer::backdrop,
364
441
  .drawer,
365
442
  .drawer-backdrop,
366
443
  .drawer-close,
@@ -0,0 +1,5 @@
1
+ // Auto-generated type declaration for home-page
2
+ export declare const css: string;
3
+ export declare const styles: CSSStyleSheet | null;
4
+ declare const sheet: CSSStyleSheet | null;
5
+ export default sheet;
@@ -0,0 +1,103 @@
1
+ // Auto-generated from home-page.css
2
+ export const css = `/**
3
+ * Home Page Layout
4
+ * App-bar-led public application shell driven by its containing width.
5
+ */
6
+
7
+ @layer components {
8
+ .home-page {
9
+ container-type: inline-size;
10
+ container-name: home-page;
11
+ width: 100%;
12
+ min-width: 0;
13
+ min-height: var(--home-page-min-height, 100dvh);
14
+ background-color: var(--color-surface);
15
+ color: var(--color-on-surface);
16
+ }
17
+
18
+ .home-page-frame {
19
+ display: grid;
20
+ min-height: inherit;
21
+ grid-template-rows: auto minmax(0, 1fr) auto;
22
+ }
23
+
24
+ .home-page-header {
25
+ z-index: 10;
26
+ }
27
+
28
+ .home-page-nav {
29
+ display: none;
30
+ align-items: center;
31
+ gap: 0.25rem;
32
+ }
33
+
34
+ .home-page-actions {
35
+ display: none;
36
+ align-items: center;
37
+ gap: 0.25rem;
38
+ }
39
+
40
+ .home-page-menu-trigger {
41
+ display: inline-flex;
42
+ }
43
+
44
+ .home-page-mobile-menu {
45
+ max-width: min(20rem, calc(100cqi - 2rem));
46
+ }
47
+
48
+ .home-page-main {
49
+ min-width: 0;
50
+ }
51
+
52
+ .home-page-content {
53
+ width: min(100%, 80rem);
54
+ margin-inline: auto;
55
+ padding: clamp(1rem, 5cqi, 3rem);
56
+ }
57
+
58
+ .home-page-hero {
59
+ display: grid;
60
+ align-items: center;
61
+ grid-template-columns: minmax(0, 1fr);
62
+ gap: clamp(2rem, 5cqi, 4rem);
63
+ }
64
+
65
+ .home-page-footer {
66
+ border-top: 1px solid var(--color-outline-variant);
67
+ background-color: var(--color-surface-container-low);
68
+ }
69
+
70
+ @container home-page (min-width: 48rem) {
71
+ .home-page-nav {
72
+ display: flex;
73
+ }
74
+
75
+ .home-page-actions {
76
+ display: flex;
77
+ }
78
+
79
+ .home-page-menu-trigger {
80
+ display: none;
81
+ }
82
+
83
+ .home-page-mobile-menu {
84
+ display: none;
85
+ }
86
+
87
+ .home-page-content {
88
+ padding-inline: clamp(2rem, 5cqi, 5rem);
89
+ }
90
+
91
+ .home-page-hero {
92
+ grid-template-columns: minmax(0, 1fr) minmax(18rem, 0.8fr);
93
+ }
94
+ }
95
+ }
96
+ `;
97
+
98
+ const sheet = typeof CSSStyleSheet !== 'undefined' ? new CSSStyleSheet() : null;
99
+ if (sheet) {
100
+ sheet.replaceSync(css);
101
+ }
102
+ export const styles = sheet;
103
+ export default sheet;
@@ -104,6 +104,65 @@ export const css = `/**
104
104
  gap: 0.25rem;
105
105
  }
106
106
 
107
+ /* Native floating menu. Keep closed popovers hidden despite the base flex layout. */
108
+ .menu[popover] {
109
+ display: none;
110
+ position: absolute;
111
+ inset: auto;
112
+ margin: 0.5rem;
113
+ min-width: 12rem;
114
+ max-width: calc(100vw - 1rem);
115
+ max-height: calc(100dvh - 1rem);
116
+ overflow: auto;
117
+ color: var(--color-on-surface);
118
+ background-color: var(--color-surface-container);
119
+ border: 1px solid var(--color-outline-variant);
120
+ border-radius: var(--radius-md);
121
+ box-shadow: var(--shadow-lg);
122
+ position-area: bottom;
123
+ position-try-fallbacks: flip-block, flip-inline, flip-block flip-inline;
124
+ opacity: 0;
125
+ transform: scale(0.95);
126
+ transition:
127
+ opacity 150ms ease-out,
128
+ transform 150ms ease-out,
129
+ overlay 150ms ease-out allow-discrete,
130
+ display 150ms ease-out allow-discrete;
131
+ }
132
+
133
+ .menu[popover]:popover-open {
134
+ display: flex;
135
+ opacity: 1;
136
+ transform: scale(1);
137
+ }
138
+
139
+ @starting-style {
140
+ .menu[popover]:popover-open {
141
+ opacity: 0;
142
+ transform: scale(0.95);
143
+ }
144
+ }
145
+
146
+ .menu[popover]::backdrop {
147
+ background-color: transparent;
148
+ }
149
+
150
+ .menu-top[popover] {
151
+ position-area: top;
152
+ }
153
+
154
+ .menu-bottom[popover] {
155
+ position-area: bottom;
156
+ }
157
+
158
+ .menu-left[popover] {
159
+ position-area: left;
160
+ }
161
+
162
+ .menu-right[popover] {
163
+ position-area: right;
164
+ }
165
+
107
166
  .menu li {
108
167
  display: flex;
109
168
  flex-shrink: 0;
@@ -782,6 +841,10 @@ export const css = `/**
782
841
 
783
842
  /* Reduce Motion */
784
843
  @media (prefers-reduced-motion: reduce) {
844
+ .menu li > a,
845
+ .menu li > button,
846
+ .menu-item,
847
+ .menu[popover],
785
848
  .pagination-item,
786
849
  .pagination-prev,
787
850
  .pagination-next {
@@ -0,0 +1,5 @@
1
+ // Auto-generated type declaration for sign-page
2
+ export declare const css: string;
3
+ export declare const styles: CSSStyleSheet | null;
4
+ declare const sheet: CSSStyleSheet | null;
5
+ export default sheet;