tembro 3.1.5 → 3.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -1
- package/README.md +241 -91
- package/dist/components/ui/dialog/index.d.ts +3 -1
- package/dist/components/ui/select/index.d.ts +6 -3
- package/dist/showcase/package-meta.d.ts +3 -3
- package/dist/showcase/premium/wizard/index.cjs +1 -0
- package/dist/showcase/premium/wizard/index.d.ts +2 -0
- package/dist/showcase/premium/wizard/index.js +1 -0
- package/dist/showcase/premium/wizard/mock.cjs +1 -0
- package/dist/showcase/premium/wizard/mock.d.ts +2 -0
- package/dist/showcase/premium/wizard/mock.js +1 -0
- package/dist/showcase/premium/wizard/showcase.cjs +1 -0
- package/dist/showcase/premium/wizard/showcase.d.ts +2 -0
- package/dist/showcase/premium/wizard/showcase.js +1 -0
- package/dist/showcase/search-utils.d.ts +1 -1
- package/dist/showcase/site-data.d.ts +6 -6
- package/dist/src/components/layout/app-sidebar.cjs +1 -1
- package/dist/src/components/layout/app-sidebar.js +49 -36
- package/dist/src/components/theme-provider.cjs +1 -1
- package/dist/src/components/theme-provider.js +1 -1
- package/dist/src/components/ui/dialog/index.cjs +1 -1
- package/dist/src/components/ui/dialog/index.js +14 -7
- package/dist/src/components/ui/select/index.cjs +1 -1
- package/dist/src/components/ui/select/index.js +44 -43
- package/dist/src/index.cjs +1 -1
- package/dist/src/index.js +101 -101
- package/dist/src/showcase/component-api-schema.cjs +1 -1
- package/dist/src/showcase/component-api-schema.js +868 -9
- package/dist/src/showcase/demo-snippets/forms/index.cjs +1 -1
- package/dist/src/showcase/demo-snippets/forms/index.js +1 -1
- package/dist/src/showcase/fallback.cjs +4 -4
- package/dist/src/showcase/fallback.js +354 -181
- package/dist/src/showcase/index.cjs +1 -1
- package/dist/src/showcase/index.js +2 -2
- package/dist/src/showcase/package-meta.cjs +1 -1
- package/dist/src/showcase/package-meta.js +1 -1
- package/dist/src/showcase/premium/app-sidebar/mock.cjs +3 -2
- package/dist/src/showcase/premium/app-sidebar/mock.js +1 -1
- package/dist/src/showcase/premium/app-sidebar/showcase.cjs +1 -1
- package/dist/src/showcase/premium/app-sidebar/showcase.js +1 -1
- package/dist/src/showcase/premium/async-select/showcase.cjs +1 -1
- package/dist/src/showcase/premium/async-select/showcase.js +118 -74
- package/dist/src/showcase/premium/avatar/showcase.cjs +1 -1
- package/dist/src/showcase/premium/avatar/showcase.js +5 -5
- package/dist/src/showcase/premium/dialog/mock.cjs +6 -1
- package/dist/src/showcase/premium/dialog/mock.js +1 -1
- package/dist/src/showcase/premium/dialog/showcase.cjs +1 -1
- package/dist/src/showcase/premium/dialog/showcase.js +101 -39
- package/dist/src/showcase/premium/form-wrapper/mock.cjs +2 -2
- package/dist/src/showcase/premium/form-wrapper/mock.js +2 -2
- package/dist/src/showcase/premium/form-wrapper/showcase.cjs +1 -1
- package/dist/src/showcase/premium/form-wrapper/showcase.js +1 -1
- package/dist/src/showcase/premium/index.cjs +1 -1
- package/dist/src/showcase/premium/index.js +9 -3
- package/dist/src/showcase/premium/input/showcase.cjs +1 -1
- package/dist/src/showcase/premium/input/showcase.js +1 -1
- package/dist/src/showcase/premium/json-input/showcase.cjs +1 -1
- package/dist/src/showcase/premium/json-input/showcase.js +1 -1
- package/dist/src/showcase/premium/select/showcase.cjs +1 -1
- package/dist/src/showcase/premium/select/showcase.js +53 -0
- package/dist/src/showcase/premium/table/mock.cjs +1 -1
- package/dist/src/showcase/premium/table/mock.js +1 -1
- package/dist/src/showcase/premium/types.cjs +1 -1
- package/dist/src/showcase/premium/types.js +1 -1
- package/dist/src/showcase/premium/wizard/index.cjs +1 -0
- package/dist/src/showcase/premium/wizard/index.js +3 -0
- package/dist/src/showcase/premium/wizard/mock.cjs +25 -0
- package/dist/src/showcase/premium/wizard/mock.js +32 -0
- package/dist/src/showcase/premium/wizard/showcase.cjs +1 -0
- package/dist/src/showcase/premium/wizard/showcase.js +130 -0
- package/dist/src/showcase/preview-registry.cjs +1 -1
- package/dist/src/showcase/preview-registry.js +6 -6
- package/dist/src/showcase/registry-quality.cjs +1 -1
- package/dist/src/showcase/registry-quality.js +5 -0
- package/dist/src/showcase/registry-specific.cjs +1 -1
- package/dist/src/showcase/registry-specific.js +2 -2
- package/dist/src/showcase/render-registry-preview.cjs +1 -1
- package/dist/src/showcase/render-registry-preview.js +2 -2
- package/dist/src/showcase/site-data.cjs +1 -1
- package/dist/src/showcase/site-data.js +198 -44
- package/dist/src/showcase/tembro-registry.json.cjs +1 -1
- package/dist/src/showcase/tembro-registry.json.js +1 -1
- package/dist/src/showcase/types.cjs +1 -1
- package/dist/src/showcase/types.js +1 -1
- package/package.json +13 -9
- package/packages/cli/dist/index.cjs +127 -127
- package/packages/cli/vendor/src/components/layout/app-sidebar.tsx +31 -6
- package/packages/cli/vendor/src/components/theme-provider.tsx +1 -1
- package/packages/cli/vendor/src/components/ui/dialog/index.tsx +15 -3
- package/packages/cli/vendor/src/components/ui/select/index.tsx +17 -10
- package/packages/cli/vendor/src/showcase/component-api-schema.ts +269 -39
- package/packages/cli/vendor/src/showcase/demo-snippets/forms/index.ts +1 -1
- package/packages/cli/vendor/src/showcase/fallback.tsx +202 -39
- package/packages/cli/vendor/src/showcase/index.ts +6 -6
- package/packages/cli/vendor/src/showcase/package-meta.ts +3 -3
- package/packages/cli/vendor/src/showcase/premium/app-sidebar/mock.ts +3 -2
- package/packages/cli/vendor/src/showcase/premium/app-sidebar/showcase.tsx +1 -1
- package/packages/cli/vendor/src/showcase/premium/async-select/showcase.tsx +50 -4
- package/packages/cli/vendor/src/showcase/premium/avatar/showcase.tsx +5 -5
- package/packages/cli/vendor/src/showcase/premium/dialog/mock.ts +6 -1
- package/packages/cli/vendor/src/showcase/premium/dialog/showcase.tsx +53 -1
- package/packages/cli/vendor/src/showcase/premium/form-wrapper/mock.ts +2 -2
- package/packages/cli/vendor/src/showcase/premium/form-wrapper/showcase.tsx +1 -1
- package/packages/cli/vendor/src/showcase/premium/index.ts +5 -3
- package/packages/cli/vendor/src/showcase/premium/input/showcase.tsx +1 -1
- package/packages/cli/vendor/src/showcase/premium/json-input/showcase.tsx +1 -1
- package/packages/cli/vendor/src/showcase/premium/select/showcase.tsx +38 -0
- package/packages/cli/vendor/src/showcase/premium/table/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/types.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/wizard/index.ts +2 -0
- package/packages/cli/vendor/src/showcase/premium/wizard/mock.ts +41 -0
- package/packages/cli/vendor/src/showcase/premium/wizard/showcase.tsx +88 -0
- package/packages/cli/vendor/src/showcase/preview-registry.tsx +6 -6
- package/packages/cli/vendor/src/showcase/registry-quality.ts +5 -0
- package/packages/cli/vendor/src/showcase/registry-specific.tsx +2 -2
- package/packages/cli/vendor/src/showcase/render-registry-preview.tsx +2 -2
- package/packages/cli/vendor/src/showcase/site-data.tsx +89 -32
- package/packages/cli/vendor/src/showcase/tembro-registry.json +1 -1
- package/packages/cli/vendor/src/showcase/types.ts +1 -1
- package/registry.json +1 -1
|
@@ -65,7 +65,7 @@ var S = [
|
|
|
65
65
|
"validation contract",
|
|
66
66
|
"label/description consistency",
|
|
67
67
|
"disabled/readOnly handling"
|
|
68
|
-
], ue = "tembro", w = "tembro", de = "tembro", fe = "
|
|
68
|
+
], ue = "tembro", w = "tembro", de = "tembro", fe = "tembro", pe = `npx ${w} init --template next --defaults`, me = `npx ${w} init --template vite --defaults`, he = `npx ${w} add button input`, T = `${pe}\n${he}`, ge = `npx ${w} --help`, _e = `npx ${w} theme`, ve = "https://www.npmjs.com/package/tembro", E = "https://github.com/AzamatJurayev-dev/azamat-ui-kit", ye = `${E}/releases`, be = E, xe = ye, Se = `${be}/releases`, D = "/docs", O = [{
|
|
69
69
|
version: i,
|
|
70
70
|
date: r,
|
|
71
71
|
status: "Published",
|
|
@@ -85,7 +85,7 @@ var S = [
|
|
|
85
85
|
"Deprecated route-level names stayed aliased for compatibility while primary docs move toward simpler canonical surfaces.",
|
|
86
86
|
"Docs app metadata now prefers current package registry vocabulary over older showcase-only names."
|
|
87
87
|
]
|
|
88
|
-
}], Ce = O[0]?.version ?? "3.1.
|
|
88
|
+
}], Ce = O[0]?.version ?? "3.1.7", we = O[0]?.date ?? "July 15, 2026", k = (e) => `/components/${e}`, A = (e) => `/playground/${e}`, j = (e) => `/components/${e}`, Te = (e) => e.replace(/([a-z])([A-Z])/g, "$1-$2").replace(/\s+/g, "-").toLowerCase(), Ee = (e, t) => `/components/${e}/${Te(t)}`, De = (e) => `/templates/${e}`, M = (e) => `/blocks/${e}`, N = [
|
|
89
89
|
"Primitives",
|
|
90
90
|
"Form Controls",
|
|
91
91
|
"Overlay",
|
|
@@ -3039,66 +3039,220 @@ var z = [
|
|
|
3039
3039
|
function Ge(e) {
|
|
3040
3040
|
return e.split("-").filter(Boolean).map((e) => e.charAt(0).toUpperCase() + e.slice(1)).join(" ");
|
|
3041
3041
|
}
|
|
3042
|
-
var Ke =
|
|
3042
|
+
var Ke = {
|
|
3043
|
+
ui: [
|
|
3044
|
+
"Composable primitive",
|
|
3045
|
+
"Variant-ready styling",
|
|
3046
|
+
"Keyboard and focus-friendly defaults",
|
|
3047
|
+
"Local source-copy customization"
|
|
3048
|
+
],
|
|
3049
|
+
actions: [
|
|
3050
|
+
"Action composition",
|
|
3051
|
+
"Icon and label pairing",
|
|
3052
|
+
"Keyboard and focus-friendly defaults",
|
|
3053
|
+
"Dense toolbar usage"
|
|
3054
|
+
],
|
|
3055
|
+
feedback: [
|
|
3056
|
+
"Inline status messaging",
|
|
3057
|
+
"Loading, empty or error context",
|
|
3058
|
+
"Accessible status copy",
|
|
3059
|
+
"Actionable recovery guidance"
|
|
3060
|
+
],
|
|
3061
|
+
display: [
|
|
3062
|
+
"Structured content display",
|
|
3063
|
+
"Empty and loading state support",
|
|
3064
|
+
"Accessible reading order",
|
|
3065
|
+
"Responsive data presentation"
|
|
3066
|
+
],
|
|
3067
|
+
overlay: [
|
|
3068
|
+
"Focused overlay behavior",
|
|
3069
|
+
"Escape and outside-click handling",
|
|
3070
|
+
"Accessible focus management",
|
|
3071
|
+
"Compact action footer"
|
|
3072
|
+
],
|
|
3073
|
+
inputs: [
|
|
3074
|
+
"Controlled value support",
|
|
3075
|
+
"Validation-ready states",
|
|
3076
|
+
"Keyboard and focus-friendly defaults",
|
|
3077
|
+
"Form-friendly composition"
|
|
3078
|
+
],
|
|
3079
|
+
form: [
|
|
3080
|
+
"Form shell integration",
|
|
3081
|
+
"Validation and error states",
|
|
3082
|
+
"Accessible label contract",
|
|
3083
|
+
"Reusable field composition"
|
|
3084
|
+
],
|
|
3085
|
+
dataTable: [
|
|
3086
|
+
"Data workflow composition",
|
|
3087
|
+
"Sorting/filtering integration",
|
|
3088
|
+
"Accessible row and header semantics",
|
|
3089
|
+
"Responsive operator surfaces"
|
|
3090
|
+
],
|
|
3091
|
+
data_table: [
|
|
3092
|
+
"Data workflow composition",
|
|
3093
|
+
"Sorting/filtering integration",
|
|
3094
|
+
"Accessible row and header semantics",
|
|
3095
|
+
"Responsive operator surfaces"
|
|
3096
|
+
],
|
|
3097
|
+
layout: [
|
|
3098
|
+
"Route-level structure",
|
|
3099
|
+
"Navigation-aware composition",
|
|
3100
|
+
"Responsive shell behavior",
|
|
3101
|
+
"Reusable product framing"
|
|
3102
|
+
],
|
|
3103
|
+
navigation: [
|
|
3104
|
+
"Section navigation",
|
|
3105
|
+
"Current state support",
|
|
3106
|
+
"Keyboard and focus-friendly defaults",
|
|
3107
|
+
"Route-friendly links"
|
|
3108
|
+
],
|
|
3109
|
+
filters: [
|
|
3110
|
+
"Search and filter composition",
|
|
3111
|
+
"Saved or reusable filter state",
|
|
3112
|
+
"Accessible control labels",
|
|
3113
|
+
"Data-table integration"
|
|
3114
|
+
],
|
|
3115
|
+
calendar: [
|
|
3116
|
+
"Date selection workflow",
|
|
3117
|
+
"Boundary and disabled-date support",
|
|
3118
|
+
"Keyboard and focus-friendly defaults",
|
|
3119
|
+
"Scheduling-ready layout"
|
|
3120
|
+
],
|
|
3121
|
+
upload: [
|
|
3122
|
+
"File interaction workflow",
|
|
3123
|
+
"Preview and progress states",
|
|
3124
|
+
"Accessible upload guidance",
|
|
3125
|
+
"Validation-ready constraints"
|
|
3126
|
+
],
|
|
3127
|
+
wizard: [
|
|
3128
|
+
"Step flow composition",
|
|
3129
|
+
"Progress and completion state",
|
|
3130
|
+
"Keyboard and focus-friendly defaults",
|
|
3131
|
+
"Guided form workflow"
|
|
3132
|
+
],
|
|
3133
|
+
notifications: [
|
|
3134
|
+
"Transient status messaging",
|
|
3135
|
+
"Unread and dismiss flows",
|
|
3136
|
+
"Accessible notification copy",
|
|
3137
|
+
"Async completion feedback"
|
|
3138
|
+
],
|
|
3139
|
+
command: [
|
|
3140
|
+
"Keyboard-first discovery",
|
|
3141
|
+
"Search and grouped actions",
|
|
3142
|
+
"Accessible command labels",
|
|
3143
|
+
"Route or action execution"
|
|
3144
|
+
],
|
|
3145
|
+
patterns: [
|
|
3146
|
+
"Composed product workflow",
|
|
3147
|
+
"Reusable screen section",
|
|
3148
|
+
"Accessible structure",
|
|
3149
|
+
"Production layout starting point"
|
|
3150
|
+
]
|
|
3151
|
+
}, qe = {
|
|
3152
|
+
ui: "Reusable primitive for product interfaces with source-copy styling and predictable focus behavior.",
|
|
3153
|
+
actions: "Action surface for dense product workflows, toolbar controls and copy-friendly command areas.",
|
|
3154
|
+
feedback: "Status surface for communicating loading, empty, success, warning or error context with a clear next step.",
|
|
3155
|
+
display: "Read-oriented surface for presenting operational content, metadata, timelines or structured records.",
|
|
3156
|
+
overlay: "Focused overlay pattern for short decisions, contextual actions and contained editing flows.",
|
|
3157
|
+
inputs: "Input surface for controlled values, validation states and form-ready interaction patterns.",
|
|
3158
|
+
form: "Form composition helper for labels, validation, controlled values and repeatable field structure.",
|
|
3159
|
+
dataTable: "Data workflow helper for reusable tables, row actions, filtering, selection and responsive records.",
|
|
3160
|
+
data_table: "Data workflow helper for reusable tables, row actions, filtering, selection and responsive records.",
|
|
3161
|
+
layout: "Layout helper for route-level structure, navigation context and reusable application shells.",
|
|
3162
|
+
navigation: "Navigation helper for route-aware sections, current state and keyboard-friendly movement.",
|
|
3163
|
+
filters: "Filter composition helper for search, chips, saved views and data narrowing workflows.",
|
|
3164
|
+
calendar: "Date and schedule surface for reporting, planning, disabled-date rules and calendar-style selection.",
|
|
3165
|
+
upload: "Upload workflow surface for files, images, preview states, progress and validation guidance.",
|
|
3166
|
+
wizard: "Guided workflow surface for multi-step forms, progress state and step-by-step completion.",
|
|
3167
|
+
notifications: "Notification surface for async status, unread activity, dismiss behavior and transient updates.",
|
|
3168
|
+
command: "Command surface for keyboard-first search, grouped actions and fast route or action discovery.",
|
|
3169
|
+
patterns: "Composed product pattern that combines primitives into reusable production screen sections."
|
|
3170
|
+
};
|
|
3171
|
+
function Je(e) {
|
|
3172
|
+
return Ke[e] ?? [
|
|
3173
|
+
"Source-copy component",
|
|
3174
|
+
"Composable product usage",
|
|
3175
|
+
"Keyboard and focus-friendly defaults",
|
|
3176
|
+
"Local customization"
|
|
3177
|
+
];
|
|
3178
|
+
}
|
|
3179
|
+
function Ye(e, t) {
|
|
3180
|
+
return `${t}. ${qe[e] ?? "Reusable source-copy surface for production product interfaces."}`;
|
|
3181
|
+
}
|
|
3182
|
+
var Xe = new Set(z.map((e) => e.slug)), G = /* @__PURE__ */ new Map();
|
|
3043
3183
|
for (let [e, n] of Object.entries(Re)) if (!(Be.has(e) || He.has(e))) for (let r of n) {
|
|
3044
3184
|
let n = H[r], i = n ?? r;
|
|
3045
|
-
if (!r || Ve.has(r) || Ve.has(i) || U.has(i) && !t(i) || U.has(r) && !t(r) ||
|
|
3185
|
+
if (!r || Ve.has(r) || Ve.has(i) || U.has(i) && !t(i) || U.has(r) && !t(r) || Xe.has(i) || G.has(i)) continue;
|
|
3046
3186
|
let a = Ue[e] ?? "Data Display", o = We[e] ?? _;
|
|
3047
3187
|
G.set(i, {
|
|
3048
3188
|
slug: i,
|
|
3049
3189
|
title: Ge(n || i),
|
|
3050
|
-
description:
|
|
3190
|
+
description: Ye(e, Ge(i)),
|
|
3051
3191
|
icon: o,
|
|
3052
3192
|
category: a,
|
|
3053
3193
|
status: ze.has(i) ? "Stable" : "Preview",
|
|
3054
3194
|
installCommand: T,
|
|
3055
|
-
propsRows: [
|
|
3056
|
-
|
|
3057
|
-
|
|
3058
|
-
|
|
3059
|
-
|
|
3060
|
-
|
|
3061
|
-
|
|
3195
|
+
propsRows: [
|
|
3196
|
+
[
|
|
3197
|
+
"className",
|
|
3198
|
+
"string",
|
|
3199
|
+
"-",
|
|
3200
|
+
"Additional classes for wrapper element."
|
|
3201
|
+
],
|
|
3202
|
+
[
|
|
3203
|
+
"children",
|
|
3204
|
+
"ReactNode",
|
|
3205
|
+
"-",
|
|
3206
|
+
"Optional composed content or custom slots when the component supports composition."
|
|
3207
|
+
],
|
|
3208
|
+
[
|
|
3209
|
+
"aria-label",
|
|
3210
|
+
"string",
|
|
3211
|
+
"-",
|
|
3212
|
+
"Accessible label for icon-only, compact, or non-text usage."
|
|
3213
|
+
]
|
|
3214
|
+
],
|
|
3215
|
+
features: Je(e)
|
|
3062
3216
|
});
|
|
3063
3217
|
}
|
|
3064
|
-
var
|
|
3218
|
+
var Ze = [...G.values()], K = [...z, ...Ze].filter((e) => !W.has(e.slug)), q = [], J = new Map(q.map((e) => [e.slug, e])), Qe = new Set([
|
|
3065
3219
|
...W,
|
|
3066
3220
|
"app-header",
|
|
3067
3221
|
"page-header",
|
|
3068
3222
|
"resource-page",
|
|
3069
3223
|
"resource-detail-page"
|
|
3070
|
-
]),
|
|
3224
|
+
]), $e = new Set([...Qe, ...F.keys()]);
|
|
3071
3225
|
function Y(e) {
|
|
3072
3226
|
if (!e) return;
|
|
3073
3227
|
let t = I(e), n = X(t);
|
|
3074
3228
|
return t === n ? J.get(t) ?? K.find((e) => e.slug === t) : J.get(n) ?? K.find((e) => e.slug === n);
|
|
3075
3229
|
}
|
|
3076
|
-
function
|
|
3230
|
+
function et(e) {
|
|
3077
3231
|
return J.has(I(e)) || Ie.has(I(e));
|
|
3078
3232
|
}
|
|
3079
3233
|
function X(e) {
|
|
3080
3234
|
let t = I(e);
|
|
3081
|
-
return
|
|
3235
|
+
return et(t) ? t : Le[t] ?? t;
|
|
3082
3236
|
}
|
|
3083
|
-
function
|
|
3237
|
+
function tt(e) {
|
|
3084
3238
|
return Y(X(e))?.title ?? e;
|
|
3085
3239
|
}
|
|
3086
3240
|
function Z() {
|
|
3087
3241
|
let n = K.filter((e) => X(e.slug) === e.slug), r = /* @__PURE__ */ new Map();
|
|
3088
3242
|
for (let e of n) r.set(e.slug, e);
|
|
3089
3243
|
for (let e of q) r.set(e.slug, e);
|
|
3090
|
-
return Array.from(r.values()).filter((e) => !
|
|
3244
|
+
return Array.from(r.values()).filter((e) => !Qe.has(e.slug)).filter((e) => t(e.slug)).sort((t, n) => {
|
|
3091
3245
|
let r = e(t.slug, n.slug);
|
|
3092
3246
|
return r === 0 ? t.title.localeCompare(n.title) : r;
|
|
3093
3247
|
});
|
|
3094
3248
|
}
|
|
3095
|
-
function
|
|
3249
|
+
function nt() {
|
|
3096
3250
|
let e = /* @__PURE__ */ new Map();
|
|
3097
3251
|
for (let t of K) e.set(t.slug, t);
|
|
3098
3252
|
for (let t of q) e.set(t.slug, t);
|
|
3099
|
-
return Array.from(e.values()).filter((e) =>
|
|
3253
|
+
return Array.from(e.values()).filter((e) => !$e.has(e.slug)).sort((e, t) => e.title.localeCompare(t.title));
|
|
3100
3254
|
}
|
|
3101
|
-
function
|
|
3255
|
+
function rt(e) {
|
|
3102
3256
|
let t = e ? X(e) : void 0;
|
|
3103
3257
|
return Z().map((e) => ({
|
|
3104
3258
|
slug: e.slug,
|
|
@@ -3109,9 +3263,9 @@ function $e(e) {
|
|
|
3109
3263
|
active: t ? X(e.slug) === t : !1
|
|
3110
3264
|
})).sort((e, t) => e.title.localeCompare(t.title));
|
|
3111
3265
|
}
|
|
3112
|
-
function
|
|
3266
|
+
function it(e) {
|
|
3113
3267
|
let t = /* @__PURE__ */ new Map();
|
|
3114
|
-
for (let n of
|
|
3268
|
+
for (let n of rt(e)) {
|
|
3115
3269
|
let e = n.title[0]?.toUpperCase() ?? "#", r = `${e} - ${n.group}`;
|
|
3116
3270
|
t.has(r) || t.set(r, {
|
|
3117
3271
|
key: r,
|
|
@@ -3121,7 +3275,7 @@ function et(e) {
|
|
|
3121
3275
|
}
|
|
3122
3276
|
return Array.from(t.values());
|
|
3123
3277
|
}
|
|
3124
|
-
function
|
|
3278
|
+
function at(e) {
|
|
3125
3279
|
return (B[X(e)] ?? []).map((e) => ({
|
|
3126
3280
|
...e,
|
|
3127
3281
|
slugs: e.slugs.filter((e) => !W.has(e))
|
|
@@ -3130,7 +3284,7 @@ function tt(e) {
|
|
|
3130
3284
|
function Q(e) {
|
|
3131
3285
|
return (e ? [X(e)] : Object.keys(B)).flatMap((e) => {
|
|
3132
3286
|
let t = Y(e);
|
|
3133
|
-
return
|
|
3287
|
+
return at(e).flatMap((n) => {
|
|
3134
3288
|
let r = [];
|
|
3135
3289
|
for (let i of n.slugs) {
|
|
3136
3290
|
let a = K.find((e) => e.slug === i);
|
|
@@ -3154,10 +3308,10 @@ function Q(e) {
|
|
|
3154
3308
|
});
|
|
3155
3309
|
});
|
|
3156
3310
|
}
|
|
3157
|
-
function
|
|
3311
|
+
function ot(e) {
|
|
3158
3312
|
return Q().find((t) => t.component === e);
|
|
3159
3313
|
}
|
|
3160
|
-
function
|
|
3314
|
+
function st(e) {
|
|
3161
3315
|
let t = new Set(e);
|
|
3162
3316
|
return Q().filter((e) => t.has(e.component));
|
|
3163
3317
|
}
|
|
@@ -3404,7 +3558,7 @@ var $ = [
|
|
|
3404
3558
|
"Progress state"
|
|
3405
3559
|
]
|
|
3406
3560
|
}
|
|
3407
|
-
],
|
|
3561
|
+
], ct = [
|
|
3408
3562
|
{
|
|
3409
3563
|
label: "Docs",
|
|
3410
3564
|
href: D
|
|
@@ -3425,7 +3579,7 @@ var $ = [
|
|
|
3425
3579
|
label: "Changelog",
|
|
3426
3580
|
href: "/changelog"
|
|
3427
3581
|
}
|
|
3428
|
-
],
|
|
3582
|
+
], lt = [{
|
|
3429
3583
|
title: "Getting Started",
|
|
3430
3584
|
items: [
|
|
3431
3585
|
{
|
|
@@ -3452,7 +3606,7 @@ var $ = [
|
|
|
3452
3606
|
}, ...N.map((e) => ({
|
|
3453
3607
|
title: e,
|
|
3454
3608
|
items: R(e, k)
|
|
3455
|
-
})).filter((e) => e.items.length > 0)],
|
|
3609
|
+
})).filter((e) => e.items.length > 0)], ut = [{
|
|
3456
3610
|
title: "Getting Started",
|
|
3457
3611
|
items: [
|
|
3458
3612
|
{
|
|
@@ -3484,7 +3638,7 @@ var $ = [
|
|
|
3484
3638
|
}, ...N.map((e) => ({
|
|
3485
3639
|
title: e,
|
|
3486
3640
|
items: R(e, A)
|
|
3487
|
-
})).filter((e) => e.items.length > 0)],
|
|
3641
|
+
})).filter((e) => e.items.length > 0)], dt = [
|
|
3488
3642
|
"All blocks",
|
|
3489
3643
|
"Dashboard",
|
|
3490
3644
|
"Auth",
|
|
@@ -3493,15 +3647,15 @@ var $ = [
|
|
|
3493
3647
|
"Pricing",
|
|
3494
3648
|
"Product",
|
|
3495
3649
|
"Marketing"
|
|
3496
|
-
],
|
|
3650
|
+
], ft = [
|
|
3497
3651
|
"All layouts",
|
|
3498
3652
|
"Application",
|
|
3499
3653
|
"Marketing"
|
|
3500
|
-
],
|
|
3654
|
+
], pt = [
|
|
3501
3655
|
"All themes",
|
|
3502
3656
|
"Light",
|
|
3503
3657
|
"Soft"
|
|
3504
|
-
],
|
|
3658
|
+
], mt = ["Popular", "A-Z"], ht = [
|
|
3505
3659
|
{
|
|
3506
3660
|
title: "Application blocks",
|
|
3507
3661
|
text: "Dashboard, table and settings blocks should show route structure, visible actions and realistic operational density.",
|
|
@@ -3532,7 +3686,7 @@ var $ = [
|
|
|
3532
3686
|
"Install path"
|
|
3533
3687
|
]
|
|
3534
3688
|
}
|
|
3535
|
-
],
|
|
3689
|
+
], gt = {
|
|
3536
3690
|
slug: "dashboard-starter",
|
|
3537
3691
|
title: "Modern Dashboard",
|
|
3538
3692
|
description: "Clean dashboard with analytics, charts, and activity tables.",
|
|
@@ -3574,7 +3728,7 @@ var $ = [
|
|
|
3574
3728
|
"components/blocks/dashboard/activity-table.tsx"
|
|
3575
3729
|
],
|
|
3576
3730
|
notes: ["Use this block when one dashboard section is enough; move to the template when navigation and multiple zones are required.", "Primary actions should stay tied to one operational area, not a full application workflow."]
|
|
3577
|
-
},
|
|
3731
|
+
}, _t = [
|
|
3578
3732
|
{
|
|
3579
3733
|
slug: "sidebar-layout",
|
|
3580
3734
|
title: "Sidebar Layout",
|
|
@@ -3800,7 +3954,7 @@ var $ = [
|
|
|
3800
3954
|
copyTargets: ["components/blocks/finance/invoices-table.tsx", "components/blocks/finance/invoice-actions.tsx"],
|
|
3801
3955
|
notes: ["Finance blocks need explicit status language; avoid vague marketing labels in invoice rows.", "When the page needs broader reporting and settings, step up to a template-level surface."]
|
|
3802
3956
|
}
|
|
3803
|
-
],
|
|
3957
|
+
], vt = T, yt = [
|
|
3804
3958
|
[
|
|
3805
3959
|
"variant",
|
|
3806
3960
|
"'default' | 'secondary' | ...",
|
|
@@ -3837,7 +3991,7 @@ var $ = [
|
|
|
3837
3991
|
"-",
|
|
3838
3992
|
"Click event handler."
|
|
3839
3993
|
]
|
|
3840
|
-
],
|
|
3994
|
+
], bt = [
|
|
3841
3995
|
"Installation",
|
|
3842
3996
|
"Variations",
|
|
3843
3997
|
"Sizes",
|
|
@@ -3847,7 +4001,7 @@ var $ = [
|
|
|
3847
4001
|
"Examples",
|
|
3848
4002
|
"API Reference",
|
|
3849
4003
|
"Accessibility"
|
|
3850
|
-
],
|
|
4004
|
+
], xt = [
|
|
3851
4005
|
{
|
|
3852
4006
|
title: "Action buttons",
|
|
3853
4007
|
cta: "Save changes"
|
|
@@ -3864,16 +4018,16 @@ var $ = [
|
|
|
3864
4018
|
title: "Destructive action",
|
|
3865
4019
|
cta: "Delete item"
|
|
3866
4020
|
}
|
|
3867
|
-
],
|
|
4021
|
+
], St = [
|
|
3868
4022
|
"Tab to focus",
|
|
3869
4023
|
"Visible focus ring",
|
|
3870
4024
|
"Enter / Space to activate"
|
|
3871
|
-
],
|
|
4025
|
+
], Ct = [
|
|
3872
4026
|
"Role: button",
|
|
3873
4027
|
"Name is programmatically determinable",
|
|
3874
4028
|
"Minimum touch target (44x44px)",
|
|
3875
4029
|
"Sufficient color contrast"
|
|
3876
|
-
],
|
|
4030
|
+
], wt = [
|
|
3877
4031
|
{
|
|
3878
4032
|
title: "Home",
|
|
3879
4033
|
description: "Open the landing page with the product overview.",
|
|
@@ -4019,7 +4173,7 @@ var $ = [
|
|
|
4019
4173
|
e.title,
|
|
4020
4174
|
e.category,
|
|
4021
4175
|
L(e.slug),
|
|
4022
|
-
|
|
4176
|
+
tt(e.slug),
|
|
4023
4177
|
...e.features,
|
|
4024
4178
|
"component",
|
|
4025
4179
|
"detail",
|
|
@@ -4083,4 +4237,4 @@ var $ = [
|
|
|
4083
4237
|
})))
|
|
4084
4238
|
];
|
|
4085
4239
|
//#endregion
|
|
4086
|
-
export { he as CLI_ADD_COMMAND, pe as CLI_INIT_NEXT_COMMAND, me as CLI_INIT_VITE_COMMAND, ge as CLI_INSTALL_COMMAND, w as CLI_PACKAGE_NAME, _e as CLI_THEME_COMMAND, fe as DOCS_APP_NAME, Se as DOCS_RELEASES_URL, be as DOCS_REPO_URL, D as DOCS_ROOT_PATH, ye as PACKAGE_GITHUB_RELEASES_URL, E as PACKAGE_GITHUB_URL, de as PACKAGE_IMPORT, T as PACKAGE_INSTALL_COMMAND, ue as PACKAGE_NAME, ve as PACKAGE_NPM_URL, xe as PACKAGE_RELEASES_URL, we as PACKAGE_RELEASE_DATE, Ce as PACKAGE_VERSION,
|
|
4240
|
+
export { he as CLI_ADD_COMMAND, pe as CLI_INIT_NEXT_COMMAND, me as CLI_INIT_VITE_COMMAND, ge as CLI_INSTALL_COMMAND, w as CLI_PACKAGE_NAME, _e as CLI_THEME_COMMAND, fe as DOCS_APP_NAME, Se as DOCS_RELEASES_URL, be as DOCS_REPO_URL, D as DOCS_ROOT_PATH, ye as PACKAGE_GITHUB_RELEASES_URL, E as PACKAGE_GITHUB_URL, de as PACKAGE_IMPORT, T as PACKAGE_INSTALL_COMMAND, ue as PACKAGE_NAME, ve as PACKAGE_NPM_URL, xe as PACKAGE_RELEASES_URL, we as PACKAGE_RELEASE_DATE, Ce as PACKAGE_VERSION, Ct as accessibilityChecks, _t as blockCards, ht as blockCoverageSections, ft as blockLayoutFilters, M as blockPath, mt as blockSortOptions, dt as blockTabs, pt as blockThemeFilters, K as componentCatalog, k as componentDocsPath, Ee as componentExportPath, Te as componentExportSlug, P as componentGroupMeta, N as componentGroupOrder, $ as componentModuleCatalog, j as componentModulePath, A as componentPlaygroundPath, Fe as componentRelations, lt as docsSidebar, xt as exampleCards, gt as featuredBlock, rt as getComponentDetailSidebarItems, it as getComponentDetailSidebarSections, L as getComponentGroup, Pe as getComponentGroupDetails, Y as getComponentSurfaceCatalogItem, at as getComponentSurfaceSections, ot as getDocumentedMemberByComponent, st as getDocumentedMembersByComponents, Z as getPrimaryComponentCatalog, Q as getPrimaryComponentMemberInventory, X as getPrimaryComponentSurfaceSlug, tt as getPrimaryComponentSurfaceTitle, nt as getVisibleComponentCatalog, wt as globalSearchItems, St as inspectorChecks, vt as installCommand, et as isPrimaryComponentSurface, ut as playgroundSidebar, ct as primaryNav, yt as propRows, O as releaseHistory, De as templatePath, bt as tocItems };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={$schema:`https://tembro.dev/registry.schema.json`,name:`tembro`,version:`3.1.
|
|
1
|
+
var e={$schema:`https://tembro.dev/registry.schema.json`,name:`tembro`,version:`3.1.7`,description:`Reusable React + TypeScript UI kit registry`,groups:{ui:[`badge`,`button`,`card`,`checkbox`,`accordion`,`collapse`,`dialog`,`divider`,`dropdown-menu`,`input`,`kbd`,`popover`,`radio-group`,`right-click-menu`,`scroll-box`,`select`,`segmented-control`,`skeleton`,`spinner`,`switch`,`table`,`tabs`,`textarea`,`tooltip`],overlay:[`alert-dialog`,`confirm-dialog`,`drawer`],navigation:[`pagination`],inputs:[`async-select`,`otp-input`,`rating`,`slider`,`tag-input`,`inline-editable`,`color-picker`,`signature-pad`,`json-input`,`time-picker`],form:[`form-date-picker`,`form-date-range-input`,`form-date-range-picker`,`form-field-shell`,`form-input`,`form-select`,`form-switch`,`form-textarea`],feedback:[`alert`,`loading-state`,`page-state`,`data-state`],display:[`activity-feed`,`avatar`,`code-block`,`description-list`,`data-state`,`info-card`,`kanban`,`qr-code`,`virtual-list`,`list`,`progress`,`progress-circle`,`statistic`,`status-dot`,`status-legend`,`timeline`,`tree-view`,`carousel`,`tag`,`typography`],actions:[`action-menu`,`button-group`,`copy-button`,`quick-action-grid`],dnd:[`sortable-list`],layout:[`sidebar`,`breadcrumbs`,`section`],filters:[`filter-bar`,`saved-filter-select`],"data-table":[`data-table`],calendar:[`calendar`,`date-picker`,`date-range-picker`],upload:[`file-upload`,`image-upload`],wizard:[`stepper`,`wizard`],notifications:[`toast`,`notification-center`],command:[`command-palette`],patterns:[`form-builder`,`resource-page`,`resource-detail-page`,`empty-state`,`page-toolbar`,`bulk-action-bar`,`detail-layout`,`settings-page`,`data-view`],modern:[`calendar-scheduler`,`dual-list-picker`,`resizable-panel`,`rich-text-editor`,`image-cropper`],hooks:[`use-session-storage-state`,`use-before-unload-when-dirty`,`use-is-mobile`,`use-disclosure`,`use-debounce`,`use-data-table-view-state`],kits:[`dashboard`,`calendar-kit`,`wizard-kit`,`all`],charts:[]},recommended:`button.input.textarea.checkbox.switch.radio-group.dialog.popover.select.table.badge.card.tabs.collapse.accordion.segmented-control.spinner.tooltip.kbd.sidebar.breadcrumbs.data-state.loading-state.progress.progress-circle.activity-feed.action-menu.filter-bar.notification-center.command-palette.list.empty-state.page-toolbar`.split(`.`),recommendedByMode:{foundation:[`button`,`input`,`textarea`,`checkbox`,`switch`,`radio-group`,`dialog`,`popover`,`select`,`table`,`badge`,`card`,`tabs`,`kbd`,`scroll-box`],sourceCopy:[`sidebar`,`breadcrumbs`,`data-state`,`loading-state`,`progress-circle`,`activity-feed`,`action-menu`,`filter-bar`,`date-picker`,`date-range-picker`,`file-upload`,`use-data-table-view-state`,`data-table`,`notification-center`,`sortable-list`,`virtual-list`,`color-picker`,`signature-pad`,`qr-code`,`rich-text-editor`,`image-cropper`,`command-palette`,`empty-state`,`page-toolbar`,`data-view`],system:[`data-table`,`sidebar`]},publicSurface:{documented:[`button`,`input`,`select`,`card`,`badge`,`checkbox`,`dialog`,`data-table`,`calendar`,`date-picker`,`date-range-picker`,`alert`,`charts`,`sidebar`,`file-upload`,`progress`],standalone:`accordion.divider.segmented-control.skeleton.spinner.command-palette.inline-editable.avatar.code-block.data-state.kanban.list.description-list.statistic.tree-view.copy-button.section.form-builder.empty-state.page-toolbar.bulk-action-bar.detail-layout.settings-page.data-view.resource-page.resource-detail-page.calendar-scheduler.dual-list-picker.resizable-panel.tag.carousel.typography.json-input.time-picker.sortable-list.virtual-list.color-picker.signature-pad.qr-code.rich-text-editor.image-cropper`.split(`.`)},migrationAliases:{"clearable-input":`input`,"search-input":`input`,"password-input":`input`,"number-input":`input`,"money-input":`input`,"phone-input":`input`,"masked-input":`input`,"quantity-input":`input`,"date-input":`input`,"date-range-input":`input`,"simple-select":`select`,combobox:`select`,"hover-card":`popover`,"copy-field":`copy-button`,"comparison-card":`card`,"delta-badge":`badge`,"trend-card":`statistic`,"user-card":`avatar`,"form-async-select":`form-select`,"app-sidebar":`sidebar`,"smart-card":`info-card`,"file-dropzone":`file-upload`,"page-container":`sidebar`,"section-header":`section`,"sidebar-nav":`sidebar`,"stat-card":`statistic`,"sticky-footer-bar":`sidebar`,"input-decorator":`input`,"input-value":`input`,inputs:`input`,"data-table-actions-column":`data-table`,"data-table-bulk-actions":`data-table`,"data-table-column-visibility-menu":`data-table`,"data-table-pagination":`data-table`,"data-table-row-actions":`data-table`,"data-table-saved-filters":`data-table`,"data-table-select-column":`data-table`,"data-table-sortable-header":`data-table`,"data-table-toolbar":`data-table`,"data-table-view-presets":`data-table`,"table-export-menu":`data-table`,"table-import-button":`data-table`,"sheet-shell":`drawer`,"nav-tabs":`tabs`,"page-tabs":`tabs`,"stepper-tabs":`stepper`,"command-bar":`command-palette`,"data-list":`list`,"property-grid":`description-list`,result:`page-state`,"app-header":`sidebar`,"page-header":`section`,kpi:`statistic`,"progress-ring":`progress-circle`,"dialog-actions":`dialog`,"modal-shell":`dialog`,"horizontal-bar-chart":`data-view`}};exports.default=e;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e={textValue:`
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e={textValue:`Tembro`,textareaValue:`Controlled preview content for the selected component.`,checked:!0,switchOn:!0,selectValue:`starter`,badgeVariant:`default`,cardCompact:!1,activeTab:`overview`};exports.defaultShowcaseDemoState=e;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tembro",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.7",
|
|
4
4
|
"description": "Reusable React UI kit with dashboard-ready components, CLI registry helpers, and TypeScript support.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
"CHANGELOG.md",
|
|
127
127
|
"LICENSE"
|
|
128
128
|
],
|
|
129
|
-
"scripts": {
|
|
129
|
+
"scripts": {
|
|
130
130
|
"prepublishOnly": "npm run release:gate",
|
|
131
131
|
"clean": "node scripts/clean-dist.mjs",
|
|
132
132
|
"build": "npm run clean && npm run build:lib && npm run test:build-output",
|
|
@@ -138,6 +138,10 @@
|
|
|
138
138
|
"check-version-sync": "node scripts/check-version-sync.mjs",
|
|
139
139
|
"check-neutral-palette": "node scripts/check-neutral-palette.mjs",
|
|
140
140
|
"check:showcase-quality": "node scripts/check-showcase-quality.mjs",
|
|
141
|
+
"check:api-schema": "node scripts/check-api-schema-source.mjs",
|
|
142
|
+
"check:fallback-coverage": "node scripts/check-fallback-coverage.mjs",
|
|
143
|
+
"check:theme-contract": "node scripts/check-theme-contract.mjs",
|
|
144
|
+
"check:package-contract": "node scripts/check-package-contract.mjs",
|
|
141
145
|
"sync:site": "node scripts/sync-public-site.mjs",
|
|
142
146
|
"test:cli": "node scripts/test-cli.mjs",
|
|
143
147
|
"lint": "eslint .",
|
|
@@ -146,13 +150,13 @@
|
|
|
146
150
|
"test:registry": "node scripts/validate-registry.mjs",
|
|
147
151
|
"test:build-output": "node scripts/check-build-output.mjs",
|
|
148
152
|
"test:root-exports": "node scripts/check-root-exports.mjs",
|
|
149
|
-
"test:render": "vitest run --config vitest.config.ts --maxWorkers=1",
|
|
153
|
+
"test:render": "vitest run --config vitest.config.ts --maxWorkers=1",
|
|
150
154
|
"test:fixtures": "node scripts/fixture-smoke.mjs",
|
|
151
|
-
"test:run": "npm run test:types && npm run test:render && npm run test:a11y && npm run test:registry && npm run test:root-exports && node scripts/ensure-build-output.mjs && npm run test:build-output && npm run check:showcase-quality",
|
|
152
|
-
"release:quick": "npm run test:types && npm run test:registry && npm run test:root-exports && npx vitest run tests/render/async-select.test.tsx tests/render/form-select.test.tsx tests/render/base-primitives.test.tsx tests/render/calendar-upload.test.tsx tests/render/data-table.test.tsx --config vitest.config.ts && npm run build:all && npm run check-version-sync && npm run pack:dry-run",
|
|
153
|
-
"release:gate": "npm run lint && npm run build:all && npm run check-version-sync && npm run test:run && npm run test:cli && npm run test:fixtures && npm run pack:dry-run"
|
|
154
|
-
},
|
|
155
|
-
"peerDependencies": {
|
|
155
|
+
"test:run": "npm run test:types && npm run test:render && npm run test:a11y && npm run test:registry && npm run test:root-exports && node scripts/ensure-build-output.mjs && npm run test:build-output && npm run check:showcase-quality && npm run check:api-schema && npm run check:fallback-coverage && npm run check:theme-contract && npm run check:package-contract",
|
|
156
|
+
"release:quick": "npm run test:types && npm run test:registry && npm run test:root-exports && npm run check:api-schema && npm run check:fallback-coverage && npm run check:theme-contract && npm run check:package-contract && npx vitest run tests/render/async-select.test.tsx tests/render/form-select.test.tsx tests/render/base-primitives.test.tsx tests/render/calendar-upload.test.tsx tests/render/data-table.test.tsx --config vitest.config.ts && npm run build:all && npm run check-version-sync && npm run pack:dry-run",
|
|
157
|
+
"release:gate": "npm run lint && npm run build:all && npm run check-version-sync && npm run test:run && npm run test:cli && npm run test:fixtures && npm run pack:dry-run"
|
|
158
|
+
},
|
|
159
|
+
"peerDependencies": {
|
|
156
160
|
"react": "^18.0.0 || ^19.0.0",
|
|
157
161
|
"react-dom": "^18.0.0 || ^19.0.0",
|
|
158
162
|
"react-hook-form": "^7.0.0"
|
|
@@ -205,7 +209,7 @@
|
|
|
205
209
|
"tailwindcss": "^4.3.0",
|
|
206
210
|
"typescript": "~6.0.2",
|
|
207
211
|
"typescript-eslint": "^8.59.2",
|
|
208
|
-
"vite": "8.0.16",
|
|
212
|
+
"vite": "8.0.16",
|
|
209
213
|
"vitest": "^3.2.6"
|
|
210
214
|
}
|
|
211
215
|
}
|