@ienlab/react-library 0.15.0 → 0.16.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,17 @@
1
+ import { ColumnDef, RowSelectionState } from '@tanstack/react-table';
2
+ import { TableInjectedComponents } from '../../types/table.tsx';
3
+ import { Dispatch, SetStateAction } from 'react';
4
+ export type WithChildren<T> = T & {
5
+ subRows?: WithChildren<T>[];
6
+ };
7
+ interface GroupedDataTableProps<TData, TValue> {
8
+ columns: ColumnDef<TData, TValue>[];
9
+ data: TData[];
10
+ getRowId: (row: TData) => string;
11
+ selectionState: [RowSelectionState, Dispatch<SetStateAction<RowSelectionState>>];
12
+ onClick: (data: TData) => void;
13
+ components?: TableInjectedComponents;
14
+ }
15
+ export declare function GroupedDataTable<TData, TValue>({ columns, data, getRowId, selectionState, onClick, components }: GroupedDataTableProps<TData, TValue>): import("react/jsx-runtime").JSX.Element;
16
+ export {};
17
+ //# sourceMappingURL=data-table-grouped.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-grouped.d.ts","sourceRoot":"","sources":["../../../src/components/table/data-table-grouped.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EAKd,KAAK,iBAAiB,EAAC,MAAM,uBAAuB,CAAA;AAEtD,OAAO,EAIL,KAAK,uBAAuB,EAC7B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAC,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAC,MAAM,OAAO,CAAC;AAEzD,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG;IAChC,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;CAC7B,CAAC;AAEF,UAAU,qBAAqB,CAAC,KAAK,EAAE,MAAM;IAC3C,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAA;IACnC,IAAI,EAAE,KAAK,EAAE,CAAC;IACd,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,MAAM,CAAC;IACjC,cAAc,EAAE,CAAC,iBAAiB,EAAE,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACjF,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAA;IAC9B,UAAU,CAAC,EAAE,uBAAuB,CAAA;CACrC;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,UAAU,EAAC,EAAE,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,2CAuFnJ"}
@@ -0,0 +1,14 @@
1
+ import { ColumnDef, RowSelectionState } from '@tanstack/react-table';
2
+ import { Dispatch, SetStateAction } from 'react';
3
+ import { TableInjectedComponents } from '../../types/table.tsx';
4
+ interface DataTableProps<TData, TValue> {
5
+ columns: ColumnDef<TData, TValue>[];
6
+ data: TData[];
7
+ getRowId: (row: TData) => string;
8
+ selectionState: [RowSelectionState, Dispatch<SetStateAction<RowSelectionState>>];
9
+ onClick: (data: TData) => void;
10
+ components?: TableInjectedComponents;
11
+ }
12
+ export declare function DataTable<TData, TValue>({ columns, data, getRowId, selectionState, onClick, components }: DataTableProps<TData, TValue>): import("react/jsx-runtime").JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=data-table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table.d.ts","sourceRoot":"","sources":["../../../src/components/table/data-table.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EAId,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EAAC,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAC,MAAM,OAAO,CAAC;AACzD,OAAO,EAIL,KAAK,uBAAuB,EAC7B,MAAM,uBAAuB,CAAC;AAG/B,UAAU,cAAc,CAAC,KAAK,EAAE,MAAM;IACpC,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAA;IACnC,IAAI,EAAE,KAAK,EAAE,CAAC;IACd,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,MAAM,CAAC;IACjC,cAAc,EAAE,CAAC,iBAAiB,EAAE,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACjF,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAA;IAC9B,UAAU,CAAC,EAAE,uBAAuB,CAAA;CACrC;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,EAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,UAAU,EAAC,EAAE,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,2CAwErI"}
@@ -0,0 +1,3 @@
1
+ import { ClassValue } from 'clsx';
2
+ export declare function cn(...inputs: ClassValue[]): string;
3
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,MAAM,CAAA;AAG5C,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,UAEzC"}
@@ -1,35 +1,36 @@
1
1
  declare const _default: {
2
+ "add_assets": "Add Assets",
2
3
  "auth": {
3
4
  "errors": {
5
+ "account_exists_with_different_credential": "This email is already linked to another sign-in method. Please use that method to sign in.",
6
+ "default": "We couldn’t complete the sign-in. Please try again later.",
7
+ "email_already_in_use": "This email is already registered. Sign in or use a different email.",
8
+ "internal_error": "Something went wrong. Please try again later.",
4
9
  "invalid_credential": "Please check your email or password.",
5
- "wrong_password": "Please check your email or password.",
6
- "user_not_found": "We couldn’t find an account matching that information.",
7
10
  "invalid_email": "Please check your email format.",
8
- "email_already_in_use": "This email is already registered. Sign in or use a different email.",
9
- "weak_password": "Your password must be at least 6 characters long.",
10
- "user_disabled": "This account is currently unavailable. Please contact support.",
11
- "too_many_requests": "Too many attempts. Please try again later.",
12
11
  "network_request_failed": "Check your internet connection and try again.",
13
- "timeout": "The request is taking too long. Please try again.",
14
- "requires_recent_login": "For security reasons, please sign in again.",
15
- "user_token_expired": "Your session has expired. Please sign in again.",
16
12
  "operation_not_allowed": "This sign-in method is currently unavailable.",
17
- "account_exists_with_different_credential": "This email is already linked to another sign-in method. Please use that method to sign in.",
18
13
  "popup_blocked": "The sign-in window was blocked. Please allow pop-ups and try again.",
19
14
  "popup_closed_by_user": "The sign-in window was closed before completion.",
20
- "web_storage_unsupported": "Sign-in is not available with your current browser settings.",
15
+ "requires_recent_login": "For security reasons, please sign in again.",
16
+ "timeout": "The request is taking too long. Please try again.",
17
+ "too_many_requests": "Too many attempts. Please try again later.",
21
18
  "unauthorized_domain": "Sign-in is not available on this domain.",
22
- "internal_error": "Something went wrong. Please try again later.",
23
- "default": "We couldn’t complete the sign-in. Please try again later."
19
+ "user_disabled": "This account is currently unavailable. Please contact support.",
20
+ "user_not_found": "We couldn’t find an account matching that information.",
21
+ "user_token_expired": "Your session has expired. Please sign in again.",
22
+ "weak_password": "Your password must be at least 6 characters long.",
23
+ "web_storage_unsupported": "Sign-in is not available with your current browser settings.",
24
+ "wrong_password": "Please check your email or password."
24
25
  }
25
26
  },
26
- "unknown_error_occurred": "Unknown error occurred.",
27
27
  "datetime": {
28
28
  "date_format": "MMMM D, YYYY",
29
29
  "date_time_format": "MMMM D, YYYY h:mm:ss A",
30
30
  "time_format": "h:mm:ss A"
31
31
  },
32
- "add_assets": "Add Assets"
32
+ "no_results": "No results",
33
+ "unknown_error_occurred": "Unknown error occurred."
33
34
  };
34
35
 
35
36
  export default _default;
@@ -1,36 +1,36 @@
1
1
  declare const _default: {
2
+ "add_assets": "애셋 추가",
2
3
  "auth": {
3
4
  "errors": {
5
+ "account_exists_with_different_credential": "이미 다른 로그인 방식으로 가입된 이메일이에요. 기존 방식으로 로그인해 주세요.",
6
+ "default": "로그인 중 문제가 발생했어요. 잠시 후 다시 시도해 주세요.",
7
+ "email_already_in_use": "이미 가입된 이메일이에요. 로그인하거나 다른 이메일을 사용해 주세요.",
8
+ "internal_error": "문제가 발생했어요. 잠시 후 다시 시도해 주세요.",
4
9
  "invalid_credential": "이메일 또는 비밀번호를 다시 확인해 주세요.",
5
- "wrong_password": "이메일 또는 비밀번호를 다시 확인해 주세요.",
6
- "user_not_found": "입력한 정보와 일치하는 계정을 찾을 수 없어요.",
7
10
  "invalid_email": "이메일 형식을 확인해 주세요.",
8
- "email_already_in_use": "이미 가입된 이메일이에요. 로그인하거나 다른 이메일을 사용해 주세요.",
9
- "weak_password": "비밀번호는 6자 이상으로 입력해 주세요.",
10
- "user_disabled": "이 계정은 현재 사용할 수 없어요. 관리자에게 문의해 주세요.",
11
- "too_many_requests": "시도가 너무 많아요. 잠시 후 다시 시도해 주세요.",
12
11
  "network_request_failed": "인터넷 연결을 확인한 뒤 다시 시도해 주세요.",
13
- "timeout": "응답이 지연되고 있어요. 잠시 후 다시 시도해 주세요.",
14
- "requires_recent_login": "보안을 위해 다시 로그인해 주세요.",
15
- "user_token_expired": "로그인 시간이 만료되었어요. 다시 로그인해 주세요.",
16
12
  "operation_not_allowed": "현재 사용할 수 없는 로그인 방식이에요.",
17
- "account_exists_with_different_credential": "이미 다른 로그인 방식으로 가입된 이메일이에요. 기존 방식으로 로그인해 주세요.",
18
13
  "popup_blocked": "로그인 창이 차단되었어요. 팝업 허용 후 다시 시도해 주세요.",
19
14
  "popup_closed_by_user": "로그인 창이 닫혀서 로그인이 완료되지 않았어요.",
20
- "web_storage_unsupported": "현재 브라우저 설정에서는 로그인을 진행할 수 없어요.",
15
+ "requires_recent_login": "보안을 위해 다시 로그인해 주세요.",
16
+ "timeout": "응답이 지연되고 있어요. 잠시 후 다시 시도해 주세요.",
17
+ "too_many_requests": "시도가 너무 많아요. 잠시 후 다시 시도해 주세요.",
21
18
  "unauthorized_domain": "현재 접속한 도메인에서는 로그인을 사용할 수 없어요.",
22
- "internal_error": "문제가 발생했어요. 잠시 다시 시도해 주세요.",
23
- "default": "로그인 문제가 발생했어요. 잠시 다시 시도해 주세요."
19
+ "user_disabled": " 계정은 현재 사용할 없어요. 관리자에게 문의해 주세요.",
20
+ "user_not_found": "입력한 정보와 일치하는 계정을 찾을 없어요.",
21
+ "user_token_expired": "로그인 시간이 만료되었어요. 다시 로그인해 주세요.",
22
+ "weak_password": "비밀번호는 6자 이상으로 입력해 주세요.",
23
+ "web_storage_unsupported": "현재 브라우저 설정에서는 로그인을 진행할 수 없어요.",
24
+ "wrong_password": "이메일 또는 비밀번호를 다시 확인해 주세요."
24
25
  }
25
26
  },
26
- "unknown_error_occurred": "알 수 없는 오류가 발생했습니다.",
27
27
  "datetime": {
28
28
  "date_format": "YYYY년 M월 D일",
29
29
  "date_time_format": "YYYY년 M월 D일 A h:mm:ss",
30
30
  "time_format": "A h:mm:ss"
31
31
  },
32
- "add_assets": "애셋 추가"
33
-
32
+ "no_results": "결과 없음",
33
+ "unknown_error_occurred": "알 수 없는 오류가 발생했습니다."
34
34
  };
35
35
 
