@utk09/finra-ui 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/LICENSE +21 -0
  2. package/dist/Switch-BgWsJGsh.js +67 -0
  3. package/dist/Switch-BgWsJGsh.js.map +1 -0
  4. package/dist/components/Badge/Badge.d.ts +12 -0
  5. package/dist/components/Button/Button.d.ts +15 -0
  6. package/dist/components/ButtonGroup/ButtonGroup.d.ts +5 -0
  7. package/dist/components/Checkbox/Checkbox.d.ts +6 -0
  8. package/dist/components/Divider/Divider.d.ts +7 -0
  9. package/dist/components/FormField/FormField.d.ts +16 -0
  10. package/dist/components/IconButton/IconButton.d.ts +11 -0
  11. package/dist/components/Input/Input.d.ts +16 -0
  12. package/dist/components/NumberInput/NumberInput.d.ts +19 -0
  13. package/dist/components/Switch/Switch.d.ts +6 -0
  14. package/dist/components/Textarea/Textarea.d.ts +17 -0
  15. package/dist/components/componentIds.d.ts +24 -0
  16. package/dist/fonts/InclusiveSans-Bold.ttf +0 -0
  17. package/dist/fonts/InclusiveSans-BoldItalic.ttf +0 -0
  18. package/dist/fonts/InclusiveSans-Italic.ttf +0 -0
  19. package/dist/fonts/InclusiveSans-Light.ttf +0 -0
  20. package/dist/fonts/InclusiveSans-LightItalic.ttf +0 -0
  21. package/dist/fonts/InclusiveSans-Medium.ttf +0 -0
  22. package/dist/fonts/InclusiveSans-MediumItalic.ttf +0 -0
  23. package/dist/fonts/InclusiveSans-Regular.ttf +0 -0
  24. package/dist/fonts/InclusiveSans-SemiBold.ttf +0 -0
  25. package/dist/fonts/InclusiveSans-SemiBoldItalic.ttf +0 -0
  26. package/dist/index.d.ts +24 -0
  27. package/dist/index.js +834 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/styles.css +1 -0
  30. package/dist/styles.d.ts +2 -0
  31. package/dist/types/global.d.ts +14 -0
  32. package/dist/unstyled/Button/Button.d.ts +5 -0
  33. package/dist/unstyled/Checkbox/Checkbox.d.ts +5 -0
  34. package/dist/unstyled/IconButton/IconButton.d.ts +7 -0
  35. package/dist/unstyled/Input/Input.d.ts +5 -0
  36. package/dist/unstyled/NumberInput/NumberInput.d.ts +5 -0
  37. package/dist/unstyled/Slot.d.ts +5 -0
  38. package/dist/unstyled/Switch/Switch.d.ts +4 -0
  39. package/dist/unstyled/Textarea/Textarea.d.ts +5 -0
  40. package/dist/unstyled.d.ts +14 -0
  41. package/dist/unstyled.js +26 -0
  42. package/dist/unstyled.js.map +1 -0
  43. package/package.json +81 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/components/componentIds.ts","../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../../../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.mjs","../src/components/Button/Button.tsx","../src/components/IconButton/IconButton.tsx","../src/components/ButtonGroup/ButtonGroup.tsx","../src/components/Input/Input.tsx","../src/components/Textarea/Textarea.tsx","../src/components/NumberInput/NumberInput.tsx","../src/components/FormField/FormField.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Switch/Switch.tsx","../src/components/Badge/Badge.tsx","../src/components/Divider/Divider.tsx"],"sourcesContent":["export const FINRA_UI_ATTR = \"data-finra-ui\" as const;\n\nexport const componentIds = {\n // Button family\n button: \"button\",\n iconButton: \"icon-button\",\n buttonGroup: \"button-group\",\n\n // Input\n input: \"input\",\n inputField: \"input-field\",\n\n // Textarea\n textarea: \"textarea\",\n textareaField: \"textarea-field\",\n textareaCount: \"textarea-count\",\n\n // NumberInput\n numberInput: \"number-input\",\n numberInputField: \"number-input-field\",\n numberInputIncrement: \"number-input-increment\",\n numberInputDecrement: \"number-input-decrement\",\n\n // FormField\n formField: \"form-field\",\n formFieldLabel: \"form-field-label\",\n formFieldHelper: \"form-field-helper\",\n formFieldError: \"form-field-error\",\n\n // Checkbox\n checkbox: \"checkbox\",\n\n // Switch\n switch: \"switch\",\n\n // Badge\n badge: \"badge\",\n\n // Divider\n divider: \"divider\",\n} as const;\n\nexport type ComponentId = (typeof componentIds)[keyof typeof componentIds];\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n var _config_compoundVariants;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants, defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n\n","import { forwardRef, type ReactNode } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { clsx } from \"clsx\";\nimport { ButtonBase, type ButtonBaseProps } from \"../../unstyled/Button/Button\";\nimport { FINRA_UI_ATTR, componentIds } from \"../componentIds\";\nimport styles from \"./Button.module.scss\";\n\nexport type ButtonSentiment = \"danger\" | \"success\" | \"warning\" | \"info\";\n\nconst sentimentClasses: Record<ButtonSentiment, string> = {\n danger: styles.sentimentDanger,\n success: styles.sentimentSuccess,\n warning: styles.sentimentWarning,\n info: styles.sentimentInfo,\n};\n\nconst buttonVariants = cva(styles.button, {\n variants: {\n variant: {\n primary: styles.variantPrimary,\n secondary: styles.variantSecondary,\n tertiary: styles.variantTertiary,\n },\n fullWidth: {\n true: styles.fullWidth,\n },\n },\n defaultVariants: {\n variant: \"primary\",\n },\n});\n\nexport interface ButtonProps extends ButtonBaseProps, VariantProps<typeof buttonVariants> {\n sentiment?: ButtonSentiment;\n startIcon?: ReactNode;\n endIcon?: ReactNode;\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, fullWidth, sentiment, startIcon, endIcon, children, ...props }, ref) => {\n return (\n <ButtonBase\n ref={ref}\n type=\"button\"\n {...{ [FINRA_UI_ATTR]: componentIds.button }}\n className={clsx(\n buttonVariants({ variant, fullWidth }),\n sentiment && sentimentClasses[sentiment],\n className,\n )}\n {...props}>\n {startIcon ? <span className={styles.icon}>{startIcon}</span> : null}\n {children}\n {endIcon ? <span className={styles.icon}>{endIcon}</span> : null}\n </ButtonBase>\n );\n },\n);\n\nButton.displayName = \"Button\";\n","import { forwardRef } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { clsx } from \"clsx\";\nimport { IconButtonBase, type IconButtonBaseProps } from \"../../unstyled/IconButton/IconButton\";\nimport { FINRA_UI_ATTR, componentIds } from \"../componentIds\";\nimport styles from \"./IconButton.module.scss\";\n\nexport type IconButtonSentiment = \"danger\" | \"success\" | \"warning\" | \"info\";\n\nconst sentimentClasses: Record<IconButtonSentiment, string> = {\n danger: styles.sentimentDanger,\n success: styles.sentimentSuccess,\n warning: styles.sentimentWarning,\n info: styles.sentimentInfo,\n};\n\nconst iconButtonVariants = cva(styles.iconButton, {\n variants: {\n variant: {\n primary: styles.variantPrimary,\n secondary: styles.variantSecondary,\n tertiary: styles.variantTertiary,\n },\n },\n defaultVariants: {\n variant: \"primary\",\n },\n});\n\nexport interface IconButtonProps\n extends IconButtonBaseProps, VariantProps<typeof iconButtonVariants> {\n sentiment?: IconButtonSentiment;\n}\n\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(\n ({ className, variant, sentiment, ...props }, ref) => {\n return (\n <IconButtonBase\n ref={ref}\n type=\"button\"\n {...{ [FINRA_UI_ATTR]: componentIds.iconButton }}\n className={clsx(\n iconButtonVariants({ variant }),\n sentiment && sentimentClasses[sentiment],\n className,\n )}\n {...props}\n />\n );\n },\n);\n\nIconButton.displayName = \"IconButton\";\n","import { forwardRef, type HTMLAttributes } from \"react\";\nimport { clsx } from \"clsx\";\nimport { FINRA_UI_ATTR, componentIds } from \"../componentIds\";\nimport styles from \"./ButtonGroup.module.scss\";\n\nexport interface ButtonGroupProps extends HTMLAttributes<HTMLDivElement> {\n orientation?: \"horizontal\" | \"vertical\";\n}\n\nexport const ButtonGroup = forwardRef<HTMLDivElement, ButtonGroupProps>(\n ({ className, orientation = \"horizontal\", children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"group\"\n {...{ [FINRA_UI_ATTR]: componentIds.buttonGroup }}\n className={clsx(\n styles.buttonGroup,\n orientation === \"vertical\" && styles.vertical,\n className,\n )}\n {...props}>\n {children}\n </div>\n );\n },\n);\n\nButtonGroup.displayName = \"ButtonGroup\";\n","import {\n forwardRef,\n useRef,\n useCallback,\n type ReactNode,\n type InputHTMLAttributes,\n type MouseEvent,\n} from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { clsx } from \"clsx\";\nimport { FINRA_UI_ATTR, componentIds } from \"../componentIds\";\nimport styles from \"./Input.module.scss\";\n\nexport type ValidationStatus = \"error\" | \"warning\" | \"success\";\n\nconst inputVariants = cva(styles.wrapper, {\n variants: {\n variant: {\n primary: styles.variantPrimary,\n secondary: styles.variantSecondary,\n tertiary: styles.variantTertiary,\n },\n },\n defaultVariants: {\n variant: \"primary\",\n },\n});\n\nconst validationClasses: Record<ValidationStatus, string> = {\n error: styles.statusError,\n warning: styles.statusWarning,\n success: styles.statusSuccess,\n};\n\nexport interface InputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"size\">, VariantProps<typeof inputVariants> {\n validationStatus?: ValidationStatus;\n startAdornment?: ReactNode;\n endAdornment?: ReactNode;\n clearable?: boolean;\n onClear?: () => void;\n fullWidth?: boolean;\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className,\n variant,\n validationStatus,\n startAdornment,\n endAdornment,\n clearable,\n onClear,\n fullWidth,\n disabled,\n readOnly,\n value,\n defaultValue,\n onChange,\n ...props\n },\n ref,\n ) => {\n const internalRef = useRef<HTMLInputElement>(null);\n const inputRef = (ref as React.RefObject<HTMLInputElement>) || internalRef;\n\n const handleClear = useCallback(\n (e: MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n if (onClear) {\n onClear();\n } else if (inputRef.current) {\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(\n HTMLInputElement.prototype,\n \"value\",\n )?.set;\n nativeInputValueSetter?.call(inputRef.current, \"\");\n inputRef.current.dispatchEvent(new Event(\"input\", { bubbles: true }));\n }\n inputRef.current?.focus();\n },\n [onClear, inputRef],\n );\n\n const showClear = clearable && !disabled && !readOnly && (value ?? defaultValue ?? \"\") !== \"\";\n\n return (\n <div\n {...{ [FINRA_UI_ATTR]: componentIds.input }}\n className={clsx(\n inputVariants({ variant }),\n validationStatus && validationClasses[validationStatus],\n disabled && styles.disabled,\n fullWidth && styles.fullWidth,\n className,\n )}>\n {startAdornment ? <span className={styles.adornment}>{startAdornment}</span> : null}\n <input\n ref={inputRef}\n {...{ [FINRA_UI_ATTR]: componentIds.inputField }}\n className={styles.field}\n disabled={disabled}\n readOnly={readOnly}\n value={value}\n defaultValue={defaultValue}\n onChange={onChange}\n {...props}\n />\n {showClear ? (\n <button\n type=\"button\"\n className={styles.clearButton}\n onClick={handleClear}\n aria-label=\"Clear input\"\n tabIndex={-1}>\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\">\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n </button>\n ) : null}\n {endAdornment ? <span className={styles.adornment}>{endAdornment}</span> : null}\n </div>\n );\n },\n);\n\nInput.displayName = \"Input\";\n","import {\n forwardRef,\n useState,\n useCallback,\n useEffect,\n useRef,\n type TextareaHTMLAttributes,\n type ChangeEvent,\n} from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { clsx } from \"clsx\";\nimport { FINRA_UI_ATTR, componentIds } from \"../componentIds\";\nimport type { ValidationStatus } from \"../Input/Input\";\nimport styles from \"./Textarea.module.scss\";\n\nconst textareaVariants = cva(styles.wrapper, {\n variants: {\n variant: {\n primary: styles.variantPrimary,\n secondary: styles.variantSecondary,\n tertiary: styles.variantTertiary,\n },\n },\n defaultVariants: {\n variant: \"primary\",\n },\n});\n\nconst validationClasses: Record<ValidationStatus, string> = {\n error: styles.statusError,\n warning: styles.statusWarning,\n success: styles.statusSuccess,\n};\n\nexport interface TextareaProps\n extends\n Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, \"size\">,\n VariantProps<typeof textareaVariants> {\n validationStatus?: ValidationStatus;\n showCharCount?: boolean;\n warningThreshold?: number;\n autoResize?: boolean;\n minRows?: number;\n maxRows?: number;\n fullWidth?: boolean;\n}\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n (\n {\n className,\n variant,\n validationStatus,\n showCharCount,\n warningThreshold,\n autoResize,\n minRows = 3,\n maxRows,\n fullWidth,\n maxLength,\n disabled,\n readOnly,\n value,\n defaultValue,\n onChange,\n ...props\n },\n ref,\n ) => {\n const internalRef = useRef<HTMLTextAreaElement>(null);\n const textareaRef = (ref as React.RefObject<HTMLTextAreaElement>) || internalRef;\n\n const [charCount, setCharCount] = useState(() => {\n const initial = (value ?? defaultValue ?? \"\") as string;\n return initial.length;\n });\n\n // Sync charCount when controlled value changes\n useEffect(() => {\n if (value !== undefined) {\n setCharCount((value as string).length);\n }\n }, [value]);\n\n const adjustHeight = useCallback(() => {\n const textarea = textareaRef.current;\n if (!textarea || !autoResize) return;\n\n textarea.style.height = \"auto\";\n const lineHeight = parseFloat(getComputedStyle(textarea).lineHeight);\n const minHeight = lineHeight * minRows;\n const maxHeight = maxRows ? lineHeight * maxRows : Infinity;\n const scrollHeight = textarea.scrollHeight;\n\n textarea.style.height = `${Math.min(Math.max(scrollHeight, minHeight), maxHeight)}px`;\n textarea.style.overflowY = scrollHeight > maxHeight ? \"auto\" : \"hidden\";\n }, [autoResize, minRows, maxRows, textareaRef]);\n\n useEffect(() => {\n adjustHeight();\n }, [value, adjustHeight]);\n\n const handleChange = useCallback(\n (e: ChangeEvent<HTMLTextAreaElement>) => {\n setCharCount(e.target.value.length);\n adjustHeight();\n onChange?.(e);\n },\n [onChange, adjustHeight],\n );\n\n const isOverWarning =\n warningThreshold !== undefined && maxLength !== undefined && charCount >= warningThreshold;\n const isAtLimit = maxLength !== undefined && charCount >= maxLength;\n\n const countStatus: ValidationStatus | undefined = isAtLimit\n ? \"error\"\n : isOverWarning\n ? \"warning\"\n : undefined;\n\n const effectiveValidation = validationStatus ?? countStatus;\n\n return (\n <div\n {...{ [FINRA_UI_ATTR]: componentIds.textarea }}\n className={clsx(\n textareaVariants({ variant }),\n effectiveValidation && validationClasses[effectiveValidation],\n disabled && styles.disabled,\n fullWidth && styles.fullWidth,\n className,\n )}>\n <textarea\n ref={textareaRef}\n {...{ [FINRA_UI_ATTR]: componentIds.textareaField }}\n className={styles.field}\n rows={minRows}\n maxLength={maxLength}\n disabled={disabled}\n readOnly={readOnly}\n value={value}\n defaultValue={defaultValue}\n onChange={handleChange}\n {...props}\n />\n {showCharCount && maxLength !== undefined ? (\n <span\n {...{ [FINRA_UI_ATTR]: componentIds.textareaCount }}\n className={clsx(\n styles.charCount,\n countStatus === \"warning\" && styles.charCountWarning,\n countStatus === \"error\" && styles.charCountError,\n )}>\n {charCount}/{maxLength}\n </span>\n ) : null}\n </div>\n );\n },\n);\n\nTextarea.displayName = \"Textarea\";\n","import {\n forwardRef,\n useState,\n useCallback,\n useRef,\n useEffect,\n type KeyboardEvent,\n type ChangeEvent,\n type InputHTMLAttributes,\n} from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { clsx } from \"clsx\";\nimport { FINRA_UI_ATTR, componentIds } from \"../componentIds\";\nimport type { ValidationStatus } from \"../Input/Input\";\nimport styles from \"./NumberInput.module.scss\";\n\nconst numberInputVariants = cva(styles.wrapper, {\n variants: {\n variant: {\n primary: styles.variantPrimary,\n secondary: styles.variantSecondary,\n tertiary: styles.variantTertiary,\n },\n },\n defaultVariants: {\n variant: \"primary\",\n },\n});\n\nconst validationClasses: Record<ValidationStatus, string> = {\n error: styles.statusError,\n warning: styles.statusWarning,\n success: styles.statusSuccess,\n};\n\nexport interface NumberInputProps\n extends\n Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"size\" | \"onChange\" | \"value\" | \"defaultValue\" | \"min\" | \"max\" | \"step\"\n >,\n VariantProps<typeof numberInputVariants> {\n validationStatus?: ValidationStatus;\n value?: number | \"\";\n defaultValue?: number;\n min?: number;\n max?: number;\n step?: number;\n precision?: number;\n onChange?: (value: number | undefined) => void;\n fullWidth?: boolean;\n}\n\nfunction clampValue(val: number, min?: number, max?: number): number {\n let result = val;\n if (min !== undefined) result = Math.max(result, min);\n if (max !== undefined) result = Math.min(result, max);\n return result;\n}\n\nfunction formatValue(val: number, precision?: number): string {\n if (precision !== undefined) return val.toFixed(precision);\n return String(val);\n}\n\nexport const NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(\n (\n {\n className,\n variant,\n validationStatus,\n value: controlledValue,\n defaultValue,\n min,\n max,\n step = 1,\n precision,\n onChange,\n fullWidth,\n disabled,\n readOnly,\n ...props\n },\n ref,\n ) => {\n const internalRef = useRef<HTMLInputElement>(null);\n const inputRef = (ref as React.RefObject<HTMLInputElement>) || internalRef;\n\n const isControlled = controlledValue !== undefined;\n const [internalValue, setInternalValue] = useState<string>(() =>\n defaultValue !== undefined ? formatValue(defaultValue, precision) : \"\",\n );\n\n const displayValue = isControlled\n ? controlledValue === \"\"\n ? \"\"\n : formatValue(controlledValue as number, precision)\n : internalValue;\n\n // Sync display when controlled value changes\n useEffect(() => {\n if (isControlled && controlledValue !== \"\") {\n setInternalValue(formatValue(controlledValue as number, precision));\n }\n }, [controlledValue, precision, isControlled]);\n\n const commitValue = useCallback(\n (raw: number) => {\n const clamped = clampValue(raw, min, max);\n const display = formatValue(clamped, precision);\n if (!isControlled) setInternalValue(display);\n onChange?.(clamped);\n },\n [min, max, precision, isControlled, onChange],\n );\n\n const stepValue = useCallback(\n (direction: 1 | -1) => {\n const current = parseFloat(displayValue as string) || 0;\n commitValue(current + step * direction);\n },\n [displayValue, step, commitValue],\n );\n\n const handleChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n const raw = e.target.value;\n // Allow empty, minus sign, or valid partial numbers while typing\n if (raw === \"\" || raw === \"-\" || raw === \".\") {\n if (!isControlled) setInternalValue(raw);\n if (raw === \"\") onChange?.(undefined);\n return;\n }\n const num = parseFloat(raw);\n if (!isNaN(num)) {\n if (!isControlled) setInternalValue(raw);\n onChange?.(num);\n }\n },\n [isControlled, onChange],\n );\n\n const handleBlur = useCallback(() => {\n const num = parseFloat(displayValue as string);\n if (isNaN(num)) {\n if (!isControlled) setInternalValue(\"\");\n onChange?.(undefined);\n } else {\n commitValue(num);\n }\n }, [displayValue, isControlled, onChange, commitValue]);\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n stepValue(1);\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault();\n stepValue(-1);\n }\n },\n [stepValue],\n );\n\n return (\n <div\n {...{ [FINRA_UI_ATTR]: componentIds.numberInput }}\n className={clsx(\n numberInputVariants({ variant }),\n validationStatus && validationClasses[validationStatus],\n disabled && styles.disabled,\n fullWidth && styles.fullWidth,\n className,\n )}>\n <button\n type=\"button\"\n {...{ [FINRA_UI_ATTR]: componentIds.numberInputDecrement }}\n className={styles.stepButton}\n onClick={() => stepValue(-1)}\n disabled={\n disabled ||\n readOnly ||\n (min !== undefined && (parseFloat(displayValue as string) || 0) <= min)\n }\n aria-label=\"Decrement\"\n tabIndex={-1}>\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\">\n <path d=\"M5 12h14\" />\n </svg>\n </button>\n <input\n ref={inputRef}\n {...{ [FINRA_UI_ATTR]: componentIds.numberInputField }}\n className={styles.field}\n inputMode=\"decimal\"\n value={displayValue}\n onChange={handleChange}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n readOnly={readOnly}\n role=\"spinbutton\"\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={\n typeof displayValue === \"string\" ? parseFloat(displayValue) || undefined : displayValue\n }\n {...props}\n />\n <button\n type=\"button\"\n {...{ [FINRA_UI_ATTR]: componentIds.numberInputIncrement }}\n className={styles.stepButton}\n onClick={() => stepValue(1)}\n disabled={\n disabled ||\n readOnly ||\n (max !== undefined && (parseFloat(displayValue as string) || 0) >= max)\n }\n aria-label=\"Increment\"\n tabIndex={-1}>\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\">\n <path d=\"M12 5v14M5 12h14\" />\n </svg>\n </button>\n </div>\n );\n },\n);\n\nNumberInput.displayName = \"NumberInput\";\n","import {\n forwardRef,\n useId,\n Children,\n isValidElement,\n cloneElement,\n type ReactNode,\n type HTMLAttributes,\n} from \"react\";\nimport { clsx } from \"clsx\";\nimport { FINRA_UI_ATTR, componentIds } from \"../componentIds\";\nimport type { ValidationStatus } from \"../Input/Input\";\nimport styles from \"./FormField.module.scss\";\n\nexport interface FormFieldProps extends HTMLAttributes<HTMLDivElement> {\n label: string;\n helperText?: string;\n errorMessage?: string;\n validationStatus?: ValidationStatus;\n required?: boolean;\n fullWidth?: boolean;\n disabled?: boolean;\n /** Explicit id for the input element. Auto-generated if omitted. */\n htmlFor?: string;\n children: ReactNode;\n className?: string;\n}\n\nexport const FormField = forwardRef<HTMLDivElement, FormFieldProps>(\n (\n {\n className,\n label,\n helperText,\n errorMessage,\n validationStatus,\n required,\n fullWidth,\n disabled,\n htmlFor,\n children,\n ...props\n },\n ref,\n ) => {\n const autoId = useId();\n const fieldId = htmlFor ?? autoId;\n const helperId = `${fieldId}-helper`;\n const errorId = `${fieldId}-error`;\n\n const showError = validationStatus === \"error\" && errorMessage;\n\n // Build aria-describedby from present elements\n const describedBy =\n [showError ? errorId : undefined, helperText ? helperId : undefined]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n // Clone children to inject a11y props\n const enhancedChildren = Children.map(children, (child) => {\n if (!isValidElement(child)) return child;\n return cloneElement(child as React.ReactElement<Record<string, unknown>>, {\n id: fieldId,\n \"aria-describedby\": describedBy,\n \"aria-invalid\": validationStatus === \"error\" ? true : undefined,\n disabled: disabled || undefined,\n validationStatus,\n });\n });\n\n return (\n <div\n ref={ref}\n {...{ [FINRA_UI_ATTR]: componentIds.formField }}\n className={clsx(\n styles.formField,\n fullWidth && styles.fullWidth,\n disabled && styles.disabled,\n className,\n )}\n {...props}>\n <label\n {...{ [FINRA_UI_ATTR]: componentIds.formFieldLabel }}\n htmlFor={fieldId}\n className={clsx(styles.label, required && styles.required)}>\n {label}\n </label>\n\n {enhancedChildren}\n\n {showError ? (\n <p\n {...{ [FINRA_UI_ATTR]: componentIds.formFieldError }}\n id={errorId}\n className={styles.errorMessage}\n role=\"alert\">\n {errorMessage}\n </p>\n ) : null}\n\n {helperText ? (\n <p\n {...{ [FINRA_UI_ATTR]: componentIds.formFieldHelper }}\n id={helperId}\n className={styles.helperText}>\n {helperText}\n </p>\n ) : null}\n </div>\n );\n },\n);\n\nFormField.displayName = \"FormField\";\n","import { forwardRef, useEffect, useRef, type Ref } from \"react\";\nimport { clsx } from \"clsx\";\nimport { CheckboxBase, type CheckboxBaseProps } from \"../../unstyled/Checkbox/Checkbox\";\nimport { FINRA_UI_ATTR, componentIds } from \"../componentIds\";\nimport styles from \"./Checkbox.module.scss\";\n\nfunction mergeRefs<T>(...refs: (Ref<T> | undefined)[]): (value: T | null) => void {\n return (value: T | null) => {\n for (const ref of refs) {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref && typeof ref === \"object\") {\n (ref as React.RefObject<T | null>).current = value;\n }\n }\n };\n}\n\nexport interface CheckboxProps extends Omit<CheckboxBaseProps, \"className\"> {\n label?: string;\n className?: string;\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n ({ className, label, indeterminate, disabled, ...props }, forwardedRef) => {\n const internalRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n if (internalRef.current) {\n internalRef.current.indeterminate = indeterminate ?? false;\n }\n }, [indeterminate]);\n\n return (\n <label\n {...{ [FINRA_UI_ATTR]: componentIds.checkbox }}\n className={clsx(styles.checkbox, disabled && styles.disabled, className)}>\n <CheckboxBase\n ref={mergeRefs(forwardedRef, internalRef)}\n className={styles.input}\n disabled={disabled}\n data-indeterminate={indeterminate || undefined}\n {...props}\n />\n <span className={styles.indicator} aria-hidden=\"true\">\n {indeterminate ? (\n <svg\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\">\n <path d=\"M2.5 6h7\" />\n </svg>\n ) : (\n <svg\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\">\n <path d=\"M2.5 6l2.5 2.5 4.5-5\" />\n </svg>\n )}\n </span>\n {label ? <span className={styles.label}>{label}</span> : null}\n </label>\n );\n },\n);\n\nCheckbox.displayName = \"Checkbox\";\n","import { forwardRef } from \"react\";\nimport { clsx } from \"clsx\";\nimport { SwitchBase, type SwitchBaseProps } from \"../../unstyled/Switch/Switch\";\nimport { FINRA_UI_ATTR, componentIds } from \"../componentIds\";\nimport styles from \"./Switch.module.scss\";\n\nexport interface SwitchProps extends Omit<SwitchBaseProps, \"className\"> {\n label?: string;\n className?: string;\n}\n\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(\n ({ className, label, disabled, ...props }, ref) => {\n return (\n <label\n {...{ [FINRA_UI_ATTR]: componentIds.switch }}\n className={clsx(styles.switch, disabled && styles.disabled, className)}>\n <SwitchBase ref={ref} className={styles.input} disabled={disabled} {...props} />\n <span className={styles.track} aria-hidden=\"true\">\n <span className={styles.thumb} />\n </span>\n {label ? <span className={styles.label}>{label}</span> : null}\n </label>\n );\n },\n);\n\nSwitch.displayName = \"Switch\";\n","import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { clsx } from \"clsx\";\nimport { FINRA_UI_ATTR, componentIds } from \"../componentIds\";\nimport styles from \"./Badge.module.scss\";\n\nexport type BadgeSentiment = \"danger\" | \"success\" | \"warning\" | \"info\";\n\nconst sentimentClasses: Record<BadgeSentiment, string> = {\n danger: styles.sentimentDanger,\n success: styles.sentimentSuccess,\n warning: styles.sentimentWarning,\n info: styles.sentimentInfo,\n};\n\nconst badgeVariants = cva(styles.badge, {\n variants: {\n variant: {\n primary: styles.variantPrimary,\n secondary: styles.variantSecondary,\n tertiary: styles.variantTertiary,\n },\n },\n defaultVariants: {\n variant: \"primary\",\n },\n});\n\nexport interface BadgeProps\n extends HTMLAttributes<HTMLSpanElement>, VariantProps<typeof badgeVariants> {\n sentiment?: BadgeSentiment;\n children: ReactNode;\n}\n\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant, sentiment, children, ...props }, ref) => {\n return (\n <span\n ref={ref}\n {...{ [FINRA_UI_ATTR]: componentIds.badge }}\n className={clsx(\n badgeVariants({ variant }),\n sentiment && sentimentClasses[sentiment],\n className,\n )}\n {...props}>\n {children}\n </span>\n );\n },\n);\n\nBadge.displayName = \"Badge\";\n","import { forwardRef, type HTMLAttributes } from \"react\";\nimport { clsx } from \"clsx\";\nimport { FINRA_UI_ATTR, componentIds } from \"../componentIds\";\nimport styles from \"./Divider.module.scss\";\n\nexport interface DividerProps extends HTMLAttributes<HTMLHRElement> {\n orientation?: \"horizontal\" | \"vertical\";\n decorative?: boolean;\n className?: string;\n}\n\nexport const Divider = forwardRef<HTMLHRElement, DividerProps>(\n ({ className, orientation = \"horizontal\", decorative = false, ...props }, ref) => {\n return (\n <hr\n ref={ref}\n {...{ [FINRA_UI_ATTR]: componentIds.divider }}\n className={clsx(\n styles.divider,\n orientation === \"vertical\" ? styles.vertical : styles.horizontal,\n className,\n )}\n {...(decorative\n ? { \"aria-hidden\": true }\n : { role: \"separator\", \"aria-orientation\": orientation })}\n {...props}\n />\n );\n },\n);\n\nDivider.displayName = \"Divider\";\n"],"names":["FINRA_UI_ATTR","componentIds","r","e","t","f","o","clsx","falsyToString","value","cx","cva","base","config","props","_config_compoundVariants","variants","defaultVariants","getVariantClassNames","variant","variantProp","defaultVariantProp","variantKey","propsWithoutUndefined","acc","param","key","getCompoundVariantClassNames","cvClass","cvClassName","compoundVariantOptions","sentimentClasses","styles","buttonVariants","Button","forwardRef","className","fullWidth","sentiment","startIcon","endIcon","children","ref","jsxs","ButtonBase","jsx","iconButtonVariants","IconButton","IconButtonBase","ButtonGroup","orientation","inputVariants","validationClasses","Input","validationStatus","startAdornment","endAdornment","clearable","onClear","disabled","readOnly","defaultValue","onChange","internalRef","useRef","inputRef","handleClear","useCallback","showClear","textareaVariants","Textarea","showCharCount","warningThreshold","autoResize","minRows","maxRows","maxLength","textareaRef","charCount","setCharCount","useState","useEffect","adjustHeight","textarea","lineHeight","minHeight","maxHeight","scrollHeight","handleChange","isOverWarning","countStatus","effectiveValidation","numberInputVariants","clampValue","val","min","max","result","formatValue","precision","NumberInput","controlledValue","step","isControlled","internalValue","setInternalValue","displayValue","commitValue","raw","clamped","display","stepValue","direction","current","num","handleBlur","handleKeyDown","FormField","label","helperText","errorMessage","required","htmlFor","autoId","useId","fieldId","helperId","errorId","showError","describedBy","enhancedChildren","Children","child","isValidElement","cloneElement","mergeRefs","refs","Checkbox","indeterminate","forwardedRef","CheckboxBase","Switch","SwitchBase","badgeVariants","Badge","Divider","decorative"],"mappings":"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","x_google_ignoreList":[1,2]}
