react-toolkits 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 (50) hide show
  1. package/.eslintignore +2 -0
  2. package/.eslintrc.js +4 -0
  3. package/.turbo/turbo-build.log +20 -0
  4. package/CHANGELOG.md +10 -0
  5. package/dist/512_orange_nobackground-L6MFCL6M.png +0 -0
  6. package/dist/index.css +230 -0
  7. package/dist/index.css.map +1 -0
  8. package/dist/index.d.mts +191 -0
  9. package/dist/index.esm.js +3152 -0
  10. package/dist/index.esm.js.map +1 -0
  11. package/package.json +63 -0
  12. package/postcss.config.js +9 -0
  13. package/src/assets/512_orange_nobackground.png +0 -0
  14. package/src/components/DynamicTags/index.tsx +160 -0
  15. package/src/components/FilterForm/index.tsx +62 -0
  16. package/src/components/FormModal/hooks.tsx +48 -0
  17. package/src/components/FormModal/index.tsx +138 -0
  18. package/src/components/Highlight/index.tsx +51 -0
  19. package/src/components/PermissionButton/index.tsx +36 -0
  20. package/src/components/QueryList/index.tsx +158 -0
  21. package/src/components/index.ts +27 -0
  22. package/src/constants/index.ts +3 -0
  23. package/src/features/permission/components/PermissionList.tsx +129 -0
  24. package/src/features/permission/hooks/index.ts +140 -0
  25. package/src/features/permission/index.ts +5 -0
  26. package/src/features/permission/types/index.ts +33 -0
  27. package/src/hooks/index.ts +2 -0
  28. package/src/hooks/use-fetcher.tsx +102 -0
  29. package/src/hooks/use-permission.tsx +58 -0
  30. package/src/index.ts +7 -0
  31. package/src/layouts/Layout.tsx +81 -0
  32. package/src/layouts/NavBar.tsx +176 -0
  33. package/src/layouts/index.ts +6 -0
  34. package/src/pages/Login/default.tsx +864 -0
  35. package/src/pages/Login/index.tsx +111 -0
  36. package/src/pages/index.ts +4 -0
  37. package/src/pages/permission/RoleDetail.tsx +40 -0
  38. package/src/pages/permission/RoleList.tsx +226 -0
  39. package/src/pages/permission/UserList.tsx +248 -0
  40. package/src/pages/permission/index.tsx +31 -0
  41. package/src/shims.d.ts +20 -0
  42. package/src/stores/index.ts +3 -0
  43. package/src/stores/menu.ts +27 -0
  44. package/src/stores/queryTrigger.ts +27 -0
  45. package/src/stores/token.ts +25 -0
  46. package/src/styles/index.css +5 -0
  47. package/src/types/index.ts +27 -0
  48. package/tailwind.config.js +5 -0
  49. package/tsconfig.json +11 -0
  50. package/tsup.config.ts +26 -0
