@j-solution/components 1.8.0 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/README.md +413 -415
  2. package/assets/jwms-portal-frontend-Ct2Tc7yj.css +1 -0
  3. package/assets/styles/j-components.css +1 -1
  4. package/assets/styles/themes.css +422 -422
  5. package/components/atoms/JButton.vue.cjs +1 -1
  6. package/components/atoms/JButton.vue.js +1 -1
  7. package/components/atoms/JButton.vue2.cjs.map +1 -1
  8. package/components/atoms/JButton.vue2.js.map +1 -1
  9. package/components/atoms/JLabel.vue.cjs.map +1 -1
  10. package/components/atoms/JLabel.vue.js.map +1 -1
  11. package/components/molecules/JTabs.vue.cjs +1 -1
  12. package/components/molecules/JTabs.vue.js +1 -1
  13. package/components/molecules/JTabs.vue2.cjs.map +1 -1
  14. package/components/molecules/JTabs.vue2.js.map +1 -1
  15. package/components/organisms/JDynamicTabs.vue.cjs.map +1 -1
  16. package/components/organisms/JDynamicTabs.vue.js.map +1 -1
  17. package/components/organisms/JFilterBar.vue.cjs +1 -1
  18. package/components/organisms/JFilterBar.vue.js +2 -2
  19. package/components/organisms/JFilterBar.vue2.cjs +1 -1
  20. package/components/organisms/JFilterBar.vue2.cjs.map +1 -1
  21. package/components/organisms/JFilterBar.vue2.js +14 -12
  22. package/components/organisms/JFilterBar.vue2.js.map +1 -1
  23. package/components/organisms/JPageContainer.vue.cjs.map +1 -1
  24. package/components/organisms/JPageContainer.vue.js.map +1 -1
  25. package/components/organisms/JSidebar/JSidebar.vue.cjs +2 -0
  26. package/components/organisms/JSidebar/JSidebar.vue.cjs.map +1 -0
  27. package/components/organisms/JSidebar/JSidebar.vue.js +189 -0
  28. package/components/organisms/JSidebar/JSidebar.vue.js.map +1 -0
  29. package/components/organisms/JSidebar/JSidebar.vue2.cjs +2 -0
  30. package/components/organisms/JSidebar/JSidebar.vue2.cjs.map +1 -0
  31. package/components/organisms/JSidebar/JSidebar.vue2.js +5 -0
  32. package/components/organisms/JSidebar/JSidebar.vue2.js.map +1 -0
  33. package/components/organisms/JSidebar/JSidebarGroup.vue.cjs +2 -0
  34. package/components/organisms/JSidebar/JSidebarGroup.vue.cjs.map +1 -0
  35. package/components/organisms/JSidebar/JSidebarGroup.vue.js +89 -0
  36. package/components/organisms/JSidebar/JSidebarGroup.vue.js.map +1 -0
  37. package/components/organisms/JSidebar/JSidebarGroup.vue2.cjs +2 -0
  38. package/components/organisms/JSidebar/JSidebarGroup.vue2.cjs.map +1 -0
  39. package/components/organisms/JSidebar/JSidebarGroup.vue2.js +5 -0
  40. package/components/organisms/JSidebar/JSidebarGroup.vue2.js.map +1 -0
  41. package/components/organisms/JSidebar/JSidebarItem.vue.cjs +2 -0
  42. package/components/organisms/JSidebar/JSidebarItem.vue.cjs.map +1 -0
  43. package/components/organisms/JSidebar/JSidebarItem.vue.js +79 -0
  44. package/components/organisms/JSidebar/JSidebarItem.vue.js.map +1 -0
  45. package/components/organisms/JSidebar/JSidebarItem.vue2.cjs +2 -0
  46. package/components/organisms/JSidebar/JSidebarItem.vue2.cjs.map +1 -0
  47. package/components/organisms/JSidebar/JSidebarItem.vue2.js +5 -0
  48. package/components/organisms/JSidebar/JSidebarItem.vue2.js.map +1 -0
  49. package/components/shadcn/Card.vue.cjs.map +1 -1
  50. package/components/shadcn/Card.vue.js.map +1 -1
  51. package/components/shadcn/CardContent.vue.cjs.map +1 -1
  52. package/components/shadcn/CardContent.vue.js.map +1 -1
  53. package/components/shadcn/CardHeader.vue.cjs.map +1 -1
  54. package/components/shadcn/CardHeader.vue.js.map +1 -1
  55. package/components/shadcn/Input.vue.cjs.map +1 -1
  56. package/components/shadcn/Input.vue.js.map +1 -1
  57. package/components/shadcn/SelectTrigger.vue.cjs.map +1 -1
  58. package/components/shadcn/SelectTrigger.vue.js.map +1 -1
  59. package/components/shadcn/TabsContent.vue.cjs.map +1 -1
  60. package/components/shadcn/TabsContent.vue.js.map +1 -1
  61. package/components/shadcn/Textarea.vue.cjs.map +1 -1
  62. package/components/shadcn/Textarea.vue.js.map +1 -1
  63. package/components/shadcn/index.cjs.map +1 -1
  64. package/components/shadcn/index.js.map +1 -1
  65. package/components/templates/JLayout.vue.cjs.map +1 -1
  66. package/components/templates/JLayout.vue.js.map +1 -1
  67. package/components/templates/JLayoutSimple.vue.cjs +1 -1
  68. package/components/templates/JLayoutSimple.vue.cjs.map +1 -1
  69. package/components/templates/JLayoutSimple.vue.js +36 -30
  70. package/components/templates/JLayoutSimple.vue.js.map +1 -1
  71. package/index.cjs +1 -1
  72. package/index.js +22 -20
  73. package/package.json +1 -1
  74. package/types/index.d.ts +119 -61
  75. package/types/sidebar.types.cjs +2 -0
  76. package/types/sidebar.types.cjs.map +1 -0
  77. package/types/sidebar.types.js +5 -0
  78. package/types/sidebar.types.js.map +1 -0
  79. package/assets/jwms-portal-frontend-BtHTA-UF.css +0 -1