@@ -0,0 +1 @@
1
+ ._button_nw9o1_1{--_btn-accent: var(--color-primary-600);--_btn-accent-hover: var(--color-primary-700);--_btn-accent-active: var(--color-primary-800);--_btn-accent-subtle: var(--color-primary-50);display:inline-flex;align-items:center;justify-content:center;gap:var(--density-spacing);font-family:var(--font-sans);font-weight:var(--font-medium);font-size:var(--button-font-size);line-height:var(--leading-tight);border-radius:var(--radius-md);transition:all var(--transition-fast) ease-in-out}@media(prefers-reduced-motion:reduce){._button_nw9o1_1{transition:none}}._button_nw9o1_1{cursor:var(--cursor-pointer);border:var(--border-width-thin) solid var(--color-transparent);outline:none;text-decoration:none;position:relative;white-space:nowrap;height:var(--size-base);padding:0 var(--button-padding-x)}._button_nw9o1_1:disabled{opacity:var(--opacity-disabled);cursor:var(--cursor-disabled)}._button_nw9o1_1:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring-color);outline-offset:var(--focus-ring-offset)}._button_nw9o1_1._variantPrimary_nw9o1_40{background-color:var(--_btn-accent);color:var(--color-white);border-color:var(--_btn-accent)}._button_nw9o1_1._variantPrimary_nw9o1_40:hover:not(:disabled){background-color:var(--_btn-accent-hover);border-color:var(--_btn-accent-hover)}._button_nw9o1_1._variantPrimary_nw9o1_40:active:not(:disabled){background-color:var(--_btn-accent-active);border-color:var(--_btn-accent-active)}._button_nw9o1_1._variantSecondary_nw9o1_53{background-color:var(--color-transparent);color:var(--_btn-accent);border-color:var(--_btn-accent)}._button_nw9o1_1._variantSecondary_nw9o1_53:hover:not(:disabled){background-color:var(--_btn-accent-subtle)}._button_nw9o1_1._variantSecondary_nw9o1_53:active:not(:disabled){background-color:var(--_btn-accent-subtle);border-color:var(--_btn-accent-hover);color:var(--_btn-accent-hover)}._button_nw9o1_1._variantTertiary_nw9o1_66{background-color:var(--color-transparent);color:var(--_btn-accent);border-color:var(--color-transparent)}._button_nw9o1_1._variantTertiary_nw9o1_66:hover:not(:disabled){background-color:var(--_btn-accent-subtle)}._button_nw9o1_1._variantTertiary_nw9o1_66:active:not(:disabled){background-color:var(--_btn-accent-subtle);color:var(--_btn-accent-hover)}._button_nw9o1_1._sentimentDanger_nw9o1_78{--_btn-accent: var(--color-error);--_btn-accent-hover: var(--color-error-hover);--_btn-accent-active: var(--color-error-active);--_btn-accent-subtle: var(--color-error-subtle)}._button_nw9o1_1._sentimentSuccess_nw9o1_84{--_btn-accent: var(--color-success);--_btn-accent-hover: var(--color-success-hover);--_btn-accent-active: var(--color-success-active);--_btn-accent-subtle: var(--color-success-subtle)}._button_nw9o1_1._sentimentWarning_nw9o1_90{--_btn-accent: var(--color-warning);--_btn-accent-hover: var(--color-warning-hover);--_btn-accent-active: var(--color-warning-active);--_btn-accent-subtle: var(--color-warning-subtle)}._button_nw9o1_1._sentimentInfo_nw9o1_96{--_btn-accent: var(--color-info);--_btn-accent-hover: var(--color-info-hover);--_btn-accent-active: var(--color-info-active);--_btn-accent-subtle: var(--color-info-subtle)}._button_nw9o1_1._fullWidth_nw9o1_102{width:100%}._icon_nw9o1_106{display:inline-flex;align-items:center;justify-content:center;inline-size:var(--icon-size);block-size:var(--icon-size);flex-shrink:0}._icon_nw9o1_106>svg{inline-size:100%;block-size:100%}._iconButton_wgr1d_1{--_btn-accent: var(--color-primary-600);--_btn-accent-hover: var(--color-primary-700);--_btn-accent-active: var(--color-primary-800);--_btn-accent-subtle: var(--color-primary-50);display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-sans);border-radius:var(--radius-md);transition:all var(--transition-fast) ease-in-out;cursor:var(--cursor-pointer);border:var(--border-width-thin) solid var(--color-transparent);outline:none;padding:0;inline-size:var(--size-base);block-size:var(--size-base);flex-shrink:0}@media(prefers-reduced-motion:reduce){._iconButton_wgr1d_1{transition:none}}._iconButton_wgr1d_1>svg{inline-size:var(--icon-size);block-size:var(--icon-size)}._iconButton_wgr1d_1:disabled{opacity:var(--opacity-disabled);cursor:var(--cursor-disabled)}._iconButton_wgr1d_1:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring-color);outline-offset:var(--focus-ring-offset)}._iconButton_wgr1d_1._variantPrimary_wgr1d_37{background-color:var(--_btn-accent);color:var(--color-white);border-color:var(--_btn-accent)}._iconButton_wgr1d_1._variantPrimary_wgr1d_37:hover:not(:disabled){background-color:var(--_btn-accent-hover);border-color:var(--_btn-accent-hover)}._iconButton_wgr1d_1._variantPrimary_wgr1d_37:active:not(:disabled){background-color:var(--_btn-accent-active);border-color:var(--_btn-accent-active)}._iconButton_wgr1d_1._variantSecondary_wgr1d_50{background-color:var(--color-transparent);color:var(--_btn-accent);border-color:var(--_btn-accent)}._iconButton_wgr1d_1._variantSecondary_wgr1d_50:hover:not(:disabled){background-color:var(--_btn-accent-subtle)}._iconButton_wgr1d_1._variantSecondary_wgr1d_50:active:not(:disabled){background-color:var(--_btn-accent-subtle);border-color:var(--_btn-accent-hover);color:var(--_btn-accent-hover)}._iconButton_wgr1d_1._variantTertiary_wgr1d_63{background-color:var(--color-transparent);color:var(--_btn-accent);border-color:var(--color-transparent)}._iconButton_wgr1d_1._variantTertiary_wgr1d_63:hover:not(:disabled){background-color:var(--_btn-accent-subtle)}._iconButton_wgr1d_1._variantTertiary_wgr1d_63:active:not(:disabled){background-color:var(--_btn-accent-subtle);color:var(--_btn-accent-hover)}._iconButton_wgr1d_1._sentimentDanger_wgr1d_75{--_btn-accent: var(--color-error);--_btn-accent-hover: var(--color-error-hover);--_btn-accent-active: var(--color-error-active);--_btn-accent-subtle: var(--color-error-subtle)}._iconButton_wgr1d_1._sentimentSuccess_wgr1d_81{--_btn-accent: var(--color-success);--_btn-accent-hover: var(--color-success-hover);--_btn-accent-active: var(--color-success-active);--_btn-accent-subtle: var(--color-success-subtle)}._iconButton_wgr1d_1._sentimentWarning_wgr1d_87{--_btn-accent: var(--color-warning);--_btn-accent-hover: var(--color-warning-hover);--_btn-accent-active: var(--color-warning-active);--_btn-accent-subtle: var(--color-warning-subtle)}._iconButton_wgr1d_1._sentimentInfo_wgr1d_93{--_btn-accent: var(--color-info);--_btn-accent-hover: var(--color-info-hover);--_btn-accent-active: var(--color-info-active);--_btn-accent-subtle: var(--color-info-subtle)}._buttonGroup_vy66t_1{display:inline-flex;flex-direction:row}._buttonGroup_vy66t_1>*{border-radius:0}._buttonGroup_vy66t_1>*:not(:first-child){margin-inline-start:calc(var(--border-width-thin) * -1)}._buttonGroup_vy66t_1>*:first-child{border-start-start-radius:var(--radius-md);border-end-start-radius:var(--radius-md)}._buttonGroup_vy66t_1>*:last-child{border-start-end-radius:var(--radius-md);border-end-end-radius:var(--radius-md)}._buttonGroup_vy66t_1>*:hover,._buttonGroup_vy66t_1>*:focus-visible{z-index:1}._buttonGroup_vy66t_1._vertical_vy66t_22{flex-direction:column}._buttonGroup_vy66t_1._vertical_vy66t_22>*:not(:first-child){margin-inline-start:0;margin-block-start:calc(var(--border-width-thin) * -1)}._buttonGroup_vy66t_1._vertical_vy66t_22>*:first-child{border-radius:0;border-start-start-radius:var(--radius-md);border-start-end-radius:var(--radius-md)}._buttonGroup_vy66t_1._vertical_vy66t_22>*:last-child{border-radius:0;border-end-start-radius:var(--radius-md);border-end-end-radius:var(--radius-md)}._wrapper_qx7i5_1{--_input-border-color: var(--color-border);display:inline-flex;align-items:center;gap:var(--density-spacing);block-size:var(--size-base);padding-inline:var(--input-padding-x);font-family:var(--font-sans);font-size:var(--input-font-size);line-height:var(--leading-normal);background-color:var(--color-background);border:var(--border-width-thin) solid var(--_input-border-color);border-radius:var(--radius-md);transition:border-color var(--transition-fast) ease-in-out;cursor:var(--cursor-text)}@media(prefers-reduced-motion:reduce){._wrapper_qx7i5_1{transition:none}}._wrapper_qx7i5_1:focus-within{--_input-border-color: var(--color-primary-500)}._wrapper_qx7i5_1._disabled_qx7i5_25{opacity:var(--opacity-disabled);cursor:var(--cursor-disabled);background-color:var(--color-neutral-50)}._wrapper_qx7i5_1._fullWidth_qx7i5_30{inline-size:100%}._wrapper_qx7i5_1._variantPrimary_qx7i5_33{border-width:var(--border-width-thin)}._wrapper_qx7i5_1._variantSecondary_qx7i5_36{border-width:var(--border-width-thin);background-color:var(--color-neutral-50)}._wrapper_qx7i5_1._variantTertiary_qx7i5_40{border-color:var(--color-transparent);border-block-end-color:var(--_input-border-color);border-radius:0}._wrapper_qx7i5_1._variantTertiary_qx7i5_40:focus-within{border-block-end-color:var(--color-primary-500);box-shadow:none}._wrapper_qx7i5_1._statusError_qx7i5_49{--_input-border-color: var(--color-error)}._wrapper_qx7i5_1._statusWarning_qx7i5_52{--_input-border-color: var(--color-warning)}._wrapper_qx7i5_1._statusSuccess_qx7i5_55{--_input-border-color: var(--color-success)}._field_qx7i5_59{flex:1;min-inline-size:0;border:none;outline:none;background:transparent;font:inherit;color:var(--color-foreground);padding:0}._field_qx7i5_59::placeholder{color:var(--color-neutral-400)}._field_qx7i5_59:disabled{cursor:var(--cursor-disabled)}._adornment_qx7i5_76{display:inline-flex;align-items:center;justify-content:center;color:var(--color-neutral-500);flex-shrink:0}._adornment_qx7i5_76>svg{inline-size:var(--icon-size);block-size:var(--icon-size)}._clearButton_qx7i5_88{display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;background:transparent;color:var(--color-neutral-400);cursor:var(--cursor-pointer);border-radius:var(--radius-full);flex-shrink:0}._clearButton_qx7i5_88:hover{color:var(--color-foreground)}._clearButton_qx7i5_88>svg{inline-size:var(--icon-size);block-size:var(--icon-size)}._wrapper_16m4i_1{--_input-border-color: var(--color-border);display:inline-flex;flex-direction:column;font-family:var(--font-sans);font-size:var(--input-font-size);line-height:var(--leading-normal);background-color:var(--color-background);border:var(--border-width-thin) solid var(--_input-border-color);border-radius:var(--radius-md);transition:border-color var(--transition-fast) ease-in-out}@media(prefers-reduced-motion:reduce){._wrapper_16m4i_1{transition:none}}._wrapper_16m4i_1:focus-within{--_input-border-color: var(--color-primary-500)}._wrapper_16m4i_1._disabled_16m4i_21{opacity:var(--opacity-disabled);cursor:var(--cursor-disabled);background-color:var(--color-neutral-50)}._wrapper_16m4i_1._fullWidth_16m4i_26{inline-size:100%}._wrapper_16m4i_1._variantPrimary_16m4i_29{border-width:var(--border-width-thin)}._wrapper_16m4i_1._variantSecondary_16m4i_32{border-width:var(--border-width-thin);background-color:var(--color-neutral-50)}._wrapper_16m4i_1._variantTertiary_16m4i_36{border-color:var(--color-transparent);border-block-end-color:var(--_input-border-color);border-radius:0}._wrapper_16m4i_1._variantTertiary_16m4i_36:focus-within{border-block-end-color:var(--color-primary-500);box-shadow:none}._wrapper_16m4i_1._statusError_16m4i_45{--_input-border-color: var(--color-error)}._wrapper_16m4i_1._statusWarning_16m4i_48{--_input-border-color: var(--color-warning)}._wrapper_16m4i_1._statusSuccess_16m4i_51{--_input-border-color: var(--color-success)}._field_16m4i_55{flex:1;min-inline-size:0;border:none;outline:none;background:transparent;font:inherit;color:var(--color-foreground);padding:var(--input-padding-x);resize:vertical}._field_16m4i_55::placeholder{color:var(--color-neutral-400)}._field_16m4i_55:disabled{cursor:var(--cursor-disabled);resize:none}._charCount_16m4i_74{display:block;text-align:end;padding-inline:var(--input-padding-x);padding-block-end:var(--density-spacing);font-size:var(--text-xs);color:var(--color-neutral-500);font-variant-numeric:var(--font-tabular-nums)}._charCountWarning_16m4i_84{color:var(--color-warning)}._charCountError_16m4i_88{color:var(--color-error)}._wrapper_1k2cc_1{--_input-border-color: var(--color-border);display:inline-flex;align-items:center;block-size:var(--size-base);font-family:var(--font-sans);font-size:var(--input-font-size);line-height:var(--leading-normal);background-color:var(--color-background);border:var(--border-width-thin) solid var(--_input-border-color);border-radius:var(--radius-md);transition:border-color var(--transition-fast) ease-in-out}@media(prefers-reduced-motion:reduce){._wrapper_1k2cc_1{transition:none}}._wrapper_1k2cc_1:focus-within{--_input-border-color: var(--color-primary-500)}._wrapper_1k2cc_1._disabled_1k2cc_22{opacity:var(--opacity-disabled);cursor:var(--cursor-disabled);background-color:var(--color-neutral-50)}._wrapper_1k2cc_1._fullWidth_1k2cc_27{inline-size:100%}._wrapper_1k2cc_1._variantPrimary_1k2cc_30{border-width:var(--border-width-thin)}._wrapper_1k2cc_1._variantSecondary_1k2cc_33{border-width:var(--border-width-thin);background-color:var(--color-neutral-50)}._wrapper_1k2cc_1._variantTertiary_1k2cc_37{border-color:var(--color-transparent);border-block-end-color:var(--_input-border-color);border-radius:0}._wrapper_1k2cc_1._variantTertiary_1k2cc_37:focus-within{border-block-end-color:var(--color-primary-500);box-shadow:none}._wrapper_1k2cc_1._statusError_1k2cc_46{--_input-border-color: var(--color-error)}._wrapper_1k2cc_1._statusWarning_1k2cc_49{--_input-border-color: var(--color-warning)}._wrapper_1k2cc_1._statusSuccess_1k2cc_52{--_input-border-color: var(--color-success)}._field_1k2cc_56{flex:1;min-inline-size:0;border:none;outline:none;background:transparent;font:inherit;color:var(--color-foreground);text-align:center;font-variant-numeric:var(--font-tabular-nums);padding:0}._field_1k2cc_56::-webkit-inner-spin-button,._field_1k2cc_56::-webkit-outer-spin-button{appearance:none;margin:0}._field_1k2cc_56::placeholder{color:var(--color-neutral-400)}._field_1k2cc_56:disabled{cursor:var(--cursor-disabled)}._stepButton_1k2cc_79{display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;background:transparent;color:var(--color-neutral-600);cursor:var(--cursor-pointer);inline-size:var(--size-base);block-size:100%;flex-shrink:0;transition:background-color var(--transition-fast) ease-in-out,color var(--transition-fast) ease-in-out}@media(prefers-reduced-motion:reduce){._stepButton_1k2cc_79{transition:none}}._stepButton_1k2cc_79:hover:not(:disabled){background-color:var(--color-neutral-100);color:var(--color-foreground)}._stepButton_1k2cc_79:active:not(:disabled){background-color:var(--color-neutral-200)}._stepButton_1k2cc_79:disabled{opacity:var(--opacity-disabled);cursor:var(--cursor-disabled)}._stepButton_1k2cc_79>svg{inline-size:var(--icon-size);block-size:var(--icon-size)}._stepButton_1k2cc_79:first-child{border-start-start-radius:var(--radius-md);border-end-start-radius:var(--radius-md)}._stepButton_1k2cc_79:last-child{border-start-end-radius:var(--radius-md);border-end-end-radius:var(--radius-md)}._formField_bdanr_1{display:flex;flex-direction:column;gap:calc(var(--density-spacing) * .5)}._formField_bdanr_1._fullWidth_bdanr_6{inline-size:100%}._formField_bdanr_1._fullWidth_bdanr_6>[data-finra-ui]{inline-size:100%}._formField_bdanr_1._disabled_bdanr_12{opacity:var(--opacity-disabled);cursor:var(--cursor-disabled)}._label_bdanr_17{font-family:var(--font-sans);font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--color-foreground);line-height:var(--leading-normal)}._label_bdanr_17._required_bdanr_24:after{content:" *";color:var(--color-error)}._helperText_bdanr_29{font-family:var(--font-sans);font-size:var(--text-xs);color:var(--color-neutral-500);line-height:var(--leading-normal);margin:0}._errorMessage_bdanr_37{font-family:var(--font-sans);font-size:var(--text-xs);color:var(--color-error);line-height:var(--leading-normal);margin:0}._checkbox_q1fn9_1{display:inline-flex;align-items:center;gap:var(--density-spacing);cursor:var(--cursor-pointer);font-family:var(--font-sans);font-size:var(--input-font-size);line-height:var(--leading-normal);color:var(--color-foreground)}._checkbox_q1fn9_1._disabled_q1fn9_11{opacity:var(--opacity-disabled);cursor:var(--cursor-disabled)}._input_q1fn9_16{position:absolute;opacity:0;inline-size:0;block-size:0;margin:0;padding:0;pointer-events:none}._input_q1fn9_16:checked+._indicator_q1fn9_25{background-color:var(--color-primary-600);border-color:var(--color-primary-600);color:var(--color-white)}._input_q1fn9_16:checked+._indicator_q1fn9_25>svg{opacity:1}._input_q1fn9_16:focus-visible+._indicator_q1fn9_25{outline:var(--focus-ring-width) solid var(--focus-ring-color);outline-offset:var(--focus-ring-offset)}._input_q1fn9_16[data-indeterminate]+._indicator_q1fn9_25{background-color:var(--color-primary-600);border-color:var(--color-primary-600);color:var(--color-white)}._input_q1fn9_16[data-indeterminate]+._indicator_q1fn9_25>svg{opacity:1}._indicator_q1fn9_25{display:inline-flex;align-items:center;justify-content:center;inline-size:var(--checkbox-size);block-size:var(--checkbox-size);border:var(--border-width-thin) solid var(--color-border);border-radius:var(--radius-md);background-color:var(--color-background);color:var(--color-white);flex-shrink:0;transition:background-color var(--transition-fast) ease-in-out,border-color var(--transition-fast) ease-in-out}@media(prefers-reduced-motion:reduce){._indicator_q1fn9_25{transition:none}}._indicator_q1fn9_25>svg{inline-size:70%;block-size:70%;opacity:0}._label_q1fn9_70{-webkit-user-select:none;user-select:none}._switch_19daj_1{display:inline-flex;align-items:center;gap:var(--density-spacing);cursor:var(--cursor-pointer);font-family:var(--font-sans);font-size:var(--input-font-size);line-height:var(--leading-normal);color:var(--color-foreground)}._switch_19daj_1._disabled_19daj_11{opacity:var(--opacity-disabled);cursor:var(--cursor-disabled)}._input_19daj_16{position:absolute;opacity:0;inline-size:0;block-size:0;margin:0;padding:0;pointer-events:none}._input_19daj_16:checked+._track_19daj_25{background-color:var(--color-primary-600);border-color:var(--color-primary-600)}._input_19daj_16:checked+._track_19daj_25>._thumb_19daj_29{inset-inline-start:calc(var(--switch-track-width) - var(--switch-thumb-size) - 2px)}._input_19daj_16:focus-visible+._track_19daj_25{outline:var(--focus-ring-width) solid var(--focus-ring-color);outline-offset:var(--focus-ring-offset)}._track_19daj_25{position:relative;display:inline-flex;align-items:center;inline-size:var(--switch-track-width);block-size:var(--switch-track-height);border-radius:var(--radius-full);background-color:var(--color-neutral-300);border:var(--border-width-thin) solid var(--color-border);flex-shrink:0;transition:background-color var(--transition-fast) ease-in-out,border-color var(--transition-fast) ease-in-out}@media(prefers-reduced-motion:reduce){._track_19daj_25{transition:none}}._thumb_19daj_29{position:absolute;inset-inline-start:2px;inline-size:var(--switch-thumb-size);block-size:var(--switch-thumb-size);border-radius:var(--radius-full);background-color:var(--color-white);box-shadow:var(--shadow-sm);transition:inset-inline-start var(--transition-fast) ease-in-out}@media(prefers-reduced-motion:reduce){._thumb_19daj_29{transition:none}}._label_19daj_71{-webkit-user-select:none;user-select:none}._badge_1ehok_1{--_badge-accent: var(--color-primary-600);--_badge-accent-subtle: var(--color-primary-50);display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-sans);font-size:var(--text-xs);font-weight:var(--font-medium);line-height:var(--leading-tight);border-radius:var(--radius-full);white-space:nowrap;padding-inline:var(--density-spacing);padding-block:calc(var(--density-spacing) * .25);border:var(--border-width-thin) solid var(--color-transparent)}._badge_1ehok_1._variantPrimary_1ehok_17{background-color:var(--_badge-accent);color:var(--color-white);border-color:var(--_badge-accent)}._badge_1ehok_1._variantSecondary_1ehok_22{background-color:var(--color-transparent);color:var(--_badge-accent);border-color:var(--_badge-accent)}._badge_1ehok_1._variantTertiary_1ehok_27{background-color:var(--_badge-accent-subtle);color:var(--_badge-accent);border-color:var(--color-transparent)}._badge_1ehok_1._sentimentDanger_1ehok_32{--_badge-accent: var(--color-error);--_badge-accent-subtle: var(--color-error-subtle)}._badge_1ehok_1._sentimentSuccess_1ehok_36{--_badge-accent: var(--color-success);--_badge-accent-subtle: var(--color-success-subtle)}._badge_1ehok_1._sentimentWarning_1ehok_40{--_badge-accent: var(--color-warning);--_badge-accent-subtle: var(--color-warning-subtle)}._badge_1ehok_1._sentimentInfo_1ehok_44{--_badge-accent: var(--color-info);--_badge-accent-subtle: var(--color-info-subtle)}._divider_1kyjw_1{border:none;margin:0;flex-shrink:0;background-color:var(--color-border)}._divider_1kyjw_1._horizontal_1kyjw_7{inline-size:100%;block-size:var(--border-width-thin)}._divider_1kyjw_1._vertical_1kyjw_11{block-size:100%;inline-size:var(--border-width-thin);align-self:stretch}:root{--color-primary-50: #eff6ff;--color-primary-100: #dbeafe;--color-primary-200: #bfdbfe;--color-primary-300: #93c5fd;--color-primary-400: #60a5fa;--color-primary-500: #3b82f6;--color-primary-600: #2563eb;--color-primary-700: #1d4ed8;--color-primary-800: #1e40af;--color-primary-900: #1e3a8a;--color-neutral-50: #f9fafb;--color-neutral-100: #f3f4f6;--color-neutral-200: #e5e7eb;--color-neutral-300: #d1d5db;--color-neutral-400: #9ca3af;--color-neutral-500: #6b7280;--color-neutral-600: #4b5563;--color-neutral-700: #374151;--color-neutral-800: #1f2937;--color-neutral-900: #111827;--color-success: #047857;--color-warning: #b45309;--color-error: #dc2626;--color-info: #1d4ed8;--color-success-hover: #065f46;--color-warning-hover: #92400e;--color-error-hover: #b91c1c;--color-info-hover: #1e40af;--color-success-active: #064e3b;--color-warning-active: #78350f;--color-error-active: #991b1b;--color-info-active: #1e3a8a;--color-success-disabled: #6ee7b7;--color-warning-disabled: #fcd34d;--color-error-disabled: #fca5a5;--color-info-disabled: #93c5fd;--color-success-subtle: #f0fdf4;--color-warning-subtle: #fffbeb;--color-error-subtle: #fef2f2;--color-info-subtle: #eff6ff;--color-background: #ffffff;--color-foreground: #111827;--color-border: #e5e7eb;--color-white: #ffffff;--color-black: #000000;--color-transparent: transparent;--spacing-0: 0;--spacing-1: .25rem;--spacing-2: .5rem;--spacing-3: .75rem;--spacing-4: 1rem;--spacing-5: 1.25rem;--spacing-6: 1.5rem;--spacing-8: 2rem;--spacing-10: 2.5rem;--spacing-12: 3rem;--font-sans: "Inclusive Sans";--font-mono: "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", monospace;--font-tabular-nums: tabular-nums;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--font-normal: 400;--font-medium: 500;--font-semibold: 600;--font-bold: 700;--leading-tight: 1.25;--leading-normal: 1.5;--leading-relaxed: 1.625;--radius-sm: .025rem;--radius-md: .075rem;--radius-lg: .5rem;--radius-xl: .75rem;--radius-full: 9999px;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1);--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .1);--transition-fast: .15s;--transition-base: .25s;--transition-slow: .35s;--focus-ring-width: 2px;--focus-ring-color: var(--color-primary-500);--focus-ring-offset: 2px;--cursor-pointer: pointer;--cursor-disabled: not-allowed;--cursor-text: text;--opacity-disabled: .5;--opacity-hover: .8;--border-width-thin: 1px;--border-width-medium: 2px;--border-width-thick: 3px;--size-base: 2.25rem;--size-compact: 1.75rem;--density-spacing: .5rem;--icon-size: 1rem;--button-padding-x: 1rem;--button-font-size: var(--text-sm);--input-padding-x: .75rem;--input-font-size: var(--text-sm);--checkbox-size: 1.125rem;--switch-track-width: 2.5rem;--switch-track-height: 1.375rem;--switch-thumb-size: 1.125rem}[data-density=high]{--size-base: 1.75rem;--size-compact: 1.25rem;--density-spacing: .25rem;--icon-size: .875rem;--button-padding-x: .75rem;--button-font-size: var(--text-xs);--input-padding-x: .5rem;--input-font-size: var(--text-xs);--checkbox-size: .875rem;--switch-track-width: 2rem;--switch-track-height: 1.125rem;--switch-thumb-size: .875rem}[data-density=low]{--size-base: 2.75rem;--size-compact: 2.25rem;--density-spacing: .75rem;--icon-size: 1.25rem;--button-padding-x: 1.5rem;--button-font-size: var(--text-base);--input-padding-x: 1rem;--input-font-size: var(--text-base);--checkbox-size: 1.375rem;--switch-track-width: 3rem;--switch-track-height: 1.625rem;--switch-thumb-size: 1.375rem}[data-theme=dark]{--color-background: #111827;--color-foreground: #f9fafb;--color-border: #374151;--color-primary-50: #1e3a8a;--color-primary-100: #1e40af;--color-primary-200: #1d4ed8;--color-primary-300: #2563eb;--color-primary-400: #3b82f6;--color-primary-500: #60a5fa;--color-primary-600: #93c5fd;--color-primary-700: #bfdbfe;--color-primary-800: #dbeafe;--color-primary-900: #eff6ff;--color-success-subtle: #052e16;--color-warning-subtle: #451a03;--color-error-subtle: #450a0a;--color-info-subtle: #1e3a8a}@font-face{font-family:Inclusive Sans;font-style:normal;font-weight:300;font-display:swap;src:url(./fonts/InclusiveSans-Light.ttf) format("truetype")}@font-face{font-family:Inclusive Sans;font-style:italic;font-weight:300;font-display:swap;src:url(./fonts/InclusiveSans-LightItalic.ttf) format("truetype")}@font-face{font-family:Inclusive Sans;font-style:normal;font-weight:400;font-display:swap;src:url(./fonts/InclusiveSans-Regular.ttf) format("truetype")}@font-face{font-family:Inclusive Sans;font-style:italic;font-weight:400;font-display:swap;src:url(./fonts/InclusiveSans-Italic.ttf) format("truetype")}@font-face{font-family:Inclusive Sans;font-style:normal;font-weight:500;font-display:swap;src:url(./fonts/InclusiveSans-Medium.ttf) format("truetype")}@font-face{font-family:Inclusive Sans;font-style:italic;font-weight:500;font-display:swap;src:url(./fonts/InclusiveSans-MediumItalic.ttf) format("truetype")}@font-face{font-family:Inclusive Sans;font-style:normal;font-weight:600;font-display:swap;src:url(./fonts/InclusiveSans-SemiBold.ttf) format("truetype")}@font-face{font-family:Inclusive Sans;font-style:italic;font-weight:600;font-display:swap;src:url(./fonts/InclusiveSans-SemiBoldItalic.ttf) format("truetype")}@font-face{font-family:Inclusive Sans;font-style:normal;font-weight:700;font-display:swap;src:url(./fonts/InclusiveSans-Bold.ttf) format("truetype")}@font-face{font-family:Inclusive Sans;font-style:italic;font-weight:700;font-display:swap;src:url(./fonts/InclusiveSans-BoldItalic.ttf) format("truetype")}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);color:var(--color-foreground);background-color:var(--color-background);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring-color);outline-offset:var(--focus-ring-offset)}:focus:not(:focus-visible){outline:none}
@@ -0,0 +1,2 @@
1
+ // Type declaration for CSS-only "@utk09/finra-ui/styles" export
2
+ export {};
@@ -0,0 +1,14 @@
1
+ declare module "*.scss";
2
+ declare module "*.css";
3
+
4
+ declare module "*.module.scss" {
5
+ const classes: Readonly<Record<string, string>>;
6
+ export default classes;
7
+ }
8
+
9
+ declare module "*.module.css" {
10
+ const classes: Readonly<Record<string, string>>;
11
+ export default classes;
12
+ }
13
+
14
+ declare module "@utk09/finra-ui/styles";
@@ -0,0 +1,5 @@
1
+ import { ButtonHTMLAttributes } from 'react';
2
+ export interface ButtonBaseProps extends ButtonHTMLAttributes<HTMLButtonElement> {
3
+ asChild?: boolean;
4
+ }
5
+ export declare const ButtonBase: import('react').ForwardRefExoticComponent<ButtonBaseProps & import('react').RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,5 @@
1
+ import { InputHTMLAttributes } from 'react';
2
+ export interface CheckboxBaseProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "type"> {
3
+ indeterminate?: boolean;
4
+ }
5
+ export declare const CheckboxBase: import('react').ForwardRefExoticComponent<CheckboxBaseProps & import('react').RefAttributes<HTMLInputElement>>;
@@ -0,0 +1,7 @@
1
+ import { ButtonHTMLAttributes, ReactNode } from 'react';
2
+ export interface IconButtonBaseProps extends ButtonHTMLAttributes<HTMLButtonElement> {
3
+ asChild?: boolean;
4
+ icon: ReactNode;
5
+ "aria-label": string;
6
+ }
7
+ export declare const IconButtonBase: import('react').ForwardRefExoticComponent<IconButtonBaseProps & import('react').RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,5 @@
1
+ import { InputHTMLAttributes } from 'react';
2
+ export interface InputBaseProps extends InputHTMLAttributes<HTMLInputElement> {
3
+ asChild?: boolean;
4
+ }
5
+ export declare const InputBase: import('react').ForwardRefExoticComponent<InputBaseProps & import('react').RefAttributes<HTMLInputElement>>;
@@ -0,0 +1,5 @@
1
+ import { InputHTMLAttributes } from 'react';
2
+ export interface NumberInputBaseProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "type"> {
3
+ asChild?: boolean;
4
+ }
5
+ export declare const NumberInputBase: import('react').ForwardRefExoticComponent<NumberInputBaseProps & import('react').RefAttributes<HTMLInputElement>>;
@@ -0,0 +1,5 @@
1
+ import { ReactNode, HTMLAttributes } from 'react';
2
+ export interface SlotProps extends HTMLAttributes<HTMLElement> {
3
+ children?: ReactNode;
4
+ }
5
+ export declare const Slot: import('react').ForwardRefExoticComponent<SlotProps & import('react').RefAttributes<HTMLElement>>;
@@ -0,0 +1,4 @@
1
+ import { InputHTMLAttributes } from 'react';
2
+ export interface SwitchBaseProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "type" | "role"> {
3
+ }
4
+ export declare const SwitchBase: import('react').ForwardRefExoticComponent<SwitchBaseProps & import('react').RefAttributes<HTMLInputElement>>;
@@ -0,0 +1,5 @@
1
+ import { TextareaHTMLAttributes } from 'react';
2
+ export interface TextareaBaseProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {
3
+ asChild?: boolean;
4
+ }
5
+ export declare const TextareaBase: import('react').ForwardRefExoticComponent<TextareaBaseProps & import('react').RefAttributes<HTMLTextAreaElement>>;
@@ -0,0 +1,14 @@
1
+ export { ButtonBase } from './unstyled/Button/Button';
2
+ export type { ButtonBaseProps } from './unstyled/Button/Button';
3
+ export { IconButtonBase } from './unstyled/IconButton/IconButton';
4
+ export type { IconButtonBaseProps } from './unstyled/IconButton/IconButton';
5
+ export { InputBase } from './unstyled/Input/Input';
6
+ export type { InputBaseProps } from './unstyled/Input/Input';
7
+ export { TextareaBase } from './unstyled/Textarea/Textarea';
8
+ export type { TextareaBaseProps } from './unstyled/Textarea/Textarea';
9
+ export { NumberInputBase } from './unstyled/NumberInput/NumberInput';
10
+ export type { NumberInputBaseProps } from './unstyled/NumberInput/NumberInput';
11
+ export { CheckboxBase } from './unstyled/Checkbox/Checkbox';
12
+ export type { CheckboxBaseProps } from './unstyled/Checkbox/Checkbox';
13
+ export { SwitchBase } from './unstyled/Switch/Switch';
14
+ export type { SwitchBaseProps } from './unstyled/Switch/Switch';
@@ -0,0 +1,26 @@
1
+ import { a as o } from "./Switch-BgWsJGsh.js";
2
+ import { B as C, C as x, I as d, S as I } from "./Switch-BgWsJGsh.js";
3
+ import { jsx as s } from "react/jsx-runtime";
4
+ import { forwardRef as r } from "react";
5
+ const m = r(
6
+ ({ asChild: a = !1, ...e }, t) => /* @__PURE__ */ s(a ? o : "input", { ref: t, ...e })
7
+ );
8
+ m.displayName = "InputBase";
9
+ const n = r(
10
+ ({ asChild: a = !1, ...e }, t) => /* @__PURE__ */ s(a ? o : "textarea", { ref: t, ...e })
11
+ );
12
+ n.displayName = "TextareaBase";
13
+ const u = r(
14
+ ({ asChild: a = !1, ...e }, t) => /* @__PURE__ */ s(a ? o : "input", { ref: t, inputMode: "decimal", ...e })
15
+ );
16
+ u.displayName = "NumberInputBase";
17
+ export {
18
+ C as ButtonBase,
19
+ x as CheckboxBase,
20
+ d as IconButtonBase,
21
+ m as InputBase,
22
+ u as NumberInputBase,
23
+ I as SwitchBase,
24
+ n as TextareaBase
25
+ };
26
+ //# sourceMappingURL=unstyled.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unstyled.js","sources":["../src/unstyled/Input/Input.tsx","../src/unstyled/Textarea/Textarea.tsx","../src/unstyled/NumberInput/NumberInput.tsx"],"sourcesContent":["import { forwardRef, type InputHTMLAttributes } from \"react\";\nimport { Slot } from \"../Slot\";\n\nexport interface InputBaseProps extends InputHTMLAttributes<HTMLInputElement> {\n asChild?: boolean;\n}\n\nexport const InputBase = forwardRef<HTMLInputElement, InputBaseProps>(\n ({ asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"input\";\n\n return <Comp ref={ref} {...props} />;\n },\n);\n\nInputBase.displayName = \"InputBase\";\n","import { forwardRef, type TextareaHTMLAttributes } from \"react\";\nimport { Slot } from \"../Slot\";\n\nexport interface TextareaBaseProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {\n asChild?: boolean;\n}\n\nexport const TextareaBase = forwardRef<HTMLTextAreaElement, TextareaBaseProps>(\n ({ asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"textarea\";\n\n return <Comp ref={ref} {...props} />;\n },\n);\n\nTextareaBase.displayName = \"TextareaBase\";\n","import { forwardRef, type InputHTMLAttributes } from \"react\";\nimport { Slot } from \"../Slot\";\n\nexport interface NumberInputBaseProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\"> {\n asChild?: boolean;\n}\n\nexport const NumberInputBase = forwardRef<HTMLInputElement, NumberInputBaseProps>(\n ({ asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"input\";\n\n return <Comp ref={ref} inputMode=\"decimal\" {...props} />;\n },\n);\n\nNumberInputBase.displayName = \"NumberInputBase\";\n"],"names":["InputBase","forwardRef","asChild","props","ref","jsx","Slot","TextareaBase","NumberInputBase"],"mappings":";;;;AAOO,MAAMA,IAAYC;AAAA,EACvB,CAAC,EAAE,SAAAC,IAAU,IAAO,GAAGC,EAAA,GAASC,MAGvB,gBAAAC,EAFMH,IAAUI,IAAO,SAEtB,EAAK,KAAAF,GAAW,GAAGD,EAAA,CAAO;AAEtC;AAEAH,EAAU,cAAc;ACRjB,MAAMO,IAAeN;AAAA,EAC1B,CAAC,EAAE,SAAAC,IAAU,IAAO,GAAGC,EAAA,GAASC,MAGvB,gBAAAC,EAFMH,IAAUI,IAAO,YAEtB,EAAK,KAAAF,GAAW,GAAGD,EAAA,CAAO;AAEtC;AAEAI,EAAa,cAAc;ACRpB,MAAMC,IAAkBP;AAAA,EAC7B,CAAC,EAAE,SAAAC,IAAU,IAAO,GAAGC,EAAA,GAASC,wBACjBF,IAAUI,IAAO,SAEtB,EAAK,KAAAF,GAAU,WAAU,WAAW,GAAGD,GAAO;AAE1D;AAEAK,EAAgB,cAAc;"}
package/package.json ADDED
@@ -0,0 +1,81 @@
1
+ {
2
+ "name": "@utk09/finra-ui",
3
+ "version": "0.0.1",
4
+ "description": "Core UI components and styles",
5
+ "license": "MIT",
6
+ "keywords": [
7
+ "react",
8
+ "components",
9
+ "ui",
10
+ "design-system",
11
+ "finance",
12
+ "web"
13
+ ],
14
+ "type": "module",
15
+ "main": "./dist/index.js",
16
+ "types": "./dist/index.d.ts",
17
+ "exports": {
18
+ ".": {
19
+ "types": "./dist/index.d.ts",
20
+ "import": "./dist/index.js"
21
+ },
22
+ "./unstyled": {
23
+ "types": "./dist/unstyled.d.ts",
24
+ "import": "./dist/unstyled.js"
25
+ },
26
+ "./styles": {
27
+ "types": "./dist/styles.d.ts",
28
+ "default": "./dist/styles.css"
29
+ }
30
+ },
31
+ "sideEffects": [
32
+ "*.css"
33
+ ],
34
+ "files": [
35
+ "dist"
36
+ ],
37
+ "dependencies": {
38
+ "class-variance-authority": "0.7.1",
39
+ "clsx": "2.1.1"
40
+ },
41
+ "devDependencies": {
42
+ "@eslint/js": "9.39.4",
43
+ "@testing-library/jest-dom": "6.9.1",
44
+ "@testing-library/react": "16.3.2",
45
+ "@testing-library/user-event": "14.6.1",
46
+ "@types/node": "25.3.5",
47
+ "@types/react": "19.2.14",
48
+ "@types/react-dom": "19.2.3",
49
+ "@vitejs/plugin-react": "5.1.4",
50
+ "@vitest/coverage-istanbul": "4.0.18",
51
+ "eslint": "9.39.4",
52
+ "eslint-config-prettier": "10.1.8",
53
+ "eslint-plugin-jsx-a11y": "6.10.2",
54
+ "eslint-plugin-react": "7.37.5",
55
+ "eslint-plugin-react-hooks": "5.2.0",
56
+ "globals": "16.5.0",
57
+ "jsdom": "28.1.0",
58
+ "prettier": "3.8.1",
59
+ "react": "19.2.4",
60
+ "react-dom": "19.2.4",
61
+ "sass": "1.97.3",
62
+ "typescript": "5.9.3",
63
+ "typescript-eslint": "8.56.1",
64
+ "vite": "7.3.1",
65
+ "vite-plugin-dts": "4.5.4",
66
+ "vitest": "4.0.18"
67
+ },
68
+ "peerDependencies": {
69
+ "react": ">=18.0.0",
70
+ "react-dom": ">=18.0.0"
71
+ },
72
+ "scripts": {
73
+ "build": "vite build",
74
+ "dev": "vite build --watch",
75
+ "lint": "eslint src",
76
+ "lint:fix": "eslint src --fix",
77
+ "test": "vitest run",
78
+ "test:watch": "vitest",
79
+ "typecheck": "tsc --noEmit"
80
+ }
81
+ }