@aortl/admin-react 0.12.1 → 0.13.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/dist/AdminRoot.d.ts +1 -1
- package/dist/AdminRoot.d.ts.map +1 -1
- package/dist/Button.d.ts +8 -7
- package/dist/Button.d.ts.map +1 -1
- package/dist/ButtonGroup.d.ts +7 -1
- package/dist/ButtonGroup.d.ts.map +1 -1
- package/dist/Input.d.ts +1 -1
- package/dist/Input.d.ts.map +1 -1
- package/dist/Link.d.ts +21 -0
- package/dist/Link.d.ts.map +1 -0
- package/dist/Textarea.d.ts +15 -2
- package/dist/Textarea.d.ts.map +1 -1
- package/dist/admin.scoped.css +156 -0
- package/dist/hotkey-parse.d.ts +9 -6
- package/dist/hotkey-parse.d.ts.map +1 -1
- package/dist/hotkey-registry.d.ts +5 -4
- package/dist/hotkey-registry.d.ts.map +1 -1
- package/dist/index.cjs +104 -27
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +105 -29
- package/dist/index.mjs.map +1 -1
- package/dist/portal-context.d.ts +7 -4
- package/dist/portal-context.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/AdminRoot.d.ts
CHANGED
|
@@ -12,5 +12,5 @@ export interface AdminRootProps extends ComponentProps<"div"> {
|
|
|
12
12
|
*/
|
|
13
13
|
systemAccent?: string;
|
|
14
14
|
}
|
|
15
|
-
export declare function AdminRoot({ className, theme, systemAccent, style, ...rest }: AdminRootProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export declare function AdminRoot({ className, theme, systemAccent, style, ref, ...rest }: AdminRootProps): import("react/jsx-runtime").JSX.Element;
|
|
16
16
|
//# sourceMappingURL=AdminRoot.d.ts.map
|
package/dist/AdminRoot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminRoot.d.ts","sourceRoot":"","sources":["../src/AdminRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"AdminRoot.d.ts","sourceRoot":"","sources":["../src/AdminRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA2C,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAIrF,MAAM,WAAW,cAAe,SAAQ,cAAc,CAAC,KAAK,CAAC;IAC3D;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,SAAS,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,cAAc,2CAgChG"}
|
package/dist/Button.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Button as BaseButton } from '@base-ui/react/button';
|
|
2
2
|
import { ComponentProps } from 'react';
|
|
3
3
|
import { IconProp } from './icon';
|
|
4
|
-
export type ButtonVariant = "default" | "primary" | "ghost" | "danger";
|
|
4
|
+
export type ButtonVariant = "default" | "primary" | "ghost" | "muted" | "danger";
|
|
5
5
|
export type ButtonSize = "sm" | "md" | "lg";
|
|
6
6
|
export interface ButtonProps extends ComponentProps<typeof BaseButton> {
|
|
7
7
|
variant?: ButtonVariant;
|
|
@@ -15,13 +15,14 @@ export interface ButtonProps extends ComponentProps<typeof BaseButton> {
|
|
|
15
15
|
/** Trailing icon. Pass a component (`iconTrailing={IconArrowRight}`) or an element. */
|
|
16
16
|
iconTrailing?: IconProp;
|
|
17
17
|
/**
|
|
18
|
-
* Keyboard shortcut bound to this button. Pressing the chord
|
|
19
|
-
*
|
|
20
|
-
* form
|
|
21
|
-
*
|
|
22
|
-
* alternatives — only the first is rendered as
|
|
18
|
+
* Keyboard shortcut bound to this button. Pressing the chord dispatches a
|
|
19
|
+
* native click on the underlying element, so `onClick` fires, `type="submit"`
|
|
20
|
+
* submits the form, and an anchor-rendered button (`render={<a href>}`)
|
|
21
|
+
* navigates — all the native side effects of a real click. Same syntax as
|
|
22
|
+
* `useHotkey`. Pass an array for alternatives — only the first is rendered as
|
|
23
|
+
* a visual chip.
|
|
23
24
|
*/
|
|
24
25
|
hotkey?: string | readonly string[];
|
|
25
26
|
}
|
|
26
|
-
export declare function Button({ variant, size, fullWidth, loading, icon, iconTrailing, hotkey, className, type, disabled, children, onClick, ...rest }: ButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
27
|
+
export declare function Button({ variant, size, fullWidth, loading, icon, iconTrailing, hotkey, className, type, disabled, children, onClick, ref, ...rest }: ButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
27
28
|
//# sourceMappingURL=Button.d.ts.map
|
package/dist/Button.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../src/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../src/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAEjE,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAInD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;AACjF,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE5C,MAAM,WAAW,WAAY,SAAQ,cAAc,CAAC,OAAO,UAAU,CAAC;IACpE,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;uEACmE;IACnE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wEAAwE;IACxE,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,uFAAuF;IACvF,YAAY,CAAC,EAAE,QAAQ,CAAC;IACxB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,wBAAgB,MAAM,CAAC,EACrB,OAAmB,EACnB,IAAW,EACX,SAAS,EACT,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,SAAS,EACT,IAAe,EACf,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,GAAG,EACH,GAAG,IAAI,EACR,EAAE,WAAW,2CA+Cb"}
|
package/dist/ButtonGroup.d.ts
CHANGED
|
@@ -2,6 +2,12 @@ import { ComponentProps } from 'react';
|
|
|
2
2
|
export type ButtonGroupOrientation = "horizontal" | "vertical";
|
|
3
3
|
export interface ButtonGroupProps extends ComponentProps<"div"> {
|
|
4
4
|
orientation?: ButtonGroupOrientation;
|
|
5
|
+
/**
|
|
6
|
+
* Stretch the group across its container. Horizontal groups split the row
|
|
7
|
+
* evenly so every button is the same width; vertical groups fill the
|
|
8
|
+
* container width.
|
|
9
|
+
*/
|
|
10
|
+
fullWidth?: boolean;
|
|
5
11
|
}
|
|
6
|
-
export declare function ButtonGroup({ orientation, role, className, ...rest }: ButtonGroupProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export declare function ButtonGroup({ orientation, fullWidth, role, className, ...rest }: ButtonGroupProps): import("react/jsx-runtime").JSX.Element;
|
|
7
13
|
//# sourceMappingURL=ButtonGroup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ButtonGroup.d.ts","sourceRoot":"","sources":["../src/ButtonGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAG5C,MAAM,MAAM,sBAAsB,GAAG,YAAY,GAAG,UAAU,CAAC;AAE/D,MAAM,WAAW,gBAAiB,SAAQ,cAAc,CAAC,KAAK,CAAC;IAC7D,WAAW,CAAC,EAAE,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"ButtonGroup.d.ts","sourceRoot":"","sources":["../src/ButtonGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAG5C,MAAM,MAAM,sBAAsB,GAAG,YAAY,GAAG,UAAU,CAAC;AAE/D,MAAM,WAAW,gBAAiB,SAAQ,cAAc,CAAC,KAAK,CAAC;IAC7D,WAAW,CAAC,EAAE,sBAAsB,CAAC;IACrC;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,WAAW,CAAC,EAC1B,WAA0B,EAC1B,SAAiB,EACjB,IAAc,EACd,SAAS,EACT,GAAG,IAAI,EACR,EAAE,gBAAgB,2CAelB"}
|
package/dist/Input.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Input as BaseInput } from '@base-ui/react/input';
|
|
2
2
|
import { ComponentProps } from 'react';
|
|
3
|
-
export type InputVariant = "bordered" | "ghost" | "danger";
|
|
3
|
+
export type InputVariant = "bordered" | "ghost" | "danger" | "info" | "success" | "warning";
|
|
4
4
|
export type InputSize = "sm" | "md" | "lg";
|
|
5
5
|
type BaseInputProps = Omit<ComponentProps<typeof BaseInput>, "size">;
|
|
6
6
|
export interface InputProps extends BaseInputProps {
|
package/dist/Input.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../src/Input.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAG5C,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../src/Input.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAG5C,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AAC5F,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE3C,KAAK,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;AAErE,MAAM,WAAW,UAAW,SAAQ,cAAc;IAChD,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,wBAAgB,KAAK,CAAC,EACpB,OAAoB,EACpB,SAAgB,EAChB,SAAS,EACT,IAAa,EACb,GAAG,IAAI,EACR,EAAE,UAAU,2CAeZ"}
|
package/dist/Link.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ComponentProps } from 'react';
|
|
2
|
+
import { IconProp } from './icon';
|
|
3
|
+
export interface LinkProps extends ComponentProps<"a"> {
|
|
4
|
+
/**
|
|
5
|
+
* Marks the link as leaving the app: renders a trailing ↗ affordance and
|
|
6
|
+
* defaults `target="_blank"` + `rel="noopener noreferrer"`. Explicit
|
|
7
|
+
* `target`/`rel` props win, so you can keep the icon while overriding either.
|
|
8
|
+
*/
|
|
9
|
+
external?: boolean;
|
|
10
|
+
/** Leading icon. Pass a component (`icon={IconHome}`) or an element. */
|
|
11
|
+
icon?: IconProp;
|
|
12
|
+
/** Trailing icon. Independent of `external`'s ↗ affordance. */
|
|
13
|
+
iconTrailing?: IconProp;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* A text link — a plain `<a>` with the design system's link styling: primary
|
|
17
|
+
* color, hover shift, underline, and a focus-visible ring. Pass `external` for
|
|
18
|
+
* the new-tab affordance.
|
|
19
|
+
*/
|
|
20
|
+
export declare function Link({ external, icon, iconTrailing, className, target, rel, children, ...rest }: LinkProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
//# sourceMappingURL=Link.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../src/Link.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAEnD,MAAM,WAAW,SAAU,SAAQ,cAAc,CAAC,GAAG,CAAC;IACpD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wEAAwE;IACxE,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,QAAQ,CAAC;CACzB;AAED;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,EACnB,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,SAAS,EACT,MAAM,EACN,GAAG,EACH,QAAQ,EACR,GAAG,IAAI,EACR,EAAE,SAAS,2CAaX"}
|
package/dist/Textarea.d.ts
CHANGED
|
@@ -1,9 +1,22 @@
|
|
|
1
1
|
import { ComponentProps } from 'react';
|
|
2
|
-
export type TextareaVariant = "bordered" | "ghost" | "danger";
|
|
2
|
+
export type TextareaVariant = "bordered" | "ghost" | "danger" | "info" | "success" | "warning";
|
|
3
3
|
export type TextareaSize = "sm" | "md" | "lg";
|
|
4
4
|
export interface TextareaProps extends Omit<ComponentProps<"textarea">, "size"> {
|
|
5
5
|
variant?: TextareaVariant;
|
|
6
6
|
textareaSize?: TextareaSize;
|
|
7
|
+
/**
|
|
8
|
+
* Height tracks content via CSS `field-sizing` (Chromium-only today; other
|
|
9
|
+
* browsers keep a fixed, resizable box). `rows`/min-height is the floor —
|
|
10
|
+
* set `max-height` via `className`/`style` for a ceiling.
|
|
11
|
+
*/
|
|
12
|
+
autoResize?: boolean;
|
|
7
13
|
}
|
|
8
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Multi-line text input. Rendered through Base UI's `Field.Control` with a
|
|
16
|
+
* `<textarea>` swapped in for the default `<input>`, so inside a `<Field>` it
|
|
17
|
+
* gets the same wiring as `<Input>`: a generated id, label `htmlFor`
|
|
18
|
+
* association, and validity-driven `:user-valid` / `<Field.Error>`. Works
|
|
19
|
+
* standalone too — `Field.Control` falls back to a default context.
|
|
20
|
+
*/
|
|
21
|
+
export declare function Textarea({ variant, textareaSize, autoResize, className, ...rest }: TextareaProps): import("react/jsx-runtime").JSX.Element;
|
|
9
22
|
//# sourceMappingURL=Textarea.d.ts.map
|
package/dist/Textarea.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Textarea.d.ts","sourceRoot":"","sources":["../src/Textarea.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Textarea.d.ts","sourceRoot":"","sources":["../src/Textarea.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAG5C,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AAC/F,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE9C,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7E,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,EACvB,OAAoB,EACpB,YAAmB,EACnB,UAAU,EACV,SAAS,EACT,GAAG,IAAI,EACR,EAAE,aAAa,2CAmBf"}
|
package/dist/admin.scoped.css
CHANGED
|
@@ -704,6 +704,9 @@
|
|
|
704
704
|
:scope._ao-accordion-summary::-webkit-details-marker, :scope ._ao-accordion-summary::-webkit-details-marker {
|
|
705
705
|
display: none;
|
|
706
706
|
}
|
|
707
|
+
:scope._ao-accordion-summary > :is(i, svg), :scope ._ao-accordion-summary > :is(i, svg) {
|
|
708
|
+
flex-shrink: 0;
|
|
709
|
+
}
|
|
707
710
|
:scope._ao-accordion-summary::after, :scope ._ao-accordion-summary::after {
|
|
708
711
|
content: "";
|
|
709
712
|
width: 0.5rem;
|
|
@@ -896,6 +899,9 @@
|
|
|
896
899
|
white-space: nowrap;
|
|
897
900
|
color: var(--color-text);
|
|
898
901
|
}
|
|
902
|
+
:scope._ao-badge > :is(i, svg), :scope ._ao-badge > :is(i, svg) {
|
|
903
|
+
flex-shrink: 0;
|
|
904
|
+
}
|
|
899
905
|
:scope._ao-badge-info, :scope ._ao-badge-info {
|
|
900
906
|
border-color: var(--color-info-muted);
|
|
901
907
|
background-color: var(--color-info-muted);
|
|
@@ -1235,6 +1241,9 @@
|
|
|
1235
1241
|
width: 0.875rem;
|
|
1236
1242
|
height: 0.875rem;
|
|
1237
1243
|
}
|
|
1244
|
+
:scope._ao-breadcrumb-item > :is(i, svg), :scope ._ao-breadcrumb-item > :is(i, svg), :scope._ao-breadcrumb-separator > :is(i, svg), :scope ._ao-breadcrumb-separator > :is(i, svg) {
|
|
1245
|
+
flex-shrink: 0;
|
|
1246
|
+
}
|
|
1238
1247
|
:scope._ao-pagination > ol, :scope ._ao-pagination > ol, :scope._ao-pagination > ul, :scope ._ao-pagination > ul {
|
|
1239
1248
|
margin: calc(var(--spacing) * 0);
|
|
1240
1249
|
display: inline-flex;
|
|
@@ -1473,6 +1482,9 @@
|
|
|
1473
1482
|
opacity: 50%;
|
|
1474
1483
|
}
|
|
1475
1484
|
}
|
|
1485
|
+
:scope._ao-btn > :is(i, svg), :scope ._ao-btn > :is(i, svg) {
|
|
1486
|
+
flex-shrink: 0;
|
|
1487
|
+
}
|
|
1476
1488
|
:scope._ao-btn-primary, :scope ._ao-btn-primary {
|
|
1477
1489
|
border-color: transparent;
|
|
1478
1490
|
background-color: var(--color-primary);
|
|
@@ -1493,6 +1505,14 @@
|
|
|
1493
1505
|
}
|
|
1494
1506
|
}
|
|
1495
1507
|
}
|
|
1508
|
+
:scope._ao-btn-muted, :scope ._ao-btn-muted {
|
|
1509
|
+
background-color: var(--color-surface);
|
|
1510
|
+
&:hover {
|
|
1511
|
+
@media (hover: hover) {
|
|
1512
|
+
background-color: var(--color-surface-muted);
|
|
1513
|
+
}
|
|
1514
|
+
}
|
|
1515
|
+
}
|
|
1496
1516
|
:scope._ao-btn-danger, :scope ._ao-btn-danger {
|
|
1497
1517
|
border-color: transparent;
|
|
1498
1518
|
background-color: var(--color-danger);
|
|
@@ -1617,6 +1637,60 @@
|
|
|
1617
1637
|
border-top-color: color-mix(in srgb, currentColor 25%, transparent);
|
|
1618
1638
|
}
|
|
1619
1639
|
}
|
|
1640
|
+
:scope._ao-btn-group-full-width:not(._ao-btn-group-vertical), :scope ._ao-btn-group-full-width:not(._ao-btn-group-vertical) {
|
|
1641
|
+
display: flex;
|
|
1642
|
+
width: 100%;
|
|
1643
|
+
}
|
|
1644
|
+
:scope._ao-btn-group-full-width:not(._ao-btn-group-vertical) > ._ao-btn, :scope ._ao-btn-group-full-width:not(._ao-btn-group-vertical) > ._ao-btn, :scope._ao-btn-group-full-width:not(._ao-btn-group-vertical) > ._ao-menu, :scope ._ao-btn-group-full-width:not(._ao-btn-group-vertical) > ._ao-menu {
|
|
1645
|
+
flex: 1;
|
|
1646
|
+
}
|
|
1647
|
+
:scope._ao-btn-group-full-width._ao-btn-group-vertical, :scope ._ao-btn-group-full-width._ao-btn-group-vertical {
|
|
1648
|
+
width: 100%;
|
|
1649
|
+
}
|
|
1650
|
+
:scope._ao-link, :scope ._ao-link {
|
|
1651
|
+
display: inline-flex;
|
|
1652
|
+
align-items: center;
|
|
1653
|
+
gap: calc(var(--spacing) * 1);
|
|
1654
|
+
border-radius: var(--radius-sm);
|
|
1655
|
+
color: var(--color-primary);
|
|
1656
|
+
text-decoration-line: underline;
|
|
1657
|
+
text-underline-offset: 2px;
|
|
1658
|
+
transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
|
|
1659
|
+
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
|
|
1660
|
+
transition-duration: var(--tw-duration, var(--default-transition-duration));
|
|
1661
|
+
--tw-duration: 150ms;
|
|
1662
|
+
transition-duration: 150ms;
|
|
1663
|
+
&:hover {
|
|
1664
|
+
@media (hover: hover) {
|
|
1665
|
+
color: var(--color-primary-hover);
|
|
1666
|
+
}
|
|
1667
|
+
}
|
|
1668
|
+
&:focus-visible {
|
|
1669
|
+
outline-style: var(--tw-outline-style);
|
|
1670
|
+
outline-width: 2px;
|
|
1671
|
+
}
|
|
1672
|
+
&:focus-visible {
|
|
1673
|
+
outline-offset: 2px;
|
|
1674
|
+
}
|
|
1675
|
+
&:focus-visible {
|
|
1676
|
+
outline-color: var(--color-primary);
|
|
1677
|
+
}
|
|
1678
|
+
}
|
|
1679
|
+
:scope._ao-link > :is(i, svg), :scope ._ao-link > :is(i, svg) {
|
|
1680
|
+
flex-shrink: 0;
|
|
1681
|
+
}
|
|
1682
|
+
:scope._ao-link-external, :scope ._ao-link-external {
|
|
1683
|
+
--link-external-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M17 7 7 17'/%3E%3Cpath d='M8 7h9v9'/%3E%3C/svg%3E");
|
|
1684
|
+
}
|
|
1685
|
+
:scope._ao-link-external::after, :scope ._ao-link-external::after {
|
|
1686
|
+
content: "";
|
|
1687
|
+
flex: none;
|
|
1688
|
+
width: 0.85em;
|
|
1689
|
+
height: 0.85em;
|
|
1690
|
+
background-color: currentColor;
|
|
1691
|
+
-webkit-mask: var(--link-external-arrow) center / contain no-repeat;
|
|
1692
|
+
mask: var(--link-external-arrow) center / contain no-repeat;
|
|
1693
|
+
}
|
|
1620
1694
|
:scope._ao-input, :scope ._ao-input {
|
|
1621
1695
|
display: inline-flex;
|
|
1622
1696
|
width: 100%;
|
|
@@ -1688,6 +1762,39 @@
|
|
|
1688
1762
|
outline-color: var(--color-danger);
|
|
1689
1763
|
}
|
|
1690
1764
|
}
|
|
1765
|
+
:scope._ao-input-info, :scope ._ao-input-info {
|
|
1766
|
+
border-color: var(--color-info);
|
|
1767
|
+
&:hover {
|
|
1768
|
+
@media (hover: hover) {
|
|
1769
|
+
border-color: var(--color-info);
|
|
1770
|
+
}
|
|
1771
|
+
}
|
|
1772
|
+
&:focus-visible {
|
|
1773
|
+
outline-color: var(--color-info);
|
|
1774
|
+
}
|
|
1775
|
+
}
|
|
1776
|
+
:scope._ao-input-success, :scope ._ao-input-success {
|
|
1777
|
+
border-color: var(--color-success);
|
|
1778
|
+
&:hover {
|
|
1779
|
+
@media (hover: hover) {
|
|
1780
|
+
border-color: var(--color-success);
|
|
1781
|
+
}
|
|
1782
|
+
}
|
|
1783
|
+
&:focus-visible {
|
|
1784
|
+
outline-color: var(--color-success);
|
|
1785
|
+
}
|
|
1786
|
+
}
|
|
1787
|
+
:scope._ao-input-warning, :scope ._ao-input-warning {
|
|
1788
|
+
border-color: var(--color-warning);
|
|
1789
|
+
&:hover {
|
|
1790
|
+
@media (hover: hover) {
|
|
1791
|
+
border-color: var(--color-warning);
|
|
1792
|
+
}
|
|
1793
|
+
}
|
|
1794
|
+
&:focus-visible {
|
|
1795
|
+
outline-color: var(--color-warning);
|
|
1796
|
+
}
|
|
1797
|
+
}
|
|
1691
1798
|
:scope._ao-input-sm, :scope ._ao-input-sm {
|
|
1692
1799
|
padding-inline: calc(var(--spacing) * 2.5);
|
|
1693
1800
|
padding-block: calc(var(--spacing) * 1.5);
|
|
@@ -1816,6 +1923,43 @@
|
|
|
1816
1923
|
outline-color: var(--color-danger);
|
|
1817
1924
|
}
|
|
1818
1925
|
}
|
|
1926
|
+
:scope._ao-textarea-info, :scope ._ao-textarea-info {
|
|
1927
|
+
border-color: var(--color-info);
|
|
1928
|
+
&:hover {
|
|
1929
|
+
@media (hover: hover) {
|
|
1930
|
+
border-color: var(--color-info);
|
|
1931
|
+
}
|
|
1932
|
+
}
|
|
1933
|
+
&:focus-visible {
|
|
1934
|
+
outline-color: var(--color-info);
|
|
1935
|
+
}
|
|
1936
|
+
}
|
|
1937
|
+
:scope._ao-textarea-success, :scope ._ao-textarea-success {
|
|
1938
|
+
border-color: var(--color-success);
|
|
1939
|
+
&:hover {
|
|
1940
|
+
@media (hover: hover) {
|
|
1941
|
+
border-color: var(--color-success);
|
|
1942
|
+
}
|
|
1943
|
+
}
|
|
1944
|
+
&:focus-visible {
|
|
1945
|
+
outline-color: var(--color-success);
|
|
1946
|
+
}
|
|
1947
|
+
}
|
|
1948
|
+
:scope._ao-textarea-warning, :scope ._ao-textarea-warning {
|
|
1949
|
+
border-color: var(--color-warning);
|
|
1950
|
+
&:hover {
|
|
1951
|
+
@media (hover: hover) {
|
|
1952
|
+
border-color: var(--color-warning);
|
|
1953
|
+
}
|
|
1954
|
+
}
|
|
1955
|
+
&:focus-visible {
|
|
1956
|
+
outline-color: var(--color-warning);
|
|
1957
|
+
}
|
|
1958
|
+
}
|
|
1959
|
+
:scope._ao-textarea-autosize, :scope ._ao-textarea-autosize {
|
|
1960
|
+
field-sizing: content;
|
|
1961
|
+
resize: none;
|
|
1962
|
+
}
|
|
1819
1963
|
:scope._ao-textarea-sm, :scope ._ao-textarea-sm {
|
|
1820
1964
|
min-height: calc(var(--spacing) * 16);
|
|
1821
1965
|
padding-inline: calc(var(--spacing) * 2.5);
|
|
@@ -2396,6 +2540,9 @@
|
|
|
2396
2540
|
font-weight: var(--font-weight-medium);
|
|
2397
2541
|
color: var(--color-text-muted);
|
|
2398
2542
|
}
|
|
2543
|
+
:scope._ao-stat-card-label > :is(i, svg), :scope ._ao-stat-card-label > :is(i, svg) {
|
|
2544
|
+
flex-shrink: 0;
|
|
2545
|
+
}
|
|
2399
2546
|
:scope._ao-stat-card-value, :scope ._ao-stat-card-value {
|
|
2400
2547
|
font-size: var(--text-2xl);
|
|
2401
2548
|
line-height: var(--tw-leading, var(--text-2xl--line-height));
|
|
@@ -2954,6 +3101,9 @@
|
|
|
2954
3101
|
cursor: not-allowed;
|
|
2955
3102
|
opacity: 50%;
|
|
2956
3103
|
}
|
|
3104
|
+
:scope._ao-menu-trigger > :is(i, svg), :scope ._ao-menu-trigger > :is(i, svg), :scope._ao-menu-item > :is(i, svg), :scope ._ao-menu-item > :is(i, svg) {
|
|
3105
|
+
flex-shrink: 0;
|
|
3106
|
+
}
|
|
2957
3107
|
:scope._ao-menu-separator, :scope ._ao-menu-separator {
|
|
2958
3108
|
margin-block: calc(var(--spacing) * 1);
|
|
2959
3109
|
height: 1px;
|
|
@@ -3045,6 +3195,9 @@
|
|
|
3045
3195
|
background-color: var(--color-primary-muted);
|
|
3046
3196
|
color: var(--color-primary);
|
|
3047
3197
|
}
|
|
3198
|
+
:scope._ao-navbar-brand > :is(i, svg), :scope ._ao-navbar-brand > :is(i, svg), :scope._ao-navbar-item > :is(i, svg), :scope ._ao-navbar-item > :is(i, svg) {
|
|
3199
|
+
flex-shrink: 0;
|
|
3200
|
+
}
|
|
3048
3201
|
:scope._ao-navbar-actions, :scope ._ao-navbar-actions {
|
|
3049
3202
|
margin-left: auto;
|
|
3050
3203
|
display: flex;
|
|
@@ -3527,6 +3680,9 @@
|
|
|
3527
3680
|
:scope._ao-tabs ._ao-tab[data-selected], :scope ._ao-tabs ._ao-tab[data-selected], :scope._ao-tabs ._ao-tab[aria-selected="true"], :scope ._ao-tabs ._ao-tab[aria-selected="true"] {
|
|
3528
3681
|
color: var(--color-text);
|
|
3529
3682
|
}
|
|
3683
|
+
:scope._ao-tabs ._ao-tab > :is(i, svg), :scope ._ao-tabs ._ao-tab > :is(i, svg) {
|
|
3684
|
+
flex-shrink: 0;
|
|
3685
|
+
}
|
|
3530
3686
|
:scope._ao-tabs ._ao-tab-input, :scope ._ao-tabs ._ao-tab-input {
|
|
3531
3687
|
position: absolute;
|
|
3532
3688
|
width: 1px;
|
package/dist/hotkey-parse.d.ts
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Pure helpers for the hotkey system. Chord syntax: `<mod>+<mod>+…+<key>`
|
|
3
3
|
*
|
|
4
|
-
* Examples: `mod+s`,
|
|
4
|
+
* Examples: `mod+s`, `?`, `escape`, `mod+shift+k`, `arrowup`.
|
|
5
5
|
*
|
|
6
|
-
* Modifiers are case-insensitive. `mod`
|
|
7
|
-
*
|
|
8
|
-
* `
|
|
9
|
-
*
|
|
10
|
-
*
|
|
6
|
+
* Modifiers are case-insensitive. `mod` resolves to the platform's primary
|
|
7
|
+
* command modifier — ⌘ (`meta`) on Apple platforms, `Ctrl` elsewhere — so
|
|
8
|
+
* `mod+s` fires on the OS-native gesture (Cmd+S on macOS, Ctrl+S otherwise)
|
|
9
|
+
* and the `<Kbd>` chip follows suit. The key is whatever
|
|
10
|
+
* `KeyboardEvent.key` produces, lowercased. A shifted printable symbol already
|
|
11
|
+
* encodes Shift in the character it produces, so bind `"?"` (not `"shift+?"`)
|
|
12
|
+
* to catch `shift+/`; `shift` stays explicit for letters and named keys, so
|
|
13
|
+
* `shift+a` and `shift+tab` remain distinct chords.
|
|
11
14
|
*/
|
|
12
15
|
export type Modifier = "ctrl" | "shift" | "alt" | "meta";
|
|
13
16
|
export interface ParsedChord {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hotkey-parse.d.ts","sourceRoot":"","sources":["../src/hotkey-parse.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"hotkey-parse.d.ts","sourceRoot":"","sources":["../src/hotkey-parse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;AAEzD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;CACb;AAsCD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CA2BrD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,WAAW,EAAE,CAGzE;AAED,6DAA6D;AAC7D,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAOvD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAgB9D;AA4BD,2EAA2E;AAC3E,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,EAAE,CAcxD;AAkBD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG,MAAM,CAEzE"}
|
|
@@ -4,11 +4,12 @@ import { RefObject } from 'react';
|
|
|
4
4
|
* attached on first registration and detached when the registry empties.
|
|
5
5
|
*
|
|
6
6
|
* On keydown:
|
|
7
|
-
* 1.
|
|
8
|
-
* 2.
|
|
9
|
-
* 3.
|
|
7
|
+
* 1. Ignore OS autorepeat (`e.repeat`) so a held chord fires once, not per tick.
|
|
8
|
+
* 2. Normalize the event to a canonical chord string.
|
|
9
|
+
* 3. Look up the bucket. Skip if empty.
|
|
10
|
+
* 4. Apply input suppression — bare-key chords are skipped while focus is
|
|
10
11
|
* in an editable element, except for `escape`.
|
|
11
|
-
*
|
|
12
|
+
* 5. `preventDefault()`, then invoke every surviving handler (bag semantics).
|
|
12
13
|
*/
|
|
13
14
|
export type HotkeyHandler = (e: KeyboardEvent) => void;
|
|
14
15
|
export interface HotkeyEntry {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hotkey-registry.d.ts","sourceRoot":"","sources":["../src/hotkey-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC
|
|
1
|
+
{"version":3,"file":"hotkey-registry.d.ts","sourceRoot":"","sources":["../src/hotkey-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;AAEvD,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;CACtC;AA6CD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM,IAAI,CAmB3F;AAED,6DAA6D;AAC7D,wBAAgB,eAAe,IAAI,IAAI,CAGtC"}
|