@uselets/ui 0.5.0 → 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 (192) hide show
  1. package/README.md +73 -6
  2. package/dist/chunk-CHh1Zzun.js +1 -0
  3. package/dist/cli/uselets.mjs +7 -0
  4. package/dist/cli/uselets.mjs.map +1 -0
  5. package/dist/components/accordion.d.ts +6 -6
  6. package/dist/components/accordion.js +1 -1
  7. package/dist/components/accordion.js.map +1 -1
  8. package/dist/components/alert-dialog.d.ts +14 -14
  9. package/dist/components/alert-dialog.js +1 -1
  10. package/dist/components/alert.d.ts +8 -8
  11. package/dist/components/alert.js +1 -1
  12. package/dist/components/anchor.d.ts +5 -5
  13. package/dist/components/anchor.js +1 -1
  14. package/dist/components/avatar.d.ts +8 -8
  15. package/dist/components/avatar.js +1 -1
  16. package/dist/components/badge.d.ts +5 -5
  17. package/dist/components/badge.js +1 -1
  18. package/dist/components/breadcrumb.d.ts +9 -9
  19. package/dist/components/breadcrumb.js +1 -1
  20. package/dist/components/breadcrumb.js.map +1 -1
  21. package/dist/components/button-group.d.ts +7 -7
  22. package/dist/components/button-group.js +1 -1
  23. package/dist/components/button.d.ts +5 -5
  24. package/dist/components/button.js +1 -1
  25. package/dist/components/calendar.d.ts +6 -5
  26. package/dist/components/calendar.js +1 -1
  27. package/dist/components/calendar.js.map +1 -1
  28. package/dist/components/card.d.ts +9 -9
  29. package/dist/components/card.js +1 -1
  30. package/dist/components/carousel.d.ts +7 -7
  31. package/dist/components/carousel.js +1 -1
  32. package/dist/components/center.d.ts +5 -5
  33. package/dist/components/center.js +1 -1
  34. package/dist/components/chart.d.ts +90 -90
  35. package/dist/components/chart.js +1 -1
  36. package/dist/components/chart.js.map +1 -1
  37. package/dist/components/checkbox.d.ts +5 -5
  38. package/dist/components/checkbox.js +1 -1
  39. package/dist/components/code.d.ts +3 -3
  40. package/dist/components/code.js +1 -1
  41. package/dist/components/collapsible.d.ts +5 -5
  42. package/dist/components/collapsible.js +1 -1
  43. package/dist/components/collapsible.js.map +1 -1
  44. package/dist/components/combobox.d.ts +17 -17
  45. package/dist/components/combobox.js +1 -1
  46. package/dist/components/command.d.ts +11 -11
  47. package/dist/components/command.js +1 -1
  48. package/dist/components/command.js.map +1 -1
  49. package/dist/components/container.d.ts +5 -5
  50. package/dist/components/container.js +1 -1
  51. package/dist/components/dialog.d.ts +14 -14
  52. package/dist/components/dialog.js +1 -1
  53. package/dist/components/drawer.d.ts +14 -14
  54. package/dist/components/drawer.js +1 -1
  55. package/dist/components/dropdown-menu.d.ts +17 -17
  56. package/dist/components/dropdown-menu.js +1 -1
  57. package/dist/components/dropzone.d.ts +3 -3
  58. package/dist/components/dropzone.js +1 -1
  59. package/dist/components/dropzone.js.map +1 -1
  60. package/dist/components/empty.d.ts +10 -10
  61. package/dist/components/empty.js +1 -1
  62. package/dist/components/field.d.ts +14 -14
  63. package/dist/components/field.js +1 -1
  64. package/dist/components/group.d.ts +5 -5
  65. package/dist/components/group.js +1 -1
  66. package/dist/components/heading.d.ts +5 -5
  67. package/dist/components/heading.js +1 -1
  68. package/dist/components/hover-card.d.ts +5 -5
  69. package/dist/components/hover-card.js +1 -1
  70. package/dist/components/hover-card.js.map +1 -1
  71. package/dist/components/input-group.d.ts +11 -11
  72. package/dist/components/input-group.js +1 -1
  73. package/dist/components/input-otp.d.ts +6 -6
  74. package/dist/components/input-otp.js +1 -1
  75. package/dist/components/input-otp.js.map +1 -1
  76. package/dist/components/input.d.ts +3 -3
  77. package/dist/components/input.js +1 -1
  78. package/dist/components/kbd.d.ts +4 -4
  79. package/dist/components/kbd.js +1 -1
  80. package/dist/components/label.d.ts +3 -3
  81. package/dist/components/label.js +1 -1
  82. package/dist/components/list.d.ts +7 -7
  83. package/dist/components/list.js +1 -1
  84. package/dist/components/list.js.map +1 -1
  85. package/dist/components/native-select.d.ts +5 -5
  86. package/dist/components/native-select.js +1 -1
  87. package/dist/components/navigation-menu.d.ts +12 -12
  88. package/dist/components/navigation-menu.js +1 -1
  89. package/dist/components/navigation-menu.js.map +1 -1
  90. package/dist/components/pagination.d.ts +9 -9
  91. package/dist/components/pagination.js +1 -1
  92. package/dist/components/popover.d.ts +9 -9
  93. package/dist/components/popover.js +1 -1
  94. package/dist/components/progress.d.ts +3 -3
  95. package/dist/components/progress.js +1 -1
  96. package/dist/components/radio-group.d.ts +4 -4
  97. package/dist/components/radio-group.js +1 -1
  98. package/dist/components/resizable.d.ts +5 -5
  99. package/dist/components/resizable.js +1 -1
  100. package/dist/components/scroll-area.d.ts +4 -4
  101. package/dist/components/scroll-area.js +1 -1
  102. package/dist/components/select.d.ts +12 -12
  103. package/dist/components/select.js +1 -1
  104. package/dist/components/separator.d.ts +3 -3
  105. package/dist/components/separator.js +1 -1
  106. package/dist/components/sheet.d.ts +12 -12
  107. package/dist/components/sheet.js +1 -1
  108. package/dist/components/sheet.js.map +1 -1
  109. package/dist/components/sidebar.d.ts +27 -27
  110. package/dist/components/sidebar.js +1 -1
  111. package/dist/components/skeleton.d.ts +3 -3
  112. package/dist/components/skeleton.js +1 -1
  113. package/dist/components/slider.d.ts +3 -3
  114. package/dist/components/slider.js +1 -1
  115. package/dist/components/sonner.d.ts +3 -3
  116. package/dist/components/sonner.js +1 -1
  117. package/dist/components/sonner.js.map +1 -1
  118. package/dist/components/spinner.d.ts +5 -5
  119. package/dist/components/spinner.js +1 -1
  120. package/dist/components/stack.d.ts +5 -5
  121. package/dist/components/stack.js +1 -1
  122. package/dist/components/switch.d.ts +3 -3
  123. package/dist/components/switch.js +1 -1
  124. package/dist/components/table.d.ts +10 -10
  125. package/dist/components/table.js +1 -1
  126. package/dist/components/table.js.map +1 -1
  127. package/dist/components/tabs.d.ts +8 -8
  128. package/dist/components/tabs.js +1 -1
  129. package/dist/components/tabs.js.map +1 -1
  130. package/dist/components/text.d.ts +5 -5
  131. package/dist/components/text.js +1 -1
  132. package/dist/components/textarea.d.ts +3 -3
  133. package/dist/components/textarea.js +1 -1
  134. package/dist/components/theme.d.ts +4 -4
  135. package/dist/components/theme.js +1 -1
  136. package/dist/components/timeline.d.ts +5 -5
  137. package/dist/components/timeline.js +1 -1
  138. package/dist/components/timeline.js.map +1 -1
  139. package/dist/components/toggle-group.d.ts +4 -4
  140. package/dist/components/toggle-group.js +1 -1
  141. package/dist/components/toggle.d.ts +5 -5
  142. package/dist/components/toggle.js +1 -1
  143. package/dist/components/tooltip.d.ts +6 -6
  144. package/dist/components/tooltip.js +1 -1
  145. package/dist/hooks/use-disclosure.d.ts +23 -0
  146. package/dist/hooks/use-disclosure.js +2 -0
  147. package/dist/hooks/use-disclosure.js.map +1 -0
  148. package/dist/hooks/use-disclosure.spec.d.ts +1 -0
  149. package/dist/hooks/use-disclosure.spec.js +2 -0
  150. package/dist/hooks/use-disclosure.spec.js.map +1 -0
  151. package/dist/hooks/use-document-visibility.d.ts +7 -0
  152. package/dist/hooks/use-document-visibility.js +2 -0
  153. package/dist/hooks/use-document-visibility.js.map +1 -0
  154. package/dist/hooks/use-document-visibility.spec.d.ts +1 -0
  155. package/dist/hooks/use-document-visibility.spec.js +2 -0
  156. package/dist/hooks/use-document-visibility.spec.js.map +1 -0
  157. package/dist/hooks/use-idle.d.ts +14 -0
  158. package/dist/hooks/use-idle.js +2 -0
  159. package/dist/hooks/use-idle.js.map +1 -0
  160. package/dist/hooks/use-idle.spec.d.ts +1 -0
  161. package/dist/hooks/use-idle.spec.js +2 -0
  162. package/dist/hooks/use-idle.spec.js.map +1 -0
  163. package/dist/hooks/use-interval.d.ts +22 -0
  164. package/dist/hooks/use-interval.js +2 -0
  165. package/dist/hooks/use-interval.js.map +1 -0
  166. package/dist/hooks/use-interval.spec.d.ts +1 -0
  167. package/dist/hooks/use-interval.spec.js +2 -0
  168. package/dist/hooks/use-interval.spec.js.map +1 -0
  169. package/dist/hooks/use-local-storage.d.ts +17 -0
  170. package/dist/hooks/use-local-storage.js +2 -0
  171. package/dist/hooks/use-local-storage.js.map +1 -0
  172. package/dist/hooks/use-local-storage.spec.d.ts +1 -0
  173. package/dist/hooks/use-local-storage.spec.js +2 -0
  174. package/dist/hooks/use-local-storage.spec.js.map +1 -0
  175. package/dist/hooks/use-mobile.d.ts +1 -1
  176. package/dist/hooks/use-mobile.js +1 -1
  177. package/dist/hooks/use-mobile.spec.d.ts +1 -0
  178. package/dist/hooks/use-mobile.spec.js +2 -0
  179. package/dist/hooks/use-mobile.spec.js.map +1 -0
  180. package/dist/index.d.ts +8 -3
  181. package/dist/index.js +1 -1
  182. package/dist/lib/button.d.ts +1 -1
  183. package/dist/lib/utils.d.ts +3 -2
  184. package/dist/lib/utils.js +1 -1
  185. package/dist/lib/utils.js.map +1 -1
  186. package/dist/react.esm-BuxkFT_p.js +59 -0
  187. package/dist/react.esm-BuxkFT_p.js.map +1 -0
  188. package/dist/styles.css +2 -1437
  189. package/dist/themes/gomax.css +2 -0
  190. package/dist/themes/max.css +2 -0
  191. package/package.json +42 -27
  192. package/dist/chunk-IpJEthwI.js +0 -1
