@machinerd/js-module 0.5.3 → 0.6.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 (97) hide show
  1. package/README.md +10 -101
  2. package/dist/common-CQWUs1nE.cjs +1 -0
  3. package/dist/common-DbEp6YNc.mjs +1 -0
  4. package/dist/file-5mweNdAM.cjs +1 -0
  5. package/dist/file-DShNxIW4.mjs +1 -0
  6. package/dist/hooks/index.cjs +1 -1
  7. package/dist/hooks/index.d.cts +1 -1
  8. package/dist/hooks/index.d.mts +1 -1
  9. package/dist/hooks/index.mjs +1 -1
  10. package/dist/hooks--O5RcEJq.cjs +1 -0
  11. package/dist/hooks-C9rXWkfW.mjs +1 -0
  12. package/dist/{index-ComhjQ-q.d.cts → index-BFHrNSKP.d.mts} +4 -4
  13. package/dist/{index-ByfkW7VU.d.mts → index-BQHtVz_S.d.cts} +4 -4
  14. package/dist/index.d.cts +1 -1
  15. package/dist/index.d.mts +1 -1
  16. package/dist/index.mjs +1 -1
  17. package/dist/providers/index.cjs +1 -1
  18. package/dist/providers/index.d.cts +3 -3
  19. package/dist/providers/index.d.mts +3 -3
  20. package/dist/providers/index.mjs +1 -1
  21. package/dist/{providers-5JCPezAS.mjs → providers-zftmvT1z.mjs} +1 -1
  22. package/dist/skeleton-6QtpIO7l.mjs +1 -0
  23. package/dist/skeleton-DBha34Cx.cjs +1 -0
  24. package/dist/styles/index.css +6 -25
  25. package/dist/ui/carousel/index.cjs +1 -0
  26. package/dist/ui/carousel/index.d.cts +95 -0
  27. package/dist/ui/carousel/index.d.mts +95 -0
  28. package/dist/ui/carousel/index.mjs +1 -0
  29. package/dist/ui/dialog/index.cjs +1 -0
  30. package/dist/ui/dialog/index.d.cts +30 -0
  31. package/dist/ui/dialog/index.d.mts +30 -0
  32. package/dist/ui/dialog/index.mjs +1 -0
  33. package/dist/ui/image/index.cjs +1 -0
  34. package/dist/ui/image/index.d.cts +45 -0
  35. package/dist/ui/image/index.d.mts +45 -0
  36. package/dist/ui/image/index.mjs +1 -0
  37. package/dist/ui/index.cjs +1 -1
  38. package/dist/ui/index.d.cts +9 -9
  39. package/dist/ui/index.d.mts +9 -9
  40. package/dist/ui/index.mjs +1 -1
  41. package/dist/ui/sheet/index.cjs +1 -0
  42. package/dist/ui/sheet/index.d.cts +28 -0
  43. package/dist/ui/sheet/index.d.mts +28 -0
  44. package/dist/ui/sheet/index.mjs +1 -0
  45. package/dist/ui/tooltip/index.cjs +1 -0
  46. package/dist/ui/tooltip/index.d.cts +16 -0
  47. package/dist/ui/tooltip/index.d.mts +16 -0
  48. package/dist/ui/tooltip/index.mjs +1 -0
  49. package/dist/use-subset-image-DhX5WmYG.cjs +1 -0
  50. package/dist/use-subset-image-DvV5Mlkc.mjs +1 -0
  51. package/dist/util/browser.cjs +1 -0
  52. package/dist/util/browser.d.cts +16 -0
  53. package/dist/util/browser.d.mts +16 -0
  54. package/dist/util/browser.mjs +1 -0
  55. package/dist/util/common.cjs +1 -0
  56. package/dist/util/common.d.cts +56 -0
  57. package/dist/util/common.d.mts +56 -0
  58. package/dist/util/common.mjs +1 -0
  59. package/dist/util/date.cjs +1 -0
  60. package/dist/util/date.d.cts +4 -0
  61. package/dist/util/date.d.mts +6 -0
  62. package/dist/util/date.mjs +1 -0
  63. package/dist/util/file.cjs +1 -0
  64. package/dist/util/file.d.cts +15 -0
  65. package/dist/util/file.d.mts +15 -0
  66. package/dist/util/file.mjs +1 -0
  67. package/dist/util/format.cjs +1 -0
  68. package/dist/util/format.d.cts +6 -0
  69. package/dist/util/format.d.mts +6 -0
  70. package/dist/util/format.mjs +1 -0
  71. package/dist/util/generator.cjs +1 -0
  72. package/dist/util/generator.d.cts +18 -0
  73. package/dist/util/generator.d.mts +18 -0
  74. package/dist/util/generator.mjs +1 -0
  75. package/dist/util/phone.cjs +1 -0
  76. package/dist/util/phone.d.cts +22 -0
  77. package/dist/util/phone.d.mts +22 -0
  78. package/dist/util/phone.mjs +1 -0
  79. package/package.json +48 -8
  80. package/dist/hooks-DBo6LQrH.mjs +0 -1
  81. package/dist/hooks-DqgWx1Fa.cjs +0 -1
  82. package/dist/skeleton-S6S1ZnCy.mjs +0 -1
  83. package/dist/skeleton-g6yXh6D9.cjs +0 -1
  84. package/dist/ui-client/index.cjs +0 -1
  85. package/dist/ui-client/index.d.cts +0 -192
  86. package/dist/ui-client/index.d.mts +0 -192
  87. package/dist/ui-client/index.mjs +0 -1
  88. package/dist/util/index.cjs +0 -1
  89. package/dist/util/index.d.cts +0 -129
  90. package/dist/util/index.d.mts +0 -130
  91. package/dist/util/index.mjs +0 -1
  92. package/dist/util-o7fjt7iK.cjs +0 -1
  93. package/dist/util-zXJA6Gnc.mjs +0 -1
  94. /package/dist/{index-CH1uVFqx.d.cts → index-B3fFA21M.d.mts} +0 -0
  95. /package/dist/{index-D6Jzsxc-.d.mts → index-CeiAF-WU.d.cts} +0 -0
  96. /package/dist/{providers-BNK8Fisc.cjs → providers-CkXkdYcB.cjs} +0 -0
  97. /package/dist/{src-C_FmOyer.mjs → src-CukOR3K2.mjs} +0 -0
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  React용 공용 UI·훅·유틸·API 클라이언트 패키지입니다.
4
4
 
5
- **현재 버전:** `0.5` (`package.json`의 `version` 필드와 동일합니다. 배포 전에는 해당 값을 확인하세요.)
5
+ **현재 버전:** `0.6` (`package.json`의 `version` 필드와 동일합니다. 배포 전에는 해당 값을 확인하세요.)
6
6
 
7
7
  **Peer dependency:** `react`, `react-dom` — `^18.3.1` 또는 `^19.0.0`
8
8
 
@@ -12,12 +12,11 @@ React용 공용 UI·훅·유틸·API 클라이언트 패키지입니다.
12
12
 
13
13
  ```bash
14
14
  pnpm add @machinerd/js-module
15
- # 또는
16
15
  npm install @machinerd/js-module
17
16
  yarn add @machinerd/js-module
18
17
  ```
19
18
 
20
- 스타일을 쓰는 UI를 사용한다면 CSS도 함께 import 합니다.
19
+ 컴포넌트를 사용한다면 CSS도 함께 import 해야 합니다.
21
20
 
22
21
  ```js
23
22
  import '@machinerd/js-module/styles/index.css';
@@ -27,8 +26,6 @@ import '@machinerd/js-module/styles/index.css';
27
26
 
28
27
  ## API 클라이언트 (`@machinerd/js-module`)
29
28
 
30
- 기본 export는 `ApiClient` 클래스입니다. 인스턴스를 만들어 props나 훅 인자로 넘깁니다.
31
-
32
29
  ```ts