36
36
  export default _default;
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,a)=>(a=n==null?{}:e(i(n)),s(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let l=require(`react`),u=require(`motion/react`),d=require(`react/jsx-runtime`),f=require(`react-i18next`),p=require(`firebase/firestore`),m=require(`zustand/react`),h=require(`i18next`);h=c(h,1);let g=require(`firebase/storage`);function _({placeholder:e,src:t,onLoadError:n,...r}){let[i,a]=(0,l.useState)(()=>{if(typeof window>`u`||!t)return!1;let e=new Image;return e.src=t,e.complete&&e.naturalWidth>0}),[o,s]=(0,l.useState)(t);return o!==t&&(s(t),a(!1)),(0,l.useEffect)(()=>{if(!t)return;let e=new Image;return e.src=t,e.onload=()=>a(!0),e.onerror=e=>{n?n(e):console.error(`CrossfadeImage: Failed to load image`,t)},e.complete&&e.naturalWidth>0&&e.onload(new Event(`load`)),()=>{e.onload=null,e.onerror=null}},[t,n]),(0,d.jsx)(u.AnimatePresence,{children:i&&t?(0,d.jsx)(u.motion.img,{src:t,...r,initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},style:{...r.style}},`loaded-image`):(0,d.jsx)(u.motion.div,{initial:{opacity:1},transition:{duration:.3},style:{...r.style},children:e??(0,d.jsx)(`div`,{className:`w-full h-full bg-sidebar`})},`placeholder`)})}var v=({children:e})=>(0,d.jsx)(`div`,{children:e}),y=e=>(0,d.jsx)(`label`,{...e}),b=({children:e})=>(0,d.jsx)(`p`,{children:e}),x=e=>(0,d.jsx)(`input`,{...e}),S=({children:e,...t})=>(0,d.jsx)(`div`,{...t,children:e}),C=e=>null,w=({children:e,...t})=>(0,d.jsx)(`div`,{...t,children:e}),T=({children:e,type:t=`button`,...n})=>(0,d.jsx)(`button`,{type:t,...n,children:e}),E=({className:e})=>(0,d.jsx)(`span`,{className:e,children:`×`}),D=[`ko`,`en`],O=class{url=``;file=null;constructor(e={}){Object.assign(this,e)}isBlobUrl(){return this.url.startsWith(`blob:`)}revokeIfNeeded(){this.file&&this.isBlobUrl()&&URL.revokeObjectURL(this.url)}get isEmpty(){return!this.file&&!this.url}},k={wrapper:{display:`flex`,flexDirection:`column`,gap:`1rem`},trigger:{display:`block`,cursor:`pointer`},card:{position:`relative`,overflow:`hidden`,borderRadius:`1.5rem`,border:`1px solid #e5e7eb`,backgroundColor:`#ffffff`,transition:`background-color 160ms ease, box-shadow 160ms ease`},frame:{position:`relative`,width:`100%`,aspectRatio:`16 / 9`},imageLayer:{position:`absolute`,inset:0,padding:`1.5rem`},imageBox:{margin:`0 auto`,maxWidth:`100%`,maxHeight:`100%`},image:{width:`100%`,height:`100%`,objectFit:`cover`,display:`block`},empty:{display:`flex`,width:`100%`,height:`100%`,flexDirection:`column`,alignItems:`center`,justifyContent:`center`,gap:`1rem`,color:`#6b7280`,textAlign:`center`,padding:`1rem`,boxSizing:`border-box`},badge:{borderRadius:`1rem`,backgroundColor:`#f3f4f6`,padding:`0.75rem 1rem`,fontSize:`0.875rem`,lineHeight:1.2,color:`#111827`},hint:{margin:0,fontSize:`0.875rem`,lineHeight:1.4},overlay:{pointerEvents:`none`,position:`absolute`,inset:0,borderRadius:`inherit`,boxShadow:`inset 0 0 0 0 rgba(59, 130, 246, 0)`,transition:`box-shadow 160ms ease`}};function A({id:e,label:t,uploadHintText:n,descriptionText:r,value:i,onChange:a,aspectRatio:o=`1 / 1`,accept:s=`image/*`,components:c}){let{t:u}=(0,f.useTranslation)(),p=c?.Field??v,m=c?.FieldLabel??y,h=c?.FieldDescription??b,g=c?.Input??x,S={...k.imageBox,aspectRatio:o},[C,w]=(0,l.useState)(!1);return(0,d.jsxs)(p,{children:[(0,d.jsx)(m,{htmlFor:e,children:t}),(0,d.jsxs)(`div`,{style:k.wrapper,children:[(0,d.jsx)(`label`,{htmlFor:e,style:{...k.trigger,backgroundColor:C?`#f9fafb`:`#ffffff`},onMouseEnter:()=>w(!0),onMouseLeave:()=>w(!1),children:(0,d.jsxs)(`div`,{style:k.card,children:[(0,d.jsx)(`div`,{style:k.frame,children:i.url?(0,d.jsx)(`div`,{style:k.imageLayer,children:(0,d.jsx)(`div`,{style:S,children:(0,d.jsx)(_,{src:i.url,className:``,alt:t,style:k.image})})}):(0,d.jsxs)(`div`,{style:k.empty,children:[(0,d.jsx)(`div`,{style:k.badge,children:u(`libs:add_assets`)}),(0,d.jsx)(`p`,{style:k.hint,children:n})]})}),(0,d.jsx)(`div`,{style:{...k.overlay,boxShadow:C?`inset 0 0 0 2px rgba(59, 130, 246, 0.16)`:`inset 0 0 0 0 rgba(59, 130, 246, 0)`}})]})}),(0,d.jsx)(g,{id:e,type:`file`,accept:s,onChange:e=>{let t=e.target.files?.[0];t&&(i.revokeIfNeeded(),a(new O({file:t,url:URL.createObjectURL(t)})),e.currentTarget.value=``)},style:{display:`none`}}),(0,d.jsx)(h,{children:r})]})]})}var j={wrapper:{display:`flex`,flexDirection:`column`,gap:`0.75rem`},outerBox:{borderRadius:`1.5rem`,border:`1px solid #e5e7eb`,backgroundColor:`#ffffff`,overflow:`hidden`},scrollArea:{width:`100%`,overflowX:`auto`,overflowY:`hidden`,whiteSpace:`nowrap`},list:{display:`flex`,width:`max-content`,gap:`1rem`,padding:`1rem`},item:{position:`relative`,flexShrink:0},card:{position:`relative`,width:`15rem`,overflow:`hidden`,borderRadius:`0.75rem`,padding:0,backgroundColor:`#ffffff`,border:`1px solid #e5e7eb`,boxSizing:`border-box`},cardInner:{position:`relative`,width:`100%`,height:`100%`},image:{width:`100%`,height:`100%`,objectFit:`cover`,display:`block`},removeButton:{position:`absolute`,right:`1rem`,bottom:`1rem`,borderRadius:`9999px`,boxShadow:`0 1px 3px rgba(0, 0, 0, 0.12)`},uploadLabel:{display:`block`,flexShrink:0,cursor:`pointer`},uploadCard:{width:`15rem`,overflow:`hidden`,borderRadius:`0.75rem`,padding:0,border:`1px dashed #d1d5db`,backgroundColor:`#ffffff`,boxSizing:`border-box`,transition:`background-color 160ms ease`},uploadCardInner:{display:`flex`,width:`100%`,height:`100%`,flexDirection:`column`,alignItems:`center`,justifyContent:`center`,gap:`1rem`,color:`#6b7280`,textAlign:`center`,padding:`1rem`,boxSizing:`border-box`},badge:{borderRadius:`1rem`,backgroundColor:`#f3f4f6`,padding:`0.75rem 1rem`,fontSize:`0.875rem`,lineHeight:1.2,color:`#111827`},hint:{margin:0,fontSize:`0.875rem`,lineHeight:1.4},description:{marginTop:`0.25rem`},hiddenInput:{display:`none`},scrollBar:{marginLeft:`1rem`,marginRight:`1rem`}};function M({id:e,label:t,descriptionText:n,uploadHintText:r,items:i,onChange:a,aspectRatio:o=`1 / 1`,accept:s=`image/*`,components:c}){let{t:l}=(0,f.useTranslation)(),p=c?.Field??v,m=c?.FieldLabel??y,h=c?.FieldDescription??b,g=c?.Input??x,D=c?.ScrollArea??S,k=c?.ScrollBar??C,A=c?.Card??w,M=c?.Button??T,N=c?.CloseIcon??E,P=e=>{e.revokeIfNeeded(),a(i.filter(t=>t!==e))},F=e=>{!e||e.length===0||a([...i,...Array.from(e).map(e=>new O({file:e,url:URL.createObjectURL(e)}))])},I={...j.card,aspectRatio:o},L={...j.uploadCard,aspectRatio:o};return(0,d.jsxs)(p,{children:[(0,d.jsx)(m,{htmlFor:e,children:t}),(0,d.jsxs)(`div`,{style:j.wrapper,children:[(0,d.jsxs)(`div`,{style:j.outerBox,children:[(0,d.jsxs)(D,{style:j.scrollArea,children:[(0,d.jsxs)(u.Reorder.Group,{axis:`x`,values:i,onReorder:a,layoutScroll:!0,style:j.list,children:[i.map(e=>(0,d.jsx)(u.Reorder.Item,{value:e,style:j.item,children:(0,d.jsx)(A,{style:I,children:(0,d.jsxs)(`div`,{style:j.cardInner,children:[(0,d.jsx)(_,{src:e.url,className:``,alt:t,style:j.image,draggable:!1}),(0,d.jsx)(M,{type:`button`,style:j.removeButton,onClick:()=>P(e),children:(0,d.jsx)(N,{})})]})})},e.url)),(0,d.jsx)(`label`,{htmlFor:e,style:j.uploadLabel,children:(0,d.jsx)(A,{style:L,onMouseEnter:e=>{e.currentTarget.style.backgroundColor=`#f9fafb`},onMouseLeave:e=>{e.currentTarget.style.backgroundColor=`#ffffff`},children:(0,d.jsxs)(`div`,{style:j.uploadCardInner,children:[(0,d.jsx)(`div`,{style:j.badge,children:l(`libs:add_assets`)}),(0,d.jsx)(`p`,{style:j.hint,children:r})]})})})]}),(0,d.jsx)(k,{orientation:`horizontal`,style:j.scrollBar})]}),(0,d.jsx)(g,{id:e,type:`file`,accept:s,multiple:!0,onChange:e=>{F(e.target.files),e.currentTarget.value=``},style:j.hiddenInput})]}),(0,d.jsx)(`div`,{style:j.description,children:(0,d.jsx)(h,{children:n})})]})]})}function N(e){return{...e.data(),id:e.id}}async function P(e,t,n,r){let i=r.filter(e=>!!(e&&!n.has(e.path)));for(let r=0;r<i.length;r+=30){let a=i.slice(r,r+30);(await(0,p.getDocs)((0,p.query)(e,(0,p.where)((0,p.documentId)(),`in`,a.map(e=>e.id))))).forEach(e=>{let r=t(e);n.set(e.ref.path,r)})}}async function F(e,t,n){let r=n.filter(e=>!!(e&&!t.has(e.path)));await Promise.all(r.map(async n=>{let r=e(await(0,p.getDoc)(n));t.set(n.path,r)}))}function I(e={}){let{cache:t=!0,includeMetadataChanges:n}=e;return{listenOptions:{includeMetadataChanges:n??!t},cache:t}}function L(e,t){return t!==!1||!e}function R(e,t,n={}){let{listenOptions:r,cache:i}=I(n),{onError:a}=n;return e.type,(0,p.onSnapshot)(e,r,e=>{L(e.metadata.fromCache,i)&&t(e)},a)}function z(){if(typeof window>`u`)return`pc`;let e=navigator.userAgent,t=navigator.platform,n=/Android/i.test(e),r=/iPhone|iPad|iPod/i.test(e)||t===`MacIntel`&&navigator.maxTouchPoints>1;return n?`android`:r?`ios`:`pc`}function B(e){let t=(0,l.createContext)(null);function n({children:n,...r}){let[i]=(0,l.useState)(()=>e(r));return(0,d.jsx)(t.Provider,{value:i,children:n})}function r(e){let n=(0,l.useContext)(t);if(!n)throw Error(`Provider가 필요합니다.`);return(0,m.useStore)(n,e)}let i=new Map;return{Provider:n,useStore:r,use:new Proxy({},{get:(e,t)=>(i.has(t)||i.set(t,()=>r(e=>e[t])),i.get(t))})}}var V=o(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs=r()})(e,(function(){"use strict";var e=1e3,t=6e4,n=36e5,r=`millisecond`,i=`second`,a=`minute`,o=`hour`,s=`day`,c=`week`,l=`month`,u=`quarter`,d=`year`,f=`date`,p=`Invalid Date`,m=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,h=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,g={name:`en`,weekdays:`Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday`.split(`_`),months:`January_February_March_April_May_June_July_August_September_October_November_December`.split(`_`),ordinal:function(e){var t=[`th`,`st`,`nd`,`rd`],n=e%100;return`[`+e+(t[(n-20)%10]||t[n]||t[0])+`]`}},_=function(e,t,n){var r=String(e);return!r||r.length>=t?e:``+Array(t+1-r.length).join(n)+e},v={s:_,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),i=n%60;return(t<=0?`+`:`-`)+_(r,2,`0`)+`:`+_(i,2,`0`)},m:function e(t,n){if(t.date()<n.date())return-e(n,t);var r=12*(n.year()-t.year())+(n.month()-t.month()),i=t.clone().add(r,l),a=n-i<0,o=t.clone().add(r+(a?-1:1),l);return+(-(r+(n-i)/(a?i-o:o-i))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(e){return{M:l,y:d,w:c,d:s,D:f,h:o,m:a,s:i,ms:r,Q:u}[e]||String(e||``).toLowerCase().replace(/s$/,``)},u:function(e){return e===void 0}},y=`en`,b={};b[y]=g;var x=`$isDayjsObject`,S=function(e){return e instanceof E||!(!e||!e[x])},C=function e(t,n,r){var i;if(!t)return y;if(typeof t==`string`){var a=t.toLowerCase();b[a]&&(i=a),n&&(b[a]=n,i=a);var o=t.split(`-`);if(!i&&o.length>1)return e(o[0])}else{var s=t.name;b[s]=t,i=s}return!r&&i&&(y=i),i||!r&&y},w=function(e,t){if(S(e))return e.clone();var n=typeof t==`object`?t:{};return n.date=e,n.args=arguments,new E(n)},T=v;T.l=C,T.i=S,T.w=function(e,t){return w(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var E=function(){function g(e){this.$L=C(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[x]=!0}var _=g.prototype;return _.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(t===null)return new Date(NaN);if(T.u(t))return new Date;if(t instanceof Date)return new Date(t);if(typeof t==`string`&&!/Z$/i.test(t)){var r=t.match(m);if(r){var i=r[2]-1||0,a=(r[7]||`0`).substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,a)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,a)}}return new Date(t)}(e),this.init()},_.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},_.$utils=function(){return T},_.isValid=function(){return this.$d.toString()!==p},_.isSame=function(e,t){var n=w(e);return this.startOf(t)<=n&&n<=this.endOf(t)},_.isAfter=function(e,t){return w(e)<this.startOf(t)},_.isBefore=function(e,t){return this.endOf(t)<w(e)},_.$g=function(e,t,n){return T.u(e)?this[t]:this.set(n,e)},_.unix=function(){return Math.floor(this.valueOf()/1e3)},_.valueOf=function(){return this.$d.getTime()},_.startOf=function(e,t){var n=this,r=!!T.u(t)||t,u=T.p(e),p=function(e,t){var i=T.w(n.$u?Date.UTC(n.$y,t,e):new Date(n.$y,t,e),n);return r?i:i.endOf(s)},m=function(e,t){return T.w(n.toDate()[e].apply(n.toDate(`s`),(r?[0,0,0,0]:[23,59,59,999]).slice(t)),n)},h=this.$W,g=this.$M,_=this.$D,v=`set`+(this.$u?`UTC`:``);switch(u){case d:return r?p(1,0):p(31,11);case l:return r?p(1,g):p(0,g+1);case c:var y=this.$locale().weekStart||0,b=(h<y?h+7:h)-y;return p(r?_-b:_+(6-b),g);case s:case f:return m(v+`Hours`,0);case o:return m(v+`Minutes`,1);case a:return m(v+`Seconds`,2);case i:return m(v+`Milliseconds`,3);default:return this.clone()}},_.endOf=function(e){return this.startOf(e,!1)},_.$set=function(e,t){var n,c=T.p(e),u=`set`+(this.$u?`UTC`:``),p=(n={},n[s]=u+`Date`,n[f]=u+`Date`,n[l]=u+`Month`,n[d]=u+`FullYear`,n[o]=u+`Hours`,n[a]=u+`Minutes`,n[i]=u+`Seconds`,n[r]=u+`Milliseconds`,n)[c],m=c===s?this.$D+(t-this.$W):t;if(c===l||c===d){var h=this.clone().set(f,1);h.$d[p](m),h.init(),this.$d=h.set(f,Math.min(this.$D,h.daysInMonth())).$d}else p&&this.$d[p](m);return this.init(),this},_.set=function(e,t){return this.clone().$set(e,t)},_.get=function(e){return this[T.p(e)]()},_.add=function(r,u){var f,p=this;r=Number(r);var m=T.p(u),h=function(e){var t=w(p);return T.w(t.date(t.date()+Math.round(e*r)),p)};if(m===l)return this.set(l,this.$M+r);if(m===d)return this.set(d,this.$y+r);if(m===s)return h(1);if(m===c)return h(7);var g=(f={},f[a]=t,f[o]=n,f[i]=e,f)[m]||1,_=this.$d.getTime()+r*g;return T.w(_,this)},_.subtract=function(e,t){return this.add(-1*e,t)},_.format=function(e){var t=this,n=this.$locale();if(!this.isValid())return n.invalidDate||p;var r=e||`YYYY-MM-DDTHH:mm:ssZ`,i=T.z(this),a=this.$H,o=this.$m,s=this.$M,c=n.weekdays,l=n.months,u=n.meridiem,d=function(e,n,i,a){return e&&(e[n]||e(t,r))||i[n].slice(0,a)},f=function(e){return T.s(a%12||12,e,`0`)},m=u||function(e,t,n){var r=e<12?`AM`:`PM`;return n?r.toLowerCase():r};return r.replace(h,(function(e,r){return r||function(e){switch(e){case`YY`:return String(t.$y).slice(-2);case`YYYY`:return T.s(t.$y,4,`0`);case`M`:return s+1;case`MM`:return T.s(s+1,2,`0`);case`MMM`:return d(n.monthsShort,s,l,3);case`MMMM`:return d(l,s);case`D`:return t.$D;case`DD`:return T.s(t.$D,2,`0`);case`d`:return String(t.$W);case`dd`:return d(n.weekdaysMin,t.$W,c,2);case`ddd`:return d(n.weekdaysShort,t.$W,c,3);case`dddd`:return c[t.$W];case`H`:return String(a);case`HH`:return T.s(a,2,`0`);case`h`:return f(1);case`hh`:return f(2);case`a`:return m(a,o,!0);case`A`:return m(a,o,!1);case`m`:return String(o);case`mm`:return T.s(o,2,`0`);case`s`:return String(t.$s);case`ss`:return T.s(t.$s,2,`0`);case`SSS`:return T.s(t.$ms,3,`0`);case`Z`:return i}return null}(e)||i.replace(`:`,``)}))},_.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},_.diff=function(r,f,p){var m,h=this,g=T.p(f),_=w(r),v=(_.utcOffset()-this.utcOffset())*t,y=this-_,b=function(){return T.m(h,_)};switch(g){case d:m=b()/12;break;case l:m=b();break;case u:m=b()/3;break;case c:m=(y-v)/6048e5;break;case s:m=(y-v)/864e5;break;case o:m=y/n;break;case a:m=y/t;break;case i:m=y/e;break;default:m=y}return p?m:T.a(m)},_.daysInMonth=function(){return this.endOf(l).$D},_.$locale=function(){return b[this.$L]},_.locale=function(e,t){if(!e)return this.$L;var n=this.clone(),r=C(e,t,!0);return r&&(n.$L=r),n},_.clone=function(){return T.w(this.$d,this)},_.toDate=function(){return new Date(this.valueOf())},_.toJSON=function(){return this.isValid()?this.toISOString():null},_.toISOString=function(){return this.$d.toISOString()},_.toString=function(){return this.$d.toUTCString()},g}(),D=E.prototype;return w.prototype=D,[[`$ms`,r],[`$s`,i],[`$m`,a],[`$H`,o],[`$W`,s],[`$M`,l],[`$y`,d],[`$D`,f]].forEach((function(e){D[e[1]]=function(t){return this.$g(t,e[0],e[1])}})),w.extend=function(e,t){return e.$i||=(e(t,E,w),!0),w},w.locale=C,w.isDayjs=S,w.unix=function(e){return w(1e3*e)},w.en=b[y],w.Ls=b,w.p={},w}))})),H=o(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r(V()):typeof define==`function`&&define.amd?define([`dayjs`],r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_locale_ko=r(n.dayjs)})(e,(function(e){"use strict";function t(e){return e&&typeof e==`object`&&`default`in e?e:{default:e}}var n=t(e),r={name:`ko`,weekdays:`일요일_월요일_화요일_수요일_목요일_금요일_토요일`.split(`_`),weekdaysShort:`일_월_화_수_목_금_토`.split(`_`),weekdaysMin:`일_월_화_수_목_금_토`.split(`_`),months:`1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월`.split(`_`),monthsShort:`1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월`.split(`_`),ordinal:function(e){return e+`일`},formats:{LT:`A h:mm`,LTS:`A h:mm:ss`,L:`YYYY.MM.DD.`,LL:`YYYY년 MMMM D일`,LLL:`YYYY년 MMMM D일 A h:mm`,LLLL:`YYYY년 MMMM D일 dddd A h:mm`,l:`YYYY.MM.DD.`,ll:`YYYY년 MMMM D일`,lll:`YYYY년 MMMM D일 A h:mm`,llll:`YYYY년 MMMM D일 dddd A h:mm`},meridiem:function(e){return e<12?`오전`:`오후`},relativeTime:{future:`%s 후`,past:`%s 전`,s:`몇 초`,m:`1분`,mm:`%d분`,h:`한 시간`,hh:`%d시간`,d:`하루`,dd:`%d일`,M:`한 달`,MM:`%d달`,y:`일 년`,yy:`%d년`}};return n.default.locale(r,null,!0),r}))})),U=o(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_locale_en=r()})(e,(function(){"use strict";return{name:`en`,weekdays:`Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday`.split(`_`),months:`January_February_March_April_May_June_July_August_September_October_November_December`.split(`_`),ordinal:function(e){var t=[`th`,`st`,`nd`,`rd`],n=e%100;return`[`+e+(t[(n-20)%10]||t[n]||t[0])+`]`}}}))})),W=c(V(),1);H(),U();function G(e,t,n){let r=(0,W.default)(e);return!e||!r.isValid()?``:r.format(n(t))}function K(){let{t:e}=(0,f.useTranslation)();return(0,l.useMemo)(()=>({basicDateTimeFormat:(t,n)=>G(t,n,e),dateTimeFormat:t=>G(t,`libs:datetime.date_time_format`,e),dateFormat:t=>G(t,`libs:datetime.date_format`,e),timeFormat:t=>G(t,`libs:datetime.time_format`,e)}),[e])}function q(e){let t=(0,W.default)(e);return t.isValid()?t.format(`YYYYMMDD`):``}function J(e){let t=(0,W.default)(e);return t.isValid()?t.format(`HH:mm`):``}var Y=e=>{let t=e?.split(`-`)[0]===`ko`?`ko`:`en`;W.default.locale(t)};h.default.isInitialized&&Y(h.default.resolvedLanguage||h.default.language),h.default.on(`languageChanged`,Y);function X(e){let t=e.lastIndexOf(`.`);return t===-1?``:e.substring(t+1)}async function Z(e,t,n){if(!n.file)return n.url;try{let r=X(n.file.name);return await(0,g.getDownloadURL)((await(0,g.uploadBytes)((0,g.ref)(e,r?t+`.`+r:t),n.file,{contentType:n.file.type})).ref)}catch(e){throw console.error(`Firebase image upload failed:`,e),e}}var Q=()=>({updateAt:(0,p.serverTimestamp)(),delete:!0}),$=()=>({updateAt:(0,p.serverTimestamp)(),delete:!1});function ee(e){switch(e){case`auth/user-not-found`:return`libs:auth.errors.user_not_found`;case`auth/wrong-password`:return`libs:auth.errors.wrong_password`;case`auth/invalid-credential`:return`libs:auth.errors.invalid_credential`;case`auth/invalid-email`:return`libs:auth.errors.invalid_email`;case`auth/user-disabled`:return`libs:auth.errors.user_disabled`;case`auth/too-many-requests`:return`libs:auth.errors.too_many_requests`;case`auth/network-request-failed`:return`libs:auth.errors.network_request_failed`;case`auth/timeout`:return`libs:auth.errors.timeout`;case`auth/email-already-in-use`:return`libs:auth.errors.email_already_in_use`;case`auth/weak-password`:return`libs:auth.errors.weak_password`;case`auth/requires-recent-login`:return`libs:auth.errors.requires_recent_login`;case`auth/user-token-expired`:return`libs:auth.errors.user_token_expired`;case`auth/popup-blocked`:return`libs:auth.errors.popup_blocked`;case`auth/popup-closed-by-user`:return`libs:auth.errors.popup_closed_by_user`;case`auth/operation-not-allowed`:return`libs:auth.errors.operation_not_allowed`;case`auth/web-storage-unsupported`:return`libs:auth.errors.web_storage_unsupported`;case`auth/unauthorized-domain`:return`libs:auth.errors.unauthorized_domain`;default:return`libs:auth.errors.default`}}var te={auth:{errors:{invalid_credential:`이메일 또는 비밀번호를 다시 확인해 주세요.`,wrong_password:`이메일 또는 비밀번호를 다시 확인해 주세요.`,user_not_found:`입력한 정보와 일치하는 계정을 찾을 수 없어요.`,invalid_email:`이메일 형식을 확인해 주세요.`,email_already_in_use:`이미 가입된 이메일이에요. 로그인하거나 다른 이메일을 사용해 주세요.`,weak_password:`비밀번호는 6자 이상으로 입력해 주세요.`,user_disabled:`이 계정은 현재 사용할 수 없어요. 관리자에게 문의해 주세요.`,too_many_requests:`시도가 너무 많아요. 잠시 후 다시 시도해 주세요.`,network_request_failed:`인터넷 연결을 확인한 뒤 다시 시도해 주세요.`,timeout:`응답이 지연되고 있어요. 잠시 후 다시 시도해 주세요.`,requires_recent_login:`보안을 위해 다시 로그인해 주세요.`,user_token_expired:`로그인 시간이 만료되었어요. 다시 로그인해 주세요.`,operation_not_allowed:`현재 사용할 수 없는 로그인 방식이에요.`,account_exists_with_different_credential:`이미 다른 로그인 방식으로 가입된 이메일이에요. 기존 방식으로 로그인해 주세요.`,popup_blocked:`로그인 창이 차단되었어요. 팝업 허용 후 다시 시도해 주세요.`,popup_closed_by_user:`로그인 창이 닫혀서 로그인이 완료되지 않았어요.`,web_storage_unsupported:`현재 브라우저 설정에서는 로그인을 진행할 수 없어요.`,unauthorized_domain:`현재 접속한 도메인에서는 로그인을 사용할 수 없어요.`,internal_error:`문제가 발생했어요. 잠시 후 다시 시도해 주세요.`,default:`로그인 중 문제가 발생했어요. 잠시 후 다시 시도해 주세요.`}},unknown_error_occurred:`알 수 없는 오류가 발생했습니다.`,datetime:{date_format:`YYYY년 M월 D일`,date_time_format:`YYYY년 M월 D일 A h:mm:ss`,time_format:`A h:mm:ss`},add_assets:`애셋 추가`},ne={auth:{errors:{invalid_credential:`Please check your email or password.`,wrong_password:`Please check your email or password.`,user_not_found:`We couldn’t find an account matching that information.`,invalid_email:`Please check your email format.`,email_already_in_use:`This email is already registered. Sign in or use a different email.`,weak_password:`Your password must be at least 6 characters long.`,user_disabled:`This account is currently unavailable. Please contact support.`,too_many_requests:`Too many attempts. Please try again later.`,network_request_failed:`Check your internet connection and try again.`,timeout:`The request is taking too long. Please try again.`,requires_recent_login:`For security reasons, please sign in again.`,user_token_expired:`Your session has expired. Please sign in again.`,operation_not_allowed:`This sign-in method is currently unavailable.`,account_exists_with_different_credential:`This email is already linked to another sign-in method. Please use that method to sign in.`,popup_blocked:`The sign-in window was blocked. Please allow pop-ups and try again.`,popup_closed_by_user:`The sign-in window was closed before completion.`,web_storage_unsupported:`Sign-in is not available with your current browser settings.`,unauthorized_domain:`Sign-in is not available on this domain.`,internal_error:`Something went wrong. Please try again later.`,default:`We couldn’t complete the sign-in. Please try again later.`}},unknown_error_occurred:`Unknown error occurred.`,datetime:{date_format:`MMMM D, YYYY`,date_time_format:`MMMM D, YYYY h:mm:ss A`,time_format:`h:mm:ss A`},add_assets:`Add Assets`};function re(e){e.hasResourceBundle(`ko`,`libs`)||e.addResourceBundle(`ko`,`libs`,te,!0,!1),e.hasResourceBundle(`en`,`libs`)||e.addResourceBundle(`en`,`libs`,ne,!0,!1)}var ie={Info:{Soft:{"--normal-bg":`color-mix(in oklab, light-dark(var(--color-sky-600), var(--color-sky-400)) 10%, var(--background))`,"--normal-text":`light-dark(var(--color-sky-600), var(--color-sky-400))`,"--normal-border":`light-dark(var(--color-sky-600), var(--color-sky-400))`},Outline:{"--normal-bg":`var(--background)`,"--normal-text":`light-dark(var(--color-sky-600), var(--color-sky-400))`,"--normal-border":`light-dark(var(--color-sky-600), var(--color-sky-400))`},Solid:{"--normal-bg":`light-dark(var(--color-sky-600), var(--color-sky-400))`,"--normal-text":`var(--color-white)`,"--normal-border":`light-dark(var(--color-sky-600), var(--color-sky-400))`}},Success:{Soft:{"--normal-bg":`color-mix(in oklab, light-dark(var(--color-green-600), var(--color-green-400)) 10%, var(--background))`,"--normal-text":`light-dark(var(--color-green-600), var(--color-green-400))`,"--normal-border":`light-dark(var(--color-green-600), var(--color-green-400))`},Outline:{"--normal-bg":`var(--background)`,"--normal-text":`light-dark(var(--color-green-600), var(--color-green-400))`,"--normal-border":`light-dark(var(--color-green-600), var(--color-green-400))`},Solid:{"--normal-bg":`light-dark(var(--color-green-600), var(--color-green-400))`,"--normal-text":`var(--color-white)`,"--normal-border":`light-dark(var(--color-green-600), var(--color-green-400))`}},Warning:{Soft:{"--normal-bg":`color-mix(in oklab, light-dark(var(--color-amber-600), var(--color-amber-400)) 10%, var(--background))`,"--normal-text":`light-dark(var(--color-amber-600), var(--color-amber-400))`,"--normal-border":`light-dark(var(--color-amber-600), var(--color-amber-400))`},Outline:{"--normal-bg":`var(--background)`,"--normal-text":`light-dark(var(--color-amber-600), var(--color-amber-400))`,"--normal-border":`light-dark(var(--color-amber-600), var(--color-amber-400))`},Solid:{"--normal-bg":`light-dark(var(--color-amber-600), var(--color-amber-400))`,"--normal-text":`var(--color-white)`,"--normal-border":`light-dark(var(--color-amber-600), var(--color-amber-400))`}},Destructive:{Soft:{"--normal-bg":`color-mix(in oklab, var(--destructive) 10%, var(--background))`,"--normal-text":`var(--destructive)`,"--normal-border":`var(--destructive)`},Outline:{"--normal-bg":`var(--background)`,"--normal-text":`var(--destructive)`,"--normal-border":`var(--destructive)`},Solid:{"--normal-bg":`light-dark(var(--destructive), color-mix(in oklab, var(--destructive) 60%, var(--background)))`,"--normal-text":`var(--color-white)`,"--normal-border":`transparent`}}};exports.CrossfadeImage=_,exports.ImageUploadField=A,exports.ImageUploadItem=O,exports.ImageUploadSortableField=M,exports.SUPPORTED_LOCALES=D,exports.ToastCSS=ie,exports.createZustandContext=B,exports.dateIdFormat=q,exports.deleteItem=Q,exports.fetchItems=P,exports.fetchItemsByOne=F,exports.getAuthErrorKey=ee,exports.getFileExtension=X,exports.getPlatformType=z,exports.getSnapshots=R,exports.initIenlabI18n=re,exports.snapshotToData=N,exports.time24Format=J,exports.undeleteItem=$,exports.uploadImage=Z,exports.useDateTimeFormatters=K;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,a)=>(a=n==null?{}:e(i(n)),s(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let l=require(`react`),u=require(`motion/react`),d=require(`react/jsx-runtime`),f=require(`react-i18next`),p=require(`firebase/firestore`),m=require(`zustand/react`),h=require(`i18next`);h=c(h,1);let g=require(`firebase/storage`);function _({placeholder:e,src:t,onLoadError:n,...r}){let[i,a]=(0,l.useState)(()=>{if(typeof window>`u`||!t)return!1;let e=new Image;return e.src=t,e.complete&&e.naturalWidth>0}),[o,s]=(0,l.useState)(t);return o!==t&&(s(t),a(!1)),(0,l.useEffect)(()=>{if(!t)return;let e=new Image;return e.src=t,e.onload=()=>a(!0),e.onerror=e=>{n?n(e):console.error(`CrossfadeImage: Failed to load image`,t)},e.complete&&e.naturalWidth>0&&e.onload(new Event(`load`)),()=>{e.onload=null,e.onerror=null}},[t,n]),(0,d.jsx)(u.AnimatePresence,{children:i&&t?(0,d.jsx)(u.motion.img,{src:t,...r,initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},style:{...r.style}},`loaded-image`):(0,d.jsx)(u.motion.div,{initial:{opacity:1},transition:{duration:.3},style:{...r.style},children:e??(0,d.jsx)(`div`,{className:`w-full h-full bg-sidebar`})},`placeholder`)})}var v=({children:e})=>(0,d.jsx)(`div`,{children:e}),y=e=>(0,d.jsx)(`label`,{...e}),b=({children:e})=>(0,d.jsx)(`p`,{children:e}),x=e=>(0,d.jsx)(`input`,{...e}),S=({children:e,...t})=>(0,d.jsx)(`div`,{...t,children:e}),C=e=>null,w=({children:e,...t})=>(0,d.jsx)(`div`,{...t,children:e}),T=({children:e,type:t=`button`,...n})=>(0,d.jsx)(`button`,{type:t,...n,children:e}),E=({className:e})=>(0,d.jsx)(`span`,{className:e,children:`×`}),D=[`ko`,`en`],O=class{url=``;file=null;constructor(e={}){Object.assign(this,e)}isBlobUrl(){return this.url.startsWith(`blob:`)}revokeIfNeeded(){this.file&&this.isBlobUrl()&&URL.revokeObjectURL(this.url)}get isEmpty(){return!this.file&&!this.url}},k={wrapper:{display:`flex`,flexDirection:`column`,gap:`1rem`},trigger:{display:`block`,cursor:`pointer`},card:{position:`relative`,overflow:`hidden`,borderRadius:`1.5rem`,border:`1px solid #e5e7eb`,backgroundColor:`#ffffff`,transition:`background-color 160ms ease, box-shadow 160ms ease`},frame:{position:`relative`,width:`100%`,aspectRatio:`16 / 9`},imageLayer:{position:`absolute`,inset:0,padding:`1.5rem`},imageBox:{margin:`0 auto`,maxWidth:`100%`,maxHeight:`100%`},image:{width:`100%`,height:`100%`,objectFit:`cover`,display:`block`},empty:{display:`flex`,width:`100%`,height:`100%`,flexDirection:`column`,alignItems:`center`,justifyContent:`center`,gap:`1rem`,color:`#6b7280`,textAlign:`center`,padding:`1rem`,boxSizing:`border-box`},badge:{borderRadius:`1rem`,backgroundColor:`#f3f4f6`,padding:`0.75rem 1rem`,fontSize:`0.875rem`,lineHeight:1.2,color:`#111827`},hint:{margin:0,fontSize:`0.875rem`,lineHeight:1.4},overlay:{pointerEvents:`none`,position:`absolute`,inset:0,borderRadius:`inherit`,boxShadow:`inset 0 0 0 0 rgba(59, 130, 246, 0)`,transition:`box-shadow 160ms ease`}};function A({id:e,label:t,uploadHintText:n,descriptionText:r,value:i,onChange:a,aspectRatio:o=`1 / 1`,accept:s=`image/*`,components:c}){let{t:u}=(0,f.useTranslation)(),p=c?.Field??v,m=c?.FieldLabel??y,h=c?.FieldDescription??b,g=c?.Input??x,S={...k.imageBox,aspectRatio:o},[C,w]=(0,l.useState)(!1);return(0,d.jsxs)(p,{children:[(0,d.jsx)(m,{htmlFor:e,children:t}),(0,d.jsxs)(`div`,{style:k.wrapper,children:[(0,d.jsx)(`label`,{htmlFor:e,style:{...k.trigger,backgroundColor:C?`#f9fafb`:`#ffffff`},onMouseEnter:()=>w(!0),onMouseLeave:()=>w(!1),children:(0,d.jsxs)(`div`,{style:k.card,children:[(0,d.jsx)(`div`,{style:k.frame,children:i.url?(0,d.jsx)(`div`,{style:k.imageLayer,children:(0,d.jsx)(`div`,{style:S,children:(0,d.jsx)(_,{src:i.url,className:``,alt:t,style:k.image})})}):(0,d.jsxs)(`div`,{style:k.empty,children:[(0,d.jsx)(`div`,{style:k.badge,children:u(`libs:add_assets`)}),(0,d.jsx)(`p`,{style:k.hint,children:n})]})}),(0,d.jsx)(`div`,{style:{...k.overlay,boxShadow:C?`inset 0 0 0 2px rgba(59, 130, 246, 0.16)`:`inset 0 0 0 0 rgba(59, 130, 246, 0)`}})]})}),(0,d.jsx)(g,{id:e,type:`file`,accept:s,onChange:e=>{let t=e.target.files?.[0];t&&(i.revokeIfNeeded(),a(new O({file:t,url:URL.createObjectURL(t)})),e.currentTarget.value=``)},style:{display:`none`}}),(0,d.jsx)(h,{children:r})]})]})}var j={wrapper:{display:`flex`,flexDirection:`column`,gap:`0.75rem`},outerBox:{borderRadius:`1.5rem`,border:`1px solid #e5e7eb`,backgroundColor:`#ffffff`,overflow:`hidden`},scrollArea:{width:`100%`,overflowX:`auto`,overflowY:`hidden`,whiteSpace:`nowrap`},list:{display:`flex`,width:`max-content`,gap:`1rem`,padding:`1rem`},item:{position:`relative`,flexShrink:0},card:{position:`relative`,width:`15rem`,overflow:`hidden`,borderRadius:`0.75rem`,padding:0,backgroundColor:`#ffffff`,border:`1px solid #e5e7eb`,boxSizing:`border-box`},cardInner:{position:`relative`,width:`100%`,height:`100%`},image:{width:`100%`,height:`100%`,objectFit:`cover`,display:`block`},removeButton:{position:`absolute`,right:`1rem`,bottom:`1rem`,borderRadius:`9999px`,boxShadow:`0 1px 3px rgba(0, 0, 0, 0.12)`},uploadLabel:{display:`block`,flexShrink:0,cursor:`pointer`},uploadCard:{width:`15rem`,overflow:`hidden`,borderRadius:`0.75rem`,padding:0,border:`1px dashed #d1d5db`,backgroundColor:`#ffffff`,boxSizing:`border-box`,transition:`background-color 160ms ease`},uploadCardInner:{display:`flex`,width:`100%`,height:`100%`,flexDirection:`column`,alignItems:`center`,justifyContent:`center`,gap:`1rem`,color:`#6b7280`,textAlign:`center`,padding:`1rem`,boxSizing:`border-box`},badge:{borderRadius:`1rem`,backgroundColor:`#f3f4f6`,padding:`0.75rem 1rem`,fontSize:`0.875rem`,lineHeight:1.2,color:`#111827`},hint:{margin:0,fontSize:`0.875rem`,lineHeight:1.4},description:{marginTop:`0.25rem`},hiddenInput:{display:`none`},scrollBar:{marginLeft:`1rem`,marginRight:`1rem`}};function M({id:e,label:t,descriptionText:n,uploadHintText:r,items:i,onChange:a,aspectRatio:o=`1 / 1`,accept:s=`image/*`,components:c}){let{t:l}=(0,f.useTranslation)(),p=c?.Field??v,m=c?.FieldLabel??y,h=c?.FieldDescription??b,g=c?.Input??x,D=c?.ScrollArea??S,k=c?.ScrollBar??C,A=c?.Card??w,M=c?.Button??T,N=c?.CloseIcon??E,P=e=>{e.revokeIfNeeded(),a(i.filter(t=>t!==e))},F=e=>{!e||e.length===0||a([...i,...Array.from(e).map(e=>new O({file:e,url:URL.createObjectURL(e)}))])},I={...j.card,aspectRatio:o},L={...j.uploadCard,aspectRatio:o};return(0,d.jsxs)(p,{children:[(0,d.jsx)(m,{htmlFor:e,children:t}),(0,d.jsxs)(`div`,{style:j.wrapper,children:[(0,d.jsxs)(`div`,{style:j.outerBox,children:[(0,d.jsxs)(D,{style:j.scrollArea,children:[(0,d.jsxs)(u.Reorder.Group,{axis:`x`,values:i,onReorder:a,layoutScroll:!0,style:j.list,children:[i.map(e=>(0,d.jsx)(u.Reorder.Item,{value:e,style:j.item,children:(0,d.jsx)(A,{style:I,children:(0,d.jsxs)(`div`,{style:j.cardInner,children:[(0,d.jsx)(_,{src:e.url,className:``,alt:t,style:j.image,draggable:!1}),(0,d.jsx)(M,{type:`button`,style:j.removeButton,onClick:()=>P(e),children:(0,d.jsx)(N,{})})]})})},e.url)),(0,d.jsx)(`label`,{htmlFor:e,style:j.uploadLabel,children:(0,d.jsx)(A,{style:L,onMouseEnter:e=>{e.currentTarget.style.backgroundColor=`#f9fafb`},onMouseLeave:e=>{e.currentTarget.style.backgroundColor=`#ffffff`},children:(0,d.jsxs)(`div`,{style:j.uploadCardInner,children:[(0,d.jsx)(`div`,{style:j.badge,children:l(`libs:add_assets`)}),(0,d.jsx)(`p`,{style:j.hint,children:r})]})})})]}),(0,d.jsx)(k,{orientation:`horizontal`,style:j.scrollBar})]}),(0,d.jsx)(g,{id:e,type:`file`,accept:s,multiple:!0,onChange:e=>{F(e.target.files),e.currentTarget.value=``},style:j.hiddenInput})]}),(0,d.jsx)(`div`,{style:j.description,children:(0,d.jsx)(h,{children:n})})]})]})}function N(e){return{...e.data(),id:e.id}}async function P(e,t,n,r){let i=r.filter(e=>!!(e&&!n.has(e.path)));for(let r=0;r<i.length;r+=30){let a=i.slice(r,r+30);(await(0,p.getDocs)((0,p.query)(e,(0,p.where)((0,p.documentId)(),`in`,a.map(e=>e.id))))).forEach(e=>{let r=t(e);n.set(e.ref.path,r)})}}async function F(e,t,n){let r=n.filter(e=>!!(e&&!t.has(e.path)));await Promise.all(r.map(async n=>{let r=e(await(0,p.getDoc)(n));t.set(n.path,r)}))}function I(e={}){let{cache:t=!0,includeMetadataChanges:n}=e;return{listenOptions:{includeMetadataChanges:n??!t},cache:t}}function L(e,t){return t!==!1||!e}function R(e,t,n={}){let{listenOptions:r,cache:i}=I(n),{onError:a}=n;return e.type,(0,p.onSnapshot)(e,r,e=>{L(e.metadata.fromCache,i)&&t(e)},a)}function z(){if(typeof window>`u`)return`pc`;let e=navigator.userAgent,t=navigator.platform,n=/Android/i.test(e),r=/iPhone|iPad|iPod/i.test(e)||t===`MacIntel`&&navigator.maxTouchPoints>1;return n?`android`:r?`ios`:`pc`}function B(e){let t=(0,l.createContext)(null);function n({children:n,...r}){let[i]=(0,l.useState)(()=>e(r));return(0,d.jsx)(t.Provider,{value:i,children:n})}function r(e){let n=(0,l.useContext)(t);if(!n)throw Error(`Provider가 필요합니다.`);return(0,m.useStore)(n,e)}let i=new Map;return{Provider:n,useStore:r,use:new Proxy({},{get:(e,t)=>(i.has(t)||i.set(t,()=>r(e=>e[t])),i.get(t))})}}var V=o(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs=r()})(e,(function(){"use strict";var e=1e3,t=6e4,n=36e5,r=`millisecond`,i=`second`,a=`minute`,o=`hour`,s=`day`,c=`week`,l=`month`,u=`quarter`,d=`year`,f=`date`,p=`Invalid Date`,m=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,h=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,g={name:`en`,weekdays:`Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday`.split(`_`),months:`January_February_March_April_May_June_July_August_September_October_November_December`.split(`_`),ordinal:function(e){var t=[`th`,`st`,`nd`,`rd`],n=e%100;return`[`+e+(t[(n-20)%10]||t[n]||t[0])+`]`}},_=function(e,t,n){var r=String(e);return!r||r.length>=t?e:``+Array(t+1-r.length).join(n)+e},v={s:_,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),i=n%60;return(t<=0?`+`:`-`)+_(r,2,`0`)+`:`+_(i,2,`0`)},m:function e(t,n){if(t.date()<n.date())return-e(n,t);var r=12*(n.year()-t.year())+(n.month()-t.month()),i=t.clone().add(r,l),a=n-i<0,o=t.clone().add(r+(a?-1:1),l);return+(-(r+(n-i)/(a?i-o:o-i))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(e){return{M:l,y:d,w:c,d:s,D:f,h:o,m:a,s:i,ms:r,Q:u}[e]||String(e||``).toLowerCase().replace(/s$/,``)},u:function(e){return e===void 0}},y=`en`,b={};b[y]=g;var x=`$isDayjsObject`,S=function(e){return e instanceof E||!(!e||!e[x])},C=function e(t,n,r){var i;if(!t)return y;if(typeof t==`string`){var a=t.toLowerCase();b[a]&&(i=a),n&&(b[a]=n,i=a);var o=t.split(`-`);if(!i&&o.length>1)return e(o[0])}else{var s=t.name;b[s]=t,i=s}return!r&&i&&(y=i),i||!r&&y},w=function(e,t){if(S(e))return e.clone();var n=typeof t==`object`?t:{};return n.date=e,n.args=arguments,new E(n)},T=v;T.l=C,T.i=S,T.w=function(e,t){return w(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var E=function(){function g(e){this.$L=C(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[x]=!0}var _=g.prototype;return _.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(t===null)return new Date(NaN);if(T.u(t))return new Date;if(t instanceof Date)return new Date(t);if(typeof t==`string`&&!/Z$/i.test(t)){var r=t.match(m);if(r){var i=r[2]-1||0,a=(r[7]||`0`).substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,a)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,a)}}return new Date(t)}(e),this.init()},_.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},_.$utils=function(){return T},_.isValid=function(){return this.$d.toString()!==p},_.isSame=function(e,t){var n=w(e);return this.startOf(t)<=n&&n<=this.endOf(t)},_.isAfter=function(e,t){return w(e)<this.startOf(t)},_.isBefore=function(e,t){return this.endOf(t)<w(e)},_.$g=function(e,t,n){return T.u(e)?this[t]:this.set(n,e)},_.unix=function(){return Math.floor(this.valueOf()/1e3)},_.valueOf=function(){return this.$d.getTime()},_.startOf=function(e,t){var n=this,r=!!T.u(t)||t,u=T.p(e),p=function(e,t){var i=T.w(n.$u?Date.UTC(n.$y,t,e):new Date(n.$y,t,e),n);return r?i:i.endOf(s)},m=function(e,t){return T.w(n.toDate()[e].apply(n.toDate(`s`),(r?[0,0,0,0]:[23,59,59,999]).slice(t)),n)},h=this.$W,g=this.$M,_=this.$D,v=`set`+(this.$u?`UTC`:``);switch(u){case d:return r?p(1,0):p(31,11);case l:return r?p(1,g):p(0,g+1);case c:var y=this.$locale().weekStart||0,b=(h<y?h+7:h)-y;return p(r?_-b:_+(6-b),g);case s:case f:return m(v+`Hours`,0);case o:return m(v+`Minutes`,1);case a:return m(v+`Seconds`,2);case i:return m(v+`Milliseconds`,3);default:return this.clone()}},_.endOf=function(e){return this.startOf(e,!1)},_.$set=function(e,t){var n,c=T.p(e),u=`set`+(this.$u?`UTC`:``),p=(n={},n[s]=u+`Date`,n[f]=u+`Date`,n[l]=u+`Month`,n[d]=u+`FullYear`,n[o]=u+`Hours`,n[a]=u+`Minutes`,n[i]=u+`Seconds`,n[r]=u+`Milliseconds`,n)[c],m=c===s?this.$D+(t-this.$W):t;if(c===l||c===d){var h=this.clone().set(f,1);h.$d[p](m),h.init(),this.$d=h.set(f,Math.min(this.$D,h.daysInMonth())).$d}else p&&this.$d[p](m);return this.init(),this},_.set=function(e,t){return this.clone().$set(e,t)},_.get=function(e){return this[T.p(e)]()},_.add=function(r,u){var f,p=this;r=Number(r);var m=T.p(u),h=function(e){var t=w(p);return T.w(t.date(t.date()+Math.round(e*r)),p)};if(m===l)return this.set(l,this.$M+r);if(m===d)return this.set(d,this.$y+r);if(m===s)return h(1);if(m===c)return h(7);var g=(f={},f[a]=t,f[o]=n,f[i]=e,f)[m]||1,_=this.$d.getTime()+r*g;return T.w(_,this)},_.subtract=function(e,t){return this.add(-1*e,t)},_.format=function(e){var t=this,n=this.$locale();if(!this.isValid())return n.invalidDate||p;var r=e||`YYYY-MM-DDTHH:mm:ssZ`,i=T.z(this),a=this.$H,o=this.$m,s=this.$M,c=n.weekdays,l=n.months,u=n.meridiem,d=function(e,n,i,a){return e&&(e[n]||e(t,r))||i[n].slice(0,a)},f=function(e){return T.s(a%12||12,e,`0`)},m=u||function(e,t,n){var r=e<12?`AM`:`PM`;return n?r.toLowerCase():r};return r.replace(h,(function(e,r){return r||function(e){switch(e){case`YY`:return String(t.$y).slice(-2);case`YYYY`:return T.s(t.$y,4,`0`);case`M`:return s+1;case`MM`:return T.s(s+1,2,`0`);case`MMM`:return d(n.monthsShort,s,l,3);case`MMMM`:return d(l,s);case`D`:return t.$D;case`DD`:return T.s(t.$D,2,`0`);case`d`:return String(t.$W);case`dd`:return d(n.weekdaysMin,t.$W,c,2);case`ddd`:return d(n.weekdaysShort,t.$W,c,3);case`dddd`:return c[t.$W];case`H`:return String(a);case`HH`:return T.s(a,2,`0`);case`h`:return f(1);case`hh`:return f(2);case`a`:return m(a,o,!0);case`A`:return m(a,o,!1);case`m`:return String(o);case`mm`:return T.s(o,2,`0`);case`s`:return String(t.$s);case`ss`:return T.s(t.$s,2,`0`);case`SSS`:return T.s(t.$ms,3,`0`);case`Z`:return i}return null}(e)||i.replace(`:`,``)}))},_.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},_.diff=function(r,f,p){var m,h=this,g=T.p(f),_=w(r),v=(_.utcOffset()-this.utcOffset())*t,y=this-_,b=function(){return T.m(h,_)};switch(g){case d:m=b()/12;break;case l:m=b();break;case u:m=b()/3;break;case c:m=(y-v)/6048e5;break;case s:m=(y-v)/864e5;break;case o:m=y/n;break;case a:m=y/t;break;case i:m=y/e;break;default:m=y}return p?m:T.a(m)},_.daysInMonth=function(){return this.endOf(l).$D},_.$locale=function(){return b[this.$L]},_.locale=function(e,t){if(!e)return this.$L;var n=this.clone(),r=C(e,t,!0);return r&&(n.$L=r),n},_.clone=function(){return T.w(this.$d,this)},_.toDate=function(){return new Date(this.valueOf())},_.toJSON=function(){return this.isValid()?this.toISOString():null},_.toISOString=function(){return this.$d.toISOString()},_.toString=function(){return this.$d.toUTCString()},g}(),D=E.prototype;return w.prototype=D,[[`$ms`,r],[`$s`,i],[`$m`,a],[`$H`,o],[`$W`,s],[`$M`,l],[`$y`,d],[`$D`,f]].forEach((function(e){D[e[1]]=function(t){return this.$g(t,e[0],e[1])}})),w.extend=function(e,t){return e.$i||=(e(t,E,w),!0),w},w.locale=C,w.isDayjs=S,w.unix=function(e){return w(1e3*e)},w.en=b[y],w.Ls=b,w.p={},w}))})),H=o(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r(V()):typeof define==`function`&&define.amd?define([`dayjs`],r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_locale_ko=r(n.dayjs)})(e,(function(e){"use strict";function t(e){return e&&typeof e==`object`&&`default`in e?e:{default:e}}var n=t(e),r={name:`ko`,weekdays:`일요일_월요일_화요일_수요일_목요일_금요일_토요일`.split(`_`),weekdaysShort:`일_월_화_수_목_금_토`.split(`_`),weekdaysMin:`일_월_화_수_목_금_토`.split(`_`),months:`1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월`.split(`_`),monthsShort:`1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월`.split(`_`),ordinal:function(e){return e+`일`},formats:{LT:`A h:mm`,LTS:`A h:mm:ss`,L:`YYYY.MM.DD.`,LL:`YYYY년 MMMM D일`,LLL:`YYYY년 MMMM D일 A h:mm`,LLLL:`YYYY년 MMMM D일 dddd A h:mm`,l:`YYYY.MM.DD.`,ll:`YYYY년 MMMM D일`,lll:`YYYY년 MMMM D일 A h:mm`,llll:`YYYY년 MMMM D일 dddd A h:mm`},meridiem:function(e){return e<12?`오전`:`오후`},relativeTime:{future:`%s 후`,past:`%s 전`,s:`몇 초`,m:`1분`,mm:`%d분`,h:`한 시간`,hh:`%d시간`,d:`하루`,dd:`%d일`,M:`한 달`,MM:`%d달`,y:`일 년`,yy:`%d년`}};return n.default.locale(r,null,!0),r}))})),U=o(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_locale_en=r()})(e,(function(){"use strict";return{name:`en`,weekdays:`Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday`.split(`_`),months:`January_February_March_April_May_June_July_August_September_October_November_December`.split(`_`),ordinal:function(e){var t=[`th`,`st`,`nd`,`rd`],n=e%100;return`[`+e+(t[(n-20)%10]||t[n]||t[0])+`]`}}}))})),W=c(V(),1);H(),U();function G(e,t,n){let r=(0,W.default)(e);return!e||!r.isValid()?``:r.format(n(t))}function K(){let{t:e}=(0,f.useTranslation)();return(0,l.useMemo)(()=>({basicDateTimeFormat:(t,n)=>G(t,n,e),dateTimeFormat:t=>G(t,`libs:datetime.date_time_format`,e),dateFormat:t=>G(t,`libs:datetime.date_format`,e),timeFormat:t=>G(t,`libs:datetime.time_format`,e)}),[e])}function q(e){let t=(0,W.default)(e);return t.isValid()?t.format(`YYYYMMDD`):``}function J(e){let t=(0,W.default)(e);return t.isValid()?t.format(`HH:mm`):``}var Y=e=>{let t=e?.split(`-`)[0]===`ko`?`ko`:`en`;W.default.locale(t)};h.default.isInitialized&&Y(h.default.resolvedLanguage||h.default.language),h.default.on(`languageChanged`,Y);function X(e){let t=e.lastIndexOf(`.`);return t===-1?``:e.substring(t+1)}async function Z(e,t,n){if(!n.file)return n.url;try{let r=X(n.file.name);return await(0,g.getDownloadURL)((await(0,g.uploadBytes)((0,g.ref)(e,r?t+`.`+r:t),n.file,{contentType:n.file.type})).ref)}catch(e){throw console.error(`Firebase image upload failed:`,e),e}}var Q=()=>({updateAt:(0,p.serverTimestamp)(),delete:!0}),$=()=>({updateAt:(0,p.serverTimestamp)(),delete:!1});function ee(e){switch(e){case`auth/user-not-found`:return`libs:auth.errors.user_not_found`;case`auth/wrong-password`:return`libs:auth.errors.wrong_password`;case`auth/invalid-credential`:return`libs:auth.errors.invalid_credential`;case`auth/invalid-email`:return`libs:auth.errors.invalid_email`;case`auth/user-disabled`:return`libs:auth.errors.user_disabled`;case`auth/too-many-requests`:return`libs:auth.errors.too_many_requests`;case`auth/network-request-failed`:return`libs:auth.errors.network_request_failed`;case`auth/timeout`:return`libs:auth.errors.timeout`;case`auth/email-already-in-use`:return`libs:auth.errors.email_already_in_use`;case`auth/weak-password`:return`libs:auth.errors.weak_password`;case`auth/requires-recent-login`:return`libs:auth.errors.requires_recent_login`;case`auth/user-token-expired`:return`libs:auth.errors.user_token_expired`;case`auth/popup-blocked`:return`libs:auth.errors.popup_blocked`;case`auth/popup-closed-by-user`:return`libs:auth.errors.popup_closed_by_user`;case`auth/operation-not-allowed`:return`libs:auth.errors.operation_not_allowed`;case`auth/web-storage-unsupported`:return`libs:auth.errors.web_storage_unsupported`;case`auth/unauthorized-domain`:return`libs:auth.errors.unauthorized_domain`;default:return`libs:auth.errors.default`}}var te={add_assets:`애셋 추가`,auth:{errors:{account_exists_with_different_credential:`이미 다른 로그인 방식으로 가입된 이메일이에요. 기존 방식으로 로그인해 주세요.`,default:`로그인 중 문제가 발생했어요. 잠시 후 다시 시도해 주세요.`,email_already_in_use:`이미 가입된 이메일이에요. 로그인하거나 다른 이메일을 사용해 주세요.`,internal_error:`문제가 발생했어요. 잠시 후 다시 시도해 주세요.`,invalid_credential:`이메일 또는 비밀번호를 다시 확인해 주세요.`,invalid_email:`이메일 형식을 확인해 주세요.`,network_request_failed:`인터넷 연결을 확인한 뒤 다시 시도해 주세요.`,operation_not_allowed:`현재 사용할 수 없는 로그인 방식이에요.`,popup_blocked:`로그인 창이 차단되었어요. 팝업 허용 후 다시 시도해 주세요.`,popup_closed_by_user:`로그인 창이 닫혀서 로그인이 완료되지 않았어요.`,requires_recent_login:`보안을 위해 다시 로그인해 주세요.`,timeout:`응답이 지연되고 있어요. 잠시 후 다시 시도해 주세요.`,too_many_requests:`시도가 너무 많아요. 잠시 후 다시 시도해 주세요.`,unauthorized_domain:`현재 접속한 도메인에서는 로그인을 사용할 수 없어요.`,user_disabled:`이 계정은 현재 사용할 수 없어요. 관리자에게 문의해 주세요.`,user_not_found:`입력한 정보와 일치하는 계정을 찾을 수 없어요.`,user_token_expired:`로그인 시간이 만료되었어요. 다시 로그인해 주세요.`,weak_password:`비밀번호는 6자 이상으로 입력해 주세요.`,web_storage_unsupported:`현재 브라우저 설정에서는 로그인을 진행할 수 없어요.`,wrong_password:`이메일 또는 비밀번호를 다시 확인해 주세요.`}},datetime:{date_format:`YYYY년 M월 D일`,date_time_format:`YYYY년 M월 D일 A h:mm:ss`,time_format:`A h:mm:ss`},no_results:`결과 없음`,unknown_error_occurred:`알 수 없는 오류가 발생했습니다.`},ne={add_assets:`Add Assets`,auth:{errors:{account_exists_with_different_credential:`This email is already linked to another sign-in method. Please use that method to sign in.`,default:`We couldn’t complete the sign-in. Please try again later.`,email_already_in_use:`This email is already registered. Sign in or use a different email.`,internal_error:`Something went wrong. Please try again later.`,invalid_credential:`Please check your email or password.`,invalid_email:`Please check your email format.`,network_request_failed:`Check your internet connection and try again.`,operation_not_allowed:`This sign-in method is currently unavailable.`,popup_blocked:`The sign-in window was blocked. Please allow pop-ups and try again.`,popup_closed_by_user:`The sign-in window was closed before completion.`,requires_recent_login:`For security reasons, please sign in again.`,timeout:`The request is taking too long. Please try again.`,too_many_requests:`Too many attempts. Please try again later.`,unauthorized_domain:`Sign-in is not available on this domain.`,user_disabled:`This account is currently unavailable. Please contact support.`,user_not_found:`We couldn’t find an account matching that information.`,user_token_expired:`Your session has expired. Please sign in again.`,weak_password:`Your password must be at least 6 characters long.`,web_storage_unsupported:`Sign-in is not available with your current browser settings.`,wrong_password:`Please check your email or password.`}},datetime:{date_format:`MMMM D, YYYY`,date_time_format:`MMMM D, YYYY h:mm:ss A`,time_format:`h:mm:ss A`},no_results:`No results`,unknown_error_occurred:`Unknown error occurred.`};function re(e){e.hasResourceBundle(`ko`,`libs`)||e.addResourceBundle(`ko`,`libs`,te,!0,!1),e.hasResourceBundle(`en`,`libs`)||e.addResourceBundle(`en`,`libs`,ne,!0,!1)}var ie={Info:{Soft:{"--normal-bg":`color-mix(in oklab, light-dark(var(--color-sky-600), var(--color-sky-400)) 10%, var(--background))`,"--normal-text":`light-dark(var(--color-sky-600), var(--color-sky-400))`,"--normal-border":`light-dark(var(--color-sky-600), var(--color-sky-400))`},Outline:{"--normal-bg":`var(--background)`,"--normal-text":`light-dark(var(--color-sky-600), var(--color-sky-400))`,"--normal-border":`light-dark(var(--color-sky-600), var(--color-sky-400))`},Solid:{"--normal-bg":`light-dark(var(--color-sky-600), var(--color-sky-400))`,"--normal-text":`var(--color-white)`,"--normal-border":`light-dark(var(--color-sky-600), var(--color-sky-400))`}},Success:{Soft:{"--normal-bg":`color-mix(in oklab, light-dark(var(--color-green-600), var(--color-green-400)) 10%, var(--background))`,"--normal-text":`light-dark(var(--color-green-600), var(--color-green-400))`,"--normal-border":`light-dark(var(--color-green-600), var(--color-green-400))`},Outline:{"--normal-bg":`var(--background)`,"--normal-text":`light-dark(var(--color-green-600), var(--color-green-400))`,"--normal-border":`light-dark(var(--color-green-600), var(--color-green-400))`},Solid:{"--normal-bg":`light-dark(var(--color-green-600), var(--color-green-400))`,"--normal-text":`var(--color-white)`,"--normal-border":`light-dark(var(--color-green-600), var(--color-green-400))`}},Warning:{Soft:{"--normal-bg":`color-mix(in oklab, light-dark(var(--color-amber-600), var(--color-amber-400)) 10%, var(--background))`,"--normal-text":`light-dark(var(--color-amber-600), var(--color-amber-400))`,"--normal-border":`light-dark(var(--color-amber-600), var(--color-amber-400))`},Outline:{"--normal-bg":`var(--background)`,"--normal-text":`light-dark(var(--color-amber-600), var(--color-amber-400))`,"--normal-border":`light-dark(var(--color-amber-600), var(--color-amber-400))`},Solid:{"--normal-bg":`light-dark(var(--color-amber-600), var(--color-amber-400))`,"--normal-text":`var(--color-white)`,"--normal-border":`light-dark(var(--color-amber-600), var(--color-amber-400))`}},Destructive:{Soft:{"--normal-bg":`color-mix(in oklab, var(--destructive) 10%, var(--background))`,"--normal-text":`var(--destructive)`,"--normal-border":`var(--destructive)`},Outline:{"--normal-bg":`var(--background)`,"--normal-text":`var(--destructive)`,"--normal-border":`var(--destructive)`},Solid:{"--normal-bg":`light-dark(var(--destructive), color-mix(in oklab, var(--destructive) 60%, var(--background)))`,"--normal-text":`var(--color-white)`,"--normal-border":`transparent`}}};exports.CrossfadeImage=_,exports.ImageUploadField=A,exports.ImageUploadItem=O,exports.ImageUploadSortableField=M,exports.SUPPORTED_LOCALES=D,exports.ToastCSS=ie,exports.createZustandContext=B,exports.dateIdFormat=q,exports.deleteItem=Q,exports.fetchItems=P,exports.fetchItemsByOne=F,exports.getAuthErrorKey=ee,exports.getFileExtension=X,exports.getPlatformType=z,exports.getSnapshots=R,exports.initIenlabI18n=re,exports.snapshotToData=N,exports.time24Format=J,exports.undeleteItem=$,exports.uploadImage=Z,exports.useDateTimeFormatters=K;
@@ -933,65 +933,67 @@ function he(e) {
933
933
  }
