@lax-wp/design-system 0.13.36 → 0.13.37

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.
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),l=require("../../../_virtual/index.cjs.js");require("react");const q=require("react-i18next"),m=require("../base-input-field/BaseInputField.cjs.js"),r=require("../../icon/icons.generated.cjs.js"),p="[&_input]:!border-0 [&_input]:!shadow-none [&_input]:!rounded-none [&_input]:!bg-transparent [&_input]:!h-8 [&_input]:!pl-1",k=({urlId:g,urlValue:n,onUrlChange:j,urlPlaceholder:c,urlError:t,urlClassName:b,onUrlBlur:v,aliasId:N,aliasValue:s,onAliasChange:f,aliasPlaceholder:o,aliasError:i,aliasClassName:y,aliasFixedWidth:I,disabled:d=!1,label:x,withBorder:a=!1,readOnly:w=!1})=>{const{t:h}=q.useTranslation(),F=c===void 0?h("Enter URL"):c,_=o===void 0?h("Enter Alias"):o,u=!!t||!!i;return w?e.jsxs("div",{className:"w-full",children:[x,e.jsxs("div",{className:"flex items-center gap-2 min-h-9",children:[e.jsx(r.KeychainIcon,{className:"text-black-300 shrink-0 w-icon h-icon"}),n?e.jsxs(e.Fragment,{children:[e.jsx("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:"text-primary-600 dark:text-primary-400 hover:underline text-sm truncate",children:s||n}),s?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-4 w-px bg-neutral-300 dark:bg-grey-800 shrink-0"}),e.jsx(r.MentionIcon,{className:"text-black-300 shrink-0 w-icon h-icon"}),e.jsx("span",{className:"text-neutral-500 dark:text-neutral-400 text-sm shrink-0",children:s})]}):null]}):e.jsx("span",{className:"text-neutral-400 dark:text-neutral-600 text-sm",children:"—"})]})]}):e.jsxs("div",{className:"w-full",children:[x,e.jsxs("div",{className:l("flex items-center h-9 overflow-hidden",{"border rounded-lg bg-white dark:bg-black-700":a,"border-error-500":a&&u,"border-gray-300 dark:border-black-500":a&&!u}),children:[e.jsx(r.KeychainIcon,{className:"ml-2 text-black-300 shrink-0 w-icon h-icon"}),e.jsx("div",{className:l("min-w-0 flex-1",p,b),children:e.jsx(m.BaseInputField,{id:g,originalCase:!0,type:"url",value:n,onChange:j,placeholder:F??"",disabled:d,onBlur:v,errorMessage:""})}),e.jsx("div",{className:"h-full w-px bg-neutral-300 dark:bg-grey-800 shrink-0"}),e.jsx(r.MentionIcon,{className:"ml-2 text-black-300 shrink-0 w-icon h-icon"}),e.jsx("div",{className:l("shrink-0",p,I,y),children:e.jsx(m.BaseInputField,{id:N,originalCase:!0,type:"text",value:s,onChange:f,placeholder:_??"",disabled:d,errorMessage:""})})]}),t?e.jsx("p",{className:"text-error-500 text-xs mt-1",children:t}):null,i?e.jsx("p",{className:"text-error-500 text-xs mt-1",children:i}):null]})};k.displayName="LinkInputField";exports.LinkInputField=k;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),o=require("../../../_virtual/index.cjs.js"),R=require("react-i18next"),j=require("../base-input-field/BaseInputField.cjs.js"),t=require("../../icon/icons.generated.cjs.js"),N="[&_input]:!border-0 [&_input]:!shadow-none [&_input]:!rounded-none [&_input]:!bg-transparent [&_input]:!h-8 [&_input]:!pl-1",W=({urlId:f,urlValue:n,onUrlChange:E,urlPlaceholder:l,urlError:i,urlClassName:y,onUrlBlur:S,aliasId:I,aliasValue:a,onAliasChange:w,aliasPlaceholder:x,aliasError:c,aliasClassName:A,aliasFixedWidth:C,disabled:h=!1,label:m,labelExtra:u,withBorder:r=!1,readOnly:_=!1,inputEmphasis:D="default"})=>{const{t:p}=R.useTranslation(),q=l===void 0?p("Enter URL"):l,B=x===void 0?p("Enter Alias"):x,d=!!i||!!c,s=d?"default":D,b=s==="modified",g=s==="deleted",k=s==="success",F=b||g||k,v=(m||u)&&e.jsxs("div",{className:"flex items-center gap-1",children:[m,u]});if(_)return e.jsxs("div",{className:"w-full",children:[v,e.jsxs("div",{className:"flex items-center gap-2 min-h-9",children:[e.jsx(t.KeychainIcon,{className:"text-black-300 shrink-0 w-icon h-icon"}),n?e.jsxs(e.Fragment,{children:[e.jsx("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:"text-primary-600 dark:text-primary-400 hover:underline text-sm truncate",children:a||n}),a&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-4 w-px bg-neutral-300 dark:bg-grey-800 shrink-0"}),e.jsx(t.MentionIcon,{className:"text-black-300 shrink-0 w-icon h-icon"}),e.jsx("span",{className:"text-neutral-500 dark:text-neutral-400 text-sm shrink-0",children:a})]})]}):e.jsx("span",{className:"text-neutral-400 dark:text-neutral-600 text-sm",children:"—"})]})]});const M=e.jsxs("div",{className:o("flex items-center h-9 overflow-hidden",{"border rounded-lg bg-white dark:bg-black-700":r&&!F,"border-error-500":r&&d,"border-gray-300 dark:border-black-500":r&&!d&&!F,"rounded-lg border border-solid border-[var(--Warning-200,#FEDF89)] bg-[var(--Warning-50,#FFFAEB)] dark:border-[var(--Warning-200,#FEDF89)] dark:bg-[var(--Warning-50,#FFFAEB)]":r&&b,"rounded-lg border border-solid border-[var(--Error-200,#FECACA)] bg-[var(--Error-50,#FEF2F2)] dark:border-[var(--Error-200,#FECACA)] dark:bg-[var(--Error-50,#FEF2F2)]":r&&g,"rounded-lg border border-solid border-[var(--Success-200,#BBF7D0)] bg-[var(--Success-50,#F0FDF4)] dark:border-[var(--Success-200,#BBF7D0)] dark:bg-[var(--Success-50,#F0FDF4)]":r&&k}),children:[e.jsx(t.KeychainIcon,{className:"ml-2 text-black-300 shrink-0 w-icon h-icon"}),e.jsx("div",{className:o("min-w-0 flex-1",N),children:e.jsx(j.BaseInputField,{id:f,originalCase:!0,type:"url",value:n,onChange:E,placeholder:q,disabled:h,onBlur:S,className:y,inputEmphasis:s})}),e.jsx("div",{className:"h-full w-px bg-neutral-300 dark:bg-grey-800 shrink-0"}),e.jsx(t.MentionIcon,{className:"ml-2 text-black-300 shrink-0 w-icon h-icon",size:18}),e.jsx("div",{className:o("shrink-0",N,C),children:e.jsx(j.BaseInputField,{id:I,originalCase:!0,type:"text",value:a,onChange:w,placeholder:B,disabled:h,className:A,inputEmphasis:s})})]});return e.jsxs("div",{className:"w-full",children:[v,M,i&&e.jsx("p",{className:"text-error-500 text-xs mt-1",children:i}),c&&e.jsx("p",{className:"text-error-500 text-xs mt-1",children:c})]})};exports.LinkInputField=W;
2
2
  //# sourceMappingURL=LinkInputField.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LinkInputField.cjs.js","sources":["../../../../src/components/forms/link-input/LinkInputField.tsx"],"sourcesContent":["import cn from \"classnames\";\nimport { type FC, type ReactNode } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { BaseInputField } from \"../base-input-field/BaseInputField\";\nimport { KeychainIcon, MentionIcon } from \"../../icon\";\n\nexport interface LinkInputFieldProps {\n /** Unique identifier for the URL input */\n urlId?: string;\n /** Current URL value */\n urlValue: string;\n /** Callback fired when the URL value changes */\n onUrlChange: (value: string) => void;\n /** Placeholder text for the URL input */\n urlPlaceholder?: string | null;\n /** Error message for the URL input */\n urlError?: string;\n /** Additional CSS classes for the URL input wrapper */\n urlClassName?: string;\n /** Callback fired when the URL input loses focus */\n onUrlBlur?: () => void;\n\n /** Unique identifier for the alias input */\n aliasId?: string;\n /** Current alias value */\n aliasValue: string;\n /** Callback fired when the alias value changes */\n onAliasChange: (value: string) => void;\n /** Placeholder text for the alias input */\n aliasPlaceholder?: string | null;\n /** Error message for the alias input */\n aliasError?: string;\n /** Additional CSS classes for the alias input wrapper */\n aliasClassName?: string;\n /** Tailwind width class for the alias column e.g. `'w-[140px]'`. Omit for natural width. */\n aliasFixedWidth?: string;\n\n /** Whether both inputs are disabled */\n disabled?: boolean;\n /** Optional label rendered above the input row */\n label?: ReactNode;\n /** Wrap the edit row in a bordered container (useful for standalone field usage) */\n withBorder?: boolean;\n /**\n * Render a read-only link view instead of inputs.\n * Use when the field is disabled and anchor links are preferred over inputs.\n */\n readOnly?: boolean;\n}\n\nconst inputOverrides =\n \"[&_input]:!border-0 [&_input]:!shadow-none [&_input]:!rounded-none [&_input]:!bg-transparent [&_input]:!h-8 [&_input]:!pl-1\";\n\n/**\n * A combined URL + alias input field rendered as a single bordered row.\n * Supports a read-only anchor-link view, optional label, error messages per sub-field,\n * and a fixed-width alias column.\n *\n * @example\n * ```tsx\n * <LinkInputField\n * urlValue={url}\n * onUrlChange={setUrl}\n * aliasValue={alias}\n * onAliasChange={setAlias}\n * withBorder\n * />\n * ```\n */\nexport const LinkInputField: FC<LinkInputFieldProps> = ({\n urlId,\n urlValue,\n onUrlChange,\n urlPlaceholder,\n urlError,\n urlClassName,\n onUrlBlur,\n aliasId,\n aliasValue,\n onAliasChange,\n aliasPlaceholder,\n aliasError,\n aliasClassName,\n aliasFixedWidth,\n disabled = false,\n label,\n withBorder = false,\n readOnly = false,\n}) => {\n const { t } = useTranslation();\n\n const resolvedUrlPlaceholder =\n urlPlaceholder === undefined ? t(\"Enter URL\") : urlPlaceholder;\n const resolvedAliasPlaceholder =\n aliasPlaceholder === undefined ? t(\"Enter Alias\") : aliasPlaceholder;\n const hasAnyError = !!urlError || !!aliasError;\n\n if (readOnly) {\n return (\n <div className=\"w-full\">\n {label}\n <div className=\"flex items-center gap-2 min-h-9\">\n <KeychainIcon className=\"text-black-300 shrink-0 w-icon h-icon\" />\n {urlValue ? (\n <>\n <a\n href={urlValue}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-primary-600 dark:text-primary-400 hover:underline text-sm truncate\"\n >\n {aliasValue || urlValue}\n </a>\n {aliasValue ? (\n <>\n <div className=\"h-4 w-px bg-neutral-300 dark:bg-grey-800 shrink-0\" />\n <MentionIcon className=\"text-black-300 shrink-0 w-icon h-icon\" />\n <span className=\"text-neutral-500 dark:text-neutral-400 text-sm shrink-0\">\n {aliasValue}\n </span>\n </>\n ) : null}\n </>\n ) : (\n <span className=\"text-neutral-400 dark:text-neutral-600 text-sm\">\n —\n </span>\n )}\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"w-full\">\n {label}\n <div\n className={cn(\"flex items-center h-9 overflow-hidden\", {\n \"border rounded-lg bg-white dark:bg-black-700\": withBorder,\n \"border-error-500\": withBorder && hasAnyError,\n \"border-gray-300 dark:border-black-500\": withBorder && !hasAnyError,\n })}\n >\n <KeychainIcon className=\"ml-2 text-black-300 shrink-0 w-icon h-icon\" />\n <div className={cn(\"min-w-0 flex-1\", inputOverrides, urlClassName)}>\n <BaseInputField\n id={urlId}\n originalCase\n type=\"url\"\n value={urlValue}\n onChange={onUrlChange}\n placeholder={resolvedUrlPlaceholder ?? \"\"}\n disabled={disabled}\n onBlur={onUrlBlur}\n errorMessage=\"\"\n />\n </div>\n <div className=\"h-full w-px bg-neutral-300 dark:bg-grey-800 shrink-0\" />\n <MentionIcon className=\"ml-2 text-black-300 shrink-0 w-icon h-icon\" />\n <div className={cn(\"shrink-0\", inputOverrides, aliasFixedWidth, aliasClassName)}>\n <BaseInputField\n id={aliasId}\n originalCase\n type=\"text\"\n value={aliasValue}\n onChange={onAliasChange}\n placeholder={resolvedAliasPlaceholder ?? \"\"}\n disabled={disabled}\n errorMessage=\"\"\n />\n </div>\n </div>\n {urlError ? (\n <p className=\"text-error-500 text-xs mt-1\">{urlError}</p>\n ) : null}\n {aliasError ? (\n <p className=\"text-error-500 text-xs mt-1\">{aliasError}</p>\n ) : null}\n </div>\n );\n};\n\nLinkInputField.displayName = \"LinkInputField\";\n"],"names":["inputOverrides","LinkInputField","urlId","urlValue","onUrlChange","urlPlaceholder","urlError","urlClassName","onUrlBlur","aliasId","aliasValue","onAliasChange","aliasPlaceholder","aliasError","aliasClassName","aliasFixedWidth","disabled","label","withBorder","readOnly","t","useTranslation","resolvedUrlPlaceholder","resolvedAliasPlaceholder","hasAnyError","jsxs","jsx","KeychainIcon","Fragment","MentionIcon","cn","BaseInputField"],"mappings":"yTAkDMA,EACJ,8HAkBWC,EAA0C,CAAC,CACtD,MAAAC,EACA,SAAAC,EACA,YAAAC,EACA,eAAAC,EACA,SAAAC,EACA,aAAAC,EACA,UAAAC,EACA,QAAAC,EACA,WAAAC,EACA,cAAAC,EACA,iBAAAC,EACA,WAAAC,EACA,eAAAC,EACA,gBAAAC,EACA,SAAAC,EAAW,GACX,MAAAC,EACA,WAAAC,EAAa,GACb,SAAAC,EAAW,EACb,IAAM,CACJ,KAAM,CAAE,EAAAC,CAAA,EAAMC,iBAAA,EAERC,EACJjB,IAAmB,OAAYe,EAAE,WAAW,EAAIf,EAC5CkB,EACJX,IAAqB,OAAYQ,EAAE,aAAa,EAAIR,EAChDY,EAAc,CAAC,CAAClB,GAAY,CAAC,CAACO,EAEpC,OAAIM,EAEAM,EAAAA,KAAC,MAAA,CAAI,UAAU,SACZ,SAAA,CAAAR,EACDQ,EAAAA,KAAC,MAAA,CAAI,UAAU,kCACb,SAAA,CAAAC,EAAAA,IAACC,EAAAA,aAAA,CAAa,UAAU,uCAAA,CAAwC,EAC/DxB,EACCsB,EAAAA,KAAAG,WAAA,CACE,SAAA,CAAAF,EAAAA,IAAC,IAAA,CACC,KAAMvB,EACN,OAAO,SACP,IAAI,sBACJ,UAAU,0EAET,SAAAO,GAAcP,CAAA,CAAA,EAEhBO,EACCe,EAAAA,KAAAG,WAAA,CACE,SAAA,CAAAF,EAAAA,IAAC,MAAA,CAAI,UAAU,mDAAA,CAAoD,EACnEA,EAAAA,IAACG,EAAAA,YAAA,CAAY,UAAU,uCAAA,CAAwC,EAC/DH,EAAAA,IAAC,OAAA,CAAK,UAAU,0DACb,SAAAhB,CAAA,CACH,CAAA,CAAA,CACF,EACE,IAAA,CAAA,CACN,EAEAgB,EAAAA,IAAC,OAAA,CAAK,UAAU,iDAAiD,SAAA,GAAA,CAEjE,CAAA,CAAA,CAEJ,CAAA,EACF,EAKFD,EAAAA,KAAC,MAAA,CAAI,UAAU,SACZ,SAAA,CAAAR,EACDQ,EAAAA,KAAC,MAAA,CACC,UAAWK,EAAG,wCAAyC,CACrD,+CAAgDZ,EAChD,mBAAoBA,GAAcM,EAClC,wCAAyCN,GAAc,CAACM,CAAA,CACzD,EAED,SAAA,CAAAE,EAAAA,IAACC,EAAAA,aAAA,CAAa,UAAU,4CAAA,CAA6C,QACpE,MAAA,CAAI,UAAWG,EAAG,iBAAkB9B,EAAgBO,CAAY,EAC/D,SAAAmB,EAAAA,IAACK,EAAAA,eAAA,CACC,GAAI7B,EACJ,aAAY,GACZ,KAAK,MACL,MAAOC,EACP,SAAUC,EACV,YAAakB,GAA0B,GACvC,SAAAN,EACA,OAAQR,EACR,aAAa,EAAA,CAAA,EAEjB,EACAkB,EAAAA,IAAC,MAAA,CAAI,UAAU,sDAAA,CAAuD,EACtEA,EAAAA,IAACG,EAAAA,YAAA,CAAY,UAAU,4CAAA,CAA6C,EACpEH,EAAAA,IAAC,OAAI,UAAWI,EAAG,WAAY9B,EAAgBe,EAAiBD,CAAc,EAC5E,SAAAY,EAAAA,IAACK,EAAAA,eAAA,CACC,GAAItB,EACJ,aAAY,GACZ,KAAK,OACL,MAAOC,EACP,SAAUC,EACV,YAAaY,GAA4B,GACzC,SAAAP,EACA,aAAa,EAAA,CAAA,CACf,CACF,CAAA,CAAA,CAAA,EAEDV,EACCoB,EAAAA,IAAC,IAAA,CAAE,UAAU,8BAA+B,WAAS,EACnD,KACHb,EACCa,EAAAA,IAAC,IAAA,CAAE,UAAU,8BAA+B,WAAW,EACrD,IAAA,EACN,CAEJ,EAEAzB,EAAe,YAAc"}
