@mittwald/flow-react-components 0.2.0-alpha.224 → 0.2.0-alpha.225

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 (118) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/assets/doc-properties.json +5684 -4234
  3. package/dist/assets/passwordGeneration.worker-s7H8GYaN.js.map +1 -0
  4. package/dist/css/all.css +1 -1
  5. package/dist/js/@mittwald/password-tools-js.mjs +5 -0
  6. package/dist/js/@mittwald/password-tools-js.mjs.map +1 -0
  7. package/dist/js/_virtual/_.locale.json@95341064edeb0e38b66d786dbd62955c.mjs +64 -0
  8. package/dist/js/_virtual/_.locale.json@95341064edeb0e38b66d786dbd62955c.mjs.map +1 -0
  9. package/dist/js/components/src/components/FileField/FileField.mjs +3 -2
  10. package/dist/js/components/src/components/FileField/FileField.mjs.map +1 -1
  11. package/dist/js/components/src/components/Header/Header.mjs +1 -1
  12. package/dist/js/components/src/components/Header/Header.mjs.map +1 -1
  13. package/dist/js/components/src/components/Label/Label.mjs +30 -4
  14. package/dist/js/components/src/components/Label/Label.mjs.map +1 -1
  15. package/dist/js/components/src/components/Label/Label.module.scss.mjs +6 -2
  16. package/dist/js/components/src/components/Label/Label.module.scss.mjs.map +1 -1
  17. package/dist/js/components/src/components/PasswordCreationField/PasswordCreationField.mjs +303 -0
  18. package/dist/js/components/src/components/PasswordCreationField/PasswordCreationField.mjs.map +1 -0
  19. package/dist/js/components/src/components/PasswordCreationField/PasswordCreationField.module.scss.mjs +15 -0
  20. package/dist/js/components/src/components/PasswordCreationField/PasswordCreationField.module.scss.mjs.map +1 -0
  21. package/dist/js/components/src/components/PasswordCreationField/components/ComplexityIndicator/ComplexityIndicator.mjs +69 -0
  22. package/dist/js/components/src/components/PasswordCreationField/components/ComplexityIndicator/ComplexityIndicator.mjs.map +1 -0
  23. package/dist/js/components/src/components/PasswordCreationField/components/ComplexityIndicator/ComplexityIndicator.module.scss.mjs +23 -0
  24. package/dist/js/components/src/components/PasswordCreationField/components/ComplexityIndicator/ComplexityIndicator.module.scss.mjs.map +1 -0
  25. package/dist/js/components/src/components/PasswordCreationField/components/PasswordGenerateButton/PasswordGenerateButton.mjs +27 -0
  26. package/dist/js/components/src/components/PasswordCreationField/components/PasswordGenerateButton/PasswordGenerateButton.mjs.map +1 -0
  27. package/dist/js/components/src/components/PasswordCreationField/components/TogglePasswordVisibilityButton/TogglePasswordVisibilityButton.mjs +46 -0
  28. package/dist/js/components/src/components/PasswordCreationField/components/TogglePasswordVisibilityButton/TogglePasswordVisibilityButton.mjs.map +1 -0
  29. package/dist/js/components/src/components/PasswordCreationField/components/ValidationResultButton/ValidationResultButton.mjs +44 -0
  30. package/dist/js/components/src/components/PasswordCreationField/components/ValidationResultButton/ValidationResultButton.mjs.map +1 -0
  31. package/dist/js/components/src/components/PasswordCreationField/components/ValidationResultEntry/ValidationResultEntry.mjs +36 -0
  32. package/dist/js/components/src/components/PasswordCreationField/components/ValidationResultEntry/ValidationResultEntry.mjs.map +1 -0
  33. package/dist/js/components/src/components/PasswordCreationField/components/ValidationResultEntry/ValidationResultEntry.module.scss.mjs +9 -0
  34. package/dist/js/components/src/components/PasswordCreationField/components/ValidationResultEntry/ValidationResultEntry.module.scss.mjs.map +1 -0
  35. package/dist/js/components/src/components/PasswordCreationField/defaultPasswordCreationPolicy.mjs +30 -0
  36. package/dist/js/components/src/components/PasswordCreationField/defaultPasswordCreationPolicy.mjs.map +1 -0
  37. package/dist/js/components/src/components/PasswordCreationField/lib/generateValidationTranslation.mjs +29 -0
  38. package/dist/js/components/src/components/PasswordCreationField/lib/generateValidationTranslation.mjs.map +1 -0
  39. package/dist/js/components/src/components/PasswordCreationField/lib/getStateFromLatestPolicyValidationResult.mjs +32 -0
  40. package/dist/js/components/src/components/PasswordCreationField/lib/getStateFromLatestPolicyValidationResult.mjs.map +1 -0
  41. package/dist/js/components/src/components/PasswordCreationField/lib/getStatusFromPolicyValidationResult.mjs +16 -0
  42. package/dist/js/components/src/components/PasswordCreationField/lib/getStatusFromPolicyValidationResult.mjs.map +1 -0
  43. package/dist/js/components/src/components/PasswordCreationField/worker/generatePassword.mjs +31 -0
  44. package/dist/js/components/src/components/PasswordCreationField/worker/generatePassword.mjs.map +1 -0
  45. package/dist/js/components/src/components/PasswordCreationField/worker/passwordGeneration.worker.mjs +32 -0
  46. package/dist/js/components/src/components/PasswordCreationField/worker/passwordGeneration.worker.mjs.map +1 -0
  47. package/dist/js/components/src/components/Section/Section.mjs +1 -1
  48. package/dist/js/components/src/components/Section/Section.mjs.map +1 -1
  49. package/dist/js/components/src/components/Section/components/SectionHeader/SectionHeader.mjs +2 -2
  50. package/dist/js/components/src/components/Section/components/SectionHeader/SectionHeader.mjs.map +1 -1
  51. package/dist/js/components/src/components/propTypes/index.mjs +1 -0
  52. package/dist/js/components/src/components/propTypes/index.mjs.map +1 -1
  53. package/dist/js/components/src/integrations/react-hook-form/components/Field/Field.mjs +11 -5
  54. package/dist/js/components/src/integrations/react-hook-form/components/Field/Field.mjs.map +1 -1
  55. package/dist/js/components/src/lib/promises/useAbortablePromise.mjs +16 -0
  56. package/dist/js/components/src/lib/promises/useAbortablePromise.mjs.map +1 -0
  57. package/dist/js/components/src/lib/propsContext/PropsContextProvider.mjs.map +1 -1
  58. package/dist/js/default.mjs +1 -0
  59. package/dist/js/default.mjs.map +1 -1
  60. package/dist/js/flr-universal.mjs +1 -0
  61. package/dist/js/flr-universal.mjs.map +1 -1
  62. package/dist/types/components/FileField/FileField.d.ts +2 -2
  63. package/dist/types/components/FileField/FileField.d.ts.map +1 -1
  64. package/dist/types/components/Header/Header.d.ts +2 -2
  65. package/dist/types/components/Header/Header.d.ts.map +1 -1
  66. package/dist/types/components/Label/Label.d.ts.map +1 -1
  67. package/dist/types/components/Label/stories/Default.stories.d.ts +1 -0
  68. package/dist/types/components/Label/stories/Default.stories.d.ts.map +1 -1
  69. package/dist/types/components/PasswordCreationField/PasswordCreationField.d.ts +22 -0
  70. package/dist/types/components/PasswordCreationField/PasswordCreationField.d.ts.map +1 -0
  71. package/dist/types/components/PasswordCreationField/PasswordCreationField.test.d.ts +2 -0
  72. package/dist/types/components/PasswordCreationField/PasswordCreationField.test.d.ts.map +1 -0
  73. package/dist/types/components/PasswordCreationField/components/ComplexityIndicator/ComplexityIndicator.d.ts +10 -0
  74. package/dist/types/components/PasswordCreationField/components/ComplexityIndicator/ComplexityIndicator.d.ts.map +1 -0
  75. package/dist/types/components/PasswordCreationField/components/PasswordGenerateButton/PasswordGenerateButton.d.ts +10 -0
  76. package/dist/types/components/PasswordCreationField/components/PasswordGenerateButton/PasswordGenerateButton.d.ts.map +1 -0
  77. package/dist/types/components/PasswordCreationField/components/TogglePasswordVisibilityButton/TogglePasswordVisibilityButton.d.ts +2 -0
  78. package/dist/types/components/PasswordCreationField/components/TogglePasswordVisibilityButton/TogglePasswordVisibilityButton.d.ts.map +1 -0
  79. package/dist/types/components/PasswordCreationField/components/ValidationResultButton/ValidationResultButton.d.ts +11 -0
  80. package/dist/types/components/PasswordCreationField/components/ValidationResultButton/ValidationResultButton.d.ts.map +1 -0
  81. package/dist/types/components/PasswordCreationField/components/ValidationResultEntry/ValidationResultEntry.d.ts +2 -0
  82. package/dist/types/components/PasswordCreationField/components/ValidationResultEntry/ValidationResultEntry.d.ts.map +1 -0
  83. package/dist/types/components/PasswordCreationField/defaultPasswordCreationPolicy.d.ts +3 -0
  84. package/dist/types/components/PasswordCreationField/defaultPasswordCreationPolicy.d.ts.map +1 -0
  85. package/dist/types/components/PasswordCreationField/index.d.ts +4 -0
  86. package/dist/types/components/PasswordCreationField/index.d.ts.map +1 -0
  87. package/dist/types/components/PasswordCreationField/lib/generateValidationTranslation.d.ts +4 -0
  88. package/dist/types/components/PasswordCreationField/lib/generateValidationTranslation.d.ts.map +1 -0
  89. package/dist/types/components/PasswordCreationField/lib/getStateFromLatestPolicyValidationResult.d.ts +2 -0
  90. package/dist/types/components/PasswordCreationField/lib/getStateFromLatestPolicyValidationResult.d.ts.map +1 -0
  91. package/dist/types/components/PasswordCreationField/lib/getStatusFromPolicyValidationResult.d.ts +2 -0
  92. package/dist/types/components/PasswordCreationField/lib/getStatusFromPolicyValidationResult.d.ts.map +1 -0
  93. package/dist/types/components/PasswordCreationField/stories/Default.stories.d.ts +12 -0
  94. package/dist/types/components/PasswordCreationField/stories/Default.stories.d.ts.map +1 -0
  95. package/dist/types/components/PasswordCreationField/view.d.ts +8 -0
  96. package/dist/types/components/PasswordCreationField/view.d.ts.map +1 -0
  97. package/dist/types/components/PasswordCreationField/worker/generatePassword.d.ts +3 -0
  98. package/dist/types/components/PasswordCreationField/worker/generatePassword.d.ts.map +1 -0
  99. package/dist/types/components/PasswordCreationField/worker/passwordGeneration.worker.d.ts +2 -0
  100. package/dist/types/components/PasswordCreationField/worker/passwordGeneration.worker.d.ts.map +1 -0
  101. package/dist/types/components/Section/Section.d.ts.map +1 -1
  102. package/dist/types/components/Section/components/SectionHeader/SectionHeader.d.ts +2 -2
  103. package/dist/types/components/Section/components/SectionHeader/SectionHeader.d.ts.map +1 -1
  104. package/dist/types/components/propTypes/index.d.ts +2 -0
  105. package/dist/types/components/propTypes/index.d.ts.map +1 -1
  106. package/dist/types/components/public.d.ts +1 -0
  107. package/dist/types/components/public.d.ts.map +1 -1
  108. package/dist/types/integrations/@mittwald/password-tools-js/index.d.ts +3 -0
  109. package/dist/types/integrations/@mittwald/password-tools-js/index.d.ts.map +1 -0
  110. package/dist/types/integrations/react-hook-form/components/Field/Field.d.ts.map +1 -1
  111. package/dist/types/lib/promises/useAbortablePromise.d.ts +7 -0
  112. package/dist/types/lib/promises/useAbortablePromise.d.ts.map +1 -0
  113. package/dist/types/lib/propsContext/PropsContextProvider.d.ts.map +1 -1
  114. package/dist/types/lib/propsContext/propsContext.d.ts +2 -0
  115. package/dist/types/lib/propsContext/propsContext.d.ts.map +1 -1
  116. package/dist/types/views/PasswordCreationFieldView.d.ts +5 -0
  117. package/dist/types/views/PasswordCreationFieldView.d.ts.map +1 -0
  118. package/package.json +12 -5
