@chai-ui/react 0.1.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 (66) hide show
  1. package/DESIGN.md +207 -0
  2. package/LICENSE +21 -0
  3. package/README.md +265 -0
  4. package/dist/ChaiProvider.d.ts +49 -0
  5. package/dist/ChaiProvider.d.ts.map +1 -0
  6. package/dist/ChaiProvider.js +54 -0
  7. package/dist/ChaiProvider.js.map +1 -0
  8. package/dist/Composer.d.ts +169 -0
  9. package/dist/Composer.d.ts.map +1 -0
  10. package/dist/Composer.js +389 -0
  11. package/dist/Composer.js.map +1 -0
  12. package/dist/MediaAnalyzer.d.ts +102 -0
  13. package/dist/MediaAnalyzer.d.ts.map +1 -0
  14. package/dist/MediaAnalyzer.js +250 -0
  15. package/dist/MediaAnalyzer.js.map +1 -0
  16. package/dist/ResultCard.d.ts +55 -0
  17. package/dist/ResultCard.d.ts.map +1 -0
  18. package/dist/ResultCard.js +409 -0
  19. package/dist/ResultCard.js.map +1 -0
  20. package/dist/index.d.ts +10 -0
  21. package/dist/index.d.ts.map +1 -0
  22. package/dist/index.js +11 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/primitives/Pagination.d.ts +19 -0
  25. package/dist/primitives/Pagination.d.ts.map +1 -0
  26. package/dist/primitives/Pagination.js +13 -0
  27. package/dist/primitives/Pagination.js.map +1 -0
  28. package/dist/primitives/SearchMenu.d.ts +69 -0
  29. package/dist/primitives/SearchMenu.d.ts.map +1 -0
  30. package/dist/primitives/SearchMenu.js +88 -0
  31. package/dist/primitives/SearchMenu.js.map +1 -0
  32. package/dist/primitives/Toggle.d.ts +9 -0
  33. package/dist/primitives/Toggle.d.ts.map +1 -0
  34. package/dist/primitives/Toggle.js +28 -0
  35. package/dist/primitives/Toggle.js.map +1 -0
  36. package/dist/primitives/index.d.ts +4 -0
  37. package/dist/primitives/index.d.ts.map +1 -0
  38. package/dist/primitives/index.js +4 -0
  39. package/dist/primitives/index.js.map +1 -0
  40. package/dist/style.css +1860 -0
  41. package/dist/use-latest.d.ts +7 -0
  42. package/dist/use-latest.d.ts.map +1 -0
  43. package/dist/use-latest.js +17 -0
  44. package/dist/use-latest.js.map +1 -0
  45. package/dist/useComposer.d.ts +75 -0
  46. package/dist/useComposer.d.ts.map +1 -0
  47. package/dist/useComposer.js +191 -0
  48. package/dist/useComposer.js.map +1 -0
  49. package/dist/useMediaAnalyzer.d.ts +37 -0
  50. package/dist/useMediaAnalyzer.d.ts.map +1 -0
  51. package/dist/useMediaAnalyzer.js +114 -0
  52. package/dist/useMediaAnalyzer.js.map +1 -0
  53. package/package.json +88 -0
  54. package/src/ChaiProvider.tsx +88 -0
  55. package/src/Composer.tsx +961 -0
  56. package/src/MediaAnalyzer.tsx +527 -0
  57. package/src/ResultCard.tsx +980 -0
  58. package/src/index.ts +36 -0
  59. package/src/primitives/Pagination.tsx +41 -0
  60. package/src/primitives/SearchMenu.tsx +284 -0
  61. package/src/primitives/Toggle.tsx +43 -0
  62. package/src/primitives/index.ts +3 -0
  63. package/src/style.css +1860 -0
  64. package/src/use-latest.ts +18 -0
  65. package/src/useComposer.ts +289 -0
  66. package/src/useMediaAnalyzer.ts +157 -0
