@netu-si/netu-react-dsf-components 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +29 -0
  3. package/dist/cjs/assets/index-b6796621.css +16 -0
  4. package/dist/cjs/components/DSFBackLink/DSFBackLink.d.ts +8 -0
  5. package/dist/cjs/components/DSFBackLink/index.d.ts +1 -0
  6. package/dist/cjs/components/DSFBeforeMainContainer/DSFBeforeMainContainer.d.ts +13 -0
  7. package/dist/cjs/components/DSFBeforeMainContainer/index.d.ts +1 -0
  8. package/dist/cjs/components/DSFBodyEndContainer/DSFBodyEndContainer.d.ts +13 -0
  9. package/dist/cjs/components/DSFBodyEndContainer/index.d.ts +1 -0
  10. package/dist/cjs/components/DSFBodyStartContainer/DSFBodyStartContainer.d.ts +13 -0
  11. package/dist/cjs/components/DSFBodyStartContainer/index.d.ts +1 -0
  12. package/dist/cjs/components/DSFButton/DSFButton.d.ts +14 -0
  13. package/dist/cjs/components/DSFButton/DSFInputField.d.ts +15 -0
  14. package/dist/cjs/components/DSFButton/index.d.ts +1 -0
  15. package/dist/cjs/components/DSFCheckbox/DSFCheckbox.d.ts +22 -0
  16. package/dist/cjs/components/DSFCheckbox/index.d.ts +1 -0
  17. package/dist/cjs/components/DSFDateInput/DSFDateInput.d.ts +83 -0
  18. package/dist/cjs/components/DSFDateInput/Input.d.ts +49 -0
  19. package/dist/cjs/components/DSFDateInput/index.d.ts +1 -0
  20. package/dist/cjs/components/DSFDateInput2/DSFDateInput2.d.ts +56 -0
  21. package/dist/cjs/components/DSFDateInput2/index.d.ts +1 -0
  22. package/dist/cjs/components/DSFErrorSummary/DSFErrorSummary.d.ts +15 -0
  23. package/dist/cjs/components/DSFErrorSummary/index.d.ts +1 -0
  24. package/dist/cjs/components/DSFErrorText/DSFErrorText.d.ts +9 -0
  25. package/dist/cjs/components/DSFErrorText/index.d.ts +1 -0
  26. package/dist/cjs/components/DSFFieldSet/DSFFieldSet.d.ts +8 -0
  27. package/dist/cjs/components/DSFFieldSet/index.d.ts +1 -0
  28. package/dist/cjs/components/DSFFileUpload/DSFFileUpload.d.ts +15 -0
  29. package/dist/cjs/components/DSFFileUpload/index.d.ts +1 -0
  30. package/dist/cjs/components/DSFFooter/DSFFooter.d.ts +17 -0
  31. package/dist/cjs/components/DSFFooter/index.d.ts +1 -0
  32. package/dist/cjs/components/DSFFormGroup/DSFFormGroup.d.ts +17 -0
  33. package/dist/cjs/components/DSFFormGroup/index.d.ts +1 -0
  34. package/dist/cjs/components/DSFHeader/DSFHeader.d.ts +21 -0
  35. package/dist/cjs/components/DSFHeader/index.d.ts +1 -0
  36. package/dist/cjs/components/DSFHintText/DSFHintText.d.ts +9 -0
  37. package/dist/cjs/components/DSFHintText/index.d.ts +1 -0
  38. package/dist/cjs/components/DSFInput/DSFInput.d.ts +11 -0
  39. package/dist/cjs/components/DSFInput/index.d.ts +1 -0
  40. package/dist/cjs/components/DSFInputField/DSFInputField.d.ts +21 -0
  41. package/dist/cjs/components/DSFInputField/index.d.ts +1 -0
  42. package/dist/cjs/components/DSFLabel/DSFLabel.d.ts +8 -0
  43. package/dist/cjs/components/DSFLabel/index.d.ts +1 -0
  44. package/dist/cjs/components/DSFLoadingBox/DSFLoadingBox.d.ts +9 -0
  45. package/dist/cjs/components/DSFLoadingBox/index.d.ts +1 -0
  46. package/dist/cjs/components/DSFMain/DSFMain.d.ts +13 -0
  47. package/dist/cjs/components/DSFMain/index.d.ts +1 -0
  48. package/dist/cjs/components/DSFPanel/DSFPanel.d.ts +10 -0
  49. package/dist/cjs/components/DSFPanel/index.d.ts +1 -0
  50. package/dist/cjs/components/DSFRadio/DSFRadio.d.ts +16 -0
  51. package/dist/cjs/components/DSFRadio/index.d.ts +1 -0
  52. package/dist/cjs/components/DSFSelect/DSFSelect.d.ts +15 -0
  53. package/dist/cjs/components/DSFSelect/index.d.ts +1 -0
  54. package/dist/cjs/components/DSFSkipLink/DSFSkipLink.d.ts +15 -0
  55. package/dist/cjs/components/DSFSkipLink/index.d.ts +1 -0
  56. package/dist/cjs/components/DSFTable/DSFTable.d.ts +12 -0
  57. package/dist/cjs/components/DSFTable/index.d.ts +1 -0
  58. package/dist/cjs/components/DSFTextInput/DSFTextInput.d.ts +13 -0
  59. package/dist/cjs/components/DSFTextInput/index.d.ts +1 -0
  60. package/dist/cjs/components/DSFUserSignOut/DSFUserSignOut.d.ts +9 -0
  61. package/dist/cjs/components/DSFUserSignOut/index.d.ts +1 -0
  62. package/dist/cjs/components/index.d.ts +25 -0
  63. package/dist/cjs/index.d.ts +1 -0
  64. package/dist/cjs/index.js +2 -0
  65. package/dist/cjs/index.js.map +1 -0
  66. package/dist/cjs/lib/utils.d.ts +1 -0
  67. package/dist/cjs/stories/Button.d.ts +29 -0
  68. package/dist/cjs/stories/Header.d.ts +13 -0
  69. package/dist/cjs/stories/Page.d.ts +3 -0
  70. package/dist/cjs/stories/Page.stories.d.ts +13 -0
  71. package/dist/esm/assets/index-b6796621.css +16 -0
  72. package/dist/esm/components/DSFBackLink/DSFBackLink.d.ts +8 -0
  73. package/dist/esm/components/DSFBackLink/index.d.ts +1 -0
  74. package/dist/esm/components/DSFBeforeMainContainer/DSFBeforeMainContainer.d.ts +13 -0
  75. package/dist/esm/components/DSFBeforeMainContainer/index.d.ts +1 -0
  76. package/dist/esm/components/DSFBodyEndContainer/DSFBodyEndContainer.d.ts +13 -0
  77. package/dist/esm/components/DSFBodyEndContainer/index.d.ts +1 -0
  78. package/dist/esm/components/DSFBodyStartContainer/DSFBodyStartContainer.d.ts +13 -0
  79. package/dist/esm/components/DSFBodyStartContainer/index.d.ts +1 -0
  80. package/dist/esm/components/DSFButton/DSFButton.d.ts +14 -0
  81. package/dist/esm/components/DSFButton/DSFInputField.d.ts +15 -0
  82. package/dist/esm/components/DSFButton/index.d.ts +1 -0
  83. package/dist/esm/components/DSFCheckbox/DSFCheckbox.d.ts +22 -0
  84. package/dist/esm/components/DSFCheckbox/index.d.ts +1 -0
  85. package/dist/esm/components/DSFDateInput/DSFDateInput.d.ts +83 -0
  86. package/dist/esm/components/DSFDateInput/Input.d.ts +49 -0
  87. package/dist/esm/components/DSFDateInput/index.d.ts +1 -0
  88. package/dist/esm/components/DSFDateInput2/DSFDateInput2.d.ts +56 -0
  89. package/dist/esm/components/DSFDateInput2/index.d.ts +1 -0
  90. package/dist/esm/components/DSFErrorSummary/DSFErrorSummary.d.ts +15 -0
  91. package/dist/esm/components/DSFErrorSummary/index.d.ts +1 -0
  92. package/dist/esm/components/DSFErrorText/DSFErrorText.d.ts +9 -0
  93. package/dist/esm/components/DSFErrorText/index.d.ts +1 -0
  94. package/dist/esm/components/DSFFieldSet/DSFFieldSet.d.ts +8 -0
  95. package/dist/esm/components/DSFFieldSet/index.d.ts +1 -0
  96. package/dist/esm/components/DSFFileUpload/DSFFileUpload.d.ts +15 -0
  97. package/dist/esm/components/DSFFileUpload/index.d.ts +1 -0
  98. package/dist/esm/components/DSFFooter/DSFFooter.d.ts +17 -0
  99. package/dist/esm/components/DSFFooter/index.d.ts +1 -0
  100. package/dist/esm/components/DSFFormGroup/DSFFormGroup.d.ts +17 -0
  101. package/dist/esm/components/DSFFormGroup/index.d.ts +1 -0
  102. package/dist/esm/components/DSFHeader/DSFHeader.d.ts +21 -0
  103. package/dist/esm/components/DSFHeader/index.d.ts +1 -0
  104. package/dist/esm/components/DSFHintText/DSFHintText.d.ts +9 -0
  105. package/dist/esm/components/DSFHintText/index.d.ts +1 -0
  106. package/dist/esm/components/DSFInput/DSFInput.d.ts +11 -0
  107. package/dist/esm/components/DSFInput/index.d.ts +1 -0
  108. package/dist/esm/components/DSFInputField/DSFInputField.d.ts +21 -0
  109. package/dist/esm/components/DSFInputField/index.d.ts +1 -0
  110. package/dist/esm/components/DSFLabel/DSFLabel.d.ts +8 -0
  111. package/dist/esm/components/DSFLabel/index.d.ts +1 -0
  112. package/dist/esm/components/DSFLoadingBox/DSFLoadingBox.d.ts +9 -0
  113. package/dist/esm/components/DSFLoadingBox/index.d.ts +1 -0
  114. package/dist/esm/components/DSFMain/DSFMain.d.ts +13 -0
  115. package/dist/esm/components/DSFMain/index.d.ts +1 -0
  116. package/dist/esm/components/DSFPanel/DSFPanel.d.ts +10 -0
  117. package/dist/esm/components/DSFPanel/index.d.ts +1 -0
  118. package/dist/esm/components/DSFRadio/DSFRadio.d.ts +16 -0
  119. package/dist/esm/components/DSFRadio/index.d.ts +1 -0
  120. package/dist/esm/components/DSFSelect/DSFSelect.d.ts +15 -0
  121. package/dist/esm/components/DSFSelect/index.d.ts +1 -0
  122. package/dist/esm/components/DSFSkipLink/DSFSkipLink.d.ts +15 -0
  123. package/dist/esm/components/DSFSkipLink/index.d.ts +1 -0
  124. package/dist/esm/components/DSFTable/DSFTable.d.ts +12 -0
  125. package/dist/esm/components/DSFTable/index.d.ts +1 -0
  126. package/dist/esm/components/DSFTextInput/DSFTextInput.d.ts +13 -0
  127. package/dist/esm/components/DSFTextInput/index.d.ts +1 -0
  128. package/dist/esm/components/DSFUserSignOut/DSFUserSignOut.d.ts +9 -0
  129. package/dist/esm/components/DSFUserSignOut/index.d.ts +1 -0
  130. package/dist/esm/components/index.d.ts +25 -0
  131. package/dist/esm/index.d.ts +1 -0
  132. package/dist/esm/index.js +2 -0
  133. package/dist/esm/index.js.map +1 -0
  134. package/dist/esm/lib/utils.d.ts +1 -0
  135. package/dist/esm/stories/Button.d.ts +29 -0
  136. package/dist/esm/stories/Header.d.ts +13 -0
  137. package/dist/esm/stories/Page.d.ts +3 -0
  138. package/dist/esm/stories/Page.stories.d.ts +13 -0
  139. package/dist/index.d.ts +344 -0
  140. package/dist/types.d.ts +16 -0
  141. package/package.json +92 -0
