{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "lib-field-context",
  "type": "registry:lib",
  "title": "lib/field-context",
  "description": "Field ↔ Control 연결 계약 (components/field.md).",
  "registryDependencies": [
    "@atom/lib-context"
  ],
  "files": [
    {
      "path": "poc/design-system/implement/src/lib/field-context.ts",
      "content": "import { createStrictContext } from \"./context\";\n\n/**\n * Field ↔ Control 연결 계약 (components/field.md).\n *\n * Field 가 Provider 를 두고, Control 슬롯에 들어가는 컴포넌트(Text Input · Textarea · Select ·\n * Multi Select · Autocomplete · Date Input · Time Input · Input Button · Checkbox · Radio · Switch)는\n * useFieldControl() 로 읽어 id · aria-* · 상태를 맞춥니다. Field 밖에서는 null 이므로 단독으로도 동작합니다.\n */\nexport type FieldControlContext = {\n  /** 컨트롤(<input> 등)에 줄 id. Field.Label 의 htmlFor 와 같습니다. */\n  controlId: string;\n  /** Field.Label 요소의 id (aria-labelledby 가 필요한 커스텀 컨트롤용) */\n  labelId: string;\n  /** 도움말 · 오류 메시지 id 목록. 컨트롤의 aria-describedby 로 씁니다. 없으면 undefined */\n  describedBy: string | undefined;\n  /** 오류 상태. 컨트롤은 aria-invalid 와 자신의 invalid 표현을 맞춥니다. */\n  invalid: boolean;\n  disabled: boolean;\n  required: boolean;\n  /** Field 의 size. 컨트롤이 size 를 따로 받지 않았을 때 따릅니다. */\n  size: \"small\" | \"medium\" | \"large\" | undefined;\n};\n\nexport const [FieldControlProvider, useFieldControlStrict, useFieldControl] =\n  createStrictContext<FieldControlContext>(\"Field\");\n",
      "type": "registry:lib",
      "target": "components/lib/field-context.ts"
    }
  ],
  "categories": [
    "internal"
  ],
  "meta": {
    "version": "0.1.0"
  }
}