package/README.md CHANGED
@@ -26,6 +26,39 @@ yarn add @uselets/ui
26
26
  bun add @uselets/ui
27
27
  ```
28
28
 
29
+ ## Agent skill
30
+
31
+ The package ships the `uselets-ui` agent skill for projects that want local guidance for setup, public
32
+ imports, and the installed package API.
33
+
34
+ After installing `@uselets/ui`, run:
35
+
36
+ ```bash
37
+ bun uselets skill
38
+ ```
39
+
40
+ The command reinstalls the skill for both Codex and Claude Code, replacing any older copy:
41
+
42
+ - `.agents/skills/uselets-ui`
43
+ - `.claude/skills/uselets-ui`
44
+
45
+ To target only one agent, run `bun uselets skill --agent codex` or `bun uselets skill --agent claude`.
46
+
47
+ ## Project setup
48
+
49
+ To install package dependencies, configure PostCSS, and prepare your global CSS file, run:
50
+
51
+ ```bash
52
+ bun uselets init
53
+ ```
54
+
55
+ The command asks which theme to import, asks for your global CSS path with `src/styles/globals.css` as the
56
+ default, and optionally installs the agent skill. For non-interactive setup, pass options:
57
+
58
+ ```bash
59
+ bun uselets init --theme max --css src/styles/globals.css --no-install-skill
60
+ ```
61
+
29
62
  ## Tailwind CSS v4 setup
30
63
 
31
64
  If your app already uses Tailwind CSS v4, you can skip this section.
@@ -52,13 +85,16 @@ export { default } from '@uselets/ui/postcss.config'
52
85
 
53
86
  ## Quick start
54
87
 
55
- 1. Import the package styles once in your app entry point:
88
+ 1. Import one package theme once in your app entry point:
56
89
 
57
90
  ```tsx
58
- import '@uselets/ui/styles.css'
91
+ import '@uselets/ui/themes/max.css'
59
92
  import '@fontsource-variable/inter'
60
93
  ```
61
94
 
95
+ For Gomax apps, import `@uselets/ui/themes/gomax.css` instead. The legacy
96
+ `@uselets/ui/styles.css` entrypoint is still available and is equivalent to the Max theme.
97
+
62
98
  2. Import components from the package root:
63
99
 
64
100
  ```tsx
