@starci/grammar 0.11.0 → 0.12.0
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 +127 -7
- package/dist/.build-stamp.json +4 -4
- package/dist/common/components-avatar-group.css +65 -0
- package/dist/common/components-forms.css +58 -73
- package/dist/common/components-list-panel.css +13 -0
- package/dist/common/components-navigation.css +31 -32
- package/dist/common/components-overlays.css +26 -1
- package/dist/common/components-surface-controls.css +15 -0
- package/dist/common/registry.d.ts +19 -18
- package/dist/common/registry.d.ts.map +1 -1
- package/dist/common/registry.js +2 -2
- package/dist/common/registry.js.map +1 -1
- package/dist/common/renderers-forms.d.ts +12 -12
- package/dist/common/renderers-navigation.d.ts +5 -5
- package/dist/common/renderers-navigation.d.ts.map +1 -1
- package/dist/common/renderers-navigation.js.map +1 -1
- package/dist/common/renderers.d.ts +2 -1
- package/dist/common/renderers.d.ts.map +1 -1
- package/dist/common/renderers.js +1 -0
- package/dist/common/renderers.js.map +1 -1
- package/dist/common/rule-catalog.generated.d.ts +1 -1
- package/dist/common/rule-catalog.generated.d.ts.map +1 -1
- package/dist/common/rule-catalog.generated.js +3 -2
- package/dist/common/rule-catalog.generated.js.map +1 -1
- package/dist/common/styles.css +61 -2
- package/dist/core/OtpInput.d.ts +3 -0
- package/dist/core/OtpInput.d.ts.map +1 -1
- package/dist/core/OtpInput.js +4 -2
- package/dist/core/OtpInput.js.map +1 -1
- package/dist/core/branch/AlertDialog/index.d.ts.map +1 -1
- package/dist/core/branch/AlertDialog/index.js +25 -20
- package/dist/core/branch/AlertDialog/index.js.map +1 -1
- package/dist/core/branch/ComboBox/index.d.ts +2 -2
- package/dist/core/branch/ComboBox/index.d.ts.map +1 -1
- package/dist/core/branch/ComboBox/index.js +3 -1
- package/dist/core/branch/ComboBox/index.js.map +1 -1
- package/dist/core/branch/DatePicker/index.d.ts +2 -2
- package/dist/core/branch/DatePicker/index.d.ts.map +1 -1
- package/dist/core/branch/DatePicker/index.js +3 -1
- package/dist/core/branch/DatePicker/index.js.map +1 -1
- package/dist/core/branch/DateRangePicker/index.d.ts +2 -2
- package/dist/core/branch/DateRangePicker/index.d.ts.map +1 -1
- package/dist/core/branch/DateRangePicker/index.js +3 -1
- package/dist/core/branch/DateRangePicker/index.js.map +1 -1
- package/dist/core/branch/Dialog/index.d.ts.map +1 -1
- package/dist/core/branch/Dialog/index.js +6 -2
- package/dist/core/branch/Dialog/index.js.map +1 -1
- package/dist/core/branch/Drawer/index.d.ts.map +1 -1
- package/dist/core/branch/Drawer/index.js +6 -2
- package/dist/core/branch/Drawer/index.js.map +1 -1
- package/dist/core/branch/DropdownMenu/index.d.ts +16 -4
- package/dist/core/branch/DropdownMenu/index.d.ts.map +1 -1
- package/dist/core/branch/DropdownMenu/index.js +14 -5
- package/dist/core/branch/DropdownMenu/index.js.map +1 -1
- package/dist/core/branch/ListBox/index.d.ts +20 -5
- package/dist/core/branch/ListBox/index.d.ts.map +1 -1
- package/dist/core/branch/ListBox/index.js +19 -9
- package/dist/core/branch/ListBox/index.js.map +1 -1
- package/dist/core/branch/Popover/index.d.ts.map +1 -1
- package/dist/core/branch/Popover/index.js +2 -1
- package/dist/core/branch/Popover/index.js.map +1 -1
- package/dist/core/branch/Rail/index.d.ts.map +1 -1
- package/dist/core/branch/Rail/index.js +4 -2
- package/dist/core/branch/Rail/index.js.map +1 -1
- package/dist/core/branch/Select/index.d.ts +6 -3
- package/dist/core/branch/Select/index.d.ts.map +1 -1
- package/dist/core/branch/Select/index.js +14 -21
- package/dist/core/branch/Select/index.js.map +1 -1
- package/dist/core/branch/SurfaceAccordionCard/index.d.ts.map +1 -1
- package/dist/core/branch/SurfaceAccordionCard/index.js +3 -1
- package/dist/core/branch/SurfaceAccordionCard/index.js.map +1 -1
- package/dist/core/branch/SurfaceCard/index.d.ts.map +1 -1
- package/dist/core/branch/SurfaceCard/index.js +3 -1
- package/dist/core/branch/SurfaceCard/index.js.map +1 -1
- package/dist/core/branch/SurfaceListCard/index.d.ts.map +1 -1
- package/dist/core/branch/SurfaceListCard/index.js +3 -1
- package/dist/core/branch/SurfaceListCard/index.js.map +1 -1
- package/dist/core/composite/AvatarButton/index.d.ts +3 -1
- package/dist/core/composite/AvatarButton/index.d.ts.map +1 -1
- package/dist/core/composite/AvatarButton/index.js +1 -1
- package/dist/core/composite/AvatarButton/index.js.map +1 -1
- package/dist/core/composite/AvatarGroup/index.d.ts +11 -3
- package/dist/core/composite/AvatarGroup/index.d.ts.map +1 -1
- package/dist/core/composite/AvatarGroup/index.js +9 -5
- package/dist/core/composite/AvatarGroup/index.js.map +1 -1
- package/dist/core/composite/CheckboxGroup/index.d.ts +2 -2
- package/dist/core/composite/CheckboxGroup/index.d.ts.map +1 -1
- package/dist/core/composite/CheckboxGroup/index.js +5 -1
- package/dist/core/composite/CheckboxGroup/index.js.map +1 -1
- package/dist/core/composite/RadioGroup/index.d.ts +2 -2
- package/dist/core/composite/RadioGroup/index.d.ts.map +1 -1
- package/dist/core/composite/RadioGroup/index.js +5 -1
- package/dist/core/composite/RadioGroup/index.js.map +1 -1
- package/dist/core/composite/Timeline/index.js +1 -1
- package/dist/core/composite/Timeline/index.js.map +1 -1
- package/dist/core/composition/ChatWorkspace/index.d.ts.map +1 -1
- package/dist/core/composition/ChatWorkspace/index.js +2 -1
- package/dist/core/composition/ChatWorkspace/index.js.map +1 -1
- package/dist/core/composition/Sidebar/index.d.ts +1 -1
- package/dist/core/composition/Sidebar/index.d.ts.map +1 -1
- package/dist/core/composition/Sidebar/index.js +10 -4
- package/dist/core/composition/Sidebar/index.js.map +1 -1
- package/dist/core/composition/WorkspaceShell/classNames.d.ts +1 -0
- package/dist/core/composition/WorkspaceShell/classNames.d.ts.map +1 -1
- package/dist/core/composition/WorkspaceShell/classNames.js +1 -0
- package/dist/core/composition/WorkspaceShell/classNames.js.map +1 -1
- package/dist/core/composition/WorkspaceShell/index.d.ts +30 -0
- package/dist/core/composition/WorkspaceShell/index.d.ts.map +1 -1
- package/dist/core/composition/WorkspaceShell/index.js +9 -4
- package/dist/core/composition/WorkspaceShell/index.js.map +1 -1
- package/dist/core/dna.d.ts +5 -0
- package/dist/core/dna.d.ts.map +1 -1
- package/dist/core/dna.js +5 -0
- package/dist/core/dna.js.map +1 -1
- package/dist/core/overlayScope.d.ts +16 -0
- package/dist/core/overlayScope.d.ts.map +1 -1
- package/dist/core/overlayScope.js +12 -0
- package/dist/core/overlayScope.js.map +1 -1
- package/dist/core/primitive/Avatar/index.d.ts +11 -6
- package/dist/core/primitive/Avatar/index.d.ts.map +1 -1
- package/dist/core/primitive/Avatar/index.js +21 -4
- package/dist/core/primitive/Avatar/index.js.map +1 -1
- package/dist/core/primitive/Checkbox/index.d.ts +2 -2
- package/dist/core/primitive/Checkbox/index.d.ts.map +1 -1
- package/dist/core/primitive/Checkbox/index.js +5 -1
- package/dist/core/primitive/Checkbox/index.js.map +1 -1
- package/dist/core/primitive/DateField/index.d.ts +2 -2
- package/dist/core/primitive/DateField/index.d.ts.map +1 -1
- package/dist/core/primitive/DateField/index.js +5 -1
- package/dist/core/primitive/DateField/index.js.map +1 -1
- package/dist/core/primitive/Field/index.d.ts +3 -2
- package/dist/core/primitive/Field/index.d.ts.map +1 -1
- package/dist/core/primitive/Field/index.js.map +1 -1
- package/dist/core/primitive/Input/index.d.ts +2 -1
- package/dist/core/primitive/Input/index.d.ts.map +1 -1
- package/dist/core/primitive/Input/index.js +4 -2
- package/dist/core/primitive/Input/index.js.map +1 -1
- package/dist/core/primitive/NumberField/index.d.ts +2 -2
- package/dist/core/primitive/NumberField/index.d.ts.map +1 -1
- package/dist/core/primitive/NumberField/index.js +5 -1
- package/dist/core/primitive/NumberField/index.js.map +1 -1
- package/dist/core/primitive/PressableField/index.d.ts +4 -1
- package/dist/core/primitive/PressableField/index.d.ts.map +1 -1
- package/dist/core/primitive/PressableField/index.js +5 -1
- package/dist/core/primitive/PressableField/index.js.map +1 -1
- package/dist/core/primitive/RelativeTime/clock.d.ts +5 -0
- package/dist/core/primitive/RelativeTime/clock.d.ts.map +1 -0
- package/dist/core/primitive/RelativeTime/clock.js +28 -0
- package/dist/core/primitive/RelativeTime/clock.js.map +1 -0
- package/dist/core/primitive/RelativeTime/index.d.ts +18 -0
- package/dist/core/primitive/RelativeTime/index.d.ts.map +1 -0
- package/dist/core/primitive/RelativeTime/index.js +45 -0
- package/dist/core/primitive/RelativeTime/index.js.map +1 -0
- package/dist/core/primitive/SearchField/index.d.ts +2 -2
- package/dist/core/primitive/SearchField/index.d.ts.map +1 -1
- package/dist/core/primitive/SearchField/index.js +5 -1
- package/dist/core/primitive/SearchField/index.js.map +1 -1
- package/dist/core/primitive/Switch/index.d.ts +9 -4
- package/dist/core/primitive/Switch/index.d.ts.map +1 -1
- package/dist/core/primitive/Switch/index.js +1 -1
- package/dist/core/primitive/Switch/index.js.map +1 -1
- package/dist/core/primitive/Textarea/index.d.ts +2 -2
- package/dist/core/primitive/Textarea/index.d.ts.map +1 -1
- package/dist/core/primitive/Textarea/index.js +3 -1
- package/dist/core/primitive/Textarea/index.js.map +1 -1
- package/dist/core/primitive/TimeField/index.d.ts +2 -2
- package/dist/core/primitive/TimeField/index.d.ts.map +1 -1
- package/dist/core/primitive/TimeField/index.js +5 -1
- package/dist/core/primitive/TimeField/index.js.map +1 -1
- package/dist/core/surfaceContext.d.ts +11 -0
- package/dist/core/surfaceContext.d.ts.map +1 -0
- package/dist/core/surfaceContext.js +14 -0
- package/dist/core/surfaceContext.js.map +1 -0
- package/dist/offset-pop/components-overlays.css +1 -1
- package/package.json +8 -3
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
import type { FieldVariant } from "../Field/index.js";
|
|
1
2
|
import { type IconSource } from "../Icon/index.js";
|
|
2
3
|
export type PressableFieldProps = {
|
|
3
4
|
/** Accessible name of the control; the placeholder is decoration, not a name. */
|
|
4
5
|
readonly label: string;
|
|
5
6
|
/** Placeholder-style copy that says what pressing the field will let the reader do. */
|
|
6
7
|
readonly placeholder: string;
|
|
8
|
+
/** Defaults to secondary inside a Grammar surface and primary outside (ANATOMY-2). */
|
|
9
|
+
readonly variant?: FieldVariant;
|
|
7
10
|
readonly source?: IconSource;
|
|
8
11
|
/** Keyboard hint shown at the end of the field, rendered as a `kbd`. */
|
|
9
12
|
readonly shortcut?: string;
|
|
@@ -18,5 +21,5 @@ export type PressableFieldProps = {
|
|
|
18
21
|
* matches them without any application restating field geometry. It never accepts text - the whole
|
|
19
22
|
* field is one press target - so it carries its own accessible name and no form value.
|
|
20
23
|
*/
|
|
21
|
-
export declare const PressableField: ({ label, placeholder, source, shortcut, isDisabled, onPress }: PressableFieldProps) => import("react").JSX.Element;
|
|
24
|
+
export declare const PressableField: ({ label, placeholder, source, shortcut, variant: requestedVariant, isDisabled, onPress }: PressableFieldProps) => import("react").JSX.Element;
|
|
22
25
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/PressableField/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/PressableField/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAQxD,MAAM,MAAM,mBAAmB,GAAG;IAC9B,iFAAiF;IACjF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,uFAAuF;IACvF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,sFAAsF;IACtF,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAA;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAA;IAC5B,wEAAwE;IACxE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CAChC,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,GAAI,0FAAkG,mBAAmB,gCAsBnJ,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useFieldVariant } from "../../surfaceContext.js";
|
|
3
4
|
import { Icon } from "../Icon/index.js";
|
|
4
5
|
import { pressableFieldClassName, pressableFieldContentClassName, pressableFieldPlaceholderClassName, pressableFieldShortcutClassName, } from "./classNames.js";
|
|
5
6
|
/**
|
|
@@ -10,5 +11,8 @@ import { pressableFieldClassName, pressableFieldContentClassName, pressableField
|
|
|
10
11
|
* matches them without any application restating field geometry. It never accepts text - the whole
|
|
11
12
|
* field is one press target - so it carries its own accessible name and no form value.
|
|
12
13
|
*/
|
|
13
|
-
export const PressableField = ({ label, placeholder, source, shortcut,
|
|
14
|
+
export const PressableField = ({ label, placeholder, source, shortcut, variant: requestedVariant, isDisabled = false, onPress }) => {
|
|
15
|
+
const variant = useFieldVariant(requestedVariant);
|
|
16
|
+
return (_jsxs("button", { type: "button", "aria-label": label, disabled: isDisabled, "data-tier": "atom", "data-component": "PressableField", "data-grammar-variant": variant, "data-disabled": isDisabled ? "true" : "false", "data-contract": "MEASURE-2 PADDING-3 GAP-2 SURFACE-4 TONE-1", className: pressableFieldClassName, onClick: () => onPress?.(), children: [_jsxs("span", { className: pressableFieldContentClassName, "data-contract": "GAP-2", children: [source === undefined ? null : _jsx(Icon, { source: source, usage: "leading" }), _jsx("span", { className: pressableFieldPlaceholderClassName, "data-contract": "FLOW-4 FONT-2 TONE-2", children: placeholder })] }), shortcut === undefined ? null : _jsx("kbd", { className: pressableFieldShortcutClassName, "data-contract": "FONT-1 PADDING-1 TONE-2", children: shortcut })] }));
|
|
17
|
+
};
|
|
14
18
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/PressableField/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,IAAI,EAAmB,MAAM,kBAAkB,CAAA;AACxD,OAAO,EACH,uBAAuB,EACvB,8BAA8B,EAC9B,kCAAkC,EAClC,+BAA+B,GAClC,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/PressableField/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAEzD,OAAO,EAAE,IAAI,EAAmB,MAAM,kBAAkB,CAAA;AACxD,OAAO,EACH,uBAAuB,EACvB,8BAA8B,EAC9B,kCAAkC,EAClC,+BAA+B,GAClC,MAAM,iBAAiB,CAAA;AAgBxB;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE,UAAU,GAAG,KAAK,EAAE,OAAO,EAAuB,EAAE,EAAE;IACpJ,MAAM,OAAO,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAA;IACjD,OAAO,CACH,kBACI,IAAI,EAAC,QAAQ,gBACD,KAAK,EACjB,QAAQ,EAAE,UAAU,eACV,MAAM,oBACD,gBAAgB,0BACT,OAAO,mBACd,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,mBAC9B,4CAA4C,EAC1D,SAAS,EAAE,uBAAuB,EAClC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,aAE1B,gBAAM,SAAS,EAAE,8BAA8B,mBAAgB,OAAO,aACjE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAC,SAAS,GAAG,EACvE,eAAM,SAAS,EAAE,kCAAkC,mBAAgB,sBAAsB,YAAE,WAAW,GAAQ,IAC3G,EACN,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAK,SAAS,EAAE,+BAA+B,mBAAgB,yBAAyB,YAAE,QAAQ,GAAO,IACrI,CACZ,CAAA;AACL,CAAC,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const subscribeClock: (listener: () => void) => () => void;
|
|
2
|
+
export declare const getClockSnapshot: () => number | null;
|
|
3
|
+
/** Server rendering and the first hydration render always use the same deterministic fallback. */
|
|
4
|
+
export declare const getServerClockSnapshot: () => null;
|
|
5
|
+
//# sourceMappingURL=clock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clock.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/RelativeTime/clock.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,cAAc,GAAI,UAAU,MAAM,IAAI,eAclD,CAAA;AAED,eAAO,MAAM,gBAAgB,qBAAiB,CAAA;AAE9C,kGAAkG;AAClG,eAAO,MAAM,sBAAsB,YAAa,CAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/** One lazily subscribed clock for every RelativeTime instance in this module graph. */
|
|
2
|
+
const listeners = new Set();
|
|
3
|
+
let snapshot = null;
|
|
4
|
+
let ticker;
|
|
5
|
+
const tick = () => {
|
|
6
|
+
snapshot = Date.now();
|
|
7
|
+
for (const listener of listeners)
|
|
8
|
+
listener();
|
|
9
|
+
};
|
|
10
|
+
export const subscribeClock = (listener) => {
|
|
11
|
+
listeners.add(listener);
|
|
12
|
+
if (listeners.size === 1) {
|
|
13
|
+
snapshot = Date.now();
|
|
14
|
+
ticker = setInterval(tick, 1000);
|
|
15
|
+
}
|
|
16
|
+
return () => {
|
|
17
|
+
listeners.delete(listener);
|
|
18
|
+
if (listeners.size === 0) {
|
|
19
|
+
clearInterval(ticker);
|
|
20
|
+
ticker = undefined;
|
|
21
|
+
snapshot = null;
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
export const getClockSnapshot = () => snapshot;
|
|
26
|
+
/** Server rendering and the first hydration render always use the same deterministic fallback. */
|
|
27
|
+
export const getServerClockSnapshot = () => null;
|
|
28
|
+
//# sourceMappingURL=clock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clock.js","sourceRoot":"","sources":["../../../../src/core/primitive/RelativeTime/clock.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,MAAM,SAAS,GAAG,IAAI,GAAG,EAAc,CAAA;AACvC,IAAI,QAAQ,GAAkB,IAAI,CAAA;AAClC,IAAI,MAAkD,CAAA;AAEtD,MAAM,IAAI,GAAG,GAAG,EAAE;IACd,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACrB,KAAK,MAAM,QAAQ,IAAI,SAAS;QAAE,QAAQ,EAAE,CAAA;AAChD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAoB,EAAE,EAAE;IACnD,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACvB,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACvB,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACrB,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACpC,CAAC;IACD,OAAO,GAAG,EAAE;QACR,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC1B,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACvB,aAAa,CAAC,MAAM,CAAC,CAAA;YACrB,MAAM,GAAG,SAAS,CAAA;YAClB,QAAQ,GAAG,IAAI,CAAA;QACnB,CAAC;IACL,CAAC,CAAA;AACL,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAA;AAE9C,kGAAkG;AAClG,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type TextTone } from "../Text/index.js";
|
|
2
|
+
export type RelativeTimeMode = "relative" | "countdown";
|
|
3
|
+
export type RelativeTimeProps = {
|
|
4
|
+
/** An ISO timestamp with an explicit Z or numeric timezone offset, never a local wall time. */
|
|
5
|
+
readonly dateTime: string;
|
|
6
|
+
/** The application's active BCP 47 locale; never inferred from the server or browser. */
|
|
7
|
+
readonly locale: string;
|
|
8
|
+
/** Countdown shows future relative time and settles at the localized equivalent of "now". */
|
|
9
|
+
readonly mode?: RelativeTimeMode;
|
|
10
|
+
/** Stable server/first-hydration copy. Defaults to the canonical ISO timestamp. */
|
|
11
|
+
readonly fallback?: string;
|
|
12
|
+
readonly id?: string;
|
|
13
|
+
readonly size?: "xs" | "sm" | "md";
|
|
14
|
+
readonly tone?: TextTone;
|
|
15
|
+
};
|
|
16
|
+
/** Accessible live time; all leaves subscribe to the same clock and own no interval or wall-clock read. */
|
|
17
|
+
export declare const RelativeTime: ({ dateTime, locale, mode, fallback, id, size, tone }: RelativeTimeProps) => import("react").JSX.Element;
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/RelativeTime/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAQ,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAGtD,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,WAAW,CAAA;AAEvD,MAAM,MAAM,iBAAiB,GAAG;IAC5B,+FAA+F;IAC/F,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,yFAAyF;IACzF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,6FAA6F;IAC7F,QAAQ,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAA;IAChC,mFAAmF;IACnF,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAA;CAC3B,CAAA;AAmCD,2GAA2G;AAC3G,eAAO,MAAM,YAAY,GAAI,sDAAoF,iBAAiB,gCAWjI,CAAA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useMemo, useSyncExternalStore } from "react";
|
|
4
|
+
import { Text } from "../Text/index.js";
|
|
5
|
+
import { getClockSnapshot, getServerClockSnapshot, subscribeClock } from "./clock.js";
|
|
6
|
+
const UNITS = [
|
|
7
|
+
["year", 365 * 24 * 60 * 60 * 1000],
|
|
8
|
+
["month", 30 * 24 * 60 * 60 * 1000],
|
|
9
|
+
["week", 7 * 24 * 60 * 60 * 1000],
|
|
10
|
+
["day", 24 * 60 * 60 * 1000],
|
|
11
|
+
["hour", 60 * 60 * 1000],
|
|
12
|
+
["minute", 60 * 1000],
|
|
13
|
+
["second", 1000],
|
|
14
|
+
];
|
|
15
|
+
/** Refuse timezone-dependent parsing before producing the machine-readable absolute instant. */
|
|
16
|
+
const parseInstant = (dateTime) => {
|
|
17
|
+
const parts = /^(\d{4})-(\d{2})-(\d{2})T\d{2}:\d{2}(?::\d{2}(?:\.\d{1,3})?)?(?:Z|[+-]\d{2}:\d{2})$/.exec(dateTime);
|
|
18
|
+
if (parts === null) {
|
|
19
|
+
throw new TypeError("RelativeTime dateTime must be a timezone-qualified ISO timestamp");
|
|
20
|
+
}
|
|
21
|
+
const year = Number(parts[1]);
|
|
22
|
+
const month = Number(parts[2]);
|
|
23
|
+
const day = Number(parts[3]);
|
|
24
|
+
const leapYear = year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
|
|
25
|
+
const daysInMonth = [31, leapYear ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month - 1] ?? 0;
|
|
26
|
+
const value = Date.parse(dateTime);
|
|
27
|
+
if (day < 1 || day > daysInMonth || !Number.isFinite(value))
|
|
28
|
+
throw new TypeError("RelativeTime dateTime must be a valid instant");
|
|
29
|
+
return { value, iso: new Date(value).toISOString() };
|
|
30
|
+
};
|
|
31
|
+
const relativeLabel = (target, now, mode, formatter) => {
|
|
32
|
+
const delta = mode === "countdown" ? Math.max(0, target - now) : target - now;
|
|
33
|
+
const [unit, duration] = UNITS.find(([, length]) => Math.abs(delta) >= length) ?? ["second", 1000];
|
|
34
|
+
const value = mode === "countdown" ? Math.ceil(delta / duration) : Math.round(delta / duration);
|
|
35
|
+
return formatter.format(value, unit);
|
|
36
|
+
};
|
|
37
|
+
/** Accessible live time; all leaves subscribe to the same clock and own no interval or wall-clock read. */
|
|
38
|
+
export const RelativeTime = ({ dateTime, locale, mode = "relative", fallback, id, size = "sm", tone = "muted" }) => {
|
|
39
|
+
const instant = useMemo(() => parseInstant(dateTime), [dateTime]);
|
|
40
|
+
const formatter = useMemo(() => new Intl.RelativeTimeFormat(locale, { numeric: "auto" }), [locale]);
|
|
41
|
+
const now = useSyncExternalStore(subscribeClock, getClockSnapshot, getServerClockSnapshot);
|
|
42
|
+
const label = now === null ? fallback ?? instant.iso : relativeLabel(instant.value, now, mode, formatter);
|
|
43
|
+
return (_jsx("time", { id: id, dateTime: instant.iso, title: instant.iso, "data-tier": "atom", "data-component": "RelativeTime", "data-mode": mode, children: _jsx(Text, { as: "span", size: size, tone: tone, children: label }) }));
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/RelativeTime/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ export type SearchFieldProps = FieldControlProps & {
|
|
|
14
14
|
readonly isPending?: boolean;
|
|
15
15
|
/** Accessible name of the clear button. Pass the app's localized "clear" copy. */
|
|
16
16
|
readonly clearLabel?: string;
|
|
17
|
-
/**
|
|
17
|
+
/** Defaults to `secondary` inside a Grammar surface and `primary` outside (ANATOMY-2 case-1). */
|
|
18
18
|
readonly variant?: "primary" | "secondary";
|
|
19
19
|
/**
|
|
20
20
|
* Initial unresolved content (knowledge STATE-8): the label stays real text and the search box becomes Skeleton geometry of the same size,
|
|
@@ -32,5 +32,5 @@ export type SearchFieldProps = FieldControlProps & {
|
|
|
32
32
|
* A text field whose job is a query: `type="search"`, a clear button, Escape to clear, Enter to
|
|
33
33
|
* submit - all the vendor's. The leading glyph is decoration; the label is the name.
|
|
34
34
|
*/
|
|
35
|
-
export declare const SearchField: ({ id, placeholder, value, defaultValue, onValueChange, onSubmit, onClear, isPending, clearLabel, variant, isSkeleton, onBlur, onPaste, autoFocus, ...field }: SearchFieldProps) => import("react").JSX.Element;
|
|
35
|
+
export declare const SearchField: ({ id, placeholder, value, defaultValue, onValueChange, onSubmit, onClear, isPending, clearLabel, variant: requestedVariant, isSkeleton, onBlur, onPaste, autoFocus, ...field }: SearchFieldProps) => import("react").JSX.Element;
|
|
36
36
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/SearchField/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/SearchField/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAOH,KAAK,iBAAiB,EACzB,MAAM,mBAAmB,CAAA;AAE1B,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,GAAG;IAC/C,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAChD,0BAA0B;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3C,oDAAoD;IACpD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IAC7B,2EAA2E;IAC3E,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B,kFAAkF;IAClF,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,iGAAiG;IACjG,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,CAAA;IAC1C;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,4BAA4B;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IAC5B,2CAA2C;IAC3C,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAA;IACpE,wCAAwC;IACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAC/B,CAAA;AAQD;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,gLAgBzB,gBAAgB,gCA0ClB,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useFieldVariant } from "../../surfaceContext.js";
|
|
3
4
|
import { SearchField as HeroSearchField, Spinner as HeroSpinner } from "@heroui/react";
|
|
4
5
|
import { FieldDescription, FieldErrorText, FieldLabel, FieldSkeleton, fieldVariantAttributes, vendorFieldProps, } from "../Field/index.js";
|
|
5
6
|
/*
|
|
@@ -11,5 +12,8 @@ import { FieldDescription, FieldErrorText, FieldLabel, FieldSkeleton, fieldVaria
|
|
|
11
12
|
* A text field whose job is a query: `type="search"`, a clear button, Escape to clear, Enter to
|
|
12
13
|
* submit - all the vendor's. The leading glyph is decoration; the label is the name.
|
|
13
14
|
*/
|
|
14
|
-
export const SearchField = ({ id, placeholder, value, defaultValue, onValueChange, onSubmit, onClear, isPending = false, clearLabel, variant
|
|
15
|
+
export const SearchField = ({ id, placeholder, value, defaultValue, onValueChange, onSubmit, onClear, isPending = false, clearLabel, variant: requestedVariant, isSkeleton = false, onBlur, onPaste, autoFocus = false, ...field }) => {
|
|
16
|
+
const variant = useFieldVariant(requestedVariant);
|
|
17
|
+
return isSkeleton ? (_jsx(FieldSkeleton, { component: "SearchField", tier: "atom", label: field.label, isLabelHidden: field.isLabelHidden, isRequired: field.isRequired, variant: variant, kind: "input", className: "starci-core-search-field" })) : (_jsxs(HeroSearchField, { "data-tier": "atom", "data-component": "SearchField", "data-contract": "A11Y-1 FEEDBACK-1 STATE-1", className: "starci-core-field starci-core-search-field", fullWidth: true, variant: variant, ...fieldVariantAttributes(variant), ...vendorFieldProps({ ...field, isPending }), isReadOnly: field.isReadOnly === true, ...(value === undefined ? defaultValue === undefined ? {} : { defaultValue } : { value }), ...(onValueChange === undefined ? {} : { onChange: onValueChange }), ...(onSubmit === undefined ? {} : { onSubmit }), ...(onClear === undefined ? {} : { onClear }), children: [_jsx(FieldLabel, { isHidden: field.isLabelHidden, isRequired: field.isRequired, children: field.label }), _jsxs(HeroSearchField.Group, { className: "starci-core-search-field-group", "data-grammar-field-control": "true", children: [_jsx(HeroSearchField.SearchIcon, { "aria-hidden": "true" }), _jsx(HeroSearchField.Input, { ...(id === undefined ? {} : { id }), ...(placeholder === undefined ? {} : { placeholder }), className: "starci-core-search-field-input", ...(autoFocus ? { autoFocus: true } : {}), ...(onBlur === undefined ? {} : { onBlur: () => onBlur() }), ...(onPaste === undefined ? {} : { onPaste }), ...(isPending ? { "aria-busy": true } : {}) }), isPending ? _jsx(HeroSpinner, { size: "sm", color: "current", "aria-hidden": "true", className: "starci-core-field-spinner" }) : null, _jsx(HeroSearchField.ClearButton, { className: "starci-core-search-field-clear", ...(clearLabel === undefined ? {} : { "aria-label": clearLabel }) })] }), _jsx(FieldDescription, { children: field.description }), _jsx(FieldErrorText, { children: field.errorMessage })] }));
|
|
18
|
+
};
|
|
15
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/SearchField/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,WAAW,IAAI,eAAe,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAA;AAEtF,OAAO,EACH,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,aAAa,EACb,sBAAsB,EACtB,gBAAgB,GAEnB,MAAM,mBAAmB,CAAA;AA+B1B;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EACxB,EAAE,EACF,WAAW,EACX,KAAK,EACL,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,OAAO,EACP,SAAS,GAAG,KAAK,EACjB,UAAU,EACV,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/SearchField/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
import { type IconSource } from "../Icon/index.js";
|
|
2
2
|
import { type FieldControlProps } from "../Field/index.js";
|
|
3
|
-
export type SwitchSize = "md" | "lg";
|
|
4
|
-
export type SwitchProps =
|
|
3
|
+
export type SwitchSize = "md" | "lg" | "control";
|
|
4
|
+
export type SwitchProps = FieldControlProps & {
|
|
5
5
|
readonly value?: string;
|
|
6
6
|
readonly isSelected?: boolean;
|
|
7
7
|
readonly defaultSelected?: boolean;
|
|
8
8
|
readonly onSelectedChange?: (isSelected: boolean) => void;
|
|
9
9
|
/**
|
|
10
10
|
* The track and thumb size. `md` (default) is HeroUI's compact switch. `lg` is the StarCi look: a 4rem by
|
|
11
|
-
* 2.25rem fully round track and a 1.75rem round thumb inset 0.25rem, roomy enough to carry an icon.
|
|
11
|
+
* 2.25rem fully round track and a 1.75rem round thumb inset 0.25rem, roomy enough to carry an icon. `control` is `lg` scaled to the
|
|
12
|
+
* shared control height (2.75rem, the IconButton and bar control height), so a switch lines up with the buttons beside it.
|
|
13
|
+
* With `isLabelHidden` the label stays the accessible name and draws nothing, for a switch that carries only an aria label.
|
|
12
14
|
*/
|
|
13
15
|
readonly size?: SwitchSize;
|
|
14
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* A glyph drawn centred in the thumb, at the canon icon size: 20px (`Icon` `leading`, size-5) on `lg` and `control`, whose thumb is
|
|
18
|
+
* 1.75rem or 2.25rem; the 1rem thumb of `md` takes the 16px `chip` step. With `selectedThumbIcon` it is the glyph of the off state.
|
|
19
|
+
*/
|
|
15
20
|
readonly thumbIcon?: IconSource;
|
|
16
21
|
/** The thumb glyph while on (a sun/moon theme switch passes the moon here). Needs `thumbIcon`; without one it is ignored. */
|
|
17
22
|
readonly selectedThumbIcon?: IconSource;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/Switch/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACxD,OAAO,EAMH,KAAK,iBAAiB,EACzB,MAAM,mBAAmB,CAAA;AAE1B,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/Switch/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACxD,OAAO,EAMH,KAAK,iBAAiB,EACzB,MAAM,mBAAmB,CAAA;AAE1B,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAA;AAEhD,MAAM,MAAM,WAAW,GAAG,iBAAiB,GAAG;IAC1C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;IAClC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAA;IACzD;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAA;IAC1B;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,UAAU,CAAA;IAC/B,6HAA6H;IAC7H,QAAQ,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAA;IACvC;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAChC,CAAA;AAQD;;;GAGG;AACH,eAAO,MAAM,MAAM,GAAI,oHAAmI,WAAW,gCAkCpK,CAAA"}
|
|
@@ -12,5 +12,5 @@ import { FieldDescription, FieldErrorText, FieldLabel, FieldSkeleton, vendorFiel
|
|
|
12
12
|
* An immediate on/off setting (`role="switch"`). Use Checkbox for a choice that only takes effect
|
|
13
13
|
* on submit. The label is part of the hit area; Space toggles.
|
|
14
14
|
*/
|
|
15
|
-
export const Switch = ({ value, isSelected, defaultSelected, onSelectedChange, size = "md", thumbIcon, selectedThumbIcon, isSkeleton = false, ...field }) => isSkeleton ? (_jsx(FieldSkeleton, { component: "Switch", tier: "atom", label: field.label, isRequired: field.isRequired, kind: "switch", switchSize: size, className: "starci-core-switch" })) : (_jsxs(HeroSwitch, { "data-tier": "atom", "data-component": "Switch", "data-contract": "A11Y-1 STATE-1", "data-grammar-switch-size": size, "data-grammar-switch-icons": thumbIcon === undefined ? "none" : selectedThumbIcon === undefined ? "single" : "swap", className: "starci-core-choice starci-core-switch", ...vendorFieldProps(field), isReadOnly: field.isReadOnly === true, ...(value === undefined ? {} : { value }), ...(isSelected === undefined ? defaultSelected === undefined ? {} : { defaultSelected } : { isSelected }), ...(onSelectedChange === undefined ? {} : { onChange: onSelectedChange }), children: [_jsxs(HeroSwitch.Content, { className: "starci-core-choice-content", "data-grammar-choice-target": "true", children: [_jsx(HeroSwitch.Control, { className: "starci-core-choice-control", "data-grammar-choice-control": "switch", children: _jsx(HeroSwitch.Thumb, { "data-grammar-switch-thumb": "true", children: thumbIcon === undefined ? null : (_jsxs(HeroSwitch.Icon, { children: [_jsx("span", { "aria-hidden": "true", className: "starci-core-switch-icon", "data-grammar-switch-icon": "off", children: _jsx(Icon, { source: thumbIcon, usage: "chip" }) }), selectedThumbIcon === undefined ? null : (_jsx("span", { "aria-hidden": "true", className: "starci-core-switch-icon", "data-grammar-switch-icon": "on", children: _jsx(Icon, { source: selectedThumbIcon, usage: "chip" }) }))] })) }) }), _jsx(FieldLabel, { children: field.label })] }), _jsx(FieldDescription, { children: field.description }), _jsx(FieldErrorText, { children: field.errorMessage })] }));
|
|
15
|
+
export const Switch = ({ value, isSelected, defaultSelected, onSelectedChange, size = "md", thumbIcon, selectedThumbIcon, isSkeleton = false, ...field }) => isSkeleton ? (_jsx(FieldSkeleton, { component: "Switch", tier: "atom", label: field.label, isLabelHidden: field.isLabelHidden, isRequired: field.isRequired, kind: "switch", switchSize: size, className: "starci-core-switch" })) : (_jsxs(HeroSwitch, { "data-tier": "atom", "data-component": "Switch", "data-contract": "A11Y-1 STATE-1", "data-grammar-switch-size": size, "data-grammar-switch-icons": thumbIcon === undefined ? "none" : selectedThumbIcon === undefined ? "single" : "swap", className: "starci-core-choice starci-core-switch", ...vendorFieldProps(field), isReadOnly: field.isReadOnly === true, ...(value === undefined ? {} : { value }), ...(isSelected === undefined ? defaultSelected === undefined ? {} : { defaultSelected } : { isSelected }), ...(onSelectedChange === undefined ? {} : { onChange: onSelectedChange }), children: [_jsxs(HeroSwitch.Content, { className: "starci-core-choice-content", "data-grammar-choice-target": "true", children: [_jsx(HeroSwitch.Control, { className: "starci-core-choice-control", "data-grammar-choice-control": "switch", children: _jsx(HeroSwitch.Thumb, { "data-grammar-switch-thumb": "true", children: thumbIcon === undefined ? null : (_jsxs(HeroSwitch.Icon, { children: [_jsx("span", { "aria-hidden": "true", className: "starci-core-switch-icon", "data-grammar-switch-icon": "off", children: _jsx(Icon, { source: thumbIcon, usage: size === "md" ? "chip" : "leading" }) }), selectedThumbIcon === undefined ? null : (_jsx("span", { "aria-hidden": "true", className: "starci-core-switch-icon", "data-grammar-switch-icon": "on", children: _jsx(Icon, { source: selectedThumbIcon, usage: size === "md" ? "chip" : "leading" }) }))] })) }) }), _jsx(FieldLabel, { isHidden: field.isLabelHidden === true, children: field.label })] }), _jsx(FieldDescription, { children: field.description }), _jsx(FieldErrorText, { children: field.errorMessage })] }));
|
|
16
16
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/Switch/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,IAAI,EAAmB,MAAM,kBAAkB,CAAA;AACxD,OAAO,EACH,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,aAAa,EACb,gBAAgB,GAEnB,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/Switch/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -36,7 +36,7 @@ export type TextareaProps = FieldControlProps & {
|
|
|
36
36
|
readonly maxLength?: number;
|
|
37
37
|
readonly minLength?: number;
|
|
38
38
|
readonly onValueChange?: (value: string) => void;
|
|
39
|
-
/**
|
|
39
|
+
/** Defaults to `secondary` inside a Grammar surface and `primary` outside (ANATOMY-2 case-1). */
|
|
40
40
|
readonly variant?: "primary" | "secondary";
|
|
41
41
|
/**
|
|
42
42
|
* Chat composer shortcut: Enter (without Shift, outside an IME composition and with no suggestion list open) calls this
|
|
@@ -61,6 +61,6 @@ export declare const findMentionQuery: (text: string, caret: number, trigger?: s
|
|
|
61
61
|
/** Options whose label (accent- and case-insensitive) contains the query, at most eight. */
|
|
62
62
|
export declare const filterMentionOptions: (options: ReadonlyArray<TextareaMentionOption>, query: string) => ReadonlyArray<TextareaMentionOption>;
|
|
63
63
|
/** Multi-line text with the shared field anatomy, an optional Enter-to-submit shortcut and optional mention suggestions. */
|
|
64
|
-
export declare const Textarea: ({ id, placeholder, value, defaultValue, rows, isSkeleton, maxLength, minLength, onValueChange, variant, onSubmitShortcut, mentions, onBlur, onPaste, autoFocus, ...field }: TextareaProps) => import("react").JSX.Element;
|
|
64
|
+
export declare const Textarea: ({ id, placeholder, value, defaultValue, rows, isSkeleton, maxLength, minLength, onValueChange, variant: requestedVariant, onSubmitShortcut, mentions, onBlur, onPaste, autoFocus, ...field }: TextareaProps) => import("react").JSX.Element;
|
|
65
65
|
export {};
|
|
66
66
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/Textarea/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/Textarea/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAA4B,KAAK,cAAc,EAAsB,MAAM,OAAO,CAAA;AACzF,OAAO,EAQH,KAAK,iBAAiB,EACzB,MAAM,mBAAmB,CAAA;AAE1B,iGAAiG;AACjG,MAAM,MAAM,qBAAqB,GAAG;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,iEAAiE;IACjE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAChC,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC3B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAA;IACtD,wEAAwE;IACxE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,2CAA2C;IAC3C,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,qBAAqB,KAAK,IAAI,CAAA;CAC9D,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG;IAC5C,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,iFAAiF;IACjF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,2DAA2D;IAC3D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAChD,iGAAiG;IACjG,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,CAAA;IAC1C;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAA;IACpC,+BAA+B;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IAC5B,8CAA8C;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAA;IACvE,2CAA2C;IAC3C,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAC/B,CAAA;AAED,KAAK,YAAY,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAI3F,gIAAgI;AAChI,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,EAAE,gBAAa,KAAG,YAAY,GAAG,IAQ5F,CAAA;AAED,4FAA4F;AAC5F,eAAO,MAAM,oBAAoB,GAAI,SAAS,aAAa,CAAC,qBAAqB,CAAC,EAAE,OAAO,MAAM,KAAG,aAAa,CAAC,qBAAqB,CAGtI,CAAA;AAQD,4HAA4H;AAC5H,eAAO,MAAM,QAAQ,GAAI,8LAiBtB,aAAa,gCAsKf,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useFieldVariant } from "../../surfaceContext.js";
|
|
3
4
|
import { TextArea as HeroTextArea, TextField as HeroTextField } from "@heroui/react";
|
|
4
5
|
import { useId, useMemo, useState } from "react";
|
|
5
6
|
import { FieldDescription, FieldErrorText, FieldLabel, FieldSkeleton, fieldVariantAttributes, isFieldInvalid, vendorFieldProps, } from "../Field/index.js";
|
|
@@ -28,7 +29,8 @@ export const filterMentionOptions = (options, query) => {
|
|
|
28
29
|
* a rule on the hook adds to the shared anatomy and never has to replace it.
|
|
29
30
|
*/
|
|
30
31
|
/** Multi-line text with the shared field anatomy, an optional Enter-to-submit shortcut and optional mention suggestions. */
|
|
31
|
-
export const Textarea = ({ id, placeholder, value, defaultValue, rows = 4, isSkeleton = false, maxLength, minLength, onValueChange, variant
|
|
32
|
+
export const Textarea = ({ id, placeholder, value, defaultValue, rows = 4, isSkeleton = false, maxLength, minLength, onValueChange, variant: requestedVariant, onSubmitShortcut, mentions, onBlur, onPaste, autoFocus = false, ...field }) => {
|
|
33
|
+
const variant = useFieldVariant(requestedVariant);
|
|
32
34
|
const [uncontrolledLength, setUncontrolledLength] = useState((defaultValue ?? "").length);
|
|
33
35
|
const length = value === undefined ? uncontrolledLength : value.length;
|
|
34
36
|
const generatedId = useId();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/Textarea/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,eAAe,CAAA;AACpF,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAA2C,MAAM,OAAO,CAAA;AACzF,OAAO,EACH,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,aAAa,EACb,sBAAsB,EACtB,cAAc,EACd,gBAAgB,GAEnB,MAAM,mBAAmB,CAAA;AA0D1B,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;AAE3F,gIAAgI;AAChI,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,OAAO,GAAG,GAAG,EAAuB,EAAE;IAChG,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IACnC,MAAM,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;IACtC,IAAI,EAAE,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IACvB,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC/C,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACjC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;AACjD,CAAC,CAAA;AAED,4FAA4F;AAC5F,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAA6C,EAAE,KAAa,EAAwC,EAAE;IACvI,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;IACrB,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAChH,CAAC,CAAA;AAED;;;;GAIG;AAEH,4HAA4H;AAC5H,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EACrB,EAAE,EACF,WAAW,EACX,KAAK,EACL,YAAY,EACZ,IAAI,GAAG,CAAC,EACR,UAAU,GAAG,KAAK,EAClB,SAAS,EACT,SAAS,EACT,aAAa,EACb,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/Textarea/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -9,9 +9,9 @@ export type TimeFieldProps = FieldControlProps & {
|
|
|
9
9
|
readonly granularity?: "hour" | "minute" | "second";
|
|
10
10
|
/** Forces 12- or 24-hour display; the locale decides by default. */
|
|
11
11
|
readonly hourCycle?: 12 | 24;
|
|
12
|
-
/**
|
|
12
|
+
/** Defaults to `secondary` inside a Grammar surface and `primary` outside (ANATOMY-2 case-1). */
|
|
13
13
|
readonly variant?: "primary" | "secondary";
|
|
14
14
|
};
|
|
15
15
|
/** A typed time of day in locale-ordered spinbutton segments. */
|
|
16
|
-
export declare const TimeField: ({ value, defaultValue, onValueChange, minValue, maxValue, granularity, hourCycle, variant, ...field }: TimeFieldProps) => import("react").JSX.Element;
|
|
16
|
+
export declare const TimeField: ({ value, defaultValue, onValueChange, minValue, maxValue, granularity, hourCycle, variant: requestedVariant, ...field }: TimeFieldProps) => import("react").JSX.Element;
|
|
17
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/TimeField/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/TimeField/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAA8B,KAAK,SAAS,EAAE,MAAM,eAAe,CAAA;AAC1E,OAAO,EAOH,KAAK,iBAAiB,EACzB,MAAM,mBAAmB,CAAA;AAG1B,MAAM,MAAM,cAAc,GAAG,iBAAiB,GAAG;IAC7C,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IACxC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAA;IAC1D,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAA;IACnD,oEAAoE;IACpE,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,CAAA;IAC5B,iGAAiG;IACjG,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,CAAA;CAC7C,CAAA;AAQD,iEAAiE;AACjE,eAAO,MAAM,SAAS,GAAI,yHAUvB,cAAc,gCA2BhB,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useFieldVariant } from "../../surfaceContext.js";
|
|
3
4
|
import { TimeField as HeroTimeField } from "@heroui/react";
|
|
4
5
|
import { FieldDescription, FieldErrorText, FieldLabel, fieldVariantAttributes, isFieldInvalid, vendorFieldProps, } from "../Field/index.js";
|
|
5
6
|
import { DateFieldBox, DateSegments } from "../DateField/index.js";
|
|
@@ -9,5 +10,8 @@ import { DateFieldBox, DateSegments } from "../DateField/index.js";
|
|
|
9
10
|
* a rule on the hook adds to the shared anatomy and never has to replace it.
|
|
10
11
|
*/
|
|
11
12
|
/** A typed time of day in locale-ordered spinbutton segments. */
|
|
12
|
-
export const TimeField = ({ value, defaultValue, onValueChange, minValue, maxValue, granularity = "minute", hourCycle, variant
|
|
13
|
+
export const TimeField = ({ value, defaultValue, onValueChange, minValue, maxValue, granularity = "minute", hourCycle, variant: requestedVariant, ...field }) => {
|
|
14
|
+
const variant = useFieldVariant(requestedVariant);
|
|
15
|
+
return (_jsxs(HeroTimeField, { "data-tier": "atom", "data-component": "TimeField", "data-contract": "A11Y-1 FEEDBACK-1 STATE-1", className: "starci-core-field starci-core-time-field", fullWidth: true, ...fieldVariantAttributes(variant), ...vendorFieldProps(field), isReadOnly: field.isReadOnly === true, granularity: granularity, ...(hourCycle === undefined ? {} : { hourCycle }), ...(value === undefined ? defaultValue === undefined ? {} : { defaultValue } : { value }), ...(onValueChange === undefined ? {} : { onChange: onValueChange }), ...(minValue === undefined ? {} : { minValue }), ...(maxValue === undefined ? {} : { maxValue }), children: [_jsx(FieldLabel, { isHidden: field.isLabelHidden, isRequired: field.isRequired, children: field.label }), _jsx(DateFieldBox, { isInvalid: isFieldInvalid(field), isDisabled: field.isDisabled === true, variant: variant, children: _jsx(DateSegments, {}) }), _jsx(FieldDescription, { children: field.description }), _jsx(FieldErrorText, { children: field.errorMessage })] }));
|
|
16
|
+
};
|
|
13
17
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/TimeField/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,SAAS,IAAI,aAAa,EAAkB,MAAM,eAAe,CAAA;AAC1E,OAAO,EACH,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,sBAAsB,EACtB,cAAc,EACd,gBAAgB,GAEnB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAelE;;;;GAIG;AAEH,iEAAiE;AACjE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EACtB,KAAK,EACL,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,WAAW,GAAG,QAAQ,EACtB,SAAS,EACT,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/TimeField/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,SAAS,IAAI,aAAa,EAAkB,MAAM,eAAe,CAAA;AAC1E,OAAO,EACH,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,sBAAsB,EACtB,cAAc,EACd,gBAAgB,GAEnB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAelE;;;;GAIG;AAEH,iEAAiE;AACjE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EACtB,KAAK,EACL,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,WAAW,GAAG,QAAQ,EACtB,SAAS,EACT,OAAO,EAAE,gBAAgB,EACzB,GAAG,KAAK,EACK,EAAE,EAAE;IACjB,MAAM,OAAO,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAA;IACjD,OAAO,CACH,MAAC,aAAa,iBACA,MAAM,oBACD,WAAW,mBACZ,2BAA2B,EACzC,SAAS,EAAC,0CAA0C,EACpD,SAAS,WACL,sBAAsB,CAAC,OAAO,CAAC,KAC/B,gBAAgB,CAAC,KAAK,CAAC,EAC3B,UAAU,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,EACrC,WAAW,EAAE,WAAW,KACpB,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,KAC9C,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,KACtF,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,KAChE,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAC5C,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,aAEhD,KAAC,UAAU,IAAC,QAAQ,EAAE,KAAK,CAAC,aAAa,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,YAAG,KAAK,CAAC,KAAK,GAAc,EACnG,KAAC,YAAY,IAAC,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,EAAE,OAAO,EAAE,OAAO,YACnG,KAAC,YAAY,KAAG,GACL,EACf,KAAC,gBAAgB,cAAE,KAAK,CAAC,WAAW,GAAoB,EACxD,KAAC,cAAc,cAAE,KAAK,CAAC,YAAY,GAAkB,IACzC,CACnB,CAAA;AACL,CAAC,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import type { FieldVariant } from "./primitive/Field/index.js";
|
|
3
|
+
/** Supplies the nested-control layer to every child, including portalled overlay content. */
|
|
4
|
+
export declare const SurfaceNesting: ({ children }: {
|
|
5
|
+
readonly children: ReactNode;
|
|
6
|
+
}) => import("react").JSX.Element;
|
|
7
|
+
/** Whether the current composition supplies a Grammar surface content edge and control layer. */
|
|
8
|
+
export declare const useSurfaceNesting: () => boolean;
|
|
9
|
+
/** Resolve an explicit field layer, or the surface's secondary/page's primary default. */
|
|
10
|
+
export declare const useFieldVariant: (variant?: FieldVariant) => FieldVariant;
|
|
11
|
+
//# sourceMappingURL=surfaceContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"surfaceContext.d.ts","sourceRoot":"","sources":["../../src/core/surfaceContext.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAI9D,6FAA6F;AAC7F,eAAO,MAAM,cAAc,GAAI,cAAc;IAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,gCAE5E,CAAA;AAED,iGAAiG;AACjG,eAAO,MAAM,iBAAiB,QAAO,OAA4C,CAAA;AAEjF,0FAA0F;AAC1F,eAAO,MAAM,eAAe,GAAI,UAAU,YAAY,KAAG,YAGxD,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { createContext, useContext } from "react";
|
|
4
|
+
const SurfaceNestingContext = createContext(false);
|
|
5
|
+
/** Supplies the nested-control layer to every child, including portalled overlay content. */
|
|
6
|
+
export const SurfaceNesting = ({ children }) => (_jsx(SurfaceNestingContext.Provider, { value: true, children: children }));
|
|
7
|
+
/** Whether the current composition supplies a Grammar surface content edge and control layer. */
|
|
8
|
+
export const useSurfaceNesting = () => useContext(SurfaceNestingContext);
|
|
9
|
+
/** Resolve an explicit field layer, or the surface's secondary/page's primary default. */
|
|
10
|
+
export const useFieldVariant = (variant) => {
|
|
11
|
+
const nested = useSurfaceNesting();
|
|
12
|
+
return variant ?? (nested ? "secondary" : "primary");
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=surfaceContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"surfaceContext.js","sourceRoot":"","sources":["../../src/core/surfaceContext.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,aAAa,EAAE,UAAU,EAAkB,MAAM,OAAO,CAAA;AAGjE,MAAM,qBAAqB,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;AAElD,6FAA6F;AAC7F,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAAE,QAAQ,EAAoC,EAAE,EAAE,CAAC,CAC9E,KAAC,qBAAqB,CAAC,QAAQ,IAAC,KAAK,EAAE,IAAI,YAAG,QAAQ,GAAkC,CAC3F,CAAA;AAED,iGAAiG;AACjG,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAY,EAAE,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAA;AAEjF,0FAA0F;AAC1F,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAsB,EAAgB,EAAE;IACpE,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAA;IAClC,OAAO,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;AACxD,CAAC,CAAA"}
|
|
@@ -120,7 +120,7 @@
|
|
|
120
120
|
color: var(--offset-pop-accent-text);
|
|
121
121
|
}
|
|
122
122
|
|
|
123
|
-
.grammar-common-root[data-grammar-family="offset-pop"] [data-grammar-menu-item][data-grammar-tone="
|
|
123
|
+
.grammar-common-root[data-grammar-family="offset-pop"] [data-grammar-menu-item][data-grammar-tone="danger"] {
|
|
124
124
|
color: color-mix(in srgb, var(--offset-pop-critical) 65%, var(--offset-pop-ink));
|
|
125
125
|
}
|
|
126
126
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@starci/grammar",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "Reusable StarCi React components, compositions, and packaged visual DNA.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"starci",
|
|
@@ -64,7 +64,11 @@
|
|
|
64
64
|
"build-storybook": "storybook build"
|
|
65
65
|
},
|
|
66
66
|
"engines": {
|
|
67
|
-
"node": ">=
|
|
67
|
+
"node": ">=22"
|
|
68
|
+
},
|
|
69
|
+
"dependencies": {
|
|
70
|
+
"@dicebear/core": "10.4.0",
|
|
71
|
+
"@dicebear/styles": "10.4.0"
|
|
68
72
|
},
|
|
69
73
|
"peerDependencies": {
|
|
70
74
|
"react": ">=18",
|
|
@@ -87,7 +91,8 @@
|
|
|
87
91
|
"@internationalized/date": "^3.12.4",
|
|
88
92
|
"vite": "^8.3.0",
|
|
89
93
|
"@types/node": "^22.0.0",
|
|
90
|
-
"@xyflow/react": "12.11.6"
|
|
94
|
+
"@xyflow/react": "12.11.6",
|
|
95
|
+
"@starci/tsconfig": "2.0.7"
|
|
91
96
|
},
|
|
92
97
|
"license": "MIT",
|
|
93
98
|
"publishConfig": {
|