@prediktif/ui 0.1.23 → 0.1.24
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/index.d.mts +1 -17
- package/dist/index.d.ts +1 -17
- package/dist/index.js +0 -464
- package/dist/index.mjs +0 -473
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -3,7 +3,6 @@ import { ReactNode, ComponentProps } from 'react';
|
|
|
3
3
|
import * as _tanstack_react_table from '@tanstack/react-table';
|
|
4
4
|
import { RowData, Table, ColumnDef, ColumnFiltersState, Row, SortingState, ColumnVisibilityState } from '@tanstack/react-table';
|
|
5
5
|
export { ColumnDef, ColumnFiltersState, ColumnVisibilityState, FilterFn, Row, RowData, SortingState, Table, flexRender, useTable } from '@tanstack/react-table';
|
|
6
|
-
import { z } from 'zod';
|
|
7
6
|
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
8
7
|
import { Button as Button$1 } from '@base-ui/react/button';
|
|
9
8
|
import { VariantProps } from 'class-variance-authority';
|
|
@@ -338,21 +337,6 @@ declare const HeaderTitle: react.NamedExoticComponent<HeaderTitleProps>;
|
|
|
338
337
|
type GoogleIconProps = ComponentProps<"svg">;
|
|
339
338
|
declare function GoogleIcon({ className, ...props }: GoogleIconProps): react.JSX.Element;
|
|
340
339
|
|
|
341
|
-
declare const loginSchema: z.ZodObject<{
|
|
342
|
-
email: z.ZodPipe<z.ZodString, z.ZodEmail>;
|
|
343
|
-
password: z.ZodString;
|
|
344
|
-
}, z.core.$strip>;
|
|
345
|
-
type LoginValues = z.infer<typeof loginSchema>;
|
|
346
|
-
type LoginSubmitResult = {
|
|
347
|
-
error?: string;
|
|
348
|
-
} | undefined;
|
|
349
|
-
interface LoginServerProps {
|
|
350
|
-
onSubmit?: (values: LoginValues) => Promise<LoginSubmitResult> | LoginSubmitResult;
|
|
351
|
-
onGoogleSignIn?: () => Promise<void> | void;
|
|
352
|
-
isSubmitting?: boolean;
|
|
353
|
-
}
|
|
354
|
-
declare function LoginServer({ onSubmit, onGoogleSignIn, isSubmitting: externalIsSubmitting, }: LoginServerProps): react.JSX.Element;
|
|
355
|
-
|
|
356
340
|
declare const buttonVariants: (props?: ({
|
|
357
341
|
variant?: "default" | "outline" | "secondary" | "ghost" | "destructive" | "link" | null | undefined;
|
|
358
342
|
size?: "default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
|
|
@@ -372,4 +356,4 @@ interface StateEmptyProps {
|
|
|
372
356
|
}
|
|
373
357
|
declare const StateEmpty: react.NamedExoticComponent<StateEmptyProps>;
|
|
374
358
|
|
|
375
|
-
export { AppSidebar, type AppSidebarProps, AvatarUser, type AvatarUserProps, type ColumnMetaCustom, DataTable, DataTableContentBody, type DataTableContentBodyProps, DataTableContentHeader, type DataTableContentHeaderProps, type DataTableFeatures, DataTableFooterEntries, type DataTableFooterEntriesProps, DataTableFooterPagination, type DataTableFooterPaginationProps, DataTableHeaderAdd, type DataTableHeaderAddProps, DataTableHeaderDownload, type DataTableHeaderDownloadProps, DataTableHeaderFilter, type DataTableHeaderFilterProps, DataTableHeaderRefresh, DataTableHeaderSearch, type DataTableHeaderSearchProps, DataTableHeaderSort, type DataTableHeaderSortProps, DataTableHeaderToggle, type DataTableHeaderToggleProps, type DataTableProps, EmailLabel, type EmailLabelProps, EmailVerified, type EmailVerifiedProps, type FilterSelectOption, type FilterVariant, GoogleIcon, type GoogleIconProps, type HeaderTabItem, HeaderTabs, type HeaderTabsProps, HeaderTitle, type HeaderTitleProps, JoinedLabel, type JoinedLabelProps,
|
|
359
|
+
export { AppSidebar, type AppSidebarProps, AvatarUser, type AvatarUserProps, type ColumnMetaCustom, DataTable, DataTableContentBody, type DataTableContentBodyProps, DataTableContentHeader, type DataTableContentHeaderProps, type DataTableFeatures, DataTableFooterEntries, type DataTableFooterEntriesProps, DataTableFooterPagination, type DataTableFooterPaginationProps, DataTableHeaderAdd, type DataTableHeaderAddProps, DataTableHeaderDownload, type DataTableHeaderDownloadProps, DataTableHeaderFilter, type DataTableHeaderFilterProps, DataTableHeaderRefresh, DataTableHeaderSearch, type DataTableHeaderSearchProps, DataTableHeaderSort, type DataTableHeaderSortProps, DataTableHeaderToggle, type DataTableHeaderToggleProps, type DataTableProps, EmailLabel, type EmailLabelProps, EmailVerified, type EmailVerifiedProps, type FilterSelectOption, type FilterVariant, GoogleIcon, type GoogleIconProps, type HeaderTabItem, HeaderTabs, type HeaderTabsProps, HeaderTitle, type HeaderTitleProps, JoinedLabel, type JoinedLabelProps, type NavItem, type OrganizationItem, type RowActionItem, RowActions, type RowActionsProps, StateEmpty, type StateEmptyProps, UserRole, type UserRoleProps, UserStatus, type UserStatusProps, exportToCSV, exportToPDF, exportToXLSX, features, getTableExportData, printTable, smartFilterFn };
|
package/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,6 @@ import { ReactNode, ComponentProps } from 'react';
|
|
|
3
3
|
import * as _tanstack_react_table from '@tanstack/react-table';
|
|
4
4
|
import { RowData, Table, ColumnDef, ColumnFiltersState, Row, SortingState, ColumnVisibilityState } from '@tanstack/react-table';
|
|
5
5
|
export { ColumnDef, ColumnFiltersState, ColumnVisibilityState, FilterFn, Row, RowData, SortingState, Table, flexRender, useTable } from '@tanstack/react-table';
|
|
6
|
-
import { z } from 'zod';
|
|
7
6
|
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
8
7
|
import { Button as Button$1 } from '@base-ui/react/button';
|
|
9
8
|
import { VariantProps } from 'class-variance-authority';
|
|
@@ -338,21 +337,6 @@ declare const HeaderTitle: react.NamedExoticComponent<HeaderTitleProps>;
|
|
|
338
337
|
type GoogleIconProps = ComponentProps<"svg">;
|
|
339
338
|
declare function GoogleIcon({ className, ...props }: GoogleIconProps): react.JSX.Element;
|
|
340
339
|
|
|
341
|
-
declare const loginSchema: z.ZodObject<{
|
|
342
|
-
email: z.ZodPipe<z.ZodString, z.ZodEmail>;
|
|
343
|
-
password: z.ZodString;
|
|
344
|
-
}, z.core.$strip>;
|
|
345
|
-
type LoginValues = z.infer<typeof loginSchema>;
|
|
346
|
-
type LoginSubmitResult = {
|
|
347
|
-
error?: string;
|
|
348
|
-
} | undefined;
|
|
349
|
-
interface LoginServerProps {
|
|
350
|
-
onSubmit?: (values: LoginValues) => Promise<LoginSubmitResult> | LoginSubmitResult;
|
|
351
|
-
onGoogleSignIn?: () => Promise<void> | void;
|
|
352
|
-
isSubmitting?: boolean;
|
|
353
|
-
}
|
|
354
|
-
declare function LoginServer({ onSubmit, onGoogleSignIn, isSubmitting: externalIsSubmitting, }: LoginServerProps): react.JSX.Element;
|
|
355
|
-
|
|
356
340
|
declare const buttonVariants: (props?: ({
|
|
357
341
|
variant?: "default" | "outline" | "secondary" | "ghost" | "destructive" | "link" | null | undefined;
|
|
358
342
|
size?: "default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
|
|
@@ -372,4 +356,4 @@ interface StateEmptyProps {
|
|
|
372
356
|
}
|
|
373
357
|
declare const StateEmpty: react.NamedExoticComponent<StateEmptyProps>;
|
|
374
358
|
|
|
375
|
-
export { AppSidebar, type AppSidebarProps, AvatarUser, type AvatarUserProps, type ColumnMetaCustom, DataTable, DataTableContentBody, type DataTableContentBodyProps, DataTableContentHeader, type DataTableContentHeaderProps, type DataTableFeatures, DataTableFooterEntries, type DataTableFooterEntriesProps, DataTableFooterPagination, type DataTableFooterPaginationProps, DataTableHeaderAdd, type DataTableHeaderAddProps, DataTableHeaderDownload, type DataTableHeaderDownloadProps, DataTableHeaderFilter, type DataTableHeaderFilterProps, DataTableHeaderRefresh, DataTableHeaderSearch, type DataTableHeaderSearchProps, DataTableHeaderSort, type DataTableHeaderSortProps, DataTableHeaderToggle, type DataTableHeaderToggleProps, type DataTableProps, EmailLabel, type EmailLabelProps, EmailVerified, type EmailVerifiedProps, type FilterSelectOption, type FilterVariant, GoogleIcon, type GoogleIconProps, type HeaderTabItem, HeaderTabs, type HeaderTabsProps, HeaderTitle, type HeaderTitleProps, JoinedLabel, type JoinedLabelProps,
|
|
359
|
+
export { AppSidebar, type AppSidebarProps, AvatarUser, type AvatarUserProps, type ColumnMetaCustom, DataTable, DataTableContentBody, type DataTableContentBodyProps, DataTableContentHeader, type DataTableContentHeaderProps, type DataTableFeatures, DataTableFooterEntries, type DataTableFooterEntriesProps, DataTableFooterPagination, type DataTableFooterPaginationProps, DataTableHeaderAdd, type DataTableHeaderAddProps, DataTableHeaderDownload, type DataTableHeaderDownloadProps, DataTableHeaderFilter, type DataTableHeaderFilterProps, DataTableHeaderRefresh, DataTableHeaderSearch, type DataTableHeaderSearchProps, DataTableHeaderSort, type DataTableHeaderSortProps, DataTableHeaderToggle, type DataTableHeaderToggleProps, type DataTableProps, EmailLabel, type EmailLabelProps, EmailVerified, type EmailVerifiedProps, type FilterSelectOption, type FilterVariant, GoogleIcon, type GoogleIconProps, type HeaderTabItem, HeaderTabs, type HeaderTabsProps, HeaderTitle, type HeaderTitleProps, JoinedLabel, type JoinedLabelProps, type NavItem, type OrganizationItem, type RowActionItem, RowActions, type RowActionsProps, StateEmpty, type StateEmptyProps, UserRole, type UserRoleProps, UserStatus, type UserStatusProps, exportToCSV, exportToPDF, exportToXLSX, features, getTableExportData, printTable, smartFilterFn };
|
package/dist/index.js
CHANGED
|
@@ -80,7 +80,6 @@ __export(index_exports, {
|
|
|
80
80
|
HeaderTabs: () => HeaderTabs,
|
|
81
81
|
HeaderTitle: () => HeaderTitle,
|
|
82
82
|
JoinedLabel: () => JoinedLabel,
|
|
83
|
-
LoginServer: () => LoginServer,
|
|
84
83
|
RowActions: () => RowActions,
|
|
85
84
|
StateEmpty: () => StateEmpty,
|
|
86
85
|
UserRole: () => UserRole,
|
|
@@ -91,7 +90,6 @@ __export(index_exports, {
|
|
|
91
90
|
features: () => features,
|
|
92
91
|
flexRender: () => import_react_table4.flexRender,
|
|
93
92
|
getTableExportData: () => getTableExportData,
|
|
94
|
-
loginSchema: () => loginSchema,
|
|
95
93
|
printTable: () => printTable,
|
|
96
94
|
smartFilterFn: () => smartFilterFn,
|
|
97
95
|
useTable: () => import_react_table4.useTable
|
|
@@ -3721,466 +3719,6 @@ function GoogleIcon(_a) {
|
|
|
3721
3719
|
})
|
|
3722
3720
|
);
|
|
3723
3721
|
}
|
|
3724
|
-
|
|
3725
|
-
// src/components/composed/login-server.tsx
|
|
3726
|
-
var import_zod = require("@hookform/resolvers/zod");
|
|
3727
|
-
var import_cn24 = require("cn");
|
|
3728
|
-
var import_lucide_react23 = require("lucide-react");
|
|
3729
|
-
var import_link3 = __toESM(require("next/link"));
|
|
3730
|
-
var import_react16 = require("react");
|
|
3731
|
-
var import_react_hook_form = require("react-hook-form");
|
|
3732
|
-
var import_zod2 = require("zod");
|
|
3733
|
-
|
|
3734
|
-
// src/components/ui/card.tsx
|
|
3735
|
-
var import_cn20 = require("cn");
|
|
3736
|
-
var import_jsx_runtime42 = require("react/jsx-runtime");
|
|
3737
|
-
function Card(_a) {
|
|
3738
|
-
var _b = _a, {
|
|
3739
|
-
className,
|
|
3740
|
-
size = "default"
|
|
3741
|
-
} = _b, props = __objRest(_b, [
|
|
3742
|
-
"className",
|
|
3743
|
-
"size"
|
|
3744
|
-
]);
|
|
3745
|
-
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
3746
|
-
"div",
|
|
3747
|
-
__spreadValues({
|
|
3748
|
-
"data-slot": "card",
|
|
3749
|
-
"data-size": size,
|
|
3750
|
-
className: (0, import_cn20.cn)(
|
|
3751
|
-
"group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-lg bg-card py-(--card-spacing) text-xs/relaxed text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] *:[img:first-child]:rounded-t-lg *:[img:last-child]:rounded-b-lg",
|
|
3752
|
-
className
|
|
3753
|
-
)
|
|
3754
|
-
}, props)
|
|
3755
|
-
);
|
|
3756
|
-
}
|
|
3757
|
-
function CardHeader(_a) {
|
|
3758
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3759
|
-
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
3760
|
-
"div",
|
|
3761
|
-
__spreadValues({
|
|
3762
|
-
"data-slot": "card-header",
|
|
3763
|
-
className: (0, import_cn20.cn)(
|
|
3764
|
-
"group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-lg px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)",
|
|
3765
|
-
className
|
|
3766
|
-
)
|
|
3767
|
-
}, props)
|
|
3768
|
-
);
|
|
3769
|
-
}
|
|
3770
|
-
function CardTitle(_a) {
|
|
3771
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3772
|
-
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
3773
|
-
"div",
|
|
3774
|
-
__spreadValues({
|
|
3775
|
-
"data-slot": "card-title",
|
|
3776
|
-
className: (0, import_cn20.cn)("font-heading text-sm font-medium", className)
|
|
3777
|
-
}, props)
|
|
3778
|
-
);
|
|
3779
|
-
}
|
|
3780
|
-
function CardDescription(_a) {
|
|
3781
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3782
|
-
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
3783
|
-
"div",
|
|
3784
|
-
__spreadValues({
|
|
3785
|
-
"data-slot": "card-description",
|
|
3786
|
-
className: (0, import_cn20.cn)("text-xs/relaxed text-muted-foreground", className)
|
|
3787
|
-
}, props)
|
|
3788
|
-
);
|
|
3789
|
-
}
|
|
3790
|
-
function CardContent(_a) {
|
|
3791
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3792
|
-
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
3793
|
-
"div",
|
|
3794
|
-
__spreadValues({
|
|
3795
|
-
"data-slot": "card-content",
|
|
3796
|
-
className: (0, import_cn20.cn)("px-(--card-spacing)", className)
|
|
3797
|
-
}, props)
|
|
3798
|
-
);
|
|
3799
|
-
}
|
|
3800
|
-
|
|
3801
|
-
// src/components/ui/field.tsx
|
|
3802
|
-
var import_class_variance_authority6 = require("class-variance-authority");
|
|
3803
|
-
var import_cn22 = require("cn");
|
|
3804
|
-
var import_react15 = require("react");
|
|
3805
|
-
|
|
3806
|
-
// src/components/ui/label.tsx
|
|
3807
|
-
var import_cn21 = require("cn");
|
|
3808
|
-
var import_jsx_runtime43 = require("react/jsx-runtime");
|
|
3809
|
-
function Label(_a) {
|
|
3810
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3811
|
-
return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
3812
|
-
"label",
|
|
3813
|
-
__spreadValues({
|
|
3814
|
-
"data-slot": "label",
|
|
3815
|
-
className: (0, import_cn21.cn)(
|
|
3816
|
-
"flex items-center gap-2 text-xs/relaxed leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
|
|
3817
|
-
className
|
|
3818
|
-
)
|
|
3819
|
-
}, props)
|
|
3820
|
-
);
|
|
3821
|
-
}
|
|
3822
|
-
|
|
3823
|
-
// src/components/ui/field.tsx
|
|
3824
|
-
var import_jsx_runtime44 = require("react/jsx-runtime");
|
|
3825
|
-
function FieldGroup(_a) {
|
|
3826
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3827
|
-
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
3828
|
-
"div",
|
|
3829
|
-
__spreadValues({
|
|
3830
|
-
"data-slot": "field-group",
|
|
3831
|
-
className: (0, import_cn22.cn)(
|
|
3832
|
-
"group/field-group @container/field-group flex w-full flex-col gap-4 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4",
|
|
3833
|
-
className
|
|
3834
|
-
)
|
|
3835
|
-
}, props)
|
|
3836
|
-
);
|
|
3837
|
-
}
|
|
3838
|
-
var fieldVariants = (0, import_class_variance_authority6.cva)(
|
|
3839
|
-
"group/field flex w-full gap-2 data-[invalid=true]:text-destructive",
|
|
3840
|
-
{
|
|
3841
|
-
variants: {
|
|
3842
|
-
orientation: {
|
|
3843
|
-
vertical: "flex-col *:w-full [&>.sr-only]:w-auto",
|
|
3844
|
-
horizontal: "flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px",
|
|
3845
|
-
responsive: "flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"
|
|
3846
|
-
}
|
|
3847
|
-
},
|
|
3848
|
-
defaultVariants: {
|
|
3849
|
-
orientation: "vertical"
|
|
3850
|
-
}
|
|
3851
|
-
}
|
|
3852
|
-
);
|
|
3853
|
-
function Field(_a) {
|
|
3854
|
-
var _b = _a, {
|
|
3855
|
-
className,
|
|
3856
|
-
orientation = "vertical"
|
|
3857
|
-
} = _b, props = __objRest(_b, [
|
|
3858
|
-
"className",
|
|
3859
|
-
"orientation"
|
|
3860
|
-
]);
|
|
3861
|
-
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
3862
|
-
"div",
|
|
3863
|
-
__spreadValues({
|
|
3864
|
-
role: "group",
|
|
3865
|
-
"data-slot": "field",
|
|
3866
|
-
"data-orientation": orientation,
|
|
3867
|
-
className: (0, import_cn22.cn)(fieldVariants({ orientation }), className)
|
|
3868
|
-
}, props)
|
|
3869
|
-
);
|
|
3870
|
-
}
|
|
3871
|
-
function FieldLabel(_a) {
|
|
3872
|
-
var _b = _a, {
|
|
3873
|
-
className
|
|
3874
|
-
} = _b, props = __objRest(_b, [
|
|
3875
|
-
"className"
|
|
3876
|
-
]);
|
|
3877
|
-
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
3878
|
-
Label,
|
|
3879
|
-
__spreadValues({
|
|
3880
|
-
"data-slot": "field-label",
|
|
3881
|
-
className: (0, import_cn22.cn)(
|
|
3882
|
-
"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border has-[>[data-slot=field]]:not-has-[:disabled,[data-disabled]]:hover:bg-input/40 has-[>[data-slot=field]]:has-[:focus-visible]:border-ring has-[>[data-slot=field]]:has-[:focus-visible]:ring-2 has-[>[data-slot=field]]:has-[:focus-visible]:ring-ring/30 *:data-[slot=field]:p-2 dark:has-data-checked:bg-primary/10",
|
|
3883
|
-
"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col",
|
|
3884
|
-
className
|
|
3885
|
-
)
|
|
3886
|
-
}, props)
|
|
3887
|
-
);
|
|
3888
|
-
}
|
|
3889
|
-
function FieldDescription(_a) {
|
|
3890
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3891
|
-
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
3892
|
-
"p",
|
|
3893
|
-
__spreadValues({
|
|
3894
|
-
"data-slot": "field-description",
|
|
3895
|
-
className: (0, import_cn22.cn)(
|
|
3896
|
-
"text-left text-xs/relaxed leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5",
|
|
3897
|
-
"last:mt-0 nth-last-2:-mt-1",
|
|
3898
|
-
"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
|
|
3899
|
-
className
|
|
3900
|
-
)
|
|
3901
|
-
}, props)
|
|
3902
|
-
);
|
|
3903
|
-
}
|
|
3904
|
-
function FieldSeparator(_a) {
|
|
3905
|
-
var _b = _a, {
|
|
3906
|
-
children,
|
|
3907
|
-
className
|
|
3908
|
-
} = _b, props = __objRest(_b, [
|
|
3909
|
-
"children",
|
|
3910
|
-
"className"
|
|
3911
|
-
]);
|
|
3912
|
-
return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
|
|
3913
|
-
"div",
|
|
3914
|
-
__spreadProps(__spreadValues({
|
|
3915
|
-
"data-slot": "field-separator",
|
|
3916
|
-
"data-content": !!children,
|
|
3917
|
-
className: (0, import_cn22.cn)(
|
|
3918
|
-
"relative -my-2 h-5 text-xs/relaxed group-data-[variant=outline]/field-group:-mb-2",
|
|
3919
|
-
className
|
|
3920
|
-
)
|
|
3921
|
-
}, props), {
|
|
3922
|
-
children: [
|
|
3923
|
-
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Separator, { className: "absolute inset-0 top-1/2" }),
|
|
3924
|
-
children && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
3925
|
-
"span",
|
|
3926
|
-
{
|
|
3927
|
-
className: "relative mx-auto block w-fit bg-background px-2 text-muted-foreground",
|
|
3928
|
-
"data-slot": "field-separator-content",
|
|
3929
|
-
children
|
|
3930
|
-
}
|
|
3931
|
-
)
|
|
3932
|
-
]
|
|
3933
|
-
})
|
|
3934
|
-
);
|
|
3935
|
-
}
|
|
3936
|
-
function FieldError(_a) {
|
|
3937
|
-
var _b = _a, {
|
|
3938
|
-
className,
|
|
3939
|
-
children,
|
|
3940
|
-
errors
|
|
3941
|
-
} = _b, props = __objRest(_b, [
|
|
3942
|
-
"className",
|
|
3943
|
-
"children",
|
|
3944
|
-
"errors"
|
|
3945
|
-
]);
|
|
3946
|
-
const content = (0, import_react15.useMemo)(() => {
|
|
3947
|
-
var _a2;
|
|
3948
|
-
if (children) {
|
|
3949
|
-
return children;
|
|
3950
|
-
}
|
|
3951
|
-
if (!(errors == null ? void 0 : errors.length)) {
|
|
3952
|
-
return null;
|
|
3953
|
-
}
|
|
3954
|
-
const uniqueErrors = [
|
|
3955
|
-
...new Map(errors.map((error) => [error == null ? void 0 : error.message, error])).values()
|
|
3956
|
-
];
|
|
3957
|
-
if ((uniqueErrors == null ? void 0 : uniqueErrors.length) === 1) {
|
|
3958
|
-
return (_a2 = uniqueErrors[0]) == null ? void 0 : _a2.message;
|
|
3959
|
-
}
|
|
3960
|
-
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: uniqueErrors.map(
|
|
3961
|
-
(error, index) => (error == null ? void 0 : error.message) && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("li", { children: error.message }, index)
|
|
3962
|
-
) });
|
|
3963
|
-
}, [children, errors]);
|
|
3964
|
-
if (!content) {
|
|
3965
|
-
return null;
|
|
3966
|
-
}
|
|
3967
|
-
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
3968
|
-
"div",
|
|
3969
|
-
__spreadProps(__spreadValues({
|
|
3970
|
-
role: "alert",
|
|
3971
|
-
"data-slot": "field-error",
|
|
3972
|
-
className: (0, import_cn22.cn)("text-xs/relaxed font-normal text-destructive", className)
|
|
3973
|
-
}, props), {
|
|
3974
|
-
children: content
|
|
3975
|
-
})
|
|
3976
|
-
);
|
|
3977
|
-
}
|
|
3978
|
-
|
|
3979
|
-
// src/components/ui/toast.tsx
|
|
3980
|
-
var import_toast = require("@base-ui/react/toast");
|
|
3981
|
-
var import_cn23 = require("cn");
|
|
3982
|
-
var import_lucide_react22 = require("lucide-react");
|
|
3983
|
-
var import_jsx_runtime45 = require("react/jsx-runtime");
|
|
3984
|
-
var toast = import_toast.Toast.createToastManager();
|
|
3985
|
-
var createToastManager = import_toast.Toast.createToastManager;
|
|
3986
|
-
var useToastManager = import_toast.Toast.useToastManager;
|
|
3987
|
-
|
|
3988
|
-
// src/components/composed/login-server.tsx
|
|
3989
|
-
var import_jsx_runtime46 = require("react/jsx-runtime");
|
|
3990
|
-
var loginSchema = import_zod2.z.object({
|
|
3991
|
-
email: import_zod2.z.string().trim().toLowerCase().min(1, "Email is required").max(254, "Email is too long").pipe(import_zod2.z.email("Invalid email format")),
|
|
3992
|
-
password: import_zod2.z.string().min(1, "Password is required").min(8, "Password must be at least 8 characters").max(128, "Password must not exceed 128 characters")
|
|
3993
|
-
});
|
|
3994
|
-
function LoginServer({
|
|
3995
|
-
onSubmit,
|
|
3996
|
-
onGoogleSignIn,
|
|
3997
|
-
isSubmitting: externalIsSubmitting
|
|
3998
|
-
}) {
|
|
3999
|
-
const [isRedirecting, setIsRedirecting] = (0, import_react16.useState)(false);
|
|
4000
|
-
const [isGoogleLoading, setIsGoogleLoading] = (0, import_react16.useState)(false);
|
|
4001
|
-
const form = (0, import_react_hook_form.useForm)({
|
|
4002
|
-
resolver: (0, import_zod.zodResolver)(loginSchema),
|
|
4003
|
-
defaultValues: {
|
|
4004
|
-
email: "",
|
|
4005
|
-
password: ""
|
|
4006
|
-
}
|
|
4007
|
-
});
|
|
4008
|
-
const isPending = externalIsSubmitting != null ? externalIsSubmitting : form.formState.isSubmitting || isRedirecting || isGoogleLoading;
|
|
4009
|
-
const handleFormSubmit = async (values) => {
|
|
4010
|
-
try {
|
|
4011
|
-
if (!onSubmit) {
|
|
4012
|
-
toast.add({
|
|
4013
|
-
description: "Login action handler is not configured."
|
|
4014
|
-
});
|
|
4015
|
-
return;
|
|
4016
|
-
}
|
|
4017
|
-
const res = await onSubmit(values);
|
|
4018
|
-
if (res && typeof res === "object" && "error" in res && typeof res.error === "string" && res.error) {
|
|
4019
|
-
setIsRedirecting(false);
|
|
4020
|
-
toast.add({ description: res.error });
|
|
4021
|
-
return;
|
|
4022
|
-
}
|
|
4023
|
-
setIsRedirecting(true);
|
|
4024
|
-
} catch (e) {
|
|
4025
|
-
setIsRedirecting(false);
|
|
4026
|
-
toast.add({ description: "Unable to process your login request." });
|
|
4027
|
-
}
|
|
4028
|
-
};
|
|
4029
|
-
const handleGoogleSignIn = async () => {
|
|
4030
|
-
if (isPending) return;
|
|
4031
|
-
if (!onGoogleSignIn) {
|
|
4032
|
-
toast.add({
|
|
4033
|
-
description: "Google Sign-In is not currently available."
|
|
4034
|
-
});
|
|
4035
|
-
return;
|
|
4036
|
-
}
|
|
4037
|
-
try {
|
|
4038
|
-
setIsGoogleLoading(true);
|
|
4039
|
-
await onGoogleSignIn();
|
|
4040
|
-
} catch (e) {
|
|
4041
|
-
setIsGoogleLoading(false);
|
|
4042
|
-
toast.add({ description: "Google Sign-In failed to initialize." });
|
|
4043
|
-
}
|
|
4044
|
-
};
|
|
4045
|
-
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "flex w-full max-w-sm flex-col gap-6", children: [
|
|
4046
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "flex items-center gap-2 self-center font-medium", children: [
|
|
4047
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react23.GalleryVerticalEndIcon, { className: "size-4" }) }),
|
|
4048
|
-
"Prediktif"
|
|
4049
|
-
] }),
|
|
4050
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "flex flex-col gap-6", children: [
|
|
4051
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(Card, { children: [
|
|
4052
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(CardHeader, { className: "text-center", children: [
|
|
4053
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(CardTitle, { children: "Welcome back" }),
|
|
4054
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(CardDescription, { children: "Login with your Google account" })
|
|
4055
|
-
] }),
|
|
4056
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(CardContent, { children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("form", { onSubmit: form.handleSubmit(handleFormSubmit), noValidate: true, children: /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(FieldGroup, { children: [
|
|
4057
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Field, { children: /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(
|
|
4058
|
-
Button,
|
|
4059
|
-
{
|
|
4060
|
-
type: "button",
|
|
4061
|
-
variant: "outline",
|
|
4062
|
-
disabled: isPending,
|
|
4063
|
-
onClick: handleGoogleSignIn,
|
|
4064
|
-
children: [
|
|
4065
|
-
isGoogleLoading ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
4066
|
-
import_lucide_react23.LoaderCircleIcon,
|
|
4067
|
-
{
|
|
4068
|
-
className: "animate-spin",
|
|
4069
|
-
"data-icon": "inline-start"
|
|
4070
|
-
}
|
|
4071
|
-
) : /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(GoogleIcon, { className: "size-4 shrink-0" }),
|
|
4072
|
-
"Login with Google"
|
|
4073
|
-
]
|
|
4074
|
-
}
|
|
4075
|
-
) }),
|
|
4076
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(FieldSeparator, { className: "*:data-[slot=field-separator-content]:bg-card", children: "Or continue with" }),
|
|
4077
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
4078
|
-
import_react_hook_form.Controller,
|
|
4079
|
-
{
|
|
4080
|
-
name: "email",
|
|
4081
|
-
control: form.control,
|
|
4082
|
-
render: ({ field, fieldState }) => /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(Field, { "data-invalid": fieldState.invalid, children: [
|
|
4083
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(FieldLabel, { htmlFor: field.name, children: "Email" }),
|
|
4084
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
4085
|
-
Input,
|
|
4086
|
-
__spreadProps(__spreadValues({}, field), {
|
|
4087
|
-
id: field.name,
|
|
4088
|
-
"aria-invalid": fieldState.invalid,
|
|
4089
|
-
disabled: isPending,
|
|
4090
|
-
placeholder: "m@example.com",
|
|
4091
|
-
type: "email",
|
|
4092
|
-
autoComplete: "email"
|
|
4093
|
-
})
|
|
4094
|
-
),
|
|
4095
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(FieldDescription, { children: "Enter the email address associated with your account." }),
|
|
4096
|
-
fieldState.invalid && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(FieldError, { errors: [fieldState.error] })
|
|
4097
|
-
] })
|
|
4098
|
-
}
|
|
4099
|
-
),
|
|
4100
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
4101
|
-
import_react_hook_form.Controller,
|
|
4102
|
-
{
|
|
4103
|
-
name: "password",
|
|
4104
|
-
control: form.control,
|
|
4105
|
-
render: ({ field, fieldState }) => /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(Field, { "data-invalid": fieldState.invalid, children: [
|
|
4106
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "flex items-center", children: [
|
|
4107
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(FieldLabel, { htmlFor: field.name, children: "Password" }),
|
|
4108
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
4109
|
-
import_link3.default,
|
|
4110
|
-
{
|
|
4111
|
-
href: "/forgot-password",
|
|
4112
|
-
className: "ml-auto inline-block underline-offset-4 hover:underline",
|
|
4113
|
-
children: "Forgot your password?"
|
|
4114
|
-
}
|
|
4115
|
-
)
|
|
4116
|
-
] }),
|
|
4117
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
4118
|
-
Input,
|
|
4119
|
-
__spreadProps(__spreadValues({}, field), {
|
|
4120
|
-
id: field.name,
|
|
4121
|
-
"aria-invalid": fieldState.invalid,
|
|
4122
|
-
disabled: isPending,
|
|
4123
|
-
placeholder: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022",
|
|
4124
|
-
type: "password",
|
|
4125
|
-
autoComplete: "current-password"
|
|
4126
|
-
})
|
|
4127
|
-
),
|
|
4128
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(FieldDescription, { children: "Enter your account password." }),
|
|
4129
|
-
fieldState.invalid && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(FieldError, { errors: [fieldState.error] })
|
|
4130
|
-
] })
|
|
4131
|
-
}
|
|
4132
|
-
),
|
|
4133
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(Field, { children: [
|
|
4134
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(
|
|
4135
|
-
Button,
|
|
4136
|
-
{
|
|
4137
|
-
type: "submit",
|
|
4138
|
-
disabled: isPending,
|
|
4139
|
-
className: "w-full",
|
|
4140
|
-
children: [
|
|
4141
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
4142
|
-
import_lucide_react23.LoaderCircleIcon,
|
|
4143
|
-
{
|
|
4144
|
-
className: (0, import_cn24.cn)(
|
|
4145
|
-
"animate-spin",
|
|
4146
|
-
isPending && !isGoogleLoading ? "block" : "hidden"
|
|
4147
|
-
),
|
|
4148
|
-
"data-icon": "inline-start"
|
|
4149
|
-
}
|
|
4150
|
-
),
|
|
4151
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
4152
|
-
import_lucide_react23.LogInIcon,
|
|
4153
|
-
{
|
|
4154
|
-
className: (0, import_cn24.cn)(
|
|
4155
|
-
!isPending || isGoogleLoading ? "block" : "hidden"
|
|
4156
|
-
),
|
|
4157
|
-
"data-icon": "inline-start"
|
|
4158
|
-
}
|
|
4159
|
-
),
|
|
4160
|
-
isRedirecting ? "Redirecting to application..." : form.formState.isSubmitting ? "Signing in..." : "Login"
|
|
4161
|
-
]
|
|
4162
|
-
}
|
|
4163
|
-
),
|
|
4164
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(FieldDescription, { className: "text-center", children: [
|
|
4165
|
-
"Don't have an account?",
|
|
4166
|
-
" ",
|
|
4167
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_link3.default, { href: "/register", children: "Sign up" })
|
|
4168
|
-
] })
|
|
4169
|
-
] })
|
|
4170
|
-
] }) }) })
|
|
4171
|
-
] }),
|
|
4172
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(FieldDescription, { className: "px-6 text-center", children: [
|
|
4173
|
-
"By clicking continue, you agree to our",
|
|
4174
|
-
" ",
|
|
4175
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_link3.default, { href: "/terms", children: "Terms of Service" }),
|
|
4176
|
-
" and",
|
|
4177
|
-
" ",
|
|
4178
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_link3.default, { href: "/privacy", children: "Privacy Policy" }),
|
|
4179
|
-
"."
|
|
4180
|
-
] })
|
|
4181
|
-
] })
|
|
4182
|
-
] }) });
|
|
4183
|
-
}
|
|
4184
3722
|
// Annotate the CommonJS export names for ESM import in node:
|
|
4185
3723
|
0 && (module.exports = {
|
|
4186
3724
|
AppSidebar,
|
|
@@ -4203,7 +3741,6 @@ function LoginServer({
|
|
|
4203
3741
|
HeaderTabs,
|
|
4204
3742
|
HeaderTitle,
|
|
4205
3743
|
JoinedLabel,
|
|
4206
|
-
LoginServer,
|
|
4207
3744
|
RowActions,
|
|
4208
3745
|
StateEmpty,
|
|
4209
3746
|
UserRole,
|
|
@@ -4214,7 +3751,6 @@ function LoginServer({
|
|
|
4214
3751
|
features,
|
|
4215
3752
|
flexRender,
|
|
4216
3753
|
getTableExportData,
|
|
4217
|
-
loginSchema,
|
|
4218
3754
|
printTable,
|
|
4219
3755
|
smartFilterFn,
|
|
4220
3756
|
useTable
|
package/dist/index.mjs
CHANGED
|
@@ -3691,477 +3691,6 @@ function GoogleIcon(_a) {
|
|
|
3691
3691
|
})
|
|
3692
3692
|
);
|
|
3693
3693
|
}
|
|
3694
|
-
|
|
3695
|
-
// src/components/composed/login-server.tsx
|
|
3696
|
-
import { zodResolver } from "@hookform/resolvers/zod";
|
|
3697
|
-
import { cn as cn24 } from "cn";
|
|
3698
|
-
import {
|
|
3699
|
-
GalleryVerticalEndIcon,
|
|
3700
|
-
LoaderCircleIcon,
|
|
3701
|
-
LogInIcon
|
|
3702
|
-
} from "lucide-react";
|
|
3703
|
-
import Link3 from "next/link";
|
|
3704
|
-
import { useState as useState6 } from "react";
|
|
3705
|
-
import { Controller, useForm } from "react-hook-form";
|
|
3706
|
-
import { z } from "zod";
|
|
3707
|
-
|
|
3708
|
-
// src/components/ui/card.tsx
|
|
3709
|
-
import { cn as cn20 } from "cn";
|
|
3710
|
-
import { jsx as jsx42 } from "react/jsx-runtime";
|
|
3711
|
-
function Card(_a) {
|
|
3712
|
-
var _b = _a, {
|
|
3713
|
-
className,
|
|
3714
|
-
size = "default"
|
|
3715
|
-
} = _b, props = __objRest(_b, [
|
|
3716
|
-
"className",
|
|
3717
|
-
"size"
|
|
3718
|
-
]);
|
|
3719
|
-
return /* @__PURE__ */ jsx42(
|
|
3720
|
-
"div",
|
|
3721
|
-
__spreadValues({
|
|
3722
|
-
"data-slot": "card",
|
|
3723
|
-
"data-size": size,
|
|
3724
|
-
className: cn20(
|
|
3725
|
-
"group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-lg bg-card py-(--card-spacing) text-xs/relaxed text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] *:[img:first-child]:rounded-t-lg *:[img:last-child]:rounded-b-lg",
|
|
3726
|
-
className
|
|
3727
|
-
)
|
|
3728
|
-
}, props)
|
|
3729
|
-
);
|
|
3730
|
-
}
|
|
3731
|
-
function CardHeader(_a) {
|
|
3732
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3733
|
-
return /* @__PURE__ */ jsx42(
|
|
3734
|
-
"div",
|
|
3735
|
-
__spreadValues({
|
|
3736
|
-
"data-slot": "card-header",
|
|
3737
|
-
className: cn20(
|
|
3738
|
-
"group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-lg px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)",
|
|
3739
|
-
className
|
|
3740
|
-
)
|
|
3741
|
-
}, props)
|
|
3742
|
-
);
|
|
3743
|
-
}
|
|
3744
|
-
function CardTitle(_a) {
|
|
3745
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3746
|
-
return /* @__PURE__ */ jsx42(
|
|
3747
|
-
"div",
|
|
3748
|
-
__spreadValues({
|
|
3749
|
-
"data-slot": "card-title",
|
|
3750
|
-
className: cn20("font-heading text-sm font-medium", className)
|
|
3751
|
-
}, props)
|
|
3752
|
-
);
|
|
3753
|
-
}
|
|
3754
|
-
function CardDescription(_a) {
|
|
3755
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3756
|
-
return /* @__PURE__ */ jsx42(
|
|
3757
|
-
"div",
|
|
3758
|
-
__spreadValues({
|
|
3759
|
-
"data-slot": "card-description",
|
|
3760
|
-
className: cn20("text-xs/relaxed text-muted-foreground", className)
|
|
3761
|
-
}, props)
|
|
3762
|
-
);
|
|
3763
|
-
}
|
|
3764
|
-
function CardContent(_a) {
|
|
3765
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3766
|
-
return /* @__PURE__ */ jsx42(
|
|
3767
|
-
"div",
|
|
3768
|
-
__spreadValues({
|
|
3769
|
-
"data-slot": "card-content",
|
|
3770
|
-
className: cn20("px-(--card-spacing)", className)
|
|
3771
|
-
}, props)
|
|
3772
|
-
);
|
|
3773
|
-
}
|
|
3774
|
-
|
|
3775
|
-
// src/components/ui/field.tsx
|
|
3776
|
-
import { cva as cva6 } from "class-variance-authority";
|
|
3777
|
-
import { cn as cn22 } from "cn";
|
|
3778
|
-
import { useMemo as useMemo4 } from "react";
|
|
3779
|
-
|
|
3780
|
-
// src/components/ui/label.tsx
|
|
3781
|
-
import { cn as cn21 } from "cn";
|
|
3782
|
-
import { jsx as jsx43 } from "react/jsx-runtime";
|
|
3783
|
-
function Label(_a) {
|
|
3784
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3785
|
-
return /* @__PURE__ */ jsx43(
|
|
3786
|
-
"label",
|
|
3787
|
-
__spreadValues({
|
|
3788
|
-
"data-slot": "label",
|
|
3789
|
-
className: cn21(
|
|
3790
|
-
"flex items-center gap-2 text-xs/relaxed leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
|
|
3791
|
-
className
|
|
3792
|
-
)
|
|
3793
|
-
}, props)
|
|
3794
|
-
);
|
|
3795
|
-
}
|
|
3796
|
-
|
|
3797
|
-
// src/components/ui/field.tsx
|
|
3798
|
-
import { jsx as jsx44, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
3799
|
-
function FieldGroup(_a) {
|
|
3800
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3801
|
-
return /* @__PURE__ */ jsx44(
|
|
3802
|
-
"div",
|
|
3803
|
-
__spreadValues({
|
|
3804
|
-
"data-slot": "field-group",
|
|
3805
|
-
className: cn22(
|
|
3806
|
-
"group/field-group @container/field-group flex w-full flex-col gap-4 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4",
|
|
3807
|
-
className
|
|
3808
|
-
)
|
|
3809
|
-
}, props)
|
|
3810
|
-
);
|
|
3811
|
-
}
|
|
3812
|
-
var fieldVariants = cva6(
|
|
3813
|
-
"group/field flex w-full gap-2 data-[invalid=true]:text-destructive",
|
|
3814
|
-
{
|
|
3815
|
-
variants: {
|
|
3816
|
-
orientation: {
|
|
3817
|
-
vertical: "flex-col *:w-full [&>.sr-only]:w-auto",
|
|
3818
|
-
horizontal: "flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px",
|
|
3819
|
-
responsive: "flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"
|
|
3820
|
-
}
|
|
3821
|
-
},
|
|
3822
|
-
defaultVariants: {
|
|
3823
|
-
orientation: "vertical"
|
|
3824
|
-
}
|
|
3825
|
-
}
|
|
3826
|
-
);
|
|
3827
|
-
function Field(_a) {
|
|
3828
|
-
var _b = _a, {
|
|
3829
|
-
className,
|
|
3830
|
-
orientation = "vertical"
|
|
3831
|
-
} = _b, props = __objRest(_b, [
|
|
3832
|
-
"className",
|
|
3833
|
-
"orientation"
|
|
3834
|
-
]);
|
|
3835
|
-
return /* @__PURE__ */ jsx44(
|
|
3836
|
-
"div",
|
|
3837
|
-
__spreadValues({
|
|
3838
|
-
role: "group",
|
|
3839
|
-
"data-slot": "field",
|
|
3840
|
-
"data-orientation": orientation,
|
|
3841
|
-
className: cn22(fieldVariants({ orientation }), className)
|
|
3842
|
-
}, props)
|
|
3843
|
-
);
|
|
3844
|
-
}
|
|
3845
|
-
function FieldLabel(_a) {
|
|
3846
|
-
var _b = _a, {
|
|
3847
|
-
className
|
|
3848
|
-
} = _b, props = __objRest(_b, [
|
|
3849
|
-
"className"
|
|
3850
|
-
]);
|
|
3851
|
-
return /* @__PURE__ */ jsx44(
|
|
3852
|
-
Label,
|
|
3853
|
-
__spreadValues({
|
|
3854
|
-
"data-slot": "field-label",
|
|
3855
|
-
className: cn22(
|
|
3856
|
-
"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border has-[>[data-slot=field]]:not-has-[:disabled,[data-disabled]]:hover:bg-input/40 has-[>[data-slot=field]]:has-[:focus-visible]:border-ring has-[>[data-slot=field]]:has-[:focus-visible]:ring-2 has-[>[data-slot=field]]:has-[:focus-visible]:ring-ring/30 *:data-[slot=field]:p-2 dark:has-data-checked:bg-primary/10",
|
|
3857
|
-
"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col",
|
|
3858
|
-
className
|
|
3859
|
-
)
|
|
3860
|
-
}, props)
|
|
3861
|
-
);
|
|
3862
|
-
}
|
|
3863
|
-
function FieldDescription(_a) {
|
|
3864
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3865
|
-
return /* @__PURE__ */ jsx44(
|
|
3866
|
-
"p",
|
|
3867
|
-
__spreadValues({
|
|
3868
|
-
"data-slot": "field-description",
|
|
3869
|
-
className: cn22(
|
|
3870
|
-
"text-left text-xs/relaxed leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5",
|
|
3871
|
-
"last:mt-0 nth-last-2:-mt-1",
|
|
3872
|
-
"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
|
|
3873
|
-
className
|
|
3874
|
-
)
|
|
3875
|
-
}, props)
|
|
3876
|
-
);
|
|
3877
|
-
}
|
|
3878
|
-
function FieldSeparator(_a) {
|
|
3879
|
-
var _b = _a, {
|
|
3880
|
-
children,
|
|
3881
|
-
className
|
|
3882
|
-
} = _b, props = __objRest(_b, [
|
|
3883
|
-
"children",
|
|
3884
|
-
"className"
|
|
3885
|
-
]);
|
|
3886
|
-
return /* @__PURE__ */ jsxs28(
|
|
3887
|
-
"div",
|
|
3888
|
-
__spreadProps(__spreadValues({
|
|
3889
|
-
"data-slot": "field-separator",
|
|
3890
|
-
"data-content": !!children,
|
|
3891
|
-
className: cn22(
|
|
3892
|
-
"relative -my-2 h-5 text-xs/relaxed group-data-[variant=outline]/field-group:-mb-2",
|
|
3893
|
-
className
|
|
3894
|
-
)
|
|
3895
|
-
}, props), {
|
|
3896
|
-
children: [
|
|
3897
|
-
/* @__PURE__ */ jsx44(Separator, { className: "absolute inset-0 top-1/2" }),
|
|
3898
|
-
children && /* @__PURE__ */ jsx44(
|
|
3899
|
-
"span",
|
|
3900
|
-
{
|
|
3901
|
-
className: "relative mx-auto block w-fit bg-background px-2 text-muted-foreground",
|
|
3902
|
-
"data-slot": "field-separator-content",
|
|
3903
|
-
children
|
|
3904
|
-
}
|
|
3905
|
-
)
|
|
3906
|
-
]
|
|
3907
|
-
})
|
|
3908
|
-
);
|
|
3909
|
-
}
|
|
3910
|
-
function FieldError(_a) {
|
|
3911
|
-
var _b = _a, {
|
|
3912
|
-
className,
|
|
3913
|
-
children,
|
|
3914
|
-
errors
|
|
3915
|
-
} = _b, props = __objRest(_b, [
|
|
3916
|
-
"className",
|
|
3917
|
-
"children",
|
|
3918
|
-
"errors"
|
|
3919
|
-
]);
|
|
3920
|
-
const content = useMemo4(() => {
|
|
3921
|
-
var _a2;
|
|
3922
|
-
if (children) {
|
|
3923
|
-
return children;
|
|
3924
|
-
}
|
|
3925
|
-
if (!(errors == null ? void 0 : errors.length)) {
|
|
3926
|
-
return null;
|
|
3927
|
-
}
|
|
3928
|
-
const uniqueErrors = [
|
|
3929
|
-
...new Map(errors.map((error) => [error == null ? void 0 : error.message, error])).values()
|
|
3930
|
-
];
|
|
3931
|
-
if ((uniqueErrors == null ? void 0 : uniqueErrors.length) === 1) {
|
|
3932
|
-
return (_a2 = uniqueErrors[0]) == null ? void 0 : _a2.message;
|
|
3933
|
-
}
|
|
3934
|
-
return /* @__PURE__ */ jsx44("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: uniqueErrors.map(
|
|
3935
|
-
(error, index) => (error == null ? void 0 : error.message) && /* @__PURE__ */ jsx44("li", { children: error.message }, index)
|
|
3936
|
-
) });
|
|
3937
|
-
}, [children, errors]);
|
|
3938
|
-
if (!content) {
|
|
3939
|
-
return null;
|
|
3940
|
-
}
|
|
3941
|
-
return /* @__PURE__ */ jsx44(
|
|
3942
|
-
"div",
|
|
3943
|
-
__spreadProps(__spreadValues({
|
|
3944
|
-
role: "alert",
|
|
3945
|
-
"data-slot": "field-error",
|
|
3946
|
-
className: cn22("text-xs/relaxed font-normal text-destructive", className)
|
|
3947
|
-
}, props), {
|
|
3948
|
-
children: content
|
|
3949
|
-
})
|
|
3950
|
-
);
|
|
3951
|
-
}
|
|
3952
|
-
|
|
3953
|
-
// src/components/ui/toast.tsx
|
|
3954
|
-
import { Toast as ToastPrimitive } from "@base-ui/react/toast";
|
|
3955
|
-
import { cn as cn23 } from "cn";
|
|
3956
|
-
import {
|
|
3957
|
-
CircleCheckIcon,
|
|
3958
|
-
InfoIcon,
|
|
3959
|
-
Loader2Icon,
|
|
3960
|
-
OctagonXIcon,
|
|
3961
|
-
TriangleAlertIcon,
|
|
3962
|
-
XIcon as XIcon3
|
|
3963
|
-
} from "lucide-react";
|
|
3964
|
-
import { jsx as jsx45, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
3965
|
-
var toast = ToastPrimitive.createToastManager();
|
|
3966
|
-
var createToastManager = ToastPrimitive.createToastManager;
|
|
3967
|
-
var useToastManager = ToastPrimitive.useToastManager;
|
|
3968
|
-
|
|
3969
|
-
// src/components/composed/login-server.tsx
|
|
3970
|
-
import { jsx as jsx46, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
3971
|
-
var loginSchema = z.object({
|
|
3972
|
-
email: z.string().trim().toLowerCase().min(1, "Email is required").max(254, "Email is too long").pipe(z.email("Invalid email format")),
|
|
3973
|
-
password: z.string().min(1, "Password is required").min(8, "Password must be at least 8 characters").max(128, "Password must not exceed 128 characters")
|
|
3974
|
-
});
|
|
3975
|
-
function LoginServer({
|
|
3976
|
-
onSubmit,
|
|
3977
|
-
onGoogleSignIn,
|
|
3978
|
-
isSubmitting: externalIsSubmitting
|
|
3979
|
-
}) {
|
|
3980
|
-
const [isRedirecting, setIsRedirecting] = useState6(false);
|
|
3981
|
-
const [isGoogleLoading, setIsGoogleLoading] = useState6(false);
|
|
3982
|
-
const form = useForm({
|
|
3983
|
-
resolver: zodResolver(loginSchema),
|
|
3984
|
-
defaultValues: {
|
|
3985
|
-
email: "",
|
|
3986
|
-
password: ""
|
|
3987
|
-
}
|
|
3988
|
-
});
|
|
3989
|
-
const isPending = externalIsSubmitting != null ? externalIsSubmitting : form.formState.isSubmitting || isRedirecting || isGoogleLoading;
|
|
3990
|
-
const handleFormSubmit = async (values) => {
|
|
3991
|
-
try {
|
|
3992
|
-
if (!onSubmit) {
|
|
3993
|
-
toast.add({
|
|
3994
|
-
description: "Login action handler is not configured."
|
|
3995
|
-
});
|
|
3996
|
-
return;
|
|
3997
|
-
}
|
|
3998
|
-
const res = await onSubmit(values);
|
|
3999
|
-
if (res && typeof res === "object" && "error" in res && typeof res.error === "string" && res.error) {
|
|
4000
|
-
setIsRedirecting(false);
|
|
4001
|
-
toast.add({ description: res.error });
|
|
4002
|
-
return;
|
|
4003
|
-
}
|
|
4004
|
-
setIsRedirecting(true);
|
|
4005
|
-
} catch (e) {
|
|
4006
|
-
setIsRedirecting(false);
|
|
4007
|
-
toast.add({ description: "Unable to process your login request." });
|
|
4008
|
-
}
|
|
4009
|
-
};
|
|
4010
|
-
const handleGoogleSignIn = async () => {
|
|
4011
|
-
if (isPending) return;
|
|
4012
|
-
if (!onGoogleSignIn) {
|
|
4013
|
-
toast.add({
|
|
4014
|
-
description: "Google Sign-In is not currently available."
|
|
4015
|
-
});
|
|
4016
|
-
return;
|
|
4017
|
-
}
|
|
4018
|
-
try {
|
|
4019
|
-
setIsGoogleLoading(true);
|
|
4020
|
-
await onGoogleSignIn();
|
|
4021
|
-
} catch (e) {
|
|
4022
|
-
setIsGoogleLoading(false);
|
|
4023
|
-
toast.add({ description: "Google Sign-In failed to initialize." });
|
|
4024
|
-
}
|
|
4025
|
-
};
|
|
4026
|
-
return /* @__PURE__ */ jsx46("div", { className: "flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10", children: /* @__PURE__ */ jsxs30("div", { className: "flex w-full max-w-sm flex-col gap-6", children: [
|
|
4027
|
-
/* @__PURE__ */ jsxs30("div", { className: "flex items-center gap-2 self-center font-medium", children: [
|
|
4028
|
-
/* @__PURE__ */ jsx46("div", { className: "flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground", children: /* @__PURE__ */ jsx46(GalleryVerticalEndIcon, { className: "size-4" }) }),
|
|
4029
|
-
"Prediktif"
|
|
4030
|
-
] }),
|
|
4031
|
-
/* @__PURE__ */ jsxs30("div", { className: "flex flex-col gap-6", children: [
|
|
4032
|
-
/* @__PURE__ */ jsxs30(Card, { children: [
|
|
4033
|
-
/* @__PURE__ */ jsxs30(CardHeader, { className: "text-center", children: [
|
|
4034
|
-
/* @__PURE__ */ jsx46(CardTitle, { children: "Welcome back" }),
|
|
4035
|
-
/* @__PURE__ */ jsx46(CardDescription, { children: "Login with your Google account" })
|
|
4036
|
-
] }),
|
|
4037
|
-
/* @__PURE__ */ jsx46(CardContent, { children: /* @__PURE__ */ jsx46("form", { onSubmit: form.handleSubmit(handleFormSubmit), noValidate: true, children: /* @__PURE__ */ jsxs30(FieldGroup, { children: [
|
|
4038
|
-
/* @__PURE__ */ jsx46(Field, { children: /* @__PURE__ */ jsxs30(
|
|
4039
|
-
Button,
|
|
4040
|
-
{
|
|
4041
|
-
type: "button",
|
|
4042
|
-
variant: "outline",
|
|
4043
|
-
disabled: isPending,
|
|
4044
|
-
onClick: handleGoogleSignIn,
|
|
4045
|
-
children: [
|
|
4046
|
-
isGoogleLoading ? /* @__PURE__ */ jsx46(
|
|
4047
|
-
LoaderCircleIcon,
|
|
4048
|
-
{
|
|
4049
|
-
className: "animate-spin",
|
|
4050
|
-
"data-icon": "inline-start"
|
|
4051
|
-
}
|
|
4052
|
-
) : /* @__PURE__ */ jsx46(GoogleIcon, { className: "size-4 shrink-0" }),
|
|
4053
|
-
"Login with Google"
|
|
4054
|
-
]
|
|
4055
|
-
}
|
|
4056
|
-
) }),
|
|
4057
|
-
/* @__PURE__ */ jsx46(FieldSeparator, { className: "*:data-[slot=field-separator-content]:bg-card", children: "Or continue with" }),
|
|
4058
|
-
/* @__PURE__ */ jsx46(
|
|
4059
|
-
Controller,
|
|
4060
|
-
{
|
|
4061
|
-
name: "email",
|
|
4062
|
-
control: form.control,
|
|
4063
|
-
render: ({ field, fieldState }) => /* @__PURE__ */ jsxs30(Field, { "data-invalid": fieldState.invalid, children: [
|
|
4064
|
-
/* @__PURE__ */ jsx46(FieldLabel, { htmlFor: field.name, children: "Email" }),
|
|
4065
|
-
/* @__PURE__ */ jsx46(
|
|
4066
|
-
Input,
|
|
4067
|
-
__spreadProps(__spreadValues({}, field), {
|
|
4068
|
-
id: field.name,
|
|
4069
|
-
"aria-invalid": fieldState.invalid,
|
|
4070
|
-
disabled: isPending,
|
|
4071
|
-
placeholder: "m@example.com",
|
|
4072
|
-
type: "email",
|
|
4073
|
-
autoComplete: "email"
|
|
4074
|
-
})
|
|
4075
|
-
),
|
|
4076
|
-
/* @__PURE__ */ jsx46(FieldDescription, { children: "Enter the email address associated with your account." }),
|
|
4077
|
-
fieldState.invalid && /* @__PURE__ */ jsx46(FieldError, { errors: [fieldState.error] })
|
|
4078
|
-
] })
|
|
4079
|
-
}
|
|
4080
|
-
),
|
|
4081
|
-
/* @__PURE__ */ jsx46(
|
|
4082
|
-
Controller,
|
|
4083
|
-
{
|
|
4084
|
-
name: "password",
|
|
4085
|
-
control: form.control,
|
|
4086
|
-
render: ({ field, fieldState }) => /* @__PURE__ */ jsxs30(Field, { "data-invalid": fieldState.invalid, children: [
|
|
4087
|
-
/* @__PURE__ */ jsxs30("div", { className: "flex items-center", children: [
|
|
4088
|
-
/* @__PURE__ */ jsx46(FieldLabel, { htmlFor: field.name, children: "Password" }),
|
|
4089
|
-
/* @__PURE__ */ jsx46(
|
|
4090
|
-
Link3,
|
|
4091
|
-
{
|
|
4092
|
-
href: "/forgot-password",
|
|
4093
|
-
className: "ml-auto inline-block underline-offset-4 hover:underline",
|
|
4094
|
-
children: "Forgot your password?"
|
|
4095
|
-
}
|
|
4096
|
-
)
|
|
4097
|
-
] }),
|
|
4098
|
-
/* @__PURE__ */ jsx46(
|
|
4099
|
-
Input,
|
|
4100
|
-
__spreadProps(__spreadValues({}, field), {
|
|
4101
|
-
id: field.name,
|
|
4102
|
-
"aria-invalid": fieldState.invalid,
|
|
4103
|
-
disabled: isPending,
|
|
4104
|
-
placeholder: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022",
|
|
4105
|
-
type: "password",
|
|
4106
|
-
autoComplete: "current-password"
|
|
4107
|
-
})
|
|
4108
|
-
),
|
|
4109
|
-
/* @__PURE__ */ jsx46(FieldDescription, { children: "Enter your account password." }),
|
|
4110
|
-
fieldState.invalid && /* @__PURE__ */ jsx46(FieldError, { errors: [fieldState.error] })
|
|
4111
|
-
] })
|
|
4112
|
-
}
|
|
4113
|
-
),
|
|
4114
|
-
/* @__PURE__ */ jsxs30(Field, { children: [
|
|
4115
|
-
/* @__PURE__ */ jsxs30(
|
|
4116
|
-
Button,
|
|
4117
|
-
{
|
|
4118
|
-
type: "submit",
|
|
4119
|
-
disabled: isPending,
|
|
4120
|
-
className: "w-full",
|
|
4121
|
-
children: [
|
|
4122
|
-
/* @__PURE__ */ jsx46(
|
|
4123
|
-
LoaderCircleIcon,
|
|
4124
|
-
{
|
|
4125
|
-
className: cn24(
|
|
4126
|
-
"animate-spin",
|
|
4127
|
-
isPending && !isGoogleLoading ? "block" : "hidden"
|
|
4128
|
-
),
|
|
4129
|
-
"data-icon": "inline-start"
|
|
4130
|
-
}
|
|
4131
|
-
),
|
|
4132
|
-
/* @__PURE__ */ jsx46(
|
|
4133
|
-
LogInIcon,
|
|
4134
|
-
{
|
|
4135
|
-
className: cn24(
|
|
4136
|
-
!isPending || isGoogleLoading ? "block" : "hidden"
|
|
4137
|
-
),
|
|
4138
|
-
"data-icon": "inline-start"
|
|
4139
|
-
}
|
|
4140
|
-
),
|
|
4141
|
-
isRedirecting ? "Redirecting to application..." : form.formState.isSubmitting ? "Signing in..." : "Login"
|
|
4142
|
-
]
|
|
4143
|
-
}
|
|
4144
|
-
),
|
|
4145
|
-
/* @__PURE__ */ jsxs30(FieldDescription, { className: "text-center", children: [
|
|
4146
|
-
"Don't have an account?",
|
|
4147
|
-
" ",
|
|
4148
|
-
/* @__PURE__ */ jsx46(Link3, { href: "/register", children: "Sign up" })
|
|
4149
|
-
] })
|
|
4150
|
-
] })
|
|
4151
|
-
] }) }) })
|
|
4152
|
-
] }),
|
|
4153
|
-
/* @__PURE__ */ jsxs30(FieldDescription, { className: "px-6 text-center", children: [
|
|
4154
|
-
"By clicking continue, you agree to our",
|
|
4155
|
-
" ",
|
|
4156
|
-
/* @__PURE__ */ jsx46(Link3, { href: "/terms", children: "Terms of Service" }),
|
|
4157
|
-
" and",
|
|
4158
|
-
" ",
|
|
4159
|
-
/* @__PURE__ */ jsx46(Link3, { href: "/privacy", children: "Privacy Policy" }),
|
|
4160
|
-
"."
|
|
4161
|
-
] })
|
|
4162
|
-
] })
|
|
4163
|
-
] }) });
|
|
4164
|
-
}
|
|
4165
3694
|
export {
|
|
4166
3695
|
AppSidebar,
|
|
4167
3696
|
AvatarUser,
|
|
@@ -4183,7 +3712,6 @@ export {
|
|
|
4183
3712
|
HeaderTabs,
|
|
4184
3713
|
HeaderTitle,
|
|
4185
3714
|
JoinedLabel,
|
|
4186
|
-
LoginServer,
|
|
4187
3715
|
RowActions,
|
|
4188
3716
|
StateEmpty,
|
|
4189
3717
|
UserRole,
|
|
@@ -4194,7 +3722,6 @@ export {
|
|
|
4194
3722
|
features,
|
|
4195
3723
|
flexRender3 as flexRender,
|
|
4196
3724
|
getTableExportData,
|
|
4197
|
-
loginSchema,
|
|
4198
3725
|
printTable,
|
|
4199
3726
|
smartFilterFn,
|
|
4200
3727
|
useTable
|