934
934
  }
935
935
  var ge = {
936
+ add_assets: "애셋 추가",
936
937
  auth: { errors: {
938
+ account_exists_with_different_credential: "이미 다른 로그인 방식으로 가입된 이메일이에요. 기존 방식으로 로그인해 주세요.",
939
+ default: "로그인 중 문제가 발생했어요. 잠시 후 다시 시도해 주세요.",
940
+ email_already_in_use: "이미 가입된 이메일이에요. 로그인하거나 다른 이메일을 사용해 주세요.",
941
+ internal_error: "문제가 발생했어요. 잠시 후 다시 시도해 주세요.",
937
942
  invalid_credential: "이메일 또는 비밀번호를 다시 확인해 주세요.",
938
- wrong_password: "이메일 또는 비밀번호를 다시 확인해 주세요.",
939
- user_not_found: "입력한 정보와 일치하는 계정을 찾을 수 없어요.",
940
943
  invalid_email: "이메일 형식을 확인해 주세요.",
941
- email_already_in_use: "이미 가입된 이메일이에요. 로그인하거나 다른 이메일을 사용해 주세요.",
942
- weak_password: "비밀번호는 6자 이상으로 입력해 주세요.",
943
- user_disabled: "이 계정은 현재 사용할 수 없어요. 관리자에게 문의해 주세요.",
944
- too_many_requests: "시도가 너무 많아요. 잠시 후 다시 시도해 주세요.",
945
944
  network_request_failed: "인터넷 연결을 확인한 뒤 다시 시도해 주세요.",
946
- timeout: "응답이 지연되고 있어요. 잠시 후 다시 시도해 주세요.",
947
- requires_recent_login: "보안을 위해 다시 로그인해 주세요.",
948
- user_token_expired: "로그인 시간이 만료되었어요. 다시 로그인해 주세요.",
949
945
  operation_not_allowed: "현재 사용할 수 없는 로그인 방식이에요.",
950
- account_exists_with_different_credential: "이미 다른 로그인 방식으로 가입된 이메일이에요. 기존 방식으로 로그인해 주세요.",
951
946
  popup_blocked: "로그인 창이 차단되었어요. 팝업 허용 후 다시 시도해 주세요.",
952
947
  popup_closed_by_user: "로그인 창이 닫혀서 로그인이 완료되지 않았어요.",
953
- web_storage_unsupported: "현재 브라우저 설정에서는 로그인을 진행할 수 없어요.",
948
+ requires_recent_login: "보안을 위해 다시 로그인해 주세요.",
949
+ timeout: "응답이 지연되고 있어요. 잠시 후 다시 시도해 주세요.",
950
+ too_many_requests: "시도가 너무 많아요. 잠시 후 다시 시도해 주세요.",
954
951
  unauthorized_domain: "현재 접속한 도메인에서는 로그인을 사용할 수 없어요.",
955
- internal_error: "문제가 발생했어요. 잠시 다시 시도해 주세요.",
956
- default: "로그인 문제가 발생했어요. 잠시 다시 시도해 주세요."
952
+ user_disabled: " 계정은 현재 사용할 없어요. 관리자에게 문의해 주세요.",
953
+ user_not_found: "입력한 정보와 일치하는 계정을 찾을 없어요.",
954
+ user_token_expired: "로그인 시간이 만료되었어요. 다시 로그인해 주세요.",
955
+ weak_password: "비밀번호는 6자 이상으로 입력해 주세요.",
956
+ web_storage_unsupported: "현재 브라우저 설정에서는 로그인을 진행할 수 없어요.",
957
+ wrong_password: "이메일 또는 비밀번호를 다시 확인해 주세요."
957
958
  } },
958
- unknown_error_occurred: "알 수 없는 오류가 발생했습니다.",
959
959
  datetime: {
960
960
  date_format: "YYYY년 M월 D일",
961
961
  date_time_format: "YYYY년 M월 D일 A h:mm:ss",
962
962
  time_format: "A h:mm:ss"
963
963
  },
964
- add_assets: "애셋 추가"
964
+ no_results: "결과 없음",
965
+ unknown_error_occurred: "알 수 없는 오류가 발생했습니다."
965
966
  }, _e = {
967
+ add_assets: "Add Assets",
966
968
  auth: { errors: {
969
+ account_exists_with_different_credential: "This email is already linked to another sign-in method. Please use that method to sign in.",
970
+ default: "We couldn’t complete the sign-in. Please try again later.",
971
+ email_already_in_use: "This email is already registered. Sign in or use a different email.",
972
+ internal_error: "Something went wrong. Please try again later.",
967
973
  invalid_credential: "Please check your email or password.",
968
- wrong_password: "Please check your email or password.",
969
- user_not_found: "We couldn’t find an account matching that information.",
970
974
  invalid_email: "Please check your email format.",
971
- email_already_in_use: "This email is already registered. Sign in or use a different email.",
972
- weak_password: "Your password must be at least 6 characters long.",
973
- user_disabled: "This account is currently unavailable. Please contact support.",
974
- too_many_requests: "Too many attempts. Please try again later.",
975
975
  network_request_failed: "Check your internet connection and try again.",
976
- timeout: "The request is taking too long. Please try again.",
977
- requires_recent_login: "For security reasons, please sign in again.",
978
- user_token_expired: "Your session has expired. Please sign in again.",
979
976
  operation_not_allowed: "This sign-in method is currently unavailable.",
980
- account_exists_with_different_credential: "This email is already linked to another sign-in method. Please use that method to sign in.",
981
977
  popup_blocked: "The sign-in window was blocked. Please allow pop-ups and try again.",
982
978
  popup_closed_by_user: "The sign-in window was closed before completion.",
983
- web_storage_unsupported: "Sign-in is not available with your current browser settings.",
979
+ requires_recent_login: "For security reasons, please sign in again.",
980
+ timeout: "The request is taking too long. Please try again.",
981
+ too_many_requests: "Too many attempts. Please try again later.",
984
982
  unauthorized_domain: "Sign-in is not available on this domain.",
985
- internal_error: "Something went wrong. Please try again later.",
986
- default: "We couldn’t complete the sign-in. Please try again later."
983
+ user_disabled: "This account is currently unavailable. Please contact support.",
984
+ user_not_found: "We couldn’t find an account matching that information.",
985
+ user_token_expired: "Your session has expired. Please sign in again.",
986
+ weak_password: "Your password must be at least 6 characters long.",
987
+ web_storage_unsupported: "Sign-in is not available with your current browser settings.",
988
+ wrong_password: "Please check your email or password."
987
989
  } },
988
- unknown_error_occurred: "Unknown error occurred.",
989
990
  datetime: {
990
991
  date_format: "MMMM D, YYYY",
991
992
  date_time_format: "MMMM D, YYYY h:mm:ss A",
992
993
  time_format: "h:mm:ss A"
993
994
  },
994
- add_assets: "Add Assets"
995
+ no_results: "No results",
996
+ unknown_error_occurred: "Unknown error occurred."
995
997
  };