1
+ {"version":3,"file":"LinkInputField.cjs.js","sources":["../../../../src/components/forms/link-input/LinkInputField.tsx"],"sourcesContent":["import cn from 'classnames';\nimport type { ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { BaseInputField, type BaseInputFieldEmphasis } from '../base-input-field/BaseInputField';\nimport { KeychainIcon, MentionIcon } from '../../icon';\n\ninterface ILinkInputFieldProps {\n // URL input\n urlId?: string;\n urlValue: string;\n onUrlChange: (value: string) => void;\n urlPlaceholder?: string | null;\n urlError?: string;\n urlClassName?: string;\n onUrlBlur?: () => void;\n\n // Alias input\n aliasId?: string;\n aliasValue: string;\n onAliasChange: (value: string) => void;\n aliasPlaceholder?: string | null;\n aliasError?: string;\n aliasClassName?: string;\n // Pass e.g. 'w-[140px]' for a fixed-width alias column; omit for natural width\n aliasFixedWidth?: string;\n\n disabled?: boolean;\n // Optional label rendered above the input row\n label?: ReactNode;\n // Optional extra content rendered next to the label (e.g. actions, badges)\n labelExtra?: ReactNode;\n // Wrap the edit row in a bordered container (for standalone field usage)\n withBorder?: boolean;\n // Render a read-only link view instead of inputs (when the field is disabled and anchors are preferred)\n readOnly?: boolean;\n // Input surface style, mirrors BaseInputField's inputEmphasis\n inputEmphasis?: BaseInputFieldEmphasis;\n}\n\nconst inputOverrides =\n '[&_input]:!border-0 [&_input]:!shadow-none [&_input]:!rounded-none [&_input]:!bg-transparent [&_input]:!h-8 [&_input]:!pl-1';\n\nexport const LinkInputField = ({\n urlId,\n urlValue,\n onUrlChange,\n urlPlaceholder,\n urlError,\n urlClassName,\n onUrlBlur,\n aliasId,\n aliasValue,\n onAliasChange,\n aliasPlaceholder,\n aliasError,\n aliasClassName,\n aliasFixedWidth,\n disabled = false,\n label,\n labelExtra,\n withBorder = false,\n readOnly = false,\n inputEmphasis = 'default',\n}: ILinkInputFieldProps) => {\n const { t } = useTranslation();\n\n const resolvedUrlPlaceholder = urlPlaceholder === undefined ? t('Enter URL') : urlPlaceholder;\n const resolvedAliasPlaceholder = aliasPlaceholder === undefined ? t('Enter Alias') : aliasPlaceholder;\n const hasAnyError = !!urlError || !!aliasError;\n const resolvedEmphasis = hasAnyError ? 'default' : inputEmphasis;\n const emphasisModifiedSkin = resolvedEmphasis === 'modified';\n const emphasisDeletedSkin = resolvedEmphasis === 'deleted';\n const emphasisSuccessSkin = resolvedEmphasis === 'success';\n const hasEmphasisSkin = emphasisModifiedSkin || emphasisDeletedSkin || emphasisSuccessSkin;\n\n const labelRow = (label || labelExtra) && (\n <div className='flex items-center gap-1'>\n {label}\n {labelExtra}\n </div>\n );\n\n if (readOnly) {\n return (\n <div className='w-full'>\n {labelRow}\n <div className='flex items-center gap-2 min-h-9'>\n <KeychainIcon className='text-black-300 shrink-0 w-icon h-icon' />\n {urlValue ? (\n <>\n <a\n href={urlValue}\n target='_blank'\n rel='noopener noreferrer'\n className='text-primary-600 dark:text-primary-400 hover:underline text-sm truncate'\n >\n {aliasValue || urlValue}\n </a>\n {aliasValue && (\n <>\n <div className='h-4 w-px bg-neutral-300 dark:bg-grey-800 shrink-0' />\n <MentionIcon className='text-black-300 shrink-0 w-icon h-icon' />\n <span className='text-neutral-500 dark:text-neutral-400 text-sm shrink-0'>{aliasValue}</span>\n </>\n )}\n </>\n ) : (\n <span className='text-neutral-400 dark:text-neutral-600 text-sm'>—</span>\n )}\n </div>\n </div>\n );\n }\n\n const editRow = (\n <div\n className={cn('flex items-center h-9 overflow-hidden', {\n 'border rounded-lg bg-white dark:bg-black-700': withBorder && !hasEmphasisSkin,\n 'border-error-500': withBorder && hasAnyError,\n 'border-gray-300 dark:border-black-500': withBorder && !hasAnyError && !hasEmphasisSkin,\n 'rounded-lg border border-solid border-[var(--Warning-200,#FEDF89)] bg-[var(--Warning-50,#FFFAEB)] dark:border-[var(--Warning-200,#FEDF89)] dark:bg-[var(--Warning-50,#FFFAEB)]':\n withBorder && emphasisModifiedSkin,\n 'rounded-lg border border-solid border-[var(--Error-200,#FECACA)] bg-[var(--Error-50,#FEF2F2)] dark:border-[var(--Error-200,#FECACA)] dark:bg-[var(--Error-50,#FEF2F2)]':\n withBorder && emphasisDeletedSkin,\n 'rounded-lg border border-solid border-[var(--Success-200,#BBF7D0)] bg-[var(--Success-50,#F0FDF4)] dark:border-[var(--Success-200,#BBF7D0)] dark:bg-[var(--Success-50,#F0FDF4)]':\n withBorder && emphasisSuccessSkin,\n })}\n >\n <KeychainIcon className='ml-2 text-black-300 shrink-0 w-icon h-icon' />\n <div className={cn('min-w-0 flex-1', inputOverrides)}>\n <BaseInputField\n id={urlId}\n originalCase\n type='url'\n value={urlValue}\n onChange={onUrlChange}\n placeholder={resolvedUrlPlaceholder}\n disabled={disabled}\n onBlur={onUrlBlur}\n className={urlClassName}\n inputEmphasis={resolvedEmphasis}\n />\n </div>\n <div className='h-full w-px bg-neutral-300 dark:bg-grey-800 shrink-0' />\n <MentionIcon className='ml-2 text-black-300 shrink-0 w-icon h-icon' size={18} />\n <div className={cn('shrink-0', inputOverrides, aliasFixedWidth)}>\n <BaseInputField\n id={aliasId}\n originalCase\n type='text'\n value={aliasValue}\n onChange={onAliasChange}\n placeholder={resolvedAliasPlaceholder}\n disabled={disabled}\n className={aliasClassName}\n inputEmphasis={resolvedEmphasis}\n />\n </div>\n </div>\n );\n\n return (\n <div className='w-full'>\n {labelRow}\n {editRow}\n {urlError && <p className='text-error-500 text-xs mt-1'>{urlError}</p>}\n {aliasError && <p className='text-error-500 text-xs mt-1'>{aliasError}</p>}\n </div>\n );\n};\n"],"names":["inputOverrides","LinkInputField","urlId","urlValue","onUrlChange","urlPlaceholder","urlError","urlClassName","onUrlBlur","aliasId","aliasValue","onAliasChange","aliasPlaceholder","aliasError","aliasClassName","aliasFixedWidth","disabled","label","labelExtra","withBorder","readOnly","inputEmphasis","t","useTranslation","resolvedUrlPlaceholder","resolvedAliasPlaceholder","hasAnyError","resolvedEmphasis","emphasisModifiedSkin","emphasisDeletedSkin","emphasisSuccessSkin","hasEmphasisSkin","labelRow","jsxs","jsx","KeychainIcon","Fragment","MentionIcon","editRow","cn","BaseInputField"],"mappings":"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"}
@@ -1,59 +1,26 @@
1
- import { type FC, type ReactNode } from "react";
2
- export interface LinkInputFieldProps {
3
- /** Unique identifier for the URL input */
1
+ import type { ReactNode } from 'react';
2
+ import { type BaseInputFieldEmphasis } from '../base-input-field/BaseInputField';
3
+ interface ILinkInputFieldProps {
4
4
  urlId?: string;
5
- /** Current URL value */
6
5
  urlValue: string;
7
- /** Callback fired when the URL value changes */
8
6
  onUrlChange: (value: string) => void;
9
- /** Placeholder text for the URL input */
10
7
  urlPlaceholder?: string | null;
11
- /** Error message for the URL input */
12
8
  urlError?: string;
13
- /** Additional CSS classes for the URL input wrapper */
14
9
  urlClassName?: string;
15
- /** Callback fired when the URL input loses focus */
16
10
  onUrlBlur?: () => void;
17
- /** Unique identifier for the alias input */
18
11
  aliasId?: string;
19
- /** Current alias value */
20
12
  aliasValue: string;
21
- /** Callback fired when the alias value changes */
22
13
  onAliasChange: (value: string) => void;
23
- /** Placeholder text for the alias input */
24
14
  aliasPlaceholder?: string | null;
25
- /** Error message for the alias input */
26
15
  aliasError?: string;
27
- /** Additional CSS classes for the alias input wrapper */
28
16
  aliasClassName?: string;
29
- /** Tailwind width class for the alias column e.g. `'w-[140px]'`. Omit for natural width. */
30
17
  aliasFixedWidth?: string;
31
- /** Whether both inputs are disabled */
32
18
  disabled?: boolean;
33
- /** Optional label rendered above the input row */
34
19
  label?: ReactNode;
35
- /** Wrap the edit row in a bordered container (useful for standalone field usage) */
20
+ labelExtra?: ReactNode;
36
21
  withBorder?: boolean;
37
- /**
38
- * Render a read-only link view instead of inputs.
39
- * Use when the field is disabled and anchor links are preferred over inputs.
40
- */
41
22
  readOnly?: boolean;
23
+ inputEmphasis?: BaseInputFieldEmphasis;
42
24
  }
43
- /**
44
- * A combined URL + alias input field rendered as a single bordered row.
45
- * Supports a read-only anchor-link view, optional label, error messages per sub-field,
46
- * and a fixed-width alias column.
47
- *
48
- * @example
49
- * ```tsx
50
- * <LinkInputField
51
- * urlValue={url}
52
- * onUrlChange={setUrl}
53
- * aliasValue={alias}
54
- * onAliasChange={setAlias}
55
- * withBorder
56
- * />
57
- * ```
58
- */
59
- export declare const LinkInputField: FC<LinkInputFieldProps>;
25
+ export declare const LinkInputField: ({ urlId, urlValue, onUrlChange, urlPlaceholder, urlError, urlClassName, onUrlBlur, aliasId, aliasValue, onAliasChange, aliasPlaceholder, aliasError, aliasClassName, aliasFixedWidth, disabled, label, labelExtra, withBorder, readOnly, inputEmphasis, }: ILinkInputFieldProps) => import("react/jsx-runtime").JSX.Element;
26
+ export {};
@@ -1,102 +1,113 @@
1
- import { jsxs as n, jsx as e, Fragment as x } from "react/jsx-runtime";
2
- import l from "../../../_virtual/index.es.js";
3
- import "react";
4
- import { useTranslation as M } from "react-i18next";
5
- import { BaseInputField as k } from "../base-input-field/BaseInputField.es.js";
6
- import { KeychainIcon as u, MentionIcon as g } from "../../icon/icons.generated.es.js";
7
- const f = "[&_input]:!border-0 [&_input]:!shadow-none [&_input]:!rounded-none [&_input]:!bg-transparent [&_input]:!h-8 [&_input]:!pl-1", j = ({
8
- urlId: N,
9
- urlValue: r,
10
- onUrlChange: b,
11
- urlPlaceholder: c,
12
- urlError: s,
13
- urlClassName: v,
14
- onUrlBlur: w,
15
- aliasId: y,
1
+ import { jsxs as r, jsx as e, Fragment as f } from "react/jsx-runtime";
2
+ import c from "../../../_virtual/index.es.js";
3
+ import { useTranslation as z } from "react-i18next";
4
+ import { BaseInputField as N } from "../base-input-field/BaseInputField.es.js";
5
+ import { KeychainIcon as E, MentionIcon as w } from "../../icon/icons.generated.es.js";
6
+ const y = "[&_input]:!border-0 [&_input]:!shadow-none [&_input]:!rounded-none [&_input]:!bg-transparent [&_input]:!h-8 [&_input]:!pl-1", H = ({
7
+ urlId: A,
8
+ urlValue: a,
9
+ onUrlChange: S,
10
+ urlPlaceholder: l,
11
+ urlError: i,
12
+ urlClassName: C,
13
+ onUrlBlur: D,
14
+ aliasId: _,
16
15
  aliasValue: t,
17
- onAliasChange: _,
18
- aliasPlaceholder: o,
19
- aliasError: a,
20
- aliasClassName: I,
21
- aliasFixedWidth: C,
22
- disabled: d = !1,
23
- label: m,
24
- withBorder: i = !1,
25
- readOnly: F = !1
16
+ onAliasChange: I,
17
+ aliasPlaceholder: m,
18
+ aliasError: d,
19
+ aliasClassName: W,
20
+ aliasFixedWidth: B,
21
+ disabled: h = !1,
22
+ label: p,
23
+ labelExtra: b,
24
+ withBorder: n = !1,
25
+ readOnly: R = !1,
26
+ inputEmphasis: j = "default"
26
27
  }) => {
27
- const { t: h } = M(), A = c === void 0 ? h("Enter URL") : c, L = o === void 0 ? h("Enter Alias") : o, p = !!s || !!a;
28
- return F ? /* @__PURE__ */ n("div", { className: "w-full", children: [
29
- m,
30
- /* @__PURE__ */ n("div", { className: "flex items-center gap-2 min-h-9", children: [
31
- /* @__PURE__ */ e(u, { className: "text-black-300 shrink-0 w-icon h-icon" }),
32
- r ? /* @__PURE__ */ n(x, { children: [
33
- /* @__PURE__ */ e(
34
- "a",
35
- {
36
- href: r,
37
- target: "_blank",
38
- rel: "noopener noreferrer",
39
- className: "text-primary-600 dark:text-primary-400 hover:underline text-sm truncate",
40
- children: t || r
41
- }
42
- ),
43
- t ? /* @__PURE__ */ n(x, { children: [
44
- /* @__PURE__ */ e("div", { className: "h-4 w-px bg-neutral-300 dark:bg-grey-800 shrink-0" }),
45
- /* @__PURE__ */ e(g, { className: "text-black-300 shrink-0 w-icon h-icon" }),
46
- /* @__PURE__ */ e("span", { className: "text-neutral-500 dark:text-neutral-400 text-sm shrink-0", children: t })
47
- ] }) : null
48
- ] }) : /* @__PURE__ */ e("span", { className: "text-neutral-400 dark:text-neutral-600 text-sm", children: "—" })
49
- ] })
50
- ] }) : /* @__PURE__ */ n("div", { className: "w-full", children: [
51
- m,
52
- /* @__PURE__ */ n(
53
- "div",
54
- {
55
- className: l("flex items-center h-9 overflow-hidden", {
56
- "border rounded-lg bg-white dark:bg-black-700": i,
57
- "border-error-500": i && p,
58
- "border-gray-300 dark:border-black-500": i && !p
59
- }),
60
- children: [
61
- /* @__PURE__ */ e(u, { className: "ml-2 text-black-300 shrink-0 w-icon h-icon" }),
62
- /* @__PURE__ */ e("div", { className: l("min-w-0 flex-1", f, v), children: /* @__PURE__ */ e(
63
- k,
64
- {
65
- id: N,
66
- originalCase: !0,
67
- type: "url",
68
- value: r,
69
- onChange: b,
70
- placeholder: A ?? "",
71
- disabled: d,
72
- onBlur: w,
73
- errorMessage: ""
74
- }
75
- ) }),
76
- /* @__PURE__ */ e("div", { className: "h-full w-px bg-neutral-300 dark:bg-grey-800 shrink-0" }),
77
- /* @__PURE__ */ e(g, { className: "ml-2 text-black-300 shrink-0 w-icon h-icon" }),
78
- /* @__PURE__ */ e("div", { className: l("shrink-0", f, C, I), children: /* @__PURE__ */ e(
79
- k,
28
+ const { t: k } = z(), L = l === void 0 ? k("Enter URL") : l, M = m === void 0 ? k("Enter Alias") : m, o = !!i || !!d, s = o ? "default" : j, g = s === "modified", u = s === "deleted", v = s === "success", F = g || u || v, x = (p || b) && /* @__PURE__ */ r("div", { className: "flex items-center gap-1", children: [
29
+ p,
30
+ b
31
+ ] });
32
+ if (R)
33
+ return /* @__PURE__ */ r("div", { className: "w-full", children: [
34
+ x,
35
+ /* @__PURE__ */ r("div", { className: "flex items-center gap-2 min-h-9", children: [
36
+ /* @__PURE__ */ e(E, { className: "text-black-300 shrink-0 w-icon h-icon" }),
37
+ a ? /* @__PURE__ */ r(f, { children: [
38
+ /* @__PURE__ */ e(
39
+ "a",
80
40
  {
81
- id: y,
82
- originalCase: !0,
83
- type: "text",
84
- value: t,
85
- onChange: _,
86
- placeholder: L ?? "",
87
- disabled: d,
88
- errorMessage: ""
41
+ href: a,
42
+ target: "_blank",
43
+ rel: "noopener noreferrer",
44
+ className: "text-primary-600 dark:text-primary-400 hover:underline text-sm truncate",
45
+ children: t || a
89
46
  }
90
- ) })
91
- ]
92
- }
93
- ),
94
- s ? /* @__PURE__ */ e("p", { className: "text-error-500 text-xs mt-1", children: s }) : null,
95
- a ? /* @__PURE__ */ e("p", { className: "text-error-500 text-xs mt-1", children: a }) : null
47
+ ),
48
+ t && /* @__PURE__ */ r(f, { children: [
49
+ /* @__PURE__ */ e("div", { className: "h-4 w-px bg-neutral-300 dark:bg-grey-800 shrink-0" }),
50
+ /* @__PURE__ */ e(w, { className: "text-black-300 shrink-0 w-icon h-icon" }),
51
+ /* @__PURE__ */ e("span", { className: "text-neutral-500 dark:text-neutral-400 text-sm shrink-0", children: t })
52
+ ] })
53
+ ] }) : /* @__PURE__ */ e("span", { className: "text-neutral-400 dark:text-neutral-600 text-sm", children: "—" })
54
+ ] })
55
+ ] });
56
+ const U = /* @__PURE__ */ r(
57
+ "div",
58
+ {
59
+ className: c("flex items-center h-9 overflow-hidden", {
60
+ "border rounded-lg bg-white dark:bg-black-700": n && !F,
61
+ "border-error-500": n && o,
62
+ "border-gray-300 dark:border-black-500": n && !o && !F,
63
+ "rounded-lg border border-solid border-[var(--Warning-200,#FEDF89)] bg-[var(--Warning-50,#FFFAEB)] dark:border-[var(--Warning-200,#FEDF89)] dark:bg-[var(--Warning-50,#FFFAEB)]": n && g,
64
+ "rounded-lg border border-solid border-[var(--Error-200,#FECACA)] bg-[var(--Error-50,#FEF2F2)] dark:border-[var(--Error-200,#FECACA)] dark:bg-[var(--Error-50,#FEF2F2)]": n && u,
65
+ "rounded-lg border border-solid border-[var(--Success-200,#BBF7D0)] bg-[var(--Success-50,#F0FDF4)] dark:border-[var(--Success-200,#BBF7D0)] dark:bg-[var(--Success-50,#F0FDF4)]": n && v
66
+ }),
67
+ children: [
68
+ /* @__PURE__ */ e(E, { className: "ml-2 text-black-300 shrink-0 w-icon h-icon" }),
69
+ /* @__PURE__ */ e("div", { className: c("min-w-0 flex-1", y), children: /* @__PURE__ */ e(
70
+ N,
71
+ {
72
+ id: A,
73
+ originalCase: !0,
74
+ type: "url",
75
+ value: a,
76
+ onChange: S,
77
+ placeholder: L,
78
+ disabled: h,
79
+ onBlur: D,
80
+ className: C,
81
+ inputEmphasis: s
82
+ }
83
+ ) }),
84
+ /* @__PURE__ */ e("div", { className: "h-full w-px bg-neutral-300 dark:bg-grey-800 shrink-0" }),
85
+ /* @__PURE__ */ e(w, { className: "ml-2 text-black-300 shrink-0 w-icon h-icon", size: 18 }),
86
+ /* @__PURE__ */ e("div", { className: c("shrink-0", y, B), children: /* @__PURE__ */ e(
87
+ N,
88
+ {
89
+ id: _,
90
+ originalCase: !0,
91
+ type: "text",
92
+ value: t,
93
+ onChange: I,
94
+ placeholder: M,
95
+ disabled: h,
96
+ className: W,
97
+ inputEmphasis: s
98
+ }
99
+ ) })
100
+ ]
101
+ }
102
+ );
103
+ return /* @__PURE__ */ r("div", { className: "w-full", children: [
104
+ x,
105
+ U,
106
+ i && /* @__PURE__ */ e("p", { className: "text-error-500 text-xs mt-1", children: i }),
107
+ d && /* @__PURE__ */ e("p", { className: "text-error-500 text-xs mt-1", children: d })
96
108
  ] });
97
109
  };
98
- j.displayName = "LinkInputField";
99
110
  export {
100
- j as LinkInputField
111
+ H as LinkInputField
101
112
  };
102
113
  //# sourceMappingURL=LinkInputField.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LinkInputField.es.js","sources":["../../../../src/components/forms/link-input/LinkInputField.tsx"],"sourcesContent":["import cn from \"classnames\";\nimport { type FC, type ReactNode } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { BaseInputField } from \"../base-input-field/BaseInputField\";\nimport { KeychainIcon, MentionIcon } from \"../../icon\";\n\nexport interface LinkInputFieldProps {\n /** Unique identifier for the URL input */\n urlId?: string;\n /** Current URL value */\n urlValue: string;\n /** Callback fired when the URL value changes */\n onUrlChange: (value: string) => void;\n /** Placeholder text for the URL input */\n urlPlaceholder?: string | null;\n /** Error message for the URL input */\n urlError?: string;\n /** Additional CSS classes for the URL input wrapper */\n urlClassName?: string;\n /** Callback fired when the URL input loses focus */\n onUrlBlur?: () => void;\n\n /** Unique identifier for the alias input */\n aliasId?: string;\n /** Current alias value */\n aliasValue: string;\n /** Callback fired when the alias value changes */\n onAliasChange: (value: string) => void;\n /** Placeholder text for the alias input */\n aliasPlaceholder?: string | null;\n /** Error message for the alias input */\n aliasError?: string;\n /** Additional CSS classes for the alias input wrapper */\n aliasClassName?: string;\n /** Tailwind width class for the alias column e.g. `'w-[140px]'`. Omit for natural width. */\n aliasFixedWidth?: string;\n\n /** Whether both inputs are disabled */\n disabled?: boolean;\n /** Optional label rendered above the input row */\n label?: ReactNode;\n /** Wrap the edit row in a bordered container (useful for standalone field usage) */\n withBorder?: boolean;\n /**\n * Render a read-only link view instead of inputs.\n * Use when the field is disabled and anchor links are preferred over inputs.\n */\n readOnly?: boolean;\n}\n\nconst inputOverrides =\n \"[&_input]:!border-0 [&_input]:!shadow-none [&_input]:!rounded-none [&_input]:!bg-transparent [&_input]:!h-8 [&_input]:!pl-1\";\n\n/**\n * A combined URL + alias input field rendered as a single bordered row.\n * Supports a read-only anchor-link view, optional label, error messages per sub-field,\n * and a fixed-width alias column.\n *\n * @example\n * ```tsx\n * <LinkInputField\n * urlValue={url}\n * onUrlChange={setUrl}\n * aliasValue={alias}\n * onAliasChange={setAlias}\n * withBorder\n * />\n * ```\n */\nexport const LinkInputField: FC<LinkInputFieldProps> = ({\n urlId,\n urlValue,\n onUrlChange,\n urlPlaceholder,\n urlError,\n urlClassName,\n onUrlBlur,\n aliasId,\n aliasValue,\n onAliasChange,\n aliasPlaceholder,\n aliasError,\n aliasClassName,\n aliasFixedWidth,\n disabled = false,\n label,\n withBorder = false,\n readOnly = false,\n}) => {\n const { t } = useTranslation();\n\n const resolvedUrlPlaceholder =\n urlPlaceholder === undefined ? t(\"Enter URL\") : urlPlaceholder;\n const resolvedAliasPlaceholder =\n aliasPlaceholder === undefined ? t(\"Enter Alias\") : aliasPlaceholder;\n const hasAnyError = !!urlError || !!aliasError;\n\n if (readOnly) {\n return (\n <div className=\"w-full\">\n {label}\n <div className=\"flex items-center gap-2 min-h-9\">\n <KeychainIcon className=\"text-black-300 shrink-0 w-icon h-icon\" />\n {urlValue ? (\n <>\n <a\n href={urlValue}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-primary-600 dark:text-primary-400 hover:underline text-sm truncate\"\n >\n {aliasValue || urlValue}\n </a>\n {aliasValue ? (\n <>\n <div className=\"h-4 w-px bg-neutral-300 dark:bg-grey-800 shrink-0\" />\n <MentionIcon className=\"text-black-300 shrink-0 w-icon h-icon\" />\n <span className=\"text-neutral-500 dark:text-neutral-400 text-sm shrink-0\">\n {aliasValue}\n </span>\n </>\n ) : null}\n </>\n ) : (\n <span className=\"text-neutral-400 dark:text-neutral-600 text-sm\">\n —\n </span>\n )}\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"w-full\">\n {label}\n <div\n className={cn(\"flex items-center h-9 overflow-hidden\", {\n \"border rounded-lg bg-white dark:bg-black-700\": withBorder,\n \"border-error-500\": withBorder && hasAnyError,\n \"border-gray-300 dark:border-black-500\": withBorder && !hasAnyError,\n })}\n >\n <KeychainIcon className=\"ml-2 text-black-300 shrink-0 w-icon h-icon\" />\n <div className={cn(\"min-w-0 flex-1\", inputOverrides, urlClassName)}>\n <BaseInputField\n id={urlId}\n originalCase\n type=\"url\"\n value={urlValue}\n onChange={onUrlChange}\n placeholder={resolvedUrlPlaceholder ?? \"\"}\n disabled={disabled}\n onBlur={onUrlBlur}\n errorMessage=\"\"\n />\n </div>\n <div className=\"h-full w-px bg-neutral-300 dark:bg-grey-800 shrink-0\" />\n <MentionIcon className=\"ml-2 text-black-300 shrink-0 w-icon h-icon\" />\n <div className={cn(\"shrink-0\", inputOverrides, aliasFixedWidth, aliasClassName)}>\n <BaseInputField\n id={aliasId}\n originalCase\n type=\"text\"\n value={aliasValue}\n onChange={onAliasChange}\n placeholder={resolvedAliasPlaceholder ?? \"\"}\n disabled={disabled}\n errorMessage=\"\"\n />\n </div>\n </div>\n {urlError ? (\n <p className=\"text-error-500 text-xs mt-1\">{urlError}</p>\n ) : null}\n {aliasError ? (\n <p className=\"text-error-500 text-xs mt-1\">{aliasError}</p>\n ) : null}\n </div>\n );\n};\n\nLinkInputField.displayName = \"LinkInputField\";\n"],"names":["inputOverrides","LinkInputField","urlId","urlValue","onUrlChange","urlPlaceholder","urlError","urlClassName","onUrlBlur","aliasId","aliasValue","onAliasChange","aliasPlaceholder","aliasError","aliasClassName","aliasFixedWidth","disabled","label","withBorder","readOnly","t","useTranslation","resolvedUrlPlaceholder","resolvedAliasPlaceholder","hasAnyError","jsxs","jsx","KeychainIcon","Fragment","MentionIcon","cn","BaseInputField"],"mappings":"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"}
1
+ {"version":3,"file":"LinkInputField.es.js","sources":["../../../../src/components/forms/link-input/LinkInputField.tsx"],"sourcesContent":["import cn from 'classnames';\nimport type { ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { BaseInputField, type BaseInputFieldEmphasis } from '../base-input-field/BaseInputField';\nimport { KeychainIcon, MentionIcon } from '../../icon';\n\ninterface ILinkInputFieldProps {\n // URL input\n urlId?: string;\n urlValue: string;\n onUrlChange: (value: string) => void;\n urlPlaceholder?: string | null;\n urlError?: string;\n urlClassName?: string;\n onUrlBlur?: () => void;\n\n // Alias input\n aliasId?: string;\n aliasValue: string;\n onAliasChange: (value: string) => void;\n aliasPlaceholder?: string | null;\n aliasError?: string;\n aliasClassName?: string;\n // Pass e.g. 'w-[140px]' for a fixed-width alias column; omit for natural width\n aliasFixedWidth?: string;\n\n disabled?: boolean;\n // Optional label rendered above the input row\n label?: ReactNode;\n // Optional extra content rendered next to the label (e.g. actions, badges)\n labelExtra?: ReactNode;\n // Wrap the edit row in a bordered container (for standalone field usage)\n withBorder?: boolean;\n // Render a read-only link view instead of inputs (when the field is disabled and anchors are preferred)\n readOnly?: boolean;\n // Input surface style, mirrors BaseInputField's inputEmphasis\n inputEmphasis?: BaseInputFieldEmphasis;\n}\n\nconst inputOverrides =\n '[&_input]:!border-0 [&_input]:!shadow-none [&_input]:!rounded-none [&_input]:!bg-transparent [&_input]:!h-8 [&_input]:!pl-1';\n\nexport const LinkInputField = ({\n urlId,\n urlValue,\n onUrlChange,\n urlPlaceholder,\n urlError,\n urlClassName,\n onUrlBlur,\n aliasId,\n aliasValue,\n onAliasChange,\n aliasPlaceholder,\n aliasError,\n aliasClassName,\n aliasFixedWidth,\n disabled = false,\n label,\n labelExtra,\n withBorder = false,\n readOnly = false,\n inputEmphasis = 'default',\n}: ILinkInputFieldProps) => {\n const { t } = useTranslation();\n\n const resolvedUrlPlaceholder = urlPlaceholder === undefined ? t('Enter URL') : urlPlaceholder;\n const resolvedAliasPlaceholder = aliasPlaceholder === undefined ? t('Enter Alias') : aliasPlaceholder;\n const hasAnyError = !!urlError || !!aliasError;\n const resolvedEmphasis = hasAnyError ? 'default' : inputEmphasis;\n const emphasisModifiedSkin = resolvedEmphasis === 'modified';\n const emphasisDeletedSkin = resolvedEmphasis === 'deleted';\n const emphasisSuccessSkin = resolvedEmphasis === 'success';\n const hasEmphasisSkin = emphasisModifiedSkin || emphasisDeletedSkin || emphasisSuccessSkin;\n\n const labelRow = (label || labelExtra) && (\n <div className='flex items-center gap-1'>\n {label}\n {labelExtra}\n </div>\n );\n\n if (readOnly) {\n return (\n <div className='w-full'>\n {labelRow}\n <div className='flex items-center gap-2 min-h-9'>\n <KeychainIcon className='text-black-300 shrink-0 w-icon h-icon' />\n {urlValue ? (\n <>\n <a\n href={urlValue}\n target='_blank'\n rel='noopener noreferrer'\n className='text-primary-600 dark:text-primary-400 hover:underline text-sm truncate'\n >\n {aliasValue || urlValue}\n </a>\n {aliasValue && (\n <>\n <div className='h-4 w-px bg-neutral-300 dark:bg-grey-800 shrink-0' />\n <MentionIcon className='text-black-300 shrink-0 w-icon h-icon' />\n <span className='text-neutral-500 dark:text-neutral-400 text-sm shrink-0'>{aliasValue}</span>\n </>\n )}\n </>\n ) : (\n <span className='text-neutral-400 dark:text-neutral-600 text-sm'>—</span>\n )}\n </div>\n </div>\n );\n }\n\n const editRow = (\n <div\n className={cn('flex items-center h-9 overflow-hidden', {\n 'border rounded-lg bg-white dark:bg-black-700': withBorder && !hasEmphasisSkin,\n 'border-error-500': withBorder && hasAnyError,\n 'border-gray-300 dark:border-black-500': withBorder && !hasAnyError && !hasEmphasisSkin,\n 'rounded-lg border border-solid border-[var(--Warning-200,#FEDF89)] bg-[var(--Warning-50,#FFFAEB)] dark:border-[var(--Warning-200,#FEDF89)] dark:bg-[var(--Warning-50,#FFFAEB)]':\n withBorder && emphasisModifiedSkin,\n 'rounded-lg border border-solid border-[var(--Error-200,#FECACA)] bg-[var(--Error-50,#FEF2F2)] dark:border-[var(--Error-200,#FECACA)] dark:bg-[var(--Error-50,#FEF2F2)]':\n withBorder && emphasisDeletedSkin,\n 'rounded-lg border border-solid border-[var(--Success-200,#BBF7D0)] bg-[var(--Success-50,#F0FDF4)] dark:border-[var(--Success-200,#BBF7D0)] dark:bg-[var(--Success-50,#F0FDF4)]':\n withBorder && emphasisSuccessSkin,\n })}\n >\n <KeychainIcon className='ml-2 text-black-300 shrink-0 w-icon h-icon' />\n <div className={cn('min-w-0 flex-1', inputOverrides)}>\n <BaseInputField\n id={urlId}\n originalCase\n type='url'\n value={urlValue}\n onChange={onUrlChange}\n placeholder={resolvedUrlPlaceholder}\n disabled={disabled}\n onBlur={onUrlBlur}\n className={urlClassName}\n inputEmphasis={resolvedEmphasis}\n />\n </div>\n <div className='h-full w-px bg-neutral-300 dark:bg-grey-800 shrink-0' />\n <MentionIcon className='ml-2 text-black-300 shrink-0 w-icon h-icon' size={18} />\n <div className={cn('shrink-0', inputOverrides, aliasFixedWidth)}>\n <BaseInputField\n id={aliasId}\n originalCase\n type='text'\n value={aliasValue}\n onChange={onAliasChange}\n placeholder={resolvedAliasPlaceholder}\n disabled={disabled}\n className={aliasClassName}\n inputEmphasis={resolvedEmphasis}\n />\n </div>\n </div>\n );\n\n return (\n <div className='w-full'>\n {labelRow}\n {editRow}\n {urlError && <p className='text-error-500 text-xs mt-1'>{urlError}</p>}\n {aliasError && <p className='text-error-500 text-xs mt-1'>{aliasError}</p>}\n </div>\n );\n};\n"],"names":["inputOverrides","LinkInputField","urlId","urlValue","onUrlChange","urlPlaceholder","urlError","urlClassName","onUrlBlur","aliasId","aliasValue","onAliasChange","aliasPlaceholder","aliasError","aliasClassName","aliasFixedWidth","disabled","label","labelExtra","withBorder","readOnly","inputEmphasis","t","useTranslation","resolvedUrlPlaceholder","resolvedAliasPlaceholder","hasAnyError","resolvedEmphasis","emphasisModifiedSkin","emphasisDeletedSkin","emphasisSuccessSkin","hasEmphasisSkin","labelRow","jsxs","jsx","KeychainIcon","Fragment","MentionIcon","editRow","cn","BaseInputField"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -38,7 +38,6 @@ export type { DynamicDataInputFieldProps, DynamicDataInputFieldEmphasis, Dynamic
38
38
  export { DynamicDataInput } from "./components/forms/dynamic-data-input/DynamicDataInput";
39
39
  export type { DynamicDataInputProps } from "./components/forms/dynamic-data-input/DynamicDataInput";
40
40
  export { LinkInputField } from "./components/forms/link-input/LinkInputField";
41
- export type { LinkInputFieldProps } from "./components/forms/link-input/LinkInputField";
42
41
  export { PercentageInputField } from "./components/forms/percentage-input/PercentageInputField";
43
42
  export { Form } from "./components/forms/form/Form";
44
43
  export type { PercentageInputFieldProps, PercentageInputFieldEmphasis, RiskDetails as PercentageInputFieldRiskDetails, RiskDetailsCardProps as PercentageInputFieldRiskDetailsCardProps, } from "./components/forms/percentage-input/PercentageInputField";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@lax-wp/design-system",
3
3
  "private": false,
4
- "version": "0.13.36",
4
+ "version": "0.13.37",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs.js",
7
7
  "module": "dist/index.es.js",