@@ -77,13 +113,20 @@ export function Example() {
77
113
 
78
114
  ```tsx
79
115
  import { Button } from '@uselets/ui/button'
80
- import { useIsMobile } from '@uselets/ui/use-mobile'
116
+ import { useIsMobile } from '@uselets/ui/hooks/use-mobile'
117
+ import { useDisclosure } from '@uselets/ui/hooks/use-disclosure'
118
+ import { useLocalStorage } from '@uselets/ui/hooks/use-local-storage'
119
+ import { randomId } from '@uselets/ui/utils'
81
120
  ```
82
121
 
83
122
  ## Theme tokens
84
123
 
85
- The package stylesheet (`@uselets/ui/styles.css`) ships with the default LET'S color theme in
86
- [`globals.css`](./src/styles/globals.css).
124
+ The package ships brand theme entrypoints:
125
+
126
+ - `@uselets/ui/themes/max.css`
127
+ - `@uselets/ui/themes/gomax.css`
128
+
129
+ The compatibility stylesheet (`@uselets/ui/styles.css`) uses the Max theme.
87
130
 
88
131
  ### Public palette families
89
132
 
@@ -186,7 +229,31 @@ Each module exports its public composition parts and prop types from the same im
186
229
 
187
230
  Layout primitives follow the same pattern: `Stack`, `Group`, and `Center` support `size: 'xs' | 'sm' | 'md' | 'lg' | 'xl'`; `Group` also supports `wrap`; `Center` supports `direction: 'horizontal' | 'vertical'`; and `Container` supports `size: 'sm' | 'md' | 'lg' | 'full'`.
188
231
 
189
- Public hooks follow the same rule and are exported from both the package root and their subpath, for example `@uselets/ui` and `@uselets/ui/use-mobile`.
232
+ Public hooks are exported from the package root and from the `@uselets/ui/hooks/*` namespace:
233
+
234
+ - `useDisclosure` from `@uselets/ui/hooks/use-disclosure`
235
+ - `useInterval` from `@uselets/ui/hooks/use-interval`
236
+ - `useIdle` from `@uselets/ui/hooks/use-idle`
237
+ - `useDocumentVisibility` from `@uselets/ui/hooks/use-document-visibility`
238
+ - `useLocalStorage` from `@uselets/ui/hooks/use-local-storage`
239
+ - `useIsMobile` from `@uselets/ui/hooks/use-mobile`
240
+
241
+ Legacy hook subpaths such as `@uselets/ui/use-mobile` are not public entrypoints.
242
+
243
+ `useLocalStorage` returns a tuple like `useState`, persists values as JSON, and syncs changes between browser tabs by default:
244
+
245
+ ```tsx
246
+ const [settings, setSettings] = useLocalStorage('settings', {
247
+ defaultValue: { compact: false }
248
+ })
249
+
250
+ const [draft, setDraft] = useLocalStorage('draft', {
251
+ defaultValue: '',
252
+ sync: false
253
+ })
254
+ ```
255
+
256
+ Utilities are exported from the package root and `@uselets/ui/utils`, including `cn` and `randomId`.
190
257
 
191
258
  ### Sonner example
192
259
 
@@ -0,0 +1 @@
1
+ var e=Object.create,t=Object.defineProperty,__name=(e,n)=>t(e,`name`,{value:n,configurable:!0}),n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,__commonJSMin=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),__copyProps=(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},__toESM=(n,r,a)=>(a=n==null?{}:e(i(n)),__copyProps(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));export{__name as n,__toESM as r,__commonJSMin as t};
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ import{spawn as e}from"node:child_process";import t from"node:fs/promises";import n from"node:path";import r from"node:readline/promises";import{fileURLToPath as i}from"node:url";import{Command as a,Option as o}from"commander";const s=`uselets-ui`,c={codex:n.join(`.agents`,`skills`,s),claude:n.join(`.claude`,`skills`,s)},l=Object.keys(c);async function u(e){try{return await t.access(e),!0}catch{return!1}}async function d(e){return JSON.parse(await t.readFile(e,`utf8`))}async function f(){let e=i(new URL(`.`,import.meta.url));for(;;)try{return await t.access(n.join(e,`package.json`)),e}catch{let t=n.dirname(e);if(t===e)throw Error(`Unable to resolve @uselets/ui package root`);e=t}}function p(e){return e===`all`?l:[e]}function m(e,t){return!!(e.dependencies?.[t]||e.devDependencies?.[t]||e.peerDependencies?.[t]||e.optionalDependencies?.[t])}async function h(e,t){let r=t.packageManager?.split(`@`)[0];return r===`bun`||r===`pnpm`||r===`yarn`||r===`npm`?r:await u(n.join(e,`bun.lock`))?`bun`:await u(n.join(e,`pnpm-lock.yaml`))?`pnpm`:await u(n.join(e,`yarn.lock`))?`yarn`:(await u(n.join(e,`package-lock.json`)),`npm`)}function g(e,t,n){switch(e){case`bun`:return[`bun`,`add`,...n?[`-d`]:[],...t];case`pnpm`:return[`pnpm`,`add`,...n?[`-D`]:[],...t];case`yarn`:return[`yarn`,`add`,...n?[`-D`]:[],...t];case`npm`:return[`npm`,`install`,...n?[`-D`]:[],...t]}}async function _(t,n){let[r,...i]=t;if(!r)throw Error(`Missing command`);console.log(`Running: ${t.join(` `)}`),await new Promise((t,a)=>{let o=e(r,i,{cwd:n,stdio:`inherit`});o.on(`error`,a),o.on(`close`,e=>{if(e===0){t();return}a(Error(`${r} exited with code ${e}`))})})}function v(e,t){let n=e.dependencies?.[t]??e.devDependencies?.[t];if(!n)throw Error(`Unable to find ${t} version in @uselets/ui package metadata`);return n}async function y(e,t){let r=await f(),i=await d(n.join(r,`package.json`)),a=await h(e,t),o=[],s=[];if(!i.name||!i.version)throw Error(`Unable to resolve @uselets/ui package name and version`);m(t,i.name)||o.push(`${i.name}@${i.version}`),m(t,`@fontsource-variable/inter`)||o.push(`@fontsource-variable/inter@${v(i,`@fontsource-variable/inter`)}`),m(t,`tailwindcss`)||s.push(`tailwindcss@${v(i,`tailwindcss`)}`),m(t,`@tailwindcss/postcss`)||s.push(`@tailwindcss/postcss@${v(i,`@tailwindcss/postcss`)}`),o.length>0?await _(g(a,o,!1),e):console.log(`Runtime dependencies already declared.`),s.length>0?await _(g(a,s,!0),e):console.log(`Tailwind dependencies already declared.`)}async function b(e){let r=await f(),i=n.join(r,`skills`,s);try{await t.access(i)}catch{throw Error(`Bundled skill not found at ${i}`)}let a=[];for(let r of e){let e=n.join(process.cwd(),c[r]);await t.rm(e,{recursive:!0,force:!0}),await t.mkdir(n.dirname(e),{recursive:!0}),await t.cp(i,e,{recursive:!0}),a.push(e)}console.log(`Installed ${s} skill:`);for(let e of a)console.log(`- ${e}`)}async function x(){return r.createInterface({input:process.stdin,output:process.stdout})}async function S(e){if(!process.stdin.isTTY)return e;let t=await x();try{for(;;){let n=(await t.question(`Theme (max/gomax) [${e}]: `)).trim().toLowerCase();if(!n)return e;if(n===`max`||n===`gomax`)return n;console.log(`Please choose "max" or "gomax".`)}}finally{t.close()}}async function C(e){if(!process.stdin.isTTY)return e;let t=await x();try{return(await t.question(`Global CSS path [${e}]: `)).trim()||e}finally{t.close()}}async function w(){if(!process.stdin.isTTY)return!1;let e=await x();try{for(;;){let t=(await e.question(`Install agent skill? (y/N): `)).trim().toLowerCase();if(!t||t===`n`||t===`no`)return!1;if(t===`y`||t===`yes`)return!0;console.log(`Please answer "y" or "n".`)}}finally{e.close()}}async function T(e){let r=n.join(e,`postcss.config.mjs`);if(await u(r)){console.log(`Preserved existing postcss.config.mjs.`);return}await t.writeFile(r,`export { default } from '@uselets/ui/postcss.config'
3
+ `),console.log(`Created postcss.config.mjs.`)}function E(e,t){let n=[],r=/@import\s+['"]tailwindcss['"]/.test(e),i=/@import\s+['"]@uselets\/ui\/themes\/(?:max|gomax)\.css['"]/.test(e),a=/@import\s+['"]@fontsource-variable\/inter['"]/.test(e);return r||n.push(`@import 'tailwindcss';`),i||n.push(`@import '@uselets/ui/themes/${t}.css';`),a||n.push(`@import '@fontsource-variable/inter';`),{imports:n,hasTheme:i}}async function D(e,r,i){let a=n.resolve(e,r),o=await u(a)?await t.readFile(a,`utf8`):``,{imports:s,hasTheme:c}=E(o,i);if(c&&console.log(`Preserved existing @uselets/ui theme import.`),s.length===0){console.log(`Global CSS already configured at ${r}.`);return}let l=o.length>0&&!o.startsWith(`
4
+ `)?`
5
+ `:``,d=`${s.join(`
6
+ `)}${l}${o}`;await t.mkdir(n.dirname(a),{recursive:!0}),await t.writeFile(a,d),console.log(`Updated global CSS at ${r}.`)}async function O(e){let t=process.cwd(),r=n.join(t,`package.json`);if(!await u(r))throw Error(`No package.json found in the current directory. Run uselets init from your project root.`);let i=await d(r),a=e.theme??await S(`max`),o=e.css??await C(`src/styles/globals.css`),s=e.installSkill??await w();await y(t,i),await T(t),await D(t,o,a),s&&await b(l)}async function k(){let e=new a;if(e.name(`uselets`).description(`CLI for @uselets/ui`).showHelpAfterError(),e.command(`skill`).description(`Reinstall the ${s} agent skill`).addOption(new o(`--agent <agent>`,`Target agent directory`).choices([`codex`,`claude`,`all`]).default(`all`)).action(async e=>{await b(p(e.agent))}),e.command(`init`).description(`Set up @uselets/ui in this project`).addOption(new o(`--theme <theme>`,`Theme to import`).choices([`max`,`gomax`])).option(`--css <path>`,`Global CSS file path`).option(`--install-skill`,`Install the agent skill without prompting`).option(`--no-install-skill`,`Skip the agent skill prompt and installation`).action(async e=>{await O(e)}),process.argv.length<=2){e.outputHelp();return}await e.parseAsync()}k().catch(e=>{console.error(e instanceof Error?e.message:e),process.exitCode=1});export{};
7
+ //# sourceMappingURL=uselets.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uselets.mjs","names":[],"sources":["../../src/cli/uselets.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { spawn } from 'node:child_process'\nimport fs from 'node:fs/promises'\nimport path from 'node:path'\nimport readline from 'node:readline/promises'\nimport { fileURLToPath } from 'node:url'\n\nimport { Command, Option } from 'commander'\n\nconst SKILL_NAME = 'uselets-ui'\nconst DEFAULT_CSS_PATH = 'src/styles/globals.css'\nconst POSTCSS_CONFIG = \"export { default } from '@uselets/ui/postcss.config'\\n\"\nconst AGENT_TARGETS = {\n codex: path.join('.agents', 'skills', SKILL_NAME),\n claude: path.join('.claude', 'skills', SKILL_NAME)\n} as const\n\ntype AgentTarget = keyof typeof AGENT_TARGETS\ntype AgentOption = AgentTarget | 'all'\ntype ThemeOption = 'max' | 'gomax'\ntype PackageManager = 'bun' | 'pnpm' | 'yarn' | 'npm'\ntype PackageJson = {\n name?: string\n version?: string\n packageManager?: string\n dependencies?: Record<string, string>\n devDependencies?: Record<string, string>\n peerDependencies?: Record<string, string>\n optionalDependencies?: Record<string, string>\n}\ntype InitOptions = {\n theme?: ThemeOption\n css?: string\n installSkill?: boolean\n}\n\nconst ALL_AGENT_TARGETS = Object.keys(AGENT_TARGETS) as AgentTarget[]\n\nasync function pathExists(targetPath: string) {\n try {\n await fs.access(targetPath)\n return true\n } catch {\n return false\n }\n}\n\nasync function readJsonFile<T>(filePath: string) {\n return JSON.parse(await fs.readFile(filePath, 'utf8')) as T\n}\n\nasync function findPackageRoot() {\n let currentDir = fileURLToPath(new URL('.', import.meta.url))\n\n while (true) {\n try {\n await fs.access(path.join(currentDir, 'package.json'))\n return currentDir\n } catch {\n const parentDir = path.dirname(currentDir)\n\n if (parentDir === currentDir) {\n throw new Error('Unable to resolve @uselets/ui package root')\n }\n\n currentDir = parentDir\n }\n }\n}\n\nfunction resolveTargets(agent: AgentOption) {\n return agent === 'all' ? ALL_AGENT_TARGETS : [agent]\n}\n\nfunction hasDependency(packageJson: PackageJson, dependencyName: string) {\n return Boolean(\n packageJson.dependencies?.[dependencyName] ||\n packageJson.devDependencies?.[dependencyName] ||\n packageJson.peerDependencies?.[dependencyName] ||\n packageJson.optionalDependencies?.[dependencyName]\n )\n}\n\nasync function detectPackageManager(projectRoot: string, packageJson: PackageJson): Promise<PackageManager> {\n const declaredManager = packageJson.packageManager?.split('@')[0]\n\n if (\n declaredManager === 'bun' ||\n declaredManager === 'pnpm' ||\n declaredManager === 'yarn' ||\n declaredManager === 'npm'\n ) {\n return declaredManager\n }\n\n if (await pathExists(path.join(projectRoot, 'bun.lock'))) {\n return 'bun'\n }\n\n if (await pathExists(path.join(projectRoot, 'pnpm-lock.yaml'))) {\n return 'pnpm'\n }\n\n if (await pathExists(path.join(projectRoot, 'yarn.lock'))) {\n return 'yarn'\n }\n\n if (await pathExists(path.join(projectRoot, 'package-lock.json'))) {\n return 'npm'\n }\n\n return 'npm'\n}\n\nfunction buildAddCommand(packageManager: PackageManager, dependencies: string[], dev: boolean) {\n switch (packageManager) {\n case 'bun':\n return ['bun', 'add', ...(dev ? ['-d'] : []), ...dependencies]\n case 'pnpm':\n return ['pnpm', 'add', ...(dev ? ['-D'] : []), ...dependencies]\n case 'yarn':\n return ['yarn', 'add', ...(dev ? ['-D'] : []), ...dependencies]\n case 'npm':\n return ['npm', 'install', ...(dev ? ['-D'] : []), ...dependencies]\n }\n}\n\nasync function runCommand(commandParts: string[], cwd: string) {\n const [command, ...args] = commandParts\n\n if (!command) {\n throw new Error('Missing command')\n }\n\n console.log(`Running: ${commandParts.join(' ')}`)\n\n await new Promise<void>((resolve, reject) => {\n const child = spawn(command, args, { cwd, stdio: 'inherit' })\n\n child.on('error', reject)\n child.on('close', (code) => {\n if (code === 0) {\n resolve()\n return\n }\n\n reject(new Error(`${command} exited with code ${code}`))\n })\n })\n}\n\nfunction getPackageVersion(packageJson: PackageJson, dependencyName: string) {\n const version = packageJson.dependencies?.[dependencyName] ?? packageJson.devDependencies?.[dependencyName]\n\n if (!version) {\n throw new Error(`Unable to find ${dependencyName} version in @uselets/ui package metadata`)\n }\n\n return version\n}\n\nasync function installMissingDependencies(projectRoot: string, projectPackageJson: PackageJson) {\n const packageRoot = await findPackageRoot()\n const packageJson = await readJsonFile<PackageJson>(path.join(packageRoot, 'package.json'))\n const packageManager = await detectPackageManager(projectRoot, projectPackageJson)\n const runtimeDependencies = []\n const devDependencies = []\n\n if (!packageJson.name || !packageJson.version) {\n throw new Error('Unable to resolve @uselets/ui package name and version')\n }\n\n if (!hasDependency(projectPackageJson, packageJson.name)) {\n runtimeDependencies.push(`${packageJson.name}@${packageJson.version}`)\n }\n\n if (!hasDependency(projectPackageJson, '@fontsource-variable/inter')) {\n runtimeDependencies.push(\n `@fontsource-variable/inter@${getPackageVersion(packageJson, '@fontsource-variable/inter')}`\n )\n }\n\n if (!hasDependency(projectPackageJson, 'tailwindcss')) {\n devDependencies.push(`tailwindcss@${getPackageVersion(packageJson, 'tailwindcss')}`)\n }\n\n if (!hasDependency(projectPackageJson, '@tailwindcss/postcss')) {\n devDependencies.push(`@tailwindcss/postcss@${getPackageVersion(packageJson, '@tailwindcss/postcss')}`)\n }\n\n if (runtimeDependencies.length > 0) {\n await runCommand(buildAddCommand(packageManager, runtimeDependencies, false), projectRoot)\n } else {\n console.log('Runtime dependencies already declared.')\n }\n\n if (devDependencies.length > 0) {\n await runCommand(buildAddCommand(packageManager, devDependencies, true), projectRoot)\n } else {\n console.log('Tailwind dependencies already declared.')\n }\n}\n\nasync function installSkill(targets: AgentTarget[]) {\n const packageRoot = await findPackageRoot()\n const sourcePath = path.join(packageRoot, 'skills', SKILL_NAME)\n\n try {\n await fs.access(sourcePath)\n } catch {\n throw new Error(`Bundled skill not found at ${sourcePath}`)\n }\n\n const installedPaths = []\n\n for (const target of targets) {\n const targetPath = path.join(process.cwd(), AGENT_TARGETS[target])\n\n await fs.rm(targetPath, { recursive: true, force: true })\n await fs.mkdir(path.dirname(targetPath), { recursive: true })\n await fs.cp(sourcePath, targetPath, { recursive: true })\n\n installedPaths.push(targetPath)\n }\n\n console.log(`Installed ${SKILL_NAME} skill:`)\n\n for (const installedPath of installedPaths) {\n console.log(`- ${installedPath}`)\n }\n}\n\nasync function createPrompt() {\n return readline.createInterface({ input: process.stdin, output: process.stdout })\n}\n\nasync function promptTheme(defaultTheme: ThemeOption) {\n if (!process.stdin.isTTY) {\n return defaultTheme\n }\n\n const prompt = await createPrompt()\n\n try {\n while (true) {\n const answer = (await prompt.question(`Theme (max/gomax) [${defaultTheme}]: `)).trim().toLowerCase()\n\n if (!answer) {\n return defaultTheme\n }\n\n if (answer === 'max' || answer === 'gomax') {\n return answer\n }\n\n console.log('Please choose \"max\" or \"gomax\".')\n }\n } finally {\n prompt.close()\n }\n}\n\nasync function promptCssPath(defaultCssPath: string) {\n if (!process.stdin.isTTY) {\n return defaultCssPath\n }\n\n const prompt = await createPrompt()\n\n try {\n const answer = (await prompt.question(`Global CSS path [${defaultCssPath}]: `)).trim()\n return answer || defaultCssPath\n } finally {\n prompt.close()\n }\n}\n\nasync function promptInstallSkill() {\n if (!process.stdin.isTTY) {\n return false\n }\n\n const prompt = await createPrompt()\n\n try {\n while (true) {\n const answer = (await prompt.question('Install agent skill? (y/N): ')).trim().toLowerCase()\n\n if (!answer || answer === 'n' || answer === 'no') {\n return false\n }\n\n if (answer === 'y' || answer === 'yes') {\n return true\n }\n\n console.log('Please answer \"y\" or \"n\".')\n }\n } finally {\n prompt.close()\n }\n}\n\nasync function ensurePostcssConfig(projectRoot: string) {\n const postcssPath = path.join(projectRoot, 'postcss.config.mjs')\n\n if (await pathExists(postcssPath)) {\n console.log('Preserved existing postcss.config.mjs.')\n return\n }\n\n await fs.writeFile(postcssPath, POSTCSS_CONFIG)\n console.log('Created postcss.config.mjs.')\n}\n\nfunction buildCssImports(source: string, theme: ThemeOption) {\n const imports = []\n const hasTailwind = /@import\\s+['\"]tailwindcss['\"]/.test(source)\n const hasTheme = /@import\\s+['\"]@uselets\\/ui\\/themes\\/(?:max|gomax)\\.css['\"]/.test(source)\n const hasFont = /@import\\s+['\"]@fontsource-variable\\/inter['\"]/.test(source)\n\n if (!hasTailwind) {\n imports.push(\"@import 'tailwindcss';\")\n }\n\n if (!hasTheme) {\n imports.push(`@import '@uselets/ui/themes/${theme}.css';`)\n }\n\n if (!hasFont) {\n imports.push(\"@import '@fontsource-variable/inter';\")\n }\n\n return { imports, hasTheme }\n}\n\nasync function ensureGlobalCss(projectRoot: string, cssPath: string, theme: ThemeOption) {\n const absoluteCssPath = path.resolve(projectRoot, cssPath)\n const existingSource = (await pathExists(absoluteCssPath)) ? await fs.readFile(absoluteCssPath, 'utf8') : ''\n const { imports, hasTheme } = buildCssImports(existingSource, theme)\n\n if (hasTheme) {\n console.log('Preserved existing @uselets/ui theme import.')\n }\n\n if (imports.length === 0) {\n console.log(`Global CSS already configured at ${cssPath}.`)\n return\n }\n\n const separator = existingSource.length > 0 && !existingSource.startsWith('\\n') ? '\\n' : ''\n const updatedSource = `${imports.join('\\n')}${separator}${existingSource}`\n\n await fs.mkdir(path.dirname(absoluteCssPath), { recursive: true })\n await fs.writeFile(absoluteCssPath, updatedSource)\n console.log(`Updated global CSS at ${cssPath}.`)\n}\n\nasync function initProject(options: InitOptions) {\n const projectRoot = process.cwd()\n const packageJsonPath = path.join(projectRoot, 'package.json')\n\n if (!(await pathExists(packageJsonPath))) {\n throw new Error('No package.json found in the current directory. Run uselets init from your project root.')\n }\n\n const projectPackageJson = await readJsonFile<PackageJson>(packageJsonPath)\n const theme = options.theme ?? (await promptTheme('max'))\n const cssPath = options.css ?? (await promptCssPath(DEFAULT_CSS_PATH))\n const shouldInstallSkill = options.installSkill ?? (await promptInstallSkill())\n\n await installMissingDependencies(projectRoot, projectPackageJson)\n await ensurePostcssConfig(projectRoot)\n await ensureGlobalCss(projectRoot, cssPath, theme)\n\n if (shouldInstallSkill) {\n await installSkill(ALL_AGENT_TARGETS)\n }\n}\n\nasync function main() {\n const program = new Command()\n\n program.name('uselets').description('CLI for @uselets/ui').showHelpAfterError()\n\n program\n .command('skill')\n .description(`Reinstall the ${SKILL_NAME} agent skill`)\n .addOption(\n new Option('--agent <agent>', 'Target agent directory').choices(['codex', 'claude', 'all']).default('all')\n )\n .action(async (options: { agent: AgentOption }) => {\n await installSkill(resolveTargets(options.agent))\n })\n\n program\n .command('init')\n .description('Set up @uselets/ui in this project')\n .addOption(new Option('--theme <theme>', 'Theme to import').choices(['max', 'gomax']))\n .option('--css <path>', 'Global CSS file path')\n .option('--install-skill', 'Install the agent skill without prompting')\n .option('--no-install-skill', 'Skip the agent skill prompt and installation')\n .action(async (options: InitOptions) => {\n await initProject(options)\n })\n\n if (process.argv.length <= 2) {\n program.outputHelp()\n return\n }\n\n await program.parseAsync()\n}\n\nmain().catch((error: unknown) => {\n console.error(error instanceof Error ? error.message : error)\n process.exitCode = 1\n})\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { t as __name } from "../chunk-IpJEthwI.js";
1
+ import { n as __name } from "../chunk-CHh1Zzun.js";
2
2
  import { Accordion as Accordion$1 } from "radix-ui";
