@knpkv/rly 0.6.0 → 0.6.1
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToggleGroup.d.ts","sourceRoot":"","sources":["../../../src/primitives/ToggleGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,qBAAqB,EAAsB,KAAK,YAAY,EAAU,MAAM,OAAO,CAAA;AAOjG,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;CAapC,CAAA;AAEF,eAAO,MAAM,iCAAiC;;CAAsC,CAAA;AACpF,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,yBAAyB,CAAC,IAAI,CAAA;AAE5E,mCAAmC;AACnC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED,8DAA8D;AAC9D,MAAM,MAAM,gBAAgB,GAAG,IAAI,CACjC,qBAAqB,CAAC,KAAK,CAAC,EAC5B,YAAY,GAAG,UAAU,GAAG,cAAc,GAAG,KAAK,GAAG,UAAU,CAChE,GAAG;IACF,iEAAiE;IACjE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;IAC5C,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/C,QAAQ,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAA;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB,CAAA;AAiBD;;;;GAIG;AACH,eAAO,MAAM,WAAW,6FASrB,gBAAgB,KAAG,
|
|
1
|
+
{"version":3,"file":"ToggleGroup.d.ts","sourceRoot":"","sources":["../../../src/primitives/ToggleGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,qBAAqB,EAAsB,KAAK,YAAY,EAAU,MAAM,OAAO,CAAA;AAOjG,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;CAapC,CAAA;AAEF,eAAO,MAAM,iCAAiC;;CAAsC,CAAA;AACpF,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,yBAAyB,CAAC,IAAI,CAAA;AAE5E,mCAAmC;AACnC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED,8DAA8D;AAC9D,MAAM,MAAM,gBAAgB,GAAG,IAAI,CACjC,qBAAqB,CAAC,KAAK,CAAC,EAC5B,YAAY,GAAG,UAAU,GAAG,cAAc,GAAG,KAAK,GAAG,UAAU,CAChE,GAAG;IACF,iEAAiE;IACjE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;IAC5C,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/C,QAAQ,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAA;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB,CAAA;AAiBD;;;;GAIG;AACH,eAAO,MAAM,WAAW,6FASrB,gBAAgB,KAAG,YA6CrB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@ import { a as r, i, n as a, o, s } from "./PortalProvider-CN_81Fy3.js";
|
|
|
4
4
|
import { t as c } from "./LinkProvider-DMkhwZ3P.js";
|
|
5
5
|
import { A as l, B as u, C as d, D as f, E as p, F as m, H as h, I as g, L as _, M as v, N as y, O as b, P as x, R as S, S as C, T as w, U as T, V as E, W as D, _ as O, a as k, b as A, c as j, d as M, f as N, g as P, h as F, i as I, j as L, k as R, l as z, m as B, n as V, o as H, p as U, r as W, s as G, t as K, u as q, v as J, w as Y, x as X, y as Z, z as Q } from "./patterns-QMuqnQKw.js";
|
|
6
6
|
import { A as $, C as ee, D as te, E as ne, O as re, S as ie, T as ae, _ as oe, a as se, b as ce, c as le, d as ue, f as de, g as fe, h as pe, i as me, k as he, l as ge, m as _e, n as ve, o as ye, p as be, r as xe, s as Se, t as Ce, u as we, v as Te, w as Ee, x as De, y as Oe } from "./Dialog-CplGpe1F.js";
|
|
7
|
-
import { a as ke, c as Ae, d as je, f as Me, h as Ne, i as Pe, l as Fe, m as Ie, n as Le, o as Re, p as ze, r as Be, s as Ve, t as He, u as Ue } from "./primitives-
|
|
7
|
+
import { a as ke, c as Ae, d as je, f as Me, h as Ne, i as Pe, l as Fe, m as Ie, n as Le, o as Re, p as ze, r as Be, s as Ve, t as He, u as Ue } from "./primitives-BXWPLy2C.js";
|
|
8
8
|
import { a as We, i as Ge, n as Ke, r as qe, t as Je } from "./tokens-CjK9bxo7.js";
|
|
9
9
|
export { D as AgentContextButton, T as AgentDrawer, h as AgentJob, E as AgentProposal, u as AgentThread, Oe as Avatar, ae as Button, L as CollaboratorGroup, Ce as Dialog, ze as Divider, C as EntityShell, Z as EntityTable, J as EvidenceStamp, me as Field, b as FreshnessStamp, t as GlobalStyles, O as GovernedActionReview, i as Icon, fe as IconButton, c as LinkProvider, x as PeopleStrip, _ as Person, a as PortalProvider, ce as RLY_AVATAR_DEFAULT_VARIANTS, De as RLY_AVATAR_VARIANTS, ne as RLY_BUTTON_DEFAULT_VARIANTS, te as RLY_BUTTON_VARIANTS, v as RLY_COLLABORATOR_GROUP_DEFAULT_VARIANTS, y as RLY_COLLABORATOR_GROUP_VARIANTS, Je as RLY_COLOR_TOKEN_NAMES, ve as RLY_DIALOG_DEFAULT_VARIANTS, xe as RLY_DIALOG_VARIANTS, Ie as RLY_DIVIDER_DEFAULT_VARIANTS, Ne as RLY_DIVIDER_VARIANTS, A as RLY_ENTITY_TABLE_DEFAULT_VARIANTS, X as RLY_ENTITY_TABLE_VARIANTS, se as RLY_FIELD_DEFAULT_VARIANTS, ye as RLY_FIELD_VARIANTS, R as RLY_FRESHNESS_STAMP_DEFAULT_VARIANTS, l as RLY_FRESHNESS_STAMP_VARIANTS, oe as RLY_ICON_BUTTON_DEFAULT_VARIANTS, Te as RLY_ICON_BUTTON_VARIANTS, r as RLY_ICON_DEFAULT_VARIANTS, o as RLY_ICON_NAMES, s as RLY_ICON_VARIANTS, Ke as RLY_MOTION_TOKEN_NAMES, m as RLY_PEOPLE_STRIP_DEFAULT_VARIANTS, g as RLY_PEOPLE_STRIP_VARIANTS, S as RLY_PERSON_DEFAULT_VARIANTS, Q as RLY_PERSON_VARIANTS, qe as RLY_RADIUS_TOKEN_NAMES, F as RLY_RELATIONSHIP_DIRECTION_PRESENTATION, P as RLY_RELATIONSHIP_LIFECYCLE_PRESENTATION, j as RLY_RELEASE_RELAY_DEFAULT_VARIANTS, z as RLY_RELEASE_RELAY_SYMBOLS, q as RLY_RELEASE_RELAY_VARIANTS, be as RLY_SELECT_DEFAULT_VARIANTS, _e as RLY_SELECT_VARIANTS, w as RLY_SERVICE_MARK_DEFAULT_VARIANTS, p as RLY_SERVICE_MARK_VARIANTS, re as RLY_SHEET_DEFAULT_VARIANTS, he as RLY_SHEET_VARIANTS, we as RLY_SKELETON_DEFAULT_VARIANTS, ue as RLY_SKELETON_VARIANTS, Ge as RLY_SPACE_TOKEN_NAMES, W as RLY_STAGE_RAIL_DEFAULT_VARIANTS, I as RLY_STAGE_RAIL_VARIANTS, ie as RLY_STATE_LABEL_DEFAULT_VARIANTS, ee as RLY_STATE_LABEL_VARIANTS, Se as RLY_STATE_PANEL_DEFAULT_VARIANTS, le as RLY_STATE_PANEL_VARIANTS, Ue as RLY_SURFACE_DEFAULT_VARIANTS, je as RLY_SURFACE_VARIANTS, Ve as RLY_TABS_DEFAULT_VARIANTS, Ae as RLY_TABS_VARIANTS, Pe as RLY_TEXT_DEFAULT_VARIANTS, ke as RLY_TEXT_VARIANTS, n as RLY_THEME_NAMES, He as RLY_TOGGLE_GROUP_DEFAULT_VARIANTS, Le as RLY_TOGGLE_GROUP_VARIANTS, We as RLY_TYPE_TOKEN_NAMES, d as RLY_VERDICT_VARIANTS, B as RelationshipChain, U as RelationshipTable, N as RelayDock, G as ReleasePreview, M as ReleaseRelay, H as ReleaseRow, pe as Select, f as ServiceMark, $ as Sheet, de as Skeleton, k as StageRail, Ee as StateLabel, ge as StatePanel, Me as Surface, Fe as Tabs, Re as Text, e as ThemeProvider, V as TimelineRow, Be as ToggleGroup, Y as Verdict, K as WorksetCard };
|
|
10
10
|
|
package/dist/primitives/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { A as e, C as t, D as n, E as r, O as i, S as a, T as o, _ as s, a as c, b as l, c as u, d, f, g as p, h as m, i as h, k as g, l as _, m as v, n as y, o as b, p as x, r as S, s as C, t as w, u as T, v as E, w as D, x as O, y as k } from "../Dialog-CplGpe1F.js";
|
|
3
|
-
import { a as A, c as j, d as M, f as N, h as P, i as F, l as I, m as L, n as R, o as z, p as B, r as V, s as H, t as U, u as W } from "../primitives-
|
|
3
|
+
import { a as A, c as j, d as M, f as N, h as P, i as F, l as I, m as L, n as R, o as z, p as B, r as V, s as H, t as U, u as W } from "../primitives-BXWPLy2C.js";
|
|
4
4
|
export { k as Avatar, o as Button, w as Dialog, B as Divider, h as Field, p as IconButton, l as RLY_AVATAR_DEFAULT_VARIANTS, O as RLY_AVATAR_VARIANTS, r as RLY_BUTTON_DEFAULT_VARIANTS, n as RLY_BUTTON_VARIANTS, y as RLY_DIALOG_DEFAULT_VARIANTS, S as RLY_DIALOG_VARIANTS, L as RLY_DIVIDER_DEFAULT_VARIANTS, P as RLY_DIVIDER_VARIANTS, c as RLY_FIELD_DEFAULT_VARIANTS, b as RLY_FIELD_VARIANTS, s as RLY_ICON_BUTTON_DEFAULT_VARIANTS, E as RLY_ICON_BUTTON_VARIANTS, x as RLY_SELECT_DEFAULT_VARIANTS, v as RLY_SELECT_VARIANTS, i as RLY_SHEET_DEFAULT_VARIANTS, g as RLY_SHEET_VARIANTS, T as RLY_SKELETON_DEFAULT_VARIANTS, d as RLY_SKELETON_VARIANTS, a as RLY_STATE_LABEL_DEFAULT_VARIANTS, t as RLY_STATE_LABEL_VARIANTS, C as RLY_STATE_PANEL_DEFAULT_VARIANTS, u as RLY_STATE_PANEL_VARIANTS, W as RLY_SURFACE_DEFAULT_VARIANTS, M as RLY_SURFACE_VARIANTS, H as RLY_TABS_DEFAULT_VARIANTS, j as RLY_TABS_VARIANTS, F as RLY_TEXT_DEFAULT_VARIANTS, A as RLY_TEXT_VARIANTS, U as RLY_TOGGLE_GROUP_DEFAULT_VARIANTS, R as RLY_TOGGLE_GROUP_VARIANTS, m as Select, e as Sheet, f as Skeleton, D as StateLabel, _ as StatePanel, N as Surface, I as Tabs, z as Text, V as ToggleGroup };
|
|
5
5
|
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -318,7 +318,7 @@ var u = {
|
|
|
318
318
|
if (n === null) return;
|
|
319
319
|
e.preventDefault();
|
|
320
320
|
let r = a[(t + n + a.length) % a.length];
|
|
321
|
-
r !== void 0 && (o(r.value), m.current.get(r.value)?.focus());
|
|
321
|
+
r !== void 0 && (r.value !== d && o(r.value), m.current.get(r.value)?.focus());
|
|
322
322
|
};
|
|
323
323
|
return /* @__PURE__ */ c(i.Root, {
|
|
324
324
|
...f,
|
|
@@ -343,4 +343,4 @@ var u = {
|
|
|
343
343
|
//#endregion
|
|
344
344
|
export { O as a, S as c, _ as d, y as f, f as h, k as i, T as l, p as m, P as n, j as o, m as p, R as r, C as s, F as t, v as u };
|
|
345
345
|
|
|
346
|
-
//# sourceMappingURL=primitives-
|
|
346
|
+
//# sourceMappingURL=primitives-BXWPLy2C.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"primitives-BnTwQBvt.js","names":["root","style","styles","root","tonePrimary","toneSecondary","toneTertiary","style","styles","root","defaultSize","style","styles","validateItems","Tabs","RadixTabs","root","style","styles","styles","RadixRadioGroup","requireText","cssClass","defineVariants","classNames","Divider_module_default","style$4","name","RLY_DIVIDER_VARIANTS","RLY_DIVIDER_DEFAULT_VARIANTS","Divider","props","decorative","label","accessibleLabel","orientation","strength","className","Surface_module_default","style$3","RLY_SURFACE_VARIANTS","RLY_SURFACE_DEFAULT_VARIANTS","Surface","createElement","as","tone","form","padding","children","Tabs_module_default","style$2","RLY_TABS_VARIANTS","RLY_TABS_DEFAULT_VARIANTS","validateItems$1","items","values","firstEnabled","item","value","Tabs$1","ariaLabel","selectedValue","defaultValue","selectedItem","selectionProps","onValueChange","directionProps","direction","Tabs","size","Text_module_default","style$1","RLY_TEXT_VARIANTS","RLY_TEXT_DEFAULT_VARIANTS","defaultElement","variant","Text","ToggleGroup_module_default","style","RLY_TOGGLE_GROUP_VARIANTS","RLY_TOGGLE_GROUP_DEFAULT_VARIANTS","stepOf","key","validateItems","itemValue","ToggleGroup","options","useRef","choose","step","event","next","from","RadioGroup","index","element"],"sources":["../src/primitives/Divider.module.css","../src/primitives/Divider.tsx","../src/primitives/Surface.module.css","../src/primitives/Surface.tsx","../src/primitives/Tabs.module.css","../src/primitives/Tabs.tsx","../src/primitives/Text.module.css","../src/primitives/Text.tsx","../src/primitives/ToggleGroup.module.css","../src/primitives/ToggleGroup.tsx"],"sourcesContent":["@layer rly.components {\n .root {\n flex: none;\n }\n .horizontal {\n block-size: 1px;\n inline-size: 100%;\n }\n .vertical {\n align-self: stretch;\n inline-size: 1px;\n min-block-size: var(--rly-space-20);\n }\n .subtle {\n background: var(--rly-color-border-1);\n }\n .strong {\n background: var(--rly-color-border-2);\n }\n}\n","import type { ComponentPropsWithRef, ReactElement } from \"react\"\nimport { classNames, cssClass, defineVariants, requireText } from \"../internal/component.js\"\nimport styles from \"./Divider.module.css\"\n\nconst style = (name: string): string => cssClass(styles, name)\nexport const RLY_DIVIDER_VARIANTS = defineVariants({\n orientation: {\n horizontal: { className: style(\"horizontal\"), purpose: \"Separate stacked content\", tokens: [\"space-0\"] },\n vertical: { className: style(\"vertical\"), purpose: \"Separate adjacent content\", tokens: [\"space-0\"] }\n },\n strength: {\n subtle: { className: style(\"subtle\"), purpose: \"Quiet structural boundary\", tokens: [\"color-border-1\"] },\n strong: { className: style(\"strong\"), purpose: \"Explicit structural boundary\", tokens: [\"color-border-2\"] }\n }\n})\nexport const RLY_DIVIDER_DEFAULT_VARIANTS = defineVariants({ orientation: \"horizontal\", strength: \"subtle\" })\nexport type RlyDividerOrientation = keyof typeof RLY_DIVIDER_VARIANTS.orientation\nexport type RlyDividerStrength = keyof typeof RLY_DIVIDER_VARIANTS.strength\ntype DividerBaseProps = Omit<ComponentPropsWithRef<\"div\">, \"aria-label\" | \"children\" | \"role\">\nexport type DividerProps = DividerBaseProps & {\n readonly orientation?: RlyDividerOrientation\n readonly strength?: RlyDividerStrength\n} & ({ readonly decorative?: true; readonly label?: never } | { readonly decorative: false; readonly label: string })\n\n/** Separate content visually or, when explicitly labelled, semantically. */\nexport const Divider = ({\n className,\n decorative = true,\n label,\n orientation = \"horizontal\",\n strength = \"subtle\",\n ...props\n}: DividerProps): ReactElement => {\n if (!decorative && label === undefined) throw new Error(\"Semantic Divider label must contain visible text\")\n const accessibleLabel = decorative || label === undefined ? undefined : requireText(label, \"Semantic Divider label\")\n return (\n <div\n {...props}\n aria-hidden={decorative ? \"true\" : undefined}\n aria-label={accessibleLabel}\n aria-orientation={decorative ? undefined : orientation}\n className={classNames(\n style(\"root\"),\n RLY_DIVIDER_VARIANTS.orientation[orientation].className,\n RLY_DIVIDER_VARIANTS.strength[strength].className,\n className\n )}\n role={decorative ? \"presentation\" : \"separator\"}\n />\n )\n}\n","@layer rly.components {\n .root {\n box-sizing: border-box;\n color: var(--rly-color-text-1);\n max-inline-size: 100%;\n min-inline-size: var(--rly-space-0);\n }\n\n .tonePrimary {\n background: var(--rly-color-surface-1);\n border: 1px solid var(--rly-color-border-1);\n }\n .toneSecondary {\n background: var(--rly-color-surface-2);\n }\n .toneTertiary {\n background: var(--rly-color-surface-3);\n }\n .shapeCard {\n border-radius: var(--rly-radius-control);\n }\n .shapeGrouped {\n border-radius: var(--rly-radius-group);\n }\n .paddingNone {\n padding: var(--rly-space-0);\n }\n .paddingCompact {\n padding: var(--rly-space-16);\n }\n .paddingDefault {\n padding: var(--rly-space-24);\n }\n .paddingSpacious {\n padding: var(--rly-space-32);\n }\n}\n","import { createElement, type ComponentPropsWithoutRef, type ReactElement, type ReactNode, type Ref } from \"react\"\nimport { classNames, cssClass, defineVariants } from \"../internal/component.js\"\nimport styles from \"./Surface.module.css\"\n\nconst style = (name: string): string => cssClass(styles, name)\nexport const RLY_SURFACE_VARIANTS = defineVariants({\n tone: {\n primary: {\n className: style(\"tonePrimary\"),\n purpose: \"Primary bordered surface\",\n tokens: [\"color-surface-1\", \"color-border-1\"]\n },\n secondary: { className: style(\"toneSecondary\"), purpose: \"Quiet secondary surface\", tokens: [\"color-surface-2\"] },\n tertiary: { className: style(\"toneTertiary\"), purpose: \"Inset tertiary surface\", tokens: [\"color-surface-3\"] }\n },\n form: {\n card: { className: style(\"shapeCard\"), purpose: \"Standard card geometry\", tokens: [\"radius-control\"] },\n grouped: { className: style(\"shapeGrouped\"), purpose: \"Grouped content geometry\", tokens: [\"radius-group\"] }\n },\n padding: {\n none: { className: style(\"paddingNone\"), purpose: \"Caller-owned internal layout\", tokens: [\"space-0\"] },\n compact: { className: style(\"paddingCompact\"), purpose: \"Dense supporting content\", tokens: [\"space-16\"] },\n default: { className: style(\"paddingDefault\"), purpose: \"Standard content\", tokens: [\"space-24\"] },\n spacious: { className: style(\"paddingSpacious\"), purpose: \"Prominent grouped content\", tokens: [\"space-32\"] }\n }\n})\nexport const RLY_SURFACE_DEFAULT_VARIANTS = defineVariants({ tone: \"primary\", form: \"card\", padding: \"default\" })\nexport type RlySurfaceTone = keyof typeof RLY_SURFACE_VARIANTS.tone\nexport type RlySurfaceForm = keyof typeof RLY_SURFACE_VARIANTS.form\nexport type RlySurfacePadding = keyof typeof RLY_SURFACE_VARIANTS.padding\nexport type RlySurfaceElement = \"div\" | \"section\" | \"article\" | \"aside\"\n\ntype RefTarget<Value> = Value extends Ref<infer Target> ? Target : never\ntype ExactRef<Expected, Value> =\n Value extends Ref<Expected> ? (Expected extends RefTarget<Value> ? Value : never) : never\n\nexport type SurfaceProps<\n Element extends RlySurfaceElement = \"div\",\n ElementRef extends Ref<HTMLElementTagNameMap[Element]> = Ref<HTMLElementTagNameMap[Element]>\n> = Omit<ComponentPropsWithoutRef<Element>, \"children\" | \"color\"> & {\n readonly as?: Element\n readonly children: ReactNode\n readonly padding?: RlySurfacePadding\n readonly ref?: ExactRef<HTMLElementTagNameMap[Element], ElementRef>\n readonly form?: RlySurfaceForm\n readonly tone?: RlySurfaceTone\n}\n\n/** Render a quiet, non-interactive structural surface without elevation semantics. */\nexport const Surface = <\n const Element extends RlySurfaceElement = \"div\",\n ElementRef extends Ref<HTMLElementTagNameMap[Element]> = Ref<HTMLElementTagNameMap[Element]>\n>({\n as,\n children,\n className,\n form = \"card\",\n padding = \"default\",\n ref,\n tone = \"primary\",\n ...props\n}: SurfaceProps<Element, ElementRef>): ReactElement =>\n createElement(\n as ?? \"div\",\n {\n ...props,\n className: classNames(\n style(\"root\"),\n RLY_SURFACE_VARIANTS.tone[tone].className,\n RLY_SURFACE_VARIANTS.form[form].className,\n RLY_SURFACE_VARIANTS.padding[padding].className,\n className\n ),\n ref\n },\n children\n )\n","@layer rly.components {\n .root {\n max-inline-size: 100%;\n min-inline-size: var(--rly-space-0);\n }\n\n .list {\n align-items: stretch;\n background: var(--rly-color-surface-2);\n border-radius: var(--rly-radius-field);\n display: flex;\n flex-wrap: wrap;\n gap: var(--rly-space-2);\n max-inline-size: 100%;\n padding: var(--rly-space-4);\n }\n\n .trigger {\n appearance: none;\n background: var(--rly-color-surface-2);\n border: var(--rly-space-0);\n border-radius: var(--rly-radius-tag);\n color: var(--rly-color-text-2);\n cursor: pointer;\n flex: 1 1 10rem;\n max-inline-size: 100%;\n min-inline-size: var(--rly-space-0);\n overflow-wrap: anywhere;\n padding: var(--rly-space-8) var(--rly-space-12);\n position: relative;\n text-align: center;\n }\n\n .trigger::after {\n background: var(--rly-color-action-background);\n block-size: var(--rly-space-2);\n border-radius: var(--rly-radius-round);\n content: \"\";\n inset-block-end: var(--rly-space-2);\n inset-inline: var(--rly-space-12);\n opacity: 0;\n position: absolute;\n }\n\n .trigger[data-state=\"active\"] {\n background: var(--rly-color-surface-1);\n color: var(--rly-color-text-1);\n }\n\n .trigger[data-state=\"active\"]::after {\n opacity: 1;\n }\n .trigger:disabled {\n cursor: not-allowed;\n opacity: 0.58;\n }\n\n .defaultSize .trigger {\n font: var(--rly-type-label-weight) var(--rly-type-label-size) / var(--rly-type-label-line-height)\n var(--rly-type-label-font);\n min-block-size: calc(var(--rly-space-40) + var(--rly-space-4));\n }\n\n .large .trigger {\n font: var(--rly-type-body-weight) var(--rly-type-body-size) / var(--rly-type-body-line-height)\n var(--rly-type-body-font);\n min-block-size: var(--rly-space-48);\n padding-inline: var(--rly-space-16);\n }\n\n .panel {\n color: var(--rly-color-text-1);\n min-inline-size: var(--rly-space-0);\n padding-block-start: var(--rly-space-24);\n }\n\n @media (hover: hover) {\n .trigger:not(:disabled, [data-state=\"active\"]):hover {\n background: var(--rly-color-surface-3);\n color: var(--rly-color-text-1);\n }\n }\n\n @media (max-width: 30rem) {\n .root:not([data-mobile-layout=\"single-row\"]) .trigger[data-state=\"active\"]::after {\n content: none;\n }\n\n :where([data-forced-colors=\"active\"], [data-rly-forced-colors=\"active\"])\n .root:not([data-mobile-layout=\"single-row\"])\n .trigger[data-state=\"active\"]::after {\n content: \"\";\n }\n }\n\n @media (max-width: 30rem) and (forced-colors: active) {\n .root:not([data-mobile-layout=\"single-row\"]) .trigger[data-state=\"active\"]::after {\n content: \"\";\n }\n }\n\n .root[data-mobile-layout=\"single-row\"] .list {\n flex-wrap: nowrap;\n overflow-x: auto;\n }\n\n .root[data-mobile-layout=\"single-row\"] .trigger {\n flex: 1 0 auto;\n max-inline-size: none;\n white-space: nowrap;\n }\n}\n","import type { ComponentPropsWithRef, ReactElement, ReactNode } from \"react\"\nimport { Tabs as RadixTabs } from \"radix-ui\"\nimport { classNames, cssClass, defineVariants, requireText } from \"../internal/component.js\"\nimport styles from \"./Tabs.module.css\"\n\nconst style = (name: string): string => cssClass(styles, name)\n\nexport const RLY_TABS_VARIANTS = defineVariants({\n size: {\n default: {\n className: style(\"defaultSize\"),\n purpose: \"Standard section navigation\",\n tokens: [\"type-label\", \"space-40\", \"space-4\"]\n },\n large: {\n className: style(\"large\"),\n purpose: \"Prominent page-level navigation\",\n tokens: [\"type-body\", \"space-48\"]\n }\n }\n})\n\nexport const RLY_TABS_DEFAULT_VARIANTS = defineVariants({ size: \"default\" })\nexport type RlyTabsSize = keyof typeof RLY_TABS_VARIANTS.size\nexport type RlyTabsDirection = \"ltr\" | \"rtl\"\n\n/** One labelled tab and its presentation-only panel content. */\nexport interface RlyTabItem {\n readonly content: ReactNode\n readonly disabled?: boolean\n /** Retain this panel while inactive. Defaults to unmounting; the caller must style inactive panel visibility. */\n readonly forceMount?: true\n readonly label: string\n readonly value: string\n}\n\ntype TabsBaseProps = Omit<ComponentPropsWithRef<\"div\">, \"aria-label\" | \"children\" | \"defaultValue\" | \"dir\"> & {\n /** Accessible name for the tab list. */\n readonly \"aria-label\": string\n readonly direction?: RlyTabsDirection\n readonly items: ReadonlyArray<RlyTabItem>\n readonly size?: RlyTabsSize\n}\ntype ControlledTabsProps = TabsBaseProps & {\n readonly defaultValue?: never\n readonly onValueChange: (value: string) => void\n readonly value: string\n}\ntype DefaultTabsProps = TabsBaseProps & {\n readonly defaultValue?: string\n readonly onValueChange?: (value: string) => void\n readonly value?: never\n}\nexport type TabsProps = ControlledTabsProps | DefaultTabsProps\n\nconst validateItems = (items: ReadonlyArray<RlyTabItem>): RlyTabItem => {\n if (items.length === 0) throw new Error(\"Tabs items must contain at least one enabled tab\")\n\n const values = new Set<string>()\n let firstEnabled: RlyTabItem | undefined\n for (const item of items) {\n const value = requireText(item.value, \"Tab value\")\n requireText(item.label, `Tab label for ${value}`)\n if (values.has(value)) throw new Error(`Tabs item values must be unique: ${value}`)\n values.add(value)\n if (Boolean(item.disabled) === false && firstEnabled === undefined) firstEnabled = item\n }\n\n if (firstEnabled === undefined) throw new Error(\"Tabs items must contain at least one enabled tab\")\n return firstEnabled\n}\n\n/** Render labelled, keyboard-navigable panels with controlled-first selection. */\nexport const Tabs = ({\n \"aria-label\": ariaLabel,\n className,\n defaultValue,\n direction,\n items,\n onValueChange,\n ref,\n size = \"default\",\n value,\n ...props\n}: TabsProps): ReactElement => {\n const accessibleLabel = requireText(ariaLabel, \"Tabs aria-label\")\n const firstEnabled = validateItems(items)\n const selectedValue = value ?? defaultValue ?? firstEnabled.value\n const selectedItem = items.find((item) => item.value === selectedValue)\n if (selectedItem === undefined || Boolean(selectedItem.disabled) === true) {\n throw new Error(`Tabs selected value must identify an enabled tab: ${selectedValue}`)\n }\n\n const selectionProps =\n value === undefined\n ? onValueChange === undefined\n ? { defaultValue: selectedValue }\n : { defaultValue: selectedValue, onValueChange }\n : { onValueChange, value }\n const directionProps = direction === undefined ? {} : { dir: direction }\n\n return (\n <RadixTabs.Root\n {...props}\n {...selectionProps}\n {...directionProps}\n activationMode=\"automatic\"\n className={classNames(style(\"root\"), RLY_TABS_VARIANTS.size[size].className, className)}\n orientation=\"horizontal\"\n ref={ref}\n >\n <RadixTabs.List aria-label={accessibleLabel} className={style(\"list\")} loop>\n {items.map((item) => (\n <RadixTabs.Trigger\n className={style(\"trigger\")}\n data-tab-value={item.value}\n disabled={item.disabled}\n key={item.value}\n value={item.value}\n >\n {item.label}\n </RadixTabs.Trigger>\n ))}\n </RadixTabs.List>\n {items.map((item) => (\n <RadixTabs.Content\n className={style(\"panel\")}\n {...(item.forceMount === undefined ? {} : { forceMount: item.forceMount })}\n key={item.value}\n value={item.value}\n >\n {item.content}\n </RadixTabs.Content>\n ))}\n </RadixTabs.Root>\n )\n}\n","@layer rly.components {\n .root {\n margin: var(--rly-space-0);\n min-inline-size: var(--rly-space-0);\n overflow-wrap: anywhere;\n }\n\n .verdict,\n .pageTitle,\n .sectionTitle,\n .cardTitle {\n text-wrap: balance;\n }\n\n .bodyLarge,\n .body {\n text-wrap: pretty;\n }\n\n .verdict {\n font: var(--rly-type-verdict-weight) var(--rly-type-verdict-size) / var(--rly-type-verdict-line-height)\n var(--rly-type-verdict-font);\n letter-spacing: var(--rly-type-verdict-tracking);\n }\n\n .pageTitle {\n font: var(--rly-type-page-title-weight) var(--rly-type-page-title-size) / var(--rly-type-page-title-line-height)\n var(--rly-type-page-title-font);\n letter-spacing: var(--rly-type-page-title-tracking);\n }\n\n .sectionTitle {\n font: var(--rly-type-section-title-weight) var(--rly-type-section-title-size) /\n var(--rly-type-section-title-line-height) var(--rly-type-section-title-font);\n letter-spacing: var(--rly-type-section-title-tracking);\n }\n\n .cardTitle {\n font: var(--rly-type-card-title-weight) var(--rly-type-card-title-size) / var(--rly-type-card-title-line-height)\n var(--rly-type-card-title-font);\n letter-spacing: var(--rly-type-card-title-tracking);\n }\n\n .bodyLarge {\n font: var(--rly-type-body-large-weight) var(--rly-type-body-large-size) / var(--rly-type-body-large-line-height)\n var(--rly-type-body-large-font);\n letter-spacing: var(--rly-type-body-large-tracking);\n }\n\n .body {\n font: var(--rly-type-body-weight) var(--rly-type-body-size) / var(--rly-type-body-line-height)\n var(--rly-type-body-font);\n letter-spacing: var(--rly-type-body-tracking);\n }\n\n .label {\n font: var(--rly-type-label-weight) var(--rly-type-label-size) / var(--rly-type-label-line-height)\n var(--rly-type-label-font);\n letter-spacing: var(--rly-type-label-tracking);\n }\n\n .meta {\n font: var(--rly-type-meta-weight) var(--rly-type-meta-size) / var(--rly-type-meta-line-height)\n var(--rly-type-meta-font);\n letter-spacing: var(--rly-type-meta-tracking);\n }\n\n .code {\n font: var(--rly-type-code-weight) var(--rly-type-code-size) / var(--rly-type-code-line-height)\n var(--rly-type-code-font);\n font-variant-numeric: tabular-nums;\n letter-spacing: var(--rly-type-code-tracking);\n white-space: pre-wrap;\n }\n\n .tonePrimary {\n color: var(--rly-color-text-1);\n }\n .toneSecondary {\n color: var(--rly-color-text-2);\n }\n .toneTertiary {\n color: var(--rly-color-text-3);\n }\n .toneInherit {\n color: inherit;\n }\n}\n","import {\n createElement,\n type ComponentPropsWithoutRef,\n type HTMLAttributes,\n type ReactElement,\n type ReactNode,\n type Ref\n} from \"react\"\nimport { classNames, cssClass, defineVariants } from \"../internal/component.js\"\nimport styles from \"./Text.module.css\"\n\nconst style = (name: string): string => cssClass(styles, name)\n\nexport const RLY_TEXT_VARIANTS = defineVariants({\n variant: {\n verdict: { className: style(\"verdict\"), purpose: \"One restrained verdict thesis\", tokens: [\"type-verdict\"] },\n \"page-title\": { className: style(\"pageTitle\"), purpose: \"Primary page title\", tokens: [\"type-page-title\"] },\n \"section-title\": { className: style(\"sectionTitle\"), purpose: \"Section heading\", tokens: [\"type-section-title\"] },\n \"card-title\": { className: style(\"cardTitle\"), purpose: \"Card or panel heading\", tokens: [\"type-card-title\"] },\n \"body-large\": { className: style(\"bodyLarge\"), purpose: \"Leading explanatory copy\", tokens: [\"type-body-large\"] },\n body: { className: style(\"body\"), purpose: \"Default interface copy\", tokens: [\"type-body\"] },\n label: { className: style(\"label\"), purpose: \"Control and metadata labels\", tokens: [\"type-label\"] },\n meta: { className: style(\"meta\"), purpose: \"Supporting metadata\", tokens: [\"type-meta\"] },\n code: { className: style(\"code\"), purpose: \"Code and tabular data\", tokens: [\"type-code\"] }\n },\n tone: {\n primary: { className: style(\"tonePrimary\"), purpose: \"Primary readable text\", tokens: [\"color-text-1\"] },\n secondary: { className: style(\"toneSecondary\"), purpose: \"Supporting text\", tokens: [\"color-text-2\"] },\n tertiary: { className: style(\"toneTertiary\"), purpose: \"Restricted tertiary text\", tokens: [\"color-text-3\"] },\n inherit: { className: style(\"toneInherit\"), purpose: \"Inherit semantic context\", tokens: [] }\n }\n})\n\nexport const RLY_TEXT_DEFAULT_VARIANTS = defineVariants({ variant: \"body\", tone: \"primary\" })\nexport type RlyTextVariant = keyof typeof RLY_TEXT_VARIANTS.variant\nexport type RlyTextTone = keyof typeof RLY_TEXT_VARIANTS.tone\nexport type RlyTextElement =\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"h5\"\n | \"h6\"\n | \"p\"\n | \"span\"\n | \"strong\"\n | \"small\"\n | \"code\"\n | \"pre\"\n | \"time\"\n | \"li\"\n | \"dt\"\n | \"dd\"\n\ntype HeadingVariant = \"page-title\" | \"section-title\" | \"card-title\"\ntype HeadingElement = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"span\"\ntype OtherVariant = Exclude<RlyTextVariant, HeadingVariant>\ntype RefTarget<Value> = Value extends Ref<infer Target> ? Target : never\ntype ExactRef<Expected, Value> =\n Value extends Ref<Expected> ? (Expected extends RefTarget<Value> ? Value : never) : never\ntype TextOwnProps = {\n readonly children: ReactNode\n readonly tone?: RlyTextTone\n}\ntype ExplicitVariantProps<Element extends RlyTextElement> =\n { readonly variant?: OtherVariant } | (Element extends HeadingElement ? { readonly variant: HeadingVariant } : never)\ntype ExplicitTextProps<Element extends RlyTextElement, ElementRef extends Ref<HTMLElementTagNameMap[Element]>> = Omit<\n ComponentPropsWithoutRef<Element>,\n \"as\" | \"children\" | \"color\"\n> &\n TextOwnProps &\n ExplicitVariantProps<Element> & {\n readonly as: Element\n readonly ref?: ExactRef<HTMLElementTagNameMap[Element], ElementRef>\n }\ntype ImplicitTextProps = Omit<HTMLAttributes<HTMLElement>, \"children\" | \"color\"> &\n TextOwnProps & {\n readonly as?: never\n readonly ref?: never\n readonly variant?: OtherVariant\n }\nexport type TextProps<\n Element extends RlyTextElement = RlyTextElement,\n ElementRef extends Ref<HTMLElementTagNameMap[Element]> = Ref<HTMLElementTagNameMap[Element]>\n> = ExplicitTextProps<Element, ElementRef> | ImplicitTextProps\n\ntype TextComponent = <\n const Element extends RlyTextElement = RlyTextElement,\n ElementRef extends Ref<HTMLElementTagNameMap[Element]> = Ref<HTMLElementTagNameMap[Element]>\n>(\n props: TextProps<Element, ElementRef>\n) => ReactElement\ntype TextRuntimeProps = Omit<HTMLAttributes<HTMLElement>, \"color\"> &\n TextOwnProps & {\n readonly as?: RlyTextElement\n readonly ref?: Ref<HTMLElement>\n readonly variant?: RlyTextVariant\n }\n\nconst defaultElement = (variant: RlyTextVariant): RlyTextElement =>\n variant === \"code\" ? \"code\" : variant === \"verdict\" ? \"p\" : variant === \"label\" || variant === \"meta\" ? \"span\" : \"p\"\n\n/** Render semantic typography while keeping visual role separate from document structure. */\nconst renderText = ({\n as,\n children,\n className,\n ref,\n tone = RLY_TEXT_DEFAULT_VARIANTS.tone,\n variant = RLY_TEXT_DEFAULT_VARIANTS.variant,\n ...props\n}: TextRuntimeProps): ReactElement =>\n createElement(\n as ?? defaultElement(variant),\n {\n ...props,\n className: classNames(\n style(\"root\"),\n RLY_TEXT_VARIANTS.variant[variant].className,\n RLY_TEXT_VARIANTS.tone[tone].className,\n className\n ),\n ref\n },\n children\n )\n\nexport const Text: TextComponent = renderText\n","@layer rly.components {\n .root {\n background: var(--rly-color-surface-2);\n border-radius: var(--rly-radius-field);\n display: inline-flex;\n flex-wrap: wrap;\n gap: var(--rly-space-2);\n max-inline-size: 100%;\n padding: var(--rly-space-2);\n }\n\n .item {\n appearance: none;\n background: transparent;\n border: var(--rly-space-0);\n border-radius: var(--rly-radius-tag);\n color: var(--rly-color-text-2);\n cursor: pointer;\n font: inherit;\n padding-inline: var(--rly-space-12);\n white-space: nowrap;\n }\n\n .item[data-state=\"checked\"] {\n background: var(--rly-color-surface-1);\n box-shadow: inset 0 0 0 1px var(--rly-color-border-2);\n color: var(--rly-color-text-1);\n }\n\n .item:focus-visible {\n outline: 2px solid var(--rly-color-focus);\n outline-offset: 1px;\n }\n\n .defaultSize .item {\n font: var(--rly-type-label-weight) var(--rly-type-label-size) / var(--rly-type-label-line-height)\n var(--rly-type-label-font);\n min-block-size: var(--rly-space-40);\n }\n\n .compact .item {\n font: var(--rly-type-meta-weight) var(--rly-type-meta-size) / var(--rly-type-meta-line-height)\n var(--rly-type-meta-font);\n min-block-size: var(--rly-space-32);\n padding-inline: var(--rly-space-8);\n }\n\n /* Fingers need a bigger target than a pointer, whichever size the row uses. */\n @media (pointer: coarse) {\n .defaultSize .item,\n .compact .item {\n min-block-size: calc(var(--rly-space-40) + var(--rly-space-4));\n }\n }\n\n @media (hover: hover) {\n .item:not([data-state=\"checked\"]):hover {\n background: var(--rly-color-surface-3);\n color: var(--rly-color-text-1);\n }\n }\n\n @media (forced-colors: active) {\n .item[data-state=\"checked\"] {\n outline: 2px solid CanvasText;\n }\n }\n}\n","import { type ComponentPropsWithRef, type KeyboardEvent, type ReactElement, useRef } from \"react\"\nimport { RadioGroup as RadixRadioGroup } from \"radix-ui\"\nimport { classNames, cssClass, defineVariants, requireText } from \"../internal/component.js\"\nimport styles from \"./ToggleGroup.module.css\"\n\nconst style = (name: string): string => cssClass(styles, name)\n\nexport const RLY_TOGGLE_GROUP_VARIANTS = defineVariants({\n size: {\n compact: {\n className: style(\"compact\"),\n purpose: \"Dense filter rows beside other controls\",\n tokens: [\"type-meta\", \"space-32\", \"space-2\"]\n },\n default: {\n className: style(\"defaultSize\"),\n purpose: \"Standard view and filter choices\",\n tokens: [\"type-label\", \"space-40\", \"space-2\"]\n }\n }\n})\n\nexport const RLY_TOGGLE_GROUP_DEFAULT_VARIANTS = defineVariants({ size: \"default\" })\nexport type RlyToggleGroupSize = keyof typeof RLY_TOGGLE_GROUP_VARIANTS.size\n\n/** One visibly labelled option. */\nexport interface RlyToggleItem {\n readonly label: string\n readonly value: string\n}\n\n/** Props for a controlled, single-select segmented choice. */\nexport type ToggleGroupProps = Omit<\n ComponentPropsWithRef<\"div\">,\n \"aria-label\" | \"children\" | \"defaultValue\" | \"dir\" | \"onChange\"\n> & {\n /** Accessible name for the group, such as the filter it sets. */\n readonly \"aria-label\": string\n readonly items: ReadonlyArray<RlyToggleItem>\n readonly onValueChange: (value: string) => void\n readonly size?: RlyToggleGroupSize\n readonly value: string\n}\n\n/** How far an arrow key moves the choice; null for any other key. */\nconst stepOf = (key: string): -1 | 1 | null =>\n key === \"ArrowLeft\" || key === \"ArrowUp\" ? -1 : key === \"ArrowRight\" || key === \"ArrowDown\" ? 1 : null\n\nconst validateItems = (items: ReadonlyArray<RlyToggleItem>, value: string): void => {\n const values = new Set<string>()\n for (const item of items) {\n const itemValue = requireText(item.value, \"ToggleGroup item value\")\n requireText(item.label, `ToggleGroup item label for ${itemValue}`)\n if (values.has(itemValue)) throw new Error(`ToggleGroup item values must be unique: ${itemValue}`)\n values.add(itemValue)\n }\n if (!values.has(value)) throw new Error(`ToggleGroup value must identify an option: ${value}`)\n}\n\n/**\n * Choose one of a few peer options, such as a range or a measure, as a radio group: exactly one\n * option is always on, pressing it again changes nothing, and arrow keys move to the next option\n * and choose it.\n */\nexport const ToggleGroup = ({\n \"aria-label\": ariaLabel,\n className,\n items,\n onValueChange,\n ref,\n size = \"default\",\n value,\n ...props\n}: ToggleGroupProps): ReactElement => {\n const accessibleLabel = requireText(ariaLabel, \"ToggleGroup aria-label\")\n validateItems(items, value)\n const options = useRef(new Map<string, HTMLButtonElement>())\n // Radix moves focus a tick after the key and only chooses while the key is still down, so a quick\n // tap would move focus without choosing. Arrows are handled here: the next option is chosen and\n // focused in the same keystroke, wrapping at the ends.\n const choose = (event: KeyboardEvent<HTMLButtonElement>, from: number) => {\n const step = stepOf(event.key)\n if (step === null) return\n event.preventDefault()\n const next = items[(from + step + items.length) % items.length]\n if (next === undefined) return\n onValueChange(next.value)\n options.current.get(next.value)?.focus()\n }\n return (\n <RadixRadioGroup.Root\n {...props}\n aria-label={accessibleLabel}\n className={classNames(style(\"root\"), RLY_TOGGLE_GROUP_VARIANTS.size[size].className, className)}\n loop\n onValueChange={onValueChange}\n orientation=\"horizontal\"\n ref={ref}\n value={value}\n >\n {items.map((item, index) => (\n <RadixRadioGroup.Item\n className={style(\"item\")}\n key={item.value}\n onKeyDown={(event) => choose(event, index)}\n ref={(element) => {\n if (element === null) options.current.delete(item.value)\n else options.current.set(item.value, element)\n }}\n value={item.value}\n >\n {item.label}\n </RadixRadioGroup.Item>\n ))}\n </RadixRadioGroup.Root>\n )\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"primitives-BXWPLy2C.js","names":["root","style","styles","root","tonePrimary","toneSecondary","toneTertiary","style","styles","root","defaultSize","style","styles","validateItems","Tabs","RadixTabs","root","style","styles","styles","RadixRadioGroup","requireText","cssClass","defineVariants","classNames","Divider_module_default","style$4","name","RLY_DIVIDER_VARIANTS","RLY_DIVIDER_DEFAULT_VARIANTS","Divider","props","decorative","label","accessibleLabel","orientation","strength","className","Surface_module_default","style$3","RLY_SURFACE_VARIANTS","RLY_SURFACE_DEFAULT_VARIANTS","Surface","createElement","as","tone","form","padding","children","Tabs_module_default","style$2","RLY_TABS_VARIANTS","RLY_TABS_DEFAULT_VARIANTS","validateItems$1","items","values","firstEnabled","item","value","Tabs$1","ariaLabel","selectedValue","defaultValue","selectedItem","selectionProps","onValueChange","directionProps","direction","Tabs","size","Text_module_default","style$1","RLY_TEXT_VARIANTS","RLY_TEXT_DEFAULT_VARIANTS","defaultElement","variant","Text","ToggleGroup_module_default","style","RLY_TOGGLE_GROUP_VARIANTS","RLY_TOGGLE_GROUP_DEFAULT_VARIANTS","stepOf","key","validateItems","itemValue","ToggleGroup","options","useRef","choose","step","event","next","from","RadioGroup","index","element"],"sources":["../src/primitives/Divider.module.css","../src/primitives/Divider.tsx","../src/primitives/Surface.module.css","../src/primitives/Surface.tsx","../src/primitives/Tabs.module.css","../src/primitives/Tabs.tsx","../src/primitives/Text.module.css","../src/primitives/Text.tsx","../src/primitives/ToggleGroup.module.css","../src/primitives/ToggleGroup.tsx"],"sourcesContent":["@layer rly.components {\n .root {\n flex: none;\n }\n .horizontal {\n block-size: 1px;\n inline-size: 100%;\n }\n .vertical {\n align-self: stretch;\n inline-size: 1px;\n min-block-size: var(--rly-space-20);\n }\n .subtle {\n background: var(--rly-color-border-1);\n }\n .strong {\n background: var(--rly-color-border-2);\n }\n}\n","import type { ComponentPropsWithRef, ReactElement } from \"react\"\nimport { classNames, cssClass, defineVariants, requireText } from \"../internal/component.js\"\nimport styles from \"./Divider.module.css\"\n\nconst style = (name: string): string => cssClass(styles, name)\nexport const RLY_DIVIDER_VARIANTS = defineVariants({\n orientation: {\n horizontal: { className: style(\"horizontal\"), purpose: \"Separate stacked content\", tokens: [\"space-0\"] },\n vertical: { className: style(\"vertical\"), purpose: \"Separate adjacent content\", tokens: [\"space-0\"] }\n },\n strength: {\n subtle: { className: style(\"subtle\"), purpose: \"Quiet structural boundary\", tokens: [\"color-border-1\"] },\n strong: { className: style(\"strong\"), purpose: \"Explicit structural boundary\", tokens: [\"color-border-2\"] }\n }\n})\nexport const RLY_DIVIDER_DEFAULT_VARIANTS = defineVariants({ orientation: \"horizontal\", strength: \"subtle\" })\nexport type RlyDividerOrientation = keyof typeof RLY_DIVIDER_VARIANTS.orientation\nexport type RlyDividerStrength = keyof typeof RLY_DIVIDER_VARIANTS.strength\ntype DividerBaseProps = Omit<ComponentPropsWithRef<\"div\">, \"aria-label\" | \"children\" | \"role\">\nexport type DividerProps = DividerBaseProps & {\n readonly orientation?: RlyDividerOrientation\n readonly strength?: RlyDividerStrength\n} & ({ readonly decorative?: true; readonly label?: never } | { readonly decorative: false; readonly label: string })\n\n/** Separate content visually or, when explicitly labelled, semantically. */\nexport const Divider = ({\n className,\n decorative = true,\n label,\n orientation = \"horizontal\",\n strength = \"subtle\",\n ...props\n}: DividerProps): ReactElement => {\n if (!decorative && label === undefined) throw new Error(\"Semantic Divider label must contain visible text\")\n const accessibleLabel = decorative || label === undefined ? undefined : requireText(label, \"Semantic Divider label\")\n return (\n <div\n {...props}\n aria-hidden={decorative ? \"true\" : undefined}\n aria-label={accessibleLabel}\n aria-orientation={decorative ? undefined : orientation}\n className={classNames(\n style(\"root\"),\n RLY_DIVIDER_VARIANTS.orientation[orientation].className,\n RLY_DIVIDER_VARIANTS.strength[strength].className,\n className\n )}\n role={decorative ? \"presentation\" : \"separator\"}\n />\n )\n}\n","@layer rly.components {\n .root {\n box-sizing: border-box;\n color: var(--rly-color-text-1);\n max-inline-size: 100%;\n min-inline-size: var(--rly-space-0);\n }\n\n .tonePrimary {\n background: var(--rly-color-surface-1);\n border: 1px solid var(--rly-color-border-1);\n }\n .toneSecondary {\n background: var(--rly-color-surface-2);\n }\n .toneTertiary {\n background: var(--rly-color-surface-3);\n }\n .shapeCard {\n border-radius: var(--rly-radius-control);\n }\n .shapeGrouped {\n border-radius: var(--rly-radius-group);\n }\n .paddingNone {\n padding: var(--rly-space-0);\n }\n .paddingCompact {\n padding: var(--rly-space-16);\n }\n .paddingDefault {\n padding: var(--rly-space-24);\n }\n .paddingSpacious {\n padding: var(--rly-space-32);\n }\n}\n","import { createElement, type ComponentPropsWithoutRef, type ReactElement, type ReactNode, type Ref } from \"react\"\nimport { classNames, cssClass, defineVariants } from \"../internal/component.js\"\nimport styles from \"./Surface.module.css\"\n\nconst style = (name: string): string => cssClass(styles, name)\nexport const RLY_SURFACE_VARIANTS = defineVariants({\n tone: {\n primary: {\n className: style(\"tonePrimary\"),\n purpose: \"Primary bordered surface\",\n tokens: [\"color-surface-1\", \"color-border-1\"]\n },\n secondary: { className: style(\"toneSecondary\"), purpose: \"Quiet secondary surface\", tokens: [\"color-surface-2\"] },\n tertiary: { className: style(\"toneTertiary\"), purpose: \"Inset tertiary surface\", tokens: [\"color-surface-3\"] }\n },\n form: {\n card: { className: style(\"shapeCard\"), purpose: \"Standard card geometry\", tokens: [\"radius-control\"] },\n grouped: { className: style(\"shapeGrouped\"), purpose: \"Grouped content geometry\", tokens: [\"radius-group\"] }\n },\n padding: {\n none: { className: style(\"paddingNone\"), purpose: \"Caller-owned internal layout\", tokens: [\"space-0\"] },\n compact: { className: style(\"paddingCompact\"), purpose: \"Dense supporting content\", tokens: [\"space-16\"] },\n default: { className: style(\"paddingDefault\"), purpose: \"Standard content\", tokens: [\"space-24\"] },\n spacious: { className: style(\"paddingSpacious\"), purpose: \"Prominent grouped content\", tokens: [\"space-32\"] }\n }\n})\nexport const RLY_SURFACE_DEFAULT_VARIANTS = defineVariants({ tone: \"primary\", form: \"card\", padding: \"default\" })\nexport type RlySurfaceTone = keyof typeof RLY_SURFACE_VARIANTS.tone\nexport type RlySurfaceForm = keyof typeof RLY_SURFACE_VARIANTS.form\nexport type RlySurfacePadding = keyof typeof RLY_SURFACE_VARIANTS.padding\nexport type RlySurfaceElement = \"div\" | \"section\" | \"article\" | \"aside\"\n\ntype RefTarget<Value> = Value extends Ref<infer Target> ? Target : never\ntype ExactRef<Expected, Value> =\n Value extends Ref<Expected> ? (Expected extends RefTarget<Value> ? Value : never) : never\n\nexport type SurfaceProps<\n Element extends RlySurfaceElement = \"div\",\n ElementRef extends Ref<HTMLElementTagNameMap[Element]> = Ref<HTMLElementTagNameMap[Element]>\n> = Omit<ComponentPropsWithoutRef<Element>, \"children\" | \"color\"> & {\n readonly as?: Element\n readonly children: ReactNode\n readonly padding?: RlySurfacePadding\n readonly ref?: ExactRef<HTMLElementTagNameMap[Element], ElementRef>\n readonly form?: RlySurfaceForm\n readonly tone?: RlySurfaceTone\n}\n\n/** Render a quiet, non-interactive structural surface without elevation semantics. */\nexport const Surface = <\n const Element extends RlySurfaceElement = \"div\",\n ElementRef extends Ref<HTMLElementTagNameMap[Element]> = Ref<HTMLElementTagNameMap[Element]>\n>({\n as,\n children,\n className,\n form = \"card\",\n padding = \"default\",\n ref,\n tone = \"primary\",\n ...props\n}: SurfaceProps<Element, ElementRef>): ReactElement =>\n createElement(\n as ?? \"div\",\n {\n ...props,\n className: classNames(\n style(\"root\"),\n RLY_SURFACE_VARIANTS.tone[tone].className,\n RLY_SURFACE_VARIANTS.form[form].className,\n RLY_SURFACE_VARIANTS.padding[padding].className,\n className\n ),\n ref\n },\n children\n )\n","@layer rly.components {\n .root {\n max-inline-size: 100%;\n min-inline-size: var(--rly-space-0);\n }\n\n .list {\n align-items: stretch;\n background: var(--rly-color-surface-2);\n border-radius: var(--rly-radius-field);\n display: flex;\n flex-wrap: wrap;\n gap: var(--rly-space-2);\n max-inline-size: 100%;\n padding: var(--rly-space-4);\n }\n\n .trigger {\n appearance: none;\n background: var(--rly-color-surface-2);\n border: var(--rly-space-0);\n border-radius: var(--rly-radius-tag);\n color: var(--rly-color-text-2);\n cursor: pointer;\n flex: 1 1 10rem;\n max-inline-size: 100%;\n min-inline-size: var(--rly-space-0);\n overflow-wrap: anywhere;\n padding: var(--rly-space-8) var(--rly-space-12);\n position: relative;\n text-align: center;\n }\n\n .trigger::after {\n background: var(--rly-color-action-background);\n block-size: var(--rly-space-2);\n border-radius: var(--rly-radius-round);\n content: \"\";\n inset-block-end: var(--rly-space-2);\n inset-inline: var(--rly-space-12);\n opacity: 0;\n position: absolute;\n }\n\n .trigger[data-state=\"active\"] {\n background: var(--rly-color-surface-1);\n color: var(--rly-color-text-1);\n }\n\n .trigger[data-state=\"active\"]::after {\n opacity: 1;\n }\n .trigger:disabled {\n cursor: not-allowed;\n opacity: 0.58;\n }\n\n .defaultSize .trigger {\n font: var(--rly-type-label-weight) var(--rly-type-label-size) / var(--rly-type-label-line-height)\n var(--rly-type-label-font);\n min-block-size: calc(var(--rly-space-40) + var(--rly-space-4));\n }\n\n .large .trigger {\n font: var(--rly-type-body-weight) var(--rly-type-body-size) / var(--rly-type-body-line-height)\n var(--rly-type-body-font);\n min-block-size: var(--rly-space-48);\n padding-inline: var(--rly-space-16);\n }\n\n .panel {\n color: var(--rly-color-text-1);\n min-inline-size: var(--rly-space-0);\n padding-block-start: var(--rly-space-24);\n }\n\n @media (hover: hover) {\n .trigger:not(:disabled, [data-state=\"active\"]):hover {\n background: var(--rly-color-surface-3);\n color: var(--rly-color-text-1);\n }\n }\n\n @media (max-width: 30rem) {\n .root:not([data-mobile-layout=\"single-row\"]) .trigger[data-state=\"active\"]::after {\n content: none;\n }\n\n :where([data-forced-colors=\"active\"], [data-rly-forced-colors=\"active\"])\n .root:not([data-mobile-layout=\"single-row\"])\n .trigger[data-state=\"active\"]::after {\n content: \"\";\n }\n }\n\n @media (max-width: 30rem) and (forced-colors: active) {\n .root:not([data-mobile-layout=\"single-row\"]) .trigger[data-state=\"active\"]::after {\n content: \"\";\n }\n }\n\n .root[data-mobile-layout=\"single-row\"] .list {\n flex-wrap: nowrap;\n overflow-x: auto;\n }\n\n .root[data-mobile-layout=\"single-row\"] .trigger {\n flex: 1 0 auto;\n max-inline-size: none;\n white-space: nowrap;\n }\n}\n","import type { ComponentPropsWithRef, ReactElement, ReactNode } from \"react\"\nimport { Tabs as RadixTabs } from \"radix-ui\"\nimport { classNames, cssClass, defineVariants, requireText } from \"../internal/component.js\"\nimport styles from \"./Tabs.module.css\"\n\nconst style = (name: string): string => cssClass(styles, name)\n\nexport const RLY_TABS_VARIANTS = defineVariants({\n size: {\n default: {\n className: style(\"defaultSize\"),\n purpose: \"Standard section navigation\",\n tokens: [\"type-label\", \"space-40\", \"space-4\"]\n },\n large: {\n className: style(\"large\"),\n purpose: \"Prominent page-level navigation\",\n tokens: [\"type-body\", \"space-48\"]\n }\n }\n})\n\nexport const RLY_TABS_DEFAULT_VARIANTS = defineVariants({ size: \"default\" })\nexport type RlyTabsSize = keyof typeof RLY_TABS_VARIANTS.size\nexport type RlyTabsDirection = \"ltr\" | \"rtl\"\n\n/** One labelled tab and its presentation-only panel content. */\nexport interface RlyTabItem {\n readonly content: ReactNode\n readonly disabled?: boolean\n /** Retain this panel while inactive. Defaults to unmounting; the caller must style inactive panel visibility. */\n readonly forceMount?: true\n readonly label: string\n readonly value: string\n}\n\ntype TabsBaseProps = Omit<ComponentPropsWithRef<\"div\">, \"aria-label\" | \"children\" | \"defaultValue\" | \"dir\"> & {\n /** Accessible name for the tab list. */\n readonly \"aria-label\": string\n readonly direction?: RlyTabsDirection\n readonly items: ReadonlyArray<RlyTabItem>\n readonly size?: RlyTabsSize\n}\ntype ControlledTabsProps = TabsBaseProps & {\n readonly defaultValue?: never\n readonly onValueChange: (value: string) => void\n readonly value: string\n}\ntype DefaultTabsProps = TabsBaseProps & {\n readonly defaultValue?: string\n readonly onValueChange?: (value: string) => void\n readonly value?: never\n}\nexport type TabsProps = ControlledTabsProps | DefaultTabsProps\n\nconst validateItems = (items: ReadonlyArray<RlyTabItem>): RlyTabItem => {\n if (items.length === 0) throw new Error(\"Tabs items must contain at least one enabled tab\")\n\n const values = new Set<string>()\n let firstEnabled: RlyTabItem | undefined\n for (const item of items) {\n const value = requireText(item.value, \"Tab value\")\n requireText(item.label, `Tab label for ${value}`)\n if (values.has(value)) throw new Error(`Tabs item values must be unique: ${value}`)\n values.add(value)\n if (Boolean(item.disabled) === false && firstEnabled === undefined) firstEnabled = item\n }\n\n if (firstEnabled === undefined) throw new Error(\"Tabs items must contain at least one enabled tab\")\n return firstEnabled\n}\n\n/** Render labelled, keyboard-navigable panels with controlled-first selection. */\nexport const Tabs = ({\n \"aria-label\": ariaLabel,\n className,\n defaultValue,\n direction,\n items,\n onValueChange,\n ref,\n size = \"default\",\n value,\n ...props\n}: TabsProps): ReactElement => {\n const accessibleLabel = requireText(ariaLabel, \"Tabs aria-label\")\n const firstEnabled = validateItems(items)\n const selectedValue = value ?? defaultValue ?? firstEnabled.value\n const selectedItem = items.find((item) => item.value === selectedValue)\n if (selectedItem === undefined || Boolean(selectedItem.disabled) === true) {\n throw new Error(`Tabs selected value must identify an enabled tab: ${selectedValue}`)\n }\n\n const selectionProps =\n value === undefined\n ? onValueChange === undefined\n ? { defaultValue: selectedValue }\n : { defaultValue: selectedValue, onValueChange }\n : { onValueChange, value }\n const directionProps = direction === undefined ? {} : { dir: direction }\n\n return (\n <RadixTabs.Root\n {...props}\n {...selectionProps}\n {...directionProps}\n activationMode=\"automatic\"\n className={classNames(style(\"root\"), RLY_TABS_VARIANTS.size[size].className, className)}\n orientation=\"horizontal\"\n ref={ref}\n >\n <RadixTabs.List aria-label={accessibleLabel} className={style(\"list\")} loop>\n {items.map((item) => (\n <RadixTabs.Trigger\n className={style(\"trigger\")}\n data-tab-value={item.value}\n disabled={item.disabled}\n key={item.value}\n value={item.value}\n >\n {item.label}\n </RadixTabs.Trigger>\n ))}\n </RadixTabs.List>\n {items.map((item) => (\n <RadixTabs.Content\n className={style(\"panel\")}\n {...(item.forceMount === undefined ? {} : { forceMount: item.forceMount })}\n key={item.value}\n value={item.value}\n >\n {item.content}\n </RadixTabs.Content>\n ))}\n </RadixTabs.Root>\n )\n}\n","@layer rly.components {\n .root {\n margin: var(--rly-space-0);\n min-inline-size: var(--rly-space-0);\n overflow-wrap: anywhere;\n }\n\n .verdict,\n .pageTitle,\n .sectionTitle,\n .cardTitle {\n text-wrap: balance;\n }\n\n .bodyLarge,\n .body {\n text-wrap: pretty;\n }\n\n .verdict {\n font: var(--rly-type-verdict-weight) var(--rly-type-verdict-size) / var(--rly-type-verdict-line-height)\n var(--rly-type-verdict-font);\n letter-spacing: var(--rly-type-verdict-tracking);\n }\n\n .pageTitle {\n font: var(--rly-type-page-title-weight) var(--rly-type-page-title-size) / var(--rly-type-page-title-line-height)\n var(--rly-type-page-title-font);\n letter-spacing: var(--rly-type-page-title-tracking);\n }\n\n .sectionTitle {\n font: var(--rly-type-section-title-weight) var(--rly-type-section-title-size) /\n var(--rly-type-section-title-line-height) var(--rly-type-section-title-font);\n letter-spacing: var(--rly-type-section-title-tracking);\n }\n\n .cardTitle {\n font: var(--rly-type-card-title-weight) var(--rly-type-card-title-size) / var(--rly-type-card-title-line-height)\n var(--rly-type-card-title-font);\n letter-spacing: var(--rly-type-card-title-tracking);\n }\n\n .bodyLarge {\n font: var(--rly-type-body-large-weight) var(--rly-type-body-large-size) / var(--rly-type-body-large-line-height)\n var(--rly-type-body-large-font);\n letter-spacing: var(--rly-type-body-large-tracking);\n }\n\n .body {\n font: var(--rly-type-body-weight) var(--rly-type-body-size) / var(--rly-type-body-line-height)\n var(--rly-type-body-font);\n letter-spacing: var(--rly-type-body-tracking);\n }\n\n .label {\n font: var(--rly-type-label-weight) var(--rly-type-label-size) / var(--rly-type-label-line-height)\n var(--rly-type-label-font);\n letter-spacing: var(--rly-type-label-tracking);\n }\n\n .meta {\n font: var(--rly-type-meta-weight) var(--rly-type-meta-size) / var(--rly-type-meta-line-height)\n var(--rly-type-meta-font);\n letter-spacing: var(--rly-type-meta-tracking);\n }\n\n .code {\n font: var(--rly-type-code-weight) var(--rly-type-code-size) / var(--rly-type-code-line-height)\n var(--rly-type-code-font);\n font-variant-numeric: tabular-nums;\n letter-spacing: var(--rly-type-code-tracking);\n white-space: pre-wrap;\n }\n\n .tonePrimary {\n color: var(--rly-color-text-1);\n }\n .toneSecondary {\n color: var(--rly-color-text-2);\n }\n .toneTertiary {\n color: var(--rly-color-text-3);\n }\n .toneInherit {\n color: inherit;\n }\n}\n","import {\n createElement,\n type ComponentPropsWithoutRef,\n type HTMLAttributes,\n type ReactElement,\n type ReactNode,\n type Ref\n} from \"react\"\nimport { classNames, cssClass, defineVariants } from \"../internal/component.js\"\nimport styles from \"./Text.module.css\"\n\nconst style = (name: string): string => cssClass(styles, name)\n\nexport const RLY_TEXT_VARIANTS = defineVariants({\n variant: {\n verdict: { className: style(\"verdict\"), purpose: \"One restrained verdict thesis\", tokens: [\"type-verdict\"] },\n \"page-title\": { className: style(\"pageTitle\"), purpose: \"Primary page title\", tokens: [\"type-page-title\"] },\n \"section-title\": { className: style(\"sectionTitle\"), purpose: \"Section heading\", tokens: [\"type-section-title\"] },\n \"card-title\": { className: style(\"cardTitle\"), purpose: \"Card or panel heading\", tokens: [\"type-card-title\"] },\n \"body-large\": { className: style(\"bodyLarge\"), purpose: \"Leading explanatory copy\", tokens: [\"type-body-large\"] },\n body: { className: style(\"body\"), purpose: \"Default interface copy\", tokens: [\"type-body\"] },\n label: { className: style(\"label\"), purpose: \"Control and metadata labels\", tokens: [\"type-label\"] },\n meta: { className: style(\"meta\"), purpose: \"Supporting metadata\", tokens: [\"type-meta\"] },\n code: { className: style(\"code\"), purpose: \"Code and tabular data\", tokens: [\"type-code\"] }\n },\n tone: {\n primary: { className: style(\"tonePrimary\"), purpose: \"Primary readable text\", tokens: [\"color-text-1\"] },\n secondary: { className: style(\"toneSecondary\"), purpose: \"Supporting text\", tokens: [\"color-text-2\"] },\n tertiary: { className: style(\"toneTertiary\"), purpose: \"Restricted tertiary text\", tokens: [\"color-text-3\"] },\n inherit: { className: style(\"toneInherit\"), purpose: \"Inherit semantic context\", tokens: [] }\n }\n})\n\nexport const RLY_TEXT_DEFAULT_VARIANTS = defineVariants({ variant: \"body\", tone: \"primary\" })\nexport type RlyTextVariant = keyof typeof RLY_TEXT_VARIANTS.variant\nexport type RlyTextTone = keyof typeof RLY_TEXT_VARIANTS.tone\nexport type RlyTextElement =\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"h5\"\n | \"h6\"\n | \"p\"\n | \"span\"\n | \"strong\"\n | \"small\"\n | \"code\"\n | \"pre\"\n | \"time\"\n | \"li\"\n | \"dt\"\n | \"dd\"\n\ntype HeadingVariant = \"page-title\" | \"section-title\" | \"card-title\"\ntype HeadingElement = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"span\"\ntype OtherVariant = Exclude<RlyTextVariant, HeadingVariant>\ntype RefTarget<Value> = Value extends Ref<infer Target> ? Target : never\ntype ExactRef<Expected, Value> =\n Value extends Ref<Expected> ? (Expected extends RefTarget<Value> ? Value : never) : never\ntype TextOwnProps = {\n readonly children: ReactNode\n readonly tone?: RlyTextTone\n}\ntype ExplicitVariantProps<Element extends RlyTextElement> =\n { readonly variant?: OtherVariant } | (Element extends HeadingElement ? { readonly variant: HeadingVariant } : never)\ntype ExplicitTextProps<Element extends RlyTextElement, ElementRef extends Ref<HTMLElementTagNameMap[Element]>> = Omit<\n ComponentPropsWithoutRef<Element>,\n \"as\" | \"children\" | \"color\"\n> &\n TextOwnProps &\n ExplicitVariantProps<Element> & {\n readonly as: Element\n readonly ref?: ExactRef<HTMLElementTagNameMap[Element], ElementRef>\n }\ntype ImplicitTextProps = Omit<HTMLAttributes<HTMLElement>, \"children\" | \"color\"> &\n TextOwnProps & {\n readonly as?: never\n readonly ref?: never\n readonly variant?: OtherVariant\n }\nexport type TextProps<\n Element extends RlyTextElement = RlyTextElement,\n ElementRef extends Ref<HTMLElementTagNameMap[Element]> = Ref<HTMLElementTagNameMap[Element]>\n> = ExplicitTextProps<Element, ElementRef> | ImplicitTextProps\n\ntype TextComponent = <\n const Element extends RlyTextElement = RlyTextElement,\n ElementRef extends Ref<HTMLElementTagNameMap[Element]> = Ref<HTMLElementTagNameMap[Element]>\n>(\n props: TextProps<Element, ElementRef>\n) => ReactElement\ntype TextRuntimeProps = Omit<HTMLAttributes<HTMLElement>, \"color\"> &\n TextOwnProps & {\n readonly as?: RlyTextElement\n readonly ref?: Ref<HTMLElement>\n readonly variant?: RlyTextVariant\n }\n\nconst defaultElement = (variant: RlyTextVariant): RlyTextElement =>\n variant === \"code\" ? \"code\" : variant === \"verdict\" ? \"p\" : variant === \"label\" || variant === \"meta\" ? \"span\" : \"p\"\n\n/** Render semantic typography while keeping visual role separate from document structure. */\nconst renderText = ({\n as,\n children,\n className,\n ref,\n tone = RLY_TEXT_DEFAULT_VARIANTS.tone,\n variant = RLY_TEXT_DEFAULT_VARIANTS.variant,\n ...props\n}: TextRuntimeProps): ReactElement =>\n createElement(\n as ?? defaultElement(variant),\n {\n ...props,\n className: classNames(\n style(\"root\"),\n RLY_TEXT_VARIANTS.variant[variant].className,\n RLY_TEXT_VARIANTS.tone[tone].className,\n className\n ),\n ref\n },\n children\n )\n\nexport const Text: TextComponent = renderText\n","@layer rly.components {\n .root {\n background: var(--rly-color-surface-2);\n border-radius: var(--rly-radius-field);\n display: inline-flex;\n flex-wrap: wrap;\n gap: var(--rly-space-2);\n max-inline-size: 100%;\n padding: var(--rly-space-2);\n }\n\n .item {\n appearance: none;\n background: transparent;\n border: var(--rly-space-0);\n border-radius: var(--rly-radius-tag);\n color: var(--rly-color-text-2);\n cursor: pointer;\n font: inherit;\n padding-inline: var(--rly-space-12);\n white-space: nowrap;\n }\n\n .item[data-state=\"checked\"] {\n background: var(--rly-color-surface-1);\n box-shadow: inset 0 0 0 1px var(--rly-color-border-2);\n color: var(--rly-color-text-1);\n }\n\n .item:focus-visible {\n outline: 2px solid var(--rly-color-focus);\n outline-offset: 1px;\n }\n\n .defaultSize .item {\n font: var(--rly-type-label-weight) var(--rly-type-label-size) / var(--rly-type-label-line-height)\n var(--rly-type-label-font);\n min-block-size: var(--rly-space-40);\n }\n\n .compact .item {\n font: var(--rly-type-meta-weight) var(--rly-type-meta-size) / var(--rly-type-meta-line-height)\n var(--rly-type-meta-font);\n min-block-size: var(--rly-space-32);\n padding-inline: var(--rly-space-8);\n }\n\n /* Fingers need a bigger target than a pointer, whichever size the row uses. */\n @media (pointer: coarse) {\n .defaultSize .item,\n .compact .item {\n min-block-size: calc(var(--rly-space-40) + var(--rly-space-4));\n }\n }\n\n @media (hover: hover) {\n .item:not([data-state=\"checked\"]):hover {\n background: var(--rly-color-surface-3);\n color: var(--rly-color-text-1);\n }\n }\n\n @media (forced-colors: active) {\n .item[data-state=\"checked\"] {\n outline: 2px solid CanvasText;\n }\n }\n}\n","import { type ComponentPropsWithRef, type KeyboardEvent, type ReactElement, useRef } from \"react\"\nimport { RadioGroup as RadixRadioGroup } from \"radix-ui\"\nimport { classNames, cssClass, defineVariants, requireText } from \"../internal/component.js\"\nimport styles from \"./ToggleGroup.module.css\"\n\nconst style = (name: string): string => cssClass(styles, name)\n\nexport const RLY_TOGGLE_GROUP_VARIANTS = defineVariants({\n size: {\n compact: {\n className: style(\"compact\"),\n purpose: \"Dense filter rows beside other controls\",\n tokens: [\"type-meta\", \"space-32\", \"space-2\"]\n },\n default: {\n className: style(\"defaultSize\"),\n purpose: \"Standard view and filter choices\",\n tokens: [\"type-label\", \"space-40\", \"space-2\"]\n }\n }\n})\n\nexport const RLY_TOGGLE_GROUP_DEFAULT_VARIANTS = defineVariants({ size: \"default\" })\nexport type RlyToggleGroupSize = keyof typeof RLY_TOGGLE_GROUP_VARIANTS.size\n\n/** One visibly labelled option. */\nexport interface RlyToggleItem {\n readonly label: string\n readonly value: string\n}\n\n/** Props for a controlled, single-select segmented choice. */\nexport type ToggleGroupProps = Omit<\n ComponentPropsWithRef<\"div\">,\n \"aria-label\" | \"children\" | \"defaultValue\" | \"dir\" | \"onChange\"\n> & {\n /** Accessible name for the group, such as the filter it sets. */\n readonly \"aria-label\": string\n readonly items: ReadonlyArray<RlyToggleItem>\n readonly onValueChange: (value: string) => void\n readonly size?: RlyToggleGroupSize\n readonly value: string\n}\n\n/** How far an arrow key moves the choice; null for any other key. */\nconst stepOf = (key: string): -1 | 1 | null =>\n key === \"ArrowLeft\" || key === \"ArrowUp\" ? -1 : key === \"ArrowRight\" || key === \"ArrowDown\" ? 1 : null\n\nconst validateItems = (items: ReadonlyArray<RlyToggleItem>, value: string): void => {\n const values = new Set<string>()\n for (const item of items) {\n const itemValue = requireText(item.value, \"ToggleGroup item value\")\n requireText(item.label, `ToggleGroup item label for ${itemValue}`)\n if (values.has(itemValue)) throw new Error(`ToggleGroup item values must be unique: ${itemValue}`)\n values.add(itemValue)\n }\n if (!values.has(value)) throw new Error(`ToggleGroup value must identify an option: ${value}`)\n}\n\n/**\n * Choose one of a few peer options, such as a range or a measure, as a radio group: exactly one\n * option is always on, pressing it again changes nothing, and arrow keys move to the next option\n * and choose it.\n */\nexport const ToggleGroup = ({\n \"aria-label\": ariaLabel,\n className,\n items,\n onValueChange,\n ref,\n size = \"default\",\n value,\n ...props\n}: ToggleGroupProps): ReactElement => {\n const accessibleLabel = requireText(ariaLabel, \"ToggleGroup aria-label\")\n validateItems(items, value)\n const options = useRef(new Map<string, HTMLButtonElement>())\n // Radix moves focus a tick after the key and only chooses while the key is still down, so a quick\n // tap would move focus without choosing. Arrows are handled here: the next option is chosen and\n // focused in the same keystroke, wrapping at the ends.\n const choose = (event: KeyboardEvent<HTMLButtonElement>, from: number) => {\n const step = stepOf(event.key)\n if (step === null) return\n event.preventDefault()\n const next = items[(from + step + items.length) % items.length]\n if (next === undefined) return\n // Landing on the chosen option (a group of one, or focus that had wandered off it) is no change\n // to report, but focus still moves there.\n if (next.value !== value) onValueChange(next.value)\n options.current.get(next.value)?.focus()\n }\n return (\n <RadixRadioGroup.Root\n {...props}\n aria-label={accessibleLabel}\n className={classNames(style(\"root\"), RLY_TOGGLE_GROUP_VARIANTS.size[size].className, className)}\n loop\n onValueChange={onValueChange}\n orientation=\"horizontal\"\n ref={ref}\n value={value}\n >\n {items.map((item, index) => (\n <RadixRadioGroup.Item\n className={style(\"item\")}\n key={item.value}\n onKeyDown={(event) => choose(event, index)}\n ref={(element) => {\n if (element === null) options.current.delete(item.value)\n else options.current.set(item.value, element)\n }}\n value={item.value}\n >\n {item.label}\n </RadixRadioGroup.Item>\n ))}\n </RadixRadioGroup.Root>\n )\n}\n"],"mappings":";;;;;;;;;;GCIMC,KAAS,MAAyBqB,EAASpB,GAAQyB,CAAI,GAChDC,IAAuBL,EAAe;CACjD,aAAa;EACX,YAAY;GAAE,WAAWtB,EAAM,YAAY;GAAG,SAAS;GAA4B,QAAQ,CAAC,SAAS;EAAE;EACvG,UAAU;GAAE,WAAWA,EAAM,UAAU;GAAG,SAAS;GAA6B,QAAQ,CAAC,SAAS;EAAE;CACtG;CACA,UAAU;EACR,QAAQ;GAAE,WAAWA,EAAM,QAAQ;GAAG,SAAS;GAA6B,QAAQ,CAAC,gBAAgB;EAAE;EACvG,QAAQ;GAAE,WAAWA,EAAM,QAAQ;GAAG,SAAS;GAAgC,QAAQ,CAAC,gBAAgB;EAAE;CAC5G;AACF,CAAC,GACY4B,IAA+BN,EAAe;CAAE,aAAa;CAAc,UAAU;AAAS,CAAC,GAU/FO,KAAW,EACtB,cACA,gBAAa,IACb,UACA,iBAAc,cACd,cAAW,UACX,GAAGC,QAC6B;CAChC,IAAI,CAACC,KAAcC,MAAU,KAAA,GAAW,MAAU,MAAM,kDAAkD;CAC1G,IAAMC,IAAkBF,KAAcC,MAAU,KAAA,IAAY,KAAA,IAAYZ,EAAYY,GAAO,wBAAwB;CACnH,OACE,kBAAC,OAAD;EACE,GAAIF;EACJ,eAAaC,IAAa,SAAS,KAAA;EACnC,cAAYE;EACZ,oBAAkBF,IAAa,KAAA,IAAYG;EAC3C,WAAWX,EACTvB,EAAM,MAAM,GACZ2B,EAAqB,YAAYO,EAAY,CAAC,WAC9CP,EAAqB,SAASQ,EAAS,CAAC,WACxCC,CACF;EACA,MAAML,IAAa,iBAAiB;CACrC,CAAA;AAEL;;;;;;;;;;;GE9CMzB,KAAS,MAAyBe,EAASd,GAAQmB,CAAI,GAChDa,IAAuBjB,EAAe;CACjD,MAAM;EACJ,SAAS;GACP,WAAWhB,EAAM,aAAa;GAC9B,SAAS;GACT,QAAQ,CAAC,mBAAmB,gBAAgB;EAC9C;EACA,WAAW;GAAE,WAAWA,EAAM,eAAe;GAAG,SAAS;GAA2B,QAAQ,CAAC,iBAAiB;EAAE;EAChH,UAAU;GAAE,WAAWA,EAAM,cAAc;GAAG,SAAS;GAA0B,QAAQ,CAAC,iBAAiB;EAAE;CAC/G;CACA,MAAM;EACJ,MAAM;GAAE,WAAWA,EAAM,WAAW;GAAG,SAAS;GAA0B,QAAQ,CAAC,gBAAgB;EAAE;EACrG,SAAS;GAAE,WAAWA,EAAM,cAAc;GAAG,SAAS;GAA4B,QAAQ,CAAC,cAAc;EAAE;CAC7G;CACA,SAAS;EACP,MAAM;GAAE,WAAWA,EAAM,aAAa;GAAG,SAAS;GAAgC,QAAQ,CAAC,SAAS;EAAE;EACtG,SAAS;GAAE,WAAWA,EAAM,gBAAgB;GAAG,SAAS;GAA4B,QAAQ,CAAC,UAAU;EAAE;EACzG,SAAS;GAAE,WAAWA,EAAM,gBAAgB;GAAG,SAAS;GAAoB,QAAQ,CAAC,UAAU;EAAE;EACjG,UAAU;GAAE,WAAWA,EAAM,iBAAiB;GAAG,SAAS;GAA6B,QAAQ,CAAC,UAAU;EAAE;CAC9G;AACF,CAAC,GACYkC,IAA+BlB,EAAe;CAAE,MAAM;CAAW,MAAM;CAAQ,SAAS;AAAU,CAAC,GAuBnGmB,KAGX,EACA,OACA,aACA,cACA,UAAO,QACP,aAAU,WACV,QACA,UAAO,WACP,GAAGX,QAEHY,EACEC,KAAM,OACN;CACE,GAAGb;CACH,WAAWP,EACTjB,EAAM,MAAM,GACZiC,EAAqB,KAAKK,EAAK,CAAC,WAChCL,EAAqB,KAAKM,EAAK,CAAC,WAChCN,EAAqB,QAAQO,EAAQ,CAAC,WACtCV,CACF;CACA;AACF,GACAW,CACF;;;;;;;GEvEIrC,KAAS,MAAyBW,EAASV,GAAQe,CAAI,GAEhDwB,IAAoB5B,EAAe,EAC9C,MAAM;CACJ,SAAS;EACP,WAAWZ,EAAM,aAAa;EAC9B,SAAS;EACT,QAAQ;GAAC;GAAc;GAAY;EAAS;CAC9C;CACA,OAAO;EACL,WAAWA,EAAM,OAAO;EACxB,SAAS;EACT,QAAQ,CAAC,aAAa,UAAU;CAClC;AACF,EACF,CAAC,GAEYyC,IAA4B7B,EAAe,EAAE,MAAM,UAAU,CAAC,GAiCrEV,KAAiB,MAAiD;CACtE,IAAIyC,EAAM,WAAW,GAAG,MAAU,MAAM,kDAAkD;CAE1F,IAAMC,oBAAS,IAAI,IAAY,GAC3BC;CACJ,KAAK,IAAMC,KAAQH,GAAO;EACxB,IAAMI,IAAQrC,EAAYoC,EAAK,OAAO,WAAW;EAEjD,IADApC,EAAYoC,EAAK,OAAO,iBAAiBC,GAAO,GAC5CH,EAAO,IAAIG,CAAK,GAAG,MAAU,MAAM,oCAAoCA,GAAO;EAElF,AADAH,EAAO,IAAIG,CAAK,GACZ,CAAQD,EAAK,YAAuBD,MAAiB,KAAA,MAAW,IAAeC;CACrF;CAEA,IAAID,MAAiB,KAAA,GAAW,MAAU,MAAM,kDAAkD;CAClG,OAAOA;AACT,GAGa1C,KAAQ,EACnB,cAAc8C,GACd,cACA,iBACA,cACA,UACA,kBACA,QACA,UAAO,WACP,UACA,GAAG7B,QAC0B;CAC7B,IAAMG,IAAkBb,EAAYuC,GAAW,iBAAiB,GAC1DJ,IAAe3C,EAAcyC,CAAK,GAClCO,IAAgBH,KAASI,KAAgBN,EAAa,OACtDO,IAAeT,EAAM,MAAM,MAASG,EAAK,UAAUI,CAAa;CACtE,IAAIE,MAAiB,KAAA,KAAqBA,EAAa,UACrD,MAAU,MAAM,qDAAqDF,GAAe;CAGtF,IAAMG,IACJN,MAAU,KAAA,IACNO,MAAkB,KAAA,IAChB,EAAE,cAAcJ,EAAc,IAC9B;EAAE,cAAcA;EAAe;CAAc,IAC/C;EAAE;EAAe;CAAM,GACvBK,IAAiBC,MAAc,KAAA,IAAY,CAAC,IAAI,EAAE,KAAKA,EAAU;CAEvE,OACE,kBAACpD,EAAU,MAAX;EACE,GAAIgB;EACJ,GAAIiC;EACJ,GAAIE;EACJ,gBAAe;EACf,WAAW1C,EAAWb,EAAM,MAAM,GAAGwC,EAAkB,KAAKkB,EAAK,CAAC,WAAWhC,CAAS;EACtF,aAAY;EACP;EAPP,UAAA,CASE,kBAACtB,EAAU,MAAX;GAAgB,cAAYmB;GAAiB,WAAWvB,EAAM,MAAM;GAAG,MAAA;GACpE,UAAA2C,EAAM,KAAK,MACV,kBAACvC,EAAU,SAAX;IACE,WAAWJ,EAAM,SAAS;IAC1B,kBAAgB8C,EAAK;IACrB,UAAUA,EAAK;IAEf,OAAOA,EAAK;IAEX,UAAAA,EAAK;GACW,GAJZA,EAAK,KAIO,CACpB;EACa,CAAA,GACfH,EAAM,KAAK,MACV,kBAACvC,EAAU,SAAX;GACE,WAAWJ,EAAM,OAAO;GACxB,GAAK8C,EAAK,eAAe,KAAA,IAAY,CAAC,IAAI,EAAE,YAAYA,EAAK,WAAW;GACxE,KAAKA,EAAK;GACV,OAAOA,EAAK;EAGK,GADhBA,EAAK,OACW,CACpB,CACa;;AAEpB;;;;;;;;;;;;;;;GE7HMxC,KAAS,MAAyBK,EAASJ,GAAQS,CAAI,GAEhD6C,IAAoBjD,EAAe;CAC9C,SAAS;EACP,SAAS;GAAE,WAAWN,EAAM,SAAS;GAAG,SAAS;GAAiC,QAAQ,CAAC,cAAc;EAAE;EAC3G,cAAc;GAAE,WAAWA,EAAM,WAAW;GAAG,SAAS;GAAsB,QAAQ,CAAC,iBAAiB;EAAE;EAC1G,iBAAiB;GAAE,WAAWA,EAAM,cAAc;GAAG,SAAS;GAAmB,QAAQ,CAAC,oBAAoB;EAAE;EAChH,cAAc;GAAE,WAAWA,EAAM,WAAW;GAAG,SAAS;GAAyB,QAAQ,CAAC,iBAAiB;EAAE;EAC7G,cAAc;GAAE,WAAWA,EAAM,WAAW;GAAG,SAAS;GAA4B,QAAQ,CAAC,iBAAiB;EAAE;EAChH,MAAM;GAAE,WAAWA,EAAM,MAAM;GAAG,SAAS;GAA0B,QAAQ,CAAC,WAAW;EAAE;EAC3F,OAAO;GAAE,WAAWA,EAAM,OAAO;GAAG,SAAS;GAA+B,QAAQ,CAAC,YAAY;EAAE;EACnG,MAAM;GAAE,WAAWA,EAAM,MAAM;GAAG,SAAS;GAAuB,QAAQ,CAAC,WAAW;EAAE;EACxF,MAAM;GAAE,WAAWA,EAAM,MAAM;GAAG,SAAS;GAAyB,QAAQ,CAAC,WAAW;EAAE;CAC5F;CACA,MAAM;EACJ,SAAS;GAAE,WAAWA,EAAM,aAAa;GAAG,SAAS;GAAyB,QAAQ,CAAC,cAAc;EAAE;EACvG,WAAW;GAAE,WAAWA,EAAM,eAAe;GAAG,SAAS;GAAmB,QAAQ,CAAC,cAAc;EAAE;EACrG,UAAU;GAAE,WAAWA,EAAM,cAAc;GAAG,SAAS;GAA4B,QAAQ,CAAC,cAAc;EAAE;EAC5G,SAAS;GAAE,WAAWA,EAAM,aAAa;GAAG,SAAS;GAA4B,QAAQ,CAAC;EAAE;CAC9F;AACF,CAAC,GAEYwD,IAA4BlD,EAAe;CAAE,SAAS;CAAQ,MAAM;AAAU,CAAC,GAkEtFmD,KAAkB,MACtBC,MAAY,SAAS,SAASA,MAAY,YAAY,MAAMA,MAAY,WAAWA,MAAY,SAAS,SAAS,KA2BtGC,KAxBO,EAClB,OACA,aACA,cACA,QACA,UAAOH,EAA0B,MACjC,aAAUA,EAA0B,SACpC,GAAG1C,QAEHY,EACEC,KAAM8B,EAAeC,CAAO,GAC5B;CACE,GAAG5C;CACH,WAAWP,EACTP,EAAM,MAAM,GACZuD,EAAkB,QAAQG,EAAQ,CAAC,WACnCH,EAAkB,KAAK3B,EAAK,CAAC,WAC7BR,CACF;CACA;AACF,GACAW,CACF;;;;;GExHI8B,KAAS,MAAyBxD,EAASH,GAAQQ,CAAI,GAEhDoD,IAA4BxD,EAAe,EACtD,MAAM;CACJ,SAAS;EACP,WAAWuD,EAAM,SAAS;EAC1B,SAAS;EACT,QAAQ;GAAC;GAAa;GAAY;EAAS;CAC7C;CACA,SAAS;EACP,WAAWA,EAAM,aAAa;EAC9B,SAAS;EACT,QAAQ;GAAC;GAAc;GAAY;EAAS;CAC9C;AACF,EACF,CAAC,GAEYE,IAAoCzD,EAAe,EAAE,MAAM,UAAU,CAAC,GAuB7E0D,KAAU,MACdC,MAAQ,eAAeA,MAAQ,YAAY,KAAKA,MAAQ,gBAAgBA,MAAQ,cAAc,IAAI,MAE9FC,KAAiB,GAAqC,MAAwB;CAClF,IAAM5B,oBAAS,IAAI,IAAY;CAC/B,KAAK,IAAME,KAAQH,GAAO;EACxB,IAAM8B,IAAY/D,EAAYoC,EAAK,OAAO,wBAAwB;EAElE,IADApC,EAAYoC,EAAK,OAAO,8BAA8B2B,GAAW,GAC7D7B,EAAO,IAAI6B,CAAS,GAAG,MAAU,MAAM,2CAA2CA,GAAW;EACjG,EAAO,IAAIA,CAAS;CACtB;CACA,IAAI,CAAC7B,EAAO,IAAIG,CAAK,GAAG,MAAU,MAAM,8CAA8CA,GAAO;AAC/F,GAOa2B,KAAe,EAC1B,cAAczB,GACd,cACA,UACA,kBACA,QACA,UAAO,WACP,UACA,GAAG7B,QACiC;CACpC,IAAMG,IAAkBb,EAAYuC,GAAW,wBAAwB;CACvE,EAAcN,GAAOI,CAAK;CAC1B,IAAM4B,IAAUC,kBAAO,IAAI,IAA+B,CAAC,GAIrDC,KAAU,GAAyC,MAAiB;EACxE,IAAMC,IAAOR,EAAOS,EAAM,GAAG;EAC7B,IAAID,MAAS,MAAM;EACnB,EAAM,eAAe;EACrB,IAAME,IAAOrC,GAAOsC,IAAOH,IAAOnC,EAAM,UAAUA,EAAM;EACxD,AAAIqC,MAAS,KAAA,MAGTA,EAAK,UAAUjC,KAAOO,EAAc0B,EAAK,KAAK,GAClDL,EAAQ,QAAQ,IAAIK,EAAK,KAAK,CAAC,EAAE,MAAM;CACzC;CACA,OACE,kBAACvE,EAAgB,MAAjB;EACE,GAAIW;EACJ,cAAYG;EACZ,WAAWV,EAAWsD,EAAM,MAAM,GAAGC,EAA0B,KAAKV,EAAK,CAAC,WAAWhC,CAAS;EAC9F,MAAA;EACe;EACf,aAAY;EACP;EACE;EAEN,UAAAiB,EAAM,KAAK,GAAM,MAChB,kBAAClC,EAAgB,MAAjB;GACE,WAAW0D,EAAM,MAAM;GAEvB,YAAY,MAAUU,EAAOE,GAAOI,CAAK;GACzC,MAAM,MAAY;IAChB,AAAIC,MAAY,OAAMT,EAAQ,QAAQ,OAAO7B,EAAK,KAAK,IAClD6B,EAAQ,QAAQ,IAAI7B,EAAK,OAAOsC,CAAO;GAC9C;GACA,OAAOtC,EAAK;GAEX,UAAAA,EAAK;EACc,GATfA,EAAK,KASU,CACvB;CACmB,CAAA;AAE1B"}
|