@duskmoon-dev/core 1.19.0 → 1.19.2

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.
@@ -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 {
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 {
@@ -17522,6 +17585,26 @@ html {
17522
17585
  visibility: visible;
17523
17586
  }
17524
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
+
17525
17608
  /* Base Drawer */
17526
17609
  .drawer {
17527
17610
  position: fixed;
@@ -17860,8 +17943,65 @@ html {
17860
17943
  border-radius: 0;
17861
17944
  }
17862
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
+
17863
18000
  /* Reduce Motion */
17864
18001
  @media (prefers-reduced-motion: reduce) {
18002
+ .drawer[popover],
18003
+ dialog.drawer,
18004
+ dialog.drawer::backdrop,
17865
18005
  .drawer,
17866
18006
  .drawer-backdrop,
17867
18007
  .drawer-close,
@@ -18725,6 +18865,26 @@ html {
18725
18865
  visibility: visible;
18726
18866
  }
18727
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
+
18728
18888
  /* Base Bottom Sheet */
18729
18889
  .bottomsheet {
18730
18890
  position: fixed;
@@ -19026,8 +19186,57 @@ html {
19026
19186
  }
19027
19187
  }
19028
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
+
19029
19235
  /* Reduce Motion */
19030
19236
  @media (prefers-reduced-motion: reduce) {
19237
+ .bottomsheet[popover],
19238
+ dialog.bottomsheet,
19239
+ dialog.bottomsheet::backdrop,
19031
19240
  .bottomsheet,
19032
19241
  .bottomsheet-backdrop,
19033
19242
  .bottomsheet-close,