tembro 4.0.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/components/charts/charts.d.ts +16 -5
  3. package/dist/components/display/chat.cjs +1 -0
  4. package/dist/components/display/chat.d.ts +94 -0
  5. package/dist/components/display/chat.js +1 -0
  6. package/dist/components/display/index.d.ts +1 -0
  7. package/dist/components/display/kanban.d.ts +33 -1
  8. package/dist/components/layout/sidebar.d.ts +24 -2
  9. package/dist/components/modern/rich-text-editor.d.ts +13 -1
  10. package/dist/components/theme-provider.d.ts +19 -6
  11. package/dist/components/ui/badge/index.d.ts +8 -2
  12. package/dist/src/components/charts/charts.cjs +1 -1
  13. package/dist/src/components/charts/charts.js +343 -252
  14. package/dist/src/components/display/activity-feed.cjs +1 -1
  15. package/dist/src/components/display/activity-feed.js +4 -1
  16. package/dist/src/components/display/chat.cjs +1 -0
  17. package/dist/src/components/display/chat.js +372 -0
  18. package/dist/src/components/display/index.cjs +1 -1
  19. package/dist/src/components/display/index.js +17 -16
  20. package/dist/src/components/display/kanban.cjs +1 -1
  21. package/dist/src/components/display/kanban.js +321 -176
  22. package/dist/src/components/display/timeline.cjs +1 -1
  23. package/dist/src/components/display/timeline.js +5 -5
  24. package/dist/src/components/inputs/tag-input.cjs +1 -1
  25. package/dist/src/components/inputs/tag-input.js +6 -2
  26. package/dist/src/components/layout/index.cjs +1 -1
  27. package/dist/src/components/layout/index.js +4 -4
  28. package/dist/src/components/layout/public.cjs +1 -1
  29. package/dist/src/components/layout/public.js +4 -4
  30. package/dist/src/components/layout/sidebar.cjs +1 -1
  31. package/dist/src/components/layout/sidebar.js +326 -228
  32. package/dist/src/components/layout/workspace-layout.cjs +1 -1
  33. package/dist/src/components/layout/workspace-layout.js +3 -3
  34. package/dist/src/components/modern/rich-text-editor.cjs +1 -1
  35. package/dist/src/components/modern/rich-text-editor.js +216 -89
  36. package/dist/src/components/theme-provider.cjs +1 -1
  37. package/dist/src/components/theme-provider.js +58 -36
  38. package/dist/src/components/ui/badge/index.cjs +1 -1
  39. package/dist/src/components/ui/badge/index.js +59 -47
  40. package/dist/src/components/ui/input/clearable.cjs +1 -1
  41. package/dist/src/components/ui/input/clearable.js +5 -2
  42. package/dist/src/components/ui/input/primitive.cjs +1 -1
  43. package/dist/src/components/ui/input/primitive.js +1 -1
  44. package/dist/src/index.cjs +1 -1
  45. package/dist/src/index.js +87 -86
  46. package/dist/src/public-component-surface.cjs +1 -1
  47. package/dist/src/public-component-surface.js +5 -0
  48. package/package.json +1 -1
  49. package/packages/cli/dist/index.cjs +3 -3
  50. package/packages/cli/vendor/src/components/charts/charts.tsx +55 -15
  51. package/packages/cli/vendor/src/components/display/activity-feed.tsx +1 -1
  52. package/packages/cli/vendor/src/components/display/chat.tsx +237 -0
  53. package/packages/cli/vendor/src/components/display/index.ts +1 -0
  54. package/packages/cli/vendor/src/components/display/kanban.tsx +219 -72
  55. package/packages/cli/vendor/src/components/display/timeline.tsx +10 -10
  56. package/packages/cli/vendor/src/components/inputs/tag-input.tsx +3 -2
  57. package/packages/cli/vendor/src/components/layout/sidebar.tsx +212 -51
  58. package/packages/cli/vendor/src/components/layout/workspace-layout.tsx +3 -3
  59. package/packages/cli/vendor/src/components/modern/rich-text-editor.tsx +115 -32
  60. package/packages/cli/vendor/src/components/theme-provider.tsx +82 -36
  61. package/packages/cli/vendor/src/components/ui/badge/index.tsx +29 -8
  62. package/packages/cli/vendor/src/components/ui/input/clearable.tsx +2 -2
  63. package/packages/cli/vendor/src/components/ui/input/primitive.tsx +1 -1
  64. package/packages/cli/vendor/src/public-component-surface.ts +1 -0
  65. package/packages/cli/vendor/templates/showcase/src/showcase/layout/HeroSection.tsx +2 -2
  66. package/packages/cli/vendor/templates/showcase/src/showcase/layout/WorkbenchSidebar.tsx +1 -1
  67. package/packages/cli/vendor/templates/styles/globals.css +136 -33
  68. package/registry.json +3 -1
@@ -1977,7 +1977,7 @@ ${e}
1977
1977
  ${Ny}`;return `${t.trimEnd()}
1978
1978
 
1979
1979
  ${i}
