@jungherz-de/glasskit 1.35.1 → 1.36.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/CHANGELOG.md +35 -0
- package/README.md +11 -8
- package/SKILL.md +10 -7
- package/glasskit-styles.js +2 -2
- package/glasskit.css +42 -13
- package/glasskit.min.css +1 -1
- package/glasskit.min.css.map +1 -1
- package/package.json +1 -1
package/glasskit.css
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* ============================================================
|
|
2
2
|
GLASSKIT COMPONENT LIBRARY
|
|
3
|
-
Jungherz GmbH – v1.
|
|
3
|
+
Jungherz GmbH – v1.36.0
|
|
4
4
|
|
|
5
5
|
Features:
|
|
6
6
|
- Scoped Reset (box-sizing fix)
|
|
@@ -928,7 +928,11 @@ a.glass-btn { display: inline-flex; text-decoration: none; }
|
|
|
928
928
|
stroke-linecap: round; stroke-linejoin: round;
|
|
929
929
|
}
|
|
930
930
|
|
|
931
|
+
/* No margin of its own (since 1.36.0): the browser's 1em above and below
|
|
932
|
+
made the card 82px high instead of 54px wherever no page reset reached
|
|
933
|
+
the p — GlassKit's own showcase, the shadow root of <glk-status>. */
|
|
931
934
|
.glass-status p {
|
|
935
|
+
margin: 0;
|
|
932
936
|
color: var(--gl-status-color, var(--gl-color-text-muted));
|
|
933
937
|
font-size: var(--gl-font-size-sm);
|
|
934
938
|
font-weight: var(--gl-font-weight-normal);
|
|
@@ -3078,7 +3082,7 @@ a.glass-tab-bar__item { text-decoration: none; color: inherit; }
|
|
|
3078
3082
|
.glass-list__item:not(:last-child)::after {
|
|
3079
3083
|
content: '';
|
|
3080
3084
|
position: absolute;
|
|
3081
|
-
inset-inline-start: var(--gl-list-item-divider-inset, calc(var(--gl-space-lg) + 28px + var(--gl-space-sm)));
|
|
3085
|
+
inset-inline-start: var(--gl-list-item-divider-inset, calc(var(--gl-space-lg) + var(--gl-list-leading-width, 28px) + var(--gl-space-sm)));
|
|
3082
3086
|
inset-inline-end: var(--gl-space-lg);
|
|
3083
3087
|
bottom: 0;
|
|
3084
3088
|
height: 1px;
|
|
@@ -3091,7 +3095,7 @@ a.glass-tab-bar__item { text-decoration: none; color: inherit; }
|
|
|
3091
3095
|
inset-inline-start: var(--gl-list-item-divider-inset, var(--gl-space-lg));
|
|
3092
3096
|
}
|
|
3093
3097
|
.glass-list__item:has(.glass-list__leading--lg:not([hidden])):not(:last-child)::after {
|
|
3094
|
-
inset-inline-start: var(--gl-list-item-divider-inset, calc(var(--gl-space-lg) + 40px + var(--gl-space-sm)));
|
|
3098
|
+
inset-inline-start: var(--gl-list-item-divider-inset, calc(var(--gl-space-lg) + var(--gl-list-leading-width, 40px) + var(--gl-space-sm)));
|
|
3095
3099
|
}
|
|
3096
3100
|
/* A drag handle at the start of the row (since 1.34.0): its width is the
|
|
3097
3101
|
page's, so the line runs from the row's padding, as in a row without an
|
|
@@ -3138,7 +3142,9 @@ a.glass-tab-bar__item { text-decoration: none; color: inherit; }
|
|
|
3138
3142
|
/* The chosen row of a list beside its detail (since 1.34.0) — the entry an
|
|
3139
3143
|
editor next to it shows: a pill of raised glass inside the row, as the
|
|
3140
3144
|
chosen tree row and the active row of a sidebar, with the title in the
|
|
3141
|
-
heading colour
|
|
3145
|
+
heading colour (since 1.36.0; before, the title kept its own text colour
|
|
3146
|
+
and only the row took the heading colour) and the icon in the accent.
|
|
3147
|
+
The state is .is-selected;
|
|
3142
3148
|
aria-current="true" (or aria-selected in a listbox) tells assistive
|
|
3143
3149
|
technology. Hover and press leave it as it is; the keyboard ring stays
|
|
3144
3150
|
around the row. While the row is a drop target of a drag, the pill makes
|
|
@@ -3157,7 +3163,7 @@ a.glass-tab-bar__item { text-decoration: none; color: inherit; }
|
|
|
3157
3163
|
pointer-events: none;
|
|
3158
3164
|
}
|
|
3159
3165
|
.glass-list__item--interactive.is-selected:is(:hover, :active, :focus-visible) { background: transparent; }
|
|
3160
|
-
.glass-list__item.is-selected .glass-list__title { font-weight: var(--gl-list-item-selected-weight, var(--gl-font-weight-semibold)); }
|
|
3166
|
+
.glass-list__item.is-selected .glass-list__title { color: inherit; font-weight: var(--gl-list-item-selected-weight, var(--gl-font-weight-semibold)); }
|
|
3161
3167
|
.glass-list__item.is-selected .glass-list__leading { color: var(--gl-color-primary-text); }
|
|
3162
3168
|
|
|
3163
3169
|
.glass-list__item--danger { color: var(--gl-color-error); }
|
|
@@ -3168,9 +3174,12 @@ a.glass-tab-bar__item { text-decoration: none; color: inherit; }
|
|
|
3168
3174
|
.glass-list__item--accent .glass-list__title,
|
|
3169
3175
|
.glass-list__item--accent .glass-list__leading { color: inherit; }
|
|
3170
3176
|
|
|
3177
|
+
/* --gl-list-leading-width (since 1.36.0) widens the box for more than an
|
|
3178
|
+
icon — a time and a chip before the text; the divider follows it. A
|
|
3179
|
+
length: for anything else set --gl-list-item-divider-inset as well. */
|
|
3171
3180
|
.glass-list__leading {
|
|
3172
3181
|
flex-shrink: 0;
|
|
3173
|
-
width: 28px;
|
|
3182
|
+
width: var(--gl-list-leading-width, 28px);
|
|
3174
3183
|
height: 28px;
|
|
3175
3184
|
display: flex;
|
|
3176
3185
|
align-items: center;
|
|
@@ -3192,7 +3201,7 @@ a.glass-tab-bar__item { text-decoration: none; color: inherit; }
|
|
|
3192
3201
|
stroke-linejoin: round;
|
|
3193
3202
|
}
|
|
3194
3203
|
.glass-list__leading--lg {
|
|
3195
|
-
width: 40px;
|
|
3204
|
+
width: var(--gl-list-leading-width, 40px);
|
|
3196
3205
|
height: 40px;
|
|
3197
3206
|
border-radius: var(--gl-radius-xs);
|
|
3198
3207
|
overflow: hidden;
|
|
@@ -4189,7 +4198,10 @@ dialog.glass-sheet-overlay::backdrop { background: transparent; }
|
|
|
4189
4198
|
usable: no scrim and no blur, and only the panel takes the pointer — for
|
|
4190
4199
|
a sheet opened with show() instead of showModal(), beside a list whose
|
|
4191
4200
|
chosen row stays in view. --gl-sheet-z-index (1000) stacks it. */
|
|
4192
|
-
/* The inset is the panel's margin: the dialog's own padding is undone.
|
|
4201
|
+
/* The inset is the panel's margin: the dialog's own padding is undone.
|
|
4202
|
+
--gl-sheet-side-inset-block-start and -block-end (since 1.36.0) set the
|
|
4203
|
+
top and the bottom on their own — below a fixed top bar, say — and fall
|
|
4204
|
+
back to --gl-sheet-side-inset, which stays the side's and the way in. */
|
|
4193
4205
|
.glass-sheet-overlay--start,
|
|
4194
4206
|
.glass-sheet-overlay--end { align-items: stretch; }
|
|
4195
4207
|
.glass-sheet-overlay--start { justify-content: flex-start; }
|
|
@@ -4197,6 +4209,7 @@ dialog.glass-sheet-overlay::backdrop { background: transparent; }
|
|
|
4197
4209
|
:is(.glass-sheet-overlay--start, .glass-sheet-overlay--end) .glass-sheet {
|
|
4198
4210
|
width: min(var(--gl-sheet-side-width, 440px), 100% - 2 * var(--gl-sheet-side-inset, 16px)); max-height: none;
|
|
4199
4211
|
margin: var(--gl-sheet-side-inset, 16px);
|
|
4212
|
+
margin-block: var(--gl-sheet-side-inset-block-start, var(--gl-sheet-side-inset, 16px)) var(--gl-sheet-side-inset-block-end, var(--gl-sheet-side-inset, 16px));
|
|
4200
4213
|
display: flex; flex-direction: column;
|
|
4201
4214
|
padding-top: var(--gl-space-lg);
|
|
4202
4215
|
border-radius: var(--gl-radius-card);
|
|
@@ -4229,7 +4242,9 @@ dialog.glass-sheet-overlay::backdrop { background: transparent; }
|
|
|
4229
4242
|
(__eyebrow), something before it (__leading, a mark or an icon chip),
|
|
4230
4243
|
something after it (__trailing, a badge) and a close button (__close) at
|
|
4231
4244
|
its end. __head takes the title's place and its spacing; a title alone
|
|
4232
|
-
in it stands as it did without one.
|
|
4245
|
+
in it stands as it did without one. __subtitle (since 1.36.0) stands
|
|
4246
|
+
below the title, in the heading — a badge there leaves the title its
|
|
4247
|
+
width, where __trailing beside it squeezed it in a narrow sheet. */
|
|
4233
4248
|
.glass-sheet__head { display: flex; align-items: center; gap: var(--gl-space-sm); margin: 0 0 8px; }
|
|
4234
4249
|
.glass-sheet__heading { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
|
|
4235
4250
|
.glass-sheet__head .glass-sheet__title { margin: 0; }
|
|
@@ -4238,17 +4253,30 @@ dialog.glass-sheet-overlay::backdrop { background: transparent; }
|
|
|
4238
4253
|
letter-spacing: 0.3px; text-transform: uppercase;
|
|
4239
4254
|
color: var(--gl-color-text-muted);
|
|
4240
4255
|
}
|
|
4256
|
+
.glass-sheet__subtitle {
|
|
4257
|
+
display: flex; flex-wrap: wrap; align-items: center; gap: var(--gl-space-xs);
|
|
4258
|
+
margin-top: 2px;
|
|
4259
|
+
font-size: var(--gl-font-size-sm);
|
|
4260
|
+
color: var(--gl-color-text-muted);
|
|
4261
|
+
}
|
|
4241
4262
|
.glass-sheet__leading,
|
|
4242
4263
|
.glass-sheet__trailing { flex: none; display: flex; align-items: center; gap: var(--gl-space-xs); }
|
|
4264
|
+
/* An empty head takes no room either (since 1.36.0): display: flex beat
|
|
4265
|
+
the hidden attribute's own rule, and a sheet without a title started its
|
|
4266
|
+
content 8px lower than in 1.34.0. */
|
|
4267
|
+
.glass-sheet__head[hidden],
|
|
4243
4268
|
.glass-sheet__eyebrow[hidden],
|
|
4269
|
+
.glass-sheet__subtitle[hidden],
|
|
4244
4270
|
.glass-sheet__leading[hidden],
|
|
4245
4271
|
.glass-sheet__trailing[hidden],
|
|
4246
4272
|
.glass-sheet__close[hidden] { display: none; }
|
|
4247
|
-
/* A round glass button, 32px, with a 44px target.
|
|
4273
|
+
/* A round glass button, 32px, with a 44px target. --gl-sheet-close-size,
|
|
4274
|
+
--gl-sheet-close-icon-size (16px) and --gl-sheet-close-icon-stroke (2)
|
|
4275
|
+
resize it and its glyph (since 1.36.0). */
|
|
4248
4276
|
.glass-sheet__close {
|
|
4249
4277
|
-webkit-appearance: none; appearance: none;
|
|
4250
4278
|
flex: none; position: relative;
|
|
4251
|
-
width: 32px; height: 32px; margin-inline-end: -4px; padding: 0;
|
|
4279
|
+
width: var(--gl-sheet-close-size, 32px); height: var(--gl-sheet-close-size, 32px); margin-inline-end: -4px; padding: 0;
|
|
4252
4280
|
display: inline-flex; align-items: center; justify-content: center;
|
|
4253
4281
|
border: 1px solid var(--gl-border-subtle); border-radius: 50%;
|
|
4254
4282
|
background: var(--gl-surface-2);
|
|
@@ -4262,8 +4290,9 @@ dialog.glass-sheet-overlay::backdrop { background: transparent; }
|
|
|
4262
4290
|
.glass-sheet__close:hover { background: var(--gl-surface-3); color: var(--gl-color-text); }
|
|
4263
4291
|
.glass-sheet__close:focus-visible { box-shadow: var(--gl-shadow-focus), var(--gl-inset-subtle); }
|
|
4264
4292
|
.glass-sheet__close svg {
|
|
4265
|
-
width: 16px; height: 16px;
|
|
4266
|
-
|
|
4293
|
+
width: var(--gl-sheet-close-icon-size, 16px); height: var(--gl-sheet-close-icon-size, 16px);
|
|
4294
|
+
fill: none; stroke: currentColor;
|
|
4295
|
+
stroke-width: var(--gl-sheet-close-icon-stroke, 2); stroke-linecap: round;
|
|
4267
4296
|
}
|
|
4268
4297
|
.glass-sheet__body { font-size: var(--gl-font-size-base); line-height: 1.55; }
|
|
4269
4298
|
.glass-sheet__actions { display: flex; flex-direction: column; gap: 8px; margin-top: 16px; }
|