tembro 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/dist/components/calendar/calendar.cjs +1 -1
  2. package/dist/components/calendar/calendar.js +3 -3
  3. package/dist/components/calendar/date-picker.cjs +1 -1
  4. package/dist/components/calendar/date-picker.js +2 -2
  5. package/dist/components/calendar/date-range-picker.cjs +1 -1
  6. package/dist/components/calendar/date-range-picker.js +2 -4
  7. package/dist/components/data-table/data-table-toolbar.cjs +1 -1
  8. package/dist/components/data-table/data-table-toolbar.js +2 -2
  9. package/dist/components/data-table/data-table.cjs +1 -1
  10. package/dist/components/data-table/data-table.js +3 -3
  11. package/dist/components/display/carousel.cjs +1 -1
  12. package/dist/components/display/carousel.d.ts +3 -1
  13. package/dist/components/display/carousel.js +38 -27
  14. package/dist/components/inputs/async-select.cjs +1 -1
  15. package/dist/components/inputs/async-select.js +21 -21
  16. package/dist/components/inputs/combobox.cjs +1 -1
  17. package/dist/components/inputs/combobox.d.ts +5 -1
  18. package/dist/components/inputs/combobox.js +69 -59
  19. package/dist/components/inputs/simple-select.cjs +1 -1
  20. package/dist/components/inputs/simple-select.d.ts +1 -1
  21. package/dist/components/inputs/simple-select.js +5 -5
  22. package/dist/components/ui/button.cjs +1 -0
  23. package/dist/components/ui/button.d.ts +1 -0
  24. package/dist/components/ui/button.js +2 -0
  25. package/dist/components/ui/input.cjs +1 -0
  26. package/dist/components/ui/input.d.ts +1 -0
  27. package/dist/components/ui/input.js +3 -0
  28. package/dist/components/ui/select/index.cjs +1 -1
  29. package/dist/components/ui/select/index.d.ts +1 -1
  30. package/dist/components/ui/select/index.js +3 -3
  31. package/dist/showcase/tembro-registry.json.cjs +1 -1
  32. package/dist/showcase/tembro-registry.json.js +1 -1
  33. package/package.json +2 -1
  34. package/packages/cli/dist/index.cjs +2 -2
  35. package/packages/cli/vendor/src/components/calendar/calendar.tsx +3 -3
  36. package/packages/cli/vendor/src/components/calendar/date-picker.tsx +2 -2
  37. package/packages/cli/vendor/src/components/calendar/date-range-picker.tsx +4 -5
  38. package/packages/cli/vendor/src/components/data-table/data-table-toolbar.tsx +2 -2
  39. package/packages/cli/vendor/src/components/data-table/data-table.tsx +3 -3
  40. package/packages/cli/vendor/src/components/display/carousel.tsx +30 -12
  41. package/packages/cli/vendor/src/components/inputs/async-select.tsx +22 -22
  42. package/packages/cli/vendor/src/components/inputs/combobox.tsx +71 -41
  43. package/packages/cli/vendor/src/components/inputs/simple-select.tsx +6 -6
  44. package/packages/cli/vendor/src/components/ui/button.tsx +2 -0
  45. package/packages/cli/vendor/src/components/ui/input.tsx +2 -0
  46. package/packages/cli/vendor/src/components/ui/select/index.tsx +4 -4
  47. package/packages/cli/vendor/src/showcase/tembro-registry.json +1 -1
  48. package/registry.json +1 -1
