@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
|
@@ -4144,7 +4144,8 @@
|
|
|
4144
4144
|
border-color: var(--color-on-surface);
|
|
4145
4145
|
}
|
|
4146
4146
|
|
|
4147
|
-
.checkbox:checked:hover:not(:disabled)
|
|
4147
|
+
.checkbox:checked:hover:not(:disabled),
|
|
4148
|
+
.checkbox:indeterminate:hover:not(:disabled) {
|
|
4148
4149
|
background-color: color-mix(in oklch, var(--checkbox-color), black 10%);
|
|
4149
4150
|
border-color: color-mix(in oklch, var(--checkbox-color), black 10%);
|
|
4150
4151
|
}
|
|
@@ -7929,7 +7930,84 @@
|
|
|
7929
7930
|
*/
|
|
7930
7931
|
|
|
7931
7932
|
@layer components {
|
|
7932
|
-
/*
|
|
7933
|
+
/* ============================================
|
|
7934
|
+
* TEXTAREA CONTAINER
|
|
7935
|
+
* ============================================ */
|
|
7936
|
+
|
|
7937
|
+
.textarea-container {
|
|
7938
|
+
position: relative;
|
|
7939
|
+
display: flex;
|
|
7940
|
+
flex-direction: column;
|
|
7941
|
+
gap: 0.25rem;
|
|
7942
|
+
width: 100%;
|
|
7943
|
+
}
|
|
7944
|
+
|
|
7945
|
+
/* ============================================
|
|
7946
|
+
* TEXTAREA LABEL
|
|
7947
|
+
* ============================================ */
|
|
7948
|
+
|
|
7949
|
+
.textarea-label {
|
|
7950
|
+
display: block;
|
|
7951
|
+
font-size: 0.875rem;
|
|
7952
|
+
font-weight: 500;
|
|
7953
|
+
line-height: 1.25rem;
|
|
7954
|
+
color: var(--color-on-surface);
|
|
7955
|
+
margin-bottom: 0.25rem;
|
|
7956
|
+
}
|
|
7957
|
+
|
|
7958
|
+
/* Floating Label */
|
|
7959
|
+
.textarea-label-floating {
|
|
7960
|
+
position: absolute;
|
|
7961
|
+
top: 0.75rem;
|
|
7962
|
+
left: 1rem;
|
|
7963
|
+
font-size: 1rem;
|
|
7964
|
+
font-weight: 400;
|
|
7965
|
+
color: var(--color-on-surface-variant);
|
|
7966
|
+
pointer-events: none;
|
|
7967
|
+
transition: all 150ms ease-in-out;
|
|
7968
|
+
transform-origin: left top;
|
|
7969
|
+
z-index: 1;
|
|
7970
|
+
}
|
|
7971
|
+
|
|
7972
|
+
/* Floating label active state - when textarea has content or focus */
|
|
7973
|
+
.textarea:focus ~ .textarea-label-floating,
|
|
7974
|
+
.textarea:not(:placeholder-shown) ~ .textarea-label-floating {
|
|
7975
|
+
top: -0.5rem;
|
|
7976
|
+
left: 0.75rem;
|
|
7977
|
+
font-size: 0.75rem;
|
|
7978
|
+
font-weight: 500;
|
|
7979
|
+
color: var(--color-primary);
|
|
7980
|
+
background-color: var(--color-surface);
|
|
7981
|
+
padding: 0 0.25rem;
|
|
7982
|
+
}
|
|
7983
|
+
|
|
7984
|
+
/* Floating label for filled variant */
|
|
7985
|
+
.textarea-filled ~ .textarea-label-floating {
|
|
7986
|
+
background-color: transparent;
|
|
7987
|
+
}
|
|
7988
|
+
|
|
7989
|
+
.textarea-filled:focus ~ .textarea-label-floating,
|
|
7990
|
+
.textarea-filled:not(:placeholder-shown) ~ .textarea-label-floating {
|
|
7991
|
+
top: 0.25rem;
|
|
7992
|
+
left: 0.75rem;
|
|
7993
|
+
background-color: transparent;
|
|
7994
|
+
}
|
|
7995
|
+
|
|
7996
|
+
/* ============================================
|
|
7997
|
+
* HELPER TEXT
|
|
7998
|
+
* ============================================ */
|
|
7999
|
+
|
|
8000
|
+
.textarea-helper {
|
|
8001
|
+
font-size: 0.75rem;
|
|
8002
|
+
line-height: 1rem;
|
|
8003
|
+
color: var(--color-on-surface-variant);
|
|
8004
|
+
margin-top: 0.25rem;
|
|
8005
|
+
}
|
|
8006
|
+
|
|
8007
|
+
/* ============================================
|
|
8008
|
+
* BASE TEXTAREA
|
|
8009
|
+
* ============================================ */
|
|
8010
|
+
|
|
7933
8011
|
.textarea {
|
|
7934
8012
|
display: block;
|
|
7935
8013
|
width: 100%;
|
|
@@ -7977,6 +8055,15 @@
|
|
|
7977
8055
|
cursor: default;
|
|
7978
8056
|
}
|
|
7979
8057
|
|
|
8058
|
+
/* Full Width */
|
|
8059
|
+
.textarea-full {
|
|
8060
|
+
width: 100%;
|
|
8061
|
+
}
|
|
8062
|
+
|
|
8063
|
+
/* ============================================
|
|
8064
|
+
* VARIANTS
|
|
8065
|
+
* ============================================ */
|
|
8066
|
+
|
|
7980
8067
|
/* Filled Variant */
|
|
7981
8068
|
.textarea-filled {
|
|
7982
8069
|
background-color: var(--color-surface-container);
|
|
@@ -8019,23 +8106,68 @@
|
|
|
8019
8106
|
box-shadow: none;
|
|
8020
8107
|
}
|
|
8021
8108
|
|
|
8022
|
-
/*
|
|
8109
|
+
/* ============================================
|
|
8110
|
+
* COLOR VARIANTS
|
|
8111
|
+
* ============================================ */
|
|
8112
|
+
|
|
8113
|
+
/* Primary */
|
|
8114
|
+
.textarea-primary {
|
|
8115
|
+
border-color: var(--color-primary);
|
|
8116
|
+
}
|
|
8117
|
+
|
|
8023
8118
|
.textarea-primary:focus-visible {
|
|
8024
8119
|
border-color: var(--color-primary);
|
|
8025
8120
|
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
|
|
8026
8121
|
}
|
|
8027
8122
|
|
|
8123
|
+
.textarea-filled.textarea-primary {
|
|
8124
|
+
border-bottom-color: var(--color-primary);
|
|
8125
|
+
}
|
|
8126
|
+
|
|
8127
|
+
.textarea-filled.textarea-primary:focus-visible {
|
|
8128
|
+
border-bottom-color: var(--color-primary);
|
|
8129
|
+
}
|
|
8130
|
+
|
|
8131
|
+
/* Secondary */
|
|
8132
|
+
.textarea-secondary {
|
|
8133
|
+
border-color: var(--color-secondary);
|
|
8134
|
+
}
|
|
8135
|
+
|
|
8028
8136
|
.textarea-secondary:focus-visible {
|
|
8029
8137
|
border-color: var(--color-secondary);
|
|
8030
8138
|
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-secondary) 10%, transparent);
|
|
8031
8139
|
}
|
|
8032
8140
|
|
|
8141
|
+
.textarea-filled.textarea-secondary {
|
|
8142
|
+
border-bottom-color: var(--color-secondary);
|
|
8143
|
+
}
|
|
8144
|
+
|
|
8145
|
+
.textarea-filled.textarea-secondary:focus-visible {
|
|
8146
|
+
border-bottom-color: var(--color-secondary);
|
|
8147
|
+
}
|
|
8148
|
+
|
|
8149
|
+
/* Tertiary */
|
|
8150
|
+
.textarea-tertiary {
|
|
8151
|
+
border-color: var(--color-tertiary);
|
|
8152
|
+
}
|
|
8153
|
+
|
|
8033
8154
|
.textarea-tertiary:focus-visible {
|
|
8034
8155
|
border-color: var(--color-tertiary);
|
|
8035
8156
|
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-tertiary) 10%, transparent);
|
|
8036
8157
|
}
|
|
8037
8158
|
|
|
8038
|
-
|
|
8159
|
+
.textarea-filled.textarea-tertiary {
|
|
8160
|
+
border-bottom-color: var(--color-tertiary);
|
|
8161
|
+
}
|
|
8162
|
+
|
|
8163
|
+
.textarea-filled.textarea-tertiary:focus-visible {
|
|
8164
|
+
border-bottom-color: var(--color-tertiary);
|
|
8165
|
+
}
|
|
8166
|
+
|
|
8167
|
+
/* ============================================
|
|
8168
|
+
* SEMANTIC COLORS
|
|
8169
|
+
* ============================================ */
|
|
8170
|
+
|
|
8039
8171
|
.textarea-error {
|
|
8040
8172
|
border-color: var(--color-error);
|
|
8041
8173
|
}
|
|
@@ -8045,6 +8177,10 @@
|
|
|
8045
8177
|
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
|
|
8046
8178
|
}
|
|
8047
8179
|
|
|
8180
|
+
.textarea-filled.textarea-error {
|
|
8181
|
+
border-bottom-color: var(--color-error);
|
|
8182
|
+
}
|
|
8183
|
+
|
|
8048
8184
|
.textarea-success {
|
|
8049
8185
|
border-color: var(--color-success);
|
|
8050
8186
|
}
|
|
@@ -8054,6 +8190,10 @@
|
|
|
8054
8190
|
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 10%, transparent);
|
|
8055
8191
|
}
|
|
8056
8192
|
|
|
8193
|
+
.textarea-filled.textarea-success {
|
|
8194
|
+
border-bottom-color: var(--color-success);
|
|
8195
|
+
}
|
|
8196
|
+
|
|
8057
8197
|
.textarea-warning {
|
|
8058
8198
|
border-color: var(--color-warning);
|
|
8059
8199
|
}
|
|
@@ -8063,7 +8203,14 @@
|
|
|
8063
8203
|
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 10%, transparent);
|
|
8064
8204
|
}
|
|
8065
8205
|
|
|
8066
|
-
|
|
8206
|
+
.textarea-filled.textarea-warning {
|
|
8207
|
+
border-bottom-color: var(--color-warning);
|
|
8208
|
+
}
|
|
8209
|
+
|
|
8210
|
+
/* ============================================
|
|
8211
|
+
* SIZE VARIANTS
|
|
8212
|
+
* ============================================ */
|
|
8213
|
+
|
|
8067
8214
|
.textarea-sm {
|
|
8068
8215
|
min-height: 4rem;
|
|
8069
8216
|
padding: 0.5rem 0.75rem;
|
|
@@ -8080,11 +8227,18 @@
|
|
|
8080
8227
|
border-radius: 0.625rem;
|
|
8081
8228
|
}
|
|
8082
8229
|
|
|
8083
|
-
/*
|
|
8230
|
+
/* ============================================
|
|
8231
|
+
* RESIZE OPTIONS
|
|
8232
|
+
* ============================================ */
|
|
8233
|
+
|
|
8084
8234
|
.textarea-resize-none {
|
|
8085
8235
|
resize: none;
|
|
8086
8236
|
}
|
|
8087
8237
|
|
|
8238
|
+
.textarea-resize-vertical {
|
|
8239
|
+
resize: vertical;
|
|
8240
|
+
}
|
|
8241
|
+
|
|
8088
8242
|
.textarea-resize-horizontal {
|
|
8089
8243
|
resize: horizontal;
|
|
8090
8244
|
}
|
|
@@ -8093,19 +8247,21 @@
|
|
|
8093
8247
|
resize: both;
|
|
8094
8248
|
}
|
|
8095
8249
|
|
|
8096
|
-
/*
|
|
8250
|
+
/* ============================================
|
|
8251
|
+
* AUTO-RESIZE (requires JS)
|
|
8252
|
+
* ============================================ */
|
|
8253
|
+
|
|
8254
|
+
.textarea-auto-resize,
|
|
8097
8255
|
.textarea-autosize {
|
|
8098
8256
|
resize: none;
|
|
8099
8257
|
overflow: hidden;
|
|
8258
|
+
min-height: 3rem;
|
|
8259
|
+
field-sizing: content; /* Modern CSS - auto-grows without JS in supported browsers */
|
|
8100
8260
|
}
|
|
8101
8261
|
|
|
8102
|
-
/*
|
|
8103
|
-
|
|
8104
|
-
|
|
8105
|
-
display: flex;
|
|
8106
|
-
flex-direction: column;
|
|
8107
|
-
gap: 0.25rem;
|
|
8108
|
-
}
|
|
8262
|
+
/* ============================================
|
|
8263
|
+
* CHARACTER COUNTER
|
|
8264
|
+
* ============================================ */
|
|
8109
8265
|
|
|
8110
8266
|
.textarea-counter {
|
|
8111
8267
|
font-size: 0.75rem;
|
|
@@ -8114,15 +8270,331 @@
|
|
|
8114
8270
|
text-align: right;
|
|
8115
8271
|
}
|
|
8116
8272
|
|
|
8117
|
-
.textarea-counter-error
|
|
8273
|
+
.textarea-counter-error,
|
|
8274
|
+
.textarea-counter-exceeded {
|
|
8275
|
+
color: var(--color-error);
|
|
8276
|
+
}
|
|
8277
|
+
|
|
8278
|
+
/* ============================================
|
|
8279
|
+
* CONTAINER STATES
|
|
8280
|
+
* ============================================ */
|
|
8281
|
+
|
|
8282
|
+
.textarea-container-error .textarea-label {
|
|
8283
|
+
color: var(--color-error);
|
|
8284
|
+
}
|
|
8285
|
+
|
|
8286
|
+
.textarea-container-error .textarea-helper {
|
|
8118
8287
|
color: var(--color-error);
|
|
8119
8288
|
}
|
|
8120
8289
|
|
|
8290
|
+
.textarea-container-error .textarea-label-floating {
|
|
8291
|
+
color: var(--color-error);
|
|
8292
|
+
}
|
|
8293
|
+
|
|
8294
|
+
.textarea-container-error .textarea:focus ~ .textarea-label-floating {
|
|
8295
|
+
color: var(--color-error);
|
|
8296
|
+
}
|
|
8297
|
+
|
|
8298
|
+
.textarea-container-success .textarea-label {
|
|
8299
|
+
color: var(--color-success);
|
|
8300
|
+
}
|
|
8301
|
+
|
|
8302
|
+
.textarea-container-success .textarea-helper {
|
|
8303
|
+
color: var(--color-success);
|
|
8304
|
+
}
|
|
8305
|
+
|
|
8306
|
+
.textarea-container-success .textarea-label-floating {
|
|
8307
|
+
color: var(--color-success);
|
|
8308
|
+
}
|
|
8309
|
+
|
|
8310
|
+
.textarea-container-success .textarea:focus ~ .textarea-label-floating {
|
|
8311
|
+
color: var(--color-success);
|
|
8312
|
+
}
|
|
8313
|
+
|
|
8314
|
+
/* ============================================
|
|
8315
|
+
* REDUCE MOTION
|
|
8316
|
+
* ============================================ */
|
|
8317
|
+
|
|
8318
|
+
@media (prefers-reduced-motion: reduce) {
|
|
8319
|
+
.textarea,
|
|
8320
|
+
.textarea-label-floating {
|
|
8321
|
+
transition: none;
|
|
8322
|
+
}
|
|
8323
|
+
}
|
|
8324
|
+
}
|
|
8325
|
+
|
|
8326
|
+
/**
|
|
8327
|
+
* Toggle Button Component Styles
|
|
8328
|
+
* DuskMoonUI - Material Design 3 inspired toggle button
|
|
8329
|
+
* Used for selecting between multiple options or toggling states
|
|
8330
|
+
*/
|
|
8331
|
+
|
|
8332
|
+
@layer components {
|
|
8333
|
+
/* Base toggle button */
|
|
8334
|
+
.toggle-btn {
|
|
8335
|
+
display: inline-flex;
|
|
8336
|
+
align-items: center;
|
|
8337
|
+
justify-content: center;
|
|
8338
|
+
gap: 0.5rem;
|
|
8339
|
+
padding: 0.625rem 1rem;
|
|
8340
|
+
font-size: 0.875rem;
|
|
8341
|
+
font-weight: 500;
|
|
8342
|
+
line-height: 1.25rem;
|
|
8343
|
+
color: var(--color-on-surface-variant);
|
|
8344
|
+
background-color: transparent;
|
|
8345
|
+
border: 1px solid var(--color-outline);
|
|
8346
|
+
border-radius: 0.5rem;
|
|
8347
|
+
cursor: pointer;
|
|
8348
|
+
transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
|
|
8349
|
+
user-select: none;
|
|
8350
|
+
}
|
|
8351
|
+
|
|
8352
|
+
/* Hover state */
|
|
8353
|
+
.toggle-btn:hover:not(:disabled) {
|
|
8354
|
+
background-color: color-mix(in oklch, var(--color-surface-variant) 50%, transparent);
|
|
8355
|
+
border-color: var(--color-outline-variant);
|
|
8356
|
+
}
|
|
8357
|
+
|
|
8358
|
+
/* Active/Selected state */
|
|
8359
|
+
.toggle-btn-active,
|
|
8360
|
+
.toggle-btn.active {
|
|
8361
|
+
color: var(--color-on-primary-container);
|
|
8362
|
+
background-color: var(--color-primary-container);
|
|
8363
|
+
border-color: var(--color-primary);
|
|
8364
|
+
}
|
|
8365
|
+
|
|
8366
|
+
.toggle-btn-active:hover:not(:disabled),
|
|
8367
|
+
.toggle-btn.active:hover:not(:disabled) {
|
|
8368
|
+
background-color: color-mix(in oklch, var(--color-primary-container) 90%, transparent);
|
|
8369
|
+
}
|
|
8370
|
+
|
|
8371
|
+
/* Secondary variant */
|
|
8372
|
+
.toggle-btn-secondary.toggle-btn-active,
|
|
8373
|
+
.toggle-btn-secondary.active {
|
|
8374
|
+
color: var(--color-on-secondary-container);
|
|
8375
|
+
background-color: var(--color-secondary-container);
|
|
8376
|
+
border-color: var(--color-secondary);
|
|
8377
|
+
}
|
|
8378
|
+
|
|
8379
|
+
/* Tertiary variant */
|
|
8380
|
+
.toggle-btn-tertiary.toggle-btn-active,
|
|
8381
|
+
.toggle-btn-tertiary.active {
|
|
8382
|
+
color: var(--color-on-tertiary-container);
|
|
8383
|
+
background-color: var(--color-tertiary-container);
|
|
8384
|
+
border-color: var(--color-tertiary);
|
|
8385
|
+
}
|
|
8386
|
+
|
|
8387
|
+
/* Focus state */
|
|
8388
|
+
.toggle-btn:focus-visible {
|
|
8389
|
+
outline: 2px solid var(--color-primary);
|
|
8390
|
+
outline-offset: 2px;
|
|
8391
|
+
}
|
|
8392
|
+
|
|
8393
|
+
/* Disabled state */
|
|
8394
|
+
.toggle-btn:disabled,
|
|
8395
|
+
.toggle-btn-disabled {
|
|
8396
|
+
opacity: 0.38;
|
|
8397
|
+
cursor: not-allowed;
|
|
8398
|
+
pointer-events: none;
|
|
8399
|
+
}
|
|
8400
|
+
|
|
8401
|
+
/* Size variants */
|
|
8402
|
+
.toggle-btn-sm {
|
|
8403
|
+
padding: 0.375rem 0.75rem;
|
|
8404
|
+
font-size: 0.8125rem;
|
|
8405
|
+
gap: 0.375rem;
|
|
8406
|
+
}
|
|
8407
|
+
|
|
8408
|
+
.toggle-btn-lg {
|
|
8409
|
+
padding: 0.75rem 1.25rem;
|
|
8410
|
+
font-size: 1rem;
|
|
8411
|
+
gap: 0.625rem;
|
|
8412
|
+
}
|
|
8413
|
+
|
|
8414
|
+
/* Toggle button group */
|
|
8415
|
+
.toggle-group {
|
|
8416
|
+
display: inline-flex;
|
|
8417
|
+
align-items: center;
|
|
8418
|
+
gap: 0;
|
|
8419
|
+
border: 1px solid var(--color-outline);
|
|
8420
|
+
border-radius: 0.5rem;
|
|
8421
|
+
padding: 0.25rem;
|
|
8422
|
+
background-color: color-mix(in oklch, var(--color-surface-variant) 30%, transparent);
|
|
8423
|
+
}
|
|
8424
|
+
|
|
8425
|
+
/* Toggle buttons in group */
|
|
8426
|
+
.toggle-group .toggle-btn {
|
|
8427
|
+
border: none;
|
|
8428
|
+
border-radius: 0.375rem;
|
|
8429
|
+
margin: 0;
|
|
8430
|
+
}
|
|
8431
|
+
|
|
8432
|
+
.toggle-group .toggle-btn:not(:last-child) {
|
|
8433
|
+
margin-right: 0.125rem;
|
|
8434
|
+
}
|
|
8435
|
+
|
|
8436
|
+
/* Vertical group */
|
|
8437
|
+
.toggle-group-vertical {
|
|
8438
|
+
flex-direction: column;
|
|
8439
|
+
}
|
|
8440
|
+
|
|
8441
|
+
.toggle-group-vertical .toggle-btn:not(:last-child) {
|
|
8442
|
+
margin-right: 0;
|
|
8443
|
+
margin-bottom: 0.125rem;
|
|
8444
|
+
}
|
|
8445
|
+
|
|
8446
|
+
/* Exclusive selection (radio-like behavior) */
|
|
8447
|
+
.toggle-group-exclusive .toggle-btn {
|
|
8448
|
+
flex: 1;
|
|
8449
|
+
}
|
|
8450
|
+
|
|
8451
|
+
/* Icon-only toggle */
|
|
8452
|
+
.toggle-btn-icon-only {
|
|
8453
|
+
padding: 0.625rem;
|
|
8454
|
+
aspect-ratio: 1;
|
|
8455
|
+
}
|
|
8456
|
+
|
|
8457
|
+
.toggle-btn-icon-only.toggle-btn-sm {
|
|
8458
|
+
padding: 0.5rem;
|
|
8459
|
+
}
|
|
8460
|
+
|
|
8461
|
+
.toggle-btn-icon-only.toggle-btn-lg {
|
|
8462
|
+
padding: 0.875rem;
|
|
8463
|
+
}
|
|
8464
|
+
|
|
8465
|
+
/* With icon */
|
|
8466
|
+
.toggle-icon {
|
|
8467
|
+
width: 1.125rem;
|
|
8468
|
+
height: 1.125rem;
|
|
8469
|
+
flex-shrink: 0;
|
|
8470
|
+
}
|
|
8471
|
+
|
|
8472
|
+
/* Segmented control style */
|
|
8473
|
+
.toggle-segmented {
|
|
8474
|
+
display: inline-flex;
|
|
8475
|
+
align-items: center;
|
|
8476
|
+
gap: 0;
|
|
8477
|
+
background-color: var(--color-surface);
|
|
8478
|
+
border: 1px solid var(--color-outline-variant);
|
|
8479
|
+
border-radius: 0.5rem;
|
|
8480
|
+
padding: 0.25rem;
|
|
8481
|
+
}
|
|
8482
|
+
|
|
8483
|
+
.toggle-segmented .toggle-btn {
|
|
8484
|
+
border: none;
|
|
8485
|
+
background-color: transparent;
|
|
8486
|
+
border-radius: 0.375rem;
|
|
8487
|
+
}
|
|
8488
|
+
|
|
8489
|
+
.toggle-segmented .toggle-btn.toggle-btn-active,
|
|
8490
|
+
.toggle-segmented .toggle-btn.active {
|
|
8491
|
+
background-color: var(--color-surface-variant);
|
|
8492
|
+
border-color: transparent;
|
|
8493
|
+
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
|
|
8494
|
+
}
|
|
8495
|
+
|
|
8496
|
+
/* Chip-like toggle */
|
|
8497
|
+
.toggle-chip {
|
|
8498
|
+
border-radius: 1rem;
|
|
8499
|
+
padding: 0.5rem 1rem;
|
|
8500
|
+
}
|
|
8501
|
+
|
|
8502
|
+
.toggle-chip.toggle-btn-active,
|
|
8503
|
+
.toggle-chip.active {
|
|
8504
|
+
background-color: var(--color-primary-container);
|
|
8505
|
+
border-color: var(--color-primary-container);
|
|
8506
|
+
}
|
|
8507
|
+
|
|
8508
|
+
/* Outlined variant */
|
|
8509
|
+
.toggle-outlined {
|
|
8510
|
+
background-color: transparent;
|
|
8511
|
+
}
|
|
8512
|
+
|
|
8513
|
+
.toggle-outlined.toggle-btn-active,
|
|
8514
|
+
.toggle-outlined.active {
|
|
8515
|
+
background-color: color-mix(in oklch, var(--color-primary) 10%, transparent);
|
|
8516
|
+
}
|
|
8517
|
+
|
|
8518
|
+
/* Filled variant */
|
|
8519
|
+
.toggle-filled {
|
|
8520
|
+
background-color: var(--color-surface-variant);
|
|
8521
|
+
border: none;
|
|
8522
|
+
}
|
|
8523
|
+
|
|
8524
|
+
.toggle-filled.toggle-btn-active,
|
|
8525
|
+
.toggle-filled.active {
|
|
8526
|
+
background-color: var(--color-primary);
|
|
8527
|
+
color: var(--color-on-primary);
|
|
8528
|
+
}
|
|
8529
|
+
|
|
8530
|
+
/* With badge/indicator */
|
|
8531
|
+
.toggle-badge {
|
|
8532
|
+
position: relative;
|
|
8533
|
+
}
|
|
8534
|
+
|
|
8535
|
+
.toggle-badge::after {
|
|
8536
|
+
content: "";
|
|
8537
|
+
position: absolute;
|
|
8538
|
+
top: 0.25rem;
|
|
8539
|
+
right: 0.25rem;
|
|
8540
|
+
width: 0.5rem;
|
|
8541
|
+
height: 0.5rem;
|
|
8542
|
+
background-color: var(--color-error);
|
|
8543
|
+
border-radius: 50%;
|
|
8544
|
+
border: 2px solid var(--color-surface);
|
|
8545
|
+
}
|
|
8546
|
+
|
|
8547
|
+
/* Full width */
|
|
8548
|
+
.toggle-full {
|
|
8549
|
+
width: 100%;
|
|
8550
|
+
}
|
|
8551
|
+
|
|
8552
|
+
.toggle-group-full {
|
|
8553
|
+
width: 100%;
|
|
8554
|
+
}
|
|
8555
|
+
|
|
8556
|
+
.toggle-group-full .toggle-btn {
|
|
8557
|
+
flex: 1;
|
|
8558
|
+
}
|
|
8559
|
+
|
|
8560
|
+
/* Loading state */
|
|
8561
|
+
.toggle-loading {
|
|
8562
|
+
position: relative;
|
|
8563
|
+
pointer-events: none;
|
|
8564
|
+
}
|
|
8565
|
+
|
|
8566
|
+
.toggle-loading::after {
|
|
8567
|
+
content: "";
|
|
8568
|
+
position: absolute;
|
|
8569
|
+
top: 50%;
|
|
8570
|
+
left: 50%;
|
|
8571
|
+
width: 1rem;
|
|
8572
|
+
height: 1rem;
|
|
8573
|
+
margin-top: -0.5rem;
|
|
8574
|
+
margin-left: -0.5rem;
|
|
8575
|
+
border: 2px solid currentColor;
|
|
8576
|
+
border-top-color: transparent;
|
|
8577
|
+
border-radius: 50%;
|
|
8578
|
+
animation: toggle-spin 0.6s linear infinite;
|
|
8579
|
+
}
|
|
8580
|
+
|
|
8581
|
+
@keyframes toggle-spin {
|
|
8582
|
+
0% {
|
|
8583
|
+
transform: rotate(0deg);
|
|
8584
|
+
}
|
|
8585
|
+
100% {
|
|
8586
|
+
transform: rotate(360deg);
|
|
8587
|
+
}
|
|
8588
|
+
}
|
|
8589
|
+
|
|
8121
8590
|
/* Reduce Motion */
|
|
8122
8591
|
@media (prefers-reduced-motion: reduce) {
|
|
8123
|
-
.
|
|
8592
|
+
.toggle-btn {
|
|
8124
8593
|
transition: none;
|
|
8125
8594
|
}
|
|
8595
|
+
.toggle-loading::after {
|
|
8596
|
+
animation: none;
|
|
8597
|
+
}
|
|
8126
8598
|
}
|
|
8127
8599
|
}
|
|
8128
8600
|
|
|
@@ -8420,12 +8892,24 @@
|
|
|
8420
8892
|
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
|
|
8421
8893
|
}
|
|
8422
8894
|
|
|
8423
|
-
.tree-select-trigger:disabled
|
|
8895
|
+
.tree-select-trigger:disabled,
|
|
8896
|
+
.tree-select-trigger[aria-disabled="true"] {
|
|
8424
8897
|
cursor: not-allowed;
|
|
8425
8898
|
opacity: 0.5;
|
|
8426
8899
|
background-color: var(--color-surface-container);
|
|
8427
8900
|
}
|
|
8428
8901
|
|
|
8902
|
+
/* Support for div-based trigger (when using clear button) */
|
|
8903
|
+
div.tree-select-trigger {
|
|
8904
|
+
user-select: none;
|
|
8905
|
+
}
|
|
8906
|
+
|
|
8907
|
+
div.tree-select-trigger:focus-visible {
|
|
8908
|
+
outline: none;
|
|
8909
|
+
border-color: var(--color-primary);
|
|
8910
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
|
|
8911
|
+
}
|
|
8912
|
+
|
|
8429
8913
|
/* Value Display */
|
|
8430
8914
|
.tree-select-value {
|
|
8431
8915
|
flex: 1;
|
|
@@ -8486,6 +8970,11 @@
|
|
|
8486
8970
|
background-color: var(--color-surface-container-high);
|
|
8487
8971
|
}
|
|
8488
8972
|
|
|
8973
|
+
.tree-select-clear svg {
|
|
8974
|
+
width: 1rem;
|
|
8975
|
+
height: 1rem;
|
|
8976
|
+
}
|
|
8977
|
+
|
|
8489
8978
|
/* Tree Select Dropdown */
|
|
8490
8979
|
.tree-select-dropdown {
|
|
8491
8980
|
position: absolute;
|
|
@@ -8508,9 +8997,10 @@
|
|
|
8508
8997
|
display: block;
|
|
8509
8998
|
}
|
|
8510
8999
|
|
|
8511
|
-
/* Popover API Support
|
|
9000
|
+
/* Popover API Support */
|
|
8512
9001
|
.tree-select-dropdown[popover] {
|
|
8513
|
-
/* Reset browser defaults
|
|
9002
|
+
/* Reset browser defaults for proper positioning */
|
|
9003
|
+
position: absolute;
|
|
8514
9004
|
inset: unset;
|
|
8515
9005
|
margin: 0;
|
|
8516
9006
|
border: 1px solid var(--color-outline-variant);
|
|
@@ -8520,6 +9010,21 @@
|
|
|
8520
9010
|
display: block;
|
|
8521
9011
|
}
|
|
8522
9012
|
|
|
9013
|
+
/* CSS Anchor Positioning for modern browsers */
|
|
9014
|
+
@supports (anchor-name: --tree-select) {
|
|
9015
|
+
.tree-select {
|
|
9016
|
+
anchor-name: --tree-select;
|
|
9017
|
+
}
|
|
9018
|
+
|
|
9019
|
+
.tree-select-dropdown[popover] {
|
|
9020
|
+
position-anchor: --tree-select;
|
|
9021
|
+
top: anchor(bottom);
|
|
9022
|
+
left: anchor(left);
|
|
9023
|
+
right: anchor(right);
|
|
9024
|
+
position-try-fallbacks: flip-block;
|
|
9025
|
+
}
|
|
9026
|
+
}
|
|
9027
|
+
|
|
8523
9028
|
/* Search Input in Dropdown */
|
|
8524
9029
|
.tree-select-search {
|
|
8525
9030
|
display: flex;
|
|
@@ -10524,6 +11029,12 @@
|
|
|
10524
11029
|
padding: 0 1rem;
|
|
10525
11030
|
background-color: var(--color-surface);
|
|
10526
11031
|
color: var(--color-on-surface);
|
|
11032
|
+
box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
|
|
11033
|
+
}
|
|
11034
|
+
|
|
11035
|
+
/* Static App Bar (default) */
|
|
11036
|
+
.appbar-static {
|
|
11037
|
+
position: static;
|
|
10527
11038
|
}
|
|
10528
11039
|
|
|
10529
11040
|
/* Fixed App Bar */
|
|
@@ -10542,19 +11053,47 @@
|
|
|
10542
11053
|
z-index: 1000;
|
|
10543
11054
|
}
|
|
10544
11055
|
|
|
10545
|
-
/* App Bar
|
|
11056
|
+
/* Top App Bar (default) */
|
|
11057
|
+
.appbar-top {
|
|
11058
|
+
top: 0;
|
|
11059
|
+
}
|
|
11060
|
+
|
|
11061
|
+
/* Bottom App Bar */
|
|
11062
|
+
.appbar-bottom {
|
|
11063
|
+
position: fixed;
|
|
11064
|
+
bottom: 0;
|
|
11065
|
+
left: 0;
|
|
11066
|
+
right: 0;
|
|
11067
|
+
top: auto;
|
|
11068
|
+
z-index: 1000;
|
|
11069
|
+
}
|
|
11070
|
+
|
|
11071
|
+
/* App Bar with Shadow (elevated) */
|
|
10546
11072
|
.appbar-elevated {
|
|
10547
11073
|
box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
|
|
10548
11074
|
}
|
|
10549
11075
|
|
|
11076
|
+
/* Flat App Bar (no shadow) */
|
|
11077
|
+
.appbar-flat {
|
|
11078
|
+
box-shadow: none;
|
|
11079
|
+
}
|
|
11080
|
+
|
|
10550
11081
|
/* App Bar with Border */
|
|
10551
11082
|
.appbar-bordered {
|
|
10552
11083
|
border-bottom: 1px solid var(--color-outline-variant);
|
|
11084
|
+
box-shadow: none;
|
|
10553
11085
|
}
|
|
10554
11086
|
|
|
10555
11087
|
/* Transparent App Bar */
|
|
10556
11088
|
.appbar-transparent {
|
|
10557
11089
|
background-color: transparent;
|
|
11090
|
+
box-shadow: none;
|
|
11091
|
+
}
|
|
11092
|
+
|
|
11093
|
+
/* Backdrop Blur */
|
|
11094
|
+
.appbar-blur {
|
|
11095
|
+
backdrop-filter: blur(8px);
|
|
11096
|
+
-webkit-backdrop-filter: blur(8px);
|
|
10558
11097
|
}
|
|
10559
11098
|
|
|
10560
11099
|
/* App Bar Navigation Icon */
|
|
@@ -10664,17 +11203,125 @@
|
|
|
10664
11203
|
padding: 0 0.75rem;
|
|
10665
11204
|
}
|
|
10666
11205
|
|
|
10667
|
-
.appbar-sm .appbar-title {
|
|
10668
|
-
font-size: 1rem;
|
|
11206
|
+
.appbar-sm .appbar-title {
|
|
11207
|
+
font-size: 1rem;
|
|
11208
|
+
}
|
|
11209
|
+
|
|
11210
|
+
.appbar-lg {
|
|
11211
|
+
min-height: 5rem;
|
|
11212
|
+
padding: 0 1.5rem;
|
|
11213
|
+
}
|
|
11214
|
+
|
|
11215
|
+
.appbar-lg .appbar-title {
|
|
11216
|
+
font-size: 1.5rem;
|
|
11217
|
+
}
|
|
11218
|
+
|
|
11219
|
+
/* Compact Size */
|
|
11220
|
+
.appbar-compact {
|
|
11221
|
+
min-height: 3rem;
|
|
11222
|
+
padding: 0 0.75rem;
|
|
11223
|
+
}
|
|
11224
|
+
|
|
11225
|
+
.appbar-compact .appbar-title,
|
|
11226
|
+
.appbar-compact .appbar-heading {
|
|
11227
|
+
font-size: 1rem;
|
|
11228
|
+
line-height: 1.5rem;
|
|
11229
|
+
}
|
|
11230
|
+
|
|
11231
|
+
.appbar-compact .appbar-nav,
|
|
11232
|
+
.appbar-compact .appbar-action,
|
|
11233
|
+
.appbar-compact .appbar-back {
|
|
11234
|
+
width: 2rem;
|
|
11235
|
+
height: 2rem;
|
|
11236
|
+
}
|
|
11237
|
+
|
|
11238
|
+
/* Comfortable Size */
|
|
11239
|
+
.appbar-comfortable {
|
|
11240
|
+
min-height: 5rem;
|
|
11241
|
+
padding: 0 1.5rem;
|
|
11242
|
+
}
|
|
11243
|
+
|
|
11244
|
+
.appbar-comfortable .appbar-title,
|
|
11245
|
+
.appbar-comfortable .appbar-heading {
|
|
11246
|
+
font-size: 1.5rem;
|
|
11247
|
+
line-height: 2rem;
|
|
11248
|
+
}
|
|
11249
|
+
|
|
11250
|
+
/* Section Classes */
|
|
11251
|
+
.appbar-leading {
|
|
11252
|
+
display: flex;
|
|
11253
|
+
align-items: center;
|
|
11254
|
+
gap: 0.25rem;
|
|
11255
|
+
flex-shrink: 0;
|
|
11256
|
+
}
|
|
11257
|
+
|
|
11258
|
+
.appbar-trailing {
|
|
11259
|
+
display: flex;
|
|
11260
|
+
align-items: center;
|
|
11261
|
+
gap: 0.25rem;
|
|
11262
|
+
flex-shrink: 0;
|
|
11263
|
+
margin-left: auto;
|
|
11264
|
+
}
|
|
11265
|
+
|
|
11266
|
+
/* Heading Text */
|
|
11267
|
+
.appbar-heading {
|
|
11268
|
+
font-size: 1.25rem;
|
|
11269
|
+
font-weight: 500;
|
|
11270
|
+
line-height: 1.75rem;
|
|
11271
|
+
margin: 0;
|
|
11272
|
+
overflow: hidden;
|
|
11273
|
+
text-overflow: ellipsis;
|
|
11274
|
+
white-space: nowrap;
|
|
11275
|
+
}
|
|
11276
|
+
|
|
11277
|
+
/* Back Button */
|
|
11278
|
+
.appbar-back {
|
|
11279
|
+
display: flex;
|
|
11280
|
+
align-items: center;
|
|
11281
|
+
justify-content: center;
|
|
11282
|
+
width: 2.5rem;
|
|
11283
|
+
height: 2.5rem;
|
|
11284
|
+
color: var(--color-on-surface);
|
|
11285
|
+
background-color: transparent;
|
|
11286
|
+
border: none;
|
|
11287
|
+
border-radius: 50%;
|
|
11288
|
+
cursor: pointer;
|
|
11289
|
+
transition: background-color 150ms ease-in-out;
|
|
11290
|
+
flex-shrink: 0;
|
|
11291
|
+
}
|
|
11292
|
+
|
|
11293
|
+
.appbar-back:hover {
|
|
11294
|
+
background-color: var(--color-surface-container);
|
|
11295
|
+
}
|
|
11296
|
+
|
|
11297
|
+
.appbar-back:focus-visible {
|
|
11298
|
+
outline: 2px solid var(--color-primary);
|
|
11299
|
+
outline-offset: 2px;
|
|
11300
|
+
}
|
|
11301
|
+
|
|
11302
|
+
/* Search Input (direct on element) */
|
|
11303
|
+
.appbar .appbar-search,
|
|
11304
|
+
input.appbar-search {
|
|
11305
|
+
flex: 1;
|
|
11306
|
+
max-width: 32rem;
|
|
11307
|
+
padding: 0.5rem 1rem;
|
|
11308
|
+
font-size: 0.875rem;
|
|
11309
|
+
color: var(--color-on-surface);
|
|
11310
|
+
background-color: var(--color-surface-container);
|
|
11311
|
+
border: none;
|
|
11312
|
+
border-radius: 9999px;
|
|
11313
|
+
transition: background-color 150ms ease-in-out;
|
|
10669
11314
|
}
|
|
10670
11315
|
|
|
10671
|
-
.appbar-
|
|
10672
|
-
|
|
10673
|
-
|
|
11316
|
+
.appbar .appbar-search:focus,
|
|
11317
|
+
input.appbar-search:focus {
|
|
11318
|
+
outline: none;
|
|
11319
|
+
background-color: var(--color-surface-container-high);
|
|
10674
11320
|
}
|
|
10675
11321
|
|
|
10676
|
-
.appbar
|
|
10677
|
-
|
|
11322
|
+
.appbar .appbar-search::placeholder,
|
|
11323
|
+
input.appbar-search::placeholder {
|
|
11324
|
+
color: var(--color-on-surface-variant);
|
|
10678
11325
|
}
|
|
10679
11326
|
|
|
10680
11327
|
/* Color Variants */
|
|
@@ -10715,10 +11362,53 @@
|
|
|
10715
11362
|
color: var(--color-on-secondary-container);
|
|
10716
11363
|
}
|
|
10717
11364
|
|
|
11365
|
+
.appbar-secondary .appbar-subtitle {
|
|
11366
|
+
color: var(--color-on-secondary);
|
|
11367
|
+
opacity: 0.8;
|
|
11368
|
+
}
|
|
11369
|
+
|
|
11370
|
+
.appbar-tertiary {
|
|
11371
|
+
background-color: var(--color-tertiary);
|
|
11372
|
+
color: var(--color-on-tertiary);
|
|
11373
|
+
}
|
|
11374
|
+
|
|
11375
|
+
.appbar-tertiary .appbar-nav,
|
|
11376
|
+
.appbar-tertiary .appbar-action {
|
|
11377
|
+
color: var(--color-on-tertiary);
|
|
11378
|
+
}
|
|
11379
|
+
|
|
11380
|
+
.appbar-tertiary .appbar-nav:hover,
|
|
11381
|
+
.appbar-tertiary .appbar-action:hover {
|
|
11382
|
+
background-color: var(--color-tertiary-container);
|
|
11383
|
+
color: var(--color-on-tertiary-container);
|
|
11384
|
+
}
|
|
11385
|
+
|
|
11386
|
+
.appbar-tertiary .appbar-subtitle {
|
|
11387
|
+
color: var(--color-on-tertiary);
|
|
11388
|
+
opacity: 0.8;
|
|
11389
|
+
}
|
|
11390
|
+
|
|
11391
|
+
/* Surface Variants */
|
|
10718
11392
|
.appbar-surface {
|
|
11393
|
+
background-color: var(--color-surface);
|
|
11394
|
+
}
|
|
11395
|
+
|
|
11396
|
+
.appbar-surface-container {
|
|
10719
11397
|
background-color: var(--color-surface-container);
|
|
10720
11398
|
}
|
|
10721
11399
|
|
|
11400
|
+
.appbar-surface-container-low {
|
|
11401
|
+
background-color: var(--color-surface-container-low);
|
|
11402
|
+
}
|
|
11403
|
+
|
|
11404
|
+
.appbar-surface-container-high {
|
|
11405
|
+
background-color: var(--color-surface-container-high);
|
|
11406
|
+
}
|
|
11407
|
+
|
|
11408
|
+
.appbar-surface-container-highest {
|
|
11409
|
+
background-color: var(--color-surface-container-highest);
|
|
11410
|
+
}
|
|
11411
|
+
|
|
10722
11412
|
/* Center Title */
|
|
10723
11413
|
.appbar-center {
|
|
10724
11414
|
justify-content: space-between;
|
|
@@ -13134,6 +13824,72 @@
|
|
|
13134
13824
|
transform: scale(1);
|
|
13135
13825
|
}
|
|
13136
13826
|
|
|
13827
|
+
/* Direct popover structure (without .popover-content wrapper) */
|
|
13828
|
+
.popover.popover-show,
|
|
13829
|
+
.popover.show {
|
|
13830
|
+
opacity: 1;
|
|
13831
|
+
visibility: visible;
|
|
13832
|
+
}
|
|
13833
|
+
|
|
13834
|
+
/* Popover as direct overlay (simpler structure) */
|
|
13835
|
+
.popover[class*="popover-top"],
|
|
13836
|
+
.popover[class*="popover-bottom"],
|
|
13837
|
+
.popover[class*="popover-left"],
|
|
13838
|
+
.popover[class*="popover-right"] {
|
|
13839
|
+
position: absolute;
|
|
13840
|
+
z-index: 1050;
|
|
13841
|
+
min-width: 12rem;
|
|
13842
|
+
max-width: 20rem;
|
|
13843
|
+
padding: 1rem;
|
|
13844
|
+
background-color: var(--color-surface);
|
|
13845
|
+
border: 1px solid var(--color-outline-variant);
|
|
13846
|
+
border-radius: 0.75rem;
|
|
13847
|
+
box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
|
|
13848
|
+
opacity: 0;
|
|
13849
|
+
visibility: hidden;
|
|
13850
|
+
transition: opacity 150ms ease-out, visibility 150ms ease-out;
|
|
13851
|
+
}
|
|
13852
|
+
|
|
13853
|
+
.popover[class*="popover-top"].popover-show,
|
|
13854
|
+
.popover[class*="popover-bottom"].popover-show,
|
|
13855
|
+
.popover[class*="popover-left"].popover-show,
|
|
13856
|
+
.popover[class*="popover-right"].popover-show {
|
|
13857
|
+
opacity: 1;
|
|
13858
|
+
visibility: visible;
|
|
13859
|
+
}
|
|
13860
|
+
|
|
13861
|
+
/* Direct position: Top */
|
|
13862
|
+
.popover.popover-top:not(:has(.popover-content)) {
|
|
13863
|
+
bottom: 100%;
|
|
13864
|
+
left: 50%;
|
|
13865
|
+
transform: translateX(-50%);
|
|
13866
|
+
margin-bottom: 0.75rem;
|
|
13867
|
+
}
|
|
13868
|
+
|
|
13869
|
+
/* Direct position: Bottom */
|
|
13870
|
+
.popover.popover-bottom:not(:has(.popover-content)) {
|
|
13871
|
+
top: 100%;
|
|
13872
|
+
left: 50%;
|
|
13873
|
+
transform: translateX(-50%);
|
|
13874
|
+
margin-top: 0.75rem;
|
|
13875
|
+
}
|
|
13876
|
+
|
|
13877
|
+
/* Direct position: Left */
|
|
13878
|
+
.popover.popover-left:not(:has(.popover-content)) {
|
|
13879
|
+
right: 100%;
|
|
13880
|
+
top: 50%;
|
|
13881
|
+
transform: translateY(-50%);
|
|
13882
|
+
margin-right: 0.75rem;
|
|
13883
|
+
}
|
|
13884
|
+
|
|
13885
|
+
/* Direct position: Right */
|
|
13886
|
+
.popover.popover-right:not(:has(.popover-content)) {
|
|
13887
|
+
left: 100%;
|
|
13888
|
+
top: 50%;
|
|
13889
|
+
transform: translateY(-50%);
|
|
13890
|
+
margin-left: 0.75rem;
|
|
13891
|
+
}
|
|
13892
|
+
|
|
13137
13893
|
/* Popover Arrow */
|
|
13138
13894
|
.popover-arrow {
|
|
13139
13895
|
position: absolute;
|
|
@@ -13310,12 +14066,33 @@
|
|
|
13310
14066
|
}
|
|
13311
14067
|
|
|
13312
14068
|
/* Color Variants */
|
|
14069
|
+
/*
|
|
14070
|
+
* Color intensity for themed popovers.
|
|
14071
|
+
* Override this variable to adjust how strongly colors appear:
|
|
14072
|
+
* - 20% = subtle tint
|
|
14073
|
+
* - 30% = moderate (default)
|
|
14074
|
+
* - 40% = bold/prominent
|
|
14075
|
+
*/
|
|
14076
|
+
.popover {
|
|
14077
|
+
--popover-color-intensity: 30%;
|
|
14078
|
+
}
|
|
14079
|
+
|
|
14080
|
+
/* Dark variant */
|
|
13313
14081
|
.popover-dark .popover-content {
|
|
13314
14082
|
background-color: var(--color-on-surface);
|
|
13315
14083
|
color: var(--color-surface);
|
|
13316
14084
|
border-color: transparent;
|
|
13317
14085
|
}
|
|
13318
14086
|
|
|
14087
|
+
.popover-dark[class*="popover-top"],
|
|
14088
|
+
.popover-dark[class*="popover-bottom"],
|
|
14089
|
+
.popover-dark[class*="popover-left"],
|
|
14090
|
+
.popover-dark[class*="popover-right"] {
|
|
14091
|
+
background-color: var(--color-on-surface);
|
|
14092
|
+
color: var(--color-surface);
|
|
14093
|
+
border-color: transparent;
|
|
14094
|
+
}
|
|
14095
|
+
|
|
13319
14096
|
.popover-dark .popover-arrow {
|
|
13320
14097
|
background-color: var(--color-on-surface);
|
|
13321
14098
|
border-color: transparent;
|
|
@@ -13330,16 +14107,106 @@
|
|
|
13330
14107
|
opacity: 0.9;
|
|
13331
14108
|
}
|
|
13332
14109
|
|
|
14110
|
+
/* Primary variant */
|
|
13333
14111
|
.popover-primary .popover-content {
|
|
13334
|
-
background-color: var(--color-primary-
|
|
14112
|
+
background-color: color-mix(in oklch, var(--color-primary) var(--popover-color-intensity), var(--color-surface));
|
|
14113
|
+
border-color: var(--color-primary);
|
|
14114
|
+
}
|
|
14115
|
+
|
|
14116
|
+
.popover-primary[class*="popover-top"],
|
|
14117
|
+
.popover-primary[class*="popover-bottom"],
|
|
14118
|
+
.popover-primary[class*="popover-left"],
|
|
14119
|
+
.popover-primary[class*="popover-right"] {
|
|
14120
|
+
background-color: color-mix(in oklch, var(--color-primary) var(--popover-color-intensity), var(--color-surface));
|
|
13335
14121
|
border-color: var(--color-primary);
|
|
13336
14122
|
}
|
|
13337
14123
|
|
|
13338
14124
|
.popover-primary .popover-arrow {
|
|
13339
|
-
background-color: var(--color-primary-
|
|
14125
|
+
background-color: color-mix(in oklch, var(--color-primary) var(--popover-color-intensity), var(--color-surface));
|
|
13340
14126
|
border-color: var(--color-primary);
|
|
13341
14127
|
}
|
|
13342
14128
|
|
|
14129
|
+
.popover-primary .popover-body {
|
|
14130
|
+
color: var(--color-on-surface);
|
|
14131
|
+
}
|
|
14132
|
+
|
|
14133
|
+
.popover-primary .popover-title {
|
|
14134
|
+
color: var(--color-on-surface);
|
|
14135
|
+
}
|
|
14136
|
+
|
|
14137
|
+
/* Secondary variant */
|
|
14138
|
+
.popover-secondary .popover-content {
|
|
14139
|
+
background-color: color-mix(in oklch, var(--color-secondary) var(--popover-color-intensity), var(--color-surface));
|
|
14140
|
+
border-color: var(--color-secondary);
|
|
14141
|
+
}
|
|
14142
|
+
|
|
14143
|
+
.popover-secondary[class*="popover-top"],
|
|
14144
|
+
.popover-secondary[class*="popover-bottom"],
|
|
14145
|
+
.popover-secondary[class*="popover-left"],
|
|
14146
|
+
.popover-secondary[class*="popover-right"] {
|
|
14147
|
+
background-color: color-mix(in oklch, var(--color-secondary) var(--popover-color-intensity), var(--color-surface));
|
|
14148
|
+
border-color: var(--color-secondary);
|
|
14149
|
+
}
|
|
14150
|
+
|
|
14151
|
+
.popover-secondary .popover-arrow {
|
|
14152
|
+
background-color: color-mix(in oklch, var(--color-secondary) var(--popover-color-intensity), var(--color-surface));
|
|
14153
|
+
border-color: var(--color-secondary);
|
|
14154
|
+
}
|
|
14155
|
+
|
|
14156
|
+
.popover-secondary .popover-body {
|
|
14157
|
+
color: var(--color-on-surface);
|
|
14158
|
+
}
|
|
14159
|
+
|
|
14160
|
+
.popover-secondary .popover-title {
|
|
14161
|
+
color: var(--color-on-surface);
|
|
14162
|
+
}
|
|
14163
|
+
|
|
14164
|
+
/* Tertiary variant */
|
|
14165
|
+
.popover-tertiary .popover-content {
|
|
14166
|
+
background-color: color-mix(in oklch, var(--color-tertiary) var(--popover-color-intensity), var(--color-surface));
|
|
14167
|
+
border-color: var(--color-tertiary);
|
|
14168
|
+
}
|
|
14169
|
+
|
|
14170
|
+
.popover-tertiary[class*="popover-top"],
|
|
14171
|
+
.popover-tertiary[class*="popover-bottom"],
|
|
14172
|
+
.popover-tertiary[class*="popover-left"],
|
|
14173
|
+
.popover-tertiary[class*="popover-right"] {
|
|
14174
|
+
background-color: color-mix(in oklch, var(--color-tertiary) var(--popover-color-intensity), var(--color-surface));
|
|
14175
|
+
border-color: var(--color-tertiary);
|
|
14176
|
+
}
|
|
14177
|
+
|
|
14178
|
+
.popover-tertiary .popover-arrow {
|
|
14179
|
+
background-color: color-mix(in oklch, var(--color-tertiary) var(--popover-color-intensity), var(--color-surface));
|
|
14180
|
+
border-color: var(--color-tertiary);
|
|
14181
|
+
}
|
|
14182
|
+
|
|
14183
|
+
.popover-tertiary .popover-body {
|
|
14184
|
+
color: var(--color-on-surface);
|
|
14185
|
+
}
|
|
14186
|
+
|
|
14187
|
+
.popover-tertiary .popover-title {
|
|
14188
|
+
color: var(--color-on-surface);
|
|
14189
|
+
}
|
|
14190
|
+
|
|
14191
|
+
/* Surface highest variant */
|
|
14192
|
+
.popover-surface-highest .popover-content {
|
|
14193
|
+
background-color: var(--color-surface-container-highest);
|
|
14194
|
+
border-color: var(--color-outline-variant);
|
|
14195
|
+
}
|
|
14196
|
+
|
|
14197
|
+
.popover-surface-highest[class*="popover-top"],
|
|
14198
|
+
.popover-surface-highest[class*="popover-bottom"],
|
|
14199
|
+
.popover-surface-highest[class*="popover-left"],
|
|
14200
|
+
.popover-surface-highest[class*="popover-right"] {
|
|
14201
|
+
background-color: var(--color-surface-container-highest);
|
|
14202
|
+
border-color: var(--color-outline-variant);
|
|
14203
|
+
}
|
|
14204
|
+
|
|
14205
|
+
.popover-surface-highest .popover-arrow {
|
|
14206
|
+
background-color: var(--color-surface-container-highest);
|
|
14207
|
+
border-color: var(--color-outline-variant);
|
|
14208
|
+
}
|
|
14209
|
+
|
|
13343
14210
|
/* Hover Trigger */
|
|
13344
14211
|
.popover-hover:hover .popover-content,
|
|
13345
14212
|
.popover-hover:focus-within .popover-content {
|
|
@@ -13414,11 +14281,160 @@
|
|
|
13414
14281
|
justify-content: center;
|
|
13415
14282
|
}
|
|
13416
14283
|
|
|
14284
|
+
/* ========================================
|
|
14285
|
+
* HTML Popover API Support
|
|
14286
|
+
* Uses native [popover] attribute with :popover-open pseudo-class
|
|
14287
|
+
* ======================================== */
|
|
14288
|
+
|
|
14289
|
+
/* Native popover base styles */
|
|
14290
|
+
.popover[popover] {
|
|
14291
|
+
position: fixed;
|
|
14292
|
+
inset: unset;
|
|
14293
|
+
z-index: 1050;
|
|
14294
|
+
min-width: 12rem;
|
|
14295
|
+
max-width: 20rem;
|
|
14296
|
+
padding: 1rem;
|
|
14297
|
+
margin: 0;
|
|
14298
|
+
background-color: var(--color-surface);
|
|
14299
|
+
border: 1px solid var(--color-outline-variant);
|
|
14300
|
+
border-radius: 0.75rem;
|
|
14301
|
+
box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
|
|
14302
|
+
opacity: 0;
|
|
14303
|
+
transform: scale(0.95);
|
|
14304
|
+
transition: opacity 150ms ease-out, transform 150ms ease-out, overlay 150ms ease-out allow-discrete, display 150ms ease-out allow-discrete;
|
|
14305
|
+
}
|
|
14306
|
+
|
|
14307
|
+
/* Popover open state */
|
|
14308
|
+
.popover[popover]:popover-open {
|
|
14309
|
+
opacity: 1;
|
|
14310
|
+
transform: scale(1);
|
|
14311
|
+
}
|
|
14312
|
+
|
|
14313
|
+
/* Starting state for entry animation */
|
|
14314
|
+
@starting-style {
|
|
14315
|
+
.popover[popover]:popover-open {
|
|
14316
|
+
opacity: 0;
|
|
14317
|
+
transform: scale(0.95);
|
|
14318
|
+
}
|
|
14319
|
+
}
|
|
14320
|
+
|
|
14321
|
+
/* Native popover backdrop */
|
|
14322
|
+
.popover[popover]::backdrop {
|
|
14323
|
+
background-color: rgb(0 0 0 / 0);
|
|
14324
|
+
transition: background-color 150ms ease-out, overlay 150ms ease-out allow-discrete, display 150ms ease-out allow-discrete;
|
|
14325
|
+
}
|
|
14326
|
+
|
|
14327
|
+
.popover[popover]:popover-open::backdrop {
|
|
14328
|
+
background-color: rgb(0 0 0 / 0.1);
|
|
14329
|
+
}
|
|
14330
|
+
|
|
14331
|
+
@starting-style {
|
|
14332
|
+
.popover[popover]:popover-open::backdrop {
|
|
14333
|
+
background-color: rgb(0 0 0 / 0);
|
|
14334
|
+
}
|
|
14335
|
+
}
|
|
14336
|
+
|
|
14337
|
+
/* Native popover with modal backdrop */
|
|
14338
|
+
.popover-modal[popover]::backdrop {
|
|
14339
|
+
background-color: rgb(0 0 0 / 0);
|
|
14340
|
+
transition: background-color 150ms ease-out, overlay 150ms ease-out allow-discrete, display 150ms ease-out allow-discrete;
|
|
14341
|
+
}
|
|
14342
|
+
|
|
14343
|
+
.popover-modal[popover]:popover-open::backdrop {
|
|
14344
|
+
background-color: rgb(0 0 0 / 0.3);
|
|
14345
|
+
}
|
|
14346
|
+
|
|
14347
|
+
@starting-style {
|
|
14348
|
+
.popover-modal[popover]:popover-open::backdrop {
|
|
14349
|
+
background-color: rgb(0 0 0 / 0);
|
|
14350
|
+
}
|
|
14351
|
+
}
|
|
14352
|
+
|
|
14353
|
+
/* Native popover color variants */
|
|
14354
|
+
.popover-primary[popover] {
|
|
14355
|
+
background-color: color-mix(in oklch, var(--color-primary) var(--popover-color-intensity), var(--color-surface));
|
|
14356
|
+
border-color: var(--color-primary);
|
|
14357
|
+
}
|
|
14358
|
+
|
|
14359
|
+
.popover-primary[popover] .popover-body {
|
|
14360
|
+
color: var(--color-on-surface);
|
|
14361
|
+
}
|
|
14362
|
+
|
|
14363
|
+
.popover-primary[popover] .popover-title {
|
|
14364
|
+
color: var(--color-on-surface);
|
|
14365
|
+
}
|
|
14366
|
+
|
|
14367
|
+
.popover-secondary[popover] {
|
|
14368
|
+
background-color: color-mix(in oklch, var(--color-secondary) var(--popover-color-intensity), var(--color-surface));
|
|
14369
|
+
border-color: var(--color-secondary);
|
|
14370
|
+
}
|
|
14371
|
+
|
|
14372
|
+
.popover-secondary[popover] .popover-body {
|
|
14373
|
+
color: var(--color-on-surface);
|
|
14374
|
+
}
|
|
14375
|
+
|
|
14376
|
+
.popover-secondary[popover] .popover-title {
|
|
14377
|
+
color: var(--color-on-surface);
|
|
14378
|
+
}
|
|
14379
|
+
|
|
14380
|
+
.popover-tertiary[popover] {
|
|
14381
|
+
background-color: color-mix(in oklch, var(--color-tertiary) var(--popover-color-intensity), var(--color-surface));
|
|
14382
|
+
border-color: var(--color-tertiary);
|
|
14383
|
+
}
|
|
14384
|
+
|
|
14385
|
+
.popover-tertiary[popover] .popover-body {
|
|
14386
|
+
color: var(--color-on-surface);
|
|
14387
|
+
}
|
|
14388
|
+
|
|
14389
|
+
.popover-tertiary[popover] .popover-title {
|
|
14390
|
+
color: var(--color-on-surface);
|
|
14391
|
+
}
|
|
14392
|
+
|
|
14393
|
+
.popover-dark[popover] {
|
|
14394
|
+
background-color: var(--color-on-surface);
|
|
14395
|
+
border-color: transparent;
|
|
14396
|
+
}
|
|
14397
|
+
|
|
14398
|
+
.popover-dark[popover] .popover-body {
|
|
14399
|
+
color: var(--color-surface);
|
|
14400
|
+
opacity: 0.9;
|
|
14401
|
+
}
|
|
14402
|
+
|
|
14403
|
+
.popover-dark[popover] .popover-title {
|
|
14404
|
+
color: var(--color-surface);
|
|
14405
|
+
}
|
|
14406
|
+
|
|
14407
|
+
.popover-surface-highest[popover] {
|
|
14408
|
+
background-color: var(--color-surface-container-highest);
|
|
14409
|
+
border-color: var(--color-outline-variant);
|
|
14410
|
+
}
|
|
14411
|
+
|
|
14412
|
+
/* Native popover size variants */
|
|
14413
|
+
.popover-sm[popover] {
|
|
14414
|
+
min-width: 8rem;
|
|
14415
|
+
max-width: 14rem;
|
|
14416
|
+
padding: 0.75rem;
|
|
14417
|
+
}
|
|
14418
|
+
|
|
14419
|
+
.popover-lg[popover] {
|
|
14420
|
+
min-width: 16rem;
|
|
14421
|
+
max-width: 28rem;
|
|
14422
|
+
padding: 1.25rem;
|
|
14423
|
+
}
|
|
14424
|
+
|
|
14425
|
+
.popover-full[popover] {
|
|
14426
|
+
min-width: 0;
|
|
14427
|
+
max-width: none;
|
|
14428
|
+
width: max-content;
|
|
14429
|
+
}
|
|
14430
|
+
|
|
13417
14431
|
/* Reduce Motion */
|
|
13418
14432
|
@media (prefers-reduced-motion: reduce) {
|
|
13419
14433
|
.popover-content,
|
|
13420
14434
|
.popover-close,
|
|
13421
|
-
.popover-menu-item
|
|
14435
|
+
.popover-menu-item,
|
|
14436
|
+
.popover[popover],
|
|
14437
|
+
.popover[popover]::backdrop {
|
|
13422
14438
|
transition: none;
|
|
13423
14439
|
}
|
|
13424
14440
|
}
|