@@ -0,0 +1,13 @@
1
+ /// <reference types="react" />
2
+ import type { StoryObj } from '@storybook/react';
3
+ declare const meta: {
4
+ title: string;
5
+ component: import("react").FC<{}>;
6
+ parameters: {
7
+ layout: string;
8
+ };
9
+ };
10
+ export default meta;
11
+ type Story = StoryObj<typeof meta>;
12
+ export declare const LoggedOut: Story;
13
+ export declare const LoggedIn: Story;
@@ -0,0 +1,344 @@
1
+ import React, { FC, RefObject } from 'react';
2
+ import { LinkProps } from 'react-router-dom';
3
+ import { UseFormRegisterReturn } from 'react-hook-form';
4
+
5
+ interface DSFBackLinkProps extends LinkProps {
6
+ onBackClick?: () => void;
7
+ }
8
+ declare const DSFBackLink: FC<DSFBackLinkProps>;
9
+
10
+ interface DSFButtonProps extends React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement> {
11
+ /**
12
+ * Id of the button
13
+ */
14
+ id: string;
15
+ /**
16
+ * React Node to be displayed on the button, can be a string or any other react node
17
+ */
18
+ children: React.ReactNode;
19
+ }
20
+ declare const DSFButton: FC<DSFButtonProps>;
21
+
22
+ interface DSFCheckboxProps extends React.InputHTMLAttributes<HTMLInputElement> {
23
+ /**
24
+ * React Node to be displayed on the button, can be a string or any other react node
25
+ */
26
+ id?: string;
27
+ /**
28
+ * Hint text
29
+ */
30
+ hint?: React.ReactNode;
31
+ /**
32
+ * React Node to be displayed as label, can be a combination of compnents
33
+ */
34
+ children: React.ReactNode;
35
+ /**
36
+ * Custom style class to be added in the checkbox
37
+ */
38
+ className?: string;
39
+ }
40
+ declare const DSFCheckbox: React.ForwardRefExoticComponent<DSFCheckboxProps & React.RefAttributes<HTMLInputElement>>;
41
+
42
+ interface DSFInputProps extends React.InputHTMLAttributes<HTMLInputElement> {
43
+ id?: string;
44
+ error?: boolean;
45
+ visualSize?: number;
46
+ errorId?: string;
47
+ register?: (rules?: any) => void;
48
+ }
49
+ declare const DSFInput: React.ForwardRefExoticComponent<DSFInputProps & React.RefAttributes<HTMLInputElement>>;
50
+
51
+ interface InputRefObject {
52
+ day: RefObject<HTMLInputElement>;
53
+ month: RefObject<HTMLInputElement>;
54
+ year: RefObject<HTMLInputElement>;
55
+ }
56
+ interface DSFDateInputProps {
57
+ /**
58
+ * ID of the component
59
+ */
60
+ id: string;
61
+ /**
62
+ * Input label
63
+ */
64
+ label: string;
65
+ /**
66
+ * Hint text
67
+ */
68
+ hint?: string;
69
+ /**
70
+ * Error text to be shown
71
+ */
72
+ errorText?: string;
73
+ /**
74
+ * Refs to the individual input elements for day, month, year
75
+ */
76
+ refs?: InputRefObject;
77
+ /**
78
+ * Overrides the labels for each input
79
+ */
80
+ labels?: {
81
+ day: string;
82
+ month: string;
83
+ year: string;
84
+ };
85
+ /**
86
+ * Native input attributes to be added to each date input
87
+ */
88
+ inputs?: {
89
+ day?: DSFInputProps;
90
+ month?: DSFInputProps;
91
+ year?: DSFInputProps;
92
+ };
93
+ /**
94
+ * Initialize each input with specific values
95
+ */
96
+ defaultValues?: {
97
+ day?: string;
98
+ month?: string;
99
+ year?: string;
100
+ };
101
+ /**
102
+ * General input props including event handlers and value for all inputs
103
+ */
104
+ inputProps?: {
105
+ /**
106
+ * Called when the day, month or year changes
107
+ */
108
+ onChange?: (e: React.ChangeEvent<HTMLInputElement>, key: string) => void;
109
+ /**
110
+ * Called when the day, month or year fields are blurred
111
+ * (does not get called when moving between inputs in the same datefield)
112
+ */
113
+ onBlur?: (e: React.FocusEvent<HTMLInputElement>, key: string) => void;
114
+ /**
115
+ * Called when the day, month or year fields are focussed
116
+ * (does not get called when moving between inputs in the same datefield)
117
+ */
118
+ onFocus?: (e: React.FocusEvent<HTMLInputElement>, key: string) => void;
119
+ /**
120
+ * When the form field is controlled, this sets the value of the day, month and year inputs
121
+ */
122
+ value?: {
123
+ day?: string;
124
+ month?: string;
125
+ year?: string;
126
+ };
127
+ };
128
+ }
129
+ declare const DSFDateInput: React.FC<DSFDateInputProps>;
130
+
131
+ interface DSFErrorSummaryProps {
132
+ /** onClick function to scroll the target element into view */
133
+ onHandleErrorClick?: (targetName: string) => void;
134
+ /** Heading text */
135
+ heading?: string;
136
+ /** Array of errors with text and target element name to scroll into view when clicked */
137
+ errors?: {
138
+ targetName?: string;
139
+ text?: string;
140
+ }[];
141
+ }
142
+ declare const DSFErrorSummary: FC<DSFErrorSummaryProps>;
143
+
144
+ interface DSFInputFieldProps {
145
+ label: string;
146
+ hint?: React.ReactNode;
147
+ underRadio?: boolean;
148
+ id: string;
149
+ inputProps?: DSFInputProps;
150
+ input?: DSFInputProps;
151
+ meta: {
152
+ error?: string | string[];
153
+ touched?: boolean;
154
+ };
155
+ visualSize?: number;
156
+ errorId?: string;
157
+ register?: UseFormRegisterReturn;
158
+ }
159
+ declare const DSFInputField: FC<DSFInputFieldProps>;
160
+
161
+ interface DSFSelectProps {
162
+ label: string;
163
+ hint?: React.ReactNode;
164
+ id: string;
165
+ inputProps?: React.SelectHTMLAttributes<HTMLSelectElement>;
166
+ meta: {
167
+ error?: string | string[];
168
+ touched?: boolean;
169
+ };
170
+ children: React.ReactNode;
171
+ }
172
+ declare const DSFSelect: FC<DSFSelectProps>;
173
+
174
+ interface DSFPanelProps {
175
+ /** Panel title text */
176
+ title: string;
177
+ /** Panel body text */
178
+ children?: React.ReactNode;
179
+ }
180
+ declare const DSFPanel: FC<DSFPanelProps>;
181
+
182
+ interface DSFLabelProps extends React.DetailedHTMLProps<React.LabelHTMLAttributes<HTMLLabelElement>, HTMLLabelElement> {
183
+ label: string;
184
+ htmlFor?: string;
185
+ }
186
+ declare const DSFLabel: FC<DSFLabelProps>;
187
+
188
+ interface DSFErrorTextProps {
189
+ id?: string;
190
+ className?: string;
191
+ children: React.ReactNode;
192
+ }
193
+ declare const DSFErrorText: FC<DSFErrorTextProps>;
194
+
195
+ interface DSFHintTextProps {
196
+ id?: string;
197
+ children: React.ReactNode;
198
+ className?: string;
199
+ }
200
+ declare const DSFHintText: FC<DSFHintTextProps>;
201
+
202
+ type NavMenuItem = {
203
+ label: string;
204
+ href: string;
205
+ };
206
+ interface DSFHeaderProps {
207
+ headerTitle: string;
208
+ showLang?: boolean;
209
+ menu?: NavMenuItem[];
210
+ }
211
+ declare const DSFHeader: {
212
+ ({ headerTitle, menu, showLang }: DSFHeaderProps): React.JSX.Element;
213
+ defaultProps: {
214
+ showLang: boolean;
215
+ menu: undefined;
216
+ headerTitle: string;
217
+ };
218
+ displayName: string;
219
+ };
220
+
221
+ interface DSFFooterProps {
222
+ privacyStatementUrl?: string;
223
+ cookiePolicyUrl?: string;
224
+ accessibilityStatementUrl?: string;
225
+ }
226
+ declare const DSFFooter: {
227
+ ({ privacyStatementUrl, cookiePolicyUrl, accessibilityStatementUrl }: DSFFooterProps): React.JSX.Element;
228
+ defaultProps: {
229
+ privacyStatementUrl: undefined;
230
+ cookiePolicyUrl: undefined;
231
+ accessibilityStatementUrl: undefined;
232
+ };
233
+ displayName: string;
234
+ };
235
+
236
+ interface DSFMainProps {
237
+ children: React.ReactNode;
238
+ }
239
+ declare const DSFMain: {
240
+ ({ children }: DSFMainProps): React.JSX.Element;
241
+ defaultProps: {
242
+ children: undefined;
243
+ };
244
+ displayName: string;
245
+ };
246
+
247
+ interface DSFBeforeMainContainerProps {
248
+ children: React.ReactNode;
249
+ }
250
+ declare const DSFBeforeMainContainer: {
251
+ ({ children }: DSFBeforeMainContainerProps): React.JSX.Element;
252
+ defaultProps: {
253
+ children: undefined;
254
+ };
255
+ displayName: string;
256
+ };
257
+
258
+ interface DSFBodyStartContainerProps {
259
+ children: React.ReactNode;
260
+ }
261
+ declare const DSFBodyStartContainer: {
262
+ ({ children }: DSFBodyStartContainerProps): React.JSX.Element;
263
+ defaultProps: {
264
+ children: undefined;
265
+ };
266
+ displayName: string;
267
+ };
268
+
269
+ interface DSFBodyEndContainerProps {
270
+ children?: React.ReactNode;
271
+ }
272
+ declare const DSFBodyEndContainer: {
273
+ ({ children }: DSFBodyEndContainerProps): React.JSX.Element;
274
+ defaultProps: {
275
+ children: undefined;
276
+ };
277
+ displayName: string;
278
+ };
279
+
280
+ interface DSFSkipLinkProps {
281
+ href?: string;
282
+ children?: React.ReactNode;
283
+ }
284
+ declare const DSFSkipLink: {
285
+ ({ href, children }: DSFSkipLinkProps): React.JSX.Element;
286
+ defaultProps: {
287
+ children: string;
288
+ href: string;
289
+ };
290
+ displayName: string;
291
+ };
292
+
293
+ interface DSFLoadingBoxProps {
294
+ loading: boolean;
295
+ spinnerColor?: string;
296
+ children?: React.ReactNode;
297
+ }
298
+ declare const DSFLoadingBox: React.FC<DSFLoadingBoxProps>;
299
+
300
+ interface DSFFieldSetProps {
301
+ legend: React.ReactNode;
302
+ children?: React.ReactNode;
303
+ }
304
+ declare const DSFFieldSet: React.FC<DSFFieldSetProps>;
305
+
306
+ interface DSFFormGroupProps {
307
+ label?: string;
308
+ name: string;
309
+ error?: string;
310
+ hint?: string;
311
+ children?: React.ReactNode;
312
+ }
313
+ declare const DSFFormGroup: React.FC<DSFFormGroupProps>;
314
+
315
+ interface DSFRadioProps extends React.InputHTMLAttributes<HTMLInputElement> {
316
+ hint?: React.ReactNode;
317
+ children: React.ReactNode;
318
+ collapsed?: {
319
+ node?: React.ReactNode;
320
+ className: string;
321
+ };
322
+ className?: string;
323
+ inline?: boolean;
324
+ }
325
+ declare const DSFRadio: React.ForwardRefExoticComponent<DSFRadioProps & React.RefAttributes<HTMLInputElement>>;
326
+
327
+ interface TableColumn {
328
+ header: string;
329
+ type?: 'text' | 'number';
330
+ }
331
+ interface DSFTableProps {
332
+ columns: TableColumn[];
333
+ rowData: (string | number)[][];
334
+ }
335
+ declare const DSFTable: React.FC<DSFTableProps>;
336
+
337
+ interface DSFUserSignOutProps {
338
+ fullName: string;
339
+ onClick?: () => void;
340
+ href: string;
341
+ }
342
+ declare const DSFUserSignOut: FC<DSFUserSignOutProps>;
343
+
344
+ export { DSFBackLink, DSFBeforeMainContainer, DSFBodyEndContainer, DSFBodyStartContainer, DSFButton, DSFCheckbox, DSFDateInput, DSFDateInputProps, DSFErrorSummary, DSFErrorText, DSFFieldSet, DSFFooter, DSFFormGroup, DSFHeader, DSFHintText, DSFInput, DSFInputField, DSFLabel, DSFLoadingBox, DSFMain, DSFPanel, DSFRadio, DSFSelect, DSFSkipLink, DSFTable, DSFUserSignOut };