@@ -72,7 +72,7 @@ function pe(e) {
72
72
  function m({ className: t, children: n }) {
73
73
  return /* @__PURE__ */ s("div", {
74
74
  "data-slot": "async-select-state",
75
- className: e("rounded-[min(var(--radius-xl),16px)] border px-3 py-3 text-sm text-muted-foreground", t),
75
+ className: e("rounded-[var(--radius-md)] border border-[color:var(--aui-card-border,var(--border))] bg-[color:color-mix(in_oklch,var(--muted),transparent_55%)] px-3 py-3 text-sm leading-5 text-muted-foreground", t),
76
76
  children: n
77
77
  });
78
78
  }
@@ -86,18 +86,18 @@ function he({ option: t, selected: n, renderOption: r, optionClassName: i, onSel
86
86
  "data-slot": "async-select-option",
87
87
  "data-selected": n || void 0,
88
88
  "data-disabled": t.disabled || void 0,
89
- className: e("flex w-full items-start gap-2 rounded-[min(var(--radius-xl),16px)] border border-transparent px-3 py-2.5 text-left text-sm outline-none transition-[background-color,border-color,color,box-shadow] disabled:pointer-events-none disabled:opacity-50", i),
89
+ className: e("flex w-full items-start gap-2.5 rounded-[var(--radius-md)] border border-transparent px-3 py-2.5 text-left text-sm outline-none transition-[background-color,border-color,color,box-shadow] hover:border-[color:color-mix(in_oklch,var(--primary),transparent_76%)] hover:bg-[color:color-mix(in_oklch,var(--primary),transparent_93%)] focus-visible:border-[color:var(--aui-focus-ring,var(--ring))] focus-visible:shadow-[0_0_0_3px_var(--aui-focus-ring-soft,transparent)] data-[selected=true]:border-[color:color-mix(in_oklch,var(--primary),transparent_68%)] data-[selected=true]:bg-[color:color-mix(in_oklch,var(--primary),transparent_89%)] data-[selected=true]:text-foreground disabled:pointer-events-none disabled:opacity-50", i),
90
90
  onClick: () => ee(t),
91
91
  children: [/* @__PURE__ */ s("span", {
92
- className: "flex size-4 shrink-0 items-center justify-center",
93
- children: n && /* @__PURE__ */ s(ne, { className: "size-4" })
92
+ className: e("mt-0.5 flex size-4 shrink-0 items-center justify-center rounded-full border border-border/70", n && "border-primary bg-primary text-primary-foreground"),
93
+ children: n && /* @__PURE__ */ s(ne, { className: "size-3" })
94
94
  }), /* @__PURE__ */ s("span", {
95
95
  className: "min-w-0 flex-1",
96
96
  children: r?.(t, { selected: n }) ?? /* @__PURE__ */ c("span", {
97
97
  className: "flex min-w-0 flex-col",
98
98
  children: [
99
99
  /* @__PURE__ */ s("span", {
100
- className: "truncate",
100
+ className: "truncate font-medium",
101
101
  children: t.label
102
102
  }),
103
103
  t.description && /* @__PURE__ */ s("span", {
@@ -118,7 +118,7 @@ function ge({ search: e, isCreating: t, label: n, onCreate: r }) {
118
118
  type: "button",
119
119
  disabled: t,
120
120
  "data-slot": "async-select-create",
121
- className: "flex w-full items-center gap-2 rounded-[min(var(--radius-xl),16px)] border border-dashed px-3 py-2.5 text-left text-sm outline-none transition-[background-color,border-color,color,box-shadow] disabled:pointer-events-none disabled:opacity-50",
121
+ className: "flex w-full items-center gap-2 rounded-[var(--radius-md)] border border-dashed border-[color:color-mix(in_oklch,var(--primary),transparent_55%)] bg-[color:color-mix(in_oklch,var(--primary),transparent_94%)] px-3 py-2.5 text-left text-sm font-medium text-foreground outline-none transition-[background-color,border-color,color,box-shadow] hover:bg-[color:color-mix(in_oklch,var(--primary),transparent_90%)] disabled:pointer-events-none disabled:opacity-50",
122
122
  onClick: r,
123
123
  children: [/* @__PURE__ */ s("span", {
124
124
  className: "flex size-4 shrink-0 items-center justify-center",
@@ -232,22 +232,22 @@ function h({ className: ne, value: o, selectedOption: ce, onValueChange: d, load
232
232
  "aria-expanded": E,
233
233
  "aria-invalid": w || void 0,
234
234
  "data-slot": "async-select-trigger",
235
- className: e("min-h-11 w-full justify-between", we),
235
+ className: e("min-h-11 w-full justify-between rounded-[var(--aui-control-radius,var(--radius-md))] px-3.5 text-left", we),
236
236
  onKeyDown: Y
237
237
  }),
238
238
  children: [/* @__PURE__ */ s("span", {
239
239
  className: "min-w-0 flex-1 text-left",
240
240
  children: W ? /* @__PURE__ */ c("span", {
241
- className: "flex min-w-0 flex-col",
241
+ className: "flex min-w-0 flex-col gap-0.5",
242
242
  children: [/* @__PURE__ */ s("span", {
243
- className: "truncate",
243
+ className: "truncate font-semibold",
244
244
  children: b?.(W) ?? W.label
245
245
  }), W.disabled && W.disabledReason && /* @__PURE__ */ s("span", {
246
246
  className: "truncate text-xs text-muted-foreground",
247
247
  children: W.disabledReason
248
248
  })]
249
249
  }) : /* @__PURE__ */ s("span", {
250
- className: "truncate",
250
+ className: "truncate text-muted-foreground",
251
251
  children: y?.placeholder ?? "Select"
252
252
  })
253
253
  }), /* @__PURE__ */ c("span", {
@@ -267,7 +267,7 @@ function h({ className: ne, value: o, selectedOption: ce, onValueChange: d, load
267
267
  }), /* @__PURE__ */ c(ee, {
268
268
  align: "start",
269
269
  "data-slot": "async-select-content",
270
- className: e("w-(--anchor-width) gap-3 rounded-[var(--radius-2xl)] p-3.5", Te),
270
+ className: e("w-(--anchor-width) min-w-72 gap-3 rounded-[var(--aui-card-radius,var(--radius-lg))] border-[color:var(--aui-card-border,var(--border))] bg-popover p-3 shadow-[var(--aui-control-panel-shadow,0_18px_40px_rgba(15,23,42,0.14))]", Te),
271
271
  children: [/* @__PURE__ */ c("div", {
272
272
  "data-slot": "async-select-search-wrap",
273
273
  className: "relative",
@@ -279,7 +279,7 @@ function h({ className: ne, value: o, selectedOption: ce, onValueChange: d, load
279
279
  className: e("pl-8", Ee)
280
280
  })]
281
281
  }), /* @__PURE__ */ c("div", {
282
- className: "max-h-64 space-y-1 overflow-y-auto pr-1",
282
+ className: "max-h-72 space-y-1 overflow-y-auto pr-1",
283
283
  children: [
284
284
  G && H.length === 0 && (xe?.(U) ?? /* @__PURE__ */ s(m, { children: y?.minSearchLength?.(v) ?? `Type at least ${v} characters` })),
285
285
  N && (x?.(U) ?? /* @__PURE__ */ s(m, { children: /* @__PURE__ */ c("span", {
@@ -440,14 +440,14 @@ function _e({ className: ne, value: o, selectedOptions: ce, onValueChange: d, lo
440
440
  "aria-expanded": F,
441
441
  "aria-invalid": A || void 0,
442
442
  "data-slot": "async-select-trigger",
443
- className: e("min-h-11 w-full justify-between", ke),
443
+ className: e("min-h-11 w-full justify-between rounded-[var(--aui-control-radius,var(--radius-md))] px-3.5 text-left", ke),
444
444
  onKeyDown: Ke
445
445
  }),
446
446
  children: [/* @__PURE__ */ s("span", {
447
447
  className: "flex min-w-0 flex-1 flex-wrap gap-1 text-left",
448
448
  children: Fe.length > 0 ? Fe.map((n) => /* @__PURE__ */ c("span", {
449
449
  "data-slot": "async-select-tag",
450
- className: e("inline-flex max-w-full items-center gap-1 rounded-full border px-2 py-1 text-xs text-foreground", k),
450
+ className: e("inline-flex max-w-full items-center gap-1.5 rounded-[var(--radius-sm)] border border-[color:color-mix(in_oklch,var(--primary),transparent_70%)] bg-[color:color-mix(in_oklch,var(--primary),transparent_92%)] px-2 py-1 text-xs font-medium text-foreground", k),
451
451
  children: [/* @__PURE__ */ c("span", {
452
452
  className: "flex min-w-0 flex-col",
453
453
  children: [/* @__PURE__ */ s("span", {
@@ -461,7 +461,7 @@ function _e({ className: ne, value: o, selectedOptions: ce, onValueChange: d, lo
461
461
  role: "button",
462
462
  tabIndex: 0,
463
463
  "data-slot": "async-select-tag-remove",
464
- className: "rounded-full text-muted-foreground transition-colors hover:text-foreground",
464
+ className: "rounded-full p-0.5 text-muted-foreground transition-colors hover:bg-background hover:text-foreground",
465
465
  "aria-label": `Remove ${me(n)}`,
466
466
  onClick: (e) => {
467
467
  t(e), Je(n);
@@ -479,7 +479,7 @@ function _e({ className: ne, value: o, selectedOptions: ce, onValueChange: d, lo
479
479
  role: "button",
480
480
  tabIndex: 0,
481
481
  "data-slot": "async-select-clear",
482
- className: "rounded-full border p-1 text-muted-foreground transition-colors hover:text-foreground",
482
+ className: "rounded-full border border-border/65 p-1 text-muted-foreground transition-colors hover:border-border hover:bg-muted/55 hover:text-foreground",
483
483
  "aria-label": S?.clearAll ?? S?.clear ?? "Clear all",
484
484
  onClick: Xe,
485
485
  onKeyDown: (e) => {
@@ -491,7 +491,7 @@ function _e({ className: ne, value: o, selectedOptions: ce, onValueChange: d, lo
491
491
  }), /* @__PURE__ */ c(ee, {
492
492
  align: "start",
493
493
  "data-slot": "async-select-content",
494
- className: e("w-(--anchor-width) gap-3 rounded-[var(--radius-2xl)] p-3.5", E),
494
+ className: e("w-(--anchor-width) min-w-72 gap-3 rounded-[var(--aui-card-radius,var(--radius-lg))] border-[color:var(--aui-card-border,var(--border))] bg-popover p-3 shadow-[var(--aui-control-panel-shadow,0_18px_40px_rgba(15,23,42,0.14))]", E),
495
495
  children: [
496
496
  /* @__PURE__ */ c("div", {
497
497
  "data-slot": "async-select-search-wrap",
@@ -506,7 +506,7 @@ function _e({ className: ne, value: o, selectedOptions: ce, onValueChange: d, lo
506
506
  }),
507
507
  /* @__PURE__ */ c("div", {
508
508
  "data-slot": "async-select-meta",
509
- className: "flex flex-wrap items-center justify-between gap-2 rounded-[min(var(--radius-xl),16px)] border px-3 py-2 text-xs text-muted-foreground",
509
+ className: "flex flex-wrap items-center justify-between gap-2 rounded-[var(--radius-md)] border border-[color:var(--aui-card-border,var(--border))] bg-[color:color-mix(in_oklch,var(--muted),transparent_62%)] px-3 py-2 text-xs text-muted-foreground",
510
510
  children: [
511
511
  Ie && S?.selectedCount && /* @__PURE__ */ s("span", { children: S.selectedCount(M.length) }),
512
512
  Re && (De?.(Q) ?? /* @__PURE__ */ s("span", { children: S?.maxSelected?.(x ?? M.length) ?? `Maximum ${x} selected` })),
@@ -515,13 +515,13 @@ function _e({ className: ne, value: o, selectedOptions: ce, onValueChange: d, lo
515
515
  children: [Ve && /* @__PURE__ */ s("button", {
516
516
  type: "button",
517
517
  "data-slot": "async-select-meta-action",
518
- className: "rounded-full border border-border/75 px-2.5 py-1 font-medium text-foreground transition-colors hover:bg-background",
518
+ className: "rounded-[var(--radius-sm)] border border-border/75 px-2.5 py-1 font-medium text-foreground transition-colors hover:bg-background",
519
519
  onClick: qe,
520
520
  children: S?.selectAll ?? "Select all"
521
521
  }), Le && /* @__PURE__ */ s("button", {
522
522
  type: "button",
523
523
  "data-slot": "async-select-meta-action",
524
- className: "rounded-full border border-border/75 px-2.5 py-1 font-medium text-foreground transition-colors hover:bg-background",
524
+ className: "rounded-[var(--radius-sm)] border border-border/75 px-2.5 py-1 font-medium text-foreground transition-colors hover:bg-background",
525
525
  onClick: () => d?.([], []),
526
526
  children: S?.clearAll ?? S?.clear ?? "Clear all"
527
527
  })]
@@ -529,7 +529,7 @@ function _e({ className: ne, value: o, selectedOptions: ce, onValueChange: d, lo
529
529
  ]
530
530
  }),
531
531
  /* @__PURE__ */ c("div", {
532
- className: "max-h-64 space-y-1 overflow-y-auto pr-1",
532
+ className: "max-h-72 space-y-1 overflow-y-auto pr-1",
533
533
  children: [
534
534
  $ && X.length === 0 && (Ee?.(Q) ?? /* @__PURE__ */ s(m, { children: S?.minSearchLength?.(b) ?? `Type at least ${b} characters` })),
535
535
  H && (Ce?.(Q) ?? /* @__PURE__ */ s(m, { children: /* @__PURE__ */ c("span", {
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("../ui/button/index.cjs"),r=require("../ui/input/index.cjs");let i=require("react");i=e.__toESM(i,1);let a=require("lucide-react"),o=require("react/jsx-runtime");function s({value:e,options:s,onValueChange:c,placeholder:l=`Select option`,searchPlaceholder:u=`Search...`,emptyLabel:d=`No option found`,disabled:f=!1,invalid:p,className:m,...h}){let[g,_]=i.useState(!1),[v,y]=i.useState(``),b=s.find(t=>t.value===e),x=v.trim().toLowerCase(),S=s.filter(e=>e.hidden?!1:x?String(e.searchValue??e.label).toLowerCase().includes(x):!0);return(0,o.jsxs)(`div`,{"data-slot":`combobox`,className:t.cn(`relative grid gap-2`,m),...h,children:[(0,o.jsxs)(n.Button,{type:`button`,variant:`outline`,disabled:f,"aria-invalid":p||void 0,className:`w-full justify-between`,onClick:()=>_(e=>!e),children:[(0,o.jsx)(`span`,{className:t.cn(`truncate`,!b&&`text-muted-foreground`),children:b?.label??l}),(0,o.jsx)(a.ChevronDownIcon,{className:`size-4 opacity-60`})]}),g&&(0,o.jsxs)(`div`,{className:`absolute top-full z-30 mt-2 w-full rounded-md border bg-popover p-2 text-popover-foreground shadow-md`,children:[(0,o.jsxs)(`div`,{className:`relative mb-2`,children:[(0,o.jsx)(a.SearchIcon,{className:`pointer-events-none absolute left-2 top-1/2 size-4 -translate-y-1/2 text-muted-foreground`}),(0,o.jsx)(r.Input,{value:v,onChange:e=>y(e.target.value),placeholder:u,className:`h-9 pl-8`})]}),(0,o.jsx)(`div`,{className:`max-h-64 overflow-y-auto`,children:S.length?S.map(n=>{let r=n.value===e;return(0,o.jsxs)(`button`,{type:`button`,disabled:n.disabled,className:t.cn(`flex w-full items-start gap-2 rounded-md px-2 py-2 text-left text-sm hover:bg-muted disabled:pointer-events-none disabled:opacity-50`,r&&`bg-muted`),onClick:()=>{c?.(n.value,n),_(!1)},children:[(0,o.jsx)(`span`,{className:`mt-0.5 flex size-4 shrink-0 items-center justify-center`,children:r&&(0,o.jsx)(a.CheckIcon,{className:`size-4`})}),(0,o.jsxs)(`span`,{className:`min-w-0`,children:[(0,o.jsx)(`span`,{className:`block truncate font-medium`,children:n.label}),n.description&&(0,o.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:n.description})]})]},n.value)}):(0,o.jsx)(`div`,{className:`px-2 py-6 text-center text-sm text-muted-foreground`,children:d})})]})]})}exports.Combobox=s;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("../ui/button/index.cjs"),r=require("../ui/input/index.cjs"),i=require("../ui/popover/index.cjs");let a=require("react");a=e.__toESM(a,1);let o=require("lucide-react"),s=require("react/jsx-runtime");function c({value:e,options:c,onValueChange:l,placeholder:u=`Select option`,searchPlaceholder:d=`Search...`,emptyLabel:f=`No option found`,disabled:p=!1,invalid:m,triggerClassName:h,contentClassName:g,optionClassName:_,searchClassName:v,className:y,...b}){let[x,S]=a.useState(!1),[C,w]=a.useState(``),T=c.find(t=>t.value===e),E=C.trim().toLowerCase(),D=c.filter(e=>e.hidden?!1:E?String(e.searchValue??e.label).toLowerCase().includes(E):!0);return(0,s.jsx)(`div`,{"data-slot":`combobox`,className:t.cn(`grid w-full gap-2`,y),...b,children:(0,s.jsxs)(i.Popover,{open:x,onOpenChange:S,children:[(0,s.jsxs)(i.PopoverTrigger,{render:(0,s.jsx)(n.Button,{type:`button`,variant:`outline`,disabled:p,"aria-expanded":x,"aria-invalid":m||void 0,className:t.cn(`min-h-11 w-full justify-between rounded-[var(--aui-control-radius,var(--radius-md))] px-3.5 text-left`,h)}),children:[(0,s.jsx)(`span`,{className:t.cn(`min-w-0 flex-1 truncate font-medium`,!T&&`font-normal text-muted-foreground`),children:T?.label??u}),(0,s.jsx)(o.ChevronDownIcon,{className:`size-4 opacity-60`})]}),(0,s.jsxs)(i.PopoverContent,{align:`start`,"data-slot":`combobox-content`,className:t.cn(`w-(--anchor-width) min-w-72 rounded-[var(--aui-card-radius,var(--radius-lg))] border-[color:var(--aui-card-border,var(--border))] bg-popover p-3 shadow-[var(--aui-control-panel-shadow,0_18px_40px_rgba(15,23,42,0.14))]`,g),children:[(0,s.jsxs)(`div`,{className:`relative mb-2`,children:[(0,s.jsx)(o.SearchIcon,{className:`pointer-events-none absolute left-2 top-1/2 size-4 -translate-y-1/2 text-muted-foreground`}),(0,s.jsx)(r.Input,{value:C,onChange:e=>w(e.target.value),placeholder:d,className:t.cn(`h-9 pl-8`,v)})]}),(0,s.jsx)(`div`,{className:`max-h-64 overflow-y-auto`,children:D.length?D.map(n=>{let r=n.value===e;return(0,s.jsxs)(`button`,{type:`button`,disabled:n.disabled,"data-selected":r||void 0,className:t.cn(`flex w-full items-start gap-2.5 rounded-[var(--radius-md)] border border-transparent px-3 py-2.5 text-left text-sm transition-colors hover:border-[color:color-mix(in_oklch,var(--primary),transparent_76%)] hover:bg-[color:color-mix(in_oklch,var(--primary),transparent_93%)] disabled:pointer-events-none disabled:opacity-50 data-[selected=true]:border-[color:color-mix(in_oklch,var(--primary),transparent_68%)] data-[selected=true]:bg-[color:color-mix(in_oklch,var(--primary),transparent_89%)]`,_),onClick:()=>{l?.(n.value,n),S(!1)},children:[(0,s.jsx)(`span`,{className:t.cn(`mt-0.5 flex size-4 shrink-0 items-center justify-center rounded-full border border-border/70`,r&&`border-primary bg-primary text-primary-foreground`),children:r&&(0,s.jsx)(o.CheckIcon,{className:`size-3`})}),(0,s.jsxs)(`span`,{className:`min-w-0`,children:[(0,s.jsx)(`span`,{className:`block truncate font-medium`,children:n.label}),n.description&&(0,s.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:n.description})]})]},n.value)}):(0,s.jsx)(`div`,{className:`rounded-[var(--radius-md)] border border-[color:var(--aui-card-border,var(--border))] bg-[color:color-mix(in_oklch,var(--muted),transparent_55%)] px-3 py-6 text-center text-sm text-muted-foreground`,children:f})})]})]})})}exports.Combobox=c;
@@ -16,6 +16,10 @@ export type ComboboxProps<TValue extends string = string> = React.ComponentProps
16
16
  emptyLabel?: React.ReactNode;
17
17
  disabled?: boolean;
18
18
  invalid?: boolean;
19
+ triggerClassName?: string;
20
+ contentClassName?: string;
21
+ optionClassName?: string;
22
+ searchClassName?: string;
19
23
  };
20
- declare function Combobox<TValue extends string = string>({ value, options, onValueChange, placeholder, searchPlaceholder, emptyLabel, disabled, invalid, className, ...props }: ComboboxProps<TValue>): React.JSX.Element;
24
+ declare function Combobox<TValue extends string = string>({ value, options, onValueChange, placeholder, searchPlaceholder, emptyLabel, disabled, invalid, triggerClassName, contentClassName, optionClassName, searchClassName, className, ...props }: ComboboxProps<TValue>): React.JSX.Element;
21
25
  export { Combobox };
@@ -1,69 +1,79 @@
1
1
  import { cn as e } from "../../lib/utils.js";
2
2
  import { Button as t } from "../ui/button/index.js";
3
3
  import { Input as n } from "../ui/input/index.js";
4
- import * as r from "react";
5
- import { CheckIcon as i, ChevronDownIcon as a, SearchIcon as o } from "lucide-react";
6
- import { jsx as s, jsxs as c } from "react/jsx-runtime";
4
+ import { Popover as r, PopoverContent as i, PopoverTrigger as a } from "../ui/popover/index.js";
5
+ import * as o from "react";
6
+ import { CheckIcon as s, ChevronDownIcon as c, SearchIcon as l } from "lucide-react";
7
+ import { jsx as u, jsxs as d } from "react/jsx-runtime";
7
8
  //#region src/components/inputs/combobox.tsx
8
- function l({ value: l, options: u, onValueChange: d, placeholder: f = "Select option", searchPlaceholder: p = "Search...", emptyLabel: m = "No option found", disabled: h = !1, invalid: g, className: _, ...v }) {
9
- let [y, b] = r.useState(!1), [x, S] = r.useState(""), C = u.find((e) => e.value === l), w = x.trim().toLowerCase(), T = u.filter((e) => e.hidden ? !1 : w ? String(e.searchValue ?? e.label).toLowerCase().includes(w) : !0);
10
- return /* @__PURE__ */ c("div", {
9
+ function f({ value: f, options: p, onValueChange: m, placeholder: h = "Select option", searchPlaceholder: g = "Search...", emptyLabel: _ = "No option found", disabled: v = !1, invalid: y, triggerClassName: b, contentClassName: x, optionClassName: S, searchClassName: C, className: w, ...T }) {
10
+ let [E, D] = o.useState(!1), [O, k] = o.useState(""), A = p.find((e) => e.value === f), j = O.trim().toLowerCase(), M = p.filter((e) => e.hidden ? !1 : j ? String(e.searchValue ?? e.label).toLowerCase().includes(j) : !0);
11
+ return /* @__PURE__ */ u("div", {
11
12
  "data-slot": "combobox",
12
- className: e("relative grid gap-2", _),
13
- ...v,
14
- children: [/* @__PURE__ */ c(t, {
15
- type: "button",
16
- variant: "outline",
17
- disabled: h,
18
- "aria-invalid": g || void 0,
19
- className: "w-full justify-between",
20
- onClick: () => b((e) => !e),
21
- children: [/* @__PURE__ */ s("span", {
22
- className: e("truncate", !C && "text-muted-foreground"),
23
- children: C?.label ?? f
24
- }), /* @__PURE__ */ s(a, { className: "size-4 opacity-60" })]
25
- }), y && /* @__PURE__ */ c("div", {
26
- className: "absolute top-full z-30 mt-2 w-full rounded-md border bg-popover p-2 text-popover-foreground shadow-md",
27
- children: [/* @__PURE__ */ c("div", {
28
- className: "relative mb-2",
29
- children: [/* @__PURE__ */ s(o, { className: "pointer-events-none absolute left-2 top-1/2 size-4 -translate-y-1/2 text-muted-foreground" }), /* @__PURE__ */ s(n, {
30
- value: x,
31
- onChange: (e) => S(e.target.value),
32
- placeholder: p,
33
- className: "h-9 pl-8"
34
- })]
35
- }), /* @__PURE__ */ s("div", {
36
- className: "max-h-64 overflow-y-auto",
37
- children: T.length ? T.map((t) => {
38
- let n = t.value === l;
39
- return /* @__PURE__ */ c("button", {
40
- type: "button",
41
- disabled: t.disabled,
42
- className: e("flex w-full items-start gap-2 rounded-md px-2 py-2 text-left text-sm hover:bg-muted disabled:pointer-events-none disabled:opacity-50", n && "bg-muted"),
43
- onClick: () => {
44
- d?.(t.value, t), b(!1);
45
- },
46
- children: [/* @__PURE__ */ s("span", {
47
- className: "mt-0.5 flex size-4 shrink-0 items-center justify-center",
48
- children: n && /* @__PURE__ */ s(i, { className: "size-4" })
49
- }), /* @__PURE__ */ c("span", {
50
- className: "min-w-0",
51
- children: [/* @__PURE__ */ s("span", {
52
- className: "block truncate font-medium",
53
- children: t.label
54
- }), t.description && /* @__PURE__ */ s("span", {
55
- className: "block text-xs text-muted-foreground",
56
- children: t.description
13
+ className: e("grid w-full gap-2", w),
14
+ ...T,
15
+ children: /* @__PURE__ */ d(r, {
16
+ open: E,
17
+ onOpenChange: D,
18
+ children: [/* @__PURE__ */ d(a, {
19
+ render: /* @__PURE__ */ u(t, {
20
+ type: "button",
21
+ variant: "outline",
22
+ disabled: v,
23
+ "aria-expanded": E,
24
+ "aria-invalid": y || void 0,
25
+ className: e("min-h-11 w-full justify-between rounded-[var(--aui-control-radius,var(--radius-md))] px-3.5 text-left", b)
26
+ }),
27
+ children: [/* @__PURE__ */ u("span", {
28
+ className: e("min-w-0 flex-1 truncate font-medium", !A && "font-normal text-muted-foreground"),
29
+ children: A?.label ?? h
30
+ }), /* @__PURE__ */ u(c, { className: "size-4 opacity-60" })]
31
+ }), /* @__PURE__ */ d(i, {
32
+ align: "start",
33
+ "data-slot": "combobox-content",
34
+ className: e("w-(--anchor-width) min-w-72 rounded-[var(--aui-card-radius,var(--radius-lg))] border-[color:var(--aui-card-border,var(--border))] bg-popover p-3 shadow-[var(--aui-control-panel-shadow,0_18px_40px_rgba(15,23,42,0.14))]", x),
35
+ children: [/* @__PURE__ */ d("div", {
36
+ className: "relative mb-2",
37
+ children: [/* @__PURE__ */ u(l, { className: "pointer-events-none absolute left-2 top-1/2 size-4 -translate-y-1/2 text-muted-foreground" }), /* @__PURE__ */ u(n, {
38
+ value: O,
39
+ onChange: (e) => k(e.target.value),
40
+ placeholder: g,
41
+ className: e("h-9 pl-8", C)
42
+ })]
43
+ }), /* @__PURE__ */ u("div", {
44
+ className: "max-h-64 overflow-y-auto",
45
+ children: M.length ? M.map((t) => {
46
+ let n = t.value === f;
47
+ return /* @__PURE__ */ d("button", {
48
+ type: "button",
49
+ disabled: t.disabled,
50
+ "data-selected": n || void 0,
51
+ className: e("flex w-full items-start gap-2.5 rounded-[var(--radius-md)] border border-transparent px-3 py-2.5 text-left text-sm transition-colors hover:border-[color:color-mix(in_oklch,var(--primary),transparent_76%)] hover:bg-[color:color-mix(in_oklch,var(--primary),transparent_93%)] disabled:pointer-events-none disabled:opacity-50 data-[selected=true]:border-[color:color-mix(in_oklch,var(--primary),transparent_68%)] data-[selected=true]:bg-[color:color-mix(in_oklch,var(--primary),transparent_89%)]", S),
52
+ onClick: () => {
53
+ m?.(t.value, t), D(!1);
54
+ },
55
+ children: [/* @__PURE__ */ u("span", {
56
+ className: e("mt-0.5 flex size-4 shrink-0 items-center justify-center rounded-full border border-border/70", n && "border-primary bg-primary text-primary-foreground"),
57
+ children: n && /* @__PURE__ */ u(s, { className: "size-3" })
58
+ }), /* @__PURE__ */ d("span", {
59
+ className: "min-w-0",
60
+ children: [/* @__PURE__ */ u("span", {
61
+ className: "block truncate font-medium",
62
+ children: t.label
63
+ }), t.description && /* @__PURE__ */ u("span", {
64
+ className: "block text-xs text-muted-foreground",
65
+ children: t.description
66
+ })]
57
67
  })]
58
- })]
59
- }, t.value);
60
- }) : /* @__PURE__ */ s("div", {
61
- className: "px-2 py-6 text-center text-sm text-muted-foreground",
62
- children: m
63
- })
68
+ }, t.value);
69
+ }) : /* @__PURE__ */ u("div", {
70
+ className: "rounded-[var(--radius-md)] border border-[color:var(--aui-card-border,var(--border))] bg-[color:color-mix(in_oklch,var(--muted),transparent_55%)] px-3 py-6 text-center text-sm text-muted-foreground",
71
+ children: _
72
+ })
73
+ })]
64
74
  })]
65
- })]
75
+ })
66
76
  });
67
77
  }
68
78
  //#endregion
69
- export { l as Combobox };
79
+ export { f as Combobox };
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("../ui/select/index.cjs");let r=require("react");r=e.__toESM(r,1);let i=require("lucide-react"),a=require("react/jsx-runtime");function o(e,t){let n=t.trim().toLowerCase();return n?[typeof e.label==`string`||typeof e.label==`number`?String(e.label):e.value,e.value,...e.keywords??[]].join(` `).toLowerCase().includes(n):!0}function s({value:e,onValueChange:s,options:c,placeholder:l=`Select`,searchPlaceholder:u=`Search options...`,emptyLabel:d=`No options found`,clearLabel:f=`Clear selection`,size:p=`default`,clearable:m=!1,searchable:h=!1,loading:g=!1,loadingLabel:_=`Loading options...`,disabled:v=!1,triggerClassName:y,contentClassName:b,itemClassName:x,searchClassName:S,renderOption:C,invalid:w,...T}){let[E,D]=r.useState(``),O=c.find(t=>t.value===e),k=c.filter(e=>o(e,E));return(0,a.jsxs)(n.Select,{value:e,onValueChange:e=>s?.(e),disabled:v||g,...T,children:[(0,a.jsxs)(n.SelectTrigger,{size:p,"aria-invalid":w||void 0,className:t.cn(`w-full`,y),children:[(0,a.jsx)(n.SelectValue,{placeholder:l,children:O?.label}),g?(0,a.jsx)(i.LoaderCircleIcon,{className:`size-4 animate-spin text-muted-foreground`}):null,m&&e&&!v&&!g?(0,a.jsx)(`button`,{type:`button`,"aria-label":f,className:`ml-1 rounded-sm p-0.5 text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring`,onClick:e=>{e.preventDefault(),t.stopInteractivePropagation(e),s?.(void 0)},onMouseDown:t.stopInteractivePropagation,onDoubleClick:t.stopInteractivePropagation,children:(0,a.jsx)(i.XIcon,{className:`size-3.5`})}):null]}),(0,a.jsxs)(n.SelectContent,{className:t.cn(`w-(--anchor-width)`,b),children:[h?(0,a.jsxs)(`div`,{"data-slot":`select-search`,className:`sticky top-0 z-10 mb-1 flex items-center gap-2 rounded-[min(var(--radius-lg),14px)] border px-2.5 py-2 text-sm`,children:[(0,a.jsx)(i.SearchIcon,{className:`size-4 text-muted-foreground`}),(0,a.jsx)(`input`,{value:E,onChange:e=>D(e.target.value),placeholder:u,className:t.cn(`min-w-0 flex-1 bg-transparent outline-none placeholder:text-muted-foreground`,S)})]}):null,g?(0,a.jsxs)(`div`,{"data-slot":`select-state`,className:`flex items-center gap-2 rounded-[min(var(--radius-lg),14px)] px-3 py-2.5 text-sm text-muted-foreground`,children:[(0,a.jsx)(i.LoaderCircleIcon,{className:`size-4 animate-spin`}),_]}):k.length===0?(0,a.jsx)(`div`,{"data-slot":`select-state`,className:`rounded-[min(var(--radius-lg),14px)] px-3 py-2.5 text-sm text-muted-foreground`,children:d}):k.map(r=>{let o=r.value===e;return(0,a.jsx)(n.SelectItem,{value:r.value,disabled:r.disabled,className:t.cn(`rounded-[min(var(--radius-lg),14px)]`,x),children:C?C(r,{selected:o}):(0,a.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,a.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2`,children:[(0,a.jsx)(`span`,{className:`truncate`,children:r.label}),o?(0,a.jsx)(i.CheckIcon,{className:`ml-auto size-3.5 text-primary`}):null]}),r.description&&(0,a.jsx)(`span`,{className:`truncate text-xs text-muted-foreground`,children:r.description})]})},r.value)})]})]})}exports.SimpleSelect=s;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("../ui/select/index.cjs");let r=require("react");r=e.__toESM(r,1);let i=require("lucide-react"),a=require("react/jsx-runtime");function o(e,t){let n=t.trim().toLowerCase();return n?[typeof e.label==`string`||typeof e.label==`number`?String(e.label):e.value,e.value,...e.keywords??[]].join(` `).toLowerCase().includes(n):!0}function s({value:e,onValueChange:s,options:c,placeholder:l=`Select`,searchPlaceholder:u=`Search options...`,emptyLabel:d=`No options found`,clearLabel:f=`Clear selection`,size:p=`default`,clearable:m=!1,searchable:h=!1,loading:g=!1,loadingLabel:_=`Loading options...`,disabled:v=!1,triggerClassName:y,contentClassName:b,itemClassName:x,searchClassName:S,renderOption:C,invalid:w,...T}){let[E,D]=r.useState(``),O=c.find(t=>t.value===e),k=c.filter(e=>o(e,E));return(0,a.jsxs)(n.Select,{value:e,onValueChange:e=>s?.(e),disabled:v||g,...T,children:[(0,a.jsxs)(n.SelectTrigger,{size:p,"aria-invalid":w||void 0,className:t.cn(`w-full`,y),children:[(0,a.jsx)(n.SelectValue,{placeholder:l,children:O?.label}),g?(0,a.jsx)(i.LoaderCircleIcon,{className:`size-4 animate-spin text-muted-foreground`}):null,m&&e&&!v&&!g?(0,a.jsx)(`button`,{type:`button`,"aria-label":f,className:`ml-1 rounded-[var(--radius-sm)] border border-border/65 p-1 text-muted-foreground transition-colors hover:border-border hover:bg-muted/55 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring`,onClick:e=>{e.preventDefault(),t.stopInteractivePropagation(e),s?.(void 0)},onMouseDown:t.stopInteractivePropagation,onDoubleClick:t.stopInteractivePropagation,children:(0,a.jsx)(i.XIcon,{className:`size-3.5`})}):null]}),(0,a.jsxs)(n.SelectContent,{className:t.cn(`w-(--anchor-width)`,b),children:[h?(0,a.jsxs)(`div`,{"data-slot":`select-search`,className:`sticky top-0 z-10 mb-1 flex items-center gap-2 rounded-[var(--radius-md)] border border-[color:var(--aui-card-border,var(--border))] bg-popover px-2.5 py-2 text-sm`,children:[(0,a.jsx)(i.SearchIcon,{className:`size-4 text-muted-foreground`}),(0,a.jsx)(`input`,{value:E,onChange:e=>D(e.target.value),placeholder:u,className:t.cn(`min-w-0 flex-1 bg-transparent outline-none placeholder:text-muted-foreground`,S)})]}):null,g?(0,a.jsxs)(`div`,{"data-slot":`select-state`,className:`flex items-center gap-2 rounded-[var(--radius-md)] border border-[color:var(--aui-card-border,var(--border))] bg-[color:color-mix(in_oklch,var(--muted),transparent_55%)] px-3 py-2.5 text-sm text-muted-foreground`,children:[(0,a.jsx)(i.LoaderCircleIcon,{className:`size-4 animate-spin`}),_]}):k.length===0?(0,a.jsx)(`div`,{"data-slot":`select-state`,className:`rounded-[var(--radius-md)] border border-[color:var(--aui-card-border,var(--border))] bg-[color:color-mix(in_oklch,var(--muted),transparent_55%)] px-3 py-2.5 text-sm text-muted-foreground`,children:d}):k.map(r=>{let o=r.value===e;return(0,a.jsx)(n.SelectItem,{value:r.value,disabled:r.disabled,className:t.cn(`rounded-[var(--radius-md)]`,x),children:C?C(r,{selected:o}):(0,a.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,a.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2`,children:[(0,a.jsx)(`span`,{className:`truncate`,children:r.label}),o?(0,a.jsx)(i.CheckIcon,{className:`ml-auto size-3.5 text-primary`}):null]}),r.description&&(0,a.jsx)(`span`,{className:`truncate text-xs text-muted-foreground`,children:r.description})]})},r.value)})]})]})}exports.SimpleSelect=s;
@@ -15,7 +15,7 @@ export type SimpleSelectProps = Omit<React.ComponentProps<typeof Select>, "value
15
15
  searchPlaceholder?: string;
16
16
  emptyLabel?: React.ReactNode;
17
17
  clearLabel?: string;
18
- size?: "sm" | "default";
18
+ size?: "sm" | "default" | "lg";
19
19
  clearable?: boolean;
20
20
  searchable?: boolean;
21
21
  loading?: boolean;
@@ -32,7 +32,7 @@ function h({ value: h, onValueChange: g, options: _, placeholder: v = "Select",
32
32
  C && h && !D && !T ? /* @__PURE__ */ f("button", {
33
33
  type: "button",
34
34
  "aria-label": x,
35
- className: "ml-1 rounded-sm p-0.5 text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
35
+ className: "ml-1 rounded-[var(--radius-sm)] border border-border/65 p-1 text-muted-foreground transition-colors hover:border-border hover:bg-muted/55 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
36
36
  onClick: (e) => {
37
37
  e.preventDefault(), t(e), g?.(void 0);
38
38
  },
@@ -45,7 +45,7 @@ function h({ value: h, onValueChange: g, options: _, placeholder: v = "Select",
45
45
  className: e("w-(--anchor-width)", k),
46
46
  children: [w ? /* @__PURE__ */ p("div", {
47
47
  "data-slot": "select-search",
48
- className: "sticky top-0 z-10 mb-1 flex items-center gap-2 rounded-[min(var(--radius-lg),14px)] border px-2.5 py-2 text-sm",
48
+ className: "sticky top-0 z-10 mb-1 flex items-center gap-2 rounded-[var(--radius-md)] border border-[color:var(--aui-card-border,var(--border))] bg-popover px-2.5 py-2 text-sm",
49
49
  children: [/* @__PURE__ */ f(u, { className: "size-4 text-muted-foreground" }), /* @__PURE__ */ f("input", {
50
50
  value: F,
51
51
  onChange: (e) => I(e.target.value),
@@ -54,18 +54,18 @@ function h({ value: h, onValueChange: g, options: _, placeholder: v = "Select",
54
54
  })]
55
55
  }) : null, T ? /* @__PURE__ */ p("div", {
56
56
  "data-slot": "select-state",
57
- className: "flex items-center gap-2 rounded-[min(var(--radius-lg),14px)] px-3 py-2.5 text-sm text-muted-foreground",
57
+ className: "flex items-center gap-2 rounded-[var(--radius-md)] border border-[color:var(--aui-card-border,var(--border))] bg-[color:color-mix(in_oklch,var(--muted),transparent_55%)] px-3 py-2.5 text-sm text-muted-foreground",
58
58
  children: [/* @__PURE__ */ f(l, { className: "size-4 animate-spin" }), E]
59
59
  }) : R.length === 0 ? /* @__PURE__ */ f("div", {
60
60
  "data-slot": "select-state",
61
- className: "rounded-[min(var(--radius-lg),14px)] px-3 py-2.5 text-sm text-muted-foreground",
61
+ className: "rounded-[var(--radius-md)] border border-[color:var(--aui-card-border,var(--border))] bg-[color:color-mix(in_oklch,var(--muted),transparent_55%)] px-3 py-2.5 text-sm text-muted-foreground",
62
62
  children: b
63
63
  }) : R.map((t) => {
64
64
  let n = t.value === h;
65
65
  return /* @__PURE__ */ f(i, {
66
66
  value: t.value,
67
67
  disabled: t.disabled,
68
- className: e("rounded-[min(var(--radius-lg),14px)]", A),
68
+ className: e("rounded-[var(--radius-md)]", A),
69
69
  children: M ? M(t, { selected: n }) : /* @__PURE__ */ p("span", {
70
70
  className: "flex min-w-0 flex-1 flex-col",
71
71
  children: [/* @__PURE__ */ p("span", {
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./button/index.cjs");exports.Button=e.Button,exports.buttonVariants=e.buttonVariants;
@@ -0,0 +1 @@
1
+ export * from "./button/index";
@@ -0,0 +1,2 @@
1
+ import { Button as e, buttonVariants as t } from "./button/index.js";
2
+ export { e as Button, t as buttonVariants };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./input/group.cjs"),t=require("./input/index.cjs");exports.Input=t.Input,exports.InputGroup=e.InputGroup,exports.InputGroupAddon=e.InputGroupAddon,exports.InputGroupButton=e.InputGroupButton,exports.InputGroupInput=e.InputGroupInput,exports.InputGroupText=e.InputGroupText,exports.InputGroupTextarea=e.InputGroupTextarea;
@@ -0,0 +1 @@
1
+ export * from "./input/index";
@@ -0,0 +1,3 @@
1
+ import { InputGroup as e, InputGroupAddon as t, InputGroupButton as n, InputGroupInput as r, InputGroupText as i, InputGroupTextarea as a } from "./input/group.js";
2
+ import { Input as o } from "./input/index.js";
3
+ export { o as Input, e as InputGroup, t as InputGroupAddon, n as InputGroupButton, r as InputGroupInput, i as InputGroupText, a as InputGroupTextarea };
@@ -1 +1 @@
1
- "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../lib/utils.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("lucide-react"),i=require("react/jsx-runtime"),a=require("@base-ui/react/select");var o=a.Select.Root;function s({className:e,...n}){return(0,i.jsx)(a.Select.Group,{"data-slot":`select-group`,className:t.cn(`scroll-my-1 p-1`,e),...n})}function c({className:e,...n}){return(0,i.jsx)(a.Select.Value,{"data-slot":`select-value`,className:t.cn(`flex flex-1 text-left`,e),...n})}function l({className:e,size:n=`default`,children:o,...s}){return(0,i.jsxs)(a.Select.Trigger,{"data-slot":`select-trigger`,"data-size":n,className:t.cn(`flex w-fit min-w-36 items-center justify-between gap-2 rounded-[var(--aui-control-radius,var(--radius-lg))] border border-[color:var(--aui-control-border-strong,var(--input))] bg-[color:var(--aui-control-surface,var(--background))] py-2 pr-3 pl-3 text-sm whitespace-nowrap text-foreground shadow-[var(--aui-control-shadow,0_1px_2px_rgba(15,23,42,0.04))] transition-[background-color,border-color,box-shadow,color] outline-none select-none hover:border-[color:var(--aui-control-hover-border,var(--ring))] hover:bg-[color:var(--aui-control-surface-hover,var(--background))] hover:shadow-[var(--aui-control-shadow-hover,0_2px_6px_rgba(15,23,42,0.06))] focus-visible:border-[color:var(--ring)] focus-visible:ring-0 focus-visible:shadow-[var(--aui-control-shadow,0_1px_2px_rgba(15,23,42,0.04)),0_0_0_1px_var(--aui-focus-ring,var(--ring)),0_0_0_5px_var(--aui-focus-ring-soft,transparent)] disabled:cursor-not-allowed disabled:border-[color:color-mix(in_oklch,var(--border),transparent_18%)] disabled:bg-[color:var(--aui-control-surface-disabled,var(--muted))] disabled:opacity-100 aria-invalid:border-destructive aria-invalid:shadow-[var(--aui-control-shadow,0_1px_2px_rgba(15,23,42,0.04)),0_0_0_1px_var(--aui-danger-ring,var(--destructive)),0_0_0_5px_var(--aui-danger-ring-soft,transparent)] data-placeholder:text-muted-foreground/74 data-[size=default]:h-10 data-[size=sm]:h-9 data-[size=sm]:rounded-[var(--radius-sm)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),...s,children:[o,(0,i.jsx)(a.Select.Icon,{render:(0,i.jsx)(r.ChevronDownIcon,{className:`pointer-events-none size-4 text-muted-foreground`})})]})}function u({className:e,children:n,side:r=`bottom`,sideOffset:o=4,align:s=`center`,alignOffset:c=0,alignItemWithTrigger:l=!0,...u}){return(0,i.jsx)(a.Select.Portal,{children:(0,i.jsx)(a.Select.Positioner,{side:r,sideOffset:o,align:s,alignOffset:c,alignItemWithTrigger:l,className:`isolate z-50`,children:(0,i.jsxs)(a.Select.Popup,{"data-slot":`select-content`,"data-align-trigger":l,className:t.cn(`relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-44 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-[var(--aui-card-radius,var(--radius-xl))] border border-[color:var(--aui-card-border,var(--border))] bg-popover p-1.5 text-popover-foreground shadow-[var(--aui-control-panel-shadow,0_18px_40px_rgba(15,23,42,0.14))] backdrop-blur duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95`,e),...u,children:[(0,i.jsx)(m,{}),(0,i.jsx)(a.Select.List,{children:n}),(0,i.jsx)(h,{})]})})})}function d({className:e,...n}){return(0,i.jsx)(a.Select.GroupLabel,{"data-slot":`select-label`,className:t.cn(`px-2 py-1.5 text-[11px] font-semibold tracking-[0.14em] uppercase text-muted-foreground/90`,e),...n})}function f({className:e,children:n,...o}){return(0,i.jsxs)(a.Select.Item,{"data-slot":`select-item`,className:t.cn(`relative flex w-full cursor-default items-center gap-1.5 rounded-[var(--radius-md)] border border-transparent py-2.5 pr-9 pl-3 text-sm text-[color:var(--aui-page-muted-strong,var(--foreground))] outline-hidden select-none transition-[background-color,border-color,color,box-shadow,transform] data-[highlighted]:border-[color:var(--aui-control-hover-border,var(--ring))] data-[highlighted]:bg-[color:var(--aui-control-surface-hover,var(--muted))] data-[highlighted]:text-foreground data-[selected]:font-semibold data-[selected]:text-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2`,e),...o,children:[(0,i.jsx)(a.Select.ItemText,{className:`flex flex-1 shrink-0 gap-2 whitespace-nowrap`,children:n}),(0,i.jsx)(a.Select.ItemIndicator,{render:(0,i.jsx)(`span`,{className:`pointer-events-none absolute right-2 flex size-4 items-center justify-center`}),children:(0,i.jsx)(r.CheckIcon,{className:`pointer-events-none`})})]})}function p({className:e,...n}){return(0,i.jsx)(a.Select.Separator,{"data-slot":`select-separator`,className:t.cn(`pointer-events-none -mx-1 my-1.5 h-px bg-border/80`,e),...n})}function m({className:e,...n}){return(0,i.jsx)(a.Select.ScrollUpArrow,{"data-slot":`select-scroll-up-button`,className:t.cn(`top-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1.5 [&_svg:not([class*='size-'])]:size-4`,e),...n,children:(0,i.jsx)(r.ChevronUpIcon,{})})}function h({className:e,...n}){return(0,i.jsx)(a.Select.ScrollDownArrow,{"data-slot":`select-scroll-down-button`,className:t.cn(`bottom-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1.5 [&_svg:not([class*='size-'])]:size-4`,e),...n,children:(0,i.jsx)(r.ChevronDownIcon,{})})}exports.Select=o,exports.SelectContent=u,exports.SelectGroup=s,exports.SelectItem=f,exports.SelectLabel=d,exports.SelectScrollDownButton=h,exports.SelectScrollUpButton=m,exports.SelectSeparator=p,exports.SelectTrigger=l,exports.SelectValue=c;
1
+ "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../lib/utils.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("lucide-react"),i=require("react/jsx-runtime"),a=require("@base-ui/react/select");var o=a.Select.Root;function s({className:e,...n}){return(0,i.jsx)(a.Select.Group,{"data-slot":`select-group`,className:t.cn(`scroll-my-1 p-1`,e),...n})}function c({className:e,...n}){return(0,i.jsx)(a.Select.Value,{"data-slot":`select-value`,className:t.cn(`flex flex-1 text-left`,e),...n})}function l({className:e,size:n=`default`,children:o,...s}){return(0,i.jsxs)(a.Select.Trigger,{"data-slot":`select-trigger`,"data-size":n,className:t.cn(`flex w-full min-w-0 items-center justify-between gap-2 rounded-[var(--aui-control-radius,var(--radius-md))] border border-[color:var(--aui-control-border-strong,var(--input))] bg-[color:var(--aui-control-surface,var(--background))] pr-3 pl-3 text-sm whitespace-nowrap text-foreground shadow-[var(--aui-control-shadow,0_1px_2px_rgba(15,23,42,0.04))] transition-[background-color,border-color,box-shadow,color] outline-none select-none hover:border-[color:var(--aui-control-hover-border,var(--ring))] hover:bg-[color:var(--aui-control-surface-hover,var(--background))] hover:shadow-[var(--aui-control-shadow-hover,0_2px_6px_rgba(15,23,42,0.06))] focus-visible:border-[color:var(--ring)] focus-visible:ring-0 focus-visible:shadow-[var(--aui-control-shadow,0_1px_2px_rgba(15,23,42,0.04)),0_0_0_1px_var(--aui-focus-ring,var(--ring)),0_0_0_4px_var(--aui-focus-ring-soft,transparent)] disabled:cursor-not-allowed disabled:border-[color:color-mix(in_oklch,var(--border),transparent_18%)] disabled:bg-[color:var(--aui-control-surface-disabled,var(--muted))] disabled:opacity-100 aria-invalid:border-destructive aria-invalid:shadow-[var(--aui-control-shadow,0_1px_2px_rgba(15,23,42,0.04)),0_0_0_1px_var(--aui-danger-ring,var(--destructive)),0_0_0_4px_var(--aui-danger-ring-soft,transparent)] data-placeholder:text-muted-foreground/74 data-[size=default]:h-10 data-[size=lg]:h-11 data-[size=sm]:h-9 data-[size=sm]:rounded-[var(--radius-sm)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:min-w-0 *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),...s,children:[o,(0,i.jsx)(a.Select.Icon,{render:(0,i.jsx)(r.ChevronDownIcon,{className:`pointer-events-none size-4 text-muted-foreground`})})]})}function u({className:e,children:n,side:r=`bottom`,sideOffset:o=4,align:s=`center`,alignOffset:c=0,alignItemWithTrigger:l=!0,...u}){return(0,i.jsx)(a.Select.Portal,{children:(0,i.jsx)(a.Select.Positioner,{side:r,sideOffset:o,align:s,alignOffset:c,alignItemWithTrigger:l,className:`isolate z-50`,children:(0,i.jsxs)(a.Select.Popup,{"data-slot":`select-content`,"data-align-trigger":l,className:t.cn(`relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-52 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-[var(--aui-card-radius,var(--radius-lg))] border border-[color:var(--aui-card-border,var(--border))] bg-popover p-1.5 text-popover-foreground shadow-[var(--aui-control-panel-shadow,0_18px_40px_rgba(15,23,42,0.14))] backdrop-blur duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95`,e),...u,children:[(0,i.jsx)(m,{}),(0,i.jsx)(a.Select.List,{children:n}),(0,i.jsx)(h,{})]})})})}function d({className:e,...n}){return(0,i.jsx)(a.Select.GroupLabel,{"data-slot":`select-label`,className:t.cn(`px-2 py-1.5 text-[11px] font-semibold tracking-[0.14em] uppercase text-muted-foreground/90`,e),...n})}function f({className:e,children:n,...o}){return(0,i.jsxs)(a.Select.Item,{"data-slot":`select-item`,className:t.cn(`relative flex w-full cursor-default items-center gap-2 rounded-[var(--radius-md)] border border-transparent py-2.5 pr-9 pl-3 text-sm text-[color:var(--aui-page-muted-strong,var(--foreground))] outline-hidden select-none transition-[background-color,border-color,color,box-shadow,transform] data-[highlighted]:border-[color:color-mix(in_oklch,var(--primary),transparent_72%)] data-[highlighted]:bg-[color:color-mix(in_oklch,var(--primary),transparent_92%)] data-[highlighted]:text-foreground data-[selected]:border-[color:color-mix(in_oklch,var(--primary),transparent_70%)] data-[selected]:bg-[color:color-mix(in_oklch,var(--primary),transparent_90%)] data-[selected]:font-semibold data-[selected]:text-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:min-w-0 *:[span]:last:items-center *:[span]:last:gap-2`,e),...o,children:[(0,i.jsx)(a.Select.ItemText,{className:`flex flex-1 shrink-0 gap-2 whitespace-nowrap`,children:n}),(0,i.jsx)(a.Select.ItemIndicator,{render:(0,i.jsx)(`span`,{className:`pointer-events-none absolute right-2 flex size-4 items-center justify-center`}),children:(0,i.jsx)(r.CheckIcon,{className:`pointer-events-none`})})]})}function p({className:e,...n}){return(0,i.jsx)(a.Select.Separator,{"data-slot":`select-separator`,className:t.cn(`pointer-events-none -mx-1 my-1.5 h-px bg-border/80`,e),...n})}function m({className:e,...n}){return(0,i.jsx)(a.Select.ScrollUpArrow,{"data-slot":`select-scroll-up-button`,className:t.cn(`top-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1.5 [&_svg:not([class*='size-'])]:size-4`,e),...n,children:(0,i.jsx)(r.ChevronUpIcon,{})})}function h({className:e,...n}){return(0,i.jsx)(a.Select.ScrollDownArrow,{"data-slot":`select-scroll-down-button`,className:t.cn(`bottom-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1.5 [&_svg:not([class*='size-'])]:size-4`,e),...n,children:(0,i.jsx)(r.ChevronDownIcon,{})})}exports.Select=o,exports.SelectContent=u,exports.SelectGroup=s,exports.SelectItem=f,exports.SelectLabel=d,exports.SelectScrollDownButton=h,exports.SelectScrollUpButton=m,exports.SelectSeparator=p,exports.SelectTrigger=l,exports.SelectValue=c;
@@ -4,7 +4,7 @@ export type SelectRootProps = React.ComponentPropsWithoutRef<typeof SelectPrimit
4
4
  export type SelectGroupProps = SelectPrimitive.Group.Props;
5
5
  export type SelectValueProps = SelectPrimitive.Value.Props;
6
6
  export type SelectTriggerProps = SelectPrimitive.Trigger.Props & {
7
- size?: "sm" | "default";
7
+ size?: "sm" | "default" | "lg";
8
8
  };
9
9
  export type SelectContentProps = SelectPrimitive.Popup.Props & Pick<SelectPrimitive.Positioner.Props, "align" | "alignOffset" | "side" | "sideOffset" | "alignItemWithTrigger">;
10
10
  export type SelectLabelProps = SelectPrimitive.GroupLabel.Props;
@@ -24,7 +24,7 @@ function u({ className: t, size: r = "default", children: s, ...c }) {
24
24
  return /* @__PURE__ */ a(o.Trigger, {
25
25
  "data-slot": "select-trigger",
26
26
  "data-size": r,
27
- className: e("flex w-fit min-w-36 items-center justify-between gap-2 rounded-[var(--aui-control-radius,var(--radius-lg))] border border-[color:var(--aui-control-border-strong,var(--input))] bg-[color:var(--aui-control-surface,var(--background))] py-2 pr-3 pl-3 text-sm whitespace-nowrap text-foreground shadow-[var(--aui-control-shadow,0_1px_2px_rgba(15,23,42,0.04))] transition-[background-color,border-color,box-shadow,color] outline-none select-none hover:border-[color:var(--aui-control-hover-border,var(--ring))] hover:bg-[color:var(--aui-control-surface-hover,var(--background))] hover:shadow-[var(--aui-control-shadow-hover,0_2px_6px_rgba(15,23,42,0.06))] focus-visible:border-[color:var(--ring)] focus-visible:ring-0 focus-visible:shadow-[var(--aui-control-shadow,0_1px_2px_rgba(15,23,42,0.04)),0_0_0_1px_var(--aui-focus-ring,var(--ring)),0_0_0_5px_var(--aui-focus-ring-soft,transparent)] disabled:cursor-not-allowed disabled:border-[color:color-mix(in_oklch,var(--border),transparent_18%)] disabled:bg-[color:var(--aui-control-surface-disabled,var(--muted))] disabled:opacity-100 aria-invalid:border-destructive aria-invalid:shadow-[var(--aui-control-shadow,0_1px_2px_rgba(15,23,42,0.04)),0_0_0_1px_var(--aui-danger-ring,var(--destructive)),0_0_0_5px_var(--aui-danger-ring-soft,transparent)] data-placeholder:text-muted-foreground/74 data-[size=default]:h-10 data-[size=sm]:h-9 data-[size=sm]:rounded-[var(--radius-sm)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", t),
27
+ className: e("flex w-full min-w-0 items-center justify-between gap-2 rounded-[var(--aui-control-radius,var(--radius-md))] border border-[color:var(--aui-control-border-strong,var(--input))] bg-[color:var(--aui-control-surface,var(--background))] pr-3 pl-3 text-sm whitespace-nowrap text-foreground shadow-[var(--aui-control-shadow,0_1px_2px_rgba(15,23,42,0.04))] transition-[background-color,border-color,box-shadow,color] outline-none select-none hover:border-[color:var(--aui-control-hover-border,var(--ring))] hover:bg-[color:var(--aui-control-surface-hover,var(--background))] hover:shadow-[var(--aui-control-shadow-hover,0_2px_6px_rgba(15,23,42,0.06))] focus-visible:border-[color:var(--ring)] focus-visible:ring-0 focus-visible:shadow-[var(--aui-control-shadow,0_1px_2px_rgba(15,23,42,0.04)),0_0_0_1px_var(--aui-focus-ring,var(--ring)),0_0_0_4px_var(--aui-focus-ring-soft,transparent)] disabled:cursor-not-allowed disabled:border-[color:color-mix(in_oklch,var(--border),transparent_18%)] disabled:bg-[color:var(--aui-control-surface-disabled,var(--muted))] disabled:opacity-100 aria-invalid:border-destructive aria-invalid:shadow-[var(--aui-control-shadow,0_1px_2px_rgba(15,23,42,0.04)),0_0_0_1px_var(--aui-danger-ring,var(--destructive)),0_0_0_4px_var(--aui-danger-ring-soft,transparent)] data-placeholder:text-muted-foreground/74 data-[size=default]:h-10 data-[size=lg]:h-11 data-[size=sm]:h-9 data-[size=sm]:rounded-[var(--radius-sm)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:min-w-0 *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", t),
28
28
  ...c,
29
29
  children: [s, /* @__PURE__ */ i(o.Icon, { render: /* @__PURE__ */ i(n, { className: "pointer-events-none size-4 text-muted-foreground" }) })]
30
30
  });
@@ -40,7 +40,7 @@ function d({ className: t, children: n, side: r = "bottom", sideOffset: s = 4, a
40
40
  children: /* @__PURE__ */ a(o.Popup, {
41
41
  "data-slot": "select-content",
42
42
  "data-align-trigger": u,
43
- className: e("relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-44 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-[var(--aui-card-radius,var(--radius-xl))] border border-[color:var(--aui-card-border,var(--border))] bg-popover p-1.5 text-popover-foreground shadow-[var(--aui-control-panel-shadow,0_18px_40px_rgba(15,23,42,0.14))] backdrop-blur duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", t),
43
+ className: e("relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-52 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-[var(--aui-card-radius,var(--radius-lg))] border border-[color:var(--aui-card-border,var(--border))] bg-popover p-1.5 text-popover-foreground shadow-[var(--aui-control-panel-shadow,0_18px_40px_rgba(15,23,42,0.14))] backdrop-blur duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", t),
44
44
  ...d,
45
45
  children: [
46
46
  /* @__PURE__ */ i(h, {}),
@@ -60,7 +60,7 @@ function f({ className: t, ...n }) {
60
60
  function p({ className: n, children: r, ...s }) {
61
61
  return /* @__PURE__ */ a(o.Item, {
62
62
  "data-slot": "select-item",
63
- className: e("relative flex w-full cursor-default items-center gap-1.5 rounded-[var(--radius-md)] border border-transparent py-2.5 pr-9 pl-3 text-sm text-[color:var(--aui-page-muted-strong,var(--foreground))] outline-hidden select-none transition-[background-color,border-color,color,box-shadow,transform] data-[highlighted]:border-[color:var(--aui-control-hover-border,var(--ring))] data-[highlighted]:bg-[color:var(--aui-control-surface-hover,var(--muted))] data-[highlighted]:text-foreground data-[selected]:font-semibold data-[selected]:text-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2", n),
63
+ className: e("relative flex w-full cursor-default items-center gap-2 rounded-[var(--radius-md)] border border-transparent py-2.5 pr-9 pl-3 text-sm text-[color:var(--aui-page-muted-strong,var(--foreground))] outline-hidden select-none transition-[background-color,border-color,color,box-shadow,transform] data-[highlighted]:border-[color:color-mix(in_oklch,var(--primary),transparent_72%)] data-[highlighted]:bg-[color:color-mix(in_oklch,var(--primary),transparent_92%)] data-[highlighted]:text-foreground data-[selected]:border-[color:color-mix(in_oklch,var(--primary),transparent_70%)] data-[selected]:bg-[color:color-mix(in_oklch,var(--primary),transparent_90%)] data-[selected]:font-semibold data-[selected]:text-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:min-w-0 *:[span]:last:items-center *:[span]:last:gap-2", n),
64
64
  ...s,
65
65
  children: [/* @__PURE__ */ i(o.ItemText, {
66
66
  className: "flex flex-1 shrink-0 gap-2 whitespace-nowrap",
@@ -1 +1 @@
1
- var e={$schema:`https://tembro.dev/registry.schema.json`,name:`tembro`,version:`1.0.1`,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`,`dialog-actions`,`drawer`,`modal-shell`,`sheet-shell`],navigation:[`anchor-nav`,`nav-tabs`,`page-tabs`,`pagination`,`stepper-tabs`,`command-bar`],inputs:[`number-input`,`date-input`,`date-range-input`,`money-input`,`phone-input`,`async-select`,`combobox`,`clearable-input`,`search-input`,`password-input`,`masked-input`,`quantity-input`,`tag-input`,`otp-input`,`slider`,`rating`,`color-input`,`quantity-stepper`,`inline-editable`,`simple-select`],form:[`form-field-shell`,`form-input`,`form-select`,`form-textarea`,`form-switch`,`form-date-picker`,`form-date-range-picker`,`repeater-field`,`form-async-select`,`form-date-input`,`form-date-range-input`,`form-number-input`,`form-password-input`,`form-phone-input`,`form-search-input`],feedback:[`alert`,`empty-state`,`loading-state`,`page-state`,`empty-search-state`],display:`activity-feed.avatar.code-block.data-list.data-state.descriptions.description-list.entity-card.file-card.info-card.keyboard-shortcut.key-value-card.kanban.list.metric-grid.progress.progress-circle.property-grid.result.statistic.status-dot.status-legend.tag-list.timeline.tree-view.user-card.trend-card.comparison-card.delta-badge.skeleton-table.skeleton-form.entity-header`.split(`.`),actions:[`action-menu`,`button-group`,`copy-button`,`copy-field`,`quick-action-grid`],layout:[`app-header`,`sidebar`,`breadcrumbs`,`page-container`,`section`,`section-header`,`sidebar-nav`,`stack`,`stat-card`,`sticky-footer-bar`],filters:[`filter-chips`,`filter-bar`,`saved-filter-select`],"data-table":[`data-table`,`data-table-toolbar`,`data-table-pagination`,`data-table-row-actions`,`data-table-bulk-actions`,`data-table-view-presets`,`data-table-saved-filters`,`data-table-column-visibility-menu`,`data-table-select-column`,`data-table-sortable-header`,`data-table-actions-column`],calendar:[`calendar`,`date-picker`,`date-range-picker`,`form-date-picker`,`form-date-range-picker`],upload:[`file-upload`,`image-upload`,`file-dropzone`],wizard:[`stepper`,`wizard`],notifications:[`toast`,`notification-center`],command:[`command-palette`],patterns:[`resource-page`,`resource-detail-page`,`form-builder`],modern:[`affix`,`calendar-scheduler`,`dual-list-picker`,`menubar`,`navigation-menu`,`resizable-panel`,`rich-text-editor`,`tour`,`qr-code`,`tag`,`aspect-ratio`,`carousel`,`float-button`,`typography`,`watermark`,`cascader`,`json-input`,`mention-input`,`time-picker`],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`]},recommended:`button.input.textarea.checkbox.switch.radio-group.dialog.popover.select.table.badge.card.tabs.collapse.accordion.segmented-control.spinner.tooltip.kbd.sidebar.breadcrumbs.empty-state.loading-state.description-list.progress.metric-grid.activity-feed.action-menu.date-picker.data-table.notification-center.command-palette`.split(`.`),recommendedByMode:{foundation:[`button`,`input`,`textarea`,`checkbox`,`switch`,`radio-group`,`dialog`,`popover`,`select`,`table`,`badge`,`card`,`tabs`,`kbd`,`scroll-box`],sourceCopy:[`sidebar`,`sidebar-nav`,`breadcrumbs`,`empty-state`,`loading-state`,`description-list`,`metric-grid`,`activity-feed`,`action-menu`,`filter-bar`,`date-picker`,`date-range-picker`,`file-upload`,`file-dropzone`,`command-palette`,`use-data-table-view-state`,`data-table`,`form-input`,`form-select`,`form-textarea`,`form-switch`,`notification-center`,`command-bar`],system:[`data-table`,`data-table-view-presets`,`sidebar`,`sidebar-nav`]},publicSurface:{documented:[`button`,`input`,`select`,`card`,`badge`,`checkbox`,`dialog`,`form-field-shell`,`data-table`,`alert`,`charts`,`sidebar`,`file-upload`,`progress`],standalone:`accordion.divider.segmented-control.skeleton.spinner.command-bar.quantity-stepper.inline-editable.repeater-field.empty-search-state.avatar.code-block.data-state.descriptions.keyboard-shortcut.key-value-card.kanban.list.property-grid.statistic.tag-list.tree-view.skeleton-table.skeleton-form.copy-button.copy-field.section.stack.sticky-footer-bar.affix.calendar-scheduler.dual-list-picker.menubar.navigation-menu.resizable-panel.rich-text-editor.tour.qr-code.tag.aspect-ratio.carousel.float-button.typography.watermark.cascader.json-input.mention-input.time-picker`.split(`.`)},migrationAliases:{"form-search-input":`form-input`,"form-password-input":`form-input`,"form-number-input":`form-input`,"form-phone-input":`form-input`,"form-date-input":`form-input`,"form-async-select":`form-select`,"app-sidebar":`sidebar`,"smart-card":`info-card`}};exports.default=e;
1
+ var e={$schema:`https://tembro.dev/registry.schema.json`,name:`tembro`,version:`1.0.3`,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`,`dialog-actions`,`drawer`,`modal-shell`,`sheet-shell`],navigation:[`anchor-nav`,`nav-tabs`,`page-tabs`,`pagination`,`stepper-tabs`,`command-bar`],inputs:[`number-input`,`date-input`,`date-range-input`,`money-input`,`phone-input`,`async-select`,`combobox`,`clearable-input`,`search-input`,`password-input`,`masked-input`,`quantity-input`,`tag-input`,`otp-input`,`slider`,`rating`,`color-input`,`quantity-stepper`,`inline-editable`,`simple-select`],form:[`form-field-shell`,`form-input`,`form-select`,`form-textarea`,`form-switch`,`form-date-picker`,`form-date-range-picker`,`repeater-field`,`form-async-select`,`form-date-input`,`form-date-range-input`,`form-number-input`,`form-password-input`,`form-phone-input`,`form-search-input`],feedback:[`alert`,`empty-state`,`loading-state`,`page-state`,`empty-search-state`],display:`activity-feed.avatar.code-block.data-list.data-state.descriptions.description-list.entity-card.file-card.info-card.keyboard-shortcut.key-value-card.kanban.list.metric-grid.progress.progress-circle.property-grid.result.statistic.status-dot.status-legend.tag-list.timeline.tree-view.user-card.trend-card.comparison-card.delta-badge.skeleton-table.skeleton-form.entity-header`.split(`.`),actions:[`action-menu`,`button-group`,`copy-button`,`copy-field`,`quick-action-grid`],layout:[`app-header`,`sidebar`,`breadcrumbs`,`page-container`,`section`,`section-header`,`sidebar-nav`,`stack`,`stat-card`,`sticky-footer-bar`],filters:[`filter-chips`,`filter-bar`,`saved-filter-select`],"data-table":[`data-table`,`data-table-toolbar`,`data-table-pagination`,`data-table-row-actions`,`data-table-bulk-actions`,`data-table-view-presets`,`data-table-saved-filters`,`data-table-column-visibility-menu`,`data-table-select-column`,`data-table-sortable-header`,`data-table-actions-column`],calendar:[`calendar`,`date-picker`,`date-range-picker`,`form-date-picker`,`form-date-range-picker`],upload:[`file-upload`,`image-upload`,`file-dropzone`],wizard:[`stepper`,`wizard`],notifications:[`toast`,`notification-center`],command:[`command-palette`],patterns:[`resource-page`,`resource-detail-page`,`form-builder`],modern:[`affix`,`calendar-scheduler`,`dual-list-picker`,`menubar`,`navigation-menu`,`resizable-panel`,`rich-text-editor`,`tour`,`qr-code`,`tag`,`aspect-ratio`,`carousel`,`float-button`,`typography`,`watermark`,`cascader`,`json-input`,`mention-input`,`time-picker`],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`]},recommended:`button.input.textarea.checkbox.switch.radio-group.dialog.popover.select.table.badge.card.tabs.collapse.accordion.segmented-control.spinner.tooltip.kbd.sidebar.breadcrumbs.empty-state.loading-state.description-list.progress.metric-grid.activity-feed.action-menu.date-picker.data-table.notification-center.command-palette`.split(`.`),recommendedByMode:{foundation:[`button`,`input`,`textarea`,`checkbox`,`switch`,`radio-group`,`dialog`,`popover`,`select`,`table`,`badge`,`card`,`tabs`,`kbd`,`scroll-box`],sourceCopy:[`sidebar`,`sidebar-nav`,`breadcrumbs`,`empty-state`,`loading-state`,`description-list`,`metric-grid`,`activity-feed`,`action-menu`,`filter-bar`,`date-picker`,`date-range-picker`,`file-upload`,`file-dropzone`,`command-palette`,`use-data-table-view-state`,`data-table`,`form-input`,`form-select`,`form-textarea`,`form-switch`,`notification-center`,`command-bar`],system:[`data-table`,`data-table-view-presets`,`sidebar`,`sidebar-nav`]},publicSurface:{documented:[`button`,`input`,`select`,`card`,`badge`,`checkbox`,`dialog`,`form-field-shell`,`data-table`,`alert`,`charts`,`sidebar`,`file-upload`,`progress`],standalone:`accordion.divider.segmented-control.skeleton.spinner.command-bar.quantity-stepper.inline-editable.repeater-field.empty-search-state.avatar.code-block.data-state.descriptions.keyboard-shortcut.key-value-card.kanban.list.property-grid.statistic.tag-list.tree-view.skeleton-table.skeleton-form.copy-button.copy-field.section.stack.sticky-footer-bar.affix.calendar-scheduler.dual-list-picker.menubar.navigation-menu.resizable-panel.rich-text-editor.tour.qr-code.tag.aspect-ratio.carousel.float-button.typography.watermark.cascader.json-input.mention-input.time-picker`.split(`.`)},migrationAliases:{"form-search-input":`form-input`,"form-password-input":`form-input`,"form-number-input":`form-input`,"form-phone-input":`form-input`,"form-date-input":`form-input`,"form-async-select":`form-select`,"app-sidebar":`sidebar`,"smart-card":`info-card`}};exports.default=e;
@@ -1,7 +1,7 @@
1
1
  var e = {
2
2
  $schema: "https://tembro.dev/registry.schema.json",
3
3
  name: "tembro",
4
- version: "1.0.1",
4
+ version: "1.0.3",
5
5
  description: "Reusable React + TypeScript UI kit registry",
6
6
  groups: {
7
7
  ui: [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tembro",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "Reusable React UI kit with dashboard-ready components, CLI registry helpers, and TypeScript support.",
5
5
  "keywords": [
6
6
  "react",
@@ -149,6 +149,7 @@
149
149
  "test:render": "vitest run --config vitest.config.ts",
150
150
  "test:fixtures": "node scripts/fixture-smoke.mjs",
151
151
  "test:run": "npm run test:types && npm run test:render && npm run test:a11y && npm run test:registry && npm run test:family-governance && 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",
152
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"
153
154
  },
154
155
  "peerDependencies": {