@intlayer/design-system 5.3.0 → 5.3.1

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 (51) hide show
  1. package/dist/components/ContentEditor/ContentEditorInput.cjs +1 -0
  2. package/dist/components/ContentEditor/ContentEditorInput.cjs.map +1 -1
  3. package/dist/components/ContentEditor/ContentEditorInput.d.ts.map +1 -1
  4. package/dist/components/ContentEditor/ContentEditorInput.mjs +1 -0
  5. package/dist/components/ContentEditor/ContentEditorInput.mjs.map +1 -1
  6. package/dist/components/DictionaryFieldEditor/EnumKeyInput.cjs +1 -0
  7. package/dist/components/DictionaryFieldEditor/EnumKeyInput.cjs.map +1 -1
  8. package/dist/components/DictionaryFieldEditor/EnumKeyInput.d.ts.map +1 -1
  9. package/dist/components/DictionaryFieldEditor/EnumKeyInput.mjs +1 -0
  10. package/dist/components/DictionaryFieldEditor/EnumKeyInput.mjs.map +1 -1
  11. package/dist/components/Input/Input.cjs.map +1 -1
  12. package/dist/components/Input/Input.d.ts +7 -1
  13. package/dist/components/Input/Input.d.ts.map +1 -1
  14. package/dist/components/Input/Input.mjs.map +1 -1
  15. package/dist/components/Input/InputPassword.cjs +8 -1
  16. package/dist/components/Input/InputPassword.cjs.map +1 -1
  17. package/dist/components/Input/InputPassword.d.ts.map +1 -1
  18. package/dist/components/Input/InputPassword.mjs +8 -1
  19. package/dist/components/Input/InputPassword.mjs.map +1 -1
  20. package/dist/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.cjs +1 -0
  21. package/dist/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.cjs.map +1 -1
  22. package/dist/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.d.ts.map +1 -1
  23. package/dist/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs +1 -0
  24. package/dist/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs.map +1 -1
  25. package/dist/components/LocaleSwitcherContentDropDown/localeSwitcher.content.cjs +15 -0
  26. package/dist/components/LocaleSwitcherContentDropDown/localeSwitcher.content.cjs.map +1 -1
  27. package/dist/components/LocaleSwitcherContentDropDown/localeSwitcher.content.d.ts +15 -0
  28. package/dist/components/LocaleSwitcherContentDropDown/localeSwitcher.content.d.ts.map +1 -1
  29. package/dist/components/LocaleSwitcherContentDropDown/localeSwitcher.content.mjs +15 -0
  30. package/dist/components/LocaleSwitcherContentDropDown/localeSwitcher.content.mjs.map +1 -1
  31. package/dist/components/LocaleSwitcherDropDown/LocaleSwitcher.cjs +1 -0
  32. package/dist/components/LocaleSwitcherDropDown/LocaleSwitcher.cjs.map +1 -1
  33. package/dist/components/LocaleSwitcherDropDown/LocaleSwitcher.d.ts.map +1 -1
  34. package/dist/components/LocaleSwitcherDropDown/LocaleSwitcher.mjs +1 -0
  35. package/dist/components/LocaleSwitcherDropDown/LocaleSwitcher.mjs.map +1 -1
  36. package/dist/components/LocaleSwitcherDropDown/localeSwitcher.content.cjs +15 -0
  37. package/dist/components/LocaleSwitcherDropDown/localeSwitcher.content.cjs.map +1 -1
  38. package/dist/components/LocaleSwitcherDropDown/localeSwitcher.content.d.ts +15 -0
  39. package/dist/components/LocaleSwitcherDropDown/localeSwitcher.content.d.ts.map +1 -1
  40. package/dist/components/LocaleSwitcherDropDown/localeSwitcher.content.mjs +15 -0
  41. package/dist/components/LocaleSwitcherDropDown/localeSwitcher.content.mjs.map +1 -1
  42. package/dist/components/TextArea/TextArea.cjs.map +1 -1
  43. package/dist/components/TextArea/TextArea.d.ts +7 -1
  44. package/dist/components/TextArea/TextArea.d.ts.map +1 -1
  45. package/dist/components/TextArea/TextArea.mjs.map +1 -1
  46. package/dist/index-BCuMWKyy.js.map +1 -1
  47. package/dist/index-BYzBot7l.cjs.map +1 -1
  48. package/dist/tailwind.css +1 -1
  49. package/dist/zod-BV4nCGJE.js.map +1 -1
  50. package/dist/zod-DSrtTSD_.cjs.map +1 -1
  51. package/package.json +18 -18
