+ {/* Resource Type */}
+
+
+
+
+
+ {/* Pattern Type — hidden for Cluster */}
+ {resourceType !== 'Cluster' && (
+
+
+
+ {(['Literal', 'Prefixed', 'Any'] as const).map((pt) => (
+
+ ))}
+
+
+ {patternType === 'Literal' && 'Matches the exact resource name.'}
+ {patternType === 'Prefixed' && 'Matches any resource whose name starts with this prefix.'}
+ {patternType === 'Any' && 'Matches all resources of this type (wildcard).'}
+
+
+ )}
+
+ {resourceType === 'Cluster' && (
+
+
+
+ Cluster ACLs apply to the entire Kafka cluster. No resource name is needed.
+
+
+ )}
+
+ {/* Resource Name — hidden for Cluster and "Any" pattern */}
+ {resourceType !== 'Cluster' && patternType !== 'Any' && (
+
+
+ {
+ setResourceName(value);
+ setError(null);
+ }}
+ options={resourceOptions}
+ placeholder={patternType === 'Prefixed' ? 'e.g. com.company.events' : 'e.g. my-topic'}
+ value={resourceName}
+ />
+
+ )}
+
+ {/* Operation */}
+
+
+
+
+
+ {/* Permission */}
+
+
+
+
+
+ {/* Host */}
+
+
+
+
+ Use * for all hosts, or an exact IP address.
+ CIDR ranges are not supported by the Kafka API.
+
+
+
{
+ setHost(e.target.value);
+ setError(null);
+ }}
+ placeholder="*"
+ type="text"
+ value={host}
+ />
+
+
+ {Boolean(error) &&
{error}
}
+
+
+