@duskmoon-dev/core 1.3.2 → 1.5.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.
- package/dist/components/appbar.css +186 -1
- package/dist/components/checkbox.css +2 -1
- package/dist/components/index.css +1046 -30
- package/dist/components/popover.css +329 -3
- package/dist/components/textarea.css +212 -16
- package/dist/components/tree-select.css +36 -3
- package/dist/esm/components/appbar.js +186 -1
- package/dist/esm/components/checkbox.js +2 -1
- package/dist/esm/components/popover.js +329 -3
- package/dist/esm/components/textarea.js +212 -16
- package/dist/esm/components/tree-select.js +36 -3
- package/dist/index.css +1046 -30
- package/package.json +1 -1
package/dist/index.css
CHANGED
|
@@ -5057,7 +5057,8 @@ html {
|
|
|
5057
5057
|
border-color: var(--color-on-surface);
|
|
5058
5058
|
}
|
|
5059
5059
|
|
|
5060
|
-
.checkbox:checked:hover:not(:disabled)
|
|
5060
|
+
.checkbox:checked:hover:not(:disabled),
|
|
5061
|
+
.checkbox:indeterminate:hover:not(:disabled) {
|
|
5061
5062
|
background-color: color-mix(in oklch, var(--checkbox-color), black 10%);
|
|
5062
5063
|
border-color: color-mix(in oklch, var(--checkbox-color), black 10%);
|
|
5063
5064
|
}
|
|
@@ -8842,7 +8843,84 @@ html {
|
|
|
8842
8843
|
*/
|
|
8843
8844
|
|
|
8844
8845
|
@layer components {
|
|
8845
|
-
/*
|
|
8846
|
+
/* ============================================
|
|
8847
|
+
* TEXTAREA CONTAINER
|
|
8848
|
+
* ============================================ */
|
|
8849
|
+
|
|
8850
|
+
.textarea-container {
|
|
8851
|
+
position: relative;
|
|
8852
|
+
display: flex;
|
|
8853
|
+
flex-direction: column;
|
|
8854
|
+
gap: 0.25rem;
|
|
8855
|
+
width: 100%;
|
|
8856
|
+
}
|
|
8857
|
+
|
|
8858
|
+
/* ============================================
|
|
8859
|
+
* TEXTAREA LABEL
|
|
8860
|
+
* ============================================ */
|
|
8861
|
+
|
|
8862
|
+
.textarea-label {
|
|
8863
|
+
display: block;
|
|
8864
|
+
font-size: 0.875rem;
|
|
8865
|
+
font-weight: 500;
|
|
8866
|
+
line-height: 1.25rem;
|
|
8867
|
+
color: var(--color-on-surface);
|
|
8868
|
+
margin-bottom: 0.25rem;
|
|
8869
|
+
}
|
|
8870
|
+
|
|
8871
|
+
/* Floating Label */
|
|
8872
|
+
.textarea-label-floating {
|
|
8873
|
+
position: absolute;
|
|
8874
|
+
top: 0.75rem;
|
|
8875
|
+
left: 1rem;
|
|
8876
|
+
font-size: 1rem;
|
|
8877
|
+
font-weight: 400;
|
|
8878
|
+
color: var(--color-on-surface-variant);
|
|
8879
|
+
pointer-events: none;
|
|
8880
|
+
transition: all 150ms ease-in-out;
|
|
8881
|
+
transform-origin: left top;
|
|
8882
|
+
z-index: 1;
|
|
8883
|
+
}
|
|
8884
|
+
|
|
8885
|
+
/* Floating label active state - when textarea has content or focus */
|
|
8886
|
+
.textarea:focus ~ .textarea-label-floating,
|
|
8887
|
+
.textarea:not(:placeholder-shown) ~ .textarea-label-floating {
|
|
8888
|
+
top: -0.5rem;
|
|
8889
|
+
left: 0.75rem;
|
|
8890
|
+
font-size: 0.75rem;
|
|
8891
|
+
font-weight: 500;
|
|
8892
|
+
color: var(--color-primary);
|
|
8893
|
+
background-color: var(--color-surface);
|
|
8894
|
+
padding: 0 0.25rem;
|
|
8895
|
+
}
|
|
8896
|
+
|
|
8897
|
+
/* Floating label for filled variant */
|
|
8898
|
+
.textarea-filled ~ .textarea-label-floating {
|
|
8899
|
+
background-color: transparent;
|
|
8900
|
+
}
|
|
8901
|
+
|
|
8902
|
+
.textarea-filled:focus ~ .textarea-label-floating,
|
|
8903
|
+
.textarea-filled:not(:placeholder-shown) ~ .textarea-label-floating {
|
|
8904
|
+
top: 0.25rem;
|
|
8905
|
+
left: 0.75rem;
|
|
8906
|
+
background-color: transparent;
|
|
8907
|
+
}
|
|
8908
|
+
|
|
8909
|
+
/* ============================================
|
|
8910
|
+
* HELPER TEXT
|
|
8911
|
+
* ============================================ */
|
|
8912
|
+
|
|
8913
|
+
.textarea-helper {
|
|
8914
|
+
font-size: 0.75rem;
|
|
8915
|
+
line-height: 1rem;
|
|
8916
|
+
color: var(--color-on-surface-variant);
|
|
8917
|
+
margin-top: 0.25rem;
|
|
8918
|
+
}
|
|
8919
|
+
|
|
8920
|
+
/* ============================================
|
|
8921
|
+
* BASE TEXTAREA
|
|
8922
|
+
* ============================================ */
|
|
8923
|
+
|
|
8846
8924
|
.textarea {
|
|
8847
8925
|
display: block;
|
|
8848
8926
|
width: 100%;
|
|
@@ -8890,6 +8968,15 @@ html {
|
|
|
8890
8968
|
cursor: default;
|
|
8891
8969
|
}
|
|
8892
8970
|
|
|
8971
|
+
/* Full Width */
|
|
8972
|
+
.textarea-full {
|
|
8973
|
+
width: 100%;
|
|
8974
|
+
}
|
|
8975
|
+
|
|
8976
|
+
/* ============================================
|
|
8977
|
+
* VARIANTS
|
|
8978
|
+
* ============================================ */
|
|
8979
|
+
|
|
8893
8980
|
/* Filled Variant */
|
|
8894
8981
|
.textarea-filled {
|
|
8895
8982
|
background-color: var(--color-surface-container);
|
|
@@ -8932,23 +9019,68 @@ html {
|
|
|
8932
9019
|
box-shadow: none;
|
|
8933
9020
|
}
|
|
8934
9021
|
|
|
8935
|
-
/*
|
|
9022
|
+
/* ============================================
|
|
9023
|
+
* COLOR VARIANTS
|
|
9024
|
+
* ============================================ */
|
|
9025
|
+
|
|
9026
|
+
/* Primary */
|
|
9027
|
+
.textarea-primary {
|
|
9028
|
+
border-color: var(--color-primary);
|
|
9029
|
+
}
|
|
9030
|
+
|
|
8936
9031
|
.textarea-primary:focus-visible {
|
|
8937
9032
|
border-color: var(--color-primary);
|
|
8938
9033
|
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
|
|
8939
9034
|
}
|
|
8940
9035
|
|
|
9036
|
+
.textarea-filled.textarea-primary {
|
|
9037
|
+
border-bottom-color: var(--color-primary);
|
|
9038
|
+
}
|
|
9039
|
+
|
|
9040
|
+
.textarea-filled.textarea-primary:focus-visible {
|
|
9041
|
+
border-bottom-color: var(--color-primary);
|
|
9042
|
+
}
|
|
9043
|
+
|
|
9044
|
+
/* Secondary */
|
|
9045
|
+
.textarea-secondary {
|
|
9046
|
+
border-color: var(--color-secondary);
|
|
9047
|
+
}
|
|
9048
|
+
|
|
8941
9049
|
.textarea-secondary:focus-visible {
|
|
8942
9050
|
border-color: var(--color-secondary);
|
|
8943
9051
|
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-secondary) 10%, transparent);
|
|
8944
9052
|
}
|
|
8945
9053
|
|
|
9054
|
+
.textarea-filled.textarea-secondary {
|
|
9055
|
+
border-bottom-color: var(--color-secondary);
|
|
9056
|
+
}
|
|
9057
|
+
|
|
9058
|
+
.textarea-filled.textarea-secondary:focus-visible {
|
|
9059
|
+
border-bottom-color: var(--color-secondary);
|
|
9060
|
+
}
|
|
9061
|
+
|
|
9062
|
+
/* Tertiary */
|
|
9063
|
+
.textarea-tertiary {
|
|
9064
|
+
border-color: var(--color-tertiary);
|
|
9065
|
+
}
|
|
9066
|
+
|
|
8946
9067
|
.textarea-tertiary:focus-visible {
|
|
8947
9068
|
border-color: var(--color-tertiary);
|
|
8948
9069
|
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-tertiary) 10%, transparent);
|
|
8949
9070
|
}
|
|
8950
9071
|
|
|
8951
|
-
|
|
9072
|
+
.textarea-filled.textarea-tertiary {
|
|
9073
|
+
border-bottom-color: var(--color-tertiary);
|
|
9074
|
+
}
|
|
9075
|
+
|
|
9076
|
+
.textarea-filled.textarea-tertiary:focus-visible {
|
|
9077
|
+
border-bottom-color: var(--color-tertiary);
|
|
9078
|
+
}
|
|
9079
|
+
|
|
9080
|
+
/* ============================================
|
|
9081
|
+
* SEMANTIC COLORS
|
|
9082
|
+
* ============================================ */
|
|
9083
|
+
|
|
8952
9084
|
.textarea-error {
|
|
8953
9085
|
border-color: var(--color-error);
|
|
8954
9086
|
}
|
|
@@ -8958,6 +9090,10 @@ html {
|
|
|
8958
9090
|
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
|
|
8959
9091
|
}
|
|
8960
9092
|
|
|
9093
|
+
.textarea-filled.textarea-error {
|
|
9094
|
+
border-bottom-color: var(--color-error);
|
|
9095
|
+
}
|
|
9096
|
+
|
|
8961
9097
|
.textarea-success {
|
|
8962
9098
|
border-color: var(--color-success);
|
|
8963
9099
|
}
|
|
@@ -8967,6 +9103,10 @@ html {
|
|
|
8967
9103
|
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 10%, transparent);
|
|
8968
9104
|
}
|
|
8969
9105
|
|
|
9106
|
+
.textarea-filled.textarea-success {
|
|
9107
|
+
border-bottom-color: var(--color-success);
|
|
9108
|
+
}
|
|
9109
|
+
|
|
8970
9110
|
.textarea-warning {
|
|
8971
9111
|
border-color: var(--color-warning);
|
|
8972
9112
|
}
|
|
@@ -8976,7 +9116,14 @@ html {
|
|
|
8976
9116
|
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 10%, transparent);
|
|
8977
9117
|
}
|
|
8978
9118
|
|
|
8979
|
-
|
|
9119
|
+
.textarea-filled.textarea-warning {
|
|
9120
|
+
border-bottom-color: var(--color-warning);
|
|
9121
|
+
}
|
|
9122
|
+
|
|
9123
|
+
/* ============================================
|
|
9124
|
+
* SIZE VARIANTS
|
|
9125
|
+
* ============================================ */
|
|
9126
|
+
|
|
8980
9127
|
.textarea-sm {
|
|
8981
9128
|
min-height: 4rem;
|
|
8982
9129
|
padding: 0.5rem 0.75rem;
|
|
@@ -8993,11 +9140,18 @@ html {
|
|
|
8993
9140
|
border-radius: 0.625rem;
|
|
8994
9141
|
}
|
|
8995
9142
|
|
|
8996
|
-
/*
|
|
9143
|
+
/* ============================================
|
|
9144
|
+
* RESIZE OPTIONS
|
|
9145
|
+
* ============================================ */
|
|
9146
|
+
|
|
8997
9147
|
.textarea-resize-none {
|
|
8998
9148
|
resize: none;
|
|
8999
9149
|
}
|
|
9000
9150
|
|
|
9151
|
+
.textarea-resize-vertical {
|
|
9152
|
+
resize: vertical;
|
|
9153
|
+
}
|
|
9154
|
+
|
|
9001
9155
|
.textarea-resize-horizontal {
|
|
9002
9156
|
resize: horizontal;
|
|
9003
9157
|
}
|
|
@@ -9006,19 +9160,21 @@ html {
|
|
|
9006
9160
|
resize: both;
|
|
9007
9161
|
}
|
|
9008
9162
|
|
|
9009
|
-
/*
|
|
9163
|
+
/* ============================================
|
|
9164
|
+
* AUTO-RESIZE (requires JS)
|
|
9165
|
+
* ============================================ */
|
|
9166
|
+
|
|
9167
|
+
.textarea-auto-resize,
|
|
9010
9168
|
.textarea-autosize {
|
|
9011
9169
|
resize: none;
|
|
9012
9170
|
overflow: hidden;
|
|
9171
|
+
min-height: 3rem;
|
|
9172
|
+
field-sizing: content; /* Modern CSS - auto-grows without JS in supported browsers */
|
|
9013
9173
|
}
|
|
9014
9174
|
|
|
9015
|
-
/*
|
|
9016
|
-
|
|
9017
|
-
|
|
9018
|
-
display: flex;
|
|
9019
|
-
flex-direction: column;
|
|
9020
|
-
gap: 0.25rem;
|
|
9021
|
-
}
|
|
9175
|
+
/* ============================================
|
|
9176
|
+
* CHARACTER COUNTER
|
|
9177
|
+
* ============================================ */
|
|
9022
9178
|
|
|
9023
9179
|
.textarea-counter {
|
|
9024
9180
|
font-size: 0.75rem;
|
|
@@ -9027,15 +9183,331 @@ html {
|
|
|
9027
9183
|
text-align: right;
|
|
9028
9184
|
}
|
|
9029
9185
|
|
|
9030
|
-
.textarea-counter-error
|
|
9186
|
+
.textarea-counter-error,
|
|
9187
|
+
.textarea-counter-exceeded {
|
|
9188
|
+
color: var(--color-error);
|
|
9189
|
+
}
|
|
9190
|
+
|
|
9191
|
+
/* ============================================
|
|
9192
|
+
* CONTAINER STATES
|
|
9193
|
+
* ============================================ */
|
|
9194
|
+
|
|
9195
|
+
.textarea-container-error .textarea-label {
|
|
9196
|
+
color: var(--color-error);
|
|
9197
|
+
}
|
|
9198
|
+
|
|
9199
|
+
.textarea-container-error .textarea-helper {
|
|
9031
9200
|
color: var(--color-error);
|
|
9032
9201
|
}
|
|
9033
9202
|
|
|
9203
|
+
.textarea-container-error .textarea-label-floating {
|
|
9204
|
+
color: var(--color-error);
|
|
9205
|
+
}
|
|
9206
|
+
|
|
9207
|
+
.textarea-container-error .textarea:focus ~ .textarea-label-floating {
|
|
9208
|
+
color: var(--color-error);
|
|
9209
|
+
}
|
|
9210
|
+
|
|
9211
|
+
.textarea-container-success .textarea-label {
|
|
9212
|
+
color: var(--color-success);
|
|
9213
|
+
}
|
|
9214
|
+
|
|
9215
|
+
.textarea-container-success .textarea-helper {
|
|
9216
|
+
color: var(--color-success);
|
|
9217
|
+
}
|
|
9218
|
+
|
|
9219
|
+
.textarea-container-success .textarea-label-floating {
|
|
9220
|
+
color: var(--color-success);
|
|
9221
|
+
}
|
|
9222
|
+
|
|
9223
|
+
.textarea-container-success .textarea:focus ~ .textarea-label-floating {
|
|
9224
|
+
color: var(--color-success);
|
|
9225
|
+
}
|
|
9226
|
+
|
|
9227
|
+
/* ============================================
|
|
9228
|
+
* REDUCE MOTION
|
|
9229
|
+
* ============================================ */
|
|
9230
|
+
|
|
9231
|
+
@media (prefers-reduced-motion: reduce) {
|
|
9232
|
+
.textarea,
|
|
9233
|
+
.textarea-label-floating {
|
|
9234
|
+
transition: none;
|
|
9235
|
+
}
|
|
9236
|
+
}
|
|
9237
|
+
}
|
|
9238
|
+
|
|
9239
|
+
/**
|
|
9240
|
+
* Toggle Button Component Styles
|
|
9241
|
+
* DuskMoonUI - Material Design 3 inspired toggle button
|
|
9242
|
+
* Used for selecting between multiple options or toggling states
|
|
9243
|
+
*/
|
|
9244
|
+
|
|
9245
|
+
@layer components {
|
|
9246
|
+
/* Base toggle button */
|
|
9247
|
+
.toggle-btn {
|
|
9248
|
+
display: inline-flex;
|
|
9249
|
+
align-items: center;
|
|
9250
|
+
justify-content: center;
|
|
9251
|
+
gap: 0.5rem;
|
|
9252
|
+
padding: 0.625rem 1rem;
|
|
9253
|
+
font-size: 0.875rem;
|
|
9254
|
+
font-weight: 500;
|
|
9255
|
+
line-height: 1.25rem;
|
|
9256
|
+
color: var(--color-on-surface-variant);
|
|
9257
|
+
background-color: transparent;
|
|
9258
|
+
border: 1px solid var(--color-outline);
|
|
9259
|
+
border-radius: 0.5rem;
|
|
9260
|
+
cursor: pointer;
|
|
9261
|
+
transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
|
|
9262
|
+
user-select: none;
|
|
9263
|
+
}
|
|
9264
|
+
|
|
9265
|
+
/* Hover state */
|
|
9266
|
+
.toggle-btn:hover:not(:disabled) {
|
|
9267
|
+
background-color: color-mix(in oklch, var(--color-surface-variant) 50%, transparent);
|
|
9268
|
+
border-color: var(--color-outline-variant);
|
|
9269
|
+
}
|
|
9270
|
+
|
|
9271
|
+
/* Active/Selected state */
|
|
9272
|
+
.toggle-btn-active,
|
|
9273
|
+
.toggle-btn.active {
|
|
9274
|
+
color: var(--color-on-primary-container);
|
|
9275
|
+
background-color: var(--color-primary-container);
|
|
9276
|
+
border-color: var(--color-primary);
|
|
9277
|
+
}
|
|
9278
|
+
|
|
9279
|
+
.toggle-btn-active:hover:not(:disabled),
|
|
9280
|
+
.toggle-btn.active:hover:not(:disabled) {
|
|
9281
|
+
background-color: color-mix(in oklch, var(--color-primary-container) 90%, transparent);
|
|
9282
|
+
}
|
|
9283
|
+
|
|
9284
|
+
/* Secondary variant */
|
|
9285
|
+
.toggle-btn-secondary.toggle-btn-active,
|
|
9286
|
+
.toggle-btn-secondary.active {
|
|
9287
|
+
color: var(--color-on-secondary-container);
|
|
9288
|
+
background-color: var(--color-secondary-container);
|
|
9289
|
+
border-color: var(--color-secondary);
|
|
9290
|
+
}
|
|
9291
|
+
|
|
9292
|
+
/* Tertiary variant */
|
|
9293
|
+
.toggle-btn-tertiary.toggle-btn-active,
|
|
9294
|
+
.toggle-btn-tertiary.active {
|
|
9295
|
+
color: var(--color-on-tertiary-container);
|
|
9296
|
+
background-color: var(--color-tertiary-container);
|
|
9297
|
+
border-color: var(--color-tertiary);
|
|
9298
|
+
}
|
|
9299
|
+
|
|
9300
|
+
/* Focus state */
|
|
9301
|
+
.toggle-btn:focus-visible {
|
|
9302
|
+
outline: 2px solid var(--color-primary);
|
|
9303
|
+
outline-offset: 2px;
|
|
9304
|
+
}
|
|
9305
|
+
|
|
9306
|
+
/* Disabled state */
|
|
9307
|
+
.toggle-btn:disabled,
|
|
9308
|
+
.toggle-btn-disabled {
|
|
9309
|
+
opacity: 0.38;
|
|
9310
|
+
cursor: not-allowed;
|
|
9311
|
+
pointer-events: none;
|
|
9312
|
+
}
|
|
9313
|
+
|
|
9314
|
+
/* Size variants */
|
|
9315
|
+
.toggle-btn-sm {
|
|
9316
|
+
padding: 0.375rem 0.75rem;
|
|
9317
|
+
font-size: 0.8125rem;
|
|
9318
|
+
gap: 0.375rem;
|
|
9319
|
+
}
|
|
9320
|
+
|
|
9321
|
+
.toggle-btn-lg {
|
|
9322
|
+
padding: 0.75rem 1.25rem;
|
|
9323
|
+
font-size: 1rem;
|
|
9324
|
+
gap: 0.625rem;
|
|
9325
|
+
}
|
|
9326
|
+
|
|
9327
|
+
/* Toggle button group */
|
|
9328
|
+
.toggle-group {
|
|
9329
|
+
display: inline-flex;
|
|
9330
|
+
align-items: center;
|
|
9331
|
+
gap: 0;
|
|
9332
|
+
border: 1px solid var(--color-outline);
|
|
9333
|
+
border-radius: 0.5rem;
|
|
9334
|
+
padding: 0.25rem;
|
|
9335
|
+
background-color: color-mix(in oklch, var(--color-surface-variant) 30%, transparent);
|
|
9336
|
+
}
|
|
9337
|
+
|
|
9338
|
+
/* Toggle buttons in group */
|
|
9339
|
+
.toggle-group .toggle-btn {
|
|
9340
|
+
border: none;
|
|
9341
|
+
border-radius: 0.375rem;
|
|
9342
|
+
margin: 0;
|
|
9343
|
+
}
|
|
9344
|
+
|
|
9345
|
+
.toggle-group .toggle-btn:not(:last-child) {
|
|
9346
|
+
margin-right: 0.125rem;
|
|
9347
|
+
}
|
|
9348
|
+
|
|
9349
|
+
/* Vertical group */
|
|
9350
|
+
.toggle-group-vertical {
|
|
9351
|
+
flex-direction: column;
|
|
9352
|
+
}
|
|
9353
|
+
|
|
9354
|
+
.toggle-group-vertical .toggle-btn:not(:last-child) {
|
|
9355
|
+
margin-right: 0;
|
|
9356
|
+
margin-bottom: 0.125rem;
|
|
9357
|
+
}
|
|
9358
|
+
|
|
9359
|
+
/* Exclusive selection (radio-like behavior) */
|
|
9360
|
+
.toggle-group-exclusive .toggle-btn {
|
|
9361
|
+
flex: 1;
|
|
9362
|
+
}
|
|
9363
|
+
|
|
9364
|
+
/* Icon-only toggle */
|
|
9365
|
+
.toggle-btn-icon-only {
|
|
9366
|
+
padding: 0.625rem;
|
|
9367
|
+
aspect-ratio: 1;
|
|
9368
|
+
}
|
|
9369
|
+
|
|
9370
|
+
.toggle-btn-icon-only.toggle-btn-sm {
|
|
9371
|
+
padding: 0.5rem;
|
|
9372
|
+
}
|
|
9373
|
+
|
|
9374
|
+
.toggle-btn-icon-only.toggle-btn-lg {
|
|
9375
|
+
padding: 0.875rem;
|
|
9376
|
+
}
|
|
9377
|
+
|
|
9378
|
+
/* With icon */
|
|
9379
|
+
.toggle-icon {
|
|
9380
|
+
width: 1.125rem;
|
|
9381
|
+
height: 1.125rem;
|
|
9382
|
+
flex-shrink: 0;
|
|
9383
|
+
}
|
|
9384
|
+
|
|
9385
|
+
/* Segmented control style */
|
|
9386
|
+
.toggle-segmented {
|
|
9387
|
+
display: inline-flex;
|
|
9388
|
+
align-items: center;
|
|
9389
|
+
gap: 0;
|
|
9390
|
+
background-color: var(--color-surface);
|
|
9391
|
+
border: 1px solid var(--color-outline-variant);
|
|
9392
|
+
border-radius: 0.5rem;
|
|
9393
|
+
padding: 0.25rem;
|
|
9394
|
+
}
|
|
9395
|
+
|
|
9396
|
+
.toggle-segmented .toggle-btn {
|
|
9397
|
+
border: none;
|
|
9398
|
+
background-color: transparent;
|
|
9399
|
+
border-radius: 0.375rem;
|
|
9400
|
+
}
|
|
9401
|
+
|
|
9402
|
+
.toggle-segmented .toggle-btn.toggle-btn-active,
|
|
9403
|
+
.toggle-segmented .toggle-btn.active {
|
|
9404
|
+
background-color: var(--color-surface-variant);
|
|
9405
|
+
border-color: transparent;
|
|
9406
|
+
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
|
|
9407
|
+
}
|
|
9408
|
+
|
|
9409
|
+
/* Chip-like toggle */
|
|
9410
|
+
.toggle-chip {
|
|
9411
|
+
border-radius: 1rem;
|
|
9412
|
+
padding: 0.5rem 1rem;
|
|
9413
|
+
}
|
|
9414
|
+
|
|
9415
|
+
.toggle-chip.toggle-btn-active,
|
|
9416
|
+
.toggle-chip.active {
|
|
9417
|
+
background-color: var(--color-primary-container);
|
|
9418
|
+
border-color: var(--color-primary-container);
|
|
9419
|
+
}
|
|
9420
|
+
|
|
9421
|
+
/* Outlined variant */
|
|
9422
|
+
.toggle-outlined {
|
|
9423
|
+
background-color: transparent;
|
|
9424
|
+
}
|
|
9425
|
+
|
|
9426
|
+
.toggle-outlined.toggle-btn-active,
|
|
9427
|
+
.toggle-outlined.active {
|
|
9428
|
+
background-color: color-mix(in oklch, var(--color-primary) 10%, transparent);
|
|
9429
|
+
}
|
|
9430
|
+
|
|
9431
|
+
/* Filled variant */
|
|
9432
|
+
.toggle-filled {
|
|
9433
|
+
background-color: var(--color-surface-variant);
|
|
9434
|
+
border: none;
|
|
9435
|
+
}
|
|
9436
|
+
|
|
9437
|
+
.toggle-filled.toggle-btn-active,
|
|
9438
|
+
.toggle-filled.active {
|
|
9439
|
+
background-color: var(--color-primary);
|
|
9440
|
+
color: var(--color-on-primary);
|
|
9441
|
+
}
|
|
9442
|
+
|
|
9443
|
+
/* With badge/indicator */
|
|
9444
|
+
.toggle-badge {
|
|
9445
|
+
position: relative;
|
|
9446
|
+
}
|
|
9447
|
+
|
|
9448
|
+
.toggle-badge::after {
|
|
9449
|
+
content: "";
|
|
9450
|
+
position: absolute;
|
|
9451
|
+
top: 0.25rem;
|
|
9452
|
+
right: 0.25rem;
|
|
9453
|
+
width: 0.5rem;
|
|
9454
|
+
height: 0.5rem;
|
|
9455
|
+
background-color: var(--color-error);
|
|
9456
|
+
border-radius: 50%;
|
|
9457
|
+
border: 2px solid var(--color-surface);
|
|
9458
|
+
}
|
|
9459
|
+
|
|
9460
|
+
/* Full width */
|
|
9461
|
+
.toggle-full {
|
|
9462
|
+
width: 100%;
|
|
9463
|
+
}
|
|
9464
|
+
|
|
9465
|
+
.toggle-group-full {
|
|
9466
|
+
width: 100%;
|
|
9467
|
+
}
|
|
9468
|
+
|
|
9469
|
+
.toggle-group-full .toggle-btn {
|
|
9470
|
+
flex: 1;
|
|
9471
|
+
}
|
|
9472
|
+
|
|
9473
|
+
/* Loading state */
|
|
9474
|
+
.toggle-loading {
|
|
9475
|
+
position: relative;
|
|
9476
|
+
pointer-events: none;
|
|
9477
|
+
}
|
|
9478
|
+
|
|
9479
|
+
.toggle-loading::after {
|
|
9480
|
+
content: "";
|
|
9481
|
+
position: absolute;
|
|
9482
|
+
top: 50%;
|
|
9483
|
+
left: 50%;
|
|
9484
|
+
width: 1rem;
|
|
9485
|
+
height: 1rem;
|
|
9486
|
+
margin-top: -0.5rem;
|
|
9487
|
+
margin-left: -0.5rem;
|
|
9488
|
+
border: 2px solid currentColor;
|
|
9489
|
+
border-top-color: transparent;
|
|
9490
|
+
border-radius: 50%;
|
|
9491
|
+
animation: toggle-spin 0.6s linear infinite;
|
|
9492
|
+
}
|
|
9493
|
+
|
|
9494
|
+
@keyframes toggle-spin {
|
|
9495
|
+
0% {
|
|
9496
|
+
transform: rotate(0deg);
|
|
9497
|
+
}
|
|
9498
|
+
100% {
|
|
9499
|
+
transform: rotate(360deg);
|
|
9500
|
+
}
|
|
9501
|
+
}
|
|
9502
|
+
|
|
9034
9503
|
/* Reduce Motion */
|
|
9035
9504
|
@media (prefers-reduced-motion: reduce) {
|
|
9036
|
-
.
|
|
9505
|
+
.toggle-btn {
|
|
9037
9506
|
transition: none;
|
|
9038
9507
|
}
|
|
9508
|
+
.toggle-loading::after {
|
|
9509
|
+
animation: none;
|
|
9510
|
+
}
|
|
9039
9511
|
}
|
|
9040
9512
|
}
|
|
9041
9513
|
|
|
@@ -9333,12 +9805,24 @@ html {
|
|
|
9333
9805
|
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
|
|
9334
9806
|
}
|
|
9335
9807
|
|
|
9336
|
-
.tree-select-trigger:disabled
|
|
9808
|
+
.tree-select-trigger:disabled,
|
|
9809
|
+
.tree-select-trigger[aria-disabled="true"] {
|
|
9337
9810
|
cursor: not-allowed;
|
|
9338
9811
|
opacity: 0.5;
|
|
9339
9812
|
background-color: var(--color-surface-container);
|
|
9340
9813
|
}
|
|
9341
9814
|
|
|
9815
|
+
/* Support for div-based trigger (when using clear button) */
|
|
9816
|
+
div.tree-select-trigger {
|
|
9817
|
+
user-select: none;
|
|
9818
|
+
}
|
|
9819
|
+
|
|
9820
|
+
div.tree-select-trigger:focus-visible {
|
|
9821
|
+
outline: none;
|
|
9822
|
+
border-color: var(--color-primary);
|
|
9823
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
|
|
9824
|
+
}
|
|
9825
|
+
|
|
9342
9826
|
/* Value Display */
|
|
9343
9827
|
.tree-select-value {
|
|
9344
9828
|
flex: 1;
|
|
@@ -9399,6 +9883,11 @@ html {
|
|
|
9399
9883
|
background-color: var(--color-surface-container-high);
|
|
9400
9884
|
}
|
|
9401
9885
|
|
|
9886
|
+
.tree-select-clear svg {
|
|
9887
|
+
width: 1rem;
|
|
9888
|
+
height: 1rem;
|
|
9889
|
+
}
|
|
9890
|
+
|
|
9402
9891
|
/* Tree Select Dropdown */
|
|
9403
9892
|
.tree-select-dropdown {
|
|
9404
9893
|
position: absolute;
|
|
@@ -9421,9 +9910,10 @@ html {
|
|
|
9421
9910
|
display: block;
|
|
9422
9911
|
}
|
|
9423
9912
|
|
|
9424
|
-
/* Popover API Support
|
|
9913
|
+
/* Popover API Support */
|
|
9425
9914
|
.tree-select-dropdown[popover] {
|
|
9426
|
-
/* Reset browser defaults
|
|
9915
|
+
/* Reset browser defaults for proper positioning */
|
|
9916
|
+
position: absolute;
|
|
9427
9917
|
inset: unset;
|
|
9428
9918
|
margin: 0;
|
|
9429
9919
|
border: 1px solid var(--color-outline-variant);
|
|
@@ -9433,6 +9923,21 @@ html {
|
|
|
9433
9923
|
display: block;
|
|
9434
9924
|
}
|
|
9435
9925
|
|
|
9926
|
+
/* CSS Anchor Positioning for modern browsers */
|
|
9927
|
+
@supports (anchor-name: --tree-select) {
|
|
9928
|
+
.tree-select {
|
|
9929
|
+
anchor-name: --tree-select;
|
|
9930
|
+
}
|
|
9931
|
+
|
|
9932
|
+
.tree-select-dropdown[popover] {
|
|
9933
|
+
position-anchor: --tree-select;
|
|
9934
|
+
top: anchor(bottom);
|
|
9935
|
+
left: anchor(left);
|
|
9936
|
+
right: anchor(right);
|
|
9937
|
+
position-try-fallbacks: flip-block;
|
|
9938
|
+
}
|
|
9939
|
+
}
|
|
9940
|
+
|
|
9436
9941
|
/* Search Input in Dropdown */
|
|
9437
9942
|
.tree-select-search {
|
|
9438
9943
|
display: flex;
|
|
@@ -11437,6 +11942,12 @@ html {
|
|
|
11437
11942
|
padding: 0 1rem;
|
|
11438
11943
|
background-color: var(--color-surface);
|
|
11439
11944
|
color: var(--color-on-surface);
|
|
11945
|
+
box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
|
|
11946
|
+
}
|
|
11947
|
+
|
|
11948
|
+
/* Static App Bar (default) */
|
|
11949
|
+
.appbar-static {
|
|
11950
|
+
position: static;
|
|
11440
11951
|
}
|
|
11441
11952
|
|
|
11442
11953
|
/* Fixed App Bar */
|
|
@@ -11455,19 +11966,47 @@ html {
|
|
|
11455
11966
|
z-index: 1000;
|
|
11456
11967
|
}
|
|
11457
11968
|
|
|
11458
|
-
/* App Bar
|
|
11969
|
+
/* Top App Bar (default) */
|
|
11970
|
+
.appbar-top {
|
|
11971
|
+
top: 0;
|
|
11972
|
+
}
|
|
11973
|
+
|
|
11974
|
+
/* Bottom App Bar */
|
|
11975
|
+
.appbar-bottom {
|
|
11976
|
+
position: fixed;
|
|
11977
|
+
bottom: 0;
|
|
11978
|
+
left: 0;
|
|
11979
|
+
right: 0;
|
|
11980
|
+
top: auto;
|
|
11981
|
+
z-index: 1000;
|
|
11982
|
+
}
|
|
11983
|
+
|
|
11984
|
+
/* App Bar with Shadow (elevated) */
|
|
11459
11985
|
.appbar-elevated {
|
|
11460
11986
|
box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
|
|
11461
11987
|
}
|
|
11462
11988
|
|
|
11989
|
+
/* Flat App Bar (no shadow) */
|
|
11990
|
+
.appbar-flat {
|
|
11991
|
+
box-shadow: none;
|
|
11992
|
+
}
|
|
11993
|
+
|
|
11463
11994
|
/* App Bar with Border */
|
|
11464
11995
|
.appbar-bordered {
|
|
11465
11996
|
border-bottom: 1px solid var(--color-outline-variant);
|
|
11997
|
+
box-shadow: none;
|
|
11466
11998
|
}
|
|
11467
11999
|
|
|
11468
12000
|
/* Transparent App Bar */
|
|
11469
12001
|
.appbar-transparent {
|
|
11470
12002
|
background-color: transparent;
|
|
12003
|
+
box-shadow: none;
|
|
12004
|
+
}
|
|
12005
|
+
|
|
12006
|
+
/* Backdrop Blur */
|
|
12007
|
+
.appbar-blur {
|
|
12008
|
+
backdrop-filter: blur(8px);
|
|
12009
|
+
-webkit-backdrop-filter: blur(8px);
|
|
11471
12010
|
}
|
|
11472
12011
|
|
|
11473
12012
|
/* App Bar Navigation Icon */
|
|
@@ -11577,17 +12116,125 @@ html {
|
|
|
11577
12116
|
padding: 0 0.75rem;
|
|
11578
12117
|
}
|
|
11579
12118
|
|
|
11580
|
-
.appbar-sm .appbar-title {
|
|
11581
|
-
font-size: 1rem;
|
|
12119
|
+
.appbar-sm .appbar-title {
|
|
12120
|
+
font-size: 1rem;
|
|
12121
|
+
}
|
|
12122
|
+
|
|
12123
|
+
.appbar-lg {
|
|
12124
|
+
min-height: 5rem;
|
|
12125
|
+
padding: 0 1.5rem;
|
|
12126
|
+
}
|
|
12127
|
+
|
|
12128
|
+
.appbar-lg .appbar-title {
|
|
12129
|
+
font-size: 1.5rem;
|
|
12130
|
+
}
|
|
12131
|
+
|
|
12132
|
+
/* Compact Size */
|
|
12133
|
+
.appbar-compact {
|
|
12134
|
+
min-height: 3rem;
|
|
12135
|
+
padding: 0 0.75rem;
|
|
12136
|
+
}
|
|
12137
|
+
|
|
12138
|
+
.appbar-compact .appbar-title,
|
|
12139
|
+
.appbar-compact .appbar-heading {
|
|
12140
|
+
font-size: 1rem;
|
|
12141
|
+
line-height: 1.5rem;
|
|
12142
|
+
}
|
|
12143
|
+
|
|
12144
|
+
.appbar-compact .appbar-nav,
|
|
12145
|
+
.appbar-compact .appbar-action,
|
|
12146
|
+
.appbar-compact .appbar-back {
|
|
12147
|
+
width: 2rem;
|
|
12148
|
+
height: 2rem;
|
|
12149
|
+
}
|
|
12150
|
+
|
|
12151
|
+
/* Comfortable Size */
|
|
12152
|
+
.appbar-comfortable {
|
|
12153
|
+
min-height: 5rem;
|
|
12154
|
+
padding: 0 1.5rem;
|
|
12155
|
+
}
|
|
12156
|
+
|
|
12157
|
+
.appbar-comfortable .appbar-title,
|
|
12158
|
+
.appbar-comfortable .appbar-heading {
|
|
12159
|
+
font-size: 1.5rem;
|
|
12160
|
+
line-height: 2rem;
|
|
12161
|
+
}
|
|
12162
|
+
|
|
12163
|
+
/* Section Classes */
|
|
12164
|
+
.appbar-leading {
|
|
12165
|
+
display: flex;
|
|
12166
|
+
align-items: center;
|
|
12167
|
+
gap: 0.25rem;
|
|
12168
|
+
flex-shrink: 0;
|
|
12169
|
+
}
|
|
12170
|
+
|
|
12171
|
+
.appbar-trailing {
|
|
12172
|
+
display: flex;
|
|
12173
|
+
align-items: center;
|
|
12174
|
+
gap: 0.25rem;
|
|
12175
|
+
flex-shrink: 0;
|
|
12176
|
+
margin-left: auto;
|
|
12177
|
+
}
|
|
12178
|
+
|
|
12179
|
+
/* Heading Text */
|
|
12180
|
+
.appbar-heading {
|
|
12181
|
+
font-size: 1.25rem;
|
|
12182
|
+
font-weight: 500;
|
|
12183
|
+
line-height: 1.75rem;
|
|
12184
|
+
margin: 0;
|
|
12185
|
+
overflow: hidden;
|
|
12186
|
+
text-overflow: ellipsis;
|
|
12187
|
+
white-space: nowrap;
|
|
12188
|
+
}
|
|
12189
|
+
|
|
12190
|
+
/* Back Button */
|
|
12191
|
+
.appbar-back {
|
|
12192
|
+
display: flex;
|
|
12193
|
+
align-items: center;
|
|
12194
|
+
justify-content: center;
|
|
12195
|
+
width: 2.5rem;
|
|
12196
|
+
height: 2.5rem;
|
|
12197
|
+
color: var(--color-on-surface);
|
|
12198
|
+
background-color: transparent;
|
|
12199
|
+
border: none;
|
|
12200
|
+
border-radius: 50%;
|
|
12201
|
+
cursor: pointer;
|
|
12202
|
+
transition: background-color 150ms ease-in-out;
|
|
12203
|
+
flex-shrink: 0;
|
|
12204
|
+
}
|
|
12205
|
+
|
|
12206
|
+
.appbar-back:hover {
|
|
12207
|
+
background-color: var(--color-surface-container);
|
|
12208
|
+
}
|
|
12209
|
+
|
|
12210
|
+
.appbar-back:focus-visible {
|
|
12211
|
+
outline: 2px solid var(--color-primary);
|
|
12212
|
+
outline-offset: 2px;
|
|
12213
|
+
}
|
|
12214
|
+
|
|
12215
|
+
/* Search Input (direct on element) */
|
|
12216
|
+
.appbar .appbar-search,
|
|
12217
|
+
input.appbar-search {
|
|
12218
|
+
flex: 1;
|
|
12219
|
+
max-width: 32rem;
|
|
12220
|
+
padding: 0.5rem 1rem;
|
|
12221
|
+
font-size: 0.875rem;
|
|
12222
|
+
color: var(--color-on-surface);
|
|
12223
|
+
background-color: var(--color-surface-container);
|
|
12224
|
+
border: none;
|
|
12225
|
+
border-radius: 9999px;
|
|
12226
|
+
transition: background-color 150ms ease-in-out;
|
|
11582
12227
|
}
|
|
11583
12228
|
|
|
11584
|
-
.appbar-
|
|
11585
|
-
|
|
11586
|
-
|
|
12229
|
+
.appbar .appbar-search:focus,
|
|
12230
|
+
input.appbar-search:focus {
|
|
12231
|
+
outline: none;
|
|
12232
|
+
background-color: var(--color-surface-container-high);
|
|
11587
12233
|
}
|
|
11588
12234
|
|
|
11589
|
-
.appbar
|
|
11590
|
-
|
|
12235
|
+
.appbar .appbar-search::placeholder,
|
|
12236
|
+
input.appbar-search::placeholder {
|
|
12237
|
+
color: var(--color-on-surface-variant);
|
|
11591
12238
|
}
|
|
11592
12239
|
|
|
11593
12240
|
/* Color Variants */
|
|
@@ -11628,10 +12275,53 @@ html {
|
|
|
11628
12275
|
color: var(--color-on-secondary-container);
|
|
11629
12276
|
}
|
|
11630
12277
|
|
|
12278
|
+
.appbar-secondary .appbar-subtitle {
|
|
12279
|
+
color: var(--color-on-secondary);
|
|
12280
|
+
opacity: 0.8;
|
|
12281
|
+
}
|
|
12282
|
+
|
|
12283
|
+
.appbar-tertiary {
|
|
12284
|
+
background-color: var(--color-tertiary);
|
|
12285
|
+
color: var(--color-on-tertiary);
|
|
12286
|
+
}
|
|
12287
|
+
|
|
12288
|
+
.appbar-tertiary .appbar-nav,
|
|
12289
|
+
.appbar-tertiary .appbar-action {
|
|
12290
|
+
color: var(--color-on-tertiary);
|
|
12291
|
+
}
|
|
12292
|
+
|
|
12293
|
+
.appbar-tertiary .appbar-nav:hover,
|
|
12294
|
+
.appbar-tertiary .appbar-action:hover {
|
|
12295
|
+
background-color: var(--color-tertiary-container);
|
|
12296
|
+
color: var(--color-on-tertiary-container);
|
|
12297
|
+
}
|
|
12298
|
+
|
|
12299
|
+
.appbar-tertiary .appbar-subtitle {
|
|
12300
|
+
color: var(--color-on-tertiary);
|
|
12301
|
+
opacity: 0.8;
|
|
12302
|
+
}
|
|
12303
|
+
|
|
12304
|
+
/* Surface Variants */
|
|
11631
12305
|
.appbar-surface {
|
|
12306
|
+
background-color: var(--color-surface);
|
|
12307
|
+
}
|
|
12308
|
+
|
|
12309
|
+
.appbar-surface-container {
|
|
11632
12310
|
background-color: var(--color-surface-container);
|
|
11633
12311
|
}
|
|
11634
12312
|
|
|
12313
|
+
.appbar-surface-container-low {
|
|
12314
|
+
background-color: var(--color-surface-container-low);
|
|
12315
|
+
}
|
|
12316
|
+
|
|
12317
|
+
.appbar-surface-container-high {
|
|
12318
|
+
background-color: var(--color-surface-container-high);
|
|
12319
|
+
}
|
|
12320
|
+
|
|
12321
|
+
.appbar-surface-container-highest {
|
|
12322
|
+
background-color: var(--color-surface-container-highest);
|
|
12323
|
+
}
|
|
12324
|
+
|
|
11635
12325
|
/* Center Title */
|
|
11636
12326
|
.appbar-center {
|
|
11637
12327
|
justify-content: space-between;
|
|
@@ -14047,6 +14737,72 @@ html {
|
|
|
14047
14737
|
transform: scale(1);
|
|
14048
14738
|
}
|
|
14049
14739
|
|
|
14740
|
+
/* Direct popover structure (without .popover-content wrapper) */
|
|
14741
|
+
.popover.popover-show,
|
|
14742
|
+
.popover.show {
|
|
14743
|
+
opacity: 1;
|
|
14744
|
+
visibility: visible;
|
|
14745
|
+
}
|
|
14746
|
+
|
|
14747
|
+
/* Popover as direct overlay (simpler structure) */
|
|
14748
|
+
.popover[class*="popover-top"],
|
|
14749
|
+
.popover[class*="popover-bottom"],
|
|
14750
|
+
.popover[class*="popover-left"],
|
|
14751
|
+
.popover[class*="popover-right"] {
|
|
14752
|
+
position: absolute;
|
|
14753
|
+
z-index: 1050;
|
|
14754
|
+
min-width: 12rem;
|
|
14755
|
+
max-width: 20rem;
|
|
14756
|
+
padding: 1rem;
|
|
14757
|
+
background-color: var(--color-surface);
|
|
14758
|
+
border: 1px solid var(--color-outline-variant);
|
|
14759
|
+
border-radius: 0.75rem;
|
|
14760
|
+
box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
|
|
14761
|
+
opacity: 0;
|
|
14762
|
+
visibility: hidden;
|
|
14763
|
+
transition: opacity 150ms ease-out, visibility 150ms ease-out;
|
|
14764
|
+
}
|
|
14765
|
+
|
|
14766
|
+
.popover[class*="popover-top"].popover-show,
|
|
14767
|
+
.popover[class*="popover-bottom"].popover-show,
|
|
14768
|
+
.popover[class*="popover-left"].popover-show,
|
|
14769
|
+
.popover[class*="popover-right"].popover-show {
|
|
14770
|
+
opacity: 1;
|
|
14771
|
+
visibility: visible;
|
|
14772
|
+
}
|
|
14773
|
+
|
|
14774
|
+
/* Direct position: Top */
|
|
14775
|
+
.popover.popover-top:not(:has(.popover-content)) {
|
|
14776
|
+
bottom: 100%;
|
|
14777
|
+
left: 50%;
|
|
14778
|
+
transform: translateX(-50%);
|
|
14779
|
+
margin-bottom: 0.75rem;
|
|
14780
|
+
}
|
|
14781
|
+
|
|
14782
|
+
/* Direct position: Bottom */
|
|
14783
|
+
.popover.popover-bottom:not(:has(.popover-content)) {
|
|
14784
|
+
top: 100%;
|
|
14785
|
+
left: 50%;
|
|
14786
|
+
transform: translateX(-50%);
|
|
14787
|
+
margin-top: 0.75rem;
|
|
14788
|
+
}
|
|
14789
|
+
|
|
14790
|
+
/* Direct position: Left */
|
|
14791
|
+
.popover.popover-left:not(:has(.popover-content)) {
|
|
14792
|
+
right: 100%;
|
|
14793
|
+
top: 50%;
|
|
14794
|
+
transform: translateY(-50%);
|
|
14795
|
+
margin-right: 0.75rem;
|
|
14796
|
+
}
|
|
14797
|
+
|
|
14798
|
+
/* Direct position: Right */
|
|
14799
|
+
.popover.popover-right:not(:has(.popover-content)) {
|
|
14800
|
+
left: 100%;
|
|
14801
|
+
top: 50%;
|
|
14802
|
+
transform: translateY(-50%);
|
|
14803
|
+
margin-left: 0.75rem;
|
|
14804
|
+
}
|
|
14805
|
+
|
|
14050
14806
|
/* Popover Arrow */
|
|
14051
14807
|
.popover-arrow {
|
|
14052
14808
|
position: absolute;
|
|
@@ -14223,12 +14979,33 @@ html {
|
|
|
14223
14979
|
}
|
|
14224
14980
|
|
|
14225
14981
|
/* Color Variants */
|
|
14982
|
+
/*
|
|
14983
|
+
* Color intensity for themed popovers.
|
|
14984
|
+
* Override this variable to adjust how strongly colors appear:
|
|
14985
|
+
* - 20% = subtle tint
|
|
14986
|
+
* - 30% = moderate (default)
|
|
14987
|
+
* - 40% = bold/prominent
|
|
14988
|
+
*/
|
|
14989
|
+
.popover {
|
|
14990
|
+
--popover-color-intensity: 30%;
|
|
14991
|
+
}
|
|
14992
|
+
|
|
14993
|
+
/* Dark variant */
|
|
14226
14994
|
.popover-dark .popover-content {
|
|
14227
14995
|
background-color: var(--color-on-surface);
|
|
14228
14996
|
color: var(--color-surface);
|
|
14229
14997
|
border-color: transparent;
|
|
14230
14998
|
}
|
|
14231
14999
|
|
|
15000
|
+
.popover-dark[class*="popover-top"],
|
|
15001
|
+
.popover-dark[class*="popover-bottom"],
|
|
15002
|
+
.popover-dark[class*="popover-left"],
|
|
15003
|
+
.popover-dark[class*="popover-right"] {
|
|
15004
|
+
background-color: var(--color-on-surface);
|
|
15005
|
+
color: var(--color-surface);
|
|
15006
|
+
border-color: transparent;
|
|
15007
|
+
}
|
|
15008
|
+
|
|
14232
15009
|
.popover-dark .popover-arrow {
|
|
14233
15010
|
background-color: var(--color-on-surface);
|
|
14234
15011
|
border-color: transparent;
|
|
@@ -14243,16 +15020,106 @@ html {
|
|
|
14243
15020
|
opacity: 0.9;
|
|
14244
15021
|
}
|
|
14245
15022
|
|
|
15023
|
+
/* Primary variant */
|
|
14246
15024
|
.popover-primary .popover-content {
|
|
14247
|
-
background-color: var(--color-primary-
|
|
15025
|
+
background-color: color-mix(in oklch, var(--color-primary) var(--popover-color-intensity), var(--color-surface));
|
|
15026
|
+
border-color: var(--color-primary);
|
|
15027
|
+
}
|
|
15028
|
+
|
|
15029
|
+
.popover-primary[class*="popover-top"],
|
|
15030
|
+
.popover-primary[class*="popover-bottom"],
|
|
15031
|
+
.popover-primary[class*="popover-left"],
|
|
15032
|
+
.popover-primary[class*="popover-right"] {
|
|
15033
|
+
background-color: color-mix(in oklch, var(--color-primary) var(--popover-color-intensity), var(--color-surface));
|
|
14248
15034
|
border-color: var(--color-primary);
|
|
14249
15035
|
}
|
|
14250
15036
|
|
|
14251
15037
|
.popover-primary .popover-arrow {
|
|
14252
|
-
background-color: var(--color-primary-
|
|
15038
|
+
background-color: color-mix(in oklch, var(--color-primary) var(--popover-color-intensity), var(--color-surface));
|
|
14253
15039
|
border-color: var(--color-primary);
|
|
14254
15040
|
}
|
|
14255
15041
|
|
|
15042
|
+
.popover-primary .popover-body {
|
|
15043
|
+
color: var(--color-on-surface);
|
|
15044
|
+
}
|
|
15045
|
+
|
|
15046
|
+
.popover-primary .popover-title {
|
|
15047
|
+
color: var(--color-on-surface);
|
|
15048
|
+
}
|
|
15049
|
+
|
|
15050
|
+
/* Secondary variant */
|
|
15051
|
+
.popover-secondary .popover-content {
|
|
15052
|
+
background-color: color-mix(in oklch, var(--color-secondary) var(--popover-color-intensity), var(--color-surface));
|
|
15053
|
+
border-color: var(--color-secondary);
|
|
15054
|
+
}
|
|
15055
|
+
|
|
15056
|
+
.popover-secondary[class*="popover-top"],
|
|
15057
|
+
.popover-secondary[class*="popover-bottom"],
|
|
15058
|
+
.popover-secondary[class*="popover-left"],
|
|
15059
|
+
.popover-secondary[class*="popover-right"] {
|
|
15060
|
+
background-color: color-mix(in oklch, var(--color-secondary) var(--popover-color-intensity), var(--color-surface));
|
|
15061
|
+
border-color: var(--color-secondary);
|
|
15062
|
+
}
|
|
15063
|
+
|
|
15064
|
+
.popover-secondary .popover-arrow {
|
|
15065
|
+
background-color: color-mix(in oklch, var(--color-secondary) var(--popover-color-intensity), var(--color-surface));
|
|
15066
|
+
border-color: var(--color-secondary);
|
|
15067
|
+
}
|
|
15068
|
+
|
|
15069
|
+
.popover-secondary .popover-body {
|
|
15070
|
+
color: var(--color-on-surface);
|
|
15071
|
+
}
|
|
15072
|
+
|
|
15073
|
+
.popover-secondary .popover-title {
|
|
15074
|
+
color: var(--color-on-surface);
|
|
15075
|
+
}
|
|
15076
|
+
|
|
15077
|
+
/* Tertiary variant */
|
|
15078
|
+
.popover-tertiary .popover-content {
|
|
15079
|
+
background-color: color-mix(in oklch, var(--color-tertiary) var(--popover-color-intensity), var(--color-surface));
|
|
15080
|
+
border-color: var(--color-tertiary);
|
|
15081
|
+
}
|
|
15082
|
+
|
|
15083
|
+
.popover-tertiary[class*="popover-top"],
|
|
15084
|
+
.popover-tertiary[class*="popover-bottom"],
|
|
15085
|
+
.popover-tertiary[class*="popover-left"],
|
|
15086
|
+
.popover-tertiary[class*="popover-right"] {
|
|
15087
|
+
background-color: color-mix(in oklch, var(--color-tertiary) var(--popover-color-intensity), var(--color-surface));
|
|
15088
|
+
border-color: var(--color-tertiary);
|
|
15089
|
+
}
|
|
15090
|
+
|
|
15091
|
+
.popover-tertiary .popover-arrow {
|
|
15092
|
+
background-color: color-mix(in oklch, var(--color-tertiary) var(--popover-color-intensity), var(--color-surface));
|
|
15093
|
+
border-color: var(--color-tertiary);
|
|
15094
|
+
}
|
|
15095
|
+
|
|
15096
|
+
.popover-tertiary .popover-body {
|
|
15097
|
+
color: var(--color-on-surface);
|
|
15098
|
+
}
|
|
15099
|
+
|
|
15100
|
+
.popover-tertiary .popover-title {
|
|
15101
|
+
color: var(--color-on-surface);
|
|
15102
|
+
}
|
|
15103
|
+
|
|
15104
|
+
/* Surface highest variant */
|
|
15105
|
+
.popover-surface-highest .popover-content {
|
|
15106
|
+
background-color: var(--color-surface-container-highest);
|
|
15107
|
+
border-color: var(--color-outline-variant);
|
|
15108
|
+
}
|
|
15109
|
+
|
|
15110
|
+
.popover-surface-highest[class*="popover-top"],
|
|
15111
|
+
.popover-surface-highest[class*="popover-bottom"],
|
|
15112
|
+
.popover-surface-highest[class*="popover-left"],
|
|
15113
|
+
.popover-surface-highest[class*="popover-right"] {
|
|
15114
|
+
background-color: var(--color-surface-container-highest);
|
|
15115
|
+
border-color: var(--color-outline-variant);
|
|
15116
|
+
}
|
|
15117
|
+
|
|
15118
|
+
.popover-surface-highest .popover-arrow {
|
|
15119
|
+
background-color: var(--color-surface-container-highest);
|
|
15120
|
+
border-color: var(--color-outline-variant);
|
|
15121
|
+
}
|
|
15122
|
+
|
|
14256
15123
|
/* Hover Trigger */
|
|
14257
15124
|
.popover-hover:hover .popover-content,
|
|
14258
15125
|
.popover-hover:focus-within .popover-content {
|
|
@@ -14327,11 +15194,160 @@ html {
|
|
|
14327
15194
|
justify-content: center;
|
|
14328
15195
|
}
|
|
14329
15196
|
|
|
15197
|
+
/* ========================================
|
|
15198
|
+
* HTML Popover API Support
|
|
15199
|
+
* Uses native [popover] attribute with :popover-open pseudo-class
|
|
15200
|
+
* ======================================== */
|
|
15201
|
+
|
|
15202
|
+
/* Native popover base styles */
|
|
15203
|
+
.popover[popover] {
|
|
15204
|
+
position: fixed;
|
|
15205
|
+
inset: unset;
|
|
15206
|
+
z-index: 1050;
|
|
15207
|
+
min-width: 12rem;
|
|
15208
|
+
max-width: 20rem;
|
|
15209
|
+
padding: 1rem;
|
|
15210
|
+
margin: 0;
|
|
15211
|
+
background-color: var(--color-surface);
|
|
15212
|
+
border: 1px solid var(--color-outline-variant);
|
|
15213
|
+
border-radius: 0.75rem;
|
|
15214
|
+
box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
|
|
15215
|
+
opacity: 0;
|
|
15216
|
+
transform: scale(0.95);
|
|
15217
|
+
transition: opacity 150ms ease-out, transform 150ms ease-out, overlay 150ms ease-out allow-discrete, display 150ms ease-out allow-discrete;
|
|
15218
|
+
}
|
|
15219
|
+
|
|
15220
|
+
/* Popover open state */
|
|
15221
|
+
.popover[popover]:popover-open {
|
|
15222
|
+
opacity: 1;
|
|
15223
|
+
transform: scale(1);
|
|
15224
|
+
}
|
|
15225
|
+
|
|
15226
|
+
/* Starting state for entry animation */
|
|
15227
|
+
@starting-style {
|
|
15228
|
+
.popover[popover]:popover-open {
|
|
15229
|
+
opacity: 0;
|
|
15230
|
+
transform: scale(0.95);
|
|
15231
|
+
}
|
|
15232
|
+
}
|
|
15233
|
+
|
|
15234
|
+
/* Native popover backdrop */
|
|
15235
|
+
.popover[popover]::backdrop {
|
|
15236
|
+
background-color: rgb(0 0 0 / 0);
|
|
15237
|
+
transition: background-color 150ms ease-out, overlay 150ms ease-out allow-discrete, display 150ms ease-out allow-discrete;
|
|
15238
|
+
}
|
|
15239
|
+
|
|
15240
|
+
.popover[popover]:popover-open::backdrop {
|
|
15241
|
+
background-color: rgb(0 0 0 / 0.1);
|
|
15242
|
+
}
|
|
15243
|
+
|
|
15244
|
+
@starting-style {
|
|
15245
|
+
.popover[popover]:popover-open::backdrop {
|
|
15246
|
+
background-color: rgb(0 0 0 / 0);
|
|
15247
|
+
}
|
|
15248
|
+
}
|
|
15249
|
+
|
|
15250
|
+
/* Native popover with modal backdrop */
|
|
15251
|
+
.popover-modal[popover]::backdrop {
|
|
15252
|
+
background-color: rgb(0 0 0 / 0);
|
|
15253
|
+
transition: background-color 150ms ease-out, overlay 150ms ease-out allow-discrete, display 150ms ease-out allow-discrete;
|
|
15254
|
+
}
|
|
15255
|
+
|
|
15256
|
+
.popover-modal[popover]:popover-open::backdrop {
|
|
15257
|
+
background-color: rgb(0 0 0 / 0.3);
|
|
15258
|
+
}
|
|
15259
|
+
|
|
15260
|
+
@starting-style {
|
|
15261
|
+
.popover-modal[popover]:popover-open::backdrop {
|
|
15262
|
+
background-color: rgb(0 0 0 / 0);
|
|
15263
|
+
}
|
|
15264
|
+
}
|
|
15265
|
+
|
|
15266
|
+
/* Native popover color variants */
|
|
15267
|
+
.popover-primary[popover] {
|
|
15268
|
+
background-color: color-mix(in oklch, var(--color-primary) var(--popover-color-intensity), var(--color-surface));
|
|
15269
|
+
border-color: var(--color-primary);
|
|
15270
|
+
}
|
|
15271
|
+
|
|
15272
|
+
.popover-primary[popover] .popover-body {
|
|
15273
|
+
color: var(--color-on-surface);
|
|
15274
|
+
}
|
|
15275
|
+
|
|
15276
|
+
.popover-primary[popover] .popover-title {
|
|
15277
|
+
color: var(--color-on-surface);
|
|
15278
|
+
}
|
|
15279
|
+
|
|
15280
|
+
.popover-secondary[popover] {
|
|
15281
|
+
background-color: color-mix(in oklch, var(--color-secondary) var(--popover-color-intensity), var(--color-surface));
|
|
15282
|
+
border-color: var(--color-secondary);
|
|
15283
|
+
}
|
|
15284
|
+
|
|
15285
|
+
.popover-secondary[popover] .popover-body {
|
|
15286
|
+
color: var(--color-on-surface);
|
|
15287
|
+
}
|
|
15288
|
+
|
|
15289
|
+
.popover-secondary[popover] .popover-title {
|
|
15290
|
+
color: var(--color-on-surface);
|
|
15291
|
+
}
|
|
15292
|
+
|
|
15293
|
+
.popover-tertiary[popover] {
|
|
15294
|
+
background-color: color-mix(in oklch, var(--color-tertiary) var(--popover-color-intensity), var(--color-surface));
|
|
15295
|
+
border-color: var(--color-tertiary);
|
|
15296
|
+
}
|
|
15297
|
+
|
|
15298
|
+
.popover-tertiary[popover] .popover-body {
|
|
15299
|
+
color: var(--color-on-surface);
|
|
15300
|
+
}
|
|
15301
|
+
|
|
15302
|
+
.popover-tertiary[popover] .popover-title {
|
|
15303
|
+
color: var(--color-on-surface);
|
|
15304
|
+
}
|
|
15305
|
+
|
|
15306
|
+
.popover-dark[popover] {
|
|
15307
|
+
background-color: var(--color-on-surface);
|
|
15308
|
+
border-color: transparent;
|
|
15309
|
+
}
|
|
15310
|
+
|
|
15311
|
+
.popover-dark[popover] .popover-body {
|
|
15312
|
+
color: var(--color-surface);
|
|
15313
|
+
opacity: 0.9;
|
|
15314
|
+
}
|
|
15315
|
+
|
|
15316
|
+
.popover-dark[popover] .popover-title {
|
|
15317
|
+
color: var(--color-surface);
|
|
15318
|
+
}
|
|
15319
|
+
|
|
15320
|
+
.popover-surface-highest[popover] {
|
|
15321
|
+
background-color: var(--color-surface-container-highest);
|
|
15322
|
+
border-color: var(--color-outline-variant);
|
|
15323
|
+
}
|
|
15324
|
+
|
|
15325
|
+
/* Native popover size variants */
|
|
15326
|
+
.popover-sm[popover] {
|
|
15327
|
+
min-width: 8rem;
|
|
15328
|
+
max-width: 14rem;
|
|
15329
|
+
padding: 0.75rem;
|
|
15330
|
+
}
|
|
15331
|
+
|
|
15332
|
+
.popover-lg[popover] {
|
|
15333
|
+
min-width: 16rem;
|
|
15334
|
+
max-width: 28rem;
|
|
15335
|
+
padding: 1.25rem;
|
|
15336
|
+
}
|
|
15337
|
+
|
|
15338
|
+
.popover-full[popover] {
|
|
15339
|
+
min-width: 0;
|
|
15340
|
+
max-width: none;
|
|
15341
|
+
width: max-content;
|
|
15342
|
+
}
|
|
15343
|
+
|
|
14330
15344
|
/* Reduce Motion */
|
|
14331
15345
|
@media (prefers-reduced-motion: reduce) {
|
|
14332
15346
|
.popover-content,
|
|
14333
15347
|
.popover-close,
|
|
14334
|
-
.popover-menu-item
|
|
15348
|
+
.popover-menu-item,
|
|
15349
|
+
.popover[popover],
|
|
15350
|
+
.popover[popover]::backdrop {
|
|
14335
15351
|
transition: none;
|
|
14336
15352
|
}
|
|
14337
15353
|
}
|