@solibo/solibo-ui 1.1.7 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/dist/assets/index10.css +1 -1
  2. package/dist/assets/index11.css +1 -1
  3. package/dist/assets/index12.css +1 -1
  4. package/dist/assets/index13.css +1 -1
  5. package/dist/assets/index14.css +1 -1
  6. package/dist/assets/index15.css +1 -1
  7. package/dist/assets/index16.css +1 -1
  8. package/dist/assets/index17.css +1 -1
  9. package/dist/assets/index18.css +1 -1
  10. package/dist/assets/index19.css +1 -0
  11. package/dist/assets/index20.css +0 -1
  12. package/dist/assets/index21.css +1 -1
  13. package/dist/assets/index22.css +1 -1
  14. package/dist/assets/index23.css +1 -1
  15. package/dist/assets/index24.css +1 -1
  16. package/dist/assets/index25.css +1 -1
  17. package/dist/assets/index26.css +1 -1
  18. package/dist/assets/index27.css +1 -1
  19. package/dist/assets/index28.css +1 -1
  20. package/dist/assets/index29.css +1 -1
  21. package/dist/assets/index30.css +1 -1
  22. package/dist/assets/index31.css +1 -1
  23. package/dist/assets/index32.css +1 -1
  24. package/dist/assets/index33.css +1 -1
  25. package/dist/assets/index34.css +1 -1
  26. package/dist/assets/index35.css +1 -1
  27. package/dist/assets/index36.css +1 -1
  28. package/dist/assets/index37.css +1 -1
  29. package/dist/assets/index38.css +1 -1
  30. package/dist/assets/index39.css +1 -1
  31. package/dist/assets/index40.css +1 -1
  32. package/dist/assets/index41.css +1 -1
  33. package/dist/assets/index42.css +1 -1
  34. package/dist/assets/index43.css +1 -1
  35. package/dist/assets/index44.css +1 -1
  36. package/dist/assets/index45.css +1 -1
  37. package/dist/assets/index46.css +1 -1
  38. package/dist/assets/index47.css +1 -1
  39. package/dist/assets/index48.css +1 -1
  40. package/dist/assets/index49.css +1 -1
  41. package/dist/assets/index50.css +1 -1
  42. package/dist/assets/index51.css +1 -1
  43. package/dist/assets/index52.css +1 -0
  44. package/dist/assets/index53.css +1 -0
  45. package/dist/assets/index54.css +1 -0
  46. package/dist/assets/index9.css +1 -1
  47. package/dist/components/app-link/index.cjs +1 -1
  48. package/dist/components/app-link/index.js +1 -1
  49. package/dist/components/app-shell/index.cjs +2 -0
  50. package/dist/components/app-shell/index.cjs.map +1 -0
  51. package/dist/components/app-shell/index.js +18 -0
  52. package/dist/components/app-shell/index.js.map +1 -0
  53. package/dist/components/aside/index.cjs +1 -1
  54. package/dist/components/aside/index.js +1 -1
  55. package/dist/components/avatar/index.cjs +1 -1
  56. package/dist/components/avatar/index.js +1 -1
  57. package/dist/components/badge/index.cjs +1 -1
  58. package/dist/components/badge/index.js +1 -1
  59. package/dist/components/banner/index.cjs +1 -1
  60. package/dist/components/banner/index.js +1 -1
  61. package/dist/components/branding/index.cjs +1 -1
  62. package/dist/components/branding/index.js +1 -1
  63. package/dist/components/button/index.cjs +1 -1
  64. package/dist/components/button/index.js +1 -1
  65. package/dist/components/card/index.cjs +1 -1
  66. package/dist/components/card/index.js +1 -1
  67. package/dist/components/checkbox/index.cjs +1 -1
  68. package/dist/components/checkbox/index.js +1 -1
  69. package/dist/components/chip/index.cjs +1 -1
  70. package/dist/components/chip/index.js +1 -1
  71. package/dist/components/collapsible/index.cjs +1 -1
  72. package/dist/components/collapsible/index.js +1 -1
  73. package/dist/components/controls/index.cjs +1 -1
  74. package/dist/components/controls/index.js +1 -1
  75. package/dist/components/croppable/index.cjs +1 -1
  76. package/dist/components/croppable/index.js +1 -1
  77. package/dist/components/dialog/index.cjs +1 -1
  78. package/dist/components/dialog/index.js +1 -1
  79. package/dist/components/divider/index.cjs +2 -0
  80. package/dist/components/divider/index.cjs.map +1 -0
  81. package/dist/components/divider/index.js +12 -0
  82. package/dist/components/divider/index.js.map +1 -0
  83. package/dist/components/dropdown/index.cjs +1 -1
  84. package/dist/components/dropdown/index.js +3 -3
  85. package/dist/components/dropzone/index.cjs +1 -1
  86. package/dist/components/dropzone/index.js +1 -1
  87. package/dist/components/editor/index.cjs +1 -1
  88. package/dist/components/editor/index.js +2 -2
  89. package/dist/components/empty-state/index.cjs +1 -1
  90. package/dist/components/empty-state/index.js +1 -1
  91. package/dist/components/fieldset/index.cjs +1 -1
  92. package/dist/components/fieldset/index.js +1 -1
  93. package/dist/components/figure/index.cjs +1 -1
  94. package/dist/components/figure/index.js +1 -1
  95. package/dist/components/file/index.cjs +1 -1
  96. package/dist/components/file/index.js +1 -1
  97. package/dist/components/footer/index.cjs +1 -1
  98. package/dist/components/footer/index.js +1 -1
  99. package/dist/components/form/index.cjs +1 -1
  100. package/dist/components/form/index.js +1 -1
  101. package/dist/components/graph/index.cjs +1 -1
  102. package/dist/components/graph/index.js +1 -1
  103. package/dist/components/group/index.cjs +1 -1
  104. package/dist/components/group/index.js +1 -1
  105. package/dist/components/header/index.cjs +1 -1
  106. package/dist/components/header/index.js +1 -1
  107. package/dist/components/icon/index.cjs +1 -1
  108. package/dist/components/icon/index.js +1 -1
  109. package/dist/components/iframe/index.cjs +1 -1
  110. package/dist/components/iframe/index.js +1 -1
  111. package/dist/components/image/index.cjs +1 -1
  112. package/dist/components/image/index.js +1 -1
  113. package/dist/components/input/index.cjs +1 -1
  114. package/dist/components/input/index.js +1 -1
  115. package/dist/components/link/index.cjs +1 -1
  116. package/dist/components/link/index.js +1 -1
  117. package/dist/components/list/index.cjs +1 -1
  118. package/dist/components/list/index.js +1 -1
  119. package/dist/components/loading/index.cjs +1 -1
  120. package/dist/components/loading/index.js +1 -1
  121. package/dist/components/message/index.cjs +1 -1
  122. package/dist/components/message/index.js +1 -1
  123. package/dist/components/messages/index.cjs +1 -1
  124. package/dist/components/messages/index.js +1 -1
  125. package/dist/components/nav/index.cjs +1 -1
  126. package/dist/components/nav/index.cjs.map +1 -1
  127. package/dist/components/nav/index.js +47 -34
  128. package/dist/components/nav/index.js.map +1 -1
  129. package/dist/components/object/index.cjs +1 -1
  130. package/dist/components/object/index.js +1 -1
  131. package/dist/components/page-layout/index.cjs +2 -0
  132. package/dist/components/page-layout/index.cjs.map +1 -0
  133. package/dist/components/page-layout/index.js +23 -0
  134. package/dist/components/page-layout/index.js.map +1 -0
  135. package/dist/components/popover/index.cjs +1 -1
  136. package/dist/components/popover/index.js +1 -1
  137. package/dist/components/search/index.cjs +1 -1
  138. package/dist/components/search/index.js +1 -1
  139. package/dist/components/select/index.cjs +1 -1
  140. package/dist/components/select/index.js +1 -1
  141. package/dist/components/toolbar/index.cjs +1 -1
  142. package/dist/components/toolbar/index.js +1 -1
  143. package/dist/components/tooltip/index.cjs +1 -1
  144. package/dist/components/tooltip/index.js +1 -1
  145. package/dist/{index-CwIzKfBo.js → index-BLb3JiCr.js} +2 -2
  146. package/dist/{index-CwIzKfBo.js.map → index-BLb3JiCr.js.map} +1 -1
  147. package/dist/{index-CXaYq0By.cjs → index-Bt7vnwji.cjs} +2 -2
  148. package/dist/{index-CXaYq0By.cjs.map → index-Bt7vnwji.cjs.map} +1 -1
  149. package/dist/index-CQlMdqOp.cjs +2 -0
  150. package/dist/index-CQlMdqOp.cjs.map +1 -0
  151. package/dist/index-CbJ2-IPc.js +83 -0
  152. package/dist/index-CbJ2-IPc.js.map +1 -0
  153. package/dist/index.cjs +1 -1
  154. package/dist/index.d.ts +29 -2
  155. package/dist/index.js +109 -102
  156. package/dist/index.js.map +1 -1
  157. package/dist/tokens.json +1 -1
  158. package/package.json +1 -1
  159. package/dist/index-5yOssOic.cjs +0 -2
  160. package/dist/index-5yOssOic.cjs.map +0 -1
  161. package/dist/index-Cv6TtBnd.js +0 -76
  162. package/dist/index-Cv6TtBnd.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-CbJ2-IPc.js","sources":["../src/utils/text.ts","../src/components/input/index.tsx"],"sourcesContent":["export function capitalizeFirstLetter(value: string): string {\n return value ? `${value[0].toLocaleUpperCase()}${value.slice(1)}` : value;\n}\n\nexport function formatInlineLabel(value: string): string {\n const label = capitalizeFirstLetter(value);\n return label && !label.endsWith(':') ? `${label}:` : label;\n}\n","import cx from 'classix';\nimport { useEffect, useId, useState } from 'react';\n\nimport { IconName, iconSVG } from '@/components/icon/icons.ts';\nimport { composeEventHandlers } from '@/utils/compose-event-handlers';\nimport { formatInlineLabel } from '@/utils/text';\nimport { useTouched } from '@/utils/use-touched';\n\nimport styles from './styles.module.css';\n\nexport type InputProps = React.ComponentPropsWithRef<'input'> & {\n defaultCountryCode?: string;\n disabled?: boolean;\n errorMessage?: React.ReactNode;\n icon?: IconName;\n invalid?: boolean;\n label?: string;\n onClick?: React.MouseEventHandler<HTMLInputElement>;\n placeholder?: string;\n variant?: 'default' | 'inline';\n type?:\n | 'date'\n | 'datetime-local'\n | 'email'\n | 'number'\n | 'password'\n | 'radio'\n | 'search'\n | 'tel'\n | 'text';\n};\n\nexport function Input({\n className,\n defaultCountryCode = '+47',\n disabled = false,\n errorMessage,\n icon,\n invalid = false,\n label,\n onBlur: onBlurProp,\n placeholder,\n ref,\n required,\n style,\n type = 'text',\n variant = 'default',\n ...props\n}: InputProps) {\n const generatedErrorId = useId();\n const [countryCode, setCountryCode] = useState('');\n const [phoneNumber, setPhoneNumber] = useState('');\n const { name, onChange, pattern, value, ...restProps } = props;\n const { touched, onBlur } = useTouched(value === '');\n const inputIcon = icon && type !== 'radio' && type !== 'datetime-local' ? icon : undefined;\n const displayLabel = label && variant === 'inline' ? formatInlineLabel(label) : label;\n const errorId = invalid && errorMessage ? generatedErrorId : undefined;\n const describedBy = [props['aria-describedby'], errorId].filter(Boolean).join(' ') || undefined;\n\n type withVars =\n | (React.CSSProperties & {\n '--icon-svg'?: string;\n })\n | undefined;\n\n const withVars: withVars = inputIcon\n ? {\n ...style,\n '--icon-svg': iconSVG(inputIcon),\n }\n : style;\n const handleBlur = composeEventHandlers(onBlur, onBlurProp);\n\n useEffect(() => {\n if (onChange && type === 'tel') {\n const target = {\n name,\n value: phoneNumber\n ? (countryCode || defaultCountryCode).split(' ').join('') +\n phoneNumber.split(' ').join('')\n : undefined,\n } as unknown as HTMLInputElement;\n\n onChange({ target, currentTarget: target } as React.ChangeEvent<HTMLInputElement>);\n }\n }, [countryCode, defaultCountryCode, name, onChange, phoneNumber, type]);\n\n useEffect(() => {\n if (type === 'tel' && !value) {\n setPhoneNumber('');\n setCountryCode('');\n }\n }, [type, value]);\n\n const telephoneInput = (\n <>\n <input\n disabled={disabled}\n hidden\n onChange={onChange}\n pattern={undefined}\n placeholder={placeholder}\n ref={ref}\n type={type}\n value={value}\n />\n <input\n type='text'\n className={cx(styles.code, styles.input)}\n disabled={disabled}\n maxLength={5}\n onChange={(e) => setCountryCode(e.target.value)}\n placeholder={defaultCountryCode}\n value={countryCode}\n />\n <input\n {...restProps}\n aria-describedby={describedBy}\n aria-invalid={invalid ? true : props['aria-invalid']}\n type='tel'\n className={cx(styles.input, className, touched && styles.touched)}\n data-icon={inputIcon ? 'true' : undefined}\n disabled={disabled}\n maxLength={14}\n name={undefined}\n onChange={(e) => setPhoneNumber(e.target.value)}\n onBlur={handleBlur}\n pattern={pattern}\n required={required}\n style={withVars}\n value={phoneNumber}\n />\n </>\n );\n\n return (\n <div className={styles.field}>\n <label className={cx(styles.label, variant === 'inline' && styles.inline)}>\n {displayLabel && (\n <span data-required={required && variant !== 'inline' ? true : undefined}>\n {displayLabel}\n </span>\n )}\n {type === 'tel' ? (\n telephoneInput\n ) : (\n <input\n {...props}\n aria-describedby={describedBy}\n aria-invalid={invalid ? true : props['aria-invalid']}\n ref={ref}\n className={cx(styles.input, className, touched && styles.touched)}\n data-icon={inputIcon ? 'true' : undefined}\n disabled={disabled}\n onBlur={handleBlur}\n placeholder={placeholder}\n required={required}\n style={withVars}\n type={type}\n />\n )}\n </label>\n {errorId && (\n <span\n className={styles.error}\n id={errorId}\n role='alert'\n >\n {errorMessage}\n </span>\n )}\n </div>\n );\n}\n"],"names":["capitalizeFirstLetter","value","toLocaleUpperCase","slice","formatInlineLabel","label","endsWith","Input","className","defaultCountryCode","disabled","errorMessage","icon","invalid","onBlur","onBlurProp","placeholder","ref","required","style","type","variant","props","generatedErrorId","useId","countryCode","setCountryCode","useState","phoneNumber","setPhoneNumber","name","onChange","pattern","restProps","touched","useTouched","inputIcon","undefined","displayLabel","errorId","describedBy","filter","Boolean","join","withVars","iconSVG","handleBlur","composeEventHandlers","useEffect","target","split","currentTarget","telephoneInput","jsxs","Fragment","jsx","cx","styles","code","input","e","field","inline","error"],"mappings":"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"}
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('./assets/index.css');const o=require("./components/app-link/index.cjs"),t=require("./components/aside/index.cjs"),r=require("./components/avatar/index.cjs"),i=require("./components/badge/index.cjs"),s=require("./components/banner/index.cjs"),c=require("./components/branding/index.cjs"),_=require("./components/button/index.cjs"),p=require("./components/card/index.cjs"),a=require("./components/checkbox/index.cjs"),d=require("./components/chip/index.cjs"),u=require("./components/collapsible/index.cjs"),m=require("./components/controls/index.cjs"),l=require("./components/croppable/index.cjs"),x=require("./components/dialog/index.cjs"),q=require("./components/dropdown/index.cjs"),g=require("./components/dropzone/index.cjs"),b=require("./components/editor/index.cjs"),T=require("./components/empty-state/index.cjs"),h=require("./components/fieldset/index.cjs"),S=require("./components/figure/index.cjs"),v=require("./components/file/index.cjs"),C=require("./components/footer/index.cjs"),L=require("./components/form/index.cjs"),F=require("./components/graph/index.cjs"),I=require("./components/group/index.cjs"),f=require("./components/header/index.cjs"),k=require("./components/icon/index.cjs"),B=require("./components/iframe/index.cjs"),M=require("./components/image/index.cjs"),A=require("./index-5yOssOic.cjs"),D=require("./components/link/index.cjs"),y=require("./components/list/index.cjs"),O=require("./components/loading/index.cjs"),P=require("./components/menu/index.cjs"),j=require("./components/message/index.cjs"),w=require("./components/messages/index.cjs"),e=require("./components/nav/index.cjs"),E=require("./components/object/index.cjs"),G=require("./components/popover/index.cjs"),N=require("./components/portal/index.cjs"),z=require("./components/search/index.cjs"),H=require("./index-CXaYq0By.cjs"),n=require("./components/sortable/index.cjs"),W=require("./components/table/index.cjs"),J=require("./components/textarea/index.cjs"),K=require("./components/toast/index.cjs"),Q=require("./components/toasts/index.cjs"),R=require("./components/toggle/index.cjs"),U=require("./components/toolbar/index.cjs"),V=require("./components/tooltip/index.cjs"),X=require("./components/widget/index.cjs");exports.AppLink=o.AppLink;exports.Aside=t.Aside;exports.Avatar=r.Avatar;exports.Badge=i.Badge;exports.Banner=s.Banner;exports.Branding=c.Branding;exports.Button=_.Button;exports.Card=p.Card;exports.Checkbox=a.Checkbox;exports.Chip=d.Chip;exports.Collapsible=u.Collapsible;exports.Controls=m.Controls;exports.Croppable=l.Croppable;exports.Dialog=x.Dialog;exports.Dropdown=q.Dropdown;exports.Dropzone=g.Dropzone;exports.Editor=b.Editor;exports.EmptyState=T.EmptyState;exports.Fieldset=h.Fieldset;exports.Figure=S.Figure;exports.File=v.File;exports.Footer=C.Footer;exports.Form=L.Form;exports.Graph=F.Graph;exports.Group=I.Group;exports.Header=f.Header;exports.Icon=k.Icon;exports.Iframe=B.Iframe;exports.Image=M.Image;exports.Input=A.Input;exports.Link=D.Link;exports.List=y.List;exports.Loading=O.Loading;exports.Menu=P.Menu;exports.Message=j.Message;exports.Messages=w.Messages;exports.Nav=e.Nav;exports.NavLabel=e.NavLabel;exports.Object=E.Object;exports.Popover=G.Popover;exports.Portal=N.Portal;exports.Search=z.Search;exports.Select=H.Select;exports.Sortable=n.Sortable;exports.useOptionalSortableItem=n.useOptionalSortableItem;exports.Table=W.Table;exports.Textarea=J.Textarea;exports.Toast=K.Toast;exports.Toasts=Q.Toasts;exports.Toggle=R.Toggle;exports.Toolbar=U.Toolbar;exports.Tooltip=V.Tooltip;exports.Widget=X.Widget;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('./assets/index.css');const o=require("./components/app-link/index.cjs"),t=require("./components/app-shell/index.cjs"),r=require("./components/aside/index.cjs"),i=require("./components/avatar/index.cjs"),s=require("./components/badge/index.cjs"),c=require("./components/banner/index.cjs"),p=require("./components/branding/index.cjs"),_=require("./components/button/index.cjs"),a=require("./components/card/index.cjs"),d=require("./components/checkbox/index.cjs"),u=require("./components/chip/index.cjs"),m=require("./components/collapsible/index.cjs"),l=require("./components/controls/index.cjs"),x=require("./components/croppable/index.cjs"),q=require("./components/dialog/index.cjs"),g=require("./components/divider/index.cjs"),b=require("./components/dropdown/index.cjs"),v=require("./components/dropzone/index.cjs"),h=require("./components/editor/index.cjs"),S=require("./components/empty-state/index.cjs"),T=require("./components/fieldset/index.cjs"),L=require("./components/figure/index.cjs"),C=require("./components/file/index.cjs"),I=require("./components/footer/index.cjs"),F=require("./components/form/index.cjs"),f=require("./components/graph/index.cjs"),k=require("./components/group/index.cjs"),y=require("./components/header/index.cjs"),A=require("./components/icon/index.cjs"),B=require("./components/iframe/index.cjs"),D=require("./components/image/index.cjs"),M=require("./index-CQlMdqOp.cjs"),P=require("./components/link/index.cjs"),N=require("./components/list/index.cjs"),O=require("./components/loading/index.cjs"),j=require("./components/menu/index.cjs"),w=require("./components/message/index.cjs"),E=require("./components/messages/index.cjs"),e=require("./components/nav/index.cjs"),G=require("./components/object/index.cjs"),z=require("./components/page-layout/index.cjs"),H=require("./components/popover/index.cjs"),W=require("./components/portal/index.cjs"),J=require("./components/search/index.cjs"),K=require("./index-Bt7vnwji.cjs"),n=require("./components/sortable/index.cjs"),Q=require("./components/table/index.cjs"),R=require("./components/textarea/index.cjs"),U=require("./components/toast/index.cjs"),V=require("./components/toasts/index.cjs"),X=require("./components/toggle/index.cjs"),Y=require("./components/toolbar/index.cjs"),Z=require("./components/tooltip/index.cjs"),$=require("./components/widget/index.cjs");exports.AppLink=o.AppLink;exports.AppShell=t.AppShell;exports.Aside=r.Aside;exports.Avatar=i.Avatar;exports.Badge=s.Badge;exports.Banner=c.Banner;exports.Branding=p.Branding;exports.Button=_.Button;exports.Card=a.Card;exports.Checkbox=d.Checkbox;exports.Chip=u.Chip;exports.Collapsible=m.Collapsible;exports.Controls=l.Controls;exports.Croppable=x.Croppable;exports.Dialog=q.Dialog;exports.Divider=g.Divider;exports.Dropdown=b.Dropdown;exports.Dropzone=v.Dropzone;exports.Editor=h.Editor;exports.EmptyState=S.EmptyState;exports.Fieldset=T.Fieldset;exports.Figure=L.Figure;exports.File=C.File;exports.Footer=I.Footer;exports.Form=F.Form;exports.Graph=f.Graph;exports.Group=k.Group;exports.Header=y.Header;exports.Icon=A.Icon;exports.Iframe=B.Iframe;exports.Image=D.Image;exports.Input=M.Input;exports.Link=P.Link;exports.List=N.List;exports.Loading=O.Loading;exports.Menu=j.Menu;exports.Message=w.Message;exports.Messages=E.Messages;exports.Nav=e.Nav;exports.NavItem=e.NavItem;exports.NavLabel=e.NavLabel;exports.Object=G.Object;exports.PageLayout=z.PageLayout;exports.Popover=H.Popover;exports.Portal=W.Portal;exports.Search=J.Search;exports.Select=K.Select;exports.Sortable=n.Sortable;exports.useOptionalSortableItem=n.useOptionalSortableItem;exports.Table=Q.Table;exports.Textarea=R.Textarea;exports.Toast=U.Toast;exports.Toasts=V.Toasts;exports.Toggle=X.Toggle;exports.Toolbar=Y.Toolbar;exports.Tooltip=Z.Tooltip;exports.Widget=$.Widget;
2
2
  //# sourceMappingURL=index.cjs.map
