tembro 6.0.2 → 6.0.3
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.
- package/CHANGELOG.md +6 -0
- package/package.json +13 -13
- package/packages/cli/dist/index.cjs +1 -1
- package/packages/cli/vendor/templates/showcase/src/showcase/data/registry.ts +1 -1
- package/packages/cli/vendor/templates/showcase/src/showcase/layout/HeroSection.tsx +3 -2
- package/packages/cli/vendor/templates/showcase/src/showcase/layout/WorkbenchSidebar.tsx +3 -2
- package/packages/cli/vendor/templates/showcase/src/showcase/sections/ComponentLivePreview.tsx +1 -1
- package/registry.json +2794 -2794
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## 6.0.3 - 2026-07-18
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- Fixed the showcase template sidebar import path so generated workbenches use the canonical `layout/sidebar` component.
|
|
10
|
+
|
|
5
11
|
## 6.0.2 - 2026-07-18
|
|
6
12
|
|
|
7
13
|
### Fixed
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tembro",
|
|
3
|
-
"version": "6.0.
|
|
3
|
+
"version": "6.0.3",
|
|
4
4
|
"description": "Reusable React UI kit with dashboard-ready components, CLI registry helpers, and TypeScript support.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -156,18 +156,18 @@
|
|
|
156
156
|
"dependencies": {
|
|
157
157
|
"@base-ui/react": "^1.5.0",
|
|
158
158
|
"@dnd-kit/helpers": "^0.5.0",
|
|
159
|
-
"@dnd-kit/react": "^0.5.0",
|
|
160
|
-
"@tanstack/react-table": "^8.21.3",
|
|
161
|
-
"@tanstack/react-virtual": "^3.14.5",
|
|
162
|
-
"@tiptap/core": "3.28.0",
|
|
163
|
-
"@tiptap/extension-bubble-menu": "3.28.0",
|
|
164
|
-
"@tiptap/extension-floating-menu": "3.28.0",
|
|
165
|
-
"@tiptap/extension-link": "3.28.0",
|
|
166
|
-
"@tiptap/extension-placeholder": "3.28.0",
|
|
167
|
-
"@tiptap/extensions": "3.28.0",
|
|
168
|
-
"@tiptap/pm": "3.28.0",
|
|
169
|
-
"@tiptap/react": "3.28.0",
|
|
170
|
-
"@tiptap/starter-kit": "3.28.0",
|
|
159
|
+
"@dnd-kit/react": "^0.5.0",
|
|
160
|
+
"@tanstack/react-table": "^8.21.3",
|
|
161
|
+
"@tanstack/react-virtual": "^3.14.5",
|
|
162
|
+
"@tiptap/core": "3.28.0",
|
|
163
|
+
"@tiptap/extension-bubble-menu": "3.28.0",
|
|
164
|
+
"@tiptap/extension-floating-menu": "3.28.0",
|
|
165
|
+
"@tiptap/extension-link": "3.28.0",
|
|
166
|
+
"@tiptap/extension-placeholder": "3.28.0",
|
|
167
|
+
"@tiptap/extensions": "3.28.0",
|
|
168
|
+
"@tiptap/pm": "3.28.0",
|
|
169
|
+
"@tiptap/react": "3.28.0",
|
|
170
|
+
"@tiptap/starter-kit": "3.28.0",
|
|
171
171
|
"@types/qrcode": "^1.5.6",
|
|
172
172
|
"class-variance-authority": "^0.7.1",
|
|
173
173
|
"clsx": "^2.1.1",
|
|
@@ -2002,4 +2002,4 @@ ${t}`),i.forEach(n=>{let o=R[n],s=or(n),a=jn(n,o.category),c=o.registryDependenc
|
|
|
2002
2002
|
${s}`),a.sort().forEach(c=>{let u=R[c],l=or(c),d=jn(c,u.category),h=u.registryDependencies?.length?` -> ${u.registryDependencies.join(", ")}`:"";console.log(` ${c} [${l}/${d}]${h}`);});console.log(`
|
|
2003
2003
|
Status:`),console.log(" stable = safe public API"),console.log(" preview = usable but API may change"),console.log(" experimental = not ready for stable app contracts"),console.log(" internal = helper metadata"),console.log(`
|
|
2004
2004
|
Distribution:`),console.log(" foundation = small runtime-safe primitives, hooks, and helpers"),console.log(" source-copy = copy into app source with init/add and edit locally"),console.log(" system = larger product surfaces and patterns; prefer source-copy only"),console.log(`
|
|
2005
|
-
Usage:`),console.log(` ${re("add button input data-table")}`),console.log(` ${re("add form --overwrite")}`),console.log(` ${re("list --category data-table")}`),console.log(` ${re("list --json")}`);}var mt=be(qe());function Ka(t){try{return mt.default.readJsonSync(t)}catch{return null}}function ow(t){try{return mt.default.readFileSync(t,"utf8")}catch{return null}}function jP(t,e){return e?L__default.default.resolve(t,e):null}function sw(t){let e=t.paths?.components??t.componentsPath??"src/components",r=t.paths?.ui??t.componentsPath??L__default.default.join(e,"ui"),i=t.paths?.lib??L__default.default.dirname(t.utilsPath??"src/lib/utils.ts"),n=t.paths?.hooks??"src/hooks",o=t.utilsPath??L__default.default.join(i,"utils.ts");return {componentsRoot:e,uiPath:r,libPath:i,hooksPath:n,utilsPath:o}}function NP(t,e){let r=sw(e);return t.replace("{components}",r.componentsRoot).replace("{ui}",r.uiPath).replace("{hooks}",r.hooksPath).replace("{lib}",r.libPath).replace("{utils}",r.utilsPath)}function iw(t,e){return ["tsconfig.app.json","tsconfig.json"].map(i=>L__default.default.join(t,i)).some(i=>!!Ka(i)?.compilerOptions?.paths?.[`${e}/*`])}function nw(t,e){return ["vite.config.ts","vite.config.js","vite.config.mjs"].map(i=>L__default.default.join(t,i)).some(i=>{let n=ow(i);return !!(n?.includes(`"${e}"`)||n?.includes(`'${e}'`))})}function aw(t,e){let r=Ka(L__default.default.join(t,"package.json")),i=new Set([...Object.keys(r?.dependencies??{}),...Object.keys(r?.devDependencies??{})]);return e.filter(n=>!i.has(n))}function Ja(t,e){return (t.files??[]).map(r=>({source:r.source,target:NP(r.target,e)}))}function qP(t,e){return At.map(r=>R[r]).filter(r=>r.category!=="lib").filter(r=>!r.migrationAliasFor).filter(r=>r.files?.length).filter(r=>Ja(r,e).some(i=>mt.default.existsSync(L__default.default.join(t,i.target))))}function LP(t,e){let r=qP(t,e),i=[],n=[],o=new Set;for(let s of r){for(let a of Ja(s,e))mt.default.existsSync(L__default.default.join(t,a.target))||i.push(`${s.name}: ${a.target}`);for(let a of s.registryDependencies??[]){let c=R[a];if(!c?.files?.length)continue;Ja(c,e).some(l=>mt.default.existsSync(L__default.default.join(t,l.target)))||n.push(`${s.name} -> ${a}`);}for(let a of s.dependencies??[])o.add(a);}return {copiedItems:r,missingFiles:i,missingRegistryDependencies:n,missingPackages:aw(t,Array.from(o).sort())}}function Ze(t,e){t.push(e);}function BP(t){return t?t.includes("/* tembro:start */")||t.includes("--aui-")||t.includes("--az-"):false}function cw(t={}){let e=process.cwd(),r=[],i=L__default.default.join(e,"package.json"),n=L__default.default.join(e,"tembro.json"),o=mt.default.existsSync(i),s=Ka(n);if(Ze(r,{name:"package.json",status:o?"pass":"fail",message:o?"package.json topildi.":"package.json topilmadi. Commandni React, Vite yoki Next project ichida ishlating."}),Ze(r,{name:"tembro.json",status:s?"pass":"fail",message:s?"tembro.json topildi.":`tembro.json topilmadi. Avval ${re("init")} ishlating.`}),s){let u=s.alias??"@",{componentsRoot:l,uiPath:d,libPath:h,hooksPath:p}=sw(s),f=s.cssPath??"src/index.css",b=[["components",l],["ui",d],["lib",h],["hooks",p]].filter(([,C])=>{let M=jP(e,C);return !M||!mt.default.existsSync(M)});Ze(r,{name:"paths",status:b.length?"warn":"pass",message:b.length?`Yetishmayotgan pathlar: ${b.map(([C,M])=>`${C}=${M}`).join(", ")}`:"Configured source paths mavjud."}),Ze(r,{name:"alias",status:iw(e,u)||nw(e,u)?"pass":"warn",message:iw(e,u)||nw(e,u)?`${u} alias tsconfig yoki vite configda topildi.`:`${u} alias topilmadi. Import pathlar ishlamasligi mumkin.`});let y=ow(L__default.default.join(e,f)),w=BP(y);Ze(r,{name:"theme-css",status:w?"pass":"warn",message:w?`${f} ichida Tembro tokenlari bor.`:`${f} ichida Tembro tokenlari topilmadi. ${re(`theme ${f}`)} ishlating.`});let S=LP(e,s);Ze(r,{name:"component-files",status:S.missingFiles.length?"warn":"pass",message:S.missingFiles.length?`Yetishmayotgan component fayllari: ${S.missingFiles.slice(0,8).join(", ")}${S.missingFiles.length>8?` (+${S.missingFiles.length-8})`:""}`:`${S.copiedItems.length} ta copied component file set tekshirildi.`}),Ze(r,{name:"registry-dependencies",status:S.missingRegistryDependencies.length?"warn":"pass",message:S.missingRegistryDependencies.length?`Yetishmayotgan registry dependencylar: ${S.missingRegistryDependencies.slice(0,8).join(", ")}${S.missingRegistryDependencies.length>8?` (+${S.missingRegistryDependencies.length-8})`:""}`:"Copied componentlar uchun registry dependencylar joyida."}),Ze(r,{name:"component-dependencies",status:S.missingPackages.length?"warn":"pass",message:S.missingPackages.length?`Copied componentlar uchun yetishmayotgan package dependencylar: ${S.missingPackages.join(", ")}`:"Copied component package dependencylari package.json ichida bor."});}if(o){let u=aw(e,["@fontsource-variable/geist","clsx","tailwind-merge","tw-animate-css"]);Ze(r,{name:"base-dependencies",status:u.length?"warn":"pass",message:u.length?`Yetishmayotgan dependencylar: ${u.join(", ")}`:"Base dependencylar package.json ichida bor."});}let a=r.filter(u=>u.status==="fail"),c=r.filter(u=>u.status==="warn");if(t.json){console.log(JSON.stringify({ok:a.length===0,checks:r},null,2));return}for(let u of r){let l=`${u.status.toUpperCase()} ${u.name}: ${u.message}`;u.status==="pass"&&x.success(l),u.status==="warn"&&x.warn(l),u.status==="fail"&&x.error(l);}if(a.length&&(x.error(`Doctor failed: ${a.length} fail, ${c.length} warn.`),process.exit(1)),c.length){x.warn(`Doctor completed with ${c.length} warning.`);return}x.success("Doctor passed. Project Tembro setup looks ready.");}var Xa=be(qe());async function lw(t){let e=process.cwd(),r=L__default.default.join(e,"tembro.json"),i=Xa.default.existsSync(r)?await Xa.default.readJson(r):{},n=t??i.cssPath??i.globalCssPath??"src/index.css",o=i.paths?.components??i.componentsPath??"src/components",s=await Mn({cwd:e,cssPath:n,componentsPath:o});x.success(`Tembro theme CSS yangilandi: ${s}`);}var uw={minimal:["button","input","card","badge"],dashboard:["button","input","card","badge","dropdown-menu","skeleton","tabs","state-view","filter-bar","description-list","info-card","data-table"]};async function dw(t,e={}){let r=uw[t];r||(x.error(`Preset topilmadi: ${t}`),process.exit(1)),await Dt(r,e);}var Qe=new $t;Qe.name("tembro").description("Tembro source-copy CLI").version("6.0.
|
|
2005
|
+
Usage:`),console.log(` ${re("add button input data-table")}`),console.log(` ${re("add form --overwrite")}`),console.log(` ${re("list --category data-table")}`),console.log(` ${re("list --json")}`);}var mt=be(qe());function Ka(t){try{return mt.default.readJsonSync(t)}catch{return null}}function ow(t){try{return mt.default.readFileSync(t,"utf8")}catch{return null}}function jP(t,e){return e?L__default.default.resolve(t,e):null}function sw(t){let e=t.paths?.components??t.componentsPath??"src/components",r=t.paths?.ui??t.componentsPath??L__default.default.join(e,"ui"),i=t.paths?.lib??L__default.default.dirname(t.utilsPath??"src/lib/utils.ts"),n=t.paths?.hooks??"src/hooks",o=t.utilsPath??L__default.default.join(i,"utils.ts");return {componentsRoot:e,uiPath:r,libPath:i,hooksPath:n,utilsPath:o}}function NP(t,e){let r=sw(e);return t.replace("{components}",r.componentsRoot).replace("{ui}",r.uiPath).replace("{hooks}",r.hooksPath).replace("{lib}",r.libPath).replace("{utils}",r.utilsPath)}function iw(t,e){return ["tsconfig.app.json","tsconfig.json"].map(i=>L__default.default.join(t,i)).some(i=>!!Ka(i)?.compilerOptions?.paths?.[`${e}/*`])}function nw(t,e){return ["vite.config.ts","vite.config.js","vite.config.mjs"].map(i=>L__default.default.join(t,i)).some(i=>{let n=ow(i);return !!(n?.includes(`"${e}"`)||n?.includes(`'${e}'`))})}function aw(t,e){let r=Ka(L__default.default.join(t,"package.json")),i=new Set([...Object.keys(r?.dependencies??{}),...Object.keys(r?.devDependencies??{})]);return e.filter(n=>!i.has(n))}function Ja(t,e){return (t.files??[]).map(r=>({source:r.source,target:NP(r.target,e)}))}function qP(t,e){return At.map(r=>R[r]).filter(r=>r.category!=="lib").filter(r=>!r.migrationAliasFor).filter(r=>r.files?.length).filter(r=>Ja(r,e).some(i=>mt.default.existsSync(L__default.default.join(t,i.target))))}function LP(t,e){let r=qP(t,e),i=[],n=[],o=new Set;for(let s of r){for(let a of Ja(s,e))mt.default.existsSync(L__default.default.join(t,a.target))||i.push(`${s.name}: ${a.target}`);for(let a of s.registryDependencies??[]){let c=R[a];if(!c?.files?.length)continue;Ja(c,e).some(l=>mt.default.existsSync(L__default.default.join(t,l.target)))||n.push(`${s.name} -> ${a}`);}for(let a of s.dependencies??[])o.add(a);}return {copiedItems:r,missingFiles:i,missingRegistryDependencies:n,missingPackages:aw(t,Array.from(o).sort())}}function Ze(t,e){t.push(e);}function BP(t){return t?t.includes("/* tembro:start */")||t.includes("--aui-")||t.includes("--az-"):false}function cw(t={}){let e=process.cwd(),r=[],i=L__default.default.join(e,"package.json"),n=L__default.default.join(e,"tembro.json"),o=mt.default.existsSync(i),s=Ka(n);if(Ze(r,{name:"package.json",status:o?"pass":"fail",message:o?"package.json topildi.":"package.json topilmadi. Commandni React, Vite yoki Next project ichida ishlating."}),Ze(r,{name:"tembro.json",status:s?"pass":"fail",message:s?"tembro.json topildi.":`tembro.json topilmadi. Avval ${re("init")} ishlating.`}),s){let u=s.alias??"@",{componentsRoot:l,uiPath:d,libPath:h,hooksPath:p}=sw(s),f=s.cssPath??"src/index.css",b=[["components",l],["ui",d],["lib",h],["hooks",p]].filter(([,C])=>{let M=jP(e,C);return !M||!mt.default.existsSync(M)});Ze(r,{name:"paths",status:b.length?"warn":"pass",message:b.length?`Yetishmayotgan pathlar: ${b.map(([C,M])=>`${C}=${M}`).join(", ")}`:"Configured source paths mavjud."}),Ze(r,{name:"alias",status:iw(e,u)||nw(e,u)?"pass":"warn",message:iw(e,u)||nw(e,u)?`${u} alias tsconfig yoki vite configda topildi.`:`${u} alias topilmadi. Import pathlar ishlamasligi mumkin.`});let y=ow(L__default.default.join(e,f)),w=BP(y);Ze(r,{name:"theme-css",status:w?"pass":"warn",message:w?`${f} ichida Tembro tokenlari bor.`:`${f} ichida Tembro tokenlari topilmadi. ${re(`theme ${f}`)} ishlating.`});let S=LP(e,s);Ze(r,{name:"component-files",status:S.missingFiles.length?"warn":"pass",message:S.missingFiles.length?`Yetishmayotgan component fayllari: ${S.missingFiles.slice(0,8).join(", ")}${S.missingFiles.length>8?` (+${S.missingFiles.length-8})`:""}`:`${S.copiedItems.length} ta copied component file set tekshirildi.`}),Ze(r,{name:"registry-dependencies",status:S.missingRegistryDependencies.length?"warn":"pass",message:S.missingRegistryDependencies.length?`Yetishmayotgan registry dependencylar: ${S.missingRegistryDependencies.slice(0,8).join(", ")}${S.missingRegistryDependencies.length>8?` (+${S.missingRegistryDependencies.length-8})`:""}`:"Copied componentlar uchun registry dependencylar joyida."}),Ze(r,{name:"component-dependencies",status:S.missingPackages.length?"warn":"pass",message:S.missingPackages.length?`Copied componentlar uchun yetishmayotgan package dependencylar: ${S.missingPackages.join(", ")}`:"Copied component package dependencylari package.json ichida bor."});}if(o){let u=aw(e,["@fontsource-variable/geist","clsx","tailwind-merge","tw-animate-css"]);Ze(r,{name:"base-dependencies",status:u.length?"warn":"pass",message:u.length?`Yetishmayotgan dependencylar: ${u.join(", ")}`:"Base dependencylar package.json ichida bor."});}let a=r.filter(u=>u.status==="fail"),c=r.filter(u=>u.status==="warn");if(t.json){console.log(JSON.stringify({ok:a.length===0,checks:r},null,2));return}for(let u of r){let l=`${u.status.toUpperCase()} ${u.name}: ${u.message}`;u.status==="pass"&&x.success(l),u.status==="warn"&&x.warn(l),u.status==="fail"&&x.error(l);}if(a.length&&(x.error(`Doctor failed: ${a.length} fail, ${c.length} warn.`),process.exit(1)),c.length){x.warn(`Doctor completed with ${c.length} warning.`);return}x.success("Doctor passed. Project Tembro setup looks ready.");}var Xa=be(qe());async function lw(t){let e=process.cwd(),r=L__default.default.join(e,"tembro.json"),i=Xa.default.existsSync(r)?await Xa.default.readJson(r):{},n=t??i.cssPath??i.globalCssPath??"src/index.css",o=i.paths?.components??i.componentsPath??"src/components",s=await Mn({cwd:e,cssPath:n,componentsPath:o});x.success(`Tembro theme CSS yangilandi: ${s}`);}var uw={minimal:["button","input","card","badge"],dashboard:["button","input","card","badge","dropdown-menu","skeleton","tabs","state-view","filter-bar","description-list","info-card","data-table"]};async function dw(t,e={}){let r=uw[t];r||(x.error(`Preset topilmadi: ${t}`),process.exit(1)),await Dt(r,e);}var Qe=new $t;Qe.name("tembro").description("Tembro source-copy CLI").version("6.0.3");Qe.command("init").description("Initialize local Tembro source files in your project").option("--template <template>","Project defaults: vite or next").option("--skip-install","Do not install base dependencies").option("--showcase","Add every component and write a local Tembro workbench").option("-y, --defaults","Use template defaults without interactive prompts").action(Ky);Qe.command("preset").description("Add a source-copy preset to your project").argument("<name>","preset name: minimal or dashboard").option("-o, --overwrite","overwrite existing files").option("--dry-run","show files without writing").option("--skip-install","do not install package dependencies").action(dw);Qe.command("list").description("List available registry components").option("--category <category>","Filter by registry category").option("--status <status>","Filter by status: stable, preview, experimental, internal").option("--json","Print machine-readable JSON").action(rw);Qe.command("doctor").description("Check local project setup for Tembro source-copy usage").option("--json","Print machine-readable JSON").action(cw);Qe.command("add").description("Copy component source files into your project").argument("[components...]","components to add").option("-o, --overwrite","overwrite existing files").option("--dry-run","show files without writing").option("--plan","print machine-readable copy plan without writing").option("--skip-install","do not install package dependencies").action(Dt);Qe.command("showcase").description("Add every component and write a local Tembro workbench").option("-o, --overwrite","overwrite existing files").option("--dry-run","show files without writing").option("--skip-install","do not install package dependencies").action(t=>Dt(["showcase"],t));Qe.command("theme").description("Write or update Tembro theme CSS in your global CSS file").argument("[cssPath]","global CSS path, default from tembro.json or src/index.css").action(lw);Qe.parse();
|
|
@@ -149,7 +149,7 @@ export const registryGroups: RegistryGroup[] = [
|
|
|
149
149
|
{
|
|
150
150
|
name: "layout",
|
|
151
151
|
components: [
|
|
152
|
-
component("sidebar", "stable", "src/components/layout/
|
|
152
|
+
component("sidebar", "stable", "src/components/layout/sidebar.tsx"),
|
|
153
153
|
component("breadcrumbs", "stable", "src/components/layout/breadcrumbs.tsx"),
|
|
154
154
|
component("section", "preview", "src/components/layout/section.tsx"),
|
|
155
155
|
],
|
|
@@ -25,7 +25,7 @@ export function HeroSection() {
|
|
|
25
25
|
<div className="flex flex-wrap gap-2">
|
|
26
26
|
<Button leftIcon={<PlusIcon className="size-4" />}>Create</Button>
|
|
27
27
|
<Button variant="outline" leftIcon={<SettingsIcon className="size-4" />}>Settings</Button>
|
|
28
|
-
<CopyButton value="npx tembro@6.0.
|
|
28
|
+
<CopyButton value="npx tembro@6.0.3 list --json">Copy list command</CopyButton>
|
|
29
29
|
</div>
|
|
30
30
|
</div>
|
|
31
31
|
|
|
@@ -33,9 +33,10 @@ export function HeroSection() {
|
|
|
33
33
|
<StatisticCard label="Registry components" value={moduleCount} change="visible below" trend="up" description="tembro add <name>" />
|
|
34
34
|
<StatisticCard label="Local source files" value="152" change="with hooks/lib" trend="up" description="installed by CLI" />
|
|
35
35
|
<StatisticCard label="Categories" value={registryGroups.length} change="all shown" trend="up" description="actions to wizard" />
|
|
36
|
-
<StatisticCard label="Build" value="Pass" change="doctor pass" trend="up" description="tembro@6.0.
|
|
36
|
+
<StatisticCard label="Build" value="Pass" change="doctor pass" trend="up" description="tembro@6.0.3" />
|
|
37
37
|
</StatisticGrid>
|
|
38
38
|
</div>
|
|
39
39
|
</section>
|
|
40
40
|
)
|
|
41
41
|
}
|
|
42
|
+
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
WandSparklesIcon,
|
|
11
11
|
} from "lucide-react"
|
|
12
12
|
|
|
13
|
-
import { Sidebar } from "@/components/layout/
|
|
13
|
+
import { Sidebar } from "@/components/layout/sidebar"
|
|
14
14
|
import { Badge } from "@/components/ui/badge"
|
|
15
15
|
import { getCategoryKey, getModuleKey, getModuleLabel, moduleCount, registryGroups } from "@/showcase/data/registry"
|
|
16
16
|
|
|
@@ -72,7 +72,7 @@ export function WorkbenchSidebar({ selectedKey, onSelect }: WorkbenchSidebarProp
|
|
|
72
72
|
}),
|
|
73
73
|
]}
|
|
74
74
|
footerAccount={{
|
|
75
|
-
label: "tembro@6.0.
|
|
75
|
+
label: "tembro@6.0.3",
|
|
76
76
|
description: `${moduleCount} registry components`,
|
|
77
77
|
}}
|
|
78
78
|
activeIndicator="bar"
|
|
@@ -80,3 +80,4 @@ export function WorkbenchSidebar({ selectedKey, onSelect }: WorkbenchSidebarProp
|
|
|
80
80
|
</aside>
|
|
81
81
|
)
|
|
82
82
|
}
|
|
83
|
+
|
package/packages/cli/vendor/templates/showcase/src/showcase/sections/ComponentLivePreview.tsx
CHANGED
|
@@ -39,7 +39,7 @@ import { Switch } from "@/components/ui/switch"
|
|
|
39
39
|
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"
|
|
40
40
|
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"
|
|
41
41
|
import { Textarea } from "@/components/ui/textarea"
|
|
42
|
-
import { Sidebar } from "@/components/layout/
|
|
42
|
+
import { Sidebar } from "@/components/layout/sidebar"
|
|
43
43
|
import type { RegistryComponent, RegistryGroup } from "@/showcase/data/registry"
|
|
44
44
|
import { CalendarSection } from "@/showcase/sections/CalendarSection"
|
|
45
45
|
import { CoreUiSection } from "@/showcase/sections/CoreUiSection"
|