@dtkt/protoform 0.0.0-stage → 0.1.0

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 (56) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +221 -2
  3. package/dist/base.d.ts +19 -0
  4. package/dist/comments.d.ts +9 -0
  5. package/dist/components/enum.d.ts +24 -0
  6. package/dist/components/field.d.ts +16 -0
  7. package/dist/components/frame.d.ts +6 -0
  8. package/dist/components/group.d.ts +25 -0
  9. package/dist/components/hooks.d.ts +18 -0
  10. package/dist/components/index.d.ts +13 -0
  11. package/dist/components/index.js +14 -0
  12. package/dist/components/list.d.ts +7 -0
  13. package/dist/components/map.d.ts +7 -0
  14. package/dist/components/message.d.ts +17 -0
  15. package/dist/components/oneof.d.ts +8 -0
  16. package/dist/components/protoform.d.ts +20 -0
  17. package/dist/components/scalar.d.ts +34 -0
  18. package/dist/components/select.d.ts +1 -0
  19. package/dist/components/submit.d.ts +8 -0
  20. package/dist/components/wkt.d.ts +20 -0
  21. package/dist/context-DSrebuNf.js +1024 -0
  22. package/dist/element.d.ts +23 -0
  23. package/dist/enum.d.ts +17 -0
  24. package/dist/env.d.ts +28 -0
  25. package/dist/favicon.ico +0 -0
  26. package/dist/field.d.ts +17 -0
  27. package/dist/gen/dtkt/protoform/v1beta1/protoform_pb.d.ts +463 -0
  28. package/dist/gen/dtkt/protoform/v1beta1/protoform_pb.js +6 -0
  29. package/dist/gen/google/api/field_behavior_pb.d.ts +133 -0
  30. package/dist/gen/google/api/field_behavior_pb.js +5 -0
  31. package/dist/icons.svg +24 -0
  32. package/dist/kit/bare.d.ts +3 -0
  33. package/dist/kit/context.d.ts +56 -0
  34. package/dist/kit/index.d.ts +4 -0
  35. package/dist/kit/index.js +1 -0
  36. package/dist/kit/tailwind/index.d.ts +7 -0
  37. package/dist/kit/tailwind/index.js +327 -0
  38. package/dist/kit/types.d.ts +126 -0
  39. package/dist/list.d.ts +29 -0
  40. package/dist/main.d.ts +13 -0
  41. package/dist/main.js +3 -0
  42. package/dist/map.d.ts +36 -0
  43. package/dist/message.d.ts +61 -0
  44. package/dist/oneof.d.ts +27 -0
  45. package/dist/path.d.ts +8 -0
  46. package/dist/protoform-DmMJ7LSw.js +835 -0
  47. package/dist/providers/env.d.ts +4 -0
  48. package/dist/providers/index.d.ts +2 -0
  49. package/dist/providers/index.js +11 -0
  50. package/dist/providers/ui.d.ts +13 -0
  51. package/dist/scalar.d.ts +30 -0
  52. package/dist/store.d.ts +29 -0
  53. package/dist/styles.css +2 -0
  54. package/dist/ui-DGND0oTu.js +32 -0
  55. package/dist/wellknown.d.ts +10 -0
  56. package/package.json +141 -4
