@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,89 @@
1
+ // Auto-generated from sign-page.css
2
+ export const css = `/**
3
+ * Sign Page Layout
4
+ * Responsive authentication shell driven by its containing width.
5
+ */
6
+
7
+ @layer components {
8
+ .sign-page {
9
+ container-type: inline-size;
10
+ container-name: sign-page;
11
+ width: 100%;
12
+ min-width: 0;
13
+ min-height: var(--sign-page-min-height, 100dvh);
14
+ overflow: hidden;
15
+ background-color: var(--color-surface);
16
+ color: var(--color-on-surface);
17
+ }
18
+
19
+ .sign-page-frame {
20
+ display: grid;
21
+ min-height: inherit;
22
+ grid-template-columns: minmax(0, 1fr);
23
+ }
24
+
25
+ .sign-page-aside {
26
+ display: none;
27
+ position: relative;
28
+ isolation: isolate;
29
+ overflow: hidden;
30
+ padding: clamp(2rem, 6cqi, 5rem);
31
+ background-color: var(--color-primary-container);
32
+ color: var(--color-on-primary-container);
33
+ }
34
+
35
+ .sign-page-aside::before,
36
+ .sign-page-aside::after {
37
+ content: "";
38
+ position: absolute;
39
+ z-index: -1;
40
+ border-radius: var(--radius-full);
41
+ background: color-mix(in oklch, var(--color-tertiary) 24%, transparent);
42
+ filter: blur(1px);
43
+ }
44
+
45
+ .sign-page-aside::before {
46
+ width: 22rem;
47
+ height: 22rem;
48
+ inset: -8rem -6rem auto auto;
49
+ }
50
+
51
+ .sign-page-aside::after {
52
+ width: 15rem;
53
+ height: 15rem;
54
+ inset: auto auto -5rem -4rem;
55
+ background: color-mix(in oklch, var(--color-secondary) 22%, transparent);
56
+ }
57
+
58
+ .sign-page-main {
59
+ display: grid;
60
+ place-items: center;
61
+ min-width: 0;
62
+ padding: clamp(1rem, 6cqi, 4rem);
63
+ background-color: var(--color-surface);
64
+ }
65
+
66
+ .sign-page-content {
67
+ width: min(100%, 30rem);
68
+ }
69
+
70
+ @container sign-page (min-width: 48rem) {
71
+ .sign-page-frame {
72
+ grid-template-columns: minmax(20rem, 1.15fr) minmax(24rem, 0.85fr);
73
+ }
74
+
75
+ .sign-page-aside {
76
+ display: flex;
77
+ flex-direction: column;
78
+ justify-content: space-between;
79
+ }
80
+ }
81
+ }
82
+ `;
83
+
84
+ const sheet = typeof CSSStyleSheet !== 'undefined' ? new CSSStyleSheet() : null;
85
+ if (sheet) {
86
+ sheet.replaceSync(css);
87
+ }
88
+ export const styles = sheet;
89
+ export default sheet;
package/dist/index.css CHANGED
@@ -2973,6 +2973,65 @@ html {
2973
2973
  gap: 0.25rem;
2974
2974
  }
2975
2975
 
