@exponential_app/eui-react 0.2.1 → 0.4.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.
@@ -0,0 +1,24 @@
1
+ import { type ComponentProps } from "react";
2
+ export { CAROUSEL_GEOMETRY, carouselCounterText } from "@exponential_app/eui/web/primitives";
3
+ /** EXP-1495: the Carousel's `counter` part as a primitive: the `i / n` pill
4
+ * over the slide's top-start corner (its parent is `relative`), hidden from
5
+ * AT, never intercepting a press. `page` is 0-based. */
6
+ export declare function CarouselCounter({ page, total, className, ...props }: Omit<ComponentProps<`span`>, `children`> & {
7
+ page: number;
8
+ total: number;
9
+ }): import("react/jsx-runtime").JSX.Element;
10
+ export type CarouselThumbnailsProps = Omit<ComponentProps<`div`>, `children` | `onChange`> & {
11
+ /** The page count: one thumbnail per page. */
12
+ count: number;
13
+ /** The pictures by page; past `count` ignored, a missing one = the empty square. */
14
+ urls: readonly (string | null | undefined)[];
15
+ /** The current page (0-based). */
16
+ page: number;
17
+ onPageChange?: (page: number) => void;
18
+ /** Each thumbnail's accessible name (default `Page i of n`). */
19
+ pageLabel?: (page: number, total: number) => string;
20
+ };
21
+ /** EXP-1495: the Carousel's `thumbnails` strip as a primitive: one button per
22
+ * page, the current one ringed (`data-current`, `aria-current`) and
23
+ * scrolled into view inside the strip. */
24
+ export declare function CarouselThumbnails({ count, urls, page, onPageChange, pageLabel, className, ...props }: CarouselThumbnailsProps): import("react/jsx-runtime").JSX.Element;
@@ -7,6 +7,7 @@ export * from "./breadcrumb.js";
7
7
  export * from "./button.js";
8
8
  export * from "./calendar.js";
9
9
  export * from "./card.js";
10
+ export * from "./carousel.js";
10
11
  export * from "./checkbox.js";
11
12
  export * from "./choice-tiles.js";
12
13
  export * from "./cn.js";
@@ -28,6 +29,8 @@ export * from "./kbd.js";
28
29
  export * from "./label.js";
29
30
  export * from "./menu-surface.js";
30
31
  export * from "./meter.js";
32
+ export * from "./mosaic.js";
33
+ export * from "./outline.js";
31
34
  export * from "./popover.js";
32
35
  export * from "./progress.js";
33
36
  export * from "./progress-ring.js";
@@ -50,3 +53,4 @@ export * from "./use-media-query.js";
50
53
  export * from "./use-mobile.js";
51
54
  export * from "./use-sheet-drag.js";
52
55
  export * from "./voice-wave.js";
