@nswds/app 1.25.1 → 1.26.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.
package/dist/index.cjs CHANGED
@@ -38,6 +38,7 @@ var DialogPrimitive = require('@radix-ui/react-dialog');
38
38
  var ContextMenuPrimitive = require('@radix-ui/react-context-menu');
39
39
  var vaul = require('vaul');
40
40
  var SeparatorPrimitive = require('@radix-ui/react-separator');
41
+ var reactHookForm = require('react-hook-form');
41
42
  var ToggleGroupPrimitive = require('@radix-ui/react-toggle-group');
42
43
  var TogglePrimitive = require('@radix-ui/react-toggle');
43
44
  var MenubarPrimitive = require('@radix-ui/react-menubar');
@@ -7164,6 +7165,92 @@ function Footer({
7164
7165
  /* @__PURE__ */ jsxRuntime.jsx(FooterSmallPrint, { department, socialLinks })
7165
7166
  ] });
7166
7167
  }
7168
+ var Form = reactHookForm.FormProvider;
7169
+ var FormFieldContext = React6__namespace.createContext({});
7170
+ var FormField = ({
7171
+ ...props
7172
+ }) => {
7173
+ return /* @__PURE__ */ jsxRuntime.jsx(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsxRuntime.jsx(reactHookForm.Controller, { ...props }) });
7174
+ };
7175
+ var useFormField = () => {
7176
+ const fieldContext = React6__namespace.useContext(FormFieldContext);
7177
+ const itemContext = React6__namespace.useContext(FormItemContext);
7178
+ const { getFieldState } = reactHookForm.useFormContext();
7179
+ const formState = reactHookForm.useFormState({ name: fieldContext.name });
7180
+ const fieldState = getFieldState(fieldContext.name, formState);
7181
+ if (!fieldContext) {
7182
+ throw new Error("useFormField should be used within <FormField>");
7183
+ }
7184
+ const { id } = itemContext;
7185
+ return {
7186
+ id,
7187
+ name: fieldContext.name,
7188
+ formItemId: `${id}-form-item`,
7189
+ formDescriptionId: `${id}-form-item-description`,
7190
+ formMessageId: `${id}-form-item-message`,
7191
+ ...fieldState
7192
+ };
7193
+ };
7194
+ var FormItemContext = React6__namespace.createContext({});
7195
+ function FormItem({ className, ...props }) {
7196
+ const id = React6__namespace.useId();
7197
+ return /* @__PURE__ */ jsxRuntime.jsx(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsxRuntime.jsx("div", { "data-slot": "form-item", className: cn("grid gap-2", className), ...props }) });
7198
+ }
7199
+ function FormLabel({ className, ...props }) {
7200
+ const { error, formItemId } = useFormField();
7201
+ return /* @__PURE__ */ jsxRuntime.jsx(
7202
+ Label3,
7203
+ {
7204
+ "data-slot": "form-label",
7205
+ "data-error": !!error,
7206
+ className: cn("data-[error=true]:text-destructive", className),
7207
+ htmlFor: formItemId,
7208
+ ...props
7209
+ }
7210
+ );
7211
+ }
7212
+ function FormControl({ ...props }) {
7213
+ const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
7214
+ return /* @__PURE__ */ jsxRuntime.jsx(
7215
+ reactSlot.Slot,
7216
+ {
7217
+ "data-slot": "form-control",
7218
+ id: formItemId,
7219
+ "aria-describedby": !error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`,
7220
+ "aria-invalid": !!error,
7221
+ ...props
7222
+ }
7223
+ );
7224
+ }
7225
+ function FormDescription({ className, ...props }) {
7226
+ const { formDescriptionId } = useFormField();
7227
+ return /* @__PURE__ */ jsxRuntime.jsx(
7228
+ "p",
7229
+ {
7230
+ "data-slot": "form-description",
7231
+ id: formDescriptionId,
7232
+ className: cn("text-muted-foreground text-sm", className),
7233
+ ...props
7234
+ }
7235
+ );
7236
+ }
7237
+ function FormMessage({ className, ...props }) {
7238
+ const { error, formMessageId } = useFormField();
7239
+ const body = error ? String(error?.message ?? "") : props.children;
7240
+ if (!body) {
7241
+ return null;
7242
+ }
7243
+ return /* @__PURE__ */ jsxRuntime.jsx(
7244
+ "p",
7245
+ {
7246
+ "data-slot": "form-message",
7247
+ id: formMessageId,
7248
+ className: cn("text-destructive text-sm", className),
7249
+ ...props,
7250
+ children: body
7251
+ }
7252
+ );
7253
+ }
7167
7254
  var styles3 = {
7168
7255
  base: [
7169
7256
  // Base
@@ -7365,7 +7452,7 @@ function Heading({
7365
7452
 
7366
7453
  // package.json
7367
7454
  var package_default = {
7368
- version: "1.24.0"};
7455
+ version: "1.25.0"};
7369
7456
  function Logo(props) {
7370
7457
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
7371
7458
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "NSW Government" }),
@@ -9234,6 +9321,13 @@ exports.FooterAcknowledgement = FooterAcknowledgement;
9234
9321
  exports.FooterLegalLinks = FooterLegalLinks;
9235
9322
  exports.FooterSmallPrint = FooterSmallPrint;
9236
9323
  exports.FooterSocialLink = FooterSocialLink;
9324
+ exports.Form = Form;
9325
+ exports.FormControl = FormControl;
9326
+ exports.FormDescription = FormDescription;
9327
+ exports.FormField = FormField;
9328
+ exports.FormItem = FormItem;
9329
+ exports.FormLabel = FormLabel;
9330
+ exports.FormMessage = FormMessage;
9237
9331
  exports.FormatToggle = FormatToggle;
9238
9332
  exports.GenerateInterpolatedColors = GenerateInterpolatedColors;
9239
9333
  exports.Header = Header2;
@@ -9388,6 +9482,7 @@ exports.themeIndices = themeIndices;
9388
9482
  exports.themeTokens = themeTokens;
9389
9483
  exports.toggleVariants = toggleVariants;
9390
9484
  exports.truncate = truncate;
9485
+ exports.useFormField = useFormField;
9391
9486
  exports.useToc = useToc;
9392
9487
  //# sourceMappingURL=index.cjs.map
9393
9488
  //# sourceMappingURL=index.cjs.map