@kanso-labs/kanso-ui 0.34.2 → 0.34.3

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":"index.js","names":["stylex","RenderComponentProps","useRender","mergeStyles","colors","typography","styles","base","kB7OPa","kogj98","$$css","bodyLarge","kMv6JI","kGuDYH","k63SB2","kb6lSQ","kLWn49","bodyMedium","bodySmall","displayLarge","displayMedium","displaySmall","headlineLarge","headlineMedium","headlineSmall","labelLarge","labelMedium","labelSmall","titleLarge","titleMedium","titleSmall","tones","default","kMwMTN","error","inherit","muted","negative","positive","primary","TextProps","block","tone","variant","Text","t0","$","_c","render","t1","t2","t3","t4","t5","t6","t7","t8","props","undefined","defaultTagName"],"sources":["../../../src/components/text/index.tsx"],"sourcesContent":["import * as stylex from '@stylexjs/stylex';\nimport type { RenderComponentProps } from '../../render/useRender';\nimport { useRender } from '../../render/useRender';\nimport { mergeStyles } from '../../styles/merge';\nimport '../../tokens/design.tokens.stylex';\nimport { colors, typography } from '../../tokens/design.tokens.stylex';\n\n// One key per style in the 15-entry type scale, named exactly as the token\n// group names it, so `styles[variant]` indexes straight off the prop with no\n// lookup table to keep in sync. Every style sets all five fields the scale\n// defines rather than inheriting any of them: a Text nested inside another\n// Text would otherwise pick up the outer line-height or tracking, which is\n// the kind of drift the scale exists to prevent.\n//\n// `margin: 0` is the one UA reset here. Text renders a <span> by default, but\n// `block` renders a <p> and `render` is how a consumer reaches for any other\n// semantic markup — `<Text render={<h2 />}>` — and the UA margin on either\n// would then vary the spacing around otherwise identical type. The space\n// between two blocks of text is the job of whatever holds them, which is\n// where it can come from the spacing scale.\nconst styles = {\n base: {\n kB7OPa: \"x9f619\",\n kogj98: \"x1ghz6dp\",\n $$css: true\n },\n bodyLarge: {\n kMv6JI: \"x16svsjw\",\n kGuDYH: \"x1848etk\",\n k63SB2: \"x1c52epr\",\n kb6lSQ: \"x1qn8t5l\",\n kLWn49: \"xh7dzej\",\n $$css: true\n },\n bodyMedium: {\n kMv6JI: \"xpo2rfv\",\n kGuDYH: \"x193rfdd\",\n k63SB2: \"x1hews6w\",\n kb6lSQ: \"xn43zvd\",\n kLWn49: \"xv61bfh\",\n $$css: true\n },\n bodySmall: {\n kMv6JI: \"x1yicsit\",\n kGuDYH: \"x1b35g6e\",\n k63SB2: \"x9d6959\",\n kb6lSQ: \"xwth0xh\",\n kLWn49: \"xybisxh\",\n $$css: true\n },\n displayLarge: {\n kMv6JI: \"xjaampf\",\n kGuDYH: \"xuyiek4\",\n k63SB2: \"x1n2oj23\",\n kb6lSQ: \"x1hxa6v5\",\n kLWn49: \"x1iwmiir\",\n $$css: true\n },\n displayMedium: {\n kMv6JI: \"x1gi70vc\",\n kGuDYH: \"xlzzeuu\",\n k63SB2: \"xh9quta\",\n kb6lSQ: \"x148mp24\",\n kLWn49: \"xs5hucj\",\n $$css: true\n },\n displaySmall: {\n kMv6JI: \"x1eslvzl\",\n kGuDYH: \"x1g52wnc\",\n k63SB2: \"x1x664hp\",\n kb6lSQ: \"x1rnjaw4\",\n kLWn49: \"x92ldg4\",\n $$css: true\n },\n headlineLarge: {\n kMv6JI: \"x1vsmgmf\",\n kGuDYH: \"xh9c4x\",\n k63SB2: \"x1y15vu6\",\n kb6lSQ: \"xoqu3bc\",\n kLWn49: \"x10x9d6x\",\n $$css: true\n },\n headlineMedium: {\n kMv6JI: \"x18s19nt\",\n kGuDYH: \"xcohea8\",\n k63SB2: \"x1mtpwof\",\n kb6lSQ: \"x1kuyk5j\",\n kLWn49: \"xucx483\",\n $$css: true\n },\n headlineSmall: {\n kMv6JI: \"x1fz0g89\",\n kGuDYH: \"xkb6epg\",\n k63SB2: \"x76yrz5\",\n kb6lSQ: \"x1s1qhaa\",\n kLWn49: \"x1voeury\",\n $$css: true\n },\n labelLarge: {\n kMv6JI: \"xkknnkr\",\n kGuDYH: \"x14zspaw\",\n k63SB2: \"x1v9cpvo\",\n kb6lSQ: \"x155f00i\",\n kLWn49: \"x1lz68p4\",\n $$css: true\n },\n labelMedium: {\n kMv6JI: \"xp6n8n2\",\n kGuDYH: \"xkucv67\",\n k63SB2: \"x14hhc5u\",\n kb6lSQ: \"x12utw95\",\n kLWn49: \"xvzb9hk\",\n $$css: true\n },\n labelSmall: {\n kMv6JI: \"xs1w0rn\",\n kGuDYH: \"x1n35her\",\n k63SB2: \"x1su64ma\",\n kb6lSQ: \"xdlnduh\",\n kLWn49: \"xaomhve\",\n $$css: true\n },\n titleLarge: {\n kMv6JI: \"xdy5w5q\",\n kGuDYH: \"xete2z3\",\n k63SB2: \"x14ijtet\",\n kb6lSQ: \"xug9e1u\",\n kLWn49: \"x2divse\",\n $$css: true\n },\n titleMedium: {\n kMv6JI: \"x46eyla\",\n kGuDYH: \"x5ehqhr\",\n k63SB2: \"xrf6cl6\",\n kb6lSQ: \"x1g135zh\",\n kLWn49: \"x1ggk5va\",\n $$css: true\n },\n titleSmall: {\n kMv6JI: \"xrgwony\",\n kGuDYH: \"x12s497w\",\n k63SB2: \"x1szcwkt\",\n kb6lSQ: \"xo803ec\",\n kLWn49: \"xyl1r0q\",\n $$css: true\n }\n};\n\n// Tone is a separate axis from variant so the two compose freely — any of the\n// 15 scale styles in any of these colors. Kept to the roles text actually\n// takes on a surface; a consumer needing something outside this set uses\n// `inherit` and colors the parent, rather than this growing a case per role.\nconst tones = {\n default: {\n kMwMTN: \"x139gbkf\",\n $$css: true\n },\n error: {\n kMwMTN: \"x4ii1qj\",\n $$css: true\n },\n inherit: {\n kMwMTN: \"x1heor9g\",\n $$css: true\n },\n muted: {\n kMwMTN: \"x1w5n3ug\",\n $$css: true\n },\n negative: {\n kMwMTN: \"x12gp0t\",\n $$css: true\n },\n positive: {\n kMwMTN: \"x4no3js\",\n $$css: true\n },\n primary: {\n kMwMTN: \"x1mxwv8y\",\n $$css: true\n }\n};\ntype TextProps = {\n /**\n * Renders a `<p>` rather than the default `<span>`, for a block of prose\n * rather than a run of text inside one.\n *\n * The paragraph carries no margin of its own, the same as every other Text.\n * The space between two paragraphs belongs to whatever holds both of them,\n * which is where it can be a step of the spacing scale rather than a\n * browser default.\n *\n * Ignored when `render` is given, since that names the element outright.\n * @default false\n */\n block?: boolean;\n /**\n * The color role to render in. `inherit` takes the color of the nearest\n * colored ancestor instead of setting one.\n *\n * `default` is the on-surface role `Currency` and `Tag` call `neutral` —\n * see AGENTS.md, under Prop vocabularies, which settles on that word. This\n * one predates the rule, and renaming a public prop's value is a breaking\n * change of its own.\n *\n * Every role here is guaranteed legible on the surface family, which is\n * what the library's own tokens and every demo scheme are held to. Over a\n * container of its own — a selected row, a filled card — `positive`,\n * `negative` and `error` are one colour family on top of another and are\n * not guaranteed, so a custom theme placing text there has to check that\n * pair itself. `inherit` is the way out: it takes the container's own\n * on-colour rather than setting one.\n * @default 'default'\n */\n tone?: 'default' | 'error' | 'inherit' | 'muted' | 'negative' | 'positive' | 'primary';\n /**\n * Which style of the type scale to render.\n * @default 'bodyMedium'\n */\n variant?: 'bodyLarge' | 'bodyMedium' | 'bodySmall' | 'displayLarge' | 'displayMedium' | 'displaySmall' | 'headlineLarge' | 'headlineMedium' | 'headlineSmall' | 'labelLarge' | 'labelMedium' | 'labelSmall' | 'titleLarge' | 'titleMedium' | 'titleSmall';\n} & RenderComponentProps<'span'>;\nfunction Text({\n block = false,\n render,\n tone = 'default',\n variant = 'bodyMedium',\n ...props\n}: TextProps) {\n return useRender({\n // Card switches its default element the same way, and the props type\n // stays the span's for the same reason: the two differ only in the ref's\n // element interface, and neither adds anything a call site reaches for.\n defaultTagName: block ? 'p' : 'span',\n props: {\n ...props,\n ...mergeStyles(stylex.props(styles.base, styles[variant], tones[tone]), props)\n },\n render\n });\n}\nexport type { TextProps };\nexport default Text;"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["stylex","RenderComponentProps","useRender","mergeStyles","colors","typography","styles","base","kB7OPa","kogj98","$$css","bodyLarge","kMv6JI","kGuDYH","k63SB2","kb6lSQ","kLWn49","bodyMedium","bodySmall","displayLarge","displayMedium","displaySmall","headlineLarge","headlineMedium","headlineSmall","labelLarge","labelMedium","labelSmall","titleLarge","titleMedium","titleSmall","tones","default","kMwMTN","error","inherit","muted","negative","positive","primary","TextProps","block","tone","variant","Text","t0","$","_c","render","t1","t2","t3","t4","t5","t6","t7","t8","props","undefined","defaultTagName"],"sources":["../../../src/components/text/index.tsx"],"sourcesContent":["import * as stylex from '@stylexjs/stylex';\nimport type { RenderComponentProps } from '../../render/useRender';\nimport { useRender } from '../../render/useRender';\nimport { mergeStyles } from '../../styles/merge';\nimport '../../tokens/design.tokens.stylex';\nimport { colors, typography } from '../../tokens/design.tokens.stylex';\n\n// The type scale on Material Design's typography pages: fifteen styles, the\n// display, headline, title, body and label roles at large, medium and small.\n// Each is a size, a line height, a tracking, a weight and a typeface — the\n// scale's brand face for display, headline and the large title, its plain\n// face for the rest. The values are the tokens', which carry the scale's own\n// numbers, so no style here writes one down.\n//\n// One key per style in the 15-entry type scale, named exactly as the token\n// group names it, so `styles[variant]` indexes straight off the prop with no\n// lookup table to keep in sync. Every style sets all five fields the scale\n// defines rather than inheriting any of them: a Text nested inside another\n// Text would otherwise pick up the outer line-height or tracking, which is\n// the kind of drift the scale exists to prevent.\n//\n// `margin: 0` is the one UA reset here. Text renders a <span> by default, but\n// `block` renders a <p> and `render` is how a consumer reaches for any other\n// semantic markup — `<Text render={<h2 />}>` — and the UA margin on either\n// would then vary the spacing around otherwise identical type. The space\n// between two blocks of text is the job of whatever holds them, which is\n// where it can come from the spacing scale.\nconst styles = {\n base: {\n kB7OPa: \"x9f619\",\n kogj98: \"x1ghz6dp\",\n $$css: true\n },\n bodyLarge: {\n kMv6JI: \"x16svsjw\",\n kGuDYH: \"x1848etk\",\n k63SB2: \"x1c52epr\",\n kb6lSQ: \"x1qn8t5l\",\n kLWn49: \"xh7dzej\",\n $$css: true\n },\n bodyMedium: {\n kMv6JI: \"xpo2rfv\",\n kGuDYH: \"x193rfdd\",\n k63SB2: \"x1hews6w\",\n kb6lSQ: \"xn43zvd\",\n kLWn49: \"xv61bfh\",\n $$css: true\n },\n bodySmall: {\n kMv6JI: \"x1yicsit\",\n kGuDYH: \"x1b35g6e\",\n k63SB2: \"x9d6959\",\n kb6lSQ: \"xwth0xh\",\n kLWn49: \"xybisxh\",\n $$css: true\n },\n displayLarge: {\n kMv6JI: \"xjaampf\",\n kGuDYH: \"xuyiek4\",\n k63SB2: \"x1n2oj23\",\n kb6lSQ: \"x1hxa6v5\",\n kLWn49: \"x1iwmiir\",\n $$css: true\n },\n displayMedium: {\n kMv6JI: \"x1gi70vc\",\n kGuDYH: \"xlzzeuu\",\n k63SB2: \"xh9quta\",\n kb6lSQ: \"x148mp24\",\n kLWn49: \"xs5hucj\",\n $$css: true\n },\n displaySmall: {\n kMv6JI: \"x1eslvzl\",\n kGuDYH: \"x1g52wnc\",\n k63SB2: \"x1x664hp\",\n kb6lSQ: \"x1rnjaw4\",\n kLWn49: \"x92ldg4\",\n $$css: true\n },\n headlineLarge: {\n kMv6JI: \"x1vsmgmf\",\n kGuDYH: \"xh9c4x\",\n k63SB2: \"x1y15vu6\",\n kb6lSQ: \"xoqu3bc\",\n kLWn49: \"x10x9d6x\",\n $$css: true\n },\n headlineMedium: {\n kMv6JI: \"x18s19nt\",\n kGuDYH: \"xcohea8\",\n k63SB2: \"x1mtpwof\",\n kb6lSQ: \"x1kuyk5j\",\n kLWn49: \"xucx483\",\n $$css: true\n },\n headlineSmall: {\n kMv6JI: \"x1fz0g89\",\n kGuDYH: \"xkb6epg\",\n k63SB2: \"x76yrz5\",\n kb6lSQ: \"x1s1qhaa\",\n kLWn49: \"x1voeury\",\n $$css: true\n },\n labelLarge: {\n kMv6JI: \"xkknnkr\",\n kGuDYH: \"x14zspaw\",\n k63SB2: \"x1v9cpvo\",\n kb6lSQ: \"x155f00i\",\n kLWn49: \"x1lz68p4\",\n $$css: true\n },\n labelMedium: {\n kMv6JI: \"xp6n8n2\",\n kGuDYH: \"xkucv67\",\n k63SB2: \"x14hhc5u\",\n kb6lSQ: \"x12utw95\",\n kLWn49: \"xvzb9hk\",\n $$css: true\n },\n labelSmall: {\n kMv6JI: \"xs1w0rn\",\n kGuDYH: \"x1n35her\",\n k63SB2: \"x1su64ma\",\n kb6lSQ: \"xdlnduh\",\n kLWn49: \"xaomhve\",\n $$css: true\n },\n titleLarge: {\n kMv6JI: \"xdy5w5q\",\n kGuDYH: \"xete2z3\",\n k63SB2: \"x14ijtet\",\n kb6lSQ: \"xug9e1u\",\n kLWn49: \"x2divse\",\n $$css: true\n },\n titleMedium: {\n kMv6JI: \"x46eyla\",\n kGuDYH: \"x5ehqhr\",\n k63SB2: \"xrf6cl6\",\n kb6lSQ: \"x1g135zh\",\n kLWn49: \"x1ggk5va\",\n $$css: true\n },\n titleSmall: {\n kMv6JI: \"xrgwony\",\n kGuDYH: \"x12s497w\",\n k63SB2: \"x1szcwkt\",\n kb6lSQ: \"xo803ec\",\n kLWn49: \"xyl1r0q\",\n $$css: true\n }\n};\n\n// Tone is a separate axis from variant so the two compose freely — any of the\n// 15 scale styles in any of these colors. Kept to the roles text actually\n// takes on a surface; a consumer needing something outside this set uses\n// `inherit` and colors the parent, rather than this growing a case per role.\nconst tones = {\n default: {\n kMwMTN: \"x139gbkf\",\n $$css: true\n },\n error: {\n kMwMTN: \"x4ii1qj\",\n $$css: true\n },\n inherit: {\n kMwMTN: \"x1heor9g\",\n $$css: true\n },\n muted: {\n kMwMTN: \"x1w5n3ug\",\n $$css: true\n },\n negative: {\n kMwMTN: \"x12gp0t\",\n $$css: true\n },\n positive: {\n kMwMTN: \"x4no3js\",\n $$css: true\n },\n primary: {\n kMwMTN: \"x1mxwv8y\",\n $$css: true\n }\n};\ntype TextProps = {\n /**\n * Renders a `<p>` rather than the default `<span>`, for a block of prose\n * rather than a run of text inside one.\n *\n * The paragraph carries no margin of its own, the same as every other Text.\n * The space between two paragraphs belongs to whatever holds both of them,\n * which is where it can be a step of the spacing scale rather than a\n * browser default.\n *\n * Ignored when `render` is given, since that names the element outright.\n * @default false\n */\n block?: boolean;\n /**\n * The color role to render in. `inherit` takes the color of the nearest\n * colored ancestor instead of setting one.\n *\n * `default` is the on-surface role `Currency` and `Tag` call `neutral` —\n * see AGENTS.md, under Prop vocabularies, which settles on that word. This\n * one predates the rule, and renaming a public prop's value is a breaking\n * change of its own.\n *\n * Every role here is guaranteed legible on the surface family, which is\n * what the library's own tokens and every demo scheme are held to. Over a\n * container of its own — a selected row, a filled card — `positive`,\n * `negative` and `error` are one colour family on top of another and are\n * not guaranteed, so a custom theme placing text there has to check that\n * pair itself. `inherit` is the way out: it takes the container's own\n * on-colour rather than setting one.\n * @default 'default'\n */\n tone?: 'default' | 'error' | 'inherit' | 'muted' | 'negative' | 'positive' | 'primary';\n /**\n * Which style of the type scale to render.\n * @default 'bodyMedium'\n */\n variant?: 'bodyLarge' | 'bodyMedium' | 'bodySmall' | 'displayLarge' | 'displayMedium' | 'displaySmall' | 'headlineLarge' | 'headlineMedium' | 'headlineSmall' | 'labelLarge' | 'labelMedium' | 'labelSmall' | 'titleLarge' | 'titleMedium' | 'titleSmall';\n} & RenderComponentProps<'span'>;\nfunction Text({\n block = false,\n render,\n tone = 'default',\n variant = 'bodyMedium',\n ...props\n}: TextProps) {\n return useRender({\n // Card switches its default element the same way, and the props type\n // stays the span's for the same reason: the two differ only in the ref's\n // element interface, and neither adds anything a call site reaches for.\n defaultTagName: block ? 'p' : 'span',\n props: {\n ...props,\n ...mergeStyles(stylex.props(styles.base, styles[variant], tones[tone]), props)\n },\n render\n });\n}\nexport type { TextProps };\nexport default Text;"],"mappings":"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"}
@@ -21,7 +21,7 @@ type TextAreaProps = {
21
21
  * Read with the field on focus rather than as the value changes, so it
22
22
  * names the limit and not what is left of it. The visible count is hidden
23
23
  * from the tree, which is what this replaces.
24
- * @default `Up to ${maxLength} characters`
24
+ * @default `Up to ${maxLength} characters`, singular for a limit of one
25
25
  */
26
26
  characterLimitLabel?: string;
27
27
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["ReactNode","TextFieldProps","RACTextFieldProps","stylex","TextField","RACTextField","FieldVariant","FieldBox","FieldMessage","FieldTextArea","fieldStyles","invalidFrom","useFieldValidationBehavior","mergeStatefulStyles","TextAreaProps","autosize","characterCount","characterLimitLabel","description","error","floatingLabel","label","leadingIcon","rows","trailingIcon","variant","Omit","TextArea","t0","$","_c","t1","t2","t3","isDisabled","t4","t5","t6","props","undefined","validationBehavior","T0","t7","t8","root","t9","t10","t11","maxLength","t12"],"sources":["../../../src/components/text-area/index.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport type { TextFieldProps as RACTextFieldProps } from 'react-aria-components';\nimport * as stylex from '@stylexjs/stylex';\nimport { TextField as RACTextField } from 'react-aria-components';\nimport type { FieldVariant } from '../../field';\nimport { FieldBox, FieldMessage, FieldTextArea } from '../../field';\nimport { fieldStyles, invalidFrom, useFieldValidationBehavior } from '../../field/root';\nimport { mergeStatefulStyles } from '../../styles/merge';\n\n// The text fields page's multi-line configuration of the filled field: the\n// same box, floating label, icons, underline and message as TextField,\n// holding a text area rather than an input. The page gives the box 56dp by\n// default and 8dp of padding above and below, with the label vertically\n// centred while the field is empty; a box holding more than one line keeps\n// the padding and grows, which is the chrome's `multiline` box, and its\n// icons stay centred in its height as it does. The page draws no resize\n// handle, and none is drawn here.\n//\n// Its own component rather than a prop of TextField, so `rows` and\n// `autosize` stay off TextField's type and `numeric` stays off this one.\n\ntype TextAreaProps = {\n /**\n * Whether the field grows with the text it holds, from `rows` up. `false`\n * keeps it at `rows` and scrolls the text inside.\n * @default true\n */\n autosize?: boolean;\n /**\n * Whether to count the characters the field holds at the end of the\n * supporting line, against `maxLength` where there is one, as the text\n * fields page's character counter does.\n * @default false\n */\n characterCount?: boolean;\n /**\n * How the limit is said to a screen reader, where there is a `maxLength`.\n * Read with the field on focus rather than as the value changes, so it\n * names the limit and not what is left of it. The visible count is hidden\n * from the tree, which is what this replaces.\n * @default `Up to ${maxLength} characters`\n */\n characterLimitLabel?: string;\n /**\n * A hint shown under the field. Replaced by `error` when there is one, so\n * the two never stack.\n */\n description?: string;\n /**\n * The problem with the current value, in words. Its presence is what puts\n * the field in its error state — the message, the red underline, and\n * `aria-invalid` all follow from it.\n *\n * Outside a `Form` the message line arrives with the message, so the\n * field grows when this does and moves what is under it. A `Form` holds\n * that space from the start; so does a permanent `description`.\n */\n error?: string;\n /**\n * Whether the label sits in the empty box and floats to the top once the\n * field is focused or holds a value, as the text fields page draws it.\n * `false` keeps it small at the top in every state.\n * @default true\n */\n floatingLabel?: boolean;\n /**\n * What the field is for. Required rather than optional: a text area with\n * no label is a box a screen reader cannot name.\n */\n label: string;\n /**\n * An icon at the start of the box, before the label and the text: the\n * page's 24dp leading icon, in the muted role. An icon drawn in `em` takes\n * that size from the slot.\n */\n leadingIcon?: ReactNode;\n /**\n * How many lines of text the field shows: the least it shows while it\n * grows, or all it shows when it does not.\n * @default 3\n */\n rows?: number;\n /**\n * An icon at the end of the box, after the text: the page's 24dp trailing\n * icon, in the muted role and the error role while the field has an error.\n * An icon drawn in `em` takes that size from the slot.\n */\n trailingIcon?: ReactNode;\n /**\n * The filled box, or the outlined one: no fill, an outline that thickens\n * and takes the primary role while focused, and the label cutting it once\n * it floats — the text fields page's two fields.\n * @default 'filled'\n */\n variant?: FieldVariant;\n} & Omit<RACTextFieldProps, 'children' | 'isInvalid' | 'validationBehavior'>;\n\n/**\n * A labelled multi-line input. Its value is React Aria's: pass `value` with\n * `onChange` to control it, or `defaultValue` to let it keep its own — and\n * `onChange` is handed the string, not the event. The call site's\n * `className` and `style` land on the field as a whole, which is the element\n * a layout positions.\n *\n * The text fields page's configurations are props: `leadingIcon` and\n * `trailingIcon` at the box's ends, and `characterCount` opposite the\n * supporting text, counting against `maxLength`.\n *\n * The box, label, control and message are the field chrome in `src/field`,\n * shared with every other field; this component is what React Aria's\n * `TextField` puts around them.\n */\nfunction TextArea({\n autosize = true,\n characterCount = false,\n characterLimitLabel,\n description,\n error,\n floatingLabel = true,\n isDisabled = false,\n label,\n leadingIcon,\n rows = 3,\n trailingIcon,\n variant = 'filled',\n ...props\n}: TextAreaProps) {\n const validationBehavior = useFieldValidationBehavior();\n return <RACTextField isDisabled={isDisabled} isInvalid={invalidFrom(error)} validationBehavior={validationBehavior} {...props} {...mergeStatefulStyles(stylex.props(fieldStyles.root), props)}>\n <FieldBox floatingLabel={floatingLabel} label={label} leading={leadingIcon} multiline trailing={trailingIcon} variant={variant}>\n <FieldTextArea autosize={autosize} rows={rows} />\n </FieldBox>\n <FieldMessage characterCount={characterCount} characterLimitLabel={characterLimitLabel} description={description} error={error} maxLength={props.maxLength} />\n </RACTextField>;\n}\nexport type { TextAreaProps };\nexport default TextArea;"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["ReactNode","TextFieldProps","RACTextFieldProps","stylex","TextField","RACTextField","FieldVariant","FieldBox","FieldMessage","FieldTextArea","fieldStyles","invalidFrom","useFieldValidationBehavior","mergeStatefulStyles","TextAreaProps","autosize","characterCount","characterLimitLabel","description","error","floatingLabel","label","leadingIcon","rows","trailingIcon","variant","Omit","TextArea","t0","$","_c","t1","t2","t3","isDisabled","t4","t5","t6","props","undefined","validationBehavior","T0","t7","t8","root","t9","t10","t11","maxLength","t12"],"sources":["../../../src/components/text-area/index.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport type { TextFieldProps as RACTextFieldProps } from 'react-aria-components';\nimport * as stylex from '@stylexjs/stylex';\nimport { TextField as RACTextField } from 'react-aria-components';\nimport type { FieldVariant } from '../../field';\nimport { FieldBox, FieldMessage, FieldTextArea } from '../../field';\nimport { fieldStyles, invalidFrom, useFieldValidationBehavior } from '../../field/root';\nimport { mergeStatefulStyles } from '../../styles/merge';\n\n// The text fields page's multi-line configuration of the filled field: the\n// same box, floating label, icons, underline and message as TextField,\n// holding a text area rather than an input. The page gives the box 56dp by\n// default and 8dp of padding above and below, with the label vertically\n// centred while the field is empty; a box holding more than one line keeps\n// the padding and grows, which is the chrome's `multiline` box, and its\n// icons stay centred in its height as it does. The page draws no resize\n// handle, and none is drawn here.\n//\n// Its own component rather than a prop of TextField, so `rows` and\n// `autosize` stay off TextField's type and `numeric` stays off this one.\n\ntype TextAreaProps = {\n /**\n * Whether the field grows with the text it holds, from `rows` up. `false`\n * keeps it at `rows` and scrolls the text inside.\n * @default true\n */\n autosize?: boolean;\n /**\n * Whether to count the characters the field holds at the end of the\n * supporting line, against `maxLength` where there is one, as the text\n * fields page's character counter does.\n * @default false\n */\n characterCount?: boolean;\n /**\n * How the limit is said to a screen reader, where there is a `maxLength`.\n * Read with the field on focus rather than as the value changes, so it\n * names the limit and not what is left of it. The visible count is hidden\n * from the tree, which is what this replaces.\n * @default `Up to ${maxLength} characters`, singular for a limit of one\n */\n characterLimitLabel?: string;\n /**\n * A hint shown under the field. Replaced by `error` when there is one, so\n * the two never stack.\n */\n description?: string;\n /**\n * The problem with the current value, in words. Its presence is what puts\n * the field in its error state — the message, the red underline, and\n * `aria-invalid` all follow from it.\n *\n * Outside a `Form` the message line arrives with the message, so the\n * field grows when this does and moves what is under it. A `Form` holds\n * that space from the start; so does a permanent `description`.\n */\n error?: string;\n /**\n * Whether the label sits in the empty box and floats to the top once the\n * field is focused or holds a value, as the text fields page draws it.\n * `false` keeps it small at the top in every state.\n * @default true\n */\n floatingLabel?: boolean;\n /**\n * What the field is for. Required rather than optional: a text area with\n * no label is a box a screen reader cannot name.\n */\n label: string;\n /**\n * An icon at the start of the box, before the label and the text: the\n * page's 24dp leading icon, in the muted role. An icon drawn in `em` takes\n * that size from the slot.\n */\n leadingIcon?: ReactNode;\n /**\n * How many lines of text the field shows: the least it shows while it\n * grows, or all it shows when it does not.\n * @default 3\n */\n rows?: number;\n /**\n * An icon at the end of the box, after the text: the page's 24dp trailing\n * icon, in the muted role and the error role while the field has an error.\n * An icon drawn in `em` takes that size from the slot.\n */\n trailingIcon?: ReactNode;\n /**\n * The filled box, or the outlined one: no fill, an outline that thickens\n * and takes the primary role while focused, and the label cutting it once\n * it floats — the text fields page's two fields.\n * @default 'filled'\n */\n variant?: FieldVariant;\n} & Omit<RACTextFieldProps, 'children' | 'isInvalid' | 'validationBehavior'>;\n\n/**\n * A labelled multi-line input. Its value is React Aria's: pass `value` with\n * `onChange` to control it, or `defaultValue` to let it keep its own — and\n * `onChange` is handed the string, not the event. The call site's\n * `className` and `style` land on the field as a whole, which is the element\n * a layout positions.\n *\n * The text fields page's configurations are props: `leadingIcon` and\n * `trailingIcon` at the box's ends, and `characterCount` opposite the\n * supporting text, counting against `maxLength`.\n *\n * The box, label, control and message are the field chrome in `src/field`,\n * shared with every other field; this component is what React Aria's\n * `TextField` puts around them.\n */\nfunction TextArea({\n autosize = true,\n characterCount = false,\n characterLimitLabel,\n description,\n error,\n floatingLabel = true,\n isDisabled = false,\n label,\n leadingIcon,\n rows = 3,\n trailingIcon,\n variant = 'filled',\n ...props\n}: TextAreaProps) {\n const validationBehavior = useFieldValidationBehavior();\n return <RACTextField isDisabled={isDisabled} isInvalid={invalidFrom(error)} validationBehavior={validationBehavior} {...props} {...mergeStatefulStyles(stylex.props(fieldStyles.root), props)}>\n <FieldBox floatingLabel={floatingLabel} label={label} leading={leadingIcon} multiline trailing={trailingIcon} variant={variant}>\n <FieldTextArea autosize={autosize} rows={rows} />\n </FieldBox>\n <FieldMessage characterCount={characterCount} characterLimitLabel={characterLimitLabel} description={description} error={error} maxLength={props.maxLength} />\n </RACTextField>;\n}\nexport type { TextAreaProps };\nexport default TextArea;"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAgHA,SAAA2B,WAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAkB,MAAA,EAAAf,UAAAgB,IAAAf,gBAAAgB,IAAAf,qBAAAC,aAAAC,OAAAC,eAAAa,IAAAC,YAAAC,IAAAd,OAAAC,aAAAC,MAAAa,IAAAZ,cAAAC,SAAAY,IAAA,GAAAC,YAAAV;CAChB,MAAAb,WAAAgB,OAAAQ,KAAAA,IAAA,OAAAR;CACA,MAAAf,iBAAAgB,OAAAO,KAAAA,IAAA,QAAAP;CAIA,MAAAZ,gBAAAa,OAAAM,KAAAA,IAAA,OAAAN;CACA,MAAAC,aAAAC,OAAAI,KAAAA,IAAA,QAAAJ;CAGA,MAAAZ,OAAAa,OAAAG,KAAAA,IAAA,IAAAH;CAEA,MAAAX,UAAAY,OAAAE,KAAAA,IAAA,WAAAF;CAGA,MAAAG,qBAA2B5B,2BAA2B;CAC9C,MAAA6B,KAAApC;CAAY,IAAAqC;CAAA,IAAAb,EAAA,OAAAV,OAAA;EAAoCuB,KAAA/B,YAAYQ,KAAK;EAACU,EAAA,KAAAV;EAAAU,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CAAyD,MAAAc,KAAA9B,oBAAoBV,MAAaO,YAAWkC,IAAK,GAAGN,OAAK;CAAC,IAAAO;CAAA,IAAAhB,EAAA,OAAAd,YAAAc,EAAA,OAAAN,MAAA;EAEvLsB,KAAA,oBAAC,eAAD;GAAyB9B;GAAgBQ;EAAI,CAAA;EAAIM,EAAA,KAAAd;EAAAc,EAAA,KAAAN;EAAAM,EAAA,KAAAgB;CAAA,OAAAA,KAAAhB,EAAA;CAAA,IAAAiB;CAAA,IAAAjB,EAAA,OAAAT,iBAAAS,EAAA,OAAAR,SAAAQ,EAAA,OAAAP,eAAAO,EAAA,OAAAgB,MAAAhB,EAAA,OAAAL,gBAAAK,EAAA,QAAAJ,SAAA;EADnDqB,MAAA,oBAAC,UAAD;GAAyB1B;GAAsBC;GAAgBC,SAAAA;GAAa,WAAA;GAAoBE,UAAAA;GAAuBC;GACrHoB,UAAAA;EADO,CAAA;EAEEhB,EAAA,KAAAT;EAAAS,EAAA,KAAAR;EAAAQ,EAAA,KAAAP;EAAAO,EAAA,KAAAgB;EAAAhB,EAAA,KAAAL;EAAAK,EAAA,MAAAJ;EAAAI,EAAA,MAAAiB;CAAA,OAAAA,MAAAjB,EAAA;CAAA,IAAAkB;CAAA,IAAAlB,EAAA,QAAAb,kBAAAa,EAAA,QAAAZ,uBAAAY,EAAA,QAAAX,eAAAW,EAAA,QAAAV,SAAAU,EAAA,QAAAS,QAAAU,WAAA;EACXD,MAAA,oBAAC,cAAD;GAA8B/B;GAAqCC;GAAkCC;GAAoBC;GAAkB,WAAAmB,QAAKU;EAAU,CAAA;EAAInB,EAAA,MAAAb;EAAAa,EAAA,MAAAZ;EAAAY,EAAA,MAAAX;EAAAW,EAAA,MAAAV;EAAAU,EAAA,MAAAS,QAAAU;EAAAnB,EAAA,MAAAkB;CAAA,OAAAA,MAAAlB,EAAA;CAAA,IAAAoB;CAAA,IAAApB,EAAA,QAAAY,MAAAZ,EAAA,QAAAK,cAAAL,EAAA,QAAAS,WAAAT,EAAA,QAAAiB,OAAAjB,EAAA,QAAAkB,OAAAlB,EAAA,QAAAa,MAAAb,EAAA,QAAAc,MAAAd,EAAA,QAAAW,oBAAA;EAJ3JS,MAAA,qBAAC,IAAD;GAA0Bf;GAAuB,WAAAQ;GAAwCF;GAAkB,GAAMF;GAAK,GAAMK;GAA5H,UAAA,CACHG,KAGAC,GAJgB;;EAKHlB,EAAA,MAAAY;EAAAZ,EAAA,MAAAK;EAAAL,EAAA,MAAAS;EAAAT,EAAA,MAAAiB;EAAAjB,EAAA,MAAAkB;EAAAlB,EAAA,MAAAa;EAAAb,EAAA,MAAAc;EAAAd,EAAA,MAAAW;EAAAX,EAAA,MAAAoB;CAAA,OAAAA,MAAApB,EAAA;CAAA,OALVoB;AAKU"}
@@ -15,7 +15,7 @@ type TextFieldProps$1 = {
15
15
  * Read with the field on focus rather than as the value changes, so it
16
16
  * names the limit and not what is left of it. The visible count is hidden
17
17
  * from the tree, which is what this replaces.
18
- * @default `Up to ${maxLength} characters`
18
+ * @default `Up to ${maxLength} characters`, singular for a limit of one
19
19
  */
20
20
  characterLimitLabel?: string;
21
21
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["ReactNode","TextFieldProps","RACTextFieldProps","stylex","TextField","RACTextField","FieldVariant","FieldBox","FieldInput","FieldMessage","fieldStyles","invalidFrom","useFieldValidationBehavior","mergeStatefulStyles","characterCount","characterLimitLabel","description","error","floatingLabel","label","leadingIcon","numeric","prefix","suffix","trailingIcon","variant","Omit","t0","$","_c","t1","t2","isDisabled","t3","t4","t5","props","undefined","validationBehavior","T0","t6","t7","root","t8","t9","t10","maxLength","t11"],"sources":["../../../src/components/text-field/index.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport type { TextFieldProps as RACTextFieldProps } from 'react-aria-components';\nimport * as stylex from '@stylexjs/stylex';\nimport { TextField as RACTextField } from 'react-aria-components';\nimport type { FieldVariant } from '../../field';\nimport { FieldBox, FieldInput, FieldMessage } from '../../field';\nimport { fieldStyles, invalidFrom, useFieldValidationBehavior } from '../../field/root';\nimport { mergeStatefulStyles } from '../../styles/merge';\ntype TextFieldProps = {\n /**\n * Whether to count the characters the field holds at the end of the\n * supporting line, against `maxLength` where there is one, as the text\n * fields page's character counter does.\n * @default false\n */\n characterCount?: boolean;\n /**\n * How the limit is said to a screen reader, where there is a `maxLength`.\n * Read with the field on focus rather than as the value changes, so it\n * names the limit and not what is left of it. The visible count is hidden\n * from the tree, which is what this replaces.\n * @default `Up to ${maxLength} characters`\n */\n characterLimitLabel?: string;\n /**\n * A hint shown under the field. Replaced by `error` when there is one, so\n * the two never stack.\n */\n description?: string;\n /**\n * The problem with the current value, in words. Its presence is what puts\n * the field in its error state — the message, the red underline, and\n * `aria-invalid` all follow from it.\n *\n * Outside a `Form` the message line arrives with the message, so the\n * field grows when this does and moves what is under it. A `Form` holds\n * that space from the start; so does a permanent `description`.\n */\n error?: string;\n /**\n * Whether the label sits in the empty box and floats to the top once the\n * field is focused or holds a value, as the text fields page draws it.\n * `false` keeps it small at the top in every state.\n * @default true\n */\n floatingLabel?: boolean;\n /**\n * What the field is for. Required rather than optional: a text field with\n * no label is a box a screen reader cannot name.\n */\n label: string;\n /**\n * An icon at the start of the box, before the label and the value: the\n * page's 24dp leading icon, in the muted role. An icon drawn in `em`\n * takes that size from the slot.\n */\n leadingIcon?: ReactNode;\n /**\n * Renders the value in the mono face with tabular figures, for amounts and\n * other numbers meant to be compared down a column.\n * @default false\n */\n numeric?: boolean;\n /**\n * Text before the value on its line, in the muted role, shown while the\n * field is focused or holds a value.\n */\n prefix?: ReactNode;\n /**\n * Text after the value on its line, in the muted role, shown while the\n * field is focused or holds a value.\n */\n suffix?: ReactNode;\n /**\n * An icon at the end of the box, after the value: the page's 24dp trailing\n * icon, in the muted role and the error role while the field has an error.\n * An icon drawn in `em` takes that size from the slot.\n */\n trailingIcon?: ReactNode;\n /**\n * The filled box, or the outlined one: no fill, an outline that thickens\n * and takes the primary role while focused, and the label cutting it once\n * it floats — the text fields page's two fields.\n * @default 'filled'\n */\n variant?: FieldVariant;\n} & Omit<RACTextFieldProps, 'children' | 'isInvalid' | 'prefix' | 'validationBehavior'>;\n\n/**\n * A labelled single-line input. Its value is React Aria's: pass `value` with\n * `onChange` to control it, or `defaultValue` to let it keep its own — and\n * `onChange` is handed the string, not the event. The call site's\n * `className` and `style` land on the field as a whole, which is the element\n * a layout positions.\n *\n * The text fields page's configurations are props: `leadingIcon` and\n * `trailingIcon` at the box's ends, `prefix` and `suffix` on the value's\n * line, and `characterCount` opposite the supporting text, counting against\n * `maxLength`.\n *\n * The box, label, input and message are the field chrome in `src/field`,\n * shared with every other field; this component is what React Aria's\n * `TextField` puts around them.\n */\nfunction TextField({\n characterCount = false,\n characterLimitLabel,\n description,\n error,\n floatingLabel = true,\n isDisabled = false,\n label,\n leadingIcon,\n numeric = false,\n prefix,\n suffix,\n trailingIcon,\n variant = 'filled',\n ...props\n}: TextFieldProps) {\n const validationBehavior = useFieldValidationBehavior();\n return <RACTextField isDisabled={isDisabled} isInvalid={invalidFrom(error)} validationBehavior={validationBehavior} {...props} {...mergeStatefulStyles(stylex.props(fieldStyles.root), props)}>\n <FieldBox floatingLabel={floatingLabel} label={label} leading={leadingIcon} trailing={trailingIcon} variant={variant}>\n <FieldInput numeric={numeric} prefix={prefix} suffix={suffix} />\n </FieldBox>\n <FieldMessage characterCount={characterCount} characterLimitLabel={characterLimitLabel} description={description} error={error} maxLength={props.maxLength} />\n </RACTextField>;\n}\nexport type { TextFieldProps };\nexport default TextField;"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["ReactNode","TextFieldProps","RACTextFieldProps","stylex","TextField","RACTextField","FieldVariant","FieldBox","FieldInput","FieldMessage","fieldStyles","invalidFrom","useFieldValidationBehavior","mergeStatefulStyles","characterCount","characterLimitLabel","description","error","floatingLabel","label","leadingIcon","numeric","prefix","suffix","trailingIcon","variant","Omit","t0","$","_c","t1","t2","isDisabled","t3","t4","t5","props","undefined","validationBehavior","T0","t6","t7","root","t8","t9","t10","maxLength","t11"],"sources":["../../../src/components/text-field/index.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport type { TextFieldProps as RACTextFieldProps } from 'react-aria-components';\nimport * as stylex from '@stylexjs/stylex';\nimport { TextField as RACTextField } from 'react-aria-components';\nimport type { FieldVariant } from '../../field';\nimport { FieldBox, FieldInput, FieldMessage } from '../../field';\nimport { fieldStyles, invalidFrom, useFieldValidationBehavior } from '../../field/root';\nimport { mergeStatefulStyles } from '../../styles/merge';\ntype TextFieldProps = {\n /**\n * Whether to count the characters the field holds at the end of the\n * supporting line, against `maxLength` where there is one, as the text\n * fields page's character counter does.\n * @default false\n */\n characterCount?: boolean;\n /**\n * How the limit is said to a screen reader, where there is a `maxLength`.\n * Read with the field on focus rather than as the value changes, so it\n * names the limit and not what is left of it. The visible count is hidden\n * from the tree, which is what this replaces.\n * @default `Up to ${maxLength} characters`, singular for a limit of one\n */\n characterLimitLabel?: string;\n /**\n * A hint shown under the field. Replaced by `error` when there is one, so\n * the two never stack.\n */\n description?: string;\n /**\n * The problem with the current value, in words. Its presence is what puts\n * the field in its error state — the message, the red underline, and\n * `aria-invalid` all follow from it.\n *\n * Outside a `Form` the message line arrives with the message, so the\n * field grows when this does and moves what is under it. A `Form` holds\n * that space from the start; so does a permanent `description`.\n */\n error?: string;\n /**\n * Whether the label sits in the empty box and floats to the top once the\n * field is focused or holds a value, as the text fields page draws it.\n * `false` keeps it small at the top in every state.\n * @default true\n */\n floatingLabel?: boolean;\n /**\n * What the field is for. Required rather than optional: a text field with\n * no label is a box a screen reader cannot name.\n */\n label: string;\n /**\n * An icon at the start of the box, before the label and the value: the\n * page's 24dp leading icon, in the muted role. An icon drawn in `em`\n * takes that size from the slot.\n */\n leadingIcon?: ReactNode;\n /**\n * Renders the value in the mono face with tabular figures, for amounts and\n * other numbers meant to be compared down a column.\n * @default false\n */\n numeric?: boolean;\n /**\n * Text before the value on its line, in the muted role, shown while the\n * field is focused or holds a value.\n */\n prefix?: ReactNode;\n /**\n * Text after the value on its line, in the muted role, shown while the\n * field is focused or holds a value.\n */\n suffix?: ReactNode;\n /**\n * An icon at the end of the box, after the value: the page's 24dp trailing\n * icon, in the muted role and the error role while the field has an error.\n * An icon drawn in `em` takes that size from the slot.\n */\n trailingIcon?: ReactNode;\n /**\n * The filled box, or the outlined one: no fill, an outline that thickens\n * and takes the primary role while focused, and the label cutting it once\n * it floats — the text fields page's two fields.\n * @default 'filled'\n */\n variant?: FieldVariant;\n} & Omit<RACTextFieldProps, 'children' | 'isInvalid' | 'prefix' | 'validationBehavior'>;\n\n/**\n * A labelled single-line input. Its value is React Aria's: pass `value` with\n * `onChange` to control it, or `defaultValue` to let it keep its own — and\n * `onChange` is handed the string, not the event. The call site's\n * `className` and `style` land on the field as a whole, which is the element\n * a layout positions.\n *\n * The text fields page's configurations are props: `leadingIcon` and\n * `trailingIcon` at the box's ends, `prefix` and `suffix` on the value's\n * line, and `characterCount` opposite the supporting text, counting against\n * `maxLength`.\n *\n * The box, label, input and message are the field chrome in `src/field`,\n * shared with every other field; this component is what React Aria's\n * `TextField` puts around them.\n */\nfunction TextField({\n characterCount = false,\n characterLimitLabel,\n description,\n error,\n floatingLabel = true,\n isDisabled = false,\n label,\n leadingIcon,\n numeric = false,\n prefix,\n suffix,\n trailingIcon,\n variant = 'filled',\n ...props\n}: TextFieldProps) {\n const validationBehavior = useFieldValidationBehavior();\n return <RACTextField isDisabled={isDisabled} isInvalid={invalidFrom(error)} validationBehavior={validationBehavior} {...props} {...mergeStatefulStyles(stylex.props(fieldStyles.root), props)}>\n <FieldBox floatingLabel={floatingLabel} label={label} leading={leadingIcon} trailing={trailingIcon} variant={variant}>\n <FieldInput numeric={numeric} prefix={prefix} suffix={suffix} />\n </FieldBox>\n <FieldMessage characterCount={characterCount} characterLimitLabel={characterLimitLabel} description={description} error={error} maxLength={props.maxLength} />\n </RACTextField>;\n}\nexport type { TextFieldProps };\nexport default TextField;"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["FocusEvent","HTMLAttributes","ReactNode","Ref","ButtonProps","GroupProps","GroupRenderProps","InputProps","InputRenderProps","LabelProps","TextAreaProps","stylex","createContext","useContext","FieldError","FieldErrorContext","Group","Input","InputContext","Label","Button","RACButton","SelectStateContext","Text","TextArea","TextAreaContext","TextContext","useSlottedContext","VisuallyHidden","mergeStatefulStyles","mergeStyles","useInsideForm","fieldChromeStyles","groupStyles","BoxControl","label","BoxLabel","underLabel","FieldBoxProps","children","floatingLabel","isPopulated","leading","multiline","ref","HTMLDivElement","trailing","trigger","variant","FieldVariant","Omit","FieldInputProps","numeric","prefix","suffix","FieldLabelProps","state","Partial","FieldLabelState","FieldLabelVariant","Pick","FieldMessageProps","characterCount","characterLimitLabel","description","error","inset","maxLength","FieldTextAreaProps","autosize","FieldTriggerProps","FieldValueProps","HTMLElement","isFocused","isPlaceholder","OUTSIDE_BOX","BOX_CONTROLS","filled","fixed","floating","outlined","Record","BoxContext","boxContent","BoxContent","t0","$","_c","read","useFieldPopulated","populated","floated","isFocusWithin","t1","t2","props","outline","undefined","outlineLeading","outlineTrailing","outlineFocused","outlineNotch","outlineNotchOpen","t3","isDisabled","icon","iconMultiline","iconOutlined","iconDisabled","t4","column","columnFloating","columnDisabledFloating","columnDisabled","t5","boxLabel","boxLabelFloated","boxLabelOutlined","boxLabelOutlinedFloated","t6","t7","t8","isInvalid","iconError","t9","boxStyles","box","boxFloating","boxFixed","boxMultiline","boxLeading","boxTrailing","boxOutlined","boxOutlinedFloating","boxOutlinedMultiline","boxOutlinedError","boxError","boxOutlinedDisabled","boxDisabled","FieldBox","T0","t10","t11","FieldInput","placeholder","input","inputUnderLabel","inputUnderFloatingLabel","inputDisabled","control","Symbol","for","affixLine","affix","FieldSegments","segments","returnToStart","FieldTextArea","context","value","textArea","textAreaAutosize","autosizeCell","replica","FieldTrigger","FieldValue","hidden","valuePlaceholder","valuePlaceholderHidden","event","currentTarget","contains","relatedTarget","scrollLeft","select","selectionManager","selectedKeys","size","String","length","NO_STATE","FieldLabel","labelDisabled","labelError","labelFocused","FieldMessage","validation","invalid","insideForm","text","limit","hint","message","described","errorSlot","slots","errorMessage","messageError","messageStyles","written","messageLine","messageInset","counter"],"sources":["../../src/field/index.tsx"],"sourcesContent":["import type { FocusEvent, HTMLAttributes, ReactNode, Ref } from 'react';\nimport type { ButtonProps, GroupProps, GroupRenderProps, InputProps, InputRenderProps, LabelProps, TextAreaProps } from 'react-aria-components';\nimport * as stylex from '@stylexjs/stylex';\nimport { createContext, useContext } from 'react';\nimport { FieldError, FieldErrorContext, Group, Input, InputContext, Label, Button as RACButton, SelectStateContext, Text, TextArea, TextAreaContext, TextContext, useSlottedContext, VisuallyHidden } from 'react-aria-components';\nimport { mergeStatefulStyles, mergeStyles } from '../styles/merge';\nimport { useInsideForm } from './root';\nimport { fieldChromeStyles, groupStyles } from './styles';\n\n// The chrome every field shares: the filled box with its label at the top, the\n// control inside it, and the line of supporting text under it. TextField drew\n// all of it on its own until the coverage plan brought a dozen more fields,\n// each of which would otherwise have written the same box a second time.\n//\n// Not a component of the library's own and not exported. Each field is still\n// React Aria's field component — TextField, NumberField, DateField — and these\n// are the parts it renders inside, which is what keeps the label association,\n// the description and error wiring, and validation on React Aria's side.\n//\n// Neither the notch nor the label can select on the state that drives them.\n// Both are children of the box and the state is the box's, and the filled\n// label reads it in CSS only because it changes type alone, which the box\n// hands down inherited — where the notch changes what it holds and the\n// label changes where it sits, and neither of those inherits. So the box's\n// content computes that state in React instead: focus from the box's own\n// render state, and a value from the control's context, which is where the\n// character counter reads it too. The border's colour is the box's,\n// inherited, which is what carries the hover, focus, error and disabled\n// roles to it.\n\n// What a control needs to know about the box around it: how the label is\n// drawn, and whether the control clears it with a margin — it does under\n// the filled box's label, and not under the outlined box's, whose label\n// sits on the outline rather than over the value.\ninterface BoxControl {\n label: BoxLabel;\n underLabel: boolean;\n}\n\n// How the box draws its label, for the control inside it — see the context\n// below.\ntype BoxLabel = 'fixed' | 'floating' | 'none';\ntype FieldBoxProps = {\n children?: ReactNode;\n /**\n * Whether the label sits in the empty box and floats to the top once the\n * field is focused or holds a value, as the text fields page draws it.\n * `false` keeps it small at the top in every state.\n * @default true\n */\n floatingLabel?: boolean;\n /**\n * Whether the control is holding anything, for a field whose control the\n * chrome cannot ask. It reads an input, a text area and a select's own\n * state; a control that is none of those — a token field's editable area,\n * say — says so here, and the floating label floats on it.\n */\n isPopulated?: boolean;\n /** What the field is for. */\n label: string;\n /** An icon at the start of the box, before the label and the control. */\n leading?: ReactNode;\n /**\n * Whether the box takes its height from the control inside it rather\n * than the page's 56dp, for a text area.\n * @default false\n */\n multiline?: boolean;\n /**\n * The box's own element. A field whose box is what something else is\n * anchored to needs it — a select's list is positioned against the box and\n * takes its width from it, which is what makes the two the same width.\n */\n ref?: Ref<HTMLDivElement>;\n /** An icon at the end of the box, after the control. */\n trailing?: ReactNode;\n /**\n * A press target covering the whole box, for a field whose box opens\n * something rather than taking a keystroke — {@link FieldTrigger}. Drawn\n * in the box itself rather than in the column the label and the control\n * share, so the padding and the icons open it too.\n */\n trigger?: ReactNode;\n /**\n * The filled box, or the outlined one: no fill, an outline that thickens\n * and takes the primary role while focused, and the label cutting it once\n * it floats.\n * @default 'filled'\n */\n variant?: FieldVariant;\n} & Omit<GroupProps, 'children'>;\n\n// `prefix` is also an HTML attribute — the RDFa one, which nothing here\n// wants — and React's element types carry it as a string, so it is left out\n// of the props taken from React Aria to make room for the affix.\ntype FieldInputProps = Omit<InputProps, 'prefix'> & {\n /**\n * Renders the value in the mono face with tabular figures, for amounts and\n * other numbers meant to be compared down a column.\n * @default false\n */\n numeric?: boolean;\n /**\n * Text before the value on its line, shown while the field is focused or\n * holds a value.\n */\n prefix?: ReactNode;\n /**\n * Text after the value on its line, shown while the field is focused or\n * holds a value.\n */\n suffix?: ReactNode;\n};\ntype FieldLabelProps = LabelProps & {\n /**\n * The states the colour follows. Disabled wins over error, and error over\n * focus, so a focused invalid field keeps its error colour.\n */\n state?: Partial<FieldLabelState>;\n /**\n * Where the label sits. `field` is inside a box, positioned and typed by\n * whatever renders it. `group` is above a group of controls, which has no\n * box to float a label in, so this one carries its type itself.\n * @default 'field'\n */\n variant?: FieldLabelVariant;\n};\ntype FieldLabelState = Pick<GroupRenderProps, 'isDisabled' | 'isFocusWithin' | 'isInvalid'>;\ntype FieldLabelVariant = 'field' | 'group';\ninterface FieldMessageProps {\n /**\n * Whether to count the characters the control holds at the end of the\n * line, against `maxLength` where there is one. The count is read off the\n * field's own input or text area context.\n * @default false\n */\n characterCount?: boolean;\n /**\n * How the limit is said to a screen reader, where there is a `maxLength`.\n * It is read with the field on focus rather than as the value changes, so\n * it names the limit and not what is left of it.\n * @default `Up to ${maxLength} characters`\n */\n characterLimitLabel?: string | undefined;\n /**\n * A hint shown under the field. Replaced by `error` when there is one, so\n * the two never stack.\n */\n description?: string | undefined;\n /** The problem with the current value, in words. */\n error?: string | undefined;\n /**\n * Whether the line is indented to a box's inline padding, so it starts\n * where a value above it does. Off for a field with no box to line up with.\n * @default true\n */\n inset?: boolean;\n /** The limit the count is shown against. */\n maxLength?: number | undefined;\n}\ntype FieldTextAreaProps = TextAreaProps & {\n /**\n * Whether the control grows with the text it holds, from the rows it asks\n * for. Off, it keeps its rows and scrolls.\n * @default false\n */\n autosize?: boolean;\n};\ntype FieldTriggerProps = ButtonProps;\ntype FieldValueProps = HTMLAttributes<HTMLElement> & {\n /**\n * Whether the field has focus. A hidden placeholder appears while it does,\n * the way an input's does.\n * @default false\n */\n isFocused?: boolean;\n /**\n * Whether nothing has been chosen yet, so what is drawn is the placeholder\n * rather than a value.\n * @default false\n */\n isPlaceholder?: boolean;\n};\ntype FieldVariant = 'filled' | 'outlined';\n\n// A control under a floating label carries a placeholder so the box can\n// tell when it is populated, shown only while focused. The default is what\n// a control rendered outside any box gets — a search bar's, which has no\n// label over it and shows its placeholder in every state. The four a box\n// provides are hoisted so each is one stable object.\nconst OUTSIDE_BOX: BoxControl = {\n label: 'none',\n underLabel: false\n};\nconst BOX_CONTROLS = {\n filled: {\n fixed: {\n label: 'fixed',\n underLabel: true\n },\n floating: {\n label: 'floating',\n underLabel: true\n }\n },\n outlined: {\n fixed: {\n label: 'fixed',\n underLabel: false\n },\n floating: {\n label: 'floating',\n underLabel: false\n }\n }\n} satisfies Record<FieldVariant, Record<'fixed' | 'floating', BoxControl>>;\nconst BoxContext = createContext<BoxControl>(OUTSIDE_BOX);\n\n// Written as calls rather than function literals at the prop, which is what\n// react-perf's no-new-function-as-prop is after; the React Compiler memoises\n// each result on its inputs.\nfunction boxContent(label: string, children: ReactNode, floatingLabel: boolean, isPopulated: boolean | undefined, leading: ReactNode, multiline: boolean, trailing: ReactNode, trigger: ReactNode, variant: FieldVariant) {\n return (state: GroupRenderProps) => <BoxContent floatingLabel={floatingLabel} isPopulated={isPopulated} label={label} leading={leading} multiline={multiline} state={state} trailing={trailing} trigger={trigger} variant={variant}>\n {children}\n </BoxContent>;\n}\n\n/**\n * What a box holds: its icons, its label and the control between them, plus\n * the outline when it has one. A component rather than the render function\n * itself, so it can read whether the control holds a value — which is what\n * the outlined box's notch and label follow, and what CSS cannot express\n * for them. See the outlined variant's note above.\n */\nfunction BoxContent({\n children,\n floatingLabel,\n isPopulated,\n label,\n leading,\n multiline,\n state,\n trailing,\n trigger,\n variant\n}: {\n children: ReactNode;\n floatingLabel: boolean;\n isPopulated: boolean | undefined;\n label: string;\n leading: ReactNode;\n multiline: boolean;\n state: GroupRenderProps;\n trailing: ReactNode;\n trigger: ReactNode;\n variant: FieldVariant;\n}) {\n const read = useFieldPopulated();\n const populated = isPopulated ?? read;\n const outlined = variant === 'outlined';\n const floated = !floatingLabel || state.isFocusWithin || populated;\n return <BoxContext value={BOX_CONTROLS[variant][floatingLabel ? 'floating' : 'fixed']}>\n {outlined ? <fieldset aria-hidden=\"true\" {...stylex.props(fieldChromeStyles.outline, leading !== undefined && fieldChromeStyles.outlineLeading, trailing !== undefined && fieldChromeStyles.outlineTrailing, state.isFocusWithin && fieldChromeStyles.outlineFocused)}>\n <legend {...stylex.props(fieldChromeStyles.outlineNotch, floated && fieldChromeStyles.outlineNotchOpen)}>\n {floated ? label : null}\n </legend>\n </fieldset> : null}\n {trigger}\n {leading === undefined ? null : <span {...stylex.props(fieldChromeStyles.icon, multiline && fieldChromeStyles.iconMultiline, outlined && fieldChromeStyles.iconOutlined, state.isDisabled && fieldChromeStyles.iconDisabled)}>\n {leading}\n </span>}\n <div {...stylex.props(fieldChromeStyles.column, floatingLabel && fieldChromeStyles.columnFloating, state.isDisabled && (floatingLabel ? fieldChromeStyles.columnDisabledFloating : fieldChromeStyles.columnDisabled))}>\n <FieldLabel state={state} {...stylex.props(fieldChromeStyles.boxLabel, floatingLabel && floated && fieldChromeStyles.boxLabelFloated, outlined && fieldChromeStyles.boxLabelOutlined, outlined && floated && fieldChromeStyles.boxLabelOutlinedFloated)}>\n {label}\n </FieldLabel>\n {children}\n </div>\n {trailing === undefined ? null : <span {...stylex.props(fieldChromeStyles.icon, multiline && fieldChromeStyles.iconMultiline, outlined && fieldChromeStyles.iconOutlined, state.isInvalid && fieldChromeStyles.iconError, state.isDisabled && fieldChromeStyles.iconDisabled)}>\n {trailing}\n </span>}\n </BoxContext>;\n}\nfunction boxStyles(floatingLabel: boolean, multiline: boolean, leading: boolean, trailing: boolean, variant: FieldVariant) {\n const outlined = variant === 'outlined';\n return (state: GroupRenderProps) => stylex.props(fieldChromeStyles.box, floatingLabel ? fieldChromeStyles.boxFloating : fieldChromeStyles.boxFixed, multiline && fieldChromeStyles.boxMultiline, leading && fieldChromeStyles.boxLeading, trailing && fieldChromeStyles.boxTrailing, outlined && fieldChromeStyles.boxOutlined, outlined && floatingLabel && fieldChromeStyles.boxOutlinedFloating, outlined && multiline && fieldChromeStyles.boxOutlinedMultiline, state.isInvalid && (outlined ? fieldChromeStyles.boxOutlinedError : fieldChromeStyles.boxError), state.isDisabled && (outlined ? fieldChromeStyles.boxOutlinedDisabled : fieldChromeStyles.boxDisabled));\n}\n\n/**\n * The box a control sits in, filled or outlined, with its label. React\n * Aria's `Group`, so\n * the field around it hands down `isDisabled` and `isInvalid` through context\n * and the box reports focus within it as render state, which is what the\n * label's colour follows. A field that provides no group context — one built\n * on a button rather than an input — passes the two states itself.\n */\nfunction FieldBox({\n children,\n floatingLabel = true,\n isPopulated,\n label,\n leading,\n multiline = false,\n trailing,\n trigger,\n variant = 'filled',\n ...props\n}: FieldBoxProps) {\n return <Group {...props} {...mergeStatefulStyles(boxStyles(floatingLabel, multiline, leading !== undefined, trailing !== undefined, variant), props)}>\n {boxContent(label, children, floatingLabel, isPopulated, leading, multiline, trailing, trigger, variant)}\n </Group>;\n}\n\n/**\n * A field's text control, in a {@link FieldBox} or on its own. React Aria's\n * `Input`, which takes its label association, value and validation from the\n * field around it and reports its disabled state as render state.\n *\n * In a box it clears the label at the top, and under a floating label it\n * always carries a placeholder, since that is what the box reads to tell a\n * populated control from an empty one: its own where it was given one, a\n * blank otherwise. Outside a box it has no label over it and shows the\n * placeholder it was given in every state.\n */\nfunction FieldInput({\n numeric = false,\n placeholder,\n prefix,\n suffix,\n ...props\n}: FieldInputProps) {\n const box = useContext(BoxContext);\n const control = <Input placeholder={placeholder ?? (box.label === 'floating' ? ' ' : undefined)} {...props} {...mergeStatefulStyles((state: InputRenderProps) => stylex.props(fieldChromeStyles.input, box.underLabel && fieldChromeStyles.inputUnderLabel, box.label === 'floating' && fieldChromeStyles.inputUnderFloatingLabel, numeric && fieldChromeStyles.numeric, state.isDisabled && fieldChromeStyles.inputDisabled), props)} />;\n if (prefix === undefined && suffix === undefined) {\n return control;\n }\n return <span {...stylex.props(fieldChromeStyles.affixLine)}>\n {prefix === undefined ? null : <span {...stylex.props(fieldChromeStyles.affix, box.underLabel && fieldChromeStyles.inputUnderLabel)}>\n {prefix}\n </span>}\n {control}\n {suffix === undefined ? null : <span {...stylex.props(fieldChromeStyles.affix, box.underLabel && fieldChromeStyles.inputUnderLabel)}>\n {suffix}\n </span>}\n </span>;\n}\n\n/**\n * A date or a time's segments, in a {@link FieldBox}: React Aria's\n * `DateInput`, or the group holding a range's two. This is what carries the\n * control's type and its place on the line, clearing the label at the top,\n * as {@link FieldValue} does for a value that was chosen.\n *\n * A typed value longer than its box behaves as an input's text does. It is\n * clipped rather than cut short, since every segment on the line is still a\n * place to type. The browser scrolls whichever segment has focus into view,\n * as it scrolls to an input's caret. And when focus leaves the segments the\n * line goes back to its start, as an input's text does on blur, so a value\n * at rest reads from its beginning rather than from wherever it was left.\n */\nfunction FieldSegments({\n children\n}: {\n children: ReactNode;\n}) {\n const box = useContext(BoxContext);\n return <span onBlur={returnToStart} {...stylex.props(fieldChromeStyles.input, fieldChromeStyles.segments, box.underLabel && fieldChromeStyles.inputUnderLabel)}>\n {children}\n </span>;\n}\n\n/**\n * A field's multi-line text control, in a {@link FieldBox} drawn `multiline`.\n * React Aria's `TextArea`, with the same label association, value and\n * validation {@link FieldInput} takes from the field around it, and the same\n * placeholder under a floating label.\n *\n * Given `autosize` it grows with its text from the rows it asks for. The\n * value it grows to fit is read off the field's context rather than\n * measured: the box holds a hidden replica of it in the control's own type,\n * in the same grid cell as the control, and the cell is as tall as whichever\n * of the two is taller.\n */\nfunction FieldTextArea({\n autosize = false,\n placeholder,\n ...props\n}: FieldTextAreaProps) {\n const box = useContext(BoxContext);\n const context = useSlottedContext(TextAreaContext);\n const value = typeof context?.value === 'string' ? context.value : '';\n const control = <TextArea placeholder={placeholder ?? (box.label === 'floating' ? ' ' : undefined)} {...props} {...mergeStatefulStyles((state: InputRenderProps) => stylex.props(fieldChromeStyles.input, box.underLabel && fieldChromeStyles.inputUnderLabel, box.label === 'floating' && fieldChromeStyles.inputUnderFloatingLabel, fieldChromeStyles.textArea, autosize && fieldChromeStyles.textAreaAutosize, autosize && fieldChromeStyles.autosizeCell, state.isDisabled && fieldChromeStyles.inputDisabled), props)} />;\n if (!autosize) {\n return control;\n }\n\n // A trailing space keeps a final line break of the value as a line of the\n // replica, which is how the control renders it.\n return <div {...stylex.props(fieldChromeStyles.autosize)}>\n {control}\n <div aria-hidden=\"true\" {...stylex.props(fieldChromeStyles.input, box.underLabel && fieldChromeStyles.inputUnderLabel, fieldChromeStyles.replica, fieldChromeStyles.autosizeCell)}>\n {value}{' '}\n </div>\n </div>;\n}\n\n/**\n * The press target over a {@link FieldBox} whose whole surface opens\n * something — a select's list, a picker's calendar. React Aria's `Button`,\n * which takes the trigger's props from the field around it through context.\n *\n * It covers the box rather than sitting on its value's line, so the box's\n * own padding opens the field too. It draws nothing: the box already carries\n * the fill, the underline and the focus indicator, and it lights up while\n * this has focus because the indicator follows focus within.\n */\nfunction FieldTrigger(props: FieldTriggerProps) {\n return <RACButton {...props} {...mergeStatefulStyles(stylex.props(fieldChromeStyles.trigger), props)} />;\n}\n\n/**\n * A field's value where it was chosen rather than typed, in a\n * {@link FieldBox}. Put React Aria's own element inside it — a select's\n * `SelectValue` — and this is what carries the input's type and its place on\n * the line, clearing the label at the top and truncating rather than\n * wrapping. A date or a time is typed, segment by segment, and takes\n * {@link FieldSegments} instead.\n *\n * The wrapper is the styled one rather than React Aria's element, because\n * this is the box's flex item: styling the element inside instead left it\n * sizing itself against a parent that had already shrink-wrapped to it.\n *\n * `isPlaceholder` says nothing has been chosen, which takes the muted role;\n * under a floating label it is hidden until the field is focused, exactly as\n * an input's placeholder is.\n */\nfunction FieldValue({\n isFocused = false,\n isPlaceholder = false,\n ...props\n}: FieldValueProps) {\n const box = useContext(BoxContext);\n const hidden = isPlaceholder && box.label === 'floating' && !isFocused;\n return <span {...props} {...mergeStyles(stylex.props(fieldChromeStyles.input, fieldChromeStyles.value, box.underLabel && fieldChromeStyles.inputUnderLabel, isPlaceholder && fieldChromeStyles.valuePlaceholder, hidden && fieldChromeStyles.valuePlaceholderHidden), props)} />;\n}\n\n// Back to the start of the line once focus has left every segment on it —\n// not while it moves from one segment to the next. The start is 0 in either\n// writing direction: a right-to-left line scrolls towards negative values.\nfunction returnToStart(event: FocusEvent<HTMLElement>) {\n if (!event.currentTarget.contains(event.relatedTarget)) {\n event.currentTarget.scrollLeft = 0;\n }\n}\nfunction useFieldPopulated() {\n const input = useSlottedContext(InputContext);\n const textArea = useSlottedContext(TextAreaContext);\n // A field whose value is chosen rather than typed holds no input at all,\n // so being populated is a question for its own state — without this a\n // select's floating label never floats, however much is chosen.\n const select = useContext(SelectStateContext);\n if (select !== null) {\n return select.selectionManager.selectedKeys.size > 0;\n }\n const value = input?.value ?? textArea?.value ?? '';\n return String(value).length > 0;\n}\n\n/**\n * Whether the control in this box is holding anything, read off React\n * Aria's context for whichever control the field renders. The filled box\n * reads the same thing in CSS through `:placeholder-shown`; this is for\n * what CSS cannot express — see the outlined variant's note above.\n */\n/**\n * A field's label: the colour alone, positioned and given its type by whatever\n * renders it. React Aria's `Label`, which the field around it associates with\n * its control through context.\n */\n// Hoisted rather than written as the parameter's default, which would be a\n// new object on every render.\nconst NO_STATE: Partial<FieldLabelState> = {};\nfunction FieldLabel({\n state = NO_STATE,\n variant = 'field',\n ...props\n}: FieldLabelProps) {\n const {\n isDisabled = false,\n isFocusWithin = false,\n isInvalid = false\n } = state;\n return <Label {...props} {...mergeStyles(stylex.props(fieldChromeStyles.label, variant === 'group' && groupStyles.label, isDisabled && fieldChromeStyles.labelDisabled, isInvalid && fieldChromeStyles.labelError, !isDisabled && !isInvalid && isFocusWithin && fieldChromeStyles.labelFocused), props)} />;\n}\n\n/**\n * The line under a field: the error while there is one, the description\n * otherwise. The error goes through React Aria's `FieldError`, which renders\n * only while the field is invalid and falls back to whatever validation\n * errors the field carries when no message is given — which is how a `Form`\n * with server-side errors, or the browser's own, reaches it without any\n * field changing. The description steps aside for those too, which is what\n * the field's validation state is read for.\n */\nfunction FieldMessage({\n characterCount = false,\n characterLimitLabel,\n description,\n error,\n inset = true,\n maxLength\n}: FieldMessageProps) {\n const validation = useContext(FieldErrorContext);\n const invalid = error !== undefined || (validation?.isInvalid ?? false);\n const input = useSlottedContext(InputContext);\n const textArea = useSlottedContext(TextAreaContext);\n const insideForm = useInsideForm();\n // Read directly rather than through `useSlottedContext`, which throws for\n // a missing slot exactly as `Text` does — the throw is the thing being\n // avoided. What it is for is below, at `written`.\n const text = useContext(TextContext);\n\n // The limit, in words, for the description React Aria reads out with the\n // field. `maxLength` alone reaches the control as the native attribute,\n // which is not reliably announced, and the count beside the message is\n // hidden — so without this a reader is never told there is a limit.\n const limit = maxLength === undefined ? undefined : characterLimitLabel ?? `Up to ${maxLength} character${maxLength === 1 ? '' : 's'}`;\n const hidden = limit === undefined ? null : <VisuallyHidden elementType=\"span\">\n <Text slot=\"description\">{limit}</Text>\n </VisuallyHidden>;\n\n // Nothing to say, and nowhere a message could arrive from: the field ends\n // at its control. Inside a form the line is drawn anyway, empty, since a\n // form is where a message appears after the fact — a server's answer, or\n // the browser's own on submit — and every field below this one would\n // otherwise move by the line's height when it does.\n //\n // A limit to announce leaves on its own rather than bringing the line with\n // it. The line is one line of type plus the 4dp above it, so drawing it\n // for something nobody can see would make a field with a limit taller than\n // the same field without one.\n if (!invalid && description === undefined && !characterCount && !insideForm) {\n return hidden;\n }\n const value = input?.value ?? textArea?.value ?? '';\n const length = String(value).length;\n const hint = invalid ? undefined : description;\n\n // One slotted description, never two. React Aria hands every element in\n // its description slot the same generated id, so a second one puts a\n // duplicate id in the document and axe fails the story. The limit rides\n // inside the hint where there is one, and carries the whole slot where\n // there is not — hidden either way, since the count already draws it.\n //\n // Hidden by clipping rather than by leaving it out of the row, and the\n // difference is a gap: the row is a flex line with 16dp between its parts,\n // and an element with no width is still a part. Clipping takes it out of\n // flow, so a field with a limit and no hint has the line it had before.\n const described = hint === undefined ? hidden : <Text slot=\"description\" {...stylex.props(fieldChromeStyles.message)}>\n {hint}\n {limit === undefined ? null :\n // The space is load-bearing: a description is read as the text\n // content of one element, and two spans run together without it.\n <VisuallyHidden elementType=\"span\">{` ${limit}`}</VisuallyHidden>}\n </Text>;\n\n // Outside a field that validates there is nothing to hand React Aria's\n // `FieldError`, and it draws nothing without it — a group of chips is a\n // group rather than a form control, so the error it was given is written\n // out instead.\n //\n // Through the group's error slot where there is one, which is what makes\n // the message reach a screen reader at all: React Aria generates the id\n // its `aria-describedby` points at up front, then keeps it only while\n // something in the document carries it, so an element outside the slot is\n // drawn and never announced. The description beside it has always gone\n // through its own slot, which is why that half worked.\n //\n // Not every group has one. `TagGroup` wires up a description and an error;\n // `TokenField` wires up a description alone and generates no error id at\n // all, so its message has nothing to attach to and stays a bare element.\n const errorSlot = text !== null && typeof text === 'object' && 'slots' in text && text.slots?.errorMessage !== undefined;\n const messageStyles = stylex.props(fieldChromeStyles.message, fieldChromeStyles.messageError);\n const written = errorSlot ? <Text slot=\"errorMessage\" {...messageStyles}>\n {error}\n </Text> : <span {...messageStyles}>{error}</span>;\n return <div {...stylex.props(fieldChromeStyles.message, fieldChromeStyles.messageLine, inset && fieldChromeStyles.messageInset)}>\n {validation === null && error !== undefined ? written : <FieldError {...stylex.props(fieldChromeStyles.message, fieldChromeStyles.messageError)}>\n {error}\n </FieldError>}\n {described}\n {characterCount ?\n // Hidden from the tree, and the limit above is why. A count is the\n // one piece of supporting text that changes on every keystroke, and\n // a screen reader reading it back at that rate is worse than not\n // hearing it — the limit said once on focus is what a reader needs,\n // and this is the same fact drawn for whoever is looking.\n <span aria-hidden=\"true\" {...stylex.props(fieldChromeStyles.message, fieldChromeStyles.counter, invalid && fieldChromeStyles.messageError)}>\n {maxLength === undefined ? length : `${length}/${maxLength}`}\n </span> : null}\n </div>;\n}\nexport type { FieldBoxProps, FieldInputProps, FieldLabelProps, FieldLabelState, FieldLabelVariant, FieldMessageProps, FieldTextAreaProps, FieldVariant };\nexport { FieldBox, FieldInput, FieldLabel, FieldMessage, FieldSegments, FieldTextArea, FieldTrigger, FieldValue };"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["FocusEvent","HTMLAttributes","ReactNode","Ref","ButtonProps","GroupProps","GroupRenderProps","InputProps","InputRenderProps","LabelProps","TextAreaProps","stylex","createContext","useContext","FieldError","FieldErrorContext","Group","Input","InputContext","Label","Button","RACButton","SelectStateContext","Text","TextArea","TextAreaContext","TextContext","useSlottedContext","VisuallyHidden","mergeStatefulStyles","mergeStyles","useInsideForm","fieldChromeStyles","groupStyles","BoxControl","label","BoxLabel","underLabel","FieldBoxProps","children","floatingLabel","isPopulated","leading","multiline","ref","HTMLDivElement","trailing","trigger","variant","FieldVariant","Omit","FieldInputProps","numeric","prefix","suffix","FieldLabelProps","state","Partial","FieldLabelState","FieldLabelVariant","Pick","FieldMessageProps","characterCount","characterLimitLabel","description","error","inset","maxLength","FieldTextAreaProps","autosize","FieldTriggerProps","FieldValueProps","HTMLElement","isFocused","isPlaceholder","OUTSIDE_BOX","BOX_CONTROLS","filled","fixed","floating","outlined","Record","BoxContext","boxContent","BoxContent","t0","$","_c","read","useFieldPopulated","populated","floated","isFocusWithin","t1","t2","props","outline","undefined","outlineLeading","outlineTrailing","outlineFocused","outlineNotch","outlineNotchOpen","t3","isDisabled","icon","iconMultiline","iconOutlined","iconDisabled","t4","column","columnFloating","columnDisabledFloating","columnDisabled","t5","boxLabel","boxLabelFloated","boxLabelOutlined","boxLabelOutlinedFloated","t6","t7","t8","isInvalid","iconError","t9","boxStyles","box","boxFloating","boxFixed","boxMultiline","boxLeading","boxTrailing","boxOutlined","boxOutlinedFloating","boxOutlinedMultiline","boxOutlinedError","boxError","boxOutlinedDisabled","boxDisabled","FieldBox","T0","t10","t11","FieldInput","placeholder","input","inputUnderLabel","inputUnderFloatingLabel","inputDisabled","control","Symbol","for","affixLine","affix","FieldSegments","segments","returnToStart","FieldTextArea","context","value","textArea","textAreaAutosize","autosizeCell","replica","FieldTrigger","FieldValue","hidden","valuePlaceholder","valuePlaceholderHidden","event","currentTarget","contains","relatedTarget","scrollLeft","select","selectionManager","selectedKeys","size","String","length","NO_STATE","FieldLabel","labelDisabled","labelError","labelFocused","FieldMessage","validation","invalid","insideForm","text","limit","hint","message","described","errorSlot","slots","errorMessage","messageError","messageStyles","written","messageLine","messageInset","counter"],"sources":["../../src/field/index.tsx"],"sourcesContent":["import type { FocusEvent, HTMLAttributes, ReactNode, Ref } from 'react';\nimport type { ButtonProps, GroupProps, GroupRenderProps, InputProps, InputRenderProps, LabelProps, TextAreaProps } from 'react-aria-components';\nimport * as stylex from '@stylexjs/stylex';\nimport { createContext, useContext } from 'react';\nimport { FieldError, FieldErrorContext, Group, Input, InputContext, Label, Button as RACButton, SelectStateContext, Text, TextArea, TextAreaContext, TextContext, useSlottedContext, VisuallyHidden } from 'react-aria-components';\nimport { mergeStatefulStyles, mergeStyles } from '../styles/merge';\nimport { useInsideForm } from './root';\nimport { fieldChromeStyles, groupStyles } from './styles';\n\n// The chrome every field shares: the filled box with its label at the top, the\n// control inside it, and the line of supporting text under it. TextField drew\n// all of it on its own until the coverage plan brought a dozen more fields,\n// each of which would otherwise have written the same box a second time.\n//\n// Not a component of the library's own and not exported. Each field is still\n// React Aria's field component — TextField, NumberField, DateField — and these\n// are the parts it renders inside, which is what keeps the label association,\n// the description and error wiring, and validation on React Aria's side.\n//\n// Neither the notch nor the label can select on the state that drives them.\n// Both are children of the box and the state is the box's, and the filled\n// label reads it in CSS only because it changes type alone, which the box\n// hands down inherited — where the notch changes what it holds and the\n// label changes where it sits, and neither of those inherits. So the box's\n// content computes that state in React instead: focus from the box's own\n// render state, and a value from the control's context, which is where the\n// character counter reads it too. The border's colour is the box's,\n// inherited, which is what carries the hover, focus, error and disabled\n// roles to it.\n\n// What a control needs to know about the box around it: how the label is\n// drawn, and whether the control clears it with a margin — it does under\n// the filled box's label, and not under the outlined box's, whose label\n// sits on the outline rather than over the value.\ninterface BoxControl {\n label: BoxLabel;\n underLabel: boolean;\n}\n\n// How the box draws its label, for the control inside it — see the context\n// below.\ntype BoxLabel = 'fixed' | 'floating' | 'none';\ntype FieldBoxProps = {\n children?: ReactNode;\n /**\n * Whether the label sits in the empty box and floats to the top once the\n * field is focused or holds a value, as the text fields page draws it.\n * `false` keeps it small at the top in every state.\n * @default true\n */\n floatingLabel?: boolean;\n /**\n * Whether the control is holding anything, for a field whose control the\n * chrome cannot ask. It reads an input, a text area and a select's own\n * state; a control that is none of those — a token field's editable area,\n * say — says so here, and the floating label floats on it.\n */\n isPopulated?: boolean;\n /** What the field is for. */\n label: string;\n /** An icon at the start of the box, before the label and the control. */\n leading?: ReactNode;\n /**\n * Whether the box takes its height from the control inside it rather\n * than the page's 56dp, for a text area.\n * @default false\n */\n multiline?: boolean;\n /**\n * The box's own element. A field whose box is what something else is\n * anchored to needs it — a select's list is positioned against the box and\n * takes its width from it, which is what makes the two the same width.\n */\n ref?: Ref<HTMLDivElement>;\n /** An icon at the end of the box, after the control. */\n trailing?: ReactNode;\n /**\n * A press target covering the whole box, for a field whose box opens\n * something rather than taking a keystroke — {@link FieldTrigger}. Drawn\n * in the box itself rather than in the column the label and the control\n * share, so the padding and the icons open it too.\n */\n trigger?: ReactNode;\n /**\n * The filled box, or the outlined one: no fill, an outline that thickens\n * and takes the primary role while focused, and the label cutting it once\n * it floats.\n * @default 'filled'\n */\n variant?: FieldVariant;\n} & Omit<GroupProps, 'children'>;\n\n// `prefix` is also an HTML attribute — the RDFa one, which nothing here\n// wants — and React's element types carry it as a string, so it is left out\n// of the props taken from React Aria to make room for the affix.\ntype FieldInputProps = Omit<InputProps, 'prefix'> & {\n /**\n * Renders the value in the mono face with tabular figures, for amounts and\n * other numbers meant to be compared down a column.\n * @default false\n */\n numeric?: boolean;\n /**\n * Text before the value on its line, shown while the field is focused or\n * holds a value.\n */\n prefix?: ReactNode;\n /**\n * Text after the value on its line, shown while the field is focused or\n * holds a value.\n */\n suffix?: ReactNode;\n};\ntype FieldLabelProps = LabelProps & {\n /**\n * The states the colour follows. Disabled wins over error, and error over\n * focus, so a focused invalid field keeps its error colour.\n */\n state?: Partial<FieldLabelState>;\n /**\n * Where the label sits. `field` is inside a box, positioned and typed by\n * whatever renders it. `group` is above a group of controls, which has no\n * box to float a label in, so this one carries its type itself.\n * @default 'field'\n */\n variant?: FieldLabelVariant;\n};\ntype FieldLabelState = Pick<GroupRenderProps, 'isDisabled' | 'isFocusWithin' | 'isInvalid'>;\ntype FieldLabelVariant = 'field' | 'group';\ninterface FieldMessageProps {\n /**\n * Whether to count the characters the control holds at the end of the\n * line, against `maxLength` where there is one. The count is read off the\n * field's own input or text area context.\n * @default false\n */\n characterCount?: boolean;\n /**\n * How the limit is said to a screen reader, where there is a `maxLength`.\n * It is read with the field on focus rather than as the value changes, so\n * it names the limit and not what is left of it.\n * @default `Up to ${maxLength} characters`, singular for a limit of one\n */\n characterLimitLabel?: string | undefined;\n /**\n * A hint shown under the field. Replaced by `error` when there is one, so\n * the two never stack.\n */\n description?: string | undefined;\n /** The problem with the current value, in words. */\n error?: string | undefined;\n /**\n * Whether the line is indented to a box's inline padding, so it starts\n * where a value above it does. Off for a field with no box to line up with.\n * @default true\n */\n inset?: boolean;\n /** The limit the count is shown against. */\n maxLength?: number | undefined;\n}\ntype FieldTextAreaProps = TextAreaProps & {\n /**\n * Whether the control grows with the text it holds, from the rows it asks\n * for. Off, it keeps its rows and scrolls.\n * @default false\n */\n autosize?: boolean;\n};\ntype FieldTriggerProps = ButtonProps;\ntype FieldValueProps = HTMLAttributes<HTMLElement> & {\n /**\n * Whether the field has focus. A hidden placeholder appears while it does,\n * the way an input's does.\n * @default false\n */\n isFocused?: boolean;\n /**\n * Whether nothing has been chosen yet, so what is drawn is the placeholder\n * rather than a value.\n * @default false\n */\n isPlaceholder?: boolean;\n};\ntype FieldVariant = 'filled' | 'outlined';\n\n// A control under a floating label carries a placeholder so the box can\n// tell when it is populated, shown only while focused. The default is what\n// a control rendered outside any box gets — a search bar's, which has no\n// label over it and shows its placeholder in every state. The four a box\n// provides are hoisted so each is one stable object.\nconst OUTSIDE_BOX: BoxControl = {\n label: 'none',\n underLabel: false\n};\nconst BOX_CONTROLS = {\n filled: {\n fixed: {\n label: 'fixed',\n underLabel: true\n },\n floating: {\n label: 'floating',\n underLabel: true\n }\n },\n outlined: {\n fixed: {\n label: 'fixed',\n underLabel: false\n },\n floating: {\n label: 'floating',\n underLabel: false\n }\n }\n} satisfies Record<FieldVariant, Record<'fixed' | 'floating', BoxControl>>;\nconst BoxContext = createContext<BoxControl>(OUTSIDE_BOX);\n\n// Written as calls rather than function literals at the prop, which is what\n// react-perf's no-new-function-as-prop is after; the React Compiler memoises\n// each result on its inputs.\nfunction boxContent(label: string, children: ReactNode, floatingLabel: boolean, isPopulated: boolean | undefined, leading: ReactNode, multiline: boolean, trailing: ReactNode, trigger: ReactNode, variant: FieldVariant) {\n return (state: GroupRenderProps) => <BoxContent floatingLabel={floatingLabel} isPopulated={isPopulated} label={label} leading={leading} multiline={multiline} state={state} trailing={trailing} trigger={trigger} variant={variant}>\n {children}\n </BoxContent>;\n}\n\n/**\n * What a box holds: its icons, its label and the control between them, plus\n * the outline when it has one. A component rather than the render function\n * itself, so it can read whether the control holds a value — which is what\n * the outlined box's notch and label follow, and what CSS cannot express\n * for them. See the outlined variant's note above.\n */\nfunction BoxContent({\n children,\n floatingLabel,\n isPopulated,\n label,\n leading,\n multiline,\n state,\n trailing,\n trigger,\n variant\n}: {\n children: ReactNode;\n floatingLabel: boolean;\n isPopulated: boolean | undefined;\n label: string;\n leading: ReactNode;\n multiline: boolean;\n state: GroupRenderProps;\n trailing: ReactNode;\n trigger: ReactNode;\n variant: FieldVariant;\n}) {\n const read = useFieldPopulated();\n const populated = isPopulated ?? read;\n const outlined = variant === 'outlined';\n const floated = !floatingLabel || state.isFocusWithin || populated;\n return <BoxContext value={BOX_CONTROLS[variant][floatingLabel ? 'floating' : 'fixed']}>\n {outlined ? <fieldset aria-hidden=\"true\" {...stylex.props(fieldChromeStyles.outline, leading !== undefined && fieldChromeStyles.outlineLeading, trailing !== undefined && fieldChromeStyles.outlineTrailing, state.isFocusWithin && fieldChromeStyles.outlineFocused)}>\n <legend {...stylex.props(fieldChromeStyles.outlineNotch, floated && fieldChromeStyles.outlineNotchOpen)}>\n {floated ? label : null}\n </legend>\n </fieldset> : null}\n {trigger}\n {leading === undefined ? null : <span {...stylex.props(fieldChromeStyles.icon, multiline && fieldChromeStyles.iconMultiline, outlined && fieldChromeStyles.iconOutlined, state.isDisabled && fieldChromeStyles.iconDisabled)}>\n {leading}\n </span>}\n <div {...stylex.props(fieldChromeStyles.column, floatingLabel && fieldChromeStyles.columnFloating, state.isDisabled && (floatingLabel ? fieldChromeStyles.columnDisabledFloating : fieldChromeStyles.columnDisabled))}>\n <FieldLabel state={state} {...stylex.props(fieldChromeStyles.boxLabel, floatingLabel && floated && fieldChromeStyles.boxLabelFloated, outlined && fieldChromeStyles.boxLabelOutlined, outlined && floated && fieldChromeStyles.boxLabelOutlinedFloated)}>\n {label}\n </FieldLabel>\n {children}\n </div>\n {trailing === undefined ? null : <span {...stylex.props(fieldChromeStyles.icon, multiline && fieldChromeStyles.iconMultiline, outlined && fieldChromeStyles.iconOutlined, state.isInvalid && fieldChromeStyles.iconError, state.isDisabled && fieldChromeStyles.iconDisabled)}>\n {trailing}\n </span>}\n </BoxContext>;\n}\nfunction boxStyles(floatingLabel: boolean, multiline: boolean, leading: boolean, trailing: boolean, variant: FieldVariant) {\n const outlined = variant === 'outlined';\n return (state: GroupRenderProps) => stylex.props(fieldChromeStyles.box, floatingLabel ? fieldChromeStyles.boxFloating : fieldChromeStyles.boxFixed, multiline && fieldChromeStyles.boxMultiline, leading && fieldChromeStyles.boxLeading, trailing && fieldChromeStyles.boxTrailing, outlined && fieldChromeStyles.boxOutlined, outlined && floatingLabel && fieldChromeStyles.boxOutlinedFloating, outlined && multiline && fieldChromeStyles.boxOutlinedMultiline, state.isInvalid && (outlined ? fieldChromeStyles.boxOutlinedError : fieldChromeStyles.boxError), state.isDisabled && (outlined ? fieldChromeStyles.boxOutlinedDisabled : fieldChromeStyles.boxDisabled));\n}\n\n/**\n * The box a control sits in, filled or outlined, with its label. React\n * Aria's `Group`, so\n * the field around it hands down `isDisabled` and `isInvalid` through context\n * and the box reports focus within it as render state, which is what the\n * label's colour follows. A field that provides no group context — one built\n * on a button rather than an input — passes the two states itself.\n */\nfunction FieldBox({\n children,\n floatingLabel = true,\n isPopulated,\n label,\n leading,\n multiline = false,\n trailing,\n trigger,\n variant = 'filled',\n ...props\n}: FieldBoxProps) {\n return <Group {...props} {...mergeStatefulStyles(boxStyles(floatingLabel, multiline, leading !== undefined, trailing !== undefined, variant), props)}>\n {boxContent(label, children, floatingLabel, isPopulated, leading, multiline, trailing, trigger, variant)}\n </Group>;\n}\n\n/**\n * A field's text control, in a {@link FieldBox} or on its own. React Aria's\n * `Input`, which takes its label association, value and validation from the\n * field around it and reports its disabled state as render state.\n *\n * In a box it clears the label at the top, and under a floating label it\n * always carries a placeholder, since that is what the box reads to tell a\n * populated control from an empty one: its own where it was given one, a\n * blank otherwise. Outside a box it has no label over it and shows the\n * placeholder it was given in every state.\n */\nfunction FieldInput({\n numeric = false,\n placeholder,\n prefix,\n suffix,\n ...props\n}: FieldInputProps) {\n const box = useContext(BoxContext);\n const control = <Input placeholder={placeholder ?? (box.label === 'floating' ? ' ' : undefined)} {...props} {...mergeStatefulStyles((state: InputRenderProps) => stylex.props(fieldChromeStyles.input, box.underLabel && fieldChromeStyles.inputUnderLabel, box.label === 'floating' && fieldChromeStyles.inputUnderFloatingLabel, numeric && fieldChromeStyles.numeric, state.isDisabled && fieldChromeStyles.inputDisabled), props)} />;\n if (prefix === undefined && suffix === undefined) {\n return control;\n }\n return <span {...stylex.props(fieldChromeStyles.affixLine)}>\n {prefix === undefined ? null : <span {...stylex.props(fieldChromeStyles.affix, box.underLabel && fieldChromeStyles.inputUnderLabel)}>\n {prefix}\n </span>}\n {control}\n {suffix === undefined ? null : <span {...stylex.props(fieldChromeStyles.affix, box.underLabel && fieldChromeStyles.inputUnderLabel)}>\n {suffix}\n </span>}\n </span>;\n}\n\n/**\n * A date or a time's segments, in a {@link FieldBox}: React Aria's\n * `DateInput`, or the group holding a range's two. This is what carries the\n * control's type and its place on the line, clearing the label at the top,\n * as {@link FieldValue} does for a value that was chosen.\n *\n * A typed value longer than its box behaves as an input's text does. It is\n * clipped rather than cut short, since every segment on the line is still a\n * place to type. The browser scrolls whichever segment has focus into view,\n * as it scrolls to an input's caret. And when focus leaves the segments the\n * line goes back to its start, as an input's text does on blur, so a value\n * at rest reads from its beginning rather than from wherever it was left.\n */\nfunction FieldSegments({\n children\n}: {\n children: ReactNode;\n}) {\n const box = useContext(BoxContext);\n return <span onBlur={returnToStart} {...stylex.props(fieldChromeStyles.input, fieldChromeStyles.segments, box.underLabel && fieldChromeStyles.inputUnderLabel)}>\n {children}\n </span>;\n}\n\n/**\n * A field's multi-line text control, in a {@link FieldBox} drawn `multiline`.\n * React Aria's `TextArea`, with the same label association, value and\n * validation {@link FieldInput} takes from the field around it, and the same\n * placeholder under a floating label.\n *\n * Given `autosize` it grows with its text from the rows it asks for. The\n * value it grows to fit is read off the field's context rather than\n * measured: the box holds a hidden replica of it in the control's own type,\n * in the same grid cell as the control, and the cell is as tall as whichever\n * of the two is taller.\n */\nfunction FieldTextArea({\n autosize = false,\n placeholder,\n ...props\n}: FieldTextAreaProps) {\n const box = useContext(BoxContext);\n const context = useSlottedContext(TextAreaContext);\n const value = typeof context?.value === 'string' ? context.value : '';\n const control = <TextArea placeholder={placeholder ?? (box.label === 'floating' ? ' ' : undefined)} {...props} {...mergeStatefulStyles((state: InputRenderProps) => stylex.props(fieldChromeStyles.input, box.underLabel && fieldChromeStyles.inputUnderLabel, box.label === 'floating' && fieldChromeStyles.inputUnderFloatingLabel, fieldChromeStyles.textArea, autosize && fieldChromeStyles.textAreaAutosize, autosize && fieldChromeStyles.autosizeCell, state.isDisabled && fieldChromeStyles.inputDisabled), props)} />;\n if (!autosize) {\n return control;\n }\n\n // A trailing space keeps a final line break of the value as a line of the\n // replica, which is how the control renders it.\n return <div {...stylex.props(fieldChromeStyles.autosize)}>\n {control}\n <div aria-hidden=\"true\" {...stylex.props(fieldChromeStyles.input, box.underLabel && fieldChromeStyles.inputUnderLabel, fieldChromeStyles.replica, fieldChromeStyles.autosizeCell)}>\n {value}{' '}\n </div>\n </div>;\n}\n\n/**\n * The press target over a {@link FieldBox} whose whole surface opens\n * something — a select's list, a picker's calendar. React Aria's `Button`,\n * which takes the trigger's props from the field around it through context.\n *\n * It covers the box rather than sitting on its value's line, so the box's\n * own padding opens the field too. It draws nothing: the box already carries\n * the fill, the underline and the focus indicator, and it lights up while\n * this has focus because the indicator follows focus within.\n */\nfunction FieldTrigger(props: FieldTriggerProps) {\n return <RACButton {...props} {...mergeStatefulStyles(stylex.props(fieldChromeStyles.trigger), props)} />;\n}\n\n/**\n * A field's value where it was chosen rather than typed, in a\n * {@link FieldBox}. Put React Aria's own element inside it — a select's\n * `SelectValue` — and this is what carries the input's type and its place on\n * the line, clearing the label at the top and truncating rather than\n * wrapping. A date or a time is typed, segment by segment, and takes\n * {@link FieldSegments} instead.\n *\n * The wrapper is the styled one rather than React Aria's element, because\n * this is the box's flex item: styling the element inside instead left it\n * sizing itself against a parent that had already shrink-wrapped to it.\n *\n * `isPlaceholder` says nothing has been chosen, which takes the muted role;\n * under a floating label it is hidden until the field is focused, exactly as\n * an input's placeholder is.\n */\nfunction FieldValue({\n isFocused = false,\n isPlaceholder = false,\n ...props\n}: FieldValueProps) {\n const box = useContext(BoxContext);\n const hidden = isPlaceholder && box.label === 'floating' && !isFocused;\n return <span {...props} {...mergeStyles(stylex.props(fieldChromeStyles.input, fieldChromeStyles.value, box.underLabel && fieldChromeStyles.inputUnderLabel, isPlaceholder && fieldChromeStyles.valuePlaceholder, hidden && fieldChromeStyles.valuePlaceholderHidden), props)} />;\n}\n\n// Back to the start of the line once focus has left every segment on it —\n// not while it moves from one segment to the next. The start is 0 in either\n// writing direction: a right-to-left line scrolls towards negative values.\nfunction returnToStart(event: FocusEvent<HTMLElement>) {\n if (!event.currentTarget.contains(event.relatedTarget)) {\n event.currentTarget.scrollLeft = 0;\n }\n}\nfunction useFieldPopulated() {\n const input = useSlottedContext(InputContext);\n const textArea = useSlottedContext(TextAreaContext);\n // A field whose value is chosen rather than typed holds no input at all,\n // so being populated is a question for its own state — without this a\n // select's floating label never floats, however much is chosen.\n const select = useContext(SelectStateContext);\n if (select !== null) {\n return select.selectionManager.selectedKeys.size > 0;\n }\n const value = input?.value ?? textArea?.value ?? '';\n return String(value).length > 0;\n}\n\n/**\n * Whether the control in this box is holding anything, read off React\n * Aria's context for whichever control the field renders. The filled box\n * reads the same thing in CSS through `:placeholder-shown`; this is for\n * what CSS cannot express — see the outlined variant's note above.\n */\n/**\n * A field's label: the colour alone, positioned and given its type by whatever\n * renders it. React Aria's `Label`, which the field around it associates with\n * its control through context.\n */\n// Hoisted rather than written as the parameter's default, which would be a\n// new object on every render.\nconst NO_STATE: Partial<FieldLabelState> = {};\nfunction FieldLabel({\n state = NO_STATE,\n variant = 'field',\n ...props\n}: FieldLabelProps) {\n const {\n isDisabled = false,\n isFocusWithin = false,\n isInvalid = false\n } = state;\n return <Label {...props} {...mergeStyles(stylex.props(fieldChromeStyles.label, variant === 'group' && groupStyles.label, isDisabled && fieldChromeStyles.labelDisabled, isInvalid && fieldChromeStyles.labelError, !isDisabled && !isInvalid && isFocusWithin && fieldChromeStyles.labelFocused), props)} />;\n}\n\n/**\n * The line under a field: the error while there is one, the description\n * otherwise. The error goes through React Aria's `FieldError`, which renders\n * only while the field is invalid and falls back to whatever validation\n * errors the field carries when no message is given — which is how a `Form`\n * with server-side errors, or the browser's own, reaches it without any\n * field changing. The description steps aside for those too, which is what\n * the field's validation state is read for.\n */\nfunction FieldMessage({\n characterCount = false,\n characterLimitLabel,\n description,\n error,\n inset = true,\n maxLength\n}: FieldMessageProps) {\n const validation = useContext(FieldErrorContext);\n const invalid = error !== undefined || (validation?.isInvalid ?? false);\n const input = useSlottedContext(InputContext);\n const textArea = useSlottedContext(TextAreaContext);\n const insideForm = useInsideForm();\n // Read directly rather than through `useSlottedContext`, which throws for\n // a missing slot exactly as `Text` does — the throw is the thing being\n // avoided. What it is for is below, at `written`.\n const text = useContext(TextContext);\n\n // The limit, in words, for the description React Aria reads out with the\n // field. `maxLength` alone reaches the control as the native attribute,\n // which is not reliably announced, and the count beside the message is\n // hidden — so without this a reader is never told there is a limit.\n const limit = maxLength === undefined ? undefined : characterLimitLabel ?? `Up to ${maxLength} character${maxLength === 1 ? '' : 's'}`;\n const hidden = limit === undefined ? null : <VisuallyHidden elementType=\"span\">\n <Text slot=\"description\">{limit}</Text>\n </VisuallyHidden>;\n\n // Nothing to say, and nowhere a message could arrive from: the field ends\n // at its control. Inside a form the line is drawn anyway, empty, since a\n // form is where a message appears after the fact — a server's answer, or\n // the browser's own on submit — and every field below this one would\n // otherwise move by the line's height when it does.\n //\n // A limit to announce leaves on its own rather than bringing the line with\n // it. The line is one line of type plus the 4dp above it, so drawing it\n // for something nobody can see would make a field with a limit taller than\n // the same field without one.\n if (!invalid && description === undefined && !characterCount && !insideForm) {\n return hidden;\n }\n const value = input?.value ?? textArea?.value ?? '';\n const length = String(value).length;\n const hint = invalid ? undefined : description;\n\n // One slotted description, never two. React Aria hands every element in\n // its description slot the same generated id, so a second one puts a\n // duplicate id in the document and axe fails the story. The limit rides\n // inside the hint where there is one, and carries the whole slot where\n // there is not — hidden either way, since the count already draws it.\n //\n // Hidden by clipping rather than by leaving it out of the row, and the\n // difference is a gap: the row is a flex line with 16dp between its parts,\n // and an element with no width is still a part. Clipping takes it out of\n // flow, so a field with a limit and no hint has the line it had before.\n const described = hint === undefined ? hidden : <Text slot=\"description\" {...stylex.props(fieldChromeStyles.message)}>\n {hint}\n {limit === undefined ? null :\n // The space is load-bearing: a description is read as the text\n // content of one element, and two spans run together without it.\n <VisuallyHidden elementType=\"span\">{` ${limit}`}</VisuallyHidden>}\n </Text>;\n\n // Outside a field that validates there is nothing to hand React Aria's\n // `FieldError`, and it draws nothing without it — a group of chips is a\n // group rather than a form control, so the error it was given is written\n // out instead.\n //\n // Through the group's error slot where there is one, which is what makes\n // the message reach a screen reader at all: React Aria generates the id\n // its `aria-describedby` points at up front, then keeps it only while\n // something in the document carries it, so an element outside the slot is\n // drawn and never announced. The description beside it has always gone\n // through its own slot, which is why that half worked.\n //\n // Not every group has one. `TagGroup` wires up a description and an error;\n // `TokenField` wires up a description alone and generates no error id at\n // all, so its message has nothing to attach to and stays a bare element.\n const errorSlot = text !== null && typeof text === 'object' && 'slots' in text && text.slots?.errorMessage !== undefined;\n const messageStyles = stylex.props(fieldChromeStyles.message, fieldChromeStyles.messageError);\n const written = errorSlot ? <Text slot=\"errorMessage\" {...messageStyles}>\n {error}\n </Text> : <span {...messageStyles}>{error}</span>;\n return <div {...stylex.props(fieldChromeStyles.message, fieldChromeStyles.messageLine, inset && fieldChromeStyles.messageInset)}>\n {validation === null && error !== undefined ? written : <FieldError {...stylex.props(fieldChromeStyles.message, fieldChromeStyles.messageError)}>\n {error}\n </FieldError>}\n {described}\n {characterCount ?\n // Hidden from the tree, and the limit above is why. A count is the\n // one piece of supporting text that changes on every keystroke, and\n // a screen reader reading it back at that rate is worse than not\n // hearing it — the limit said once on focus is what a reader needs,\n // and this is the same fact drawn for whoever is looking.\n <span aria-hidden=\"true\" {...stylex.props(fieldChromeStyles.message, fieldChromeStyles.counter, invalid && fieldChromeStyles.messageError)}>\n {maxLength === undefined ? length : `${length}/${maxLength}`}\n </span> : null}\n </div>;\n}\nexport type { FieldBoxProps, FieldInputProps, FieldLabelProps, FieldLabelState, FieldLabelVariant, FieldMessageProps, FieldTextAreaProps, FieldVariant };\nexport { FieldBox, FieldInput, FieldLabel, FieldMessage, FieldSegments, FieldTextArea, FieldTrigger, FieldValue };"],"mappings":"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"}
@@ -1,3 +1,6 @@
1
+ import { props } from "../node_modules/@stylexjs/stylex/lib/es/stylex.js";
2
+ import { mergeStyles } from "../styles/merge.js";
3
+ import { glyphStyles } from "./styles.js";
1
4
  import { c } from "react/compiler-runtime";
2
5
  import { jsx } from "react/jsx-runtime";
3
6
  //#region src/glyphs/index.tsx
@@ -10,10 +13,7 @@ function ArrowDownwardGlyph(props) {
10
13
  } else t0 = $[0];
11
14
  let t1;
12
15
  if ($[1] !== props) {
13
- t1 = /* @__PURE__ */ jsx("svg", {
14
- "aria-hidden": "true",
15
- fill: "currentColor",
16
- viewBox: "0 0 24 24",
16
+ t1 = /* @__PURE__ */ jsx(Glyph, {
17
17
  ...props,
18
18
  children: t0
19
19
  });
@@ -31,10 +31,7 @@ function ArrowUpwardGlyph(props) {
31
31
  } else t0 = $[0];
32
32
  let t1;
33
33
  if ($[1] !== props) {
34
- t1 = /* @__PURE__ */ jsx("svg", {
35
- "aria-hidden": "true",
36
- fill: "currentColor",
37
- viewBox: "0 0 24 24",
34
+ t1 = /* @__PURE__ */ jsx(Glyph, {
38
35
  ...props,
39
36
  children: t0
40
37
  });
@@ -52,10 +49,7 @@ function CalendarGlyph(props) {
52
49
  } else t0 = $[0];
53
50
  let t1;
54
51
  if ($[1] !== props) {
55
- t1 = /* @__PURE__ */ jsx("svg", {
56
- "aria-hidden": "true",
57
- fill: "currentColor",
58
- viewBox: "0 0 24 24",
52
+ t1 = /* @__PURE__ */ jsx(Glyph, {
59
53
  ...props,
60
54
  children: t0
61
55
  });
@@ -73,10 +67,7 @@ function CheckGlyph(props) {
73
67
  } else t0 = $[0];
74
68
  let t1;
75
69
  if ($[1] !== props) {
76
- t1 = /* @__PURE__ */ jsx("svg", {
77
- "aria-hidden": "true",
78
- fill: "currentColor",
79
- viewBox: "0 0 24 24",
70
+ t1 = /* @__PURE__ */ jsx(Glyph, {
80
71
  ...props,
81
72
  children: t0
82
73
  });
@@ -85,6 +76,62 @@ function CheckGlyph(props) {
85
76
  } else t1 = $[2];
86
77
  return t1;
87
78
  }
79
+ /**
80
+ * The svg every glyph draws: the 24-unit grid its path is on, the colour it
81
+ * takes from the text around it, and its box. The call site's `className`
82
+ * and `style` are merged with the glyph's own rather than replacing them.
83
+ */
84
+ function Glyph(t0) {
85
+ const $ = c(14);
86
+ let children;
87
+ let t1;
88
+ let t2;
89
+ let t3;
90
+ let t4;
91
+ let t5;
92
+ if ($[0] !== t0) {
93
+ const { children: t6, ...props$1 } = t0;
94
+ children = t6;
95
+ t1 = "true";
96
+ t2 = "currentColor";
97
+ t3 = "0 0 24 24";
98
+ t4 = props$1;
99
+ t5 = mergeStyles(props(glyphStyles.glyph), props$1);
100
+ $[0] = t0;
101
+ $[1] = children;
102
+ $[2] = t1;
103
+ $[3] = t2;
104
+ $[4] = t3;
105
+ $[5] = t4;
106
+ $[6] = t5;
107
+ } else {
108
+ children = $[1];
109
+ t1 = $[2];
110
+ t2 = $[3];
111
+ t3 = $[4];
112
+ t4 = $[5];
113
+ t5 = $[6];
114
+ }
115
+ let t6;
116
+ if ($[7] !== children || $[8] !== t1 || $[9] !== t2 || $[10] !== t3 || $[11] !== t4 || $[12] !== t5) {
117
+ t6 = /* @__PURE__ */ jsx("svg", {
118
+ "aria-hidden": t1,
119
+ fill: t2,
120
+ viewBox: t3,
121
+ ...t4,
122
+ ...t5,
123
+ children
124
+ });
125
+ $[7] = children;
126
+ $[8] = t1;
127
+ $[9] = t2;
128
+ $[10] = t3;
129
+ $[11] = t4;
130
+ $[12] = t5;
131
+ $[13] = t6;
132
+ } else t6 = $[13];
133
+ return t6;
134
+ }
88
135
  function MinusGlyph(props) {
89
136
  const $ = c(3);
90
137
  let t0;
@@ -94,10 +141,7 @@ function MinusGlyph(props) {
94
141
  } else t0 = $[0];
95
142
  let t1;
96
143
  if ($[1] !== props) {
97
- t1 = /* @__PURE__ */ jsx("svg", {
98
- "aria-hidden": "true",
99
- fill: "currentColor",
100
- viewBox: "0 0 24 24",
144
+ t1 = /* @__PURE__ */ jsx(Glyph, {
101
145
  ...props,
102
146
  children: t0
103
147
  });
@@ -116,10 +160,7 @@ function ChevronEndGlyph(props) {
116
160
  } else t0 = $[0];
117
161
  let t1;
118
162
  if ($[1] !== props) {
119
- t1 = /* @__PURE__ */ jsx("svg", {
120
- "aria-hidden": "true",
121
- fill: "currentColor",
122
- viewBox: "0 0 24 24",
163
+ t1 = /* @__PURE__ */ jsx(Glyph, {
123
164
  ...props,
124
165
  children: t0
125
166
  });
@@ -137,10 +178,7 @@ function CloseGlyph(props) {
137
178
  } else t0 = $[0];
138
179
  let t1;
139
180
  if ($[1] !== props) {
140
- t1 = /* @__PURE__ */ jsx("svg", {
141
- "aria-hidden": "true",
142
- fill: "currentColor",
143
- viewBox: "0 0 24 24",
181
+ t1 = /* @__PURE__ */ jsx(Glyph, {
144
182
  ...props,
145
183
  children: t0
146
184
  });
@@ -158,10 +196,7 @@ function PlusGlyph(props) {
158
196
  } else t0 = $[0];
159
197
  let t1;
160
198
  if ($[1] !== props) {
161
- t1 = /* @__PURE__ */ jsx("svg", {
162
- "aria-hidden": "true",
163
- fill: "currentColor",
164
- viewBox: "0 0 24 24",
199
+ t1 = /* @__PURE__ */ jsx(Glyph, {
165
200
  ...props,
166
201
  children: t0
167
202
  });
@@ -179,10 +214,7 @@ function SearchGlyph(props) {
179
214
  } else t0 = $[0];
180
215
  let t1;
181
216
  if ($[1] !== props) {
182
- t1 = /* @__PURE__ */ jsx("svg", {
183
- "aria-hidden": "true",
184
- fill: "currentColor",
185
- viewBox: "0 0 24 24",
217
+ t1 = /* @__PURE__ */ jsx(Glyph, {
186
218
  ...props,
187
219
  children: t0
188
220
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["SVGProps","GlyphProps","Omit","SVGSVGElement","ArrowDownwardGlyph","props","$","_c","t0","Symbol","for","t1","ArrowUpwardGlyph","CalendarGlyph","CheckGlyph","MinusGlyph","IndeterminateGlyph","ChevronEndGlyph","CloseGlyph","PlusGlyph","SearchGlyph"],"sources":["../../src/glyphs/index.tsx"],"sourcesContent":["import type { SVGProps } from 'react'\n\n// The glyphs the library's own controls draw: the check and the dash a\n// checkbox shows, the plus and minus a number field's steppers show, and\n// the magnifier and cross a search field shows. Inline SVG in\n// `currentColor`, sized by whatever renders them, and private to the\n// library — a call site with icons of its own passes them to IconButton and\n// the slots that take a node, which is why nothing here is exported from\n// the package.\n//\n// The paths are the check, the horizontal rule, the plus, the search, the\n// close, the right chevron, the two sort arrows and the calendar from\n// Material Symbols on their 24-unit grid, which is what the checkbox page\n// draws at 18dp, the icon buttons page at 20 and the search, menus and date\n// picker pages at 24.\n\ntype GlyphProps = Omit<SVGProps<SVGSVGElement>, 'children' | 'viewBox'>\n\n// Which way a sorted column is ordered. Up is ascending and down is\n// descending, which is the direction the data tables page puts beside a\n// column header's name. Neither mirrors under a right-to-left writing mode:\n// they say \"up\" and \"down\" rather than \"onward\", and those do not flip.\nfunction ArrowDownwardGlyph(props: GlyphProps) {\n return (\n <svg aria-hidden=\"true\" fill=\"currentColor\" viewBox=\"0 0 24 24\" {...props}>\n <path d=\"M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z\" />\n </svg>\n )\n}\n\nfunction ArrowUpwardGlyph(props: GlyphProps) {\n return (\n <svg aria-hidden=\"true\" fill=\"currentColor\" viewBox=\"0 0 24 24\" {...props}>\n <path d=\"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z\" />\n </svg>\n )\n}\n\n// What the date picker's trigger draws: the calendar a date is picked from.\nfunction CalendarGlyph(props: GlyphProps) {\n return (\n <svg aria-hidden=\"true\" fill=\"currentColor\" viewBox=\"0 0 24 24\" {...props}>\n <path d=\"M19 4h-1V2h-2v2H8V2H6v2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2zm0 16H5V10h14v10zm0-12H5V6h14v2z\" />\n </svg>\n )\n}\n\nfunction CheckGlyph(props: GlyphProps) {\n return (\n <svg aria-hidden=\"true\" fill=\"currentColor\" viewBox=\"0 0 24 24\" {...props}>\n <path d=\"M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\" />\n </svg>\n )\n}\n\n// The same rule stands for a partly selected checkbox and for a stepper's\n// decrement; the two names say which is meant at the call site.\nfunction MinusGlyph(props: GlyphProps) {\n return (\n <svg aria-hidden=\"true\" fill=\"currentColor\" viewBox=\"0 0 24 24\" {...props}>\n <path d=\"M19 13H5v-2h14v2z\" />\n </svg>\n )\n}\n\nconst IndeterminateGlyph = MinusGlyph\n\n// Points at the submenu a menu item opens. It says \"further in\" rather than\n// \"to the right\", so whatever renders it mirrors it under a right-to-left\n// writing mode — the glyph itself carries no direction of its own, since a\n// transform here would be an inline style.\nfunction ChevronEndGlyph(props: GlyphProps) {\n return (\n <svg aria-hidden=\"true\" fill=\"currentColor\" viewBox=\"0 0 24 24\" {...props}>\n <path d=\"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\" />\n </svg>\n )\n}\n\nfunction CloseGlyph(props: GlyphProps) {\n return (\n <svg aria-hidden=\"true\" fill=\"currentColor\" viewBox=\"0 0 24 24\" {...props}>\n <path d=\"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" />\n </svg>\n )\n}\n\nfunction PlusGlyph(props: GlyphProps) {\n return (\n <svg aria-hidden=\"true\" fill=\"currentColor\" viewBox=\"0 0 24 24\" {...props}>\n <path d=\"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\" />\n </svg>\n )\n}\n\nfunction SearchGlyph(props: GlyphProps) {\n return (\n <svg aria-hidden=\"true\" fill=\"currentColor\" viewBox=\"0 0 24 24\" {...props}>\n <path d=\"M15.5 14h-.79l-.28-.27A6.471 6.471 0 0 0 16 9.5 6.5 6.5 0 1 0 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\" />\n </svg>\n )\n}\n\nexport type { GlyphProps }\n\nexport {\n ArrowDownwardGlyph,\n ArrowUpwardGlyph,\n CalendarGlyph,\n CheckGlyph,\n ChevronEndGlyph,\n CloseGlyph,\n IndeterminateGlyph,\n MinusGlyph,\n PlusGlyph,\n SearchGlyph,\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["ReactNode","SVGProps","stylex","mergeStyles","glyphStyles","GlyphProps","Omit","SVGSVGElement","ArrowDownwardGlyph","props","$","_c","t0","Symbol","for","t1","ArrowUpwardGlyph","CalendarGlyph","CheckGlyph","Glyph","children","t2","t3","t4","t5","t6","glyph","MinusGlyph","IndeterminateGlyph","ChevronEndGlyph","CloseGlyph","PlusGlyph","SearchGlyph"],"sources":["../../src/glyphs/index.tsx"],"sourcesContent":["import type { ReactNode, SVGProps } from 'react';\nimport * as stylex from '@stylexjs/stylex';\nimport { mergeStyles } from '../styles/merge';\nimport { glyphStyles } from './styles';\n\n// The glyphs the library's own controls draw: the check and the dash a\n// checkbox shows, the plus and minus a number field's steppers show, and\n// the magnifier and cross a search field shows. Inline SVG in\n// `currentColor`, sized by whatever renders them, and private to the\n// library — a call site with icons of its own passes them to IconButton and\n// the slots that take a node, which is why nothing here is exported from\n// the package.\n//\n// The paths are the check, the horizontal rule, the plus, the search, the\n// close, the right chevron, the two sort arrows and the calendar from\n// Material Symbols on their 24-unit grid, which is what the checkbox page\n// draws at 18dp, the icon buttons page at 20 and the search, menus and date\n// picker pages at 24.\n\ntype GlyphProps = Omit<SVGProps<SVGSVGElement>, 'children' | 'viewBox'>;\n\n// Which way a sorted column is ordered. Up is ascending and down is\n// descending, which is the direction the data tables page puts beside a\n// column header's name. Neither mirrors under a right-to-left writing mode:\n// they say \"up\" and \"down\" rather than \"onward\", and those do not flip.\nfunction ArrowDownwardGlyph(props: GlyphProps) {\n return <Glyph {...props}>\n <path d=\"M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z\" />\n </Glyph>;\n}\nfunction ArrowUpwardGlyph(props: GlyphProps) {\n return <Glyph {...props}>\n <path d=\"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z\" />\n </Glyph>;\n}\n\n// What the date picker's trigger draws: the calendar a date is picked from.\nfunction CalendarGlyph(props: GlyphProps) {\n return <Glyph {...props}>\n <path d=\"M19 4h-1V2h-2v2H8V2H6v2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2zm0 16H5V10h14v10zm0-12H5V6h14v2z\" />\n </Glyph>;\n}\nfunction CheckGlyph(props: GlyphProps) {\n return <Glyph {...props}>\n <path d=\"M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\" />\n </Glyph>;\n}\n\n/**\n * The svg every glyph draws: the 24-unit grid its path is on, the colour it\n * takes from the text around it, and its box. The call site's `className`\n * and `style` are merged with the glyph's own rather than replacing them.\n */\nfunction Glyph({\n children,\n ...props\n}: GlyphProps & {\n children: ReactNode;\n}) {\n return <svg aria-hidden=\"true\" fill=\"currentColor\" viewBox=\"0 0 24 24\" {...props} {...mergeStyles(stylex.props(glyphStyles.glyph), props)}>\n {children}\n </svg>;\n}\n\n// The same rule stands for a partly selected checkbox and for a stepper's\n// decrement; the two names say which is meant at the call site.\nfunction MinusGlyph(props: GlyphProps) {\n return <Glyph {...props}>\n <path d=\"M19 13H5v-2h14v2z\" />\n </Glyph>;\n}\nconst IndeterminateGlyph = MinusGlyph;\n\n// Points at the submenu a menu item opens. It says \"further in\" rather than\n// \"to the right\", so whatever renders it mirrors it under a right-to-left\n// writing mode — the glyph itself carries no direction of its own, since a\n// transform here would be an inline style.\nfunction ChevronEndGlyph(props: GlyphProps) {\n return <Glyph {...props}>\n <path d=\"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\" />\n </Glyph>;\n}\nfunction CloseGlyph(props: GlyphProps) {\n return <Glyph {...props}>\n <path d=\"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" />\n </Glyph>;\n}\nfunction PlusGlyph(props: GlyphProps) {\n return <Glyph {...props}>\n <path d=\"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\" />\n </Glyph>;\n}\nfunction SearchGlyph(props: GlyphProps) {\n return <Glyph {...props}>\n <path d=\"M15.5 14h-.79l-.28-.27A6.471 6.471 0 0 0 16 9.5 6.5 6.5 0 1 0 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\" />\n </Glyph>;\n}\nexport type { GlyphProps };\nexport { ArrowDownwardGlyph, ArrowUpwardGlyph, CalendarGlyph, CheckGlyph, ChevronEndGlyph, CloseGlyph, IndeterminateGlyph, MinusGlyph, PlusGlyph, SearchGlyph };"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ //#region src/glyphs/styles.ts
2
+ const glyphStyles = { glyph: {
3
+ kB7OPa: "x9f619",
4
+ $$css: true
5
+ } };
6
+ //#endregion
7
+ export { glyphStyles };
8
+
9
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","names":["stylex","glyphStyles","glyph","kB7OPa","$$css"],"sources":["../../src/glyphs/styles.ts"],"sourcesContent":["import * as stylex from '@stylexjs/stylex';\n\n// The glyphs' one style, apart from the glyphs in ./index.tsx so that file\n// exports components alone, which is what keeps fast refresh working for it.\n//\n// Every glyph is sized by whatever renders it, so the box it is sized in is\n// set here rather than beside each of those sizes: an element given an\n// explicit size sets `border-box`, and keeping that on the glyph is what\n// stops a new call site sizing one from forgetting it.\nconst glyphStyles = {\n glyph: {\n kB7OPa: \"x9f619\",\n $$css: true\n }\n};\nexport { glyphStyles };"],"mappings":";AASA,MAAMC,cAAc,EAClBC,OAAO;CACLC,QAAQ;CACRC,OAAO;AACT,EACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kanso-labs/kanso-ui",
3
- "version": "0.34.2",
3
+ "version": "0.34.3",
4
4
  "description": "A React component library built on React Aria Components primitives and styled with StyleX, with design tokens sourced from a single W3C DTCG file and compiled via Style Dictionary",
5
5
  "keywords": [
6
6
  "react",
@@ -93,7 +93,7 @@
93
93
  "babel-plugin-react-compiler": "1.0.0",
94
94
  "eslint": "10.11.0",
95
95
  "eslint-plugin-oxlint": "1.85.0",
96
- "eslint-plugin-perfectionist": "5.12.0",
96
+ "eslint-plugin-perfectionist": "5.12.1",
97
97
  "eslint-plugin-react-hooks": "7.1.1",
98
98
  "eslint-plugin-react-refresh": "0.5.7",
99
99
  "eslint-plugin-storybook": "10.6.0",