@starci/grammar 0.8.5 → 0.9.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.
Files changed (78) hide show
  1. package/dist/.build-stamp.json +4 -4
  2. package/dist/common/components-navigation.css +3 -0
  3. package/dist/common/registry.d.ts +6 -4
  4. package/dist/common/registry.d.ts.map +1 -1
  5. package/dist/common/registry.js +2 -2
  6. package/dist/common/registry.js.map +1 -1
  7. package/dist/common/renderers-forms.d.ts +2 -2
  8. package/dist/common/renderers-forms.d.ts.map +1 -1
  9. package/dist/common/renderers-forms.js.map +1 -1
  10. package/dist/common/renderers-navigation.d.ts +1 -1
  11. package/dist/common/renderers.d.ts +2 -0
  12. package/dist/common/renderers.d.ts.map +1 -1
  13. package/dist/common/renderers.js +2 -0
  14. package/dist/common/renderers.js.map +1 -1
  15. package/dist/common/styles.css +168 -0
  16. package/dist/core/branch/AlertDialog/index.d.ts.map +1 -1
  17. package/dist/core/branch/AlertDialog/index.js +1 -0
  18. package/dist/core/branch/AlertDialog/index.js.map +1 -1
  19. package/dist/core/branch/Dialog/index.d.ts.map +1 -1
  20. package/dist/core/branch/Dialog/index.js +1 -0
  21. package/dist/core/branch/Dialog/index.js.map +1 -1
  22. package/dist/core/branch/Drawer/index.d.ts.map +1 -1
  23. package/dist/core/branch/Drawer/index.js +1 -0
  24. package/dist/core/branch/Drawer/index.js.map +1 -1
  25. package/dist/core/branch/Rail/index.d.ts.map +1 -1
  26. package/dist/core/branch/Rail/index.js +1 -0
  27. package/dist/core/branch/Rail/index.js.map +1 -1
  28. package/dist/core/branch/Subnav/index.d.ts.map +1 -1
  29. package/dist/core/branch/Subnav/index.js +1 -0
  30. package/dist/core/branch/Subnav/index.js.map +1 -1
  31. package/dist/core/branch/SurfaceAccordionCard/index.d.ts.map +1 -1
  32. package/dist/core/branch/SurfaceAccordionCard/index.js +1 -0
  33. package/dist/core/branch/SurfaceAccordionCard/index.js.map +1 -1
  34. package/dist/core/branch/SurfaceCard/index.d.ts.map +1 -1
  35. package/dist/core/branch/SurfaceCard/index.js +1 -0
  36. package/dist/core/branch/SurfaceCard/index.js.map +1 -1
  37. package/dist/core/branch/SurfaceListCard/index.d.ts.map +1 -1
  38. package/dist/core/branch/SurfaceListCard/index.js +1 -0
  39. package/dist/core/branch/SurfaceListCard/index.js.map +1 -1
  40. package/dist/core/branch/Tooltip/index.d.ts.map +1 -1
  41. package/dist/core/branch/Tooltip/index.js +1 -0
  42. package/dist/core/branch/Tooltip/index.js.map +1 -1
  43. package/dist/core/composite/Alert/index.d.ts.map +1 -1
  44. package/dist/core/composite/Alert/index.js +1 -0
  45. package/dist/core/composite/Alert/index.js.map +1 -1
  46. package/dist/core/composite/ChatBubble/index.d.ts +32 -0
  47. package/dist/core/composite/ChatBubble/index.d.ts.map +1 -0
  48. package/dist/core/composite/ChatBubble/index.js +12 -0
  49. package/dist/core/composite/ChatBubble/index.js.map +1 -0
  50. package/dist/core/composite/FillViewport/index.d.ts +28 -0
  51. package/dist/core/composite/FillViewport/index.d.ts.map +1 -0
  52. package/dist/core/composite/FillViewport/index.js +55 -0
  53. package/dist/core/composite/FillViewport/index.js.map +1 -0
  54. package/dist/core/composition/BottomNav/index.d.ts.map +1 -1
  55. package/dist/core/composition/BottomNav/index.js +1 -1
  56. package/dist/core/composition/BottomNav/index.js.map +1 -1
  57. package/dist/core/composition/PrimaryRailLayout/index.d.ts +6 -1
  58. package/dist/core/composition/PrimaryRailLayout/index.d.ts.map +1 -1
  59. package/dist/core/composition/PrimaryRailLayout/index.js +1 -1
  60. package/dist/core/composition/PrimaryRailLayout/index.js.map +1 -1
  61. package/dist/core/composition/WorkspaceShell/index.js +1 -1
  62. package/dist/core/composition/WorkspaceShell/index.js.map +1 -1
  63. package/dist/core/primitive/IconButton/index.d.ts +12 -1
  64. package/dist/core/primitive/IconButton/index.d.ts.map +1 -1
  65. package/dist/core/primitive/IconButton/index.js +13 -2
  66. package/dist/core/primitive/IconButton/index.js.map +1 -1
  67. package/dist/core/primitive/Image/index.d.ts +6 -1
  68. package/dist/core/primitive/Image/index.d.ts.map +1 -1
  69. package/dist/core/primitive/Image/index.js +2 -2
  70. package/dist/core/primitive/Image/index.js.map +1 -1
  71. package/dist/core/primitive/PinnedActionBar/index.d.ts.map +1 -1
  72. package/dist/core/primitive/PinnedActionBar/index.js +1 -1
  73. package/dist/core/primitive/PinnedActionBar/index.js.map +1 -1
  74. package/dist/core/primitive/Textarea/index.d.ts +38 -2
  75. package/dist/core/primitive/Textarea/index.d.ts.map +1 -1
  76. package/dist/core/primitive/Textarea/index.js +106 -4
  77. package/dist/core/primitive/Textarea/index.js.map +1 -1
  78. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/PinnedActionBar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,8HAA8H;AAC9H,MAAM,MAAM,yBAAyB,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAE3D,MAAM,MAAM,oBAAoB,GAAG;IAC/B,8FAA8F;IAC9F,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAC5B,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,wBAAwB;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,yBAAyB,CAAA;CAClD,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,iCAA4C,oBAAoB,gCAY/F,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/PinnedActionBar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,8HAA8H;AAC9H,MAAM,MAAM,yBAAyB,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAE3D,MAAM,MAAM,oBAAoB,GAAG;IAC/B,8FAA8F;IAC9F,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAC5B,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,wBAAwB;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,yBAAyB,CAAA;CAClD,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,iCAA4C,oBAAoB,gCAa/F,CAAA"}