package/dist/index.d.ts CHANGED
@@ -12,6 +12,12 @@ declare type AppLinkProps = {
12
12
  type: 'apple' | 'google';
13
13
  };
14
14
 
15
+ export declare const AppShell: ({ children, className, navigation, ...props }: AppShellProps) => JSX.Element;
16
+
17
+ export declare type AppShellProps = React.ComponentPropsWithoutRef<'div'> & {
18
+ navigation?: React.ReactNode;
19
+ };
20
+
15
21
  export declare const Aside: ({ children, className, sticky, variant }: AsideProps) => JSX.Element;
16
22
 
17
23
  declare type AsideProps = {
@@ -189,6 +195,10 @@ declare type DialogProps = default_2.DialogHTMLAttributes<HTMLDialogElement> & {
189
195
  setOpen?: default_2.Dispatch<default_2.SetStateAction<boolean>>;
190
196
  };
191
197
 
198
+ export declare const Divider: ({ className, ...props }: DividerProps) => JSX.Element;
199
+
200
+ export declare type DividerProps = React.ComponentPropsWithoutRef<'hr'>;
201
+
192
202
  export declare const Dropdown: ({ children: selectElement, className, combobox, createOption, emptyLabel, label, renderOption, searchPlaceholder, selectedItems, variant, ...props }: DropdownProps) => JSX.Element;
193
203
 
194
204
  export declare type DropdownCreateOption = {
@@ -575,12 +585,14 @@ declare type ImageProps = ImgHTMLAttributes<HTMLImageElement> & {
575
585
  showOnError?: boolean;
576
586
  };
577
587
 
578
- export declare function Input({ className, defaultCountryCode, disabled, icon, label, onBlur: onBlurProp, placeholder, ref, required, style, type, variant, ...props }: InputProps): JSX.Element;
588
+ export declare function Input({ className, defaultCountryCode, disabled, errorMessage, icon, invalid, label, onBlur: onBlurProp, placeholder, ref, required, style, type, variant, ...props }: InputProps): JSX.Element;
579
589
 
580
- declare type InputProps = React.ComponentPropsWithRef<'input'> & {
590
+ export declare type InputProps = React.ComponentPropsWithRef<'input'> & {
581
591
  defaultCountryCode?: string;
582
592
  disabled?: boolean;
593
+ errorMessage?: React.ReactNode;
583
594
  icon?: IconName;
595
+ invalid?: boolean;
584
596
  label?: string;
585
597
  onClick?: React.MouseEventHandler<HTMLInputElement>;
586
598
  placeholder?: string;
@@ -703,6 +715,13 @@ declare type NativeSelectProps = Omit<default_2.ComponentPropsWithoutRef<'select
703
715
 
704
716
  export declare const Nav: ({ animation, children, className, horizontal, variant, ...props }: NavProps) => JSX.Element;
705
717
 
718
+ export declare const NavItem: ({ actions, children, className, highlighted, ...props }: NavItemProps) => JSX.Element;
719
+
720
+ export declare type NavItemProps = React.HTMLAttributes<HTMLDivElement> & {
721
+ actions?: React.ReactNode;
722
+ highlighted?: boolean;
723
+ };
724
+
706
725
  export declare const NavLabel: ({ className, ...props }: NavLabelProps) => JSX.Element;
707
726
 
708
727
  export declare type NavLabelProps = React.HTMLAttributes<HTMLSpanElement>;
@@ -723,6 +742,14 @@ declare type ObjectProps = Omit<ComponentPropsWithoutRef<'object'>, 'data' | 'ty
723
742
  url: string;
724
743
  };
725
744
 
745
+ export declare const PageLayout: ({ "aria-busy": ariaBusy, children, className, fillViewport, loading, sidebar, ...props }: PageLayoutProps) => JSX.Element;
746
+
747
+ export declare type PageLayoutProps = React.ComponentPropsWithoutRef<'main'> & {
748
+ fillViewport?: boolean;
749
+ loading?: boolean;
750
+ sidebar?: React.ReactNode;
751
+ };
752
+
726
753
  export declare type PendingInlineImage = {
727
754
  file: File;
728
755
  slot: string;
package/dist/index.js CHANGED
@@ -1,107 +1,114 @@
1
1
  import { AppLink as e } from "./components/app-link/index.js";
2
- import { Aside as p } from "./components/aside/index.js";
3
- import { Avatar as x } from "./components/avatar/index.js";
4
- import { Badge as a } from "./components/badge/index.js";
5
- import { Banner as i } from "./components/banner/index.js";
6
- import { Branding as n } from "./components/branding/index.js";
7
- import { Button as d } from "./components/button/index.js";
8
- import { Card as T } from "./components/card/index.js";
9
- import { Checkbox as C } from "./components/checkbox/index.js";
10
- import { Chip as S } from "./components/chip/index.js";
11
- import { Collapsible as F } from "./components/collapsible/index.js";
12
- import { Controls as h } from "./components/controls/index.js";
13
- import { Croppable as B } from "./components/croppable/index.js";
14
- import { Dialog as A } from "./components/dialog/index.js";
15
- import { Dropdown as M } from "./components/dropdown/index.js";
16
- import { Dropzone as G } from "./components/dropzone/index.js";
17
- import { Editor as O } from "./components/editor/index.js";
18
- import { EmptyState as j } from "./components/empty-state/index.js";
19
- import { Fieldset as y } from "./components/fieldset/index.js";
20
- import { Figure as H } from "./components/figure/index.js";
21
- import { File as q } from "./components/file/index.js";
22
- import { Footer as K } from "./components/footer/index.js";
23
- import { Form as R } from "./components/form/index.js";
24
- import { Graph as V } from "./components/graph/index.js";
25
- import { Group as Y } from "./components/group/index.js";
26
- import { Header as _ } from "./components/header/index.js";
27
- import { Icon as oo } from "./components/icon/index.js";
28
- import { Iframe as eo } from "./components/iframe/index.js";
29
- import { Image as po } from "./components/image/index.js";
30
- import { I as xo } from "./index-Cv6TtBnd.js";
31
- import { Link as ao } from "./components/link/index.js";
32
- import { List as io } from "./components/list/index.js";
33
- import { Loading as no } from "./components/loading/index.js";
34
- import { Menu as bo } from "./components/menu/index.js";
35
- import { Message as uo } from "./components/message/index.js";
36
- import { Messages as Io } from "./components/messages/index.js";
37
- import { Nav as co, NavLabel as Fo } from "./components/nav/index.js";
38
- import { Object as ho } from "./components/object/index.js";
39
- import { Popover as Bo } from "./components/popover/index.js";
40
- import { Portal as Ao } from "./components/portal/index.js";
41
- import { Search as Mo } from "./components/search/index.js";
42
- import { S as Go } from "./index-CwIzKfBo.js";
43
- import { Sortable as Oo, useOptionalSortableItem as Po } from "./components/sortable/index.js";
44
- import { Table as wo } from "./components/table/index.js";
45
- import { Textarea as zo } from "./components/textarea/index.js";
46
- import { Toast as Wo } from "./components/toast/index.js";
47
- import { Toasts as Jo } from "./components/toasts/index.js";
48
- import { Toggle as Qo } from "./components/toggle/index.js";
49
- import { Toolbar as Uo } from "./components/toolbar/index.js";
50
- import { Tooltip as Xo } from "./components/tooltip/index.js";
51
- import { Widget as Zo } from "./components/widget/index.js";
2
+ import { AppShell as p } from "./components/app-shell/index.js";
3
+ import { Aside as x } from "./components/aside/index.js";
4
+ import { Avatar as a } from "./components/avatar/index.js";
5
+ import { Badge as i } from "./components/badge/index.js";
6
+ import { Banner as n } from "./components/banner/index.js";
7
+ import { Branding as d } from "./components/branding/index.js";
8
+ import { Button as u } from "./components/button/index.js";
9
+ import { Card as S } from "./components/card/index.js";
10
+ import { Checkbox as v } from "./components/checkbox/index.js";
11
+ import { Chip as L } from "./components/chip/index.js";
12
+ import { Collapsible as h } from "./components/collapsible/index.js";
13
+ import { Controls as A } from "./components/controls/index.js";
14
+ import { Croppable as D } from "./components/croppable/index.js";
15
+ import { Dialog as M } from "./components/dialog/index.js";
16
+ import { Divider as P } from "./components/divider/index.js";
17
+ import { Dropdown as E } from "./components/dropdown/index.js";
18
+ import { Dropzone as O } from "./components/dropzone/index.js";
19
+ import { Editor as w } from "./components/editor/index.js";
20
+ import { EmptyState as H } from "./components/empty-state/index.js";
21
+ import { Fieldset as q } from "./components/fieldset/index.js";
22
+ import { Figure as K } from "./components/figure/index.js";
23
+ import { File as R } from "./components/file/index.js";
24
+ import { Footer as V } from "./components/footer/index.js";
25
+ import { Form as Y } from "./components/form/index.js";
26
+ import { Graph as _ } from "./components/graph/index.js";
27
+ import { Group as oo } from "./components/group/index.js";
28
+ import { Header as eo } from "./components/header/index.js";
29
+ import { Icon as po } from "./components/icon/index.js";
30
+ import { Iframe as xo } from "./components/iframe/index.js";
31
+ import { Image as ao } from "./components/image/index.js";
32
+ import { I as io } from "./index-CbJ2-IPc.js";
33
+ import { Link as no } from "./components/link/index.js";
34
+ import { List as bo } from "./components/list/index.js";
35
+ import { Loading as Io } from "./components/loading/index.js";
36
+ import { Menu as To } from "./components/menu/index.js";
37
+ import { Message as Co } from "./components/message/index.js";
38
+ import { Messages as co } from "./components/messages/index.js";
39
+ import { Nav as Fo, NavItem as Ao, NavLabel as Bo } from "./components/nav/index.js";
40
+ import { Object as ko } from "./components/object/index.js";
41
+ import { PageLayout as No } from "./components/page-layout/index.js";
42
+ import { Popover as yo } from "./components/popover/index.js";
43
+ import { Portal as Go } from "./components/portal/index.js";
44
+ import { Search as jo } from "./components/search/index.js";
45
+ import { S as zo } from "./index-BLb3JiCr.js";
46
+ import { Sortable as Wo, useOptionalSortableItem as qo } from "./components/sortable/index.js";
47
+ import { Table as Ko } from "./components/table/index.js";
48
+ import { Textarea as Ro } from "./components/textarea/index.js";
49
+ import { Toast as Vo } from "./components/toast/index.js";
50
+ import { Toasts as Yo } from "./components/toasts/index.js";
51
+ import { Toggle as _o } from "./components/toggle/index.js";
52
+ import { Toolbar as or } from "./components/toolbar/index.js";
53
+ import { Tooltip as er } from "./components/tooltip/index.js";
54
+ import { Widget as pr } from "./components/widget/index.js";
52
55
  import './assets/index.css';export {
53
56
  e as AppLink,
54
- p as Aside,
55
- x as Avatar,
56
- a as Badge,
57
- i as Banner,
58
- n as Branding,
59
- d as Button,
60
- T as Card,
61
- C as Checkbox,
62
- S as Chip,
63
- F as Collapsible,
64
- h as Controls,
65
- B as Croppable,
66
- A as Dialog,
67
- M as Dropdown,
68
- G as Dropzone,
69
- O as Editor,
70
- j as EmptyState,
71
- y as Fieldset,
72
- H as Figure,
73
- q as File,
74
- K as Footer,
75
- R as Form,
76
- V as Graph,
77
- Y as Group,
78
- _ as Header,
79
- oo as Icon,
80
- eo as Iframe,
81
- po as Image,
82
- xo as Input,
83
- ao as Link,
84
- io as List,
85
- no as Loading,
86
- bo as Menu,
87
- uo as Message,
88
- Io as Messages,
89
- co as Nav,
90
- Fo as NavLabel,
91
- ho as Object,
92
- Bo as Popover,
93
- Ao as Portal,
94
- Mo as Search,
95
- Go as Select,
96
- Oo as Sortable,
97
- wo as Table,
98
- zo as Textarea,
99
- Wo as Toast,
100
- Jo as Toasts,
101
- Qo as Toggle,
102
- Uo as Toolbar,
103
- Xo as Tooltip,
104
- Zo as Widget,
105
- Po as useOptionalSortableItem
57
+ p as AppShell,
58
+ x as Aside,
59
+ a as Avatar,
60
+ i as Badge,
61
+ n as Banner,
62
+ d as Branding,
63
+ u as Button,
64
+ S as Card,
65
+ v as Checkbox,
66
+ L as Chip,
67
+ h as Collapsible,
68
+ A as Controls,
69
+ D as Croppable,
70
+ M as Dialog,
71
+ P as Divider,
72
+ E as Dropdown,
73
+ O as Dropzone,
74
+ w as Editor,
75
+ H as EmptyState,
76
+ q as Fieldset,
77
+ K as Figure,
78
+ R as File,
79
+ V as Footer,
80
+ Y as Form,
81
+ _ as Graph,
82
+ oo as Group,
83
+ eo as Header,
84
+ po as Icon,
85
+ xo as Iframe,
86
+ ao as Image,
87
+ io as Input,
88
+ no as Link,
89
+ bo as List,
90
+ Io as Loading,
91
+ To as Menu,
92
+ Co as Message,
93
+ co as Messages,
94
+ Fo as Nav,
95
+ Ao as NavItem,
96
+ Bo as NavLabel,
97
+ ko as Object,
98
+ No as PageLayout,
99
+ yo as Popover,
100
+ Go as Portal,
101
+ jo as Search,
102
+ zo as Select,
103
+ Wo as Sortable,
104
+ Ko as Table,
105
+ Ro as Textarea,
106
+ Vo as Toast,
107
+ Yo as Toasts,
108
+ _o as Toggle,
109
+ or as Toolbar,
110
+ er as Tooltip,
111
+ pr as Widget,
112
+ qo as useOptionalSortableItem
106
113
  };
107
114
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/tokens.json CHANGED
@@ -365,7 +365,7 @@
365
365
  },
366
366
  "com.solibo": {
367
367
  "packageName": "@solibo/solibo-ui",
368
- "packageVersion": "1.1.7"
368
+ "packageVersion": "1.2.0"
369
369
  }
370
370
  },
371
371
  "$name": "Solibo UI Tokens",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solibo/solibo-ui",
3
- "version": "1.1.7",
3
+ "version": "1.2.0",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "dev": "pnpm run tokens:build && vite build --watch",
@@ -1,2 +0,0 @@
1
- "use strict";require('./assets/index45.css');const o=require("react/jsx-runtime"),d=require("./classix-5H4IWnMA.cjs"),p=require("react"),V=require("./icons-Dv_p0bUF.cjs"),E=require("./use-touched-Bq5Gjbpz.cjs");function w(t){return t&&`${t[0].toLocaleUpperCase()}${t.slice(1)}`}function S(t){const n=w(t);return n&&!n.endsWith(":")?`${n}:`:n}const G="_input_p0mz8_3",H="_touched_p0mz8_43",U="_label_p0mz8_48",W="_inline_p0mz8_69",k="_code_p0mz8_86",s={input:G,touched:H,label:U,inline:W,code:k};function A({className:t,defaultCountryCode:n="+47",disabled:c=!1,icon:g,label:h,onBlur:T,placeholder:f,ref:j,required:m,style:v,type:e="text",variant:_="default",...L}){const[x,b]=p.useState(""),[u,z]=p.useState(""),{name:I,onChange:a,pattern:$,value:l,...F}=L,{touched:B,onBlur:P}=E.useTouched(l===""),r=g&&e!=="radio"&&e!=="datetime-local"?g:void 0,N=h&&_==="inline"?S(h):h,q=r?{...v,"--icon-svg":V.iconSVG(r)}:v,C=E.composeEventHandlers(P,T);p.useEffect(()=>{if(a&&e==="tel"){const i={name:I,value:u?(x||n).split(" ").join("")+u.split(" ").join(""):void 0};a({target:i,currentTarget:i})}},[x,n,I,a,u,e]),p.useEffect(()=>{e==="tel"&&!l&&(z(""),b(""))},[e,l]);const R=o.jsxs(o.Fragment,{children:[o.jsx("input",{disabled:c,hidden:!0,onChange:a,pattern:void 0,placeholder:f,ref:j,type:e,value:l}),o.jsx("input",{type:"text",className:d.t(s.code,s.input),disabled:c,maxLength:5,onChange:i=>b(i.target.value),placeholder:n,value:x}),o.jsx("input",{...F,type:"tel",className:d.t(s.input,t,B&&s.touched),"data-icon":r?"true":void 0,disabled:c,maxLength:14,name:void 0,onChange:i=>z(i.target.value),onBlur:C,pattern:$,required:m,style:q,value:u})]});return o.jsxs("label",{className:d.t(s.label,_==="inline"&&s.inline),"data-component":"input",children:[N&&o.jsx("span",{"data-required":m&&_!=="inline"?!0:void 0,children:N}),e==="tel"?R:o.jsx("input",{...L,ref:j,className:d.t(s.input,t,B&&s.touched),"data-icon":r?"true":void 0,disabled:c,onBlur:C,placeholder:f,required:m,style:q,type:e})]})}exports.Input=A;exports.formatInlineLabel=S;
2
- //# sourceMappingURL=index-5yOssOic.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-5yOssOic.cjs","sources":["../src/utils/text.ts","../src/components/input/index.tsx"],"sourcesContent":["export function capitalizeFirstLetter(value: string): string {\n return value ? `${value[0].toLocaleUpperCase()}${value.slice(1)}` : value;\n}\n\nexport function formatInlineLabel(value: string): string {\n const label = capitalizeFirstLetter(value);\n return label && !label.endsWith(':') ? `${label}:` : label;\n}\n","import cx from 'classix';\nimport { useEffect, useState } from 'react';\n\nimport { IconName, iconSVG } from '@/components/icon/icons.ts';\nimport { composeEventHandlers } from '@/utils/compose-event-handlers';\nimport { formatInlineLabel } from '@/utils/text';\nimport { useTouched } from '@/utils/use-touched';\n\nimport styles from './styles.module.css';\n\nexport type InputProps = React.ComponentPropsWithRef<'input'> & {\n defaultCountryCode?: string;\n disabled?: boolean;\n icon?: IconName;\n label?: string;\n onClick?: React.MouseEventHandler<HTMLInputElement>;\n placeholder?: string;\n variant?: 'default' | 'inline';\n type?:\n | 'date'\n | 'datetime-local'\n | 'email'\n | 'number'\n | 'password'\n | 'radio'\n | 'search'\n | 'tel'\n | 'text';\n};\n\nexport function Input({\n className,\n defaultCountryCode = '+47',\n disabled = false,\n icon,\n label,\n onBlur: onBlurProp,\n placeholder,\n ref,\n required,\n style,\n type = 'text',\n variant = 'default',\n ...props\n}: InputProps) {\n const [countryCode, setCountryCode] = useState('');\n const [phoneNumber, setPhoneNumber] = useState('');\n const { name, onChange, pattern, value, ...restProps } = props;\n const { touched, onBlur } = useTouched(value === '');\n const inputIcon = icon && type !== 'radio' && type !== 'datetime-local' ? icon : undefined;\n const displayLabel = label && variant === 'inline' ? formatInlineLabel(label) : label;\n\n type withVars =\n | (React.CSSProperties & {\n '--icon-svg'?: string;\n })\n | undefined;\n\n const withVars: withVars = inputIcon\n ? {\n ...style,\n '--icon-svg': iconSVG(inputIcon),\n }\n : style;\n const handleBlur = composeEventHandlers(onBlur, onBlurProp);\n\n useEffect(() => {\n if (onChange && type === 'tel') {\n const target = {\n name,\n value: phoneNumber\n ? (countryCode || defaultCountryCode).split(' ').join('') +\n phoneNumber.split(' ').join('')\n : undefined,\n } as unknown as HTMLInputElement;\n\n onChange({ target, currentTarget: target } as React.ChangeEvent<HTMLInputElement>);\n }\n }, [countryCode, defaultCountryCode, name, onChange, phoneNumber, type]);\n\n useEffect(() => {\n if (type === 'tel' && !value) {\n setPhoneNumber('');\n setCountryCode('');\n }\n }, [type, value]);\n\n const telephoneInput = (\n <>\n <input\n disabled={disabled}\n hidden\n onChange={onChange}\n pattern={undefined}\n placeholder={placeholder}\n ref={ref}\n type={type}\n value={value}\n />\n <input\n type='text'\n className={cx(styles.code, styles.input)}\n disabled={disabled}\n maxLength={5}\n onChange={(e) => setCountryCode(e.target.value)}\n placeholder={defaultCountryCode}\n value={countryCode}\n />\n <input\n {...restProps}\n type='tel'\n className={cx(styles.input, className, touched && styles.touched)}\n data-icon={inputIcon ? 'true' : undefined}\n disabled={disabled}\n maxLength={14}\n name={undefined}\n onChange={(e) => setPhoneNumber(e.target.value)}\n onBlur={handleBlur}\n pattern={pattern}\n required={required}\n style={withVars}\n value={phoneNumber}\n />\n </>\n );\n\n return (\n <label className={cx(styles.label, variant === 'inline' && styles.inline)}>\n {displayLabel && (\n <span data-required={required && variant !== 'inline' ? true : undefined}>\n {displayLabel}\n </span>\n )}\n {type === 'tel' ? (\n telephoneInput\n ) : (\n <input\n {...props}\n ref={ref}\n className={cx(styles.input, className, touched && styles.touched)}\n data-icon={inputIcon ? 'true' : undefined}\n disabled={disabled}\n onBlur={handleBlur}\n placeholder={placeholder}\n required={required}\n style={withVars}\n type={type}\n />\n )}\n </label>\n );\n}\n"],"names":["capitalizeFirstLetter","value","toLocaleUpperCase","slice","formatInlineLabel","label","endsWith","Input","className","defaultCountryCode","disabled","icon","onBlur","onBlurProp","placeholder","ref","required","style","type","variant","props","countryCode","setCountryCode","useState","phoneNumber","setPhoneNumber","name","onChange","pattern","restProps","touched","useTouched","inputIcon","undefined","displayLabel","withVars","iconSVG","handleBlur","composeEventHandlers","useEffect","target","split","join","currentTarget","telephoneInput","jsxs","Fragment","jsx","cx","styles","code","input","e","inline"],"mappings":"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"}
@@ -1,76 +0,0 @@
1
- import { jsxs as $, Fragment as G, jsx as c } from "react/jsx-runtime";
2
- import { t as p } from "./classix-DG18itHa.js";
3
- import { useState as E, useEffect as F } from "react";
4
- import { i as H } from "./icons-dUP7sKyt.js";
5
- import { u as U, c as W } from "./use-touched-B999bBr8.js";
6
- import './assets/index45.css';function k(t) {
7
- return t && `${t[0].toLocaleUpperCase()}${t.slice(1)}`;
8
- }
9
- function A(t) {
10
- const e = k(t);
11
- return e && !e.endsWith(":") ? `${e}:` : e;
12
- }
13
- const D = "_input_p0mz8_3", J = "_touched_p0mz8_43", K = "_label_p0mz8_48", M = "_inline_p0mz8_69", O = "_code_p0mz8_86", o = {
14
- input: D,
15
- touched: J,
16
- label: K,
17
- inline: M,
18
- code: O
19
- };
20
- function q({
21
- className: t,
22
- defaultCountryCode: e = "+47",
23
- disabled: s = !1,
24
- icon: f,
25
- label: m,
26
- onBlur: P,
27
- placeholder: g,
28
- ref: v,
29
- required: d,
30
- style: x,
31
- type: n = "text",
32
- variant: h = "default",
33
- ...z
34
- }) {
35
- const [_, L] = E(""), [a, b] = E(""), {
36
- name: B,
37
- onChange: l,
38
- pattern: S,
39
- value: u,
40
- ...T
41
- } = z, {
42
- touched: I,
43
- onBlur: V
44
- } = U(u === ""), r = f && n !== "radio" && n !== "datetime-local" ? f : void 0, N = m && h === "inline" ? A(m) : m, j = r ? {
45
- ...x,
46
- "--icon-svg": H(r)
47
- } : x, C = W(V, P);
48
- F(() => {
49
- if (l && n === "tel") {
50
- const i = {
51
- name: B,
52
- value: a ? (_ || e).split(" ").join("") + a.split(" ").join("") : void 0
53
- };
54
- l({
55
- target: i,
56
- currentTarget: i
57
- });
58
- }
59
- }, [_, e, B, l, a, n]), F(() => {
60
- n === "tel" && !u && (b(""), L(""));
61
- }, [n, u]);
62
- const w = /* @__PURE__ */ $(G, { children: [
63
- /* @__PURE__ */ c("input", { disabled: s, hidden: !0, onChange: l, pattern: void 0, placeholder: g, ref: v, type: n, value: u }),
64
- /* @__PURE__ */ c("input", { type: "text", className: p(o.code, o.input), disabled: s, maxLength: 5, onChange: (i) => L(i.target.value), placeholder: e, value: _ }),
65
- /* @__PURE__ */ c("input", { ...T, type: "tel", className: p(o.input, t, I && o.touched), "data-icon": r ? "true" : void 0, disabled: s, maxLength: 14, name: void 0, onChange: (i) => b(i.target.value), onBlur: C, pattern: S, required: d, style: j, value: a })
66
- ] });
67
- return /* @__PURE__ */ $("label", { className: p(o.label, h === "inline" && o.inline), "data-component": "input", children: [
68
- N && /* @__PURE__ */ c("span", { "data-required": d && h !== "inline" ? !0 : void 0, children: N }),
69
- n === "tel" ? w : /* @__PURE__ */ c("input", { ...z, ref: v, className: p(o.input, t, I && o.touched), "data-icon": r ? "true" : void 0, disabled: s, onBlur: C, placeholder: g, required: d, style: j, type: n })
70
- ] });
71
- }
72
- export {
73
- q as I,
74
- A as f
75
- };
76
- //# sourceMappingURL=index-Cv6TtBnd.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-Cv6TtBnd.js","sources":["../src/utils/text.ts","../src/components/input/index.tsx"],"sourcesContent":["export function capitalizeFirstLetter(value: string): string {\n return value ? `${value[0].toLocaleUpperCase()}${value.slice(1)}` : value;\n}\n\nexport function formatInlineLabel(value: string): string {\n const label = capitalizeFirstLetter(value);\n return label && !label.endsWith(':') ? `${label}:` : label;\n}\n","import cx from 'classix';\nimport { useEffect, useState } from 'react';\n\nimport { IconName, iconSVG } from '@/components/icon/icons.ts';\nimport { composeEventHandlers } from '@/utils/compose-event-handlers';\nimport { formatInlineLabel } from '@/utils/text';\nimport { useTouched } from '@/utils/use-touched';\n\nimport styles from './styles.module.css';\n\nexport type InputProps = React.ComponentPropsWithRef<'input'> & {\n defaultCountryCode?: string;\n disabled?: boolean;\n icon?: IconName;\n label?: string;\n onClick?: React.MouseEventHandler<HTMLInputElement>;\n placeholder?: string;\n variant?: 'default' | 'inline';\n type?:\n | 'date'\n | 'datetime-local'\n | 'email'\n | 'number'\n | 'password'\n | 'radio'\n | 'search'\n | 'tel'\n | 'text';\n};\n\nexport function Input({\n className,\n defaultCountryCode = '+47',\n disabled = false,\n icon,\n label,\n onBlur: onBlurProp,\n placeholder,\n ref,\n required,\n style,\n type = 'text',\n variant = 'default',\n ...props\n}: InputProps) {\n const [countryCode, setCountryCode] = useState('');\n const [phoneNumber, setPhoneNumber] = useState('');\n const { name, onChange, pattern, value, ...restProps } = props;\n const { touched, onBlur } = useTouched(value === '');\n const inputIcon = icon && type !== 'radio' && type !== 'datetime-local' ? icon : undefined;\n const displayLabel = label && variant === 'inline' ? formatInlineLabel(label) : label;\n\n type withVars =\n | (React.CSSProperties & {\n '--icon-svg'?: string;\n })\n | undefined;\n\n const withVars: withVars = inputIcon\n ? {\n ...style,\n '--icon-svg': iconSVG(inputIcon),\n }\n : style;\n const handleBlur = composeEventHandlers(onBlur, onBlurProp);\n\n useEffect(() => {\n if (onChange && type === 'tel') {\n const target = {\n name,\n value: phoneNumber\n ? (countryCode || defaultCountryCode).split(' ').join('') +\n phoneNumber.split(' ').join('')\n : undefined,\n } as unknown as HTMLInputElement;\n\n onChange({ target, currentTarget: target } as React.ChangeEvent<HTMLInputElement>);\n }\n }, [countryCode, defaultCountryCode, name, onChange, phoneNumber, type]);\n\n useEffect(() => {\n if (type === 'tel' && !value) {\n setPhoneNumber('');\n setCountryCode('');\n }\n }, [type, value]);\n\n const telephoneInput = (\n <>\n <input\n disabled={disabled}\n hidden\n onChange={onChange}\n pattern={undefined}\n placeholder={placeholder}\n ref={ref}\n type={type}\n value={value}\n />\n <input\n type='text'\n className={cx(styles.code, styles.input)}\n disabled={disabled}\n maxLength={5}\n onChange={(e) => setCountryCode(e.target.value)}\n placeholder={defaultCountryCode}\n value={countryCode}\n />\n <input\n {...restProps}\n type='tel'\n className={cx(styles.input, className, touched && styles.touched)}\n data-icon={inputIcon ? 'true' : undefined}\n disabled={disabled}\n maxLength={14}\n name={undefined}\n onChange={(e) => setPhoneNumber(e.target.value)}\n onBlur={handleBlur}\n pattern={pattern}\n required={required}\n style={withVars}\n value={phoneNumber}\n />\n </>\n );\n\n return (\n <label className={cx(styles.label, variant === 'inline' && styles.inline)}>\n {displayLabel && (\n <span data-required={required && variant !== 'inline' ? true : undefined}>\n {displayLabel}\n </span>\n )}\n {type === 'tel' ? (\n telephoneInput\n ) : (\n <input\n {...props}\n ref={ref}\n className={cx(styles.input, className, touched && styles.touched)}\n data-icon={inputIcon ? 'true' : undefined}\n disabled={disabled}\n onBlur={handleBlur}\n placeholder={placeholder}\n required={required}\n style={withVars}\n type={type}\n />\n )}\n </label>\n );\n}\n"],"names":["capitalizeFirstLetter","value","toLocaleUpperCase","slice","formatInlineLabel","label","endsWith","Input","className","defaultCountryCode","disabled","icon","onBlur","onBlurProp","placeholder","ref","required","style","type","variant","props","countryCode","setCountryCode","useState","phoneNumber","setPhoneNumber","name","onChange","pattern","restProps","touched","useTouched","inputIcon","undefined","displayLabel","withVars","iconSVG","handleBlur","composeEventHandlers","useEffect","target","split","join","currentTarget","telephoneInput","jsxs","Fragment","jsx","cx","styles","code","input","e","inline"],"mappings":"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"}