@aparte/core 0.16.8 → 0.16.10
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/client/aparte-client.d.ts +57 -2
- package/dist/client/aparte-client.d.ts.map +1 -1
- package/dist/client/lifecycle-events.d.ts +8 -1
- package/dist/client/lifecycle-events.d.ts.map +1 -1
- package/dist/client/stream-adapter.d.ts +8 -0
- package/dist/client/stream-adapter.d.ts.map +1 -1
- package/dist/components/bubble/aparte-chat-bubble.d.ts +6 -0
- package/dist/components/bubble/aparte-chat-bubble.d.ts.map +1 -1
- package/dist/components/composer/aparte-composer-attachments.d.ts.map +1 -1
- package/dist/components/composer/aparte-composer-input.d.ts +1 -1
- package/dist/components/composer/aparte-composer.d.ts.map +1 -1
- package/dist/components/conversation-list/aparte-conversation-list.d.ts +5 -0
- package/dist/components/conversation-list/aparte-conversation-list.d.ts.map +1 -1
- package/dist/components/scroll-rail/aparte-scroll-rail.d.ts +91 -10
- package/dist/components/scroll-rail/aparte-scroll-rail.d.ts.map +1 -1
- package/dist/components/status/aparte-chat-status.d.ts +41 -3
- package/dist/components/status/aparte-chat-status.d.ts.map +1 -1
- package/dist/components/viewport/aparte-chat-viewport.d.ts +8 -1
- package/dist/components/viewport/aparte-chat-viewport.d.ts.map +1 -1
- package/dist/conversations/conversation-manager.d.ts +29 -0
- package/dist/conversations/conversation-manager.d.ts.map +1 -1
- package/dist/conversations/index.d.ts +1 -1
- package/dist/conversations/index.d.ts.map +1 -1
- package/dist/custom-elements.json +10916 -10397
- package/dist/{dialog-triggers-D8wNICrT.js → dialog-triggers-cYGTlfZf.js} +128 -30
- package/dist/{dialog-triggers-D8wNICrT.js.map → dialog-triggers-cYGTlfZf.js.map} +1 -1
- package/dist/elicitation/panel.d.ts.map +1 -1
- package/dist/index.css +162 -40
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +447 -94
- package/dist/index.js.map +1 -1
- package/dist/index.node.d.ts +1 -1
- package/dist/index.node.d.ts.map +1 -1
- package/dist/index.node.js +1 -1
- package/dist/index.node.js.map +1 -1
- package/dist/interop/element-props.d.ts.map +1 -1
- package/dist/primitives/select/aparte-select.d.ts +25 -3
- package/dist/primitives/select/aparte-select.d.ts.map +1 -1
- package/dist/types/events.d.ts +4 -2
- package/dist/types/events.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"panel.d.ts","sourceRoot":"","sources":["../../src/elicitation/panel.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACR,uBAAuB,EAK1B,MAAM,YAAY,CAAC;AAWpB,MAAM,WAAW,qBAAqB;IAClC,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC;IACzB;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,gEAAgE;IAChE,UAAU,IAAI,OAAO,CAAC;IACtB,yDAAyD;IACzD,UAAU,IAAI,OAAO,CAAC;IACtB,kDAAkD;IAClD,KAAK,IAAI,IAAI,CAAC;IACd;;;;;;;;;;;;;;;;;;OAkBG;IACH,IAAI,IAAI,QAAQ,GAAG,MAAM,CAAC;IAC1B,wEAAwE;IACxE,UAAU,IAAI,OAAO,CAAC;IACtB,mGAAmG;IACnG,OAAO,IAAI,IAAI,CAAC;IAChB;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IAC/C;;;;;;;;;;;OAWG;IACH,OAAO,IAAI,IAAI,CAAC;CACnB;AAyCD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,WAAW,CAalG;
|
|
1
|
+
{"version":3,"file":"panel.d.ts","sourceRoot":"","sources":["../../src/elicitation/panel.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACR,uBAAuB,EAK1B,MAAM,YAAY,CAAC;AAWpB,MAAM,WAAW,qBAAqB;IAClC,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC;IACzB;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,gEAAgE;IAChE,UAAU,IAAI,OAAO,CAAC;IACtB,yDAAyD;IACzD,UAAU,IAAI,OAAO,CAAC;IACtB,kDAAkD;IAClD,KAAK,IAAI,IAAI,CAAC;IACd;;;;;;;;;;;;;;;;;;OAkBG;IACH,IAAI,IAAI,QAAQ,GAAG,MAAM,CAAC;IAC1B,wEAAwE;IACxE,UAAU,IAAI,OAAO,CAAC;IACtB,mGAAmG;IACnG,OAAO,IAAI,IAAI,CAAC;IAChB;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IAC/C;;;;;;;;;;;OAWG;IACH,OAAO,IAAI,IAAI,CAAC;CACnB;AAyCD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,WAAW,CAalG;AA8aD,wBAAgB,qBAAqB,CACjC,OAAO,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,EAChC,MAAM,EAAE,uBAAuB,EAC/B,QAAQ,EAAE,MAAM,IAAI,GACrB,qBAAqB,CAevB"}
|
package/dist/index.css
CHANGED
|
@@ -326,8 +326,15 @@
|
|
|
326
326
|
and a 14px mark are a minimap's measures, not spacing steps. */
|
|
327
327
|
--aparte-scroll-rail-tick-size: 14px;
|
|
328
328
|
--aparte-scroll-rail-tick-thickness: 2px;
|
|
329
|
-
|
|
330
|
-
|
|
329
|
+
/* What a tick is to a POINTER, as opposed to what it is to the eye: WCAG 2.5.8's
|
|
330
|
+
24px minimum. The drawn line stays 14×2 — this sizes the pseudo-element around it,
|
|
331
|
+
and the gap below derives from it so the pitch rises with the zone. The rail is
|
|
332
|
+
`display: none` under `(pointer: coarse)`, so 2.5.8's 24px is the bar here and not
|
|
333
|
+
2.5.5's 44px. */
|
|
334
|
+
--aparte-scroll-rail-hit-size: 24px;
|
|
335
|
+
/* The share of the transcript's height the rail may take: a list of ticks, not a
|
|
336
|
+
minimap, so it is the height of its list up to this, centred, and scrolls past it. */
|
|
337
|
+
--aparte-scroll-rail-share: .6;
|
|
331
338
|
|
|
332
339
|
/* Context gauge, ring variant — a diameter, and a stroke in the ring's own 36-unit
|
|
333
340
|
box. Literals like the rail's: a 22px ring is a toolbar's measure, not a spacing step. */
|
|
@@ -721,7 +728,12 @@ aparte-chat {
|
|
|
721
728
|
--aparte-viewport-padding: var(--aparte-space-8);
|
|
722
729
|
--aparte-scrollbar-thumb: var(--aparte-neutral);
|
|
723
730
|
--aparte-input-padding-x: var(--aparte-space-6);
|
|
724
|
-
|
|
731
|
+
/* The editor at rest is the control height: half of what the control size leaves once
|
|
732
|
+
one line of its own text is taken out. It used to be a flat 10px, which made the editor
|
|
733
|
+
44px beside 36px buttons and, the row aligning at the end, sat the send button 4px
|
|
734
|
+
below the editor's centre. Derived from the editor's own line (1lh), so a coarse
|
|
735
|
+
pointer's 44 and a changed font both keep the editor and its buttons on one centre. */
|
|
736
|
+
--aparte-input-padding-y: calc((var(--aparte-composer-control-size) - 1lh) / 2);
|
|
725
737
|
--aparte-conv-list-gap: var(--aparte-space-1);
|
|
726
738
|
--aparte-conv-item-gap: var(--aparte-space-3);
|
|
727
739
|
--aparte-elic-option-radius: var(--aparte-radius-md);
|
|
@@ -841,8 +853,14 @@ aparte-chat {
|
|
|
841
853
|
--aparte-track: color-mix(in srgb, var(--aparte-text) 8%, var(--aparte-bg));
|
|
842
854
|
--aparte-skeleton-base: var(--aparte-track);
|
|
843
855
|
/* The rail is as wide as its widest tick (the current one is 1.6× the resting size);
|
|
844
|
-
it used to be a 20px literal clipping a 22.4px tick.
|
|
845
|
-
|
|
856
|
+
it used to be a 20px literal clipping a 22.4px tick. The floor is one tick's
|
|
857
|
+
pressable zone: the rail clips, so a column narrower than the zone would cut the
|
|
858
|
+
target back below 24px on the very edge a reader aims at. */
|
|
859
|
+
--aparte-scroll-rail-width: max(var(--aparte-scroll-rail-hit-size), calc(var(--aparte-scroll-rail-tick-size) * 1.6));
|
|
860
|
+
/* The distance between two ticks IS the zone minus the line: gap + thickness = the
|
|
861
|
+
24px pitch, so the zones tile edge to edge. Growing the zone alone would have
|
|
862
|
+
overlapped them by 14px and left the z-order to decide every press. */
|
|
863
|
+
--aparte-scroll-rail-gap: calc(var(--aparte-scroll-rail-hit-size) - var(--aparte-scroll-rail-tick-thickness));
|
|
846
864
|
--aparte-skeleton-shine: var(--aparte-surface-3);
|
|
847
865
|
/* The line it stands for: as tall as the content type, and a gap that is the rest of
|
|
848
866
|
the content line, so the text that replaces it lands where it was (T21). It was 12px
|
|
@@ -2932,9 +2950,15 @@ aparte-icon {
|
|
|
2932
2950
|
--aparte-thumbnail-border: var(--aparte-attachment-chip-border);
|
|
2933
2951
|
}
|
|
2934
2952
|
|
|
2935
|
-
/* Only an image
|
|
2936
|
-
aparteGlobalConfig.setHostHandlers(). Undeclared, it is a picture, not a control.
|
|
2937
|
-
|
|
2953
|
+
/* Only an image the app declared it can preview is a button — see
|
|
2954
|
+
aparteGlobalConfig.setHostHandlers(). Undeclared, it is a picture, not a control.
|
|
2955
|
+
|
|
2956
|
+
Two selectors because the two strips carry the role in two places, and both are
|
|
2957
|
+
right. The sent-message strip has no ✕, so its TILE is the whole control. The
|
|
2958
|
+
composer's tile wraps the remove button, so the control there is the IMAGE — a
|
|
2959
|
+
button inside a button is what the role on the tile used to make. */
|
|
2960
|
+
.aparte-thumb--image[role='button'],
|
|
2961
|
+
.aparte-thumbnail__image[role='button'] {
|
|
2938
2962
|
cursor: pointer;
|
|
2939
2963
|
}
|
|
2940
2964
|
|
|
@@ -2943,6 +2967,15 @@ aparte-icon {
|
|
|
2943
2967
|
outline-offset: var(--aparte-focus-outline-offset);
|
|
2944
2968
|
}
|
|
2945
2969
|
|
|
2970
|
+
/* Inset, unlike the tile's. The image fills the tile edge to edge and the tile is the
|
|
2971
|
+
frame (`overflow: hidden` above), so an outline drawn outward is cropped away — the
|
|
2972
|
+
focus ring would simply not exist. Pulled in by its own width, it lands just inside
|
|
2973
|
+
the border and stays whole. */
|
|
2974
|
+
.aparte-thumbnail__image[role='button']:focus-visible {
|
|
2975
|
+
outline: var(--aparte-focus-outline-width) solid var(--aparte-border-focus);
|
|
2976
|
+
outline-offset: calc(-1 * var(--aparte-focus-outline-width));
|
|
2977
|
+
}
|
|
2978
|
+
|
|
2946
2979
|
.aparte-thumb--file {
|
|
2947
2980
|
display: flex;
|
|
2948
2981
|
align-items: center;
|
|
@@ -3507,11 +3540,12 @@ aparte-icon {
|
|
|
3507
3540
|
* script the caller owns: a <details open> toggling itself, a positioning library placing
|
|
3508
3541
|
* a menu next to its trigger. Nothing here reaches for position:fixed on your behalf.
|
|
3509
3542
|
*
|
|
3510
|
-
* <div class="aparte-tabs" role="tablist">
|
|
3511
|
-
* <button class="aparte-tabs__tab" role="tab" aria-selected="true">Preview</button>
|
|
3512
|
-
* <button class="aparte-tabs__tab" role="tab" aria-selected="false">Code</button>
|
|
3543
|
+
* <div class="aparte-tabs" role="tablist" aria-label="Result view">
|
|
3544
|
+
* <button class="aparte-tabs__tab" role="tab" type="button" id="tabs-a-preview" aria-controls="tabs-a-preview-panel" aria-selected="true" tabindex="0">Preview</button>
|
|
3545
|
+
* <button class="aparte-tabs__tab" role="tab" type="button" id="tabs-a-code" aria-controls="tabs-a-code-panel" aria-selected="false" tabindex="-1">Code</button>
|
|
3513
3546
|
* </div>
|
|
3514
|
-
* <div class="aparte-tabs__panel" role="tabpanel">The panel for the selected tab.</div>
|
|
3547
|
+
* <div class="aparte-tabs__panel" role="tabpanel" id="tabs-a-preview-panel" aria-labelledby="tabs-a-preview">The panel for the selected tab.</div>
|
|
3548
|
+
* <div class="aparte-tabs__panel" role="tabpanel" id="tabs-a-code-panel" aria-labelledby="tabs-a-code" hidden>The panel the other tab opens.</div>
|
|
3515
3549
|
*
|
|
3516
3550
|
* <div class="aparte-accordion">
|
|
3517
3551
|
* <details class="aparte-accordion__item" open>
|
|
@@ -3558,17 +3592,29 @@ aparte-icon {
|
|
|
3558
3592
|
the current tab, which reads as a control rather than as navigation. Neither moves
|
|
3559
3593
|
anything: `aria-selected` is what says which tab is current, and the app owns it.
|
|
3560
3594
|
|
|
3561
|
-
|
|
3562
|
-
|
|
3563
|
-
|
|
3595
|
+
The markup below is the whole contract of the role, and all of it is yours to write:
|
|
3596
|
+
ONE tab stop for the list (`tabindex="0"` on the selected tab, `-1` on the rest),
|
|
3597
|
+
`aria-controls` from each tab to its `role="tabpanel"`, and `aria-labelledby` back.
|
|
3598
|
+
The app also owns the ArrowLeft/ArrowRight/Home/End handler that moves the selection
|
|
3599
|
+
and the stop together — `@aparte/plugin-artifacts`' card has a working one to copy.
|
|
3600
|
+
A tablist without those is louder than plain buttons and says less: every tab a tab
|
|
3601
|
+
stop, and none of them naming what it opens.
|
|
3602
|
+
|
|
3603
|
+
<div class="aparte-tabs aparte-tabs--underline" role="tablist" aria-label="Result view">
|
|
3604
|
+
<button class="aparte-tabs__tab" role="tab" type="button" id="tabs-u-preview" aria-controls="tabs-u-preview-panel" aria-selected="true" tabindex="0">Preview</button>
|
|
3605
|
+
<button class="aparte-tabs__tab" role="tab" type="button" id="tabs-u-code" aria-controls="tabs-u-code-panel" aria-selected="false" tabindex="-1">Code</button>
|
|
3564
3606
|
</div>
|
|
3565
|
-
<div class="aparte-tabs__panel" role="tabpanel">What the selected tab shows.</div>
|
|
3607
|
+
<div class="aparte-tabs__panel" role="tabpanel" id="tabs-u-preview-panel" aria-labelledby="tabs-u-preview">What the selected tab shows.</div>
|
|
3608
|
+
<div class="aparte-tabs__panel" role="tabpanel" id="tabs-u-code-panel" aria-labelledby="tabs-u-code" hidden>What the other tab shows.</div>
|
|
3566
3609
|
|
|
3567
|
-
<div class="aparte-tabs aparte-tabs--segmented" role="tablist">
|
|
3568
|
-
<button class="aparte-tabs__tab" role="tab" aria-selected="true">Light</button>
|
|
3569
|
-
<button class="aparte-tabs__tab" role="tab" aria-selected="false">Dark</button>
|
|
3570
|
-
<button class="aparte-tabs__tab" role="tab" aria-selected="false">System</button>
|
|
3610
|
+
<div class="aparte-tabs aparte-tabs--segmented" role="tablist" aria-label="Theme">
|
|
3611
|
+
<button class="aparte-tabs__tab" role="tab" type="button" id="tabs-s-light" aria-controls="tabs-s-light-panel" aria-selected="true" tabindex="0">Light</button>
|
|
3612
|
+
<button class="aparte-tabs__tab" role="tab" type="button" id="tabs-s-dark" aria-controls="tabs-s-dark-panel" aria-selected="false" tabindex="-1">Dark</button>
|
|
3613
|
+
<button class="aparte-tabs__tab" role="tab" type="button" id="tabs-s-system" aria-controls="tabs-s-system-panel" aria-selected="false" tabindex="-1">System</button>
|
|
3571
3614
|
</div>
|
|
3615
|
+
<div class="aparte-tabs__panel" role="tabpanel" id="tabs-s-light-panel" aria-labelledby="tabs-s-light">The light theme's settings.</div>
|
|
3616
|
+
<div class="aparte-tabs__panel" role="tabpanel" id="tabs-s-dark-panel" aria-labelledby="tabs-s-dark" hidden>The dark theme's settings.</div>
|
|
3617
|
+
<div class="aparte-tabs__panel" role="tabpanel" id="tabs-s-system-panel" aria-labelledby="tabs-s-system" hidden>Whatever the system asks for.</div>
|
|
3572
3618
|
========================================= */
|
|
3573
3619
|
|
|
3574
3620
|
.aparte-tabs {
|
|
@@ -4792,7 +4838,10 @@ aparte-progress-spinner:not([value]) svg {
|
|
|
4792
4838
|
|
|
4793
4839
|
/* Both host shapes core recognises get the same layout: the vanilla
|
|
4794
4840
|
<aparte-chat> element AND a framework wrapper's `[data-aparte-chat]` root
|
|
4795
|
-
(React/Vue/Svelte
|
|
4841
|
+
(React/Vue/Svelte render `<div data-aparte-chat class="aparte-chat-container">`;
|
|
4842
|
+
Angular's host IS `<aparte-chat>` and its shell is the inner
|
|
4843
|
+
`.aparte-chat-container`, which carries no attribute here — the overlay rules
|
|
4844
|
+
below list that third shape for exactly that reason). `[data-aparte-chat]`
|
|
4796
4845
|
is the SAME selector core uses to resolve the host (see aparte-client /
|
|
4797
4846
|
aparte-chat-bubble), so one rule covers both — no wrapper-specific class. */
|
|
4798
4847
|
aparte-chat,
|
|
@@ -4870,12 +4919,14 @@ aparte-chat[overlay-composer] > aparte-chat-viewport,
|
|
|
4870
4919
|
z-index: 0;
|
|
4871
4920
|
}
|
|
4872
4921
|
|
|
4873
|
-
/* The bottom stack paints over the absolutely positioned viewport. `:not()`
|
|
4874
|
-
|
|
4875
|
-
|
|
4876
|
-
|
|
4877
|
-
|
|
4878
|
-
|
|
4922
|
+
/* The bottom stack paints over the absolutely positioned viewport. The `:not()` names
|
|
4923
|
+
what is NOT the stack: the viewport (the scroll button lives inside it), and the
|
|
4924
|
+
scroll rail, which is a child of the shell too. `position: relative` here beat the
|
|
4925
|
+
rail's own `absolute`, so in overlay mode the floating rail dropped into the flow
|
|
4926
|
+
and pushed the composer down — the one child that floats by design has to be named. */
|
|
4927
|
+
aparte-chat[overlay-composer] > :not(aparte-chat-viewport, aparte-scroll-rail),
|
|
4928
|
+
[data-aparte-chat][overlay-composer] > :not(aparte-chat-viewport, aparte-scroll-rail),
|
|
4929
|
+
.aparte-chat-container[overlay-composer] > :not(aparte-chat-viewport, aparte-scroll-rail) {
|
|
4879
4930
|
position: relative;
|
|
4880
4931
|
z-index: var(--aparte-z-raised);
|
|
4881
4932
|
}
|
|
@@ -7217,26 +7268,76 @@ aparte-context[data-level="danger"] .aparte-context__value {
|
|
|
7217
7268
|
* One of the sheets src/index.ts imports in cascade order; check:derived-vars reads
|
|
7218
7269
|
* them concatenated in that same order, the way a browser does.
|
|
7219
7270
|
*
|
|
7220
|
-
* The rail floats on the transcript's end edge
|
|
7221
|
-
*
|
|
7222
|
-
*
|
|
7223
|
-
*
|
|
7271
|
+
* The rail floats on the transcript's end edge as a child of the chat host. `:has()`
|
|
7272
|
+
* gives the host its containing block only while a rail is inside it — a bare
|
|
7273
|
+
* `position: relative` on every chat would have moved any absolutely positioned child
|
|
7274
|
+
* a consumer already placed there.
|
|
7275
|
+
*
|
|
7276
|
+
* The three shell shapes shell.css already lays out, because an absolute element lands
|
|
7277
|
+
* in the nearest POSITIONED ancestor and a shape missing from this list is a rail that
|
|
7278
|
+
* escaped to the page: the vanilla `<aparte-chat>`, the `[data-aparte-chat]` div
|
|
7279
|
+
* React/Vue/Svelte render, and Angular's inner `.aparte-chat-container` (its host IS
|
|
7280
|
+
* `<aparte-chat>`, but the rail is a child of that inner div). The first two shapes are
|
|
7281
|
+
* both true of the wrapper div, which carries the class and the attribute — listing all
|
|
7282
|
+
* three costs one selector and closes the Angular hole.
|
|
7224
7283
|
*/
|
|
7225
7284
|
aparte-chat:has(> aparte-scroll-rail),
|
|
7226
|
-
[data-aparte-chat]:has(> aparte-scroll-rail)
|
|
7285
|
+
[data-aparte-chat]:has(> aparte-scroll-rail),
|
|
7286
|
+
.aparte-chat-container:has(> aparte-scroll-rail) {
|
|
7227
7287
|
position: relative;
|
|
7228
7288
|
}
|
|
7229
7289
|
|
|
7290
|
+
/* Where the rail sits is measured, not assumed. The element publishes three lengths on
|
|
7291
|
+
itself (aparte-scroll-rail.ts, `_layout`): `--aparte-scroll-rail-bar`, the width of
|
|
7292
|
+
the transcript's scrollbar when it is a classic one — 0 for an overlay bar — so the
|
|
7293
|
+
ticks never sit on the bar under Windows or Linux Chrome; and the two block insets,
|
|
7294
|
+
the transcript's distance from the host's top and bottom edges, so the rail centres
|
|
7295
|
+
on the messages and not on the composer under them. Without a measurement (jsdom, a
|
|
7296
|
+
rail with no transcript yet) the fallbacks centre it on the host, where it used to be.
|
|
7297
|
+
|
|
7298
|
+
It is a LIST of ticks, not a minimap: it takes the height of its list, capped at a
|
|
7299
|
+
share of the transcript (`--aparte-scroll-rail-share`, .6), and sits centred on the
|
|
7300
|
+
transcript's span — its top is the middle of that span, pulled back by half its own
|
|
7301
|
+
height. Measured on the market: every per-turn rail that ships as a list caps itself
|
|
7302
|
+
(LobeChat at 50vh), and every full-height strip is a proportional minimap with a
|
|
7303
|
+
viewport window, a different component; a list stretched to the full transcript read
|
|
7304
|
+
as the second while behaving as the first.
|
|
7305
|
+
|
|
7306
|
+
The block padding is the room the END zones need, and it is not decoration.
|
|
7307
|
+
The rail clips the list at its padding box, and the list has no padding of its own,
|
|
7308
|
+
so with no padding here the first tick's top edge sits exactly on the clip line. A
|
|
7309
|
+
zone grows symmetrically — half of `hit − thickness` above and below the line — so
|
|
7310
|
+
the first tick would lose its upper half and the last tick its lower half, to paint
|
|
7311
|
+
AND to hit-testing: 13px of the 24px, on the two ticks a reader aims at most ("jump
|
|
7312
|
+
to the first message", "jump to the latest"). Padding by exactly that half puts the
|
|
7313
|
+
clip line outside every zone instead of through the two end ones. `box-sizing` keeps
|
|
7314
|
+
`max-height` measuring the same box it measured before.
|
|
7315
|
+
|
|
7316
|
+
When more ticks exist than 24px targets fit in the cap, the element tightens the
|
|
7317
|
+
pitch by setting `--aparte-scroll-rail-hit-size` on itself (never under 6px), and
|
|
7318
|
+
gap, padding and zone follow it here as they would a consumer's value. Past that
|
|
7319
|
+
floor the list still overflows, and the rail scrolls — the element keeps the current
|
|
7320
|
+
tick in its window, the arrows walk every tick, a wheel over the rail slides it —
|
|
7321
|
+
with no bar of its own: a 24px column showing a scrollbar would be all bar. */
|
|
7230
7322
|
aparte-scroll-rail {
|
|
7231
7323
|
position: absolute;
|
|
7232
|
-
inset-inline-end: var(--aparte-space-2);
|
|
7233
|
-
top:
|
|
7324
|
+
inset-inline-end: calc(var(--aparte-space-2) + var(--aparte-scroll-rail-bar, 0px));
|
|
7325
|
+
top: calc(var(--aparte-scroll-rail-block-start, 0px) + (100% - var(--aparte-scroll-rail-block-start, 0px) - var(--aparte-scroll-rail-block-end, 0px)) / 2);
|
|
7234
7326
|
transform: translateY(-50%);
|
|
7235
7327
|
z-index: var(--aparte-z-floating);
|
|
7236
|
-
display:
|
|
7328
|
+
display: flex;
|
|
7329
|
+
flex-direction: column;
|
|
7330
|
+
box-sizing: border-box;
|
|
7237
7331
|
width: var(--aparte-scroll-rail-width);
|
|
7238
|
-
|
|
7239
|
-
|
|
7332
|
+
padding-block: calc((var(--aparte-scroll-rail-hit-size) - var(--aparte-scroll-rail-tick-thickness)) / 2);
|
|
7333
|
+
max-height: calc((100% - var(--aparte-scroll-rail-block-start, 0px) - var(--aparte-scroll-rail-block-end, 0px)) * var(--aparte-scroll-rail-share));
|
|
7334
|
+
overflow-x: hidden;
|
|
7335
|
+
overflow-y: auto;
|
|
7336
|
+
scrollbar-width: none;
|
|
7337
|
+
}
|
|
7338
|
+
|
|
7339
|
+
aparte-scroll-rail::-webkit-scrollbar {
|
|
7340
|
+
display: none;
|
|
7240
7341
|
}
|
|
7241
7342
|
|
|
7242
7343
|
aparte-scroll-rail[hidden],
|
|
@@ -7251,10 +7352,11 @@ aparte-scroll-rail[data-empty] {
|
|
|
7251
7352
|
display: flex;
|
|
7252
7353
|
flex-direction: column;
|
|
7253
7354
|
align-items: flex-end;
|
|
7355
|
+
flex-shrink: 0;
|
|
7254
7356
|
gap: var(--aparte-scroll-rail-gap);
|
|
7255
7357
|
}
|
|
7256
7358
|
|
|
7257
|
-
/* A tick is a real button, drawn as a line. The hit area is the
|
|
7359
|
+
/* A tick is a real button, drawn as a line. The hit area is the zone around it, drawn
|
|
7258
7360
|
by the pseudo-element so the line itself can stay two pixels. */
|
|
7259
7361
|
.aparte-scroll-rail__tick {
|
|
7260
7362
|
appearance: none;
|
|
@@ -7275,10 +7377,23 @@ aparte-scroll-rail[data-empty] {
|
|
|
7275
7377
|
background var(--aparte-duration-fast) var(--aparte-ease);
|
|
7276
7378
|
}
|
|
7277
7379
|
|
|
7380
|
+
/* The pressable zone: 24px square around a 14×2 line (WCAG 2.5.8). It used to be 22×10
|
|
7381
|
+
— half the 8px gap in the block axis, one spacing step in the inline one — and no
|
|
7382
|
+
spacing exemption covered it, because at a 10px pitch a neighbour's 24px circle
|
|
7383
|
+
overlaps this one's.
|
|
7384
|
+
Block: grow symmetrically to the hit size. The gap is `hit − thickness`, so the pitch
|
|
7385
|
+
is exactly the hit size and two zones meet without overlapping — and the rail pads its
|
|
7386
|
+
block axis by the same half-growth, so the clip does not eat the first and last zone.
|
|
7387
|
+
Inline: grow INWARD only. The rail clips and ticks are end-aligned, so a centred zone
|
|
7388
|
+
would hang past the end edge and come back cut to 19px; anchored to the tick's end
|
|
7389
|
+
edge it stays whole, and the rail's width carries the hit size as its floor so the
|
|
7390
|
+
column has room for it. */
|
|
7278
7391
|
.aparte-scroll-rail__tick::before {
|
|
7279
7392
|
content: "";
|
|
7280
7393
|
position: absolute;
|
|
7281
|
-
inset: calc(
|
|
7394
|
+
inset-block: calc((var(--aparte-scroll-rail-tick-thickness) - var(--aparte-scroll-rail-hit-size)) / 2);
|
|
7395
|
+
inset-inline-end: 0;
|
|
7396
|
+
inset-inline-start: calc(var(--aparte-scroll-rail-tick-size) - var(--aparte-scroll-rail-hit-size));
|
|
7282
7397
|
}
|
|
7283
7398
|
|
|
7284
7399
|
.aparte-scroll-rail__tick:hover {
|
|
@@ -8240,9 +8355,16 @@ aparte-split[disabled] > .aparte-split__handle:hover {
|
|
|
8240
8355
|
opacity: 1;
|
|
8241
8356
|
}
|
|
8242
8357
|
|
|
8243
|
-
/* Nor the ✕ on a pending attachment, which is the only way to remove one
|
|
8358
|
+
/* Nor the ✕ on a pending attachment, which is the only way to remove one — and
|
|
8359
|
+
seeing it is no use at 18px, under the 24 of WCAG 2.2 SC 2.5.8. 24 is not a new
|
|
8360
|
+
number: it is the box `aparte-btn--sm` already draws, so this is the component
|
|
8361
|
+
giving the recipe back its own size on touch rather than out-specifying it.
|
|
8362
|
+
Not `--aparte-touch-target-size`: 44px inside a 72px tile would swallow the
|
|
8363
|
+
picture, and full parity with the neighbouring controls needs the tile to grow
|
|
8364
|
+
with it — a second decision, not this floor. */
|
|
8244
8365
|
.aparte-thumb__remove {
|
|
8245
8366
|
opacity: 1;
|
|
8367
|
+
--aparte-thumb-remove-size: var(--aparte-btn-size-sm);
|
|
8246
8368
|
}
|
|
8247
8369
|
|
|
8248
8370
|
/* Hover cannot reveal the row's ⋯ on touch — keep it visible and tappable. */
|
package/dist/index.d.ts
CHANGED
|
@@ -84,7 +84,7 @@ export { AparteConversationList } from './components/index.js';
|
|
|
84
84
|
export type { AparteConversationListItem, AparteConversationSelectDetail, AparteConversationDeleteDetail, AparteConversationArchiveDetail, AparteConversationPinDetail, AparteConversationRenameDetail } from './components/index.js';
|
|
85
85
|
export type { AparteConversation, AparteConversationMeta, AparteStorageAdapter, AparteAttachmentRow, } from './conversations/index.js';
|
|
86
86
|
export { APARTE_CONVERSATION_SCHEMA_VERSION } from './conversations/index.js';
|
|
87
|
-
export { AparteConversationManager, type ConversationManagerOptions } from './conversations/index.js';
|
|
87
|
+
export { AparteConversationManager, type ConversationManagerOptions, type AparteConversationTitleProvider, } from './conversations/index.js';
|
|
88
88
|
export { AparteConversationController, type AparteChatBinding, type AparteConversationControllerOptions, } from './conversations/index.js';
|
|
89
89
|
export { AparteChatHost, type AparteChatHostBinding, type AparteChatHostOptions, } from './host/index.js';
|
|
90
90
|
export { AparteStreamParser, parseMarkdownToSegments } from './parsers/index.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,oBAAoB,CAAC;AAC5B,OAAO,mBAAmB,CAAC;AAC3B,OAAO,qBAAqB,CAAC;AAC7B,OAAO,oBAAoB,CAAC;AAC5B,OAAO,6BAA6B,CAAC;AACrC,OAAO,2BAA2B,CAAC;AACnC,OAAO,4BAA4B,CAAC;AACpC,OAAO,0BAA0B,CAAC;AAClC,OAAO,gCAAgC,CAAC;AACxC,OAAO,8BAA8B,CAAC;AACtC,OAAO,+BAA+B,CAAC;AACvC,OAAO,+BAA+B,CAAC;AACvC,OAAO,8BAA8B,CAAC;AACtC,OAAO,4BAA4B,CAAC;AACpC,OAAO,2BAA2B,CAAC;AACnC,OAAO,0BAA0B,CAAC;AAClC,OAAO,2BAA2B,CAAC;AACnC,OAAO,2BAA2B,CAAC;AACnC,OAAO,gCAAgC,CAAC;AACxC,OAAO,2BAA2B,CAAC;AACnC,OAAO,8BAA8B,CAAC;AACtC,OAAO,6BAA6B,CAAC;AACrC,OAAO,8BAA8B,CAAC;AACtC,OAAO,gCAAgC,CAAC;AACxC,OAAO,0CAA0C,CAAC;AAClD,OAAO,+BAA+B,CAAC;AACvC,OAAO,gCAAgC,CAAC;AACxC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,+BAA+B,CAAC;AACvC,OAAO,2BAA2B,CAAC;AACnC,OAAO,gCAAgC,CAAC;AACxC,OAAO,4BAA4B,CAAC;AACpC,OAAO,2BAA2B,CAAC;AACnC,OAAO,qCAAqC,CAAC;AAC7C,OAAO,sCAAsC,CAAC;AAC9C,OAAO,qCAAqC,CAAC;AAC7C,OAAO,iCAAiC,CAAC;AACzC,OAAO,qCAAqC,CAAC;AAC7C,OAAO,4BAA4B,CAAC;AACpC,OAAO,+BAA+B,CAAC;AACvC,OAAO,8BAA8B,CAAC;AACtC,OAAO,0BAA0B,CAAC;AAClC,OAAO,oBAAoB,CAAC;AAC5B,OAAO,yBAAyB,CAAC;AAGjC,OAAO,sBAAsB,CAAC;AAG9B,OAAO,wBAAwB,CAAC;AAGhC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,wBAAwB,EAAE,KAAK,+BAA+B,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAG3L,YAAY,EACR,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,yBAAyB,EACzB,sBAAsB,EACtB,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EASrB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAIlB,8BAA8B,EAE9B,gBAAgB,EAChB,aAAa,EACb,2BAA2B,EAC3B,wBAAwB,EACxB,4BAA4B,EAC5B,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,4BAA4B,EAC5B,mCAAmC,EACnC,4BAA4B,EAC5B,6BAA6B,EAC7B,6BAA6B,EAC7B,+BAA+B,EAC/B,sBAAsB,EACtB,wBAAwB,EACxB,4BAA4B,EAC5B,6BAA6B,EAC7B,6BAA6B,EAC7B,kCAAkC,EAClC,0BAA0B,EAC1B,4BAA4B,EAC5B,iBAAiB,EACjB,+BAA+B,EAC/B,4BAA4B,EAC5B,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,EAEvB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,WAAW,EAEX,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,+BAA+B,EAE/B,uBAAuB,EAEvB,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,4BAA4B,EAC5B,0BAA0B,EAC1B,0BAA0B,EAC1B,wBAAwB,EACxB,6BAA6B,EAC7B,8BAA8B,EAC9B,qCAAqC,EACrC,+BAA+B,EAC/B,gCAAgC,EAChC,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,+BAA+B,GAClC,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAG/E,OAAO,EACH,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,EAClB,qBAAqB,EACrB,wBAAwB,EASxB,2BAA2B,EAC3B,uBAAuB,EACvB,eAAe,EAClB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AACpF,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAG3D,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC3N,YAAY,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,+BAA+B,EAAE,uBAAuB,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAC1M,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAC3F,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EAAE,kBAAkB,EAAE,iCAAiC,EAAE,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC/F,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAGrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,YAAY,EAAE,0BAA0B,EAAE,8BAA8B,EAAE,8BAA8B,EAAE,+BAA+B,EAAE,2BAA2B,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAC;AAGtO,YAAY,EACR,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,GACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,kCAAkC,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|