@@ -6,5 +6,5 @@ import { jsx as _jsx } from "react/jsx-runtime";
6
6
  * inset. It holds one Button; it is not navigation (that is `BottomNav`). Hidden at 48rem and wider unless
7
7
  * `visibility="always"`, so the same command is shown once per viewport (LAYOUT-4 case-2).
8
8
  */
9
- export const PinnedActionBar = ({ children, label, visibility = "narrow" }) => (_jsx("div", { "aria-label": label, className: "starci-core-pinned-action-bar", "data-component": "PinnedActionBar", "data-contract": "BOUNDARY-1", "data-grammar-pinned-visibility": visibility, "data-tier": "atom", role: "group", children: children }));
9
+ export const PinnedActionBar = ({ children, label, visibility = "narrow" }) => (_jsx("div", { "aria-label": label, className: "starci-core-pinned-action-bar", "data-component": "PinnedActionBar", "data-grammar-bottom-chrome": "true", "data-contract": "BOUNDARY-1", "data-grammar-pinned-visibility": visibility, "data-tier": "atom", role: "group", children: children }));
10
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/PinnedActionBar/index.tsx"],"names":[],"mappings":";AAcA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,GAAG,QAAQ,EAAwB,EAAE,EAAE,CAAC,CACjG,4BACgB,KAAK,EACjB,SAAS,EAAC,+BAA+B,oBAC1B,iBAAiB,mBAClB,YAAY,oCACM,UAAU,eAChC,MAAM,EAChB,IAAI,EAAC,OAAO,YAEX,QAAQ,GACP,CACT,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/PinnedActionBar/index.tsx"],"names":[],"mappings":";AAcA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,GAAG,QAAQ,EAAwB,EAAE,EAAE,CAAC,CACjG,4BACgB,KAAK,EACjB,SAAS,EAAC,+BAA+B,oBAC1B,iBAAiB,gCACL,MAAM,mBACnB,YAAY,oCACM,UAAU,eAChC,MAAM,EAChB,IAAI,EAAC,OAAO,YAEX,QAAQ,GACP,CACT,CAAA"}
@@ -1,4 +1,24 @@
1
1
  import { type FieldControlProps } from "../Field/index.js";
