@apostel/bedrock 0.1.1 → 0.2.1
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/README.md +25 -20
- package/dist/accordion/controlled-root.d.ts +5 -2
- package/dist/accordion/controlled-root.d.ts.map +1 -1
- package/dist/accordion/controlled-root.js +5 -2
- package/dist/accordion/controlled-root.js.map +1 -1
- package/dist/capabilities.d.ts +15 -4
- package/dist/capabilities.d.ts.map +1 -1
- package/dist/capabilities.js +17 -4
- package/dist/capabilities.js.map +1 -1
- package/dist/collapsible/controlled-root.d.ts +10 -7
- package/dist/collapsible/controlled-root.d.ts.map +1 -1
- package/dist/collapsible/controlled-root.js +10 -7
- package/dist/collapsible/controlled-root.js.map +1 -1
- package/dist/collapsible/root.d.ts +2 -2
- package/dist/collapsible/root.js +2 -2
- package/dist/collapsible/shared.d.ts +3 -2
- package/dist/collapsible/shared.d.ts.map +1 -1
- package/dist/collapsible/shared.js +3 -2
- package/dist/collapsible/shared.js.map +1 -1
- package/dist/create-controlled-root.d.ts +12 -4
- package/dist/create-controlled-root.d.ts.map +1 -1
- package/dist/create-controlled-root.js +15 -5
- package/dist/create-controlled-root.js.map +1 -1
- package/dist/hover-card/controlled-root.d.ts.map +1 -1
- package/dist/hover-card/controlled-root.js +2 -0
- package/dist/hover-card/controlled-root.js.map +1 -1
- package/dist/hover-card/root.d.ts.map +1 -1
- package/dist/hover-card/root.js +2 -0
- package/dist/hover-card/root.js.map +1 -1
- package/dist/interest.d.ts +18 -9
- package/dist/interest.d.ts.map +1 -1
- package/dist/interest.js +242 -32
- package/dist/interest.js.map +1 -1
- package/dist/popover/controlled-root.d.ts +1 -1
- package/dist/popover/controlled-root.d.ts.map +1 -1
- package/dist/popover/controlled-root.js +3 -2
- package/dist/popover/controlled-root.js.map +1 -1
- package/dist/popover/root.d.ts +1 -1
- package/dist/popover/root.d.ts.map +1 -1
- package/dist/popover/root.js +3 -2
- package/dist/popover/root.js.map +1 -1
- package/dist/popover/shared.d.ts +12 -0
- package/dist/popover/shared.d.ts.map +1 -1
- package/dist/popover/shared.js +16 -0
- package/dist/popover/shared.js.map +1 -1
- package/dist/tooltip/controlled-root.d.ts.map +1 -1
- package/dist/tooltip/controlled-root.js +2 -0
- package/dist/tooltip/controlled-root.js.map +1 -1
- package/dist/tooltip/parts.d.ts +8 -1
- package/dist/tooltip/parts.d.ts.map +1 -1
- package/dist/tooltip/parts.js +35 -1
- package/dist/tooltip/parts.js.map +1 -1
- package/dist/tooltip/root.d.ts.map +1 -1
- package/dist/tooltip/root.js +2 -0
- package/dist/tooltip/root.js.map +1 -1
- package/dist/tooltip/shared.d.ts +2 -1
- package/dist/tooltip/shared.d.ts.map +1 -1
- package/dist/tooltip/shared.js.map +1 -1
- package/dist/tooltip/use-controlled-interest-root.d.ts +2 -0
- package/dist/tooltip/use-controlled-interest-root.d.ts.map +1 -1
- package/dist/tooltip/use-controlled-interest-root.js +4 -2
- package/dist/tooltip/use-controlled-interest-root.js.map +1 -1
- package/dist/tooltip/use-interest-root.d.ts +2 -0
- package/dist/tooltip/use-interest-root.d.ts.map +1 -1
- package/dist/tooltip/use-interest-root.js +5 -2
- package/dist/tooltip/use-interest-root.js.map +1 -1
- package/package.json +15 -12
- package/skills/migrate-to-bedrock/SKILL.md +11 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parts.js","sourceRoot":"","sources":["../../src/tooltip/parts.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"parts.js","sourceRoot":"","sources":["../../src/tooltip/parts.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../../src/tooltip/root.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAItC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAA;CACnC;AAED,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,aAAmB,EACnB,UAAgB,EAChB,YAAY,GACb,EAAE,gBAAgB,+
|
|
1
|
+
{"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../../src/tooltip/root.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAItC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAA;CACnC;AAED,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,aAAmB,EACnB,UAAgB,EAChB,YAAY,GACb,EAAE,gBAAgB,+BAelB"}
|
package/dist/tooltip/root.js
CHANGED
|
@@ -7,6 +7,8 @@ export function TooltipRoot({ children, delayDuration = 700, closeDelay = 150, o
|
|
|
7
7
|
hideDelay: closeDelay,
|
|
8
8
|
// A tooltip is a label, not somewhere to move the pointer.
|
|
9
9
|
hoverableContent: false,
|
|
10
|
+
// A tooltip is a peek: it ends when the finger does.
|
|
11
|
+
pressHolds: false,
|
|
10
12
|
// `hint` layers above an open menu rather than closing it.
|
|
11
13
|
kind: 'hint',
|
|
12
14
|
role: 'tooltip',
|
package/dist/tooltip/root.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"root.js","sourceRoot":"","sources":["../../src/tooltip/root.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAarD,MAAM,UAAU,WAAW,CAAC,EAC1B,QAAQ,EACR,aAAa,GAAG,GAAG,EACnB,UAAU,GAAG,GAAG,EAChB,YAAY,GACK;IACjB,MAAM,OAAO,GAAG,eAAe,CAAC;QAC9B,SAAS,EAAE,aAAa;QACxB,SAAS,EAAE,UAAU;QACrB,2DAA2D;QAC3D,gBAAgB,EAAE,KAAK;QACvB,2DAA2D;QAC3D,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,SAAS;QACf,YAAY;KACb,CAAC,CAAA;IAEF,OAAO,KAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,OAAO,YAAG,QAAQ,GAA2B,CAAA;AACtF,CAAC"}
|
|
1
|
+
{"version":3,"file":"root.js","sourceRoot":"","sources":["../../src/tooltip/root.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAarD,MAAM,UAAU,WAAW,CAAC,EAC1B,QAAQ,EACR,aAAa,GAAG,GAAG,EACnB,UAAU,GAAG,GAAG,EAChB,YAAY,GACK;IACjB,MAAM,OAAO,GAAG,eAAe,CAAC;QAC9B,SAAS,EAAE,aAAa;QACxB,SAAS,EAAE,UAAU;QACrB,2DAA2D;QAC3D,gBAAgB,EAAE,KAAK;QACvB,qDAAqD;QACrD,UAAU,EAAE,KAAK;QACjB,2DAA2D;QAC3D,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,SAAS;QACf,YAAY;KACb,CAAC,CAAA;IAEF,OAAO,KAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,OAAO,YAAG,QAAQ,GAA2B,CAAA;AACtF,CAAC"}
|
package/dist/tooltip/shared.d.ts
CHANGED
|
@@ -3,7 +3,8 @@ export interface TooltipContextValue extends RootContextValue {
|
|
|
3
3
|
anchor: string;
|
|
4
4
|
/** Set when the platform can do intent itself; drives the attribute path. */
|
|
5
5
|
native: boolean;
|
|
6
|
-
|
|
6
|
+
/** `activates` is what only React can see: a handler on the trigger. */
|
|
7
|
+
registerTrigger(node: HTMLElement | null, activates?: boolean): void;
|
|
7
8
|
/** Tooltips are labels; hover cards are regions with content. */
|
|
8
9
|
role: 'tooltip' | undefined;
|
|
9
10
|
kind: 'hint' | 'auto';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/tooltip/shared.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEhD,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,MAAM,EAAE,MAAM,CAAA;IACd,6EAA6E;IAC7E,MAAM,EAAE,OAAO,CAAA;IACf,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/tooltip/shared.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEhD,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,MAAM,EAAE,MAAM,CAAA;IACd,6EAA6E;IAC7E,MAAM,EAAE,OAAO,CAAA;IACf,wEAAwE;IACxE,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IACpE,iEAAiE;IACjE,IAAI,EAAE,SAAS,GAAG,SAAS,CAAA;IAC3B,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;CACtB;AAED,eAAO,MAAM,cAAc,qDAAkD,CAAA;AAE7E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAKnE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/tooltip/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/tooltip/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAcjD,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAA6B,IAAI,CAAC,CAAA;AAE7E,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,OAAO,GAAG,UAAU,CAAC,cAAc,CAAC,CAAA;IAC1C,IAAI,CAAC,OAAO;QACV,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,mDAAmD,CAAC,CAAA;IACvF,OAAO,OAAO,CAAA;AAChB,CAAC"}
|
|
@@ -4,6 +4,8 @@ export interface ControlledInterestOptions extends ControlledRootProps {
|
|
|
4
4
|
showDelay: number;
|
|
5
5
|
hideDelay: number;
|
|
6
6
|
hoverableContent: boolean;
|
|
7
|
+
/** Whether a press that opened it survives the finger coming back up. */
|
|
8
|
+
pressHolds: boolean;
|
|
7
9
|
kind: 'hint' | 'auto';
|
|
8
10
|
role: 'tooltip' | undefined;
|
|
9
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-controlled-interest-root.d.ts","sourceRoot":"","sources":["../../src/tooltip/use-controlled-interest-root.ts"],"names":[],"mappings":"AAGA,OAAO,EAAqB,KAAK,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAGvF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAEnD,MAAM,WAAW,yBAA0B,SAAQ,mBAAmB;IACpE,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,EAAE,OAAO,CAAA;IACzB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;IACrB,IAAI,EAAE,SAAS,GAAG,SAAS,CAAA;CAC5B;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,yBAAyB,GAAG,mBAAmB,
|
|
1
|
+
{"version":3,"file":"use-controlled-interest-root.d.ts","sourceRoot":"","sources":["../../src/tooltip/use-controlled-interest-root.ts"],"names":[],"mappings":"AAGA,OAAO,EAAqB,KAAK,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAGvF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAEnD,MAAM,WAAW,yBAA0B,SAAQ,mBAAmB;IACpE,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,EAAE,OAAO,CAAA;IACzB,yEAAyE;IACzE,UAAU,EAAE,OAAO,CAAA;IACnB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;IACrB,IAAI,EAAE,SAAS,GAAG,SAAS,CAAA;CAC5B;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,yBAAyB,GAAG,mBAAmB,CA0BjG"}
|
|
@@ -3,7 +3,7 @@ import { anchorName } from '../anchor.js';
|
|
|
3
3
|
import { useSupportsInterestInvokers } from '../capabilities.js';
|
|
4
4
|
import { useControlledRoot } from '../create-controlled-root.js';
|
|
5
5
|
import { useInterest } from '../interest.js';
|
|
6
|
-
import { popoverAdapter } from '../popover/shared.js';
|
|
6
|
+
import { popoverAdapter, usePopoverKind } from '../popover/shared.js';
|
|
7
7
|
/**
|
|
8
8
|
* Controlled Tooltip and HoverCard. Only ever imported from `/controlled`, so
|
|
9
9
|
* the reconciliation layer stays out of the default bundle — the graph lint
|
|
@@ -13,14 +13,16 @@ import { popoverAdapter } from '../popover/shared.js';
|
|
|
13
13
|
* still decides whether it happens.
|
|
14
14
|
*/
|
|
15
15
|
export function useControlledInterestRoot(options) {
|
|
16
|
-
const { open, onOpenChange, showDelay, hideDelay, hoverableContent,
|
|
16
|
+
const { open, onOpenChange, showDelay, hideDelay, hoverableContent, pressHolds, role } = options;
|
|
17
17
|
const context = useControlledRoot({ open, onOpenChange }, popoverAdapter);
|
|
18
18
|
const anchor = useMemo(() => anchorName(context.id), [context.id]);
|
|
19
19
|
const native = useSupportsInterestInvokers();
|
|
20
|
+
const kind = usePopoverKind(options.kind);
|
|
20
21
|
const { registerTrigger, registerInterestContent } = useInterest({
|
|
21
22
|
showDelay,
|
|
22
23
|
hideDelay,
|
|
23
24
|
hoverableContent,
|
|
25
|
+
pressHolds,
|
|
24
26
|
});
|
|
25
27
|
const registerContent = useCallback((node) => {
|
|
26
28
|
context.registerContent(node);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-controlled-interest-root.js","sourceRoot":"","sources":["../../src/tooltip/use-controlled-interest-root.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAA;AAC7D,OAAO,EAAE,iBAAiB,EAA4B,MAAM,2BAA2B,CAAA;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"use-controlled-interest-root.js","sourceRoot":"","sources":["../../src/tooltip/use-controlled-interest-root.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAA;AAC7D,OAAO,EAAE,iBAAiB,EAA4B,MAAM,2BAA2B,CAAA;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAalE;;;;;;;GAOG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAAkC;IAC1E,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;IAChG,MAAM,OAAO,GAAG,iBAAiB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,cAAc,CAAC,CAAA;IACzE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;IAClE,MAAM,MAAM,GAAG,2BAA2B,EAAE,CAAA;IAC5C,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAEzC,MAAM,EAAE,eAAe,EAAE,uBAAuB,EAAE,GAAG,WAAW,CAAC;QAC/D,SAAS;QACT,SAAS;QACT,gBAAgB;QAChB,UAAU;KACX,CAAC,CAAA;IAEF,MAAM,eAAe,GAAG,WAAW,CACjC,CAAC,IAAwB,EAAE,EAAE;QAC3B,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;QAC7B,uBAAuB,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC,EACD,CAAC,OAAO,EAAE,uBAAuB,CAAC,CACnC,CAAA;IAED,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC,EACpF,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,eAAe,CAAC,CACxE,CAAA;AACH,CAAC"}
|
|
@@ -3,6 +3,8 @@ export interface InterestRootOptions {
|
|
|
3
3
|
showDelay: number;
|
|
4
4
|
hideDelay: number;
|
|
5
5
|
hoverableContent: boolean;
|
|
6
|
+
/** Whether a press that opened it survives the finger coming back up. */
|
|
7
|
+
pressHolds: boolean;
|
|
6
8
|
kind: 'hint' | 'auto';
|
|
7
9
|
role: 'tooltip' | undefined;
|
|
8
10
|
onOpenChange?: ((open: boolean) => void) | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-interest-root.d.ts","sourceRoot":"","sources":["../../src/tooltip/use-interest-root.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-interest-root.d.ts","sourceRoot":"","sources":["../../src/tooltip/use-interest-root.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAEnD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,EAAE,OAAO,CAAA;IACzB,yEAAyE;IACzE,UAAU,EAAE,OAAO,CAAA;IACnB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;IACrB,IAAI,EAAE,SAAS,GAAG,SAAS,CAAA;IAC3B,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC,GAAG,SAAS,CAAA;CACrD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,mBAAmB,GAAG,mBAAmB,CAwCjF"}
|
|
@@ -3,6 +3,7 @@ import { anchorName } from '../anchor.js';
|
|
|
3
3
|
import { useSupportsInterestInvokers } from '../capabilities.js';
|
|
4
4
|
import { useInterest } from '../interest.js';
|
|
5
5
|
import { useOpenState } from '../open-state.js';
|
|
6
|
+
import { usePopoverKind } from '../popover/shared.js';
|
|
6
7
|
/**
|
|
7
8
|
* Everything Tooltip and HoverCard share, which is almost all of it: the two
|
|
8
9
|
* differ in their delays, in whether the content is hoverable, and in whether
|
|
@@ -12,6 +13,7 @@ export function useInterestRoot(options) {
|
|
|
12
13
|
const id = useId();
|
|
13
14
|
const anchor = useMemo(() => anchorName(id), [id]);
|
|
14
15
|
const native = useSupportsInterestInvokers();
|
|
16
|
+
const kind = usePopoverKind(options.kind);
|
|
15
17
|
const changeRef = useRef(options.onOpenChange);
|
|
16
18
|
changeRef.current = options.onOpenChange;
|
|
17
19
|
const report = useCallback((next) => changeRef.current?.(next), []);
|
|
@@ -20,6 +22,7 @@ export function useInterestRoot(options) {
|
|
|
20
22
|
showDelay: options.showDelay,
|
|
21
23
|
hideDelay: options.hideDelay,
|
|
22
24
|
hoverableContent: options.hoverableContent,
|
|
25
|
+
pressHolds: options.pressHolds,
|
|
23
26
|
});
|
|
24
27
|
const registerContent = useCallback((node) => {
|
|
25
28
|
observe(node);
|
|
@@ -30,10 +33,10 @@ export function useInterestRoot(options) {
|
|
|
30
33
|
open,
|
|
31
34
|
anchor,
|
|
32
35
|
native,
|
|
33
|
-
kind
|
|
36
|
+
kind,
|
|
34
37
|
role: options.role,
|
|
35
38
|
registerContent,
|
|
36
39
|
registerTrigger,
|
|
37
|
-
}), [id, open, anchor, native,
|
|
40
|
+
}), [id, open, anchor, native, kind, options.role, registerContent, registerTrigger]);
|
|
38
41
|
}
|
|
39
42
|
//# sourceMappingURL=use-interest-root.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-interest-root.js","sourceRoot":"","sources":["../../src/tooltip/use-interest-root.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"use-interest-root.js","sourceRoot":"","sources":["../../src/tooltip/use-interest-root.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAclD;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,OAA4B;IAC1D,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAClD,MAAM,MAAM,GAAG,2BAA2B,EAAE,CAAA;IAC5C,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAEzC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;IAC9C,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC,YAAY,CAAA;IAExC,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,IAAa,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;IAC5E,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;IAE9C,MAAM,EAAE,eAAe,EAAE,uBAAuB,EAAE,GAAG,WAAW,CAAC;QAC/D,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,UAAU,EAAE,OAAO,CAAC,UAAU;KAC/B,CAAC,CAAA;IAEF,MAAM,eAAe,GAAG,WAAW,CACjC,CAAC,IAAwB,EAAE,EAAE;QAC3B,OAAO,CAAC,IAAI,CAAC,CAAA;QACb,uBAAuB,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC,EACD,CAAC,OAAO,EAAE,uBAAuB,CAAC,CACnC,CAAA;IAED,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;QACL,EAAE;QACF,IAAI;QACJ,MAAM;QACN,MAAM;QACN,IAAI;QACJ,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,eAAe;QACf,eAAe;KAChB,CAAC,EACF,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,eAAe,EAAE,eAAe,CAAC,CACjF,CAAA;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@apostel/bedrock",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Headless React primitives built on native platform features",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"accessibility",
|
|
@@ -43,26 +43,28 @@
|
|
|
43
43
|
},
|
|
44
44
|
"scripts": {
|
|
45
45
|
"build": "tsc -p tsconfig.build.json && node scripts/postbuild.mjs",
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
46
|
+
"changeset": "changeset",
|
|
47
|
+
"compat:build": "node scripts/build-compat.mjs",
|
|
48
|
+
"demos:build": "vite build --config vite.demos.config.ts",
|
|
49
|
+
"docs:baseline": "node scripts/build-baseline.mjs",
|
|
50
|
+
"docs:build": "node scripts/build-docs.mjs && npm run demos:build",
|
|
49
51
|
"format": "oxfmt",
|
|
50
52
|
"format:check": "oxfmt --check",
|
|
53
|
+
"lint": "oxlint",
|
|
54
|
+
"lint:graph": "depcruise src --config .dependency-cruiser.cjs",
|
|
55
|
+
"prepublishOnly": "npm run verify",
|
|
51
56
|
"registry:build": "node scripts/build-registry.mjs",
|
|
57
|
+
"release": "changeset publish",
|
|
52
58
|
"test": "playwright test",
|
|
53
59
|
"test:install": "playwright install chromium",
|
|
60
|
+
"typecheck": "tsc --noEmit -p tsconfig.json",
|
|
54
61
|
"verify": "npm run format:check && npm run lint && npm run typecheck && npm run lint:graph && npm run build && npm run test",
|
|
55
|
-
"
|
|
56
|
-
"docs:build": "node scripts/build-docs.mjs && npm run demos:build",
|
|
57
|
-
"changeset": "changeset",
|
|
58
|
-
"version": "changeset version",
|
|
59
|
-
"release": "changeset publish",
|
|
60
|
-
"demos:build": "vite build --config vite.demos.config.ts",
|
|
61
|
-
"docs:baseline": "node scripts/build-baseline.mjs"
|
|
62
|
+
"version": "changeset version"
|
|
62
63
|
},
|
|
63
64
|
"devDependencies": {
|
|
64
65
|
"@axe-core/playwright": "^4.12.1",
|
|
65
66
|
"@changesets/cli": "^3.0.1",
|
|
67
|
+
"@mdn/browser-compat-data": "^8.0.13",
|
|
66
68
|
"@playwright/test": "^1.62.1",
|
|
67
69
|
"@tailwindcss/vite": "^4.3.3",
|
|
68
70
|
"@types/react": "^19.0.0",
|
|
@@ -77,7 +79,8 @@
|
|
|
77
79
|
"tailwind-merge": "^3.6.0",
|
|
78
80
|
"tailwindcss": "^4.3.3",
|
|
79
81
|
"typescript": "^5.6.0",
|
|
80
|
-
"vite": "^8.2.0"
|
|
82
|
+
"vite": "^8.2.0",
|
|
83
|
+
"web-features": "^3.36.0"
|
|
81
84
|
},
|
|
82
85
|
"peerDependencies": {
|
|
83
86
|
"react": ">=19",
|
|
@@ -118,6 +118,12 @@ those, move to the controlled import:
|
|
|
118
118
|
Everything else keeps the smaller bundle. A handler that just resets a form or
|
|
119
119
|
fires analytics is served by the default root.
|
|
120
120
|
|
|
121
|
+
The controlled import buys a veto only where the element gives the platform a
|
|
122
|
+
cancelable hook. Collapsible and Accordion are `<details>`, which gives none, so
|
|
123
|
+
a guard there has to be `preventDefault()` on the Trigger's click instead — the
|
|
124
|
+
toggle is that click's default action. Flag it rather than swapping the import
|
|
125
|
+
and assuming it holds.
|
|
126
|
+
|
|
121
127
|
### Closed content is unmounted
|
|
122
128
|
|
|
123
129
|
This is usually a *win* — a form inside a dialog resets itself, and any
|
|
@@ -132,9 +138,11 @@ dialog.
|
|
|
132
138
|
|
|
133
139
|
Only what actually differs. Everything not listed is a straight swap.
|
|
134
140
|
|
|
135
|
-
- **Accordion** — `type="single"` is
|
|
136
|
-
always be closed; Radix's
|
|
137
|
-
|
|
141
|
+
- **Accordion, Collapsible** — `<details>`. For Accordion, `type="single"` is
|
|
142
|
+
`<details name>`, so an open item can always be closed; Radix's
|
|
143
|
+
`collapsible={false}` has no equivalent, and `Header` renders the `<summary>`
|
|
144
|
+
with `Trigger` inside it. Neither can refuse a toggle, under either import:
|
|
145
|
+
see above.
|
|
138
146
|
- **Checkbox, Switch, RadioGroup, Slider, Progress** — real elements, so
|
|
139
147
|
`Indicator`, `Thumb`, `Track` and `Range` render nothing. Their styles move to
|
|
140
148
|
`::before`, `::-webkit-slider-thumb`, `::-webkit-progress-value`. Watch for
|