@@ -0,0 +1,27 @@
1
+ import { create } from 'zustand'
2
+ import { persist } from 'zustand/middleware'
3
+
4
+ export interface MenuState {
5
+ openKeys: string[]
6
+ selectedKeys: string[]
7
+ setOpenKeys: (keys: string[]) => void
8
+ setSelectedKeys: (keys: string[]) => void
9
+ }
10
+
11
+ export const useMenuStore = create<MenuState>()(
12
+ persist(
13
+ set => ({
14
+ openKeys: [],
15
+ selectedKeys: [],
16
+ setOpenKeys: keys => set({ openKeys: keys }),
17
+ setSelectedKeys: keys => set({ selectedKeys: keys }),
18
+ }),
19
+ {
20
+ name: 'menu',
21
+ partialize: state => ({
22
+ openKeys: state.openKeys,
23
+ selectedKeys: state.selectedKeys,
24
+ }),
25
+ },
26
+ ),
27
+ )
@@ -0,0 +1,27 @@
1
+ import type { QueryListKey } from '@/components/QueryList'
2
+ import type { PaginationParams } from '@/types'
3
+ import { create } from 'zustand'
4
+
5
+ type TriggerFunction = (arg?: Partial<PaginationParams>) => void
6
+
7
+ export interface QueryTriggerState {
8
+ triggers: Map<QueryListKey, TriggerFunction>
9
+ setTrigger: (key: QueryListKey, trigger: TriggerFunction) => void
10
+ trigger: (key: QueryListKey, arg?: Partial<PaginationParams>) => void
11
+ }
12
+
13
+ export const useQueryTriggerStore = create<QueryTriggerState>((set, get) => ({
14
+ triggers: new Map(),
15
+ setTrigger: (key: QueryListKey, trigger: TriggerFunction) => {
16
+ set({
17
+ triggers: new Map(get().triggers).set(key, trigger),
18
+ })
19
+ },
20
+ trigger: (key: QueryListKey, arg?: Partial<PaginationParams>) => {
21
+ const trigger = get().triggers.get(key)
22
+
23
+ if (trigger) {
24
+ trigger(arg)
25
+ }
26
+ },
27
+ }))
@@ -0,0 +1,25 @@
1
+ import { create } from 'zustand'
2
+ import { persist } from 'zustand/middleware'
3
+
4
+ export interface TokenState {
5
+ token: string
6
+ setToken: (token: string) => void
7
+ clearToken: () => void
8
+ }
9
+
10
+ export const useTokenStore = create<TokenState>()(
11
+ persist(
12
+ set => ({
13
+ token: '',
14
+ setToken: token => set({ token }),
15
+ clearToken: () => {
16
+ set({ token: '' })
17
+ useTokenStore.persist.clearStorage()
18
+ },
19
+ }),
20
+ {
21
+ name: 'token',
22
+ partialize: state => ({ token: state.token }),
23
+ },
24
+ ),
25
+ )
@@ -0,0 +1,5 @@
1
+ @import "antd/dist/reset.css";
2
+
3
+ @tailwind base;
4
+ @tailwind components;
5
+ @tailwind utilities;
@@ -0,0 +1,27 @@
1
+ import type { ItemType2 } from '@/layouts/NavBar'
2
+
3
+ export interface UserInfo {
4
+ authorityId: string
5
+ exp: number
6
+ }
7
+
8
+ export interface LoaderData {
9
+ navs: ItemType2[] // 导航栏数据
10
+ }
11
+
12
+ export interface BackendResponse<T> {
13
+ code: number
14
+ msg: string
15
+ data: T
16
+ }
17
+
18
+ export interface ListResponse<T> {
19
+ List: T[]
20
+ Page: number
21
+ Total: number
22
+ }
23
+
24
+ export type PaginationParams = {
25
+ page: number
26
+ perPage: number
27
+ }
@@ -0,0 +1,5 @@
1
+ import sharedConfig from 'tailwind-config/config'
2
+
3
+ module.exports = {
4
+ presets: [sharedConfig],
5
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,11 @@
1
+ {
2
+ "extends": "tsconfig/react-library.json",
3
+ "include": ["./src"],
4
+ "exclude": ["dist", "node_modules"],
5
+ "compilerOptions": {
6
+ "baseUrl": ".",
7
+ "paths": {
8
+ "@/*": ["./src/*"]
9
+ }
10
+ }
11
+ }
package/tsup.config.ts ADDED
@@ -0,0 +1,26 @@
1
+ import type { Options } from 'tsup'
2
+ import { defineConfig } from 'tsup'
3
+
4
+ export default defineConfig((options: Options) => ({
5
+ entry: ['src/index.ts'],
6
+ treeshake: true,
7
+ splitting: false,
8
+ format: ['esm'],
9
+ sourcemap: true,
10
+ dts: true,
11
+ minify: false,
12
+ clean: true,
13
+ shims: true,
14
+ external: ['react', 'react-dom'],
15
+ loader: {
16
+ '.jpg': 'base64',
17
+ '.png': 'copy',
18
+ '.webp': 'file',
19
+ },
20
+ outExtension({ format }) {
21
+ return {
22
+ js: `.${format}.js`,
23
+ }
24
+ },
25
+ ...options,
26
+ }))