3
- import * as react_jsx_runtime0 from "react/jsx-runtime";
3
+ import * as _$react_jsx_runtime0 from "react/jsx-runtime";
4
4
  import * as React from "react";
5
5
 
6
6
  //#region src/components/accordion.d.ts
@@ -11,21 +11,21 @@ type AccordionContentProps = React.ComponentProps<typeof Accordion$1.Content>;
11
11
  declare function Accordion({
12
12
  className,
13
13
  ...props
14
- }: AccordionProps): react_jsx_runtime0.JSX.Element;
14
+ }: AccordionProps): _$react_jsx_runtime0.JSX.Element;
15
15
  declare function AccordionItem({
16
16
  className,
17
17
  ...props
18
- }: AccordionItemProps): react_jsx_runtime0.JSX.Element;
18
+ }: AccordionItemProps): _$react_jsx_runtime0.JSX.Element;
19
19
  declare function AccordionTrigger({
20
20
  className,
21
21
  children,
22
22
  ...props
23
- }: AccordionTriggerProps): react_jsx_runtime0.JSX.Element;
23
+ }: AccordionTriggerProps): _$react_jsx_runtime0.JSX.Element;
24
24
  declare function AccordionContent({
25
25
  className,
26
26
  children,
27
27
  ...props
28
- }: AccordionContentProps): react_jsx_runtime0.JSX.Element;
28
+ }: AccordionContentProps): _$react_jsx_runtime0.JSX.Element;
29
29
  //#endregion
30
30
  export { Accordion, AccordionContent, AccordionContentProps, AccordionItem, AccordionItemProps, AccordionProps, AccordionTrigger, AccordionTriggerProps };
31
31
  //# sourceMappingURL=accordion.d.ts.map
