@simplysm/solid 13.0.33 → 13.0.35

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 (79) hide show
  1. package/README.md +22 -42
  2. package/dist/components/disclosure/DialogContext.d.ts +29 -0
  3. package/dist/components/disclosure/DialogContext.d.ts.map +1 -1
  4. package/dist/components/disclosure/DialogContext.js.map +1 -1
  5. package/dist/components/disclosure/DialogInstanceContext.d.ts +14 -0
  6. package/dist/components/disclosure/DialogInstanceContext.d.ts.map +1 -1
  7. package/dist/components/disclosure/DialogInstanceContext.js.map +1 -1
  8. package/dist/components/feedback/busy/BusyContext.d.ts +18 -0
  9. package/dist/components/feedback/busy/BusyContext.d.ts.map +1 -1
  10. package/dist/components/feedback/busy/BusyContext.js.map +1 -1
  11. package/dist/components/feedback/busy/BusyProvider.d.ts +10 -0
  12. package/dist/components/feedback/busy/BusyProvider.d.ts.map +1 -1
  13. package/dist/components/feedback/busy/BusyProvider.js.map +1 -1
  14. package/dist/components/feedback/notification/NotificationContext.d.ts +29 -0
  15. package/dist/components/feedback/notification/NotificationContext.d.ts.map +1 -1
  16. package/dist/components/feedback/notification/NotificationContext.js.map +1 -1
  17. package/dist/components/feedback/notification/NotificationProvider.d.ts +9 -0
  18. package/dist/components/feedback/notification/NotificationProvider.d.ts.map +1 -1
  19. package/dist/components/feedback/notification/NotificationProvider.js.map +1 -1
  20. package/dist/hooks/useLogger.d.ts +4 -2
  21. package/dist/hooks/useLogger.d.ts.map +1 -1
  22. package/dist/hooks/useLogger.js +11 -4
  23. package/dist/hooks/useLogger.js.map +1 -1
  24. package/dist/hooks/useSyncConfig.d.ts +2 -0
  25. package/dist/hooks/useSyncConfig.d.ts.map +1 -1
  26. package/dist/hooks/useSyncConfig.js +30 -26
  27. package/dist/hooks/useSyncConfig.js.map +1 -1
  28. package/dist/index.d.ts +8 -14
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +21 -15
  31. package/dist/index.js.map +1 -1
  32. package/dist/providers/InitializeProvider.d.ts +33 -0
  33. package/dist/providers/InitializeProvider.d.ts.map +1 -0
  34. package/dist/providers/InitializeProvider.js +75 -0
  35. package/dist/providers/InitializeProvider.js.map +6 -0
  36. package/dist/providers/LoggerContext.d.ts +24 -8
  37. package/dist/providers/LoggerContext.d.ts.map +1 -1
  38. package/dist/providers/LoggerContext.js +13 -13
  39. package/dist/providers/LoggerContext.js.map +2 -2
  40. package/dist/providers/ServiceClientContext.d.ts +13 -0
  41. package/dist/providers/ServiceClientContext.d.ts.map +1 -1
  42. package/dist/providers/ServiceClientContext.js.map +1 -1
  43. package/dist/providers/ServiceClientProvider.d.ts +21 -0
  44. package/dist/providers/ServiceClientProvider.d.ts.map +1 -1
  45. package/dist/providers/ServiceClientProvider.js.map +1 -1
  46. package/dist/providers/SyncStorageContext.d.ts +25 -11
  47. package/dist/providers/SyncStorageContext.d.ts.map +1 -1
  48. package/dist/providers/SyncStorageContext.js +13 -13
  49. package/dist/providers/SyncStorageContext.js.map +2 -2
  50. package/dist/providers/shared-data/SharedDataChangeEvent.d.ts +8 -0
  51. package/dist/providers/shared-data/SharedDataChangeEvent.d.ts.map +1 -1
  52. package/dist/providers/shared-data/SharedDataChangeEvent.js.map +1 -1
  53. package/dist/providers/shared-data/SharedDataContext.d.ts +39 -0
  54. package/dist/providers/shared-data/SharedDataContext.d.ts.map +1 -1
  55. package/dist/providers/shared-data/SharedDataContext.js +1 -3
  56. package/dist/providers/shared-data/SharedDataContext.js.map +1 -1
  57. package/dist/providers/shared-data/SharedDataProvider.d.ts +30 -5
  58. package/dist/providers/shared-data/SharedDataProvider.d.ts.map +1 -1
  59. package/dist/providers/shared-data/SharedDataProvider.js +59 -38
  60. package/dist/providers/shared-data/SharedDataProvider.js.map +2 -2
  61. package/docs/providers.md +70 -195
  62. package/package.json +3 -3
  63. package/src/components/disclosure/DialogContext.ts +29 -0
  64. package/src/components/disclosure/DialogInstanceContext.ts +14 -0
  65. package/src/components/feedback/busy/BusyContext.ts +18 -0
  66. package/src/components/feedback/busy/BusyProvider.tsx +10 -0
  67. package/src/components/feedback/notification/NotificationContext.ts +29 -0
  68. package/src/components/feedback/notification/NotificationProvider.tsx +9 -0
  69. package/src/hooks/useLogger.ts +14 -4
  70. package/src/hooks/useSyncConfig.ts +42 -35
  71. package/src/index.ts +34 -14
  72. package/src/providers/InitializeProvider.tsx +74 -0
  73. package/src/providers/LoggerContext.tsx +39 -10
  74. package/src/providers/ServiceClientContext.ts +13 -0
  75. package/src/providers/ServiceClientProvider.tsx +21 -0
  76. package/src/providers/SyncStorageContext.tsx +40 -15
  77. package/src/providers/shared-data/SharedDataChangeEvent.ts +8 -0
  78. package/src/providers/shared-data/SharedDataContext.ts +40 -3
  79. package/src/providers/shared-data/SharedDataProvider.tsx +102 -54
