@cyclone-ui/helpers 0.3.15 → 0.3.17

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/CHANGELOG.md CHANGED
@@ -2,6 +2,19 @@
2
2
 
3
3
  # Changelog for Cyclone UI - Helpers
4
4
 
5
+ ## [0.3.17](https://github.com/storm-software/cyclone-ui/releases/tag/helpers%400.3.17) (10/14/2026)
6
+
7
+ ### Features
8
+
9
+ - **data-table:** Added `card` theme to Data Table component ([74202899](https://github.com/storm-software/cyclone-ui/commit/74202899))
10
+
11
+ ## [0.3.16](https://github.com/storm-software/cyclone-ui/releases/tag/helpers%400.3.16) (10/13/2026)
12
+
13
+ ### Bug Fixes
14
+
15
+ - **monorepo:** Clean up of various components and tokens ([08a494ad](https://github.com/storm-software/cyclone-ui/commit/08a494ad))
16
+ - **tokens:** Further updates to token structure for improved theme customizations ([c694f50b](https://github.com/storm-software/cyclone-ui/commit/c694f50b))
17
+
5
18
  ## [0.3.15](https://github.com/storm-software/cyclone-ui/releases/tag/helpers%400.3.15) (10/12/2026)
6
19
 
7
20
  ### Bug Fixes
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./form-size.cjs"),t=require("./get-sized.cjs");let n=require("@tamagui/core"),r=require("react"),i=require("react/jsx-runtime");const a=(0,r.createContext)(void 0),o=()=>(0,r.use)(a),s=e=>{let t=o()?.setLabelDefaults;(0,r.useLayoutEffect)(()=>{if(t)return t(e),()=>t(void 0)},[e,t])},c=e=>{let t=o()?.setControlOptions;(0,r.useLayoutEffect)(()=>{if(t)return t(e),()=>t(void 0)},[e,t])},l=Symbol(`field-placeholder-unset`),u=(e=l)=>{let t=o(),n=t?.setHasPlaceholder,i=e===l?l:!!e;return(0,r.useLayoutEffect)(()=>{if(i!==l&&n)return n(i),()=>n(!1)},[i,n]),t?.variant??`outlined`},d=()=>o()?.hasStartIcon??!1,f=()=>o()?.hasValidationMessage??!1,p=()=>{let e=o();return e?.labelVariant===`floating`?e.variant===`outlined`?`border`:`inset`:void 0},m=(t,n)=>t?t===`border`?3:13*e.getFormSizeScale(n):0,h=e=>e!=null&&e!==``,g=e=>{let t=o();return t?.labelVariant!==`floating`||!h(e)&&!!t.focused},_=e=>{let t=o();return(e??t?.labelVariant)===`floating`&&(h(t?.formattedValue)||!!t?.focused)},v=()=>{let e=o(),t=e?.disabled,n=e?.focused,r=e?.theme,i=(!r||r===`base`)&&!e?.hasValidationMessage,a=t?i?`hairlineDisabled`:`primaryDisabled`:i?n?`hairlineActive`:`hairline`:n?`primaryActive`:`primary`,s=t?i?`hairlineDisabled`:`primaryDisabled`:i?`hairlineActive`:`primaryActive`;return{iconColor:e?.hovered?s:a,hoverIconColor:s,isNeutral:i}},y=(0,n.styled)(n.View,{displayName:`FieldNotchedOutline`,render:`fieldset`,transition:`200ms`,position:`absolute`,top:0,right:0,bottom:0,left:0,margin:0,padding:0,minWidth:0,borderWidth:1,borderStyle:`solid`,borderRadius:`control`,pointerEvents:`none`}),b=(0,n.styled)(n.View,{displayName:`FieldNotchedOutline`,render:`legend`,transition:`100ms`,height:0,padding:0,overflow:`hidden`}),x=(0,n.createStyledHOC)(y,(a,s)=>{let c=o(),l=c?.labelContentRef,u=c?.labelVariant,d=c?.size,f=_(u),p=(0,r.useRef)(null),m=(0,n.useComposedRefs)(s,p),[h,g]=(0,r.useState)();(0,r.useLayoutEffect)(()=>{let e=p.current,t=l?.current;if(!e||!t)return;let n=()=>{let n=t.getBoundingClientRect().left-e.getBoundingClientRect().left,r=t.getBoundingClientRect().width;g(e=>e?.left===n&&e.width===r?e:{left:n,width:r})};if(n(),typeof ResizeObserver>`u`)return;let r=new ResizeObserver(n);return r.observe(e),r.observe(t),()=>r.disconnect()},[l,u]);let v=t.getSpaced(`sm`)*e.getFormSizeScale(d);return/* @__PURE__ */ (0,i.jsx)(y,{ref:m,"aria-hidden":!0,...a,children:/* @__PURE__ */ (0,i.jsx)(b,{marginLeft:Math.max(0,(h?.left??0)-v),width:f&&h?h.width+v*2:0})})},{displayName:`FieldNotchedOutline`});exports.FieldNotchedOutline=x,exports.FormControlContext=a,exports.getFieldLabelInset=m,exports.useFieldHasStartIcon=d,exports.useFieldHasValidationMessage=f,exports.useFieldIconColor=v,exports.useFieldLabelDefaults=s,exports.useFieldLabelFloated=_,exports.useFieldLabelPlacement=p,exports.useFieldOptions=c,exports.useFieldShouldShowPlaceholder=g,exports.useFieldVariant=u,exports.useFormControl=o;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./form-size.cjs"),t=require("./get-sized.cjs");let n=require("@tamagui/core"),r=require("react"),i=require("react/jsx-runtime");const a=(0,r.createContext)(void 0),o=()=>(0,r.use)(a),s=e=>{let t=o()?.setLabelDefaults;(0,r.useLayoutEffect)(()=>{if(t)return t(e),()=>t(void 0)},[e,t])},c=e=>{let t=o()?.setControlOptions;(0,r.useLayoutEffect)(()=>{if(t)return t(e),()=>t(void 0)},[e,t])},l=Symbol(`field-placeholder-unset`),u=(e=l)=>{let t=o(),n=t?.setHasPlaceholder,i=e===l?l:!!e;return(0,r.useLayoutEffect)(()=>{if(i!==l&&n)return n(i),()=>n(!1)},[i,n]),t?.variant??`outlined`},d=()=>o()?.hasStartIcon??!1,f=()=>o()?.hasValidationMessage??!1,p=()=>{let e=o();return e?.labelVariant===`floating`?e.variant===`outlined`?`border`:`inset`:void 0},m=(t,n)=>t?t===`border`?3:13*e.getFormSizeScale(n):0,h=e=>e!=null&&e!==``,g=e=>{let t=o();return t?.labelVariant!==`floating`||!h(e)&&!!t.focused},_=e=>{let t=o();return(e??t?.labelVariant)===`floating`&&(h(t?.formattedValue)||!!t?.focused)},v=()=>{let e=o(),t=e?.disabled,n=e?.focused,r=e?.theme,i=(!r||r===`base`)&&!e?.hasValidationMessage,a=e?.hasValidationMessage,s=a?`primary`:`outline`,c=a?`primaryActive`:`outlineActive`,l=a?`primaryHovered`:`outlineHovered`,u=a?`primaryDisabled`:`outlineDisabled`;return{iconColor:t?u:n?c:s,hoverIconColor:t?u:n?c:l,isNeutral:i}},y=(0,n.styled)(n.View,{displayName:`FieldNotchedOutline`,render:`fieldset`,transition:`200ms`,position:`absolute`,top:0,right:0,bottom:0,left:0,margin:0,padding:0,minWidth:0,borderWidth:1,borderStyle:`solid`,borderRadius:`control`,pointerEvents:`none`}),b=(0,n.styled)(n.View,{displayName:`FieldNotchedOutline`,render:`legend`,transition:`100ms`,height:0,padding:0,overflow:`hidden`}),x=(0,n.createStyledHOC)(y,(a,s)=>{let c=o(),l=c?.labelContentRef,u=c?.labelVariant,d=c?.size,f=_(u),p=(0,r.useRef)(null),m=(0,n.useComposedRefs)(s,p),[h,g]=(0,r.useState)();(0,r.useLayoutEffect)(()=>{let e=p.current,t=l?.current;if(!e||!t)return;let n=()=>{let n=t.getBoundingClientRect().left-e.getBoundingClientRect().left,r=t.getBoundingClientRect().width;g(e=>e?.left===n&&e.width===r?e:{left:n,width:r})};if(n(),typeof ResizeObserver>`u`)return;let r=new ResizeObserver(n);return r.observe(e),r.observe(t),()=>r.disconnect()},[l,u]);let v=t.getSpaced(`sm`)*e.getFormSizeScale(d);return/* @__PURE__ */ (0,i.jsx)(y,{ref:m,"aria-hidden":!0,...a,children:/* @__PURE__ */ (0,i.jsx)(b,{marginLeft:Math.max(0,(h?.left??0)-v),width:f&&h?h.width+v*2:0})})},{displayName:`FieldNotchedOutline`});exports.FieldNotchedOutline=x,exports.FormControlContext=a,exports.getFieldLabelInset=m,exports.useFieldHasStartIcon=d,exports.useFieldHasValidationMessage=f,exports.useFieldIconColor=v,exports.useFieldLabelDefaults=s,exports.useFieldLabelFloated=_,exports.useFieldLabelPlacement=p,exports.useFieldOptions=c,exports.useFieldShouldShowPlaceholder=g,exports.useFieldVariant=u,exports.useFormControl=o;
@@ -1,7 +1,7 @@
1
1
  import { FormControlSize } from "./form-size.cjs";
2
2
  import { SelectOption } from "@stryke/types/form";
3
3
  import { ValidationDetail } from "@stryke/types/validations";
4
- import { TamaguiWebElement } from "@tamagui/core";
4
+ import { FontFamilyTokens, TamaguiWebElement } from "@tamagui/core";
5
5
  import { ReactNode, Ref, RefObject } from "react";
6
6
  //#region src/form-control.d.ts
7
7
  /**
@@ -46,8 +46,6 @@ interface FormControlState {
46
46
  disabled?: boolean;
47
47
  required?: boolean;
48
48
  focused?: boolean;
49
- /** Whether the pointer is over the field (mirrors `group-hover/field`). */
50
- hovered?: boolean;
51
49
  clearable?: boolean;
52
50
  hasValidationMessage: boolean;
53
51
  /** Ref the control attaches to its native input (applies masking). */
@@ -66,11 +64,6 @@ interface FormControlState {
66
64
  * box style control to render at its end.
67
65
  */
68
66
  endAdornment?: ReactNode;
69
- /**
70
- * The field's status icon (validation, disabled), as `Field.ThemeIcon`
71
- * renders it, for controls that show it beside an item.
72
- */
73
- statusIcon?: ReactNode;
74
67
  variant: FieldVariant;
75
68
  labelVariant: FieldLabelVariant | undefined;
76
69
  /** How the field's control prefers its label (see {@link useFieldLabelDefaults}). */
@@ -108,6 +101,8 @@ interface FieldLabelDefaults {
108
101
  } | {
109
102
  alignContent?: "center";
110
103
  };
104
+ /** The font of an `inline` label, such as a smaller one for a small control. */
105
+ inlineFontFamily?: FontFamilyTokens;
111
106
  /**
112
107
  * Where a floating label rests, for a control with leading content other
113
108
  * than a `Field.Icon` (such as a country code trigger).
@@ -178,9 +173,10 @@ declare const useFieldShouldShowPlaceholder: (value: unknown) => boolean;
178
173
  declare const useFieldLabelFloated: (labelVariant?: FieldLabelVariant) => boolean;
179
174
  /**
180
175
  * Resolves the color tokens used by field icons (and their dividers): `primary`
181
- * when the field has a non-base theme or a validation message, otherwise
182
- * `hairline`. `iconColor` is a single theme key so it can be passed directly
183
- * to Tamagui v3 icons, which do not resolve flat `group-hover/` values.
176
+ * when the field has a validation message, otherwise `outline`, matching the
177
+ * field border. Pair `iconColor` with `group-hover/field:${hoverIconColor}` on
178
+ * an element whose CSS color the icon inherits through `currentColor`, since
179
+ * Tamagui v3 icons do not resolve flat `group-hover/` values.
184
180
  */
185
181
  declare const useFieldIconColor: () => {
186
182
  iconColor: string;
@@ -1 +1 @@
1
- {"version":3,"file":"form-control.d.cts","names":[],"sources":["../src/form-control.tsx"],"mappings":";;;;;;;;;KA+BY;;;;;KAMA;;;;;;KAOA;;;;;;;;;;;;UAaK;;EAEf;;EAGA;;EAGA;;EAGA;;EAGA,QAAQ;EAER,OAAO;EACP;EACA;EACA;EACA;;EAEA;EACA;EACA;;EAGA,WAAW;;EAGX,YAAY;EACZ;EACA;;;;;EAMA,cAAc,cAAc,UAAU;;;;;EAMtC,eAAe;;;;;EAMf,aAAa;EAEb,SAAS;EACT,cAAc;;EAGd,eAAe;EACf,mBAAmB,eAAe;;EAGlC,oBAAoB,SAAS;EAC7B;EACA;EACA;EACA,iBAAiB,UAAU;EAC3B,kBAAkB,cAAc;EAChC,oBAAoB;EACpB;EACA;;cAGW,oCAAkB,QAAA;;;;cAOlB,sBAAc;;;;UAKV;;EAEf,UAAU;;;;;;EAOV;IAAW;;IAA4B;;;;;;EAMvC;;;;;;;cAQW,wBAAyB,eAAe;;;;;UAkBpC;;EAEf,YAAY;;EAGZ,WAAW;;;;;;;;;cAUA,kBAAmB,SAAS;;;;;cAoB5B,kBACX,0BACC;;;;;cAyBU;cAGA;;;;;cAOA,8BAA6B;;;;;;;;;;cAmB7B,qBACX,WAAW,iCACX,OAAO;;;;;cAWI,gCAAiC;;;;;;;cAejC,uBACX,eAAe;;;;;;;cAiBJ;;;;;;;;;;;;;;;cAyEA,6CAAmB,yCAAA,mCAAA,gBAAA,6BAAA,0DAAA,+CAAA,8BAAA,6BAAA,qCAAA,6BAAA,gBAAA,6BAAA,kDAAA,oDAAA,uCAAA,wCAAA,gDAAA,qDAAA,gBAAA,uCAAA,+CAAA,qDAAA"}
1
+ {"version":3,"file":"form-control.d.cts","names":[],"sources":["../src/form-control.tsx"],"mappings":";;;;;;;;;KAmCY;;;;;KAMA;;;;;;KAOA;;;;;;;;;;;;UAaK;;EAEf;;EAGA;;EAGA;;EAGA;;EAGA,QAAQ;EAER,OAAO;EACP;EACA;EACA;EACA;EACA;EACA;;EAGA,WAAW;;EAGX,YAAY;EACZ;EACA;;;;;EAMA,cAAc,cAAc,UAAU;;;;;EAMtC,eAAe;EAEf,SAAS;EACT,cAAc;;EAGd,eAAe;EACf,mBAAmB,eAAe;;EAGlC,oBAAoB,SAAS;EAC7B;EACA;EACA;EACA,iBAAiB,UAAU;EAC3B,kBAAkB,cAAc;EAChC,oBAAoB;EACpB;EACA;;cAGW,oCAAkB,QAAA;;;;cAOlB,sBAAc;;;;UAKV;;EAEf,UAAU;;;;;;EAOV;IAAW;;IAA4B;;;EAGvC,mBAAmB;;;;;EAMnB;;;;;;;cAQW,wBAAyB,eAAe;;;;;UAkBpC;;EAEf,YAAY;;EAGZ,WAAW;;;;;;;;;cAUA,kBAAmB,SAAS;;;;;cAoB5B,kBACX,0BACC;;;;;cAyBU;cAGA;;;;;cAOA,8BAA6B;;;;;;;;;;cAmB7B,qBACX,WAAW,iCACX,OAAO;;;;;cAWI,gCAAiC;;;;;;;cAejC,uBACX,eAAe;;;;;;;;cAkBJ;;;;;;;;;;;;;;;cA4DA,6CAAmB,yCAAA,mCAAA,gBAAA,6BAAA,0DAAA,+CAAA,8BAAA,6BAAA,qCAAA,6BAAA,gBAAA,6BAAA,kDAAA,oDAAA,uCAAA,wCAAA,gDAAA,qDAAA,gBAAA,uCAAA,+CAAA,qDAAA"}
@@ -1,5 +1,5 @@
1
1
  import { FormControlSize } from "./form-size.mjs";
2
- import { TamaguiWebElement } from "@tamagui/core";
2
+ import { FontFamilyTokens, TamaguiWebElement } from "@tamagui/core";
3
3
  import { ReactNode, Ref, RefObject } from "react";
4
4
  import { SelectOption } from "@stryke/types/form";
5
5
  import { ValidationDetail } from "@stryke/types/validations";
@@ -46,8 +46,6 @@ interface FormControlState {
46
46
  disabled?: boolean;
47
47
  required?: boolean;
48
48
  focused?: boolean;
49
- /** Whether the pointer is over the field (mirrors `group-hover/field`). */
50
- hovered?: boolean;
51
49
  clearable?: boolean;
52
50
  hasValidationMessage: boolean;
53
51
  /** Ref the control attaches to its native input (applies masking). */
@@ -66,11 +64,6 @@ interface FormControlState {
66
64
  * box style control to render at its end.
67
65
  */
68
66
  endAdornment?: ReactNode;
69
- /**
70
- * The field's status icon (validation, disabled), as `Field.ThemeIcon`
71
- * renders it, for controls that show it beside an item.
72
- */
73
- statusIcon?: ReactNode;
74
67
  variant: FieldVariant;
75
68
  labelVariant: FieldLabelVariant | undefined;
76
69
  /** How the field's control prefers its label (see {@link useFieldLabelDefaults}). */
@@ -108,6 +101,8 @@ interface FieldLabelDefaults {
108
101
  } | {
109
102
  alignContent?: "center";
110
103
  };
104
+ /** The font of an `inline` label, such as a smaller one for a small control. */
105
+ inlineFontFamily?: FontFamilyTokens;
111
106
  /**
112
107
  * Where a floating label rests, for a control with leading content other
113
108
  * than a `Field.Icon` (such as a country code trigger).
@@ -178,9 +173,10 @@ declare const useFieldShouldShowPlaceholder: (value: unknown) => boolean;
178
173
  declare const useFieldLabelFloated: (labelVariant?: FieldLabelVariant) => boolean;
179
174
  /**
180
175
  * Resolves the color tokens used by field icons (and their dividers): `primary`
181
- * when the field has a non-base theme or a validation message, otherwise
182
- * `hairline`. `iconColor` is a single theme key so it can be passed directly
183
- * to Tamagui v3 icons, which do not resolve flat `group-hover/` values.
176
+ * when the field has a validation message, otherwise `outline`, matching the
177
+ * field border. Pair `iconColor` with `group-hover/field:${hoverIconColor}` on
178
+ * an element whose CSS color the icon inherits through `currentColor`, since
179
+ * Tamagui v3 icons do not resolve flat `group-hover/` values.
184
180
  */
185
181
  declare const useFieldIconColor: () => {
186
182
  iconColor: string;
@@ -1,2 +1,2 @@
1
- import{getFormSizeScale as e}from"./form-size.mjs";import{getSpaced as t}from"./get-sized.mjs";import{View as n,createStyledHOC as r,styled as i,useComposedRefs as a}from"@tamagui/core";import{createContext as o,use as s,useLayoutEffect as c,useRef as l,useState as u}from"react";import{jsx as d}from"react/jsx-runtime";const f=o(void 0),p=()=>s(f),m=e=>{let t=p()?.setLabelDefaults;c(()=>{if(t)return t(e),()=>t(void 0)},[e,t])},h=e=>{let t=p()?.setControlOptions;c(()=>{if(t)return t(e),()=>t(void 0)},[e,t])},g=Symbol(`field-placeholder-unset`),_=(e=g)=>{let t=p(),n=t?.setHasPlaceholder,r=e===g?g:!!e;return c(()=>{if(r!==g&&n)return n(r),()=>n(!1)},[r,n]),t?.variant??`outlined`},v=()=>p()?.hasStartIcon??!1,y=()=>p()?.hasValidationMessage??!1,b=()=>{let e=p();return e?.labelVariant===`floating`?e.variant===`outlined`?`border`:`inset`:void 0},x=(t,n)=>t?t===`border`?3:13*e(n):0,S=e=>e!=null&&e!==``,C=e=>{let t=p();return t?.labelVariant!==`floating`||!S(e)&&!!t.focused},w=e=>{let t=p();return(e??t?.labelVariant)===`floating`&&(S(t?.formattedValue)||!!t?.focused)},T=()=>{let e=p(),t=e?.disabled,n=e?.focused,r=e?.theme,i=(!r||r===`base`)&&!e?.hasValidationMessage,a=t?i?`hairlineDisabled`:`primaryDisabled`:i?n?`hairlineActive`:`hairline`:n?`primaryActive`:`primary`,o=t?i?`hairlineDisabled`:`primaryDisabled`:i?`hairlineActive`:`primaryActive`;return{iconColor:e?.hovered?o:a,hoverIconColor:o,isNeutral:i}},E=i(n,{displayName:`FieldNotchedOutline`,render:`fieldset`,transition:`200ms`,position:`absolute`,top:0,right:0,bottom:0,left:0,margin:0,padding:0,minWidth:0,borderWidth:1,borderStyle:`solid`,borderRadius:`control`,pointerEvents:`none`}),D=i(n,{displayName:`FieldNotchedOutline`,render:`legend`,transition:`100ms`,height:0,padding:0,overflow:`hidden`}),O=r(E,(n,r)=>{let i=p(),o=i?.labelContentRef,s=i?.labelVariant,f=i?.size,m=w(s),h=l(null),g=a(r,h),[_,v]=u();c(()=>{let e=h.current,t=o?.current;if(!e||!t)return;let n=()=>{let n=t.getBoundingClientRect().left-e.getBoundingClientRect().left,r=t.getBoundingClientRect().width;v(e=>e?.left===n&&e.width===r?e:{left:n,width:r})};if(n(),typeof ResizeObserver>`u`)return;let r=new ResizeObserver(n);return r.observe(e),r.observe(t),()=>r.disconnect()},[o,s]);let y=t(`sm`)*e(f);return/* @__PURE__ */ d(E,{ref:g,"aria-hidden":!0,...n,children:/* @__PURE__ */ d(D,{marginLeft:Math.max(0,(_?.left??0)-y),width:m&&_?_.width+y*2:0})})},{displayName:`FieldNotchedOutline`});export{O as FieldNotchedOutline,f as FormControlContext,x as getFieldLabelInset,v as useFieldHasStartIcon,y as useFieldHasValidationMessage,T as useFieldIconColor,m as useFieldLabelDefaults,w as useFieldLabelFloated,b as useFieldLabelPlacement,h as useFieldOptions,C as useFieldShouldShowPlaceholder,_ as useFieldVariant,p as useFormControl};
1
+ import{getFormSizeScale as e}from"./form-size.mjs";import{getSpaced as t}from"./get-sized.mjs";import{View as n,createStyledHOC as r,styled as i,useComposedRefs as a}from"@tamagui/core";import{createContext as o,use as s,useLayoutEffect as c,useRef as l,useState as u}from"react";import{jsx as d}from"react/jsx-runtime";const f=o(void 0),p=()=>s(f),m=e=>{let t=p()?.setLabelDefaults;c(()=>{if(t)return t(e),()=>t(void 0)},[e,t])},h=e=>{let t=p()?.setControlOptions;c(()=>{if(t)return t(e),()=>t(void 0)},[e,t])},g=Symbol(`field-placeholder-unset`),_=(e=g)=>{let t=p(),n=t?.setHasPlaceholder,r=e===g?g:!!e;return c(()=>{if(r!==g&&n)return n(r),()=>n(!1)},[r,n]),t?.variant??`outlined`},v=()=>p()?.hasStartIcon??!1,y=()=>p()?.hasValidationMessage??!1,b=()=>{let e=p();return e?.labelVariant===`floating`?e.variant===`outlined`?`border`:`inset`:void 0},x=(t,n)=>t?t===`border`?3:13*e(n):0,S=e=>e!=null&&e!==``,C=e=>{let t=p();return t?.labelVariant!==`floating`||!S(e)&&!!t.focused},w=e=>{let t=p();return(e??t?.labelVariant)===`floating`&&(S(t?.formattedValue)||!!t?.focused)},T=()=>{let e=p(),t=e?.disabled,n=e?.focused,r=e?.theme,i=(!r||r===`base`)&&!e?.hasValidationMessage,a=e?.hasValidationMessage,o=a?`primary`:`outline`,s=a?`primaryActive`:`outlineActive`,c=a?`primaryHovered`:`outlineHovered`,l=a?`primaryDisabled`:`outlineDisabled`;return{iconColor:t?l:n?s:o,hoverIconColor:t?l:n?s:c,isNeutral:i}},E=i(n,{displayName:`FieldNotchedOutline`,render:`fieldset`,transition:`200ms`,position:`absolute`,top:0,right:0,bottom:0,left:0,margin:0,padding:0,minWidth:0,borderWidth:1,borderStyle:`solid`,borderRadius:`control`,pointerEvents:`none`}),D=i(n,{displayName:`FieldNotchedOutline`,render:`legend`,transition:`100ms`,height:0,padding:0,overflow:`hidden`}),O=r(E,(n,r)=>{let i=p(),o=i?.labelContentRef,s=i?.labelVariant,f=i?.size,m=w(s),h=l(null),g=a(r,h),[_,v]=u();c(()=>{let e=h.current,t=o?.current;if(!e||!t)return;let n=()=>{let n=t.getBoundingClientRect().left-e.getBoundingClientRect().left,r=t.getBoundingClientRect().width;v(e=>e?.left===n&&e.width===r?e:{left:n,width:r})};if(n(),typeof ResizeObserver>`u`)return;let r=new ResizeObserver(n);return r.observe(e),r.observe(t),()=>r.disconnect()},[o,s]);let y=t(`sm`)*e(f);return/* @__PURE__ */ d(E,{ref:g,"aria-hidden":!0,...n,children:/* @__PURE__ */ d(D,{marginLeft:Math.max(0,(_?.left??0)-y),width:m&&_?_.width+y*2:0})})},{displayName:`FieldNotchedOutline`});export{O as FieldNotchedOutline,f as FormControlContext,x as getFieldLabelInset,v as useFieldHasStartIcon,y as useFieldHasValidationMessage,T as useFieldIconColor,m as useFieldLabelDefaults,w as useFieldLabelFloated,b as useFieldLabelPlacement,h as useFieldOptions,C as useFieldShouldShowPlaceholder,_ as useFieldVariant,p as useFormControl};
2
2
  //# sourceMappingURL=form-control.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"form-control.mjs","names":["FormControlContext","createContext","useFormControl","use","useFieldLabelDefaults","setLabelDefaults","useLayoutEffect","labelDefaults","useFieldOptions","setControlOptions","options","FIELD_PLACEHOLDER_UNSET","useFieldVariant","formControl","setHasPlaceholder","hasPlaceholder","placeholder","useFieldHasStartIcon","useFieldHasValidationMessage","useFieldLabelPlacement","getFieldLabelInset","placement","getFormSizeScale","size","hasFieldValue","value","useFieldShouldShowPlaceholder","useFieldLabelFloated","labelVariant","useFieldIconColor","disabled","focused","theme","isNeutral","iconColor","hoverIconColor","FieldNotchedOutlineFrame","styled","View","FieldNotchedOutlineLegend","FieldNotchedOutline","createStyledHOC","labelContentRef","floating","outlineRef","useRef","composedRef","useComposedRefs","forwardedRef","notch","setNotch","useState","outline","label","update","left","width","current","resizeObserver","gap","getSpaced","props"],"sources":[],"mappings":""}
1
+ {"version":3,"file":"form-control.mjs","names":["FormControlContext","createContext","useFormControl","use","useFieldLabelDefaults","setLabelDefaults","useLayoutEffect","labelDefaults","useFieldOptions","setControlOptions","options","FIELD_PLACEHOLDER_UNSET","useFieldVariant","formControl","setHasPlaceholder","hasPlaceholder","placeholder","useFieldHasStartIcon","useFieldHasValidationMessage","useFieldLabelPlacement","getFieldLabelInset","placement","getFormSizeScale","size","hasFieldValue","value","useFieldShouldShowPlaceholder","useFieldLabelFloated","labelVariant","useFieldIconColor","disabled","focused","theme","isNeutral","validated","restColor","focusColor","hoverColor","disabledColor","FieldNotchedOutlineFrame","styled","View","FieldNotchedOutlineLegend","FieldNotchedOutline","createStyledHOC","labelContentRef","floating","outlineRef","useRef","composedRef","useComposedRefs","forwardedRef","notch","setNotch","useState","outline","label","update","left","width","current","resizeObserver","gap","getSpaced","props"],"sources":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cyclone-ui/helpers",
3
- "version": "0.3.15",
3
+ "version": "0.3.17",
4
4
  "private": false,
5
5
  "description": "A repository containing the core front-end components used by Storm Software across many platforms",
6
6
  "repository": {
@@ -185,5 +185,5 @@
185
185
  "publishConfig": { "access": "public" },
186
186
  "module": "./dist/index.mjs",
187
187
  "peerDependencies": { "react": "^19.3.0" },
188
- "gitHead": "46c136e63209ac8baacbc9d23aae4675aa68093a"
188
+ "gitHead": "7883bb2ccd69fb2a245eb827eacf1246ffe2214a"
189
189
  }