33
30
  import ApiClient, { type ApiConfig } from '@machinerd/js-module';
34
31
 
@@ -41,15 +38,11 @@ await client.login(/* ... */);
41
38
  client.cdnMedia('path/to/key');
42
39
  ```
43
40
 
44
- 로그인·CDN URL 빌드 등에는 위처럼 직접 인스턴스를 만들어 쓸 수 있습니다.
45
-
46
41
  ---
47
42
 
48
43
  ## Providers
49
44
 
50
- Export 경로: `@machinerd/js-module/providers`
51
-
52
- **`Image`·`useSubsetImage` 등 CDN 경로를 다루는 UI·훅**은 내부에서 `useApiClient()`로 **`ApiClient` 인스턴스**에 접근합니다. 사용하는 쪽에서 매번 `ApiClient`를 만들어 props로 넘기지 않도록, **앱(또는 라우트 트리) 최상단**을 `ApiClientProvider`로 감싸고 `config`만 넘기면 됩니다.
45
+ **`Image`·`useSubsetImage` CDN 경로를 다루는 UI·훅**은 내부에서 `useApiClient()`로 **`ApiClient` 인스턴스**에 접근합니다.
53
46
 
54
47
  ```tsx
55
48
  import { ApiClientProvider } from '@machinerd/js-module/providers';
@@ -68,70 +61,21 @@ export function App({ children }: { children: React.ReactNode }) {
68
61
  }
69
62
  ```
70
63
 
71
- - Next.js App Router라면 `app/layout.tsx` 등 **루트 레이아웃**에 두는 것을 권장합니다.
72
- - Provider 밖에서 `Image` / `useSubsetImage`를 쓰면 런타임에 `ApiClient not found` 오류가 납니다.
73
-
74
- `useApiClient`는 같은 패키지의 `./providers`에서 export 됩니다.
75
-
76
64
  ---
77
65
 
78
- ## UI 컴포넌트 (`@machinerd/js-module/ui`)
79
-
80
- 서버·클라이언트 구분 없이 쓸 수 있는 컴포넌트입니다.
66
+ ## UI 컴포넌트 (`@machinerd/js-module/ui/common`)
81
67
 
82
68
  ```tsx
83
69
  import {
84
- BottomAppBar,
85
70
  Button,
86
- ConditionalWrapper,
87
- Input,
88
- Skeleton,
89
- } from '@machinerd/js-module/ui';
90
- import '@machinerd/js-module/styles/index.css';
91
- ```
92
-
93
- 각 컴포넌트의 props·변형은 Storybook(`pnpm storybook`) 또는 소스의 타입 정의를 참고하면 됩니다.
94
-
95
- ---
96
-
97
- ## 클라이언트 전용 UI (`@machinerd/js-module/ui-client`)
98
-
99
- 브라우저 API·상태에 의존하는 컴포넌트입니다. **번들/페이지의 클라이언트 경계 안**에서만 사용하세요.
71
+ ...Other
72
+ } from '@machinerd/js-module/ui/common';
73
+ import { Carousel } from '@machinerd/js-module/ui/carousel';
74
+ ...Other
100
75
 
101
- ```tsx
102
- import { Carousel, CarouselItem, Image, Tooltip /* … */ } from '@machinerd/js-module/ui-client';
103
76
  import '@machinerd/js-module/styles/index.css';
104
77
  ```
105
78
 
106
- **`Image`를 쓰려면** 위 [Providers](#providers)의 **`ApiClientProvider`를 최상위에 두는 것**이 필요합니다. CDN·API 엔드포인트는 `config`로 한 번만 넘기면 되며, `Image`에 `ApiClient`를 props로 넘길 필요는 없습니다. props·Storybook 문서는 타입 정의와 Storybook을 참고하세요.
107
-
108
- > **참고:** export 경로는 `ui/client`가 아니라 **`ui-client`** 입니다 (`package.json`의 `exports`와 일치).
109
-
110
- ---
111
-
112
- ## 훅 (`@machinerd/js-module/hooks`)
113
-
114
- ```ts
115
- import { useOutsideClick, useWindowSize } from '@machinerd/js-module/hooks';
116
- ```
117
-
118
- `useOutsideClick`은 타입 `UseOutsideClickProps`도 함께 export 합니다.
119
-
120
- `useSubsetImage`는 **`ApiClientProvider` 안**에서만 사용할 수 있습니다 ([Providers](#providers)).
121
-
122
- ---
123
-
124
- ## 유틸 (`@machinerd/js-module/util`)
125
-
126
- `browser`, `common`, `date`, `file`, `format`, `generator` 등 모듈에서 필요한 심볼을 re-export 합니다.
127
-
128
- ```ts
129
- import { formatI18nNumber } from '@machinerd/js-module/util';
130
- import { isExternalSrc } from '@machinerd/js-module/util';
131
- ```
132
-
133
- 전체 목록은 `src/util/index.ts`를 보거나 IDE 자동완성으로 확인하는 것이 좋습니다.
134
-
135
79
  ---
136
80
 
137
81
  ## 로컬 개발·다른 프로젝트에서 검증
@@ -143,20 +87,16 @@ pnpm install
143
87
  pnpm build
144
88
  ```
145
89
 
146
- `prepublishOnly`에 `pnpm build`가 걸려 있어 `pnpm publish` 전에도 빌드가 돌지만, pack 테스트 전에 한 번 빌드하는 것을 권장합니다.
147
-
148
90
  ### 2. tarball로 다른 프로젝트에 넣기 (`pnpm pack`)
149
91
 
150
92
  ```bash
151
93
  pnpm pack
152
94
  ```
153
95
 
154
- 현재 버전 기준으로 예: `machinerd-js-module-0.5.0.tgz` 형태의 파일이 상위 디렉터리(또는 현재 디렉터리)에 생성됩니다. 정확한 파일명은 명령 출력을 따르세요.
155
-
156
96
  소비하는 프로젝트에서:
157
97
 
158
98
  ```bash
159
- pnpm add /절대/또는/상대/경로/machinerd-js-module-0.4.0.tgz
99
+ pnpm add /절대/또는/상대/경로/machinerd-js-module-[VERSION].tgz
160
100
  ```
161
101
 
162
102
  또는 `package.json`에:
@@ -164,38 +104,7 @@ pnpm add /절대/또는/상대/경로/machinerd-js-module-0.4.0.tgz
164
104
  ```json
165
105
  {
166
106
  "dependencies": {
167
- "@machinerd/js-module": "file:../js-module/machinerd-js-module-0.4.0.tgz"
107
+ "@machinerd/js-module": "file:../js-module/machinerd-js-module-[VERSION].tgz"
168
108
  }
169
109
  }
170
110
  ```
