@starci/grammar 0.8.4 → 0.8.5
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/.build-stamp.json +4 -4
- package/dist/common/components-overlays.css +11 -0
- package/dist/common/registry.d.ts +1 -1
- package/dist/common/styles.css +47 -11
- package/dist/core/primitive/Input/index.d.ts +8 -3
- package/dist/core/primitive/Input/index.d.ts.map +1 -1
- package/dist/core/primitive/Input/index.js +21 -4
- package/dist/core/primitive/Input/index.js.map +1 -1
- package/package.json +1 -1
package/dist/.build-stamp.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": "starci/grammar-build-stamp@1",
|
|
3
3
|
"package": "@starci/grammar",
|
|
4
|
-
"version": "0.8.
|
|
4
|
+
"version": "0.8.5",
|
|
5
5
|
"algorithm": "starci/grammar-source-digest@1",
|
|
6
|
-
"sourceDigest": "sha256:
|
|
7
|
-
"distDigest": "sha256:
|
|
8
|
-
"builtAt": "2026-10-
|
|
6
|
+
"sourceDigest": "sha256:a42014cc561757f8f0adfc501128a27a9cd2f7387156720872f60c03df773a60",
|
|
7
|
+
"distDigest": "sha256:a596edd124198822410088a2521730eba0d126f95bddd780ff7650b762d99f08",
|
|
8
|
+
"builtAt": "2026-10-11T02:27:57.081Z"
|
|
9
9
|
}
|
|
@@ -69,14 +69,20 @@
|
|
|
69
69
|
|
|
70
70
|
/* ---------------------------------------------------------------- dialog + alert dialog */
|
|
71
71
|
/* The container is sized to the dialog so a press on the empty backdrop counts as "outside". */
|
|
72
|
+
/* The vendor container is a full-height column: the dialog is centred in it and stays as tall as its content. */
|
|
72
73
|
.starci-core-dialog-container {
|
|
73
74
|
display: flex;
|
|
75
|
+
justify-content: center;
|
|
74
76
|
width: min(100%, 32rem);
|
|
75
77
|
max-height: 100%;
|
|
76
78
|
min-width: 0;
|
|
77
79
|
outline: none;
|
|
78
80
|
}
|
|
79
81
|
|
|
82
|
+
.starci-core-dialog-container > .starci-core-dialog {
|
|
83
|
+
flex: 0 1 auto;
|
|
84
|
+
}
|
|
85
|
+
|
|
80
86
|
.starci-core-dialog-container[data-size="sm"] {
|
|
81
87
|
width: min(100%, 24rem);
|
|
82
88
|
}
|
|
@@ -222,12 +228,15 @@
|
|
|
222
228
|
width: min(100%, 24rem);
|
|
223
229
|
}
|
|
224
230
|
|
|
231
|
+
/* The vendor content is `inset: 0`; each placement releases the opposite edge so the sized panel sits on its own side. */
|
|
225
232
|
.starci-core-drawer-content[data-placement="right"] {
|
|
233
|
+
inset-inline-start: auto;
|
|
226
234
|
inset-inline-end: 0;
|
|
227
235
|
}
|
|
228
236
|
|
|
229
237
|
.starci-core-drawer-content[data-placement="left"] {
|
|
230
238
|
inset-inline-start: 0;
|
|
239
|
+
inset-inline-end: auto;
|
|
231
240
|
}
|
|
232
241
|
|
|
233
242
|
.starci-core-drawer-content[data-placement="top"],
|
|
@@ -238,9 +247,11 @@
|
|
|
238
247
|
|
|
239
248
|
.starci-core-drawer-content[data-placement="top"] {
|
|
240
249
|
top: 0;
|
|
250
|
+
bottom: auto;
|
|
241
251
|
}
|
|
242
252
|
|
|
243
253
|
.starci-core-drawer-content[data-placement="bottom"] {
|
|
254
|
+
top: auto;
|
|
244
255
|
bottom: 0;
|
|
245
256
|
}
|
|
246
257
|
|
|
@@ -74,7 +74,7 @@ export declare const COMMON_GRAMMAR_COMPONENTS: Readonly<{
|
|
|
74
74
|
readonly IconButton: ({ source, label, variant, isActive, isDisabled, isSkeleton, onPress, "aria-controls": controls, "aria-expanded": expanded, }: import("./renderers.js").IconButtonProps) => import("react").JSX.Element;
|
|
75
75
|
readonly IconTile: ({ source, artwork, ariaLabel, tone, size, isSkeleton, }: import("./renderers.js").IconTileProps) => import("react").JSX.Element;
|
|
76
76
|
readonly IncludedMark: ({ className, label, ...props }: import("./renderers.js").IncludedMarkProps) => import("react").JSX.Element;
|
|
77
|
-
readonly Input: ({ id, name, label, kind: kindName, variant, placeholder, defaultValue, value, hint, errorMessage, isError, isDisabled, isRequired, isSkeleton, isReadOnly, isCopyable, copyLabel, copiedLabel, onCopy, revealLabel, hideLabel, revealIcon: RevealIcon, hideIcon: HideIcon, onValueChange, }: import("./renderers.js").InputProps) => import("react").JSX.Element;
|
|
77
|
+
readonly Input: ({ id, name, label, kind: kindName, variant, placeholder, defaultValue, value, hint, errorMessage, isError, isDisabled, isRequired, isSkeleton, isReadOnly, isCopyable, copyLabel, copiedLabel, copyIcon: CopyIcon, copiedIcon: CopiedIcon, onCopy, revealLabel, hideLabel, revealIcon: RevealIcon, hideIcon: HideIcon, onValueChange, }: import("./renderers.js").InputProps) => import("react").JSX.Element;
|
|
78
78
|
readonly Label: ({ id, children, depth, as }: import("./renderers.js").LabelProps) => import("react").DetailedReactHTMLElement<{
|
|
79
79
|
readonly id: string | undefined;
|
|
80
80
|
readonly className: string;
|
package/dist/common/styles.css
CHANGED
|
@@ -2799,17 +2799,6 @@
|
|
|
2799
2799
|
gap: 0.5rem !important;
|
|
2800
2800
|
}
|
|
2801
2801
|
|
|
2802
|
-
.starci-core-input-row {
|
|
2803
|
-
display: flex;
|
|
2804
|
-
min-width: 0;
|
|
2805
|
-
align-items: center;
|
|
2806
|
-
gap: 0.5rem;
|
|
2807
|
-
}
|
|
2808
|
-
|
|
2809
|
-
.starci-core-input-row > .starci-core-input-control {
|
|
2810
|
-
flex: 1 1 auto;
|
|
2811
|
-
}
|
|
2812
|
-
|
|
2813
2802
|
.starci-core-input[data-grammar-readonly="true"] .starci-core-input-field {
|
|
2814
2803
|
cursor: text;
|
|
2815
2804
|
}
|
|
@@ -2839,6 +2828,53 @@
|
|
|
2839
2828
|
cursor: pointer;
|
|
2840
2829
|
}
|
|
2841
2830
|
|
|
2831
|
+
/* In-field actions (reveal, copy): one group at the field's end; the field reserves their measured width. */
|
|
2832
|
+
.starci-core-input-actions {
|
|
2833
|
+
position: absolute;
|
|
2834
|
+
inset-inline-end: 0.5rem;
|
|
2835
|
+
top: 50%;
|
|
2836
|
+
display: inline-flex;
|
|
2837
|
+
align-items: center;
|
|
2838
|
+
gap: 0.25rem;
|
|
2839
|
+
transform: translateY(-50%);
|
|
2840
|
+
}
|
|
2841
|
+
|
|
2842
|
+
.starci-core-input-actions .starci-core-input-reveal {
|
|
2843
|
+
position: static;
|
|
2844
|
+
transform: none;
|
|
2845
|
+
min-height: 1.75rem;
|
|
2846
|
+
padding-inline: 0.375rem;
|
|
2847
|
+
border-radius: var(--radius-sm, calc(var(--radius, 0.5rem) * 0.5));
|
|
2848
|
+
}
|
|
2849
|
+
|
|
2850
|
+
.starci-core-input-actions .starci-core-input-reveal:not(:disabled):hover {
|
|
2851
|
+
color: var(--foreground, CanvasText);
|
|
2852
|
+
background: var(--default, transparent);
|
|
2853
|
+
}
|
|
2854
|
+
|
|
2855
|
+
.starci-core-input-actions .starci-core-input-reveal:focus-visible {
|
|
2856
|
+
outline: 2px solid var(--focus, Highlight);
|
|
2857
|
+
outline-offset: 1px;
|
|
2858
|
+
}
|
|
2859
|
+
|
|
2860
|
+
.starci-core-input-copy[data-copied="true"] {
|
|
2861
|
+
color: var(--success-foreground, var(--foreground, CanvasText));
|
|
2862
|
+
}
|
|
2863
|
+
|
|
2864
|
+
.starci-core-input-live {
|
|
2865
|
+
position: absolute;
|
|
2866
|
+
width: 1px;
|
|
2867
|
+
height: 1px;
|
|
2868
|
+
overflow: hidden;
|
|
2869
|
+
clip-path: inset(50%);
|
|
2870
|
+
white-space: nowrap;
|
|
2871
|
+
}
|
|
2872
|
+
|
|
2873
|
+
.starci-core-input-control[data-reveal="true"] .starci-core-input-field,
|
|
2874
|
+
.starci-core-input-control[data-copyable="true"] .starci-core-input-field {
|
|
2875
|
+
padding-inline-end: calc(var(--starci-core-input-actions-width, 2rem) + 0.75rem) !important;
|
|
2876
|
+
}
|
|
2877
|
+
|
|
2842
2878
|
.starci-core-input-reveal:disabled {
|
|
2843
2879
|
cursor: default;
|
|
2844
2880
|
}
|
|
@@ -21,11 +21,16 @@ export type InputProps = {
|
|
|
21
21
|
readonly isSkeleton?: boolean;
|
|
22
22
|
/** The value can be focused, selected and copied but not changed (unlike `isDisabled`, it stays at full contrast). */
|
|
23
23
|
readonly isReadOnly?: boolean;
|
|
24
|
-
/**
|
|
24
|
+
/**
|
|
25
|
+
* Adds a copy action inside the field, at its end (after the reveal toggle of a secret), that copies the current value;
|
|
26
|
+
* needs `copyLabel` (its accessible name, and its visible text when no `copyIcon` is given).
|
|
27
|
+
*/
|
|
25
28
|
readonly isCopyable?: boolean;
|
|
26
29
|
readonly copyLabel?: string;
|
|
27
|
-
/**
|
|
30
|
+
/** Announced (and shown, without `copiedIcon`) on the copy action for a moment after a successful copy. */
|
|
28
31
|
readonly copiedLabel?: string;
|
|
32
|
+
readonly copyIcon?: InputIcon;
|
|
33
|
+
readonly copiedIcon?: InputIcon;
|
|
29
34
|
/** Called with the copied value after it reached the clipboard. */
|
|
30
35
|
readonly onCopy?: (value: string) => void;
|
|
31
36
|
readonly revealLabel?: string;
|
|
@@ -35,6 +40,6 @@ export type InputProps = {
|
|
|
35
40
|
readonly onValueChange?: (value: string) => void;
|
|
36
41
|
};
|
|
37
42
|
/** Core ownership boundary for label, guidance, control state, and validation copy. */
|
|
38
|
-
export declare const Input: ({ id, name, label, kind: kindName, variant, placeholder, defaultValue, value, hint, errorMessage, isError, isDisabled, isRequired, isSkeleton, isReadOnly, isCopyable, copyLabel, copiedLabel, onCopy, revealLabel, hideLabel, revealIcon: RevealIcon, hideIcon: HideIcon, onValueChange, }: InputProps) => import("react").JSX.Element;
|
|
43
|
+
export declare const Input: ({ id, name, label, kind: kindName, variant, placeholder, defaultValue, value, hint, errorMessage, isError, isDisabled, isRequired, isSkeleton, isReadOnly, isCopyable, copyLabel, copiedLabel, copyIcon: CopyIcon, copiedIcon: CopiedIcon, onCopy, revealLabel, hideLabel, revealIcon: RevealIcon, hideIcon: HideIcon, onValueChange, }: InputProps) => import("react").JSX.Element;
|
|
39
44
|
export {};
|
|
40
45
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/Input/index.tsx"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/Input/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAgD,KAAK,aAAa,EAAsB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAU5H,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,KAAK,GAAG,UAAU,GAAG,aAAa,GAAG,MAAM,GAAG,MAAM,CAAA;AACtF,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,WAAW,CAAA;AAElD,KAAK,SAAS,GAAG,aAAa,CAAC;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAE/D,MAAM,MAAM,UAAU,GAAG;IACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAA;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAA;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAA;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAA;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,sHAAsH;IACtH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,2GAA2G;IAC3G,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,CAAA;IAC/B,mEAAmE;IACnE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,CAAA;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;IAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACnD,CAAA;AAWD,uFAAuF;AACvF,eAAO,MAAM,KAAK,GAAI,yUA2BnB,UAAU,gCAiIZ,CAAA"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useEffect, useState } from "react";
|
|
3
|
+
import { useEffect, useLayoutEffect, useRef, useState } from "react";
|
|
4
4
|
import { Description as HeroDescription, ErrorMessage as HeroErrorMessage, Input as HeroInput, Label as HeroLabel, Skeleton as HeroSkeleton, TextField as HeroTextField, } from "@heroui/react";
|
|
5
|
-
import { Button } from "../Button/index.js";
|
|
6
5
|
const KINDS = {
|
|
7
6
|
email: { type: "email", autoComplete: "email", inputMode: "email" },
|
|
8
7
|
tel: { type: "tel", autoComplete: "tel", inputMode: "tel" },
|
|
@@ -12,7 +11,7 @@ const KINDS = {
|
|
|
12
11
|
text: { type: "text", autoComplete: "off", inputMode: "text" },
|
|
13
12
|
};
|
|
14
13
|
/** Core ownership boundary for label, guidance, control state, and validation copy. */
|
|
15
|
-
export const Input = ({ id, name, label, kind: kindName = "text", variant = "primary", placeholder, defaultValue, value, hint, errorMessage, isError = false, isDisabled = false, isRequired = false, isSkeleton = false, isReadOnly = false, isCopyable = false, copyLabel, copiedLabel, onCopy, revealLabel, hideLabel, revealIcon: RevealIcon, hideIcon: HideIcon, onValueChange, }) => {
|
|
14
|
+
export const Input = ({ id, name, label, kind: kindName = "text", variant = "primary", placeholder, defaultValue, value, hint, errorMessage, isError = false, isDisabled = false, isRequired = false, isSkeleton = false, isReadOnly = false, isCopyable = false, copyLabel, copiedLabel, copyIcon: CopyIcon, copiedIcon: CopiedIcon, onCopy, revealLabel, hideLabel, revealIcon: RevealIcon, hideIcon: HideIcon, onValueChange, }) => {
|
|
16
15
|
const [isRevealed, setIsRevealed] = useState(false);
|
|
17
16
|
const kind = KINDS[kindName];
|
|
18
17
|
const isSecret = kindName === "password" || kindName === "newPassword";
|
|
@@ -21,6 +20,24 @@ export const Input = ({ id, name, label, kind: kindName = "text", variant = "pri
|
|
|
21
20
|
const ToggleIcon = isRevealed ? HideIcon : RevealIcon;
|
|
22
21
|
const [isCopied, setIsCopied] = useState(false);
|
|
23
22
|
const canCopy = isCopyable && copyLabel !== undefined;
|
|
23
|
+
const canReveal = isSecret && toggleLabel !== undefined;
|
|
24
|
+
const copyName = isCopied && copiedLabel !== undefined ? copiedLabel : copyLabel;
|
|
25
|
+
const CopyGlyph = isCopied && CopiedIcon !== undefined ? CopiedIcon : CopyIcon;
|
|
26
|
+
// The in-field actions overlay the field's end; the field reserves exactly their measured width so the value never runs under them.
|
|
27
|
+
const actions = useRef(null);
|
|
28
|
+
const [actionsWidth, setActionsWidth] = useState(null);
|
|
29
|
+
useLayoutEffect(() => {
|
|
30
|
+
const node = actions.current;
|
|
31
|
+
if (node === null)
|
|
32
|
+
return;
|
|
33
|
+
const measure = () => setActionsWidth(node.getBoundingClientRect().width);
|
|
34
|
+
measure();
|
|
35
|
+
if (typeof ResizeObserver === "undefined")
|
|
36
|
+
return;
|
|
37
|
+
const observer = new ResizeObserver(measure);
|
|
38
|
+
observer.observe(node);
|
|
39
|
+
return () => observer.disconnect();
|
|
40
|
+
}, [canCopy, canReveal]);
|
|
24
41
|
useEffect(() => {
|
|
25
42
|
if (!isCopied)
|
|
26
43
|
return;
|
|
@@ -49,6 +66,6 @@ export const Input = ({ id, name, label, kind: kindName = "text", variant = "pri
|
|
|
49
66
|
}
|
|
50
67
|
return (_jsxs(HeroTextField, { "data-tier": "atom", "data-component": "Input", fullWidth: true, variant: variant, "data-grammar-variant": variant, isInvalid: invalid, isDisabled: isDisabled, isRequired: isRequired, isReadOnly: isReadOnly, ...(value === undefined
|
|
51
68
|
? defaultValue === undefined ? {} : { defaultValue }
|
|
52
|
-
: { value }), onChange: (next) => onValueChange?.(next), "data-grammar-readonly": isReadOnly ? "true" : "false", "data-contract": "GAP-2", className: "starci-core-input", children: [_jsx(HeroLabel, { children: label }), hint == null ? null : _jsx(HeroDescription, { children: hint }), _jsxs("div", { className: "starci-core-input-
|
|
69
|
+
: { value }), onChange: (next) => onValueChange?.(next), "data-grammar-readonly": isReadOnly ? "true" : "false", "data-contract": "GAP-2", className: "starci-core-input", children: [_jsx(HeroLabel, { children: label }), hint == null ? null : _jsx(HeroDescription, { children: hint }), _jsxs("div", { className: "starci-core-input-control", "data-reveal": canReveal ? "true" : "false", "data-copyable": canCopy ? "true" : "false", style: actionsWidth === null ? undefined : { "--starci-core-input-actions-width": `${actionsWidth}px` }, children: [_jsx(HeroInput, { id: id, name: name, type: isSecret && isRevealed ? "text" : kind.type, autoComplete: kind.autoComplete, inputMode: kind.inputMode, ...(placeholder === undefined ? {} : { placeholder }), fullWidth: true, className: "starci-core-input-field" }), canReveal || canCopy ? (_jsxs("span", { ref: actions, className: "starci-core-input-actions", children: [canReveal ? (_jsx("button", { type: "button", "aria-label": toggleLabel, disabled: isDisabled, "data-contract": "TONE-2", className: "starci-core-input-reveal", onClick: () => setIsRevealed((current) => !current), children: ToggleIcon === undefined ? _jsx("span", { "data-contract": "FONT-1", className: "starci-core-input-reveal-label", children: toggleLabel }) : _jsx(ToggleIcon, { className: "starci-core-input-reveal-icon" }) })) : null, canCopy ? (_jsx("button", { type: "button", "aria-label": copyName, disabled: isDisabled, "data-contract": "TONE-2", "data-copied": isCopied ? "true" : "false", className: "starci-core-input-reveal starci-core-input-copy", onClick: () => void copy(), children: CopyGlyph === undefined ? _jsx("span", { "data-contract": "FONT-1", className: "starci-core-input-reveal-label", children: copyName }) : _jsx(CopyGlyph, { className: "starci-core-input-reveal-icon" }) })) : null, _jsx("span", { className: "starci-core-input-live", "aria-live": "polite", children: isCopied ? copiedLabel ?? "" : "" })] })) : null] }), errorMessage == null ? null : _jsx(HeroErrorMessage, { children: errorMessage })] }));
|
|
53
70
|
};
|
|
54
71
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/Input/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,SAAS,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/Input/index.tsx"],"names":[],"mappings":"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"}
|