{"version":3,"file":"LabelSizeContext.cjs","sources":["../../../../../src/components/ui/label/LabelSizeContext.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type React from 'react';\nimport type { SizeKey } from '../props';\nimport type { ComponentTheme } from '../theme/common';\nimport { mergeDefaults } from '../../utils/deepMerge';\n\n/**\n * Resolved size of the nearest Label ancestor, consumed by its form children\n * (Input, Checkbox). A scalar context instead of a nested ThemeProvider, so\n * mounting a Label never forks the theme graph — useTheme() inside a Label\n * subtree returns the same object as outside.\n */\nexport const LabelSizeContext = createContext<SizeKey | null>(null);\n\nexport function useLabelSizeContext(): SizeKey | null {\n  return useContext(LabelSizeContext);\n}\n\n// mirrors ComponentTheme's own (unexported) props constraint\ntype ThemeableProps = { className?: string; children?: React.ReactNode; tag?: React.ElementType };\n\n/* Derives a theme whose size default is the propagated Label size (merged at defaults level, so explicit child size still wins); withDefaults shares themes/base by reference, so it's cheap. */\nexport function withLabelSizeDefault<P extends ThemeableProps, T extends object>(\n  theme: ComponentTheme<P, T>,\n  size: SizeKey | null\n): ComponentTheme<P, T> {\n  if (size === null) {\n    return theme;\n  }\n  const derived = theme.withDefaults(\n    mergeDefaults(theme.defaults as Record<string, boolean>, { [size]: true }) as Partial<P>\n  );\n  // withDefaults resets extraClasses; share the source theme's so extra\n  // classes from an outer ThemeProvider still apply inside a Label\n  derived.extraClasses = theme.extraClasses;\n  return derived;\n}\n"],"names":["createContext","useContext","mergeDefaults"],"mappings":";;;;;;AAYO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAmBA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAA8B,CAAA,CAAA,CAAA,CAAI,CAAA;AAE3D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,mBAAA,CAAA,CAAA,CAAsC;AACpD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAOC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgB,CAAA;AACpC;AAMO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACd,CAAA,CAAA,CAAA,CAAA,GACA,IAAA,CAAA,CACsB;AACtB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,MAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM;AACjB,CAAA,CAAA,CAAA,CAAA,OAAO,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CACT;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CACpBC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,CAAc,CAAA,CAAA,CAAA,CAAA,EAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAqC,CAAA,CAAE,CAAC,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,GAAM;AAAA,CAAA,CAAA,CAC3E;AAGA,CAAA,CAAA,OAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC7B,CAAA,CAAA,OAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACT;;;;"}