@@ -0,0 +1,88 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { createComponent } from "@lit/react";
3
+ import * as React from "react";
4
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
5
+ import { MdOutlinedTextField } from "@material/web/textfield/outlined-text-field.js";
6
+ import { MdCheckbox } from "@material/web/checkbox/checkbox.js";
7
+ import { Toggle } from "./Toggle.js";
8
+ const MdOutlinedTextFieldElement = createComponent({
9
+ react: React,
10
+ tagName: "md-outlined-text-field",
11
+ elementClass: MdOutlinedTextField,
12
+ events: { onInput: "input" },
13
+ });
14
+ /**
15
+ * MD3's `<md-checkbox>`, shown as a leading checkbox on each row in
16
+ * multi-select mode — MD3's own pattern for picking several items from a
17
+ * list. Display only: the row button stays the one interactive, selectable
18
+ * element (a focusable checkbox inside a button would be two controls in
19
+ * one place), so the checkbox is `aria-hidden`, out of the tab order and
20
+ * ignores pointer events.
21
+ */
22
+ const MdCheckboxElement = createComponent({
23
+ react: React,
24
+ tagName: "md-checkbox",
25
+ elementClass: MdCheckbox,
26
+ });
27
+ /** MD3 "check" symbol (Figma) — marking the selected row in any option list below. */
28
+ function CheckIcon() {
29
+ return (_jsx("svg", { viewBox: "0 0 18 18", fill: "none", "aria-hidden": "true", children: _jsx("path", { d: "M7.1625 13.5L2.8875 9.225L3.95625 8.15625L7.1625 11.3625L14.0438 4.48125L15.1125 5.55L7.1625 13.5Z", fill: "currentColor" }) }));
30
+ }
31
+ /**
32
+ * The searchable menu-button pattern behind every Model/option menu
33
+ * (reference: Media Analyze - Model Menu) — a trigger styled as MD3's outlined button, opening an anchored panel with
34
+ * a search field (a real `<md-outlined-text-field>`, for its floating-label
35
+ * + icon-slot behavior) over a plain option list. Hand-rolled rather than
36
+ * `<md-menu>`: this needs to live inline as a simple absolutely-positioned
37
+ * panel under the trigger, not `<md-menu>`'s own corner-anchored popover
38
+ * positioning model — same reasoning SegmentedButton documents for why it
39
+ * isn't a `@material/web` custom element either.
40
+ */
41
+ export function SearchMenu({ options, sections, toggleHeader, value, multiple = false, triggerLabel, menuLabel, onSelect, disabled, searchable = true, triggerVariant = "outlined", panelWidth = 280, }) {
42
+ const [open, setOpen] = useState(false);
43
+ const [search, setSearch] = useState("");
44
+ // Closing also clears the search, so the menu reopens on the full list.
45
+ const close = useCallback(() => {
46
+ setOpen(false);
47
+ setSearch("");
48
+ }, []);
49
+ const rootRef = useRef(null);
50
+ useEffect(() => {
51
+ if (!open)
52
+ return;
53
+ function handlePointerDown(e) {
54
+ if (!rootRef.current?.contains(e.target))
55
+ close();
56
+ }
57
+ function handleKeyDown(e) {
58
+ if (e.key === "Escape")
59
+ close();
60
+ }
61
+ document.addEventListener("pointerdown", handlePointerDown);
62
+ document.addEventListener("keydown", handleKeyDown);
63
+ return () => {
64
+ document.removeEventListener("pointerdown", handlePointerDown);
65
+ document.removeEventListener("keydown", handleKeyDown);
66
+ };
67
+ }, [open, close]);
68
+ const groups = useMemo(() => {
69
+ const q = search.trim().toLowerCase();
70
+ const raw = sections ?? [{ label: "", options: options ?? [] }];
71
+ if (!q)
72
+ return raw;
73
+ return raw
74
+ .map((g) => ({
75
+ ...g,
76
+ options: g.options.filter((o) => o.label.toLowerCase().includes(q) || o.rowLabel?.toLowerCase().includes(q)),
77
+ }))
78
+ .filter((g) => g.options.length > 0);
79
+ }, [options, sections, search]);
80
+ const hasAnyOption = groups.some((g) => g.options.length > 0);
81
+ const isSelected = (id) => (Array.isArray(value) ? value.includes(id) : id === value);
82
+ return (_jsxs("div", { className: "chai-search-menu", ref: rootRef, children: [_jsxs("button", { type: "button", className: `${triggerVariant === "outlined" ? "chai-btn chai-btn--outlined" : "chai-search-menu__trigger--text"} chai-search-menu__trigger${open ? " chai-search-menu__trigger--open" : ""}`, disabled: disabled, "aria-expanded": open, onClick: () => (open ? close() : setOpen(true)), children: [_jsx("span", { className: "chai-search-menu__trigger-label", title: triggerLabel, children: triggerLabel }), _jsx("svg", { className: `chai-search-menu__chevron${open ? " chai-search-menu__chevron--open" : ""}`, viewBox: "0 -960 960 960", "aria-hidden": "true", children: _jsx("path", { d: "M480-344 240-584l43-43 197 197 197-197 43 43-240 240Z", fill: "currentColor" }) })] }), open && (_jsxs("div", { className: "chai-search-menu__panel", role: "group", "aria-label": menuLabel, style: { width: panelWidth }, children: [toggleHeader && (_jsxs("div", { className: "chai-search-menu__toggle-header", children: [_jsx("span", { className: "chai-search-menu__toggle-header-label", children: menuLabel }), _jsxs("span", { className: "chai-search-menu__toggle-header-row", children: [_jsx("span", { className: "chai-search-menu__toggle-header-text", children: toggleHeader.label }), _jsx(Toggle, { value: toggleHeader.value, onChange: toggleHeader.onChange, ariaLabel: toggleHeader.label })] })] })), searchable && (_jsxs(MdOutlinedTextFieldElement, { className: "chai-search-menu__search", label: menuLabel, placeholder: "Input", value: search, onInput: (e) => setSearch(e.target.value), children: [_jsx("span", { slot: "leading-icon", className: "chai-search-menu__search-icon", children: _jsxs("svg", { viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: [_jsx("circle", { cx: "11", cy: "11", r: "6.5", stroke: "currentColor", strokeWidth: "1.5" }), _jsx("path", { d: "m20 20-3.6-3.6", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" })] }) }), search && (_jsx("button", { type: "button", slot: "trailing-icon", className: "chai-search-menu__clear", "aria-label": "Clear search", onClick: () => setSearch(""), children: _jsxs("svg", { viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: [_jsx("circle", { cx: "12", cy: "12", r: "9", stroke: "currentColor", strokeWidth: "1.5" }), _jsx("path", { d: "m9 9 6 6m0-6-6 6", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" })] }) }))] })), _jsxs("ul", { className: "chai-search-menu__list", children: [groups.map((group, i) => (_jsxs("li", { children: [group.label && _jsx("p", { className: "chai-search-menu__section-label", children: group.label }), _jsx("ul", { className: "chai-search-menu__section-list", "aria-label": group.label || undefined, children: group.options.map((o) => (_jsx("li", { children: _jsxs("button", { type: "button", "aria-pressed": isSelected(o.id), disabled: toggleHeader?.value, className: `chai-search-menu__option${!multiple && isSelected(o.id) ? " chai-search-menu__option--selected" : ""}`, onClick: () => {
83
+ onSelect(o);
84
+ if (!multiple)
85
+ close();
86
+ }, children: [multiple && (_jsx(MdCheckboxElement, { className: "chai-search-menu__checkbox", checked: isSelected(o.id), disabled: toggleHeader?.value, tabIndex: -1, "aria-hidden": "true" })), _jsx("span", { className: "chai-search-menu__option-label", children: o.rowLabel ?? o.label }), !multiple && isSelected(o.id) && _jsx(CheckIcon, {})] }) }, o.id))) }), i < groups.length - 1 && _jsx("hr", { className: "chai-search-menu__divider", role: "separator" })] }, group.label || i))), !hasAnyOption && _jsx("li", { className: "chai-search-menu__empty", children: "No matches." })] })] }))] }));
87
+ }
88
+ //# sourceMappingURL=SearchMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchMenu.js","sourceRoot":"","sources":["../../src/primitives/SearchMenu.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import * as React from "react";
2
+ import type { PrimitiveProps } from "@chai-ui/core";
3
+ export interface ToggleProps extends PrimitiveProps<boolean> {
4
+ /** The switch's accessible name, e.g. "Auto-select model". Required unless something else labels it. */
5
+ ariaLabel?: string;
6
+ }
7
+ /** MD3 adapter (§12.2, Adapter) for the CHAI primitive contract — wraps `<md-switch>`. `chai-switch` is the hook `style.css` uses to color every switch from Chai tokens — see that rule's own comment. */
8
+ export declare function Toggle({ value, onChange, disabled, ariaLabel }: ToggleProps): React.JSX.Element;
9
+ //# sourceMappingURL=Toggle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toggle.d.ts","sourceRoot":"","sources":["../../src/primitives/Toggle.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAsBpD,MAAM,WAAW,WAAY,SAAQ,cAAc,CAAC,OAAO,CAAC;IAC1D,wGAAwG;IACxG,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,2MAA2M;AAC3M,wBAAgB,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,WAAW,qBAW3E"}
@@ -0,0 +1,28 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createComponent } from "@lit/react";
3
+ import * as React from "react";
4
+ import { MdSwitch } from "@material/web/switch/switch.js";
5
+ /**
6
+ * `<md-switch>` is a Lit web component: its `selected` state is a JS
7
+ * property (not an HTML attribute) and it reports changes via a native
8
+ * `change` event, not a React synthetic one. Plain JSX on a custom-element
9
+ * tag can't bind either correctly — React would try to set `selected` as a
10
+ * string attribute and would never see the DOM `change` event as an
11
+ * `onChange` prop. `@lit/react`'s `createComponent` does that
12
+ * property/attribute distinction and event-listener wiring once, here, so
13
+ * this stays a plain function component with no local state, refs, or
14
+ * effects of its own.
15
+ */
16
+ const MdSwitchElement = createComponent({
17
+ react: React,
18
+ tagName: "md-switch",
19
+ elementClass: MdSwitch,
20
+ events: {
21
+ onChange: "change",
22
+ },
23
+ });
24
+ /** MD3 adapter (§12.2, Adapter) for the CHAI primitive contract — wraps `<md-switch>`. `chai-switch` is the hook `style.css` uses to color every switch from Chai tokens — see that rule's own comment. */
25
+ export function Toggle({ value, onChange, disabled, ariaLabel }) {
26
+ return (_jsx(MdSwitchElement, { className: "chai-switch", "aria-label": ariaLabel, selected: value, disabled: disabled, showOnlySelectedIcon: true, onChange: (e) => onChange(e.target.selected) }));
27
+ }
28
+ //# sourceMappingURL=Toggle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toggle.js","sourceRoot":"","sources":["../../src/primitives/Toggle.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAG1D;;;;;;;;;;GAUG;AACH,MAAM,eAAe,GAAG,eAAe,CAAC;IACtC,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,WAAW;IACpB,YAAY,EAAE,QAAQ;IACtB,MAAM,EAAE;QACN,QAAQ,EAAE,QAAQ;KACnB;CACF,CAAC,CAAC;AAOH,2MAA2M;AAC3M,MAAM,UAAU,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAe;IAC1E,OAAO,CACL,KAAC,eAAe,IACd,SAAS,EAAC,aAAa,gBACX,SAAS,EACrB,QAAQ,EAAE,KAAK,EACf,QAAQ,EAAE,QAAQ,EAClB,oBAAoB,QACpB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAE,CAAC,CAAC,MAAmB,CAAC,QAAQ,CAAC,GAC1D,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./Toggle.js";
2
+ export * from "./SearchMenu.js";
3
+ export * from "./Pagination.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/primitives/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./Toggle.js";
2
+ export * from "./SearchMenu.js";
3
+ export * from "./Pagination.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/primitives/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC"}