2976
+ /* Native floating menu. Keep closed popovers hidden despite the base flex layout. */
2977
+ .menu[popover] {
2978
+ display: none;
2979
+ position: absolute;
2980
+ inset: auto;
2981
+ margin: 0.5rem;
2982
+ min-width: 12rem;
2983
+ max-width: calc(100vw - 1rem);
2984
+ max-height: calc(100dvh - 1rem);
2985
+ overflow: auto;
2986
+ color: var(--color-on-surface);
2987
+ background-color: var(--color-surface-container);
2988
+ border: 1px solid var(--color-outline-variant);
2989
+ border-radius: var(--radius-md);
2990
+ box-shadow: var(--shadow-lg);
2991
+ position-area: bottom;
2992
+ position-try-fallbacks: flip-block, flip-inline, flip-block flip-inline;
2993
+ opacity: 0;
2994
+ transform: scale(0.95);
2995
+ transition:
2996
+ opacity 150ms ease-out,
2997
+ transform 150ms ease-out,
2998
+ overlay 150ms ease-out allow-discrete,
2999
+ display 150ms ease-out allow-discrete;
3000
+ }
3001
+
3002
+ .menu[popover]:popover-open {
3003
+ display: flex;
3004
+ opacity: 1;
3005
+ transform: scale(1);
3006
+ }
3007
+
3008
+ @starting-style {
3009
+ .menu[popover]:popover-open {
3010
+ opacity: 0;
3011
+ transform: scale(0.95);
3012
+ }
3013
+ }
3014
+
3015
+ .menu[popover]::backdrop {
3016
+ background-color: transparent;
3017
+ }
3018
+
3019
+ .menu-top[popover] {
3020
+ position-area: top;
3021
+ }
3022
+
3023
+ .menu-bottom[popover] {
3024
+ position-area: bottom;
3025
+ }
3026
+
3027
+ .menu-left[popover] {
3028
+ position-area: left;
3029
+ }
3030
+
3031
+ .menu-right[popover] {
3032
+ position-area: right;
3033
+ }
3034
+
2976
3035
  .menu li {
2977
3036
  display: flex;
2978
3037
  flex-shrink: 0;
@@ -3651,6 +3710,10 @@ html {
3651
3710
 
3652
3711
  /* Reduce Motion */
3653
3712
  @media (prefers-reduced-motion: reduce) {
3713
+ .menu li > a,
3714
+ .menu li > button,
3715
+ .menu-item,
3716
+ .menu[popover],
3654
3717
  .pagination-item,
3655
3718
  .pagination-prev,
3656
3719
  .pagination-next {
@@ -16152,6 +16215,185 @@ html {
16152
16215
  }
16153
16216
  }
16154
16217
 
16218
+ /**
16219
+ * Console Page Layout
16220
+ * Responsive application shell with expanded, icon-rail, and hidden sidebar states.
16221
+ */
16222
+
16223
+ @layer components {
16224
+ .console-page {
16225
+ --console-page-sidebar-width: 17.5rem;
16226
+ --console-page-sidebar-compact-width: 5rem;
16227
+ container-type: inline-size;
16228
+ container-name: console-page;
16229
+ width: 100%;
16230
+ min-width: 0;
16231
+ min-height: var(--console-page-min-height, 100dvh);
16232
+ background-color: var(--color-surface);
16233
+ color: var(--color-on-surface);
16234
+ }
16235
+
16236
+ .console-page-frame {
16237
+ display: grid;
16238
+ min-height: inherit;
16239
+ grid-template-areas:
16240
+ "appbar"
16241
+ "main";
16242
+ grid-template-columns: minmax(0, 1fr);
16243
+ grid-template-rows: auto minmax(0, 1fr);
16244
+ transition: grid-template-columns 240ms ease-out;
16245
+ }
16246
+
16247
+ .console-page-appbar {
16248
+ grid-area: appbar;
16249
+ z-index: 20;
16250
+ }
16251
+
16252
+ .console-page-sidebar {
16253
+ display: none;
16254
+ grid-area: sidebar;
16255
+ min-width: 0;
16256
+ overflow: hidden;
16257
+ background-color: var(--color-surface-container-low);
16258
+ border-inline-end: 1px solid var(--color-outline-variant);
16259
+ transition:
16260
+ opacity 160ms ease-out,
16261
+ visibility 160ms ease-out;
16262
+ }
16263
+
16264
+ .console-page-sidebar-header,
16265
+ .console-page-sidebar-footer {
16266
+ display: flex;
16267
+ align-items: center;
16268
+ gap: 0.75rem;
16269
+ min-height: 4rem;
16270
+ padding: 0.75rem 1rem;
16271
+ flex-shrink: 0;
16272
+ }
16273
+
16274
+ .console-page-sidebar-header {
16275
+ border-bottom: 1px solid var(--color-outline-variant);
16276
+ }
16277
+
16278
+ .console-page-sidebar-body {
16279
+ flex: 1;
16280
+ min-height: 0;
16281
+ overflow-y: auto;
16282
+ overflow-x: hidden;
16283
+ padding-block: 0.5rem;
16284
+ }
16285
+
16286
+ .console-page-sidebar-footer {
16287
+ border-top: 1px solid var(--color-outline-variant);
16288
+ }
16289
+
16290
+ .console-page-main {
16291
+ grid-area: main;
16292
+ min-width: 0;
16293
+ overflow: auto;
16294
+ padding: clamp(1rem, 4cqi, 2.5rem);
16295
+ background-color: var(--color-surface);
16296
+ }
16297
+
16298
+ .console-page-nav-label {
16299
+ overflow: hidden;
16300
+ text-overflow: ellipsis;
16301
+ white-space: nowrap;
16302
+ }
16303
+
16304
+ .console-page-sidebar-toggle {
16305
+ display: none;
16306
+ }
16307
+
16308
+ .console-page-menu-trigger {
16309
+ display: inline-flex;
16310
+ }
16311
+
16312
+ .console-page-mobile-menu {
16313
+ max-width: min(20rem, calc(100cqi - 2rem));
16314
+ }
16315
+
16316
+ @container console-page (min-width: 48rem) {
16317
+ .console-page-frame {
16318
+ grid-template-areas:
16319
+ "appbar appbar"
16320
+ "sidebar main";
16321
+ grid-template-columns: var(--console-page-sidebar-width) minmax(0, 1fr);
16322
+ }
16323
+
16324
+ .console-page-sidebar {
16325
+ display: flex;
16326
+ flex-direction: column;
16327
+ }
16328
+
16329
+ .console-page-sidebar-toggle {
16330
+ display: inline-flex;
16331
+ }
16332
+
16333
+ .console-page-menu-trigger {
16334
+ display: none;
16335
+ }
16336
+
16337
+ .console-page-mobile-menu {
16338
+ display: none;
16339
+ }
16340
+
16341
+ .console-page-sidebar-compact .console-page-frame {
16342
+ grid-template-columns: var(--console-page-sidebar-compact-width) minmax(0, 1fr);
16343
+ }
16344
+
16345
+ .console-page-sidebar-compact .console-page-nav-label {
16346
+ position: absolute;
16347
+ width: 1px;
16348
+ height: 1px;
16349
+ padding: 0;
16350
+ margin: -1px;
16351
+ overflow: hidden;
16352
+ clip: rect(0, 0, 0, 0);
16353
+ white-space: nowrap;
16354
+ border: 0;
16355
+ }
16356
+
16357
+ .console-page-sidebar-compact .console-page-sidebar-header,
16358
+ .console-page-sidebar-compact .console-page-sidebar-footer {
16359
+ justify-content: center;
16360
+ padding-inline: 0.75rem;
16361
+ }
16362
+
16363
+ .console-page-sidebar-compact .console-page-sidebar-body :is(.nested-menu li > a, .nested-menu li > button, .nested-menu summary) {
16364
+ justify-content: center;
16365
+ padding-inline: 0.75rem;
16366
+ }
16367
+
16368
+ .console-page-sidebar-compact .console-page-sidebar-body .drawer-item {
16369
+ justify-content: center;
16370
+ padding-inline: 0.75rem;
16371
+ }
16372
+
16373
+ .console-page-sidebar-compact .console-page-sidebar-body :is(.nested-menu-title, details > ul, summary::after) {
16374
+ display: none;
16375
+ }
16376
+
16377
+ .console-page-sidebar-hidden .console-page-frame {
16378
+ grid-template-areas:
16379
+ "appbar"
16380
+ "main";
16381
+ grid-template-columns: minmax(0, 1fr);
16382
+ }
16383
+
16384
+ .console-page-sidebar-hidden .console-page-sidebar {
16385
+ display: none;
16386
+ }
16387
+ }
16388
+
16389
+ @media (prefers-reduced-motion: reduce) {
16390
+ .console-page-frame,
16391
+ .console-page-sidebar {
16392
+ transition: none;
16393
+ }
16394
+ }
16395
+ }
16396
+
16155
16397
  /**
16156
16398
  * Divider Component Styles
16157
16399
  * DuskMoonUI - Material Design 3 inspired divider system
@@ -16527,6 +16769,182 @@ html {
16527
16769
  }
16528
16770
  }
16529
16771
 
16772
+ /**
16773
+ * Home Page Layout
16774
+ * App-bar-led public application shell driven by its containing width.
16775
+ */
16776
+
16777
+ @layer components {
16778
+ .home-page {
16779
+ container-type: inline-size;
16780
+ container-name: home-page;
16781
+ width: 100%;
16782
+ min-width: 0;
16783
+ min-height: var(--home-page-min-height, 100dvh);
16784
+ background-color: var(--color-surface);
16785
+ color: var(--color-on-surface);
16786
+ }
16787
+
16788
+ .home-page-frame {
16789
+ display: grid;
16790
+ min-height: inherit;
16791
+ grid-template-rows: auto minmax(0, 1fr) auto;
16792
+ }
16793
+
16794
+ .home-page-header {
16795
+ z-index: 10;
16796
+ }
16797
+
16798
+ .home-page-nav {
16799
+ display: none;
16800
+ align-items: center;
16801
+ gap: 0.25rem;
16802
+ }
16803
+
16804
+ .home-page-actions {
16805
+ display: none;
16806
+ align-items: center;
16807
+ gap: 0.25rem;
16808
+ }
16809
+
16810
+ .home-page-menu-trigger {
16811
+ display: inline-flex;
16812
+ }
16813
+
16814
+ .home-page-mobile-menu {
16815
+ max-width: min(20rem, calc(100cqi - 2rem));
16816
+ }
16817
+
16818
+ .home-page-main {
16819
+ min-width: 0;
16820
+ }
16821
+
16822
+ .home-page-content {
16823
+ width: min(100%, 80rem);
16824
+ margin-inline: auto;
16825
+ padding: clamp(1rem, 5cqi, 3rem);
16826
+ }
16827
+
16828
+ .home-page-hero {
16829
+ display: grid;
16830
+ align-items: center;
16831
+ grid-template-columns: minmax(0, 1fr);
16832
+ gap: clamp(2rem, 5cqi, 4rem);
16833
+ }
16834
+
16835
+ .home-page-footer {
16836
+ border-top: 1px solid var(--color-outline-variant);
16837
+ background-color: var(--color-surface-container-low);
16838
+ }
16839
+
16840
+ @container home-page (min-width: 48rem) {
16841
+ .home-page-nav {
16842
+ display: flex;
16843
+ }
16844
+
16845
+ .home-page-actions {
16846
+ display: flex;
16847
+ }
16848
+
16849
+ .home-page-menu-trigger {
16850
+ display: none;
16851
+ }
16852
+
16853
+ .home-page-mobile-menu {
16854
+ display: none;
16855
+ }
16856
+
16857
+ .home-page-content {
16858
+ padding-inline: clamp(2rem, 5cqi, 5rem);
16859
+ }
16860
+
16861
+ .home-page-hero {
16862
+ grid-template-columns: minmax(0, 1fr) minmax(18rem, 0.8fr);
16863
+ }
16864
+ }
16865
+ }
16866
+
16867
+ /**
16868
+ * Sign Page Layout
16869
+ * Responsive authentication shell driven by its containing width.
16870
+ */
16871
+
16872
+ @layer components {
16873
+ .sign-page {
16874
+ container-type: inline-size;
16875
+ container-name: sign-page;
16876
+ width: 100%;
16877
+ min-width: 0;
16878
+ min-height: var(--sign-page-min-height, 100dvh);
16879
+ overflow: hidden;
16880
+ background-color: var(--color-surface);
16881
+ color: var(--color-on-surface);
16882
+ }
16883
+
16884
+ .sign-page-frame {
16885
+ display: grid;
16886
+ min-height: inherit;
16887
+ grid-template-columns: minmax(0, 1fr);
16888
+ }
16889
+
16890
+ .sign-page-aside {
16891
+ display: none;
16892
+ position: relative;
16893
+ isolation: isolate;
16894
+ overflow: hidden;
16895
+ padding: clamp(2rem, 6cqi, 5rem);
16896
+ background-color: var(--color-primary-container);
16897
+ color: var(--color-on-primary-container);
16898
+ }
16899
+
16900
+ .sign-page-aside::before,
16901
+ .sign-page-aside::after {
16902
+ content: "";
16903
+ position: absolute;
16904
+ z-index: -1;
16905
+ border-radius: var(--radius-full);
16906
+ background: color-mix(in oklch, var(--color-tertiary) 24%, transparent);
16907
+ filter: blur(1px);
16908
+ }
16909
+
16910
+ .sign-page-aside::before {
16911
+ width: 22rem;
16912
+ height: 22rem;
16913
+ inset: -8rem -6rem auto auto;
16914
+ }
16915
+
16916
+ .sign-page-aside::after {
16917
+ width: 15rem;
16918
+ height: 15rem;
16919
+ inset: auto auto -5rem -4rem;
16920
+ background: color-mix(in oklch, var(--color-secondary) 22%, transparent);
16921
+ }
16922
+
16923
+ .sign-page-main {
16924
+ display: grid;
16925
+ place-items: center;
16926
+ min-width: 0;
16927
+ padding: clamp(1rem, 6cqi, 4rem);
16928
+ background-color: var(--color-surface);
16929
+ }
16930
+
16931
+ .sign-page-content {
16932
+ width: min(100%, 30rem);
16933
+ }
16934
+
16935
+ @container sign-page (min-width: 48rem) {
16936
+ .sign-page-frame {
16937
+ grid-template-columns: minmax(20rem, 1.15fr) minmax(24rem, 0.85fr);
16938
+ }
16939
+
16940
+ .sign-page-aside {
16941
+ display: flex;
16942
+ flex-direction: column;
16943
+ justify-content: space-between;
16944
+ }
16945
+ }
16946
+ }
16947
+
16530
16948
 
16531
16949
  /* ============================================
16532
16950
  * NAVIGATION COMPONENTS
@@ -17167,6 +17585,26 @@ html {
17167
17585
  visibility: visible;
17168
17586
  }
17169
17587
 
17588
+ /* Native surfaces keep the browser's closed state and reset UA dialog/popover geometry. */
17589
+ :where(.drawer[popover], dialog.drawer) {
17590
+ inset: auto;
17591
+ margin: 0;
17592
+ width: auto;
17593
+ height: auto;
17594
+ padding: 0;
17595
+ border: 0;
17596
+ color: var(--color-on-surface);
17597
+ max-width: none;
17598
+ max-height: none;
17599
+ overflow: auto;
17600
+ box-sizing: border-box;
17601
+ }
17602
+
17603
+ .drawer[popover]:not(:popover-open),
17604
+ dialog.drawer:not([open]) {
17605
+ display: none;
17606
+ }
17607
+
17170
17608
  /* Base Drawer */
17171
17609
  .drawer {
17172
17610
  position: fixed;
@@ -17505,8 +17943,65 @@ html {
17505
17943
  border-radius: 0;
17506
17944
  }
17507
17945
 
17946
+ /* Native state overrides legacy transforms without requiring class toggles. */
17947
+ .drawer[popover],
17948
+ dialog.drawer {
17949
+ transition: transform 300ms ease-out, opacity 300ms ease-out,
17950
+ display 300ms allow-discrete, overlay 300ms allow-discrete;
17951
+ opacity: 0;
17952
+ }
17953
+
17954
+ .drawer[popover]:popover-open,
17955
+ dialog.drawer[open] {
17956
+ display: flex;
17957
+ transform: translate(0, 0);
17958
+ opacity: 1;
17959
+ }
17960
+
17961
+ dialog.drawer::backdrop {
17962
+ background-color: color-mix(in srgb, var(--color-scrim) 50%, transparent);
17963
+ opacity: 0;
17964
+ transition: opacity 300ms ease-out, display 300ms allow-discrete,
17965
+ overlay 300ms allow-discrete;
17966
+ }
17967
+
17968
+ dialog.drawer[open]::backdrop {
17969
+ opacity: 1;
17970
+ }
17971
+
17972
+ @starting-style {
17973
+ .drawer[popover]:popover-open,
17974
+ dialog.drawer[open],
17975
+ dialog.drawer[open]::backdrop {
17976
+ opacity: 0;
17977
+ }
17978
+
17979
+ .drawer-left[popover]:popover-open,
17980
+ dialog.drawer-left[open] {
17981
+ transform: translateX(-100%);
17982
+ }
17983
+
17984
+ .drawer-right[popover]:popover-open,
17985
+ dialog.drawer-right[open] {
17986
+ transform: translateX(100%);
17987
+ }
17988
+
17989
+ .drawer-top[popover]:popover-open,
17990
+ dialog.drawer-top[open] {
17991
+ transform: translateY(-100%);
17992
+ }
17993
+
17994
+ .drawer-bottom[popover]:popover-open,
17995
+ dialog.drawer-bottom[open] {
17996
+ transform: translateY(100%);
17997
+ }
17998
+ }
17999
+
17508
18000
  /* Reduce Motion */
17509
18001
  @media (prefers-reduced-motion: reduce) {
18002
+ .drawer[popover],
18003
+ dialog.drawer,
18004
+ dialog.drawer::backdrop,
17510
18005
  .drawer,
17511
18006
  .drawer-backdrop,
17512
18007
  .drawer-close,
@@ -18370,6 +18865,26 @@ html {
18370
18865
  visibility: visible;
18371
18866
  }
18372
18867
 
18868
+ /* Native surfaces keep the browser's closed state and reset UA dialog/popover geometry. */
18869
+ :where(.bottomsheet[popover], dialog.bottomsheet) {
18870
+ inset: auto;
18871
+ margin: 0;
18872
+ width: auto;
18873
+ height: auto;
18874
+ padding: 0;
18875
+ border: 0;
18876
+ color: var(--color-on-surface);
18877
+ max-width: none;
18878
+ max-height: none;
18879
+ overflow: auto;
18880
+ box-sizing: border-box;
18881
+ }
18882
+
18883
+ .bottomsheet[popover]:not(:popover-open),
18884
+ dialog.bottomsheet:not([open]) {
18885
+ display: none;
18886
+ }
18887
+
18373
18888
  /* Base Bottom Sheet */
18374
18889
  .bottomsheet {
18375
18890
  position: fixed;
@@ -18671,8 +19186,57 @@ html {
18671
19186
  }
18672
19187
  }
18673
19188
 
19189
+ /* Native state overrides legacy transforms without requiring class toggles. */
19190
+ .bottomsheet[popover],
19191
+ dialog.bottomsheet {
19192
+ transition: transform 300ms ease-out, opacity 300ms ease-out,
19193
+ display 300ms allow-discrete, overlay 300ms allow-discrete;
19194
+ opacity: 0;
19195
+ }
19196
+
19197
+ .bottomsheet[popover]:popover-open,
19198
+ dialog.bottomsheet[open] {
19199
+ display: flex;
19200
+ transform: translate(0, 0);
19201
+ opacity: 1;
19202
+ }
19203
+
19204
+ dialog.bottomsheet::backdrop {
19205
+ background-color: color-mix(in srgb, var(--color-scrim) 50%, transparent);
19206
+ opacity: 0;
19207
+ transition: opacity 300ms ease-out, display 300ms allow-discrete,
19208
+ overlay 300ms allow-discrete;
19209
+ }
19210
+
19211
+ dialog.bottomsheet[open]::backdrop {
19212
+ opacity: 1;
19213
+ }
19214
+
19215
+ @starting-style {
19216
+ .bottomsheet[popover]:popover-open,
19217
+ dialog.bottomsheet[open],
19218
+ dialog.bottomsheet[open]::backdrop {
19219
+ opacity: 0;
19220
+ }
19221
+
19222
+ .bottomsheet[popover]:popover-open,
19223
+ dialog.bottomsheet[open] {
19224
+ transform: translateY(100%);
19225
+ }
19226
+
19227
+ @media (min-width: 768px) {
19228
+ .bottomsheet-responsive[popover]:popover-open,
19229
+ dialog.bottomsheet-responsive[open] {
19230
+ transform: translateX(100%);
19231
+ }
19232
+ }
19233
+ }
19234
+
18674
19235
  /* Reduce Motion */
18675
19236
  @media (prefers-reduced-motion: reduce) {
19237
+ .bottomsheet[popover],
19238
+ dialog.bottomsheet,
19239
+ dialog.bottomsheet::backdrop,
18676
19240
  .bottomsheet,
18677
19241
  .bottomsheet-backdrop,
18678
19242
  .bottomsheet-close,