@@ -1,2 +1,2 @@
1
- import"../chunk-IpJEthwI.js";import{cn as e}from"../lib/utils.js";import{IconChevronDown as t,IconChevronUp as n}from"@tabler/icons-react";import{Accordion as r}from"radix-ui";import{jsx as i,jsxs as a}from"react/jsx-runtime";function Accordion({className:t,...n}){return i(r.Root,{"data-slot":`accordion`,className:e(`flex w-full flex-col`,t),...n})}function AccordionItem({className:t,...n}){return i(r.Item,{"data-slot":`accordion-item`,className:e(`not-last:border-b`,t),...n})}function AccordionTrigger({className:o,children:s,...c}){return i(r.Header,{className:`flex`,children:a(r.Trigger,{"data-slot":`accordion-trigger`,className:e(`group/accordion-trigger relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:after:border-ring disabled:pointer-events-none disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground`,o),...c,children:[s,i(t,{"data-slot":`accordion-trigger-icon`,className:`pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden`}),i(n,{"data-slot":`accordion-trigger-icon`,className:`pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline`})]})})}function AccordionContent({className:t,children:n,...a}){return i(r.Content,{"data-slot":`accordion-content`,className:`overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up`,...a,children:i(`div`,{className:e(`h-(--radix-accordion-content-height) pt-0 pb-2.5 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4`,t),children:n})})}export{Accordion,AccordionContent,AccordionItem,AccordionTrigger};
1
+ import"../chunk-CHh1Zzun.js";import{cn as e}from"../lib/utils.js";import{IconChevronDown as t,IconChevronUp as n}from"@tabler/icons-react";import{Accordion as r}from"radix-ui";import{jsx as i,jsxs as a}from"react/jsx-runtime";function Accordion({className:t,...n}){return i(r.Root,{"data-slot":`accordion`,className:e(`flex w-full flex-col`,t),...n})}function AccordionItem({className:t,...n}){return i(r.Item,{"data-slot":`accordion-item`,className:e(`not-last:border-b`,t),...n})}function AccordionTrigger({className:o,children:s,...c}){return i(r.Header,{className:`flex`,children:a(r.Trigger,{"data-slot":`accordion-trigger`,className:e(`group/accordion-trigger relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:after:border-ring disabled:pointer-events-none disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground`,o),...c,children:[s,i(t,{"data-slot":`accordion-trigger-icon`,className:`pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden`}),i(n,{"data-slot":`accordion-trigger-icon`,className:`pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline`})]})})}function AccordionContent({className:t,children:n,...a}){return i(r.Content,{"data-slot":`accordion-content`,className:`overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up`,...a,children:i(`div`,{className:e(`h-(--radix-accordion-content-height) pt-0 pb-2.5 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4`,t),children:n})})}export{Accordion,AccordionContent,AccordionItem,AccordionTrigger};
2
2
  //# sourceMappingURL=accordion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"accordion.js","names":["AccordionPrimitive"],"sources":["../../src/components/accordion.tsx"],"sourcesContent":["import type * as React from 'react'\n\nimport { IconChevronDown, IconChevronUp } from '@tabler/icons-react'\nimport { Accordion as AccordionPrimitive } from 'radix-ui'\n\nimport { cn } from '../lib/utils'\n\nexport type AccordionProps = React.ComponentProps<typeof AccordionPrimitive.Root>\n\nexport type AccordionItemProps = React.ComponentProps<typeof AccordionPrimitive.Item>\n\nexport type AccordionTriggerProps = React.ComponentProps<typeof AccordionPrimitive.Trigger>\n\nexport type AccordionContentProps = React.ComponentProps<typeof AccordionPrimitive.Content>\n\nfunction Accordion({ className, ...props }: AccordionProps) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" className={cn('flex w-full flex-col', className)} {...props} />\n}\n\nfunction AccordionItem({ className, ...props }: AccordionItemProps) {\n return (\n <AccordionPrimitive.Item data-slot=\"accordion-item\" className={cn('not-last:border-b', className)} {...props} />\n )\n}\n\nfunction AccordionTrigger({ className, children, ...props }: AccordionTriggerProps) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n 'group/accordion-trigger relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:after:border-ring disabled:pointer-events-none disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground',\n className\n )}\n {...props}\n >\n {children}\n <IconChevronDown\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\"\n />\n <IconChevronUp\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\"\n />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\nfunction AccordionContent({ className, children, ...props }: AccordionContentProps) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up\"\n {...props}\n >\n <div\n className={cn(\n 'h-(--radix-accordion-content-height) pt-0 pb-2.5 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4',\n className\n )}\n >\n {children}\n </div>\n </AccordionPrimitive.Content>\n )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n"],"mappings":"kOAeA,SAAS,UAAU,CAAE,YAAW,GAAG,GAAyB,CAC1D,OAAO,EAACA,EAAmB,KAApB,CAAyB,YAAU,YAAY,UAAW,EAAG,uBAAwB,EAAU,CAAE,GAAI,EAAS,CAAA,CAGvH,SAAS,cAAc,CAAE,YAAW,GAAG,GAA6B,CAClE,OACE,EAACA,EAAmB,KAApB,CAAyB,YAAU,iBAAiB,UAAW,EAAG,oBAAqB,EAAU,CAAE,GAAI,EAAS,CAAA,CAIpH,SAAS,iBAAiB,CAAE,YAAW,WAAU,GAAG,GAAgC,CAClF,OACE,EAACA,EAAmB,OAApB,CAA2B,UAAU,gBACnC,EAACA,EAAmB,QAApB,CACE,YAAU,oBACV,UAAW,EACT,mfACA,EACD,CACD,GAAI,WANN,CAQG,EACD,EAAC,EAAD,CACE,YAAU,yBACV,UAAU,4EACV,CAAA,CACF,EAAC,EAAD,CACE,YAAU,yBACV,UAAU,mFACV,CAAA,CACyB,GACH,CAAA,CAIhC,SAAS,iBAAiB,CAAE,YAAW,WAAU,GAAG,GAAgC,CAClF,OACE,EAACA,EAAmB,QAApB,CACE,YAAU,oBACV,UAAU,4FACV,GAAI,WAEJ,EAAC,MAAD,CACE,UAAW,EACT,oJACA,EACD,CAEA,WACG,CAAA,CACqB,CAAA"}
1
+ {"version":3,"file":"accordion.js","names":["AccordionPrimitive"],"sources":["../../src/components/accordion.tsx"],"sourcesContent":["import type * as React from 'react'\n\nimport { IconChevronDown, IconChevronUp } from '@tabler/icons-react'\nimport { Accordion as AccordionPrimitive } from 'radix-ui'\n\nimport { cn } from '../lib/utils'\n\nexport type AccordionProps = React.ComponentProps<typeof AccordionPrimitive.Root>\n\nexport type AccordionItemProps = React.ComponentProps<typeof AccordionPrimitive.Item>\n\nexport type AccordionTriggerProps = React.ComponentProps<typeof AccordionPrimitive.Trigger>\n\nexport type AccordionContentProps = React.ComponentProps<typeof AccordionPrimitive.Content>\n\nfunction Accordion({ className, ...props }: AccordionProps) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" className={cn('flex w-full flex-col', className)} {...props} />\n}\n\nfunction AccordionItem({ className, ...props }: AccordionItemProps) {\n return (\n <AccordionPrimitive.Item data-slot=\"accordion-item\" className={cn('not-last:border-b', className)} {...props} />\n )\n}\n\nfunction AccordionTrigger({ className, children, ...props }: AccordionTriggerProps) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n 'group/accordion-trigger relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:after:border-ring disabled:pointer-events-none disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground',\n className\n )}\n {...props}\n >\n {children}\n <IconChevronDown\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\"\n />\n <IconChevronUp\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\"\n />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\nfunction AccordionContent({ className, children, ...props }: AccordionContentProps) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up\"\n {...props}\n >\n <div\n className={cn(\n 'h-(--radix-accordion-content-height) pt-0 pb-2.5 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4',\n className\n )}\n >\n {children}\n </div>\n </AccordionPrimitive.Content>\n )\n}\n\nexport { Accordion, AccordionContent, AccordionItem, AccordionTrigger }\n"],"mappings":"kOAeA,SAAS,UAAU,CAAE,YAAW,GAAG,GAAyB,CAC1D,OAAO,EAACA,EAAmB,KAApB,CAAyB,YAAU,YAAY,UAAW,EAAG,uBAAwB,EAAU,CAAE,GAAI,EAAS,CAAA,CAGvH,SAAS,cAAc,CAAE,YAAW,GAAG,GAA6B,CAClE,OACE,EAACA,EAAmB,KAApB,CAAyB,YAAU,iBAAiB,UAAW,EAAG,oBAAqB,EAAU,CAAE,GAAI,EAAS,CAAA,CAIpH,SAAS,iBAAiB,CAAE,YAAW,WAAU,GAAG,GAAgC,CAClF,OACE,EAACA,EAAmB,OAApB,CAA2B,UAAU,gBACnC,EAACA,EAAmB,QAApB,CACE,YAAU,oBACV,UAAW,EACT,mfACA,EACD,CACD,GAAI,WANN,CAQG,EACD,EAAC,EAAD,CACE,YAAU,yBACV,UAAU,4EACV,CAAA,CACF,EAAC,EAAD,CACE,YAAU,yBACV,UAAU,mFACV,CAAA,CACyB,GACH,CAAA,CAIhC,SAAS,iBAAiB,CAAE,YAAW,WAAU,GAAG,GAAgC,CAClF,OACE,EAACA,EAAmB,QAApB,CACE,YAAU,oBACV,UAAU,4FACV,GAAI,WAEJ,EAAC,MAAD,CACE,UAAW,EACT,oJACA,EACD,CAEA,WACG,CAAA,CACqB,CAAA"}
@@ -1,7 +1,7 @@
1
- import { t as __name } from "../chunk-IpJEthwI.js";
1
+ import { n as __name } from "../chunk-CHh1Zzun.js";
2
2
  import { Button } from "./button.js";
3
3
  import { AlertDialog as AlertDialog$1 } from "radix-ui";
4
- import * as react_jsx_runtime0 from "react/jsx-runtime";
4
+ import * as _$react_jsx_runtime0 from "react/jsx-runtime";
5
5
  import * as React from "react";
6
6
 
7
7
  //#region src/components/alert-dialog.d.ts
@@ -21,54 +21,54 @@ type AlertDialogActionProps = React.ComponentProps<typeof AlertDialog$1.Action>
21
21
  type AlertDialogCancelProps = React.ComponentProps<typeof AlertDialog$1.Cancel> & Pick<React.ComponentProps<typeof Button>, 'variant' | 'size'>;
22
22
  declare function AlertDialog({
23
23
  ...props
24
- }: AlertDialogProps): react_jsx_runtime0.JSX.Element;
24
+ }: AlertDialogProps): _$react_jsx_runtime0.JSX.Element;
25
25
  declare function AlertDialogTrigger({
26
26
  ...props
27
- }: AlertDialogTriggerProps): react_jsx_runtime0.JSX.Element;
27
+ }: AlertDialogTriggerProps): _$react_jsx_runtime0.JSX.Element;
28
28
  declare function AlertDialogPortal({
29
29
  ...props
30
- }: AlertDialogPortalProps): react_jsx_runtime0.JSX.Element;
30
+ }: AlertDialogPortalProps): _$react_jsx_runtime0.JSX.Element;
31
31
  declare function AlertDialogOverlay({
32
32
  className,
33
33
  ...props
34
- }: AlertDialogOverlayProps): react_jsx_runtime0.JSX.Element;
34
+ }: AlertDialogOverlayProps): _$react_jsx_runtime0.JSX.Element;
35
35
  declare function AlertDialogContent({
36
36
  className,
37
37
  size,
38
38
  ...props
39
- }: AlertDialogContentProps): react_jsx_runtime0.JSX.Element;
39
+ }: AlertDialogContentProps): _$react_jsx_runtime0.JSX.Element;
40
40
  declare function AlertDialogHeader({
41
41
  className,
42
42
  ...props
43
- }: AlertDialogHeaderProps): react_jsx_runtime0.JSX.Element;
43
+ }: AlertDialogHeaderProps): _$react_jsx_runtime0.JSX.Element;
44
44
  declare function AlertDialogFooter({
45
45
  className,
46
46
  ...props
47
- }: AlertDialogFooterProps): react_jsx_runtime0.JSX.Element;
47
+ }: AlertDialogFooterProps): _$react_jsx_runtime0.JSX.Element;
48
48
  declare function AlertDialogMedia({
49
49
  className,
50
50
  ...props
51
- }: AlertDialogMediaProps): react_jsx_runtime0.JSX.Element;
51
+ }: AlertDialogMediaProps): _$react_jsx_runtime0.JSX.Element;
52
52
  declare function AlertDialogTitle({
53
53
  className,
54
54
  ...props
55
- }: AlertDialogTitleProps): react_jsx_runtime0.JSX.Element;
55
+ }: AlertDialogTitleProps): _$react_jsx_runtime0.JSX.Element;
56
56
  declare function AlertDialogDescription({
57
57
  className,
58
58
  ...props
59
- }: AlertDialogDescriptionProps): react_jsx_runtime0.JSX.Element;
59
+ }: AlertDialogDescriptionProps): _$react_jsx_runtime0.JSX.Element;
60
60
  declare function AlertDialogAction({
61
61
  className,
62
62
  variant,
63
63
  size,
64
64
  ...props
65
- }: AlertDialogActionProps): react_jsx_runtime0.JSX.Element;
65
+ }: AlertDialogActionProps): _$react_jsx_runtime0.JSX.Element;
66
66
  declare function AlertDialogCancel({
67
67
  className,
68
68
  variant,
69
69
  size,
70
70
  ...props
71
- }: AlertDialogCancelProps): react_jsx_runtime0.JSX.Element;
71
+ }: AlertDialogCancelProps): _$react_jsx_runtime0.JSX.Element;
72
72
  //#endregion