@@ -0,0 +1,4 @@
1
+ import { Env } from '../env';
2
+ export declare function EnvProvider({ env, children }: React.PropsWithChildren<{
3
+ env: Env;
4
+ }>): import('react').JSX.Element;
@@ -0,0 +1,2 @@
1
+ export * from './env';
2
+ export * from './ui';
@@ -0,0 +1,11 @@
1
+ import { z as e } from "../context-DSrebuNf.js";
2
+ import { t } from "../ui-DGND0oTu.js";
3
+ import { jsx as n } from "react/jsx-runtime";
4
+ // lib/providers/env.tsx
5
+ function r({ env: t, children: r }) {
6
+ return /* @__PURE__ */ n(e.Provider, {
7
+ value: t,
8
+ children: r
9
+ });
10
+ }
11
+ export { r as EnvProvider, t as UIProvider };
@@ -0,0 +1,13 @@
1
+ import { PropsWithChildren } from 'react';
2
+ import { UIContextValue } from '../kit/context';
3
+ import { UIKit } from '../kit/types';
4
+ export type UIProviderProps = Partial<Omit<UIContextValue, "kit" | "messages">> & {
5
+ /** Primitives to render with. Missing ones fall back to the enclosing provider or the bare kit. */
6
+ kit?: Partial<UIKit>;
7
+ messages?: Partial<UIContextValue["messages"]>;
8
+ };
9
+ /**
10
+ * Chooses the UI used by every `Protoform` below it. Providers nest: inner
11
+ * providers override outer ones per primitive.
12
+ */
13
+ export declare function UIProvider({ kit, renderers, resolve, messages, children }: PropsWithChildren<UIProviderProps>): import('react').JSX.Element;
@@ -0,0 +1,30 @@
1
+ import { DescField, ScalarType } from '@bufbuild/protobuf';
2
+ import { ScalarValue } from '@bufbuild/protobuf/reflect';
3
+ import { BaseField } from './base';
4
+ export type ScalarFieldDesc = Extract<DescField, {
5
+ fieldKind: "scalar";
6
+ }>;
7
+ export declare class ScalarField extends BaseField<ScalarFieldDesc> {
8
+ get(): ScalarValue;
9
+ set(value: ScalarValue): void;
10
+ parse(str: string): void;
11
+ toString(): string;
12
+ }
13
+ export type ParseResult = {
14
+ ok: true;
15
+ value: ScalarValue;
16
+ } | {
17
+ ok: false;
18
+ error: string;
19
+ };
20
+ export declare function isIntegerScalar(scalar: ScalarType): boolean;
21
+ export declare function isNumericScalar(scalar: ScalarType): boolean;
22
+ /**
23
+ * Parses user input into a value for the given scalar type. Empty input
24
+ * yields the zero value. 32-bit integers become numbers, 64-bit integers
25
+ * become bigints (as expected by the reflection API).
26
+ */
27
+ export declare function tryParseScalar(scalar: ScalarType, input: string): ParseResult;
28
+ /** Like `tryParseScalar`, but throws on invalid input. */
29
+ export declare function parseScalar(scalar: ScalarType, str: string): ScalarValue;
30
+ export declare function formatScalar(scalar: ScalarType, value: ScalarValue): string;
@@ -0,0 +1,29 @@
1
+ import { Violation } from '@bufbuild/protovalidate';
2
+ /**
3
+ * Shared, observable state for one message tree. The protobuf value itself is
4
+ * mutated in place, so the store exposes a revision counter that React can
5
+ * subscribe to (via `useSyncExternalStore`) to know when to re-render.
6
+ */
7
+ export declare class FormStore {
8
+ private revision;
9
+ private dataRevision;
10
+ private listeners;
11
+ violations: Violation[];
12
+ private byPath;
13
+ private localErrors;
14
+ /** Set once the user attempted to submit; used to switch to eager validation. */
15
+ submitted: boolean;
16
+ markSubmitted(): void;
17
+ subscribe: (listener: () => void) => () => void;
18
+ /** Changes whenever data or errors change. */
19
+ snapshot: () => number;
20
+ /** Changes only when the message data changes. */
21
+ dataSnapshot: () => number;
22
+ dataChanged(): void;
23
+ setViolations(violations: Violation[]): void;
24
+ violationsAt(path: string): Violation[];
25
+ setLocalError(path: string, message: string | undefined): void;
26
+ localError(path: string): string | undefined;
27
+ hasLocalErrors(): boolean;
28
+ private emit;
29
+ }
@@ -0,0 +1,2 @@
1
+ /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-leading:initial;--tw-font-weight:initial;--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-medium:500;--radius-sm:.25rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1)}}@layer utilities;@layer protoform{:root{--pf-fg:light-dark(#18181b,#f4f4f5);--pf-muted:light-dark(#52525b,#a1a1aa);--pf-surface:light-dark(#fafafa,#202023);--pf-input-bg:light-dark(#fff,#27272a);--pf-border:light-dark(#d4d4d8,#3f3f46);--pf-border-strong:light-dark(#a1a1aa,#71717a);--pf-accent:light-dark(#4f46e5,#818cf8);--pf-accent-fg:light-dark(#fff,#0b0b0f);--pf-ring:light-dark(#6366f1,#a5b4fc);--pf-danger:light-dark(#dc2626,#f87171);--pf-danger-bg:light-dark(#fef2f2,#2a1517);--pf-radius:.375rem;--pf-font:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"}.pf-form,.pf-theme{color-scheme:light dark;color:var(--pf-fg);font-family:var(--pf-font)}:where([data-theme=light],.light) :is(.pf-form,.pf-theme),:is(.pf-form,.pf-theme):where([data-theme=light],.light){color-scheme:light}:where([data-theme=dark],.dark) :is(.pf-form,.pf-theme),:is(.pf-form,.pf-theme):where([data-theme=dark],.dark){color-scheme:dark}.pf-form{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.pf-stack{gap:calc(var(--spacing) * 4);flex-direction:column;display:flex}.pf-row{align-items:center;gap:calc(var(--spacing) * 2);display:flex}.pf-row:has(textarea){align-items:flex-start}.pf-row-content{gap:calc(var(--spacing) * 2);flex:1;min-width:0;display:flex}.pf-row-content>*{flex:1;min-width:0}.pf-row-content>[data-pf=separator]{font-family:var(--font-mono);color:var(--pf-muted);flex:none;align-self:center}.pf-row-actions{min-width:calc(var(--spacing) * 10);justify-content:flex-end;align-items:center;gap:var(--spacing);flex-shrink:0;display:flex}.pf-field{gap:calc(var(--spacing) * 1.5);flex-direction:column;display:flex}.pf-field-body{gap:calc(var(--spacing) * 1.5)}.pf-label{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.pf-required{color:var(--pf-danger)}.pf-description{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--pf-muted);margin:0}.pf-errors{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--pf-danger);margin:0;padding:0;list-style-type:none}.pf-form [data-pf=empty]{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--pf-muted);margin:0;font-style:italic}.pf-form [data-pf=actions]{margin-top:calc(var(--spacing) * 6);align-items:center;gap:calc(var(--spacing) * 2);display:flex}.pf-form [data-pf=form-errors]{margin-bottom:calc(var(--spacing) * 4);border-radius:var(--pf-radius);border-style:var(--tw-border-style);border-width:1px;border-color:var(--pf-danger);background-color:var(--pf-danger-bg);padding:calc(var(--spacing) * 3);color:var(--pf-danger);list-style-type:none}.pf-input,.pf-textarea,.pf-select,.pf-file-input{font:inherit;box-sizing:border-box;border-radius:var(--pf-radius);border-style:var(--tw-border-style);border-width:1px;border-color:var(--pf-border);background-color:var(--pf-input-bg);width:100%;padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);color:var(--pf-fg);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-outline-style:none;outline-style:none;display:block}:is(.pf-input,.pf-textarea,.pf-select,.pf-file-input):hover{border-color:var(--pf-border-strong)}:is(.pf-input,.pf-textarea,.pf-select,.pf-file-input)[data-focus],:is(.pf-input,.pf-textarea,.pf-select,.pf-file-input):focus-visible{border-color:var(--pf-ring);--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);--tw-ring-color:var(--pf-ring)}@supports (color:color-mix(in lab, red, red)){:is(.pf-input,.pf-textarea,.pf-select,.pf-file-input)[data-focus],:is(.pf-input,.pf-textarea,.pf-select,.pf-file-input):focus-visible{--tw-ring-color:color-mix(in oklab, var(--pf-ring) 40%, transparent)}}:is(.pf-input,.pf-textarea,.pf-select,.pf-file-input)[data-invalid],:is(.pf-input,.pf-textarea,.pf-select,.pf-file-input)[aria-invalid=true]{border-color:var(--pf-danger)}:is(.pf-input,.pf-textarea,.pf-select,.pf-file-input)[data-invalid][data-focus],:is(.pf-input,.pf-textarea,.pf-select,.pf-file-input)[aria-invalid=true]:focus-visible{--tw-ring-color:var(--pf-danger)}@supports (color:color-mix(in lab, red, red)){:is(.pf-input,.pf-textarea,.pf-select,.pf-file-input)[data-invalid][data-focus],:is(.pf-input,.pf-textarea,.pf-select,.pf-file-input)[aria-invalid=true]:focus-visible{--tw-ring-color:color-mix(in oklab, var(--pf-danger) 40%, transparent)}}:is(.pf-input,.pf-textarea,.pf-select,.pf-file-input):disabled,:is(.pf-input,.pf-textarea,.pf-select,.pf-file-input)[data-disabled]{cursor:not-allowed;opacity:.6}:is(.pf-input,.pf-textarea,.pf-select,.pf-file-input):read-only:not(select,[type=file]){background-color:var(--pf-surface)}:is(.pf-input,.pf-textarea,.pf-select,.pf-file-input)[data-mono]{font-family:var(--font-mono);font-size:.8125rem}:is(.pf-input,.pf-textarea,.pf-select,.pf-file-input)::placeholder{color:var(--pf-muted);opacity:.7}.pf-textarea{min-height:calc(var(--spacing) * 20);resize:vertical}.pf-select-wrap{position:relative}.pf-select{appearance:none;padding-right:calc(var(--spacing) * 9)}.pf-chevron{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4);color:var(--pf-muted)}.pf-select-wrap>.pf-chevron{pointer-events:none;top:50%;right:calc(var(--spacing) * 2.5);--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y);position:absolute}.pf-switch{box-sizing:border-box;height:calc(var(--spacing) * 6);width:calc(var(--spacing) * 11);cursor:pointer;border-style:var(--tw-border-style);background-color:var(--pf-border-strong);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-outline-style:none;border-width:0;border-radius:3.40282e38px;outline-style:none;flex-shrink:0;align-items:center;padding:0;display:inline-flex;position:relative}.pf-switch[data-checked]{background-color:var(--pf-accent)}.pf-switch[data-focus]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);--tw-ring-color:var(--pf-ring)}@supports (color:color-mix(in lab, red, red)){.pf-switch[data-focus]{--tw-ring-color:color-mix(in oklab, var(--pf-ring) 60%, transparent)}}.pf-switch[data-focus]{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.pf-switch[data-invalid]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);--tw-ring-color:var(--pf-danger)}@supports (color:color-mix(in lab, red, red)){.pf-switch[data-invalid]{--tw-ring-color:color-mix(in oklab, var(--pf-danger) 60%, transparent)}}.pf-switch[data-disabled]{cursor:not-allowed;opacity:.6}.pf-switch-thumb{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5);--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y);background-color:var(--color-white);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));border-radius:3.40282e38px;display:inline-block}.pf-switch[data-checked] .pf-switch-thumb{--tw-translate-x:calc(var(--spacing) * 5.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.pf-checkbox{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5);cursor:pointer;border-radius:var(--radius-sm);border-style:var(--tw-border-style);border-width:1px;border-color:var(--pf-border-strong);background-color:var(--pf-input-bg);color:var(--pf-accent-fg);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-outline-style:none;outline-style:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.pf-checkbox[data-checked]{border-color:var(--pf-accent);background-color:var(--pf-accent)}.pf-checkbox[data-focus]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);--tw-ring-color:var(--pf-ring)}@supports (color:color-mix(in lab, red, red)){.pf-checkbox[data-focus]{--tw-ring-color:color-mix(in oklab, var(--pf-ring) 60%, transparent)}}.pf-checkbox[data-focus]{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.pf-checkbox[data-invalid]{border-color:var(--pf-danger)}.pf-checkbox[data-disabled]{cursor:not-allowed;opacity:.6}.pf-checkbox-mark{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5);opacity:0}.pf-checkbox[data-checked] .pf-checkbox-mark{opacity:1}.pf-check-label,.pf-radio-option{align-items:center;gap:calc(var(--spacing) * 2);display:inline-flex}.pf-radiogroup{column-gap:calc(var(--spacing) * 5);row-gap:calc(var(--spacing) * 2);flex-wrap:wrap;display:flex}.pf-radio{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5);cursor:pointer;border-style:var(--tw-border-style);border-width:1px;border-color:var(--pf-border-strong);background-color:var(--pf-input-bg);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-outline-style:none;border-radius:3.40282e38px;outline-style:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.pf-radio[data-checked]{border-color:var(--pf-accent)}.pf-radio[data-focus]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);--tw-ring-color:var(--pf-ring)}@supports (color:color-mix(in lab, red, red)){.pf-radio[data-focus]{--tw-ring-color:color-mix(in oklab, var(--pf-ring) 60%, transparent)}}.pf-radio[data-focus]{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.pf-radio[data-disabled]{cursor:not-allowed;opacity:.6}.pf-radio-dot{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5);--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x) var(--tw-scale-y);background-color:var(--pf-accent);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));border-radius:3.40282e38px}.pf-radio[data-checked] .pf-radio-dot{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.pf-file-input{cursor:pointer;padding:calc(var(--spacing) * 1.5);color:var(--pf-muted)}.pf-file-input::file-selector-button{margin-right:calc(var(--spacing) * 3)}.pf-file-input::file-selector-button{cursor:pointer}.pf-file-input::file-selector-button{border-radius:var(--radius-sm)}.pf-file-input::file-selector-button{border-style:var(--tw-border-style);border-width:1px}.pf-file-input::file-selector-button{border-color:var(--pf-border)}.pf-file-input::file-selector-button{background-color:var(--pf-surface)}.pf-file-input::file-selector-button{padding-inline:calc(var(--spacing) * 3)}.pf-file-input::file-selector-button{padding-block:var(--spacing)}.pf-file-input::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.pf-file-input::file-selector-button{color:var(--pf-fg)}.pf-file-input{font-size:inherit}.pf-file-input::file-selector-button{font:inherit;font-weight:500}.pf-file-input:disabled{cursor:not-allowed}.pf-file-input:disabled::file-selector-button{cursor:not-allowed}.pf-button{font:inherit;box-sizing:border-box;cursor:pointer;justify-content:center;align-items:center;gap:var(--spacing);border-radius:var(--pf-radius);border-style:var(--tw-border-style);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 1.5);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-outline-style:none;background-color:#0000;border-width:1px;border-color:#0000;outline-style:none;display:inline-flex}.pf-button[data-size=sm]{padding-inline:calc(var(--spacing) * 2);padding-block:var(--spacing);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.pf-button[data-focus]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);--tw-ring-color:var(--pf-ring)}@supports (color:color-mix(in lab, red, red)){.pf-button[data-focus]{--tw-ring-color:color-mix(in oklab, var(--pf-ring) 60%, transparent)}}.pf-button[data-focus]{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.pf-button:disabled,.pf-button[data-disabled]{cursor:not-allowed;opacity:.5}.pf-button[data-variant=primary]{background-color:var(--pf-accent);color:var(--pf-accent-fg)}.pf-button[data-variant=primary]:not(:disabled):hover{opacity:.9}.pf-button[data-variant=secondary]{border-color:var(--pf-border);background-color:var(--pf-input-bg);color:var(--pf-fg)}.pf-button[data-variant=secondary]:not(:disabled):hover{background-color:var(--pf-surface)}.pf-button[data-variant=danger]{background-color:var(--pf-danger);color:var(--color-white)}.pf-button[data-variant=ghost]{color:var(--pf-muted)}.pf-button[data-variant=ghost]:not(:disabled):hover{background-color:var(--pf-surface);color:var(--pf-fg)}.pf-section{box-sizing:border-box;gap:calc(var(--spacing) * 2);flex-direction:column;min-width:0;margin:0;display:flex}.pf-section:not(:first-child),.pf-section+.pf-field{border-style:var(--tw-border-style);border-width:0;border-top-style:var(--tw-border-style);--tw-border-style:solid;border-style:solid;border-top-width:1px;border-color:var(--pf-border);padding-top:calc(var(--spacing) * 4)}.pf-section-header{justify-content:space-between;align-items:center;gap:calc(var(--spacing) * 2);display:flex}.pf-section-title{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.pf-section-actions{align-items:center;gap:var(--spacing);display:flex}.pf-section-toggle{font:inherit;cursor:pointer;align-items:center;gap:calc(var(--spacing) * 1.5);border-radius:var(--radius-sm);border-style:var(--tw-border-style);color:var(--pf-fg);--tw-outline-style:none;background-color:#0000;border-width:0;outline-style:none;padding:0;display:inline-flex}.pf-section-toggle[data-focus]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);--tw-ring-color:var(--pf-ring)}@supports (color:color-mix(in lab, red, red)){.pf-section-toggle[data-focus]{--tw-ring-color:color-mix(in oklab, var(--pf-ring) 60%, transparent)}}.pf-section-toggle[data-focus]{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.pf-section-toggle .pf-chevron{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));rotate:-90deg}.pf-section-toggle[data-open] .pf-chevron{rotate:0deg}.pf-section-body,.pf-field-body{box-sizing:border-box;border-style:var(--tw-border-style);border-width:0;border-left-style:var(--tw-border-style);--tw-border-style:solid;border-style:solid;border-left-width:2px;border-color:var(--pf-border);padding-left:calc(var(--spacing) * 4);flex-direction:column;display:flex}.pf-section-body{gap:calc(var(--spacing) * 4)}.pf-section-body .pf-field-body{border-left-style:var(--tw-border-style);border-left-width:0;padding-left:0}}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}
@@ -0,0 +1,32 @@
1
+ import { s as e, t } from "./context-DSrebuNf.js";
2
+ import { useMemo as n } from "react";
3
+ import { jsx as r } from "react/jsx-runtime";
4
+ // lib/providers/ui.tsx
5
+ function i({ kit: i, renderers: a, resolve: o, messages: s, children: c }) {
6
+ let l = e(), u = n(() => ({
7
+ kit: {
8
+ ...l.kit,
9
+ ...i
10
+ },
11
+ renderers: {
12
+ ...l.renderers,
13
+ ...a
14
+ },
15
+ resolve: o ?? l.resolve,
16
+ messages: {
17
+ ...l.messages,
18
+ ...s
19
+ }
20
+ }), [
21
+ l,
22
+ i,
23
+ a,
24
+ o,
25
+ s
26
+ ]);
27
+ return /* @__PURE__ */ r(t.Provider, {
28
+ value: u,
29
+ children: c
30
+ });
31
+ }
32
+ export { i as t };
@@ -0,0 +1,10 @@
1
+ export declare const ANY_TYPE_NAME = "google.protobuf.Any";
2
+ /** Well-known types edited as a single value in a text box. */
3
+ export declare function isTextWellKnown(typeName: string): boolean;
4
+ /** Well-known types that hold arbitrary JSON. */
5
+ export declare function isJsonWellKnown(typeName: string): boolean;
6
+ /**
7
+ * Well-known types edited as a single value (a text box, JSON editor, or the
8
+ * wrapped scalar) rather than as a nested form.
9
+ */
10
+ export declare function isInlineWellKnown(typeName: string): boolean;
package/package.json CHANGED
@@ -1,6 +1,143 @@
1
1
  {
2
2
  "name": "@dtkt/protoform",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.1.0",
4
+ "description": "DataKit Protoform",
5
+ "license": "Apache-2.0",
6
+ "keywords": [
7
+ "datakit",
8
+ "dtkt",
9
+ "protobuf",
10
+ "protoform",
11
+ "react",
12
+ "forms"
13
+ ],
14
+ "homepage": "https://github.com/datakit-dev/protoform-es",
15
+ "bugs": {
16
+ "url": "https://github.com/datakit-dev/protoform-es/issues"
17
+ },
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "git+https://github.com/datakit-dev/protoform-es.git"
21
+ },
22
+ "type": "module",
23
+ "main": "./dist/main.js",
24
+ "module": "./dist/main.js",
25
+ "types": "./dist/main.d.ts",
26
+ "files": [
27
+ "dist"
28
+ ],
29
+ "sideEffects": [
30
+ "**/*.css"
31
+ ],
32
+ "exports": {
33
+ ".": {
34
+ "types": "./dist/main.d.ts",
35
+ "import": "./dist/main.js"
36
+ },
37
+ "./components": {
38
+ "types": "./dist/components/index.d.ts",
39
+ "import": "./dist/components/index.js"
40
+ },
41
+ "./providers": {
42
+ "types": "./dist/providers/index.d.ts",
43
+ "import": "./dist/providers/index.js"
44
+ },
45
+ "./kit": {
46
+ "types": "./dist/kit/index.d.ts",
47
+ "import": "./dist/kit/index.js"
48
+ },
49
+ "./kit/tailwind": {
50
+ "types": "./dist/kit/tailwind/index.d.ts",
51
+ "import": "./dist/kit/tailwind/index.js"
52
+ },
53
+ "./gen/*.js": {
54
+ "types": "./dist/gen/*.d.ts",
55
+ "import": "./dist/gen/*.js"
56
+ },
57
+ "./styles.css": "./dist/styles.css"
58
+ },
59
+ "scripts": {
60
+ "dev": "vite",
61
+ "build": "tsc -b && vite build && npm run build:css",
62
+ "build:css": "tailwindcss -i lib/styles/protoform.css -o dist/styles.css --minify",
63
+ "lint": "eslint .",
64
+ "test": "vitest run",
65
+ "test:watch": "vitest",
66
+ "test:coverage": "vitest run --coverage",
67
+ "clean": "rm -rf dist",
68
+ "gen": "buf generate",
69
+ "prepublishOnly": "npm run lint && npm test && npm run build"
70
+ },
71
+ "peerDependencies": {
72
+ "@bufbuild/protobuf": "^2.16.0",
73
+ "@bufbuild/protovalidate": "^1.3.0",
74
+ "@headlessui/react": "^2.0.0",
75
+ "react": "^18.0.0 || ^19.0.0",
76
+ "react-dom": "^18.0.0 || ^19.0.0"
77
+ },
78
+ "peerDependenciesMeta": {
79
+ "@headlessui/react": {
80
+ "optional": true
81
+ }
82
+ },
83
+ "devDependencies": {
84
+ "@babel/core": "^7.29.7",
85
+ "@buf/datakit-dev_dtkt-sdk.bufbuild_es": "^2.16.0-20261027090458-7143679e943c.1",
86
+ "@bufbuild/protobuf": "^2.16.0",
87
+ "@bufbuild/protovalidate": "^1.3.0",
88
+ "@eslint/js": "^10.0.1",
89
+ "@headlessui/react": "^2.2.10",
90
+ "@rolldown/plugin-babel": "^0.2.4",
91
+ "@tailwindcss/cli": "^4.3.3",
92
+ "@tailwindcss/vite": "^4.3.3",
93
+ "@testing-library/dom": "^10.4.2",
94
+ "@testing-library/react": "^16.3.3",
95
+ "@testing-library/user-event": "^14.6.8",
96
+ "@types/babel__core": "^7.20.5",
97
+ "@types/node": "^24.19.2",
98
+ "@types/react": "^19.3.0",
99
+ "@types/react-dom": "^19.3.0",
100
+ "@vitejs/plugin-react": "^6.1.2",
101
+ "@vitest/coverage-v8": "^5.0.5",
102
+ "babel-plugin-react-compiler": "^1.0.0",
103
+ "eslint": "^10.13.0",
104
+ "eslint-plugin-react-hooks": "^7.1.1",
105
+ "eslint-plugin-react-refresh": "^0.5.7",
106
+ "globals": "^17.13.0",
107
+ "jsdom": "^29.1.1",
108
+ "react": "^19.3.1",
109
+ "react-dom": "^19.3.1",
110
+ "tailwindcss": "^4.3.3",
111
+ "typescript": "~6.0.3",
112
+ "typescript-eslint": "^8.71.2",
113
+ "vite": "^8.3.5",
114
+ "vite-plugin-dts": "^5.1.2",
115
+ "vitest": "^5.0.5"
116
+ },
117
+ "dependencies": {
118
+ "@connectrpc/connect": "^2.2.0",
119
+ "@connectrpc/connect-web": "^2.2.0"
120
+ },
121
+ "typesVersions": {
122
+ "*": {
123
+ "components": [
124
+ "./dist/components/index.d.ts"
125
+ ],
126
+ "providers": [
127
+ "./dist/providers/index.d.ts"
128
+ ],
129
+ "kit": [
130
+ "./dist/kit/index.d.ts"
131
+ ],
132
+ "kit/tailwind": [
133
+ "./dist/kit/tailwind/index.d.ts"
134
+ ],
135
+ "gen/*.js": [
136
+ "./dist/gen/*.d.ts"
137
+ ]
138
+ }
139
+ },
140
+ "publishConfig": {
141
+ "access": "public"
142
+ }
143
+ }