@@ -0,0 +1,69 @@
1
+ "use client"
2
+ /* */
3
+ import { jsx } from 'react/jsx-runtime';
4
+ import { useState, useLayoutEffect } from 'react';
5
+ import styles from './ComplexityIndicator.module.scss.mjs';
6
+ import { getStatusFromPolicyValidationResult } from '../../lib/getStatusFromPolicyValidationResult.mjs';
7
+ import clsx from 'clsx';
8
+
9
+ const ComplexityIndicator = (props) => {
10
+ const { policyValidationResult, isLoading, isEmptyValue } = props;
11
+ const complexityScore = policyValidationResult?.complexity;
12
+ const [state, setState] = useState({
13
+ percentage: 0,
14
+ status: "success"
15
+ });
16
+ useLayoutEffect(() => {
17
+ let complexityFulfilledPercentage = -1;
18
+ if (policyValidationResult?.isValid === "indeterminate") {
19
+ complexityFulfilledPercentage = 100;
20
+ } else if (complexityScore && !isEmptyValue) {
21
+ complexityFulfilledPercentage = Math.min(
22
+ 100 / (complexityScore.min + 1) * (complexityScore.actual + 1),
23
+ 100
24
+ );
25
+ }
26
+ const policyValidationStatus = getStatusFromPolicyValidationResult(
27
+ policyValidationResult
28
+ );
29
+ setState({
30
+ status: policyValidationStatus,
31
+ percentage: complexityFulfilledPercentage
32
+ });
33
+ }, [policyValidationResult, isEmptyValue]);
34
+ const complexityVisible = state.percentage !== -1;
35
+ const complexityFulfilled = state.percentage === 100;
36
+ const percentageClassName = clsx(
37
+ styles.bar,
38
+ styles[`bar-background-status-${state.status}`],
39
+ {
40
+ [styles.loading]: isLoading,
41
+ [styles.running]: !complexityFulfilled
42
+ }
43
+ );
44
+ return /* @__PURE__ */ jsx(
45
+ "div",
46
+ {
47
+ "aria-hidden": true,
48
+ "data-container": "complexity",
49
+ "data-complexity-visible": complexityVisible,
50
+ "data-complexity-status": state.status,
51
+ "data-complexity-percentage": state.percentage,
52
+ className: clsx(styles.complexityIndicator, {
53
+ [styles.hide]: !complexityVisible
54
+ }),
55
+ children: /* @__PURE__ */ jsx(
56
+ "div",
57
+ {
58
+ style: {
59
+ width: `${state.percentage}%`
60
+ },
61
+ className: percentageClassName
62
+ }
63
+ )
64
+ }
65
+ );
66
+ };
67
+
68
+ export { ComplexityIndicator, ComplexityIndicator as default };
69
+ //# sourceMappingURL=ComplexityIndicator.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComplexityIndicator.mjs","sources":["../../../../../../../../src/components/PasswordCreationField/components/ComplexityIndicator/ComplexityIndicator.tsx"],"sourcesContent":["import React, { type FC, useLayoutEffect, useState } from \"react\";\nimport styles from \"./ComplexityIndicator.module.scss\";\nimport { getStatusFromPolicyValidationResult } from \"@/components/PasswordCreationField/lib/getStatusFromPolicyValidationResult\";\nimport clsx from \"clsx\";\nimport type { ResolvedPolicyValidationResult } from \"@/components/PasswordCreationField/PasswordCreationField\";\nimport { type Status } from \"@/lib/types/props\";\n\nexport type ComplexityStatus = Exclude<Status, \"info\"> | \"indeterminate\";\n\nexport interface ComplexityIndicatorProps {\n isLoading: boolean;\n isEmptyValue: boolean;\n policyValidationResult: ResolvedPolicyValidationResult;\n}\n\n/** @internal */\nexport const ComplexityIndicator: FC<ComplexityIndicatorProps> = (props) => {\n const { policyValidationResult, isLoading, isEmptyValue } = props;\n const complexityScore = policyValidationResult?.complexity;\n\n const [state, setState] = useState<{\n status: ComplexityStatus;\n percentage: number;\n }>({\n percentage: 0,\n status: \"success\",\n });\n\n useLayoutEffect(() => {\n let complexityFulfilledPercentage = -1;\n if (policyValidationResult?.isValid === \"indeterminate\") {\n complexityFulfilledPercentage = 100;\n } else if (complexityScore && !isEmptyValue) {\n complexityFulfilledPercentage = Math.min(\n (100 / (complexityScore.min + 1)) * (complexityScore.actual + 1),\n 100,\n );\n }\n\n const policyValidationStatus = getStatusFromPolicyValidationResult(\n policyValidationResult,\n );\n\n setState({\n status: policyValidationStatus,\n percentage: complexityFulfilledPercentage,\n });\n }, [policyValidationResult, isEmptyValue]);\n\n const complexityVisible = state.percentage !== -1;\n const complexityFulfilled = state.percentage === 100;\n\n const percentageClassName = clsx(\n styles.bar,\n styles[`bar-background-status-${state.status}`],\n {\n [styles.loading as string]: isLoading,\n [styles.running as string]: !complexityFulfilled,\n },\n );\n\n return (\n <div\n aria-hidden={true}\n data-container=\"complexity\"\n data-complexity-visible={complexityVisible}\n data-complexity-status={state.status}\n data-complexity-percentage={state.percentage}\n className={clsx(styles.complexityIndicator, {\n [styles.hide as string]: !complexityVisible,\n })}\n >\n <div\n style={{\n width: `${state.percentage}%`,\n }}\n className={percentageClassName}\n />\n </div>\n );\n};\n\nexport default ComplexityIndicator;\n"],"names":[],"mappings":";;;;;;AAgBa,MAAA,mBAAA,GAAoD,CAAC,KAAU,KAAA;AAC1E,EAAA,MAAM,EAAE,sBAAA,EAAwB,SAAW,EAAA,YAAA,EAAiB,GAAA,KAAA;AAC5D,EAAA,MAAM,kBAAkB,sBAAwB,EAAA,UAAA;AAEhD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,QAGvB,CAAA;AAAA,IACD,UAAY,EAAA,CAAA;AAAA,IACZ,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,IAAI,6BAAgC,GAAA,EAAA;AACpC,IAAI,IAAA,sBAAA,EAAwB,YAAY,eAAiB,EAAA;AACvD,MAAgC,6BAAA,GAAA,GAAA;AAAA,KAClC,MAAA,IAAW,eAAmB,IAAA,CAAC,YAAc,EAAA;AAC3C,MAAA,6BAAA,GAAgC,IAAK,CAAA,GAAA;AAAA,QAClC,GAAO,IAAA,eAAA,CAAgB,GAAM,GAAA,CAAA,CAAA,IAAO,gBAAgB,MAAS,GAAA,CAAA,CAAA;AAAA,QAC9D;AAAA,OACF;AAAA;AAGF,IAAA,MAAM,sBAAyB,GAAA,mCAAA;AAAA,MAC7B;AAAA,KACF;AAEA,IAAS,QAAA,CAAA;AAAA,MACP,MAAQ,EAAA,sBAAA;AAAA,MACR,UAAY,EAAA;AAAA,KACb,CAAA;AAAA,GACA,EAAA,CAAC,sBAAwB,EAAA,YAAY,CAAC,CAAA;AAEzC,EAAM,MAAA,iBAAA,GAAoB,MAAM,UAAe,KAAA,EAAA;AAC/C,EAAM,MAAA,mBAAA,GAAsB,MAAM,UAAe,KAAA,GAAA;AAEjD,EAAA,MAAM,mBAAsB,GAAA,IAAA;AAAA,IAC1B,MAAO,CAAA,GAAA;AAAA,IACP,MAAO,CAAA,CAAA,sBAAA,EAAyB,KAAM,CAAA,MAAM,CAAE,CAAA,CAAA;AAAA,IAC9C;AAAA,MACE,CAAC,MAAO,CAAA,OAAiB,GAAG,SAAA;AAAA,MAC5B,CAAC,MAAA,CAAO,OAAiB,GAAG,CAAC;AAAA;AAC/B,GACF;AAEA,EACE,uBAAA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,aAAa,EAAA,IAAA;AAAA,MACb,gBAAe,EAAA,YAAA;AAAA,MACf,yBAAyB,EAAA,iBAAA;AAAA,MACzB,0BAAwB,KAAM,CAAA,MAAA;AAAA,MAC9B,8BAA4B,KAAM,CAAA,UAAA;AAAA,MAClC,SAAA,EAAW,IAAK,CAAA,MAAA,CAAO,mBAAqB,EAAA;AAAA,QAC1C,CAAC,MAAA,CAAO,IAAc,GAAG,CAAC;AAAA,OAC3B,CAAA;AAAA,MAED,QAAA,kBAAA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,KAAO,EAAA;AAAA,YACL,KAAA,EAAO,CAAG,EAAA,KAAA,CAAM,UAAU,CAAA,CAAA;AAAA,WAC5B;AAAA,UACA,SAAW,EAAA;AAAA;AAAA;AACb;AAAA,GACF;AAEJ;;;;"}
@@ -0,0 +1,23 @@
1
+ "use client"
2
+ /* */
3
+ const complexityIndicator = "flow--password-creation-field--complexity-indicator";
4
+ const hide = "flow--password-creation-field--complexity-indicator--hide";
5
+ const bar = "flow--password-creation-field--complexity-indicator--bar";
6
+ const running = "flow--password-creation-field--complexity-indicator--running";
7
+ const loading = "flow--password-creation-field--complexity-indicator--loading";
8
+ const shimmer = "flow--password-creation-field--complexity-indicator--shimmer";
9
+ const styles = {
10
+ complexityIndicator: complexityIndicator,
11
+ hide: hide,
12
+ bar: bar,
13
+ running: running,
14
+ "bar-background-status-danger": "flow--password-creation-field--complexity-indicator--bar-background-status-danger",
15
+ "bar-background-status-success": "flow--password-creation-field--complexity-indicator--bar-background-status-success",
16
+ "bar-background-status-warning": "flow--password-creation-field--complexity-indicator--bar-background-status-warning",
17
+ "bar-background-status-indeterminate": "flow--password-creation-field--complexity-indicator--bar-background-status-indeterminate",
18
+ loading: loading,
19
+ shimmer: shimmer
20
+ };
21
+
22
+ export { bar, complexityIndicator, styles as default, hide, loading, running, shimmer };
23
+ //# sourceMappingURL=ComplexityIndicator.module.scss.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComplexityIndicator.module.scss.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,27 @@
1
+ "use client"
2
+ /* */
3
+ import { jsx } from 'react/jsx-runtime';
4
+ import 'react';
5
+ import { useLocalizedStringFormatter } from 'react-aria';
6
+ import locales from '../../../../../../_virtual/_.locale.json@95341064edeb0e38b66d786dbd62955c.mjs';
7
+ import { Button } from '../../../Button/Button.mjs';
8
+ import { Action } from '../../../Action/Action.mjs';
9
+
10
+ const PasswordGenerateButton = (props) => {
11
+ const { className, isDisabled, onGeneratePasswordAction } = props;
12
+ const translate = useLocalizedStringFormatter(locales);
13
+ return /* @__PURE__ */ jsx(Action, { action: onGeneratePasswordAction, children: /* @__PURE__ */ jsx(
14
+ Button,
15
+ {
16
+ "data-component": "generatePassword",
17
+ isDisabled,
18
+ className,
19
+ variant: "plain",
20
+ color: "dark",
21
+ children: translate.format("button.generate")
22
+ }
23
+ ) });
24
+ };
25
+
26
+ export { PasswordGenerateButton };
27
+ //# sourceMappingURL=PasswordGenerateButton.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PasswordGenerateButton.mjs","sources":["../../../../../../../../src/components/PasswordCreationField/components/PasswordGenerateButton/PasswordGenerateButton.tsx"],"sourcesContent":["import { type FC } from \"react\";\nimport { useLocalizedStringFormatter } from \"react-aria\";\nimport locales from \"./../../locales/*.locale.json\";\nimport { Button } from \"@/components/Button\";\nimport type { PropsWithClassName } from \"@/lib/types/props\";\nimport { Action, type ActionFn } from \"@/components/Action\";\n\ninterface Props extends PropsWithClassName {\n isDisabled?: boolean;\n onGeneratePasswordAction?: ActionFn;\n}\n\nexport const PasswordGenerateButton: FC<Props> = (props) => {\n const { className, isDisabled, onGeneratePasswordAction } = props;\n const translate = useLocalizedStringFormatter(locales);\n\n return (\n <Action action={onGeneratePasswordAction}>\n <Button\n data-component=\"generatePassword\"\n isDisabled={isDisabled}\n className={className}\n variant=\"plain\"\n color=\"dark\"\n >\n {translate.format(\"button.generate\")}\n </Button>\n </Action>\n );\n};\n"],"names":[],"mappings":";;;;;;;AAYa,MAAA,sBAAA,GAAoC,CAAC,KAAU,KAAA;AAC1D,EAAA,MAAM,EAAE,SAAA,EAAW,UAAY,EAAA,wBAAA,EAA6B,GAAA,KAAA;AAC5D,EAAM,MAAA,SAAA,GAAY,4BAA4B,OAAO,CAAA;AAErD,EACE,uBAAA,GAAA,CAAC,MAAO,EAAA,EAAA,MAAA,EAAQ,wBACd,EAAA,QAAA,kBAAA,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,gBAAe,EAAA,kBAAA;AAAA,MACf,UAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAQ,EAAA,OAAA;AAAA,MACR,KAAM,EAAA,MAAA;AAAA,MAEL,QAAA,EAAA,SAAA,CAAU,OAAO,iBAAiB;AAAA;AAAA,GAEvC,EAAA,CAAA;AAEJ;;;;"}
@@ -0,0 +1,46 @@
1
+ "use client"
2
+ /* */
3
+ import { jsx, jsxs } from 'react/jsx-runtime';
4
+ import 'react';
5
+ import { TooltipTrigger } from '../../../Tooltip/components/TooltipTrigger/TooltipTrigger.mjs';
6
+ import { Tooltip } from '../../../Tooltip/Tooltip.mjs';
7
+ import { Button } from '../../../Button/Button.mjs';
8
+ import '@tabler/icons-react';
9
+ import '../../../Icon/Icon.mjs';
10
+ import '../../../../lib/viewComponentContext/viewComponentContext.mjs';
11
+ import { IconHide } from '../../../Icon/components/icons/IconHide.mjs';
12
+ import { IconShow } from '../../../Icon/components/icons/IconShow.mjs';
13
+ import { Action } from '../../../Action/Action.mjs';
14
+ import locales from '../../../../../../_virtual/_.locale.json@95341064edeb0e38b66d786dbd62955c.mjs';
15
+ import { useLocalizedStringFormatter } from 'react-aria';
16
+
17
+ const TogglePasswordVisibilityButton = ({
18
+ isVisible,
19
+ isDisabled = false,
20
+ onPress,
21
+ className
22
+ }) => {
23
+ const translate = useLocalizedStringFormatter(locales);
24
+ const icon = isVisible ? /* @__PURE__ */ jsx(IconHide, {}) : /* @__PURE__ */ jsx(IconShow, {});
25
+ const tooltipText = translate.format(
26
+ "button.generate.tooltip." + (isVisible ? "hide" : "show")
27
+ );
28
+ return /* @__PURE__ */ jsx(Action, { action: onPress, children: /* @__PURE__ */ jsx(TooltipTrigger, { children: /* @__PURE__ */ jsxs(
29
+ Button,
30
+ {
31
+ className,
32
+ size: "m",
33
+ variant: "plain",
34
+ color: "secondary",
35
+ isDisabled,
36
+ "data-component": "toggleRevealPassword",
37
+ children: [
38
+ icon,
39
+ /* @__PURE__ */ jsx(Tooltip, { children: tooltipText })
40
+ ]
41
+ }
42
+ ) }) });
43
+ };
44
+
45
+ export { TogglePasswordVisibilityButton, TogglePasswordVisibilityButton as default };
46
+ //# sourceMappingURL=TogglePasswordVisibilityButton.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TogglePasswordVisibilityButton.mjs","sources":["../../../../../../../../src/components/PasswordCreationField/components/TogglePasswordVisibilityButton/TogglePasswordVisibilityButton.tsx"],"sourcesContent":["import React, { type FC } from \"react\";\nimport { Tooltip, TooltipTrigger } from \"@/components/Tooltip\";\nimport Button from \"@/components/Button\";\nimport { IconHide, IconShow } from \"@/components/Icon/components/icons\";\nimport { Action, type ActionFn } from \"@/components/Action\";\nimport locales from \"./../../locales/*.locale.json\";\nimport { useLocalizedStringFormatter } from \"react-aria\";\nimport type { PropsWithClassName } from \"@/lib/types/props\";\n\ninterface Props extends PropsWithClassName {\n isDisabled?: boolean;\n isVisible: boolean;\n onPress: ActionFn;\n}\n\n/** @internal */\nexport const TogglePasswordVisibilityButton: FC<Props> = ({\n isVisible,\n isDisabled = false,\n onPress,\n className,\n}) => {\n const translate = useLocalizedStringFormatter(locales);\n\n const icon = isVisible ? <IconHide /> : <IconShow />;\n const tooltipText = translate.format(\n \"button.generate.tooltip.\" + (isVisible ? \"hide\" : \"show\"),\n );\n\n return (\n <Action action={onPress}>\n <TooltipTrigger>\n <Button\n className={className}\n size=\"m\"\n variant=\"plain\"\n color=\"secondary\"\n isDisabled={isDisabled}\n data-component=\"toggleRevealPassword\"\n >\n {icon}\n <Tooltip>{tooltipText}</Tooltip>\n </Button>\n </TooltipTrigger>\n </Action>\n );\n};\n\nexport default TogglePasswordVisibilityButton;\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAgBO,MAAM,iCAA4C,CAAC;AAAA,EACxD,SAAA;AAAA,EACA,UAAa,GAAA,KAAA;AAAA,EACb,OAAA;AAAA,EACA;AACF,CAAM,KAAA;AACJ,EAAM,MAAA,SAAA,GAAY,4BAA4B,OAAO,CAAA;AAErD,EAAA,MAAM,OAAO,SAAY,mBAAA,GAAA,CAAC,QAAS,EAAA,EAAA,CAAA,uBAAM,QAAS,EAAA,EAAA,CAAA;AAClD,EAAA,MAAM,cAAc,SAAU,CAAA,MAAA;AAAA,IAC5B,0BAAA,IAA8B,YAAY,MAAS,GAAA,MAAA;AAAA,GACrD;AAEA,EAAA,uBACG,GAAA,CAAA,MAAA,EAAA,EAAO,MAAQ,EAAA,OAAA,EACd,8BAAC,cACC,EAAA,EAAA,QAAA,kBAAA,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,IAAK,EAAA,GAAA;AAAA,MACL,OAAQ,EAAA,OAAA;AAAA,MACR,KAAM,EAAA,WAAA;AAAA,MACN,UAAA;AAAA,MACA,gBAAe,EAAA,sBAAA;AAAA,MAEd,QAAA,EAAA;AAAA,QAAA,IAAA;AAAA,wBACD,GAAA,CAAC,WAAS,QAAY,EAAA,WAAA,EAAA;AAAA;AAAA;AAAA,KAE1B,CACF,EAAA,CAAA;AAEJ;;;;"}
@@ -0,0 +1,44 @@
1
+ "use client"
2
+ /* */
3
+ import { jsx, jsxs } from 'react/jsx-runtime';
4
+ import 'react';
5
+ import { useLocalizedStringFormatter } from 'react-aria';
6
+ import locales from '../../../../../../_virtual/_.locale.json@95341064edeb0e38b66d786dbd62955c.mjs';
7
+ import { ValidationResultEntry } from '../ValidationResultEntry/ValidationResultEntry.mjs';
8
+ import { Button } from '../../../Button/Button.mjs';
9
+ import { ContextualHelp } from '../../../ContextualHelp/ContextualHelp.mjs';
10
+ import { ContextualHelpTrigger } from '../../../ContextualHelp/components/ContextualHelpTrigger/ContextualHelpTrigger.mjs';
11
+ import { Heading } from '../../../Heading/Heading.mjs';
12
+
13
+ const ValidationResultButton = (props) => {
14
+ const { policyValidationResult, isDisabled, isEmptyValue, className } = props;
15
+ const translate = useLocalizedStringFormatter(locales);
16
+ const validationResultComponents = policyValidationResult?.ruleResults?.filter((r) => {
17
+ return isEmptyValue ? !r.isValid : true;
18
+ }).map((result, index) => {
19
+ return /* @__PURE__ */ jsx(
20
+ ValidationResultEntry,
21
+ {
22
+ result
23
+ },
24
+ `${result.identifier}-${index}`
25
+ );
26
+ });
27
+ return /* @__PURE__ */ jsxs(ContextualHelpTrigger, { children: [
28
+ /* @__PURE__ */ jsx(
29
+ Button,
30
+ {
31
+ "data-component": "showPasswordRules",
32
+ isDisabled,
33
+ className
34
+ }
35
+ ),
36
+ /* @__PURE__ */ jsxs(ContextualHelp, { children: [
37
+ /* @__PURE__ */ jsx(Heading, { children: translate.format("password.requirements.heading") }),
38
+ validationResultComponents
39
+ ] })
40
+ ] });
41
+ };
42
+
43
+ export { ValidationResultButton };
44
+ //# sourceMappingURL=ValidationResultButton.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValidationResultButton.mjs","sources":["../../../../../../../../src/components/PasswordCreationField/components/ValidationResultButton/ValidationResultButton.tsx"],"sourcesContent":["import React, { type FC } from \"react\";\nimport { useLocalizedStringFormatter } from \"react-aria\";\n\nimport locales from \"./../../locales/*.locale.json\";\nimport type { ResolvedPolicyValidationResult } from \"@/components/PasswordCreationField/PasswordCreationField\";\nimport ValidationResultEntry from \"@/components/PasswordCreationField/components/ValidationResultEntry/ValidationResultEntry\";\nimport { Button } from \"@/components/Button\";\nimport {\n ContextualHelp,\n ContextualHelpTrigger,\n} from \"@/components/ContextualHelp\";\nimport { Heading } from \"@/components/Heading\";\nimport type { PropsWithClassName } from \"@/lib/types/props\";\n\ninterface Props extends PropsWithClassName {\n policyValidationResult?: ResolvedPolicyValidationResult;\n isDisabled?: boolean;\n isEmptyValue: boolean;\n}\n\nexport const ValidationResultButton: FC<Props> = (props) => {\n const { policyValidationResult, isDisabled, isEmptyValue, className } = props;\n\n const translate = useLocalizedStringFormatter(locales);\n\n const validationResultComponents = policyValidationResult?.ruleResults\n ?.filter((r) => {\n return isEmptyValue ? !r.isValid : true;\n })\n .map((result, index) => {\n return (\n <ValidationResultEntry\n key={`${result.identifier}-${index}`}\n result={result}\n />\n );\n });\n\n return (\n <ContextualHelpTrigger>\n <Button\n data-component=\"showPasswordRules\"\n isDisabled={isDisabled}\n className={className}\n />\n <ContextualHelp>\n <Heading>{translate.format(\"password.requirements.heading\")}</Heading>\n {validationResultComponents}\n </ContextualHelp>\n </ContextualHelpTrigger>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;AAoBa,MAAA,sBAAA,GAAoC,CAAC,KAAU,KAAA;AAC1D,EAAA,MAAM,EAAE,sBAAA,EAAwB,UAAY,EAAA,YAAA,EAAc,WAAc,GAAA,KAAA;AAExE,EAAM,MAAA,SAAA,GAAY,4BAA4B,OAAO,CAAA;AAErD,EAAA,MAAM,0BAA6B,GAAA,sBAAA,EAAwB,WACvD,EAAA,MAAA,CAAO,CAAC,CAAM,KAAA;AACd,IAAO,OAAA,YAAA,GAAe,CAAC,CAAA,CAAE,OAAU,GAAA,IAAA;AAAA,GACpC,CAAA,CACA,GAAI,CAAA,CAAC,QAAQ,KAAU,KAAA;AACtB,IACE,uBAAA,GAAA;AAAA,MAAC,qBAAA;AAAA,MAAA;AAAA,QAEC;AAAA,OAAA;AAAA,MADK,CAAG,EAAA,MAAA,CAAO,UAAU,CAAA,CAAA,EAAI,KAAK,CAAA;AAAA,KAEpC;AAAA,GAEH,CAAA;AAEH,EAAA,4BACG,qBACC,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,gBAAe,EAAA,mBAAA;AAAA,QACf,UAAA;AAAA,QACA;AAAA;AAAA,KACF;AAAA,yBACC,cACC,EAAA,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,OAAS,EAAA,EAAA,QAAA,EAAA,SAAA,CAAU,MAAO,CAAA,+BAA+B,CAAE,EAAA,CAAA;AAAA,MAC3D;AAAA,KACH,EAAA;AAAA,GACF,EAAA,CAAA;AAEJ;;;;"}
@@ -0,0 +1,36 @@
1
+ "use client"
2
+ /* */
3
+ import { jsx, jsxs } from 'react/jsx-runtime';
4
+ import 'react';
5
+ import { Text } from '../../../Text/Text.mjs';
6
+ import { IconCircleCheck, IconCircleMinus } from '@tabler/icons-react';
7
+ import { useLocalizedStringFormatter } from 'react-aria';
8
+ import { generateValidationTranslation } from '../../lib/generateValidationTranslation.mjs';
9
+ import locales from '../../../../../../_virtual/_.locale.json@95341064edeb0e38b66d786dbd62955c.mjs';
10
+ import styles from './ValidationResultEntry.module.scss.mjs';
11
+
12
+ const ValidationResultEntry = (props) => {
13
+ const { result } = props;
14
+ const translate = useLocalizedStringFormatter(locales);
15
+ const icon = result.isValid ? /* @__PURE__ */ jsx(IconCircleCheck, { color: "green" }) : /* @__PURE__ */ jsx(IconCircleMinus, { color: "red" });
16
+ const [translationKey, translationValues] = generateValidationTranslation(
17
+ result,
18
+ true
19
+ );
20
+ return /* @__PURE__ */ jsxs(
21
+ Text,
22
+ {
23
+ className: styles.validationResultEntry,
24
+ "data-rule": result.ruleType,
25
+ "data-rule-valid": result.isValid,
26
+ children: [
27
+ icon,
28
+ translate.format(translationKey, translationValues)
29
+ ]
30
+ },
31
+ translationKey
32
+ );
33
+ };
34
+
35
+ export { ValidationResultEntry, ValidationResultEntry as default };
36
+ //# sourceMappingURL=ValidationResultEntry.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValidationResultEntry.mjs","sources":["../../../../../../../../src/components/PasswordCreationField/components/ValidationResultEntry/ValidationResultEntry.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport React from \"react\";\nimport { Text } from \"@/components/Text\";\nimport { IconCircleCheck, IconCircleMinus } from \"@tabler/icons-react\";\nimport { useLocalizedStringFormatter } from \"react-aria\";\nimport generateValidationTranslation from \"@/components/PasswordCreationField/lib/generateValidationTranslation\";\nimport locales from \"./../../locales/*.locale.json\";\nimport styles from \"./ValidationResultEntry.module.scss\";\nimport type { RuleValidationResult } from \"@mittwald/password-tools-js/rules\";\n\ninterface Props {\n result: RuleValidationResult;\n}\n\n/** @internal */\nexport const ValidationResultEntry: FC<Props> = (props) => {\n const { result } = props;\n const translate = useLocalizedStringFormatter(locales);\n\n const icon = result.isValid ? (\n <IconCircleCheck color=\"green\" />\n ) : (\n <IconCircleMinus color=\"red\" />\n );\n\n const [translationKey, translationValues] = generateValidationTranslation(\n result,\n true,\n );\n\n return (\n <Text\n className={styles.validationResultEntry}\n data-rule={result.ruleType}\n data-rule-valid={result.isValid}\n key={translationKey}\n >\n {icon}\n {translate.format(translationKey, translationValues)}\n </Text>\n );\n};\n\nexport default ValidationResultEntry;\n"],"names":[],"mappings":";;;;;;;;;AAea,MAAA,qBAAA,GAAmC,CAAC,KAAU,KAAA;AACzD,EAAM,MAAA,EAAE,QAAW,GAAA,KAAA;AACnB,EAAM,MAAA,SAAA,GAAY,4BAA4B,OAAO,CAAA;AAErD,EAAM,MAAA,IAAA,GAAO,MAAO,CAAA,OAAA,mBACjB,GAAA,CAAA,eAAA,EAAA,EAAgB,KAAM,EAAA,OAAA,EAAQ,CAE/B,mBAAA,GAAA,CAAC,eAAgB,EAAA,EAAA,KAAA,EAAM,KAAM,EAAA,CAAA;AAG/B,EAAM,MAAA,CAAC,cAAgB,EAAA,iBAAiB,CAAI,GAAA,6BAAA;AAAA,IAC1C,MAAA;AAAA,IACA;AAAA,GACF;AAEA,EACE,uBAAA,IAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,WAAW,MAAO,CAAA,qBAAA;AAAA,MAClB,aAAW,MAAO,CAAA,QAAA;AAAA,MAClB,mBAAiB,MAAO,CAAA,OAAA;AAAA,MAGvB,QAAA,EAAA;AAAA,QAAA,IAAA;AAAA,QACA,SAAA,CAAU,MAAO,CAAA,cAAA,EAAgB,iBAAiB;AAAA;AAAA,KAAA;AAAA,IAH9C;AAAA,GAIP;AAEJ;;;;"}
@@ -0,0 +1,9 @@
1
+ "use client"
2
+ /* */
3
+ const validationResultEntry = "flow--password-creation-field--validation-result-entry";
4
+ const styles = {
5
+ validationResultEntry: validationResultEntry
6
+ };
7
+
8
+ export { styles as default, validationResultEntry };
9
+ //# sourceMappingURL=ValidationResultEntry.module.scss.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValidationResultEntry.module.scss.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -0,0 +1,30 @@
1
+ "use client"
2
+ /* */
3
+ import { Policy } from '@mittwald/password-tools-js/policy';
4
+ import { RuleType } from '@mittwald/password-tools-js/rules';
5
+
6
+ const defaultPasswordCreationPolicy = Policy.fromDeclaration({
7
+ minComplexity: 3,
8
+ rules: [
9
+ {
10
+ ruleType: RuleType.length,
11
+ min: 12
12
+ },
13
+ {
14
+ ruleType: RuleType.hibp
15
+ },
16
+ {
17
+ identifier: "special",
18
+ ruleType: RuleType.charPool,
19
+ charPools: ["special"]
20
+ },
21
+ {
22
+ identifier: "numbers",
23
+ ruleType: RuleType.charPool,
24
+ charPools: ["numbers"]
25
+ }
26
+ ]
27
+ });
28
+
29
+ export { defaultPasswordCreationPolicy };
30
+ //# sourceMappingURL=defaultPasswordCreationPolicy.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultPasswordCreationPolicy.mjs","sources":["../../../../../../src/components/PasswordCreationField/defaultPasswordCreationPolicy.ts"],"sourcesContent":["import { Policy } from \"@mittwald/password-tools-js/policy\";\nimport { RuleType } from \"@mittwald/password-tools-js/rules\";\n\nexport const defaultPasswordCreationPolicy = Policy.fromDeclaration({\n minComplexity: 3,\n rules: [\n {\n ruleType: RuleType.length,\n min: 12,\n },\n {\n ruleType: RuleType.hibp,\n },\n {\n identifier: \"special\",\n ruleType: RuleType.charPool,\n charPools: [\"special\"],\n },\n {\n identifier: \"numbers\",\n ruleType: RuleType.charPool,\n charPools: [\"numbers\"],\n },\n ],\n});\n"],"names":[],"mappings":";;;AAGa,MAAA,6BAAA,GAAgC,OAAO,eAAgB,CAAA;AAAA,EAClE,aAAe,EAAA,CAAA;AAAA,EACf,KAAO,EAAA;AAAA,IACL;AAAA,MACE,UAAU,QAAS,CAAA,MAAA;AAAA,MACnB,GAAK,EAAA;AAAA,KACP;AAAA,IACA;AAAA,MACE,UAAU,QAAS,CAAA;AAAA,KACrB;AAAA,IACA;AAAA,MACE,UAAY,EAAA,SAAA;AAAA,MACZ,UAAU,QAAS,CAAA,QAAA;AAAA,MACnB,SAAA,EAAW,CAAC,SAAS;AAAA,KACvB;AAAA,IACA;AAAA,MACE,UAAY,EAAA,SAAA;AAAA,MACZ,UAAU,QAAS,CAAA,QAAA;AAAA,MACnB,SAAA,EAAW,CAAC,SAAS;AAAA;AACvB;AAEJ,CAAC;;;;"}
@@ -0,0 +1,29 @@
1
+ "use client"
2
+ /* */
3
+ const generateTranslationString = (rule, shortVersion = false) => {
4
+ const translateString = `validation.${rule.ruleType ?? "general"}`;
5
+ let finalTranslationString = "";
6
+ if ("min" in rule || "max" in rule) {
7
+ const breakingBoundaryProperty = rule.failingBoundary ? rule.failingBoundary : "min";
8
+ if (rule.identifier) {
9
+ finalTranslationString = `${translateString}.${rule.identifier}.${breakingBoundaryProperty}`;
10
+ } else {
11
+ finalTranslationString = `${translateString}.${breakingBoundaryProperty}`;
12
+ }
13
+ } else if (rule.identifier) {
14
+ finalTranslationString = `${translateString}.${rule.identifier}`;
15
+ } else {
16
+ finalTranslationString = translateString;
17
+ }
18
+ return shortVersion ? `${finalTranslationString}.short` : finalTranslationString;
19
+ };
20
+ const generateValidationTranslation = (r, shotVersion = false) => {
21
+ const translationKey = generateTranslationString(r, shotVersion);
22
+ return [
23
+ translationKey,
24
+ r
25
+ ];
26
+ };
27
+
28
+ export { generateValidationTranslation as default, generateValidationTranslation };
29
+ //# sourceMappingURL=generateValidationTranslation.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateValidationTranslation.mjs","sources":["../../../../../../../src/components/PasswordCreationField/lib/generateValidationTranslation.ts"],"sourcesContent":["import type { RuleValidationResult } from \"@mittwald/password-tools-js/rules\";\n\nconst generateTranslationString = (\n rule: Partial<RuleValidationResult>,\n shortVersion = false,\n): string => {\n const translateString = `validation.${rule.ruleType ?? \"general\"}`;\n let finalTranslationString = \"\";\n\n if (\"min\" in rule || \"max\" in rule) {\n const breakingBoundaryProperty = rule.failingBoundary\n ? rule.failingBoundary\n : \"min\";\n\n if (rule.identifier) {\n finalTranslationString = `${translateString}.${rule.identifier}.${breakingBoundaryProperty}`;\n } else {\n finalTranslationString = `${translateString}.${breakingBoundaryProperty}`;\n }\n } else if (rule.identifier) {\n finalTranslationString = `${translateString}.${rule.identifier}`;\n } else {\n finalTranslationString = translateString;\n }\n\n return shortVersion\n ? `${finalTranslationString}.short`\n : finalTranslationString;\n};\n\nexport const generateValidationTranslation = (\n r: Partial<RuleValidationResult>,\n shotVersion = false,\n): [string, Record<string, string | number | boolean> | undefined] => {\n const translationKey = generateTranslationString(r, shotVersion);\n\n return [\n translationKey,\n r as unknown as Record<string, string | number | boolean> | undefined,\n ];\n};\n\nexport default generateValidationTranslation;\n"],"names":[],"mappings":"AAEA,MAAM,yBAA4B,GAAA,CAChC,IACA,EAAA,YAAA,GAAe,KACJ,KAAA;AACX,EAAA,MAAM,eAAkB,GAAA,CAAA,WAAA,EAAc,IAAK,CAAA,QAAA,IAAY,SAAS,CAAA,CAAA;AAChE,EAAA,IAAI,sBAAyB,GAAA,EAAA;AAE7B,EAAI,IAAA,KAAA,IAAS,IAAQ,IAAA,KAAA,IAAS,IAAM,EAAA;AAClC,IAAA,MAAM,wBAA2B,GAAA,IAAA,CAAK,eAClC,GAAA,IAAA,CAAK,eACL,GAAA,KAAA;AAEJ,IAAA,IAAI,KAAK,UAAY,EAAA;AACnB,MAAA,sBAAA,GAAyB,GAAG,eAAe,CAAA,CAAA,EAAI,IAAK,CAAA,UAAU,IAAI,wBAAwB,CAAA,CAAA;AAAA,KACrF,MAAA;AACL,MAAyB,sBAAA,GAAA,CAAA,EAAG,eAAe,CAAA,CAAA,EAAI,wBAAwB,CAAA,CAAA;AAAA;AACzE,GACF,MAAA,IAAW,KAAK,UAAY,EAAA;AAC1B,IAAA,sBAAA,GAAyB,CAAG,EAAA,eAAe,CAAI,CAAA,EAAA,IAAA,CAAK,UAAU,CAAA,CAAA;AAAA,GACzD,MAAA;AACL,IAAyB,sBAAA,GAAA,eAAA;AAAA;AAG3B,EAAO,OAAA,YAAA,GACH,CAAG,EAAA,sBAAsB,CACzB,MAAA,CAAA,GAAA,sBAAA;AACN,CAAA;AAEO,MAAM,6BAAgC,GAAA,CAC3C,CACA,EAAA,WAAA,GAAc,KACsD,KAAA;AACpE,EAAM,MAAA,cAAA,GAAiB,yBAA0B,CAAA,CAAA,EAAG,WAAW,CAAA;AAE/D,EAAO,OAAA;AAAA,IACL,cAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
@@ -0,0 +1,32 @@
1
+ "use client"
2
+ /* */
3
+ import '@mittwald/password-tools-js/rules';
4
+
5
+ const getStateFromLatestPolicyValidationResult = (result) => {
6
+ if (!result.isValid && result.ruleResults.length >= 1) {
7
+ const failingRule = result.ruleResults.find((r) => !r.isValid);
8
+ if (!failingRule) {
9
+ return {
10
+ isValid: false,
11
+ identifier: "failingComplexity"
12
+ };
13
+ }
14
+ return failingRule;
15
+ }
16
+ if (result.isValid === "indeterminate") {
17
+ return void 0;
18
+ }
19
+ if (result.complexity.actual <= result.complexity.min) {
20
+ return {
21
+ isValid: result.isValid,
22
+ identifier: "optimizeComplexity"
23
+ };
24
+ }
25
+ return {
26
+ isValid: true,
27
+ identifier: "securePassword"
28
+ };
29
+ };
30
+
31
+ export { getStateFromLatestPolicyValidationResult as default, getStateFromLatestPolicyValidationResult };
32
+ //# sourceMappingURL=getStateFromLatestPolicyValidationResult.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getStateFromLatestPolicyValidationResult.mjs","sources":["../../../../../../../src/components/PasswordCreationField/lib/getStateFromLatestPolicyValidationResult.ts"],"sourcesContent":["import { type RuleValidationResult } from \"@mittwald/password-tools-js/rules\";\nimport type { ResolvedPolicyValidationResult } from \"@/components/PasswordCreationField/PasswordCreationField\";\n\n/** @internal */\nexport const getStateFromLatestPolicyValidationResult = (\n result: ResolvedPolicyValidationResult,\n): undefined | Partial<RuleValidationResult> => {\n if (!result.isValid && result.ruleResults.length >= 1) {\n const failingRule = result.ruleResults.find((r) => !r.isValid);\n if (!failingRule) {\n return {\n isValid: false,\n identifier: \"failingComplexity\",\n };\n }\n\n return failingRule;\n }\n\n if (result.isValid === \"indeterminate\") {\n return undefined;\n }\n\n if (result.complexity.actual <= result.complexity.min) {\n return {\n isValid: result.isValid,\n identifier: \"optimizeComplexity\",\n };\n }\n return {\n isValid: true,\n identifier: \"securePassword\",\n };\n};\n\nexport default getStateFromLatestPolicyValidationResult;\n"],"names":[],"mappings":";;AAIa,MAAA,wCAAA,GAA2C,CACtD,MAC8C,KAAA;AAC9C,EAAA,IAAI,CAAC,MAAO,CAAA,OAAA,IAAW,MAAO,CAAA,WAAA,CAAY,UAAU,CAAG,EAAA;AACrD,IAAM,MAAA,WAAA,GAAc,OAAO,WAAY,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA,CAAC,EAAE,OAAO,CAAA;AAC7D,IAAA,IAAI,CAAC,WAAa,EAAA;AAChB,MAAO,OAAA;AAAA,QACL,OAAS,EAAA,KAAA;AAAA,QACT,UAAY,EAAA;AAAA,OACd;AAAA;AAGF,IAAO,OAAA,WAAA;AAAA;AAGT,EAAI,IAAA,MAAA,CAAO,YAAY,eAAiB,EAAA;AACtC,IAAO,OAAA,MAAA;AAAA;AAGT,EAAA,IAAI,MAAO,CAAA,UAAA,CAAW,MAAU,IAAA,MAAA,CAAO,WAAW,GAAK,EAAA;AACrD,IAAO,OAAA;AAAA,MACL,SAAS,MAAO,CAAA,OAAA;AAAA,MAChB,UAAY,EAAA;AAAA,KACd;AAAA;AAEF,EAAO,OAAA;AAAA,IACL,OAAS,EAAA,IAAA;AAAA,IACT,UAAY,EAAA;AAAA,GACd;AACF;;;;"}
@@ -0,0 +1,16 @@
1
+ "use client"
2
+ /* */
3
+ const getStatusFromPolicyValidationResult = (result) => {
4
+ if (result.isValid === true) {
5
+ if (result.complexity && result.complexity.actual === result.complexity.min && result.complexity.min !== 4) {
6
+ return "warning";
7
+ }
8
+ return "success";
9
+ } else if (result.isValid === "indeterminate") {
10
+ return "indeterminate";
11
+ }
12
+ return "danger";
13
+ };
14
+
15
+ export { getStatusFromPolicyValidationResult as default, getStatusFromPolicyValidationResult };
16
+ //# sourceMappingURL=getStatusFromPolicyValidationResult.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getStatusFromPolicyValidationResult.mjs","sources":["../../../../../../../src/components/PasswordCreationField/lib/getStatusFromPolicyValidationResult.ts"],"sourcesContent":["import type { ResolvedPolicyValidationResult } from \"@/components/PasswordCreationField/PasswordCreationField\";\nimport type { ComplexityStatus } from \"@/components/PasswordCreationField/components/ComplexityIndicator/ComplexityIndicator\";\n\n/**\n * @param result\n * @internal\n */\nexport const getStatusFromPolicyValidationResult = (\n result: ResolvedPolicyValidationResult,\n): ComplexityStatus => {\n if (result.isValid === true) {\n if (\n result.complexity &&\n result.complexity.actual === result.complexity.min &&\n result.complexity.min !== 4\n ) {\n return \"warning\";\n }\n\n return \"success\";\n } else if (result.isValid === \"indeterminate\") {\n return \"indeterminate\";\n }\n\n return \"danger\";\n};\n\nexport default getStatusFromPolicyValidationResult;\n"],"names":[],"mappings":"AAOa,MAAA,mCAAA,GAAsC,CACjD,MACqB,KAAA;AACrB,EAAI,IAAA,MAAA,CAAO,YAAY,IAAM,EAAA;AAC3B,IACE,IAAA,MAAA,CAAO,UACP,IAAA,MAAA,CAAO,UAAW,CAAA,MAAA,KAAW,MAAO,CAAA,UAAA,CAAW,GAC/C,IAAA,MAAA,CAAO,UAAW,CAAA,GAAA,KAAQ,CAC1B,EAAA;AACA,MAAO,OAAA,SAAA;AAAA;AAGT,IAAO,OAAA,SAAA;AAAA,GACT,MAAA,IAAW,MAAO,CAAA,OAAA,KAAY,eAAiB,EAAA;AAC7C,IAAO,OAAA,eAAA;AAAA;AAGT,EAAO,OAAA,QAAA;AACT;;;;"}
@@ -0,0 +1,31 @@
1
+ "use client"
2
+ /* */
3
+ import { Generator } from '@mittwald/password-tools-js/generator';
4
+
5
+ const generatePassword = async (validationPolicy) => {
6
+ if (typeof Worker === "undefined") {
7
+ return new Generator(validationPolicy).generatePassword();
8
+ }
9
+ const { default: GeneratorWorker } = await import('./passwordGeneration.worker.mjs');
10
+ const worker = new GeneratorWorker();
11
+ return new Promise((resolve, reject) => {
12
+ worker.onmessage = (e) => {
13
+ const [action, data] = e.data;
14
+ if (action === "generatePassword") {
15
+ resolve(data);
16
+ } else if (action === "error") {
17
+ reject(data);
18
+ }
19
+ };
20
+ worker.postMessage([
21
+ "generatePassword",
22
+ JSON.stringify({
23
+ ...validationPolicy,
24
+ rules: [...validationPolicy.rules].map((r) => r.config)
25
+ })
26
+ ]);
27
+ });
28
+ };
29
+
30
+ export { generatePassword };
31
+ //# sourceMappingURL=generatePassword.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generatePassword.mjs","sources":["../../../../../../../src/components/PasswordCreationField/worker/generatePassword.ts"],"sourcesContent":["import type { Policy } from \"@mittwald/password-tools-js/policy\";\nimport { Generator } from \"@mittwald/password-tools-js/generator\";\n\nexport const generatePassword = async (\n validationPolicy: Policy,\n): Promise<string> => {\n if (typeof Worker === \"undefined\") {\n return new Generator(validationPolicy).generatePassword();\n }\n\n const { default: GeneratorWorker } = await import(\n `./passwordGeneration.worker?worker&inline`\n );\n\n const worker = new GeneratorWorker();\n return new Promise((resolve, reject) => {\n worker.onmessage = (e: MessageEvent) => {\n const [action, data] = e.data;\n if (action === \"generatePassword\") {\n resolve(data);\n } else if (action === \"error\") {\n reject(data);\n }\n };\n\n worker.postMessage([\n \"generatePassword\",\n JSON.stringify({\n ...validationPolicy,\n rules: [...validationPolicy.rules].map((r) => r.config),\n }),\n ]);\n });\n};\n"],"names":[],"mappings":";;AAGa,MAAA,gBAAA,GAAmB,OAC9B,gBACoB,KAAA;AACpB,EAAI,IAAA,OAAO,WAAW,WAAa,EAAA;AACjC,IAAA,OAAO,IAAI,SAAA,CAAU,gBAAgB,CAAA,CAAE,gBAAiB,EAAA;AAAA;AAG1D,EAAA,MAAM,EAAE,OAAS,EAAA,eAAA,EAAoB,GAAA,MAAM,OACzC,iCACF,CAAA;AAEA,EAAM,MAAA,MAAA,GAAS,IAAI,eAAgB,EAAA;AACnC,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAW,KAAA;AACtC,IAAO,MAAA,CAAA,SAAA,GAAY,CAAC,CAAoB,KAAA;AACtC,MAAA,MAAM,CAAC,MAAA,EAAQ,IAAI,CAAA,GAAI,CAAE,CAAA,IAAA;AACzB,MAAA,IAAI,WAAW,kBAAoB,EAAA;AACjC,QAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,OACd,MAAA,IAAW,WAAW,OAAS,EAAA;AAC7B,QAAA,MAAA,CAAO,IAAI,CAAA;AAAA;AACb,KACF;AAEA,IAAA,MAAA,CAAO,WAAY,CAAA;AAAA,MACjB,kBAAA;AAAA,MACA,KAAK,SAAU,CAAA;AAAA,QACb,GAAG,gBAAA;AAAA,QACH,KAAA,EAAO,CAAC,GAAG,gBAAiB,CAAA,KAAK,EAAE,GAAI,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,MAAM;AAAA,OACvD;AAAA,KACF,CAAA;AAAA,GACF,CAAA;AACH;;;;"}