@@ -41,6 +41,7 @@ const ContentEditorInput = ({
41
41
  components_Input_Input.Input,
42
42
  {
43
43
  onChange: handleOnContentChange,
44
+ "aria-label": "value",
44
45
  variant: "invisible",
45
46
  className: "size-full",
46
47
  defaultValue: children,
@@ -1 +1 @@
1
- {"version":3,"file":"ContentEditorInput.cjs","sources":["../../../src/components/ContentEditor/ContentEditorInput.tsx"],"sourcesContent":["'use client';\n\nimport { Check, X } from 'lucide-react';\nimport {\n type ReactNode,\n useState,\n type FC,\n type ChangeEventHandler,\n useEffect,\n} from 'react';\nimport { Button } from '../Button';\nimport { type InputProps, Input } from '../Input';\n\nexport type ContentEditorInputProps = {\n children: InputProps['value'];\n onContentChange: (content: InputProps['value']) => void;\n disabled?: boolean;\n validate?: (content: InputProps['value']) => boolean;\n additionalButtons?: ReactNode;\n} & Omit<InputProps, 'children'>;\n\nexport const ContentEditorInput: FC<ContentEditorInputProps> = ({\n children,\n onContentChange,\n disabled,\n validate,\n additionalButtons,\n ...props\n}) => {\n const [newValue, setNewValue] = useState<InputProps['value']>(children);\n const [resetIncrementor, setResetIncrementor] = useState<number>(0); // To reset the div on cancel\n const isEdited: boolean = newValue !== children;\n\n const handleCancel = () => {\n setNewValue(children);\n setResetIncrementor((prev) => prev + 1);\n };\n const handleValid = () => {\n onContentChange(newValue);\n };\n\n const handleOnContentChange: ChangeEventHandler<HTMLInputElement> = (e) => {\n setNewValue(e.currentTarget.value);\n };\n\n useEffect(() => {\n setNewValue(children);\n }, [children]);\n\n const isValid = validate?.(newValue) ?? true;\n\n return (\n <div\n className=\"flex size-full flex-col items-center justify-between gap-2\"\n key={String(children)}\n >\n <Input\n onChange={handleOnContentChange}\n key={resetIncrementor}\n variant=\"invisible\"\n className=\"size-full\"\n defaultValue={children}\n {...props}\n />\n {(isEdited || additionalButtons) && (\n <div className=\"flex w-full items-center justify-end gap-2\">\n {isEdited && (\n <>\n <Button\n Icon={Check}\n label=\"Validate\"\n variant=\"hoverable\"\n color=\"text\"\n size=\"icon-sm\"\n className=\"cursor-pointer hover:scale-110\"\n disabled={disabled || !isValid}\n onClick={handleValid}\n />\n <Button\n Icon={X}\n label=\"Cancel\"\n variant=\"hoverable\"\n size=\"icon-sm\"\n color=\"text\"\n className=\"cursor-pointer hover:scale-110\"\n onClick={handleCancel}\n />\n </>\n )}\n {additionalButtons}\n </div>\n )}\n </div>\n );\n};\n"],"names":["useState","useEffect","jsxs","jsx","Input","Fragment","Button","Check","X"],"mappings":";;;;;;;;;AAqBO,MAAM,qBAAkD,CAAC;AAAA,EAC9D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,CAAC,UAAU,WAAW,IAAIA,aAAAA,SAA8B,QAAQ;AACtE,QAAM,CAAC,kBAAkB,mBAAmB,IAAIA,aAAAA,SAAiB,CAAC;AAClE,QAAM,WAAoB,aAAa;AAEvC,QAAM,eAAe,MAAM;AACzB,gBAAY,QAAQ;AACA,wBAAA,CAAC,SAAS,OAAO,CAAC;AAAA,EACxC;AACA,QAAM,cAAc,MAAM;AACxB,oBAAgB,QAAQ;AAAA,EAC1B;AAEM,QAAA,wBAA8D,CAAC,MAAM;AAC7D,gBAAA,EAAE,cAAc,KAAK;AAAA,EACnC;AAEAC,eAAAA,UAAU,MAAM;AACd,gBAAY,QAAQ;AAAA,EAAA,GACnB,CAAC,QAAQ,CAAC;AAEP,QAAA,UAAU,WAAW,QAAQ,KAAK;AAGtC,SAAAC,2BAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MAGV,UAAA;AAAA,QAAAC,2BAAA;AAAA,UAACC,uBAAA;AAAA,UAAA;AAAA,YACC,UAAU;AAAA,YAEV,SAAQ;AAAA,YACR,WAAU;AAAA,YACV,cAAc;AAAA,YACb,GAAG;AAAA,UAAA;AAAA,UAJC;AAAA,QAKP;AAAA,SACE,YAAY,sBACXF,2BAAA,KAAA,OAAA,EAAI,WAAU,8CACZ,UAAA;AAAA,UAAA,YAEGA,2BAAA,KAAAG,qBAAA,EAAA,UAAA;AAAA,YAAAF,2BAAA;AAAA,cAACG,yBAAA;AAAA,cAAA;AAAA,gBACC,MAAMC,YAAA;AAAA,gBACN,OAAM;AAAA,gBACN,SAAQ;AAAA,gBACR,OAAM;AAAA,gBACN,MAAK;AAAA,gBACL,WAAU;AAAA,gBACV,UAAU,YAAY,CAAC;AAAA,gBACvB,SAAS;AAAA,cAAA;AAAA,YACX;AAAA,YACAJ,2BAAA;AAAA,cAACG,yBAAA;AAAA,cAAA;AAAA,gBACC,MAAME,YAAA;AAAA,gBACN,OAAM;AAAA,gBACN,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,OAAM;AAAA,gBACN,WAAU;AAAA,gBACV,SAAS;AAAA,cAAA;AAAA,YAAA;AAAA,UACX,GACF;AAAA,UAED;AAAA,QAAA,EACH,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IApCG,OAAO,QAAQ;AAAA,EAsCtB;AAEJ;;"}
1
+ {"version":3,"file":"ContentEditorInput.cjs","sources":["../../../src/components/ContentEditor/ContentEditorInput.tsx"],"sourcesContent":["'use client';\n\nimport { Check, X } from 'lucide-react';\nimport {\n type ReactNode,\n useState,\n type FC,\n type ChangeEventHandler,\n useEffect,\n} from 'react';\nimport { Button } from '../Button';\nimport { type InputProps, Input } from '../Input';\n\nexport type ContentEditorInputProps = {\n children: InputProps['value'];\n onContentChange: (content: InputProps['value']) => void;\n disabled?: boolean;\n validate?: (content: InputProps['value']) => boolean;\n additionalButtons?: ReactNode;\n} & Omit<InputProps, 'children'>;\n\nexport const ContentEditorInput: FC<ContentEditorInputProps> = ({\n children,\n onContentChange,\n disabled,\n validate,\n additionalButtons,\n ...props\n}) => {\n const [newValue, setNewValue] = useState<InputProps['value']>(children);\n const [resetIncrementor, setResetIncrementor] = useState<number>(0); // To reset the div on cancel\n const isEdited: boolean = newValue !== children;\n\n const handleCancel = () => {\n setNewValue(children);\n setResetIncrementor((prev) => prev + 1);\n };\n const handleValid = () => {\n onContentChange(newValue);\n };\n\n const handleOnContentChange: ChangeEventHandler<HTMLInputElement> = (e) => {\n setNewValue(e.currentTarget.value);\n };\n\n useEffect(() => {\n setNewValue(children);\n }, [children]);\n\n const isValid = validate?.(newValue) ?? true;\n\n return (\n <div\n className=\"flex size-full flex-col items-center justify-between gap-2\"\n key={String(children)}\n >\n <Input\n onChange={handleOnContentChange}\n key={resetIncrementor}\n aria-label=\"value\"\n variant=\"invisible\"\n className=\"size-full\"\n defaultValue={children}\n {...props}\n />\n {(isEdited || additionalButtons) && (\n <div className=\"flex w-full items-center justify-end gap-2\">\n {isEdited && (\n <>\n <Button\n Icon={Check}\n label=\"Validate\"\n variant=\"hoverable\"\n color=\"text\"\n size=\"icon-sm\"\n className=\"cursor-pointer hover:scale-110\"\n disabled={disabled || !isValid}\n onClick={handleValid}\n />\n <Button\n Icon={X}\n label=\"Cancel\"\n variant=\"hoverable\"\n size=\"icon-sm\"\n color=\"text\"\n className=\"cursor-pointer hover:scale-110\"\n onClick={handleCancel}\n />\n </>\n )}\n {additionalButtons}\n </div>\n )}\n </div>\n );\n};\n"],"names":["useState","useEffect","jsxs","jsx","Input","Fragment","Button","Check","X"],"mappings":";;;;;;;;;AAqBO,MAAM,qBAAkD,CAAC;AAAA,EAC9D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,CAAC,UAAU,WAAW,IAAIA,aAAAA,SAA8B,QAAQ;AACtE,QAAM,CAAC,kBAAkB,mBAAmB,IAAIA,aAAAA,SAAiB,CAAC;AAClE,QAAM,WAAoB,aAAa;AAEvC,QAAM,eAAe,MAAM;AACzB,gBAAY,QAAQ;AACA,wBAAA,CAAC,SAAS,OAAO,CAAC;AAAA,EACxC;AACA,QAAM,cAAc,MAAM;AACxB,oBAAgB,QAAQ;AAAA,EAC1B;AAEM,QAAA,wBAA8D,CAAC,MAAM;AAC7D,gBAAA,EAAE,cAAc,KAAK;AAAA,EACnC;AAEAC,eAAAA,UAAU,MAAM;AACd,gBAAY,QAAQ;AAAA,EAAA,GACnB,CAAC,QAAQ,CAAC;AAEP,QAAA,UAAU,WAAW,QAAQ,KAAK;AAGtC,SAAAC,2BAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MAGV,UAAA;AAAA,QAAAC,2BAAA;AAAA,UAACC,uBAAA;AAAA,UAAA;AAAA,YACC,UAAU;AAAA,YAEV,cAAW;AAAA,YACX,SAAQ;AAAA,YACR,WAAU;AAAA,YACV,cAAc;AAAA,YACb,GAAG;AAAA,UAAA;AAAA,UALC;AAAA,QAMP;AAAA,SACE,YAAY,sBACXF,2BAAA,KAAA,OAAA,EAAI,WAAU,8CACZ,UAAA;AAAA,UAAA,YAEGA,2BAAA,KAAAG,qBAAA,EAAA,UAAA;AAAA,YAAAF,2BAAA;AAAA,cAACG,yBAAA;AAAA,cAAA;AAAA,gBACC,MAAMC,YAAA;AAAA,gBACN,OAAM;AAAA,gBACN,SAAQ;AAAA,gBACR,OAAM;AAAA,gBACN,MAAK;AAAA,gBACL,WAAU;AAAA,gBACV,UAAU,YAAY,CAAC;AAAA,gBACvB,SAAS;AAAA,cAAA;AAAA,YACX;AAAA,YACAJ,2BAAA;AAAA,cAACG,yBAAA;AAAA,cAAA;AAAA,gBACC,MAAME,YAAA;AAAA,gBACN,OAAM;AAAA,gBACN,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,OAAM;AAAA,gBACN,WAAU;AAAA,gBACV,SAAS;AAAA,cAAA;AAAA,YAAA;AAAA,UACX,GACF;AAAA,UAED;AAAA,QAAA,EACH,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IArCG,OAAO,QAAQ;AAAA,EAuCtB;AAEJ;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ContentEditorInput.d.ts","sourceRoot":"","sources":["../../../src/components/ContentEditor/ContentEditorInput.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,SAAS,EAEd,KAAK,EAAE,EAGR,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,KAAK,UAAU,EAAS,MAAM,UAAU,CAAC;AAElD,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAC9B,eAAe,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC;IACrD,iBAAiB,CAAC,EAAE,SAAS,CAAC;CAC/B,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAEjC,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,uBAAuB,CAyE1D,CAAC"}
1
+ {"version":3,"file":"ContentEditorInput.d.ts","sourceRoot":"","sources":["../../../src/components/ContentEditor/ContentEditorInput.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,SAAS,EAEd,KAAK,EAAE,EAGR,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,KAAK,UAAU,EAAS,MAAM,UAAU,CAAC;AAElD,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAC9B,eAAe,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC;IACrD,iBAAiB,CAAC,EAAE,SAAS,CAAC;CAC/B,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAEjC,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,uBAAuB,CA0E1D,CAAC"}
@@ -39,6 +39,7 @@ const ContentEditorInput = ({
39
39
  Input,
40
40
  {
41
41
  onChange: handleOnContentChange,
42
+ "aria-label": "value",
42
43
  variant: "invisible",
43
44
  className: "size-full",
44
45
  defaultValue: children,
@@ -1 +1 @@
1
- {"version":3,"file":"ContentEditorInput.mjs","sources":["../../../src/components/ContentEditor/ContentEditorInput.tsx"],"sourcesContent":["'use client';\n\nimport { Check, X } from 'lucide-react';\nimport {\n type ReactNode,\n useState,\n type FC,\n type ChangeEventHandler,\n useEffect,\n} from 'react';\nimport { Button } from '../Button';\nimport { type InputProps, Input } from '../Input';\n\nexport type ContentEditorInputProps = {\n children: InputProps['value'];\n onContentChange: (content: InputProps['value']) => void;\n disabled?: boolean;\n validate?: (content: InputProps['value']) => boolean;\n additionalButtons?: ReactNode;\n} & Omit<InputProps, 'children'>;\n\nexport const ContentEditorInput: FC<ContentEditorInputProps> = ({\n children,\n onContentChange,\n disabled,\n validate,\n additionalButtons,\n ...props\n}) => {\n const [newValue, setNewValue] = useState<InputProps['value']>(children);\n const [resetIncrementor, setResetIncrementor] = useState<number>(0); // To reset the div on cancel\n const isEdited: boolean = newValue !== children;\n\n const handleCancel = () => {\n setNewValue(children);\n setResetIncrementor((prev) => prev + 1);\n };\n const handleValid = () => {\n onContentChange(newValue);\n };\n\n const handleOnContentChange: ChangeEventHandler<HTMLInputElement> = (e) => {\n setNewValue(e.currentTarget.value);\n };\n\n useEffect(() => {\n setNewValue(children);\n }, [children]);\n\n const isValid = validate?.(newValue) ?? true;\n\n return (\n <div\n className=\"flex size-full flex-col items-center justify-between gap-2\"\n key={String(children)}\n >\n <Input\n onChange={handleOnContentChange}\n key={resetIncrementor}\n variant=\"invisible\"\n className=\"size-full\"\n defaultValue={children}\n {...props}\n />\n {(isEdited || additionalButtons) && (\n <div className=\"flex w-full items-center justify-end gap-2\">\n {isEdited && (\n <>\n <Button\n Icon={Check}\n label=\"Validate\"\n variant=\"hoverable\"\n color=\"text\"\n size=\"icon-sm\"\n className=\"cursor-pointer hover:scale-110\"\n disabled={disabled || !isValid}\n onClick={handleValid}\n />\n <Button\n Icon={X}\n label=\"Cancel\"\n variant=\"hoverable\"\n size=\"icon-sm\"\n color=\"text\"\n className=\"cursor-pointer hover:scale-110\"\n onClick={handleCancel}\n />\n </>\n )}\n {additionalButtons}\n </div>\n )}\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;AAqBO,MAAM,qBAAkD,CAAC;AAAA,EAC9D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,CAAC,UAAU,WAAW,IAAI,SAA8B,QAAQ;AACtE,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,SAAiB,CAAC;AAClE,QAAM,WAAoB,aAAa;AAEvC,QAAM,eAAe,MAAM;AACzB,gBAAY,QAAQ;AACA,wBAAA,CAAC,SAAS,OAAO,CAAC;AAAA,EACxC;AACA,QAAM,cAAc,MAAM;AACxB,oBAAgB,QAAQ;AAAA,EAC1B;AAEM,QAAA,wBAA8D,CAAC,MAAM;AAC7D,gBAAA,EAAE,cAAc,KAAK;AAAA,EACnC;AAEA,YAAU,MAAM;AACd,gBAAY,QAAQ;AAAA,EAAA,GACnB,CAAC,QAAQ,CAAC;AAEP,QAAA,UAAU,WAAW,QAAQ,KAAK;AAGtC,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MAGV,UAAA;AAAA,QAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,UAAU;AAAA,YAEV,SAAQ;AAAA,YACR,WAAU;AAAA,YACV,cAAc;AAAA,YACb,GAAG;AAAA,UAAA;AAAA,UAJC;AAAA,QAKP;AAAA,SACE,YAAY,sBACX,qBAAA,OAAA,EAAI,WAAU,8CACZ,UAAA;AAAA,UAAA,YAEG,qBAAA,UAAA,EAAA,UAAA;AAAA,YAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAM;AAAA,gBACN,OAAM;AAAA,gBACN,SAAQ;AAAA,gBACR,OAAM;AAAA,gBACN,MAAK;AAAA,gBACL,WAAU;AAAA,gBACV,UAAU,YAAY,CAAC;AAAA,gBACvB,SAAS;AAAA,cAAA;AAAA,YACX;AAAA,YACA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAM;AAAA,gBACN,OAAM;AAAA,gBACN,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,OAAM;AAAA,gBACN,WAAU;AAAA,gBACV,SAAS;AAAA,cAAA;AAAA,YAAA;AAAA,UACX,GACF;AAAA,UAED;AAAA,QAAA,EACH,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IApCG,OAAO,QAAQ;AAAA,EAsCtB;AAEJ;"}
1
+ {"version":3,"file":"ContentEditorInput.mjs","sources":["../../../src/components/ContentEditor/ContentEditorInput.tsx"],"sourcesContent":["'use client';\n\nimport { Check, X } from 'lucide-react';\nimport {\n type ReactNode,\n useState,\n type FC,\n type ChangeEventHandler,\n useEffect,\n} from 'react';\nimport { Button } from '../Button';\nimport { type InputProps, Input } from '../Input';\n\nexport type ContentEditorInputProps = {\n children: InputProps['value'];\n onContentChange: (content: InputProps['value']) => void;\n disabled?: boolean;\n validate?: (content: InputProps['value']) => boolean;\n additionalButtons?: ReactNode;\n} & Omit<InputProps, 'children'>;\n\nexport const ContentEditorInput: FC<ContentEditorInputProps> = ({\n children,\n onContentChange,\n disabled,\n validate,\n additionalButtons,\n ...props\n}) => {\n const [newValue, setNewValue] = useState<InputProps['value']>(children);\n const [resetIncrementor, setResetIncrementor] = useState<number>(0); // To reset the div on cancel\n const isEdited: boolean = newValue !== children;\n\n const handleCancel = () => {\n setNewValue(children);\n setResetIncrementor((prev) => prev + 1);\n };\n const handleValid = () => {\n onContentChange(newValue);\n };\n\n const handleOnContentChange: ChangeEventHandler<HTMLInputElement> = (e) => {\n setNewValue(e.currentTarget.value);\n };\n\n useEffect(() => {\n setNewValue(children);\n }, [children]);\n\n const isValid = validate?.(newValue) ?? true;\n\n return (\n <div\n className=\"flex size-full flex-col items-center justify-between gap-2\"\n key={String(children)}\n >\n <Input\n onChange={handleOnContentChange}\n key={resetIncrementor}\n aria-label=\"value\"\n variant=\"invisible\"\n className=\"size-full\"\n defaultValue={children}\n {...props}\n />\n {(isEdited || additionalButtons) && (\n <div className=\"flex w-full items-center justify-end gap-2\">\n {isEdited && (\n <>\n <Button\n Icon={Check}\n label=\"Validate\"\n variant=\"hoverable\"\n color=\"text\"\n size=\"icon-sm\"\n className=\"cursor-pointer hover:scale-110\"\n disabled={disabled || !isValid}\n onClick={handleValid}\n />\n <Button\n Icon={X}\n label=\"Cancel\"\n variant=\"hoverable\"\n size=\"icon-sm\"\n color=\"text\"\n className=\"cursor-pointer hover:scale-110\"\n onClick={handleCancel}\n />\n </>\n )}\n {additionalButtons}\n </div>\n )}\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;AAqBO,MAAM,qBAAkD,CAAC;AAAA,EAC9D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,CAAC,UAAU,WAAW,IAAI,SAA8B,QAAQ;AACtE,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,SAAiB,CAAC;AAClE,QAAM,WAAoB,aAAa;AAEvC,QAAM,eAAe,MAAM;AACzB,gBAAY,QAAQ;AACA,wBAAA,CAAC,SAAS,OAAO,CAAC;AAAA,EACxC;AACA,QAAM,cAAc,MAAM;AACxB,oBAAgB,QAAQ;AAAA,EAC1B;AAEM,QAAA,wBAA8D,CAAC,MAAM;AAC7D,gBAAA,EAAE,cAAc,KAAK;AAAA,EACnC;AAEA,YAAU,MAAM;AACd,gBAAY,QAAQ;AAAA,EAAA,GACnB,CAAC,QAAQ,CAAC;AAEP,QAAA,UAAU,WAAW,QAAQ,KAAK;AAGtC,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MAGV,UAAA;AAAA,QAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,UAAU;AAAA,YAEV,cAAW;AAAA,YACX,SAAQ;AAAA,YACR,WAAU;AAAA,YACV,cAAc;AAAA,YACb,GAAG;AAAA,UAAA;AAAA,UALC;AAAA,QAMP;AAAA,SACE,YAAY,sBACX,qBAAA,OAAA,EAAI,WAAU,8CACZ,UAAA;AAAA,UAAA,YAEG,qBAAA,UAAA,EAAA,UAAA;AAAA,YAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAM;AAAA,gBACN,OAAM;AAAA,gBACN,SAAQ;AAAA,gBACR,OAAM;AAAA,gBACN,MAAK;AAAA,gBACL,WAAU;AAAA,gBACV,UAAU,YAAY,CAAC;AAAA,gBACvB,SAAS;AAAA,cAAA;AAAA,YACX;AAAA,YACA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAM;AAAA,gBACN,OAAM;AAAA,gBACN,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,OAAM;AAAA,gBACN,WAAU;AAAA,gBACV,SAAS;AAAA,cAAA;AAAA,YAAA;AAAA,UACX,GACF;AAAA,UAED;AAAA,QAAA,EACH,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IArCG,OAAO,QAAQ;AAAA,EAuCtB;AAEJ;"}
@@ -61,6 +61,7 @@ const EnumKeyInput = ({ value, onChange }) => {
61
61
  components_Input_Input.Input,
62
62
  {
63
63
  type: "number",
64
+ "aria-label": "Quantity",
64
65
  defaultValue: numberValue ?? void 0,
65
66
  onChange: (e) => setNumberValue(e.target.value),
66
67
  className: "min-w-4"
@@ -1 +1 @@
1
- {"version":3,"file":"EnumKeyInput.cjs","sources":["../../../src/components/DictionaryFieldEditor/EnumKeyInput.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect, useMemo, useState, type FC } from 'react';\nimport { Input } from '../Input';\nimport { Select } from '../Select';\n\nconst extractInitialState = (\n value: string | number\n): { comparator: string | undefined; numberValue: string | undefined } => {\n let comparator;\n let numberValue;\n\n if (typeof value === 'number' || !isNaN(Number(value))) {\n // If value is a number or numeric string, set comparator to '=' and numberValue accordingly\n comparator = '=';\n numberValue = value.toString();\n } else if (typeof value === 'string') {\n // Define possible comparators\n const comparators = ['<=', '>=', '<', '>', '='];\n // Find the comparator that matches the start of the string\n const matchedComparator = comparators.find((comp) =>\n value.startsWith(comp)\n );\n if (matchedComparator) {\n comparator = matchedComparator;\n numberValue = value.slice(matchedComparator.length);\n }\n }\n\n return { comparator, numberValue };\n};\n\ntype EnumKeyInputProps = {\n value: string | number;\n onChange: (value: string) => void;\n};\n\n/**\n * Example of values:\n * - `<1`\n * - `>-44.3`\n * - `=999`\n * - `<=1`\n * - `>=1`\n * - 88\n * - `-1`\n *\n */\nexport const EnumKeyInput: FC<EnumKeyInputProps> = ({ value, onChange }) => {\n const { comparator: initialComparator, numberValue: initialNumberValue } =\n useMemo(() => extractInitialState(value), [value]);\n const [comparator, setComparator] = useState<string | null>(\n initialComparator ?? null\n );\n const [numberValue, setNumberValue] = useState<string | null>(\n initialNumberValue ?? null\n );\n\n useEffect(() => {\n if (\n comparator &&\n numberValue &&\n (comparator !== initialComparator || numberValue !== initialNumberValue)\n ) {\n const newValue = `${comparator}${numberValue}`;\n\n onChange(newValue);\n }\n }, [\n comparator,\n initialComparator,\n initialNumberValue,\n numberValue,\n onChange,\n ]);\n\n return (\n <div className=\"flex gap-1\">\n <Select onValueChange={setComparator} defaultValue={initialComparator}>\n <Select.Trigger className=\"w-20\">\n <Select.Value placeholder=\"Select a comparator\" />\n </Select.Trigger>\n <Select.Content>\n <Select.Item value=\"<\">{`<`}</Select.Item>\n <Select.Item value=\"<=\">{`<=`}</Select.Item>\n <Select.Item value=\"=\">{`=`}</Select.Item>\n <Select.Item value=\">=\">{`>=`}</Select.Item>\n <Select.Item value=\">\">{`>`}</Select.Item>\n </Select.Content>\n </Select>\n <Input\n type=\"number\"\n defaultValue={numberValue ?? undefined}\n onChange={(e) => setNumberValue(e.target.value)}\n className=\"min-w-4\"\n />\n </div>\n );\n};\n"],"names":["useMemo","useState","useEffect","jsxs","Select","jsx","Input"],"mappings":";;;;;;;;;;AAMA,MAAM,sBAAsB,CAC1B,UACwE;AACpE,MAAA;AACA,MAAA;AAEA,MAAA,OAAO,UAAU,YAAY,CAAC,MAAM,OAAO,KAAK,CAAC,GAAG;AAEzC,iBAAA;AACb,kBAAc,MAAM,SAAS;AAAA,EAAA,WACpB,OAAO,UAAU,UAAU;AAEpC,UAAM,cAAc,CAAC,MAAM,MAAM,KAAK,KAAK,GAAG;AAE9C,UAAM,oBAAoB,YAAY;AAAA,MAAK,CAAC,SAC1C,MAAM,WAAW,IAAI;AAAA,IACvB;AACA,QAAI,mBAAmB;AACR,mBAAA;AACC,oBAAA,MAAM,MAAM,kBAAkB,MAAM;AAAA,IAAA;AAAA,EACpD;AAGK,SAAA,EAAE,YAAY,YAAY;AACnC;AAkBO,MAAM,eAAsC,CAAC,EAAE,OAAO,eAAe;AAC1E,QAAM,EAAE,YAAY,mBAAmB,aAAa,mBAAmB,IACrEA,qBAAQ,MAAM,oBAAoB,KAAK,GAAG,CAAC,KAAK,CAAC;AAC7C,QAAA,CAAC,YAAY,aAAa,IAAIC,aAAA;AAAA,IAClC,qBAAqB;AAAA,EACvB;AACM,QAAA,CAAC,aAAa,cAAc,IAAIA,aAAA;AAAA,IACpC,sBAAsB;AAAA,EACxB;AAEAC,eAAAA,UAAU,MAAM;AACd,QACE,cACA,gBACC,eAAe,qBAAqB,gBAAgB,qBACrD;AACA,YAAM,WAAW,GAAG,UAAU,GAAG,WAAW;AAE5C,eAAS,QAAQ;AAAA,IAAA;AAAA,EACnB,GACC;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AAGC,SAAAC,2BAAA,KAAC,OAAI,EAAA,WAAU,cACb,UAAA;AAAA,IAAAA,2BAAA,KAACC,yBAAO,QAAA,EAAA,eAAe,eAAe,cAAc,mBAClD,UAAA;AAAA,MAACC,2BAAAA,IAAAD,yBAAAA,OAAO,SAAP,EAAe,WAAU,QACxB,UAACC,+BAAAD,yBAAAA,OAAO,OAAP,EAAa,aAAY,sBAAA,CAAsB,EAClD,CAAA;AAAA,MACAD,2BAAAA,KAACC,yBAAO,OAAA,SAAP,EACC,UAAA;AAAA,QAAAC,+BAACD,yBAAAA,OAAO,MAAP,EAAY,OAAM,KAAK,UAAI,KAAA;AAAA,uCAC3BA,yBAAAA,OAAO,MAAP,EAAY,OAAM,MAAM,UAAK,MAAA;AAAA,uCAC7BA,yBAAAA,OAAO,MAAP,EAAY,OAAM,KAAK,UAAI,KAAA;AAAA,uCAC3BA,yBAAAA,OAAO,MAAP,EAAY,OAAM,MAAM,UAAK,MAAA;AAAA,uCAC7BA,yBAAAA,OAAO,MAAP,EAAY,OAAM,KAAK,UAAI,IAAA,CAAA;AAAA,MAAA,EAC9B,CAAA;AAAA,IAAA,GACF;AAAA,IACAC,2BAAA;AAAA,MAACC,uBAAA;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,cAAc,eAAe;AAAA,QAC7B,UAAU,CAAC,MAAM,eAAe,EAAE,OAAO,KAAK;AAAA,QAC9C,WAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EACZ,GACF;AAEJ;;"}
1
+ {"version":3,"file":"EnumKeyInput.cjs","sources":["../../../src/components/DictionaryFieldEditor/EnumKeyInput.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect, useMemo, useState, type FC } from 'react';\nimport { Input } from '../Input';\nimport { Select } from '../Select';\n\nconst extractInitialState = (\n value: string | number\n): { comparator: string | undefined; numberValue: string | undefined } => {\n let comparator;\n let numberValue;\n\n if (typeof value === 'number' || !isNaN(Number(value))) {\n // If value is a number or numeric string, set comparator to '=' and numberValue accordingly\n comparator = '=';\n numberValue = value.toString();\n } else if (typeof value === 'string') {\n // Define possible comparators\n const comparators = ['<=', '>=', '<', '>', '='];\n // Find the comparator that matches the start of the string\n const matchedComparator = comparators.find((comp) =>\n value.startsWith(comp)\n );\n if (matchedComparator) {\n comparator = matchedComparator;\n numberValue = value.slice(matchedComparator.length);\n }\n }\n\n return { comparator, numberValue };\n};\n\ntype EnumKeyInputProps = {\n value: string | number;\n onChange: (value: string) => void;\n};\n\n/**\n * Example of values:\n * - `<1`\n * - `>-44.3`\n * - `=999`\n * - `<=1`\n * - `>=1`\n * - 88\n * - `-1`\n *\n */\nexport const EnumKeyInput: FC<EnumKeyInputProps> = ({ value, onChange }) => {\n const { comparator: initialComparator, numberValue: initialNumberValue } =\n useMemo(() => extractInitialState(value), [value]);\n const [comparator, setComparator] = useState<string | null>(\n initialComparator ?? null\n );\n const [numberValue, setNumberValue] = useState<string | null>(\n initialNumberValue ?? null\n );\n\n useEffect(() => {\n if (\n comparator &&\n numberValue &&\n (comparator !== initialComparator || numberValue !== initialNumberValue)\n ) {\n const newValue = `${comparator}${numberValue}`;\n\n onChange(newValue);\n }\n }, [\n comparator,\n initialComparator,\n initialNumberValue,\n numberValue,\n onChange,\n ]);\n\n return (\n <div className=\"flex gap-1\">\n <Select onValueChange={setComparator} defaultValue={initialComparator}>\n <Select.Trigger className=\"w-20\">\n <Select.Value placeholder=\"Select a comparator\" />\n </Select.Trigger>\n <Select.Content>\n <Select.Item value=\"<\">{`<`}</Select.Item>\n <Select.Item value=\"<=\">{`<=`}</Select.Item>\n <Select.Item value=\"=\">{`=`}</Select.Item>\n <Select.Item value=\">=\">{`>=`}</Select.Item>\n <Select.Item value=\">\">{`>`}</Select.Item>\n </Select.Content>\n </Select>\n <Input\n type=\"number\"\n aria-label=\"Quantity\"\n defaultValue={numberValue ?? undefined}\n onChange={(e) => setNumberValue(e.target.value)}\n className=\"min-w-4\"\n />\n </div>\n );\n};\n"],"names":["useMemo","useState","useEffect","jsxs","Select","jsx","Input"],"mappings":";;;;;;;;;;AAMA,MAAM,sBAAsB,CAC1B,UACwE;AACpE,MAAA;AACA,MAAA;AAEA,MAAA,OAAO,UAAU,YAAY,CAAC,MAAM,OAAO,KAAK,CAAC,GAAG;AAEzC,iBAAA;AACb,kBAAc,MAAM,SAAS;AAAA,EAAA,WACpB,OAAO,UAAU,UAAU;AAEpC,UAAM,cAAc,CAAC,MAAM,MAAM,KAAK,KAAK,GAAG;AAE9C,UAAM,oBAAoB,YAAY;AAAA,MAAK,CAAC,SAC1C,MAAM,WAAW,IAAI;AAAA,IACvB;AACA,QAAI,mBAAmB;AACR,mBAAA;AACC,oBAAA,MAAM,MAAM,kBAAkB,MAAM;AAAA,IAAA;AAAA,EACpD;AAGK,SAAA,EAAE,YAAY,YAAY;AACnC;AAkBO,MAAM,eAAsC,CAAC,EAAE,OAAO,eAAe;AAC1E,QAAM,EAAE,YAAY,mBAAmB,aAAa,mBAAmB,IACrEA,qBAAQ,MAAM,oBAAoB,KAAK,GAAG,CAAC,KAAK,CAAC;AAC7C,QAAA,CAAC,YAAY,aAAa,IAAIC,aAAA;AAAA,IAClC,qBAAqB;AAAA,EACvB;AACM,QAAA,CAAC,aAAa,cAAc,IAAIA,aAAA;AAAA,IACpC,sBAAsB;AAAA,EACxB;AAEAC,eAAAA,UAAU,MAAM;AACd,QACE,cACA,gBACC,eAAe,qBAAqB,gBAAgB,qBACrD;AACA,YAAM,WAAW,GAAG,UAAU,GAAG,WAAW;AAE5C,eAAS,QAAQ;AAAA,IAAA;AAAA,EACnB,GACC;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AAGC,SAAAC,2BAAA,KAAC,OAAI,EAAA,WAAU,cACb,UAAA;AAAA,IAAAA,2BAAA,KAACC,yBAAO,QAAA,EAAA,eAAe,eAAe,cAAc,mBAClD,UAAA;AAAA,MAACC,2BAAAA,IAAAD,yBAAAA,OAAO,SAAP,EAAe,WAAU,QACxB,UAACC,+BAAAD,yBAAAA,OAAO,OAAP,EAAa,aAAY,sBAAA,CAAsB,EAClD,CAAA;AAAA,MACAD,2BAAAA,KAACC,yBAAO,OAAA,SAAP,EACC,UAAA;AAAA,QAAAC,+BAACD,yBAAAA,OAAO,MAAP,EAAY,OAAM,KAAK,UAAI,KAAA;AAAA,uCAC3BA,yBAAAA,OAAO,MAAP,EAAY,OAAM,MAAM,UAAK,MAAA;AAAA,uCAC7BA,yBAAAA,OAAO,MAAP,EAAY,OAAM,KAAK,UAAI,KAAA;AAAA,uCAC3BA,yBAAAA,OAAO,MAAP,EAAY,OAAM,MAAM,UAAK,MAAA;AAAA,uCAC7BA,yBAAAA,OAAO,MAAP,EAAY,OAAM,KAAK,UAAI,IAAA,CAAA;AAAA,MAAA,EAC9B,CAAA;AAAA,IAAA,GACF;AAAA,IACAC,2BAAA;AAAA,MAACC,uBAAA;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,cAAW;AAAA,QACX,cAAc,eAAe;AAAA,QAC7B,UAAU,CAAC,MAAM,eAAe,EAAE,OAAO,KAAK;AAAA,QAC9C,WAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EACZ,GACF;AAEJ;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"EnumKeyInput.d.ts","sourceRoot":"","sources":["../../../src/components/DictionaryFieldEditor/EnumKeyInput.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAgC,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AA8B9D,KAAK,iBAAiB,GAAG;IACvB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,iBAAiB,CAkD9C,CAAC"}
1
+ {"version":3,"file":"EnumKeyInput.d.ts","sourceRoot":"","sources":["../../../src/components/DictionaryFieldEditor/EnumKeyInput.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAgC,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AA8B9D,KAAK,iBAAiB,GAAG;IACvB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,iBAAiB,CAmD9C,CAAC"}
@@ -59,6 +59,7 @@ const EnumKeyInput = ({ value, onChange }) => {
59
59
  Input,
60
60
  {
61
61
  type: "number",
62
+ "aria-label": "Quantity",
62
63
  defaultValue: numberValue ?? void 0,
63
64
  onChange: (e) => setNumberValue(e.target.value),
64
65
  className: "min-w-4"
@@ -1 +1 @@
1
- {"version":3,"file":"EnumKeyInput.mjs","sources":["../../../src/components/DictionaryFieldEditor/EnumKeyInput.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect, useMemo, useState, type FC } from 'react';\nimport { Input } from '../Input';\nimport { Select } from '../Select';\n\nconst extractInitialState = (\n value: string | number\n): { comparator: string | undefined; numberValue: string | undefined } => {\n let comparator;\n let numberValue;\n\n if (typeof value === 'number' || !isNaN(Number(value))) {\n // If value is a number or numeric string, set comparator to '=' and numberValue accordingly\n comparator = '=';\n numberValue = value.toString();\n } else if (typeof value === 'string') {\n // Define possible comparators\n const comparators = ['<=', '>=', '<', '>', '='];\n // Find the comparator that matches the start of the string\n const matchedComparator = comparators.find((comp) =>\n value.startsWith(comp)\n );\n if (matchedComparator) {\n comparator = matchedComparator;\n numberValue = value.slice(matchedComparator.length);\n }\n }\n\n return { comparator, numberValue };\n};\n\ntype EnumKeyInputProps = {\n value: string | number;\n onChange: (value: string) => void;\n};\n\n/**\n * Example of values:\n * - `<1`\n * - `>-44.3`\n * - `=999`\n * - `<=1`\n * - `>=1`\n * - 88\n * - `-1`\n *\n */\nexport const EnumKeyInput: FC<EnumKeyInputProps> = ({ value, onChange }) => {\n const { comparator: initialComparator, numberValue: initialNumberValue } =\n useMemo(() => extractInitialState(value), [value]);\n const [comparator, setComparator] = useState<string | null>(\n initialComparator ?? null\n );\n const [numberValue, setNumberValue] = useState<string | null>(\n initialNumberValue ?? null\n );\n\n useEffect(() => {\n if (\n comparator &&\n numberValue &&\n (comparator !== initialComparator || numberValue !== initialNumberValue)\n ) {\n const newValue = `${comparator}${numberValue}`;\n\n onChange(newValue);\n }\n }, [\n comparator,\n initialComparator,\n initialNumberValue,\n numberValue,\n onChange,\n ]);\n\n return (\n <div className=\"flex gap-1\">\n <Select onValueChange={setComparator} defaultValue={initialComparator}>\n <Select.Trigger className=\"w-20\">\n <Select.Value placeholder=\"Select a comparator\" />\n </Select.Trigger>\n <Select.Content>\n <Select.Item value=\"<\">{`<`}</Select.Item>\n <Select.Item value=\"<=\">{`<=`}</Select.Item>\n <Select.Item value=\"=\">{`=`}</Select.Item>\n <Select.Item value=\">=\">{`>=`}</Select.Item>\n <Select.Item value=\">\">{`>`}</Select.Item>\n </Select.Content>\n </Select>\n <Input\n type=\"number\"\n defaultValue={numberValue ?? undefined}\n onChange={(e) => setNumberValue(e.target.value)}\n className=\"min-w-4\"\n />\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;;AAMA,MAAM,sBAAsB,CAC1B,UACwE;AACpE,MAAA;AACA,MAAA;AAEA,MAAA,OAAO,UAAU,YAAY,CAAC,MAAM,OAAO,KAAK,CAAC,GAAG;AAEzC,iBAAA;AACb,kBAAc,MAAM,SAAS;AAAA,EAAA,WACpB,OAAO,UAAU,UAAU;AAEpC,UAAM,cAAc,CAAC,MAAM,MAAM,KAAK,KAAK,GAAG;AAE9C,UAAM,oBAAoB,YAAY;AAAA,MAAK,CAAC,SAC1C,MAAM,WAAW,IAAI;AAAA,IACvB;AACA,QAAI,mBAAmB;AACR,mBAAA;AACC,oBAAA,MAAM,MAAM,kBAAkB,MAAM;AAAA,IAAA;AAAA,EACpD;AAGK,SAAA,EAAE,YAAY,YAAY;AACnC;AAkBO,MAAM,eAAsC,CAAC,EAAE,OAAO,eAAe;AAC1E,QAAM,EAAE,YAAY,mBAAmB,aAAa,mBAAmB,IACrE,QAAQ,MAAM,oBAAoB,KAAK,GAAG,CAAC,KAAK,CAAC;AAC7C,QAAA,CAAC,YAAY,aAAa,IAAI;AAAA,IAClC,qBAAqB;AAAA,EACvB;AACM,QAAA,CAAC,aAAa,cAAc,IAAI;AAAA,IACpC,sBAAsB;AAAA,EACxB;AAEA,YAAU,MAAM;AACd,QACE,cACA,gBACC,eAAe,qBAAqB,gBAAgB,qBACrD;AACA,YAAM,WAAW,GAAG,UAAU,GAAG,WAAW;AAE5C,eAAS,QAAQ;AAAA,IAAA;AAAA,EACnB,GACC;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AAGC,SAAA,qBAAC,OAAI,EAAA,WAAU,cACb,UAAA;AAAA,IAAA,qBAAC,QAAO,EAAA,eAAe,eAAe,cAAc,mBAClD,UAAA;AAAA,MAAC,oBAAA,OAAO,SAAP,EAAe,WAAU,QACxB,UAAC,oBAAA,OAAO,OAAP,EAAa,aAAY,sBAAA,CAAsB,EAClD,CAAA;AAAA,MACA,qBAAC,OAAO,SAAP,EACC,UAAA;AAAA,QAAA,oBAAC,OAAO,MAAP,EAAY,OAAM,KAAK,UAAI,KAAA;AAAA,4BAC3B,OAAO,MAAP,EAAY,OAAM,MAAM,UAAK,MAAA;AAAA,4BAC7B,OAAO,MAAP,EAAY,OAAM,KAAK,UAAI,KAAA;AAAA,4BAC3B,OAAO,MAAP,EAAY,OAAM,MAAM,UAAK,MAAA;AAAA,4BAC7B,OAAO,MAAP,EAAY,OAAM,KAAK,UAAI,IAAA,CAAA;AAAA,MAAA,EAC9B,CAAA;AAAA,IAAA,GACF;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,cAAc,eAAe;AAAA,QAC7B,UAAU,CAAC,MAAM,eAAe,EAAE,OAAO,KAAK;AAAA,QAC9C,WAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EACZ,GACF;AAEJ;"}
1
+ {"version":3,"file":"EnumKeyInput.mjs","sources":["../../../src/components/DictionaryFieldEditor/EnumKeyInput.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect, useMemo, useState, type FC } from 'react';\nimport { Input } from '../Input';\nimport { Select } from '../Select';\n\nconst extractInitialState = (\n value: string | number\n): { comparator: string | undefined; numberValue: string | undefined } => {\n let comparator;\n let numberValue;\n\n if (typeof value === 'number' || !isNaN(Number(value))) {\n // If value is a number or numeric string, set comparator to '=' and numberValue accordingly\n comparator = '=';\n numberValue = value.toString();\n } else if (typeof value === 'string') {\n // Define possible comparators\n const comparators = ['<=', '>=', '<', '>', '='];\n // Find the comparator that matches the start of the string\n const matchedComparator = comparators.find((comp) =>\n value.startsWith(comp)\n );\n if (matchedComparator) {\n comparator = matchedComparator;\n numberValue = value.slice(matchedComparator.length);\n }\n }\n\n return { comparator, numberValue };\n};\n\ntype EnumKeyInputProps = {\n value: string | number;\n onChange: (value: string) => void;\n};\n\n/**\n * Example of values:\n * - `<1`\n * - `>-44.3`\n * - `=999`\n * - `<=1`\n * - `>=1`\n * - 88\n * - `-1`\n *\n */\nexport const EnumKeyInput: FC<EnumKeyInputProps> = ({ value, onChange }) => {\n const { comparator: initialComparator, numberValue: initialNumberValue } =\n useMemo(() => extractInitialState(value), [value]);\n const [comparator, setComparator] = useState<string | null>(\n initialComparator ?? null\n );\n const [numberValue, setNumberValue] = useState<string | null>(\n initialNumberValue ?? null\n );\n\n useEffect(() => {\n if (\n comparator &&\n numberValue &&\n (comparator !== initialComparator || numberValue !== initialNumberValue)\n ) {\n const newValue = `${comparator}${numberValue}`;\n\n onChange(newValue);\n }\n }, [\n comparator,\n initialComparator,\n initialNumberValue,\n numberValue,\n onChange,\n ]);\n\n return (\n <div className=\"flex gap-1\">\n <Select onValueChange={setComparator} defaultValue={initialComparator}>\n <Select.Trigger className=\"w-20\">\n <Select.Value placeholder=\"Select a comparator\" />\n </Select.Trigger>\n <Select.Content>\n <Select.Item value=\"<\">{`<`}</Select.Item>\n <Select.Item value=\"<=\">{`<=`}</Select.Item>\n <Select.Item value=\"=\">{`=`}</Select.Item>\n <Select.Item value=\">=\">{`>=`}</Select.Item>\n <Select.Item value=\">\">{`>`}</Select.Item>\n </Select.Content>\n </Select>\n <Input\n type=\"number\"\n aria-label=\"Quantity\"\n defaultValue={numberValue ?? undefined}\n onChange={(e) => setNumberValue(e.target.value)}\n className=\"min-w-4\"\n />\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;;AAMA,MAAM,sBAAsB,CAC1B,UACwE;AACpE,MAAA;AACA,MAAA;AAEA,MAAA,OAAO,UAAU,YAAY,CAAC,MAAM,OAAO,KAAK,CAAC,GAAG;AAEzC,iBAAA;AACb,kBAAc,MAAM,SAAS;AAAA,EAAA,WACpB,OAAO,UAAU,UAAU;AAEpC,UAAM,cAAc,CAAC,MAAM,MAAM,KAAK,KAAK,GAAG;AAE9C,UAAM,oBAAoB,YAAY;AAAA,MAAK,CAAC,SAC1C,MAAM,WAAW,IAAI;AAAA,IACvB;AACA,QAAI,mBAAmB;AACR,mBAAA;AACC,oBAAA,MAAM,MAAM,kBAAkB,MAAM;AAAA,IAAA;AAAA,EACpD;AAGK,SAAA,EAAE,YAAY,YAAY;AACnC;AAkBO,MAAM,eAAsC,CAAC,EAAE,OAAO,eAAe;AAC1E,QAAM,EAAE,YAAY,mBAAmB,aAAa,mBAAmB,IACrE,QAAQ,MAAM,oBAAoB,KAAK,GAAG,CAAC,KAAK,CAAC;AAC7C,QAAA,CAAC,YAAY,aAAa,IAAI;AAAA,IAClC,qBAAqB;AAAA,EACvB;AACM,QAAA,CAAC,aAAa,cAAc,IAAI;AAAA,IACpC,sBAAsB;AAAA,EACxB;AAEA,YAAU,MAAM;AACd,QACE,cACA,gBACC,eAAe,qBAAqB,gBAAgB,qBACrD;AACA,YAAM,WAAW,GAAG,UAAU,GAAG,WAAW;AAE5C,eAAS,QAAQ;AAAA,IAAA;AAAA,EACnB,GACC;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AAGC,SAAA,qBAAC,OAAI,EAAA,WAAU,cACb,UAAA;AAAA,IAAA,qBAAC,QAAO,EAAA,eAAe,eAAe,cAAc,mBAClD,UAAA;AAAA,MAAC,oBAAA,OAAO,SAAP,EAAe,WAAU,QACxB,UAAC,oBAAA,OAAO,OAAP,EAAa,aAAY,sBAAA,CAAsB,EAClD,CAAA;AAAA,MACA,qBAAC,OAAO,SAAP,EACC,UAAA;AAAA,QAAA,oBAAC,OAAO,MAAP,EAAY,OAAM,KAAK,UAAI,KAAA;AAAA,4BAC3B,OAAO,MAAP,EAAY,OAAM,MAAM,UAAK,MAAA;AAAA,4BAC7B,OAAO,MAAP,EAAY,OAAM,KAAK,UAAI,KAAA;AAAA,4BAC3B,OAAO,MAAP,EAAY,OAAM,MAAM,UAAK,MAAA;AAAA,4BAC7B,OAAO,MAAP,EAAY,OAAM,KAAK,UAAI,IAAA,CAAA;AAAA,MAAA,EAC9B,CAAA;AAAA,IAAA,GACF;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,cAAW;AAAA,QACX,cAAc,eAAe;AAAA,QAC7B,UAAU,CAAC,MAAM,eAAe,EAAE,OAAO,KAAK;AAAA,QAC9C,WAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EACZ,GACF;AAEJ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Input.cjs","sources":["../../../src/components/Input/Input.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport {\n type FC,\n type DetailedHTMLProps,\n type InputHTMLAttributes,\n} from 'react';\n\nexport const inputVariants = cva('', {\n variants: {\n variant: {\n default: [\n 'w-full select-text resize-none rounded-xl border-2 bg-input-background text-base md:text-sm text-input-text shadow-none outline-0 transition-all',\n 'border-input-border hover:border-input-border-hover focus:border-input-border-focus focus:outline-0 focus:[box-shadow:none]',\n 'aria-[invalid=true]:border-error',\n 'disabled:opacity-50',\n ],\n invisible: [\n 'w-full border-none bg-inherit text-inherit outline-hidden ring-0',\n ],\n },\n size: {\n md: 'px-2 md:py-1 py-3',\n lg: 'p-4 md:py-2',\n },\n validationStyleEnabled: {\n disabled: '',\n enabled: 'valid:border-success invalid:border-error',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n validationStyleEnabled: 'disabled',\n },\n});\n\nexport type InputProps = DetailedHTMLProps<\n InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n> & {\n validationStyleEnabled?: boolean;\n} & Omit<VariantProps<typeof inputVariants>, 'validationStyleEnabled'>;\n\nexport const Input: FC<InputProps> = ({\n validationStyleEnabled = false,\n variant,\n size,\n className,\n ...props\n}) => (\n <input\n className={inputVariants({\n variant,\n size,\n validationStyleEnabled: validationStyleEnabled ? 'enabled' : 'disabled',\n className,\n })}\n {...props}\n />\n);\n"],"names":["cva","jsx"],"mappings":";;;;AAOa,MAAA,gBAAgBA,2BAAI,IAAI;AAAA,EACnC,UAAU;AAAA,IACR,SAAS;AAAA,MACP,SAAS;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,WAAW;AAAA,QACT;AAAA,MAAA;AAAA,IAEJ;AAAA,IACA,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAAA,IACA,wBAAwB;AAAA,MACtB,UAAU;AAAA,MACV,SAAS;AAAA,IAAA;AAAA,EAEb;AAAA,EACA,iBAAiB;AAAA,IACf,SAAS;AAAA,IACT,MAAM;AAAA,IACN,wBAAwB;AAAA,EAAA;AAE5B,CAAC;AASM,MAAM,QAAwB,CAAC;AAAA,EACpC,yBAAyB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MACEC,2BAAA;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAW,cAAc;AAAA,MACvB;AAAA,MACA;AAAA,MACA,wBAAwB,yBAAyB,YAAY;AAAA,MAC7D;AAAA,IAAA,CACD;AAAA,IACA,GAAG;AAAA,EAAA;AACN;;;"}
1
+ {"version":3,"file":"Input.cjs","sources":["../../../src/components/Input/Input.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport {\n type FC,\n type DetailedHTMLProps,\n type InputHTMLAttributes,\n} from 'react';\n\nexport const inputVariants = cva('', {\n variants: {\n variant: {\n default: [\n 'w-full select-text resize-none rounded-xl border-2 bg-input-background text-base md:text-sm text-input-text shadow-none outline-0 transition-all',\n 'border-input-border hover:border-input-border-hover focus:border-input-border-focus focus:outline-0 focus:[box-shadow:none]',\n 'aria-[invalid=true]:border-error',\n 'disabled:opacity-50',\n ],\n invisible: [\n 'w-full border-none bg-inherit text-inherit outline-hidden ring-0',\n ],\n },\n size: {\n md: 'px-2 md:py-1 py-3',\n lg: 'p-4 md:py-2',\n },\n validationStyleEnabled: {\n disabled: '',\n enabled: 'valid:border-success invalid:border-error',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n validationStyleEnabled: 'disabled',\n },\n});\n\ntype LabelType =\n | {\n 'aria-labelledby': string;\n }\n | {\n 'aria-label': string;\n };\n\nexport type InputProps = DetailedHTMLProps<\n InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n> & {\n validationStyleEnabled?: boolean;\n} & Omit<VariantProps<typeof inputVariants>, 'validationStyleEnabled'> &\n LabelType;\n\nexport const Input: FC<InputProps> = ({\n validationStyleEnabled = false,\n variant,\n size,\n className,\n ...props\n}) => (\n <input\n className={inputVariants({\n variant,\n size,\n validationStyleEnabled: validationStyleEnabled ? 'enabled' : 'disabled',\n className,\n })}\n {...props}\n />\n);\n"],"names":["cva","jsx"],"mappings":";;;;AAOa,MAAA,gBAAgBA,2BAAI,IAAI;AAAA,EACnC,UAAU;AAAA,IACR,SAAS;AAAA,MACP,SAAS;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,WAAW;AAAA,QACT;AAAA,MAAA;AAAA,IAEJ;AAAA,IACA,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAAA,IACA,wBAAwB;AAAA,MACtB,UAAU;AAAA,MACV,SAAS;AAAA,IAAA;AAAA,EAEb;AAAA,EACA,iBAAiB;AAAA,IACf,SAAS;AAAA,IACT,MAAM;AAAA,IACN,wBAAwB;AAAA,EAAA;AAE5B,CAAC;AAkBM,MAAM,QAAwB,CAAC;AAAA,EACpC,yBAAyB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MACEC,2BAAA;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAW,cAAc;AAAA,MACvB;AAAA,MACA;AAAA,MACA,wBAAwB,yBAAyB,YAAY;AAAA,MAC7D;AAAA,IAAA,CACD;AAAA,IACA,GAAG;AAAA,EAAA;AACN;;;"}
@@ -5,8 +5,14 @@ export declare const inputVariants: (props?: ({
5
5
  size?: "md" | "lg" | null | undefined;
6
6
  validationStyleEnabled?: "disabled" | "enabled" | null | undefined;
7
7
  } & import('class-variance-authority/types').ClassProp) | undefined) => string;
8
+ type LabelType = {
9
+ 'aria-labelledby': string;
10
+ } | {
11
+ 'aria-label': string;
12
+ };
8
13
  export type InputProps = DetailedHTMLProps<InputHTMLAttributes<HTMLInputElement>, HTMLInputElement> & {
9
14
  validationStyleEnabled?: boolean;
10
- } & Omit<VariantProps<typeof inputVariants>, 'validationStyleEnabled'>;
15
+ } & Omit<VariantProps<typeof inputVariants>, 'validationStyleEnabled'> & LabelType;
11
16
  export declare const Input: FC<InputProps>;
17
+ export {};
12
18
  //# sourceMappingURL=Input.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../src/components/Input/Input.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EACL,KAAK,EAAE,EACP,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACzB,MAAM,OAAO,CAAC;AAEf,eAAO,MAAM,aAAa;;;;8EA2BxB,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,iBAAiB,CACxC,mBAAmB,CAAC,gBAAgB,CAAC,EACrC,gBAAgB,CACjB,GAAG;IACF,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,aAAa,CAAC,EAAE,wBAAwB,CAAC,CAAC;AAEvE,eAAO,MAAM,KAAK,EAAE,EAAE,CAAC,UAAU,CAgBhC,CAAC"}
1
+ {"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../src/components/Input/Input.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EACL,KAAK,EAAE,EACP,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACzB,MAAM,OAAO,CAAC;AAEf,eAAO,MAAM,aAAa;;;;8EA2BxB,CAAC;AAEH,KAAK,SAAS,GACV;IACE,iBAAiB,EAAE,MAAM,CAAC;CAC3B,GACD;IACE,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEN,MAAM,MAAM,UAAU,GAAG,iBAAiB,CACxC,mBAAmB,CAAC,gBAAgB,CAAC,EACrC,gBAAgB,CACjB,GAAG;IACF,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,aAAa,CAAC,EAAE,wBAAwB,CAAC,GACpE,SAAS,CAAC;AAEZ,eAAO,MAAM,KAAK,EAAE,EAAE,CAAC,UAAU,CAgBhC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Input.mjs","sources":["../../../src/components/Input/Input.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport {\n type FC,\n type DetailedHTMLProps,\n type InputHTMLAttributes,\n} from 'react';\n\nexport const inputVariants = cva('', {\n variants: {\n variant: {\n default: [\n 'w-full select-text resize-none rounded-xl border-2 bg-input-background text-base md:text-sm text-input-text shadow-none outline-0 transition-all',\n 'border-input-border hover:border-input-border-hover focus:border-input-border-focus focus:outline-0 focus:[box-shadow:none]',\n 'aria-[invalid=true]:border-error',\n 'disabled:opacity-50',\n ],\n invisible: [\n 'w-full border-none bg-inherit text-inherit outline-hidden ring-0',\n ],\n },\n size: {\n md: 'px-2 md:py-1 py-3',\n lg: 'p-4 md:py-2',\n },\n validationStyleEnabled: {\n disabled: '',\n enabled: 'valid:border-success invalid:border-error',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n validationStyleEnabled: 'disabled',\n },\n});\n\nexport type InputProps = DetailedHTMLProps<\n InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n> & {\n validationStyleEnabled?: boolean;\n} & Omit<VariantProps<typeof inputVariants>, 'validationStyleEnabled'>;\n\nexport const Input: FC<InputProps> = ({\n validationStyleEnabled = false,\n variant,\n size,\n className,\n ...props\n}) => (\n <input\n className={inputVariants({\n variant,\n size,\n validationStyleEnabled: validationStyleEnabled ? 'enabled' : 'disabled',\n className,\n })}\n {...props}\n />\n);\n"],"names":[],"mappings":";;AAOa,MAAA,gBAAgB,IAAI,IAAI;AAAA,EACnC,UAAU;AAAA,IACR,SAAS;AAAA,MACP,SAAS;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,WAAW;AAAA,QACT;AAAA,MAAA;AAAA,IAEJ;AAAA,IACA,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAAA,IACA,wBAAwB;AAAA,MACtB,UAAU;AAAA,MACV,SAAS;AAAA,IAAA;AAAA,EAEb;AAAA,EACA,iBAAiB;AAAA,IACf,SAAS;AAAA,IACT,MAAM;AAAA,IACN,wBAAwB;AAAA,EAAA;AAE5B,CAAC;AASM,MAAM,QAAwB,CAAC;AAAA,EACpC,yBAAyB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MACE;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAW,cAAc;AAAA,MACvB;AAAA,MACA;AAAA,MACA,wBAAwB,yBAAyB,YAAY;AAAA,MAC7D;AAAA,IAAA,CACD;AAAA,IACA,GAAG;AAAA,EAAA;AACN;"}
1
+ {"version":3,"file":"Input.mjs","sources":["../../../src/components/Input/Input.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport {\n type FC,\n type DetailedHTMLProps,\n type InputHTMLAttributes,\n} from 'react';\n\nexport const inputVariants = cva('', {\n variants: {\n variant: {\n default: [\n 'w-full select-text resize-none rounded-xl border-2 bg-input-background text-base md:text-sm text-input-text shadow-none outline-0 transition-all',\n 'border-input-border hover:border-input-border-hover focus:border-input-border-focus focus:outline-0 focus:[box-shadow:none]',\n 'aria-[invalid=true]:border-error',\n 'disabled:opacity-50',\n ],\n invisible: [\n 'w-full border-none bg-inherit text-inherit outline-hidden ring-0',\n ],\n },\n size: {\n md: 'px-2 md:py-1 py-3',\n lg: 'p-4 md:py-2',\n },\n validationStyleEnabled: {\n disabled: '',\n enabled: 'valid:border-success invalid:border-error',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n validationStyleEnabled: 'disabled',\n },\n});\n\ntype LabelType =\n | {\n 'aria-labelledby': string;\n }\n | {\n 'aria-label': string;\n };\n\nexport type InputProps = DetailedHTMLProps<\n InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n> & {\n validationStyleEnabled?: boolean;\n} & Omit<VariantProps<typeof inputVariants>, 'validationStyleEnabled'> &\n LabelType;\n\nexport const Input: FC<InputProps> = ({\n validationStyleEnabled = false,\n variant,\n size,\n className,\n ...props\n}) => (\n <input\n className={inputVariants({\n variant,\n size,\n validationStyleEnabled: validationStyleEnabled ? 'enabled' : 'disabled',\n className,\n })}\n {...props}\n />\n);\n"],"names":[],"mappings":";;AAOa,MAAA,gBAAgB,IAAI,IAAI;AAAA,EACnC,UAAU;AAAA,IACR,SAAS;AAAA,MACP,SAAS;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,WAAW;AAAA,QACT;AAAA,MAAA;AAAA,IAEJ;AAAA,IACA,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAAA,IACA,wBAAwB;AAAA,MACtB,UAAU;AAAA,MACV,SAAS;AAAA,IAAA;AAAA,EAEb;AAAA,EACA,iBAAiB;AAAA,IACf,SAAS;AAAA,IACT,MAAM;AAAA,IACN,wBAAwB;AAAA,EAAA;AAE5B,CAAC;AAkBM,MAAM,QAAwB,CAAC;AAAA,EACpC,yBAAyB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MACE;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAW,cAAc;AAAA,MACvB;AAAA,MACA;AAAA,MACA,wBAAwB,yBAAyB,YAAY;AAAA,MAC7D;AAAA,IAAA,CACD;AAAA,IACA,GAAG;AAAA,EAAA;AACN;"}
@@ -14,7 +14,14 @@ const InputPassword = (props) => {
14
14
  };
15
15
  const EyeIconComponent = isPasswordRevealed ? lucideReact.EyeIcon : lucideReact.EyeOffIcon;
16
16
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
17
- /* @__PURE__ */ jsxRuntime.jsx(components_Input_Input.Input, { ...props, type: isPasswordRevealed ? "text" : "password" }),
17
+ /* @__PURE__ */ jsxRuntime.jsx(
18
+ components_Input_Input.Input,
19
+ {
20
+ ...props,
21
+ "aria-label": "password",
22
+ type: isPasswordRevealed ? "text" : "password"
23
+ }
24
+ ),
18
25
  /* @__PURE__ */ jsxRuntime.jsx(
19
26
  "button",
20
27
  {
@@ -1 +1 @@
1
- {"version":3,"file":"InputPassword.cjs","sources":["../../../src/components/Input/InputPassword.tsx"],"sourcesContent":["'use client';\n\nimport { EyeIcon, EyeOffIcon } from 'lucide-react';\nimport { type FC, useState, type MouseEventHandler } from 'react';\nimport { Input, type InputProps } from './Input';\n\ntype InputPasswordProps = Omit<InputProps, 'type'>;\n\nexport const InputPassword: FC<InputPasswordProps> = (props) => {\n const [isPasswordRevealed, setIsPasswordRevealed] = useState(false);\n\n const handlePasswordReveal: MouseEventHandler<HTMLButtonElement> = (e) => {\n e.preventDefault();\n e.stopPropagation();\n setIsPasswordRevealed((isPasswordRevealed) => !isPasswordRevealed);\n };\n\n const EyeIconComponent = isPasswordRevealed ? EyeIcon : EyeOffIcon;\n\n return (\n <div className=\"relative\">\n <Input {...props} type={isPasswordRevealed ? 'text' : 'password'} />\n\n <button\n data-testid=\"eye-icon\"\n className=\"absolute right-2 h-full flex-row items-center\"\n onClick={handlePasswordReveal}\n aria-label={isPasswordRevealed ? 'Hide password' : 'Show password'}\n >\n <EyeIconComponent\n className=\"text-neutral mr-2 inline-block\"\n size={20}\n />\n </button>\n </div>\n );\n};\n"],"names":["useState","isPasswordRevealed","EyeIcon","EyeOffIcon","jsxs","jsx","Input"],"mappings":";;;;;;;AAQa,MAAA,gBAAwC,CAAC,UAAU;AAC9D,QAAM,CAAC,oBAAoB,qBAAqB,IAAIA,aAAAA,SAAS,KAAK;AAE5D,QAAA,uBAA6D,CAAC,MAAM;AACxE,MAAE,eAAe;AACjB,MAAE,gBAAgB;AACI,0BAAA,CAACC,wBAAuB,CAACA,mBAAkB;AAAA,EACnE;AAEM,QAAA,mBAAmB,qBAAqBC,YAAAA,UAAUC,YAAA;AAGtD,SAAAC,2BAAA,KAAC,OAAI,EAAA,WAAU,YACb,UAAA;AAAA,IAAAC,+BAACC,uBAAAA,SAAO,GAAG,OAAO,MAAM,qBAAqB,SAAS,YAAY;AAAA,IAElED,2BAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,eAAY;AAAA,QACZ,WAAU;AAAA,QACV,SAAS;AAAA,QACT,cAAY,qBAAqB,kBAAkB;AAAA,QAEnD,UAAAA,2BAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,MAAM;AAAA,UAAA;AAAA,QAAA;AAAA,MACR;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;;"}
1
+ {"version":3,"file":"InputPassword.cjs","sources":["../../../src/components/Input/InputPassword.tsx"],"sourcesContent":["'use client';\n\nimport { EyeIcon, EyeOffIcon } from 'lucide-react';\nimport { type FC, useState, type MouseEventHandler } from 'react';\nimport { Input, type InputProps } from './Input';\n\ntype InputPasswordProps = Omit<InputProps, 'type'>;\n\nexport const InputPassword: FC<InputPasswordProps> = (props) => {\n const [isPasswordRevealed, setIsPasswordRevealed] = useState(false);\n\n const handlePasswordReveal: MouseEventHandler<HTMLButtonElement> = (e) => {\n e.preventDefault();\n e.stopPropagation();\n setIsPasswordRevealed((isPasswordRevealed) => !isPasswordRevealed);\n };\n\n const EyeIconComponent = isPasswordRevealed ? EyeIcon : EyeOffIcon;\n\n return (\n <div className=\"relative\">\n <Input\n {...props}\n aria-label=\"password\"\n type={isPasswordRevealed ? 'text' : 'password'}\n />\n\n <button\n data-testid=\"eye-icon\"\n className=\"absolute right-2 h-full flex-row items-center\"\n onClick={handlePasswordReveal}\n aria-label={isPasswordRevealed ? 'Hide password' : 'Show password'}\n >\n <EyeIconComponent\n className=\"text-neutral mr-2 inline-block\"\n size={20}\n />\n </button>\n </div>\n );\n};\n"],"names":["useState","isPasswordRevealed","EyeIcon","EyeOffIcon","jsxs","jsx","Input"],"mappings":";;;;;;;AAQa,MAAA,gBAAwC,CAAC,UAAU;AAC9D,QAAM,CAAC,oBAAoB,qBAAqB,IAAIA,aAAAA,SAAS,KAAK;AAE5D,QAAA,uBAA6D,CAAC,MAAM;AACxE,MAAE,eAAe;AACjB,MAAE,gBAAgB;AACI,0BAAA,CAACC,wBAAuB,CAACA,mBAAkB;AAAA,EACnE;AAEM,QAAA,mBAAmB,qBAAqBC,YAAAA,UAAUC,YAAA;AAGtD,SAAAC,2BAAA,KAAC,OAAI,EAAA,WAAU,YACb,UAAA;AAAA,IAAAC,2BAAA;AAAA,MAACC,uBAAA;AAAA,MAAA;AAAA,QACE,GAAG;AAAA,QACJ,cAAW;AAAA,QACX,MAAM,qBAAqB,SAAS;AAAA,MAAA;AAAA,IACtC;AAAA,IAEAD,2BAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,eAAY;AAAA,QACZ,WAAU;AAAA,QACV,SAAS;AAAA,QACT,cAAY,qBAAqB,kBAAkB;AAAA,QAEnD,UAAAA,2BAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,MAAM;AAAA,UAAA;AAAA,QAAA;AAAA,MACR;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"InputPassword.d.ts","sourceRoot":"","sources":["../../../src/components/Input/InputPassword.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,EAAoC,MAAM,OAAO,CAAC;AAClE,OAAO,EAAS,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAEjD,KAAK,kBAAkB,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAEnD,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CA4BhD,CAAC"}
1
+ {"version":3,"file":"InputPassword.d.ts","sourceRoot":"","sources":["../../../src/components/Input/InputPassword.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,EAAoC,MAAM,OAAO,CAAC;AAClE,OAAO,EAAS,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAEjD,KAAK,kBAAkB,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAEnD,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CAgChD,CAAC"}
@@ -12,7 +12,14 @@ const InputPassword = (props) => {
12
12
  };
13
13
  const EyeIconComponent = isPasswordRevealed ? EyeIcon : EyeOffIcon;
14
14
  return /* @__PURE__ */ jsxs("div", { className: "relative", children: [
15
- /* @__PURE__ */ jsx(Input, { ...props, type: isPasswordRevealed ? "text" : "password" }),
15
+ /* @__PURE__ */ jsx(
16
+ Input,
17
+ {
18
+ ...props,
19
+ "aria-label": "password",
20
+ type: isPasswordRevealed ? "text" : "password"
21
+ }
22
+ ),
16
23
  /* @__PURE__ */ jsx(
17
24
  "button",
18
25
  {
@@ -1 +1 @@
1
- {"version":3,"file":"InputPassword.mjs","sources":["../../../src/components/Input/InputPassword.tsx"],"sourcesContent":["'use client';\n\nimport { EyeIcon, EyeOffIcon } from 'lucide-react';\nimport { type FC, useState, type MouseEventHandler } from 'react';\nimport { Input, type InputProps } from './Input';\n\ntype InputPasswordProps = Omit<InputProps, 'type'>;\n\nexport const InputPassword: FC<InputPasswordProps> = (props) => {\n const [isPasswordRevealed, setIsPasswordRevealed] = useState(false);\n\n const handlePasswordReveal: MouseEventHandler<HTMLButtonElement> = (e) => {\n e.preventDefault();\n e.stopPropagation();\n setIsPasswordRevealed((isPasswordRevealed) => !isPasswordRevealed);\n };\n\n const EyeIconComponent = isPasswordRevealed ? EyeIcon : EyeOffIcon;\n\n return (\n <div className=\"relative\">\n <Input {...props} type={isPasswordRevealed ? 'text' : 'password'} />\n\n <button\n data-testid=\"eye-icon\"\n className=\"absolute right-2 h-full flex-row items-center\"\n onClick={handlePasswordReveal}\n aria-label={isPasswordRevealed ? 'Hide password' : 'Show password'}\n >\n <EyeIconComponent\n className=\"text-neutral mr-2 inline-block\"\n size={20}\n />\n </button>\n </div>\n );\n};\n"],"names":["isPasswordRevealed"],"mappings":";;;;;AAQa,MAAA,gBAAwC,CAAC,UAAU;AAC9D,QAAM,CAAC,oBAAoB,qBAAqB,IAAI,SAAS,KAAK;AAE5D,QAAA,uBAA6D,CAAC,MAAM;AACxE,MAAE,eAAe;AACjB,MAAE,gBAAgB;AACI,0BAAA,CAACA,wBAAuB,CAACA,mBAAkB;AAAA,EACnE;AAEM,QAAA,mBAAmB,qBAAqB,UAAU;AAGtD,SAAA,qBAAC,OAAI,EAAA,WAAU,YACb,UAAA;AAAA,IAAA,oBAAC,SAAO,GAAG,OAAO,MAAM,qBAAqB,SAAS,YAAY;AAAA,IAElE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,eAAY;AAAA,QACZ,WAAU;AAAA,QACV,SAAS;AAAA,QACT,cAAY,qBAAqB,kBAAkB;AAAA,QAEnD,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,MAAM;AAAA,UAAA;AAAA,QAAA;AAAA,MACR;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;"}
1
+ {"version":3,"file":"InputPassword.mjs","sources":["../../../src/components/Input/InputPassword.tsx"],"sourcesContent":["'use client';\n\nimport { EyeIcon, EyeOffIcon } from 'lucide-react';\nimport { type FC, useState, type MouseEventHandler } from 'react';\nimport { Input, type InputProps } from './Input';\n\ntype InputPasswordProps = Omit<InputProps, 'type'>;\n\nexport const InputPassword: FC<InputPasswordProps> = (props) => {\n const [isPasswordRevealed, setIsPasswordRevealed] = useState(false);\n\n const handlePasswordReveal: MouseEventHandler<HTMLButtonElement> = (e) => {\n e.preventDefault();\n e.stopPropagation();\n setIsPasswordRevealed((isPasswordRevealed) => !isPasswordRevealed);\n };\n\n const EyeIconComponent = isPasswordRevealed ? EyeIcon : EyeOffIcon;\n\n return (\n <div className=\"relative\">\n <Input\n {...props}\n aria-label=\"password\"\n type={isPasswordRevealed ? 'text' : 'password'}\n />\n\n <button\n data-testid=\"eye-icon\"\n className=\"absolute right-2 h-full flex-row items-center\"\n onClick={handlePasswordReveal}\n aria-label={isPasswordRevealed ? 'Hide password' : 'Show password'}\n >\n <EyeIconComponent\n className=\"text-neutral mr-2 inline-block\"\n size={20}\n />\n </button>\n </div>\n );\n};\n"],"names":["isPasswordRevealed"],"mappings":";;;;;AAQa,MAAA,gBAAwC,CAAC,UAAU;AAC9D,QAAM,CAAC,oBAAoB,qBAAqB,IAAI,SAAS,KAAK;AAE5D,QAAA,uBAA6D,CAAC,MAAM;AACxE,MAAE,eAAe;AACjB,MAAE,gBAAgB;AACI,0BAAA,CAACA,wBAAuB,CAACA,mBAAkB;AAAA,EACnE;AAEM,QAAA,mBAAmB,qBAAqB,UAAU;AAGtD,SAAA,qBAAC,OAAI,EAAA,WAAU,YACb,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACE,GAAG;AAAA,QACJ,cAAW;AAAA,QACX,MAAM,qBAAqB,SAAS;AAAA,MAAA;AAAA,IACtC;AAAA,IAEA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,eAAY;AAAA,QACZ,WAAU;AAAA,QACV,SAAS;AAAA,QACT,cAAY,qBAAqB,kBAAkB;AAAA,QAEnD,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,MAAM;AAAA,UAAA;AAAA,QAAA;AAAA,MACR;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;"}
@@ -160,6 +160,7 @@ const LocaleSwitcherContent = ({
160
160
  components_Input_Input.Input,
161
161
  {
162
162
  type: "search",
163
+ "aria-label": searchInput.ariaLabel.value,
163
164
  placeholder: searchInput.placeholder.value,
164
165
  onChange: (e) => handleSearch(e.target.value),
165
166
  ref: inputRef
@@ -1 +1 @@
1
- {"version":3,"file":"LocaleSwitcherContent.cjs","sources":["../../../src/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.tsx"],"sourcesContent":["'use client';\n\nimport { Locales, type LocalesValues } from '@intlayer/config/client';\nimport { getHTMLTextDir, getLocaleName } from '@intlayer/core';\nimport Fuse, { type IFuseOptions } from 'fuse.js';\nimport { Check, Globe, MoveVertical } from 'lucide-react';\nimport { useCallback, useMemo, useRef, useState, type FC } from 'react';\nimport { useDictionary, useLocale } from 'react-intlayer';\nimport { usePersistedStore } from '../../hooks';\nimport { Button } from '../Button';\nimport { Container } from '../Container';\nimport { DropDown, type PanelProps } from '../DropDown';\nimport { Input } from '../Input';\nimport { SwitchSelector } from '../SwitchSelector';\nimport localeSwitcherContent from './localeSwitcher.content';\nimport { useLocaleSwitcherContent } from './LocaleSwitcherContentContext';\n\nexport type LocaleSwitcherContentProps = {\n panelProps?: Omit<PanelProps, 'identifier'>;\n isMultilingual?: boolean;\n};\n\nconst DROPDOWN_IDENTIFIER = 'locale-switcher-content';\n\ntype MultilingualAvailableLocales = {\n locale: LocalesValues;\n englishName: string;\n currentLocaleName: string;\n ownLocaleName: string;\n};\n\nexport const LocaleSwitcherContent: FC<LocaleSwitcherContentProps> = ({\n panelProps,\n isMultilingual = true,\n}) => {\n const {\n switchTo,\n searchInput,\n localeSwitcherLabel,\n languageListLabel,\n seeAllLocalesSwitch,\n } = useDictionary(localeSwitcherContent);\n const inputRef = useRef<HTMLInputElement>(null);\n const { locale } = useLocale();\n const { availableLocales, selectedLocales, setSelectedLocales } =\n useLocaleSwitcherContent();\n\n const multilingualAvailableLocales: MultilingualAvailableLocales[] = useMemo(\n () =>\n availableLocales.map((localeEl) => {\n const englishName = getLocaleName(localeEl, Locales.ENGLISH);\n const currentLocaleName = getLocaleName(localeEl, locale);\n const ownLocaleName = getLocaleName(localeEl);\n return {\n locale: localeEl,\n englishName,\n currentLocaleName,\n ownLocaleName,\n };\n }),\n [availableLocales, locale]\n );\n\n const [results, setResults] = useState<MultilingualAvailableLocales[]>(\n multilingualAvailableLocales\n );\n const [seeAllLocales, setSeeAllLocales] = usePersistedStore(\n 'locale-content-selector-see-all-locales',\n false\n );\n\n // Create a new Fuse instance with the options and documentation data\n const fuse = useMemo(() => {\n const fuseOptions: IFuseOptions<MultilingualAvailableLocales> = {\n keys: [\n { name: 'ownLocaleName', weight: 0.4 },\n { name: 'englishName', weight: 0.2 },\n { name: 'currentLocaleName', weight: 0.2 },\n { name: 'locale', weight: 0.2 },\n ],\n threshold: 0.02, // Defines how fuzzy the matching should be (lower is more strict)\n };\n\n return new Fuse(multilingualAvailableLocales, fuseOptions);\n }, [multilingualAvailableLocales]);\n\n const handleSearch = useCallback(\n (searchQuery: string) => {\n if (searchQuery) {\n // Perform search on every input change\n const searchResults = fuse\n .search(searchQuery)\n .map((result) => result.item);\n setResults(searchResults);\n } else {\n setResults(multilingualAvailableLocales);\n }\n },\n [fuse, multilingualAvailableLocales]\n );\n\n const handleClickLocale = (localeItem: LocalesValues) => {\n if (isMultilingual) {\n if (selectedLocales.includes(localeItem)) {\n if (selectedLocales.length > 1) {\n setSelectedLocales((prev) => prev.filter((el) => el !== localeItem));\n }\n } else {\n setSelectedLocales((prev) => [...prev, localeItem]);\n }\n } else {\n setSelectedLocales([localeItem]);\n }\n };\n\n const handleSeeAllLocales = (value: boolean) => {\n setSeeAllLocales(value);\n if (value) {\n setSelectedLocales(availableLocales);\n } else {\n setSelectedLocales([locale]);\n }\n };\n\n return (\n <div\n className=\"border-text text-text rounded-xl border transition-colors\"\n aria-label={localeSwitcherLabel.value}\n >\n <DropDown identifier={DROPDOWN_IDENTIFIER}>\n <DropDown.Trigger identifier={DROPDOWN_IDENTIFIER}>\n <div className=\"flex w-full items-center justify-between\">\n <div className=\"px-2 py-1\">\n <Globe size={18} />\n </div>\n <MoveVertical className=\"self-center\" size={18} />\n </div>\n </DropDown.Trigger>\n\n <DropDown.Panel\n identifier={DROPDOWN_IDENTIFIER}\n isOverable\n isFocusable\n className=\"left-auto right-0\"\n {...panelProps}\n >\n <Container\n className=\"max-h-[80vh] min-w-28\"\n separator=\"y\"\n role=\"listbox\"\n transparency=\"sm\"\n border\n roundedSize=\"2xl\"\n borderColor=\"text\"\n aria-label={languageListLabel.value}\n >\n {isMultilingual && (\n <div className=\"m-auto p-2\">\n <SwitchSelector\n defaultValue={false}\n onChange={handleSeeAllLocales}\n color=\"text\"\n size=\"sm\"\n className=\"!w-60\"\n choices={[\n {\n content: seeAllLocalesSwitch.true.value,\n value: true,\n },\n {\n content: seeAllLocalesSwitch.false.value,\n value: false,\n },\n ]}\n />\n </div>\n )}\n\n {!(isMultilingual && seeAllLocales) && (\n <>\n <div className=\"p-3\">\n <Input\n type=\"search\"\n placeholder={searchInput.placeholder.value}\n onChange={(e) => handleSearch(e.target.value)}\n ref={inputRef}\n />\n </div>\n <ol className=\"divide-text/20 divide-y divide-dashed overflow-y-auto p-1\">\n {results.map(\n ({\n locale: localeItem,\n currentLocaleName,\n ownLocaleName,\n }) => (\n <li className=\"px-1.5 py-1\" key={localeItem}>\n <Button\n onClick={() => handleClickLocale(localeItem)}\n label={`${switchTo} ${currentLocaleName}`}\n disabled={\n !(availableLocales ?? availableLocales).includes(\n localeItem\n )\n }\n isActive={selectedLocales.includes(localeItem)}\n variant=\"hoverable\"\n color=\"text\"\n isFullWidth\n textAlign=\"left\"\n size=\"sm\"\n >\n <div className=\"flex flex-row items-center justify-between gap-3 px-2 py-1\">\n {isMultilingual && (\n <div className=\"w-4\">\n {selectedLocales.includes(localeItem) && (\n <Check className=\"size-full\" />\n )}\n </div>\n )}\n <div className=\"flex flex-1 flex-row items-center justify-between gap-3 px-2 py-1\">\n <div className=\"flex flex-col text-nowrap\">\n <span\n dir={getHTMLTextDir(localeItem)}\n lang={localeItem}\n >\n {ownLocaleName}\n </span>\n <span className=\"text-neutral text-xs\">\n {currentLocaleName}\n </span>\n </div>\n <span className=\"text-neutral text-sm\">\n {localeItem.toUpperCase()}\n </span>\n </div>\n </div>\n </Button>\n </li>\n )\n )}\n </ol>\n </>\n )}\n </Container>\n </DropDown.Panel>\n </DropDown>\n </div>\n );\n};\n"],"names":["useDictionary","localeSwitcherContent","useRef","useLocale","useLocaleSwitcherContent","useMemo","getLocaleName","Locales","useState","usePersistedStore","useCallback","jsx","jsxs","DropDown","Globe","MoveVertical","Container","SwitchSelector","Fragment","Input","Button","Check","getHTMLTextDir"],"mappings":"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"}
1
+ {"version":3,"file":"LocaleSwitcherContent.cjs","sources":["../../../src/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.tsx"],"sourcesContent":["'use client';\n\nimport { Locales, type LocalesValues } from '@intlayer/config/client';\nimport { getHTMLTextDir, getLocaleName } from '@intlayer/core';\nimport Fuse, { type IFuseOptions } from 'fuse.js';\nimport { Check, Globe, MoveVertical } from 'lucide-react';\nimport { useCallback, useMemo, useRef, useState, type FC } from 'react';\nimport { useDictionary, useLocale } from 'react-intlayer';\nimport { usePersistedStore } from '../../hooks';\nimport { Button } from '../Button';\nimport { Container } from '../Container';\nimport { DropDown, type PanelProps } from '../DropDown';\nimport { Input } from '../Input';\nimport { SwitchSelector } from '../SwitchSelector';\nimport localeSwitcherContent from './localeSwitcher.content';\nimport { useLocaleSwitcherContent } from './LocaleSwitcherContentContext';\n\nexport type LocaleSwitcherContentProps = {\n panelProps?: Omit<PanelProps, 'identifier'>;\n isMultilingual?: boolean;\n};\n\nconst DROPDOWN_IDENTIFIER = 'locale-switcher-content';\n\ntype MultilingualAvailableLocales = {\n locale: LocalesValues;\n englishName: string;\n currentLocaleName: string;\n ownLocaleName: string;\n};\n\nexport const LocaleSwitcherContent: FC<LocaleSwitcherContentProps> = ({\n panelProps,\n isMultilingual = true,\n}) => {\n const {\n switchTo,\n searchInput,\n localeSwitcherLabel,\n languageListLabel,\n seeAllLocalesSwitch,\n } = useDictionary(localeSwitcherContent);\n const inputRef = useRef<HTMLInputElement>(null);\n const { locale } = useLocale();\n const { availableLocales, selectedLocales, setSelectedLocales } =\n useLocaleSwitcherContent();\n\n const multilingualAvailableLocales: MultilingualAvailableLocales[] = useMemo(\n () =>\n availableLocales.map((localeEl) => {\n const englishName = getLocaleName(localeEl, Locales.ENGLISH);\n const currentLocaleName = getLocaleName(localeEl, locale);\n const ownLocaleName = getLocaleName(localeEl);\n return {\n locale: localeEl,\n englishName,\n currentLocaleName,\n ownLocaleName,\n };\n }),\n [availableLocales, locale]\n );\n\n const [results, setResults] = useState<MultilingualAvailableLocales[]>(\n multilingualAvailableLocales\n );\n const [seeAllLocales, setSeeAllLocales] = usePersistedStore(\n 'locale-content-selector-see-all-locales',\n false\n );\n\n // Create a new Fuse instance with the options and documentation data\n const fuse = useMemo(() => {\n const fuseOptions: IFuseOptions<MultilingualAvailableLocales> = {\n keys: [\n { name: 'ownLocaleName', weight: 0.4 },\n { name: 'englishName', weight: 0.2 },\n { name: 'currentLocaleName', weight: 0.2 },\n { name: 'locale', weight: 0.2 },\n ],\n threshold: 0.02, // Defines how fuzzy the matching should be (lower is more strict)\n };\n\n return new Fuse(multilingualAvailableLocales, fuseOptions);\n }, [multilingualAvailableLocales]);\n\n const handleSearch = useCallback(\n (searchQuery: string) => {\n if (searchQuery) {\n // Perform search on every input change\n const searchResults = fuse\n .search(searchQuery)\n .map((result) => result.item);\n setResults(searchResults);\n } else {\n setResults(multilingualAvailableLocales);\n }\n },\n [fuse, multilingualAvailableLocales]\n );\n\n const handleClickLocale = (localeItem: LocalesValues) => {\n if (isMultilingual) {\n if (selectedLocales.includes(localeItem)) {\n if (selectedLocales.length > 1) {\n setSelectedLocales((prev) => prev.filter((el) => el !== localeItem));\n }\n } else {\n setSelectedLocales((prev) => [...prev, localeItem]);\n }\n } else {\n setSelectedLocales([localeItem]);\n }\n };\n\n const handleSeeAllLocales = (value: boolean) => {\n setSeeAllLocales(value);\n if (value) {\n setSelectedLocales(availableLocales);\n } else {\n setSelectedLocales([locale]);\n }\n };\n\n return (\n <div\n className=\"border-text text-text rounded-xl border transition-colors\"\n aria-label={localeSwitcherLabel.value}\n >\n <DropDown identifier={DROPDOWN_IDENTIFIER}>\n <DropDown.Trigger identifier={DROPDOWN_IDENTIFIER}>\n <div className=\"flex w-full items-center justify-between\">\n <div className=\"px-2 py-1\">\n <Globe size={18} />\n </div>\n <MoveVertical className=\"self-center\" size={18} />\n </div>\n </DropDown.Trigger>\n\n <DropDown.Panel\n identifier={DROPDOWN_IDENTIFIER}\n isOverable\n isFocusable\n className=\"left-auto right-0\"\n {...panelProps}\n >\n <Container\n className=\"max-h-[80vh] min-w-28\"\n separator=\"y\"\n role=\"listbox\"\n transparency=\"sm\"\n border\n roundedSize=\"2xl\"\n borderColor=\"text\"\n aria-label={languageListLabel.value}\n >\n {isMultilingual && (\n <div className=\"m-auto p-2\">\n <SwitchSelector\n defaultValue={false}\n onChange={handleSeeAllLocales}\n color=\"text\"\n size=\"sm\"\n className=\"!w-60\"\n choices={[\n {\n content: seeAllLocalesSwitch.true.value,\n value: true,\n },\n {\n content: seeAllLocalesSwitch.false.value,\n value: false,\n },\n ]}\n />\n </div>\n )}\n\n {!(isMultilingual && seeAllLocales) && (\n <>\n <div className=\"p-3\">\n <Input\n type=\"search\"\n aria-label={searchInput.ariaLabel.value}\n placeholder={searchInput.placeholder.value}\n onChange={(e) => handleSearch(e.target.value)}\n ref={inputRef}\n />\n </div>\n <ol className=\"divide-text/20 divide-y divide-dashed overflow-y-auto p-1\">\n {results.map(\n ({\n locale: localeItem,\n currentLocaleName,\n ownLocaleName,\n }) => (\n <li className=\"px-1.5 py-1\" key={localeItem}>\n <Button\n onClick={() => handleClickLocale(localeItem)}\n label={`${switchTo} ${currentLocaleName}`}\n disabled={\n !(availableLocales ?? availableLocales).includes(\n localeItem\n )\n }\n isActive={selectedLocales.includes(localeItem)}\n variant=\"hoverable\"\n color=\"text\"\n isFullWidth\n textAlign=\"left\"\n size=\"sm\"\n >\n <div className=\"flex flex-row items-center justify-between gap-3 px-2 py-1\">\n {isMultilingual && (\n <div className=\"w-4\">\n {selectedLocales.includes(localeItem) && (\n <Check className=\"size-full\" />\n )}\n </div>\n )}\n <div className=\"flex flex-1 flex-row items-center justify-between gap-3 px-2 py-1\">\n <div className=\"flex flex-col text-nowrap\">\n <span\n dir={getHTMLTextDir(localeItem)}\n lang={localeItem}\n >\n {ownLocaleName}\n </span>\n <span className=\"text-neutral text-xs\">\n {currentLocaleName}\n </span>\n </div>\n <span className=\"text-neutral text-sm\">\n {localeItem.toUpperCase()}\n </span>\n </div>\n </div>\n </Button>\n </li>\n )\n )}\n </ol>\n </>\n )}\n </Container>\n </DropDown.Panel>\n </DropDown>\n </div>\n );\n};\n"],"names":["useDictionary","localeSwitcherContent","useRef","useLocale","useLocaleSwitcherContent","useMemo","getLocaleName","Locales","useState","usePersistedStore","useCallback","jsx","jsxs","DropDown","Globe","MoveVertical","Container","SwitchSelector","Fragment","Input","Button","Check","getHTMLTextDir"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"LocaleSwitcherContent.d.ts","sourceRoot":"","sources":["../../../src/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.tsx"],"names":[],"mappings":"AAMA,OAAO,EAA0C,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAKxE,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAMxD,MAAM,MAAM,0BAA0B,GAAG;IACvC,UAAU,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAC5C,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAWF,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,0BAA0B,CAyNhE,CAAC"}
1
+ {"version":3,"file":"LocaleSwitcherContent.d.ts","sourceRoot":"","sources":["../../../src/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.tsx"],"names":[],"mappings":"AAMA,OAAO,EAA0C,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAKxE,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAMxD,MAAM,MAAM,0BAA0B,GAAG;IACvC,UAAU,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAC5C,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAWF,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,0BAA0B,CA0NhE,CAAC"}
@@ -158,6 +158,7 @@ const LocaleSwitcherContent = ({
158
158
  Input,
159
159
  {
160
160
  type: "search",
161
+ "aria-label": searchInput.ariaLabel.value,
161
162
  placeholder: searchInput.placeholder.value,
162
163
  onChange: (e) => handleSearch(e.target.value),
163
164
  ref: inputRef
@@ -1 +1 @@
1
- {"version":3,"file":"LocaleSwitcherContent.mjs","sources":["../../../src/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.tsx"],"sourcesContent":["'use client';\n\nimport { Locales, type LocalesValues } from '@intlayer/config/client';\nimport { getHTMLTextDir, getLocaleName } from '@intlayer/core';\nimport Fuse, { type IFuseOptions } from 'fuse.js';\nimport { Check, Globe, MoveVertical } from 'lucide-react';\nimport { useCallback, useMemo, useRef, useState, type FC } from 'react';\nimport { useDictionary, useLocale } from 'react-intlayer';\nimport { usePersistedStore } from '../../hooks';\nimport { Button } from '../Button';\nimport { Container } from '../Container';\nimport { DropDown, type PanelProps } from '../DropDown';\nimport { Input } from '../Input';\nimport { SwitchSelector } from '../SwitchSelector';\nimport localeSwitcherContent from './localeSwitcher.content';\nimport { useLocaleSwitcherContent } from './LocaleSwitcherContentContext';\n\nexport type LocaleSwitcherContentProps = {\n panelProps?: Omit<PanelProps, 'identifier'>;\n isMultilingual?: boolean;\n};\n\nconst DROPDOWN_IDENTIFIER = 'locale-switcher-content';\n\ntype MultilingualAvailableLocales = {\n locale: LocalesValues;\n englishName: string;\n currentLocaleName: string;\n ownLocaleName: string;\n};\n\nexport const LocaleSwitcherContent: FC<LocaleSwitcherContentProps> = ({\n panelProps,\n isMultilingual = true,\n}) => {\n const {\n switchTo,\n searchInput,\n localeSwitcherLabel,\n languageListLabel,\n seeAllLocalesSwitch,\n } = useDictionary(localeSwitcherContent);\n const inputRef = useRef<HTMLInputElement>(null);\n const { locale } = useLocale();\n const { availableLocales, selectedLocales, setSelectedLocales } =\n useLocaleSwitcherContent();\n\n const multilingualAvailableLocales: MultilingualAvailableLocales[] = useMemo(\n () =>\n availableLocales.map((localeEl) => {\n const englishName = getLocaleName(localeEl, Locales.ENGLISH);\n const currentLocaleName = getLocaleName(localeEl, locale);\n const ownLocaleName = getLocaleName(localeEl);\n return {\n locale: localeEl,\n englishName,\n currentLocaleName,\n ownLocaleName,\n };\n }),\n [availableLocales, locale]\n );\n\n const [results, setResults] = useState<MultilingualAvailableLocales[]>(\n multilingualAvailableLocales\n );\n const [seeAllLocales, setSeeAllLocales] = usePersistedStore(\n 'locale-content-selector-see-all-locales',\n false\n );\n\n // Create a new Fuse instance with the options and documentation data\n const fuse = useMemo(() => {\n const fuseOptions: IFuseOptions<MultilingualAvailableLocales> = {\n keys: [\n { name: 'ownLocaleName', weight: 0.4 },\n { name: 'englishName', weight: 0.2 },\n { name: 'currentLocaleName', weight: 0.2 },\n { name: 'locale', weight: 0.2 },\n ],\n threshold: 0.02, // Defines how fuzzy the matching should be (lower is more strict)\n };\n\n return new Fuse(multilingualAvailableLocales, fuseOptions);\n }, [multilingualAvailableLocales]);\n\n const handleSearch = useCallback(\n (searchQuery: string) => {\n if (searchQuery) {\n // Perform search on every input change\n const searchResults = fuse\n .search(searchQuery)\n .map((result) => result.item);\n setResults(searchResults);\n } else {\n setResults(multilingualAvailableLocales);\n }\n },\n [fuse, multilingualAvailableLocales]\n );\n\n const handleClickLocale = (localeItem: LocalesValues) => {\n if (isMultilingual) {\n if (selectedLocales.includes(localeItem)) {\n if (selectedLocales.length > 1) {\n setSelectedLocales((prev) => prev.filter((el) => el !== localeItem));\n }\n } else {\n setSelectedLocales((prev) => [...prev, localeItem]);\n }\n } else {\n setSelectedLocales([localeItem]);\n }\n };\n\n const handleSeeAllLocales = (value: boolean) => {\n setSeeAllLocales(value);\n if (value) {\n setSelectedLocales(availableLocales);\n } else {\n setSelectedLocales([locale]);\n }\n };\n\n return (\n <div\n className=\"border-text text-text rounded-xl border transition-colors\"\n aria-label={localeSwitcherLabel.value}\n >\n <DropDown identifier={DROPDOWN_IDENTIFIER}>\n <DropDown.Trigger identifier={DROPDOWN_IDENTIFIER}>\n <div className=\"flex w-full items-center justify-between\">\n <div className=\"px-2 py-1\">\n <Globe size={18} />\n </div>\n <MoveVertical className=\"self-center\" size={18} />\n </div>\n </DropDown.Trigger>\n\n <DropDown.Panel\n identifier={DROPDOWN_IDENTIFIER}\n isOverable\n isFocusable\n className=\"left-auto right-0\"\n {...panelProps}\n >\n <Container\n className=\"max-h-[80vh] min-w-28\"\n separator=\"y\"\n role=\"listbox\"\n transparency=\"sm\"\n border\n roundedSize=\"2xl\"\n borderColor=\"text\"\n aria-label={languageListLabel.value}\n >\n {isMultilingual && (\n <div className=\"m-auto p-2\">\n <SwitchSelector\n defaultValue={false}\n onChange={handleSeeAllLocales}\n color=\"text\"\n size=\"sm\"\n className=\"!w-60\"\n choices={[\n {\n content: seeAllLocalesSwitch.true.value,\n value: true,\n },\n {\n content: seeAllLocalesSwitch.false.value,\n value: false,\n },\n ]}\n />\n </div>\n )}\n\n {!(isMultilingual && seeAllLocales) && (\n <>\n <div className=\"p-3\">\n <Input\n type=\"search\"\n placeholder={searchInput.placeholder.value}\n onChange={(e) => handleSearch(e.target.value)}\n ref={inputRef}\n />\n </div>\n <ol className=\"divide-text/20 divide-y divide-dashed overflow-y-auto p-1\">\n {results.map(\n ({\n locale: localeItem,\n currentLocaleName,\n ownLocaleName,\n }) => (\n <li className=\"px-1.5 py-1\" key={localeItem}>\n <Button\n onClick={() => handleClickLocale(localeItem)}\n label={`${switchTo} ${currentLocaleName}`}\n disabled={\n !(availableLocales ?? availableLocales).includes(\n localeItem\n )\n }\n isActive={selectedLocales.includes(localeItem)}\n variant=\"hoverable\"\n color=\"text\"\n isFullWidth\n textAlign=\"left\"\n size=\"sm\"\n >\n <div className=\"flex flex-row items-center justify-between gap-3 px-2 py-1\">\n {isMultilingual && (\n <div className=\"w-4\">\n {selectedLocales.includes(localeItem) && (\n <Check className=\"size-full\" />\n )}\n </div>\n )}\n <div className=\"flex flex-1 flex-row items-center justify-between gap-3 px-2 py-1\">\n <div className=\"flex flex-col text-nowrap\">\n <span\n dir={getHTMLTextDir(localeItem)}\n lang={localeItem}\n >\n {ownLocaleName}\n </span>\n <span className=\"text-neutral text-xs\">\n {currentLocaleName}\n </span>\n </div>\n <span className=\"text-neutral text-sm\">\n {localeItem.toUpperCase()}\n </span>\n </div>\n </div>\n </Button>\n </li>\n )\n )}\n </ol>\n </>\n )}\n </Container>\n </DropDown.Panel>\n </DropDown>\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LocaleSwitcherContent.mjs","sources":["../../../src/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.tsx"],"sourcesContent":["'use client';\n\nimport { Locales, type LocalesValues } from '@intlayer/config/client';\nimport { getHTMLTextDir, getLocaleName } from '@intlayer/core';\nimport Fuse, { type IFuseOptions } from 'fuse.js';\nimport { Check, Globe, MoveVertical } from 'lucide-react';\nimport { useCallback, useMemo, useRef, useState, type FC } from 'react';\nimport { useDictionary, useLocale } from 'react-intlayer';\nimport { usePersistedStore } from '../../hooks';\nimport { Button } from '../Button';\nimport { Container } from '../Container';\nimport { DropDown, type PanelProps } from '../DropDown';\nimport { Input } from '../Input';\nimport { SwitchSelector } from '../SwitchSelector';\nimport localeSwitcherContent from './localeSwitcher.content';\nimport { useLocaleSwitcherContent } from './LocaleSwitcherContentContext';\n\nexport type LocaleSwitcherContentProps = {\n panelProps?: Omit<PanelProps, 'identifier'>;\n isMultilingual?: boolean;\n};\n\nconst DROPDOWN_IDENTIFIER = 'locale-switcher-content';\n\ntype MultilingualAvailableLocales = {\n locale: LocalesValues;\n englishName: string;\n currentLocaleName: string;\n ownLocaleName: string;\n};\n\nexport const LocaleSwitcherContent: FC<LocaleSwitcherContentProps> = ({\n panelProps,\n isMultilingual = true,\n}) => {\n const {\n switchTo,\n searchInput,\n localeSwitcherLabel,\n languageListLabel,\n seeAllLocalesSwitch,\n } = useDictionary(localeSwitcherContent);\n const inputRef = useRef<HTMLInputElement>(null);\n const { locale } = useLocale();\n const { availableLocales, selectedLocales, setSelectedLocales } =\n useLocaleSwitcherContent();\n\n const multilingualAvailableLocales: MultilingualAvailableLocales[] = useMemo(\n () =>\n availableLocales.map((localeEl) => {\n const englishName = getLocaleName(localeEl, Locales.ENGLISH);\n const currentLocaleName = getLocaleName(localeEl, locale);\n const ownLocaleName = getLocaleName(localeEl);\n return {\n locale: localeEl,\n englishName,\n currentLocaleName,\n ownLocaleName,\n };\n }),\n [availableLocales, locale]\n );\n\n const [results, setResults] = useState<MultilingualAvailableLocales[]>(\n multilingualAvailableLocales\n );\n const [seeAllLocales, setSeeAllLocales] = usePersistedStore(\n 'locale-content-selector-see-all-locales',\n false\n );\n\n // Create a new Fuse instance with the options and documentation data\n const fuse = useMemo(() => {\n const fuseOptions: IFuseOptions<MultilingualAvailableLocales> = {\n keys: [\n { name: 'ownLocaleName', weight: 0.4 },\n { name: 'englishName', weight: 0.2 },\n { name: 'currentLocaleName', weight: 0.2 },\n { name: 'locale', weight: 0.2 },\n ],\n threshold: 0.02, // Defines how fuzzy the matching should be (lower is more strict)\n };\n\n return new Fuse(multilingualAvailableLocales, fuseOptions);\n }, [multilingualAvailableLocales]);\n\n const handleSearch = useCallback(\n (searchQuery: string) => {\n if (searchQuery) {\n // Perform search on every input change\n const searchResults = fuse\n .search(searchQuery)\n .map((result) => result.item);\n setResults(searchResults);\n } else {\n setResults(multilingualAvailableLocales);\n }\n },\n [fuse, multilingualAvailableLocales]\n );\n\n const handleClickLocale = (localeItem: LocalesValues) => {\n if (isMultilingual) {\n if (selectedLocales.includes(localeItem)) {\n if (selectedLocales.length > 1) {\n setSelectedLocales((prev) => prev.filter((el) => el !== localeItem));\n }\n } else {\n setSelectedLocales((prev) => [...prev, localeItem]);\n }\n } else {\n setSelectedLocales([localeItem]);\n }\n };\n\n const handleSeeAllLocales = (value: boolean) => {\n setSeeAllLocales(value);\n if (value) {\n setSelectedLocales(availableLocales);\n } else {\n setSelectedLocales([locale]);\n }\n };\n\n return (\n <div\n className=\"border-text text-text rounded-xl border transition-colors\"\n aria-label={localeSwitcherLabel.value}\n >\n <DropDown identifier={DROPDOWN_IDENTIFIER}>\n <DropDown.Trigger identifier={DROPDOWN_IDENTIFIER}>\n <div className=\"flex w-full items-center justify-between\">\n <div className=\"px-2 py-1\">\n <Globe size={18} />\n </div>\n <MoveVertical className=\"self-center\" size={18} />\n </div>\n </DropDown.Trigger>\n\n <DropDown.Panel\n identifier={DROPDOWN_IDENTIFIER}\n isOverable\n isFocusable\n className=\"left-auto right-0\"\n {...panelProps}\n >\n <Container\n className=\"max-h-[80vh] min-w-28\"\n separator=\"y\"\n role=\"listbox\"\n transparency=\"sm\"\n border\n roundedSize=\"2xl\"\n borderColor=\"text\"\n aria-label={languageListLabel.value}\n >\n {isMultilingual && (\n <div className=\"m-auto p-2\">\n <SwitchSelector\n defaultValue={false}\n onChange={handleSeeAllLocales}\n color=\"text\"\n size=\"sm\"\n className=\"!w-60\"\n choices={[\n {\n content: seeAllLocalesSwitch.true.value,\n value: true,\n },\n {\n content: seeAllLocalesSwitch.false.value,\n value: false,\n },\n ]}\n />\n </div>\n )}\n\n {!(isMultilingual && seeAllLocales) && (\n <>\n <div className=\"p-3\">\n <Input\n type=\"search\"\n aria-label={searchInput.ariaLabel.value}\n placeholder={searchInput.placeholder.value}\n onChange={(e) => handleSearch(e.target.value)}\n ref={inputRef}\n />\n </div>\n <ol className=\"divide-text/20 divide-y divide-dashed overflow-y-auto p-1\">\n {results.map(\n ({\n locale: localeItem,\n currentLocaleName,\n ownLocaleName,\n }) => (\n <li className=\"px-1.5 py-1\" key={localeItem}>\n <Button\n onClick={() => handleClickLocale(localeItem)}\n label={`${switchTo} ${currentLocaleName}`}\n disabled={\n !(availableLocales ?? availableLocales).includes(\n localeItem\n )\n }\n isActive={selectedLocales.includes(localeItem)}\n variant=\"hoverable\"\n color=\"text\"\n isFullWidth\n textAlign=\"left\"\n size=\"sm\"\n >\n <div className=\"flex flex-row items-center justify-between gap-3 px-2 py-1\">\n {isMultilingual && (\n <div className=\"w-4\">\n {selectedLocales.includes(localeItem) && (\n <Check className=\"size-full\" />\n )}\n </div>\n )}\n <div className=\"flex flex-1 flex-row items-center justify-between gap-3 px-2 py-1\">\n <div className=\"flex flex-col text-nowrap\">\n <span\n dir={getHTMLTextDir(localeItem)}\n lang={localeItem}\n >\n {ownLocaleName}\n </span>\n <span className=\"text-neutral text-xs\">\n {currentLocaleName}\n </span>\n </div>\n <span className=\"text-neutral text-sm\">\n {localeItem.toUpperCase()}\n </span>\n </div>\n </div>\n </Button>\n </li>\n )\n )}\n </ol>\n </>\n )}\n </Container>\n </DropDown.Panel>\n </DropDown>\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -78,6 +78,21 @@ const localeSwitcherContent = {
78
78
  hi: "भाषा खोजें",
79
79
  ar: "بحث اللغة",
80
80
  ru: "Поиск языка"
81
+ }),
82
+ ariaLabel: intlayer.t({
83
+ en: "Language search",
84
+ "en-GB": "Language search",
85
+ fr: "Recherche de langue",
86
+ es: "Búsqueda de idioma",
87
+ de: "Sprachsuche",
88
+ ja: "言語検索",
89
+ ko: "언어 검색",
90
+ zh: "语言搜索",
91
+ it: "Ricerca lingua",
92
+ pt: "Pesquisa de idioma",
93
+ hi: "भाषा खोजें",
94
+ ar: "بحث اللغة",
95
+ ru: "Поиск языка"
81
96
  })
82
97
  },
83
98
  seeAllLocalesSwitch: {
@@ -1 +1 @@
1
- {"version":3,"file":"localeSwitcher.content.cjs","sources":["../../../src/components/LocaleSwitcherContentDropDown/localeSwitcher.content.ts"],"sourcesContent":["import { t, type Dictionary } from 'intlayer';\n\nconst localeSwitcherContent = {\n key: 'locale-switcher-content',\n content: {\n localeSwitcherLabel: t({\n en: 'Language switcher',\n 'en-GB': 'Language switcher',\n fr: 'Changer de langue',\n es: 'Cambiar idioma',\n de: 'Sprachwechsler',\n ja: '言語スイッチャー',\n ko: '언어 스위치',\n zh: '语言切换器',\n it: 'Cambia lingua',\n pt: 'Mudar idioma',\n hi: 'भाषा स्विचर',\n ar: 'مبدل اللغة',\n ru: 'Переключатель языка',\n }),\n languageListLabel: t({\n en: 'Language list',\n 'en-GB': 'Language list',\n fr: 'Liste des langues',\n es: 'Lista de idiomas',\n de: 'Sprachliste',\n ja: '言語リスト',\n ko: '언어 목록',\n zh: '语言列表',\n it: 'Elenco lingue',\n pt: 'Lista de idiomas',\n hi: 'भाषा सूची',\n ar: 'قائمة اللغات',\n ru: 'Список языков',\n }),\n switchTo: t({\n en: 'Switch to',\n fr: 'Passer à',\n es: 'Cambiar a',\n 'en-GB': 'Switch to',\n de: 'Wechseln Sie zu',\n ja: 'に切り替える',\n ko: '전환',\n zh: '切换到',\n it: 'Passa a',\n pt: 'Mudar para',\n hi: 'स्विच करें',\n ar: 'التبديل إلى',\n ru: 'Переключиться на',\n }),\n searchInput: {\n text: t({\n en: 'Search Locale',\n 'en-GB': 'Search Locale',\n fr: 'Rechercher la locale',\n es: 'Buscar idioma',\n de: 'Sprache durchsuchen',\n ja: 'ロケールを検索',\n ko: '언어 검색',\n zh: '搜索语言',\n it: 'Cerca lingua',\n pt: 'Pesquisar idioma',\n hi: 'भाषा खोजें',\n ar: 'بحث اللغة',\n ru: 'Поиск языка',\n }),\n placeholder: t({\n en: 'Search a locale',\n 'en-GB': 'Search a locale',\n fr: 'Rechercher une locale',\n es: 'Buscar un idioma',\n de: 'Sprache suchen',\n ja: 'ロケールを検索',\n ko: '언어 검색',\n zh: '搜索语言',\n it: 'Cerca una lingua',\n pt: 'Pesquisar um idioma',\n hi: 'भाषा खोजें',\n ar: 'بحث اللغة',\n ru: 'Поиск языка',\n }),\n },\n seeAllLocalesSwitch: {\n true: t({\n en: 'See all locales',\n 'en-GB': 'See all locales',\n fr: 'Voir toutes les langues',\n es: 'Ver todos los idiomas',\n de: 'Alle Sprachen anzeigen',\n ja: 'すべての言語を表示',\n ko: '모든 언어 보기',\n zh: '查看所有语言',\n it: 'Vedi tutte le lingue',\n pt: 'Ver todos os idiomas',\n hi: 'सभी भाषाओं को देखें',\n ar: 'عرض جميع اللغات',\n ru: 'Показать все языки',\n }),\n false: t({\n en: 'See only selected locales',\n 'en-GB': 'See only selected locales',\n fr: 'Voir seulement les langues sélectionnées',\n es: 'Ver solo los idiomas seleccionados',\n de: 'Nur ausgewählte Sprachen anzeigen',\n ja: '選択された言語のみを表示',\n ko: '선택한 언어만 보기',\n zh: '仅查看选定的语言',\n it: 'Vedi solo le lingue selezionate',\n pt: 'Ver apenas os idiomas selecionados',\n hi: 'केवल चुने गए भाषाओं को देखें',\n ar: 'عرض اللغات المحددة فقط',\n ru: 'Показать только выбранные языки',\n }),\n },\n },\n} satisfies Dictionary;\n\nexport default localeSwitcherContent;\n"],"names":["t"],"mappings":";;AAEA,MAAM,wBAAwB;AAAA,EAC5B,KAAK;AAAA,EACL,SAAS;AAAA,IACP,qBAAqBA,SAAAA,EAAE;AAAA,MACrB,IAAI;AAAA,MACJ,SAAS;AAAA,MACT,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA,CACL;AAAA,IACD,mBAAmBA,SAAAA,EAAE;AAAA,MACnB,IAAI;AAAA,MACJ,SAAS;AAAA,MACT,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA,CACL;AAAA,IACD,UAAUA,SAAAA,EAAE;AAAA,MACV,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,SAAS;AAAA,MACT,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA,CACL;AAAA,IACD,aAAa;AAAA,MACX,MAAMA,SAAAA,EAAE;AAAA,QACN,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MAAA,CACL;AAAA,MACD,aAAaA,SAAAA,EAAE;AAAA,QACb,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACL,CAAA;AAAA,IACH;AAAA,IACA,qBAAqB;AAAA,MACnB,MAAMA,SAAAA,EAAE;AAAA,QACN,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MAAA,CACL;AAAA,MACD,OAAOA,SAAAA,EAAE;AAAA,QACP,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACL,CAAA;AAAA,IAAA;AAAA,EACH;AAEJ;;"}
1
+ {"version":3,"file":"localeSwitcher.content.cjs","sources":["../../../src/components/LocaleSwitcherContentDropDown/localeSwitcher.content.ts"],"sourcesContent":["import { t, type Dictionary } from 'intlayer';\n\nconst localeSwitcherContent = {\n key: 'locale-switcher-content',\n content: {\n localeSwitcherLabel: t({\n en: 'Language switcher',\n 'en-GB': 'Language switcher',\n fr: 'Changer de langue',\n es: 'Cambiar idioma',\n de: 'Sprachwechsler',\n ja: '言語スイッチャー',\n ko: '언어 스위치',\n zh: '语言切换器',\n it: 'Cambia lingua',\n pt: 'Mudar idioma',\n hi: 'भाषा स्विचर',\n ar: 'مبدل اللغة',\n ru: 'Переключатель языка',\n }),\n languageListLabel: t({\n en: 'Language list',\n 'en-GB': 'Language list',\n fr: 'Liste des langues',\n es: 'Lista de idiomas',\n de: 'Sprachliste',\n ja: '言語リスト',\n ko: '언어 목록',\n zh: '语言列表',\n it: 'Elenco lingue',\n pt: 'Lista de idiomas',\n hi: 'भाषा सूची',\n ar: 'قائمة اللغات',\n ru: 'Список языков',\n }),\n switchTo: t({\n en: 'Switch to',\n fr: 'Passer à',\n es: 'Cambiar a',\n 'en-GB': 'Switch to',\n de: 'Wechseln Sie zu',\n ja: 'に切り替える',\n ko: '전환',\n zh: '切换到',\n it: 'Passa a',\n pt: 'Mudar para',\n hi: 'स्विच करें',\n ar: 'التبديل إلى',\n ru: 'Переключиться на',\n }),\n searchInput: {\n text: t({\n en: 'Search Locale',\n 'en-GB': 'Search Locale',\n fr: 'Rechercher la locale',\n es: 'Buscar idioma',\n de: 'Sprache durchsuchen',\n ja: 'ロケールを検索',\n ko: '언어 검색',\n zh: '搜索语言',\n it: 'Cerca lingua',\n pt: 'Pesquisar idioma',\n hi: 'भाषा खोजें',\n ar: 'بحث اللغة',\n ru: 'Поиск языка',\n }),\n placeholder: t({\n en: 'Search a locale',\n 'en-GB': 'Search a locale',\n fr: 'Rechercher une locale',\n es: 'Buscar un idioma',\n de: 'Sprache suchen',\n ja: 'ロケールを検索',\n ko: '언어 검색',\n zh: '搜索语言',\n it: 'Cerca una lingua',\n pt: 'Pesquisar um idioma',\n hi: 'भाषा खोजें',\n ar: 'بحث اللغة',\n ru: 'Поиск языка',\n }),\n ariaLabel: t({\n en: 'Language search',\n 'en-GB': 'Language search',\n fr: 'Recherche de langue',\n es: 'Búsqueda de idioma',\n de: 'Sprachsuche',\n ja: '言語検索',\n ko: '언어 검색',\n zh: '语言搜索',\n it: 'Ricerca lingua',\n pt: 'Pesquisa de idioma',\n hi: 'भाषा खोजें',\n ar: 'بحث اللغة',\n ru: 'Поиск языка',\n }),\n },\n seeAllLocalesSwitch: {\n true: t({\n en: 'See all locales',\n 'en-GB': 'See all locales',\n fr: 'Voir toutes les langues',\n es: 'Ver todos los idiomas',\n de: 'Alle Sprachen anzeigen',\n ja: 'すべての言語を表示',\n ko: '모든 언어 보기',\n zh: '查看所有语言',\n it: 'Vedi tutte le lingue',\n pt: 'Ver todos os idiomas',\n hi: 'सभी भाषाओं को देखें',\n ar: 'عرض جميع اللغات',\n ru: 'Показать все языки',\n }),\n false: t({\n en: 'See only selected locales',\n 'en-GB': 'See only selected locales',\n fr: 'Voir seulement les langues sélectionnées',\n es: 'Ver solo los idiomas seleccionados',\n de: 'Nur ausgewählte Sprachen anzeigen',\n ja: '選択された言語のみを表示',\n ko: '선택한 언어만 보기',\n zh: '仅查看选定的语言',\n it: 'Vedi solo le lingue selezionate',\n pt: 'Ver apenas os idiomas selecionados',\n hi: 'केवल चुने गए भाषाओं को देखें',\n ar: 'عرض اللغات المحددة فقط',\n ru: 'Показать только выбранные языки',\n }),\n },\n },\n} satisfies Dictionary;\n\nexport default localeSwitcherContent;\n"],"names":["t"],"mappings":"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"}
@@ -77,6 +77,21 @@ declare const localeSwitcherContent: {
77
77
  ar: string;
78
78
  ru: string;
79
79
  }>;
80
+ ariaLabel: import('@intlayer/core').TypedNodeModel<import("@intlayer/core").NodeType.Translation, {
81
+ en: string;
82
+ 'en-GB': string;
83
+ fr: string;
84
+ es: string;
85
+ de: string;
86
+ ja: string;
87
+ ko: string;
88
+ zh: string;
89
+ it: string;
90
+ pt: string;
91
+ hi: string;
92
+ ar: string;
93
+ ru: string;
94
+ }>;
80
95
  };
81
96
  seeAllLocalesSwitch: {
82
97
  true: import('@intlayer/core').TypedNodeModel<import("@intlayer/core").NodeType.Translation, {
@@ -1 +1 @@
1
- {"version":3,"file":"localeSwitcher.content.d.ts","sourceRoot":"","sources":["../../../src/components/LocaleSwitcherContentDropDown/localeSwitcher.content.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiHL,CAAC;AAEvB,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"localeSwitcher.content.d.ts","sourceRoot":"","sources":["../../../src/components/LocaleSwitcherContentDropDown/localeSwitcher.content.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgIL,CAAC;AAEvB,eAAe,qBAAqB,CAAC"}
@@ -77,6 +77,21 @@ const localeSwitcherContent = {
77
77
  hi: "भाषा खोजें",
78
78
  ar: "بحث اللغة",
79
79
  ru: "Поиск языка"
80
+ }),
81
+ ariaLabel: t({
82
+ en: "Language search",
83
+ "en-GB": "Language search",
84
+ fr: "Recherche de langue",
85
+ es: "Búsqueda de idioma",
86
+ de: "Sprachsuche",
87
+ ja: "言語検索",
88
+ ko: "언어 검색",
89
+ zh: "语言搜索",
90
+ it: "Ricerca lingua",
91
+ pt: "Pesquisa de idioma",
92
+ hi: "भाषा खोजें",
93
+ ar: "بحث اللغة",
94
+ ru: "Поиск языка"
80
95
  })
81
96
  },
82
97
  seeAllLocalesSwitch: {