1980
- `}function iP(t){return t.replaceAll("\\","/")}async function Mo({cwd:t,cssPath:e,componentsPath:r="src/components"}){let i=L__default.default.resolve(t,e),o=L__default.default.dirname(i),n=L__default.default.join(t,r,"**","*.{ts,tsx}"),s=iP(L__default.default.relative(o,n)),a=s.startsWith(".")?s:`./${s}`;await Wr.default.ensureDir(L__default.default.dirname(i));let c=Wr.default.existsSync(i)?await Wr.default.readFile(i,"utf8"):"",d=eP(c),l=tP(d,Fy(a)),u=rP(l);return await Wr.default.writeFile(i,u),i}var qy="tembro",oP="tembro";function re(t=""){return `npx ${oP} ${t}`.trim()}var ie=be(qe()),Hy=be(hs());var m=(t,e)=>({source:t,target:e}),R={utils:{name:"utils",category:"lib",dependencies:["clsx","tailwind-merge"],files:[m("src/lib/utils.ts","{utils}")]},button:{name:"button",category:"ui",dependencies:["@base-ui/react","class-variance-authority"],registryDependencies:["utils"],files:[m("src/components/ui/button","{ui}/button")]},input:{name:"input",category:"ui",dependencies:["@base-ui/react","lucide-react"],registryDependencies:["utils"],files:[m("src/components/ui/input","{ui}/input")]},textarea:{name:"textarea",category:"ui",registryDependencies:["utils"],files:[m("src/components/ui/textarea","{ui}/textarea")]},checkbox:{name:"checkbox",category:"ui",dependencies:["lucide-react"],registryDependencies:["utils"],files:[m("src/components/ui/checkbox","{ui}/checkbox")]},switch:{name:"switch",category:"ui",registryDependencies:["utils"],files:[m("src/components/ui/switch","{ui}/switch")]},badge:{name:"badge",category:"ui",dependencies:["@base-ui/react","class-variance-authority"],registryDependencies:["utils"],files:[m("src/components/ui/badge","{ui}/badge")]},card:{name:"card",category:"ui",dependencies:["class-variance-authority"],registryDependencies:["utils"],files:[m("src/components/ui/card","{ui}/card")]},skeleton:{name:"skeleton",category:"ui",registryDependencies:["utils"],files:[m("src/components/ui/skeleton","{ui}/skeleton")]},tabs:{name:"tabs",category:"ui",dependencies:["@base-ui/react"],registryDependencies:["utils"],files:[m("src/components/ui/tabs","{ui}/tabs")]},dialog:{name:"dialog",category:"ui",dependencies:["@base-ui/react","lucide-react"],registryDependencies:["button","utils"],files:[m("src/components/ui/dialog","{ui}/dialog")]},"dropdown-menu":{name:"dropdown-menu",category:"ui",dependencies:["@base-ui/react","lucide-react"],registryDependencies:["utils"],files:[m("src/components/ui/dropdown-menu","{ui}/dropdown-menu")]},popover:{name:"popover",category:"ui",dependencies:["@base-ui/react"],registryDependencies:["utils"],files:[m("src/components/ui/popover","{ui}/popover")]},tooltip:{name:"tooltip",category:"ui",registryDependencies:["utils"],files:[m("src/components/ui/tooltip","{ui}/tooltip")]},"hover-card":{name:"hover-card",category:"ui",migrationAliasFor:"popover"},"simple-select":{name:"simple-select",category:"ui",migrationAliasFor:"select"},combobox:{name:"combobox",category:"ui",migrationAliasFor:"select"},select:{name:"select",category:"ui",dependencies:["@base-ui/react","lucide-react"],registryDependencies:["utils"],files:[m("src/components/ui/select","{ui}/select")]},table:{name:"table",category:"ui",registryDependencies:["utils"],files:[m("src/components/ui/table","{ui}/table")]},"segmented-control":{name:"segmented-control",category:"ui",registryDependencies:["utils"],files:[m("src/components/ui/segmented-control","{ui}/segmented-control")]},"radio-group":{name:"radio-group",category:"ui",registryDependencies:["button","utils"],files:[m("src/components/ui/radio-group","{ui}/radio-group")]},accordion:{name:"accordion",category:"ui",dependencies:["lucide-react"],registryDependencies:["collapse"],files:[m("src/components/ui/accordion","{ui}/accordion")]},kbd:{name:"kbd",category:"ui",files:[m("src/components/ui/kbd","{ui}/kbd")]},"scroll-box":{name:"scroll-box",category:"ui",files:[m("src/components/ui/scroll-box","{ui}/scroll-box")]},"right-click-menu":{name:"right-click-menu",category:"ui",dependencies:["react"],files:[m("src/components/ui/right-click-menu","{ui}/right-click-menu")]},"tag-input":{name:"tag-input",category:"inputs",dependencies:["lucide-react"],registryDependencies:["badge","input","utils"],files:[m("src/components/inputs/tag-input.tsx","{components}/inputs/tag-input.tsx")]},"async-select":{name:"async-select",category:"inputs",dependencies:["lucide-react"],registryDependencies:["button","input","popover","utils"],files:[m("src/components/inputs/async-select.tsx","{components}/inputs/async-select.tsx")]},"form-field-shell":{name:"form-field-shell",category:"form",registryDependencies:["utils"],files:[m("src/components/form/form-field-shell.tsx","{components}/form/form-field-shell.tsx")]},"form-input":{name:"form-input",category:"form",dependencies:["react-hook-form"],registryDependencies:["input","form-field-shell"],files:[m("src/components/form/form-input.tsx","{components}/form/form-input.tsx")]},"form-select":{name:"form-select",category:"form",dependencies:["react-hook-form"],registryDependencies:["select","async-select","form-field-shell"],files:[m("src/components/form/form-select.tsx","{components}/form/form-select.tsx")]},"form-textarea":{name:"form-textarea",category:"form",dependencies:["react-hook-form"],registryDependencies:["textarea","form-field-shell"],files:[m("src/components/form/form-textarea.tsx","{components}/form/form-textarea.tsx")]},"form-switch":{name:"form-switch",category:"form",dependencies:["react-hook-form"],registryDependencies:["switch","form-field-shell","utils"],files:[m("src/components/form/form-switch.tsx","{components}/form/form-switch.tsx")]},"form-date-range-input":{name:"form-date-range-input",category:"form",dependencies:["react-hook-form"],registryDependencies:["input","form-field-shell"],files:[m("src/components/form/form-date-range-input.tsx","{components}/form/form-date-range-input.tsx")]},"form-date-picker":{name:"form-date-picker",category:"form",dependencies:["react-hook-form"],registryDependencies:["date-picker","form-field-shell"],files:[m("src/components/form/form-date-picker.tsx","{components}/form/form-date-picker.tsx")]},"form-date-range-picker":{name:"form-date-range-picker",category:"form",dependencies:["react-hook-form"],registryDependencies:["date-range-picker","form-field-shell"],files:[m("src/components/form/form-date-range-picker.tsx","{components}/form/form-date-range-picker.tsx")]},form:{name:"form",category:"group",registryDependencies:["form-field-shell","form-input","form-select","form-textarea","form-switch","form-date-range-input","form-date-picker","form-date-range-picker"],files:[m("src/components/form/index.ts","{components}/form/index.ts")]},"dialog-actions":{name:"dialog-actions",category:"overlay",migrationAliasFor:"dialog"},"modal-shell":{name:"modal-shell",category:"overlay",migrationAliasFor:"dialog"},"confirm-dialog":{name:"confirm-dialog",category:"overlay",registryDependencies:["button","dialog"],files:[m("src/components/overlay/confirm-dialog.tsx","{components}/overlay/confirm-dialog.tsx")]},"alert-dialog":{name:"alert-dialog",category:"overlay",dependencies:["lucide-react"],registryDependencies:["dialog","button"],files:[m("src/components/overlay/alert-dialog.tsx","{components}/overlay/alert-dialog.tsx")]},drawer:{name:"drawer",category:"overlay",dependencies:["@base-ui/react"],registryDependencies:["dialog"],files:[m("src/components/overlay/drawer.tsx","{components}/overlay/drawer.tsx")]},"state-view":{name:"state-view",category:"feedback",dependencies:["lucide-react"],registryDependencies:["button","utils"],files:[m("src/components/feedback/state-view.tsx","{components}/feedback/state-view.tsx")]},"loading-state":{name:"loading-state",category:"feedback",registryDependencies:["state-view"],files:[m("src/components/feedback/loading-state.tsx","{components}/feedback/loading-state.tsx")]},"page-state":{name:"page-state",category:"feedback",registryDependencies:["state-view","utils"],files:[m("src/components/feedback/page-state.tsx","{components}/feedback/page-state.tsx")]},feedback:{name:"feedback",category:"group",registryDependencies:["alert","state-view"],files:[m("src/components/feedback/index.ts","{components}/feedback/index.ts")]},"sidebar-context":{name:"sidebar-context",category:"layout",dependencies:["lucide-react"],registryDependencies:["button"],files:[m("src/components/layout/sidebar-context.tsx","{components}/layout/sidebar-context.tsx")]},"workspace-layout":{name:"workspace-layout",category:"layout",registryDependencies:["utils"],files:[m("src/components/layout/workspace-layout.tsx","{components}/layout/workspace-layout.tsx"),m("src/components/layout/workspace-header.tsx","{components}/layout/workspace-header.tsx")]},sidebar:{name:"sidebar",category:"layout",dependencies:["react"],registryDependencies:["tooltip","sidebar-context","utils"],files:[m("src/components/layout/sidebar.tsx","{components}/layout/sidebar.tsx")]},layout:{name:"layout",category:"group",registryDependencies:["workspace-layout","sidebar","breadcrumbs","section"],files:[m("src/components/layout/index.ts","{components}/layout/index.ts")]},calendar:{name:"calendar",category:"calendar",dependencies:["lucide-react"],registryDependencies:["button","utils"],files:[m("src/components/calendar/calendar.tsx","{components}/calendar/calendar.tsx"),m("src/components/calendar/date-utils.ts","{components}/calendar/date-utils.ts")]},"date-picker":{name:"date-picker",category:"calendar",dependencies:["lucide-react"],registryDependencies:["calendar","button","popover","utils"],files:[m("src/components/calendar/date-picker.tsx","{components}/calendar/date-picker.tsx")]},"date-range-picker":{name:"date-range-picker",category:"calendar",dependencies:["lucide-react"],registryDependencies:["calendar","button","popover","utils"],files:[m("src/components/calendar/date-range-picker.tsx","{components}/calendar/date-range-picker.tsx")]},dashboard:{name:"dashboard",category:"group",registryDependencies:["layout","feedback","input","async-select","tag-input","form"]},"calendar-kit":{name:"calendar-kit",category:"group",registryDependencies:["calendar","date-picker","date-range-picker"]},"wizard-kit":{name:"wizard-kit",category:"group",registryDependencies:["stepper","wizard"]},dnd:{name:"dnd",category:"group",registryDependencies:["sortable-list"],files:[m("src/components/dnd/index.ts","{components}/dnd/index.ts")]},all:{name:"all",category:"group",registryDependencies:["dashboard"]}},nP=[{name:"action-menu",category:"actions",files:[m("src/components/actions/action-menu.tsx","{components}/actions/action-menu.tsx")]},{name:"activity-feed",category:"display",files:[m("src/components/display/activity-feed.tsx","{components}/display/activity-feed.tsx")]},{name:"alert",category:"feedback",files:[m("src/components/feedback/alert.tsx","{components}/feedback/alert.tsx")]},{name:"app-header",category:"layout",migrationAliasFor:"workspace-layout"},{name:"avatar",category:"display",files:[m("src/components/display/avatar.tsx","{components}/display/avatar.tsx")]},{name:"breadcrumbs",category:"layout",files:[m("src/components/layout/breadcrumbs.tsx","{components}/layout/breadcrumbs.tsx")]},{name:"button-group",category:"actions",files:[m("src/components/actions/button-group.tsx","{components}/actions/button-group.tsx")]},{name:"code-block",category:"display",files:[m("src/components/display/code-block.tsx","{components}/display/code-block.tsx")]},{name:"collapse",category:"ui",files:[m("src/components/ui/collapse","{ui}/collapse")]},{name:"carousel",category:"display",files:[m("src/components/display/carousel.tsx","{components}/display/carousel.tsx")]},{name:"tag",category:"display",registryDependencies:["badge","utils"],files:[m("src/components/display/tag.tsx","{components}/display/tag.tsx")]},{name:"typography",category:"display",registryDependencies:["utils"],files:[m("src/components/display/typography.tsx","{components}/display/typography.tsx")]},{name:"command",category:"ui",files:[m("src/components/ui/command","{ui}/command")]},{name:"copy-button",category:"actions",files:[m("src/components/actions/copy-button.tsx","{components}/actions/copy-button.tsx")]},{name:"copy-field",category:"actions",migrationAliasFor:"copy-button"},{name:"clearable-input",category:"inputs",migrationAliasFor:"input"},{name:"search-input",category:"inputs",migrationAliasFor:"input"},{name:"password-input",category:"inputs",migrationAliasFor:"input"},{name:"number-input",category:"inputs",migrationAliasFor:"input"},{name:"money-input",category:"inputs",migrationAliasFor:"input"},{name:"phone-input",category:"inputs",migrationAliasFor:"input"},{name:"masked-input",category:"inputs",migrationAliasFor:"input"},{name:"quantity-input",category:"inputs",migrationAliasFor:"input"},{name:"date-input",category:"inputs",migrationAliasFor:"input"},{name:"date-range-input",category:"inputs",migrationAliasFor:"input"},{name:"form-async-select",category:"form",migrationAliasFor:"form-select"},{name:"input-decorator",category:"inputs",migrationAliasFor:"input"},{name:"input-value",category:"inputs",migrationAliasFor:"input"},{name:"inputs",category:"group",migrationAliasFor:"input"},{name:"app-sidebar",category:"layout",migrationAliasFor:"sidebar"},{name:"page-header",category:"layout",migrationAliasFor:"section"},{name:"page-container",category:"layout",migrationAliasFor:"sidebar"},{name:"section-header",category:"layout",migrationAliasFor:"section"},{name:"sidebar-nav",category:"layout",migrationAliasFor:"sidebar"},{name:"stat-card",category:"layout",migrationAliasFor:"statistic"},{name:"sticky-footer-bar",category:"layout",migrationAliasFor:"sidebar"},{name:"smart-card",category:"display",migrationAliasFor:"info-card"},{name:"file-dropzone",category:"upload",migrationAliasFor:"file-upload"},{name:"comparison-card",category:"display",migrationAliasFor:"card"},{name:"delta-badge",category:"display",migrationAliasFor:"badge"},{name:"trend-card",category:"display",migrationAliasFor:"statistic"},{name:"user-card",category:"display",migrationAliasFor:"avatar"},{name:"sheet-shell",category:"overlay",migrationAliasFor:"drawer"},{name:"nav-tabs",category:"navigation",migrationAliasFor:"tabs"},{name:"page-tabs",category:"navigation",migrationAliasFor:"tabs"},{name:"stepper-tabs",category:"navigation",migrationAliasFor:"stepper"},{name:"command-bar",category:"navigation",migrationAliasFor:"command-palette"},{name:"data-list",category:"display",migrationAliasFor:"list"},{name:"property-grid",category:"display",migrationAliasFor:"description-list"},{name:"result",category:"display",migrationAliasFor:"page-state"},{name:"data-table-bulk-actions",category:"data-table",migrationAliasFor:"data-table"},{name:"data-table-column-visibility-menu",category:"data-table",migrationAliasFor:"data-table"},{name:"data-table-pagination",category:"data-table",migrationAliasFor:"data-table"},{name:"data-table-row-actions",category:"data-table",migrationAliasFor:"data-table"},{name:"data-table-saved-filters",category:"data-table",migrationAliasFor:"data-table"},{name:"data-table-select-column",category:"data-table",migrationAliasFor:"data-table"},{name:"data-table-sortable-header",category:"data-table",migrationAliasFor:"data-table"},{name:"data-table-toolbar",category:"data-table",migrationAliasFor:"data-table"},{name:"data-table-view-presets",category:"data-table",migrationAliasFor:"data-table"},{name:"data-state",category:"display",registryDependencies:["state-view"],files:[m("src/components/display/data-state.tsx","{components}/display/data-state.tsx")]},{name:"data-table",category:"data-table",dependencies:["@tanstack/react-table","@tanstack/react-virtual","lucide-react"],registryDependencies:["button","checkbox","data-state","dropdown-menu","input","pagination","search-input","select","table","utils"],files:[m("src/components/data-table/data-table.tsx","{components}/data-table/data-table.tsx"),m("src/components/data-table/data-table-actions-column.tsx","{components}/data-table/data-table-actions-column.tsx"),m("src/components/data-table/data-table-bulk-actions.tsx","{components}/data-table/data-table-bulk-actions.tsx"),m("src/components/data-table/data-table-column-visibility-menu.tsx","{components}/data-table/data-table-column-visibility-menu.tsx"),m("src/components/data-table/data-table-pagination.tsx","{components}/data-table/data-table-pagination.tsx"),m("src/components/data-table/data-table-row-actions.tsx","{components}/data-table/data-table-row-actions.tsx"),m("src/components/data-table/data-table-saved-filters.tsx","{components}/data-table/data-table-saved-filters.tsx"),m("src/components/data-table/data-table-select-column.tsx","{components}/data-table/data-table-select-column.tsx"),m("src/components/data-table/data-table-sortable-header.tsx","{components}/data-table/data-table-sortable-header.tsx"),m("src/components/data-table/data-table-toolbar.tsx","{components}/data-table/data-table-toolbar.tsx"),m("src/components/data-table/data-table-view-presets.tsx","{components}/data-table/data-table-view-presets.tsx"),m("src/components/data-table/table-export-menu.tsx","{components}/data-table/table-export-menu.tsx"),m("src/components/data-table/table-import-button.tsx","{components}/data-table/table-import-button.tsx")]},{name:"data-table-actions-column",category:"data-table",migrationAliasFor:"data-table"},{name:"table-export-menu",category:"data-table",migrationAliasFor:"data-table"},{name:"table-import-button",category:"data-table",migrationAliasFor:"data-table"},{name:"description-list",category:"display",files:[m("src/components/display/description-list.tsx","{components}/display/description-list.tsx")]},{name:"divider",category:"ui",files:[m("src/components/ui/divider","{ui}/divider")]},{name:"file-upload",category:"upload",files:[m("src/components/upload/file-upload.tsx","{components}/upload/file-upload.tsx")]},{name:"filter-bar",category:"filters",files:[m("src/components/filters/filter-bar.tsx","{components}/filters/filter-bar.tsx")]},{name:"bulk-action-bar",category:"patterns",registryDependencies:["button","utils"],files:[m("src/components/patterns/bulk-action-bar.tsx","{components}/patterns/bulk-action-bar.tsx")]},{name:"data-view",category:"patterns",registryDependencies:["data-table","empty-state","page-toolbar","utils"],files:[m("src/components/patterns/data-view.tsx","{components}/patterns/data-view.tsx")]},{name:"detail-layout",category:"patterns",registryDependencies:["utils"],files:[m("src/components/patterns/detail-layout.tsx","{components}/patterns/detail-layout.tsx")]},{name:"empty-state",category:"patterns",registryDependencies:["state-view","button"],files:[m("src/components/patterns/empty-state.tsx","{components}/patterns/empty-state.tsx")]},{name:"form-builder",category:"patterns",dependencies:["react-hook-form"],registryDependencies:["button","form-input","form-select","form-textarea","form-switch","form-date-range-input","utils"],files:[m("src/components/patterns/form-builder.tsx","{components}/patterns/form-builder.tsx")]},{name:"charts",category:"charts",dependencies:["recharts"],registryDependencies:["card","state-view","utils"],files:[m("src/components/charts/charts.tsx","{components}/charts/charts.tsx"),m("src/components/charts/index.ts","{components}/charts/index.ts")]},{name:"horizontal-bar-chart",category:"charts",migrationAliasFor:"data-view"},{name:"image-upload",category:"upload",files:[m("src/components/upload/image-upload.tsx","{components}/upload/image-upload.tsx")]},{name:"kanban",category:"display",dependencies:["@dnd-kit/helpers","@dnd-kit/react","lucide-react"],registryDependencies:["card","utils"],files:[m("src/components/display/kanban.tsx","{components}/display/kanban.tsx")]},{name:"kpi",category:"charts",migrationAliasFor:"statistic"},{name:"list",category:"display",files:[m("src/components/display/list.tsx","{components}/display/list.tsx")]},{name:"otp-input",category:"inputs",files:[m("src/components/inputs/otp-input.tsx","{components}/inputs/otp-input.tsx")]},{name:"color-picker",category:"inputs",registryDependencies:["utils"],files:[m("src/components/inputs/color-picker.tsx","{components}/inputs/color-picker.tsx")]},{name:"signature-pad",category:"inputs",dependencies:["lucide-react"],registryDependencies:["utils"],files:[m("src/components/inputs/signature-pad.tsx","{components}/inputs/signature-pad.tsx")]},{name:"pagination",category:"navigation",files:[m("src/components/navigation/pagination.tsx","{components}/navigation/pagination.tsx")]},{name:"progress",category:"display",files:[m("src/components/display/progress.tsx","{components}/display/progress.tsx")]},{name:"progress-ring",category:"charts",migrationAliasFor:"progress-circle"},{name:"progress-circle",category:"charts",files:[m("src/components/charts/progress-circle.tsx","{components}/charts/progress-circle.tsx"),m("src/components/charts/progress-ring.tsx","{components}/charts/progress-ring.tsx")]},{name:"quick-action-grid",category:"actions",files:[m("src/components/actions/quick-action-grid.tsx","{components}/actions/quick-action-grid.tsx")]},{name:"rating",category:"inputs",files:[m("src/components/inputs/rating.tsx","{components}/inputs/rating.tsx")]},{name:"resource-detail-page",category:"patterns",files:[m("src/components/patterns/resource-detail-page.tsx","{components}/patterns/resource-detail-page.tsx")]},{name:"resource-page",category:"patterns",registryDependencies:["data-table","utils"],files:[m("src/components/patterns/resource-page.tsx","{components}/patterns/resource-page.tsx")]},{name:"page-toolbar",category:"patterns",registryDependencies:["utils"],files:[m("src/components/patterns/page-toolbar.tsx","{components}/patterns/page-toolbar.tsx")]},{name:"settings-page",category:"patterns",registryDependencies:["tabs","utils"],files:[m("src/components/patterns/settings-page.tsx","{components}/patterns/settings-page.tsx")]},{name:"section",category:"layout",files:[m("src/components/layout/section.tsx","{components}/layout/section.tsx")]},{name:"slider",category:"inputs",files:[m("src/components/inputs/slider.tsx","{components}/inputs/slider.tsx")]},{name:"info-card",category:"display",registryDependencies:["card","skeleton","utils"],files:[m("src/components/display/info-card.tsx","{components}/display/info-card.tsx")]},{name:"spinner",category:"ui",files:[m("src/components/ui/spinner","{ui}/spinner")]},{name:"statistic",category:"display",files:[m("src/components/display/statistic.tsx","{components}/display/statistic.tsx")]},{name:"status-dot",category:"display",files:[m("src/components/display/status-dot.tsx","{components}/display/status-dot.tsx")]},{name:"status-legend",category:"display",registryDependencies:["badge","status-dot","card","utils"],files:[m("src/components/display/status-legend.tsx","{components}/display/status-legend.tsx")]},{name:"stepper",category:"wizard",files:[m("src/components/wizard/stepper.tsx","{components}/wizard/stepper.tsx")]},{name:"timeline",category:"display",files:[m("src/components/display/timeline.tsx","{components}/display/timeline.tsx")]},{name:"toast",category:"notifications",files:[m("src/components/notifications/toast.tsx","{components}/notifications/toast.tsx")]},{name:"tree-view",category:"display",files:[m("src/components/display/tree-view.tsx","{components}/display/tree-view.tsx")]},{name:"use-before-unload-when-dirty",category:"hooks",files:[m("src/hooks/use-before-unload-when-dirty.ts","{hooks}/use-before-unload-when-dirty.ts")]},{name:"use-data-table-view-state",category:"hooks",files:[m("src/hooks/use-data-table-view-state.ts","{hooks}/use-data-table-view-state.ts")]},{name:"use-debounce",category:"hooks",files:[m("src/hooks/use-debounce.ts","{hooks}/use-debounce.ts")]},{name:"use-disclosure",category:"hooks",files:[m("src/hooks/use-disclosure.ts","{hooks}/use-disclosure.ts")]},{name:"use-is-mobile",category:"hooks",files:[m("src/hooks/use-is-mobile.ts","{hooks}/use-is-mobile.ts")]},{name:"use-session-storage-state",category:"hooks",files:[m("src/hooks/use-session-storage-state.ts","{hooks}/use-session-storage-state.ts")]},{name:"wizard",category:"wizard",files:[m("src/components/wizard/wizard.tsx","{components}/wizard/wizard.tsx")]},{name:"inline-editable",category:"inputs",files:[m("src/components/inputs/inline-editable.tsx","{components}/inputs/inline-editable.tsx")]},{name:"command-palette",category:"command",dependencies:["cmdk","lucide-react"],registryDependencies:["button","dialog","input","kbd","utils"],files:[m("src/components/command/command-palette.tsx","{components}/command/command-palette.tsx")]},{name:"saved-filter-select",category:"filters",files:[m("src/components/filters/saved-filter-select.tsx","{components}/filters/saved-filter-select.tsx")]},{name:"notification-center",category:"notifications",files:[m("src/components/notifications/notification-center.tsx","{components}/notifications/notification-center.tsx")]},{name:"calendar-scheduler",category:"modern",registryDependencies:["utils"],files:[m("src/components/modern/calendar-scheduler.tsx","{components}/modern/calendar-scheduler.tsx")]},{name:"dual-list-picker",category:"modern",registryDependencies:["utils"],files:[m("src/components/modern/dual-list-picker.tsx","{components}/modern/dual-list-picker.tsx")]},{name:"resizable-panel",category:"modern",dependencies:["lucide-react"],registryDependencies:["utils"],files:[m("src/components/modern/resizable-panel.tsx","{components}/modern/resizable-panel.tsx")]},{name:"rich-text-editor",category:"modern",dependencies:["@tiptap/react","@tiptap/pm","@tiptap/starter-kit","@tiptap/extension-link","@tiptap/extension-placeholder","lucide-react"],registryDependencies:["utils"],files:[m("src/components/modern/rich-text-editor.tsx","{components}/modern/rich-text-editor.tsx")]},{name:"image-cropper",category:"modern",dependencies:["react-easy-crop","lucide-react"],registryDependencies:["utils"],files:[m("src/components/modern/image-cropper.tsx","{components}/modern/image-cropper.tsx")]},{name:"qr-code",category:"display",dependencies:["qrcode","@types/qrcode"],registryDependencies:["utils"],files:[m("src/components/display/qr-code.tsx","{components}/display/qr-code.tsx")]},{name:"json-input",category:"inputs",registryDependencies:["utils"],files:[m("src/components/inputs/json-input.tsx","{components}/inputs/json-input.tsx")]},{name:"time-picker",category:"inputs",registryDependencies:["utils"],files:[m("src/components/inputs/time-picker.tsx","{components}/inputs/time-picker.tsx")]},{name:"sortable-list",category:"dnd",dependencies:["@dnd-kit/helpers","@dnd-kit/react","lucide-react"],registryDependencies:["utils"],files:[m("src/components/dnd/sortable-list.tsx","{components}/dnd/sortable-list.tsx")]},{name:"virtual-list",category:"display",dependencies:["@tanstack/react-virtual"],registryDependencies:["utils"],files:[m("src/components/display/virtual-list.tsx","{components}/display/virtual-list.tsx")]}];for(let t of nP)R[t.name]??=t;function Va(){return Object.values(R).filter(t=>t.name!=="all").filter(t=>t.category!=="group"&&t.category!=="lib").filter(t=>!t.migrationAliasFor).filter(t=>(t.files?.length??0)>0).map(t=>t.name)}R.all.registryDependencies=Va();var At=Object.keys(R);var Fo=be(qe());function Ly(t){let e=L__default.default.dirname(url.fileURLToPath(t)),r=L__default.default.resolve(e,"../vendor");if(Fo.default.existsSync(L__default.default.join(r,"src")))return r;let i=[L__default.default.resolve(e,"../.."),L__default.default.resolve(e,".."),process.cwd()];for(let o of i){let n=L__default.default.join(o,"package.json");if(Fo.default.existsSync(n))try{if(Fo.default.readJsonSync(n).name===qy)return o}catch{}}return L__default.default.resolve(e,"../..")}var Pt=be(qe());function aP(t){if(t.paths?.components)return t.paths.components;let e=t.componentsPath??"src/components/ui";return e.endsWith("/ui")||e.endsWith("\\ui")?L__default.default.dirname(e):e}function Wa(t,e){let r=e.replaceAll("\\","/").replace(/\/$/,"");return r==="src"?t:r.startsWith("src/")?`${t}/${r.slice(4)}`:`${t}/${r}`}function cP(t,e){let r=e.alias??"@",i=Wa(r,aP(e)),o=Wa(r,e.paths?.hooks??"src/hooks"),n=Wa(r,e.paths?.lib??L__default.default.dirname(e.utilsPath??"src/lib/utils.ts"));return t.replaceAll("@/components/",`${i}/`).replaceAll("@/hooks/",`${o}/`).replaceAll("@/lib/",`${n}/`).replaceAll("@/",`${r}/`)}async function By({cwd:t,config:e,packageRoot:r,overwrite:i,dryRun:o}){let n=L__default.default.join(r,"templates","showcase","src");if(!Pt.default.existsSync(n))throw new Error(`Showcase template topilmadi: ${L__default.default.relative(t,n)}`);let s=[];async function a(u){let h=await Pt.default.readdir(u,{withFileTypes:true});for(let p of h){let f=L__default.default.join(u,p.name);p.isDirectory()?await a(f):s.push(f);}}await a(n);let c=0,d=0,l=0;for(let u of s){let h=L__default.default.relative(n,u),p=L__default.default.join(t,"src",h),f=L__default.default.relative(t,p),b=Pt.default.existsSync(p);if(o){x.info(`[dry-run:${b?"conflict":"add"}] showcase/${h} -> ${f}`);continue}if(b&&!i){l+=1,x.warn(`${f} allaqachon mavjud. O\u2018tkazib yuborildi. Yangilash uchun --overwrite ishlating.`);continue}await Pt.default.ensureDir(L__default.default.dirname(p));let y=await Pt.default.readFile(u,"utf8");await Pt.default.writeFile(p,cP(y,e)),b?(d+=1,x.success(`${f} yangilandi.`)):(c+=1,x.success(`${f} qo\u2018shildi.`));}return o?x.info("Showcase dry run tugadi. Hech qanday fayl o\u2018zgartirilmadi."):x.success(`Showcase tayyor: ${c} ta qo\u2018shildi, ${d} ta yangilandi, ${l} ta saqlandi.`),{addedFiles:c,overwrittenFiles:d,skippedFiles:l}}function lP(t){return t in R}function dP(t){let e=t.toLowerCase();return At.filter(r=>!R[r].migrationAliasFor).map(r=>{let i=r.toLowerCase(),o=0;i.startsWith(e)&&(o+=40),i.includes(e)&&(o+=25);for(let n of e.split(/[-_\s]+/).filter(Boolean))i.includes(n)&&(o+=8);return {name:r,score:o}}).filter(r=>r.score>0).sort((r,i)=>i.score-r.score||r.name.localeCompare(i.name)).slice(0,5).map(r=>r.name)}function uP(t){let e=new Set,r=t;for(;R[r].migrationAliasFor;){if(e.has(r))throw new Error(`Registry migration alias cycle detected at ${r}`);e.add(r),r=R[r].migrationAliasFor;}return r}function Yy(t){if(t.paths?.components)return t.paths.components;let e=t.componentsPath??"src/components/ui";return e.endsWith("/ui")||e.endsWith("\\ui")?L__default.default.dirname(e):e}function Uy(t,e){let r=Yy(e),i=e.paths?.ui??e.componentsPath??L__default.default.join(r,"ui"),o=e.paths?.hooks??"src/hooks",n=e.paths?.lib??L__default.default.dirname(e.utilsPath??"src/lib/utils.ts"),s=e.utilsPath??L__default.default.join(n,"utils.ts");return t.replaceAll("{components}",r).replaceAll("{ui}",i).replaceAll("{hooks}",o).replaceAll("{lib}",n).replaceAll("{utils}",s)}function hP(t,e="@"){return e==="@"?t:t.replaceAll("@/",`${e}/`)}function zy(t,e){let r=t.replaceAll("\\","/");if(r==="src/lib/utils.ts")return e.utilsPath??"src/lib/utils.ts";if(r.startsWith("src/lib/")){let i=e.paths?.lib??L__default.default.dirname(e.utilsPath??"src/lib/utils.ts");return L__default.default.join(i,r.replace("src/lib/",""))}if(r.startsWith("src/hooks/"))return L__default.default.join(e.paths?.hooks??"src/hooks",r.replace("src/hooks/",""));if(r.startsWith("src/components/ui/")){let i=e.paths?.ui??e.componentsPath??"src/components/ui";return L__default.default.join(i,r.replace("src/components/ui/",""))}if(r.startsWith("src/components/")){let i=Yy(e);return L__default.default.join(i,r.replace("src/components/",""))}}function pP(t,e){if(t==="@/lib/utils")return "src/lib/utils.ts";if(t.startsWith("@/lib/"))return `src/lib/${t.replace("@/lib/","")}`;if(t.startsWith("@/components/"))return `src/components/${t.replace("@/components/","")}`;if(t.startsWith("@/hooks/"))return `src/hooks/${t.replace("@/hooks/","")}`;if(e&&t.startsWith("."))return L__default.default.posix.normalize(L__default.default.posix.join(L__default.default.posix.dirname(e),t))}function Gy(t){return [L__default.default.join(t,"index.tsx").replaceAll("\\","/"),L__default.default.join(t,"index.ts").replaceAll("\\","/"),`${t}.tsx`,`${t}.ts`]}function Vy(t,e){let r=new Set,i=/(?:import|export)\s+(?:type\s+)?(?:[^"']*?\s+from\s+)?["']([^"']+)["']|import\s*\(\s*["']([^"']+)["']\s*\)/g,o;for(;o=i.exec(t);){let n=o[1]??o[2],s=pP(n,e);s&&r.add(s);}return [...r]}var mP=new Set(["react","react-dom","node:path","node:fs","node:fs/promises"]);function Wy(t){let e=new Set,r=/(?:import|export)\s+(?:type\s+)?(?:[^"']*?\s+from\s+)?["']([^"']+)["']|import\s*\(\s*["']([^"']+)["']\s*\)/g,i;for(;i=r.exec(t);){let o=i[1]??i[2];if(!(!o||o.startsWith(".")||o.startsWith("@/")||mP.has(o))){if(o.startsWith("@")){let[n,s]=o.split("/");n&&s&&e.add(`${n}/${s}`);continue}e.add(o.split("/")[0]);}}return [...e]}function fP(t){let e=[],r=new Set;function i(o){if(r.has(o))return;let n=R[o];n.registryDependencies?.forEach(i),r.add(o),e.push(n);}return t.forEach(i),e}function gP(){return At.filter(t=>R[t].category!=="lib"&&!R[t].migrationAliasFor).sort().join(", ")}async function Dt(t,e={}){let r=process.cwd(),i=L__default.default.join(r,"tembro.json");ie.default.existsSync(i)||(x.error("tembro.json topilmadi. Avval init qiling:"),x.info(re("init")),process.exit(1)),t.length||(x.error("Component nomini kiriting:"),x.info(re("add data-table async-select input")),x.info(`Mavjud componentlar: ${gP()}`),process.exit(1));let o=t.includes("showcase")?t.flatMap(O=>O==="showcase"?Va():O):t,n=[];for(let O of o){if(!lP(O)){let q=dP(O);x.warn(`${O} registry ichida mavjud emas.`),q.length&&x.info(`Yaqin nomlar: ${q.join(", ")}`),x.info(`Barcha componentlar: ${re("list")}`);continue}let D=uP(O);D!==O&&x.warn(`${O} deprecated. ${D} ishlatiladi.`),n.includes(D)||n.push(D);}n.length||(x.error("Qo\u2018shish uchun valid component topilmadi."),process.exit(1));let s=await ie.default.readJson(i),a=Ly((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href))),c=ki(r),d=fP(n),l=new Set,u=new Set,h=e.overwrite===true?true:void 0,p=0,f=0,b=0,y=t.includes("showcase");async function w(){let O=new Set,D=[];async function q(v,E){let k=v.replaceAll("\\","/");if(O.has(k))return;let B=L__default.default.join(a,k);if(!ie.default.existsSync(B)){D.push({source:k,target:null,exists:false,operation:"unresolved"});return}if((await ie.default.stat(B)).isDirectory()){O.add(k);let V=await ie.default.readdir(B,{withFileTypes:true});for(let I of V){let Xa=L__default.default.posix.join(k,I.name),hw=E?L__default.default.posix.join(E.replaceAll("\\","/"),I.name):void 0;await q(Xa,hw);}return}O.add(k);let G=E?Uy(E,s):zy(k,s),j=await ie.default.readFile(B,"utf8");for(let V of Wy(j))l.add(V);for(let V of Vy(j,k))for(let I of Gy(V))if(ie.default.existsSync(L__default.default.join(a,I))){await q(I);break}if(!G){D.push({source:k,target:null,exists:false,operation:"unresolved"});return}let _=L__default.default.join(r,G),P=ie.default.existsSync(_);D.push({source:k,target:L__default.default.relative(r,_),exists:P,operation:P?e.overwrite?"overwrite":"skip":"add"});}for(let v of d){v.dependencies?.forEach(E=>l.add(E));for(let E of v.files??[])await q(E.source,E.target);}return {components:n,resolvedComponents:d.map(v=>v.name),dependencies:Array.from(l).sort(),files:D}}if(e.plan){let O=await w();console.log(JSON.stringify({...O,showcase:y},null,2));return}x.info(`Resolved: ${d.map(O=>O.name).join(", ")}`);async function S(O){return h!==void 0?h:!(process.stdin.isTTY&&process.stdout.isTTY&&!process.env.CI)?(h=false,x.warn("Mavjud fayllar o\u2018zgartirilmadi. Majburiy yozish uchun --overwrite ishlating."),false):(h=(await(0, Hy.default)({type:"confirm",name:"overwrite",message:`${O} allaqachon mavjud. Barcha conflict fayllarni overwrite qilasizmi?`,initial:false})).overwrite===true,h||x.info("Mavjud fayllar saqlanadi; faqat yetishmayotgan fayllar qo\u2018shiladi."),h)}async function C(O,D){let q=O.replaceAll("\\","/");if(u.has(q))return;let v=L__default.default.join(a,q);if(!ie.default.existsSync(v)){x.warn(`${q} topilmadi. O\u2018tkazib yuborildi.`);return}if((await ie.default.stat(v)).isDirectory()){u.add(q);let _=await ie.default.readdir(v,{withFileTypes:true});for(let P of _){let V=L__default.default.posix.join(q,P.name),I=D?L__default.default.posix.join(D.replaceAll("\\","/"),P.name):void 0;await C(V,I);}return}u.add(q);let k=D?Uy(D,s):zy(q,s);if(!k)return;let B=L__default.default.join(r,k),W=L__default.default.relative(r,B),G=ie.default.existsSync(B);if(e.dryRun){let _=G?"conflict":"add";x.info(`[dry-run:${_}] ${q} -> ${W}`);}else if(G&&!await S(W))b+=1,x.warn(`${W} allaqachon mavjud. O\u2018tkazib yuborildi.`);else {await ie.default.ensureDir(L__default.default.dirname(B));let _=await ie.default.readFile(v,"utf8");await ie.default.writeFile(B,hP(_,s.alias)),G?(f+=1,x.success(`${W} yangilandi.`)):(p+=1,x.success(`${W} qo\u2018shildi.`));}let j=await ie.default.readFile(v,"utf8");for(let _ of Wy(j))l.add(_);for(let _ of Vy(j,q))for(let P of Gy(_))if(ie.default.existsSync(L__default.default.join(a,P))){await C(P);break}}for(let O of d){O.dependencies?.forEach(D=>l.add(D));for(let D of O.files??[])await C(D.source,D.target);}let M=p+f;y&&await By({cwd:r,config:s,packageRoot:a,overwrite:e.overwrite,dryRun:e.dryRun});let Z=Array.from(l).sort();e.dryRun&&Z.length&&x.info(`[dry-run:dependencies] ${Z.join(", ")}`),!e.skipInstall&&l.size>0&&!e.dryRun&&M>0?await Gr({cwd:r,packageManager:c,packages:Z}):e.skipInstall&&Z.length&&M>0&&x.warn(`Dependency install skipped: ${Z.join(", ")}`),e.dryRun?x.info("Dry run tugadi. Hech qanday fayl o\u2018zgartirilmadi."):M===0?x.warn(`O\u2018zgarish yo\u2018q. ${b} ta mavjud fayl saqlandi.`):x.success(`Tayyor: ${p} ta qo\u2018shildi, ${f} ta yangilandi, ${b} ta saqlandi.`);}var bP=["@fontsource-variable/geist","clsx","tailwind-merge","tw-animate-css"],yP={vite:["tailwindcss","@tailwindcss/vite"],next:["tailwindcss","@tailwindcss/postcss"]},wP=`// Generated by tembro init.
1980
+ `}function iP(t){return t.replaceAll("\\","/")}async function Mo({cwd:t,cssPath:e,componentsPath:r="src/components"}){let i=L__default.default.resolve(t,e),o=L__default.default.dirname(i),n=L__default.default.join(t,r,"**","*.{ts,tsx}"),s=iP(L__default.default.relative(o,n)),a=s.startsWith(".")?s:`./${s}`;await Wr.default.ensureDir(L__default.default.dirname(i));let c=Wr.default.existsSync(i)?await Wr.default.readFile(i,"utf8"):"",d=eP(c),l=tP(d,Fy(a)),u=rP(l);return await Wr.default.writeFile(i,u),i}var qy="tembro",oP="tembro";function re(t=""){return `npx ${oP} ${t}`.trim()}var ie=be(qe()),Hy=be(hs());var m=(t,e)=>({source:t,target:e}),R={utils:{name:"utils",category:"lib",dependencies:["clsx","tailwind-merge"],files:[m("src/lib/utils.ts","{utils}")]},button:{name:"button",category:"ui",dependencies:["@base-ui/react","class-variance-authority"],registryDependencies:["utils"],files:[m("src/components/ui/button","{ui}/button")]},input:{name:"input",category:"ui",dependencies:["@base-ui/react","lucide-react"],registryDependencies:["utils"],files:[m("src/components/ui/input","{ui}/input")]},textarea:{name:"textarea",category:"ui",registryDependencies:["utils"],files:[m("src/components/ui/textarea","{ui}/textarea")]},checkbox:{name:"checkbox",category:"ui",dependencies:["lucide-react"],registryDependencies:["utils"],files:[m("src/components/ui/checkbox","{ui}/checkbox")]},switch:{name:"switch",category:"ui",registryDependencies:["utils"],files:[m("src/components/ui/switch","{ui}/switch")]},badge:{name:"badge",category:"ui",dependencies:["@base-ui/react","class-variance-authority"],registryDependencies:["utils"],files:[m("src/components/ui/badge","{ui}/badge")]},card:{name:"card",category:"ui",dependencies:["class-variance-authority"],registryDependencies:["utils"],files:[m("src/components/ui/card","{ui}/card")]},skeleton:{name:"skeleton",category:"ui",registryDependencies:["utils"],files:[m("src/components/ui/skeleton","{ui}/skeleton")]},tabs:{name:"tabs",category:"ui",dependencies:["@base-ui/react"],registryDependencies:["utils"],files:[m("src/components/ui/tabs","{ui}/tabs")]},dialog:{name:"dialog",category:"ui",dependencies:["@base-ui/react","lucide-react"],registryDependencies:["button","utils"],files:[m("src/components/ui/dialog","{ui}/dialog")]},"dropdown-menu":{name:"dropdown-menu",category:"ui",dependencies:["@base-ui/react","lucide-react"],registryDependencies:["utils"],files:[m("src/components/ui/dropdown-menu","{ui}/dropdown-menu")]},popover:{name:"popover",category:"ui",dependencies:["@base-ui/react"],registryDependencies:["utils"],files:[m("src/components/ui/popover","{ui}/popover")]},tooltip:{name:"tooltip",category:"ui",registryDependencies:["utils"],files:[m("src/components/ui/tooltip","{ui}/tooltip")]},"hover-card":{name:"hover-card",category:"ui",migrationAliasFor:"popover"},"simple-select":{name:"simple-select",category:"ui",migrationAliasFor:"select"},combobox:{name:"combobox",category:"ui",migrationAliasFor:"select"},select:{name:"select",category:"ui",dependencies:["@base-ui/react","lucide-react"],registryDependencies:["utils"],files:[m("src/components/ui/select","{ui}/select")]},table:{name:"table",category:"ui",registryDependencies:["utils"],files:[m("src/components/ui/table","{ui}/table")]},"segmented-control":{name:"segmented-control",category:"ui",registryDependencies:["utils"],files:[m("src/components/ui/segmented-control","{ui}/segmented-control")]},"radio-group":{name:"radio-group",category:"ui",registryDependencies:["button","utils"],files:[m("src/components/ui/radio-group","{ui}/radio-group")]},accordion:{name:"accordion",category:"ui",dependencies:["lucide-react"],registryDependencies:["collapse"],files:[m("src/components/ui/accordion","{ui}/accordion")]},kbd:{name:"kbd",category:"ui",files:[m("src/components/ui/kbd","{ui}/kbd")]},"scroll-box":{name:"scroll-box",category:"ui",files:[m("src/components/ui/scroll-box","{ui}/scroll-box")]},"right-click-menu":{name:"right-click-menu",category:"ui",dependencies:["react"],files:[m("src/components/ui/right-click-menu","{ui}/right-click-menu")]},"tag-input":{name:"tag-input",category:"inputs",dependencies:["lucide-react"],registryDependencies:["badge","input","utils"],files:[m("src/components/inputs/tag-input.tsx","{components}/inputs/tag-input.tsx")]},"async-select":{name:"async-select",category:"inputs",dependencies:["lucide-react"],registryDependencies:["button","input","popover","utils"],files:[m("src/components/inputs/async-select.tsx","{components}/inputs/async-select.tsx")]},"form-field-shell":{name:"form-field-shell",category:"form",registryDependencies:["utils"],files:[m("src/components/form/form-field-shell.tsx","{components}/form/form-field-shell.tsx")]},"form-input":{name:"form-input",category:"form",dependencies:["react-hook-form"],registryDependencies:["input","form-field-shell"],files:[m("src/components/form/form-input.tsx","{components}/form/form-input.tsx")]},"form-select":{name:"form-select",category:"form",dependencies:["react-hook-form"],registryDependencies:["select","async-select","form-field-shell"],files:[m("src/components/form/form-select.tsx","{components}/form/form-select.tsx")]},"form-textarea":{name:"form-textarea",category:"form",dependencies:["react-hook-form"],registryDependencies:["textarea","form-field-shell"],files:[m("src/components/form/form-textarea.tsx","{components}/form/form-textarea.tsx")]},"form-switch":{name:"form-switch",category:"form",dependencies:["react-hook-form"],registryDependencies:["switch","form-field-shell","utils"],files:[m("src/components/form/form-switch.tsx","{components}/form/form-switch.tsx")]},"form-date-range-input":{name:"form-date-range-input",category:"form",dependencies:["react-hook-form"],registryDependencies:["input","form-field-shell"],files:[m("src/components/form/form-date-range-input.tsx","{components}/form/form-date-range-input.tsx")]},"form-date-picker":{name:"form-date-picker",category:"form",dependencies:["react-hook-form"],registryDependencies:["date-picker","form-field-shell"],files:[m("src/components/form/form-date-picker.tsx","{components}/form/form-date-picker.tsx")]},"form-date-range-picker":{name:"form-date-range-picker",category:"form",dependencies:["react-hook-form"],registryDependencies:["date-range-picker","form-field-shell"],files:[m("src/components/form/form-date-range-picker.tsx","{components}/form/form-date-range-picker.tsx")]},form:{name:"form",category:"group",registryDependencies:["form-field-shell","form-input","form-select","form-textarea","form-switch","form-date-range-input","form-date-picker","form-date-range-picker"],files:[m("src/components/form/index.ts","{components}/form/index.ts")]},"dialog-actions":{name:"dialog-actions",category:"overlay",migrationAliasFor:"dialog"},"modal-shell":{name:"modal-shell",category:"overlay",migrationAliasFor:"dialog"},"confirm-dialog":{name:"confirm-dialog",category:"overlay",registryDependencies:["button","dialog"],files:[m("src/components/overlay/confirm-dialog.tsx","{components}/overlay/confirm-dialog.tsx")]},"alert-dialog":{name:"alert-dialog",category:"overlay",dependencies:["lucide-react"],registryDependencies:["dialog","button"],files:[m("src/components/overlay/alert-dialog.tsx","{components}/overlay/alert-dialog.tsx")]},drawer:{name:"drawer",category:"overlay",dependencies:["@base-ui/react"],registryDependencies:["dialog"],files:[m("src/components/overlay/drawer.tsx","{components}/overlay/drawer.tsx")]},"state-view":{name:"state-view",category:"feedback",dependencies:["lucide-react"],registryDependencies:["button","utils"],files:[m("src/components/feedback/state-view.tsx","{components}/feedback/state-view.tsx")]},"loading-state":{name:"loading-state",category:"feedback",registryDependencies:["state-view"],files:[m("src/components/feedback/loading-state.tsx","{components}/feedback/loading-state.tsx")]},"page-state":{name:"page-state",category:"feedback",registryDependencies:["state-view","utils"],files:[m("src/components/feedback/page-state.tsx","{components}/feedback/page-state.tsx")]},feedback:{name:"feedback",category:"group",registryDependencies:["alert","state-view"],files:[m("src/components/feedback/index.ts","{components}/feedback/index.ts")]},"sidebar-context":{name:"sidebar-context",category:"layout",dependencies:["lucide-react"],registryDependencies:["button"],files:[m("src/components/layout/sidebar-context.tsx","{components}/layout/sidebar-context.tsx")]},"workspace-layout":{name:"workspace-layout",category:"layout",registryDependencies:["utils"],files:[m("src/components/layout/workspace-layout.tsx","{components}/layout/workspace-layout.tsx"),m("src/components/layout/workspace-header.tsx","{components}/layout/workspace-header.tsx")]},sidebar:{name:"sidebar",category:"layout",dependencies:["react"],registryDependencies:["tooltip","sidebar-context","utils"],files:[m("src/components/layout/sidebar.tsx","{components}/layout/sidebar.tsx")]},layout:{name:"layout",category:"group",registryDependencies:["workspace-layout","sidebar","breadcrumbs","section"],files:[m("src/components/layout/index.ts","{components}/layout/index.ts")]},calendar:{name:"calendar",category:"calendar",dependencies:["lucide-react"],registryDependencies:["button","utils"],files:[m("src/components/calendar/calendar.tsx","{components}/calendar/calendar.tsx"),m("src/components/calendar/date-utils.ts","{components}/calendar/date-utils.ts")]},"date-picker":{name:"date-picker",category:"calendar",dependencies:["lucide-react"],registryDependencies:["calendar","button","popover","utils"],files:[m("src/components/calendar/date-picker.tsx","{components}/calendar/date-picker.tsx")]},"date-range-picker":{name:"date-range-picker",category:"calendar",dependencies:["lucide-react"],registryDependencies:["calendar","button","popover","utils"],files:[m("src/components/calendar/date-range-picker.tsx","{components}/calendar/date-range-picker.tsx")]},dashboard:{name:"dashboard",category:"group",registryDependencies:["layout","feedback","input","async-select","tag-input","form"]},"calendar-kit":{name:"calendar-kit",category:"group",registryDependencies:["calendar","date-picker","date-range-picker"]},"wizard-kit":{name:"wizard-kit",category:"group",registryDependencies:["stepper","wizard"]},dnd:{name:"dnd",category:"group",registryDependencies:["sortable-list"],files:[m("src/components/dnd/index.ts","{components}/dnd/index.ts")]},all:{name:"all",category:"group",registryDependencies:["dashboard"]}},nP=[{name:"action-menu",category:"actions",files:[m("src/components/actions/action-menu.tsx","{components}/actions/action-menu.tsx")]},{name:"activity-feed",category:"display",files:[m("src/components/display/activity-feed.tsx","{components}/display/activity-feed.tsx")]},{name:"alert",category:"feedback",files:[m("src/components/feedback/alert.tsx","{components}/feedback/alert.tsx")]},{name:"app-header",category:"layout",migrationAliasFor:"workspace-layout"},{name:"avatar",category:"display",files:[m("src/components/display/avatar.tsx","{components}/display/avatar.tsx")]},{name:"breadcrumbs",category:"layout",files:[m("src/components/layout/breadcrumbs.tsx","{components}/layout/breadcrumbs.tsx")]},{name:"button-group",category:"actions",files:[m("src/components/actions/button-group.tsx","{components}/actions/button-group.tsx")]},{name:"code-block",category:"display",files:[m("src/components/display/code-block.tsx","{components}/display/code-block.tsx")]},{name:"collapse",category:"ui",files:[m("src/components/ui/collapse","{ui}/collapse")]},{name:"carousel",category:"display",files:[m("src/components/display/carousel.tsx","{components}/display/carousel.tsx")]},{name:"tag",category:"display",registryDependencies:["badge","utils"],files:[m("src/components/display/tag.tsx","{components}/display/tag.tsx")]},{name:"typography",category:"display",registryDependencies:["utils"],files:[m("src/components/display/typography.tsx","{components}/display/typography.tsx")]},{name:"command",category:"ui",files:[m("src/components/ui/command","{ui}/command")]},{name:"copy-button",category:"actions",files:[m("src/components/actions/copy-button.tsx","{components}/actions/copy-button.tsx")]},{name:"copy-field",category:"actions",migrationAliasFor:"copy-button"},{name:"clearable-input",category:"inputs",migrationAliasFor:"input"},{name:"search-input",category:"inputs",migrationAliasFor:"input"},{name:"password-input",category:"inputs",migrationAliasFor:"input"},{name:"number-input",category:"inputs",migrationAliasFor:"input"},{name:"money-input",category:"inputs",migrationAliasFor:"input"},{name:"phone-input",category:"inputs",migrationAliasFor:"input"},{name:"masked-input",category:"inputs",migrationAliasFor:"input"},{name:"quantity-input",category:"inputs",migrationAliasFor:"input"},{name:"date-input",category:"inputs",migrationAliasFor:"input"},{name:"date-range-input",category:"inputs",migrationAliasFor:"input"},{name:"form-async-select",category:"form",migrationAliasFor:"form-select"},{name:"input-decorator",category:"inputs",migrationAliasFor:"input"},{name:"input-value",category:"inputs",migrationAliasFor:"input"},{name:"inputs",category:"group",migrationAliasFor:"input"},{name:"app-sidebar",category:"layout",migrationAliasFor:"sidebar"},{name:"page-header",category:"layout",migrationAliasFor:"section"},{name:"page-container",category:"layout",migrationAliasFor:"sidebar"},{name:"section-header",category:"layout",migrationAliasFor:"section"},{name:"sidebar-nav",category:"layout",migrationAliasFor:"sidebar"},{name:"stat-card",category:"layout",migrationAliasFor:"statistic"},{name:"sticky-footer-bar",category:"layout",migrationAliasFor:"sidebar"},{name:"smart-card",category:"display",migrationAliasFor:"info-card"},{name:"file-dropzone",category:"upload",migrationAliasFor:"file-upload"},{name:"comparison-card",category:"display",migrationAliasFor:"card"},{name:"delta-badge",category:"display",migrationAliasFor:"badge"},{name:"trend-card",category:"display",migrationAliasFor:"statistic"},{name:"user-card",category:"display",migrationAliasFor:"avatar"},{name:"sheet-shell",category:"overlay",migrationAliasFor:"drawer"},{name:"nav-tabs",category:"navigation",migrationAliasFor:"tabs"},{name:"page-tabs",category:"navigation",migrationAliasFor:"tabs"},{name:"stepper-tabs",category:"navigation",migrationAliasFor:"stepper"},{name:"command-bar",category:"navigation",migrationAliasFor:"command-palette"},{name:"data-list",category:"display",migrationAliasFor:"list"},{name:"property-grid",category:"display",migrationAliasFor:"description-list"},{name:"result",category:"display",migrationAliasFor:"page-state"},{name:"data-table-bulk-actions",category:"data-table",migrationAliasFor:"data-table"},{name:"data-table-column-visibility-menu",category:"data-table",migrationAliasFor:"data-table"},{name:"data-table-pagination",category:"data-table",migrationAliasFor:"data-table"},{name:"data-table-row-actions",category:"data-table",migrationAliasFor:"data-table"},{name:"data-table-saved-filters",category:"data-table",migrationAliasFor:"data-table"},{name:"data-table-select-column",category:"data-table",migrationAliasFor:"data-table"},{name:"data-table-sortable-header",category:"data-table",migrationAliasFor:"data-table"},{name:"data-table-toolbar",category:"data-table",migrationAliasFor:"data-table"},{name:"data-table-view-presets",category:"data-table",migrationAliasFor:"data-table"},{name:"data-state",category:"display",registryDependencies:["state-view"],files:[m("src/components/display/data-state.tsx","{components}/display/data-state.tsx")]},{name:"data-table",category:"data-table",dependencies:["@tanstack/react-table","@tanstack/react-virtual","lucide-react"],registryDependencies:["button","checkbox","data-state","dropdown-menu","input","pagination","search-input","select","table","utils"],files:[m("src/components/data-table/data-table.tsx","{components}/data-table/data-table.tsx"),m("src/components/data-table/data-table-actions-column.tsx","{components}/data-table/data-table-actions-column.tsx"),m("src/components/data-table/data-table-bulk-actions.tsx","{components}/data-table/data-table-bulk-actions.tsx"),m("src/components/data-table/data-table-column-visibility-menu.tsx","{components}/data-table/data-table-column-visibility-menu.tsx"),m("src/components/data-table/data-table-pagination.tsx","{components}/data-table/data-table-pagination.tsx"),m("src/components/data-table/data-table-row-actions.tsx","{components}/data-table/data-table-row-actions.tsx"),m("src/components/data-table/data-table-saved-filters.tsx","{components}/data-table/data-table-saved-filters.tsx"),m("src/components/data-table/data-table-select-column.tsx","{components}/data-table/data-table-select-column.tsx"),m("src/components/data-table/data-table-sortable-header.tsx","{components}/data-table/data-table-sortable-header.tsx"),m("src/components/data-table/data-table-toolbar.tsx","{components}/data-table/data-table-toolbar.tsx"),m("src/components/data-table/data-table-view-presets.tsx","{components}/data-table/data-table-view-presets.tsx"),m("src/components/data-table/table-export-menu.tsx","{components}/data-table/table-export-menu.tsx"),m("src/components/data-table/table-import-button.tsx","{components}/data-table/table-import-button.tsx")]},{name:"data-table-actions-column",category:"data-table",migrationAliasFor:"data-table"},{name:"table-export-menu",category:"data-table",migrationAliasFor:"data-table"},{name:"table-import-button",category:"data-table",migrationAliasFor:"data-table"},{name:"description-list",category:"display",files:[m("src/components/display/description-list.tsx","{components}/display/description-list.tsx")]},{name:"divider",category:"ui",files:[m("src/components/ui/divider","{ui}/divider")]},{name:"file-upload",category:"upload",files:[m("src/components/upload/file-upload.tsx","{components}/upload/file-upload.tsx")]},{name:"filter-bar",category:"filters",files:[m("src/components/filters/filter-bar.tsx","{components}/filters/filter-bar.tsx")]},{name:"bulk-action-bar",category:"patterns",registryDependencies:["button","utils"],files:[m("src/components/patterns/bulk-action-bar.tsx","{components}/patterns/bulk-action-bar.tsx")]},{name:"data-view",category:"patterns",registryDependencies:["data-table","empty-state","page-toolbar","utils"],files:[m("src/components/patterns/data-view.tsx","{components}/patterns/data-view.tsx")]},{name:"detail-layout",category:"patterns",registryDependencies:["utils"],files:[m("src/components/patterns/detail-layout.tsx","{components}/patterns/detail-layout.tsx")]},{name:"empty-state",category:"patterns",registryDependencies:["state-view","button"],files:[m("src/components/patterns/empty-state.tsx","{components}/patterns/empty-state.tsx")]},{name:"form-builder",category:"patterns",dependencies:["react-hook-form"],registryDependencies:["button","form-input","form-select","form-textarea","form-switch","form-date-range-input","utils"],files:[m("src/components/patterns/form-builder.tsx","{components}/patterns/form-builder.tsx")]},{name:"charts",category:"charts",dependencies:["recharts"],registryDependencies:["card","state-view","utils"],files:[m("src/components/charts/charts.tsx","{components}/charts/charts.tsx"),m("src/components/charts/index.ts","{components}/charts/index.ts")]},{name:"horizontal-bar-chart",category:"charts",migrationAliasFor:"data-view"},{name:"image-upload",category:"upload",files:[m("src/components/upload/image-upload.tsx","{components}/upload/image-upload.tsx")]},{name:"kanban",category:"display",dependencies:["@dnd-kit/helpers","@dnd-kit/react","lucide-react"],registryDependencies:["avatar","badge","button","card","utils"],files:[m("src/components/display/kanban.tsx","{components}/display/kanban.tsx")]},{name:"chat",category:"display",dependencies:["lucide-react"],registryDependencies:["avatar","badge","button","input","textarea","utils"],files:[m("src/components/display/chat.tsx","{components}/display/chat.tsx")]},{name:"kpi",category:"charts",migrationAliasFor:"statistic"},{name:"list",category:"display",files:[m("src/components/display/list.tsx","{components}/display/list.tsx")]},{name:"otp-input",category:"inputs",files:[m("src/components/inputs/otp-input.tsx","{components}/inputs/otp-input.tsx")]},{name:"color-picker",category:"inputs",registryDependencies:["utils"],files:[m("src/components/inputs/color-picker.tsx","{components}/inputs/color-picker.tsx")]},{name:"signature-pad",category:"inputs",dependencies:["lucide-react"],registryDependencies:["utils"],files:[m("src/components/inputs/signature-pad.tsx","{components}/inputs/signature-pad.tsx")]},{name:"pagination",category:"navigation",files:[m("src/components/navigation/pagination.tsx","{components}/navigation/pagination.tsx")]},{name:"progress",category:"display",files:[m("src/components/display/progress.tsx","{components}/display/progress.tsx")]},{name:"progress-ring",category:"charts",migrationAliasFor:"progress-circle"},{name:"progress-circle",category:"charts",files:[m("src/components/charts/progress-circle.tsx","{components}/charts/progress-circle.tsx"),m("src/components/charts/progress-ring.tsx","{components}/charts/progress-ring.tsx")]},{name:"quick-action-grid",category:"actions",files:[m("src/components/actions/quick-action-grid.tsx","{components}/actions/quick-action-grid.tsx")]},{name:"rating",category:"inputs",files:[m("src/components/inputs/rating.tsx","{components}/inputs/rating.tsx")]},{name:"resource-detail-page",category:"patterns",files:[m("src/components/patterns/resource-detail-page.tsx","{components}/patterns/resource-detail-page.tsx")]},{name:"resource-page",category:"patterns",registryDependencies:["data-table","utils"],files:[m("src/components/patterns/resource-page.tsx","{components}/patterns/resource-page.tsx")]},{name:"page-toolbar",category:"patterns",registryDependencies:["utils"],files:[m("src/components/patterns/page-toolbar.tsx","{components}/patterns/page-toolbar.tsx")]},{name:"settings-page",category:"patterns",registryDependencies:["tabs","utils"],files:[m("src/components/patterns/settings-page.tsx","{components}/patterns/settings-page.tsx")]},{name:"section",category:"layout",files:[m("src/components/layout/section.tsx","{components}/layout/section.tsx")]},{name:"slider",category:"inputs",files:[m("src/components/inputs/slider.tsx","{components}/inputs/slider.tsx")]},{name:"info-card",category:"display",registryDependencies:["card","skeleton","utils"],files:[m("src/components/display/info-card.tsx","{components}/display/info-card.tsx")]},{name:"spinner",category:"ui",files:[m("src/components/ui/spinner","{ui}/spinner")]},{name:"statistic",category:"display",files:[m("src/components/display/statistic.tsx","{components}/display/statistic.tsx")]},{name:"status-dot",category:"display",files:[m("src/components/display/status-dot.tsx","{components}/display/status-dot.tsx")]},{name:"status-legend",category:"display",registryDependencies:["badge","status-dot","card","utils"],files:[m("src/components/display/status-legend.tsx","{components}/display/status-legend.tsx")]},{name:"stepper",category:"wizard",files:[m("src/components/wizard/stepper.tsx","{components}/wizard/stepper.tsx")]},{name:"timeline",category:"display",files:[m("src/components/display/timeline.tsx","{components}/display/timeline.tsx")]},{name:"toast",category:"notifications",files:[m("src/components/notifications/toast.tsx","{components}/notifications/toast.tsx")]},{name:"tree-view",category:"display",files:[m("src/components/display/tree-view.tsx","{components}/display/tree-view.tsx")]},{name:"use-before-unload-when-dirty",category:"hooks",files:[m("src/hooks/use-before-unload-when-dirty.ts","{hooks}/use-before-unload-when-dirty.ts")]},{name:"use-data-table-view-state",category:"hooks",files:[m("src/hooks/use-data-table-view-state.ts","{hooks}/use-data-table-view-state.ts")]},{name:"use-debounce",category:"hooks",files:[m("src/hooks/use-debounce.ts","{hooks}/use-debounce.ts")]},{name:"use-disclosure",category:"hooks",files:[m("src/hooks/use-disclosure.ts","{hooks}/use-disclosure.ts")]},{name:"use-is-mobile",category:"hooks",files:[m("src/hooks/use-is-mobile.ts","{hooks}/use-is-mobile.ts")]},{name:"use-session-storage-state",category:"hooks",files:[m("src/hooks/use-session-storage-state.ts","{hooks}/use-session-storage-state.ts")]},{name:"wizard",category:"wizard",files:[m("src/components/wizard/wizard.tsx","{components}/wizard/wizard.tsx")]},{name:"inline-editable",category:"inputs",files:[m("src/components/inputs/inline-editable.tsx","{components}/inputs/inline-editable.tsx")]},{name:"command-palette",category:"command",dependencies:["cmdk","lucide-react"],registryDependencies:["button","dialog","input","kbd","utils"],files:[m("src/components/command/command-palette.tsx","{components}/command/command-palette.tsx")]},{name:"saved-filter-select",category:"filters",files:[m("src/components/filters/saved-filter-select.tsx","{components}/filters/saved-filter-select.tsx")]},{name:"notification-center",category:"notifications",files:[m("src/components/notifications/notification-center.tsx","{components}/notifications/notification-center.tsx")]},{name:"calendar-scheduler",category:"modern",registryDependencies:["utils"],files:[m("src/components/modern/calendar-scheduler.tsx","{components}/modern/calendar-scheduler.tsx")]},{name:"dual-list-picker",category:"modern",registryDependencies:["utils"],files:[m("src/components/modern/dual-list-picker.tsx","{components}/modern/dual-list-picker.tsx")]},{name:"resizable-panel",category:"modern",dependencies:["lucide-react"],registryDependencies:["utils"],files:[m("src/components/modern/resizable-panel.tsx","{components}/modern/resizable-panel.tsx")]},{name:"rich-text-editor",category:"modern",dependencies:["@tiptap/react","@tiptap/pm","@tiptap/starter-kit","@tiptap/extension-link","@tiptap/extension-placeholder","lucide-react"],registryDependencies:["utils"],files:[m("src/components/modern/rich-text-editor.tsx","{components}/modern/rich-text-editor.tsx")]},{name:"image-cropper",category:"modern",dependencies:["react-easy-crop","lucide-react"],registryDependencies:["utils"],files:[m("src/components/modern/image-cropper.tsx","{components}/modern/image-cropper.tsx")]},{name:"qr-code",category:"display",dependencies:["qrcode","@types/qrcode"],registryDependencies:["utils"],files:[m("src/components/display/qr-code.tsx","{components}/display/qr-code.tsx")]},{name:"json-input",category:"inputs",registryDependencies:["utils"],files:[m("src/components/inputs/json-input.tsx","{components}/inputs/json-input.tsx")]},{name:"time-picker",category:"inputs",registryDependencies:["utils"],files:[m("src/components/inputs/time-picker.tsx","{components}/inputs/time-picker.tsx")]},{name:"sortable-list",category:"dnd",dependencies:["@dnd-kit/helpers","@dnd-kit/react","lucide-react"],registryDependencies:["utils"],files:[m("src/components/dnd/sortable-list.tsx","{components}/dnd/sortable-list.tsx")]},{name:"virtual-list",category:"display",dependencies:["@tanstack/react-virtual"],registryDependencies:["utils"],files:[m("src/components/display/virtual-list.tsx","{components}/display/virtual-list.tsx")]}];for(let t of nP)R[t.name]??=t;function Va(){return Object.values(R).filter(t=>t.name!=="all").filter(t=>t.category!=="group"&&t.category!=="lib").filter(t=>!t.migrationAliasFor).filter(t=>(t.files?.length??0)>0).map(t=>t.name)}R.all.registryDependencies=Va();var At=Object.keys(R);var Fo=be(qe());function Ly(t){let e=L__default.default.dirname(url.fileURLToPath(t)),r=L__default.default.resolve(e,"../vendor");if(Fo.default.existsSync(L__default.default.join(r,"src")))return r;let i=[L__default.default.resolve(e,"../.."),L__default.default.resolve(e,".."),process.cwd()];for(let o of i){let n=L__default.default.join(o,"package.json");if(Fo.default.existsSync(n))try{if(Fo.default.readJsonSync(n).name===qy)return o}catch{}}return L__default.default.resolve(e,"../..")}var Pt=be(qe());function aP(t){if(t.paths?.components)return t.paths.components;let e=t.componentsPath??"src/components/ui";return e.endsWith("/ui")||e.endsWith("\\ui")?L__default.default.dirname(e):e}function Wa(t,e){let r=e.replaceAll("\\","/").replace(/\/$/,"");return r==="src"?t:r.startsWith("src/")?`${t}/${r.slice(4)}`:`${t}/${r}`}function cP(t,e){let r=e.alias??"@",i=Wa(r,aP(e)),o=Wa(r,e.paths?.hooks??"src/hooks"),n=Wa(r,e.paths?.lib??L__default.default.dirname(e.utilsPath??"src/lib/utils.ts"));return t.replaceAll("@/components/",`${i}/`).replaceAll("@/hooks/",`${o}/`).replaceAll("@/lib/",`${n}/`).replaceAll("@/",`${r}/`)}async function By({cwd:t,config:e,packageRoot:r,overwrite:i,dryRun:o}){let n=L__default.default.join(r,"templates","showcase","src");if(!Pt.default.existsSync(n))throw new Error(`Showcase template topilmadi: ${L__default.default.relative(t,n)}`);let s=[];async function a(u){let h=await Pt.default.readdir(u,{withFileTypes:true});for(let p of h){let f=L__default.default.join(u,p.name);p.isDirectory()?await a(f):s.push(f);}}await a(n);let c=0,d=0,l=0;for(let u of s){let h=L__default.default.relative(n,u),p=L__default.default.join(t,"src",h),f=L__default.default.relative(t,p),b=Pt.default.existsSync(p);if(o){x.info(`[dry-run:${b?"conflict":"add"}] showcase/${h} -> ${f}`);continue}if(b&&!i){l+=1,x.warn(`${f} allaqachon mavjud. O\u2018tkazib yuborildi. Yangilash uchun --overwrite ishlating.`);continue}await Pt.default.ensureDir(L__default.default.dirname(p));let y=await Pt.default.readFile(u,"utf8");await Pt.default.writeFile(p,cP(y,e)),b?(d+=1,x.success(`${f} yangilandi.`)):(c+=1,x.success(`${f} qo\u2018shildi.`));}return o?x.info("Showcase dry run tugadi. Hech qanday fayl o\u2018zgartirilmadi."):x.success(`Showcase tayyor: ${c} ta qo\u2018shildi, ${d} ta yangilandi, ${l} ta saqlandi.`),{addedFiles:c,overwrittenFiles:d,skippedFiles:l}}function lP(t){return t in R}function dP(t){let e=t.toLowerCase();return At.filter(r=>!R[r].migrationAliasFor).map(r=>{let i=r.toLowerCase(),o=0;i.startsWith(e)&&(o+=40),i.includes(e)&&(o+=25);for(let n of e.split(/[-_\s]+/).filter(Boolean))i.includes(n)&&(o+=8);return {name:r,score:o}}).filter(r=>r.score>0).sort((r,i)=>i.score-r.score||r.name.localeCompare(i.name)).slice(0,5).map(r=>r.name)}function uP(t){let e=new Set,r=t;for(;R[r].migrationAliasFor;){if(e.has(r))throw new Error(`Registry migration alias cycle detected at ${r}`);e.add(r),r=R[r].migrationAliasFor;}return r}function Yy(t){if(t.paths?.components)return t.paths.components;let e=t.componentsPath??"src/components/ui";return e.endsWith("/ui")||e.endsWith("\\ui")?L__default.default.dirname(e):e}function Uy(t,e){let r=Yy(e),i=e.paths?.ui??e.componentsPath??L__default.default.join(r,"ui"),o=e.paths?.hooks??"src/hooks",n=e.paths?.lib??L__default.default.dirname(e.utilsPath??"src/lib/utils.ts"),s=e.utilsPath??L__default.default.join(n,"utils.ts");return t.replaceAll("{components}",r).replaceAll("{ui}",i).replaceAll("{hooks}",o).replaceAll("{lib}",n).replaceAll("{utils}",s)}function hP(t,e="@"){return e==="@"?t:t.replaceAll("@/",`${e}/`)}function zy(t,e){let r=t.replaceAll("\\","/");if(r==="src/lib/utils.ts")return e.utilsPath??"src/lib/utils.ts";if(r.startsWith("src/lib/")){let i=e.paths?.lib??L__default.default.dirname(e.utilsPath??"src/lib/utils.ts");return L__default.default.join(i,r.replace("src/lib/",""))}if(r.startsWith("src/hooks/"))return L__default.default.join(e.paths?.hooks??"src/hooks",r.replace("src/hooks/",""));if(r.startsWith("src/components/ui/")){let i=e.paths?.ui??e.componentsPath??"src/components/ui";return L__default.default.join(i,r.replace("src/components/ui/",""))}if(r.startsWith("src/components/")){let i=Yy(e);return L__default.default.join(i,r.replace("src/components/",""))}}function pP(t,e){if(t==="@/lib/utils")return "src/lib/utils.ts";if(t.startsWith("@/lib/"))return `src/lib/${t.replace("@/lib/","")}`;if(t.startsWith("@/components/"))return `src/components/${t.replace("@/components/","")}`;if(t.startsWith("@/hooks/"))return `src/hooks/${t.replace("@/hooks/","")}`;if(e&&t.startsWith("."))return L__default.default.posix.normalize(L__default.default.posix.join(L__default.default.posix.dirname(e),t))}function Gy(t){return [L__default.default.join(t,"index.tsx").replaceAll("\\","/"),L__default.default.join(t,"index.ts").replaceAll("\\","/"),`${t}.tsx`,`${t}.ts`]}function Vy(t,e){let r=new Set,i=/(?:import|export)\s+(?:type\s+)?(?:[^"']*?\s+from\s+)?["']([^"']+)["']|import\s*\(\s*["']([^"']+)["']\s*\)/g,o;for(;o=i.exec(t);){let n=o[1]??o[2],s=pP(n,e);s&&r.add(s);}return [...r]}var mP=new Set(["react","react-dom","node:path","node:fs","node:fs/promises"]);function Wy(t){let e=new Set,r=/(?:import|export)\s+(?:type\s+)?(?:[^"']*?\s+from\s+)?["']([^"']+)["']|import\s*\(\s*["']([^"']+)["']\s*\)/g,i;for(;i=r.exec(t);){let o=i[1]??i[2];if(!(!o||o.startsWith(".")||o.startsWith("@/")||mP.has(o))){if(o.startsWith("@")){let[n,s]=o.split("/");n&&s&&e.add(`${n}/${s}`);continue}e.add(o.split("/")[0]);}}return [...e]}function fP(t){let e=[],r=new Set;function i(o){if(r.has(o))return;let n=R[o];n.registryDependencies?.forEach(i),r.add(o),e.push(n);}return t.forEach(i),e}function gP(){return At.filter(t=>R[t].category!=="lib"&&!R[t].migrationAliasFor).sort().join(", ")}async function Dt(t,e={}){let r=process.cwd(),i=L__default.default.join(r,"tembro.json");ie.default.existsSync(i)||(x.error("tembro.json topilmadi. Avval init qiling:"),x.info(re("init")),process.exit(1)),t.length||(x.error("Component nomini kiriting:"),x.info(re("add data-table async-select input")),x.info(`Mavjud componentlar: ${gP()}`),process.exit(1));let o=t.includes("showcase")?t.flatMap(O=>O==="showcase"?Va():O):t,n=[];for(let O of o){if(!lP(O)){let q=dP(O);x.warn(`${O} registry ichida mavjud emas.`),q.length&&x.info(`Yaqin nomlar: ${q.join(", ")}`),x.info(`Barcha componentlar: ${re("list")}`);continue}let D=uP(O);D!==O&&x.warn(`${O} deprecated. ${D} ishlatiladi.`),n.includes(D)||n.push(D);}n.length||(x.error("Qo\u2018shish uchun valid component topilmadi."),process.exit(1));let s=await ie.default.readJson(i),a=Ly((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href))),c=ki(r),d=fP(n),l=new Set,u=new Set,h=e.overwrite===true?true:void 0,p=0,f=0,b=0,y=t.includes("showcase");async function w(){let O=new Set,D=[];async function q(v,E){let k=v.replaceAll("\\","/");if(O.has(k))return;let B=L__default.default.join(a,k);if(!ie.default.existsSync(B)){D.push({source:k,target:null,exists:false,operation:"unresolved"});return}if((await ie.default.stat(B)).isDirectory()){O.add(k);let V=await ie.default.readdir(B,{withFileTypes:true});for(let I of V){let Xa=L__default.default.posix.join(k,I.name),hw=E?L__default.default.posix.join(E.replaceAll("\\","/"),I.name):void 0;await q(Xa,hw);}return}O.add(k);let G=E?Uy(E,s):zy(k,s),j=await ie.default.readFile(B,"utf8");for(let V of Wy(j))l.add(V);for(let V of Vy(j,k))for(let I of Gy(V))if(ie.default.existsSync(L__default.default.join(a,I))){await q(I);break}if(!G){D.push({source:k,target:null,exists:false,operation:"unresolved"});return}let _=L__default.default.join(r,G),P=ie.default.existsSync(_);D.push({source:k,target:L__default.default.relative(r,_),exists:P,operation:P?e.overwrite?"overwrite":"skip":"add"});}for(let v of d){v.dependencies?.forEach(E=>l.add(E));for(let E of v.files??[])await q(E.source,E.target);}return {components:n,resolvedComponents:d.map(v=>v.name),dependencies:Array.from(l).sort(),files:D}}if(e.plan){let O=await w();console.log(JSON.stringify({...O,showcase:y},null,2));return}x.info(`Resolved: ${d.map(O=>O.name).join(", ")}`);async function S(O){return h!==void 0?h:!(process.stdin.isTTY&&process.stdout.isTTY&&!process.env.CI)?(h=false,x.warn("Mavjud fayllar o\u2018zgartirilmadi. Majburiy yozish uchun --overwrite ishlating."),false):(h=(await(0, Hy.default)({type:"confirm",name:"overwrite",message:`${O} allaqachon mavjud. Barcha conflict fayllarni overwrite qilasizmi?`,initial:false})).overwrite===true,h||x.info("Mavjud fayllar saqlanadi; faqat yetishmayotgan fayllar qo\u2018shiladi."),h)}async function C(O,D){let q=O.replaceAll("\\","/");if(u.has(q))return;let v=L__default.default.join(a,q);if(!ie.default.existsSync(v)){x.warn(`${q} topilmadi. O\u2018tkazib yuborildi.`);return}if((await ie.default.stat(v)).isDirectory()){u.add(q);let _=await ie.default.readdir(v,{withFileTypes:true});for(let P of _){let V=L__default.default.posix.join(q,P.name),I=D?L__default.default.posix.join(D.replaceAll("\\","/"),P.name):void 0;await C(V,I);}return}u.add(q);let k=D?Uy(D,s):zy(q,s);if(!k)return;let B=L__default.default.join(r,k),W=L__default.default.relative(r,B),G=ie.default.existsSync(B);if(e.dryRun){let _=G?"conflict":"add";x.info(`[dry-run:${_}] ${q} -> ${W}`);}else if(G&&!await S(W))b+=1,x.warn(`${W} allaqachon mavjud. O\u2018tkazib yuborildi.`);else {await ie.default.ensureDir(L__default.default.dirname(B));let _=await ie.default.readFile(v,"utf8");await ie.default.writeFile(B,hP(_,s.alias)),G?(f+=1,x.success(`${W} yangilandi.`)):(p+=1,x.success(`${W} qo\u2018shildi.`));}let j=await ie.default.readFile(v,"utf8");for(let _ of Wy(j))l.add(_);for(let _ of Vy(j,q))for(let P of Gy(_))if(ie.default.existsSync(L__default.default.join(a,P))){await C(P);break}}for(let O of d){O.dependencies?.forEach(D=>l.add(D));for(let D of O.files??[])await C(D.source,D.target);}let M=p+f;y&&await By({cwd:r,config:s,packageRoot:a,overwrite:e.overwrite,dryRun:e.dryRun});let Z=Array.from(l).sort();e.dryRun&&Z.length&&x.info(`[dry-run:dependencies] ${Z.join(", ")}`),!e.skipInstall&&l.size>0&&!e.dryRun&&M>0?await Gr({cwd:r,packageManager:c,packages:Z}):e.skipInstall&&Z.length&&M>0&&x.warn(`Dependency install skipped: ${Z.join(", ")}`),e.dryRun?x.info("Dry run tugadi. Hech qanday fayl o\u2018zgartirilmadi."):M===0?x.warn(`O\u2018zgarish yo\u2018q. ${b} ta mavjud fayl saqlandi.`):x.success(`Tayyor: ${p} ta qo\u2018shildi, ${f} ta yangilandi, ${b} ta saqlandi.`);}var bP=["@fontsource-variable/geist","clsx","tailwind-merge","tw-animate-css"],yP={vite:["tailwindcss","@tailwindcss/vite"],next:["tailwindcss","@tailwindcss/postcss"]},wP=`// Generated by tembro init.
1981
1981
  // Components added with the CLI will appear under this folder.