73
73
  export { AlertDialog, AlertDialogAction, AlertDialogActionProps, AlertDialogCancel, AlertDialogCancelProps, AlertDialogContent, AlertDialogContentProps, AlertDialogDescription, AlertDialogDescriptionProps, AlertDialogFooter, AlertDialogFooterProps, AlertDialogHeader, AlertDialogHeaderProps, AlertDialogMedia, AlertDialogMediaProps, AlertDialogOverlay, AlertDialogOverlayProps, AlertDialogPortal, AlertDialogPortalProps, AlertDialogProps, AlertDialogTitle, AlertDialogTitleProps, AlertDialogTrigger, AlertDialogTriggerProps };
74
74
  //# sourceMappingURL=alert-dialog.d.ts.map
@@ -1,2 +1,2 @@
1
- import"../chunk-IpJEthwI.js";import{cn as e}from"../lib/utils.js";import{Button as t}from"./button.js";import{AlertDialog as n}from"radix-ui";import{jsx as r,jsxs as i}from"react/jsx-runtime";function AlertDialog({...e}){return r(n.Root,{"data-slot":`alert-dialog`,...e})}function AlertDialogTrigger({...e}){return r(n.Trigger,{"data-slot":`alert-dialog-trigger`,...e})}function AlertDialogPortal({...e}){return r(n.Portal,{"data-slot":`alert-dialog-portal`,...e})}function AlertDialogOverlay({className:t,...i}){return r(n.Overlay,{"data-slot":`alert-dialog-overlay`,className:e(`fixed inset-0 z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0`,t),...i})}function AlertDialogContent({className:t,size:a=`default`,...o}){return i(AlertDialogPortal,{children:[r(AlertDialogOverlay,{}),r(n.Content,{"data-slot":`alert-dialog-content`,"data-size":a,className:e(`group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-background p-4 ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95`,t),...o})]})}function AlertDialogHeader({className:t,...n}){return r(`div`,{"data-slot":`alert-dialog-header`,className:e(`grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]`,t),...n})}function AlertDialogFooter({className:t,...n}){return r(`div`,{"data-slot":`alert-dialog-footer`,className:e(`-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end`,t),...n})}function AlertDialogMedia({className:t,...n}){return r(`div`,{"data-slot":`alert-dialog-media`,className:e(`mb-2 inline-flex size-10 items-center justify-center rounded-md bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-6`,t),...n})}function AlertDialogTitle({className:t,...i}){return r(n.Title,{"data-slot":`alert-dialog-title`,className:e(`text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2`,t),...i})}function AlertDialogDescription({className:t,...i}){return r(n.Description,{"data-slot":`alert-dialog-description`,className:e(`text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground`,t),...i})}function AlertDialogAction({className:i,variant:a=`solid`,size:o=`default`,...s}){return r(t,{variant:a,size:o,asChild:!0,children:r(n.Action,{"data-slot":`alert-dialog-action`,className:e(i),...s})})}function AlertDialogCancel({className:i,variant:a=`outline`,size:o=`default`,...s}){return r(t,{variant:a,size:o,asChild:!0,children:r(n.Cancel,{"data-slot":`alert-dialog-cancel`,className:e(i),...s})})}export{AlertDialog,AlertDialogAction,AlertDialogCancel,AlertDialogContent,AlertDialogDescription,AlertDialogFooter,AlertDialogHeader,AlertDialogMedia,AlertDialogOverlay,AlertDialogPortal,AlertDialogTitle,AlertDialogTrigger};
1
+ import"../chunk-CHh1Zzun.js";import{cn as e}from"../lib/utils.js";import{Button as t}from"./button.js";import{AlertDialog as n}from"radix-ui";import{jsx as r,jsxs as i}from"react/jsx-runtime";function AlertDialog({...e}){return r(n.Root,{"data-slot":`alert-dialog`,...e})}function AlertDialogTrigger({...e}){return r(n.Trigger,{"data-slot":`alert-dialog-trigger`,...e})}function AlertDialogPortal({...e}){return r(n.Portal,{"data-slot":`alert-dialog-portal`,...e})}function AlertDialogOverlay({className:t,...i}){return r(n.Overlay,{"data-slot":`alert-dialog-overlay`,className:e(`fixed inset-0 z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0`,t),...i})}function AlertDialogContent({className:t,size:a=`default`,...o}){return i(AlertDialogPortal,{children:[r(AlertDialogOverlay,{}),r(n.Content,{"data-slot":`alert-dialog-content`,"data-size":a,className:e(`group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-background p-4 ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95`,t),...o})]})}function AlertDialogHeader({className:t,...n}){return r(`div`,{"data-slot":`alert-dialog-header`,className:e(`grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]`,t),...n})}function AlertDialogFooter({className:t,...n}){return r(`div`,{"data-slot":`alert-dialog-footer`,className:e(`-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end`,t),...n})}function AlertDialogMedia({className:t,...n}){return r(`div`,{"data-slot":`alert-dialog-media`,className:e(`mb-2 inline-flex size-10 items-center justify-center rounded-md bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-6`,t),...n})}function AlertDialogTitle({className:t,...i}){return r(n.Title,{"data-slot":`alert-dialog-title`,className:e(`text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2`,t),...i})}function AlertDialogDescription({className:t,...i}){return r(n.Description,{"data-slot":`alert-dialog-description`,className:e(`text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground`,t),...i})}function AlertDialogAction({className:i,variant:a=`solid`,size:o=`default`,...s}){return r(t,{variant:a,size:o,asChild:!0,children:r(n.Action,{"data-slot":`alert-dialog-action`,className:e(i),...s})})}function AlertDialogCancel({className:i,variant:a=`outline`,size:o=`default`,...s}){return r(t,{variant:a,size:o,asChild:!0,children:r(n.Cancel,{"data-slot":`alert-dialog-cancel`,className:e(i),...s})})}export{AlertDialog,AlertDialogAction,AlertDialogCancel,AlertDialogContent,AlertDialogDescription,AlertDialogFooter,AlertDialogHeader,AlertDialogMedia,AlertDialogOverlay,AlertDialogPortal,AlertDialogTitle,AlertDialogTrigger};
2
2
  //# sourceMappingURL=alert-dialog.js.map
@@ -1,13 +1,13 @@
1
- import { t as __name } from "../chunk-IpJEthwI.js";
2
- import * as react_jsx_runtime0 from "react/jsx-runtime";
1
+ import { n as __name } from "../chunk-CHh1Zzun.js";
2
+ import * as _$react_jsx_runtime0 from "react/jsx-runtime";
3
3
  import { VariantProps } from "class-variance-authority";
4
4
  import * as React from "react";
5
- import * as class_variance_authority_types0 from "class-variance-authority/types";
5
+ import * as _$class_variance_authority_types0 from "class-variance-authority/types";
6
6
 
7
7
  //#region src/components/alert.d.ts
8
8
  declare const alertVariants: (props?: ({
9
9
  variant?: "default" | "destructive" | null | undefined;
10
- } & class_variance_authority_types0.ClassProp) | undefined) => string;
10
+ } & _$class_variance_authority_types0.ClassProp) | undefined) => string;
11
11
  type AlertProps = React.ComponentProps<'div'> & VariantProps<typeof alertVariants>;
12
12
  type AlertTitleProps = React.ComponentProps<'div'>;
13
13
  type AlertDescriptionProps = React.ComponentProps<'div'>;
@@ -16,19 +16,19 @@ declare function Alert({
16
16
  className,
17
17
  variant,
18
18
  ...props
19
- }: AlertProps): react_jsx_runtime0.JSX.Element;
19
+ }: AlertProps): _$react_jsx_runtime0.JSX.Element;
20
20
  declare function AlertTitle({
21
21
  className,
22
22
  ...props
23
- }: AlertTitleProps): react_jsx_runtime0.JSX.Element;
23
+ }: AlertTitleProps): _$react_jsx_runtime0.JSX.Element;
24
24
  declare function AlertDescription({
25
25
  className,
26
26
  ...props
27
- }: AlertDescriptionProps): react_jsx_runtime0.JSX.Element;
27
+ }: AlertDescriptionProps): _$react_jsx_runtime0.JSX.Element;
28
28
  declare function AlertAction({
29
29
  className,
30
30
  ...props
31
- }: AlertActionProps): react_jsx_runtime0.JSX.Element;
31
+ }: AlertActionProps): _$react_jsx_runtime0.JSX.Element;
32
32
  //#endregion
33
33
  export { Alert, AlertAction, AlertActionProps, AlertDescription, AlertDescriptionProps, AlertProps, AlertTitle, AlertTitleProps };
34
34
  //# sourceMappingURL=alert.d.ts.map
@@ -1,2 +1,2 @@
1
- import"../chunk-IpJEthwI.js";import{cn as e}from"../lib/utils.js";import{jsx as t}from"react/jsx-runtime";import{cva as n}from"class-variance-authority";const r=n(`grid gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4 w-full relative group/alert`,{variants:{variant:{default:`bg-card text-card-foreground`,destructive:`text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current`}},defaultVariants:{variant:`default`}});function Alert({className:n,variant:i,...a}){return t(`div`,{"data-slot":`alert`,role:`alert`,className:e(r({variant:i}),n),...a})}function AlertTitle({className:n,...r}){return t(`div`,{"data-slot":`alert-title`,className:e(`font-medium group-has-[>svg]/alert:col-start-2`,`[&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground`,n),...r})}function AlertDescription({className:n,...r}){return t(`div`,{"data-slot":`alert-description`,className:e(`text-muted-foreground text-sm text-balance md:text-pretty [&_p:not(:last-child)]:mb-4`,`[&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground`,n),...r})}function AlertAction({className:n,...r}){return t(`div`,{"data-slot":`alert-action`,className:e(`absolute top-2 right-2`,n),...r})}export{Alert,AlertAction,AlertDescription,AlertTitle};
1
+ import"../chunk-CHh1Zzun.js";import{cn as e}from"../lib/utils.js";import{jsx as t}from"react/jsx-runtime";import{cva as n}from"class-variance-authority";const r=n(`grid gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4 w-full relative group/alert`,{variants:{variant:{default:`bg-card text-card-foreground`,destructive:`text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current`}},defaultVariants:{variant:`default`}});function Alert({className:n,variant:i,...a}){return t(`div`,{"data-slot":`alert`,role:`alert`,className:e(r({variant:i}),n),...a})}function AlertTitle({className:n,...r}){return t(`div`,{"data-slot":`alert-title`,className:e(`font-medium group-has-[>svg]/alert:col-start-2`,`[&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground`,n),...r})}function AlertDescription({className:n,...r}){return t(`div`,{"data-slot":`alert-description`,className:e(`text-muted-foreground text-sm text-balance md:text-pretty [&_p:not(:last-child)]:mb-4`,`[&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground`,n),...r})}function AlertAction({className:n,...r}){return t(`div`,{"data-slot":`alert-action`,className:e(`absolute top-2 right-2`,n),...r})}export{Alert,AlertAction,AlertDescription,AlertTitle};
2
2
  //# sourceMappingURL=alert.js.map
