@thunderid/react 1.3.2 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ThunderIDReactClient.d.ts +9 -0
- package/dist/ThunderIDReactClient.d.ts.map +1 -1
- package/dist/ThunderIDReactClient.js +16 -5
- package/dist/ThunderIDReactClient.js.map +1 -1
- package/dist/cjs/ThunderIDReactClient.cjs +16 -5
- package/dist/cjs/ThunderIDReactClient.cjs.map +1 -1
- package/dist/cjs/components/presentation/ChangeCredential/BaseChangeCredential.cjs +1 -1
- package/dist/cjs/components/presentation/auth/AcceptInvite/BaseAcceptInvite.cjs +1 -1
- package/dist/cjs/components/presentation/auth/AcceptInvite/BaseAcceptInvite.cjs.map +1 -1
- package/dist/cjs/components/presentation/auth/AuthOptionFactory.cjs +56 -17
- package/dist/cjs/components/presentation/auth/AuthOptionFactory.cjs.map +1 -1
- package/dist/cjs/components/presentation/auth/InviteUser/BaseInviteUser.cjs +21 -5
- package/dist/cjs/components/presentation/auth/InviteUser/BaseInviteUser.cjs.map +1 -1
- package/dist/cjs/components/presentation/auth/InviteUser/InviteUser.cjs +6 -0
- package/dist/cjs/components/presentation/auth/InviteUser/InviteUser.cjs.map +1 -1
- package/dist/cjs/components/primitives/AuthFlowSelect/AuthFlowSelect.cjs +21 -0
- package/dist/cjs/components/primitives/AuthFlowSelect/AuthFlowSelect.cjs.map +1 -0
- package/dist/cjs/components/primitives/AuthFlowSelect/BaseAuthFlowSelect.cjs +32 -0
- package/dist/cjs/components/primitives/AuthFlowSelect/BaseAuthFlowSelect.cjs.map +1 -0
- package/dist/cjs/components/primitives/CopyableText/CopyableText.cjs +41 -21
- package/dist/cjs/components/primitives/CopyableText/CopyableText.cjs.map +1 -1
- package/dist/cjs/components/primitives/CopyableText/CopyableText.styles.cjs +5 -2
- package/dist/cjs/components/primitives/CopyableText/CopyableText.styles.cjs.map +1 -1
- package/dist/cjs/components/primitives/Icons/Copy.cjs +33 -0
- package/dist/cjs/components/primitives/Icons/Copy.cjs.map +1 -0
- package/dist/cjs/components/primitives/PasswordField/PasswordField.cjs +2 -1
- package/dist/cjs/components/primitives/PasswordField/PasswordField.cjs.map +1 -1
- package/dist/cjs/components/primitives/Select/ResourceSelect.cjs +104 -0
- package/dist/cjs/components/primitives/Select/ResourceSelect.cjs.map +1 -0
- package/dist/cjs/components/primitives/Select/Select.cjs +72 -21
- package/dist/cjs/components/primitives/Select/Select.cjs.map +1 -1
- package/dist/cjs/components/primitives/Select/Select.styles.cjs +19 -3
- package/dist/cjs/components/primitives/Select/Select.styles.cjs.map +1 -1
- package/dist/cjs/components/primitives/Select/useSelectMessages.cjs +21 -0
- package/dist/cjs/components/primitives/Select/useSelectMessages.cjs.map +1 -0
- package/dist/cjs/components/primitives/TextField/TextField.cjs +19 -3
- package/dist/cjs/components/primitives/TextField/TextField.cjs.map +1 -1
- package/dist/cjs/components/primitives/TextField/TextField.styles.cjs +18 -5
- package/dist/cjs/components/primitives/TextField/TextField.styles.cjs.map +1 -1
- package/dist/cjs/components/primitives/UserSelect/BaseUserSelect.cjs +33 -0
- package/dist/cjs/components/primitives/UserSelect/BaseUserSelect.cjs.map +1 -0
- package/dist/cjs/components/primitives/UserSelect/UserSelect.cjs +21 -0
- package/dist/cjs/components/primitives/UserSelect/UserSelect.cjs.map +1 -0
- package/dist/cjs/components/primitives/UserTypeSelect/BaseUserTypeSelect.cjs +31 -0
- package/dist/cjs/components/primitives/UserTypeSelect/BaseUserTypeSelect.cjs.map +1 -0
- package/dist/cjs/components/primitives/UserTypeSelect/UserTypeSelect.cjs +21 -0
- package/dist/cjs/components/primitives/UserTypeSelect/UserTypeSelect.cjs.map +1 -0
- package/dist/cjs/hooks/useFetchAuthFlows.cjs +36 -0
- package/dist/cjs/hooks/useFetchAuthFlows.cjs.map +1 -0
- package/dist/cjs/hooks/useFetchUserTypes.cjs +34 -0
- package/dist/cjs/hooks/useFetchUserTypes.cjs.map +1 -0
- package/dist/cjs/hooks/useFetchUsers.cjs +35 -0
- package/dist/cjs/hooks/useFetchUsers.cjs.map +1 -0
- package/dist/cjs/hooks/useInfiniteOptions.cjs +129 -0
- package/dist/cjs/hooks/useInfiniteOptions.cjs.map +1 -0
- package/dist/cjs/hooks/useManagementEndpoint.cjs.map +1 -1
- package/dist/cjs/index.cjs +56 -0
- package/dist/cjs/utils/createAuthenticatedFetcher.cjs +1 -0
- package/dist/cjs/utils/createAuthenticatedFetcher.cjs.map +1 -1
- package/dist/components/presentation/ChangeCredential/BaseChangeCredential.js +1 -1
- package/dist/components/presentation/auth/AcceptInvite/BaseAcceptInvite.d.ts.map +1 -1
- package/dist/components/presentation/auth/AcceptInvite/BaseAcceptInvite.js +1 -1
- package/dist/components/presentation/auth/AcceptInvite/BaseAcceptInvite.js.map +1 -1
- package/dist/components/presentation/auth/AuthOptionFactory.d.ts +9 -1
- package/dist/components/presentation/auth/AuthOptionFactory.d.ts.map +1 -1
- package/dist/components/presentation/auth/AuthOptionFactory.js +56 -17
- package/dist/components/presentation/auth/AuthOptionFactory.js.map +1 -1
- package/dist/components/presentation/auth/InviteUser/BaseInviteUser.d.ts +18 -2
- package/dist/components/presentation/auth/InviteUser/BaseInviteUser.d.ts.map +1 -1
- package/dist/components/presentation/auth/InviteUser/BaseInviteUser.js +22 -6
- package/dist/components/presentation/auth/InviteUser/BaseInviteUser.js.map +1 -1
- package/dist/components/presentation/auth/InviteUser/InviteUser.d.ts +2 -1
- package/dist/components/presentation/auth/InviteUser/InviteUser.d.ts.map +1 -1
- package/dist/components/presentation/auth/InviteUser/InviteUser.js +6 -0
- package/dist/components/presentation/auth/InviteUser/InviteUser.js.map +1 -1
- package/dist/components/primitives/AuthFlowSelect/AuthFlowSelect.d.ts +11 -0
- package/dist/components/primitives/AuthFlowSelect/AuthFlowSelect.d.ts.map +1 -0
- package/dist/components/primitives/AuthFlowSelect/AuthFlowSelect.js +19 -0
- package/dist/components/primitives/AuthFlowSelect/AuthFlowSelect.js.map +1 -0
- package/dist/components/primitives/AuthFlowSelect/BaseAuthFlowSelect.d.ts +14 -0
- package/dist/components/primitives/AuthFlowSelect/BaseAuthFlowSelect.d.ts.map +1 -0
- package/dist/components/primitives/AuthFlowSelect/BaseAuthFlowSelect.js +29 -0
- package/dist/components/primitives/AuthFlowSelect/BaseAuthFlowSelect.js.map +1 -0
- package/dist/components/primitives/CopyableText/CopyableText.d.ts +9 -0
- package/dist/components/primitives/CopyableText/CopyableText.d.ts.map +1 -1
- package/dist/components/primitives/CopyableText/CopyableText.js +40 -21
- package/dist/components/primitives/CopyableText/CopyableText.js.map +1 -1
- package/dist/components/primitives/CopyableText/CopyableText.styles.d.ts.map +1 -1
- package/dist/components/primitives/CopyableText/CopyableText.styles.js +5 -2
- package/dist/components/primitives/CopyableText/CopyableText.styles.js.map +1 -1
- package/dist/components/primitives/Icons/Copy.d.ts +7 -0
- package/dist/components/primitives/Icons/Copy.d.ts.map +1 -0
- package/dist/components/primitives/Icons/Copy.js +31 -0
- package/dist/components/primitives/Icons/Copy.js.map +1 -0
- package/dist/components/primitives/PasswordField/PasswordField.d.ts +9 -1
- package/dist/components/primitives/PasswordField/PasswordField.d.ts.map +1 -1
- package/dist/components/primitives/PasswordField/PasswordField.js +2 -1
- package/dist/components/primitives/PasswordField/PasswordField.js.map +1 -1
- package/dist/components/primitives/Select/ResourceSelect.d.ts +36 -0
- package/dist/components/primitives/Select/ResourceSelect.d.ts.map +1 -0
- package/dist/components/primitives/Select/ResourceSelect.js +100 -0
- package/dist/components/primitives/Select/ResourceSelect.js.map +1 -0
- package/dist/components/primitives/Select/Select.d.ts +22 -13
- package/dist/components/primitives/Select/Select.d.ts.map +1 -1
- package/dist/components/primitives/Select/Select.js +72 -22
- package/dist/components/primitives/Select/Select.js.map +1 -1
- package/dist/components/primitives/Select/Select.styles.d.ts.map +1 -1
- package/dist/components/primitives/Select/Select.styles.js +19 -3
- package/dist/components/primitives/Select/Select.styles.js.map +1 -1
- package/dist/components/primitives/Select/__tests__/selectTestUtils.d.ts +6 -0
- package/dist/components/primitives/Select/__tests__/selectTestUtils.d.ts.map +1 -0
- package/dist/components/primitives/Select/useSelectMessages.d.ts +9 -0
- package/dist/components/primitives/Select/useSelectMessages.d.ts.map +1 -0
- package/dist/components/primitives/Select/useSelectMessages.js +18 -0
- package/dist/components/primitives/Select/useSelectMessages.js.map +1 -0
- package/dist/components/primitives/TextField/TextField.d.ts +8 -0
- package/dist/components/primitives/TextField/TextField.d.ts.map +1 -1
- package/dist/components/primitives/TextField/TextField.js +19 -3
- package/dist/components/primitives/TextField/TextField.js.map +1 -1
- package/dist/components/primitives/TextField/TextField.styles.d.ts +2 -1
- package/dist/components/primitives/TextField/TextField.styles.d.ts.map +1 -1
- package/dist/components/primitives/TextField/TextField.styles.js +18 -5
- package/dist/components/primitives/TextField/TextField.styles.js.map +1 -1
- package/dist/components/primitives/UserSelect/BaseUserSelect.d.ts +15 -0
- package/dist/components/primitives/UserSelect/BaseUserSelect.d.ts.map +1 -0
- package/dist/components/primitives/UserSelect/BaseUserSelect.js +30 -0
- package/dist/components/primitives/UserSelect/BaseUserSelect.js.map +1 -0
- package/dist/components/primitives/UserSelect/UserSelect.d.ts +11 -0
- package/dist/components/primitives/UserSelect/UserSelect.d.ts.map +1 -0
- package/dist/components/primitives/UserSelect/UserSelect.js +19 -0
- package/dist/components/primitives/UserSelect/UserSelect.js.map +1 -0
- package/dist/components/primitives/UserTypeSelect/BaseUserTypeSelect.d.ts +14 -0
- package/dist/components/primitives/UserTypeSelect/BaseUserTypeSelect.d.ts.map +1 -0
- package/dist/components/primitives/UserTypeSelect/BaseUserTypeSelect.js +28 -0
- package/dist/components/primitives/UserTypeSelect/BaseUserTypeSelect.js.map +1 -0
- package/dist/components/primitives/UserTypeSelect/UserTypeSelect.d.ts +11 -0
- package/dist/components/primitives/UserTypeSelect/UserTypeSelect.d.ts.map +1 -0
- package/dist/components/primitives/UserTypeSelect/UserTypeSelect.js +19 -0
- package/dist/components/primitives/UserTypeSelect/UserTypeSelect.js.map +1 -0
- package/dist/hooks/useFetchAuthFlows.d.ts +9 -0
- package/dist/hooks/useFetchAuthFlows.d.ts.map +1 -0
- package/dist/hooks/useFetchAuthFlows.js +33 -0
- package/dist/hooks/useFetchAuthFlows.js.map +1 -0
- package/dist/hooks/useFetchUserTypes.d.ts +8 -0
- package/dist/hooks/useFetchUserTypes.d.ts.map +1 -0
- package/dist/hooks/useFetchUserTypes.js +31 -0
- package/dist/hooks/useFetchUserTypes.js.map +1 -0
- package/dist/hooks/useFetchUsers.d.ts +8 -0
- package/dist/hooks/useFetchUsers.d.ts.map +1 -0
- package/dist/hooks/useFetchUsers.js +32 -0
- package/dist/hooks/useFetchUsers.js.map +1 -0
- package/dist/hooks/useInfiniteOptions.d.ts +31 -0
- package/dist/hooks/useInfiniteOptions.d.ts.map +1 -0
- package/dist/hooks/useInfiniteOptions.js +126 -0
- package/dist/hooks/useInfiniteOptions.js.map +1 -0
- package/dist/hooks/useManagementEndpoint.d.ts +1 -1
- package/dist/hooks/useManagementEndpoint.d.ts.map +1 -1
- package/dist/hooks/useManagementEndpoint.js.map +1 -1
- package/dist/index.d.ts +18 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -2
- package/dist/utils/createAuthenticatedFetcher.d.ts.map +1 -1
- package/dist/utils/createAuthenticatedFetcher.js +1 -0
- package/dist/utils/createAuthenticatedFetcher.js.map +1 -1
- package/package.json +2 -2
|
@@ -65,8 +65,7 @@ const useStyles = (theme, colorScheme, disabled, hasError) => (0, react.useMemo)
|
|
|
65
65
|
opacity: 0.6;
|
|
66
66
|
cursor: not-allowed;
|
|
67
67
|
`;
|
|
68
|
-
|
|
69
|
-
option: require_emotion.css`
|
|
68
|
+
const option = require_emotion.css`
|
|
70
69
|
padding: calc(${theme.vars.spacing.unit} / 2) ${theme.vars.spacing.unit};
|
|
71
70
|
color: ${theme.vars.colors.text.primary};
|
|
72
71
|
background-color: ${theme.vars.colors.background.surface};
|
|
@@ -79,10 +78,27 @@ const useStyles = (theme, colorScheme, disabled, hasError) => (0, react.useMemo)
|
|
|
79
78
|
background-color: ${theme.vars.colors.primary.main};
|
|
80
79
|
color: ${theme.vars.colors.primary.contrastText};
|
|
81
80
|
}
|
|
81
|
+
`;
|
|
82
|
+
const status = require_emotion.css`
|
|
83
|
+
display: block;
|
|
84
|
+
margin-top: calc(${theme.vars.spacing.unit} / 2);
|
|
85
|
+
font-size: ${theme.vars.typography.fontSizes.sm};
|
|
86
|
+
color: ${theme.vars.colors.text.secondary};
|
|
87
|
+
|
|
88
|
+
&:empty {
|
|
89
|
+
display: none;
|
|
90
|
+
}
|
|
91
|
+
`;
|
|
92
|
+
return {
|
|
93
|
+
loadMore: require_emotion.css`
|
|
94
|
+
color: ${theme.vars.colors.primary.main};
|
|
95
|
+
font-weight: ${theme.vars.typography.fontWeights.medium};
|
|
82
96
|
`,
|
|
97
|
+
option,
|
|
83
98
|
select,
|
|
84
99
|
selectDisabled,
|
|
85
|
-
selectError
|
|
100
|
+
selectError,
|
|
101
|
+
status
|
|
86
102
|
};
|
|
87
103
|
}, [
|
|
88
104
|
theme,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.styles.cjs","names":["select: string","selectError: string","selectDisabled: string"],"sources":["../../../../../src/components/primitives/Select/Select.styles.ts"],"sourcesContent":["// Copyright 2024 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {Theme} from '@thunderid/browser';\nimport {useMemo} from 'react';\nimport {css} from '../../../styles/emotion';\n\n/**\n * Creates styles for the Select component using BEM methodology\n * @param theme - The theme object containing design tokens\n * @param colorScheme - The current color scheme (used for memoization)\n * @param disabled - Whether the component is disabled\n * @param hasError - Whether the component has an error\n * @returns Object containing CSS class names for component styling\n */\nconst useStyles = (theme: Theme, colorScheme: string, disabled: boolean, hasError: boolean): Record<string, string> =>\n useMemo(() => {\n const dropdownArrowColor: string = theme.colors.text.secondary.replace('#', '');\n const dropdownArrow = `data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23${dropdownArrowColor}%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E`;\n\n const select: string = css`\n width: 100%;\n padding: ${theme.vars.spacing.unit} calc(${theme.vars.spacing.unit} * 1.5);\n border: 1px solid ${hasError ? theme.vars.colors.error.main : theme.vars.colors.border};\n border-radius: ${theme.vars.components?.Field?.root?.borderRadius || theme.vars.borderRadius.medium};\n font-size: ${theme.vars.typography.fontSizes.md};\n font-family: ${theme.vars.typography.fontFamily};\n color: ${theme.vars.colors.text.primary};\n background-color: ${disabled ? theme.vars.colors.background.disabled : theme.vars.colors.background.surface};\n outline: none;\n transition:\n border-color 0.2s ease,\n box-shadow 0.2s ease;\n appearance: none;\n background-image: url('${dropdownArrow}');\n background-repeat: no-repeat;\n background-position: right 0.7em top 50%;\n background-size: 0.65em auto;\n cursor: ${disabled ? 'not-allowed' : 'pointer'};\n\n &:focus {\n border-color: ${hasError ? theme.vars.colors.error.main : theme.vars.colors.primary.main};\n box-shadow: 0 0 0 2px ${hasError ? `${theme.vars.colors.error.main}20` : `${theme.vars.colors.primary.main}20`};\n }\n\n &:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n &:hover:not(:disabled) {\n border-color: ${hasError ? theme.vars.colors.error.main : theme.vars.colors.primary.main};\n }\n `;\n\n const selectError: string = css`\n border-color: ${theme.vars.colors.error.main};\n\n &:focus {\n border-color: ${theme.vars.colors.error.main};\n box-shadow: 0 0 0 2px ${theme.vars.colors.error.main}20;\n }\n\n &:hover:not(:disabled) {\n border-color: ${theme.vars.colors.error.main};\n }\n `;\n\n const selectDisabled: string = css`\n background-color: ${theme.vars.colors.background.disabled};\n opacity: 0.6;\n cursor: not-allowed;\n `;\n\n const option: string = css`\n padding: calc(${theme.vars.spacing.unit} / 2) ${theme.vars.spacing.unit};\n color: ${theme.vars.colors.text.primary};\n background-color: ${theme.vars.colors.background.surface};\n\n &:hover {\n background-color: ${theme.vars.colors.action.hover};\n }\n\n &:checked {\n background-color: ${theme.vars.colors.primary.main};\n color: ${theme.vars.colors.primary.contrastText};\n }\n `;\n\n return {\n option,\n select,\n selectDisabled,\n selectError,\n };\n }, [theme, colorScheme, disabled, hasError]);\n\nexport default useStyles;\n"],"mappings":";;;;;;;;;;;;;;AAeA,MAAM,aAAa,OAAc,aAAqB,UAAmB,sCACzD;CAEZ,MAAM,gBAAgB,yKADa,MAAM,OAAO,KAAK,UAAU,QAAQ,KAAK,GAAG,CACmI;CAElN,MAAMA,SAAiB,mBAAG;;iBAEb,MAAM,KAAK,QAAQ,KAAK,QAAQ,MAAM,KAAK,QAAQ,KAAK;0BAC/C,WAAW,MAAM,KAAK,OAAO,MAAM,OAAO,MAAM,KAAK,OAAO,OAAO;uBACtE,MAAM,KAAK,YAAY,OAAO,MAAM,gBAAgB,MAAM,KAAK,aAAa,OAAO;mBACvF,MAAM,KAAK,WAAW,UAAU,GAAG;qBACjC,MAAM,KAAK,WAAW,WAAW;eACvC,MAAM,KAAK,OAAO,KAAK,QAAQ;0BACpB,WAAW,MAAM,KAAK,OAAO,WAAW,WAAW,MAAM,KAAK,OAAO,WAAW,QAAQ;;;;;;+BAMnF,cAAc;;;;gBAI7B,WAAW,gBAAgB,UAAU;;;wBAG7B,WAAW,MAAM,KAAK,OAAO,MAAM,OAAO,MAAM,KAAK,OAAO,QAAQ,KAAK;gCACjE,WAAW,GAAG,MAAM,KAAK,OAAO,MAAM,KAAK,MAAM,GAAG,MAAM,KAAK,OAAO,QAAQ,KAAK,IAAI;;;;;;;;;wBAS/F,WAAW,MAAM,KAAK,OAAO,MAAM,OAAO,MAAM,KAAK,OAAO,QAAQ,KAAK;;;CAI7F,MAAMC,cAAsB,mBAAG;sBACb,MAAM,KAAK,OAAO,MAAM,KAAK;;;wBAG3B,MAAM,KAAK,OAAO,MAAM,KAAK;gCACrB,MAAM,KAAK,OAAO,MAAM,KAAK;;;;wBAIrC,MAAM,KAAK,OAAO,MAAM,KAAK;;;CAIjD,MAAMC,iBAAyB,mBAAG;0BACZ,MAAM,KAAK,OAAO,WAAW,SAAS;;;;
|
|
1
|
+
{"version":3,"file":"Select.styles.cjs","names":["select: string","selectError: string","selectDisabled: string","option: string","status: string"],"sources":["../../../../../src/components/primitives/Select/Select.styles.ts"],"sourcesContent":["// Copyright 2024 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {Theme} from '@thunderid/browser';\nimport {useMemo} from 'react';\nimport {css} from '../../../styles/emotion';\n\n/**\n * Creates styles for the Select component using BEM methodology\n * @param theme - The theme object containing design tokens\n * @param colorScheme - The current color scheme (used for memoization)\n * @param disabled - Whether the component is disabled\n * @param hasError - Whether the component has an error\n * @returns Object containing CSS class names for component styling\n */\nconst useStyles = (theme: Theme, colorScheme: string, disabled: boolean, hasError: boolean): Record<string, string> =>\n useMemo(() => {\n const dropdownArrowColor: string = theme.colors.text.secondary.replace('#', '');\n const dropdownArrow = `data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23${dropdownArrowColor}%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E`;\n\n const select: string = css`\n width: 100%;\n padding: ${theme.vars.spacing.unit} calc(${theme.vars.spacing.unit} * 1.5);\n border: 1px solid ${hasError ? theme.vars.colors.error.main : theme.vars.colors.border};\n border-radius: ${theme.vars.components?.Field?.root?.borderRadius || theme.vars.borderRadius.medium};\n font-size: ${theme.vars.typography.fontSizes.md};\n font-family: ${theme.vars.typography.fontFamily};\n color: ${theme.vars.colors.text.primary};\n background-color: ${disabled ? theme.vars.colors.background.disabled : theme.vars.colors.background.surface};\n outline: none;\n transition:\n border-color 0.2s ease,\n box-shadow 0.2s ease;\n appearance: none;\n background-image: url('${dropdownArrow}');\n background-repeat: no-repeat;\n background-position: right 0.7em top 50%;\n background-size: 0.65em auto;\n cursor: ${disabled ? 'not-allowed' : 'pointer'};\n\n &:focus {\n border-color: ${hasError ? theme.vars.colors.error.main : theme.vars.colors.primary.main};\n box-shadow: 0 0 0 2px ${hasError ? `${theme.vars.colors.error.main}20` : `${theme.vars.colors.primary.main}20`};\n }\n\n &:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n &:hover:not(:disabled) {\n border-color: ${hasError ? theme.vars.colors.error.main : theme.vars.colors.primary.main};\n }\n `;\n\n const selectError: string = css`\n border-color: ${theme.vars.colors.error.main};\n\n &:focus {\n border-color: ${theme.vars.colors.error.main};\n box-shadow: 0 0 0 2px ${theme.vars.colors.error.main}20;\n }\n\n &:hover:not(:disabled) {\n border-color: ${theme.vars.colors.error.main};\n }\n `;\n\n const selectDisabled: string = css`\n background-color: ${theme.vars.colors.background.disabled};\n opacity: 0.6;\n cursor: not-allowed;\n `;\n\n const option: string = css`\n padding: calc(${theme.vars.spacing.unit} / 2) ${theme.vars.spacing.unit};\n color: ${theme.vars.colors.text.primary};\n background-color: ${theme.vars.colors.background.surface};\n\n &:hover {\n background-color: ${theme.vars.colors.action.hover};\n }\n\n &:checked {\n background-color: ${theme.vars.colors.primary.main};\n color: ${theme.vars.colors.primary.contrastText};\n }\n `;\n\n const status: string = css`\n display: block;\n margin-top: calc(${theme.vars.spacing.unit} / 2);\n font-size: ${theme.vars.typography.fontSizes.sm};\n color: ${theme.vars.colors.text.secondary};\n\n &:empty {\n display: none;\n }\n `;\n\n const loadMore: string = css`\n color: ${theme.vars.colors.primary.main};\n font-weight: ${theme.vars.typography.fontWeights.medium};\n `;\n\n return {\n loadMore,\n option,\n select,\n selectDisabled,\n selectError,\n status,\n };\n }, [theme, colorScheme, disabled, hasError]);\n\nexport default useStyles;\n"],"mappings":";;;;;;;;;;;;;;AAeA,MAAM,aAAa,OAAc,aAAqB,UAAmB,sCACzD;CAEZ,MAAM,gBAAgB,yKADa,MAAM,OAAO,KAAK,UAAU,QAAQ,KAAK,GAAG,CACmI;CAElN,MAAMA,SAAiB,mBAAG;;iBAEb,MAAM,KAAK,QAAQ,KAAK,QAAQ,MAAM,KAAK,QAAQ,KAAK;0BAC/C,WAAW,MAAM,KAAK,OAAO,MAAM,OAAO,MAAM,KAAK,OAAO,OAAO;uBACtE,MAAM,KAAK,YAAY,OAAO,MAAM,gBAAgB,MAAM,KAAK,aAAa,OAAO;mBACvF,MAAM,KAAK,WAAW,UAAU,GAAG;qBACjC,MAAM,KAAK,WAAW,WAAW;eACvC,MAAM,KAAK,OAAO,KAAK,QAAQ;0BACpB,WAAW,MAAM,KAAK,OAAO,WAAW,WAAW,MAAM,KAAK,OAAO,WAAW,QAAQ;;;;;;+BAMnF,cAAc;;;;gBAI7B,WAAW,gBAAgB,UAAU;;;wBAG7B,WAAW,MAAM,KAAK,OAAO,MAAM,OAAO,MAAM,KAAK,OAAO,QAAQ,KAAK;gCACjE,WAAW,GAAG,MAAM,KAAK,OAAO,MAAM,KAAK,MAAM,GAAG,MAAM,KAAK,OAAO,QAAQ,KAAK,IAAI;;;;;;;;;wBAS/F,WAAW,MAAM,KAAK,OAAO,MAAM,OAAO,MAAM,KAAK,OAAO,QAAQ,KAAK;;;CAI7F,MAAMC,cAAsB,mBAAG;sBACb,MAAM,KAAK,OAAO,MAAM,KAAK;;;wBAG3B,MAAM,KAAK,OAAO,MAAM,KAAK;gCACrB,MAAM,KAAK,OAAO,MAAM,KAAK;;;;wBAIrC,MAAM,KAAK,OAAO,MAAM,KAAK;;;CAIjD,MAAMC,iBAAyB,mBAAG;0BACZ,MAAM,KAAK,OAAO,WAAW,SAAS;;;;CAK5D,MAAMC,SAAiB,mBAAG;sBACR,MAAM,KAAK,QAAQ,KAAK,QAAQ,MAAM,KAAK,QAAQ,KAAK;eAC/D,MAAM,KAAK,OAAO,KAAK,QAAQ;0BACpB,MAAM,KAAK,OAAO,WAAW,QAAQ;;;4BAGnC,MAAM,KAAK,OAAO,OAAO,MAAM;;;;4BAI/B,MAAM,KAAK,OAAO,QAAQ,KAAK;iBAC1C,MAAM,KAAK,OAAO,QAAQ,aAAa;;;CAIpD,MAAMC,SAAiB,mBAAG;;yBAEL,MAAM,KAAK,QAAQ,KAAK;mBAC9B,MAAM,KAAK,WAAW,UAAU,GAAG;eACvC,MAAM,KAAK,OAAO,KAAK,UAAU;;;;;;AAY5C,QAAO;EACL,UANuB,mBAAG;eACjB,MAAM,KAAK,OAAO,QAAQ,KAAK;qBACzB,MAAM,KAAK,WAAW,YAAY,OAAO;;EAKxD;EACA;EACA;EACA;EACA;EACD;GACA;CAAC;CAAO;CAAa;CAAU;CAAS,CAAC;AAE9C,4BAAe"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_I18nContext = require('../../../contexts/I18n/I18nContext.cjs');
|
|
3
|
+
let __thunderid_browser = require("@thunderid/browser");
|
|
4
|
+
__thunderid_browser = require_rolldown_runtime.__toESM(__thunderid_browser);
|
|
5
|
+
let react = require("react");
|
|
6
|
+
react = require_rolldown_runtime.__toESM(react);
|
|
7
|
+
|
|
8
|
+
//#region src/components/primitives/Select/useSelectMessages.ts
|
|
9
|
+
/**
|
|
10
|
+
* The wording of `Select`: the active translations when there is an I18n provider, English otherwise, so `Select`
|
|
11
|
+
* works without a provider.
|
|
12
|
+
*/
|
|
13
|
+
const useSelectMessages = () => {
|
|
14
|
+
const i18n = (0, react.useContext)(require_I18nContext.default);
|
|
15
|
+
return (0, react.useMemo)(() => (0, __thunderid_browser.getSelectMessages)(i18n ? (key) => i18n.t(key) : void 0), [i18n]);
|
|
16
|
+
};
|
|
17
|
+
var useSelectMessages_default = useSelectMessages;
|
|
18
|
+
|
|
19
|
+
//#endregion
|
|
20
|
+
exports.default = useSelectMessages_default;
|
|
21
|
+
//# sourceMappingURL=useSelectMessages.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSelectMessages.cjs","names":["i18n: ContextType<typeof I18nContext>","I18nContext"],"sources":["../../../../../src/components/primitives/Select/useSelectMessages.ts"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {getSelectMessages} from '@thunderid/browser';\nimport type {SelectMessages} from '@thunderid/browser';\nimport {ContextType, useContext, useMemo} from 'react';\nimport I18nContext from '../../../contexts/I18n/I18nContext';\n\nexport type {SelectMessages};\n\n/**\n * The wording of `Select`: the active translations when there is an I18n provider, English otherwise, so `Select`\n * works without a provider.\n */\nconst useSelectMessages = (): SelectMessages => {\n const i18n: ContextType<typeof I18nContext> = useContext(I18nContext);\n\n return useMemo((): SelectMessages => getSelectMessages(i18n ? (key: string) => i18n.t(key) : undefined), [i18n]);\n};\n\nexport default useSelectMessages;\n"],"mappings":";;;;;;;;;;;;AAcA,MAAM,0BAA0C;CAC9C,MAAMA,6BAAmDC,4BAAY;AAErE,4EAAuD,QAAQ,QAAgB,KAAK,EAAE,IAAI,GAAG,OAAU,EAAE,CAAC,KAAK,CAAC;;AAGlH,gCAAe"}
|
|
@@ -10,14 +10,24 @@ let react_jsx_runtime = require("react/jsx-runtime");
|
|
|
10
10
|
react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
|
|
11
11
|
|
|
12
12
|
//#region src/components/primitives/TextField/TextField.tsx
|
|
13
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Makes an element with `role="button"` respond to Enter and Space, as a native button does.
|
|
15
|
+
*/
|
|
16
|
+
const activateOnKey = (activate) => (event) => {
|
|
17
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
18
|
+
event.preventDefault();
|
|
19
|
+
activate();
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
const TextField = ({ label, error, required, className, disabled, helperText, startIcon, endAdornment, endIcon, endIconLabel = "End icon", onStartIconClick, onEndIconClick, type = "text", style = {},...rest }) => {
|
|
14
23
|
const { theme, colorScheme } = require_useTheme.default();
|
|
15
24
|
const hasError = !!error;
|
|
16
|
-
const styles = require_TextField_styles.default(theme, colorScheme, disabled ?? false, hasError, !!startIcon, !!endIcon);
|
|
25
|
+
const styles = require_TextField_styles.default(theme, colorScheme, disabled ?? false, hasError, !!startIcon, !!endIcon, !!endAdornment);
|
|
17
26
|
const inputClassName = require_emotion.cx((0, __thunderid_browser.withVendorCSSClassPrefix)((0, __thunderid_browser.bem)("text-field", "input")), styles["input"], hasError && styles["inputError"], disabled && styles["inputDisabled"]);
|
|
18
27
|
const containerClassName = require_emotion.cx((0, __thunderid_browser.withVendorCSSClassPrefix)((0, __thunderid_browser.bem)("text-field", "container")), styles["inputContainer"]);
|
|
19
28
|
const startIconClassName = require_emotion.cx((0, __thunderid_browser.withVendorCSSClassPrefix)((0, __thunderid_browser.bem)("text-field", "start-icon")), styles["startIcon"]);
|
|
20
29
|
const endIconClassName = require_emotion.cx((0, __thunderid_browser.withVendorCSSClassPrefix)((0, __thunderid_browser.bem)("text-field", "end-icon")), styles["endIcon"]);
|
|
30
|
+
const endAdornmentClassName = require_emotion.cx((0, __thunderid_browser.withVendorCSSClassPrefix)((0, __thunderid_browser.bem)("text-field", "end-adornment")), styles["endAdornment"]);
|
|
21
31
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_FormControl.default, {
|
|
22
32
|
error,
|
|
23
33
|
helperText,
|
|
@@ -35,6 +45,7 @@ const TextField = ({ label, error, required, className, disabled, helperText, st
|
|
|
35
45
|
onClick: onStartIconClick,
|
|
36
46
|
role: onStartIconClick ? "button" : void 0,
|
|
37
47
|
tabIndex: onStartIconClick && !disabled ? 0 : void 0,
|
|
48
|
+
onKeyDown: onStartIconClick && !disabled ? activateOnKey(onStartIconClick) : void 0,
|
|
38
49
|
"aria-label": "Start icon",
|
|
39
50
|
children: startIcon
|
|
40
51
|
}),
|
|
@@ -51,8 +62,13 @@ const TextField = ({ label, error, required, className, disabled, helperText, st
|
|
|
51
62
|
onClick: onEndIconClick,
|
|
52
63
|
role: onEndIconClick ? "button" : void 0,
|
|
53
64
|
tabIndex: onEndIconClick && !disabled ? 0 : void 0,
|
|
54
|
-
|
|
65
|
+
onKeyDown: onEndIconClick && !disabled ? activateOnKey(onEndIconClick) : void 0,
|
|
66
|
+
"aria-label": endIconLabel,
|
|
55
67
|
children: endIcon
|
|
68
|
+
}),
|
|
69
|
+
endAdornment && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
70
|
+
className: endAdornmentClassName,
|
|
71
|
+
children: endAdornment
|
|
56
72
|
})
|
|
57
73
|
]
|
|
58
74
|
})]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextField.cjs","names":["TextField: FC<TextFieldProps>","useTheme","styles: Record<string, string>","useStyles","inputClassName: string","cx","containerClassName: string","startIconClassName: string","endIconClassName: string","FormControl","InputLabel"],"sources":["../../../../../src/components/primitives/TextField/TextField.tsx"],"sourcesContent":["// Copyright 2024 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {withVendorCSSClassPrefix, bem} from '@thunderid/browser';\nimport {FC, InputHTMLAttributes, ReactNode} from 'react';\nimport useStyles from './TextField.styles';\nimport useTheme from '../../../contexts/Theme/useTheme';\nimport {cx} from '../../../styles/emotion';\nimport FormControl from '../FormControl/FormControl';\nimport InputLabel from '../InputLabel/InputLabel';\n\nexport interface TextFieldProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'className'> {\n /**\n * Additional CSS class names\n */\n className?: string;\n /**\n * Whether the field is disabled\n */\n disabled?: boolean;\n /**\n * Icon to display at the end (right) of the input\n */\n endIcon?: ReactNode;\n /**\n * Error message to display below the input\n */\n error?: string;\n /**\n * Helper text to display below the input\n */\n helperText?: string;\n /**\n * Label text to display above the input\n */\n label?: string;\n /**\n * Click handler for the end icon\n */\n onEndIconClick?: () => void;\n /**\n * Click handler for the start icon\n */\n onStartIconClick?: () => void;\n /**\n * Whether the field is required\n */\n required?: boolean;\n /**\n * Icon to display at the start (left) of the input\n */\n startIcon?: ReactNode;\n}\n\nconst TextField: FC<TextFieldProps> = ({\n label,\n error,\n required,\n className,\n disabled,\n helperText,\n startIcon,\n endIcon,\n onStartIconClick,\n onEndIconClick,\n type = 'text',\n style = {},\n ...rest\n}: TextFieldProps) => {\n const {theme, colorScheme}: ReturnType<typeof useTheme> = useTheme();\n const hasError = !!error;\n const hasStartIcon = !!startIcon;\n const hasEndIcon = !!endIcon;\n const styles: Record<string, string> = useStyles(\n theme,\n colorScheme,\n disabled ?? false,\n hasError,\n hasStartIcon,\n hasEndIcon,\n );\n\n const inputClassName: string = cx(\n withVendorCSSClassPrefix(bem('text-field', 'input')),\n styles['input'],\n hasError && styles['inputError'],\n disabled && styles['inputDisabled'],\n );\n\n const containerClassName: string = cx(\n withVendorCSSClassPrefix(bem('text-field', 'container')),\n styles['inputContainer'],\n );\n\n const startIconClassName: string = cx(withVendorCSSClassPrefix(bem('text-field', 'start-icon')), styles['startIcon']);\n\n const endIconClassName: string = cx(withVendorCSSClassPrefix(bem('text-field', 'end-icon')), styles['endIcon']);\n\n return (\n <FormControl\n error={error}\n helperText={helperText}\n className={cx(withVendorCSSClassPrefix(bem('text-field')), className)}\n style={style}\n >\n {label && (\n <InputLabel required={required} error={hasError}>\n {label}\n </InputLabel>\n )}\n <div className={containerClassName}>\n {startIcon && (\n <div\n className={startIconClassName}\n onClick={onStartIconClick}\n role={onStartIconClick ? 'button' : undefined}\n tabIndex={onStartIconClick && !disabled ? 0 : undefined}\n aria-label=\"Start icon\"\n >\n {startIcon}\n </div>\n )}\n <input\n className={inputClassName}\n type={type}\n disabled={disabled}\n aria-invalid={hasError}\n aria-required={required}\n {...rest}\n />\n {endIcon && (\n <div\n className={endIconClassName}\n onClick={onEndIconClick}\n role={onEndIconClick ? 'button' : undefined}\n tabIndex={onEndIconClick && !disabled ? 0 : undefined}\n aria-label
|
|
1
|
+
{"version":3,"file":"TextField.cjs","names":["TextField: FC<TextFieldProps>","useTheme","styles: Record<string, string>","useStyles","inputClassName: string","cx","containerClassName: string","startIconClassName: string","endIconClassName: string","endAdornmentClassName: string","FormControl","InputLabel"],"sources":["../../../../../src/components/primitives/TextField/TextField.tsx"],"sourcesContent":["// Copyright 2024 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {withVendorCSSClassPrefix, bem} from '@thunderid/browser';\nimport {FC, InputHTMLAttributes, KeyboardEvent, ReactNode} from 'react';\nimport useStyles from './TextField.styles';\nimport useTheme from '../../../contexts/Theme/useTheme';\nimport {cx} from '../../../styles/emotion';\nimport FormControl from '../FormControl/FormControl';\nimport InputLabel from '../InputLabel/InputLabel';\n\nexport interface TextFieldProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'className'> {\n /**\n * Additional CSS class names\n */\n className?: string;\n /**\n * Whether the field is disabled\n */\n disabled?: boolean;\n /**\n * Extra content shown inside the field, at its end after the end icon, such as an action button\n */\n endAdornment?: ReactNode;\n /**\n * Icon to display at the end (right) of the input\n */\n endIcon?: ReactNode;\n /**\n * Accessible name of the end icon when it is a button, that is when `onEndIconClick` is set\n */\n endIconLabel?: string;\n /**\n * Error message to display below the input\n */\n error?: string;\n /**\n * Helper text to display below the input\n */\n helperText?: string;\n /**\n * Label text to display above the input\n */\n label?: string;\n /**\n * Click handler for the end icon\n */\n onEndIconClick?: () => void;\n /**\n * Click handler for the start icon\n */\n onStartIconClick?: () => void;\n /**\n * Whether the field is required\n */\n required?: boolean;\n /**\n * Icon to display at the start (left) of the input\n */\n startIcon?: ReactNode;\n}\n\n/**\n * Makes an element with `role=\"button\"` respond to Enter and Space, as a native button does.\n */\nconst activateOnKey =\n (activate: () => void) =>\n (event: KeyboardEvent<HTMLDivElement>): void => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n activate();\n }\n };\n\nconst TextField: FC<TextFieldProps> = ({\n label,\n error,\n required,\n className,\n disabled,\n helperText,\n startIcon,\n endAdornment,\n endIcon,\n endIconLabel = 'End icon',\n onStartIconClick,\n onEndIconClick,\n type = 'text',\n style = {},\n ...rest\n}: TextFieldProps) => {\n const {theme, colorScheme}: ReturnType<typeof useTheme> = useTheme();\n const hasError = !!error;\n const hasStartIcon = !!startIcon;\n const hasEndIcon = !!endIcon;\n const hasEndAdornment = !!endAdornment;\n const styles: Record<string, string> = useStyles(\n theme,\n colorScheme,\n disabled ?? false,\n hasError,\n hasStartIcon,\n hasEndIcon,\n hasEndAdornment,\n );\n\n const inputClassName: string = cx(\n withVendorCSSClassPrefix(bem('text-field', 'input')),\n styles['input'],\n hasError && styles['inputError'],\n disabled && styles['inputDisabled'],\n );\n\n const containerClassName: string = cx(\n withVendorCSSClassPrefix(bem('text-field', 'container')),\n styles['inputContainer'],\n );\n\n const startIconClassName: string = cx(withVendorCSSClassPrefix(bem('text-field', 'start-icon')), styles['startIcon']);\n\n const endIconClassName: string = cx(withVendorCSSClassPrefix(bem('text-field', 'end-icon')), styles['endIcon']);\n\n const endAdornmentClassName: string = cx(\n withVendorCSSClassPrefix(bem('text-field', 'end-adornment')),\n styles['endAdornment'],\n );\n\n return (\n <FormControl\n error={error}\n helperText={helperText}\n className={cx(withVendorCSSClassPrefix(bem('text-field')), className)}\n style={style}\n >\n {label && (\n <InputLabel required={required} error={hasError}>\n {label}\n </InputLabel>\n )}\n <div className={containerClassName}>\n {startIcon && (\n <div\n className={startIconClassName}\n onClick={onStartIconClick}\n role={onStartIconClick ? 'button' : undefined}\n tabIndex={onStartIconClick && !disabled ? 0 : undefined}\n onKeyDown={onStartIconClick && !disabled ? activateOnKey(onStartIconClick) : undefined}\n aria-label=\"Start icon\"\n >\n {startIcon}\n </div>\n )}\n <input\n className={inputClassName}\n type={type}\n disabled={disabled}\n aria-invalid={hasError}\n aria-required={required}\n {...rest}\n />\n {endIcon && (\n <div\n className={endIconClassName}\n onClick={onEndIconClick}\n role={onEndIconClick ? 'button' : undefined}\n tabIndex={onEndIconClick && !disabled ? 0 : undefined}\n onKeyDown={onEndIconClick && !disabled ? activateOnKey(onEndIconClick) : undefined}\n aria-label={endIconLabel}\n >\n {endIcon}\n </div>\n )}\n {endAdornment && <div className={endAdornmentClassName}>{endAdornment}</div>}\n </div>\n </FormControl>\n );\n};\n\nexport default TextField;\n"],"mappings":";;;;;;;;;;;;;;;AAiEA,MAAM,iBACH,cACA,UAA+C;AAC9C,KAAI,MAAM,QAAQ,WAAW,MAAM,QAAQ,KAAK;AAC9C,QAAM,gBAAgB;AACtB,YAAU;;;AAIhB,MAAMA,aAAiC,EACrC,OACA,OACA,UACA,WACA,UACA,YACA,WACA,cACA,SACA,eAAe,YACf,kBACA,gBACA,OAAO,QACP,QAAQ,EAAE,CACV,GAAG,WACiB;CACpB,MAAM,EAAC,OAAO,gBAA4CC,0BAAU;CACpE,MAAM,WAAW,CAAC,CAAC;CAInB,MAAMC,SAAiCC,iCACrC,OACA,aACA,YAAY,OACZ,UAPmB,CAAC,CAAC,WACJ,CAAC,CAAC,SACG,CAAC,CAAC,aASzB;CAED,MAAMC,iBAAyBC,kGACA,cAAc,QAAQ,CAAC,EACpD,OAAO,UACP,YAAY,OAAO,eACnB,YAAY,OAAO,iBACpB;CAED,MAAMC,qBAA6BD,kGACJ,cAAc,YAAY,CAAC,EACxD,OAAO,kBACR;CAED,MAAME,qBAA6BF,kGAAgC,cAAc,aAAa,CAAC,EAAE,OAAO,aAAa;CAErH,MAAMG,mBAA2BH,kGAAgC,cAAc,WAAW,CAAC,EAAE,OAAO,WAAW;CAE/G,MAAMI,wBAAgCJ,kGACP,cAAc,gBAAgB,CAAC,EAC5D,OAAO,gBACR;AAED,QACE,4CAACK;EACQ;EACK;EACZ,WAAWL,kGAAgC,aAAa,CAAC,EAAE,UAAU;EAC9D;aAEN,SACC,2CAACM;GAAqB;GAAU,OAAO;aACpC;IACU,EAEf,4CAAC;GAAI,WAAW;;IACb,aACC,2CAAC;KACC,WAAW;KACX,SAAS;KACT,MAAM,mBAAmB,WAAW;KACpC,UAAU,oBAAoB,CAAC,WAAW,IAAI;KAC9C,WAAW,oBAAoB,CAAC,WAAW,cAAc,iBAAiB,GAAG;KAC7E,cAAW;eAEV;MACG;IAER,2CAAC;KACC,WAAW;KACL;KACI;KACV,gBAAc;KACd,iBAAe;KACf,GAAI;MACJ;IACD,WACC,2CAAC;KACC,WAAW;KACX,SAAS;KACT,MAAM,iBAAiB,WAAW;KAClC,UAAU,kBAAkB,CAAC,WAAW,IAAI;KAC5C,WAAW,kBAAkB,CAAC,WAAW,cAAc,eAAe,GAAG;KACzE,cAAY;eAEX;MACG;IAEP,gBAAgB,2CAAC;KAAI,WAAW;eAAwB;MAAmB;;IACxE;GACM;;AAIlB,wBAAe"}
|
|
@@ -12,11 +12,14 @@ react = require_rolldown_runtime.__toESM(react);
|
|
|
12
12
|
* @param hasError - Whether the component has an error
|
|
13
13
|
* @param hasStartIcon - Whether the component has a start icon
|
|
14
14
|
* @param hasEndIcon - Whether the component has an end icon
|
|
15
|
+
* @param hasEndAdornment - Whether the component has extra content before the end icon
|
|
15
16
|
* @returns Object containing CSS class names for component styling
|
|
16
17
|
*/
|
|
17
|
-
const useStyles = (theme, colorScheme, disabled, hasError, hasStartIcon, hasEndIcon) => (0, react.useMemo)(() => {
|
|
18
|
+
const useStyles = (theme, colorScheme, disabled, hasError, hasStartIcon, hasEndIcon, hasEndAdornment = false) => (0, react.useMemo)(() => {
|
|
18
19
|
const inlineStartPadding = hasStartIcon ? `calc(${theme.vars.spacing.unit} * 5)` : `calc(${theme.vars.spacing.unit} * 1.5)`;
|
|
19
|
-
|
|
20
|
+
let inlineEndPadding = `calc(${theme.vars.spacing.unit} * 1.5)`;
|
|
21
|
+
if (hasEndIcon && hasEndAdornment) inlineEndPadding = `calc(${theme.vars.spacing.unit} * 8)`;
|
|
22
|
+
else if (hasEndIcon || hasEndAdornment) inlineEndPadding = `calc(${theme.vars.spacing.unit} * 5)`;
|
|
20
23
|
const inputContainer = require_emotion.css`
|
|
21
24
|
position: relative;
|
|
22
25
|
display: flex;
|
|
@@ -104,11 +107,20 @@ const useStyles = (theme, colorScheme, disabled, hasError, hasStartIcon, hasEndI
|
|
|
104
107
|
${icon};
|
|
105
108
|
inset-inline-start: ${theme.vars.spacing.unit};
|
|
106
109
|
`;
|
|
107
|
-
|
|
108
|
-
endIcon: require_emotion.css`
|
|
110
|
+
const endIcon = require_emotion.css`
|
|
109
111
|
${icon};
|
|
112
|
+
inset-inline-end: calc(${theme.vars.spacing.unit} * ${hasEndAdornment ? 4.5 : 1});
|
|
113
|
+
`;
|
|
114
|
+
return {
|
|
115
|
+
endAdornment: require_emotion.css`
|
|
116
|
+
position: absolute;
|
|
117
|
+
display: flex;
|
|
118
|
+
align-items: center;
|
|
119
|
+
top: 50%;
|
|
120
|
+
transform: translateY(-50%);
|
|
110
121
|
inset-inline-end: ${theme.vars.spacing.unit};
|
|
111
122
|
`,
|
|
123
|
+
endIcon,
|
|
112
124
|
icon,
|
|
113
125
|
input,
|
|
114
126
|
inputContainer,
|
|
@@ -122,7 +134,8 @@ const useStyles = (theme, colorScheme, disabled, hasError, hasStartIcon, hasEndI
|
|
|
122
134
|
disabled,
|
|
123
135
|
hasError,
|
|
124
136
|
hasStartIcon,
|
|
125
|
-
hasEndIcon
|
|
137
|
+
hasEndIcon,
|
|
138
|
+
hasEndAdornment
|
|
126
139
|
]);
|
|
127
140
|
var TextField_styles_default = useStyles;
|
|
128
141
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextField.styles.cjs","names":["inlineStartPadding: string","
|
|
1
|
+
{"version":3,"file":"TextField.styles.cjs","names":["inlineStartPadding: string","inputContainer: string","input: string","inputError: string","inputDisabled: string","icon: string","startIcon: string","endIcon: string"],"sources":["../../../../../src/components/primitives/TextField/TextField.styles.ts"],"sourcesContent":["// Copyright 2024 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {Theme} from '@thunderid/browser';\nimport {useMemo} from 'react';\nimport {css} from '../../../styles/emotion';\n\n/**\n * Creates styles for the TextField component using BEM methodology\n * @param theme - The theme object containing design tokens\n * @param colorScheme - The current color scheme (used for memoization)\n * @param disabled - Whether the component is disabled\n * @param hasError - Whether the component has an error\n * @param hasStartIcon - Whether the component has a start icon\n * @param hasEndIcon - Whether the component has an end icon\n * @param hasEndAdornment - Whether the component has extra content before the end icon\n * @returns Object containing CSS class names for component styling\n */\nconst useStyles = (\n theme: Theme,\n colorScheme: string,\n disabled: boolean,\n hasError: boolean,\n hasStartIcon: boolean,\n hasEndIcon: boolean,\n hasEndAdornment = false,\n): Record<string, string> =>\n useMemo(() => {\n const inlineStartPadding: string = hasStartIcon\n ? `calc(${theme.vars.spacing.unit} * 5)`\n : `calc(${theme.vars.spacing.unit} * 1.5)`;\n let inlineEndPadding = `calc(${theme.vars.spacing.unit} * 1.5)`;\n\n if (hasEndIcon && hasEndAdornment) {\n inlineEndPadding = `calc(${theme.vars.spacing.unit} * 8)`;\n } else if (hasEndIcon || hasEndAdornment) {\n inlineEndPadding = `calc(${theme.vars.spacing.unit} * 5)`;\n }\n\n const inputContainer: string = css`\n position: relative;\n display: flex;\n align-items: center;\n `;\n\n const input: string = css`\n width: 100%;\n padding-block: ${theme.vars.spacing.unit};\n padding-inline-start: ${inlineStartPadding};\n padding-inline-end: ${inlineEndPadding};\n border: 1px solid ${hasError ? theme.vars.colors.error.main : theme.vars.colors.border};\n border-radius: ${theme.vars.components?.Field?.root?.borderRadius || theme.vars.borderRadius.medium};\n font-size: ${theme.vars.typography.fontSizes.md};\n font-family: ${theme.vars.typography.fontFamily};\n color: ${theme.vars.colors.text.primary};\n background-color: ${disabled ? theme.vars.colors.background.disabled : theme.vars.colors.background.surface};\n outline: none;\n transition:\n border-color 0.2s ease,\n box-shadow 0.2s ease;\n\n &:focus {\n border-color: ${hasError ? theme.vars.colors.error.main : theme.vars.colors.primary.main};\n box-shadow: 0 0 0 2px ${hasError ? `${theme.vars.colors.error.main}20` : `${theme.vars.colors.primary.main}20`};\n }\n\n &:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n &:hover:not(:disabled) {\n border-color: ${hasError ? theme.vars.colors.error.main : theme.vars.colors.primary.main};\n }\n\n &::placeholder {\n color: ${theme.vars.colors.text.secondary};\n opacity: 0.7;\n }\n `;\n\n const inputError: string = css`\n border-color: ${theme.vars.colors.error.main};\n\n &:focus {\n border-color: ${theme.vars.colors.error.main};\n box-shadow: 0 0 0 2px ${theme.vars.colors.error.main}20;\n }\n\n &:hover:not(:disabled) {\n border-color: ${theme.vars.colors.error.main};\n }\n `;\n\n const inputDisabled: string = css`\n background-color: ${theme.vars.colors.background.disabled};\n opacity: 0.6;\n cursor: not-allowed;\n `;\n\n const icon: string = css`\n position: absolute;\n background: none;\n border: none;\n cursor: ${disabled ? 'not-allowed' : 'pointer'};\n padding: calc(${theme.vars.spacing.unit} / 2);\n display: flex;\n align-items: center;\n justify-content: center;\n color: ${theme.vars.colors.text.secondary};\n opacity: ${disabled ? 0.5 : 1};\n top: 50%;\n transform: translateY(-50%);\n transition:\n color 0.2s ease,\n opacity 0.2s ease;\n\n &:hover:not(:disabled) {\n color: ${theme.vars.colors.text.primary};\n }\n\n &:focus {\n outline: 2px solid ${theme.vars.colors.primary.main};\n outline-offset: 2px;\n }\n `;\n\n const startIcon: string = css`\n ${icon};\n inset-inline-start: ${theme.vars.spacing.unit};\n `;\n\n const endIcon: string = css`\n ${icon};\n inset-inline-end: calc(${theme.vars.spacing.unit} * ${hasEndAdornment ? 4.5 : 1});\n `;\n\n const endAdornment: string = css`\n position: absolute;\n display: flex;\n align-items: center;\n top: 50%;\n transform: translateY(-50%);\n inset-inline-end: ${theme.vars.spacing.unit};\n `;\n\n return {\n endAdornment,\n endIcon,\n icon,\n input,\n inputContainer,\n inputDisabled,\n inputError,\n startIcon,\n };\n }, [theme, colorScheme, disabled, hasError, hasStartIcon, hasEndIcon, hasEndAdornment]);\n\nexport default useStyles;\n"],"mappings":";;;;;;;;;;;;;;;;;AAkBA,MAAM,aACJ,OACA,aACA,UACA,UACA,cACA,YACA,kBAAkB,mCAEJ;CACZ,MAAMA,qBAA6B,eAC/B,QAAQ,MAAM,KAAK,QAAQ,KAAK,SAChC,QAAQ,MAAM,KAAK,QAAQ,KAAK;CACpC,IAAI,mBAAmB,QAAQ,MAAM,KAAK,QAAQ,KAAK;AAEvD,KAAI,cAAc,gBAChB,oBAAmB,QAAQ,MAAM,KAAK,QAAQ,KAAK;UAC1C,cAAc,gBACvB,oBAAmB,QAAQ,MAAM,KAAK,QAAQ,KAAK;CAGrD,MAAMC,iBAAyB,mBAAG;;;;;CAMlC,MAAMC,QAAgB,mBAAG;;uBAEN,MAAM,KAAK,QAAQ,KAAK;8BACjB,mBAAmB;4BACrB,iBAAiB;0BACnB,WAAW,MAAM,KAAK,OAAO,MAAM,OAAO,MAAM,KAAK,OAAO,OAAO;uBACtE,MAAM,KAAK,YAAY,OAAO,MAAM,gBAAgB,MAAM,KAAK,aAAa,OAAO;mBACvF,MAAM,KAAK,WAAW,UAAU,GAAG;qBACjC,MAAM,KAAK,WAAW,WAAW;eACvC,MAAM,KAAK,OAAO,KAAK,QAAQ;0BACpB,WAAW,MAAM,KAAK,OAAO,WAAW,WAAW,MAAM,KAAK,OAAO,WAAW,QAAQ;;;;;;;wBAO1F,WAAW,MAAM,KAAK,OAAO,MAAM,OAAO,MAAM,KAAK,OAAO,QAAQ,KAAK;gCACjE,WAAW,GAAG,MAAM,KAAK,OAAO,MAAM,KAAK,MAAM,GAAG,MAAM,KAAK,OAAO,QAAQ,KAAK,IAAI;;;;;;;;;wBAS/F,WAAW,MAAM,KAAK,OAAO,MAAM,OAAO,MAAM,KAAK,OAAO,QAAQ,KAAK;;;;iBAIhF,MAAM,KAAK,OAAO,KAAK,UAAU;;;;CAK9C,MAAMC,aAAqB,mBAAG;sBACZ,MAAM,KAAK,OAAO,MAAM,KAAK;;;wBAG3B,MAAM,KAAK,OAAO,MAAM,KAAK;gCACrB,MAAM,KAAK,OAAO,MAAM,KAAK;;;;wBAIrC,MAAM,KAAK,OAAO,MAAM,KAAK;;;CAIjD,MAAMC,gBAAwB,mBAAG;0BACX,MAAM,KAAK,OAAO,WAAW,SAAS;;;;CAK5D,MAAMC,OAAe,mBAAG;;;;gBAIZ,WAAW,gBAAgB,UAAU;sBAC/B,MAAM,KAAK,QAAQ,KAAK;;;;eAI/B,MAAM,KAAK,OAAO,KAAK,UAAU;iBAC/B,WAAW,KAAM,EAAE;;;;;;;;iBAQnB,MAAM,KAAK,OAAO,KAAK,QAAQ;;;;6BAInB,MAAM,KAAK,OAAO,QAAQ,KAAK;;;;CAKxD,MAAMC,YAAoB,mBAAG;QACzB,KAAK;4BACe,MAAM,KAAK,QAAQ,KAAK;;CAGhD,MAAMC,UAAkB,mBAAG;QACvB,KAAK;+BACkB,MAAM,KAAK,QAAQ,KAAK,KAAK,kBAAkB,MAAM,EAAE;;AAYlF,QAAO;EACL,cAV2B,mBAAG;;;;;;0BAMV,MAAM,KAAK,QAAQ,KAAK;;EAK5C;EACA;EACA;EACA;EACA;EACA;EACA;EACD;GACA;CAAC;CAAO;CAAa;CAAU;CAAU;CAAc;CAAY;CAAgB,CAAC;AAEzF,+BAAe"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_ResourceSelect = require('../Select/ResourceSelect.cjs');
|
|
3
|
+
let __thunderid_browser = require("@thunderid/browser");
|
|
4
|
+
__thunderid_browser = require_rolldown_runtime.__toESM(__thunderid_browser);
|
|
5
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
6
|
+
react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
|
|
7
|
+
|
|
8
|
+
//#region src/components/primitives/UserSelect/BaseUserSelect.tsx
|
|
9
|
+
const USER_DEFAULTS = { labelAttributes: __thunderid_browser.UserSelectConstants.LABEL_ATTRIBUTES };
|
|
10
|
+
/**
|
|
11
|
+
* Single-user picker: a `Select` that loads from the given `fetchUsers`, submitting the user's ID and
|
|
12
|
+
* labelling each user from `display`, `username`, or `email` unless `mapping` says otherwise.
|
|
13
|
+
* Building block for {@link UserSelect}; for a custom data source use `Select` with `useInfiniteOptions`.
|
|
14
|
+
*/
|
|
15
|
+
const BaseUserSelect = ({ fetchUsers, mapping,...rest }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ResourceSelect.default, {
|
|
16
|
+
...rest,
|
|
17
|
+
bemBlock: "user-select",
|
|
18
|
+
defaults: USER_DEFAULTS,
|
|
19
|
+
fallbackMessages: {
|
|
20
|
+
ariaLabel: "Select a user",
|
|
21
|
+
empty: "No users found."
|
|
22
|
+
},
|
|
23
|
+
fetchPage: fetchUsers,
|
|
24
|
+
mapping,
|
|
25
|
+
messageKey: "user_select",
|
|
26
|
+
resource: "users",
|
|
27
|
+
type: __thunderid_browser.EmbeddedFlowComponentType.UserSelect
|
|
28
|
+
});
|
|
29
|
+
var BaseUserSelect_default = BaseUserSelect;
|
|
30
|
+
|
|
31
|
+
//#endregion
|
|
32
|
+
exports.default = BaseUserSelect_default;
|
|
33
|
+
//# sourceMappingURL=BaseUserSelect.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseUserSelect.cjs","names":["USER_DEFAULTS: SelectOptionDefaults","UserSelectConstants","BaseUserSelect: FC<BaseUserSelectProps>","ResourceSelect","EmbeddedFlowComponentType"],"sources":["../../../../../src/components/primitives/UserSelect/BaseUserSelect.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {EmbeddedFlowComponentType, UserSelectConstants} from '@thunderid/browser';\nimport type {FetchUsers, SelectOptionDefaults, UserSelectOptionMapping} from '@thunderid/browser';\nimport {FC} from 'react';\nimport ResourceSelect, {ResourceSelectProps} from '../Select/ResourceSelect';\n\nexport interface BaseUserSelectProps\n extends Omit<\n ResourceSelectProps,\n 'bemBlock' | 'defaults' | 'fallbackMessages' | 'fetchPage' | 'mapping' | 'messageKey' | 'resource' | 'type'\n > {\n fetchUsers?: FetchUsers;\n mapping?: UserSelectOptionMapping;\n}\n\nconst USER_DEFAULTS: SelectOptionDefaults = {labelAttributes: UserSelectConstants.LABEL_ATTRIBUTES};\n\n/**\n * Single-user picker: a `Select` that loads from the given `fetchUsers`, submitting the user's ID and\n * labelling each user from `display`, `username`, or `email` unless `mapping` says otherwise.\n * Building block for {@link UserSelect}; for a custom data source use `Select` with `useInfiniteOptions`.\n */\nconst BaseUserSelect: FC<BaseUserSelectProps> = ({fetchUsers, mapping, ...rest}: BaseUserSelectProps) => (\n <ResourceSelect\n {...rest}\n bemBlock=\"user-select\"\n defaults={USER_DEFAULTS}\n fallbackMessages={{ariaLabel: 'Select a user', empty: 'No users found.'}}\n fetchPage={fetchUsers}\n mapping={mapping}\n messageKey=\"user_select\"\n resource=\"users\"\n type={EmbeddedFlowComponentType.UserSelect}\n />\n);\n\nexport default BaseUserSelect;\n"],"mappings":";;;;;;;;AAiBA,MAAMA,gBAAsC,EAAC,iBAAiBC,wCAAoB,kBAAiB;;;;;;AAOnG,MAAMC,kBAA2C,EAAC,YAAY,QAAS,GAAG,WACxE,2CAACC;CACC,GAAI;CACJ,UAAS;CACT,UAAU;CACV,kBAAkB;EAAC,WAAW;EAAiB,OAAO;EAAkB;CACxE,WAAW;CACF;CACT,YAAW;CACX,UAAS;CACT,MAAMC,8CAA0B;EAChC;AAGJ,6BAAe"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_useFetchUsers = require('../../../hooks/useFetchUsers.cjs');
|
|
3
|
+
const require_BaseUserSelect = require('./BaseUserSelect.cjs');
|
|
4
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
5
|
+
react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
|
|
6
|
+
|
|
7
|
+
//#region src/components/primitives/UserSelect/UserSelect.tsx
|
|
8
|
+
/**
|
|
9
|
+
* Single-user picker for signed-in screens. It loads the user directory itself with the signed-in
|
|
10
|
+
* user's access token and submits the chosen user's ID, so it takes no data source. For any other
|
|
11
|
+
* data source use {@link Select} with {@link useInfiniteOptions}.
|
|
12
|
+
*/
|
|
13
|
+
const UserSelect = (props) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_BaseUserSelect.default, {
|
|
14
|
+
...props,
|
|
15
|
+
fetchUsers: require_useFetchUsers.default()
|
|
16
|
+
});
|
|
17
|
+
var UserSelect_default = UserSelect;
|
|
18
|
+
|
|
19
|
+
//#endregion
|
|
20
|
+
exports.default = UserSelect_default;
|
|
21
|
+
//# sourceMappingURL=UserSelect.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserSelect.cjs","names":["UserSelect: FC<UserSelectProps>","BaseUserSelect","useFetchUsers"],"sources":["../../../../../src/components/primitives/UserSelect/UserSelect.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {FC} from 'react';\nimport BaseUserSelect, {BaseUserSelectProps} from './BaseUserSelect';\nimport useFetchUsers from '../../../hooks/useFetchUsers';\n\nexport type UserSelectProps = Omit<BaseUserSelectProps, 'fetchUsers'>;\n\n/**\n * Single-user picker for signed-in screens. It loads the user directory itself with the signed-in\n * user's access token and submits the chosen user's ID, so it takes no data source. For any other\n * data source use {@link Select} with {@link useInfiniteOptions}.\n */\nconst UserSelect: FC<UserSelectProps> = (props: UserSelectProps) => (\n <BaseUserSelect {...props} fetchUsers={useFetchUsers()} />\n);\n\nexport default UserSelect;\n"],"mappings":";;;;;;;;;;;;AAcA,MAAMA,cAAmC,UACvC,2CAACC;CAAe,GAAI;CAAO,YAAYC,+BAAe;EAAI;AAG5D,yBAAe"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_ResourceSelect = require('../Select/ResourceSelect.cjs');
|
|
3
|
+
let __thunderid_browser = require("@thunderid/browser");
|
|
4
|
+
__thunderid_browser = require_rolldown_runtime.__toESM(__thunderid_browser);
|
|
5
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
6
|
+
react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
|
|
7
|
+
|
|
8
|
+
//#region src/components/primitives/UserTypeSelect/BaseUserTypeSelect.tsx
|
|
9
|
+
/**
|
|
10
|
+
* User-type picker: a `Select` that loads from the given `fetchUserTypes`, showing and submitting
|
|
11
|
+
* each user type's handle. Building block for {@link UserTypeSelect}; for a custom data source use
|
|
12
|
+
* `Select` with `useInfiniteOptions`.
|
|
13
|
+
*/
|
|
14
|
+
const BaseUserTypeSelect = ({ fetchUserTypes,...rest }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ResourceSelect.default, {
|
|
15
|
+
...rest,
|
|
16
|
+
bemBlock: "user-type-select",
|
|
17
|
+
fallbackMessages: {
|
|
18
|
+
ariaLabel: "Select a user type",
|
|
19
|
+
empty: "No user types found."
|
|
20
|
+
},
|
|
21
|
+
fetchPage: fetchUserTypes,
|
|
22
|
+
mapping: __thunderid_browser.UserTypeSelectConstants.MAPPING,
|
|
23
|
+
messageKey: "user_type_select",
|
|
24
|
+
resource: "user types",
|
|
25
|
+
type: __thunderid_browser.EmbeddedFlowComponentType.UserTypeSelect
|
|
26
|
+
});
|
|
27
|
+
var BaseUserTypeSelect_default = BaseUserTypeSelect;
|
|
28
|
+
|
|
29
|
+
//#endregion
|
|
30
|
+
exports.default = BaseUserTypeSelect_default;
|
|
31
|
+
//# sourceMappingURL=BaseUserTypeSelect.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseUserTypeSelect.cjs","names":["BaseUserTypeSelect: FC<BaseUserTypeSelectProps>","ResourceSelect","UserTypeSelectConstants","EmbeddedFlowComponentType"],"sources":["../../../../../src/components/primitives/UserTypeSelect/BaseUserTypeSelect.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {EmbeddedFlowComponentType, UserTypeSelectConstants} from '@thunderid/browser';\nimport type {FetchUserTypes} from '@thunderid/browser';\nimport {FC} from 'react';\nimport ResourceSelect, {ResourceSelectProps} from '../Select/ResourceSelect';\n\nexport interface BaseUserTypeSelectProps\n extends Omit<\n ResourceSelectProps,\n 'bemBlock' | 'defaults' | 'fallbackMessages' | 'fetchPage' | 'mapping' | 'messageKey' | 'resource' | 'type'\n > {\n fetchUserTypes?: FetchUserTypes;\n}\n\n/**\n * User-type picker: a `Select` that loads from the given `fetchUserTypes`, showing and submitting\n * each user type's handle. Building block for {@link UserTypeSelect}; for a custom data source use\n * `Select` with `useInfiniteOptions`.\n */\nconst BaseUserTypeSelect: FC<BaseUserTypeSelectProps> = ({fetchUserTypes, ...rest}: BaseUserTypeSelectProps) => (\n <ResourceSelect\n {...rest}\n bemBlock=\"user-type-select\"\n fallbackMessages={{\n ariaLabel: 'Select a user type',\n empty: 'No user types found.',\n }}\n fetchPage={fetchUserTypes}\n mapping={UserTypeSelectConstants.MAPPING}\n messageKey=\"user_type_select\"\n resource=\"user types\"\n type={EmbeddedFlowComponentType.UserTypeSelect}\n />\n);\n\nexport default BaseUserTypeSelect;\n"],"mappings":";;;;;;;;;;;;;AAqBA,MAAMA,sBAAmD,EAAC,eAAgB,GAAG,WAC3E,2CAACC;CACC,GAAI;CACJ,UAAS;CACT,kBAAkB;EAChB,WAAW;EACX,OAAO;EACR;CACD,WAAW;CACX,SAASC,4CAAwB;CACjC,YAAW;CACX,UAAS;CACT,MAAMC,8CAA0B;EAChC;AAGJ,iCAAe"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_useFetchUserTypes = require('../../../hooks/useFetchUserTypes.cjs');
|
|
3
|
+
const require_BaseUserTypeSelect = require('./BaseUserTypeSelect.cjs');
|
|
4
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
5
|
+
react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
|
|
6
|
+
|
|
7
|
+
//#region src/components/primitives/UserTypeSelect/UserTypeSelect.tsx
|
|
8
|
+
/**
|
|
9
|
+
* User-type picker for signed-in screens. It loads the user types itself with the signed-in user's
|
|
10
|
+
* access token and submits the chosen type's handle, so it takes no data source. For any other data
|
|
11
|
+
* source use `Select` with `useInfiniteOptions`.
|
|
12
|
+
*/
|
|
13
|
+
const UserTypeSelect = (props) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_BaseUserTypeSelect.default, {
|
|
14
|
+
...props,
|
|
15
|
+
fetchUserTypes: require_useFetchUserTypes.default()
|
|
16
|
+
});
|
|
17
|
+
var UserTypeSelect_default = UserTypeSelect;
|
|
18
|
+
|
|
19
|
+
//#endregion
|
|
20
|
+
exports.default = UserTypeSelect_default;
|
|
21
|
+
//# sourceMappingURL=UserTypeSelect.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserTypeSelect.cjs","names":["UserTypeSelect: FC<UserTypeSelectProps>","BaseUserTypeSelect","useFetchUserTypes"],"sources":["../../../../../src/components/primitives/UserTypeSelect/UserTypeSelect.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {FC} from 'react';\nimport BaseUserTypeSelect, {BaseUserTypeSelectProps} from './BaseUserTypeSelect';\nimport useFetchUserTypes from '../../../hooks/useFetchUserTypes';\n\nexport type UserTypeSelectProps = Omit<BaseUserTypeSelectProps, 'fetchUserTypes'>;\n\n/**\n * User-type picker for signed-in screens. It loads the user types itself with the signed-in user's\n * access token and submits the chosen type's handle, so it takes no data source. For any other data\n * source use `Select` with `useInfiniteOptions`.\n */\nconst UserTypeSelect: FC<UserTypeSelectProps> = (props: UserTypeSelectProps) => (\n <BaseUserTypeSelect {...props} fetchUserTypes={useFetchUserTypes()} />\n);\n\nexport default UserTypeSelect;\n"],"mappings":";;;;;;;;;;;;AAcA,MAAMA,kBAA2C,UAC/C,2CAACC;CAAmB,GAAI;CAAO,gBAAgBC,mCAAmB;EAAI;AAGxE,6BAAe"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_useManagementEndpoint = require('./useManagementEndpoint.cjs');
|
|
3
|
+
const require_useResourceQuery = require('./useResourceQuery.cjs');
|
|
4
|
+
let __thunderid_browser = require("@thunderid/browser");
|
|
5
|
+
__thunderid_browser = require_rolldown_runtime.__toESM(__thunderid_browser);
|
|
6
|
+
let react = require("react");
|
|
7
|
+
react = require_rolldown_runtime.__toESM(react);
|
|
8
|
+
|
|
9
|
+
//#region src/hooks/useFetchAuthFlows.ts
|
|
10
|
+
/**
|
|
11
|
+
* A `FetchAuthFlows` backed by the flow list, restricted to authentication flows and authenticated with
|
|
12
|
+
* the signed-in user's access token. Its identity is stable across renders, since a picker resets its
|
|
13
|
+
* loaded pages when the loader changes.
|
|
14
|
+
*/
|
|
15
|
+
const useFetchAuthFlows = () => {
|
|
16
|
+
const { baseUrl, url } = require_useManagementEndpoint.default("flows");
|
|
17
|
+
const fetcher = require_useResourceQuery.useResolvedFetcher();
|
|
18
|
+
return (0, react.useCallback)(async ({ limit, offset, signal }) => (0, __thunderid_browser.toAuthFlowSelectPage)(await (0, __thunderid_browser.getFlows)({
|
|
19
|
+
baseUrl,
|
|
20
|
+
fetcher,
|
|
21
|
+
flowType: __thunderid_browser.AuthFlowSelectConstants.FLOW_TYPE,
|
|
22
|
+
limit: Math.min(limit, __thunderid_browser.SelectConstants.MAX_PAGE_SIZE),
|
|
23
|
+
offset,
|
|
24
|
+
signal,
|
|
25
|
+
url
|
|
26
|
+
}), offset), [
|
|
27
|
+
baseUrl,
|
|
28
|
+
fetcher,
|
|
29
|
+
url
|
|
30
|
+
]);
|
|
31
|
+
};
|
|
32
|
+
var useFetchAuthFlows_default = useFetchAuthFlows;
|
|
33
|
+
|
|
34
|
+
//#endregion
|
|
35
|
+
exports.default = useFetchAuthFlows_default;
|
|
36
|
+
//# sourceMappingURL=useFetchAuthFlows.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFetchAuthFlows.cjs","names":["useManagementEndpoint","fetcher: ReturnType<typeof useResolvedFetcher>","useResolvedFetcher","AuthFlowSelectConstants","SelectConstants"],"sources":["../../../src/hooks/useFetchAuthFlows.ts"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {AuthFlowSelectConstants, getFlows, SelectConstants, toAuthFlowSelectPage} from '@thunderid/browser';\nimport type {FetchAuthFlows, SelectPage, SelectPageRequest} from '@thunderid/browser';\nimport {useCallback} from 'react';\nimport useManagementEndpoint, {ManagementEndpoint} from './useManagementEndpoint';\nimport {useResolvedFetcher} from './useResourceQuery';\n\n/**\n * A `FetchAuthFlows` backed by the flow list, restricted to authentication flows and authenticated with\n * the signed-in user's access token. Its identity is stable across renders, since a picker resets its\n * loaded pages when the loader changes.\n */\nconst useFetchAuthFlows = (): FetchAuthFlows => {\n const {baseUrl, url}: ManagementEndpoint = useManagementEndpoint('flows');\n const fetcher: ReturnType<typeof useResolvedFetcher> = useResolvedFetcher();\n\n return useCallback(\n async ({limit, offset, signal}: SelectPageRequest): Promise<SelectPage> =>\n toAuthFlowSelectPage(\n await getFlows({\n baseUrl,\n fetcher,\n flowType: AuthFlowSelectConstants.FLOW_TYPE,\n limit: Math.min(limit, SelectConstants.MAX_PAGE_SIZE),\n offset,\n signal,\n url,\n }),\n offset,\n ),\n [baseUrl, fetcher, url],\n );\n};\n\nexport default useFetchAuthFlows;\n"],"mappings":";;;;;;;;;;;;;;AAcA,MAAM,0BAA0C;CAC9C,MAAM,EAAC,SAAS,QAA2BA,sCAAsB,QAAQ;CACzE,MAAMC,UAAiDC,6CAAoB;AAE3E,+BACE,OAAO,EAAC,OAAO,QAAQ,2DAEnB,wCAAe;EACb;EACA;EACA,UAAUC,4CAAwB;EAClC,OAAO,KAAK,IAAI,OAAOC,oCAAgB,cAAc;EACrD;EACA;EACA;EACD,CAAC,EACF,OACD,EACH;EAAC;EAAS;EAAS;EAAI,CACxB;;AAGH,gCAAe"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_useManagementEndpoint = require('./useManagementEndpoint.cjs');
|
|
3
|
+
const require_useResourceQuery = require('./useResourceQuery.cjs');
|
|
4
|
+
let __thunderid_browser = require("@thunderid/browser");
|
|
5
|
+
__thunderid_browser = require_rolldown_runtime.__toESM(__thunderid_browser);
|
|
6
|
+
let react = require("react");
|
|
7
|
+
react = require_rolldown_runtime.__toESM(react);
|
|
8
|
+
|
|
9
|
+
//#region src/hooks/useFetchUserTypes.ts
|
|
10
|
+
/**
|
|
11
|
+
* A `FetchUserTypes` backed by the user type list, authenticated with the signed-in user's access token.
|
|
12
|
+
* Its identity is stable across renders, since a picker resets its loaded pages when the loader changes.
|
|
13
|
+
*/
|
|
14
|
+
const useFetchUserTypes = () => {
|
|
15
|
+
const { baseUrl, url } = require_useManagementEndpoint.default("userTypes");
|
|
16
|
+
const fetcher = require_useResourceQuery.useResolvedFetcher();
|
|
17
|
+
return (0, react.useCallback)(async ({ limit, offset, signal }) => (0, __thunderid_browser.toUserTypeSelectPage)(await (0, __thunderid_browser.getUserTypes)({
|
|
18
|
+
baseUrl,
|
|
19
|
+
fetcher,
|
|
20
|
+
limit: Math.min(limit, __thunderid_browser.SelectConstants.MAX_PAGE_SIZE),
|
|
21
|
+
offset,
|
|
22
|
+
signal,
|
|
23
|
+
url
|
|
24
|
+
}), offset), [
|
|
25
|
+
baseUrl,
|
|
26
|
+
fetcher,
|
|
27
|
+
url
|
|
28
|
+
]);
|
|
29
|
+
};
|
|
30
|
+
var useFetchUserTypes_default = useFetchUserTypes;
|
|
31
|
+
|
|
32
|
+
//#endregion
|
|
33
|
+
exports.default = useFetchUserTypes_default;
|
|
34
|
+
//# sourceMappingURL=useFetchUserTypes.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFetchUserTypes.cjs","names":["useManagementEndpoint","fetcher: ReturnType<typeof useResolvedFetcher>","useResolvedFetcher","SelectConstants"],"sources":["../../../src/hooks/useFetchUserTypes.ts"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {getUserTypes, SelectConstants, toUserTypeSelectPage} from '@thunderid/browser';\nimport type {FetchUserTypes, SelectPage, SelectPageRequest} from '@thunderid/browser';\nimport {useCallback} from 'react';\nimport useManagementEndpoint, {ManagementEndpoint} from './useManagementEndpoint';\nimport {useResolvedFetcher} from './useResourceQuery';\n\n/**\n * A `FetchUserTypes` backed by the user type list, authenticated with the signed-in user's access token.\n * Its identity is stable across renders, since a picker resets its loaded pages when the loader changes.\n */\nconst useFetchUserTypes = (): FetchUserTypes => {\n const {baseUrl, url}: ManagementEndpoint = useManagementEndpoint('userTypes');\n const fetcher: ReturnType<typeof useResolvedFetcher> = useResolvedFetcher();\n\n return useCallback(\n async ({limit, offset, signal}: SelectPageRequest): Promise<SelectPage> =>\n toUserTypeSelectPage(\n await getUserTypes({\n baseUrl,\n fetcher,\n limit: Math.min(limit, SelectConstants.MAX_PAGE_SIZE),\n offset,\n signal,\n url,\n }),\n offset,\n ),\n [baseUrl, fetcher, url],\n );\n};\n\nexport default useFetchUserTypes;\n"],"mappings":";;;;;;;;;;;;;AAaA,MAAM,0BAA0C;CAC9C,MAAM,EAAC,SAAS,QAA2BA,sCAAsB,YAAY;CAC7E,MAAMC,UAAiDC,6CAAoB;AAE3E,+BACE,OAAO,EAAC,OAAO,QAAQ,2DAEnB,4CAAmB;EACjB;EACA;EACA,OAAO,KAAK,IAAI,OAAOC,oCAAgB,cAAc;EACrD;EACA;EACA;EACD,CAAC,EACF,OACD,EACH;EAAC;EAAS;EAAS;EAAI,CACxB;;AAGH,gCAAe"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_useManagementEndpoint = require('./useManagementEndpoint.cjs');
|
|
3
|
+
const require_useResourceQuery = require('./useResourceQuery.cjs');
|
|
4
|
+
let __thunderid_browser = require("@thunderid/browser");
|
|
5
|
+
__thunderid_browser = require_rolldown_runtime.__toESM(__thunderid_browser);
|
|
6
|
+
let react = require("react");
|
|
7
|
+
react = require_rolldown_runtime.__toESM(react);
|
|
8
|
+
|
|
9
|
+
//#region src/hooks/useFetchUsers.ts
|
|
10
|
+
/**
|
|
11
|
+
* A `FetchUsers` backed by the user directory, authenticated with the signed-in user's access token.
|
|
12
|
+
* Its identity is stable across renders, since a picker resets its loaded pages when the loader changes.
|
|
13
|
+
*/
|
|
14
|
+
const useFetchUsers = () => {
|
|
15
|
+
const { baseUrl, url } = require_useManagementEndpoint.default("users");
|
|
16
|
+
const fetcher = require_useResourceQuery.useResolvedFetcher();
|
|
17
|
+
return (0, react.useCallback)(async ({ filter, limit, offset, signal }) => (0, __thunderid_browser.toUserSelectPage)(await (0, __thunderid_browser.getUsers)({
|
|
18
|
+
baseUrl,
|
|
19
|
+
fetcher,
|
|
20
|
+
filter,
|
|
21
|
+
limit,
|
|
22
|
+
offset,
|
|
23
|
+
signal,
|
|
24
|
+
url
|
|
25
|
+
}), offset), [
|
|
26
|
+
baseUrl,
|
|
27
|
+
fetcher,
|
|
28
|
+
url
|
|
29
|
+
]);
|
|
30
|
+
};
|
|
31
|
+
var useFetchUsers_default = useFetchUsers;
|
|
32
|
+
|
|
33
|
+
//#endregion
|
|
34
|
+
exports.default = useFetchUsers_default;
|
|
35
|
+
//# sourceMappingURL=useFetchUsers.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFetchUsers.cjs","names":["useManagementEndpoint","fetcher: ReturnType<typeof useResolvedFetcher>","useResolvedFetcher"],"sources":["../../../src/hooks/useFetchUsers.ts"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {getUsers, toUserSelectPage} from '@thunderid/browser';\nimport type {FetchUsers, SelectPage, SelectPageRequest} from '@thunderid/browser';\nimport {useCallback} from 'react';\nimport useManagementEndpoint, {ManagementEndpoint} from './useManagementEndpoint';\nimport {useResolvedFetcher} from './useResourceQuery';\n\n/**\n * A `FetchUsers` backed by the user directory, authenticated with the signed-in user's access token.\n * Its identity is stable across renders, since a picker resets its loaded pages when the loader changes.\n */\nconst useFetchUsers = (): FetchUsers => {\n const {baseUrl, url}: ManagementEndpoint = useManagementEndpoint('users');\n const fetcher: ReturnType<typeof useResolvedFetcher> = useResolvedFetcher();\n\n return useCallback(\n async ({filter, limit, offset, signal}: SelectPageRequest): Promise<SelectPage> =>\n toUserSelectPage(await getUsers({baseUrl, fetcher, filter, limit, offset, signal, url}), offset),\n [baseUrl, fetcher, url],\n );\n};\n\nexport default useFetchUsers;\n"],"mappings":";;;;;;;;;;;;;AAaA,MAAM,sBAAkC;CACtC,MAAM,EAAC,SAAS,QAA2BA,sCAAsB,QAAQ;CACzE,MAAMC,UAAiDC,6CAAoB;AAE3E,+BACE,OAAO,EAAC,QAAQ,OAAO,QAAQ,uDACZ,wCAAe;EAAC;EAAS;EAAS;EAAQ;EAAO;EAAQ;EAAQ;EAAI,CAAC,EAAE,OAAO,EAClG;EAAC;EAAS;EAAS;EAAI,CACxB;;AAGH,4BAAe"}
|