package/types/index.d.ts CHANGED
@@ -285,10 +285,10 @@ defaultTheme: string;
285
285
  availableThemes: string[];
286
286
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLElement>;
287
287
 
288
- declare const __VLS_component_23: DefineComponent<__VLS_Props_37, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
288
+ declare const __VLS_component_23: DefineComponent<__VLS_Props_38, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
289
289
  breadcrumbClick: (item: BreadcrumbItem, index: number) => any;
290
290
  titlebarButtonClick: (button: TitlebarButton) => any;
291
- }, string, PublicProps, Readonly<__VLS_Props_37> & Readonly<{
291
+ }, string, PublicProps, Readonly<__VLS_Props_38> & Readonly<{
292
292
  onBreadcrumbClick?: ((item: BreadcrumbItem, index: number) => any) | undefined;
293
293
  onTitlebarButtonClick?: ((button: TitlebarButton) => any) | undefined;
294
294
  }>, {
@@ -299,14 +299,17 @@ showTitlebar: boolean;
299
299
  contentScroll: boolean;
300
300
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
301
301
 
302
- declare const __VLS_component_24: DefineComponent<__VLS_Props_39, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_39> & Readonly<{}>, {
302
+ declare const __VLS_component_24: DefineComponent<__VLS_Props_40, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_40> & Readonly<{}>, {
303
303
  styletype: StyleType_29;
304
304
  contentScroll: boolean;
305
305
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
306
306
 
307
- declare const __VLS_component_25: DefineComponent<__VLS_Props_40, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_40> & Readonly<{}>, {
307
+ declare const __VLS_component_25: DefineComponent<__VLS_Props_41, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
308
+ "menu-click": (item: SidebarMenuItem, event: MouseEvent) => any;
309
+ }, string, PublicProps, Readonly<__VLS_Props_41> & Readonly<{
310
+ "onMenu-click"?: ((item: SidebarMenuItem, event: MouseEvent) => any) | undefined;
311
+ }>, {
308
312
  styletype: "default" | "minimal";
309
- permissions: MenuPermission[];
310
313
  menuItems: SidebarMenuItem[];
311
314
  contentScroll: boolean;
312
315
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
@@ -858,9 +861,35 @@ declare type __VLS_Props_34 = {
858
861
  availableThemes?: string[];
859
862
  };
860
863
 
864
+ /**
865
+ * JSidebar - 통합 사이드바 컴포넌트
866
+ *
867
+ * DB 트리 데이터 기반, provide/inject로 상태 공유.
868
+ * collapsed 모드, 검색, 즐겨찾기(localStorage) 지원.
869
+ * 라우터를 모름 — @menu-click으로 아이템을 올려보냄.
870
+ */
861
871
  declare type __VLS_Props_35 = {
872
+ /** 메뉴 트리 데이터 */
873
+ items: SidebarMenuItem[];
874
+ /** 접힘 상태 (v-model:collapsed) */
875
+ collapsed?: boolean;
876
+ /** 현재 활성 경로 */
877
+ activePath?: string;
878
+ /** 펼침 너비 */
879
+ width?: string;
880
+ /** 접힘 너비 */
881
+ collapsedWidth?: string;
882
+ /** 즐겨찾기 localStorage 키 (없으면 즐겨찾기 비활성) */
883
+ storageKey?: string;
884
+ /** 검색 표시 여부 */
885
+ showSearch?: boolean;
886
+ /** 즐겨찾기 섹션 표시 여부 */
887
+ showFavorites?: boolean;
888
+ };
889
+
890
+ declare type __VLS_Props_36 = {
862
891
  /** 메뉴 아이템 목록 */
863
- menuItems: SidebarMenuItem[];
892
+ menuItems: SidebarMenuItem_2[];
864
893
  /** 권한 목록 */
865
894
  permissions?: MenuPermission[];
866
895
  /** 검색어 */
@@ -875,9 +904,9 @@ declare type __VLS_Props_35 = {
875
904
  isVisible?: boolean;
876
905
  };
877
906
 
878
- declare type __VLS_Props_36 = {
907
+ declare type __VLS_Props_37 = {
879
908
  /** 메뉴 아이템 목록 */
880
- menuItems: SidebarMenuItem[];
909
+ menuItems: SidebarMenuItem_2[];
881
910
  /** 권한 목록 */
882
911
  permissions?: MenuPermission[];
883
912
  /** 즐겨찾기 메뉴 키 목록 */
@@ -892,7 +921,7 @@ declare type __VLS_Props_36 = {
892
921
  isVisible?: boolean;
893
922
  };
894
923
 
895
- declare type __VLS_Props_37 = {
924
+ declare type __VLS_Props_38 = {
896
925
  /** 브레드크럼 아이템 목록 */
897
926
  breadcrumbItems?: BreadcrumbItem[];
898
927
  /** 브레드크럼 표시 여부 */
@@ -913,9 +942,9 @@ declare type __VLS_Props_37 = {
913
942
  class?: string;
914
943
  };
915
944
 
916
- declare type __VLS_Props_38 = {
945
+ declare type __VLS_Props_39 = {
917
946
  /** 트리 노드 데이터 */
918
- items: SidebarMenuItem[];
947
+ items: SidebarMenuItem_2[];
919
948
  /** 펼쳐진 노드 키 목록 (v-model 지원, 배열) */
920
949
  expandedKeys?: (number | string)[];
921
950
  /** 현재 선택(하이라이트)된 노드의 menuKey (v-model 지원) */
@@ -932,15 +961,6 @@ declare type __VLS_Props_38 = {
932
961
  class?: string;
933
962
  };
934
963
 
935
- declare type __VLS_Props_39 = {
936
- /** 레이아웃 스타일 타입 */
937
- styletype?: StyleType_29;
938
- /** 콘텐츠 영역 스크롤 가능 여부 */
939
- contentScroll?: boolean;
940
- /** 추가 CSS 클래스 */
941
- class?: string;
942
- };
943
-
944
964
  declare type __VLS_Props_4 = {
945
965
  modelValue?: string;
946
966
  disabled?: boolean;
@@ -952,37 +972,28 @@ declare type __VLS_Props_4 = {
952
972
  styletype?: StyleType_4;
953
973
  };
954
974
 
975
+ declare type __VLS_Props_40 = {
976
+ /** 레이아웃 스타일 타입 */
977
+ styletype?: StyleType_29;
978
+ /** 콘텐츠 영역 스크롤 가능 여부 */
979
+ contentScroll?: boolean;
980
+ /** 추가 CSS 클래스 */
981
+ class?: string;
982
+ };
983
+
955
984
  /**
956
- * JLayoutSimple - Simple Sidebar + 일반 PageContainer 조합 템플릿 (templates)
957
- * Simple Layout Template
958
- *
959
- * @description
960
- * JLayout을 사용하는 Preset 템플릿입니다.
961
- * JHeader, JSidebarSimple, JPageContainer를 조합한 기본 레이아웃 예시를 제공합니다.
962
- *
963
- * 레이아웃 구조:
964
- * - header: 상단 헤더 영역 (슬롯)
965
- * - sidebar: 사이드바 영역 (슬롯)
966
- * - content: 메인 콘텐츠 영역 (슬롯, 기본 슬롯)
985
+ * JLayoutSimple - JSidebar + 일반 PageContainer 조합 템플릿
967
986
  *
968
987
  * @example
969
988
  * ```vue
970
- * <JLayoutSimple styletype="default" :content-scroll="true">
971
- * <template #header>
972
- * <JHeader logo-text="JWMS Portal" :user-name="userName" styletype="default" />
973
- * </template>
974
- * <template #sidebar>
975
- * <JSidebarSimple :menu-items="menuItems" styletype="default" />
976
- * </template>
989
+ * <JLayoutSimple :menu-items="menuItems" storage-key="my-app-favorites">
977
990
  * <template #content>
978
- * <JPageContainer title="재고 관리">
979
- * <div>페이지 콘텐츠</div>
980
- * </JPageContainer>
991
+ * <RouterView />
981
992
  * </template>
982
993
  * </JLayoutSimple>
983
994
  * ```
984
995
  */
985
- declare type __VLS_Props_40 = {
996
+ declare type __VLS_Props_41 = {
986
997
  /** 레이아웃 스타일 타입 */
987
998
  styletype?: 'default' | 'minimal';
988
999
  /** 콘텐츠 영역 스크롤 가능 여부 */
@@ -991,8 +1002,10 @@ declare type __VLS_Props_40 = {
991
1002
  class?: string;
992
1003
  /** 메뉴 아이템 목록 */
993
1004
  menuItems?: SidebarMenuItem[];
994
- /** 권한 목록 */
995
- permissions?: MenuPermission[];
1005
+ /** 현재 활성 경로 */
1006
+ activePath?: string;
1007
+ /** 즐겨찾기 localStorage 키 */
1008
+ storageKey?: string;
996
1009
  };
997
1010
 
998
1011
  declare type __VLS_Props_5 = {
@@ -1289,11 +1302,11 @@ declare function __VLS_template_25(): {
1289
1302
  attrs: Partial<{}>;
1290
1303
  slots: {
1291
1304
  header?(_: {
1292
- isSidebarOpen: boolean;
1305
+ isSidebarCollapsed: boolean;
1293
1306
  onSidebarToggle: () => void;
1294
1307
  }): any;
1295
1308
  sidebar?(_: {
1296
- isSidebarOpen: boolean;
1309
+ isSidebarCollapsed: boolean;
1297
1310
  }): any;
1298
1311
  content?(_: {}): any;
1299
1312
  default?(_: {}): any;
@@ -3185,30 +3198,44 @@ declare interface JShuttleProps {
3185
3198
  class?: string;
3186
3199
  }
3187
3200
 
3188
- export declare const JSidebarAdvanced: DefineComponent<__VLS_Props_36, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
3201
+ export declare const JSidebar: DefineComponent<__VLS_Props_35, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
3202
+ "update:collapsed": (value: boolean) => any;
3203
+ "menu-click": (item: SidebarMenuItem, event: MouseEvent) => any;
3204
+ }, string, PublicProps, Readonly<__VLS_Props_35> & Readonly<{
3205
+ "onUpdate:collapsed"?: ((value: boolean) => any) | undefined;
3206
+ "onMenu-click"?: ((item: SidebarMenuItem, event: MouseEvent) => any) | undefined;
3207
+ }>, {
3208
+ width: string;
3209
+ collapsed: boolean;
3210
+ collapsedWidth: string;
3211
+ showSearch: boolean;
3212
+ showFavorites: boolean;
3213
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLElement>;
3214
+
3215
+ export declare const JSidebarAdvanced: DefineComponent<__VLS_Props_37, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
3189
3216
  menuClick: (event: MenuClickEvent) => any;
3190
3217
  favoriteChange: (menuKey: string | number | undefined, isFavorite: boolean) => any;
3191
- }, string, PublicProps, Readonly<__VLS_Props_36> & Readonly<{
3218
+ }, string, PublicProps, Readonly<__VLS_Props_37> & Readonly<{
3192
3219
  onMenuClick?: ((event: MenuClickEvent) => any) | undefined;
3193
3220
  onFavoriteChange?: ((menuKey: string | number | undefined, isFavorite: boolean) => any) | undefined;
3194
3221
  }>, {
3195
3222
  width: string;
3196
3223
  styletype: StyleType_26;
3197
3224
  isVisible: boolean;
3198
- permissions: MenuPermission[];
3199
3225
  favorites: (number | string)[];
3226
+ permissions: MenuPermission[];
3200
3227
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
3201
3228
 
3202
- export declare const JSidebarSimple: DefineComponent<__VLS_Props_35, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
3229
+ export declare const JSidebarSimple: DefineComponent<__VLS_Props_36, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
3203
3230
  menuClick: (event: MenuClickEvent) => any;
3204
- }, string, PublicProps, Readonly<__VLS_Props_35> & Readonly<{
3231
+ }, string, PublicProps, Readonly<__VLS_Props_36> & Readonly<{
3205
3232
  onMenuClick?: ((event: MenuClickEvent) => any) | undefined;
3206
3233
  }>, {
3207
3234
  width: string;
3208
3235
  styletype: StyleType_25;
3209
3236
  isVisible: boolean;
3210
- permissions: MenuPermission[];
3211
3237
  searchQuery: string;
3238
+ permissions: MenuPermission[];
3212
3239
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
3213
3240
 
3214
3241
  export declare const JSpinner: DefineComponent<__VLS_Props_16, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_16> & Readonly<{}>, {
@@ -3284,23 +3311,23 @@ closeButton: boolean;
3284
3311
 
3285
3312
  export declare const JTooltip: __VLS_WithTemplateSlots_6<typeof __VLS_component_6, __VLS_TemplateResult_6["slots"]>;
3286
3313
 
3287
- export declare const JTree: DefineComponent<__VLS_Props_38, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
3314
+ export declare const JTree: DefineComponent<__VLS_Props_39, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
3288
3315
  expandChange: (menuKey: string | number | undefined, expanded: boolean) => any;
3289
3316
  nodeClick: (event: MenuClickEvent) => any;
3290
3317
  "update:expandedKeys": (keys: (string | number)[]) => any;
3291
3318
  "update:activeKey": (key: string | number | null) => any;
3292
- }, string, PublicProps, Readonly<__VLS_Props_38> & Readonly<{
3319
+ }, string, PublicProps, Readonly<__VLS_Props_39> & Readonly<{
3293
3320
  onExpandChange?: ((menuKey: string | number | undefined, expanded: boolean) => any) | undefined;
3294
3321
  onNodeClick?: ((event: MenuClickEvent) => any) | undefined;
3295
3322
  "onUpdate:expandedKeys"?: ((keys: (string | number)[]) => any) | undefined;
3296
3323
  "onUpdate:activeKey"?: ((key: string | number | null) => any) | undefined;
3297
3324
  }>, {
3298
3325
  styletype: StyleType_28;
3326
+ searchQuery: string;
3299
3327
  permissions: MenuPermission[];
3300
3328
  expandedKeys: (number | string)[];
3301
3329
  maxDepth: number;
3302
3330
  activeKey: number | string | null;
3303
- searchQuery: string;
3304
3331
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
3305
3332
 
3306
3333
  declare type LabelPosition = 'right' | 'left' | 'top' | 'bottom';
@@ -3316,9 +3343,9 @@ declare type LanguageType = 'K' | 'E';
3316
3343
  */
3317
3344
  declare interface MenuClickEvent {
3318
3345
  /** 클릭된 메뉴 아이템 */
3319
- menuItem: SidebarMenuItem;
3346
+ menuItem: SidebarMenuItem_2;
3320
3347
  /** 메뉴 경로 (부모 메뉴 포함) */
3321
- path: SidebarMenuItem[];
3348
+ path: SidebarMenuItem_2[];
3322
3349
  /** 이벤트 객체 */
3323
3350
  event: MouseEvent;
3324
3351
  }
@@ -3334,6 +3361,13 @@ declare interface MenuPermission {
3334
3361
  permissionLevel: number;
3335
3362
  }
3336
3363
 
3364
+ /**
3365
+ * JSidebar 타입 정의
3366
+ * JSidebar Type Definitions
3367
+ */
3368
+ /** 메뉴 타입: F=폴더(그룹), L=링크(페이지) */
3369
+ export declare type MenuType = 'F' | 'L';
3370
+
3337
3371
  /**
3338
3372
  * 사이드바 메뉴 관련 타입 정의
3339
3373
  * Sidebar Menu Type Definitions
@@ -3343,7 +3377,7 @@ declare interface MenuPermission {
3343
3377
  * - 'F': Folder (폴더 - 하위 메뉴를 가지는 메뉴)
3344
3378
  * - 'L': Link (링크 - 실제 페이지로 이동하는 메뉴)
3345
3379
  */
3346
- declare type MenuType = 'F' | 'L';
3380
+ declare type MenuType_2 = 'F' | 'L';
3347
3381
 
3348
3382
  export declare type NotificationItem = {
3349
3383
  /** 알림 ID */
@@ -3433,23 +3467,47 @@ declare interface ShuttleItem {
3433
3467
  [key: string]: any;
3434
3468
  }
3435
3469
 
3470
+ /**
3471
+ * 사이드바 메뉴 아이템 (DB J_마스터_프로그램 트리 매핑)
3472
+ */
3473
+ export declare interface SidebarMenuItem {
3474
+ /** 프로그램 아이디 */
3475
+ id: string;
3476
+ /** 부모 아이디 */
3477
+ parentId?: string;
3478
+ /** 메뉴 표시 이름 */
3479
+ label: string;
3480
+ /** lucide 아이콘 이름 */
3481
+ icon?: string;
3482
+ /** 라우트 경로 (L 타입만) */
3483
+ path?: string;
3484
+ /** 메뉴 타입: F=폴더(그룹), L=링크(페이지) */
3485
+ menuType: MenuType;
3486
+ /** 정렬 순서 */
3487
+ sortOrder?: number;
3488
+ /** 하위 메뉴 (서버에서 트리로 변환) */
3489
+ children?: SidebarMenuItem[];
3490
+ /** 비활성화 여부 */
3491
+ disabled?: boolean;
3492
+ }
3493
+
3436
3494
  /**
3437
3495
  * 사이드바 메뉴 아이템
3438
3496
  * Sidebar Menu Item
3439
3497
  */
3440
- declare interface SidebarMenuItem {
3498
+ declare interface SidebarMenuItem_2 {
3441
3499
  /** 메뉴 표시 이름 */
3442
3500
  label: string;
3443
3501
  /** 메뉴 아이콘 이름 (lucide-vue-next 아이콘 이름 또는 컴포넌트) */
3444
3502
  icon?: string;
3445
3503
  /** 메뉴 타입 (Folder/Link) */
3446
- menuType?: MenuType;
3504
+ menuType?: MenuType_2;
3447
3505
  /** 메뉴 키 (권한 체크용) */
3448
3506
  menuKey?: number;
3449
3507
  /** 라우팅 경로 (menuType이 'L'일 때 사용) */
3450
3508
  path?: string;
3451
3509
  /** 하위 메뉴 목록 */
3452
- children?: SidebarMenuItem[];
3510
+ children?: SidebarMenuItem_2[];
3453
3511
  /** 비활성화 여부 */
3454
3512
  disabled?: boolean;
3455
3513
  /** 추가 메타데이터 */
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=Symbol("sidebar-state");exports.SIDEBAR_INJECTION_KEY=e;
2
+ //# sourceMappingURL=sidebar.types.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar.types.cjs","sources":["../../../src/types/sidebar.types.ts"],"sourcesContent":["/**\n * JSidebar 타입 정의\n * JSidebar Type Definitions\n */\n\n/** 메뉴 타입: F=폴더(그룹), L=링크(페이지) */\nexport type MenuType = 'F' | 'L'\n\n/**\n * 사이드바 메뉴 아이템 (DB J_마스터_프로그램 트리 매핑)\n */\nexport interface SidebarMenuItem {\n /** 프로그램 아이디 */\n id: string\n /** 부모 아이디 */\n parentId?: string\n /** 메뉴 표시 이름 */\n label: string\n /** lucide 아이콘 이름 */\n icon?: string\n /** 라우트 경로 (L 타입만) */\n path?: string\n /** 메뉴 타입: F=폴더(그룹), L=링크(페이지) */\n menuType: MenuType\n /** 정렬 순서 */\n sortOrder?: number\n /** 하위 메뉴 (서버에서 트리로 변환) */\n children?: SidebarMenuItem[]\n /** 비활성화 여부 */\n disabled?: boolean\n}\n\n/**\n * 사이드바 내부 상태 (provide/inject)\n */\nexport interface SidebarState {\n /** 접힘 상태 */\n collapsed: boolean\n /** 현재 활성 경로 */\n activePath: string | undefined\n /** 즐겨찾기 id Set */\n favorites: Set<string>\n /** 즐겨찾기 토글 */\n toggleFavorite: (id: string) => void\n}\n\n// Vue InjectionKey 타입을 위한 import\nimport type { InjectionKey } from 'vue'\n\n/** provide/inject 키 */\nexport const SIDEBAR_INJECTION_KEY = Symbol('sidebar-state') as InjectionKey<SidebarState>\n"],"names":["SIDEBAR_INJECTION_KEY"],"mappings":"gFAkDO,MAAMA,SAA+B,eAAe"}
@@ -0,0 +1,5 @@
1
+ const t = /* @__PURE__ */ Symbol("sidebar-state");
2
+ export {
3
+ t as SIDEBAR_INJECTION_KEY
4
+ };
5
+ //# sourceMappingURL=sidebar.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar.types.js","sources":["../../../src/types/sidebar.types.ts"],"sourcesContent":["/**\n * JSidebar 타입 정의\n * JSidebar Type Definitions\n */\n\n/** 메뉴 타입: F=폴더(그룹), L=링크(페이지) */\nexport type MenuType = 'F' | 'L'\n\n/**\n * 사이드바 메뉴 아이템 (DB J_마스터_프로그램 트리 매핑)\n */\nexport interface SidebarMenuItem {\n /** 프로그램 아이디 */\n id: string\n /** 부모 아이디 */\n parentId?: string\n /** 메뉴 표시 이름 */\n label: string\n /** lucide 아이콘 이름 */\n icon?: string\n /** 라우트 경로 (L 타입만) */\n path?: string\n /** 메뉴 타입: F=폴더(그룹), L=링크(페이지) */\n menuType: MenuType\n /** 정렬 순서 */\n sortOrder?: number\n /** 하위 메뉴 (서버에서 트리로 변환) */\n children?: SidebarMenuItem[]\n /** 비활성화 여부 */\n disabled?: boolean\n}\n\n/**\n * 사이드바 내부 상태 (provide/inject)\n */\nexport interface SidebarState {\n /** 접힘 상태 */\n collapsed: boolean\n /** 현재 활성 경로 */\n activePath: string | undefined\n /** 즐겨찾기 id Set */\n favorites: Set<string>\n /** 즐겨찾기 토글 */\n toggleFavorite: (id: string) => void\n}\n\n// Vue InjectionKey 타입을 위한 import\nimport type { InjectionKey } from 'vue'\n\n/** provide/inject 키 */\nexport const SIDEBAR_INJECTION_KEY = Symbol('sidebar-state') as InjectionKey<SidebarState>\n"],"names":["SIDEBAR_INJECTION_KEY"],"mappings":"AAkDO,MAAMA,2BAA+B,eAAe;"}