{"version":3,"file":"Select.jsx","names":["stylex","memo","a11y","interaction","reset","controlColor","font","fontSize","size","styles","create","select","colorScheme","background","default","inputBackground","inputActiveBackground","inputDisabledBackground","borderWidth","borderStyle","borderColor","inputBorder","inputActiveBorder","inputInvalidBorder","inputDisabledBorder","borderRadius","color","inputColor","inputActiveColor","inputDisabledColor","width","fontFamily","main","inputPlaceholderColor","outline","cursor","sizeVariants","small","padding","rem1","rem2","body","medium","px2","px3","rem4","fontWeight","large","rem6","Select","props","$","_c","t0","buttonStyle","disableTapHighlight","defaultOutline","t1","multiple","t2","value","undefined","t3","e","onChange","currentTarget","t4","autoComplete","autoFocus","children","defaultValue","disabled","name","required","SelectOptionGroup","SelectOption"],"sources":["../src/Select.tsx"],"sourcesContent":["import * as stylex from \"@stylexjs/stylex\";\nimport { type PropsWithChildren, memo } from \"react\";\n\nimport { a11y, interaction, reset } from \"./mixins\";\nimport { controlColor } from \"./theme.stylex\";\nimport { font, fontSize, size } from \"./tokens.stylex\";\n\nexport type SelectProps =\n\t| UncontrolledMultipleSelectProps\n\t| UncontrolledSingleSelectProps\n\t| ControlledSingleSelectProps\n\t| ControlledMultipleSelectProps;\n\n/**\n * @remarks Intentionally uses a native <select> element with options/optgroups under the hood.\n *          On mobile devices, it offers a better native select experience. And it's hard to get this right with a custom select component. We just style the top <select>.\n */\nexport interface BaseSelectProps extends PropsWithChildren {\n\tname?: string;\n\n\tsize?: \"small\" | \"medium\" | \"large\";\n\n\trequired?: boolean;\n\tdisabled?: boolean;\n\tautoComplete?: string;\n\tautoFocus?: boolean;\n}\n\nexport interface UncontrolledSingleSelectProps extends BaseSelectProps {\n\tmultiple?: false | undefined;\n\tdefaultValue?: string;\n}\n\nexport interface UncontrolledMultipleSelectProps extends BaseSelectProps {\n\tmultiple: true;\n\tdefaultValue?: string[];\n}\n\nexport interface ControlledSingleSelectProps\n\textends UncontrolledSingleSelectProps {\n\tvalue: string;\n\tonChange: (value: string) => void;\n}\n\nexport interface ControlledMultipleSelectProps\n\textends UncontrolledMultipleSelectProps {\n\tvalue: string[];\n\tonChange: (value: readonly string[]) => void;\n}\n\nconst styles = stylex.create({\n\tselect: {\n\t\t// ask the browser to render it in its native dark mode. We hope that this sets the dropdown style to dark mode.\n\t\tcolorScheme: \"dark\",\n\n\t\tbackground: {\n\t\t\tdefault: controlColor.inputBackground,\n\t\t\t\":focus\": controlColor.inputActiveBackground,\n\t\t\t\":disabled\": controlColor.inputDisabledBackground,\n\t\t},\n\n\t\tborderWidth: \"1px\",\n\t\tborderStyle: \"solid\",\n\t\tborderColor: {\n\t\t\tdefault: controlColor.inputBorder,\n\t\t\t\":focus\": controlColor.inputActiveBorder,\n\t\t\t// https://web.dev/articles/user-valid-and-user-invalid-pseudo-classes\n\t\t\t\":user-invalid\": controlColor.inputInvalidBorder,\n\t\t\t\":disabled\": controlColor.inputDisabledBorder,\n\t\t},\n\n\t\tborderRadius: 0,\n\t\tcolor: {\n\t\t\tdefault: controlColor.inputColor,\n\t\t\t\":focus\": controlColor.inputActiveColor,\n\t\t\t\":disabled\": controlColor.inputDisabledColor,\n\t\t},\n\n\t\twidth: \"100%\",\n\t\tfontFamily: font.main,\n\n\t\t\"::placeholder\": {\n\t\t\tcolor: controlColor.inputPlaceholderColor,\n\t\t},\n\n\t\toutline: {\n\t\t\t\":focus\": \"none\",\n\t\t},\n\t\tcursor: {\n\t\t\t\":disabled\": \"not-allowed\",\n\t\t},\n\t},\n});\n\nconst sizeVariants = stylex.create({\n\tsmall: {\n\t\tpadding: `${size.rem1} ${size.rem2}`,\n\t\tfontSize: fontSize.body,\n\t},\n\tmedium: {\n\t\tpadding: `${size.px2} ${size.px3}`,\n\t\tfontSize: size.rem4,\n\t\tfontWeight: 400,\n\t},\n\tlarge: {\n\t\tpadding: `${size.rem1} ${size.rem2}`,\n\t\tfontSize: size.rem6, // TODO: ASK-UX:So we have small/large text fields?\n\t},\n});\n\nexport const Select = memo(function Select(props: SelectProps) {\n\treturn (\n\t\t<select\n\t\t\t{...stylex.props(\n\t\t\t\treset.buttonStyle,\n\t\t\t\tinteraction.disableTapHighlight,\n\t\t\t\ta11y.defaultOutline,\n\t\t\t\tstyles.select,\n\t\t\t\tsizeVariants[props.size ?? \"small\"],\n\t\t\t)}\n\t\t\tname={props.name}\n\t\t\tdefaultValue={props.defaultValue}\n\t\t\trequired={props.required}\n\t\t\tdisabled={props.disabled}\n\t\t\tautoComplete={props.autoComplete}\n\t\t\t// biome-ignore lint/a11y/noAutofocus: We're just passing it down\n\t\t\tautoFocus={props.autoFocus}\n\t\t\tmultiple={\"multiple\" in props && props.multiple}\n\t\t\tvalue={\"value\" in props ? props.value : undefined}\n\t\t\tonChange={\n\t\t\t\t\"onChange\" in props\n\t\t\t\t\t? // biome-ignore lint/suspicious/noExplicitAny: passing \"multiple\" fixes this\n\t\t\t\t\t\t(e) => props.onChange(e.currentTarget.value as any)\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t>\n\t\t\t{props.children}\n\t\t</select>\n\t);\n});\n\nexport interface SelectOptionGroupProps extends PropsWithChildren {\n\tlabel: string;\n\tdisabled?: boolean;\n}\nexport const SelectOptionGroup = memo(function SelectOptionGroup(\n\tprops: SelectOptionGroupProps,\n) {\n\treturn <optgroup {...props} />;\n});\n\nexport interface SelectOptionProps extends PropsWithChildren {\n\tvalue: string;\n\tdisabled?: boolean;\n}\nexport const SelectOption = memo(function SelectOption(\n\tprops: SelectOptionProps,\n) {\n\treturn <option {...props} />;\n});\n"],"mappings":"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","ignoreList":[]}