@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.
Files changed (36) hide show
  1. package/README.md +9 -2
  2. package/dist/chunk-2DLCWPKO.cjs +27 -0
  3. package/dist/chunk-2DLCWPKO.cjs.map +1 -0
  4. package/dist/chunk-7QWN4Z56.js +27 -0
  5. package/dist/chunk-7QWN4Z56.js.map +1 -0
  6. package/dist/{chunk-SBGL7Q6I.cjs → chunk-KXR3HDPA.cjs} +2 -2
  7. package/dist/{chunk-SBGL7Q6I.cjs.map → chunk-KXR3HDPA.cjs.map} +1 -1
  8. package/dist/{chunk-FDMT42JJ.js → chunk-R3HGV3DR.js} +2 -2
  9. package/dist/{chunk-FDMT42JJ.js.map → chunk-R3HGV3DR.js.map} +1 -1
  10. package/dist/{chunk-MERMPFZT.js → chunk-WHAXVJN5.js} +2 -2
  11. package/dist/{chunk-MERMPFZT.js.map → chunk-WHAXVJN5.js.map} +1 -1
  12. package/dist/{chunk-O7A6NMSW.cjs → chunk-YVXKLKHE.cjs} +2 -2
  13. package/dist/{chunk-O7A6NMSW.cjs.map → chunk-YVXKLKHE.cjs.map} +1 -1
  14. package/dist/metafile-cjs.json +1 -1
  15. package/dist/metafile-esm.json +1 -1
  16. package/dist/v2/address-input/address-input.cjs +1 -1
  17. package/dist/v2/address-input/address-input.js +1 -1
  18. package/dist/v2/date-picker/date-picker-input.cjs +1 -1
  19. package/dist/v2/date-picker/date-picker-input.js +1 -1
  20. package/dist/v2/date-picker/date-picker.cjs +1 -1
  21. package/dist/v2/date-picker/date-picker.js +1 -1
  22. package/dist/v2/image-preview/image-preview.cjs +1 -1
  23. package/dist/v2/image-preview/image-preview.js +1 -1
  24. package/dist/v2/index.cjs +1 -1
  25. package/dist/v2/index.js +1 -1
  26. package/dist/v2/input/input.cjs +1 -1
  27. package/dist/v2/input/input.d.ts +1 -1
  28. package/dist/v2/input/input.js +1 -1
  29. package/dist/v2/input/input.stories.d.ts +1 -0
  30. package/dist/v2/time-select/time-select.cjs +1 -1
  31. package/dist/v2/time-select/time-select.js +1 -1
  32. package/package.json +5 -5
  33. package/dist/chunk-LFGDYEFJ.js +0 -27
  34. package/dist/chunk-LFGDYEFJ.js.map +0 -1
  35. package/dist/chunk-UIJEPPNJ.cjs +0 -27
  36. package/dist/chunk-UIJEPPNJ.cjs.map +0 -1
@@ -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"]}