@iyulab/components 0.1.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 (186) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/LICENSE +21 -0
  3. package/README.md +33 -0
  4. package/dist/assets/icons/arrow-clockwise.svg.js +7 -0
  5. package/dist/assets/icons/arrow-down.svg.js +6 -0
  6. package/dist/assets/icons/arrow-up.svg.js +6 -0
  7. package/dist/assets/icons/ban.svg.js +6 -0
  8. package/dist/assets/icons/bell-fill.svg.js +6 -0
  9. package/dist/assets/icons/check-circle-fill.svg.js +6 -0
  10. package/dist/assets/icons/check-lg.svg.js +6 -0
  11. package/dist/assets/icons/chevron-down.svg.js +6 -0
  12. package/dist/assets/icons/chevron-left.svg.js +6 -0
  13. package/dist/assets/icons/chevron-right.svg.js +6 -0
  14. package/dist/assets/icons/chevron-up.svg.js +6 -0
  15. package/dist/assets/icons/copy.svg.js +6 -0
  16. package/dist/assets/icons/dash-lg.svg.js +6 -0
  17. package/dist/assets/icons/exclamation-circle-fill.svg.js +6 -0
  18. package/dist/assets/icons/exclamation-triangle-fill.svg.js +6 -0
  19. package/dist/assets/icons/eye-slash.svg.js +8 -0
  20. package/dist/assets/icons/eye.svg.js +7 -0
  21. package/dist/assets/icons/info-circle-fill.svg.js +6 -0
  22. package/dist/assets/icons/layout-sidebar.svg.js +6 -0
  23. package/dist/assets/icons/lightbulb-fill.svg.js +6 -0
  24. package/dist/assets/icons/lightbulb-off.svg.js +6 -0
  25. package/dist/assets/icons/lightbulb.svg.js +6 -0
  26. package/dist/assets/icons/mic-fill.svg.js +7 -0
  27. package/dist/assets/icons/mic-mute-fill.svg.js +7 -0
  28. package/dist/assets/icons/paperclip.svg.js +6 -0
  29. package/dist/assets/icons/pencil-square.svg.js +7 -0
  30. package/dist/assets/icons/plus-lg.svg.js +6 -0
  31. package/dist/assets/icons/search.svg.js +6 -0
  32. package/dist/assets/icons/speedometer.svg.js +7 -0
  33. package/dist/assets/icons/x-lg.svg.js +6 -0
  34. package/dist/assets/styles/dark.css +126 -0
  35. package/dist/assets/styles/dark.css.js +4 -0
  36. package/dist/assets/styles/light.css +127 -0
  37. package/dist/assets/styles/light.css.js +4 -0
  38. package/dist/components/BaseElement.d.ts +33 -0
  39. package/dist/components/BaseElement.js +49 -0
  40. package/dist/components/BaseElement.styles.d.ts +1 -0
  41. package/dist/components/BaseElement.styles.js +29 -0
  42. package/dist/components/alert/Alert.d.ts +36 -0
  43. package/dist/components/alert/Alert.js +107 -0
  44. package/dist/components/alert/Alert.styles.d.ts +1 -0
  45. package/dist/components/alert/Alert.styles.js +114 -0
  46. package/dist/components/alert/index.d.ts +7 -0
  47. package/dist/components/button/Button.d.ts +16 -0
  48. package/dist/components/button/Button.js +45 -0
  49. package/dist/components/button/Button.styles.d.ts +1 -0
  50. package/dist/components/button/Button.styles.js +89 -0
  51. package/dist/components/button/index.d.ts +7 -0
  52. package/dist/components/context-menu/ContextMenu.d.ts +48 -0
  53. package/dist/components/context-menu/ContextMenu.js +142 -0
  54. package/dist/components/context-menu/ContextMenu.styles.d.ts +1 -0
  55. package/dist/components/context-menu/ContextMenu.styles.js +40 -0
  56. package/dist/components/context-menu/index.d.ts +7 -0
  57. package/dist/components/copy-button/CopyButton.d.ts +15 -0
  58. package/dist/components/copy-button/CopyButton.styles.d.ts +1 -0
  59. package/dist/components/copy-button/index.d.ts +7 -0
  60. package/dist/components/dialog/Dialog.d.ts +30 -0
  61. package/dist/components/dialog/Dialog.js +66 -0
  62. package/dist/components/dialog/Dialog.styles.d.ts +1 -0
  63. package/dist/components/dialog/Dialog.styles.js +32 -0
  64. package/dist/components/dialog/index.d.ts +7 -0
  65. package/dist/components/form/Form.d.ts +22 -0
  66. package/dist/components/form/Form.js +53 -0
  67. package/dist/components/form/Form.styles.d.ts +1 -0
  68. package/dist/components/form/Form.styles.js +18 -0
  69. package/dist/components/form/index.d.ts +7 -0
  70. package/dist/components/icon/Icon.d.ts +35 -0
  71. package/dist/components/icon/Icon.js +63 -0
  72. package/dist/components/icon/Icon.styles.d.ts +1 -0
  73. package/dist/components/icon/Icon.styles.js +17 -0
  74. package/dist/components/icon/index.d.ts +7 -0
  75. package/dist/components/icon-button/IconButton.d.ts +19 -0
  76. package/dist/components/icon-button/IconButton.js +51 -0
  77. package/dist/components/icon-button/IconButton.styles.d.ts +1 -0
  78. package/dist/components/icon-button/IconButton.styles.js +69 -0
  79. package/dist/components/icon-button/index.d.ts +7 -0
  80. package/dist/components/index.d.ts +14 -0
  81. package/dist/components/input/Input.d.ts +73 -0
  82. package/dist/components/input/Input.js +193 -0
  83. package/dist/components/input/Input.styles.d.ts +1 -0
  84. package/dist/components/input/Input.styles.js +149 -0
  85. package/dist/components/input/index.d.ts +7 -0
  86. package/dist/components/menu/Menu.d.ts +36 -0
  87. package/dist/components/menu/Menu.js +103 -0
  88. package/dist/components/menu/Menu.styles.d.ts +1 -0
  89. package/dist/components/menu/Menu.styles.js +33 -0
  90. package/dist/components/menu/index.d.ts +7 -0
  91. package/dist/components/menu-item/MenuItem.d.ts +27 -0
  92. package/dist/components/menu-item/MenuItem.js +68 -0
  93. package/dist/components/menu-item/MenuItem.styles.d.ts +1 -0
  94. package/dist/components/menu-item/MenuItem.styles.js +64 -0
  95. package/dist/components/menu-item/index.d.ts +7 -0
  96. package/dist/components/panel/Panel.d.ts +10 -0
  97. package/dist/components/panel/Panel.js +20 -0
  98. package/dist/components/panel/Panel.styles.d.ts +1 -0
  99. package/dist/components/panel/Panel.styles.js +12 -0
  100. package/dist/components/panel/index.d.ts +7 -0
  101. package/dist/components/progress-ring/ProgressRing.d.ts +31 -0
  102. package/dist/components/progress-ring/ProgressRing.js +85 -0
  103. package/dist/components/progress-ring/ProgressRing.styles.d.ts +1 -0
  104. package/dist/components/progress-ring/ProgressRing.styles.js +53 -0
  105. package/dist/components/progress-ring/index.d.ts +7 -0
  106. package/dist/components/spinner/Spinner.d.ts +9 -0
  107. package/dist/components/spinner/Spinner.js +22 -0
  108. package/dist/components/spinner/Spinner.styles.d.ts +1 -0
  109. package/dist/components/spinner/Spinner.styles.js +57 -0
  110. package/dist/components/spinner/index.d.ts +7 -0
  111. package/dist/components/split-panel/SplitPanel.d.ts +26 -0
  112. package/dist/components/split-panel/SplitPanel.js +86 -0
  113. package/dist/components/split-panel/SplitPanel.styles.d.ts +1 -0
  114. package/dist/components/split-panel/SplitPanel.styles.js +19 -0
  115. package/dist/components/split-panel/SplitPanel.types.d.ts +2 -0
  116. package/dist/components/split-panel/Splitter.d.ts +17 -0
  117. package/dist/components/split-panel/Splitter.js +39 -0
  118. package/dist/components/split-panel/Splitter.styles.d.ts +1 -0
  119. package/dist/components/split-panel/Splitter.styles.js +45 -0
  120. package/dist/components/split-panel/index.d.ts +7 -0
  121. package/dist/components/tooltip/Tooltip.d.ts +44 -0
  122. package/dist/components/tooltip/Tooltip.js +130 -0
  123. package/dist/components/tooltip/Tooltip.styles.d.ts +1 -0
  124. package/dist/components/tooltip/Tooltip.styles.js +36 -0
  125. package/dist/components/tooltip/index.d.ts +7 -0
  126. package/dist/events/UChangeEvent.d.ts +6 -0
  127. package/dist/events/UHideEvent.d.ts +6 -0
  128. package/dist/events/UInputEvent.d.ts +6 -0
  129. package/dist/events/UResizeEvent.d.ts +6 -0
  130. package/dist/events/USelectEvent.d.ts +6 -0
  131. package/dist/events/UShowEvent.d.ts +6 -0
  132. package/dist/events/index.d.ts +6 -0
  133. package/dist/index.d.ts +2 -0
  134. package/dist/index.js +40 -0
  135. package/dist/integrations/react/UAlert.d.ts +8 -0
  136. package/dist/integrations/react/UAlert.js +10 -0
  137. package/dist/integrations/react/UButton.d.ts +8 -0
  138. package/dist/integrations/react/UButton.js +10 -0
  139. package/dist/integrations/react/UContextMenu.d.ts +8 -0
  140. package/dist/integrations/react/UContextMenu.js +10 -0
  141. package/dist/integrations/react/UCopyButton.d.ts +8 -0
  142. package/dist/integrations/react/UCopyButton.js +10 -0
  143. package/dist/integrations/react/UDialog.d.ts +8 -0
  144. package/dist/integrations/react/UDialog.js +10 -0
  145. package/dist/integrations/react/UForm.d.ts +8 -0
  146. package/dist/integrations/react/UForm.js +10 -0
  147. package/dist/integrations/react/UIcon.d.ts +8 -0
  148. package/dist/integrations/react/UIcon.js +10 -0
  149. package/dist/integrations/react/UIconButton.d.ts +8 -0
  150. package/dist/integrations/react/UIconButton.js +10 -0
  151. package/dist/integrations/react/UInput.d.ts +8 -0
  152. package/dist/integrations/react/UInput.js +10 -0
  153. package/dist/integrations/react/UMenu.d.ts +8 -0
  154. package/dist/integrations/react/UMenu.js +10 -0
  155. package/dist/integrations/react/UMenuItem.d.ts +8 -0
  156. package/dist/integrations/react/UMenuItem.js +10 -0
  157. package/dist/integrations/react/UPanel.d.ts +8 -0
  158. package/dist/integrations/react/UPanel.js +10 -0
  159. package/dist/integrations/react/UProgressRing.d.ts +8 -0
  160. package/dist/integrations/react/UProgressRing.js +10 -0
  161. package/dist/integrations/react/USpinner.d.ts +8 -0
  162. package/dist/integrations/react/USpinner.js +10 -0
  163. package/dist/integrations/react/USplitPanel.d.ts +8 -0
  164. package/dist/integrations/react/USplitPanel.js +10 -0
  165. package/dist/integrations/react/UTooltip.d.ts +8 -0
  166. package/dist/integrations/react/UTooltip.js +10 -0
  167. package/dist/integrations/react/index.d.ts +23 -0
  168. package/dist/integrations/react/index.js +16 -0
  169. package/dist/internals/attribute-converters.d.ts +10 -0
  170. package/dist/internals/attribute-converters.js +12 -0
  171. package/dist/internals/icons.d.ts +6 -0
  172. package/dist/internals/icons.js +67 -0
  173. package/dist/internals/index.d.ts +4 -0
  174. package/dist/internals/node-helpers.d.ts +12 -0
  175. package/dist/internals/node-helpers.js +21 -0
  176. package/dist/internals/react-wrapper.d.ts +21 -0
  177. package/dist/utilities/decorators.d.ts +28 -0
  178. package/dist/utilities/decorators.js +21 -0
  179. package/dist/utilities/index.d.ts +4 -0
  180. package/dist/utilities/notifier.d.ts +26 -0
  181. package/dist/utilities/notifier.js +29 -0
  182. package/dist/utilities/storage.d.ts +60 -0
  183. package/dist/utilities/storage.js +120 -0
  184. package/dist/utilities/theme.d.ts +54 -0
  185. package/dist/utilities/theme.js +108 -0
  186. package/package.json +58 -0
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { MenuItem } from '../../components/menu-item/index';
3
+
4
+ export declare const UMenuItem: React.ForwardRefExoticComponent<
5
+ Partial<MenuItem> & React.HTMLAttributes<MenuItem>
6
+ >;
7
+
8
+ export type UMenuItemProps = React.ComponentProps<typeof UMenuItem>;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { createComponent } from '@lit/react';
3
+ import { MenuItem } from '../../components/menu-item/index';
4
+
5
+ export const UMenuItem = createComponent({
6
+ react: React,
7
+ tagName: 'u-menu-item',
8
+ elementClass: MenuItem,
9
+ events: {}
10
+ });
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { Panel } from '../../components/panel/index';
3
+
4
+ export declare const UPanel: React.ForwardRefExoticComponent<
5
+ Partial<Panel> & React.HTMLAttributes<Panel>
6
+ >;
7
+
8
+ export type UPanelProps = React.ComponentProps<typeof UPanel>;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { createComponent } from '@lit/react';
3
+ import { Panel } from '../../components/panel/index';
4
+
5
+ export const UPanel = createComponent({
6
+ react: React,
7
+ tagName: 'u-panel',
8
+ elementClass: Panel,
9
+ events: {}
10
+ });
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { ProgressRing } from '../../components/progress-ring/index';
3
+
4
+ export declare const UProgressRing: React.ForwardRefExoticComponent<
5
+ Partial<ProgressRing> & React.HTMLAttributes<ProgressRing>
6
+ >;
7
+
8
+ export type UProgressRingProps = React.ComponentProps<typeof UProgressRing>;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { createComponent } from '@lit/react';
3
+ import { ProgressRing } from '../../components/progress-ring/index';
4
+
5
+ export const UProgressRing = createComponent({
6
+ react: React,
7
+ tagName: 'u-progress-ring',
8
+ elementClass: ProgressRing,
9
+ events: {}
10
+ });
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { Spinner } from '../../components/spinner/index';
3
+
4
+ export declare const USpinner: React.ForwardRefExoticComponent<
5
+ Partial<Spinner> & React.HTMLAttributes<Spinner>
6
+ >;
7
+
8
+ export type USpinnerProps = React.ComponentProps<typeof USpinner>;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { createComponent } from '@lit/react';
3
+ import { Spinner } from '../../components/spinner/index';
4
+
5
+ export const USpinner = createComponent({
6
+ react: React,
7
+ tagName: 'u-spinner',
8
+ elementClass: Spinner,
9
+ events: {}
10
+ });
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { SplitPanel } from '../../components/split-panel/index';
3
+
4
+ export declare const USplitPanel: React.ForwardRefExoticComponent<
5
+ Partial<SplitPanel> & React.HTMLAttributes<SplitPanel>
6
+ >;
7
+
8
+ export type USplitPanelProps = React.ComponentProps<typeof USplitPanel>;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { createComponent } from '@lit/react';
3
+ import { SplitPanel } from '../../components/split-panel/index';
4
+
5
+ export const USplitPanel = createComponent({
6
+ react: React,
7
+ tagName: 'u-split-panel',
8
+ elementClass: SplitPanel,
9
+ events: {}
10
+ });
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { Tooltip } from '../../components/tooltip/index';
3
+
4
+ export declare const UTooltip: React.ForwardRefExoticComponent<
5
+ Partial<Tooltip> & React.HTMLAttributes<Tooltip>
6
+ >;
7
+
8
+ export type UTooltipProps = React.ComponentProps<typeof UTooltip>;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { createComponent } from '@lit/react';
3
+ import { Tooltip } from '../../components/tooltip/index';
4
+
5
+ export const UTooltip = createComponent({
6
+ react: React,
7
+ tagName: 'u-tooltip',
8
+ elementClass: Tooltip,
9
+ events: {}
10
+ });
@@ -0,0 +1,23 @@
1
+ /**
2
+ * React wrapper components for @iyulab/components
3
+ *
4
+ * This file is automatically generated.
5
+ * Each component is prefixed with 'U' (e.g., UButton, UInput, etc.)
6
+ */
7
+
8
+ export { UAlert, UAlertProps } from './UAlert';
9
+ export { UButton, UButtonProps } from './UButton';
10
+ export { UContextMenu, UContextMenuProps } from './UContextMenu';
11
+ export { UCopyButton, UCopyButtonProps } from './UCopyButton';
12
+ export { UDialog, UDialogProps } from './UDialog';
13
+ export { UForm, UFormProps } from './UForm';
14
+ export { UIcon, UIconProps } from './UIcon';
15
+ export { UIconButton, UIconButtonProps } from './UIconButton';
16
+ export { UInput, UInputProps } from './UInput';
17
+ export { UMenu, UMenuProps } from './UMenu';
18
+ export { UMenuItem, UMenuItemProps } from './UMenuItem';
19
+ export { UPanel, UPanelProps } from './UPanel';
20
+ export { UProgressRing, UProgressRingProps } from './UProgressRing';
21
+ export { USpinner, USpinnerProps } from './USpinner';
22
+ export { USplitPanel, USplitPanelProps } from './USplitPanel';
23
+ export { UTooltip, UTooltipProps } from './UTooltip';
@@ -0,0 +1,16 @@
1
+ export { UAlert } from './UAlert.js';
2
+ export { UButton } from './UButton.js';
3
+ export { UContextMenu } from './UContextMenu.js';
4
+ export { UCopyButton } from './UCopyButton.js';
5
+ export { UDialog } from './UDialog.js';
6
+ export { UForm } from './UForm.js';
7
+ export { UIcon } from './UIcon.js';
8
+ export { UIconButton } from './UIconButton.js';
9
+ export { UInput } from './UInput.js';
10
+ export { UMenu } from './UMenu.js';
11
+ export { UMenuItem } from './UMenuItem.js';
12
+ export { UPanel } from './UPanel.js';
13
+ export { UProgressRing } from './UProgressRing.js';
14
+ export { USpinner } from './USpinner.js';
15
+ export { USplitPanel } from './USplitPanel.js';
16
+ export { UTooltip } from './UTooltip.js';
@@ -0,0 +1,10 @@
1
+ /**
2
+ * 배열을 속성 문자열로, 속성 문자열을 배열로 변환하는 컨버터를 생성합니다.
3
+ * @param parser - 문자열을 파싱하는 함수 (기본값: parseFloat)
4
+ * @param separator - 구분자 (기본값: ',')
5
+ * @returns Lit 속성 컨버터 객체
6
+ */
7
+ export declare function arrayAttributeConverter<T>(parser: (value: string) => T, separator?: string): {
8
+ fromAttribute: (value: string | null) => T[] | undefined;
9
+ toAttribute: (value: T[] | undefined) => string | null;
10
+ };
@@ -0,0 +1,12 @@
1
+ function e(i, r = ",") {
2
+ return {
3
+ fromAttribute: (t) => {
4
+ if (t)
5
+ return t.split(r).map((n) => i(n.trim()));
6
+ },
7
+ toAttribute: (t) => t ? t.join(r) : null
8
+ };
9
+ }
10
+ export {
11
+ e as arrayAttributeConverter
12
+ };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * 내부적으로 사용되는 아이콘 레지스트리입니다.
3
+ * SVG 아이콘 파일을 이름과 매핑하여 저장합니다.
4
+ * 아이콘 파일은 '../assets/icons/' 경로에서 자동으로 로드됩니다.
5
+ */
6
+ export declare const icons: Map<string, string>;
@@ -0,0 +1,67 @@
1
+ import * as i from "../assets/icons/arrow-clockwise.svg.js";
2
+ import * as r from "../assets/icons/arrow-down.svg.js";
3
+ import * as e from "../assets/icons/arrow-up.svg.js";
4
+ import * as a from "../assets/icons/ban.svg.js";
5
+ import * as t from "../assets/icons/bell-fill.svg.js";
6
+ import * as l from "../assets/icons/check-circle-fill.svg.js";
7
+ import * as c from "../assets/icons/check-lg.svg.js";
8
+ import * as m from "../assets/icons/chevron-down.svg.js";
9
+ import * as n from "../assets/icons/chevron-left.svg.js";
10
+ import * as p from "../assets/icons/chevron-right.svg.js";
11
+ import * as g from "../assets/icons/chevron-up.svg.js";
12
+ import * as f from "../assets/icons/copy.svg.js";
13
+ import * as v from "../assets/icons/dash-lg.svg.js";
14
+ import * as h from "../assets/icons/exclamation-circle-fill.svg.js";
15
+ import * as b from "../assets/icons/exclamation-triangle-fill.svg.js";
16
+ import * as u from "../assets/icons/eye-slash.svg.js";
17
+ import * as w from "../assets/icons/eye.svg.js";
18
+ import * as d from "../assets/icons/info-circle-fill.svg.js";
19
+ import * as y from "../assets/icons/layout-sidebar.svg.js";
20
+ import * as F from "../assets/icons/lightbulb-fill.svg.js";
21
+ import * as x from "../assets/icons/lightbulb-off.svg.js";
22
+ import * as k from "../assets/icons/lightbulb.svg.js";
23
+ import * as L from "../assets/icons/mic-fill.svg.js";
24
+ import * as C from "../assets/icons/mic-mute-fill.svg.js";
25
+ import * as O from "../assets/icons/paperclip.svg.js";
26
+ import * as S from "../assets/icons/pencil-square.svg.js";
27
+ import * as j from "../assets/icons/plus-lg.svg.js";
28
+ import * as q from "../assets/icons/search.svg.js";
29
+ import * as D from "../assets/icons/speedometer.svg.js";
30
+ import * as M from "../assets/icons/x-lg.svg.js";
31
+ const R = new Map(
32
+ Object.entries(/* @__PURE__ */ Object.assign({
33
+ "../assets/icons/arrow-clockwise.svg": i,
34
+ "../assets/icons/arrow-down.svg": r,
35
+ "../assets/icons/arrow-up.svg": e,
36
+ "../assets/icons/ban.svg": a,
37
+ "../assets/icons/bell-fill.svg": t,
38
+ "../assets/icons/check-circle-fill.svg": l,
39
+ "../assets/icons/check-lg.svg": c,
40
+ "../assets/icons/chevron-down.svg": m,
41
+ "../assets/icons/chevron-left.svg": n,
42
+ "../assets/icons/chevron-right.svg": p,
43
+ "../assets/icons/chevron-up.svg": g,
44
+ "../assets/icons/copy.svg": f,
45
+ "../assets/icons/dash-lg.svg": v,
46
+ "../assets/icons/exclamation-circle-fill.svg": h,
47
+ "../assets/icons/exclamation-triangle-fill.svg": b,
48
+ "../assets/icons/eye-slash.svg": u,
49
+ "../assets/icons/eye.svg": w,
50
+ "../assets/icons/info-circle-fill.svg": d,
51
+ "../assets/icons/layout-sidebar.svg": y,
52
+ "../assets/icons/lightbulb-fill.svg": F,
53
+ "../assets/icons/lightbulb-off.svg": x,
54
+ "../assets/icons/lightbulb.svg": k,
55
+ "../assets/icons/mic-fill.svg": L,
56
+ "../assets/icons/mic-mute-fill.svg": C,
57
+ "../assets/icons/paperclip.svg": O,
58
+ "../assets/icons/pencil-square.svg": S,
59
+ "../assets/icons/plus-lg.svg": j,
60
+ "../assets/icons/search.svg": q,
61
+ "../assets/icons/speedometer.svg": D,
62
+ "../assets/icons/x-lg.svg": M
63
+ })).map(([s, o]) => [s.split("/").pop()?.replace(".svg", "") || "", o.default]).filter(([s]) => s !== "")
64
+ );
65
+ export {
66
+ R as icons
67
+ };
@@ -0,0 +1,4 @@
1
+ export * from './attribute-converters.js';
2
+ export * from './icons.js';
3
+ export * from './node-helpers.js';
4
+ export * from './react-wrapper.js';
@@ -0,0 +1,12 @@
1
+ /**
2
+ * 엘리먼트의 부모 엘리먼트를 반환합니다.
3
+ * Shadow DOM을 지원하는 경우, Shadow DOM의 호스트 엘리먼트를 반환합니다.
4
+ * 일반 DOM 엘리먼트인 경우, 해당 엘리먼트를 반환합니다.
5
+ * 찾을 수 없는 경우 undefined을 반환합니다.
6
+ */
7
+ export declare function getParentElement(element: Element): HTMLElement | undefined;
8
+ /**
9
+ * element 기준으로 selector와 매치되는 모든 HTMLElement를 반환합니다.
10
+ * - 탐색은 element가 존재하는 shadow DOM 또는 document 루트 안에서 이루어집니다.
11
+ */
12
+ export declare function findElementsBy(element: Element, selectors: string): HTMLElement[];
@@ -0,0 +1,21 @@
1
+ function r(o) {
2
+ if (o.parentElement)
3
+ return o.parentElement;
4
+ {
5
+ const e = o.getRootNode({ composed: !1 });
6
+ return e instanceof Document ? e.documentElement : e instanceof ShadowRoot ? e.host : e instanceof HTMLElement ? e : void 0;
7
+ }
8
+ }
9
+ function c(o, e) {
10
+ if (!e) return [];
11
+ const t = o.getRootNode({ composed: !1 });
12
+ if (t instanceof ShadowRoot || t instanceof Document) {
13
+ const n = t.querySelectorAll(e);
14
+ return Array.from(n);
15
+ } else
16
+ return [];
17
+ }
18
+ export {
19
+ c as findElementsBy,
20
+ r as getParentElement
21
+ };
@@ -0,0 +1,21 @@
1
+ type Constructor<T> = {
2
+ new (): T;
3
+ };
4
+ type EventName<T extends Event = Event> = string & {
5
+ __eventType: T;
6
+ };
7
+ type EventNames = Record<string, EventName | string>;
8
+ interface Options<I extends HTMLElement, E extends EventNames = {}> {
9
+ tagName: string;
10
+ elementClass: Constructor<I>;
11
+ events?: E;
12
+ shadow?: 'open' | 'closed';
13
+ properties?: Record<string, unknown>;
14
+ }
15
+ /**
16
+ * Converts a Lit Element to a React Component.
17
+ * @param option - The options for the conversion.
18
+ * @returns The converted React Component.
19
+ */
20
+ export declare function convertReact<I extends HTMLElement, E extends EventNames = {}>(option: Options<I, E>): import('@lit/react').ReactWebComponent<I, E>;
21
+ export {};
@@ -0,0 +1,28 @@
1
+ export type PropertyMetaData = any;
2
+ type Constructor<T = {}> = new (...args: any[]) => T;
3
+ /**
4
+ * 클래스 속성을 정의하기 위한 데코레이터 함수입니다.
5
+ * @param metadata - 클래스 속성에 대한 메타데이터입니다.
6
+ */
7
+ export declare function propertyMeta(metadata: PropertyMetaData): (target: any, propertyKey: string) => void;
8
+ /**
9
+ * target 클래스의 모든 속성에 대한 메타데이터를 설정합니다.
10
+ * @param target - 클래스의 생성자 함수입니다.
11
+ * @param propertyKey - 메타데이터를 설정할 속성의 이름입니다.
12
+ * @param metadata - 속성에 대한 메타데이터입니다.
13
+ */
14
+ export declare function setPropertyMeta(target: any, propertyKey: string, metadata: PropertyMetaData): void;
15
+ /**
16
+ * target 클래스의 모든 속성에 대한 메타데이터를 반환합니다.
17
+ * @param target - 클래스의 생성자 함수입니다.
18
+ * @return 모든 메타데이터의 배열을 반환합니다.
19
+ */
20
+ export declare function getPropertyMeta(target: Constructor): PropertyMetaData[] | undefined;
21
+ /**
22
+ * target 클래스의 특정속성에 대한 메타데이터를 반환합니다.
23
+ * @param target - 클래스의 생성자 함수입니다.
24
+ * @param propertyKey - 메타데이터를 검색할 속성의 이름입니다.
25
+ * @returns 특정 속성에 대한 메타데이터를 반환합니다.
26
+ */
27
+ export declare function getPropertyMeta(target: Constructor, propertyKey: string): PropertyMetaData | undefined;
28
+ export {};
@@ -0,0 +1,21 @@
1
+ const a = Symbol("propertyMeta");
2
+ function p(e) {
3
+ return (t, o) => {
4
+ r(t, o, e);
5
+ };
6
+ }
7
+ function r(e, t, o) {
8
+ o.name = t, Reflect.defineMetadata(a, o, e, t);
9
+ }
10
+ function i(e, t) {
11
+ try {
12
+ return e = e.prototype ? e.prototype : e, t ? Reflect.getMetadata(a, e, t) : (Object.getOwnPropertyNames(e) || []).map((n) => Reflect.getMetadata(a, e, n)).filter((n) => n !== void 0) || [];
13
+ } catch {
14
+ return;
15
+ }
16
+ }
17
+ export {
18
+ i as getPropertyMeta,
19
+ p as propertyMeta,
20
+ r as setPropertyMeta
21
+ };
@@ -0,0 +1,4 @@
1
+ export * from './decorators';
2
+ export * from './notifier.js';
3
+ export * from './storage.js';
4
+ export * from './theme.js';
@@ -0,0 +1,26 @@
1
+ import { Alert, AlertType } from '../components/alert/Alert.js';
2
+ export type ScreenPosition = "top-left" | "top-center" | "top-right" | "middle-left" | "middle-center" | "middle-right" | "bottom-left" | "bottom-center" | "bottom-right";
3
+ /** 토스트 알림 옵션 */
4
+ export interface ToastOptions {
5
+ /** 알림 유형 */
6
+ type: AlertType;
7
+ /** 알림 제목 */
8
+ label?: string;
9
+ /** 알림 내용 */
10
+ content?: string;
11
+ /** 알림 표시 시간 (밀리초 단위) */
12
+ duration?: number;
13
+ /** 표시 화면 위치 */
14
+ position?: ScreenPosition;
15
+ }
16
+ /**
17
+ * notifier 객체 여러 위치에 알림을 표시하는 유틸리티입니다.
18
+ */
19
+ export declare const notifier: {
20
+ container: Map<ScreenPosition, HTMLDivElement>;
21
+ toasts: Set<Alert>;
22
+ /**
23
+ * 토스트 알림을 생성합니다.
24
+ */
25
+ toast(options: ToastOptions): Promise<void>;
26
+ };
@@ -0,0 +1,29 @@
1
+ import { Alert as a } from "../components/alert/Alert.js";
2
+ a.define("u-alert");
3
+ const l = {
4
+ container: /* @__PURE__ */ new Map(),
5
+ toasts: /* @__PURE__ */ new Set(),
6
+ /**
7
+ * 토스트 알림을 생성합니다.
8
+ */
9
+ async toast(t) {
10
+ const e = new a();
11
+ e.type = t.type, e.label = t.label, e.content = t.content, this.toasts.add(e);
12
+ const n = t.position || "top-right", s = o(n);
13
+ s.appendChild(e), await e.updateComplete, e.show();
14
+ const i = t.duration && t.duration > 0 ? t.duration : 3e3;
15
+ setTimeout(async () => {
16
+ await e.hide(), await new Promise((r) => setTimeout(r, 300)), e.remove(), this.toasts.delete(e), s.hasChildNodes() || (s.remove(), this.container.delete(n));
17
+ }, i);
18
+ }
19
+ };
20
+ function o(t) {
21
+ let e = l.container.get(t);
22
+ if (e) return e;
23
+ e = document.createElement("div"), e.style.position = "fixed", e.style.zIndex = "9999", e.style.display = "flex", e.style.gap = "10px";
24
+ const n = [];
25
+ return t.startsWith("top") ? (e.style.top = "20px", e.style.flexDirection = "column") : t.startsWith("bottom") ? (e.style.bottom = "20px", e.style.flexDirection = "column-reverse") : (e.style.top = "50%", e.style.flexDirection = "column", n.push("translateY(-50%)")), t.endsWith("left") ? (e.style.left = "20px", e.style.alignItems = "flex-start") : t.endsWith("right") ? (e.style.right = "20px", e.style.alignItems = "flex-end") : (e.style.left = "50%", e.style.alignItems = "center", n.unshift("translateX(-50%)")), e.style.transform = n.length ? n.join(" ") : "", document.body.appendChild(e), l.container.set(t, e), e;
26
+ }
27
+ export {
28
+ l as notifier
29
+ };
@@ -0,0 +1,60 @@
1
+ export type StorageMode = 'localStorage' | 'cookie';
2
+ export interface LocalStorageOptions {
3
+ type: 'localStorage';
4
+ }
5
+ export interface CookieOptions {
6
+ type: 'cookie';
7
+ /** 만료: Date | milliseconds timestamp | ISO string | days (number) */
8
+ expires?: Date | number | string;
9
+ path?: string;
10
+ domain?: string;
11
+ sameSite?: 'Lax' | 'Strict' | 'None';
12
+ secure?: boolean;
13
+ }
14
+ export type BrowserStorageOptions = (LocalStorageOptions | CookieOptions) & {
15
+ /** 키 앞에 붙일 접두사 (옵션) */
16
+ prefix?: string;
17
+ };
18
+ /**
19
+ * BrowserStorage - localStorage / cookie 래퍼
20
+ *
21
+ * 사용:
22
+ * const s = new BrowserStorage({ type: 'localStorage', prefix: 'app' });
23
+ * s.set('token', 'abc');
24
+ * s.get('token'); // 'abc'
25
+ *
26
+ * const c = new BrowserStorage({ type: 'cookie', prefix: 'app', expires: 7 }); // expires = 7일
27
+ * c.set('lang', 'ko');
28
+ */
29
+ export declare class BrowserStorage {
30
+ private mode;
31
+ private prefix;
32
+ private cookieOpts;
33
+ constructor(options: BrowserStorageOptions);
34
+ /** 키에 prefix를 붙인 실제 저장 키 */
35
+ private buildKey;
36
+ /**
37
+ * 값 저장
38
+ * @param key 키
39
+ * @param value 문자열 값 (문자열이 아닌 값은 JSON.stringify 권장)
40
+ */
41
+ set(key: string, value: string): void;
42
+ /**
43
+ * 값 조회
44
+ * @param key 키
45
+ * @returns 값 (없으면 null)
46
+ */
47
+ get(key: string): string | null;
48
+ /**
49
+ * 키 제거
50
+ */
51
+ remove(key: string): void;
52
+ /**
53
+ * 현재 prefix 기준으로 모든 항목 제거 (주의: localStorage 전체 삭제 아님)
54
+ */
55
+ clear(): void;
56
+ /**
57
+ * 모든 키 목록 반환 (prefix 적용된 실제 키들에서 접두사 제거한 상태)
58
+ */
59
+ keys(): string[];
60
+ }
@@ -0,0 +1,120 @@
1
+ class h {
2
+ constructor(o) {
3
+ if (typeof window > "u" && typeof document > "u")
4
+ throw new Error("BrowserStorage can only be used in a browser environment.");
5
+ this.mode = o.type, this.prefix = o.prefix ? String(o.prefix) + ":" : "", this.mode === "cookie" ? this.cookieOpts = o : this.cookieOpts = null;
6
+ }
7
+ /** 키에 prefix를 붙인 실제 저장 키 */
8
+ buildKey(o) {
9
+ return `${this.prefix}${o}`;
10
+ }
11
+ /**
12
+ * 값 저장
13
+ * @param key 키
14
+ * @param value 문자열 값 (문자열이 아닌 값은 JSON.stringify 권장)
15
+ */
16
+ set(o, e) {
17
+ const i = this.buildKey(o);
18
+ if (this.mode === "localStorage")
19
+ try {
20
+ window.localStorage.setItem(i, e);
21
+ } catch {
22
+ }
23
+ else {
24
+ const t = this.cookieOpts, a = encodeURIComponent(e);
25
+ let r = `${i}=${a}; path=${t?.path ?? "/"}; SameSite=${t?.sameSite ?? "Lax"}`;
26
+ t?.domain && (r += `; domain=${t.domain}`), t?.secure && (r += "; Secure");
27
+ let s = "";
28
+ if (t?.expires || (s = ""), t?.expires instanceof Date && (s = t?.expires.toUTCString()), typeof t?.expires == "number")
29
+ if (t?.expires > 1e12)
30
+ s = new Date(t?.expires).toUTCString();
31
+ else {
32
+ const c = /* @__PURE__ */ new Date();
33
+ c.setDate(c.getDate() + Math.floor(t?.expires)), s = c.toUTCString();
34
+ }
35
+ const n = new Date(String(t?.expires));
36
+ isNaN(n.getTime()) || (s = n.toUTCString()), s && (r += `; expires=${s}`), document.cookie = r;
37
+ }
38
+ }
39
+ /**
40
+ * 값 조회
41
+ * @param key 키
42
+ * @returns 값 (없으면 null)
43
+ */
44
+ get(o) {
45
+ const e = this.buildKey(o);
46
+ if (this.mode === "localStorage")
47
+ try {
48
+ return window.localStorage.getItem(e);
49
+ } catch {
50
+ return null;
51
+ }
52
+ else if (this.mode === "cookie") {
53
+ const i = new RegExp("(?:^|; )" + e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") + "=([^;]*)"), t = document.cookie.match(i);
54
+ if (!t) return null;
55
+ try {
56
+ return decodeURIComponent(t[1]);
57
+ } catch {
58
+ return t[1];
59
+ }
60
+ } else
61
+ throw new Error(`Unsupported storage mode: ${this.mode}`);
62
+ }
63
+ /**
64
+ * 키 제거
65
+ */
66
+ remove(o) {
67
+ const e = this.buildKey(o);
68
+ if (this.mode === "localStorage")
69
+ try {
70
+ window.localStorage.removeItem(e);
71
+ } catch {
72
+ }
73
+ else
74
+ document.cookie = `${e}=; path=${this.cookieOpts?.path ?? "/"}; expires=Thu, 01 Jan 1970 00:00:00 GMT; SameSite=${this.cookieOpts?.sameSite ?? "Lax"}`;
75
+ }
76
+ /**
77
+ * 현재 prefix 기준으로 모든 항목 제거 (주의: localStorage 전체 삭제 아님)
78
+ */
79
+ clear() {
80
+ if (this.mode === "localStorage")
81
+ try {
82
+ const o = [];
83
+ for (let e = 0; e < localStorage.length; e++) {
84
+ const i = localStorage.key(e);
85
+ i && i.startsWith(this.prefix) && o.push(i);
86
+ }
87
+ for (const e of o) localStorage.removeItem(e);
88
+ } catch {
89
+ }
90
+ else {
91
+ const o = document.cookie ? document.cookie.split("; ") : [];
92
+ for (const e of o) {
93
+ const [i] = e.split("=");
94
+ i && i.startsWith(this.prefix) && (document.cookie = `${i}=; path=${this.cookieOpts?.path ?? "/"}; expires=Thu, 01 Jan 1970 00:00:00 GMT; SameSite=${this.cookieOpts?.sameSite ?? "Lax"}`);
95
+ }
96
+ }
97
+ }
98
+ /**
99
+ * 모든 키 목록 반환 (prefix 적용된 실제 키들에서 접두사 제거한 상태)
100
+ */
101
+ keys() {
102
+ const o = [];
103
+ if (this.mode === "localStorage")
104
+ for (let e = 0; e < localStorage.length; e++) {
105
+ const i = localStorage.key(e);
106
+ i && i.startsWith(this.prefix) && o.push(i.slice(this.prefix.length));
107
+ }
108
+ else {
109
+ const e = document.cookie ? document.cookie.split("; ") : [];
110
+ for (const i of e) {
111
+ const [t] = i.split("=");
112
+ t && t.startsWith(this.prefix) && o.push(t.slice(this.prefix.length));
113
+ }
114
+ }
115
+ return o;
116
+ }
117
+ }
118
+ export {
119
+ h as BrowserStorage
120
+ };