996
998
  //#endregion
997
999
  //#region src/locales/i18n.ts
@@ -0,0 +1,27 @@
1
+ import { ComponentType, HTMLAttributes, ReactNode, TableHTMLAttributes, TdHTMLAttributes, ThHTMLAttributes } from 'react';
2
+ export type TableRootProps = HTMLAttributes<HTMLTableElement>;
3
+ export type TableSectionProps = HTMLAttributes<HTMLTableSectionElement>;
4
+ export type TableRowProps = HTMLAttributes<HTMLTableRowElement>;
5
+ export type TableHeadProps = ThHTMLAttributes<HTMLTableCellElement>;
6
+ export type TableCellProps = TdHTMLAttributes<HTMLTableCellElement>;
7
+ export type TableInjectedComponents = {
8
+ TableContainer?: ComponentType<{
9
+ children: ReactNode;
10
+ }>;
11
+ Table?: ComponentType<TableRootProps>;
12
+ TableHeader?: ComponentType<TableSectionProps>;
13
+ TableBody?: ComponentType<TableSectionProps>;
14
+ TableRow?: ComponentType<TableRowProps>;
15
+ TableHead?: ComponentType<TableHeadProps>;
16
+ TableCell?: ComponentType<TableCellProps>;
17
+ };
18
+ export declare const DefaultTableContainer: ({ children }: {
19
+ children: ReactNode;
20
+ }) => import("react/jsx-runtime").JSX.Element;
21
+ export declare const DefaultTable: (props: TableHTMLAttributes<HTMLTableElement>) => import("react/jsx-runtime").JSX.Element;
22
+ export declare const DefaultTableHeader: (props: HTMLAttributes<HTMLTableSectionElement>) => import("react/jsx-runtime").JSX.Element;
23
+ export declare const DefaultTableBody: (props: HTMLAttributes<HTMLTableSectionElement>) => import("react/jsx-runtime").JSX.Element;
24
+ export declare const DefaultTableRow: (props: HTMLAttributes<HTMLTableRowElement>) => import("react/jsx-runtime").JSX.Element;
25
+ export declare const DefaultTableHead: (props: ThHTMLAttributes<HTMLTableCellElement>) => import("react/jsx-runtime").JSX.Element;
26
+ export declare const DefaultTableCell: (props: TdHTMLAttributes<HTMLTableCellElement>) => import("react/jsx-runtime").JSX.Element;
27
+ //# sourceMappingURL=table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/types/table.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,SAAS,EACT,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,OAAO,CAAC;AAEf,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAA;AAC7D,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC,uBAAuB,CAAC,CAAA;AACvE,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,cAAc,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,CAAA;AACnE,MAAM,MAAM,cAAc,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,CAAA;AAEnE,MAAM,MAAM,uBAAuB,GAAG;IACpC,cAAc,CAAC,EAAE,aAAa,CAAC;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,CAAC,CAAA;IACvD,KAAK,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;IACrC,WAAW,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAA;IAC9C,SAAS,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAA;IAC5C,QAAQ,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;IACvC,SAAS,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;IACzC,SAAS,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;CAC1C,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,cAAc;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,4CAA0B,CAAA;AACrG,eAAO,MAAM,YAAY,GAAI,OAAO,mBAAmB,CAAC,gBAAgB,CAAC,4CAAyB,CAAA;AAClG,eAAO,MAAM,kBAAkB,GAAI,OAAO,cAAc,CAAC,uBAAuB,CAAC,4CAAyB,CAAA;AAC1G,eAAO,MAAM,gBAAgB,GAAI,OAAO,cAAc,CAAC,uBAAuB,CAAC,4CAAyB,CAAA;AACxG,eAAO,MAAM,eAAe,GAAI,OAAO,cAAc,CAAC,mBAAmB,CAAC,4CAAsB,CAAA;AAChG,eAAO,MAAM,gBAAgB,GAAI,OAAO,gBAAgB,CAAC,oBAAoB,CAAC,4CAAsB,CAAA;AACpG,eAAO,MAAM,gBAAgB,GAAI,OAAO,gBAAgB,CAAC,oBAAoB,CAAC,4CAAsB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ienlab/react-library",
3
- "version": "0.15.0",
3
+ "version": "0.16.0-beta.1",
4
4
  "description": "My React component library",