171
-
172
- ### 3. `pnpm link` (글로벌 링크)
173
-
174
- ```bash
175
- # js-module 쪽
176
- pnpm link --global
177
-
178
- # 소비 프로젝트 쪽
179
- pnpm link --global @machinerd/js-module
180
- ```
181
-
182
- 워크스페이스 모노레포라면 `pnpm-workspace.yaml`에 패키지 경로를 넣고 `workspace:*` 의존성으로 연결하는 방식이 더 안정적입니다.
183
-
184
- ### 4. Storybook으로 UI만 확인
185
-
186
- ```bash
187
- pnpm storybook
188
- ```
189
-
190
- ---
191
-
192
- ## 스크립트 요약
193
-
194
- | 명령 | 설명 |
195
- |------|------|
196
- | `pnpm build` | 라이브러리 + CSS 빌드 |
197
- | `pnpm storybook` | 컴포넌트 문서·예제 (로컬) |
198
- | `pnpm build-storybook` | 정적 Storybook 빌드 |
199
- | `pnpm pack` | npm 패키지 tarball 생성 (로컬 설치 테스트용) |
200
-
201
- ---
@@ -0,0 +1 @@
1
+ const e=require(`./chunk-Bmb41Sf3.cjs`);let t=require(`query-string`);t=e.t(t);let n=require(`lodash-es`),r=require(`slug`);r=e.t(r),r.default.extend({'"':`-`,"”":`-`,"“":`-`,"•":`----`}),r.default.setLocale(`en`);const i=(e,n=[])=>{if(typeof window>`u`)return``;let{hash:r,search:i}=window.location,a=t.default.parse(i);Object.keys(e).forEach(t=>{e[t]?a[t]=e[t]:delete a[t]});let o={...a};return Object.keys(a).forEach(e=>{n.includes(e)&&delete o[e]}),`?${t.default.stringify(o,{encode:!0})}${r}`},a=(e,t)=>{let n=0;return e%t===0&&(n=e/t),n=Math.ceil(e/t),n<1&&(n=1),n},o=e=>{let t=[...e];for(let e=t.length-1;e>0;e--){let n=Math.floor(Math.random()*(e+1));[t[e],t[n]]=[t[n],t[e]]}return t},s=e=>{let t=document.getElementById(`naverMapLib`);if(!t){let t=document.createElement(`script`);t.src=`https://oapi.map.naver.com/openapi/v3/maps.js?ncpKeyId=ecs1pyoo9b`,t.id=`naverMapLib`,document.body.appendChild(t),t.onload=()=>{e&&e()}}t&&e&&e()},c=(e,...t)=>{let n=`${e}`;return t.forEach(e=>{e&&(n=`${n}-${(0,r.default)(e)}`)}),n},l=e=>{let t=[];e.i18n?.forEach(e=>{e.locale===`en`&&e.name&&t.push(e.name)});let n=e.series?.i18n.find(e=>e.locale===`en`);return n?.name&&t.push(n.name.toLowerCase()),e.stockNo&&t.push(e.stockNo[0]),c(e.id,...t)},u=e=>{let t=e;return t.length>0?t[0].trim():``},d=(e=`en`,t,n)=>{if(!t||!n||t.length<=0)return``;let r=[...t].sort(p);if(e){let t=r.findIndex(t=>t.locale===e);if(t){let e=r.splice(t,1);r.unshift(e[0])}}for(let e of r){let t=e[n];if(!(Array.isArray(t)&&t.length===0)&&t)return t}return``},f=(e,t,n)=>{if(!t||!n||t.length<=0)return``;let r=[...t].sort(p);if(e){let t=r.findIndex(t=>t.locale===e);if(t){let e=r.splice(t,1);r.unshift(e[0])}}let i=``;for(let e of r){let t=e[n];if(t){i=String(t);break}}return i},p=(e,t)=>e.priority<t.priority?-1:e.priority>t.priority?1:0,m=(e,t,n)=>{if(e){let r;r=Array.isArray(e)?e[0]:e;try{return t(r)}catch{return n}}return n},h=(e,t)=>{let{[t]:n,...r}=e;return r},g=(e,t)=>Object.fromEntries(Object.entries(e).filter(([e])=>!t.includes(e))),_=(e,t)=>(0,n.intersection)(e,t).length>0,v=e=>e.split(`:`).pop()?.split(`.`).pop(),y=(e,...t)=>[e,t].flat().join(`.`).replace(`:.`,`.`),b=(e=`en`,t)=>{if(t.length<=0)return`-`;let n=t[0];return n?x(e,n.i18n):`-`},x=(e=`en`,t)=>{if(t.length===0)return``;let n=d(e,t,`address1`)?.replace(`대한민국`,``)||``,r=t.find(t=>t.locale===e)?.address2,i=[n];return e===`ko`?i.push(r):i.unshift(r),i.filter(Boolean).join(`, `).trim()},S=e=>{let t=0;for(let n of e)t+=n.weight;let n=Math.random()*t,r=0;for(let t of e)if(r+=t.weight,n<r)return t;return e[e.length-1]},C=e=>new Promise(t=>setTimeout(t,e)),w=(...e)=>e.filter(Boolean).join(` `);Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return c}});
@@ -0,0 +1 @@
1
+ import e from"query-string";import{intersection as t}from"lodash-es";import n from"slug";n.extend({'"':`-`,"”":`-`,"“":`-`,"•":`----`}),n.setLocale(`en`);const r=(t,n=[])=>{if(typeof window>`u`)return``;let{hash:r,search:i}=window.location,a=e.parse(i);Object.keys(t).forEach(e=>{t[e]?a[e]=t[e]:delete a[e]});let o={...a};return Object.keys(a).forEach(e=>{n.includes(e)&&delete o[e]}),`?${e.stringify(o,{encode:!0})}${r}`},i=(e,t)=>{let n=0;return e%t===0&&(n=e/t),n=Math.ceil(e/t),n<1&&(n=1),n},a=e=>{let t=[...e];for(let e=t.length-1;e>0;e--){let n=Math.floor(Math.random()*(e+1));[t[e],t[n]]=[t[n],t[e]]}return t},o=e=>{let t=document.getElementById(`naverMapLib`);if(!t){let t=document.createElement(`script`);t.src=`https://oapi.map.naver.com/openapi/v3/maps.js?ncpKeyId=ecs1pyoo9b`,t.id=`naverMapLib`,document.body.appendChild(t),t.onload=()=>{e&&e()}}t&&e&&e()},s=(e,...t)=>{let r=`${e}`;return t.forEach(e=>{e&&(r=`${r}-${n(e)}`)}),r},c=e=>{let t=[];e.i18n?.forEach(e=>{e.locale===`en`&&e.name&&t.push(e.name)});let n=e.series?.i18n.find(e=>e.locale===`en`);return n?.name&&t.push(n.name.toLowerCase()),e.stockNo&&t.push(e.stockNo[0]),s(e.id,...t)},l=e=>{let t=e;return t.length>0?t[0].trim():``},u=(e=`en`,t,n)=>{if(!t||!n||t.length<=0)return``;let r=[...t].sort(f);if(e){let t=r.findIndex(t=>t.locale===e);if(t){let e=r.splice(t,1);r.unshift(e[0])}}for(let e of r){let t=e[n];if(!(Array.isArray(t)&&t.length===0)&&t)return t}return``},d=(e,t,n)=>{if(!t||!n||t.length<=0)return``;let r=[...t].sort(f);if(e){let t=r.findIndex(t=>t.locale===e);if(t){let e=r.splice(t,1);r.unshift(e[0])}}let i=``;for(let e of r){let t=e[n];if(t){i=String(t);break}}return i},f=(e,t)=>e.priority<t.priority?-1:e.priority>t.priority?1:0,p=(e,t,n)=>{if(e){let r;r=Array.isArray(e)?e[0]:e;try{return t(r)}catch{return n}}return n},m=(e,t)=>{let{[t]:n,...r}=e;return r},h=(e,t)=>Object.fromEntries(Object.entries(e).filter(([e])=>!t.includes(e))),g=(e,n)=>t(e,n).length>0,_=e=>e.split(`:`).pop()?.split(`.`).pop(),v=(e,...t)=>[e,t].flat().join(`.`).replace(`:.`,`.`),y=(e=`en`,t)=>{if(t.length<=0)return`-`;let n=t[0];return n?b(e,n.i18n):`-`},b=(e=`en`,t)=>{if(t.length===0)return``;let n=u(e,t,`address1`)?.replace(`대한민국`,``)||``,r=t.find(t=>t.locale===e)?.address2,i=[n];return e===`ko`?i.push(r):i.unshift(r),i.filter(Boolean).join(`, `).trim()},x=e=>{let t=0;for(let n of e)t+=n.weight;let n=Math.random()*t,r=0;for(let t of e)if(r+=t.weight,n<r)return t;return e[e.length-1]},S=e=>new Promise(t=>setTimeout(t,e)),C=(...e)=>e.filter(Boolean).join(` `);export{a as _,g as a,h as b,_ as c,l as d,r as f,x as g,c as h,v as i,d as l,p as m,C as n,y as o,o as p,f as r,b as s,i as t,u,S as v,m as x,s as y};
@@ -0,0 +1 @@
1
+ function e(e,t=0){if(e==0)return`0 Bytes`;let n=1024,r=t,i=[`Bytes`,`KB`,`MB`,`GB`,`TB`,`PB`,`EB`,`ZB`,`YB`],a=Math.floor(Math.log(e)/Math.log(n));return parseFloat((e/n**+a).toFixed(r))+` `+i[a]}const t=e=>e.split(`.`).slice(0,-1).join(`.`),n=e=>e.split(`.`).pop(),r=(e,t)=>{let n={directory:``,filename:``,extension:``,filenameWithoutExtension:``},r=e.lastIndexOf(`/`),i=r>=0?e.substring(r+1):e,a=i.lastIndexOf(`.`),o=a>0?i.substring(a+1):``,s=a>0?i.substring(0,a):i;if(n.filename=i,n.extension=o,n.filenameWithoutExtension=s,e.startsWith(`http`)){let r=t?`/${t}/`:`/`,i=e.indexOf(r);if(i!==-1){let t=e.substring(i+r.length),a=t.lastIndexOf(`/`);return n.directory=a===-1?``:t.substring(0,a),n}}return n.directory=r===-1?``:e.substring(0,r),n},i=e=>e.startsWith(`http`)||e.startsWith(`blob:`)||e.startsWith(`data:`),a=[`svg`,`gif`],o=e=>{if(!e||e.startsWith(`blob:`)||e.startsWith(`data:`))return!1;let t=e.lastIndexOf(`/`),n=t>=0?e.substring(t+1):e,r=n.lastIndexOf(`.`),i=r>0?n.substring(r+1):``;return!a.includes(i?.toLowerCase()??``)};Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return e}});
@@ -0,0 +1 @@
1
+ function e(e,t=0){if(e==0)return`0 Bytes`;let n=1024,r=t,i=[`Bytes`,`KB`,`MB`,`GB`,`TB`,`PB`,`EB`,`ZB`,`YB`],a=Math.floor(Math.log(e)/Math.log(n));return parseFloat((e/n**+a).toFixed(r))+` `+i[a]}const t=e=>e.split(`.`).slice(0,-1).join(`.`),n=e=>e.split(`.`).pop(),r=(e,t)=>{let n={directory:``,filename:``,extension:``,filenameWithoutExtension:``},r=e.lastIndexOf(`/`),i=r>=0?e.substring(r+1):e,a=i.lastIndexOf(`.`),o=a>0?i.substring(a+1):``,s=a>0?i.substring(0,a):i;if(n.filename=i,n.extension=o,n.filenameWithoutExtension=s,e.startsWith(`http`)){let r=t?`/${t}/`:`/`,i=e.indexOf(r);if(i!==-1){let t=e.substring(i+r.length),a=t.lastIndexOf(`/`);return n.directory=a===-1?``:t.substring(0,a),n}}return n.directory=r===-1?``:e.substring(0,r),n},i=e=>e.startsWith(`http`)||e.startsWith(`blob:`)||e.startsWith(`data:`),a=[`svg`,`gif`],o=e=>{if(!e||e.startsWith(`blob:`)||e.startsWith(`data:`))return!1;let t=e.lastIndexOf(`/`),n=t>=0?e.substring(t+1):e,r=n.lastIndexOf(`.`),i=r>0?n.substring(r+1):``;return!a.includes(i?.toLowerCase()??``)};export{o as a,i,n,r as o,t as r,e as t};
@@ -1 +1 @@
1
- require(`../src-CjpmdVyv.cjs`),require(`../util-o7fjt7iK.cjs`);const e=require(`../hooks-DqgWx1Fa.cjs`);require(`../providers-BNK8Fisc.cjs`),exports.SUBSETS=e.n,exports.useDelayUnmount=e.c,exports.useDragScroll=e.s,exports.useOutsideClick=e.o,exports.useScrollLock=e.a,exports.useScrollTop=e.i,exports.useSubsetImage=e.r,exports.useWindowSize=e.t;
1
+ require(`../src-CjpmdVyv.cjs`),require(`../file-5mweNdAM.cjs`);const e=require(`../hooks--O5RcEJq.cjs`);require(`../providers-CkXkdYcB.cjs`);const t=require(`../use-subset-image-DhX5WmYG.cjs`);exports.SUBSETS=t.t,exports.useDelayUnmount=e.o,exports.useDragScroll=e.a,exports.useOutsideClick=e.i,exports.useScrollLock=e.r,exports.useScrollTop=e.n,exports.useSubsetImage=t.n,exports.useWindowSize=e.t;
@@ -1,2 +1,2 @@
1
- import { a as UseSubsetImageProps, c as useScrollTop, d as UseOutsideClickProps, f as useOutsideClick, i as SUBSETS, l as UseScrollLockProps, m as useDelayUnmount, n as BaseProps, o as useSubsetImage, p as useDragScroll, r as Folder, s as UseScrollTopProps, t as useWindowSize, u as useScrollLock } from "../index-ComhjQ-q.cjs";
1
+ import { a as UseSubsetImageProps, c as useScrollTop, d as UseOutsideClickProps, f as useOutsideClick, i as SUBSETS, l as UseScrollLockProps, m as useDelayUnmount, n as BaseProps, o as useSubsetImage, p as useDragScroll, r as Folder, s as UseScrollTopProps, t as useWindowSize, u as useScrollLock } from "../index-BQHtVz_S.cjs";
2
2
  export { BaseProps, Folder, SUBSETS, UseOutsideClickProps, UseScrollLockProps, UseScrollTopProps, UseSubsetImageProps, useDelayUnmount, useDragScroll, useOutsideClick, useScrollLock, useScrollTop, useSubsetImage, useWindowSize };