2
+ /** One person or agent the reader can mention. `label` is what is inserted after the trigger. */
3
+ export type TextareaMentionOption = {
4
+ readonly id: string;
5
+ readonly label: string;
6
+ /** A second muted line in the suggestion list (role, handle). */
7
+ readonly description?: string;
8
+ };
9
+ /**
10
+ * Mention suggestions: typing the trigger (default `@`) at a word start opens a list filtered by what follows it;
11
+ * ArrowUp/ArrowDown move, Enter or Tab inserts `trigger + label + space`, Escape closes. Works on a controlled value
12
+ * (`value` + `onValueChange`), because inserting a mention rewrites the text.
13
+ */
14
+ export type TextareaMentions = {
15
+ readonly options: ReadonlyArray<TextareaMentionOption>;
16
+ /** Accessible name of the suggestion list, e.g. "People to mention". */
17
+ readonly label: string;
18
+ readonly trigger?: string;
19
+ /** Called after a mention was inserted. */
20
+ readonly onSelect?: (option: TextareaMentionOption) => void;
21
+ };
2
22
  export type TextareaProps = FieldControlProps & {
3
23
  readonly id?: string;
4
24
  readonly placeholder?: string;
@@ -12,7 +32,23 @@ export type TextareaProps = FieldControlProps & {
12
32
  readonly onValueChange?: (value: string) => void;
13
33
  /** Layer variant: `secondary` when the control sits on a surface (ANATOMY-2 case-1). */
14
34
  readonly variant?: "primary" | "secondary";
35
+ /**
36
+ * Chat composer shortcut: Enter (without Shift, outside an IME composition and with no suggestion list open) calls this
37
+ * instead of breaking the line; Shift+Enter still breaks the line.
38
+ */
39
+ readonly onSubmitShortcut?: () => void;
40
+ readonly mentions?: TextareaMentions;
41
+ };
42
+ type MentionQuery = {
43
+ readonly start: number;
44
+ readonly end: number;
45
+ readonly text: string;
15
46
  };
16
- /** Multi-line text with the shared field anatomy. */
17
- export declare const Textarea: ({ id, placeholder, value, defaultValue, rows, maxLength, minLength, onValueChange, variant, ...field }: TextareaProps) => import("react").JSX.Element;
47
+ /** The trigger word that ends at the caret (`@an` in "hi @an|"), or null. The trigger must start the text or follow a space. */
48
+ export declare const findMentionQuery: (text: string, caret: number, trigger?: string) => MentionQuery | null;
49
+ /** Options whose label (accent- and case-insensitive) contains the query, at most eight. */
50
+ export declare const filterMentionOptions: (options: ReadonlyArray<TextareaMentionOption>, query: string) => ReadonlyArray<TextareaMentionOption>;
51
+ /** Multi-line text with the shared field anatomy, an optional Enter-to-submit shortcut and optional mention suggestions. */
52
+ export declare const Textarea: ({ id, placeholder, value, defaultValue, rows, maxLength, minLength, onValueChange, variant, onSubmitShortcut, mentions, ...field }: TextareaProps) => import("react").JSX.Element;
53
+ export {};
18
54
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/Textarea/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAOH,KAAK,iBAAiB,EACzB,MAAM,mBAAmB,CAAA;AAE1B,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,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,wFAAwF;IACxF,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,CAAA;CAC7C,CAAA;AAQD,qDAAqD;AACrD,eAAO,MAAM,QAAQ,GAAI,wGAWtB,aAAa,gCAgDf,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/Textarea/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAOH,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,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,wFAAwF;IACxF,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;CACvC,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,oIAatB,aAAa,gCA4Jf,CAAA"}
@@ -1,20 +1,122 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { TextArea as HeroTextArea, TextField as HeroTextField } from "@heroui/react";
4
- import { useState } from "react";
4
+ import { useId, useMemo, useState } from "react";
5
5
  import { FieldDescription, FieldErrorText, FieldLabel, fieldVariantAttributes, isFieldInvalid, vendorFieldProps, } from "../Field/index.js";
6
+ const fold = (s) => s.normalize("NFD").replace(/\p{Diacritic}/gu, "").toLowerCase();
7
+ /** The trigger word that ends at the caret (`@an` in "hi @an|"), or null. The trigger must start the text or follow a space. */
8
+ export const findMentionQuery = (text, caret, trigger = "@") => {
9
+ const before = text.slice(0, caret);
10
+ const at = before.lastIndexOf(trigger);
11
+ if (at < 0)
12
+ return null;
13
+ if (at > 0 && !/\s/.test(before.charAt(at - 1)))
14
+ return null;
15
+ const query = before.slice(at + trigger.length);
16
+ if (/\s/.test(query))
17
+ return null;
18
+ return { start: at, end: caret, text: query };
19
+ };
20
+ /** Options whose label (accent- and case-insensitive) contains the query, at most eight. */
21
+ export const filterMentionOptions = (options, query) => {
22
+ const q = fold(query);
23
+ return options.filter((o) => fold(o.label).includes(q) || fold(o.description ?? "").includes(q)).slice(0, 8);
24
+ };
6
25
  /*
7
26
  * Consumer hook: `starci-core-textarea` names this control's root for a consumer or family
8
27
  * stylesheet. No shipped sheet paints it: the root is drawn as a whole by `.starci-core-field`, so
9
28
  * a rule on the hook adds to the shared anatomy and never has to replace it.
10
29
  */
11
- /** Multi-line text with the shared field anatomy. */
12
- export const Textarea = ({ id, placeholder, value, defaultValue, rows = 4, maxLength, minLength, onValueChange, variant = "primary", ...field }) => {
30
+ /** 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, maxLength, minLength, onValueChange, variant = "primary", onSubmitShortcut, mentions, ...field }) => {
13
32
  const [uncontrolledLength, setUncontrolledLength] = useState((defaultValue ?? "").length);
14
33
  const length = value === undefined ? uncontrolledLength : value.length;
34
+ const generatedId = useId();
35
+ const controlId = id ?? `textarea-${generatedId}`;
36
+ const listId = `${controlId}-mentions`;
37
+ const trigger = mentions?.trigger ?? "@";
38
+ const [query, setQuery] = useState(null);
39
+ const [active, setActive] = useState(0);
40
+ const suggestions = useMemo(() => (mentions === undefined || query === null ? [] : filterMentionOptions(mentions.options, query.text)), [mentions, query]);
41
+ const isOpen = suggestions.length > 0;
42
+ const readQuery = (control) => {
43
+ if (mentions === undefined)
44
+ return;
45
+ const next = control.selectionStart === control.selectionEnd ? findMentionQuery(control.value, control.selectionStart, trigger) : null;
46
+ setQuery(next);
47
+ setActive(0);
48
+ };
49
+ const insert = (option) => {
50
+ const control = document.getElementById(controlId);
51
+ if (!(control instanceof HTMLTextAreaElement) || query === null)
52
+ return;
53
+ const text = control.value;
54
+ const inserted = `${trigger}${option.label} `;
55
+ const next = `${text.slice(0, query.start)}${inserted}${text.slice(query.end)}`;
56
+ const caret = query.start + inserted.length;
57
+ onValueChange?.(next);
58
+ setUncontrolledLength(next.length);
59
+ setQuery(null);
60
+ mentions?.onSelect?.(option);
61
+ requestAnimationFrame(() => {
62
+ control.focus();
63
+ control.setSelectionRange(caret, caret);
64
+ });
65
+ };
66
+ const onKeyDown = (event) => {
67
+ if (isOpen) {
68
+ if (event.key === "ArrowDown" || event.key === "ArrowUp") {
69
+ event.preventDefault();
70
+ const step = event.key === "ArrowDown" ? 1 : -1;
71
+ setActive((current) => (current + step + suggestions.length) % suggestions.length);
72
+ return;
73
+ }
74
+ if (event.key === "Enter" || event.key === "Tab") {
75
+ event.preventDefault();
76
+ const option = suggestions[active];
77
+ if (option !== undefined)
78
+ insert(option);
79
+ return;
80
+ }
81
+ if (event.key === "Escape") {
82
+ event.preventDefault();
83
+ setQuery(null);
84
+ return;
85
+ }
86
+ }
87
+ if (onSubmitShortcut !== undefined && event.key === "Enter" && !event.shiftKey && !event.nativeEvent.isComposing) {
88
+ event.preventDefault();
89
+ onSubmitShortcut();
90
+ }
91
+ };
92
+ const activeId = isOpen ? `${listId}-${suggestions[active]?.id ?? ""}` : undefined;
15
93
  return (_jsxs(HeroTextField, { "data-tier": "atom", "data-component": "Textarea", "data-contract": "A11Y-1 FIELD-1 FIELD-2 FIELD-3", className: "starci-core-field starci-core-textarea", fullWidth: true, variant: variant, ...fieldVariantAttributes(variant), ...vendorFieldProps(field), isReadOnly: field.isReadOnly === true, ...(value === undefined ? defaultValue === undefined ? {} : { defaultValue } : { value }), ...(maxLength === undefined ? {} : { maxLength }), ...(minLength === undefined ? {} : { minLength }), onChange: (next) => {
16
94
  setUncontrolledLength(next.length);
17
95
  onValueChange?.(next);
18
- }, children: [_jsx(FieldLabel, { isHidden: field.isLabelHidden, isRequired: field.isRequired, children: field.label }), _jsx(HeroTextArea, { ...(id === undefined ? {} : { id }), rows: rows, ...(placeholder === undefined ? {} : { placeholder }), className: "starci-core-textarea-control", "data-grammar-field-control": "true" }), field.description == null && maxLength === undefined ? null : (_jsxs("div", { className: "starci-core-field-meta", children: [_jsx(FieldDescription, { children: field.description }), maxLength === undefined ? null : (_jsxs("span", { className: "starci-core-field-count", "data-grammar-field-count": "true", "data-grammar-invalid": isFieldInvalid(field) || length > maxLength ? "true" : "false", children: [length, "/", maxLength] }))] })), _jsx(FieldErrorText, { children: field.errorMessage })] }));
96
+ // Text can arrive without a key release (IME, paste, a phone keyboard, dictation): re-read the trigger then too.
97
+ if (mentions !== undefined) {
98
+ queueMicrotask(() => {
99
+ const control = document.getElementById(controlId);
100
+ if (control instanceof HTMLTextAreaElement)
101
+ readQuery(control);
102
+ });
103
+ }
104
+ }, children: [_jsx(FieldLabel, { isHidden: field.isLabelHidden, isRequired: field.isRequired, children: field.label }), _jsxs("div", { className: "starci-core-textarea-anchor", children: [_jsx(HeroTextArea, { id: controlId, rows: rows, ...(placeholder === undefined ? {} : { placeholder }), className: "starci-core-textarea-control", "data-grammar-field-control": "true", onKeyDown: onKeyDown, ...(mentions === undefined
105
+ ? {}
106
+ : {
107
+ onKeyUp: (event) => {
108
+ if (!["ArrowDown", "ArrowUp", "Enter", "Tab", "Escape"].includes(event.key))
109
+ readQuery(event.currentTarget);
110
+ },
111
+ onClick: (event) => readQuery(event.currentTarget),
112
+ onBlur: () => setQuery(null),
113
+ "aria-autocomplete": "list",
114
+ // A textbox may carry aria-controls / aria-autocomplete / aria-activedescendant, not aria-expanded (ARIA 1.2);
115
+ // both references are set only while the list exists, so they never point at a missing element.
116
+ ...(activeId === undefined ? {} : { "aria-controls": listId, "aria-activedescendant": activeId }),
117
+ }) }), mentions === undefined || !isOpen ? null : (_jsx("ul", { id: listId, role: "listbox", "aria-label": mentions.label, className: "starci-core-mention-list", "data-grammar-mention-list": "true", children: suggestions.map((option, index) => (_jsxs("li", { id: `${listId}-${option.id}`, role: "option", "aria-selected": index === active, className: "starci-core-mention-option", "data-grammar-mention-active": index === active ? "true" : "false", onMouseDown: (event) => {
118
+ event.preventDefault();
119
+ insert(option);
120
+ }, onMouseEnter: () => setActive(index), children: [_jsx("span", { className: "starci-core-mention-label", children: option.label }), option.description === undefined ? null : _jsx("span", { className: "starci-core-mention-description", children: option.description })] }, option.id))) }))] }), field.description == null && maxLength === undefined ? null : (_jsxs("div", { className: "starci-core-field-meta", children: [_jsx(FieldDescription, { children: field.description }), maxLength === undefined ? null : (_jsxs("span", { className: "starci-core-field-count", "data-grammar-field-count": "true", "data-grammar-invalid": isFieldInvalid(field) || length > maxLength ? "true" : "false", children: [length, "/", maxLength] }))] })), _jsx(FieldErrorText, { children: field.errorMessage })] }));
19
121
  };
20
122
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/Textarea/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/Textarea/index.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@starci/grammar",
3
- "version": "0.8.5",
3
+ "version": "0.9.0",
4
4
  "description": "Reusable StarCi React components, compositions, and packaged visual DNA.",
5
5
  "keywords": [
6
6
  "starci",
@@ -59,7 +59,7 @@
59
59
  "scripts": {
60
60
  "build": "node scripts/clean.mjs && tsc -p tsconfig.build.json && node scripts/copy-css.mjs && node scripts/build-stamp.mjs",
61
61
  "typecheck": "tsc -p tsconfig.build.json --noEmit && tsc -p tsconfig.stories.json",
62
- "test": "npm run build && node --test src/common/index.spec.mjs src/core/index.spec.mjs src/offset-pop/index.spec.mjs src/package-boundary.spec.mjs && vitest run --config vitest.config.ts src/shipped-geometry.spec.ts src/core/shipped-claims.spec.tsx src/common/conformance.spec.ts src/common/styles.spec.ts src/core/family.spec.tsx src/core/styles.spec.ts src/core/surface-card-family.spec.tsx src/core/scrollable-surfaces.spec.tsx src/core/primitive/Badge/index.spec.tsx src/core/primitive/Button/index.spec.tsx src/core/primitive/Divider/index.spec.tsx src/core/primitive/Region/index.spec.tsx src/core/primitive/NavLandmark/index.spec.tsx src/core/primitive/List/index.spec.tsx src/core/primitive/Heading/index.spec.tsx src/core/primitive/Icon/index.spec.tsx src/core/primitive/IconButton/index.spec.tsx src/core/primitive/IconTile/index.spec.tsx src/core/primitive/Input/index.spec.tsx src/core/primitive/Input/copyable.spec.tsx src/core/primitive/PressableField/index.spec.tsx src/core/primitive/Progress/index.spec.tsx src/core/primitive/Text/index.spec.tsx src/core/primitive/TextAction/index.spec.tsx src/core/primitive/Label/index.spec.tsx src/core/primitive/RankArtwork/index.spec.tsx src/core/composite/EmptyNotice/index.spec.tsx src/core/branch/Tabs/index.spec.tsx src/core/branch/Subnav/index.spec.tsx src/core/branch/Subnav/styles.spec.ts src/core/branch/Tooltip/index.spec.tsx src/core/composition/NavigationFeatureNav/index.spec.tsx src/core/composition/NavigationFeatureNav/styles.spec.ts src/core/composition/Sidebar/index.spec.tsx src/core/composition/Sidebar/styles.spec.ts src/core/composition/collapse.spec.tsx src/core/composition/WorkspaceShell/index.spec.tsx src/core/composition/ChatWorkspace/index.spec.tsx src/heritage/index.spec.tsx src/heritage/styles.spec.ts src/offset-pop/index.spec.tsx src/offset-pop/render.spec.tsx src/offset-pop/styles.spec.ts src/offset-pop/family.spec.tsx src/offset-pop/shipped-claims.spec.tsx src/offset-pop/surface-card-family.spec.tsx src/offset-pop/scrollable-surfaces.spec.tsx src/offset-pop/conformance.spec.ts src/core/branch/Accordion/index.spec.tsx src/core/branch/AlertDialog/index.spec.tsx src/core/branch/Calendar/index.spec.tsx src/core/branch/ComboBox/index.spec.tsx src/core/branch/DataTable/index.spec.tsx src/core/branch/DatePicker/index.spec.tsx src/core/branch/DateRangePicker/index.spec.tsx src/core/branch/Dialog/index.spec.tsx src/core/branch/Disclosure/index.spec.tsx src/core/branch/Drawer/index.spec.tsx src/core/branch/DropdownMenu/index.spec.tsx src/core/branch/ListBox/index.spec.tsx src/core/branch/Popover/index.spec.tsx src/core/branch/Select/index.spec.tsx src/core/branch/Toast/index.spec.tsx src/core/composite/Alert/index.spec.tsx src/core/composite/AvatarGroup/index.spec.tsx src/core/composite/Breadcrumbs/index.spec.tsx src/core/composite/ButtonGroup/index.spec.tsx src/core/composite/CheckboxGroup/index.spec.tsx src/core/composite/DescriptionList/index.spec.tsx src/core/composite/Fieldset/index.spec.tsx src/core/composite/Form/index.spec.tsx src/core/composite/Pagination/index.spec.tsx src/core/composite/RadioGroup/index.spec.tsx src/core/composite/SegmentedControl/index.spec.tsx src/core/composite/Stepper/index.spec.tsx src/core/composite/TagGroup/index.spec.tsx src/core/composite/Timeline/index.spec.tsx src/core/composition/BottomNav/index.spec.tsx src/core/composition/Footer/index.spec.tsx src/core/composition/TopBar/index.spec.tsx src/core/primitive/Avatar/index.spec.tsx src/core/primitive/Checkbox/index.spec.tsx src/core/primitive/CloseButton/index.spec.tsx src/core/primitive/DateField/index.spec.tsx src/core/primitive/Field/index.spec.tsx src/core/primitive/FileDropzone/index.spec.tsx src/core/primitive/Image/index.spec.tsx src/core/primitive/Kbd/index.spec.tsx src/core/primitive/Link/index.spec.tsx src/core/primitive/Meter/index.spec.tsx src/core/primitive/NumberField/index.spec.tsx src/core/primitive/ProgressCircle/index.spec.tsx src/core/primitive/Rating/index.spec.tsx src/core/primitive/SearchField/index.spec.tsx src/core/primitive/Skeleton/index.spec.tsx src/core/primitive/Slider/index.spec.tsx src/core/primitive/Spinner/index.spec.tsx src/core/primitive/Switch/index.spec.tsx src/core/primitive/Textarea/index.spec.tsx src/core/primitive/TimeField/index.spec.tsx src/offset-pop/components-forms.spec.ts src/offset-pop/components-navigation.spec.ts src/offset-pop/components-overlays.spec.ts src/core/branch/SurfaceCard/index.spec.tsx src/core/branch/SurfaceListCard/index.spec.tsx src/core/branch/SurfaceAccordionCard/index.spec.tsx src/core/branch/Rail/index.spec.tsx src/core/branch/MarkdownArticle/index.spec.tsx src/core/composite/VerticalScrollRegion/index.spec.tsx src/core/primitive/SectionHeader/index.spec.tsx src/core/primitive/PinnedActionBar/index.spec.tsx src/core/branch/SurfaceCard/ink.spec.ts src/core/data-component.spec.tsx src/core/OtpInput.spec.tsx src/core/field-variant.spec.tsx src/stories/catalog.spec.ts",
62
+ "test": "npm run build && node --test src/common/index.spec.mjs src/core/index.spec.mjs src/offset-pop/index.spec.mjs src/package-boundary.spec.mjs && vitest run --config vitest.config.ts src/shipped-geometry.spec.ts src/core/shipped-claims.spec.tsx src/common/conformance.spec.ts src/common/styles.spec.ts src/core/family.spec.tsx src/core/styles.spec.ts src/core/surface-card-family.spec.tsx src/core/scrollable-surfaces.spec.tsx src/core/primitive/Badge/index.spec.tsx src/core/primitive/Button/index.spec.tsx src/core/primitive/Divider/index.spec.tsx src/core/primitive/Region/index.spec.tsx src/core/primitive/NavLandmark/index.spec.tsx src/core/primitive/List/index.spec.tsx src/core/primitive/Heading/index.spec.tsx src/core/primitive/Icon/index.spec.tsx src/core/primitive/IconButton/index.spec.tsx src/core/primitive/IconTile/index.spec.tsx src/core/primitive/Input/index.spec.tsx src/core/primitive/Input/copyable.spec.tsx src/core/composite/ChatBubble/index.spec.tsx src/core/composite/FillViewport/index.spec.tsx src/core/primitive/IconButton/badge.spec.tsx src/core/primitive/Textarea/mentions.spec.tsx src/core/v090.spec.tsx src/core/primitive/PressableField/index.spec.tsx src/core/primitive/Progress/index.spec.tsx src/core/primitive/Text/index.spec.tsx src/core/primitive/TextAction/index.spec.tsx src/core/primitive/Label/index.spec.tsx src/core/primitive/RankArtwork/index.spec.tsx src/core/composite/EmptyNotice/index.spec.tsx src/core/branch/Tabs/index.spec.tsx src/core/branch/Subnav/index.spec.tsx src/core/branch/Subnav/styles.spec.ts src/core/branch/Tooltip/index.spec.tsx src/core/composition/NavigationFeatureNav/index.spec.tsx src/core/composition/NavigationFeatureNav/styles.spec.ts src/core/composition/Sidebar/index.spec.tsx src/core/composition/Sidebar/styles.spec.ts src/core/composition/collapse.spec.tsx src/core/composition/WorkspaceShell/index.spec.tsx src/core/composition/ChatWorkspace/index.spec.tsx src/heritage/index.spec.tsx src/heritage/styles.spec.ts src/offset-pop/index.spec.tsx src/offset-pop/render.spec.tsx src/offset-pop/styles.spec.ts src/offset-pop/family.spec.tsx src/offset-pop/shipped-claims.spec.tsx src/offset-pop/surface-card-family.spec.tsx src/offset-pop/scrollable-surfaces.spec.tsx src/offset-pop/conformance.spec.ts src/core/branch/Accordion/index.spec.tsx src/core/branch/AlertDialog/index.spec.tsx src/core/branch/Calendar/index.spec.tsx src/core/branch/ComboBox/index.spec.tsx src/core/branch/DataTable/index.spec.tsx src/core/branch/DatePicker/index.spec.tsx src/core/branch/DateRangePicker/index.spec.tsx src/core/branch/Dialog/index.spec.tsx src/core/branch/Disclosure/index.spec.tsx src/core/branch/Drawer/index.spec.tsx src/core/branch/DropdownMenu/index.spec.tsx src/core/branch/ListBox/index.spec.tsx src/core/branch/Popover/index.spec.tsx src/core/branch/Select/index.spec.tsx src/core/branch/Toast/index.spec.tsx src/core/composite/Alert/index.spec.tsx src/core/composite/AvatarGroup/index.spec.tsx src/core/composite/Breadcrumbs/index.spec.tsx src/core/composite/ButtonGroup/index.spec.tsx src/core/composite/CheckboxGroup/index.spec.tsx src/core/composite/DescriptionList/index.spec.tsx src/core/composite/Fieldset/index.spec.tsx src/core/composite/Form/index.spec.tsx src/core/composite/Pagination/index.spec.tsx src/core/composite/RadioGroup/index.spec.tsx src/core/composite/SegmentedControl/index.spec.tsx src/core/composite/Stepper/index.spec.tsx src/core/composite/TagGroup/index.spec.tsx src/core/composite/Timeline/index.spec.tsx src/core/composition/BottomNav/index.spec.tsx src/core/composition/Footer/index.spec.tsx src/core/composition/TopBar/index.spec.tsx src/core/primitive/Avatar/index.spec.tsx src/core/primitive/Checkbox/index.spec.tsx src/core/primitive/CloseButton/index.spec.tsx src/core/primitive/DateField/index.spec.tsx src/core/primitive/Field/index.spec.tsx src/core/primitive/FileDropzone/index.spec.tsx src/core/primitive/Image/index.spec.tsx src/core/primitive/Kbd/index.spec.tsx src/core/primitive/Link/index.spec.tsx src/core/primitive/Meter/index.spec.tsx src/core/primitive/NumberField/index.spec.tsx src/core/primitive/ProgressCircle/index.spec.tsx src/core/primitive/Rating/index.spec.tsx src/core/primitive/SearchField/index.spec.tsx src/core/primitive/Skeleton/index.spec.tsx src/core/primitive/Slider/index.spec.tsx src/core/primitive/Spinner/index.spec.tsx src/core/primitive/Switch/index.spec.tsx src/core/primitive/Textarea/index.spec.tsx src/core/primitive/TimeField/index.spec.tsx src/offset-pop/components-forms.spec.ts src/offset-pop/components-navigation.spec.ts src/offset-pop/components-overlays.spec.ts src/core/branch/SurfaceCard/index.spec.tsx src/core/branch/SurfaceListCard/index.spec.tsx src/core/branch/SurfaceAccordionCard/index.spec.tsx src/core/branch/Rail/index.spec.tsx src/core/branch/MarkdownArticle/index.spec.tsx src/core/composite/VerticalScrollRegion/index.spec.tsx src/core/primitive/SectionHeader/index.spec.tsx src/core/primitive/PinnedActionBar/index.spec.tsx src/core/branch/SurfaceCard/ink.spec.ts src/core/data-component.spec.tsx src/core/OtpInput.spec.tsx src/core/field-variant.spec.tsx src/stories/catalog.spec.ts",
63
63
  "test:a11y": "vitest run --config vitest.a11y.config.ts",
64
64
  "pack:check": "npm run build && node --test src/package-boundary.spec.mjs",
65
65
  "prepack": "npm run typecheck && npm test",