package/README.md CHANGED
@@ -37,48 +37,36 @@ export default {
37
37
 
38
38
  ### Provider Setup
39
39
 
40
- Compose individual providers at the app root. Each provider is independent and optional (except `ConfigProvider` which is required).
40
+ Use `InitializeProvider` to wrap your app. It nests all providers in the correct dependency order. Configuration is done via hooks inside child components.
41
41
 
42
42
  ```tsx
43
- import {
44
- BusyProvider,
45
- ClipboardProvider,
46
- ConfigProvider,
47
- ErrorLoggerProvider,
48
- NotificationBanner,
49
- NotificationProvider,
50
- PwaUpdateProvider,
51
- ThemeProvider,
52
- } from "@simplysm/solid";
43
+ import { InitializeProvider, useServiceClient, useSyncStorage, useLogger, useSharedData } from "@simplysm/solid";
44
+ import { onMount } from "solid-js";
53
45
 
54
46
  function App() {
55
47
  return (
56
- <ConfigProvider clientName="my-app">
57
- <NotificationProvider>
58
- <NotificationBanner />
59
- <ErrorLoggerProvider>
60
- <PwaUpdateProvider>
61
- <ClipboardProvider>
62
- <ThemeProvider>
63
- <BusyProvider>{/* app content */}</BusyProvider>
64
- </ThemeProvider>
65
- </ClipboardProvider>
66
- </PwaUpdateProvider>
67
- </ErrorLoggerProvider>
68
- </NotificationProvider>
69
- </ConfigProvider>
48
+ <InitializeProvider clientName="my-app">
49
+ <AppRoot />
50
+ </InitializeProvider>
70
51
  );
71
52
  }
72
- ```
73
53
 
74
- **Optional providers** (add when needed):
54
+ function AppRoot() {
55
+ const serviceClient = useServiceClient();
56
+
57
+ onMount(async () => {
58
+ await serviceClient.connect("main", { port: 3000 });
59
+ useSyncStorage()!.configure(myStorageAdapter);
60
+ useLogger().configure(myLogAdapter);
61
+ useSharedData().configure(definitions);
62
+ });
63
+ }
64
+ ```
75
65
 
76
- | Provider | Purpose |
77
- |----------|---------|
78
- | `SyncStorageProvider` | Custom sync storage adapter for `useSyncConfig` (wraps above `ConfigProvider`) |
79
- | `LoggerProvider` | Remote log adapter for `useLogger` (wraps above `ErrorLoggerProvider`) |
80
- | `ServiceClientProvider` | WebSocket RPC client |
81
- | `SharedDataProvider` | Server-side data subscriptions |
66
+ | Prop | Type | Default | Description |
67
+ |------|------|---------|-------------|
68
+ | `clientName` | `string` | (required) | Client identifier (used as storage key prefix) |
69
+ | `busyVariant` | `BusyVariant` | `"spinner"` | Busy overlay display variant (`"spinner"` or `"bar"`) |
82
70
 
83
71
  **StorageAdapter interface:**
84
72
 
@@ -192,15 +180,7 @@ import "@simplysm/solid/tailwind.css";
192
180
 
193
181
  ## Providers
194
182
 
195
- - [`ConfigProvider`](docs/providers.md#configprovider) - App configuration (required, topmost)
196
- - [`SyncStorageProvider`](docs/providers.md#syncstorageprovider) - Custom sync storage adapter (optional)
197
- - [`LoggerProvider`](docs/providers.md#loggerprovider) - Remote log adapter (optional)
198
- - [`ErrorLoggerProvider`](docs/providers.md#errorloggerprovider) - Global error capturing (window.onerror, unhandledrejection)
199
- - [`PwaUpdateProvider`](docs/providers.md#pwaupdateprovider) - PWA Service Worker update detection
200
- - [`ClipboardProvider`](docs/providers.md#clipboardprovider) - Form control clipboard value copy
201
- - [`ThemeProvider`](docs/providers.md#themeprovider) - Dark/light/system theme
202
- - [`ServiceClientProvider`](docs/providers.md#serviceclientprovider) - WebSocket RPC client provider (`useServiceClient`)
203
- - [`SharedDataProvider`](docs/providers.md#shareddataprovider) - Server-side data subscription provider (`useSharedData`)
183
+ - [`InitializeProvider`](docs/providers.md#initializeprovider) - Main provider wrapping all providers (the only exported provider component)
204
184
 
205
185
  ## Styling
206
186
 
@@ -1,30 +1,59 @@
1
1
  import { type Accessor, type JSX } from "solid-js";
2
+ /** 다이얼로그 기본 설정 */
2
3
  export interface DialogDefaults {
4
+ /** ESC 키로 닫기 허용 */
3
5
  closeOnEscape?: boolean;
6
+ /** 백드롭 클릭으로 닫기 허용 */
4
7
  closeOnBackdrop?: boolean;
5
8
  }
9
+ /** 다이얼로그 기본 설정 Context */
6
10
  export declare const DialogDefaultsContext: import("solid-js").Context<Accessor<DialogDefaults> | undefined>;
11
+ /** 프로그래매틱 다이얼로그 옵션 */
7
12
  export interface DialogShowOptions {
13
+ /** 다이얼로그 제목 */
8
14
  title: string;
15
+ /** 헤더 숨김 */
9
16
  hideHeader?: boolean;
17
+ /** 닫기 버튼 표시 */
10
18
  closable?: boolean;
19
+ /** 백드롭 클릭으로 닫기 */
11
20
  closeOnBackdrop?: boolean;
21
+ /** ESC 키로 닫기 */
12
22
  closeOnEscape?: boolean;
23
+ /** 크기 조절 가능 */
13
24
  resizable?: boolean;
25
+ /** 드래그 이동 가능 */
14
26
  movable?: boolean;
27
+ /** 플로팅 모드 (우하단 고정) */
15
28
  float?: boolean;
29
+ /** 전체 화면 채우기 */
16
30
  fill?: boolean;
31
+ /** 초기 너비 (px) */
17
32
  width?: number;
33
+ /** 초기 높이 (px) */
18
34
  height?: number;
35
+ /** 최소 너비 (px) */
19
36
  minWidth?: number;
37
+ /** 최소 높이 (px) */
20
38
  minHeight?: number;
39
+ /** 플로팅 위치 */
21
40
  position?: "bottom-right" | "top-right";
41
+ /** 헤더 커스텀 스타일 */
22
42
  headerStyle?: JSX.CSSProperties | string;
43
+ /** 닫기 전 확인 함수 (false 반환 시 닫기 취소) */
23
44
  canDeactivate?: () => boolean;
24
45
  }
46
+ /** 프로그래매틱 다이얼로그 Context 값 */
25
47
  export interface DialogContextValue {
48
+ /** 다이얼로그를 열고, 닫힐 때까지 대기하여 결과를 반환 */
26
49
  show<T = undefined>(factory: () => JSX.Element, options: DialogShowOptions): Promise<T | undefined>;
27
50
  }
51
+ /** 프로그래매틱 다이얼로그 Context */
28
52
  export declare const DialogContext: import("solid-js").Context<DialogContextValue | undefined>;
53
+ /**
54
+ * 프로그래매틱 다이얼로그에 접근하는 훅
55
+ *
56
+ * @throws DialogProvider가 없으면 에러 발생
57
+ */
29
58
  export declare function useDialog(): DialogContextValue;
30
59
  //# sourceMappingURL=DialogContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DialogContext.d.ts","sourceRoot":"","sources":["../../../src/components/disclosure/DialogContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,QAAQ,EAAE,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;AAE9E,MAAM,WAAW,cAAc;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,eAAO,MAAM,qBAAqB,kEAA4C,CAAC;AAE/E,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,cAAc,GAAG,WAAW,CAAC;IACxC,WAAW,CAAC,EAAE,GAAG,CAAC,aAAa,GAAG,MAAM,CAAC;IACzC,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,CAAC,GAAG,SAAS,EAChB,OAAO,EAAE,MAAM,GAAG,CAAC,OAAO,EAC1B,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;CAC3B;AAED,eAAO,MAAM,aAAa,4DAAsC,CAAC;AAEjE,wBAAgB,SAAS,IAAI,kBAAkB,CAI9C"}
1
+ {"version":3,"file":"DialogContext.d.ts","sourceRoot":"","sources":["../../../src/components/disclosure/DialogContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,QAAQ,EAAE,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;AAE9E,kBAAkB;AAClB,MAAM,WAAW,cAAc;IAC7B,mBAAmB;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qBAAqB;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,0BAA0B;AAC1B,eAAO,MAAM,qBAAqB,kEAA4C,CAAC;AAE/E,sBAAsB;AACtB,MAAM,WAAW,iBAAiB;IAChC,eAAe;IACf,KAAK,EAAE,MAAM,CAAC;IACd,YAAY;IACZ,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kBAAkB;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sBAAsB;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gBAAgB;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa;IACb,QAAQ,CAAC,EAAE,cAAc,GAAG,WAAW,CAAC;IACxC,iBAAiB;IACjB,WAAW,CAAC,EAAE,GAAG,CAAC,aAAa,GAAG,MAAM,CAAC;IACzC,oCAAoC;IACpC,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC;CAC/B;AAED,6BAA6B;AAC7B,MAAM,WAAW,kBAAkB;IACjC,oCAAoC;IACpC,IAAI,CAAC,CAAC,GAAG,SAAS,EAChB,OAAO,EAAE,MAAM,GAAG,CAAC,OAAO,EAC1B,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;CAC3B;AAED,2BAA2B;AAC3B,eAAO,MAAM,aAAa,4DAAsC,CAAC;AAEjE;;;;GAIG;AACH,wBAAgB,SAAS,IAAI,kBAAkB,CAI9C"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/disclosure/DialogContext.ts"],
4
- "mappings": "AAAA,SAAS,eAAe,kBAA2C;AAO5D,MAAM,wBAAwB,cAAwC;AA4BtE,MAAM,gBAAgB,cAAkC;AAExD,SAAS,YAAgC;AAC9C,QAAM,MAAM,WAAW,aAAa;AACpC,MAAI,CAAC,IAAK,OAAM,IAAI,MAAM,kHAA4C;AACtE,SAAO;AACT;",
4
+ "mappings": "AAAA,SAAS,eAAe,kBAA2C;AAW5D,MAAM,wBAAwB,cAAwC;AAgDtE,MAAM,gBAAgB,cAAkC;AAOxD,SAAS,YAAgC;AAC9C,QAAM,MAAM,WAAW,aAAa;AACpC,MAAI,CAAC,IAAK,OAAM,IAAI,MAAM,kHAA4C;AACtE,SAAO;AACT;",
5
5
  "names": []
6
6
  }
@@ -1,6 +1,20 @@
1
+ /**
2
+ * 다이얼로그 인스턴스 (프로그래매틱 다이얼로그 내부에서 사용)
3
+ */
1
4
  export interface DialogInstance<TResult> {
5
+ /** 다이얼로그 닫기 (result는 show()의 Promise로 전달) */
2
6
  close: (result?: TResult) => void;
3
7
  }
8
+ /** 다이얼로그 인스턴스 Context */
4
9
  export declare const DialogInstanceContext: import("solid-js").Context<DialogInstance<unknown> | undefined>;
10
+ /**
11
+ * 다이얼로그 인스턴스에 접근하는 훅
12
+ *
13
+ * @remarks
14
+ * DialogProvider.show()로 열린 다이얼로그 내부에서만 값이 존재한다.
15
+ * Provider 외부에서 호출하면 undefined를 반환한다.
16
+ *
17
+ * @returns DialogInstance 또는 undefined (Provider 외부)
18
+ */
5
19
  export declare function useDialogInstance<TResult = undefined>(): DialogInstance<TResult> | undefined;
6
20
  //# sourceMappingURL=DialogInstanceContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DialogInstanceContext.d.ts","sourceRoot":"","sources":["../../../src/components/disclosure/DialogInstanceContext.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc,CAAC,OAAO;IACrC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACnC;AAED,eAAO,MAAM,qBAAqB,iEAA2C,CAAC;AAE9E,wBAAgB,iBAAiB,CAAC,OAAO,GAAG,SAAS,KAAK,cAAc,CAAC,OAAO,CAAC,GAAG,SAAS,CAE5F"}
1
+ {"version":3,"file":"DialogInstanceContext.d.ts","sourceRoot":"","sources":["../../../src/components/disclosure/DialogInstanceContext.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,OAAO;IACrC,6CAA6C;IAC7C,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACnC;AAED,yBAAyB;AACzB,eAAO,MAAM,qBAAqB,iEAA2C,CAAC;AAE9E;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAG,SAAS,KAAK,cAAc,CAAC,OAAO,CAAC,GAAG,SAAS,CAE5F"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/disclosure/DialogInstanceContext.ts"],
4
- "mappings": "AAAA,SAAS,eAAe,kBAAkB;AAMnC,MAAM,wBAAwB,cAAuC;AAErE,SAAS,oBAA8E;AAC5F,SAAO,WAAW,qBAAqB;AACzC;",
4
+ "mappings": "AAAA,SAAS,eAAe,kBAAkB;AAWnC,MAAM,wBAAwB,cAAuC;AAWrE,SAAS,oBAA8E;AAC5F,SAAO,WAAW,qBAAqB;AACzC;",
5
5
  "names": []
6
6
  }
@@ -1,11 +1,29 @@
1
1
  import { type Accessor } from "solid-js";
2
+ /**
3
+ * Busy 오버레이 표시 방식
4
+ * - `spinner`: 전체 화면 스피너
5
+ * - `bar`: 상단 프로그레스 바
6
+ */
2
7
  export type BusyVariant = "spinner" | "bar";
8
+ /**
9
+ * Busy 오버레이 Context 값
10
+ */
3
11
  export interface BusyContextValue {
12
+ /** 현재 표시 방식 */
4
13
  variant: Accessor<BusyVariant>;
14
+ /** 오버레이 표시 (중첩 호출 가능, 호출 횟수만큼 hide 필요) */
5
15
  show: (message?: string) => void;
16
+ /** 오버레이 숨김 (모든 show에 대응하는 hide 호출 후 실제 숨김) */
6
17
  hide: () => void;
18
+ /** 프로그레스 바 진행률 설정 (0~100, undefined면 indeterminate) */
7
19
  setProgress: (percent: number | undefined) => void;
8
20
  }
21
+ /** Busy 오버레이 Context */
9
22
  export declare const BusyContext: import("solid-js").Context<BusyContextValue | undefined>;
23
+ /**
24
+ * Busy 오버레이에 접근하는 훅
25
+ *
26
+ * @throws BusyProvider가 없으면 에러 발생
27
+ */
10
28
  export declare function useBusy(): BusyContextValue;
11
29
  //# sourceMappingURL=BusyContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BusyContext.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/busy/BusyContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpE,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,KAAK,CAAC;AAE5C,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC/B,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;CACpD;AAED,eAAO,MAAM,WAAW,0DAAoC,CAAC;AAE7D,wBAAgB,OAAO,IAAI,gBAAgB,CAM1C"}
1
+ {"version":3,"file":"BusyContext.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/busy/BusyContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpE;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,KAAK,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,eAAe;IACf,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC/B,0CAA0C;IAC1C,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,8CAA8C;IAC9C,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,uDAAuD;IACvD,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;CACpD;AAED,wBAAwB;AACxB,eAAO,MAAM,WAAW,0DAAoC,CAAC;AAE7D;;;;GAIG;AACH,wBAAgB,OAAO,IAAI,gBAAgB,CAM1C"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/feedback/busy/BusyContext.ts"],
4
- "mappings": "AAAA,SAAS,eAAe,kBAAiC;AAWlD,MAAM,cAAc,cAAgC;AAEpD,SAAS,UAA4B;AAC1C,QAAM,UAAU,WAAW,WAAW;AACtC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,8GAAwC;AAAA,EAC1D;AACA,SAAO;AACT;",
4
+ "mappings": "AAAA,SAAS,eAAe,kBAAiC;AAwBlD,MAAM,cAAc,cAAgC;AAOpD,SAAS,UAA4B;AAC1C,QAAM,UAAU,WAAW,WAAW;AACtC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,8GAAwC;AAAA,EAC1D;AACA,SAAO;AACT;",
5
5
  "names": []
6
6
  }
@@ -1,7 +1,17 @@
1
1
  import { type ParentComponent } from "solid-js";
2
2
  import { type BusyVariant } from "./BusyContext";
3
+ /** BusyProvider 설정 */
3
4
  export interface BusyProviderProps {
5
+ /** 표시 방식 (기본값: `"spinner"`) */
4
6
  variant?: BusyVariant;
5
7
  }
8
+ /**
9
+ * Busy 오버레이 Provider
10
+ *
11
+ * @remarks
12
+ * - show/hide는 중첩 호출 가능 (내부 카운터로 관리)
13
+ * - Portal로 렌더링하여 항상 최상위에 표시
14
+ * - 독립적으로 동작 (다른 Provider 의존성 없음)
15
+ */
6
16
  export declare const BusyProvider: ParentComponent<BusyProviderProps>;
7
17
  //# sourceMappingURL=BusyProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BusyProvider.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/busy/BusyProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAgB,MAAM,UAAU,CAAC;AAG9D,OAAO,EAAsC,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAKrF,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAED,eAAO,MAAM,YAAY,EAAE,eAAe,CAAC,iBAAiB,CA6C3D,CAAC"}
1
+ {"version":3,"file":"BusyProvider.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/busy/BusyProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAgB,MAAM,UAAU,CAAC;AAG9D,OAAO,EAAsC,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAKrF,sBAAsB;AACtB,MAAM,WAAW,iBAAiB;IAChC,+BAA+B;IAC/B,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,EAAE,eAAe,CAAC,iBAAiB,CA6C3D,CAAC"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/feedback/busy/BusyProvider.tsx"],
4
- "mappings": ";;AAAA,SAA+BA,oBAAoB;AACnD,SAASC,cAAc;AACvB,OAAOC,UAAU;AACjB,SAASC,mBAA4D;AACrE,SAASC,qBAAqB;AAE9B,MAAMC,eAAeH,KAAK,sBAAsB,qBAAqB,iBAAiB;AAM/E,MAAMI,eAAoDC,WAAU;AACzE,QAAM,CAACC,WAAWC,YAAY,IAAIT,aAAa,CAAC;AAChD,QAAM,CAACU,SAASC,UAAU,IAAIX,aAAiC;AAC/D,QAAM,CAACY,UAAUC,WAAW,IAAIb,aAAiC;AAEjE,QAAMc,UAAUA,MAAmBP,MAAMO,WAAW;AAEpD,QAAMC,OAAQC,SAAuB;AACnCP,iBAAcQ,OAAMA,IAAI,CAAC;AACzB,QAAID,QAAQE,QAAW;AACrBP,iBAAWK,GAAG;IAChB;EACF;AAEA,QAAMG,OAAOA,MAAY;AACvB,UAAMC,WAAWC,KAAKC,IAAI,GAAGd,UAAU,IAAI,CAAC;AAC5CC,iBAAaW,QAAQ;AACrB,QAAIA,YAAY,GAAG;AACjBT,iBAAWO,MAAS;AACpBL,kBAAYK,MAAS;IACvB;EACF;AAEA,QAAMK,eAAiC;IACrCT;IACAC;IACAI;IACAN,aAAcW,aAAgCX,YAAYW,OAAO;EACnE;AAEA,SAAAC,kBACGtB,YAAYuB,UAAQ;IAACC,OAAOJ;IAAY,IAAAK,WAAA;AAAA,aAAA,CAAAC,OAAA,MACtCtB,MAAMqB,QAAQ,GAAAH,kBACdxB,QAAM;QAAA,IAAA2B,WAAA;AAAA,iBAAAH,kBACJrB,eAAa;YAAA,IACZ0B,OAAI;AAAA,qBAAEtB,UAAU,IAAI;YAAC;YAAA,IACrBM,UAAO;AAAA,qBAAEA,QAAQ;YAAC;YAAA,IAClBJ,UAAO;AAAA,qBAAEA,QAAQ;YAAC;YAAA,IAClBqB,kBAAe;AAAA,qBAAEnB,SAAS;YAAC;YAAA,SACpBP;YAAY,IACnB2B,QAAK;AAAA,qBAAE;gBAAE,kBAAkBxB,UAAU,IAAI,IAAI,SAAS;cAAO;YAAC;UAAA,CAAA;QAAA;MAAA,CAAA,CAAA;IAAA;EAAA,CAAA;AAKxE;",
4
+ "mappings": ";;AAAA,SAA+BA,oBAAoB;AACnD,SAASC,cAAc;AACvB,OAAOC,UAAU;AACjB,SAASC,mBAA4D;AACrE,SAASC,qBAAqB;AAE9B,MAAMC,eAAeH,KAAK,sBAAsB,qBAAqB,iBAAiB;AAgB/E,MAAMI,eAAoDC,WAAU;AACzE,QAAM,CAACC,WAAWC,YAAY,IAAIT,aAAa,CAAC;AAChD,QAAM,CAACU,SAASC,UAAU,IAAIX,aAAiC;AAC/D,QAAM,CAACY,UAAUC,WAAW,IAAIb,aAAiC;AAEjE,QAAMc,UAAUA,MAAmBP,MAAMO,WAAW;AAEpD,QAAMC,OAAQC,SAAuB;AACnCP,iBAAcQ,OAAMA,IAAI,CAAC;AACzB,QAAID,QAAQE,QAAW;AACrBP,iBAAWK,GAAG;IAChB;EACF;AAEA,QAAMG,OAAOA,MAAY;AACvB,UAAMC,WAAWC,KAAKC,IAAI,GAAGd,UAAU,IAAI,CAAC;AAC5CC,iBAAaW,QAAQ;AACrB,QAAIA,YAAY,GAAG;AACjBT,iBAAWO,MAAS;AACpBL,kBAAYK,MAAS;IACvB;EACF;AAEA,QAAMK,eAAiC;IACrCT;IACAC;IACAI;IACAN,aAAcW,aAAgCX,YAAYW,OAAO;EACnE;AAEA,SAAAC,kBACGtB,YAAYuB,UAAQ;IAACC,OAAOJ;IAAY,IAAAK,WAAA;AAAA,aAAA,CAAAC,OAAA,MACtCtB,MAAMqB,QAAQ,GAAAH,kBACdxB,QAAM;QAAA,IAAA2B,WAAA;AAAA,iBAAAH,kBACJrB,eAAa;YAAA,IACZ0B,OAAI;AAAA,qBAAEtB,UAAU,IAAI;YAAC;YAAA,IACrBM,UAAO;AAAA,qBAAEA,QAAQ;YAAC;YAAA,IAClBJ,UAAO;AAAA,qBAAEA,QAAQ;YAAC;YAAA,IAClBqB,kBAAe;AAAA,qBAAEnB,SAAS;YAAC;YAAA,SACpBP;YAAY,IACnB2B,QAAK;AAAA,qBAAE;gBAAE,kBAAkBxB,UAAU,IAAI,IAAI,SAAS;cAAO;YAAC;UAAA,CAAA;QAAA;MAAA,CAAA,CAAA;IAAA;EAAA,CAAA;AAKxE;",
5
5
  "names": ["createSignal", "Portal", "clsx", "BusyContext", "BusyContainer", "overlayClass", "BusyProvider", "props", "busyCount", "setBusyCount", "message", "setMessage", "progress", "setProgress", "variant", "show", "msg", "c", "undefined", "hide", "newCount", "Math", "max", "contextValue", "percent", "_$createComponent", "Provider", "value", "children", "_$memo", "busy", "progressPercent", "style"]
6
6
  }
@@ -1,24 +1,47 @@
1
1
  import { type Accessor } from "solid-js";
2
+ /** 알림 테마 */
2
3
  export type NotificationTheme = "info" | "success" | "warning" | "danger";
4
+ /** 알림 액션 버튼 */
3
5
  export interface NotificationAction {
6
+ /** 버튼 텍스트 */
4
7
  label: string;
8
+ /** 클릭 핸들러 */
5
9
  onClick: () => void;
6
10
  }
11
+ /** 알림 항목 */
7
12
  export interface NotificationItem {
13
+ /** 고유 식별자 */
8
14
  id: string;
15
+ /** 테마 (info, success, warning, danger) */
9
16
  theme: NotificationTheme;
17
+ /** 알림 제목 */
10
18
  title: string;
19
+ /** 알림 메시지 (선택) */
11
20
  message?: string;
21
+ /** 액션 버튼 (선택) */
12
22
  action?: NotificationAction;
23
+ /** 생성 시각 */
13
24
  createdAt: Date;
25
+ /** 읽음 여부 */
14
26
  read: boolean;
15
27
  }
28
+ /** 알림 생성 옵션 */
16
29
  export interface NotificationOptions {
30
+ /** 알림에 표시할 액션 버튼 */
17
31
  action?: NotificationAction;
18
32
  }
33
+ /** 알림 수정 옵션 */
19
34
  export interface NotificationUpdateOptions {
35
+ /** true면 읽은 알림을 다시 읽지 않음 상태로 변경 (배너 재표시) */
20
36
  renotify?: boolean;
21
37
  }
38
+ /**
39
+ * 알림 시스템 Context 값
40
+ *
41
+ * @remarks
42
+ * 알림 생성, 수정, 삭제 및 읽음 관리를 위한 메서드 제공.
43
+ * 최대 50개까지 유지되며 초과 시 오래된 항목부터 제거.
44
+ */
22
45
  export interface NotificationContextValue {
23
46
  items: Accessor<NotificationItem[]>;
24
47
  unreadCount: Accessor<number>;
@@ -35,6 +58,12 @@ export interface NotificationContextValue {
35
58
  dismissBanner: () => void;
36
59
  clear: () => void;
37
60
  }
61
+ /** 알림 시스템 Context */
38
62
  export declare const NotificationContext: import("solid-js").Context<NotificationContextValue | undefined>;
63
+ /**
64
+ * 알림 시스템에 접근하는 훅
65
+ *
66
+ * @throws NotificationProvider가 없으면 에러 발생
67
+ */
39
68
  export declare function useNotification(): NotificationContextValue;
40
69
  //# sourceMappingURL=NotificationContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NotificationContext.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/notification/NotificationContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpE,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE1E,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,iBAAiB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,SAAS,EAAE,IAAI,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IAEvC,KAAK,EAAE,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACpC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9B,YAAY,EAAE,QAAQ,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;IAGrD,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,KAAK,MAAM,CAAC;IACjF,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,KAAK,MAAM,CAAC;IACpF,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,KAAK,MAAM,CAAC;IACpF,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,KAAK,MAAM,CAAC;IAGnF,GAAG,EAAE,CAAC,OAAO,EACX,EAAE,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,EACpC,MAAM,CAAC,EAAE,MAAM,KACZ,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAGlC,MAAM,EAAE,CACN,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAC,EAClF,OAAO,CAAC,EAAE,yBAAyB,KAChC,IAAI,CAAC;IAGV,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAG7B,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,eAAO,MAAM,mBAAmB,kEAA4C,CAAC;AAE7E,wBAAgB,eAAe,IAAI,wBAAwB,CAM1D"}
1
+ {"version":3,"file":"NotificationContext.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/notification/NotificationContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpE,YAAY;AACZ,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE1E,eAAe;AACf,MAAM,WAAW,kBAAkB;IACjC,aAAa;IACb,KAAK,EAAE,MAAM,CAAC;IACd,aAAa;IACb,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,YAAY;AACZ,MAAM,WAAW,gBAAgB;IAC/B,aAAa;IACb,EAAE,EAAE,MAAM,CAAC;IACX,0CAA0C;IAC1C,KAAK,EAAE,iBAAiB,CAAC;IACzB,YAAY;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB;IACjB,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,YAAY;IACZ,SAAS,EAAE,IAAI,CAAC;IAChB,YAAY;IACZ,IAAI,EAAE,OAAO,CAAC;CACf;AAED,eAAe;AACf,MAAM,WAAW,mBAAmB;IAClC,oBAAoB;IACpB,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B;AAED,eAAe;AACf,MAAM,WAAW,yBAAyB;IACxC,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,wBAAwB;IAEvC,KAAK,EAAE,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACpC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9B,YAAY,EAAE,QAAQ,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;IAGrD,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,KAAK,MAAM,CAAC;IACjF,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,KAAK,MAAM,CAAC;IACpF,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,KAAK,MAAM,CAAC;IACpF,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,KAAK,MAAM,CAAC;IAGnF,GAAG,EAAE,CAAC,OAAO,EACX,EAAE,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,EACpC,MAAM,CAAC,EAAE,MAAM,KACZ,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAGlC,MAAM,EAAE,CACN,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAC,EAClF,OAAO,CAAC,EAAE,yBAAyB,KAChC,IAAI,CAAC;IAGV,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAG7B,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,qBAAqB;AACrB,eAAO,MAAM,mBAAmB,kEAA4C,CAAC;AAE7E;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,wBAAwB,CAM1D"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/feedback/notification/NotificationContext.ts"],
4
- "mappings": "AAAA,SAAS,eAAe,kBAAiC;AA8DlD,MAAM,sBAAsB,cAAwC;AAEpE,SAAS,kBAA4C;AAC1D,QAAM,UAAU,WAAW,mBAAmB;AAC9C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,8HAAwD;AAAA,EAC1E;AACA,SAAO;AACT;",
4
+ "mappings": "AAAA,SAAS,eAAe,kBAAiC;AAsFlD,MAAM,sBAAsB,cAAwC;AAOpE,SAAS,kBAA4C;AAC1D,QAAM,UAAU,WAAW,mBAAmB;AAC9C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,8HAAwD;AAAA,EAC1E;AACA,SAAO;AACT;",
5
5
  "names": []
6
6
  }
@@ -1,3 +1,12 @@
1
1
  import { type ParentComponent } from "solid-js";
2
+ /**
3
+ * 알림 시스템 Provider
4
+ *
5
+ * @remarks
6
+ * - 최대 50개 알림 유지 (초과 시 오래된 항목 자동 제거)
7
+ * - 읽지 않은 최신 알림을 배너로 표시
8
+ * - 스크린 리더용 aria-live region 포함
9
+ * - LoggerProvider가 있으면 에러 알림을 로거에도 기록
10
+ */
2
11
  export declare const NotificationProvider: ParentComponent;
3
12
  //# sourceMappingURL=NotificationProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NotificationProvider.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/notification/NotificationProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAkC,MAAM,UAAU,CAAC;AAahF,eAAO,MAAM,oBAAoB,EAAE,eAuJlC,CAAC"}
1
+ {"version":3,"file":"NotificationProvider.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/notification/NotificationProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAkC,MAAM,UAAU,CAAC;AAahF;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,EAAE,eAuJlC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/feedback/notification/NotificationProvider.tsx"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["createSignal", "createMemo", "Show", "NotificationContext", "useLogger", "MAX_ITEMS", "NotificationProvider", "props", "logger", "items", "setItems", "dismissedBannerId", "setDismissedBannerId", "unreadItems", "filter", "i", "read", "unreadCount", "length", "latestUnread", "latest", "at", "undefined", "id", "addNotification", "theme", "title", "message", "options", "crypto", "randomUUID", "newItem", "action", "createdAt", "Date", "prev", "updated", "slice", "info", "success", "warning", "danger", "tryFn", "fn", "header", "err", "Error", "error", "stack", "update", "updates", "map", "item", "renotify", "remove", "markAsRead", "markAllAsRead", "dismissBanner", "clear", "contextValue", "try", "_$createComponent", "Provider", "value", "children", "_el$", "_tmpl$", "_$insert", "when", "_$memo"]
6
6
  }
@@ -1,9 +1,11 @@
1
- interface Logger {
1
+ import { type LogAdapter } from "../providers/LoggerContext";
2
+ export interface Logger {
2
3
  log: (...args: unknown[]) => void;
3
4
  info: (...args: unknown[]) => void;
4
5
  warn: (...args: unknown[]) => void;
5
6
  error: (...args: unknown[]) => void;
7
+ /** LogAdapter를 나중에 주입. LoggerProvider 내부에서만 사용 가능 */
8
+ configure: (adapter: LogAdapter) => void;
6
9
  }
7
10
  export declare function useLogger(): Logger;
8
- export {};
9
11
  //# sourceMappingURL=useLogger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useLogger.d.ts","sourceRoot":"","sources":["../../src/hooks/useLogger.ts"],"names":[],"mappings":"AAKA,UAAU,MAAM;IACd,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAClC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACrC;AAED,wBAAgB,SAAS,IAAI,MAAM,CAmBlC"}
1
+ {"version":3,"file":"useLogger.d.ts","sourceRoot":"","sources":["../../src/hooks/useLogger.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAI5E,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAClC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACpC,qDAAqD;IACrD,SAAS,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,CAAC;CAC1C;AAED,wBAAgB,SAAS,IAAI,MAAM,CA2BlC"}
@@ -1,11 +1,12 @@
1
1
  import { consola } from "consola";
2
2
  import { useLogAdapter } from "../providers/LoggerContext.js";
3
3
  function useLogger() {
4
- const logAdapter = useLogAdapter();
4
+ const loggerCtx = useLogAdapter();
5
5
  const createLogFunction = (level) => {
6
6
  return (...args) => {
7
- if (logAdapter) {
8
- void logAdapter.write(level, ...args);
7
+ const adapter = loggerCtx == null ? void 0 : loggerCtx.adapter();
8
+ if (adapter) {
9
+ void adapter.write(level, ...args);
9
10
  } else {
10
11
  consola[level](...args);
11
12
  }
@@ -15,7 +16,13 @@ function useLogger() {
15
16
  log: createLogFunction("log"),
16
17
  info: createLogFunction("info"),
17
18
  warn: createLogFunction("warn"),
18
- error: createLogFunction("error")
19
+ error: createLogFunction("error"),
20
+ configure: (adapter) => {
21
+ if (!loggerCtx) {
22
+ throw new Error("configure()\uB294 LoggerProvider \uB0B4\uBD80\uC5D0\uC11C\uB9CC \uC0AC\uC6A9\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4");
23
+ }
24
+ loggerCtx.configure(adapter);
25
+ }
19
26
  };
20
27
  }
21
28
  export {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/hooks/useLogger.ts"],
4
- "mappings": "AAAA,SAAS,eAAe;AACxB,SAAS,qBAAsC;AAWxC,SAAS,YAAoB;AAClC,QAAM,aAAa,cAAc;AAEjC,QAAM,oBAAoB,CAAC,UAAoB;AAC7C,WAAO,IAAI,SAAoB;AAC7B,UAAI,YAAY;AACd,aAAK,WAAW,MAAM,OAAO,GAAG,IAAI;AAAA,MACtC,OAAO;AACL,QAAC,QAAgB,KAAK,EAAE,GAAG,IAAI;AAAA,MACjC;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,KAAK,kBAAkB,KAAK;AAAA,IAC5B,MAAM,kBAAkB,MAAM;AAAA,IAC9B,MAAM,kBAAkB,MAAM;AAAA,IAC9B,OAAO,kBAAkB,OAAO;AAAA,EAClC;AACF;",
4
+ "mappings": "AAAA,SAAS,eAAe;AACxB,SAAS,qBAAsC;AAaxC,SAAS,YAAoB;AAClC,QAAM,YAAY,cAAc;AAEhC,QAAM,oBAAoB,CAAC,UAAoB;AAC7C,WAAO,IAAI,SAAoB;AAE7B,YAAM,UAAU,uCAAW;AAC3B,UAAI,SAAS;AACX,aAAK,QAAQ,MAAM,OAAO,GAAG,IAAI;AAAA,MACnC,OAAO;AACL,QAAC,QAAgB,KAAK,EAAE,GAAG,IAAI;AAAA,MACjC;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,KAAK,kBAAkB,KAAK;AAAA,IAC5B,MAAM,kBAAkB,MAAM;AAAA,IAC9B,MAAM,kBAAkB,MAAM;AAAA,IAC9B,OAAO,kBAAkB,OAAO;AAAA,IAChC,WAAW,CAAC,YAAwB;AAClC,UAAI,CAAC,WAAW;AACd,cAAM,IAAI,MAAM,oHAA8C;AAAA,MAChE;AACA,gBAAU,UAAU,OAAO;AAAA,IAC7B;AAAA,EACF;AACF;",
5
5
  "names": []
6
6
  }
@@ -5,6 +5,8 @@ import { type Accessor, type Setter } from "solid-js";
5
5
  * Uses `SyncStorageProvider` storage if available, otherwise falls back to `localStorage`.
6
6
  * Designed for data that should persist and sync across devices (e.g., theme, user preferences, DataSheet configs).
7
7
  *
8
+ * When the adapter changes via `useSyncStorage().configure()`, re-reads from the new adapter.
9
+ *
8
10
  * @param key - Storage key for the config value
9
11
  * @param defaultValue - Default value if no stored value exists
10
12
  * @returns Tuple of [value accessor, value setter, ready state accessor]
@@ -1 +1 @@
1
- {"version":3,"file":"useSyncConfig.d.ts","sourceRoot":"","sources":["../../src/hooks/useSyncConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,MAAM,EAA8B,MAAM,UAAU,CAAC;AAIlF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAClC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,GACnB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAuEvD"}
1
+ {"version":3,"file":"useSyncConfig.d.ts","sourceRoot":"","sources":["../../src/hooks/useSyncConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,MAAM,EAAuC,MAAM,UAAU,CAAC;AAI3F;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAClC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,GACnB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CA4EvD"}
@@ -1,53 +1,57 @@
1
- import { createEffect, createSignal } from "solid-js";
1
+ import { createEffect, createSignal, untrack } from "solid-js";
2
2
  import { useConfig } from "../providers/ConfigContext.js";
3
3
  import { useSyncStorage } from "../providers/SyncStorageContext.js";
4
4
  function useSyncConfig(key, defaultValue) {
5
5
  const config = useConfig();
6
- const syncStorage = useSyncStorage();
6
+ const syncStorageCtx = useSyncStorage();
7
7
  const prefixedKey = `${config.clientName}.${key}`;
8
8
  const [value, setValue] = createSignal(defaultValue);
9
9
  const [ready, setReady] = createSignal(false);
10
- const initializeFromStorage = async () => {
11
- if (!syncStorage) {
12
- try {
13
- const stored = localStorage.getItem(prefixedKey);
14
- if (stored !== null) {
15
- setValue(() => JSON.parse(stored));
10
+ createEffect(() => {
11
+ const currentAdapter = syncStorageCtx == null ? void 0 : syncStorageCtx.adapter();
12
+ setReady(false);
13
+ void (async () => {
14
+ if (!currentAdapter) {
15
+ try {
16
+ const stored = localStorage.getItem(prefixedKey);
17
+ if (stored !== null) {
18
+ setValue(() => JSON.parse(stored));
19
+ }
20
+ } catch {
16
21
  }
17
- } catch {
22
+ setReady(true);
23
+ return;
18
24
  }
19
- setReady(true);
20
- return;
21
- }
22
- try {
23
- const stored = await syncStorage.getItem(prefixedKey);
24
- if (stored !== null) {
25
- setValue(() => JSON.parse(stored));
26
- }
27
- } catch {
28
25
  try {
29
- const stored = localStorage.getItem(prefixedKey);
26
+ const stored = await currentAdapter.getItem(prefixedKey);
30
27
  if (stored !== null) {
31
28
  setValue(() => JSON.parse(stored));
32
29
  }
33
30
  } catch {
31
+ try {
32
+ const stored = localStorage.getItem(prefixedKey);
33
+ if (stored !== null) {
34
+ setValue(() => JSON.parse(stored));
35
+ }
36
+ } catch {
37
+ }
38
+ } finally {
39
+ setReady(true);
34
40
  }
35
- } finally {
36
- setReady(true);
37
- }
38
- };
39
- void initializeFromStorage();
41
+ })();
42
+ });
40
43
  createEffect(() => {
41
44
  if (!ready()) return;
42
45
  const currentValue = value();
43
46
  const serialized = JSON.stringify(currentValue);
44
- if (!syncStorage) {
47
+ const currentAdapter = untrack(() => syncStorageCtx == null ? void 0 : syncStorageCtx.adapter());
48
+ if (!currentAdapter) {
45
49
  localStorage.setItem(prefixedKey, serialized);
46
50
  return;
47
51
  }
48
52
  void (async () => {
49
53
  try {
50
- await syncStorage.setItem(prefixedKey, serialized);
54
+ await currentAdapter.setItem(prefixedKey, serialized);
51
55
  } catch {
52
56
  localStorage.setItem(prefixedKey, serialized);
53
57
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/hooks/useSyncConfig.ts"],
4
- "mappings": "AAAA,SAAqC,cAAc,oBAAoB;AACvE,SAAS,iBAAiB;AAC1B,SAAS,sBAAsB;AAuBxB,SAAS,cACd,KACA,cACuD;AACvD,QAAM,SAAS,UAAU;AACzB,QAAM,cAAc,eAAe;AACnC,QAAM,cAAc,GAAG,OAAO,UAAU,IAAI,GAAG;AAC/C,QAAM,CAAC,OAAO,QAAQ,IAAI,aAAqB,YAAY;AAC3D,QAAM,CAAC,OAAO,QAAQ,IAAI,aAAa,KAAK;AAG5C,QAAM,wBAAwB,YAAY;AACxC,QAAI,CAAC,aAAa;AAEhB,UAAI;AACF,cAAM,SAAS,aAAa,QAAQ,WAAW;AAC/C,YAAI,WAAW,MAAM;AACnB,mBAAS,MAAM,KAAK,MAAM,MAAM,CAAW;AAAA,QAC7C;AAAA,MACF,QAAQ;AAAA,MAER;AACA,eAAS,IAAI;AACb;AAAA,IACF;AAGA,QAAI;AACF,YAAM,SAAS,MAAM,YAAY,QAAQ,WAAW;AACpD,UAAI,WAAW,MAAM;AACnB,iBAAS,MAAM,KAAK,MAAM,MAAM,CAAW;AAAA,MAC7C;AAAA,IACF,QAAQ;AAEN,UAAI;AACF,cAAM,SAAS,aAAa,QAAQ,WAAW;AAC/C,YAAI,WAAW,MAAM;AACnB,mBAAS,MAAM,KAAK,MAAM,MAAM,CAAW;AAAA,QAC7C;AAAA,MACF,QAAQ;AAAA,MAER;AAAA,IACF,UAAE;AACA,eAAS,IAAI;AAAA,IACf;AAAA,EACF;AAGA,OAAK,sBAAsB;AAG3B,eAAa,MAAM;AACjB,QAAI,CAAC,MAAM,EAAG;AACd,UAAM,eAAe,MAAM;AAC3B,UAAM,aAAa,KAAK,UAAU,YAAY;AAE9C,QAAI,CAAC,aAAa;AAEhB,mBAAa,QAAQ,aAAa,UAAU;AAC5C;AAAA,IACF;AAGA,UAAM,YAAY;AAChB,UAAI;AACF,cAAM,YAAY,QAAQ,aAAa,UAAU;AAAA,MACnD,QAAQ;AAEN,qBAAa,QAAQ,aAAa,UAAU;AAAA,MAC9C;AAAA,IACF,GAAG;AAAA,EACL,CAAC;AAED,SAAO,CAAC,OAAO,UAAU,KAAK;AAChC;",
4
+ "mappings": "AAAA,SAAqC,cAAc,cAAc,eAAe;AAChF,SAAS,iBAAiB;AAC1B,SAAS,sBAAsB;AAyBxB,SAAS,cACd,KACA,cACuD;AACvD,QAAM,SAAS,UAAU;AACzB,QAAM,iBAAiB,eAAe;AACtC,QAAM,cAAc,GAAG,OAAO,UAAU,IAAI,GAAG;AAC/C,QAAM,CAAC,OAAO,QAAQ,IAAI,aAAqB,YAAY;AAC3D,QAAM,CAAC,OAAO,QAAQ,IAAI,aAAa,KAAK;AAG5C,eAAa,MAAM;AACjB,UAAM,iBAAiB,iDAAgB;AACvC,aAAS,KAAK;AAEd,UAAM,YAAY;AAChB,UAAI,CAAC,gBAAgB;AAEnB,YAAI;AACF,gBAAM,SAAS,aAAa,QAAQ,WAAW;AAC/C,cAAI,WAAW,MAAM;AACnB,qBAAS,MAAM,KAAK,MAAM,MAAM,CAAW;AAAA,UAC7C;AAAA,QACF,QAAQ;AAAA,QAER;AACA,iBAAS,IAAI;AACb;AAAA,MACF;AAGA,UAAI;AACF,cAAM,SAAS,MAAM,eAAe,QAAQ,WAAW;AACvD,YAAI,WAAW,MAAM;AACnB,mBAAS,MAAM,KAAK,MAAM,MAAM,CAAW;AAAA,QAC7C;AAAA,MACF,QAAQ;AAEN,YAAI;AACF,gBAAM,SAAS,aAAa,QAAQ,WAAW;AAC/C,cAAI,WAAW,MAAM;AACnB,qBAAS,MAAM,KAAK,MAAM,MAAM,CAAW;AAAA,UAC7C;AAAA,QACF,QAAQ;AAAA,QAER;AAAA,MACF,UAAE;AACA,iBAAS,IAAI;AAAA,MACf;AAAA,IACF,GAAG;AAAA,EACL,CAAC;AAGD,eAAa,MAAM;AACjB,QAAI,CAAC,MAAM,EAAG;AACd,UAAM,eAAe,MAAM;AAC3B,UAAM,aAAa,KAAK,UAAU,YAAY;AAG9C,UAAM,iBAAiB,QAAQ,MAAM,iDAAgB,SAAS;AAE9D,QAAI,CAAC,gBAAgB;AAEnB,mBAAa,QAAQ,aAAa,UAAU;AAC5C;AAAA,IACF;AAGA,UAAM,YAAY;AAChB,UAAI;AACF,cAAM,eAAe,QAAQ,aAAa,UAAU;AAAA,MACtD,QAAQ;AAEN,qBAAa,QAAQ,aAAa,UAAU;AAAA,MAC9C;AAAA,IACF,GAAG;AAAA,EACL,CAAC;AAED,SAAO,CAAC,OAAO,UAAU,KAAK;AAChC;",
5
5
  "names": []
6
6
  }