@@ -1,2 +1,2 @@
1
- import { a as UseSubsetImageProps, c as useScrollTop, d as UseOutsideClickProps, f as useOutsideClick, i as SUBSETS, l as UseScrollLockProps, m as useDelayUnmount, n as BaseProps, o as useSubsetImage, p as useDragScroll, r as Folder, s as UseScrollTopProps, t as useWindowSize, u as useScrollLock } from "../index-ByfkW7VU.mjs";
1
+ import { a as UseSubsetImageProps, c as useScrollTop, d as UseOutsideClickProps, f as useOutsideClick, i as SUBSETS, l as UseScrollLockProps, m as useDelayUnmount, n as BaseProps, o as useSubsetImage, p as useDragScroll, r as Folder, s as UseScrollTopProps, t as useWindowSize, u as useScrollLock } from "../index-BFHrNSKP.mjs";
2
2
  export { BaseProps, Folder, SUBSETS, UseOutsideClickProps, UseScrollLockProps, UseScrollTopProps, UseSubsetImageProps, useDelayUnmount, useDragScroll, useOutsideClick, useScrollLock, useScrollTop, useSubsetImage, useWindowSize };
@@ -1 +1 @@
1
- import"../src-C_FmOyer.mjs";import"../util-zXJA6Gnc.mjs";import{a as e,c as t,i as n,n as r,o as i,r as a,s as o,t as s}from"../hooks-DBo6LQrH.mjs";import"../providers-5JCPezAS.mjs";export{r as SUBSETS,t as useDelayUnmount,o as useDragScroll,i as useOutsideClick,e as useScrollLock,n as useScrollTop,a as useSubsetImage,s as useWindowSize};
1
+ import"../src-CukOR3K2.mjs";import"../file-DShNxIW4.mjs";import{a as e,i as t,n,o as r,r as i,t as a}from"../hooks-C9rXWkfW.mjs";import"../providers-zftmvT1z.mjs";import{n as o,t as s}from"../use-subset-image-DvV5Mlkc.mjs";export{s as SUBSETS,r as useDelayUnmount,e as useDragScroll,t as useOutsideClick,i as useScrollLock,n as useScrollTop,o as useSubsetImage,a as useWindowSize};
@@ -0,0 +1 @@
1
+ const e=require(`./chunk-Bmb41Sf3.cjs`);let t=require(`lodash-es`),n=require(`react`);function r(e,t){let[r,i]=(0,n.useState)(!1);return(0,n.useEffect)(()=>{let n;return e&&!r?i(!0):!e&&r&&(n=setTimeout(()=>i(!1),t)),()=>clearTimeout(n)},[e,t,r]),r}function i(e=1){let t=(0,n.useRef)(null),[r,i]=(0,n.useState)(!1),[a,o]=(0,n.useState)(0),[s,c]=(0,n.useState)(0),l=(0,n.useRef)(!1);return{ref:t,onMouseDown:e=>{t.current&&(i(!0),l.current=!1,o(e.pageX-t.current.offsetLeft),c(t.current.scrollLeft))},onMouseLeave:()=>i(!1),onMouseUp:()=>i(!1),onMouseMove:n=>{if(!r||!t.current)return;n.preventDefault();let i=(n.pageX-t.current.offsetLeft-a)*e;Math.abs(i)>10&&(l.current=!0),t.current.scrollLeft=s-i},onClickCapture:e=>{l.current&&(e.stopPropagation(),e.preventDefault())}}}function a({ref:e,setOpen:t}){let r=(0,n.useCallback)(n=>{e.current?.contains(n.target)||t(!1)},[e,t]);(0,n.useEffect)(()=>(document.addEventListener(`mousedown`,r),document.addEventListener(`touchstart`,r),()=>{document.removeEventListener(`mousedown`,r),document.removeEventListener(`touchstart`,r)}),[r])}const o=[`mouse`,`touch`];function s({open:e,type:t=o}){let r=(0,n.useCallback)(e=>{e.preventDefault()},[]),i=(0,n.useCallback)(e=>{e.preventDefault()},[]);(0,n.useEffect)(()=>{let n=e&&t.includes(`mouse`),a=e&&t.includes(`touch`);return n?(document.body.classList.add(`overflow-hidden`),document.addEventListener(`wheel`,i,{passive:!1})):(document.body.classList.remove(`overflow-hidden`),document.removeEventListener(`wheel`,i)),a?document.addEventListener(`touchmove`,r,{passive:!1}):document.removeEventListener(`touchmove`,r),()=>{document.body.classList.remove(`overflow-hidden`),document.removeEventListener(`touchmove`,r),document.removeEventListener(`wheel`,i)}},[e,t,r,i])}function c({enabled:e=!0,behavior:t=`smooth`}={}){let[r,i]=(0,n.useState)(!1),a=(0,n.useRef)(null),o=(0,n.useCallback)(()=>{window.scrollTo({top:0,behavior:t})},[t]);return(0,n.useEffect)(()=>{let t=a.current;if(!t||!e){i(!1);return}let n=new IntersectionObserver(e=>{let t=e[0];t&&i(!t.isIntersecting)},{root:null,rootMargin:`0px`,threshold:0});return n.observe(t),()=>n.disconnect()},[e]),{isVisible:r,handleScrolToTop:o,ref:a}}function l(e=1280){let[r,i]=(0,n.useState)(e);return(0,n.useEffect)(()=>{let e=(0,t.throttle)(()=>{let e=window.innerWidth;i(e)},200);return window.addEventListener(`resize`,e),e(),()=>window.removeEventListener(`resize`,e)},[]),{windowSize:r}}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return l}});
@@ -0,0 +1 @@
1
+ import{throttle as e}from"lodash-es";import{useCallback as t,useEffect as n,useRef as r,useState as i}from"react";function a(e,t){let[r,a]=i(!1);return n(()=>{let n;return e&&!r?a(!0):!e&&r&&(n=setTimeout(()=>a(!1),t)),()=>clearTimeout(n)},[e,t,r]),r}function o(e=1){let t=r(null),[n,a]=i(!1),[o,s]=i(0),[c,l]=i(0),u=r(!1);return{ref:t,onMouseDown:e=>{t.current&&(a(!0),u.current=!1,s(e.pageX-t.current.offsetLeft),l(t.current.scrollLeft))},onMouseLeave:()=>a(!1),onMouseUp:()=>a(!1),onMouseMove:r=>{if(!n||!t.current)return;r.preventDefault();let i=(r.pageX-t.current.offsetLeft-o)*e;Math.abs(i)>10&&(u.current=!0),t.current.scrollLeft=c-i},onClickCapture:e=>{u.current&&(e.stopPropagation(),e.preventDefault())}}}function s({ref:e,setOpen:r}){let i=t(t=>{e.current?.contains(t.target)||r(!1)},[e,r]);n(()=>(document.addEventListener(`mousedown`,i),document.addEventListener(`touchstart`,i),()=>{document.removeEventListener(`mousedown`,i),document.removeEventListener(`touchstart`,i)}),[i])}const c=[`mouse`,`touch`];function l({open:e,type:r=c}){let i=t(e=>{e.preventDefault()},[]),a=t(e=>{e.preventDefault()},[]);n(()=>{let t=e&&r.includes(`mouse`),n=e&&r.includes(`touch`);return t?(document.body.classList.add(`overflow-hidden`),document.addEventListener(`wheel`,a,{passive:!1})):(document.body.classList.remove(`overflow-hidden`),document.removeEventListener(`wheel`,a)),n?document.addEventListener(`touchmove`,i,{passive:!1}):document.removeEventListener(`touchmove`,i),()=>{document.body.classList.remove(`overflow-hidden`),document.removeEventListener(`touchmove`,i),document.removeEventListener(`wheel`,a)}},[e,r,i,a])}function u({enabled:e=!0,behavior:a=`smooth`}={}){let[o,s]=i(!1),c=r(null),l=t(()=>{window.scrollTo({top:0,behavior:a})},[a]);return n(()=>{let t=c.current;if(!t||!e){s(!1);return}let n=new IntersectionObserver(e=>{let t=e[0];t&&s(!t.isIntersecting)},{root:null,rootMargin:`0px`,threshold:0});return n.observe(t),()=>n.disconnect()},[e]),{isVisible:o,handleScrolToTop:l,ref:c}}function d(t=1280){let[r,a]=i(t);return n(()=>{let t=e(()=>{let e=window.innerWidth;a(e)},200);return window.addEventListener(`resize`,t),t(),()=>window.removeEventListener(`resize`,t)},[]),{windowSize:r}}export{o as a,s as i,u as n,a as o,l as r,d as t};
@@ -1,4 +1,4 @@
1
- import * as react0 from "react";
1
+ import * as react2 from "react";
2
2
  import React$1, { Dispatch, RefObject, SetStateAction } from "react";