5
5
  "main": "./dist/my-library.cjs.js",
6
6
  "module": "./dist/my-library.es.js",
@@ -26,40 +26,43 @@
26
26
  "lint": "eslint .",
27
27
  "preview": "vite preview"
28
28
  },
29
- "dependencies": {},
30
29
  "peerDependencies": {
31
- "react": ">=19.0.0",
32
- "react-dom": ">=19.0.0",
30
+ "clsx": "^2.1.1",
31
+ "tailwind-merge": "^3.6.0",
32
+ "@tanstack/react-table": ">=8.21.3",
33
+ "dayjs": "^1.11.0",
33
34
  "firebase": ">=12.0.0",
34
35
  "i18next": ">=23.0.0",
35
- "zustand": ">=5.0.0",
36
36
  "motion": ">=12.0.0",
37
- "@tanstack/react-table": ">=8.21.3",
37
+ "react": ">=19.0.0",
38
+ "react-dom": ">=19.0.0",
38
39
  "react-i18next": ">=16.0.0",
39
- "dayjs": "^1.11.0"
40
+ "zustand": ">=5.0.0"
40
41
  },
41
42
  "devDependencies": {
42
- "react": "^19.2.5",
43
- "react-dom": "^19.2.5",
44
- "firebase": "^12.12.1",
45
- "i18next": "^26.0.6",
46
- "zustand": "^5.0.12",
47
- "motion": "^12.38.0",
48
43
  "@eslint/js": "^9.39.4",
44
+ "@tanstack/react-table": "^8.21.3",
49
45
  "@types/node": "^24.12.2",
50
46
  "@types/react": "^19.2.14",
51
47
  "@types/react-dom": "^19.2.3",
52
48
  "@vitejs/plugin-react": "^6.0.1",
49
+ "dayjs": "^1.11.0",
53
50
  "eslint": "^9.39.4",
54
51
  "eslint-plugin-react-hooks": "^7.1.1",
55
52
  "eslint-plugin-react-refresh": "^0.5.2",
53
+ "firebase": "^12.12.1",
56
54
  "globals": "^17.5.0",
55
+ "i18next": "^26.0.6",
56
+ "motion": "^12.38.0",
57
+ "react": "^19.2.5",
58
+ "react-dom": "^19.2.5",
59
+ "react-i18next": "^16.0.0",
57
60
  "typescript": "~6.0.2",
58
61
  "typescript-eslint": "^8.58.2",
59
62
  "vite": "^8.0.9",
60
63
  "vite-plugin-dts": "^4.5.4",
61
- "@tanstack/react-table": "^8.21.3",
62
- "react-i18next": "^16.0.0",
63
- "dayjs": "^1.11.0"
64
+ "zustand": "^5.0.12",
65
+ "clsx": "^2.1.1",
66
+ "tailwind-merge": "^3.6.0"
64
67
  }
65
68
  }