1982
1982
  `;function vP(t){try{return JSON.parse(t)}catch{}let i=t.replace(/\/\*[\s\S]*?\*\//g,"").replace(/^\s*\/\/.*$/gm,"").replace(/,\s*([}\]])/g,"$1");return JSON.parse(i)}function xP(t,e,r,i){let o=[e,r,i].map(s=>s.replaceAll("\\","/"));return o.filter(s=>s.startsWith("src/")).length===o.length?"./src/*":"./*"}async function SP({cwd:t,template:e,alias:r,componentsPath:i,hooksPath:o,utilsPath:n}){let s=L__default.default.join(t,e==="vite"?"tsconfig.app.json":"tsconfig.json");if(!z.default.existsSync(s))return;let a=vP(await z.default.readFile(s,"utf8"));a.compilerOptions??={};let c=a.compilerOptions.paths??{};c[`${r}/*`]=[xP(e,i,o,n)],a.compilerOptions.paths=c,await z.default.writeJson(s,a,{spaces:2});}async function kP({cwd:t,alias:e}){let r=L__default.default.join(t,"vite.config.ts");if(!z.default.existsSync(r))return;let i=await z.default.readFile(r,"utf8"),o="import path from 'node:path'",n="import tailwindcss from '@tailwindcss/vite'",s=` resolve: {
1983
1983
  alias: {
@@ -1997,9 +1997,9 @@ import { twMerge } from "tailwind-merge"
1997
1997
  export function cn(...inputs: ClassValue[]) {
1998
1998
  return twMerge(clsx(inputs))
1999
1999
  }
2000
- `),await SP({cwd:e,template:i,alias:y.alias,componentsPath:h,hooksPath:f,utilsPath:u}),i==="vite"&&await kP({cwd:e,alias:y.alias}),d.writeThemeCss&&b){let O=await Mo({cwd:e,cssPath:b,componentsPath:h});x.success(`Theme CSS yozildi / written: ${O}`);}x.success("Tembro source-copy setup tayyor / initialized."),x.info(`Component source root: ${h}`),x.info(`UI primitives path: ${p}`),x.info(`Hooks path: ${f}`),x.info("Componentlarni ko\u2018rish / list components:"),x.info(re("list")),x.info("Component qo\u2018shish / add components:"),x.info(re("add button input")),c.length>0&&!d.installTailwindDeps&&x.warn(`Tailwind paketlari hali o\u2018rnatilmadi: ${c.join(", ")}`),x.info("Theme CSS ni yangilash / update theme CSS:"),x.info(re("theme")),t.showcase?(x.info("Showcase qo\u2018shilmoqda: barcha componentlar + local workbench."),await Dt(["showcase"],{overwrite:true,skipInstall:t.skipInstall})):(x.info("To\u2018liq local workbench kerak bo\u2018lsa / full local workbench:"),x.info(re("init --showcase --defaults")));}var DP={utils:"internal",button:"stable",input:"stable",textarea:"stable",checkbox:"stable",switch:"stable",badge:"stable",card:"stable",dialog:"stable","dropdown-menu":"stable",popover:"stable",select:"stable",table:"stable","radio-group":"stable",accordion:"stable","simple-select":"internal",combobox:"internal","scroll-box":"stable","right-click-menu":"stable",kbd:"stable","dialog-actions":"internal","modal-shell":"internal","confirm-dialog":"stable","alert-dialog":"stable",drawer:"stable",overlay:"stable",pagination:"stable","async-select":"preview","color-picker":"stable","signature-pad":"preview","form-field-shell":"preview","form-input":"preview","form-select":"preview","form-textarea":"preview","form-switch":"preview","form-date-range-input":"preview","form-date-picker":"preview","form-date-range-picker":"preview",form:"preview","loading-state":"stable",feedback:"stable","description-list":"stable",progress:"stable",timeline:"stable","info-card":"stable","activity-feed":"stable",display:"stable","action-menu":"stable",actions:"stable","app-header":"internal",sidebar:"stable",breadcrumbs:"stable",layout:"stable","filter-bar":"stable",filters:"stable","data-table":"preview","data-table-actions-column":"internal","table-export-menu":"internal","table-import-button":"internal",calendar:"preview","date-picker":"preview","date-range-picker":"preview","calendar-kit":"preview","file-upload":"preview","image-upload":"preview",upload:"preview",stepper:"preview",wizard:"preview","wizard-kit":"preview",toast:"preview",notifications:"preview","command-palette":"preview",command:"preview","resource-page":"preview","resource-detail-page":"preview",patterns:"preview","use-session-storage-state":"stable","use-before-unload-when-dirty":"stable","use-is-mobile":"stable","use-disclosure":"stable","use-debounce":"stable","use-data-table-view-state":"preview",hooks:"stable",dashboard:"preview",all:"preview","inline-editable":"preview","saved-filter-select":"preview","notification-center":"preview","calendar-scheduler":"preview","dual-list-picker":"preview","resizable-panel":"preview","rich-text-editor":"preview","image-cropper":"preview","qr-code":"stable",charts:"stable","progress-circle":"stable",tag:"preview",typography:"preview","json-input":"preview","time-picker":"preview","sortable-list":"preview","virtual-list":"preview",dnd:"preview"};function nr(t){return DP[t]??"preview"}var IP={lib:"foundation",ui:"foundation",hooks:"foundation",overlay:"source-copy",navigation:"source-copy",inputs:"source-copy",form:"source-copy",feedback:"source-copy",display:"source-copy",dnd:"source-copy",actions:"source-copy",layout:"source-copy",filters:"source-copy","data-table":"system",calendar:"source-copy",upload:"source-copy",wizard:"source-copy",notifications:"source-copy",command:"source-copy",patterns:"system",modern:"source-copy",group:"system"},$P={utils:"foundation",button:"foundation",input:"foundation",textarea:"foundation",checkbox:"foundation",switch:"foundation",badge:"foundation",card:"foundation",skeleton:"foundation",tabs:"foundation",dialog:"foundation","dropdown-menu":"foundation",popover:"foundation",select:"foundation",table:"foundation","use-session-storage-state":"foundation","use-before-unload-when-dirty":"foundation","use-is-mobile":"foundation","use-disclosure":"foundation","use-debounce":"foundation",hooks:"foundation","data-table":"system","resource-page":"system","resource-detail-page":"system","calendar-kit":"system","wizard-kit":"system",dashboard:"system",all:"system"};function jo(t,e){return $P[t]??IP[e]}var Xy=[{slug:"button",registryName:"button",surface:"documented"},{slug:"input",registryName:"input",surface:"documented"},{slug:"select",registryName:"select",surface:"documented"},{slug:"card",registryName:"card",surface:"documented"},{slug:"badge",registryName:"badge",surface:"documented"},{slug:"checkbox",registryName:"checkbox",surface:"documented"},{slug:"overlay",registryName:"dialog",surface:"documented"},{slug:"data-table",registryName:"data-table",surface:"documented"},{slug:"calendar",registryName:"calendar",surface:"documented"},{slug:"date-picker",registryName:"date-picker",surface:"documented"},{slug:"date-range-picker",registryName:"date-range-picker",surface:"documented"},{slug:"alert",registryName:"alert",surface:"documented"},{slug:"bar-chart",registryName:"charts",surface:"documented"},{slug:"sidebar",registryName:"sidebar",surface:"documented"},{slug:"workspace-layout",registryName:"workspace-layout",surface:"documented"},{slug:"state-view",registryName:"state-view",surface:"documented"},{slug:"file-upload",registryName:"file-upload",surface:"documented"},{slug:"progress",registryName:"progress",surface:"documented"},{slug:"accordion",registryName:"accordion",surface:"documented"},{slug:"divider",registryName:"divider",surface:"documented"},{slug:"segmented-control",registryName:"segmented-control",surface:"documented"},{slug:"skeleton",registryName:"skeleton",surface:"documented"},{slug:"spinner",registryName:"spinner",surface:"documented"},{slug:"command-palette",registryName:"command-palette",surface:"documented"},{slug:"inline-editable",registryName:"inline-editable",surface:"documented"},{slug:"avatar",registryName:"avatar",surface:"documented"},{slug:"code-block",registryName:"code-block",surface:"documented"},{slug:"data-state",registryName:"data-state",surface:"documented"},{slug:"kanban",registryName:"kanban",surface:"documented"},{slug:"list",registryName:"list",surface:"documented"},{slug:"description-list",registryName:"description-list",surface:"documented"},{slug:"statistic",registryName:"statistic",surface:"documented"},{slug:"tree-view",registryName:"tree-view",surface:"documented"},{slug:"copy-button",registryName:"copy-button",surface:"documented"},{slug:"section",registryName:"section",surface:"documented"},{slug:"form-builder",registryName:"form-builder",surface:"documented"},{slug:"empty-state",registryName:"empty-state",surface:"documented"},{slug:"page-toolbar",registryName:"page-toolbar",surface:"documented"},{slug:"bulk-action-bar",registryName:"bulk-action-bar",surface:"documented"},{slug:"detail-layout",registryName:"detail-layout",surface:"documented"},{slug:"settings-page",registryName:"settings-page",surface:"documented"},{slug:"data-view",registryName:"data-view",surface:"documented"},{slug:"resource-page",registryName:"resource-page",surface:"documented"},{slug:"resource-detail-page",registryName:"resource-detail-page",surface:"documented"},{slug:"calendar-scheduler",registryName:"calendar-scheduler",surface:"documented"},{slug:"dual-list-picker",registryName:"dual-list-picker",surface:"documented"},{slug:"resizable-panel",registryName:"resizable-panel",surface:"documented"},{slug:"tag",registryName:"tag",surface:"documented"},{slug:"carousel",registryName:"carousel",surface:"documented"},{slug:"typography",registryName:"typography",surface:"documented"},{slug:"json-input",registryName:"json-input",surface:"documented"},{slug:"time-picker",registryName:"time-picker",surface:"documented"},{slug:"sortable-list",registryName:"sortable-list",surface:"documented"},{slug:"virtual-list",registryName:"virtual-list",surface:"documented"},{slug:"color-picker",registryName:"color-picker",surface:"documented"},{slug:"signature-pad",registryName:"signature-pad",surface:"documented"},{slug:"qr-code",registryName:"qr-code",surface:"documented"},{slug:"rich-text-editor",registryName:"rich-text-editor",surface:"documented"},{slug:"image-cropper",registryName:"image-cropper",surface:"documented"}],Ha=[],No=[...Xy,...Ha];new Map(No.map((t,e)=>[t.slug,e]));new Map(No.map(t=>[t.slug,t.registryName]));var RP=No.map(t=>t.slug);new Set(RP);Ha.map(t=>t.slug);var Zy=Xy.map(t=>t.registryName),Qy=Ha.map(t=>t.registryName);No.map(t=>t.registryName);var tw=new Set;function MP(t){return At.filter(e=>R[e].category!=="lib").filter(e=>!R[e].migrationAliasFor).filter(e=>!tw.has(e)).filter(e=>!t.category||R[e].category===t.category).filter(e=>!t.status||nr(e)===t.status)}function ew(t,e,r){let i=e.filter(o=>!r.category||R[o].category===r.category).filter(o=>!r.status||nr(o)===r.status);i.length&&(console.log(`
2000
+ `),await SP({cwd:e,template:i,alias:y.alias,componentsPath:h,hooksPath:f,utilsPath:u}),i==="vite"&&await kP({cwd:e,alias:y.alias}),d.writeThemeCss&&b){let O=await Mo({cwd:e,cssPath:b,componentsPath:h});x.success(`Theme CSS yozildi / written: ${O}`);}x.success("Tembro source-copy setup tayyor / initialized."),x.info(`Component source root: ${h}`),x.info(`UI primitives path: ${p}`),x.info(`Hooks path: ${f}`),x.info("Componentlarni ko\u2018rish / list components:"),x.info(re("list")),x.info("Component qo\u2018shish / add components:"),x.info(re("add button input")),c.length>0&&!d.installTailwindDeps&&x.warn(`Tailwind paketlari hali o\u2018rnatilmadi: ${c.join(", ")}`),x.info("Theme CSS ni yangilash / update theme CSS:"),x.info(re("theme")),t.showcase?(x.info("Showcase qo\u2018shilmoqda: barcha componentlar + local workbench."),await Dt(["showcase"],{overwrite:true,skipInstall:t.skipInstall})):(x.info("To\u2018liq local workbench kerak bo\u2018lsa / full local workbench:"),x.info(re("init --showcase --defaults")));}var DP={utils:"internal",button:"stable",input:"stable",textarea:"stable",checkbox:"stable",switch:"stable",badge:"stable",card:"stable",dialog:"stable","dropdown-menu":"stable",popover:"stable",select:"stable",table:"stable","radio-group":"stable",accordion:"stable","simple-select":"internal",combobox:"internal","scroll-box":"stable","right-click-menu":"stable",kbd:"stable","dialog-actions":"internal","modal-shell":"internal","confirm-dialog":"stable","alert-dialog":"stable",drawer:"stable",overlay:"stable",pagination:"stable","async-select":"preview","color-picker":"stable","signature-pad":"preview","form-field-shell":"preview","form-input":"preview","form-select":"preview","form-textarea":"preview","form-switch":"preview","form-date-range-input":"preview","form-date-picker":"preview","form-date-range-picker":"preview",form:"preview","loading-state":"stable",feedback:"stable","description-list":"stable",progress:"stable",timeline:"stable","info-card":"stable","activity-feed":"stable",display:"stable","action-menu":"stable",actions:"stable","app-header":"internal",sidebar:"stable",breadcrumbs:"stable",layout:"stable","filter-bar":"stable",filters:"stable","data-table":"preview","data-table-actions-column":"internal","table-export-menu":"internal","table-import-button":"internal",calendar:"preview","date-picker":"preview","date-range-picker":"preview","calendar-kit":"preview","file-upload":"preview","image-upload":"preview",upload:"preview",stepper:"preview",wizard:"preview","wizard-kit":"preview",toast:"preview",notifications:"preview","command-palette":"preview",command:"preview","resource-page":"preview","resource-detail-page":"preview",patterns:"preview","use-session-storage-state":"stable","use-before-unload-when-dirty":"stable","use-is-mobile":"stable","use-disclosure":"stable","use-debounce":"stable","use-data-table-view-state":"preview",hooks:"stable",dashboard:"preview",all:"preview","inline-editable":"preview","saved-filter-select":"preview","notification-center":"preview","calendar-scheduler":"preview","dual-list-picker":"preview","resizable-panel":"preview","rich-text-editor":"preview","image-cropper":"preview","qr-code":"stable",charts:"stable","progress-circle":"stable",tag:"preview",typography:"preview","json-input":"preview","time-picker":"preview","sortable-list":"preview","virtual-list":"preview",dnd:"preview"};function nr(t){return DP[t]??"preview"}var IP={lib:"foundation",ui:"foundation",hooks:"foundation",overlay:"source-copy",navigation:"source-copy",inputs:"source-copy",form:"source-copy",feedback:"source-copy",display:"source-copy",dnd:"source-copy",actions:"source-copy",layout:"source-copy",filters:"source-copy","data-table":"system",calendar:"source-copy",upload:"source-copy",wizard:"source-copy",notifications:"source-copy",command:"source-copy",patterns:"system",modern:"source-copy",group:"system"},$P={utils:"foundation",button:"foundation",input:"foundation",textarea:"foundation",checkbox:"foundation",switch:"foundation",badge:"foundation",card:"foundation",skeleton:"foundation",tabs:"foundation",dialog:"foundation","dropdown-menu":"foundation",popover:"foundation",select:"foundation",table:"foundation","use-session-storage-state":"foundation","use-before-unload-when-dirty":"foundation","use-is-mobile":"foundation","use-disclosure":"foundation","use-debounce":"foundation",hooks:"foundation","data-table":"system","resource-page":"system","resource-detail-page":"system","calendar-kit":"system","wizard-kit":"system",dashboard:"system",all:"system"};function jo(t,e){return $P[t]??IP[e]}var Xy=[{slug:"button",registryName:"button",surface:"documented"},{slug:"input",registryName:"input",surface:"documented"},{slug:"select",registryName:"select",surface:"documented"},{slug:"card",registryName:"card",surface:"documented"},{slug:"badge",registryName:"badge",surface:"documented"},{slug:"checkbox",registryName:"checkbox",surface:"documented"},{slug:"overlay",registryName:"dialog",surface:"documented"},{slug:"data-table",registryName:"data-table",surface:"documented"},{slug:"calendar",registryName:"calendar",surface:"documented"},{slug:"date-picker",registryName:"date-picker",surface:"documented"},{slug:"date-range-picker",registryName:"date-range-picker",surface:"documented"},{slug:"alert",registryName:"alert",surface:"documented"},{slug:"bar-chart",registryName:"charts",surface:"documented"},{slug:"sidebar",registryName:"sidebar",surface:"documented"},{slug:"workspace-layout",registryName:"workspace-layout",surface:"documented"},{slug:"state-view",registryName:"state-view",surface:"documented"},{slug:"file-upload",registryName:"file-upload",surface:"documented"},{slug:"progress",registryName:"progress",surface:"documented"},{slug:"accordion",registryName:"accordion",surface:"documented"},{slug:"divider",registryName:"divider",surface:"documented"},{slug:"segmented-control",registryName:"segmented-control",surface:"documented"},{slug:"skeleton",registryName:"skeleton",surface:"documented"},{slug:"spinner",registryName:"spinner",surface:"documented"},{slug:"command-palette",registryName:"command-palette",surface:"documented"},{slug:"inline-editable",registryName:"inline-editable",surface:"documented"},{slug:"avatar",registryName:"avatar",surface:"documented"},{slug:"code-block",registryName:"code-block",surface:"documented"},{slug:"data-state",registryName:"data-state",surface:"documented"},{slug:"kanban",registryName:"kanban",surface:"documented"},{slug:"chat",registryName:"chat",surface:"documented"},{slug:"list",registryName:"list",surface:"documented"},{slug:"description-list",registryName:"description-list",surface:"documented"},{slug:"statistic",registryName:"statistic",surface:"documented"},{slug:"tree-view",registryName:"tree-view",surface:"documented"},{slug:"copy-button",registryName:"copy-button",surface:"documented"},{slug:"section",registryName:"section",surface:"documented"},{slug:"form-builder",registryName:"form-builder",surface:"documented"},{slug:"empty-state",registryName:"empty-state",surface:"documented"},{slug:"page-toolbar",registryName:"page-toolbar",surface:"documented"},{slug:"bulk-action-bar",registryName:"bulk-action-bar",surface:"documented"},{slug:"detail-layout",registryName:"detail-layout",surface:"documented"},{slug:"settings-page",registryName:"settings-page",surface:"documented"},{slug:"data-view",registryName:"data-view",surface:"documented"},{slug:"resource-page",registryName:"resource-page",surface:"documented"},{slug:"resource-detail-page",registryName:"resource-detail-page",surface:"documented"},{slug:"calendar-scheduler",registryName:"calendar-scheduler",surface:"documented"},{slug:"dual-list-picker",registryName:"dual-list-picker",surface:"documented"},{slug:"resizable-panel",registryName:"resizable-panel",surface:"documented"},{slug:"tag",registryName:"tag",surface:"documented"},{slug:"carousel",registryName:"carousel",surface:"documented"},{slug:"typography",registryName:"typography",surface:"documented"},{slug:"json-input",registryName:"json-input",surface:"documented"},{slug:"time-picker",registryName:"time-picker",surface:"documented"},{slug:"sortable-list",registryName:"sortable-list",surface:"documented"},{slug:"virtual-list",registryName:"virtual-list",surface:"documented"},{slug:"color-picker",registryName:"color-picker",surface:"documented"},{slug:"signature-pad",registryName:"signature-pad",surface:"documented"},{slug:"qr-code",registryName:"qr-code",surface:"documented"},{slug:"rich-text-editor",registryName:"rich-text-editor",surface:"documented"},{slug:"image-cropper",registryName:"image-cropper",surface:"documented"}],Ha=[],No=[...Xy,...Ha];new Map(No.map((t,e)=>[t.slug,e]));new Map(No.map(t=>[t.slug,t.registryName]));var RP=No.map(t=>t.slug);new Set(RP);Ha.map(t=>t.slug);var Zy=Xy.map(t=>t.registryName),Qy=Ha.map(t=>t.registryName);No.map(t=>t.registryName);var tw=new Set;function MP(t){return At.filter(e=>R[e].category!=="lib").filter(e=>!R[e].migrationAliasFor).filter(e=>!tw.has(e)).filter(e=>!t.category||R[e].category===t.category).filter(e=>!t.status||nr(e)===t.status)}function ew(t,e,r){let i=e.filter(o=>!r.category||R[o].category===r.category).filter(o=>!r.status||nr(o)===r.status);i.length&&(console.log(`
2001
2001
  ${t}`),i.forEach(o=>{let n=R[o],s=nr(o),a=jo(o,n.category),c=n.registryDependencies?.length?` -> ${n.registryDependencies.join(", ")}`:"";console.log(` ${o} [${s}/${a}]${c}`);}));}function rw(t={}){let e=MP(t);if(t.json){console.log(JSON.stringify(e.map(s=>{let a=R[s];return {name:s,category:a.category,status:nr(s),distribution:jo(s,a.category),description:a.description??null,dependencies:a.dependencies??[],registryDependencies:a.registryDependencies??[],files:a.files??[]}}),null,2));return}if(!e.length){console.log("No registry components matched the selected filters."),console.log(`Try: ${re("list")}`);return}let r=Zy.filter((s,a,c)=>c.indexOf(s)===a).filter(s=>R[s]&&R[s].category!=="lib"),i=Qy.filter((s,a,c)=>c.indexOf(s)===a).filter(s=>R[s]&&R[s].category!=="lib");ew("Canonical surfaces",r,t),ew("Additional source-copy surfaces",i,t);let o=new Set([...r,...i]),n=e.filter(s=>R[s].category!=="lib"&&!R[s].migrationAliasFor).filter(s=>!o.has(s)).filter(s=>!tw.has(s)).filter(s=>!R[s].migrationAliasFor).reduce((s,a)=>{let c=R[a].category;return s[c]??=[],s[c].push(a),s},{});for(let[s,a]of Object.entries(n))console.log(`
2002
2002
  ${s}`),a.sort().forEach(c=>{let d=R[c],l=nr(c),u=jo(c,d.category),h=d.registryDependencies?.length?` -> ${d.registryDependencies.join(", ")}`:"";console.log(` ${c} [${l}/${u}]${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 Ja(t){try{return mt.default.readJsonSync(t)}catch{return null}}function nw(t){try{return mt.default.readFileSync(t,"utf8")}catch{return null}}function FP(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"),o=t.paths?.hooks??"src/hooks",n=t.utilsPath??L__default.default.join(i,"utils.ts");return {componentsRoot:e,uiPath:r,libPath:i,hooksPath:o,utilsPath:n}}function jP(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=>!!Ja(i)?.compilerOptions?.paths?.[`${e}/*`])}function ow(t,e){return ["vite.config.ts","vite.config.js","vite.config.mjs"].map(i=>L__default.default.join(t,i)).some(i=>{let o=nw(i);return !!(o?.includes(`"${e}"`)||o?.includes(`'${e}'`))})}function aw(t,e){let r=Ja(L__default.default.join(t,"package.json")),i=new Set([...Object.keys(r?.dependencies??{}),...Object.keys(r?.devDependencies??{})]);return e.filter(o=>!i.has(o))}function Ya(t,e){return (t.files??[]).map(r=>({source:r.source,target:jP(r.target,e)}))}function NP(t,e){return At.map(r=>R[r]).filter(r=>r.category!=="lib").filter(r=>!r.migrationAliasFor).filter(r=>r.files?.length).filter(r=>Ya(r,e).some(i=>mt.default.existsSync(L__default.default.join(t,i.target))))}function qP(t,e){let r=NP(t,e),i=[],o=[],n=new Set;for(let s of r){for(let a of Ya(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;Ya(c,e).some(l=>mt.default.existsSync(L__default.default.join(t,l.target)))||o.push(`${s.name} -> ${a}`);}for(let a of s.dependencies??[])n.add(a);}return {copiedItems:r,missingFiles:i,missingRegistryDependencies:o,missingPackages:aw(t,Array.from(n).sort())}}function Ze(t,e){t.push(e);}function LP(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"),o=L__default.default.join(e,"tembro.json"),n=mt.default.existsSync(i),s=Ja(o);if(Ze(r,{name:"package.json",status:n?"pass":"fail",message:n?"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 d=s.alias??"@",{componentsRoot:l,uiPath:u,libPath:h,hooksPath:p}=sw(s),f=s.cssPath??"src/index.css",b=[["components",l],["ui",u],["lib",h],["hooks",p]].filter(([,C])=>{let M=FP(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,d)||ow(e,d)?"pass":"warn",message:iw(e,d)||ow(e,d)?`${d} alias tsconfig yoki vite configda topildi.`:`${d} alias topilmadi. Import pathlar ishlamasligi mumkin.`});let y=nw(L__default.default.join(e,f)),w=LP(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=qP(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(n){let d=aw(e,["@fontsource-variable/geist","clsx","tailwind-merge","tw-animate-css"]);Ze(r,{name:"base-dependencies",status:d.length?"warn":"pass",message:d.length?`Yetishmayotgan dependencylar: ${d.join(", ")}`:"Base dependencylar package.json ichida bor."});}let a=r.filter(d=>d.status==="fail"),c=r.filter(d=>d.status==="warn");if(t.json){console.log(JSON.stringify({ok:a.length===0,checks:r},null,2));return}for(let d of r){let l=`${d.status.toUpperCase()} ${d.name}: ${d.message}`;d.status==="pass"&&x.success(l),d.status==="warn"&&x.warn(l),d.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 Ka=be(qe());async function lw(t){let e=process.cwd(),r=L__default.default.join(e,"tembro.json"),i=Ka.default.existsSync(r)?await Ka.default.readJson(r):{},o=t??i.cssPath??i.globalCssPath??"src/index.css",n=i.paths?.components??i.componentsPath??"src/components",s=await Mo({cwd:e,cssPath:o,componentsPath:n});x.success(`Tembro theme CSS yangilandi: ${s}`);}var dw={minimal:["button","input","card","badge"],dashboard:["button","input","card","badge","dropdown-menu","skeleton","tabs","page-state","filter-bar","description-list","info-card","data-table"]};async function uw(t,e={}){let r=dw[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("4.0.0");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(uw);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();
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 Ja(t){try{return mt.default.readJsonSync(t)}catch{return null}}function nw(t){try{return mt.default.readFileSync(t,"utf8")}catch{return null}}function FP(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"),o=t.paths?.hooks??"src/hooks",n=t.utilsPath??L__default.default.join(i,"utils.ts");return {componentsRoot:e,uiPath:r,libPath:i,hooksPath:o,utilsPath:n}}function jP(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=>!!Ja(i)?.compilerOptions?.paths?.[`${e}/*`])}function ow(t,e){return ["vite.config.ts","vite.config.js","vite.config.mjs"].map(i=>L__default.default.join(t,i)).some(i=>{let o=nw(i);return !!(o?.includes(`"${e}"`)||o?.includes(`'${e}'`))})}function aw(t,e){let r=Ja(L__default.default.join(t,"package.json")),i=new Set([...Object.keys(r?.dependencies??{}),...Object.keys(r?.devDependencies??{})]);return e.filter(o=>!i.has(o))}function Ya(t,e){return (t.files??[]).map(r=>({source:r.source,target:jP(r.target,e)}))}function NP(t,e){return At.map(r=>R[r]).filter(r=>r.category!=="lib").filter(r=>!r.migrationAliasFor).filter(r=>r.files?.length).filter(r=>Ya(r,e).some(i=>mt.default.existsSync(L__default.default.join(t,i.target))))}function qP(t,e){let r=NP(t,e),i=[],o=[],n=new Set;for(let s of r){for(let a of Ya(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;Ya(c,e).some(l=>mt.default.existsSync(L__default.default.join(t,l.target)))||o.push(`${s.name} -> ${a}`);}for(let a of s.dependencies??[])n.add(a);}return {copiedItems:r,missingFiles:i,missingRegistryDependencies:o,missingPackages:aw(t,Array.from(n).sort())}}function Ze(t,e){t.push(e);}function LP(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"),o=L__default.default.join(e,"tembro.json"),n=mt.default.existsSync(i),s=Ja(o);if(Ze(r,{name:"package.json",status:n?"pass":"fail",message:n?"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 d=s.alias??"@",{componentsRoot:l,uiPath:u,libPath:h,hooksPath:p}=sw(s),f=s.cssPath??"src/index.css",b=[["components",l],["ui",u],["lib",h],["hooks",p]].filter(([,C])=>{let M=FP(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,d)||ow(e,d)?"pass":"warn",message:iw(e,d)||ow(e,d)?`${d} alias tsconfig yoki vite configda topildi.`:`${d} alias topilmadi. Import pathlar ishlamasligi mumkin.`});let y=nw(L__default.default.join(e,f)),w=LP(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=qP(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(n){let d=aw(e,["@fontsource-variable/geist","clsx","tailwind-merge","tw-animate-css"]);Ze(r,{name:"base-dependencies",status:d.length?"warn":"pass",message:d.length?`Yetishmayotgan dependencylar: ${d.join(", ")}`:"Base dependencylar package.json ichida bor."});}let a=r.filter(d=>d.status==="fail"),c=r.filter(d=>d.status==="warn");if(t.json){console.log(JSON.stringify({ok:a.length===0,checks:r},null,2));return}for(let d of r){let l=`${d.status.toUpperCase()} ${d.name}: ${d.message}`;d.status==="pass"&&x.success(l),d.status==="warn"&&x.warn(l),d.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 Ka=be(qe());async function lw(t){let e=process.cwd(),r=L__default.default.join(e,"tembro.json"),i=Ka.default.existsSync(r)?await Ka.default.readJson(r):{},o=t??i.cssPath??i.globalCssPath??"src/index.css",n=i.paths?.components??i.componentsPath??"src/components",s=await Mo({cwd:e,cssPath:o,componentsPath:n});x.success(`Tembro theme CSS yangilandi: ${s}`);}var dw={minimal:["button","input","card","badge"],dashboard:["button","input","card","badge","dropdown-menu","skeleton","tabs","page-state","filter-bar","description-list","info-card","data-table"]};async function uw(t,e={}){let r=dw[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("4.1.0");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(uw);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();
@@ -36,6 +36,8 @@ export type ChartSeries = {
36
36
  color?: string
37
37
  }
38
38
 
39
+ export type ChartCurve = "linear" | "monotone" | "natural" | "step"
40
+
39
41
  export type ChartAxisLabel = string | number | React.ReactNode
40
42
  export type ChartSize = "sm" | "md" | "lg"
41
43
  export type ChartState = "ready" | "loading" | "empty"
@@ -77,6 +79,18 @@ function ChartDataTable({ data, valueFormatter, caption }: { data: ChartDatum[];
77
79
  )
78
80
  }
79
81
 
82
+ function ChartSeriesDataTable({ labels, series, valueFormatter, caption }: { labels: ChartAxisLabel[]; series: ChartSeries[]; valueFormatter?: (value: number) => React.ReactNode; caption: string }) {
83
+ return (
84
+ <div className="sr-only">
85
+ <table>
86
+ <caption>{caption}</caption>
87
+ <thead><tr><th scope="col">Label</th>{series.map((item) => <th scope="col" key={item.key}>{item.label}</th>)}</tr></thead>
88
+ <tbody>{labels.map((label, index) => <tr key={index}><th scope="row">{label}</th>{series.map((item) => <td key={item.key}>{formatChartValue(item.data[index] ?? 0, valueFormatter)}</td>)}</tr>)}</tbody>
89
+ </table>
90
+ </div>
91
+ )
92
+ }
93
+
80
94
  export type ChartTooltipContentProps = {
81
95
  active?: boolean
82
96
  label?: React.ReactNode
@@ -129,7 +143,8 @@ function ChartFrame({ title, description, action, state = "ready", emptyLabel =
129
143
  }
130
144
 
131
145
  export type BarChartProps = React.ComponentProps<"div"> & {
132
- data: ChartDatum[]
146
+ data?: ChartDatum[]
147
+ series?: ChartSeries[]
133
148
  size?: ChartSize
134
149
  max?: number
135
150
  showLabels?: boolean
@@ -142,13 +157,23 @@ export type BarChartProps = React.ComponentProps<"div"> & {
142
157
  barClassName?: string
143
158
  domain?: ChartDomain
144
159
  ariaLabel?: string
160
+ stacked?: boolean
161
+ showLegend?: boolean
162
+ barRadius?: number
145
163
  }
146
164
 
147
- function BarChart({ data, size = "md", max, showLabels = true, showValues = false, showGrid = true, showTooltip = true, valueFormatter, state = "ready", emptyLabel = "No chart data.", barClassName, domain, ariaLabel = "Bar chart", className, ...props }: BarChartProps) {
165
+ function BarChart({ data = [], series, size = "md", max, showLabels = true, showValues = false, showGrid = true, showTooltip = true, valueFormatter, state = "ready", emptyLabel = "No chart data.", barClassName, domain, ariaLabel = "Bar chart", stacked = false, showLegend = Boolean(series?.length), barRadius = 6, className, ...props }: BarChartProps) {
148
166
  const height = chartHeightBySize[size]
149
- const status = state === "ready" && data.length === 0 ? "empty" : state
167
+ const activeSeries = series?.length ? series : [{ key: "value", label: "Value", data: data.map((item) => item.value) }]
168
+ const itemCount = Math.max(data.length, ...activeSeries.map((item) => item.data.length))
169
+ const status = state === "ready" && itemCount === 0 ? "empty" : state
150
170
  if (status !== "ready") return <ChartStatus state={status} emptyLabel={emptyLabel} height={height} />
151
- const chartData = data.map((item, index) => ({ name: toText(item.label, `Item ${index + 1}`), value: item.value, fill: getChartColor(index, item.color), originalLabel: item.label, description: item.description }))
171
+ const labels = Array.from({ length: itemCount }, (_, index) => data[index]?.label ?? `Item ${index + 1}`)
172
+ const chartData = labels.map((label, index) => Object.fromEntries([
173
+ ["name", toText(label, `Item ${index + 1}`)],
174
+ ["originalLabel", label],
175
+ ...activeSeries.map((item) => [item.key, item.data[index] ?? 0]),
176
+ ]))
152
177
  const resolvedDomain: ChartDomain = domain ?? (max !== undefined ? ["auto", max] : ["auto", "auto"])
153
178
 
154
179
  return (
@@ -160,19 +185,23 @@ function BarChart({ data, size = "md", max, showLabels = true, showValues = fals
160
185
  <XAxis dataKey="name" hide={!showLabels} axisLine={false} tickLine={false} tick={{ fill: "var(--muted-foreground)", fontSize: 12 }} interval="preserveStartEnd" />
161
186
  <YAxis hide domain={resolvedDomain} />
162
187
  {showTooltip ? <RechartsTooltip cursor={{ fill: "var(--muted)", opacity: 0.35 }} content={<ChartTooltipContent valueFormatter={valueFormatter} />} /> : null}
163
- <Bar dataKey="value" name="Value" radius={[6, 6, 2, 2]} className={barClassName} isAnimationActive={false} label={showValues ? { position: "top", fill: "var(--muted-foreground)", fontSize: 11, formatter: (value: unknown) => String(formatChartValue(Number(value), valueFormatter)) } : false}>
164
- {chartData.map((item) => <Cell key={item.name} fill={item.fill} />)}
165
- </Bar>
188
+ {activeSeries.map((item, seriesIndex) => (
189
+ <Bar key={item.key} dataKey={item.key} name={toText(item.label, item.key)} fill={getChartColor(seriesIndex, item.color)} stackId={stacked ? "total" : undefined} radius={[barRadius, barRadius, 2, 2]} className={barClassName} isAnimationActive={false} label={showValues && (!stacked || seriesIndex === activeSeries.length - 1) ? { position: "top", fill: "var(--muted-foreground)", fontSize: 11, formatter: (value: unknown) => String(formatChartValue(Number(value), valueFormatter)) } : false}>
190
+ {!series?.length ? data.map((datum, index) => <Cell key={index} fill={getChartColor(index, datum.color)} />) : null}
191
+ </Bar>
192
+ ))}
166
193
  </RechartsBarChart>
167
194
  </ResponsiveContainer>
168
195
  </div>
169
- <ChartDataTable data={data} valueFormatter={valueFormatter} caption={ariaLabel} />
196
+ {showLegend && activeSeries.length > 1 ? <ChartLegend className="mt-3" data={activeSeries.map((item, index) => ({ label: item.label, value: 0, color: getChartColor(index, item.color) }))} /> : null}
197
+ {series?.length ? <ChartSeriesDataTable labels={labels} series={activeSeries} valueFormatter={valueFormatter} caption={ariaLabel} /> : <ChartDataTable data={data} valueFormatter={valueFormatter} caption={ariaLabel} />}
170
198
  </div>
171
199
  )
172
200
  }
173
201
 
174
202
  export type LineChartProps = Omit<React.ComponentProps<"div">, "children"> & {
175
- values: number[]
203
+ values?: number[]
204
+ series?: ChartSeries[]
176
205
  size?: ChartSize
177
206
  width?: number
178
207
  height?: number
@@ -187,13 +216,22 @@ export type LineChartProps = Omit<React.ComponentProps<"div">, "children"> & {
187
216
  emptyLabel?: React.ReactNode
188
217
  domain?: ChartDomain
189
218
  ariaLabel?: string
219
+ curve?: ChartCurve
220
+ showDots?: boolean
221
+ showLegend?: boolean
222
+ gradient?: boolean
223
+ strokeWidth?: number
190
224
  }
191
225
 
192
- function LineChart({ values, size = "md", width = 560, height: heightProp, showArea = false, showGrid = true, showAxis = false, showTooltip = true, labels, valueFormatter, stroke = "var(--primary)", state = "ready", emptyLabel = "No line data.", domain = ["auto", "auto"], ariaLabel = showArea ? "Area chart" : "Line chart", className, style, ...props }: LineChartProps) {
226
+ function LineChart({ values = [], series, size = "md", width = 560, height: heightProp, showArea = false, showGrid = true, showAxis = false, showTooltip = true, labels, valueFormatter, stroke = "var(--primary)", state = "ready", emptyLabel = "No line data.", domain = ["auto", "auto"], ariaLabel = showArea ? "Area chart" : "Line chart", curve = "monotone", showDots = !showArea, showLegend = Boolean(series?.length), gradient = showArea, strokeWidth = 2.5, className, style, ...props }: LineChartProps) {
193
227
  const height = heightProp ?? chartHeightBySize[size]
194
- const status = state === "ready" && values.length === 0 ? "empty" : state
228
+ const gradientId = React.useId().replace(/:/g, "")
229
+ const activeSeries = series?.length ? series : [{ key: "value", label: "Value", data: values, color: stroke }]
230
+ const itemCount = Math.max(...activeSeries.map((item) => item.data.length), 0)
231
+ const status = state === "ready" && itemCount === 0 ? "empty" : state
195
232
  if (status !== "ready") return <ChartStatus state={status} emptyLabel={emptyLabel} height={height} />
196
- const data = values.map((value, index) => ({ name: toText(labels?.[index], String(index + 1)), value, originalLabel: labels?.[index] ?? String(index + 1) }))
233
+ const resolvedLabels = Array.from({ length: itemCount }, (_, index) => labels?.[index] ?? String(index + 1))
234
+ const data = resolvedLabels.map((label, index) => Object.fromEntries([["name", toText(label, String(index + 1))], ["originalLabel", label], ...activeSeries.map((item) => [item.key, item.data[index] ?? 0])]))
197
235
  const Engine = showArea ? RechartsAreaChart : RechartsLineChart
198
236
 
199
237
  return (
@@ -201,22 +239,24 @@ function LineChart({ values, size = "md", width = 560, height: heightProp, showA
201
239
  <div style={{ height }}>
202
240
  <ResponsiveContainer width="100%" height="100%" minWidth={1} minHeight={1}>
203
241
  <Engine data={data} margin={{ top: 10, right: 10, bottom: showAxis ? 8 : 0, left: showAxis ? -12 : 0 }}>
242
+ {showArea && gradient ? <defs>{activeSeries.map((item, index) => { const color = getChartColor(index, item.color); return <linearGradient key={item.key} id={`${gradientId}-${item.key}`} x1="0" y1="0" x2="0" y2="1"><stop offset="0%" stopColor={color} stopOpacity={0.34} /><stop offset="92%" stopColor={color} stopOpacity={0.02} /></linearGradient> })}</defs> : null}
204
243
  {showGrid ? <CartesianGrid vertical={false} stroke="var(--border)" strokeDasharray="4 6" /> : null}
205
244
  <XAxis dataKey="name" hide={!showAxis} axisLine={false} tickLine={false} tick={{ fill: "var(--muted-foreground)", fontSize: 12 }} interval="preserveStartEnd" />
206
245
  <YAxis hide={!showAxis} domain={domain} axisLine={false} tickLine={false} width={44} tick={{ fill: "var(--muted-foreground)", fontSize: 11 }} />
207
246
  {showTooltip ? <RechartsTooltip content={<ChartTooltipContent valueFormatter={valueFormatter} />} /> : null}
208
- {showArea ? <Area type="monotone" dataKey="value" name="Value" stroke={stroke} strokeWidth={2.5} fill={stroke} fillOpacity={0.14} activeDot={{ r: 5 }} isAnimationActive={false} /> : <Line type="monotone" dataKey="value" name="Value" stroke={stroke} strokeWidth={2.5} dot={{ r: 3.5, fill: stroke }} activeDot={{ r: 5 }} isAnimationActive={false} />}
247
+ {activeSeries.map((item, index) => { const color = getChartColor(index, item.color); return showArea ? <Area key={item.key} type={curve} dataKey={item.key} name={toText(item.label, item.key)} stroke={color} strokeWidth={strokeWidth} fill={gradient ? `url(#${gradientId}-${item.key})` : color} fillOpacity={gradient ? 1 : 0.12} dot={showDots ? { r: 3, fill: color, strokeWidth: 2, stroke: "var(--background)" } : false} activeDot={{ r: 5, strokeWidth: 2, stroke: "var(--background)" }} isAnimationActive={false} /> : <Line key={item.key} type={curve} dataKey={item.key} name={toText(item.label, item.key)} stroke={color} strokeWidth={strokeWidth} dot={showDots ? { r: 3, fill: color, strokeWidth: 2, stroke: "var(--background)" } : false} activeDot={{ r: 5, strokeWidth: 2, stroke: "var(--background)" }} isAnimationActive={false} /> })}
209
248
  </Engine>
210
249
  </ResponsiveContainer>
211
250
  </div>
212
- <ChartDataTable data={values.map((value, index) => ({ label: labels?.[index] ?? index + 1, value }))} valueFormatter={valueFormatter} caption={ariaLabel} />
251
+ {showLegend && activeSeries.length > 1 ? <ChartLegend className="mt-3" data={activeSeries.map((item, index) => ({ label: item.label, value: 0, color: getChartColor(index, item.color) }))} /> : null}
252
+ <ChartSeriesDataTable labels={resolvedLabels} series={activeSeries} valueFormatter={valueFormatter} caption={ariaLabel} />
213
253
  </div>
214
254
  )
215
255
  }
216
256
 
217
257
  function AreaChart(props: Omit<LineChartProps, "showArea">) { return <LineChart showArea {...props} /> }
218
258
 
219
- export type SparklineProps = Omit<LineChartProps, "size" | "showArea" | "showAxis"> & { values: number[]; positive?: boolean }
259
+ export type SparklineProps = Omit<LineChartProps, "size" | "showArea" | "showAxis" | "series" | "showLegend"> & { values: number[]; positive?: boolean }
220
260
 
221
261
  function Sparkline({ values, positive = true, stroke, className, showTooltip = false, ...props }: SparklineProps) {
222
262
  return <LineChart values={values} size="sm" stroke={stroke ?? (positive ? "var(--aui-success,var(--primary))" : "var(--destructive)")} showGrid={false} showAxis={false} showTooltip={showTooltip} className={cn("max-w-44", className)} ariaLabel="Sparkline" {...props} />
@@ -117,7 +117,7 @@ function ActivityFeed({
117
117
  className={cn("relative flex gap-3 pb-4 last:pb-0", isCompact && "gap-2 pb-3", itemClassName, item.className)}
118
118
  >
119
119
  {showConnector && index < visibleItems.length - 1 && (
120
- <div className={cn("absolute left-3 top-7 h-[calc(100%-1.75rem)] w-px bg-border", connectorClassName)} />
120
+ <div data-slot="activity-feed-connector" className={cn("absolute left-5 top-8 h-[calc(100%-2rem)] w-px bg-border", connectorClassName)} />
121
121
  )}
122
122
  {item.href ? (
123
123
  <a