@@ -1,14 +1,14 @@
1
- import { t as __name } from "../chunk-IpJEthwI.js";
2
- import * as react_jsx_runtime0 from "react/jsx-runtime";
1
+ import { n as __name } from "../chunk-CHh1Zzun.js";
2
+ import * as _$react_jsx_runtime0 from "react/jsx-runtime";
3
3
  import { VariantProps } from "class-variance-authority";
4
4
  import * as React from "react";
5
- import * as class_variance_authority_types0 from "class-variance-authority/types";
5
+ import * as _$class_variance_authority_types0 from "class-variance-authority/types";
6
6
 
7
7
  //#region src/components/anchor.d.ts
8
8
  declare const anchorVariants: (props?: ({
9
9
  size?: "xs" | "sm" | "md" | "lg" | "xl" | null | undefined;
10
10
  underline?: "always" | "hover" | "never" | "not-hover" | null | undefined;
11
- } & class_variance_authority_types0.ClassProp) | undefined) => string;
11
+ } & _$class_variance_authority_types0.ClassProp) | undefined) => string;
12
12
  type AnchorProps = React.ComponentProps<'a'> & VariantProps<typeof anchorVariants> & {
13
13
  asChild?: boolean;
14
14
  };
@@ -18,7 +18,7 @@ declare function Anchor({
18
18
  underline,
19
19
  asChild,
20
20
  ...props
21
- }: AnchorProps): react_jsx_runtime0.JSX.Element;
21
+ }: AnchorProps): _$react_jsx_runtime0.JSX.Element;
22
22
  //#endregion
23
23
  export { Anchor, AnchorProps, anchorVariants };
24
24
  //# sourceMappingURL=anchor.d.ts.map
@@ -1,2 +1,2 @@
1
- import"../chunk-IpJEthwI.js";import{cn as e}from"../lib/utils.js";import{Slot as t}from"radix-ui";import{jsx as n}from"react/jsx-runtime";import{cva as r}from"class-variance-authority";const i=r(`text-primary rounded-sm underline-offset-4 transition-colors outline-none hover:text-primary/80 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-3`,{variants:{size:{xs:`text-xs leading-4`,sm:`text-sm leading-5`,md:`text-base leading-6`,lg:`text-lg leading-7`,xl:`text-xl leading-8`},underline:{always:`underline`,hover:`no-underline hover:underline`,never:`no-underline`,"not-hover":`underline hover:no-underline`}},defaultVariants:{size:`md`,underline:`hover`}});function Anchor({className:r,size:a=`md`,underline:o=`hover`,asChild:s=!1,...c}){return n(s?t.Root:`a`,{"data-slot":`anchor`,"data-size":a,"data-underline":o,className:e(i({size:a,underline:o}),r),...c})}export{Anchor,i as anchorVariants};
1
+ import"../chunk-CHh1Zzun.js";import{cn as e}from"../lib/utils.js";import{Slot as t}from"radix-ui";import{jsx as n}from"react/jsx-runtime";import{cva as r}from"class-variance-authority";const i=r(`text-primary rounded-sm underline-offset-4 transition-colors outline-none hover:text-primary/80 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-3`,{variants:{size:{xs:`text-xs leading-4`,sm:`text-sm leading-5`,md:`text-base leading-6`,lg:`text-lg leading-7`,xl:`text-xl leading-8`},underline:{always:`underline`,hover:`no-underline hover:underline`,never:`no-underline`,"not-hover":`underline hover:no-underline`}},defaultVariants:{size:`md`,underline:`hover`}});function Anchor({className:r,size:a=`md`,underline:o=`hover`,asChild:s=!1,...c}){return n(s?t.Root:`a`,{"data-slot":`anchor`,"data-size":a,"data-underline":o,className:e(i({size:a,underline:o}),r),...c})}export{Anchor,i as anchorVariants};
2
2
  //# sourceMappingURL=anchor.js.map
@@ -1,6 +1,6 @@
1
- import { t as __name } from "../chunk-IpJEthwI.js";
1
+ import { n as __name } from "../chunk-CHh1Zzun.js";
2
2
  import { Avatar as Avatar$1 } from "radix-ui";
3
- import * as react_jsx_runtime0 from "react/jsx-runtime";
3
+ import * as _$react_jsx_runtime0 from "react/jsx-runtime";
4
4
  import * as React from "react";
5
5
 
6
6
  //#region src/components/avatar.d.ts
@@ -16,27 +16,27 @@ declare function Avatar({
16
16
  className,
17
17
  size,
18
18
  ...props
19
- }: AvatarProps): react_jsx_runtime0.JSX.Element;
19
+ }: AvatarProps): _$react_jsx_runtime0.JSX.Element;
20
20
  declare function AvatarImage({
21
21
  className,
22
22
  ...props
23
- }: AvatarImageProps): react_jsx_runtime0.JSX.Element;
23
+ }: AvatarImageProps): _$react_jsx_runtime0.JSX.Element;
24
24
  declare function AvatarFallback({
25
25
  className,
26
26
  ...props
27
- }: AvatarFallbackProps): react_jsx_runtime0.JSX.Element;
27
+ }: AvatarFallbackProps): _$react_jsx_runtime0.JSX.Element;
28
28
  declare function AvatarBadge({
29
29
  className,
30
30
  ...props
31
- }: AvatarBadgeProps): react_jsx_runtime0.JSX.Element;
31
+ }: AvatarBadgeProps): _$react_jsx_runtime0.JSX.Element;
32
32
  declare function AvatarGroup({
33
33
  className,
34
34
  ...props
35
- }: AvatarGroupProps): react_jsx_runtime0.JSX.Element;
35
+ }: AvatarGroupProps): _$react_jsx_runtime0.JSX.Element;
36
36
  declare function AvatarGroupCount({
37
37
  className,
38
38
  ...props
39
- }: AvatarGroupCountProps): react_jsx_runtime0.JSX.Element;
39
+ }: AvatarGroupCountProps): _$react_jsx_runtime0.JSX.Element;
40
40
  //#endregion
41
41
  export { Avatar, AvatarBadge, AvatarBadgeProps, AvatarFallback, AvatarFallbackProps, AvatarGroup, AvatarGroupCount, AvatarGroupCountProps, AvatarGroupProps, AvatarImage, AvatarImageProps, AvatarProps };
42
42
  //# sourceMappingURL=avatar.d.ts.map
@@ -1,2 +1,2 @@
1
- import"../chunk-IpJEthwI.js";import{cn as e}from"../lib/utils.js";import{Avatar as t}from"radix-ui";import{jsx as n}from"react/jsx-runtime";function Avatar({className:r,size:i=`default`,...a}){return n(t.Root,{"data-slot":`avatar`,"data-size":i,className:e(`group/avatar relative flex shrink-0 size-8 rounded-full select-none`,`data-[size=lg]:size-10 data-[size=sm]:size-6`,`after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken dark:after:mix-blend-lighten`,r),...a})}function AvatarImage({className:r,...i}){return n(t.Image,{"data-slot":`avatar-image`,className:e(`rounded-full aspect-square size-full object-cover`,r),...i})}function AvatarFallback({className:r,...i}){return n(t.Fallback,{"data-slot":`avatar-fallback`,className:e(`bg-muted text-muted-foreground rounded-full flex size-full items-center justify-center text-sm group-data-[size=sm]/avatar:text-xs`,r),...i})}function AvatarBadge({className:t,...r}){return n(`span`,{"data-slot":`avatar-badge`,className:e(`bg-primary text-primary-foreground ring-background absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-blend-color ring-2 select-none`,`group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden`,`group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2`,`group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2`,t),...r})}function AvatarGroup({className:t,...r}){return n(`div`,{"data-slot":`avatar-group`,className:e(`*:data-[slot=avatar]:ring-background group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2`,t),...r})}function AvatarGroupCount({className:t,...r}){return n(`div`,{"data-slot":`avatar-group-count`,className:e(`bg-muted text-muted-foreground ring-background relative flex shrink-0 items-center justify-center size-8 rounded-full text-sm ring-2`,`group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6`,`[&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3`,t),...r})}export{Avatar,AvatarBadge,AvatarFallback,AvatarGroup,AvatarGroupCount,AvatarImage};
1
+ import"../chunk-CHh1Zzun.js";import{cn as e}from"../lib/utils.js";import{Avatar as t}from"radix-ui";import{jsx as n}from"react/jsx-runtime";function Avatar({className:r,size:i=`default`,...a}){return n(t.Root,{"data-slot":`avatar`,"data-size":i,className:e(`group/avatar relative flex shrink-0 size-8 rounded-full select-none`,`data-[size=lg]:size-10 data-[size=sm]:size-6`,`after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken dark:after:mix-blend-lighten`,r),...a})}function AvatarImage({className:r,...i}){return n(t.Image,{"data-slot":`avatar-image`,className:e(`rounded-full aspect-square size-full object-cover`,r),...i})}function AvatarFallback({className:r,...i}){return n(t.Fallback,{"data-slot":`avatar-fallback`,className:e(`bg-muted text-muted-foreground rounded-full flex size-full items-center justify-center text-sm group-data-[size=sm]/avatar:text-xs`,r),...i})}function AvatarBadge({className:t,...r}){return n(`span`,{"data-slot":`avatar-badge`,className:e(`bg-primary text-primary-foreground ring-background absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-blend-color ring-2 select-none`,`group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden`,`group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2`,`group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2`,t),...r})}function AvatarGroup({className:t,...r}){return n(`div`,{"data-slot":`avatar-group`,className:e(`*:data-[slot=avatar]:ring-background group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2`,t),...r})}function AvatarGroupCount({className:t,...r}){return n(`div`,{"data-slot":`avatar-group-count`,className:e(`bg-muted text-muted-foreground ring-background relative flex shrink-0 items-center justify-center size-8 rounded-full text-sm ring-2`,`group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6`,`[&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3`,t),...r})}export{Avatar,AvatarBadge,AvatarFallback,AvatarGroup,AvatarGroupCount,AvatarImage};
2
2
  //# sourceMappingURL=avatar.js.map
