@solace-health/ui 0.10.670 → 0.10.671
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/README.md +9 -2
- package/dist/chunk-2DLCWPKO.cjs +27 -0
- package/dist/chunk-2DLCWPKO.cjs.map +1 -0
- package/dist/chunk-7QWN4Z56.js +27 -0
- package/dist/chunk-7QWN4Z56.js.map +1 -0
- package/dist/{chunk-SBGL7Q6I.cjs → chunk-KXR3HDPA.cjs} +2 -2
- package/dist/{chunk-SBGL7Q6I.cjs.map → chunk-KXR3HDPA.cjs.map} +1 -1
- package/dist/{chunk-FDMT42JJ.js → chunk-R3HGV3DR.js} +2 -2
- package/dist/{chunk-FDMT42JJ.js.map → chunk-R3HGV3DR.js.map} +1 -1
- package/dist/{chunk-MERMPFZT.js → chunk-WHAXVJN5.js} +2 -2
- package/dist/{chunk-MERMPFZT.js.map → chunk-WHAXVJN5.js.map} +1 -1
- package/dist/{chunk-O7A6NMSW.cjs → chunk-YVXKLKHE.cjs} +2 -2
- package/dist/{chunk-O7A6NMSW.cjs.map → chunk-YVXKLKHE.cjs.map} +1 -1
- package/dist/metafile-cjs.json +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/v2/address-input/address-input.cjs +1 -1
- package/dist/v2/address-input/address-input.js +1 -1
- package/dist/v2/date-picker/date-picker-input.cjs +1 -1
- package/dist/v2/date-picker/date-picker-input.js +1 -1
- package/dist/v2/date-picker/date-picker.cjs +1 -1
- package/dist/v2/date-picker/date-picker.js +1 -1
- package/dist/v2/image-preview/image-preview.cjs +1 -1
- package/dist/v2/image-preview/image-preview.js +1 -1
- package/dist/v2/index.cjs +1 -1
- package/dist/v2/index.js +1 -1
- package/dist/v2/input/input.cjs +1 -1
- package/dist/v2/input/input.d.ts +1 -1
- package/dist/v2/input/input.js +1 -1
- package/dist/v2/input/input.stories.d.ts +1 -0
- package/dist/v2/time-select/time-select.cjs +1 -1
- package/dist/v2/time-select/time-select.js +1 -1
- package/package.json +5 -5
- package/dist/chunk-LFGDYEFJ.js +0 -27
- package/dist/chunk-LFGDYEFJ.js.map +0 -1
- package/dist/chunk-UIJEPPNJ.cjs +0 -27
- package/dist/chunk-UIJEPPNJ.cjs.map +0 -1
package/dist/chunk-UIJEPPNJ.cjs
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
'use strict';var chunkIRMVTSQ3_cjs=require('./chunk-IRMVTSQ3.cjs'),chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),u=require('react'),classVarianceAuthority=require('class-variance-authority'),hi2=require('react-icons/hi2'),lu=require('react-icons/lu'),jsxRuntime=require('react/jsx-runtime');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var u__namespace=/*#__PURE__*/_interopNamespace(u);var _=classVarianceAuthority.cva(`
|
|
2
|
-
flex items-center h-12 w-full min-w-0 rounded-md border bg-white px-3 py-3 text-base transition-all outline-none
|
|
3
|
-
dark:bg-input/30 border-input shadow-xs
|
|
4
|
-
placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground
|
|
5
|
-
file:inline-flex file:h-6 file:mr-2 file:border-0 file:text-foreground
|
|
6
|
-
disabled:cursor-not-allowed disabled:opacity-50 disabled:pointer-events-none disabled:bg-gray-200
|
|
7
|
-
focus-visible:ring-ring/50 focus-visible:ring-[3px]
|
|
8
|
-
`,{variants:{variant:{default:`
|
|
9
|
-
hover:enabled:border-dark-green
|
|
10
|
-
focus:enabled:border-dark-green
|
|
11
|
-
focus:enabled:shadow-green-300
|
|
12
|
-
focus-within:shadow
|
|
13
|
-
focus-within:shadow-green-300
|
|
14
|
-
focus-visible:border-dark-green
|
|
15
|
-
`,invalid:`
|
|
16
|
-
border-destructive
|
|
17
|
-
hover:border-destructive
|
|
18
|
-
focus:border-destructive
|
|
19
|
-
focus:shadow-red-100
|
|
20
|
-
focus-within:shadow
|
|
21
|
-
focus-within:shadow-red-100
|
|
22
|
-
focus-visible:border-destructive
|
|
23
|
-
aria-invalid:ring-destructive/20
|
|
24
|
-
dark:aria-invalid:ring-destructive/40
|
|
25
|
-
aria-invalid:border-destructive
|
|
26
|
-
`,search:"pr-8 [&::-webkit-search-cancel-button]:appearance-none [&::-webkit-search-cancel-button]:display-none"}},defaultVariants:{variant:"default"}}),j={default:{inputType:"text",mask:l=>l},phone:{inputType:"tel",mask:chunkIRMVTSQ3_cjs.a},"positive-integer":{inputType:"text",inputMode:"numeric",mask:chunkIRMVTSQ3_cjs.b}},q=u__namespace.forwardRef(({className:l,variant:i,type:T,wrapperClassName:C=void 0,label:s,helperText:f,charLength:c,value:t,defaultValue:M,onChange:b,id:F,labelProps:L,format:p="default",...g},E)=>{let a=j[p],n=p!=="default",v=n?a.inputType:T,P=n?a.inputMode:void 0,[m,h]=u.useState(()=>{let e=t??M??"";return a.mask(e)}),y=F||u__namespace.useId(),V=t!==void 0?t:m,w=(()=>{if(t!==void 0)return V;if(n)return m})(),x=String(w??"").length>0,H=String(w??"").length,K=t!==void 0?{value:a.mask(t)}:n?{value:m}:{};u.useEffect(()=>{n&&t!==void 0&&h(a.mask(t));},[t,p]);let k=e=>{if(n){let I=a.mask(e.target.value);h(I),b?.({...e,target:{...e.target,value:I}});}else b?.(e);},A=e=>{if(n){if(e.metaKey||e.ctrlKey)return;!/[0-9/]/.test(e.key)&&!["Backspace","Delete","ArrowLeft","ArrowRight","Tab"].includes(e.key)&&e.preventDefault();}g.onKeyDown?.(e);};return jsxRuntime.jsxs("div",{className:chunkQRO22BPZ_cjs.a("relative w-full",C),children:[s&&(typeof s=="string"?jsxRuntime.jsx("label",{htmlFor:y,className:"header-xs text-primary mb-2 block font-bold",...L,children:s}):s),jsxRuntime.jsxs("div",{className:"relative",children:[jsxRuntime.jsx("input",{ref:E,id:y,type:v,inputMode:P,"data-slot":"input",className:chunkQRO22BPZ_cjs.a(_({variant:i}),l),onChange:k,onKeyDown:A,...K,...g}),i==="invalid"&&jsxRuntime.jsx(hi2.HiOutlineExclamationCircle,{size:"1.5rem",className:"text-destructive pointer-events-none absolute top-3 right-2"}),i==="search"&&!x&&jsxRuntime.jsx(lu.LuSearch,{size:"1.25rem",className:"pointer-events-none absolute top-3.5 right-3 text-black"}),i==="search"&&x&&jsxRuntime.jsx(lu.LuX,{size:"1.25rem",className:"absolute top-3.5 right-3 cursor-pointer text-black","aria-label":"Clear search",role:"button",onClick:()=>{k?.({target:{value:""}});}}),v==="time"&&jsxRuntime.jsx(lu.LuClock4,{size:"1.25rem",className:"text-muted-foreground pointer-events-none absolute top-3.5 right-3"})]}),(f||c)&&jsxRuntime.jsxs("div",{className:"mt-2 flex items-center justify-between",children:[jsxRuntime.jsx("span",{className:chunkQRO22BPZ_cjs.a("text-sm",i==="invalid"?"text-destructive":"text-secondary"),children:f||""}),c&&jsxRuntime.jsxs("span",{className:chunkQRO22BPZ_cjs.a("text-sm",i==="invalid"?"text-destructive":"text-secondary"),children:[H,"/",c]})]})]})});q.displayName="Input";exports.a=_;exports.b=q;//# sourceMappingURL=chunk-UIJEPPNJ.cjs.map
|
|
27
|
-
//# sourceMappingURL=chunk-UIJEPPNJ.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/v2/input/input.tsx"],"names":["inputVariants","cva","FORMAT_CONFIGS","value","maskPhone","maskPositiveInteger","Input","u","className","variant","passedType","wrapperClassName","label","helperText","charLength","defaultValue","onChange","id","labelProps","format","props","ref","formatConfig","isFormatted","type","inputMode","internalValue","setInternalValue","useState","initial","inputId","currentValue","displayValue","hasValue","currentLength","valueProps","useEffect","handleChange","formatted","handleKeyDown","jsxs","cn","jsx","HiOutlineExclamationCircle","LuSearch","LuX","LuClock4"],"mappings":"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","file":"chunk-UIJEPPNJ.cjs","sourcesContent":["import * as React from 'react';\nimport { ForwardedRef, useEffect, useState } from 'react';\nimport { cva, VariantProps } from 'class-variance-authority';\nimport { HiOutlineExclamationCircle } from 'react-icons/hi2';\nimport { LuClock4, LuSearch, LuX } from 'react-icons/lu';\n\nimport { cn } from '@/lib/utils';\nimport { maskPhone, maskPositiveInteger } from './formatters';\n\nconst inputVariants = cva(\n `\n flex items-center h-12 w-full min-w-0 rounded-md border bg-white px-3 py-3 text-base transition-all outline-none\n dark:bg-input/30 border-input shadow-xs\n placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground\n file:inline-flex file:h-6 file:mr-2 file:border-0 file:text-foreground\n disabled:cursor-not-allowed disabled:opacity-50 disabled:pointer-events-none disabled:bg-gray-200\n focus-visible:ring-ring/50 focus-visible:ring-[3px] \n `,\n {\n variants: {\n variant: {\n default: `\n hover:enabled:border-dark-green \n focus:enabled:border-dark-green\n focus:enabled:shadow-green-300\n focus-within:shadow\n focus-within:shadow-green-300\n focus-visible:border-dark-green \n `,\n invalid: `\n border-destructive\n hover:border-destructive\n focus:border-destructive\n focus:shadow-red-100\n focus-within:shadow\n focus-within:shadow-red-100\n focus-visible:border-destructive\n aria-invalid:ring-destructive/20\n dark:aria-invalid:ring-destructive/40\n aria-invalid:border-destructive \n `,\n // Hide chrome default search clear button with ::-webkit-search-cancel-button\n search:\n 'pr-8 [&::-webkit-search-cancel-button]:appearance-none [&::-webkit-search-cancel-button]:display-none',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\ntype FormatConfig = {\n inputType: React.HTMLInputTypeAttribute;\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n mask: (value: string) => string;\n};\n\nexport type InputFormat = 'default' | 'phone' | 'positive-integer';\n\nconst FORMAT_CONFIGS: Record<InputFormat, FormatConfig> = {\n default: {\n inputType: 'text',\n mask: (value) => value,\n },\n phone: {\n inputType: 'tel',\n mask: maskPhone,\n },\n 'positive-integer': {\n inputType: 'text',\n inputMode: 'numeric',\n mask: maskPositiveInteger,\n },\n};\n\nexport type InputProps = React.ComponentProps<'input'> &\n VariantProps<typeof inputVariants> & {\n wrapperClassName?: string;\n label?: React.ReactNode;\n helperText?: string;\n charLength?: number;\n labelProps?: React.ComponentProps<'label'>;\n format?: InputFormat;\n };\n\nconst Input = React.forwardRef(\n (\n {\n className,\n variant,\n type: passedType,\n wrapperClassName = undefined,\n label,\n helperText,\n charLength,\n value,\n defaultValue,\n onChange,\n id,\n labelProps,\n format = 'default',\n ...props\n }: InputProps,\n ref?: ForwardedRef<HTMLInputElement>,\n ) => {\n const formatConfig = FORMAT_CONFIGS[format];\n const isFormatted = format !== 'default';\n const type = isFormatted ? formatConfig.inputType : passedType;\n const inputMode = isFormatted ? formatConfig.inputMode : undefined;\n\n const [internalValue, setInternalValue] = useState<string>(() => {\n const initial = (value ?? defaultValue ?? '') as string;\n return formatConfig.mask(initial);\n });\n\n const inputId = id || React.useId();\n\n const currentValue = value !== undefined ? value : internalValue;\n\n const displayValue = (() => {\n if (value !== undefined) return currentValue;\n if (isFormatted) return internalValue;\n return undefined;\n })();\n\n const hasValue = String(displayValue ?? '').length > 0;\n const currentLength = String(displayValue ?? '').length;\n\n const valueProps = (() => {\n if (value !== undefined) return { value: formatConfig.mask(value as string) };\n if (isFormatted) return { value: internalValue };\n return {};\n })();\n\n useEffect(() => {\n if (isFormatted && value !== undefined) {\n setInternalValue(formatConfig.mask(value as string));\n }\n }, [value, format]);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (isFormatted) {\n const formatted = formatConfig.mask(e.target.value);\n setInternalValue(formatted);\n onChange?.({ ...e, target: { ...e.target, value: formatted } });\n } else {\n onChange?.(e);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (isFormatted) {\n // Allow events to pass with keyboard shortcuts (Cmd/Ctrl + key)\n if (e.metaKey || e.ctrlKey) {\n return;\n }\n\n if (\n !/[0-9/]/.test(e.key) &&\n !['Backspace', 'Delete', 'ArrowLeft', 'ArrowRight', 'Tab'].includes(e.key)\n ) {\n e.preventDefault();\n }\n }\n props.onKeyDown?.(e);\n };\n\n return (\n <div className={cn('relative w-full', wrapperClassName)}>\n {label &&\n (typeof label === 'string' ? (\n <label\n htmlFor={inputId}\n className=\"header-xs text-primary mb-2 block font-bold\"\n {...labelProps}\n >\n {label}\n </label>\n ) : (\n label\n ))}\n <div className=\"relative\">\n <input\n ref={ref}\n id={inputId}\n type={type}\n inputMode={inputMode}\n data-slot=\"input\"\n className={cn(inputVariants({ variant }), className)}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n {...valueProps}\n {...props}\n />\n {variant === 'invalid' && (\n <HiOutlineExclamationCircle\n size=\"1.5rem\"\n className=\"text-destructive pointer-events-none absolute top-3 right-2\"\n />\n )}\n\n {variant === 'search' && !hasValue && (\n <LuSearch\n size=\"1.25rem\"\n className=\"pointer-events-none absolute top-3.5 right-3 text-black\"\n />\n )}\n {variant === 'search' && hasValue && (\n <LuX\n size=\"1.25rem\"\n className=\"absolute top-3.5 right-3 cursor-pointer text-black\"\n aria-label=\"Clear search\"\n role=\"button\"\n onClick={() => {\n const event = {\n target: { value: '' },\n } as React.ChangeEvent<HTMLInputElement>;\n handleChange?.(event);\n }}\n />\n )}\n\n {type === 'time' && (\n <LuClock4\n size=\"1.25rem\"\n className=\"text-muted-foreground pointer-events-none absolute top-3.5 right-3\"\n />\n )}\n </div>\n {(helperText || charLength) && (\n <div className=\"mt-2 flex items-center justify-between\">\n <span\n className={cn(\n 'text-sm',\n variant === 'invalid' ? 'text-destructive' : 'text-secondary',\n )}\n >\n {helperText || ''}\n </span>\n {charLength && (\n <span\n className={cn(\n 'text-sm',\n variant === 'invalid' ? 'text-destructive' : 'text-secondary',\n )}\n >\n {currentLength}/{charLength}\n </span>\n )}\n </div>\n )}\n </div>\n );\n },\n);\n\nInput.displayName = 'Input';\n\nexport { Input, inputVariants };\n"]}
|