56
+ export * from "./zoomable-image.js";
@@ -0,0 +1,18 @@
1
+ import type { ComponentProps } from "react";
2
+ export { MOSAIC_GEOMETRY, mosaicTiles } from "@exponential_app/eui/web/primitives";
3
+ export type { MosaicTile, MosaicTileSize } from "@exponential_app/eui/web/primitives";
4
+ export interface MosaicPicture {
5
+ src: string;
6
+ alt?: string;
7
+ }
8
+ export type MosaicProps = Omit<ComponentProps<`div`>, `onSelect` | `children`> & {
9
+ pictures: readonly MosaicPicture[];
10
+ /** The group's accessible name. */
11
+ label?: string;
12
+ /** A tile press: its picture index (0, 1 or 2; the host opens its lightbox). */
13
+ onSelect?: (index: number) => void;
14
+ };
15
+ /** EXP-1495: the catalog's `Mosaic` macro as a primitive: the WIDE picture
16
+ * group (`mosaicTiles`: 1 large, 2 halves, 3+ = the large lead + two small
17
+ * stacked, the last carrying "+N"). */
18
+ export declare function Mosaic({ pictures, label, onSelect, className, ...props }: MosaicProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,16 @@
1
+ import type { ComponentProps } from "react";
2
+ import { type OutlineItem } from "@exponential_app/eui/web/primitives";
3
+ export { OUTLINE_GEOMETRY, outlineCountText } from "@exponential_app/eui/web/primitives";
4
+ export type { OutlineItem } from "@exponential_app/eui/web/primitives";
5
+ export type OutlineProps = Omit<ComponentProps<`nav`>, `onSelect` | `children`> & {
6
+ items: readonly OutlineItem[];
7
+ /** The active row's id (the host's scroll-spy binds it); none = no active row. */
8
+ value?: string | null;
9
+ /** The uppercase caption over the rows (and the nav's name). */
10
+ caption?: string;
11
+ onSelect?: (id: string) => void;
12
+ };
13
+ /** EXP-1495: the catalog's `Outline` macro as a primitive: an anchor list,
14
+ * ONE active row (accent + a leading foreground bar, `aria-current`), a
15
+ * muted `· n` count. A press selects the row; scroll-spy stays in the host. */
16
+ export declare function Outline({ items, value, caption, onSelect, className, ...props }: OutlineProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,69 @@
1
+ import { type ComponentProps, type SyntheticEvent } from "react";
2
+ import { type ZoomInitial, type ZoomMenuItem, type ZoomSize } from "@exponential_app/eui";
3
+ import { type ZoomControls, type ZoomController, type ZoomMath, type ZoomPillState } from "@exponential_app/eui/web/primitives";
4
+ export type { ZoomControls, ZoomPillState } from "@exponential_app/eui/web/primitives";
5
+ export type { ZoomInitial } from "@exponential_app/eui";
6
+ /** The core's zoom functions, injected into the shared controller. */
7
+ export declare const ZOOM_MATH: ZoomMath;
8
+ export interface ZoomableImageOptions {
9
+ /** The picture as drawn (the native passes the host's media url). */
10
+ src: string | undefined;
11
+ naturalWidth?: number;
12
+ naturalHeight?: number;
13
+ initial: ZoomInitial;
14
+ maxScale?: number;
15
+ /** The bound / controlled scale; undefined = the rest view. */
16
+ scale?: number;
17
+ controls: ZoomControls;
18
+ /** The settle spring's CSS transition; null = snap. */
19
+ transition: string | null;
20
+ onZoom?: (scale: number, atFit: boolean) => void;
21
+ onTap?: () => void;
22
+ }
23
+ /** EXP-1586: the React binding of the shared zoom controller, used by the
24
+ * `ZoomableImage` primitive and the catalog native alike. */
25
+ export declare function useZoomableImage(o: ZoomableImageOptions): {
26
+ rootRef: import("react").RefObject<HTMLDivElement | null>;
27
+ imageRef: import("react").RefObject<HTMLImageElement | null>;
28
+ pillRef: import("react").RefObject<HTMLDivElement | null>;
29
+ controller: import("react").RefObject<ZoomController | null>;
30
+ natural: ZoomSize | null;
31
+ pill: ZoomPillState;
32
+ pillVisible: boolean;
33
+ onImageLoad: (e: SyntheticEvent<HTMLImageElement>) => void;
34
+ menuItems: (fitLabel: string) => ZoomMenuItem[];
35
+ };
36
+ /** The pill's labels (catalog/strings.json; override per host). */
37
+ export interface ZoomableImageStrings {
38
+ zoomIn: string;
39
+ zoomOut: string;
40
+ zoomToFit: string;
41
+ zoomLevel: string;
42
+ zoomFit: string;
43
+ }
44
+ export declare const ZOOMABLE_IMAGE_STRINGS: ZoomableImageStrings;
45
+ export type ZoomableImageProps = Omit<ComponentProps<`div`>, `children` | `onTap`> & {
46
+ src: string;
47
+ alt: string;
48
+ naturalWidth?: number;
49
+ naturalHeight?: number;
50
+ /** auto = fitWidth for a tall picture, else fit. */
51
+ initial?: ZoomInitial;
52
+ maxScale?: number;
53
+ controls?: ZoomControls;
54
+ /** 1 = 100%; undefined = the rest view. */
55
+ scale?: number;
56
+ onScaleChange?: (scale: number) => void;
57
+ /** A settled zoom change. */
58
+ onZoom?: (zoom: {
59
+ scale: number;
60
+ atFit: boolean;
61
+ }) => void;
62
+ /** A single tap / click at rest. */
63
+ onTap?: () => void;
64
+ strings?: Partial<ZoomableImageStrings>;
65
+ };
66
+ /** EXP-1586: the Exponential UI `ZoomableImage` native as a primitive: a
67
+ * picture that zooms (pinch, ⌘/ctrl-wheel, double-click, + − 0 1) and pans
68
+ * (drag, scroll) inside its box, with THE zoom pill. */
69
+ export declare function ZoomableImage({ src, alt, naturalWidth, naturalHeight, initial, maxScale, controls, scale, onScaleChange, onZoom, onTap, strings, className, style, ...props }: ZoomableImageProps): import("react/jsx-runtime").JSX.Element;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@exponential_app/eui-react",
3
- "version": "0.2.1",
3
+ "version": "0.4.0",
4
4
  "description": "Exponential UI for React: the reference renderer of the core A2UI catalog on Radix with real CSS, runtime themes, extensions, and the shadcn primitive set the Exponential app shares.",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://exponential.at/ui/",
@@ -42,7 +42,7 @@
42
42
  "*.css"
43
43
  ],
44
44
  "dependencies": {
45
- "@exponential_app/eui": "^0.2.1",
45
+ "@exponential_app/eui": "^0.4.0",
46
46
  "class-variance-authority": "^0.7.1",
47
47
  "clsx": "^2.1.1",
48
48
  "lucide-react": "^0.544.0",
@@ -1,126 +0,0 @@
1
- // packages/exponential-ui-react/src/primitives/choice-tiles.tsx
2
- import * as React from "react";
3
- import { ImageIcon } from "lucide-react";
4
- import { CHOICE_TILES_CLASSES, choiceColumns, choiceToggle, choiceValues } from "@exponential_app/eui/web/primitives";
5
-
6
- // packages/exponential-ui-react/src/primitives/cn.ts
7
- import { cn as cn2, getInitials as getInitials2 } from "@exponential_app/eui/web/primitives";
8
-
9
- // packages/exponential-ui-react/src/primitives/choice-tiles.tsx
10
- import { choiceColumns as choiceColumns2, choiceToggle as choiceToggle2, choiceValues as choiceValues2 } from "@exponential_app/eui/web/primitives";
11
- import { jsx, jsxs } from "react/jsx-runtime";
12
- function ChoiceTilesFrame2({ options, picked, multiple, columns, disabled = false, invalid = false, dir = `ltr`, onPick, rootProps, tileProps, pictureProps, labelProps, descriptionProps, renderPicture, after, rootRef }) {
13
- const buttons = React.useRef([]);
14
- const order = React.useMemo(() => options.map((o) => o.value), [options]);
15
- const pictures = options.some((o) => Boolean(o.image));
16
- const enabled = (i) => !disabled && !options[i]?.disabled;
17
- const firstPicked = options.findIndex((o, i) => picked.includes(o.value) && enabled(i));
18
- const tabStop = firstPicked >= 0 ? firstPicked : options.findIndex((_, i) => enabled(i));
19
- const pick = (i) => {
20
- const value = options[i].value;
21
- onPick(choiceToggle(picked, value, multiple, order), value);
22
- };
23
- const move = (from, delta) => {
24
- const n = options.length;
25
- for (let step = 1;step <= n; step++) {
26
- const i = ((from + delta * step) % n + n) % n;
27
- if (enabled(i))
28
- return i;
29
- }
30
- return -1;
31
- };
32
- const onKeyDown = (i) => (e) => {
33
- const forward = dir === `rtl` ? `ArrowLeft` : `ArrowRight`;
34
- const back = dir === `rtl` ? `ArrowRight` : `ArrowLeft`;
35
- const delta = e.key === forward || e.key === `ArrowDown` ? 1 : e.key === back || e.key === `ArrowUp` ? -1 : 0;
36
- if (delta === 0)
37
- return;
38
- e.preventDefault();
39
- const next = move(i, delta);
40
- if (next < 0)
41
- return;
42
- buttons.current[next]?.focus();
43
- if (!multiple && !picked.includes(options[next].value))
44
- pick(next);
45
- };
46
- return /* @__PURE__ */ jsxs("div", {
47
- ref: rootRef,
48
- role: multiple ? `group` : `radiogroup`,
49
- "aria-invalid": invalid || undefined,
50
- "aria-disabled": disabled || undefined,
51
- dir,
52
- ...rootProps,
53
- style: { display: `grid`, gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))`, ...rootProps?.style ?? {} },
54
- children: [
55
- options.map((o, i) => {
56
- const state = { index: i, selected: picked.includes(o.value), disabled: !enabled(i) };
57
- const description = o.description ? String(o.description) : ``;
58
- return /* @__PURE__ */ jsxs("button", {
59
- ref: (el) => {
60
- buttons.current[i] = el;
61
- },
62
- type: "button",
63
- role: multiple ? `checkbox` : `radio`,
64
- "aria-checked": state.selected,
65
- "aria-label": o.label,
66
- disabled: state.disabled,
67
- tabIndex: i === tabStop ? 0 : -1,
68
- "data-state": state.selected ? `checked` : `unchecked`,
69
- "data-value": o.value,
70
- onClick: () => pick(i),
71
- onKeyDown: onKeyDown(i),
72
- ...tileProps(state),
73
- children: [
74
- pictures ? /* @__PURE__ */ jsx("span", {
75
- "aria-hidden": "true",
76
- ...pictureProps(state),
77
- children: renderPicture(o.image ? String(o.image) : null, state)
78
- }) : null,
79
- /* @__PURE__ */ jsx("span", {
80
- ...labelProps(state),
81
- children: o.label
82
- }),
83
- description ? /* @__PURE__ */ jsx("span", {
84
- ...descriptionProps(state),
85
- children: description
86
- }) : null
87
- ]
88
- }, `${o.value}-${i}`);
89
- }),
90
- after
91
- ]
92
- });
93
- }
94
- function ChoiceTiles2({ options, value, multiple = false, columns, disabled = false, invalid = false, onChange, renderImage, className, dir, ...rest }) {
95
- const picked = choiceValues(value, multiple);
96
- const image = (src, label) => src ? renderImage ? renderImage(src, label) : /* @__PURE__ */ jsx("img", {
97
- src,
98
- alt: label,
99
- loading: "lazy",
100
- decoding: "async",
101
- className: CHOICE_TILES_CLASSES.image
102
- }) : /* @__PURE__ */ jsx(ImageIcon, {
103
- className: CHOICE_TILES_CLASSES.placeholder
104
- });
105
- return /* @__PURE__ */ jsx(ChoiceTilesFrame2, {
106
- options,
107
- picked,
108
- multiple,
109
- columns: choiceColumns(columns),
110
- disabled,
111
- invalid,
112
- dir,
113
- onPick: (next) => onChange?.(multiple ? next : next[0] ?? ``),
114
- rootProps: { "data-slot": `choice-tiles`, className: cn2(CHOICE_TILES_CLASSES.root, className), "aria-label": rest[`aria-label`], "aria-labelledby": rest[`aria-labelledby`], "data-testid": rest[`data-testid`] },
115
- tileProps: (s) => ({ "data-slot": `choice-tile`, className: cn2(CHOICE_TILES_CLASSES.tile, s.selected && CHOICE_TILES_CLASSES.tileSelected, invalid && !s.selected && CHOICE_TILES_CLASSES.tileInvalid) }),
116
- pictureProps: () => ({ "data-slot": `choice-tile-picture`, className: CHOICE_TILES_CLASSES.picture }),
117
- labelProps: () => ({ className: CHOICE_TILES_CLASSES.label }),
118
- descriptionProps: () => ({ className: CHOICE_TILES_CLASSES.description }),
119
- renderPicture: (src, s) => image(src, options[s.index]?.label ?? ``)
120
- });
121
- }
122
-
123
- export { cn2, getInitials2, ChoiceTilesFrame2, ChoiceTiles2, choiceColumns2, choiceToggle2, choiceValues2 };
124
-
125
- //# debugId=7F864C2C5241E95964756E2164756E21
126
- //# sourceMappingURL=index-5yzzfez5.js.map
@@ -1,11 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/primitives/choice-tiles.tsx", "../src/primitives/cn.ts"],
4
- "sourcesContent": [
5
- "import * as React from \"react\"\nimport { ImageIcon } from \"lucide-react\"\nimport { CHOICE_TILES_CLASSES, choiceColumns, choiceToggle, choiceValues, type ChoiceTileOption, type TileState } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nexport { choiceColumns, choiceToggle, choiceValues } from \"@exponential_app/eui/web/primitives\"\nexport type { ChoiceTileOption, TileState } from \"@exponential_app/eui/web/primitives\"\n\n// EXP-1280: picture choice tiles, ONE implementation for two skins.\n//\n// `ChoiceTilesFrame` is the headless half: the grid, one button per option\n// (radio tiles for a single pick, checkbox tiles for several), the roving tab\n// stop and the keys of catalog/a11y.json `ChoiceTiles`. The eUI native\n// (`natives/choice-tiles.tsx`) dresses it with the theme's recipe classes;\n// `ChoiceTiles` below dresses it with the app's Tailwind tokens at the SAME\n// geometry, so the plan card and an agent's surface draw the same tile.\n\ntype Attrs = Record<string, unknown>\n\nexport interface ChoiceTilesFrameProps {\n options: readonly ChoiceTileOption[]\n /** The picked values. */\n picked: readonly string[]\n multiple: boolean\n columns: number\n disabled?: boolean\n invalid?: boolean\n dir?: `ltr` | `rtl`\n /** A pick (already toggled for `multiple`): the next picked values. */\n onPick: (next: string[], value: string) => void\n rootProps?: Attrs\n tileProps: (state: TileState) => Attrs\n pictureProps: (state: TileState) => Attrs\n labelProps: (state: TileState) => Attrs\n descriptionProps: (state: TileState) => Attrs\n /** The picture's content (the frame keeps the box; a missing picture gets\n * the placeholder). */\n renderPicture: (src: string | null, state: TileState) => React.ReactNode\n /** Under the tiles (the field's errors), spanning every column. */\n after?: React.ReactNode\n rootRef?: React.Ref<HTMLDivElement>\n}\n\n/** The headless tiles: a `radiogroup` of `radio` buttons (single) or a\n * `group` of `checkbox` buttons (multiple). The picked tile (else the\n * first enabled one) is the tab stop; arrows move focus with wrap (a single\n * pick follows focus); Space/Enter toggle (the button's own click). Every\n * tile has a picture box once ANY option has an image, so a row keeps one\n * height. */\nexport function ChoiceTilesFrame({ options, picked, multiple, columns, disabled = false, invalid = false, dir = `ltr`, onPick, rootProps, tileProps, pictureProps, labelProps, descriptionProps, renderPicture, after, rootRef }: ChoiceTilesFrameProps) {\n const buttons = React.useRef<(HTMLButtonElement | null)[]>([])\n const order = React.useMemo(() => options.map((o) => o.value), [options])\n const pictures = options.some((o) => Boolean(o.image))\n const enabled = (i: number) => !disabled && !options[i]?.disabled\n const firstPicked = options.findIndex((o, i) => picked.includes(o.value) && enabled(i))\n const tabStop = firstPicked >= 0 ? firstPicked : options.findIndex((_, i) => enabled(i))\n const pick = (i: number) => {\n const value = options[i]!.value\n onPick(choiceToggle(picked, value, multiple, order), value)\n }\n const move = (from: number, delta: number) => {\n const n = options.length\n for (let step = 1; step <= n; step++) {\n const i = (((from + delta * step) % n) + n) % n\n if (enabled(i)) return i\n }\n return -1\n }\n const onKeyDown = (i: number) => (e: React.KeyboardEvent<HTMLButtonElement>) => {\n const forward = dir === `rtl` ? `ArrowLeft` : `ArrowRight`\n const back = dir === `rtl` ? `ArrowRight` : `ArrowLeft`\n const delta = e.key === forward || e.key === `ArrowDown` ? 1 : e.key === back || e.key === `ArrowUp` ? -1 : 0\n if (delta === 0) return\n e.preventDefault()\n const next = move(i, delta)\n if (next < 0) return\n buttons.current[next]?.focus()\n if (!multiple && !picked.includes(options[next]!.value)) pick(next)\n }\n return (\n <div\n ref={rootRef}\n role={multiple ? `group` : `radiogroup`}\n aria-invalid={invalid || undefined}\n aria-disabled={disabled || undefined}\n dir={dir}\n {...rootProps}\n style={{ display: `grid`, gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))`, ...((rootProps?.style as React.CSSProperties | undefined) ?? {}) }}\n >\n {options.map((o, i) => {\n const state: TileState = { index: i, selected: picked.includes(o.value), disabled: !enabled(i) }\n const description = o.description ? String(o.description) : ``\n return (\n <button\n key={`${o.value}-${i}`}\n ref={(el) => {\n buttons.current[i] = el\n }}\n type=\"button\"\n role={multiple ? `checkbox` : `radio`}\n aria-checked={state.selected}\n aria-label={o.label}\n disabled={state.disabled}\n tabIndex={i === tabStop ? 0 : -1}\n data-state={state.selected ? `checked` : `unchecked`}\n data-value={o.value}\n onClick={() => pick(i)}\n onKeyDown={onKeyDown(i)}\n {...tileProps(state)}\n >\n {pictures ? (\n <span aria-hidden=\"true\" {...pictureProps(state)}>\n {renderPicture(o.image ? String(o.image) : null, state)}\n </span>\n ) : null}\n <span {...labelProps(state)}>{o.label}</span>\n {description ? <span {...descriptionProps(state)}>{description}</span> : null}\n </button>\n )\n })}\n {after}\n </div>\n )\n}\n\nexport interface ChoiceTilesProps {\n options: readonly ChoiceTileOption[]\n /** The pick: a string (single) or the picked values (multiple). */\n value: string | readonly string[] | null | undefined\n multiple?: boolean\n /** Tiles per row, 1–4 (default 2). */\n columns?: number\n disabled?: boolean\n /** Paints the destructive border (a required answer missing). */\n invalid?: boolean\n /** The next value: a string for a single pick, the values for `multiple`. */\n onChange?: (value: string | string[]) => void\n /** The picture element (the app passes an authorised <img> for\n * `/api/attachments/{id}`); default a plain lazy <img>. */\n renderImage?: (src: string, alt: string) => React.ReactNode\n className?: string\n \"aria-label\"?: string\n \"aria-labelledby\"?: string\n \"data-testid\"?: string\n dir?: `ltr` | `rtl`\n}\n\n/** THE picture choice (EXP-1280): the plan card's question blocks and the\n * standalone ask, at the eUI `ChoiceTiles` look. */\nfunction ChoiceTiles({ options, value, multiple = false, columns, disabled = false, invalid = false, onChange, renderImage, className, dir, ...rest }: ChoiceTilesProps) {\n const picked = choiceValues(value, multiple)\n const image = (src: string | null, label: string) =>\n src ? (renderImage ? renderImage(src, label) : <img src={src} alt={label} loading=\"lazy\" decoding=\"async\" className={CHOICE_TILES_CLASSES.image} />) : <ImageIcon className={CHOICE_TILES_CLASSES.placeholder} />\n return (\n <ChoiceTilesFrame\n options={options}\n picked={picked}\n multiple={multiple}\n columns={choiceColumns(columns)}\n disabled={disabled}\n invalid={invalid}\n dir={dir}\n onPick={(next) => onChange?.(multiple ? next : (next[0] ?? ``))}\n rootProps={{ \"data-slot\": `choice-tiles`, className: cn(CHOICE_TILES_CLASSES.root, className), \"aria-label\": rest[`aria-label`], \"aria-labelledby\": rest[`aria-labelledby`], \"data-testid\": rest[`data-testid`] }}\n tileProps={(s) => ({ \"data-slot\": `choice-tile`, className: cn(CHOICE_TILES_CLASSES.tile, s.selected && CHOICE_TILES_CLASSES.tileSelected, invalid && !s.selected && CHOICE_TILES_CLASSES.tileInvalid) })}\n pictureProps={() => ({ \"data-slot\": `choice-tile-picture`, className: CHOICE_TILES_CLASSES.picture })}\n labelProps={() => ({ className: CHOICE_TILES_CLASSES.label })}\n descriptionProps={() => ({ className: CHOICE_TILES_CLASSES.description })}\n renderPicture={(src, s) => image(src, options[s.index]?.label ?? ``)}\n />\n )\n}\n\nexport { ChoiceTiles }\n",
6
- "export { cn, getInitials } from \"@exponential_app/eui/web/primitives\"\n"
7
- ],
8
- "mappings": "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",
9
- "debugId": "7F864C2C5241E95964756E2164756E21",
10
- "names": []
11
- }