{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "protoform-examples", "title": "Protoform Examples", "description": "Example protobuf AutoForm demos using generated schemas, CEL rules, oneofs, and UI metadata annotations.", "dependencies": [ "@base-ui/react", "@buf/googleapis_googleapis.bufbuild_es", "@bufbuild/cel", "@bufbuild/protobuf", "@bufbuild/protovalidate", "@connectrpc/connect", "@hookform/resolvers", "@standard-schema/spec", "@tanstack/react-router", "class-variance-authority", "clsx", "cmdk", "date-fns", "lucide-react", "motion", "prismjs", "react-day-picker", "react-hook-form", "react-simple-code-editor", "sonner", "tailwind-merge", "zod" ], "registryDependencies": [ "@protoform/protoform", "@protoform/aip-121-resource-oriented-design", "@protoform/aip-122-resource-names", "@protoform/aip-123-resource-types", "@protoform/aip-124-resource-association", "@protoform/aip-126-enumerations", "@protoform/aip-127-http-and-grpc-transcoding", "@protoform/aip-128-declarative-friendly-interfaces", "@protoform/aip-129-server-modified-values-and-defaults", "@protoform/aip-130-methods", "@protoform/aip-131-standard-methods-get", "@protoform/aip-132-standard-methods-list", "@protoform/aip-133-standard-methods-create", "@protoform/aip-134-standard-methods-update", "@protoform/aip-135-standard-methods-delete", "@protoform/aip-136-custom-methods", "@protoform/aip-140-field-names", "@protoform/aip-141-quantities", "@protoform/aip-142-time-and-duration", "@protoform/aip-143-standardized-codes", "@protoform/aip-144-repeated-fields", "@protoform/aip-145-ranges", "@protoform/aip-146-generic-fields", "@protoform/aip-147-sensitive-fields", "@protoform/aip-148-standard-fields", "@protoform/aip-149-unset-field-values", "@protoform/aip-151-long-running-operations", "@protoform/aip-152-jobs", "@protoform/aip-153-import-and-export", "@protoform/aip-154-resource-freshness-validation", "@protoform/aip-155-request-identification", "@protoform/aip-156-singleton-resources", "@protoform/aip-157-partial-responses", "@protoform/aip-158-pagination", "@protoform/aip-159-reading-across-collections", "@protoform/aip-160-filtering", "@protoform/aip-161-field-masks", "@protoform/aip-162-resource-revisions", "@protoform/aip-163-change-validation", "@protoform/aip-164-soft-delete", "@protoform/aip-165-criteria-based-delete", "@protoform/aip-180-backwards-compatibility", "@protoform/aip-181-stability-levels", "@protoform/aip-182-external-software-dependencies", "@protoform/aip-185-api-versioning", "@protoform/aip-190-naming-conventions", "@protoform/aip-191-file-and-directory-structure", "@protoform/aip-192-documentation", "@protoform/aip-193-errors", "@protoform/aip-194-automatic-retry-configuration", "@protoform/aip-202-fields", "@protoform/aip-203-field-behavior-documentation", "@protoform/aip-210-unicode", "@protoform/aip-213-common-components", "@protoform/aip-214-resource-expiration", "@protoform/aip-216-states", "@protoform/aip-217-unreachable-resources", "@protoform/aip-231-batch-methods-get", "@protoform/aip-233-batch-methods-create", "@protoform/aip-234-batch-methods-update", "@protoform/aip-235-batch-methods-delete", "@protoform/aip-236-policy-preview", "@protoform/protobuf-scalars-demo", "@protoform/protobuf-presence-demo", "@protoform/protobuf-nested-collections-demo", "@protoform/protobuf-maps-demo", "@protoform/protobuf-oneof-demo", "@protoform/protobuf-well-known-types-demo", "@protoform/protobuf-dynamic-json-any-demo", "@protoform/protobuf-json-options-demo", "@protoform/protobuf-recursive-messages-demo", "@protoform/bufbuild-descriptors-demo", "@protoform/protobuf-unknown-fields-demo", "@protoform/protobuf-editions-demo", "@protoform/protovalidate-required-demo", "@protoform/protovalidate-numeric-rules-demo", "@protoform/protovalidate-bool-enum-demo", "@protoform/protovalidate-string-rules-demo", "@protoform/protovalidate-string-formats-demo", "@protoform/protovalidate-bytes-any-demo", "@protoform/protovalidate-repeated-demo", "@protoform/protovalidate-maps-demo", "@protoform/protovalidate-well-known-types-demo", "@protoform/protovalidate-ignore-demo", "@protoform/protovalidate-all-errors-demo", "@protoform/protovalidate-predefined-demo", "@protoform/cel-language-basics-demo", "@protoform/cel-collections-demo", "@protoform/cel-protobuf-values-demo", "@protoform/cel-re2-demo", "@protoform/cel-bytes-demo", "@protoform/cel-time-demo", "@protoform/cel-execution-demo", "@protoform/cel-safe-evaluation-demo", "@protoform/cel-protovalidate-demo", "@protoform/cel-ui-rules-demo", "@protoform/cel-complex-expressions-demo", "@protoform/cel-error-paths-demo", "@protoform/standard-schema-demo", "@protoform/react-hook-form-demo", "@protoform/tanstack-form-demo", "@protoform/formik-demo", "@protoform/final-form-demo", "@protoform/auto-form-demo", "@protoform/stepper-demo", "@protoform/server-errors-demo", "@protoform/credential-redaction-demo", "@protoform/accessible-forms-demo", "@protoform/responsive-cross-browser-demo", "@protoform/ssr-hydration-demo", "@protoform/connectrpc-transport-demo", "@protoform/async-cancellation-demo", "@protoform/dependency-matrix-demo", "@protoform/performance-bundle-demo", "@protoform/untrusted-input-demo" ], "files": [ { "path": "registry/base-nova/protoform/lib/protobuf-provider/auto-form-example-annotations.ts", "content": "// @generated by generate-proto-annotations.mts\n/* eslint-disable */\n\nimport {\n AddressSchema,\n AutoFormExampleSchema,\n AutoFormUiMetadataExampleSchema,\n GeoPointSchema,\n NestedSettingSchema,\n ProfileSettingsSchema,\n} from './gen/auto-form-example_pb.js';\nimport { type ProtoAnnotations, registerProtoAnnotations } from './index.js';\n\nexport const autoFormExampleAnnotations = {\n messages: {\n 'protoform.v1.Address': 'Postal address used by several nested object fields and maps.',\n 'protoform.v1.AutoFormExample':\n 'Primary protobuf fixture for AutoForm. It intentionally mixes scalar, nested,\\nrepeated, map, oneof, and well-known types so the form generator can exercise\\nthe sketchier corners of descriptor-driven rendering.',\n 'protoform.v1.AutoFormUiMetadataExample':\n 'Focused protobuf fixture for proto UI metadata and UI CEL demos.',\n 'protoform.v1.GeoPoint': 'Latitude/longitude pair used by the nested Address message.',\n 'protoform.v1.NestedSetting': 'Small nested settings entry used inside a protobuf map.',\n 'protoform.v1.ProfileSettings':\n 'Support workflow settings nested under the main example message.',\n },\n fields: {\n 'protoform.v1.AutoFormExample.avatarBytes':\n 'Optional avatar payload for attachment-based workflows.',\n 'protoform.v1.AutoFormExample.bio': 'Free-form summary shown on the profile card.',\n 'protoform.v1.AutoFormExample.createdAt': 'Timestamp captured when the record was created.',\n 'protoform.v1.AutoFormExample.dashboardBlocks':\n 'Ordered dashboard widgets stored as a dynamic list.',\n 'protoform.v1.AutoFormExample.doNotContact': 'Opt out of direct outreach entirely.',\n 'protoform.v1.AutoFormExample.externalPayload':\n 'External Any payload kept intentionally loose for edge-case coverage.',\n 'protoform.v1.AutoFormExample.featuredValue':\n 'Generic featured value for experiments and demos.',\n 'protoform.v1.AutoFormExample.homepageUrl': 'Optional personal or team homepage.',\n 'protoform.v1.AutoFormExample.labels': 'Flat metadata pairs for analytics and routing.',\n 'protoform.v1.AutoFormExample.officeLocations': 'Named office addresses keyed by a short slug.',\n 'protoform.v1.AutoFormExample.preferences':\n 'Arbitrary preference flags stored as a JSON-ish struct.',\n 'protoform.v1.AutoFormExample.preferredEmail': 'Route updates to an email inbox.',\n 'protoform.v1.AutoFormExample.preferredPhone': 'Route urgent notices to an E.164 phone number.',\n 'protoform.v1.AutoFormExample.primaryEmail':\n 'Main email address for notifications and login recovery.',\n 'protoform.v1.AutoFormExample.reminderInterval': 'Delay between reminder notifications.',\n 'protoform.v1.AutoFormExample.resourceId': 'UUID copied from an upstream system.',\n 'protoform.v1.AutoFormExample.settings':\n 'Nested support settings with their own CEL validation rule.',\n 'protoform.v1.AutoFormExample.shippingAddress':\n 'Shipping destination used for hardware deliveries.',\n 'protoform.v1.AutoFormExample.tags': 'Lightweight labels used for quick filtering.',\n 'protoform.v1.AutoFormExample.username': 'Public handle shown in mentions and admin lists.',\n 'protoform.v1.AutoFormExample.writablePaths': 'Fields the current actor is allowed to update.',\n 'protoform.v1.AutoFormUiMetadataExample.apiToken':\n 'API token for authenticating with the deployment service.',\n 'protoform.v1.AutoFormUiMetadataExample.approvalTicket':\n 'Approval or change-management ticket for the deployment.',\n 'protoform.v1.AutoFormUiMetadataExample.clusterName':\n 'Friendly cluster name shown in rollout summaries.',\n 'protoform.v1.AutoFormUiMetadataExample.enableDryRun':\n 'Keep a final dry-run toggle in the deploy step.',\n 'protoform.v1.AutoFormUiMetadataExample.enableSupportMode':\n 'Toggle the conditional support step on or off.',\n 'protoform.v1.AutoFormUiMetadataExample.escalationReason':\n 'Extra context only needed for platinum support requests.',\n 'protoform.v1.AutoFormUiMetadataExample.maintenanceWindow':\n 'Requested maintenance window for premium support coordination.',\n 'protoform.v1.AutoFormUiMetadataExample.noFollowUp': 'Explicitly avoid any follow-up contact.',\n 'protoform.v1.AutoFormUiMetadataExample.provider':\n 'Cloud provider where the request will be deployed.',\n 'protoform.v1.AutoFormUiMetadataExample.region': 'Region where the cluster will be created.',\n 'protoform.v1.AutoFormUiMetadataExample.slackChannel':\n 'Route follow-up through a Slack channel.',\n 'protoform.v1.AutoFormUiMetadataExample.supportEmail':\n 'Route follow-up through an email inbox.',\n 'protoform.v1.AutoFormUiMetadataExample.supportTier':\n 'Requested support tier for the deployment.',\n },\n oneofs: {\n 'protoform.v1.AutoFormExample.preferredContact':\n 'Exactly one preferred contact route can be selected at a time.',\n 'protoform.v1.AutoFormUiMetadataExample.supportContact':\n 'Pick exactly one support contact route once premium support is active.',\n },\n} satisfies ProtoAnnotations;\n\nfor (const schema of [\n AddressSchema,\n AutoFormExampleSchema,\n AutoFormUiMetadataExampleSchema,\n GeoPointSchema,\n NestedSettingSchema,\n ProfileSettingsSchema,\n]) {\n registerProtoAnnotations(schema, autoFormExampleAnnotations);\n}\n", "type": "registry:lib" }, { "path": "registry/base-nova/protoform/lib/protobuf-provider/gen/auto-form-example_pb.ts", "content": "export * from './protoform/v1/auto_form_example_pb.js';\n", "type": "registry:lib" }, { "path": "registry/base-nova/protoform/lib/protobuf-provider/gen/protoform/v1/auto_form_example_pb.ts", "content": "// @generated by protoc-gen-es v2.13.0 with parameter \"target=ts,import_extension=js\"\n// @generated from file protoform/v1/auto_form_example.proto (package protoform.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport { file_protoform_v1_auto_form_ui } from \"./auto_form_ui_pb.js\";\nimport { file_buf_validate_validate } from \"../../buf/validate/validate_pb.js\";\nimport type { Any, Duration, FieldMask, ListValue, Timestamp, Value } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_any, file_google_protobuf_duration, file_google_protobuf_field_mask, file_google_protobuf_struct, file_google_protobuf_timestamp, file_google_protobuf_wrappers } from \"@bufbuild/protobuf/wkt\";\nimport type { JsonObject, Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file protoform/v1/auto_form_example.proto.\n */\nexport const file_protoform_v1_auto_form_example: GenFile = /*@__PURE__*/\n fileDesc(\"CiRwcm90b2Zvcm0vdjEvYXV0b19mb3JtX2V4YW1wbGUucHJvdG8SDHByb3RvZm9ybS52MSKsFwoPQXV0b0Zvcm1FeGFtcGxlEiwKCHVzZXJuYW1lGAEgASgJQhq6SBfIAQFyEhADGCAyDF5bYS16MC05X10rJBJNCg1wcmltYXJ5X2VtYWlsGAIgASgJQja6SAfIAQFyAmAByvMYKAgEEhB0ZWFtQGV4YW1wbGUuY29tGhJhbGVydHNAZXhhbXBsZS5jb20SWwoMaG9tZXBhZ2VfdXJsGAMgASgJQkW6SAVyA4gBAcrzGDkIBRIYaHR0cHM6Ly9leGFtcGxlLmNvbS9kb2NzGhtodHRwczovL2V4YW1wbGUuY29tL3Byb2R1Y3QSHQoLcmVzb3VyY2VfaWQYBCABKAlCCLpIBXIDsAEBEmwKA2JpbxgFIAEoCUJfukgFcgMYmALK8xhTCAISJFNoYXJlIGEgc2hvcnQgc3VtbWFyeSBmb3IgcmV2aWV3ZXJzLhopUGxhdGZvcm0gYWRtaW4gZm9yIHRoZSB0aGUgY29udHJvbCBwbGFuZS4SSwoKaXNfZW5hYmxlZBgGIAEoCEI3yvMYMwgIIi9Ub2dnbGUgdGhlIHJlcXVlc3Qgb24gb3Igb2ZmIGJlZm9yZSBpdCBpcyBzZW50LhIWCgNhZ2UYByABKAVCCbpIBhoEGHgoDRIeCgtsb2dpbl9jb3VudBgIIAEoDUIJukgGKgQYoI0GEiUKEHJlcHV0YXRpb25fZGVsdGEYCSABKBFCC7pICDoGGNAPKM8PEiAKD2VtcGxveWVlX251bWJlchgKIAEoA0IHukgEIgIgABIlChNzdG9yYWdlX3F1b3RhX2J5dGVzGAsgASgEQgi6SAUyAyiACBImCg1wcm9maWxlX3Njb3JlGAwgASgCQg+6SAwKCh0AAMhCLQAAAAASQgoPYWNjb3VudF9iYWxhbmNlGA0gASgBQim6SBQSEhkAAAAAgIQuQSkAAAAAAAAAAMrzGA4IBhoKJDEyLDUwMC4wMBIeCgxhdmF0YXJfYnl0ZXMYDiABKAxCCLpIBXoDGIAEEnUKC2FjY2Vzc190aWVyGA8gASgOMhgucHJvdG9mb3JtLnYxLkFjY2Vzc1RpZXJCRrpIBYIBAhAByvMYOggKIjZDaG9vc2UgdGhlIGFjY2VzcyB0aWVyIHRoYXQgYmVzdCBtYXRjaGVzIHRoaXMgcmVxdWVzdC4SNwoQc2hpcHBpbmdfYWRkcmVzcxgQIAEoCzIVLnByb3RvZm9ybS52MS5BZGRyZXNzQga6SAPIAQESXQoPYmlsbGluZ19hZGRyZXNzGBEgASgLMhUucHJvdG9mb3JtLnYxLkFkZHJlc3NCLcrzGCkqJwoPYmlsbGluZy52aXNpYmxlEhRmb3JtLmFjY2Vzc1RpZXIgPT0gMxJNCghuaWNrbmFtZRgSIAEoCUI2ukgGcgQQAhgoyvMYKSonChBuaWNrbmFtZS52aXNpYmxlEhNmb3JtLnVzZXJuYW1lICE9ICcnSAGIAQESOgoLbWlkZGxlX25hbWUYEyABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWVCB7pIBHICGCgSZAoMYm9udXNfcG9pbnRzGBQgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWVCMbpIBxoFGJBOKADK8xgjMiEKDmJvbnVzLmRpc2FibGVkEg8hZm9ybS5pc0VuYWJsZWQSgwEKC2JldGFfdGVzdGVyGBUgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZUJSyvMYTggJIkpVc2UgYSBjb21wYWN0IHRvZ2dsZSB3aGVuIHRoaXMgb3B0aW9uYWwgc2V0dGluZyBjYW4gYmUgc3dpdGNoZWQgb24gb3Igb2ZmLhIwCgR0YWdzGBYgAygJQiK6SB+SARwIARAFGAEiFHISEAIYGDIMXlthLXowLTktXSskEjsKEnByZXZpb3VzX2FkZHJlc3NlcxgXIAMoCzIVLnByb3RvZm9ybS52MS5BZGRyZXNzQgi6SAWSAQIQAxIpCg1sdWNreV9udW1iZXJzGBggAygFQhK6SA+SAQwQBBgBIgYaBBhjKAESegoGbGFiZWxzGBkgAygLMikucHJvdG9mb3JtLnYxLkF1dG9Gb3JtRXhhbXBsZS5MYWJlbHNFbnRyeUI/ukgnmgEkCAEQBCIWchQQAhgYMg5eW2EtejAtOV8uLV0rJCoGcgQQARhAyvMYEQgOGg10ZWFtPWZyb250ZW5kEm4KEG9mZmljZV9sb2NhdGlvbnMYGiADKAsyMi5wcm90b2Zvcm0udjEuQXV0b0Zvcm1FeGFtcGxlLk9mZmljZUxvY2F0aW9uc0VudHJ5QiC6SB2aARoQAyIWchQQAhgYMg5eW2EtejAtOV8uLV0rJBIiCg9wcmVmZXJyZWRfZW1haWwYGyABKAlCB7pIBHICYAFIABIzCg9wcmVmZXJyZWRfcGhvbmUYHCABKAlCGLpIFXITMhFeXCtbMS05XVxkezEsMTR9JEgAEhgKDmRvX25vdF9jb250YWN0GB0gASgISAASPAoKY3JlYXRlZF9hdBgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDLpIA8gBAcrzGAIIERI/CgpleHBpcmVzX2F0GB8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIPukgMsgEJSgUIgOeED0ABEkYKEXJlbWluZGVyX2ludGVydmFsGCAgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQhC6SA2qAQoiBAiA9SQyAgg8EnIKDndyaXRhYmxlX3BhdGhzGCEgASgLMhouZ29vZ2xlLnByb3RvYnVmLkZpZWxkTWFza0I+ukg74gE4Egdwcm9maWxlEgtwcm9maWxlLmJpbxILcHJlZmVyZW5jZXMSE25vdGlmaWNhdGlvbnMuZW1haWwSLAoLcHJlZmVyZW5jZXMYIiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Ei4KDmZlYXR1cmVkX3ZhbHVlGCMgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEjQKEGRhc2hib2FyZF9ibG9ja3MYJCABKAsyGi5nb29nbGUucHJvdG9idWYuTGlzdFZhbHVlEmIKEGV4dGVybmFsX3BheWxvYWQYJSABKAsyFC5nb29nbGUucHJvdG9idWYuQW55QjK6SC+iASwSKnR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIkChFtaW5pbXVtX3RocmVzaG9sZBgmIAEoBUIJukgGGgQYZCgAEiQKEW1heGltdW1fdGhyZXNob2xkGCcgASgFQgm6SAYaBBhkKAASLwoIc2V0dGluZ3MYKCABKAsyHS5wcm90b2Zvcm0udjEuUHJvZmlsZVNldHRpbmdzGi0KC0xhYmVsc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaTQoUT2ZmaWNlTG9jYXRpb25zRW50cnkSCwoDa2V5GAEgASgJEiQKBXZhbHVlGAIgASgLMhUucHJvdG9mb3JtLnYxLkFkZHJlc3M6AjgBOo4BukiKARqHAQoPdGhyZXNob2xkLnJhbmdlEkJNaW5pbXVtIHRocmVzaG9sZCBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byBtYXhpbXVtIHRocmVzaG9sZC4aMHRoaXMubWluaW11bV90aHJlc2hvbGQgPD0gdGhpcy5tYXhpbXVtX3RocmVzaG9sZEJmChFwcmVmZXJyZWRfY29udGFjdBJRukgCCAHS8xhICjNQaWNrIGV4YWN0bHkgb25lIHJvdXRlIGZvciBmb2xsb3ctdXAgY29tbXVuaWNhdGlvbi4qEVByZWZlcnJlZCBjb250YWN0QgsKCV9uaWNrbmFtZSLyDAoZQXV0b0Zvcm1VaU1ldGFkYXRhRXhhbXBsZRKOAQoMY2x1c3Rlcl9uYW1lGAEgASgJQni6SAnIAQFyBBADGD/K8xhoEhZzY2FybGV0LWZvcmVzdC1kb2xwaGluIkZVc2UgdGhlIG5hbWUgb3BlcmF0b3JzIHdpbGwgcmVjb2duaXplIGluIGRlcGxveW1lbnQgYW5kIHN1cHBvcnQgdG9vbHMuOgZiYXNpY3MSgQEKCHByb3ZpZGVyGAIgASgOMhwucHJvdG9mb3JtLnYxLlVpRGVtb1Byb3ZpZGVyQlG6SAWCAQIQAcrzGEUICiJBUmFkaW8gYnV0dG9ucyBtYWtlIHNtYWxsIGVudW1zIGVhc2llciB0byBzY2FuIGluIGdlbmVyYXRlZCBmb3Jtcy4SiwEKBnJlZ2lvbhgDIAEoCUJ7ukgJyAEBcgQQAxggyvMYaxIJdXMtZWFzdC0yIjdUaGlzIGZpZWxkIHN0YXlzIGRpc2FibGVkIHVudGlsIGEgcHJvdmlkZXIgaXMgc2VsZWN0ZWQuMiUKD3JlZ2lvbi5kaXNhYmxlZBISZm9ybS5wcm92aWRlciA9PSAwEnIKE2VuYWJsZV9zdXBwb3J0X21vZGUYBCABKAhCVcrzGFEICSJNVHVybiB0aGlzIG9uIHRvIHJldmVhbCB0aGVzdXBwb3J0IGNvbnRyb2xzIHRoYXQgYXJlIGRyaXZlbiBieSBmaWVsZCBVSSBydWxlcy4SmgEKDHN1cHBvcnRfdGllchgFIAEoDjIfLnByb3RvZm9ybS52MS5VaURlbW9TdXBwb3J0VGllckJjyvMYXwgKIltTZWxlY3RpbmcgYSBzdXBwb3J0IHRpZXIgZW5hYmxlcyB0aGUgdGltZXN0YW1wIGZpZWxkIGFuZCByZXZlYWxzIHRoZSBzdXBwb3J0IGNvbnRhY3Qgb25lb2YuEqQBChJtYWludGVuYW5jZV93aW5kb3cYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQmzK8xhoCBEiNVRoaXMgc3RheXMgZGlzYWJsZWQgdW50aWwgYSBzdXBwb3J0IHRpZXIgaXMgc2VsZWN0ZWQuMi0KFG1haW50ZW5hbmNlLmRpc2FibGVkEhVmb3JtLnN1cHBvcnRUaWVyID09IDAS0AEKEWVzY2FsYXRpb25fcmVhc29uGAcgASgJQrQBukgFcgMYmALK8xinAQgCEjFFeHBsYWluIHdoeSB0aGlzIHJvbGxvdXQgbmVlZHMgcGxhdGludW0gY292ZXJhZ2UuIkFUaGlzIGZpZWxkIGlzIGhpZGRlbiB1bmxlc3MgdGhlIGhpZ2hlc3Qgc3VwcG9ydCB0aWVyIGlzIHNlbGVjdGVkLiorChJlc2NhbGF0aW9uLnZpc2libGUSFWZvcm0uc3VwcG9ydFRpZXIgPT0gM0gBEiAKDXN1cHBvcnRfZW1haWwYCCABKAlCB7pIBHICYAFIABI0Cg1zbGFja19jaGFubmVsGAkgASgJQhu6SBhyFjIUXiM/W2EtejAtOV8tXXszLDgwfSRIABIWCgxub19mb2xsb3dfdXAYCiABKAhIABItCglhcGlfdG9rZW4YDSABKAlCGrpIBXIDGIACyvMYDggDEgpycF90b2tfLi4uEocBCg9hcHByb3ZhbF90aWNrZXQYCyABKAlCbrpICcgBAXIEEAMYKMrzGF4SB09QUy0xNDIiU0ZpbmFsIGZpZWxkcyBjYW4gc3RheSBzaW1wbGUgd2hpbGUgb3RoZXIgZmllbGRzIHVzZSBDRUwgZm9yIHByb2dyZXNzaXZlIGRpc2Nsb3N1cmUuEh4KDmVuYWJsZV9kcnlfcnVuGAwgASgIQgbK8xgCCAlC3QEKD3N1cHBvcnRfY29udGFjdBLJAdLzGMQBClxUaGlzIG9uZW9mIGlzIGFsc28gZHJpdmVuIGJ5IFVJIG1ldGFkYXRhLCBzbyBpdCBvbmx5IGFwcGVhcnMgYWZ0ZXIgYSBzdXBwb3J0IHRpZXIgaXMgY2hvc2VuLhJKChdzdXBwb3J0LmNvbnRhY3QudmlzaWJsZRIvZm9ybS5lbmFibGVTdXBwb3J0TW9kZSAmJiBmb3JtLnN1cHBvcnRUaWVyICE9IDAiB3N1cHBvcnQqD1N1cHBvcnQgY29udGFjdCKNAgoHQWRkcmVzcxIcCghsaW5lX29uZRgBIAEoCUIKukgHyAEBcgIQAxIYCgRjaXR5GAIgASgJQgq6SAfIAQFyAhACEhYKBXN0YXRlGAMgASgJQge6SARyAhACEi4KC3Bvc3RhbF9jb2RlGAQgASgJQhm6SBZyFDISXltBLVowLTkgLV17MywxMn0kEjQKB2NvdW50cnkYBSABKA4yGS5wcm90b2Zvcm0udjEuQ291bnRyeUNvZGVCCLpIBYIBAhABEigKCGxvY2F0aW9uGAYgASgLMhYucHJvdG9mb3JtLnYxLkdlb1BvaW50EhUKCGxpbmVfdHdvGAcgASgJSACIAQFCCwoJX2xpbmVfdHdvImEKCEdlb1BvaW50EikKCGxhdGl0dWRlGAEgASgBQhe6SBQSEhkAAAAAAIBWQCkAAAAAAIBWwBIqCglsb25naXR1ZGUYAiABKAFCF7pIFBISGQAAAAAAgGZAKQAAAAAAgGbAIsMFCg9Qcm9maWxlU2V0dGluZ3MSIwoTZW5hYmxlX3N1cHBvcnRfbW9kZRgBIAEoCEIGyvMYAggIEoYBChBlc2NhbGF0aW9uX2xldmVsGAIgASgOMh0ucHJvdG9mb3JtLnYxLkVzY2FsYXRpb25MZXZlbEJNukgFggECEAHK8xhBMj8KG3N1cHBvcnQuZXNjYWxhdGlvbi5kaXNhYmxlZBIgIWZvcm0uc2V0dGluZ3MuZW5hYmxlU3VwcG9ydE1vZGUSaQoVbm90aWZpY2F0aW9uX2NoYW5uZWxzGAMgAygOMiEucHJvdG9mb3JtLnYxLk5vdGlmaWNhdGlvbkNoYW5uZWxCJ7pIEJIBDQgBEAQYASIFggECEAHK8xgQCA0aDEVNQUlMLCBTTEFDSxKmAQoPbmVzdGVkX3NldHRpbmdzGAQgAygLMjEucHJvdG9mb3JtLnYxLlByb2ZpbGVTZXR0aW5ncy5OZXN0ZWRTZXR0aW5nc0VudHJ5Qlq6SA2aAQoQAyIGcgQQAhgeyvMYRiJES2VlcCBzdXBwb3J0IHNldHRpbmdzIGdyb3VwZWQgYnkga2V5IHNvIHJlbGF0ZWQgcnVsZXMgc3RheSB0b2dldGhlci4aUgoTTmVzdGVkU2V0dGluZ3NFbnRyeRILCgNrZXkYASABKAkSKgoFdmFsdWUYAiABKAsyGy5wcm90b2Zvcm0udjEuTmVzdGVkU2V0dGluZzoCOAE6mQG6SJUBGpIBChtzdXBwb3J0LnJlcXVpcmVzLmVzY2FsYXRpb24SOkVzY2FsYXRpb24gbGV2ZWwgbXVzdCBiZSBzZXQgd2hlbiBzdXBwb3J0IG1vZGUgaXMgZW5hYmxlZC4aNyF0aGlzLmVuYWJsZV9zdXBwb3J0X21vZGUgfHwgdGhpcy5lc2NhbGF0aW9uX2xldmVsICE9IDAiWgoNTmVzdGVkU2V0dGluZxIWCgVsYWJlbBgBIAEoCUIHukgEcgIQAhIxCg1zY2hlZHVsZWRfZm9yGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCpwCgpBY2Nlc3NUaWVyEhsKF0FDQ0VTU19USUVSX1VOU1BFQ0lGSUVEEAASFgoSQUNDRVNTX1RJRVJfVklFV0VSEAESFgoSQUNDRVNTX1RJRVJfRURJVE9SEAISFQoRQUNDRVNTX1RJRVJfQURNSU4QAyqCAQoOVWlEZW1vUHJvdmlkZXISIAocVUlfREVNT19QUk9WSURFUl9VTlNQRUNJRklFRBAAEhgKFFVJX0RFTU9fUFJPVklERVJfQVdTEAESGAoUVUlfREVNT19QUk9WSURFUl9HQ1AQAhIaChZVSV9ERU1PX1BST1ZJREVSX0FaVVJFEAMqogEKEVVpRGVtb1N1cHBvcnRUaWVyEiQKIFVJX0RFTU9fU1VQUE9SVF9USUVSX1VOU1BFQ0lGSUVEEAASIQodVUlfREVNT19TVVBQT1JUX1RJRVJfU1RBTkRBUkQQARIhCh1VSV9ERU1PX1NVUFBPUlRfVElFUl9QUklPUklUWRACEiEKHVVJX0RFTU9fU1VQUE9SVF9USUVSX1BMQVRJTlVNEAMqfwoLQ291bnRyeUNvZGUSHAoYQ09VTlRSWV9DT0RFX1VOU1BFQ0lGSUVEEAASEwoPQ09VTlRSWV9DT0RFX1VTEAESEwoPQ09VTlRSWV9DT0RFX0NBEAISEwoPQ09VTlRSWV9DT0RFX0RFEAMSEwoPQ09VTlRSWV9DT0RFX1BMEAQqhQEKD0VzY2FsYXRpb25MZXZlbBIgChxFU0NBTEFUSU9OX0xFVkVMX1VOU1BFQ0lGSUVEEAASGAoURVNDQUxBVElPTl9MRVZFTF9MT1cQARIbChdFU0NBTEFUSU9OX0xFVkVMX01FRElVTRACEhkKFUVTQ0FMQVRJT05fTEVWRUxfSElHSBADKr0BChNOb3RpZmljYXRpb25DaGFubmVsEiQKIE5PVElGSUNBVElPTl9DSEFOTkVMX1VOU1BFQ0lGSUVEEAASHgoaTk9USUZJQ0FUSU9OX0NIQU5ORUxfRU1BSUwQARIcChhOT1RJRklDQVRJT05fQ0hBTk5FTF9TTVMQAhIeChpOT1RJRklDQVRJT05fQ0hBTk5FTF9TTEFDSxADEiIKHk5PVElGSUNBVElPTl9DSEFOTkVMX1BBR0VSRFVUWRAEQk1aS2dpdGh1Yi5jb20vbWFsaW5za2liZW5pYW1pbi9wcm90b2Zvcm0vcHJvdG8vZ2VuL2dvL3Byb3RvZm9ybS92MTtwcm90b2Zvcm12MWIGcHJvdG8z\", [file_protoform_v1_auto_form_ui, file_buf_validate_validate, file_google_protobuf_any, file_google_protobuf_duration, file_google_protobuf_field_mask, file_google_protobuf_struct, file_google_protobuf_timestamp, file_google_protobuf_wrappers]);\n\n/**\n * Primary protobuf fixture for AutoForm. It intentionally mixes scalar, nested,\n * repeated, map, oneof, and well-known types so the form generator can exercise\n * the sketchier corners of descriptor-driven rendering.\n *\n * @generated from message protoform.v1.AutoFormExample\n */\nexport type AutoFormExample = Message<\"protoform.v1.AutoFormExample\"> & {\n /**\n * Public handle shown in mentions and admin lists.\n *\n * @generated from field: string username = 1;\n */\n username: string;\n\n /**\n * Main email address for notifications and login recovery.\n *\n * @generated from field: string primary_email = 2;\n */\n primaryEmail: string;\n\n /**\n * Optional personal or team homepage.\n *\n * @generated from field: string homepage_url = 3;\n */\n homepageUrl: string;\n\n /**\n * UUID copied from an upstream system.\n *\n * @generated from field: string resource_id = 4;\n */\n resourceId: string;\n\n /**\n * Free-form summary shown on the profile card.\n *\n * @generated from field: string bio = 5;\n */\n bio: string;\n\n /**\n * @generated from field: bool is_enabled = 6;\n */\n isEnabled: boolean;\n\n /**\n * @generated from field: int32 age = 7;\n */\n age: number;\n\n /**\n * @generated from field: uint32 login_count = 8;\n */\n loginCount: number;\n\n /**\n * @generated from field: sint32 reputation_delta = 9;\n */\n reputationDelta: number;\n\n /**\n * @generated from field: int64 employee_number = 10;\n */\n employeeNumber: bigint;\n\n /**\n * @generated from field: uint64 storage_quota_bytes = 11;\n */\n storageQuotaBytes: bigint;\n\n /**\n * @generated from field: float profile_score = 12;\n */\n profileScore: number;\n\n /**\n * @generated from field: double account_balance = 13;\n */\n accountBalance: number;\n\n /**\n * Optional avatar payload for attachment-based workflows.\n *\n * @generated from field: bytes avatar_bytes = 14;\n */\n avatarBytes: Uint8Array;\n\n /**\n * @generated from field: protoform.v1.AccessTier access_tier = 15;\n */\n accessTier: AccessTier;\n\n /**\n * Shipping destination used for hardware deliveries.\n *\n * @generated from field: protoform.v1.Address shipping_address = 16;\n */\n shippingAddress?: Address | undefined;\n\n /**\n * @generated from field: protoform.v1.Address billing_address = 17;\n */\n billingAddress?: Address | undefined;\n\n /**\n * @generated from field: optional string nickname = 18;\n */\n nickname?: string | undefined;\n\n /**\n * @generated from field: google.protobuf.StringValue middle_name = 19;\n */\n middleName?: string | undefined;\n\n /**\n * @generated from field: google.protobuf.Int32Value bonus_points = 20;\n */\n bonusPoints?: number | undefined;\n\n /**\n * @generated from field: google.protobuf.BoolValue beta_tester = 21;\n */\n betaTester?: boolean | undefined;\n\n /**\n * Lightweight labels used for quick filtering.\n *\n * @generated from field: repeated string tags = 22;\n */\n tags: string[];\n\n /**\n * @generated from field: repeated protoform.v1.Address previous_addresses = 23;\n */\n previousAddresses: Address[];\n\n /**\n * @generated from field: repeated int32 lucky_numbers = 24;\n */\n luckyNumbers: number[];\n\n /**\n * Flat metadata pairs for analytics and routing.\n *\n * @generated from field: map labels = 25;\n */\n labels: { [key: string]: string };\n\n /**\n * Named office addresses keyed by a short slug.\n *\n * @generated from field: map office_locations = 26;\n */\n officeLocations: { [key: string]: Address };\n\n /**\n * Exactly one preferred contact route can be selected at a time.\n *\n * @generated from oneof protoform.v1.AutoFormExample.preferred_contact\n */\n preferredContact: {\n /**\n * Route updates to an email inbox.\n *\n * @generated from field: string preferred_email = 27;\n */\n value: string;\n case: \"preferredEmail\";\n } | {\n /**\n * Route urgent notices to an E.164 phone number.\n *\n * @generated from field: string preferred_phone = 28;\n */\n value: string;\n case: \"preferredPhone\";\n } | {\n /**\n * Opt out of direct outreach entirely.\n *\n * @generated from field: bool do_not_contact = 29;\n */\n value: boolean;\n case: \"doNotContact\";\n } | { case: undefined; value?: undefined };\n\n /**\n * Timestamp captured when the record was created.\n *\n * @generated from field: google.protobuf.Timestamp created_at = 30;\n */\n createdAt?: Timestamp | undefined;\n\n /**\n * @generated from field: google.protobuf.Timestamp expires_at = 31;\n */\n expiresAt?: Timestamp | undefined;\n\n /**\n * Delay between reminder notifications.\n *\n * @generated from field: google.protobuf.Duration reminder_interval = 32;\n */\n reminderInterval?: Duration | undefined;\n\n /**\n * Fields the current actor is allowed to update.\n *\n * @generated from field: google.protobuf.FieldMask writable_paths = 33;\n */\n writablePaths?: FieldMask | undefined;\n\n /**\n * Arbitrary preference flags stored as a JSON-ish struct.\n *\n * @generated from field: google.protobuf.Struct preferences = 34;\n */\n preferences?: JsonObject | undefined;\n\n /**\n * Generic featured value for experiments and demos.\n *\n * @generated from field: google.protobuf.Value featured_value = 35;\n */\n featuredValue?: Value | undefined;\n\n /**\n * Ordered dashboard widgets stored as a dynamic list.\n *\n * @generated from field: google.protobuf.ListValue dashboard_blocks = 36;\n */\n dashboardBlocks?: ListValue | undefined;\n\n /**\n * External Any payload kept intentionally loose for edge-case coverage.\n *\n * @generated from field: google.protobuf.Any external_payload = 37;\n */\n externalPayload?: Any | undefined;\n\n /**\n * @generated from field: int32 minimum_threshold = 38;\n */\n minimumThreshold: number;\n\n /**\n * @generated from field: int32 maximum_threshold = 39;\n */\n maximumThreshold: number;\n\n /**\n * Nested support settings with their own CEL validation rule.\n *\n * @generated from field: protoform.v1.ProfileSettings settings = 40;\n */\n settings?: ProfileSettings | undefined;\n};\n\n/**\n * Describes the message protoform.v1.AutoFormExample.\n * Use `create(AutoFormExampleSchema)` to create a new message.\n */\nexport const AutoFormExampleSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_v1_auto_form_example, 0);\n\n/**\n * Focused protobuf fixture for proto UI metadata and UI CEL demos.\n *\n * @generated from message protoform.v1.AutoFormUiMetadataExample\n */\nexport type AutoFormUiMetadataExample = Message<\"protoform.v1.AutoFormUiMetadataExample\"> & {\n /**\n * Friendly cluster name shown in rollout summaries.\n *\n * @generated from field: string cluster_name = 1;\n */\n clusterName: string;\n\n /**\n * Cloud provider where the request will be deployed.\n *\n * @generated from field: protoform.v1.UiDemoProvider provider = 2;\n */\n provider: UiDemoProvider;\n\n /**\n * Region where the cluster will be created.\n *\n * @generated from field: string region = 3;\n */\n region: string;\n\n /**\n * Toggle the conditional support step on or off.\n *\n * @generated from field: bool enable_support_mode = 4;\n */\n enableSupportMode: boolean;\n\n /**\n * Requested support tier for the deployment.\n *\n * @generated from field: protoform.v1.UiDemoSupportTier support_tier = 5;\n */\n supportTier: UiDemoSupportTier;\n\n /**\n * Requested maintenance window for premium support coordination.\n *\n * @generated from field: google.protobuf.Timestamp maintenance_window = 6;\n */\n maintenanceWindow?: Timestamp | undefined;\n\n /**\n * Extra context only needed for platinum support requests.\n *\n * @generated from field: string escalation_reason = 7;\n */\n escalationReason: string;\n\n /**\n * Pick exactly one support contact route once premium support is active.\n *\n * @generated from oneof protoform.v1.AutoFormUiMetadataExample.support_contact\n */\n supportContact: {\n /**\n * Route follow-up through an email inbox.\n *\n * @generated from field: string support_email = 8;\n */\n value: string;\n case: \"supportEmail\";\n } | {\n /**\n * Route follow-up through a Slack channel.\n *\n * @generated from field: string slack_channel = 9;\n */\n value: string;\n case: \"slackChannel\";\n } | {\n /**\n * Explicitly avoid any follow-up contact.\n *\n * @generated from field: bool no_follow_up = 10;\n */\n value: boolean;\n case: \"noFollowUp\";\n } | { case: undefined; value?: undefined };\n\n /**\n * API token for authenticating with the deployment service.\n *\n * @generated from field: string api_token = 13;\n */\n apiToken: string;\n\n /**\n * Approval or change-management ticket for the deployment.\n *\n * @generated from field: string approval_ticket = 11;\n */\n approvalTicket: string;\n\n /**\n * Keep a final dry-run toggle in the deploy section.\n *\n * @generated from field: bool enable_dry_run = 12;\n */\n enableDryRun: boolean;\n};\n\n/**\n * Describes the message protoform.v1.AutoFormUiMetadataExample.\n * Use `create(AutoFormUiMetadataExampleSchema)` to create a new message.\n */\nexport const AutoFormUiMetadataExampleSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_v1_auto_form_example, 1);\n\n/**\n * Postal address used by several nested object fields and maps.\n *\n * @generated from message protoform.v1.Address\n */\nexport type Address = Message<\"protoform.v1.Address\"> & {\n /**\n * @generated from field: string line_one = 1;\n */\n lineOne: string;\n\n /**\n * @generated from field: string city = 2;\n */\n city: string;\n\n /**\n * @generated from field: string state = 3;\n */\n state: string;\n\n /**\n * @generated from field: string postal_code = 4;\n */\n postalCode: string;\n\n /**\n * @generated from field: protoform.v1.CountryCode country = 5;\n */\n country: CountryCode;\n\n /**\n * @generated from field: protoform.v1.GeoPoint location = 6;\n */\n location?: GeoPoint | undefined;\n\n /**\n * @generated from field: optional string line_two = 7;\n */\n lineTwo?: string | undefined;\n};\n\n/**\n * Describes the message protoform.v1.Address.\n * Use `create(AddressSchema)` to create a new message.\n */\nexport const AddressSchema: GenMessage
= /*@__PURE__*/\n messageDesc(file_protoform_v1_auto_form_example, 2);\n\n/**\n * Latitude/longitude pair used by the nested Address message.\n *\n * @generated from message protoform.v1.GeoPoint\n */\nexport type GeoPoint = Message<\"protoform.v1.GeoPoint\"> & {\n /**\n * @generated from field: double latitude = 1;\n */\n latitude: number;\n\n /**\n * @generated from field: double longitude = 2;\n */\n longitude: number;\n};\n\n/**\n * Describes the message protoform.v1.GeoPoint.\n * Use `create(GeoPointSchema)` to create a new message.\n */\nexport const GeoPointSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_v1_auto_form_example, 3);\n\n/**\n * Support workflow settings nested under the main example message.\n *\n * @generated from message protoform.v1.ProfileSettings\n */\nexport type ProfileSettings = Message<\"protoform.v1.ProfileSettings\"> & {\n /**\n * @generated from field: bool enable_support_mode = 1;\n */\n enableSupportMode: boolean;\n\n /**\n * @generated from field: protoform.v1.EscalationLevel escalation_level = 2;\n */\n escalationLevel: EscalationLevel;\n\n /**\n * @generated from field: repeated protoform.v1.NotificationChannel notification_channels = 3;\n */\n notificationChannels: NotificationChannel[];\n\n /**\n * @generated from field: map nested_settings = 4;\n */\n nestedSettings: { [key: string]: NestedSetting };\n};\n\n/**\n * Describes the message protoform.v1.ProfileSettings.\n * Use `create(ProfileSettingsSchema)` to create a new message.\n */\nexport const ProfileSettingsSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_v1_auto_form_example, 4);\n\n/**\n * Small nested settings entry used inside a protobuf map.\n *\n * @generated from message protoform.v1.NestedSetting\n */\nexport type NestedSetting = Message<\"protoform.v1.NestedSetting\"> & {\n /**\n * @generated from field: string label = 1;\n */\n label: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp scheduled_for = 2;\n */\n scheduledFor?: Timestamp | undefined;\n};\n\n/**\n * Describes the message protoform.v1.NestedSetting.\n * Use `create(NestedSettingSchema)` to create a new message.\n */\nexport const NestedSettingSchema: GenMessage = /*@__PURE__*/\n messageDesc(file_protoform_v1_auto_form_example, 5);\n\n/**\n * @generated from enum protoform.v1.AccessTier\n */\nexport enum AccessTier {\n /**\n * @generated from enum value: ACCESS_TIER_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: ACCESS_TIER_VIEWER = 1;\n */\n VIEWER = 1,\n\n /**\n * @generated from enum value: ACCESS_TIER_EDITOR = 2;\n */\n EDITOR = 2,\n\n /**\n * @generated from enum value: ACCESS_TIER_ADMIN = 3;\n */\n ADMIN = 3,\n}\n\n/**\n * Describes the enum protoform.v1.AccessTier.\n */\nexport const AccessTierSchema: GenEnum = /*@__PURE__*/\n enumDesc(file_protoform_v1_auto_form_example, 0);\n\n/**\n * @generated from enum protoform.v1.UiDemoProvider\n */\nexport enum UiDemoProvider {\n /**\n * @generated from enum value: UI_DEMO_PROVIDER_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: UI_DEMO_PROVIDER_AWS = 1;\n */\n AWS = 1,\n\n /**\n * @generated from enum value: UI_DEMO_PROVIDER_GCP = 2;\n */\n GCP = 2,\n\n /**\n * @generated from enum value: UI_DEMO_PROVIDER_AZURE = 3;\n */\n AZURE = 3,\n}\n\n/**\n * Describes the enum protoform.v1.UiDemoProvider.\n */\nexport const UiDemoProviderSchema: GenEnum = /*@__PURE__*/\n enumDesc(file_protoform_v1_auto_form_example, 1);\n\n/**\n * @generated from enum protoform.v1.UiDemoSupportTier\n */\nexport enum UiDemoSupportTier {\n /**\n * @generated from enum value: UI_DEMO_SUPPORT_TIER_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: UI_DEMO_SUPPORT_TIER_STANDARD = 1;\n */\n STANDARD = 1,\n\n /**\n * @generated from enum value: UI_DEMO_SUPPORT_TIER_PRIORITY = 2;\n */\n PRIORITY = 2,\n\n /**\n * @generated from enum value: UI_DEMO_SUPPORT_TIER_PLATINUM = 3;\n */\n PLATINUM = 3,\n}\n\n/**\n * Describes the enum protoform.v1.UiDemoSupportTier.\n */\nexport const UiDemoSupportTierSchema: GenEnum = /*@__PURE__*/\n enumDesc(file_protoform_v1_auto_form_example, 2);\n\n/**\n * @generated from enum protoform.v1.CountryCode\n */\nexport enum CountryCode {\n /**\n * @generated from enum value: COUNTRY_CODE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: COUNTRY_CODE_US = 1;\n */\n US = 1,\n\n /**\n * @generated from enum value: COUNTRY_CODE_CA = 2;\n */\n CA = 2,\n\n /**\n * @generated from enum value: COUNTRY_CODE_DE = 3;\n */\n DE = 3,\n\n /**\n * @generated from enum value: COUNTRY_CODE_PL = 4;\n */\n PL = 4,\n}\n\n/**\n * Describes the enum protoform.v1.CountryCode.\n */\nexport const CountryCodeSchema: GenEnum = /*@__PURE__*/\n enumDesc(file_protoform_v1_auto_form_example, 3);\n\n/**\n * @generated from enum protoform.v1.EscalationLevel\n */\nexport enum EscalationLevel {\n /**\n * @generated from enum value: ESCALATION_LEVEL_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: ESCALATION_LEVEL_LOW = 1;\n */\n LOW = 1,\n\n /**\n * @generated from enum value: ESCALATION_LEVEL_MEDIUM = 2;\n */\n MEDIUM = 2,\n\n /**\n * @generated from enum value: ESCALATION_LEVEL_HIGH = 3;\n */\n HIGH = 3,\n}\n\n/**\n * Describes the enum protoform.v1.EscalationLevel.\n */\nexport const EscalationLevelSchema: GenEnum = /*@__PURE__*/\n enumDesc(file_protoform_v1_auto_form_example, 4);\n\n/**\n * @generated from enum protoform.v1.NotificationChannel\n */\nexport enum NotificationChannel {\n /**\n * @generated from enum value: NOTIFICATION_CHANNEL_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: NOTIFICATION_CHANNEL_EMAIL = 1;\n */\n EMAIL = 1,\n\n /**\n * @generated from enum value: NOTIFICATION_CHANNEL_SMS = 2;\n */\n SMS = 2,\n\n /**\n * @generated from enum value: NOTIFICATION_CHANNEL_SLACK = 3;\n */\n SLACK = 3,\n\n /**\n * @generated from enum value: NOTIFICATION_CHANNEL_PAGERDUTY = 4;\n */\n PAGERDUTY = 4,\n}\n\n/**\n * Describes the enum protoform.v1.NotificationChannel.\n */\nexport const NotificationChannelSchema: GenEnum = /*@__PURE__*/\n enumDesc(file_protoform_v1_auto_form_example, 5);\n\n", "type": "registry:lib" }, { "path": "registry/base-nova/protoform/demo/auto-form-basic.tsx", "content": "'use client';\n\nimport { useState } from 'react';\nimport { AutoForm } from '@/registry/base-nova/protoform/components/auto-form';\nimport type { SchemaProvider } from '@/registry/base-nova/protoform/components/auto-form/core-types';\n\nconst schema: SchemaProvider = {\n getDefaultValues: () => ({\n email: 'hello@protoform.dev',\n newsletter: true,\n notes: 'Start simple: schema in, shadcn form out.',\n }),\n parseSchema: () => ({\n fields: [\n { key: 'email', type: 'string', required: true, fieldConfig: { fieldType: 'email', label: 'Work email' } },\n { key: 'newsletter', type: 'boolean', required: false, fieldConfig: { fieldType: 'switch', label: 'Subscribe' } },\n {\n key: 'notes',\n type: 'string',\n required: false,\n fieldConfig: {\n description: 'AutoForm renders native shadcn-style controls while you keep the source code.',\n fieldType: 'textarea',\n label: 'Notes',\n },\n },\n ],\n }),\n validateSchema: (values) => ({ data: values, success: true }),\n};\n\nexport function AutoFormBasicDemo() {\n const [submittedValue, setSubmittedValue] = useState();\n\n return (\n
\n {\n setSubmittedValue(JSON.stringify(values, null, 2));\n }}\n schema={schema}\n testId=\"basic-auto-form\"\n withSubmit\n />\n {submittedValue ?
{submittedValue}
: null}\n
\n );\n}\n", "type": "registry:component" }, { "path": "registry/base-nova/protoform/demo/auto-form-protobuf-validation.tsx", "content": "'use client';\n\nimport { useState } from 'react';\n\nimport { AutoForm } from '@/registry/base-nova/protoform/components/auto-form';\nimport '@/registry/base-nova/protoform/lib/protobuf-provider/auto-form-example-annotations';\n\nimport { AutoFormExampleSchema } from '@/registry/base-nova/protoform/lib/protobuf-provider/gen/auto-form-example_pb';\n\nconst defaultValues = {\n username: 'rp',\n primaryEmail: 'oops',\n homepageUrl: 'not-a-url',\n resourceId: 'bad-id',\n age: 11,\n employeeNumber: '0',\n storageQuotaBytes: '12',\n shippingAddress: {\n lineOne: '1',\n city: '',\n state: '',\n postalCode: '12',\n country: 0,\n },\n tags: [],\n labels: [],\n preferredContact: {\n case: undefined,\n value: undefined,\n },\n createdAt: '',\n minimumThreshold: 12,\n maximumThreshold: 4,\n};\n\nexport function AutoFormProtobufValidationDemo() {\n const [submitted, setSubmitted] = useState(false);\n\n return (\n
\n

\n This demo starts intentionally broken so you can see field-level errors, required oneof feedback, and the\n message-level threshold rule in action.\n

\n {\n setSubmitted(true);\n }}\n schema={AutoFormExampleSchema}\n withSubmit\n />\n {submitted ? (\n

\n Nice — everything validated and the protobuf form submitted.\n

\n ) : null}\n
\n );\n}\n", "type": "registry:component" }, { "path": "registry/base-nova/protoform/demo/auto-form-protobuf-complex.tsx", "content": "'use client';\n\nimport { toJsonString } from '@bufbuild/protobuf';\nimport { useState } from 'react';\n\nimport { AutoForm } from '@/registry/base-nova/protoform/components/auto-form';\nimport '@/registry/base-nova/protoform/lib/protobuf-provider/auto-form-example-annotations';\n\nimport { type AutoFormExample, AutoFormExampleSchema } from '@/registry/base-nova/protoform/lib/protobuf-provider/gen/auto-form-example_pb';\n\nconst defaultValues = {\n username: 'protoform_admin',\n primaryEmail: 'forms@protoform.com',\n homepageUrl: 'https://protoform.com',\n resourceId: '123e4567-e89b-12d3-a456-426614174000',\n bio: 'A protobuf-backed form with Buf reflection and Protovalidate.',\n isEnabled: true,\n age: 34,\n loginCount: 12,\n reputationDelta: 4,\n employeeNumber: '4001',\n storageQuotaBytes: '4096',\n profileScore: 0.92,\n accountBalance: 2500.5,\n accessTier: 3,\n shippingAddress: {\n lineOne: '500 Harbor Way',\n city: 'San Francisco',\n state: 'CA',\n postalCode: '94107',\n country: 1,\n },\n nickname: 'Harbor',\n middleName: 'UI',\n bonusPoints: 42,\n betaTester: true,\n tags: ['forms', 'protobuf'],\n previousAddresses: [\n {\n lineOne: '250 Redwood Ave',\n city: 'Oakland',\n state: 'CA',\n postalCode: '94607',\n country: 1,\n },\n ],\n luckyNumbers: [7, 13],\n labels: [\n { key: 'team', value: 'frontend' },\n { key: 'env', value: 'demo' },\n ],\n officeLocations: [\n {\n key: 'hq',\n value: {\n lineOne: '500 Harbor Way',\n city: 'San Francisco',\n state: 'CA',\n postalCode: '94107',\n country: 1,\n },\n },\n ],\n preferredContact: {\n case: 'preferredEmail',\n value: 'forms@protoform.com',\n },\n createdAt: '2026-03-17T09:00',\n expiresAt: '2026-04-17T09:00',\n reminderInterval: '300s',\n writablePaths: ['profile', 'preferences'],\n preferences: {\n theme: 'dark',\n density: 'comfortable',\n },\n featuredValue: 'feature-rollout',\n dashboardBlocks: ['overview', 'alerts'],\n minimumThreshold: 5,\n maximumThreshold: 10,\n settings: {\n enableSupportMode: true,\n escalationLevel: 2,\n notificationChannels: [1, 3],\n nestedSettings: [\n {\n key: 'default',\n value: {\n label: 'Primary runbook',\n scheduledFor: '2026-03-18T10:00',\n },\n },\n ],\n },\n};\n\nexport function AutoFormProtobufComplexDemo() {\n const [submittedValue, setSubmittedValue] = useState();\n\n return (\n
\n \n defaultMode=\"simple\"\n defaultValues={defaultValues}\n fieldConfig={{\n accountBalance: {\n description: 'Currency-style formatting uses InputGroup affordances instead of a raw number input.',\n },\n reminderInterval: {\n description: 'Protovalidate uses protobuf duration JSON syntax like 300s or 1.5s.',\n },\n writablePaths: {\n description: 'Field masks render as a guided paths editor.',\n },\n 'settings.nestedSettings': {\n description: 'Compact key/value rows keep nested support settings easier to scan.',\n },\n }}\n formOptions={{ mode: 'all' }}\n modes={['simple', 'advanced', 'json']}\n onSubmit={(values) => {\n setSubmittedValue(toJsonString(AutoFormExampleSchema, values, { prettySpaces: 2 }));\n }}\n schema={AutoFormExampleSchema}\n showSummary\n withSubmit\n />\n\n {submittedValue ? (\n
{submittedValue}
\n ) : null}\n
\n );\n}\n", "type": "registry:component" }, { "path": "registry/base-nova/protoform/demo/auto-form-protobuf-ui-metadata.tsx", "content": "'use client';\n\nimport { toJsonString } from '@bufbuild/protobuf';\nimport { useState } from 'react';\n\nimport { AutoForm } from '@/registry/base-nova/protoform/components/auto-form';\nimport '@/registry/base-nova/protoform/lib/protobuf-provider/auto-form-example-annotations';\n\nimport {\n type AutoFormUiMetadataExample,\n AutoFormUiMetadataExampleSchema,\n} from '@/registry/base-nova/protoform/lib/protobuf-provider/gen/auto-form-example_pb';\n\nconst defaultValues = {\n clusterName: 'scarlet-forest-dolphin',\n provider: 1,\n region: 'us-east-2',\n enableSupportMode: false,\n supportTier: 0,\n approvalTicket: 'OPS-142',\n enableDryRun: true,\n};\n\nexport function AutoFormProtobufUiMetadataDemo() {\n const [submittedValue, setSubmittedValue] = useState();\n\n return (\n
\n

\n Try toggling support mode on, then move into the support step. The step itself is driven by{' '}\n message_ui, the contact oneof waits on a support tier, and the next button stays blocked until the\n CEL completion rule passes.\n

\n\n \n defaultValues={defaultValues}\n formOptions={{ mode: 'all' }}\n modes={['advanced', 'json']}\n onSubmit={(values) => {\n setSubmittedValue(toJsonString(AutoFormUiMetadataExampleSchema, values, { prettySpaces: 2 }));\n }}\n schema={AutoFormUiMetadataExampleSchema}\n showSummary\n testId=\"proto-ui-metadata-form\"\n withSubmit\n />\n\n {submittedValue ? (\n
{submittedValue}
\n ) : null}\n
\n );\n}\n", "type": "registry:component" } ], "type": "registry:block" }