@funstack/ui 0.1.0-alpha.5 → 0.1.0-alpha.6
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/accordion/accordion-item.mjs +2 -2
- package/dist/accordion/accordion-panel.mjs +2 -2
- package/dist/accordion/accordion-root.mjs +3 -3
- package/dist/accordion/accordion-trigger.mjs +2 -2
- package/dist/button/button.d.mts +78 -0
- package/dist/button/button.d.mts.map +1 -0
- package/dist/button/button.mjs +77 -0
- package/dist/button/button.mjs.map +1 -0
- package/dist/button/index.d.mts +3 -0
- package/dist/button/index.mjs +1 -0
- package/dist/checkbox/checkbox.mjs +2 -2
- package/dist/checkbox-group/checkbox-group-item.mjs +1 -1
- package/dist/checkbox-group/checkbox-group-parent.mjs +1 -1
- package/dist/checkbox-group/checkbox-group-root.mjs +1 -1
- package/dist/combobox/combobox-group.mjs +1 -1
- package/dist/combobox/combobox-list.mjs +1 -1
- package/dist/combobox/combobox-option.mjs +1 -1
- package/dist/combobox/combobox-popup.mjs +2 -2
- package/dist/combobox/combobox-root.mjs +3 -3
- package/dist/dialog/dialog-close.mjs +1 -1
- package/dist/dialog/dialog-form.mjs +1 -1
- package/dist/dialog/dialog-popup.mjs +3 -3
- package/dist/dialog/dialog-root.mjs +2 -2
- package/dist/field/field-root.mjs +3 -3
- package/dist/form/form-root.mjs +1 -1
- package/dist/index.d.mts +3 -2
- package/dist/index.mjs +2 -1
- package/dist/internal/render-element.mjs +18 -5
- package/dist/internal/render-element.mjs.map +1 -1
- package/dist/internal/use-action-trigger.mjs +15 -6
- package/dist/internal/use-action-trigger.mjs.map +1 -1
- package/dist/internal/use-field-control.mjs +1 -1
- package/dist/internal/use-popover-root.mjs +1 -1
- package/dist/internal/use-render.mjs +2 -2
- package/dist/internal/use-render.mjs.map +1 -1
- package/dist/menu/menu-checkbox-item.mjs +2 -2
- package/dist/menu/menu-group.mjs +1 -1
- package/dist/menu/menu-item.mjs +1 -1
- package/dist/menu/menu-popup.mjs +1 -1
- package/dist/menu/menu-radio-group.mjs +1 -1
- package/dist/menu/menu-root.mjs +1 -1
- package/dist/menu/menu-submenu-trigger.mjs +1 -1
- package/dist/menu/menu-trigger.mjs +1 -1
- package/dist/number-field/number-field-increment.mjs +1 -1
- package/dist/number-field/number-field-input.mjs +1 -1
- package/dist/number-field/number-field-root.mjs +4 -4
- package/dist/popover/popover-close.mjs +1 -1
- package/dist/popover/popover-popup.mjs +2 -2
- package/dist/radio-group/radio-group-item.mjs +1 -1
- package/dist/radio-group/radio-group-root.mjs +1 -1
- package/dist/select/select-root.mjs +1 -1
- package/dist/slider/slider-root.mjs +5 -5
- package/dist/slider/slider-thumb.mjs +1 -1
- package/dist/slider/slider-value.mjs +1 -1
- package/dist/switch/switch.mjs +2 -2
- package/dist/tabs/tabs-list.mjs +1 -1
- package/dist/tabs/tabs-panel.mjs +1 -1
- package/dist/tabs/tabs-root.mjs +2 -2
- package/dist/tabs/tabs-tab.mjs +1 -1
- package/dist/toast/toast-action.mjs +1 -1
- package/dist/toast/toast-root.mjs +1 -1
- package/dist/toast/toast-viewport.mjs +3 -3
- package/dist/toggle/toggle.mjs +3 -3
- package/dist/toggle-group/toggle-group-item.mjs +1 -1
- package/dist/toggle-group/toggle-group-root.mjs +3 -3
- package/dist/toolbar/index.d.mts +4 -5
- package/dist/toolbar/index.d.mts.map +1 -1
- package/dist/toolbar/index.mjs +3 -4
- package/dist/toolbar/index.mjs.map +1 -1
- package/dist/toolbar/toolbar-root.mjs +1 -1
- package/dist/toolbar/toolbar-separator.mjs +1 -1
- package/package.json +2 -1
- package/dist/toolbar/toolbar-button.d.mts +0 -42
- package/dist/toolbar/toolbar-button.d.mts.map +0 -1
- package/dist/toolbar/toolbar-button.mjs +0 -50
- package/dist/toolbar/toolbar-button.mjs.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@funstack/ui",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.6",
|
|
4
4
|
"description": "Headless UI library for React — the first Async React-native UI library",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"components",
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
"exports": {
|
|
31
31
|
".": "./dist/index.mjs",
|
|
32
32
|
"./accordion": "./dist/accordion/index.mjs",
|
|
33
|
+
"./button": "./dist/button/index.mjs",
|
|
33
34
|
"./checkbox": "./dist/checkbox/index.mjs",
|
|
34
35
|
"./checkbox-group": "./dist/checkbox-group/index.mjs",
|
|
35
36
|
"./combobox": "./dist/combobox/index.mjs",
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { Action, ActionDetails, RenderProp, StateValue } from "../internal/types.mjs";
|
|
2
|
-
import { CSSProperties, ComponentPropsWithRef, ReactNode, ViewTransitionClass } from "react";
|
|
3
|
-
//#region src/toolbar/toolbar-button.d.ts
|
|
4
|
-
/** Details passed to `Toolbar.Button`'s `action`. */
|
|
5
|
-
export interface ToolbarButtonActionDetails extends ActionDetails {}
|
|
6
|
-
export interface ToolbarButtonState {
|
|
7
|
-
/** This button's action is in flight. */
|
|
8
|
-
readonly pending: boolean;
|
|
9
|
-
readonly disabled: boolean;
|
|
10
|
-
}
|
|
11
|
-
export interface ToolbarButtonProps extends Omit<ComponentPropsWithRef<"button">, "onClick" | "type" | "tabIndex" | "aria-disabled" | "className" | "style" | "children"> {
|
|
12
|
-
/** Runs inside this button's own transition on click, Enter or Space. Sync or async; rejections reach the nearest Error Boundary. */
|
|
13
|
-
action?: Action<[details: ToolbarButtonActionDetails]>;
|
|
14
|
-
/**
|
|
15
|
-
* `aria-disabled="true"`: the button stays focusable and in the arrow-key sequence so
|
|
16
|
-
* assistive technology still finds it (APG Toolbar example), and never dispatches.
|
|
17
|
-
*/
|
|
18
|
-
disabled?: boolean;
|
|
19
|
-
/**
|
|
20
|
-
* Forwarded as `default` to the button's `<ViewTransition>`: animates the commit that ends the
|
|
21
|
-
* action (content keyed on `pending`), not a click. Static; any value makes a mount inside a
|
|
22
|
-
* transition start a document view transition (issue #35).
|
|
23
|
-
*/
|
|
24
|
-
transition?: ViewTransitionClass;
|
|
25
|
-
className?: StateValue<string | undefined, ToolbarButtonState>;
|
|
26
|
-
style?: StateValue<CSSProperties | undefined, ToolbarButtonState>;
|
|
27
|
-
children?: StateValue<ReactNode, ToolbarButtonState>;
|
|
28
|
-
render?: RenderProp<ComponentPropsWithRef<"button">, ToolbarButtonState>;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* A toolbar command: `<button type="button">` that runs `action` in its own transition
|
|
32
|
-
* (`data-pending` while it runs). Disabled is `aria-disabled`, so it stays focusable.
|
|
33
|
-
*
|
|
34
|
-
* Owned keys (conventions 1.2): `type` (on a `<button>` only), `aria-disabled`, `data-pending`,
|
|
35
|
-
* `data-disabled`, `onClick`.
|
|
36
|
-
*/
|
|
37
|
-
export declare function ToolbarButton({ action, disabled, transition, className, style, children, render, ...rest }: ToolbarButtonProps): ReactNode;
|
|
38
|
-
export declare namespace ToolbarButton {
|
|
39
|
-
var displayName: string;
|
|
40
|
-
}
|
|
41
|
-
//#endregion
|
|
42
|
-
//# sourceMappingURL=toolbar-button.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"toolbar-button.d.mts","names":[],"sources":["../../src/toolbar/toolbar-button.tsx"],"mappings":";;;;iBAgBiB,mCAAmC;iBAEnC;;WAEN;WACA;;iBAGM,2BAA2B,KAC1C;;EAIA,SAAS,QAAQ,SAAS;;;;;EAK1B;;;;;;EAMA,aAAa;EACb,YAAY,+BAA+B;EAC3C,QAAQ,WAAW,2BAA2B;EAC9C,WAAW,WAAW,WAAW;EACjC,SAAS,WAAW,iCAAiC;;;;;;;;;wBAUvC,gBACd,QACA,UACA,YACA,WACA,OACA,UACA,WACG,QACF,qBAAkB;yBATL"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { useTransitionBoundary } from "../internal/transition-boundary.mjs";
|
|
3
|
-
import { createActionDetails } from "../internal/action-details.mjs";
|
|
4
|
-
import { dataAttr } from "../internal/data-attr.mjs";
|
|
5
|
-
import { rendersButton } from "../internal/render-element.mjs";
|
|
6
|
-
import { useRender } from "../internal/use-render.mjs";
|
|
7
|
-
import { useActionTrigger } from "../internal/use-action-trigger.mjs";
|
|
8
|
-
//#region src/toolbar/toolbar-button.tsx
|
|
9
|
-
/**
|
|
10
|
-
* A toolbar command: `<button type="button">` that runs `action` in its own transition
|
|
11
|
-
* (`data-pending` while it runs). Disabled is `aria-disabled`, so it stays focusable.
|
|
12
|
-
*
|
|
13
|
-
* Owned keys (conventions 1.2): `type` (on a `<button>` only), `aria-disabled`, `data-pending`,
|
|
14
|
-
* `data-disabled`, `onClick`.
|
|
15
|
-
*/
|
|
16
|
-
function ToolbarButton({ action, disabled = false, transition, className, style, children, render, ...rest }) {
|
|
17
|
-
const { pending, run } = useActionTrigger();
|
|
18
|
-
const element = useRender({
|
|
19
|
-
defaultElement: "button",
|
|
20
|
-
render,
|
|
21
|
-
state: {
|
|
22
|
-
pending,
|
|
23
|
-
disabled
|
|
24
|
-
},
|
|
25
|
-
className,
|
|
26
|
-
style,
|
|
27
|
-
children,
|
|
28
|
-
props: rest,
|
|
29
|
-
libraryProps: {
|
|
30
|
-
...rendersButton(render) && { type: "button" },
|
|
31
|
-
"aria-disabled": disabled ? true : void 0,
|
|
32
|
-
"data-pending": dataAttr(pending),
|
|
33
|
-
"data-disabled": dataAttr(disabled),
|
|
34
|
-
onClick: (event) => {
|
|
35
|
-
if (disabled) {
|
|
36
|
-
event.preventDefault();
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
const details = createActionDetails(event.nativeEvent, {});
|
|
40
|
-
run(() => action?.(details));
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
return useTransitionBoundary("Toolbar.Button", transition, element);
|
|
45
|
-
}
|
|
46
|
-
ToolbarButton.displayName = "ToolbarButton";
|
|
47
|
-
//#endregion
|
|
48
|
-
export { ToolbarButton };
|
|
49
|
-
|
|
50
|
-
//# sourceMappingURL=toolbar-button.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"toolbar-button.mjs","names":[],"sources":["../../src/toolbar/toolbar-button.tsx"],"sourcesContent":["\"use client\";\nimport type {\n ComponentPropsWithRef,\n CSSProperties,\n MouseEvent,\n ReactNode,\n ViewTransitionClass,\n} from \"react\";\nimport { createActionDetails } from \"../internal/action-details.js\";\nimport { dataAttr } from \"../internal/data-attr.js\";\nimport { useTransitionBoundary } from \"../internal/transition-boundary.js\";\nimport type { Action, ActionDetails, RenderProp, StateValue } from \"../internal/types.js\";\nimport { useActionTrigger } from \"../internal/use-action-trigger.js\";\nimport { rendersButton, useRender } from \"../internal/use-render.js\";\n\n/** Details passed to `Toolbar.Button`'s `action`. */\nexport interface ToolbarButtonActionDetails extends ActionDetails {}\n\nexport interface ToolbarButtonState {\n /** This button's action is in flight. */\n readonly pending: boolean;\n readonly disabled: boolean;\n}\n\nexport interface ToolbarButtonProps extends Omit<\n ComponentPropsWithRef<\"button\">,\n \"onClick\" | \"type\" | \"tabIndex\" | \"aria-disabled\" | \"className\" | \"style\" | \"children\"\n> {\n /** Runs inside this button's own transition on click, Enter or Space. Sync or async; rejections reach the nearest Error Boundary. */\n action?: Action<[details: ToolbarButtonActionDetails]>;\n /**\n * `aria-disabled=\"true\"`: the button stays focusable and in the arrow-key sequence so\n * assistive technology still finds it (APG Toolbar example), and never dispatches.\n */\n disabled?: boolean;\n /**\n * Forwarded as `default` to the button's `<ViewTransition>`: animates the commit that ends the\n * action (content keyed on `pending`), not a click. Static; any value makes a mount inside a\n * transition start a document view transition (issue #35).\n */\n transition?: ViewTransitionClass;\n className?: StateValue<string | undefined, ToolbarButtonState>;\n style?: StateValue<CSSProperties | undefined, ToolbarButtonState>;\n children?: StateValue<ReactNode, ToolbarButtonState>;\n render?: RenderProp<ComponentPropsWithRef<\"button\">, ToolbarButtonState>;\n}\n\n/**\n * A toolbar command: `<button type=\"button\">` that runs `action` in its own transition\n * (`data-pending` while it runs). Disabled is `aria-disabled`, so it stays focusable.\n *\n * Owned keys (conventions 1.2): `type` (on a `<button>` only), `aria-disabled`, `data-pending`,\n * `data-disabled`, `onClick`.\n */\nexport function ToolbarButton({\n action,\n disabled = false,\n transition,\n className,\n style,\n children,\n render,\n ...rest\n}: ToolbarButtonProps) {\n const { pending, run } = useActionTrigger();\n const state: ToolbarButtonState = { pending, disabled };\n\n const element = useRender<ComponentPropsWithRef<\"button\">, ToolbarButtonState>({\n defaultElement: \"button\",\n render,\n state,\n className,\n style,\n children,\n props: rest,\n libraryProps: {\n ...(rendersButton(render) && { type: \"button\" as const }),\n \"aria-disabled\": disabled ? true : undefined,\n \"data-pending\": dataAttr(pending),\n \"data-disabled\": dataAttr(disabled),\n onClick: (event: MouseEvent<HTMLButtonElement>) => {\n if (disabled) {\n // A disabled link must not navigate either.\n event.preventDefault();\n return;\n }\n const details: ToolbarButtonActionDetails = createActionDetails(event.nativeEvent, {});\n run(() => action?.(details));\n },\n },\n });\n\n return useTransitionBoundary(\"Toolbar.Button\", transition, element);\n}\n\nToolbarButton.displayName = \"ToolbarButton\";\n"],"mappings":";;;;;;;;;;;;;;;AAsDA,SAAgB,cAAc,EAC5B,QACA,WAAW,OACX,YACA,WACA,OACA,UACA,QACA,GAAG,QACkB;CACrB,MAAM,EAAE,SAAS,QAAQ,iBAAiB;CAG1C,MAAM,UAAU,UAA+D;EAC7E,gBAAgB;EAChB;EACA,OAAA;GALkC;GAAS;EAKvC;EACJ;EACA;EACA;EACA,OAAO;EACP,cAAc;GACZ,GAAI,cAAc,MAAM,KAAK,EAAE,MAAM,SAAkB;GACvD,iBAAiB,WAAW,OAAO,KAAA;GACnC,gBAAgB,SAAS,OAAO;GAChC,iBAAiB,SAAS,QAAQ;GAClC,UAAU,UAAyC;IACjD,IAAI,UAAU;KAEZ,MAAM,eAAe;KACrB;IACF;IACA,MAAM,UAAsC,oBAAoB,MAAM,aAAa,CAAC,CAAC;IACrF,UAAU,SAAS,OAAO,CAAC;GAC7B;EACF;CACF,CAAC;CAED,OAAO,sBAAsB,kBAAkB,YAAY,OAAO;AACpE;AAEA,cAAc,cAAc"}
|