@@ -1,13 +1,13 @@
1
- import { t as __name } from "../chunk-IpJEthwI.js";
2
- import * as react_jsx_runtime0 from "react/jsx-runtime";
1
+ import { n as __name } from "../chunk-CHh1Zzun.js";
2
+ import * as _$react_jsx_runtime0 from "react/jsx-runtime";
3
3
  import { VariantProps } from "class-variance-authority";
4
4
  import * as React from "react";
5
- import * as class_variance_authority_types0 from "class-variance-authority/types";
5
+ import * as _$class_variance_authority_types0 from "class-variance-authority/types";
6
6
 
7
7
  //#region src/components/badge.d.ts
8
8
  declare const badgeVariants: (props?: ({
9
9
  variant?: "default" | "destructive" | "secondary" | "outline" | "ghost" | "link" | null | undefined;
10
- } & class_variance_authority_types0.ClassProp) | undefined) => string;
10
+ } & _$class_variance_authority_types0.ClassProp) | undefined) => string;
11
11
  type BadgeProps = React.ComponentProps<'span'> & VariantProps<typeof badgeVariants> & {
12
12
  asChild?: boolean;
13
13
  };
@@ -16,7 +16,7 @@ declare function Badge({
16
16
  variant,
17
17
  asChild,
18
18
  ...props
19
- }: BadgeProps): react_jsx_runtime0.JSX.Element;
19
+ }: BadgeProps): _$react_jsx_runtime0.JSX.Element;
20
20
  //#endregion
21
21
  export { Badge, BadgeProps, badgeVariants };
22
22
  //# sourceMappingURL=badge.d.ts.map
@@ -1,2 +1,2 @@
1
- import"../chunk-IpJEthwI.js";import{cn as e}from"../lib/utils.js";import{Slot as t}from"radix-ui";import{jsx as n}from"react/jsx-runtime";import{cva as r}from"class-variance-authority";const i=r(`group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!`,{variants:{variant:{default:`bg-primary text-primary-foreground [a]:hover:bg-primary/80`,secondary:`bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80`,destructive:`bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20`,outline:`border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground`,ghost:`hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50`,link:`text-primary underline-offset-4 hover:underline`}},defaultVariants:{variant:`default`}});function Badge({className:r,variant:a=`default`,asChild:o=!1,...s}){return n(o?t.Root:`span`,{"data-slot":`badge`,"data-variant":a,className:e(i({variant:a}),r),...s})}export{Badge,i as badgeVariants};
1
+ import"../chunk-CHh1Zzun.js";import{cn as e}from"../lib/utils.js";import{Slot as t}from"radix-ui";import{jsx as n}from"react/jsx-runtime";import{cva as r}from"class-variance-authority";const i=r(`group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!`,{variants:{variant:{default:`bg-primary text-primary-foreground [a]:hover:bg-primary/80`,secondary:`bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80`,destructive:`bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20`,outline:`border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground`,ghost:`hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50`,link:`text-primary underline-offset-4 hover:underline`}},defaultVariants:{variant:`default`}});function Badge({className:r,variant:a=`default`,asChild:o=!1,...s}){return n(o?t.Root:`span`,{"data-slot":`badge`,"data-variant":a,className:e(i({variant:a}),r),...s})}export{Badge,i as badgeVariants};
2
2
  //# sourceMappingURL=badge.js.map
@@ -1,5 +1,5 @@
1
- import { t as __name } from "../chunk-IpJEthwI.js";
2
- import * as react_jsx_runtime0 from "react/jsx-runtime";
1
+ import { n as __name } from "../chunk-CHh1Zzun.js";
2
+ import * as _$react_jsx_runtime0 from "react/jsx-runtime";
3
3
  import * as React from "react";
4
4
 
5
5
  //#region src/components/breadcrumb.d.ts
@@ -15,33 +15,33 @@ type BreadcrumbEllipsisProps = React.ComponentProps<'span'>;
15
15
  declare function Breadcrumb({
16
16
  className,
17
17
  ...props
18
- }: BreadcrumbProps): react_jsx_runtime0.JSX.Element;
18
+ }: BreadcrumbProps): _$react_jsx_runtime0.JSX.Element;
19
19
  declare function BreadcrumbList({
20
20
  className,
21
21
  ...props
22
- }: BreadcrumbListProps): react_jsx_runtime0.JSX.Element;
22
+ }: BreadcrumbListProps): _$react_jsx_runtime0.JSX.Element;
23
23
  declare function BreadcrumbItem({
24
24
  className,
25
25
  ...props
26
- }: BreadcrumbItemProps): react_jsx_runtime0.JSX.Element;
26
+ }: BreadcrumbItemProps): _$react_jsx_runtime0.JSX.Element;
27
27
  declare function BreadcrumbLink({
28
28
  asChild,
29
29
  className,
30
30
  ...props
31
- }: BreadcrumbLinkProps): react_jsx_runtime0.JSX.Element;
31
+ }: BreadcrumbLinkProps): _$react_jsx_runtime0.JSX.Element;
32
32
  declare function BreadcrumbPage({
33
33
  className,
34
34
  ...props
35
- }: BreadcrumbPageProps): react_jsx_runtime0.JSX.Element;
35
+ }: BreadcrumbPageProps): _$react_jsx_runtime0.JSX.Element;
36
36
  declare function BreadcrumbSeparator({
37
37
  children,
38
38
  className,
39
39
  ...props
40
- }: BreadcrumbSeparatorProps): react_jsx_runtime0.JSX.Element;
40
+ }: BreadcrumbSeparatorProps): _$react_jsx_runtime0.JSX.Element;
41
41
  declare function BreadcrumbEllipsis({
42
42
  className,
43
43
  ...props
44
- }: BreadcrumbEllipsisProps): react_jsx_runtime0.JSX.Element;
44
+ }: BreadcrumbEllipsisProps): _$react_jsx_runtime0.JSX.Element;
45
45
  //#endregion
46
46
  export { Breadcrumb, BreadcrumbEllipsis, BreadcrumbEllipsisProps, BreadcrumbItem, BreadcrumbItemProps, BreadcrumbLink, BreadcrumbLinkProps, BreadcrumbList, BreadcrumbListProps, BreadcrumbPage, BreadcrumbPageProps, BreadcrumbProps, BreadcrumbSeparator, BreadcrumbSeparatorProps };
47
47
  //# sourceMappingURL=breadcrumb.d.ts.map
@@ -1,2 +1,2 @@
1
- import"../chunk-IpJEthwI.js";import{cn as e}from"../lib/utils.js";import{IconChevronRight as t,IconDots as n}from"@tabler/icons-react";import{Slot as r}from"radix-ui";import{jsx as i,jsxs as a}from"react/jsx-runtime";function Breadcrumb({className:t,...n}){return i(`nav`,{"aria-label":`breadcrumb`,"data-slot":`breadcrumb`,className:e(t),...n})}function BreadcrumbList({className:t,...n}){return i(`ol`,{"data-slot":`breadcrumb-list`,className:e(`flex flex-wrap items-center gap-1.5 text-sm wrap-break-word text-muted-foreground`,t),...n})}function BreadcrumbItem({className:t,...n}){return i(`li`,{"data-slot":`breadcrumb-item`,className:e(`inline-flex items-center gap-1`,t),...n})}function BreadcrumbLink({asChild:t,className:n,...a}){return i(t?r.Root:`a`,{"data-slot":`breadcrumb-link`,className:e(`transition-colors hover:text-foreground`,n),...a})}function BreadcrumbPage({className:t,...n}){return i(`span`,{"data-slot":`breadcrumb-page`,"aria-current":`page`,className:e(`font-normal text-foreground`,t),...n})}function BreadcrumbSeparator({children:n,className:r,...a}){return i(`li`,{"data-slot":`breadcrumb-separator`,role:`presentation`,"aria-hidden":`true`,className:e(`[&>svg]:size-3.5`,r),...a,children:n??i(t,{})})}function BreadcrumbEllipsis({className:t,...r}){return a(`span`,{"data-slot":`breadcrumb-ellipsis`,role:`presentation`,"aria-hidden":`true`,className:e(`flex size-5 items-center justify-center [&>svg]:size-4`,t),...r,children:[i(n,{}),i(`span`,{className:`sr-only`,children:`More`})]})}export{Breadcrumb,BreadcrumbEllipsis,BreadcrumbItem,BreadcrumbLink,BreadcrumbList,BreadcrumbPage,BreadcrumbSeparator};
1
+ import"../chunk-CHh1Zzun.js";import{cn as e}from"../lib/utils.js";import{IconChevronRight as t,IconDots as n}from"@tabler/icons-react";import{Slot as r}from"radix-ui";import{jsx as i,jsxs as a}from"react/jsx-runtime";function Breadcrumb({className:t,...n}){return i(`nav`,{"aria-label":`breadcrumb`,"data-slot":`breadcrumb`,className:e(t),...n})}function BreadcrumbList({className:t,...n}){return i(`ol`,{"data-slot":`breadcrumb-list`,className:e(`flex flex-wrap items-center gap-1.5 text-sm wrap-break-word text-muted-foreground`,t),...n})}function BreadcrumbItem({className:t,...n}){return i(`li`,{"data-slot":`breadcrumb-item`,className:e(`inline-flex items-center gap-1`,t),...n})}function BreadcrumbLink({asChild:t,className:n,...a}){return i(t?r.Root:`a`,{"data-slot":`breadcrumb-link`,className:e(`transition-colors hover:text-foreground`,n),...a})}function BreadcrumbPage({className:t,...n}){return i(`span`,{"data-slot":`breadcrumb-page`,"aria-current":`page`,className:e(`font-normal text-foreground`,t),...n})}function BreadcrumbSeparator({children:n,className:r,...a}){return i(`li`,{"data-slot":`breadcrumb-separator`,role:`presentation`,"aria-hidden":`true`,className:e(`[&>svg]:size-3.5`,r),...a,children:n??i(t,{})})}function BreadcrumbEllipsis({className:t,...r}){return a(`span`,{"data-slot":`breadcrumb-ellipsis`,role:`presentation`,"aria-hidden":`true`,className:e(`flex size-5 items-center justify-center [&>svg]:size-4`,t),...r,children:[i(n,{}),i(`span`,{className:`sr-only`,children:`More`})]})}export{Breadcrumb,BreadcrumbEllipsis,BreadcrumbItem,BreadcrumbLink,BreadcrumbList,BreadcrumbPage,BreadcrumbSeparator};
2
2
  //# sourceMappingURL=breadcrumb.js.map