3
3
 
4
4
  //#region src/hooks/use-delay-unmount.d.ts
@@ -6,7 +6,7 @@ declare function useDelayUnmount(isMounted: boolean, delayTime: number): boolean
6
6
  //#endregion
7
7
  //#region src/hooks/use-drag-scroll.d.ts
8
8
  declare function useDragScroll(speed?: number): {
9
- ref: react0.RefObject<HTMLDivElement>;
9
+ ref: react2.RefObject<HTMLDivElement>;
10
10
  onMouseDown: (e: React.MouseEvent) => void;
11
11
  onMouseLeave: () => void;
12
12
  onMouseUp: () => void;
@@ -35,7 +35,7 @@ declare function useScrollLock({
35
35
  type
36
36
  }: UseScrollLockProps): void;
37
37
  //#endregion
38
- //#region src/hooks/use-scoll-top.d.ts
38
+ //#region src/hooks/use-scroll-top.d.ts
39
39
  interface UseScrollTopProps {
40
40
  enabled?: boolean;
41
41
  behavior?: ScrollBehavior;
@@ -46,7 +46,7 @@ declare function useScrollTop({
46
46
  }?: UseScrollTopProps): {
47
47
  isVisible: boolean;
48
48
  handleScrolToTop: () => void;
49
- ref: react0.RefObject<HTMLDivElement>;
49
+ ref: react2.RefObject<HTMLDivElement>;
50
50
  };
51
51
  //#endregion
52
52
  //#region src/hooks/use-subset-image.d.ts
@@ -1,4 +1,4 @@
1
- import * as react0 from "react";
1
+ import * as react1 from "react";
2
2
  import React$1, { Dispatch, RefObject, SetStateAction } from "react";
3
3
 
4
4
  //#region src/hooks/use-delay-unmount.d.ts
@@ -6,7 +6,7 @@ declare function useDelayUnmount(isMounted: boolean, delayTime: number): boolean
6
6
  //#endregion
7
7
  //#region src/hooks/use-drag-scroll.d.ts
8
8
  declare function useDragScroll(speed?: number): {
9
- ref: react0.RefObject<HTMLDivElement>;
9
+ ref: react1.RefObject<HTMLDivElement>;
10
10
  onMouseDown: (e: React.MouseEvent) => void;
11
11
  onMouseLeave: () => void;
12
12
  onMouseUp: () => void;
@@ -35,7 +35,7 @@ declare function useScrollLock({
35
35
  type
36
36
  }: UseScrollLockProps): void;
37
37
  //#endregion
38
- //#region src/hooks/use-scoll-top.d.ts
38
+ //#region src/hooks/use-scroll-top.d.ts
39
39
  interface UseScrollTopProps {
40
40
  enabled?: boolean;
41
41
  behavior?: ScrollBehavior;
@@ -46,7 +46,7 @@ declare function useScrollTop({
46
46
  }?: UseScrollTopProps): {
47
47
  isVisible: boolean;
48
48
  handleScrolToTop: () => void;
49
- ref: react0.RefObject<HTMLDivElement>;
49
+ ref: react1.RefObject<HTMLDivElement>;
50
50
  };
51
51
  //#endregion
52
52
  //#region src/hooks/use-subset-image.d.ts
package/dist/index.d.cts CHANGED
@@ -1,2 +1,2 @@
1
- import { n as ApiConfig, r as UploadValues, t as ApiClient } from "./index-CH1uVFqx.cjs";
1
+ import { n as ApiConfig, r as UploadValues, t as ApiClient } from "./index-CeiAF-WU.cjs";
2
2
  export { ApiConfig, UploadValues, ApiClient as default };
package/dist/index.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { n as ApiConfig, r as UploadValues, t as ApiClient } from "./index-D6Jzsxc-.mjs";
1
+ import { n as ApiConfig, r as UploadValues, t as ApiClient } from "./index-B3fFA21M.mjs";
2
2
  export { ApiConfig, UploadValues, ApiClient as default };
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{t as e}from"./src-C_FmOyer.mjs";export{e as default};
1
+ import{t as e}from"./src-CukOR3K2.mjs";export{e as default};
@@ -1 +1 @@
1
- require(`../src-CjpmdVyv.cjs`);const e=require(`../providers-BNK8Fisc.cjs`);exports.ApiClientProvider=e.t,exports.useApiClient=e.n;
1
+ require(`../src-CjpmdVyv.cjs`);const e=require(`../providers-CkXkdYcB.cjs`);exports.ApiClientProvider=e.t,exports.useApiClient=e.n;
@@ -1,5 +1,5 @@
1
- import { n as ApiConfig, t as ApiClient } from "../index-CH1uVFqx.cjs";
2
- import * as react_jsx_runtime0 from "react/jsx-runtime";
1
+ import { n as ApiConfig, t as ApiClient } from "../index-CeiAF-WU.cjs";
2
+ import * as react_jsx_runtime12 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/providers/api-client/api-client.d.ts
5
5
  declare function ApiClientProvider({
@@ -8,7 +8,7 @@ declare function ApiClientProvider({
8
8
  }: {
9
9
  children: React.ReactNode;
10
10
  config: ApiConfig;
11
- }): react_jsx_runtime0.JSX.Element;
11
+ }): react_jsx_runtime12.JSX.Element;
12
12
  declare function useApiClient(): ApiClient;
13
13
  //#endregion
14
14
  export { ApiClientProvider, useApiClient };
@@ -1,5 +1,5 @@
1
- import { n as ApiConfig, t as ApiClient } from "../index-D6Jzsxc-.mjs";
2
- import * as react_jsx_runtime0 from "react/jsx-runtime";
1
+ import { n as ApiConfig, t as ApiClient } from "../index-B3fFA21M.mjs";
2
+ import * as react_jsx_runtime10 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/providers/api-client/api-client.d.ts
5
5
  declare function ApiClientProvider({
@@ -8,7 +8,7 @@ declare function ApiClientProvider({
8
8
  }: {
9
9
  children: React.ReactNode;
10
10
  config: ApiConfig;
11
- }): react_jsx_runtime0.JSX.Element;
11
+ }): react_jsx_runtime10.JSX.Element;
12
12
  declare function useApiClient(): ApiClient;
13
13
  //#endregion
14
14
  export { ApiClientProvider, useApiClient };
@@ -1 +1 @@
1
- import"../src-C_FmOyer.mjs";import{n as e,t}from"../providers-5JCPezAS.mjs";export{t as ApiClientProvider,e as useApiClient};
1
+ import"../src-CukOR3K2.mjs";import{n as e,t}from"../providers-zftmvT1z.mjs";export{t as ApiClientProvider,e as useApiClient};
@@ -1 +1 @@
1
- import{t as e}from"./src-C_FmOyer.mjs";import{createContext as t,useContext as n}from"react";import{jsx as r}from"react/jsx-runtime";const i=t(null);function a({children:t,config:n}){let a=new e(n);return r(i.Provider,{value:a,children:t})}function o(){let e=n(i);if(!e)throw Error(`ApiClient not found`);return e}export{o as n,a as t};
1
+ import{t as e}from"./src-CukOR3K2.mjs";import{createContext as t,useContext as n}from"react";import{jsx as r}from"react/jsx-runtime";const i=t(null);function a({children:t,config:n}){let a=new e(n);return r(i.Provider,{value:a,children:t})}function o(){let e=n(i);if(!e)throw Error(`ApiClient not found`);return e}export{o as n,a as t};
@@ -0,0 +1 @@
1
+ import{n as e}from"./common-DbEp6YNc.mjs";import{jsx as t}from"react/jsx-runtime";import{cva as n}from"class-variance-authority";const r=n(e(`komc:w-full komc:animate-pulse komc:bg-gray-200`),{variants:{size:{xs:`komc:h-4`,sm:`komc:h-8`,md:`komc:h-12`,lg:`komc:h-16`,xl:`komc:h-20`,"2xl":`komc:h-24`,"3xl":`komc:h-28`,square:`komc:h-auto komc:aspect-square`,full:`komc:h-full`},rounded:{none:`komc:rounded-none`,sm:`komc:rounded-sm`,md:`komc:rounded-md`,lg:`komc:rounded-lg`,xl:`komc:rounded-xl`,"2xl":`komc:rounded-2xl`,"3xl":`komc:rounded-3xl`,full:`komc:rounded-full`}},defaultVariants:{size:`sm`,rounded:`sm`}});function i({size:e,rounded:n,width:i,height:a,className:o,...s}){let c=i?typeof i==`string`?i:`${i}px`:void 0,l=a?typeof a==`string`?a:`${a}px`:void 0;return t(`div`,{"data-komc":!0,"aria-hidden":`true`,className:r({size:e,rounded:n,className:o}),style:{width:c,height:l},...s})}export{i as t};
@@ -0,0 +1 @@
1
+ const e=require(`./chunk-Bmb41Sf3.cjs`),t=require(`./common-CQWUs1nE.cjs`);let n=require(`react/jsx-runtime`),r=require(`class-variance-authority`);const i=(0,r.cva)(t.n(`komc:w-full komc:animate-pulse komc:bg-gray-200`),{variants:{size:{xs:`komc:h-4`,sm:`komc:h-8`,md:`komc:h-12`,lg:`komc:h-16`,xl:`komc:h-20`,"2xl":`komc:h-24`,"3xl":`komc:h-28`,square:`komc:h-auto komc:aspect-square`,full:`komc:h-full`},rounded:{none:`komc:rounded-none`,sm:`komc:rounded-sm`,md:`komc:rounded-md`,lg:`komc:rounded-lg`,xl:`komc:rounded-xl`,"2xl":`komc:rounded-2xl`,"3xl":`komc:rounded-3xl`,full:`komc:rounded-full`}},defaultVariants:{size:`sm`,rounded:`sm`}});function a({size:e,rounded:t,width:r,height:a,className:o,...s}){let c=r?typeof r==`string`?r:`${r}px`:void 0,l=a?typeof a==`string`?a:`${a}px`:void 0;return(0,n.jsx)(`div`,{"data-komc":!0,"aria-hidden":`true`,className:i({size:e,rounded:t,className:o}),style:{width:c,height:l},...s})}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}});
@@ -1,4 +1,4 @@
1
- /*! tailwindcss v4.2.3 | MIT License | https://tailwindcss.com */
1
+ /*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
2
2
  @layer properties;
3
3
  @layer theme, base, components, utilities;
4
4
  @layer theme {
@@ -139,9 +139,6 @@
139
139
  .komc\:-mt-4 {
140
140
  margin-top: calc(var(--komc-spacing) * -4);
141
141
  }
142
- .komc\:mt-2 {
143
- margin-top: calc(var(--komc-spacing) * 2);
144
- }
145
142
  .komc\:mt-3 {
146
143
  margin-top: calc(var(--komc-spacing) * 3);
147
144
  }
@@ -223,8 +220,8 @@
223
220
  .komc\:h-40 {
224
221
  height: calc(var(--komc-spacing) * 40);
225
222
  }
226
- .komc\:h-56 {
227
- height: calc(var(--komc-spacing) * 56);
223
+ .komc\:h-72 {
224
+ height: calc(var(--komc-spacing) * 72);
228
225
  }
229
226
  .komc\:h-\[50dvh\] {
230
227
  height: 50dvh;
@@ -274,9 +271,6 @@
274
271
  .komc\:w-2 {
275
272
  width: calc(var(--komc-spacing) * 2);
276
273
  }
277
- .komc\:w-4 {
278
- width: calc(var(--komc-spacing) * 4);
279
- }
280
274
  .komc\:w-\[50dvw\] {
281
275
  width: 50dvw;
282
276
  }
@@ -389,6 +383,9 @@
389
383
  .komc\:flex-col {
390
384
  flex-direction: column;
391
385
  }
386
+ .komc\:flex-row {
387
+ flex-direction: row;
388
+ }
392
389
  .komc\:flex-wrap {
393
390
  flex-wrap: wrap;
394
391
  }
@@ -416,9 +413,6 @@
416
413
  .komc\:gap-1 {
417
414
  gap: calc(var(--komc-spacing) * 1);
418
415
  }
419
- .komc\:gap-1\.5 {
420
- gap: calc(var(--komc-spacing) * 1.5);
421
- }
422
416
  .komc\:gap-2 {
423
417
  gap: calc(var(--komc-spacing) * 2);
424
418
  }
@@ -586,9 +580,6 @@
586
580
  background-color: color-mix(in oklab, var(--komc-color-neutral-100) 95%, transparent);
587
581
  }
588
582
  }
589
- .komc\:bg-neutral-300 {
590
- background-color: var(--komc-color-neutral-300);
591
- }
592
583
  .komc\:bg-night-700 {
593
584
  background-color: var(--komc-color-night-700);
594
585
  }
@@ -1156,16 +1147,6 @@
1156
1147
  color: var(--komc-color-gray-800);
1157
1148
  }
1158
1149
  }
1159
- .komc\:data-\[selected\=true\]\:bg-blue-500 {
1160
- &[data-selected="true"] {
1161
- background-color: var(--komc-color-blue-500);
1162
- }
1163
- }
1164
- .komc\:data-\[selected\=true\]\:text-white {
1165
- &[data-selected="true"] {
1166
- color: var(--komc-color-white);
1167
- }
1168
- }
1169
1150
  .komc\:data-\[state\=closed\]\:scale-95 {
1170
1151
  &[data-state="closed"] {
1171
1152
  --tw-scale-x: 95%;
@@ -0,0 +1 @@
1
+ "use client";const e=require(`../../chunk-Bmb41Sf3.cjs`),t=require(`../../common-CQWUs1nE.cjs`);let n=require(`clsx`);n=e.t(n);let r=require(`react`);r=e.t(r);let i=require(`react/jsx-runtime`),a=require(`embla-carousel-react`);a=e.t(a);const o=r.default.createContext(null);function s(){let e=r.default.useContext(o);if(!e)throw Error(`useCarousel must be used within a <Carousel />`);return e}function c({orientation:e=`horizontal`,options:n,setApi:s,plugins:c,className:l,children:u,...d}){let[f,p]=(0,a.default)({...n,axis:e===`horizontal`?`x`:`y`},c),[m,h]=(0,r.useState)(!1),[g,_]=(0,r.useState)(!1),[v,y]=(0,r.useState)(0),[b,x]=(0,r.useState)(0),S=(0,r.useCallback)(e=>{e&&(h(e.canScrollPrev()),_(e.canScrollNext()),x(e.selectedScrollSnap()))},[]),C=(0,r.useCallback)(()=>{p?.scrollPrev()},[p]),w=(0,r.useCallback)(()=>{p?.scrollNext()},[p]),T=(0,r.useCallback)(e=>{p?.scrollTo(e)},[p]),E=(0,r.useCallback)(()=>{y(p?.scrollSnapList().length||0)},[p]),D=(0,r.useCallback)(t=>{e===`horizontal`?t.key===`ArrowLeft`?(t.preventDefault(),C()):t.key===`ArrowRight`&&(t.preventDefault(),w()):t.key===`ArrowUp`?(t.preventDefault(),C()):t.key===`ArrowDown`&&(t.preventDefault(),w())},[C,w,e]);return(0,r.useEffect)(()=>{!p||!s||s(p)},[p,s]),(0,r.useEffect)(()=>{if(p)return S(p),E(),p.on(`reInit`,E),p.on(`reInit`,S),p.on(`select`,S),()=>{p?.off(`select`,S)}},[p,S]),(0,i.jsx)(o.Provider,{value:{carouselRef:f,api:p,options:n,orientation:e||(n?.axis===`y`?`vertical`:`horizontal`),scrollPrev:C,scrollNext:w,canScrollPrev:m,canScrollNext:g,scrollTo:T,dots:v,selectedScrollSnap:b},children:(0,i.jsx)(`div`,{"data-komc":!0,role:`region`,"aria-label":`carousel`,"aria-roledescription":`carousel`,tabIndex:0,onKeyDownCapture:D,className:t.n(`komc:relative`,l),...d,children:u})})}function l({children:e,className:n,...r}){let{carouselRef:a}=s();return(0,i.jsx)(`div`,{ref:a,"data-komc":!0,className:t.n(`komc:h-full komc:overflow-hidden`,n),...r,children:e})}function u({className:e,...n}){let{orientation:r}=s();return(0,i.jsx)(`div`,{className:t.n(`komc:flex komc:h-full`,r===`horizontal`?`komc:-ml-4`:`komc:-mt-4 komc:flex-col`,e),...n})}function d({className:e,...n}){let{orientation:r}=s();return(0,i.jsx)(`div`,{"data-komc":!0,className:t.n(`komc:min-w-0 komc:shrink-0 komc:grow-0 komc:basis-full`,r===`horizontal`?`komc:pl-4`:`komc:pt-4`,e),...n})}function f({children:e,className:t,...r}){let{scrollPrev:a,canScrollPrev:o}=s();return(0,i.jsx)(`button`,{type:`button`,"data-komc":!0,disabled:!o,"aria-label":`previous slide`,className:(0,n.default)(`komc:w-full`,t),onClick:a,...r,children:e})}function p({children:e,className:t,...r}){let{scrollNext:a,canScrollNext:o}=s();return(0,i.jsx)(`button`,{type:`button`,"data-komc":!0,disabled:!o,"aria-label":`next slide`,className:(0,n.default)(`komc:w-full`,t),onClick:a,...r,children:e})}function m({children:e,...t}){let{dots:n,selectedScrollSnap:r,scrollTo:a}=s();return(0,i.jsx)(i.Fragment,{children:Array.from({length:n}).map((n,o)=>(0,i.jsx)(`button`,{type:`button`,"data-komc":!0,"data-selected":r===o,"aria-label":`go to slide ${o+1}`,onClick:()=>a(o),...t,children:e?.(o)},o))})}function h({index:e,children:t,...n}){let{selectedScrollSnap:r,scrollTo:a}=s();return(0,i.jsx)(`button`,{type:`button`,"data-komc":!0,"data-selected":r===e,"aria-label":`go to slide ${e+1}`,onClick:()=>a(e),...n,children:t})}exports.Carousel=c,exports.CarouselDot=h,exports.CarouselDots=m,exports.CarouselItem=d,exports.CarouselNext=p,exports.CarouselPrevious=f,exports.CarouselViewport=l,exports.CarouselWrapper=u;
@@ -0,0 +1,95 @@
1
+ import React, { ComponentProps } from "react";
2
+ import * as react_jsx_runtime5 from "react/jsx-runtime";
3
+ import useEmblaCarousel, { UseEmblaCarouselType } from "embla-carousel-react";
4
+
5
+ //#region src/ui/carousel/carousel-context.d.ts
6
+ type CarouselApi = UseEmblaCarouselType[1];
7
+ type UseCarouselParameters = Parameters<typeof useEmblaCarousel>;
8
+ type CarouselOptions = UseCarouselParameters[0];
9
+ type CarouselPlugin = UseCarouselParameters[1];
10
+ interface CarouselProps {
11
+ options?: CarouselOptions;
12
+ plugins?: CarouselPlugin;
13
+ orientation?: 'horizontal' | 'vertical';
14
+ setApi?: (api: CarouselApi) => void;
15
+ }
16
+ type CarouselContextProps = {
17
+ carouselRef: ReturnType<typeof useEmblaCarousel>[0];
18
+ api: ReturnType<typeof useEmblaCarousel>[1];
19
+ scrollPrev: () => void;
20
+ scrollNext: () => void;
21
+ canScrollPrev: boolean;
22
+ canScrollNext: boolean;
23
+ scrollTo: (index: number) => void;
24
+ dots: number;
25
+ selectedScrollSnap: number;
26
+ } & CarouselProps;
27
+ //#endregion
28
+ //#region src/ui/carousel/carousel.d.ts
29
+ interface CarouselProps$1 extends ComponentProps<'div'>, CarouselProps {
30
+ orientation?: 'horizontal' | 'vertical';
31
+ options?: CarouselProps['options'];
32
+ setApi?: CarouselProps['setApi'];
33
+ plugins?: CarouselProps['plugins'];
34
+ }
35
+ declare function Carousel({
36
+ orientation,
37
+ options,
38
+ setApi,
39
+ plugins,
40
+ className,
41
+ children,
42
+ ...props
43
+ }: CarouselProps$1): react_jsx_runtime5.JSX.Element;
44
+ //#endregion
45
+ //#region src/ui/carousel/carousel-viewport.d.ts
46
+ declare function CarouselViewport({
47
+ children,
48
+ className,
49
+ ...props
50
+ }: React.ComponentProps<'div'>): react_jsx_runtime5.JSX.Element;
51
+ //#endregion
52
+ //#region src/ui/carousel/carousel-wrapper.d.ts
53
+ declare function CarouselWrapper({
54
+ className,
55
+ ...props
56
+ }: React.ComponentProps<'div'>): react_jsx_runtime5.JSX.Element;
57
+ //#endregion
58
+ //#region src/ui/carousel/carousel-item.d.ts
59
+ declare function CarouselItem({
60
+ className,
61
+ ...props
62
+ }: React.ComponentProps<'div'>): react_jsx_runtime5.JSX.Element;
63
+ //#endregion
64
+ //#region src/ui/carousel/carousel-previous.d.ts
65
+ declare function CarouselPrevious({
66
+ children,
67
+ className,
68
+ ...props
69
+ }: React.ComponentProps<'button'>): react_jsx_runtime5.JSX.Element;
70
+ //#endregion
71
+ //#region src/ui/carousel/carousel-next.d.ts
72
+ declare function CarouselNext({
73
+ children,
74
+ className,
75
+ ...props
76
+ }: React.ComponentProps<'button'>): react_jsx_runtime5.JSX.Element;
77
+ //#endregion
78
+ //#region src/ui/carousel/carousel-dots.d.ts
79
+ declare function CarouselDots$1({
80
+ children,
81
+ ...props
82
+ }: Omit<React.ComponentProps<'button'>, 'children'> & {
83
+ children?: (index: number) => React.ReactNode;
84
+ }): react_jsx_runtime5.JSX.Element;
85
+ //#endregion
86
+ //#region src/ui/carousel/carousel-dot.d.ts
87
+ declare function CarouselDots({
88
+ index,
89
+ children,
90
+ ...props
91
+ }: React.ComponentProps<'button'> & {
92
+ index: number;
93
+ }): react_jsx_runtime5.JSX.Element;
94
+ //#endregion
95
+ export { Carousel, type CarouselApi, type CarouselContextProps, CarouselDots as CarouselDot, CarouselDots$1 as CarouselDots, CarouselItem, CarouselNext, type CarouselOptions, type CarouselPlugin, CarouselPrevious, type CarouselProps, CarouselViewport, CarouselWrapper };