@adamosuiteservices/ui 1.4.6 → 1.6.6
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/dist/colors.css +1 -1
- package/dist/combobox.cjs +2 -2
- package/dist/combobox.js +319 -282
- package/dist/components/ui/combobox/combobox.d.ts +197 -1
- package/dist/components/ui/combobox/combobox.stories.d.ts +8 -0
- package/dist/components/ui/scroll-area/index.d.ts +1 -0
- package/dist/components/ui/scroll-area/scroll-area.d.ts +5 -0
- package/dist/components/ui/scroll-area/scroll-area.stories.d.ts +11 -0
- package/dist/custom-layered-styles.css +1 -1
- package/dist/custom-scroll-bar.css +1 -0
- package/dist/dialog.cjs +1 -1
- package/dist/dialog.js +3 -3
- package/dist/{index-DMLQL2aG.js → index-DniCthJA.js} +2 -2
- package/dist/{sheet-UZWAbdXr.js → sheet-B-9YHdR5.js} +1 -1
- package/dist/sheet.js +1 -1
- package/dist/sidebar.cjs +1 -1
- package/dist/sidebar.js +6 -6
- package/dist/styles.css +1 -1
- package/dist/themes.css +1 -1
- package/docs/components/ui/combobox.md +293 -16
- package/docs/components/ui/scroll-area.md +357 -0
- package/package.json +4 -2
package/dist/themes.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[data-theme=default]{--background: oklch(1 0 0);--foreground: oklch(.145 0 0);--card: oklch(1 0 0);--card-foreground: oklch(.145 0 0);--popover: oklch(1 0 0);--popover-foreground: oklch(.145 0 0);--primary: var(--default);--primary-foreground: oklch(.985 0 0);--secondary: var(--default-100);--secondary-foreground: var(--default-700);--muted: oklch(.97 0 0);--muted-foreground: oklch(.556 0 0);--accent: oklch(.97 0 0);--accent-foreground: oklch(.205 0 0);--destructive: var(--error-500);--destructive-foreground: oklch(1 0 0);--border: oklch(.922 0 0);--input: oklch(.922 0 0);--ring: var(--default-500);--chart-1: var(--default-500);--chart-2: var(--default-400);--chart-3: var(--default-300);--chart-4: var(--default-200);--chart-5: var(--default-100);--sidebar: oklch(.985 0 0);--sidebar-foreground: oklch(.145 0 0);--sidebar-primary: var(--default-500);--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.97 0 0);--sidebar-accent-foreground: oklch(.205 0 0);--sidebar-border: oklch(.922 0 0);--sidebar-ring: var(--default-500);--primary-25: var(--default-25);--primary-50: var(--default-50);--primary-100: var(--default-100);--primary-200: var(--default-200);--primary-300: var(--default-300);--primary-400: var(--default-400);--primary-500: var(--default-500);--primary-600: var(--default-600);--primary-700: var(--default-700);--primary-800: var(--default-800);--primary-900: var(--default-900)}[data-theme=default].dark{--background: oklch(.145 0 0);--foreground: oklch(.985 0 0);--card: oklch(.205 0 0);--card-foreground: oklch(.985 0 0);--popover: oklch(.205 0 0);--popover-foreground: oklch(.985 0 0);--primary: var(--default);--primary-foreground: oklch(.205 0 0);--secondary: var(--default-100);--secondary-foreground: var(--default-700);--muted: oklch(.269 0 0);--muted-foreground: oklch(.708 0 0);--accent: oklch(.269 0 0);--accent-foreground: oklch(.985 0 0);--destructive: var(--error-500);--destructive-foreground: oklch(1 0 0);--border: oklch(1 0 0 / 10%);--input: oklch(1 0 0 / 15%);--ring: var(--default-500);--chart-1: var(--default-500);--chart-2: var(--default-400);--chart-3: var(--default-300);--chart-4: var(--default-200);--chart-5: var(--default-100);--sidebar: oklch(.205 0 0);--sidebar-foreground: oklch(.985 0 0);--sidebar-primary: var(--default-500);--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.269 0 0);--sidebar-accent-foreground: oklch(.985 0 0);--sidebar-border: oklch(1 0 0 / 10%);--sidebar-ring: var(--default-500)}[data-theme=sign]{--background: oklch(1 0 0);--foreground: oklch(.145 0 0);--card: oklch(1 0 0);--card-foreground: oklch(.145 0 0);--popover: oklch(1 0 0);--popover-foreground: oklch(.145 0 0);--primary: var(--sign);--primary-foreground: oklch(.985 0 0);--secondary: var(--sign-100);--secondary-foreground: var(--sign-700);--muted: oklch(.97 0 0);--muted-foreground: oklch(.556 0 0);--accent: oklch(.97 0 0);--accent-foreground: oklch(.205 0 0);--destructive: var(--error-500);--destructive-foreground: oklch(1 0 0);--border: oklch(.922 0 0);--input: oklch(.922 0 0);--ring: var(--sign-500);--chart-1: var(--sign-500);--chart-2: var(--sign-400);--chart-3: var(--sign-300);--chart-4: var(--sign-200);--chart-5: var(--sign-100);--sidebar: oklch(.985 0 0);--sidebar-foreground: oklch(.145 0 0);--sidebar-primary: var(--sign-500);--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.97 0 0);--sidebar-accent-foreground: oklch(.205 0 0);--sidebar-border: oklch(.922 0 0);--sidebar-ring: var(--sign-500);--primary-25: var(--sign-25);--primary-50: var(--sign-50);--primary-100: var(--sign-100);--primary-200: var(--sign-200);--primary-300: var(--sign-300);--primary-400: var(--sign-400);--primary-500: var(--sign-500);--primary-600: var(--sign-600);--primary-700: var(--sign-700);--primary-800: var(--sign-800);--primary-900: var(--sign-900)}[data-theme=sign].dark{--background: oklch(.145 0 0);--foreground: oklch(.985 0 0);--card: oklch(.205 0 0);--card-foreground: oklch(.985 0 0);--popover: oklch(.205 0 0);--popover-foreground: oklch(.985 0 0);--primary: var(--sign);--primary-foreground: oklch(.205 0 0);--secondary: var(--sign-100);--secondary-foreground: var(--sign-700);--muted: oklch(.269 0 0);--muted-foreground: oklch(.708 0 0);--accent: oklch(.269 0 0);--accent-foreground: oklch(.985 0 0);--destructive: var(--error-500);--destructive-foreground: oklch(1 0 0);--border: oklch(1 0 0 / 10%);--input: oklch(1 0 0 / 15%);--ring: var(--sign-500);--chart-1: var(--sign-500);--chart-2: var(--sign-400);--chart-3: var(--sign-300);--chart-4: var(--sign-200);--chart-5: var(--sign-100);--sidebar: oklch(.205 0 0);--sidebar-foreground: oklch(.985 0 0);--sidebar-primary: var(--sign-500);--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.269 0 0);--sidebar-accent-foreground: oklch(.985 0 0);--sidebar-border: oklch(1 0 0 / 10%);--sidebar-ring: var(--sign-500)}[data-theme=id]{--background: oklch(1 0 0);--foreground: oklch(.145 0 0);--card: oklch(1 0 0);--card-foreground: oklch(.145 0 0);--popover: oklch(1 0 0);--popover-foreground: oklch(.145 0 0);--primary: var(--id);--primary-foreground: oklch(.985 0 0);--secondary: var(--id-100);--secondary-foreground: var(--id-700);--muted: oklch(.97 0 0);--muted-foreground: oklch(.556 0 0);--accent: oklch(.97 0 0);--accent-foreground: oklch(.205 0 0);--destructive: var(--error-500);--destructive-foreground: oklch(1 0 0);--border: oklch(.922 0 0);--input: oklch(.922 0 0);--ring: var(--id-500);--chart-1: var(--id-500);--chart-2: var(--id-400);--chart-3: var(--id-300);--chart-4: var(--id-200);--chart-5: var(--id-100);--sidebar: oklch(.985 0 0);--sidebar-foreground: oklch(.145 0 0);--sidebar-primary: var(--id-500);--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.97 0 0);--sidebar-accent-foreground: oklch(.205 0 0);--sidebar-border: oklch(.922 0 0);--sidebar-ring: var(--id-500);--primary-25: var(--id-25);--primary-50: var(--id-50);--primary-100: var(--id-100);--primary-200: var(--id-200);--primary-300: var(--id-300);--primary-400: var(--id-400);--primary-500: var(--id-500);--primary-600: var(--id-600);--primary-700: var(--id-700);--primary-800: var(--id-800);--primary-900: var(--id-900)}[data-theme=id].dark{--background: oklch(.145 0 0);--foreground: oklch(.985 0 0);--card: oklch(.205 0 0);--card-foreground: oklch(.985 0 0);--popover: oklch(.205 0 0);--popover-foreground: oklch(.985 0 0);--primary: var(--id);--primary-foreground: oklch(.205 0 0);--secondary: var(--id-100);--secondary-foreground: var(--id-700);--muted: oklch(.269 0 0);--muted-foreground: oklch(.708 0 0);--accent: oklch(.269 0 0);--accent-foreground: oklch(.985 0 0);--destructive: var(--error-500);--destructive-foreground: oklch(1 0 0);--border: oklch(1 0 0 / 10%);--input: oklch(1 0 0 / 15%);--ring: var(--id-500);--chart-1: var(--id-500);--chart-2: var(--id-400);--chart-3: var(--id-300);--chart-4: var(--id-200);--chart-5: var(--id-100);--sidebar: oklch(.205 0 0);--sidebar-foreground: oklch(.985 0 0);--sidebar-primary: var(--id-500);--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.269 0 0);--sidebar-accent-foreground: oklch(.985 0 0);--sidebar-border: oklch(1 0 0 / 10%);--sidebar-ring: var(--id-500)}[data-theme=pay]{--background: oklch(1 0 0);--foreground: oklch(.145 0 0);--card: oklch(1 0 0);--card-foreground: oklch(.145 0 0);--popover: oklch(1 0 0);--popover-foreground: oklch(.145 0 0);--primary: var(--pay);--primary-foreground: oklch(.985 0 0);--secondary: var(--pay-100);--secondary-foreground: var(--pay-700);--muted: oklch(.97 0 0);--muted-foreground: oklch(.556 0 0);--accent: oklch(.97 0 0);--accent-foreground: oklch(.205 0 0);--destructive: var(--error-500);--destructive-foreground: oklch(1 0 0);--border: oklch(.922 0 0);--input: oklch(.922 0 0);--ring: var(--pay-500);--chart-1: var(--pay-500);--chart-2: var(--pay-400);--chart-3: var(--pay-300);--chart-4: var(--pay-200);--chart-5: var(--pay-100);--sidebar: oklch(.985 0 0);--sidebar-foreground: oklch(.145 0 0);--sidebar-primary: var(--pay-500);--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.97 0 0);--sidebar-accent-foreground: oklch(.205 0 0);--sidebar-border: oklch(.922 0 0);--sidebar-ring: var(--pay-500);--primary-25: var(--pay-25);--primary-50: var(--pay-50);--primary-100: var(--pay-100);--primary-200: var(--pay-200);--primary-300: var(--pay-300);--primary-400: var(--pay-400);--primary-500: var(--pay-500);--primary-600: var(--pay-600);--primary-700: var(--pay-700);--primary-800: var(--pay-800);--primary-900: var(--pay-900)}[data-theme=pay].dark{--background: oklch(.145 0 0);--foreground: oklch(.985 0 0);--card: oklch(.205 0 0);--card-foreground: oklch(.985 0 0);--popover: oklch(.205 0 0);--popover-foreground: oklch(.985 0 0);--primary: var(--pay);--primary-foreground: oklch(.205 0 0);--secondary: var(--pay-100);--secondary-foreground: var(--pay-700);--muted: oklch(.269 0 0);--muted-foreground: oklch(.708 0 0);--accent: oklch(.269 0 0);--accent-foreground: oklch(.985 0 0);--destructive: var(--error-500);--destructive-foreground: oklch(1 0 0);--border: oklch(1 0 0 / 10%);--input: oklch(1 0 0 / 15%);--ring: var(--pay-500);--chart-1: var(--pay-500);--chart-2: var(--pay-400);--chart-3: var(--pay-300);--chart-4: var(--pay-200);--chart-5: var(--pay-100);--sidebar: oklch(.205 0 0);--sidebar-foreground: oklch(.985 0 0);--sidebar-primary: var(--pay-500);--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.269 0 0);--sidebar-accent-foreground: oklch(.985 0 0);--sidebar-border: oklch(1 0 0 / 10%);--sidebar-ring: var(--pay-500)}[data-theme=risk]{--background: oklch(1 0 0);--foreground: oklch(.145 0 0);--card: oklch(1 0 0);--card-foreground: oklch(.145 0 0);--popover: oklch(1 0 0);--popover-foreground: oklch(.145 0 0);--primary: var(--risk);--primary-foreground: oklch(.985 0 0);--secondary: var(--risk-100);--secondary-foreground: var(--risk-700);--muted: oklch(.97 0 0);--muted-foreground: oklch(.556 0 0);--accent: oklch(.97 0 0);--accent-foreground: oklch(.205 0 0);--destructive: var(--error-500);--destructive-foreground: oklch(1 0 0);--border: oklch(.922 0 0);--input: oklch(.922 0 0);--ring: var(--risk-500);--chart-1: var(--risk-500);--chart-2: var(--risk-400);--chart-3: var(--risk-300);--chart-4: var(--risk-200);--chart-5: var(--risk-100);--sidebar: oklch(.985 0 0);--sidebar-foreground: oklch(.145 0 0);--sidebar-primary: var(--risk-500);--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.97 0 0);--sidebar-accent-foreground: oklch(.205 0 0);--sidebar-border: oklch(.922 0 0);--sidebar-ring: var(--risk-500);--primary-25: var(--risk-25);--primary-50: var(--risk-50);--primary-100: var(--risk-100);--primary-200: var(--risk-200);--primary-300: var(--risk-300);--primary-400: var(--risk-400);--primary-500: var(--risk-500);--primary-600: var(--risk-600);--primary-700: var(--risk-700);--primary-800: var(--risk-800);--primary-900: var(--risk-900)}[data-theme=risk].dark{--background: oklch(.145 0 0);--foreground: oklch(.985 0 0);--card: oklch(.205 0 0);--card-foreground: oklch(.985 0 0);--popover: oklch(.205 0 0);--popover-foreground: oklch(.985 0 0);--primary: var(--risk);--primary-foreground: oklch(.205 0 0);--secondary: var(--risk-100);--secondary-foreground: var(--risk-700);--muted: oklch(.269 0 0);--muted-foreground: oklch(.708 0 0);--accent: oklch(.269 0 0);--accent-foreground: oklch(.985 0 0);--destructive: var(--error-500);--destructive-foreground: oklch(1 0 0);--border: oklch(1 0 0 / 10%);--input: oklch(1 0 0 / 15%);--ring: var(--risk-500);--chart-1: var(--risk-500);--chart-2: var(--risk-400);--chart-3: var(--risk-300);--chart-4: var(--risk-200);--chart-5: var(--risk-100);--sidebar: oklch(.205 0 0);--sidebar-foreground: oklch(.985 0 0);--sidebar-primary: var(--risk-500);--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.269 0 0);--sidebar-accent-foreground: oklch(.985 0 0);--sidebar-border: oklch(1 0 0 / 10%);--sidebar-ring: var(--risk-500)}
|
|
1
|
+
[data-theme=default]{--background: oklch(1 0 0);--foreground: oklch(.145 0 0);--card: oklch(1 0 0);--card-foreground: oklch(.145 0 0);--popover: oklch(1 0 0);--popover-foreground: oklch(.145 0 0);--primary: var(--default);--primary-foreground: oklch(.985 0 0);--secondary: var(--default-100);--secondary-foreground: var(--default-700);--muted: oklch(.97 0 0);--muted-foreground: oklch(.556 0 0);--accent: oklch(.97 0 0);--accent-foreground: oklch(.205 0 0);--destructive: var(--error);--destructive-foreground: oklch(1 0 0);--border: oklch(.922 0 0);--input: oklch(.922 0 0);--ring: var(--default-500);--chart-1: var(--default-500);--chart-2: var(--default-400);--chart-3: var(--default-300);--chart-4: var(--default-200);--chart-5: var(--default-100);--sidebar: oklch(.985 0 0);--sidebar-foreground: oklch(.145 0 0);--sidebar-primary: var(--default);--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.97 0 0);--sidebar-accent-foreground: oklch(.205 0 0);--sidebar-border: oklch(.922 0 0);--sidebar-ring: var(--default-500);--primary-25: var(--default-25);--primary-50: var(--default-50);--primary-100: var(--default-100);--primary-200: var(--default-200);--primary-300: var(--default-300);--primary-400: var(--default-400);--primary-500: var(--default-500);--primary-600: var(--default-600);--primary-700: var(--default-700);--primary-800: var(--default-800);--primary-900: var(--default-900)}[data-theme=default].dark{--background: oklch(.145 0 0);--foreground: oklch(.985 0 0);--card: oklch(.205 0 0);--card-foreground: oklch(.985 0 0);--popover: oklch(.205 0 0);--popover-foreground: oklch(.985 0 0);--primary: var(--default);--primary-foreground: oklch(.205 0 0);--secondary: var(--default-100);--secondary-foreground: var(--default-700);--muted: oklch(.269 0 0);--muted-foreground: oklch(.708 0 0);--accent: oklch(.269 0 0);--accent-foreground: oklch(.985 0 0);--destructive: var(--error);--destructive-foreground: oklch(1 0 0);--border: oklch(1 0 0 / 10%);--input: oklch(1 0 0 / 15%);--ring: var(--default-500);--chart-1: var(--default-500);--chart-2: var(--default-400);--chart-3: var(--default-300);--chart-4: var(--default-200);--chart-5: var(--default-100);--sidebar: oklch(.205 0 0);--sidebar-foreground: oklch(.985 0 0);--sidebar-primary: var(--default);--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.269 0 0);--sidebar-accent-foreground: oklch(.985 0 0);--sidebar-border: oklch(1 0 0 / 10%);--sidebar-ring: var(--default-500)}[data-theme=sign]{--background: oklch(1 0 0);--foreground: oklch(.145 0 0);--card: oklch(1 0 0);--card-foreground: oklch(.145 0 0);--popover: oklch(1 0 0);--popover-foreground: oklch(.145 0 0);--primary: var(--sign);--primary-foreground: oklch(.985 0 0);--secondary: var(--sign-100);--secondary-foreground: var(--sign-700);--muted: oklch(.97 0 0);--muted-foreground: oklch(.556 0 0);--accent: oklch(.97 0 0);--accent-foreground: oklch(.205 0 0);--destructive: var(--error);--destructive-foreground: oklch(1 0 0);--border: oklch(.922 0 0);--input: oklch(.922 0 0);--ring: var(--sign-500);--chart-1: var(--sign-500);--chart-2: var(--sign-400);--chart-3: var(--sign-300);--chart-4: var(--sign-200);--chart-5: var(--sign-100);--sidebar: oklch(.985 0 0);--sidebar-foreground: oklch(.145 0 0);--sidebar-primary: var(--sign);--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.97 0 0);--sidebar-accent-foreground: oklch(.205 0 0);--sidebar-border: oklch(.922 0 0);--sidebar-ring: var(--sign-500);--primary-25: var(--sign-25);--primary-50: var(--sign-50);--primary-100: var(--sign-100);--primary-200: var(--sign-200);--primary-300: var(--sign-300);--primary-400: var(--sign-400);--primary-500: var(--sign-500);--primary-600: var(--sign-600);--primary-700: var(--sign-700);--primary-800: var(--sign-800);--primary-900: var(--sign-900)}[data-theme=sign].dark{--background: oklch(.145 0 0);--foreground: oklch(.985 0 0);--card: oklch(.205 0 0);--card-foreground: oklch(.985 0 0);--popover: oklch(.205 0 0);--popover-foreground: oklch(.985 0 0);--primary: var(--sign);--primary-foreground: oklch(.205 0 0);--secondary: var(--sign-100);--secondary-foreground: var(--sign-700);--muted: oklch(.269 0 0);--muted-foreground: oklch(.708 0 0);--accent: oklch(.269 0 0);--accent-foreground: oklch(.985 0 0);--destructive: var(--error);--destructive-foreground: oklch(1 0 0);--border: oklch(1 0 0 / 10%);--input: oklch(1 0 0 / 15%);--ring: var(--sign-500);--chart-1: var(--sign-500);--chart-2: var(--sign-400);--chart-3: var(--sign-300);--chart-4: var(--sign-200);--chart-5: var(--sign-100);--sidebar: oklch(.205 0 0);--sidebar-foreground: oklch(.985 0 0);--sidebar-primary: var(--sign);--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.269 0 0);--sidebar-accent-foreground: oklch(.985 0 0);--sidebar-border: oklch(1 0 0 / 10%);--sidebar-ring: var(--sign-500)}[data-theme=id]{--background: oklch(1 0 0);--foreground: oklch(.145 0 0);--card: oklch(1 0 0);--card-foreground: oklch(.145 0 0);--popover: oklch(1 0 0);--popover-foreground: oklch(.145 0 0);--primary: var(--id);--primary-foreground: oklch(.985 0 0);--secondary: var(--id-100);--secondary-foreground: var(--id-700);--muted: oklch(.97 0 0);--muted-foreground: oklch(.556 0 0);--accent: oklch(.97 0 0);--accent-foreground: oklch(.205 0 0);--destructive: var(--error);--destructive-foreground: oklch(1 0 0);--border: oklch(.922 0 0);--input: oklch(.922 0 0);--ring: var(--id-500);--chart-1: var(--id-500);--chart-2: var(--id-400);--chart-3: var(--id-300);--chart-4: var(--id-200);--chart-5: var(--id-100);--sidebar: oklch(.985 0 0);--sidebar-foreground: oklch(.145 0 0);--sidebar-primary: var(--id);--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.97 0 0);--sidebar-accent-foreground: oklch(.205 0 0);--sidebar-border: oklch(.922 0 0);--sidebar-ring: var(--id-500);--primary-25: var(--id-25);--primary-50: var(--id-50);--primary-100: var(--id-100);--primary-200: var(--id-200);--primary-300: var(--id-300);--primary-400: var(--id-400);--primary-500: var(--id-500);--primary-600: var(--id-600);--primary-700: var(--id-700);--primary-800: var(--id-800);--primary-900: var(--id-900)}[data-theme=id].dark{--background: oklch(.145 0 0);--foreground: oklch(.985 0 0);--card: oklch(.205 0 0);--card-foreground: oklch(.985 0 0);--popover: oklch(.205 0 0);--popover-foreground: oklch(.985 0 0);--primary: var(--id);--primary-foreground: oklch(.205 0 0);--secondary: var(--id-100);--secondary-foreground: var(--id-700);--muted: oklch(.269 0 0);--muted-foreground: oklch(.708 0 0);--accent: oklch(.269 0 0);--accent-foreground: oklch(.985 0 0);--destructive: var(--error);--destructive-foreground: oklch(1 0 0);--border: oklch(1 0 0 / 10%);--input: oklch(1 0 0 / 15%);--ring: var(--id-500);--chart-1: var(--id-500);--chart-2: var(--id-400);--chart-3: var(--id-300);--chart-4: var(--id-200);--chart-5: var(--id-100);--sidebar: oklch(.205 0 0);--sidebar-foreground: oklch(.985 0 0);--sidebar-primary: var(--id);--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.269 0 0);--sidebar-accent-foreground: oklch(.985 0 0);--sidebar-border: oklch(1 0 0 / 10%);--sidebar-ring: var(--id-500)}[data-theme=pay]{--background: oklch(1 0 0);--foreground: oklch(.145 0 0);--card: oklch(1 0 0);--card-foreground: oklch(.145 0 0);--popover: oklch(1 0 0);--popover-foreground: oklch(.145 0 0);--primary: var(--pay);--primary-foreground: oklch(.985 0 0);--secondary: var(--pay-100);--secondary-foreground: var(--pay-700);--muted: oklch(.97 0 0);--muted-foreground: oklch(.556 0 0);--accent: oklch(.97 0 0);--accent-foreground: oklch(.205 0 0);--destructive: var(--error);--destructive-foreground: oklch(1 0 0);--border: oklch(.922 0 0);--input: oklch(.922 0 0);--ring: var(--pay-500);--chart-1: var(--pay-500);--chart-2: var(--pay-400);--chart-3: var(--pay-300);--chart-4: var(--pay-200);--chart-5: var(--pay-100);--sidebar: oklch(.985 0 0);--sidebar-foreground: oklch(.145 0 0);--sidebar-primary: var(--pay);--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.97 0 0);--sidebar-accent-foreground: oklch(.205 0 0);--sidebar-border: oklch(.922 0 0);--sidebar-ring: var(--pay-500);--primary-25: var(--pay-25);--primary-50: var(--pay-50);--primary-100: var(--pay-100);--primary-200: var(--pay-200);--primary-300: var(--pay-300);--primary-400: var(--pay-400);--primary-500: var(--pay-500);--primary-600: var(--pay-600);--primary-700: var(--pay-700);--primary-800: var(--pay-800);--primary-900: var(--pay-900)}[data-theme=pay].dark{--background: oklch(.145 0 0);--foreground: oklch(.985 0 0);--card: oklch(.205 0 0);--card-foreground: oklch(.985 0 0);--popover: oklch(.205 0 0);--popover-foreground: oklch(.985 0 0);--primary: var(--pay);--primary-foreground: oklch(.205 0 0);--secondary: var(--pay-100);--secondary-foreground: var(--pay-700);--muted: oklch(.269 0 0);--muted-foreground: oklch(.708 0 0);--accent: oklch(.269 0 0);--accent-foreground: oklch(.985 0 0);--destructive: var(--error);--destructive-foreground: oklch(1 0 0);--border: oklch(1 0 0 / 10%);--input: oklch(1 0 0 / 15%);--ring: var(--pay-500);--chart-1: var(--pay-500);--chart-2: var(--pay-400);--chart-3: var(--pay-300);--chart-4: var(--pay-200);--chart-5: var(--pay-100);--sidebar: oklch(.205 0 0);--sidebar-foreground: oklch(.985 0 0);--sidebar-primary: var(--pay);--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.269 0 0);--sidebar-accent-foreground: oklch(.985 0 0);--sidebar-border: oklch(1 0 0 / 10%);--sidebar-ring: var(--pay-500)}[data-theme=risk]{--background: oklch(1 0 0);--foreground: oklch(.145 0 0);--card: oklch(1 0 0);--card-foreground: oklch(.145 0 0);--popover: oklch(1 0 0);--popover-foreground: oklch(.145 0 0);--primary: var(--risk);--primary-foreground: oklch(.985 0 0);--secondary: var(--risk-100);--secondary-foreground: var(--risk-700);--muted: oklch(.97 0 0);--muted-foreground: oklch(.556 0 0);--accent: oklch(.97 0 0);--accent-foreground: oklch(.205 0 0);--destructive: var(--error);--destructive-foreground: oklch(1 0 0);--border: oklch(.922 0 0);--input: oklch(.922 0 0);--ring: var(--risk-500);--chart-1: var(--risk-500);--chart-2: var(--risk-400);--chart-3: var(--risk-300);--chart-4: var(--risk-200);--chart-5: var(--risk-100);--sidebar: oklch(.985 0 0);--sidebar-foreground: oklch(.145 0 0);--sidebar-primary: var(--risk);--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.97 0 0);--sidebar-accent-foreground: oklch(.205 0 0);--sidebar-border: oklch(.922 0 0);--sidebar-ring: var(--risk-500);--primary-25: var(--risk-25);--primary-50: var(--risk-50);--primary-100: var(--risk-100);--primary-200: var(--risk-200);--primary-300: var(--risk-300);--primary-400: var(--risk-400);--primary-500: var(--risk-500);--primary-600: var(--risk-600);--primary-700: var(--risk-700);--primary-800: var(--risk-800);--primary-900: var(--risk-900)}[data-theme=risk].dark{--background: oklch(.145 0 0);--foreground: oklch(.985 0 0);--card: oklch(.205 0 0);--card-foreground: oklch(.985 0 0);--popover: oklch(.205 0 0);--popover-foreground: oklch(.985 0 0);--primary: var(--risk);--primary-foreground: oklch(.205 0 0);--secondary: var(--risk-100);--secondary-foreground: var(--risk-700);--muted: oklch(.269 0 0);--muted-foreground: oklch(.708 0 0);--accent: oklch(.269 0 0);--accent-foreground: oklch(.985 0 0);--destructive: var(--error);--destructive-foreground: oklch(1 0 0);--border: oklch(1 0 0 / 10%);--input: oklch(1 0 0 / 15%);--ring: var(--risk-500);--chart-1: var(--risk-500);--chart-2: var(--risk-400);--chart-3: var(--risk-300);--chart-4: var(--risk-200);--chart-5: var(--risk-100);--sidebar: oklch(.205 0 0);--sidebar-foreground: oklch(.985 0 0);--sidebar-primary: var(--risk);--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.269 0 0);--sidebar-accent-foreground: oklch(.985 0 0);--sidebar-border: oklch(1 0 0 / 10%);--sidebar-ring: var(--risk-500)}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Combobox
|
|
2
2
|
|
|
3
|
-
Componente de selección avanzado que combina Popover + Command para búsqueda y selección. Soporta selección simple/múltiple, búsqueda filtrable, opciones deshabilitadas,
|
|
3
|
+
Componente de selección avanzado que combina Popover + Command para búsqueda y selección. Soporta selección simple/múltiple, búsqueda filtrable, opciones deshabilitadas, feedback visual con checkbox o check, placeholder persistente, iconos personalizados, y renderizado completamente personalizable mediante render props.
|
|
4
4
|
|
|
5
5
|
## Importación
|
|
6
6
|
|
|
@@ -25,16 +25,20 @@ import { Combobox } from "@adamosuiteservices/ui/combobox";
|
|
|
25
25
|
|
|
26
26
|
## Props Principales
|
|
27
27
|
|
|
28
|
-
| Prop
|
|
29
|
-
|
|
|
30
|
-
| `options`
|
|
31
|
-
| `value`
|
|
32
|
-
| `onValueChange`
|
|
33
|
-
| `searchable`
|
|
34
|
-
| `multiple`
|
|
35
|
-
| `selectedFeedback`
|
|
36
|
-
| `
|
|
37
|
-
| `
|
|
28
|
+
| Prop | Tipo | Default | Descripción |
|
|
29
|
+
| ----------------------- | --------------------------------------- | ------------ | ----------------------------------------------------------- |
|
|
30
|
+
| `options` | `ComboboxOption[]` | **required** | Array de opciones `{ value, label, disabled? }` |
|
|
31
|
+
| `value` | `string \| string[]` | - | Valor controlado (string para single, array para multiple) |
|
|
32
|
+
| `onValueChange` | `(value: string \| string[]) => void` | - | Callback al cambiar selección |
|
|
33
|
+
| `searchable` | `boolean` | `false` | Habilita input de búsqueda |
|
|
34
|
+
| `multiple` | `boolean` | `false` | Permite selección múltiple |
|
|
35
|
+
| `selectedFeedback` | `"checkbox" \| "check"` | `"checkbox"` | Tipo de indicador visual |
|
|
36
|
+
| `icon` | `ComponentType<{ className?: string }>` | - | Componente de icono opcional para mostrar en el trigger |
|
|
37
|
+
| `showIcon` | `boolean` | `false` | Muestra el icono en el trigger |
|
|
38
|
+
| `alwaysShowPlaceholder` | `boolean` | `false` | Mantiene el placeholder visible junto al valor seleccionado |
|
|
39
|
+
| `labels` | `ComboboxLabels` | - | Textos personalizables (ver tabla abajo) |
|
|
40
|
+
| `classNames` | `ComboboxClassNames` | - | Clases CSS por sección (ver tabla abajo) |
|
|
41
|
+
| `renders` | `ComboboxRenderProps` | - | Funciones de renderizado personalizadas (ver tabla abajo) |
|
|
38
42
|
|
|
39
43
|
### ComboboxLabels
|
|
40
44
|
|
|
@@ -60,6 +64,22 @@ import { Combobox } from "@adamosuiteservices/ui/combobox";
|
|
|
60
64
|
| `checkbox` | Checkbox de selección (si `selectedFeedback="checkbox"`) |
|
|
61
65
|
| `check` | Icono de check (si `selectedFeedback="check"`) |
|
|
62
66
|
|
|
67
|
+
### ComboboxRenderProps
|
|
68
|
+
|
|
69
|
+
Funciones de renderizado personalizadas para control total sobre la UI. Todas son opcionales y reciben props relevantes.
|
|
70
|
+
|
|
71
|
+
| Prop | Parámetros | Descripción |
|
|
72
|
+
| ------------------ | --------------------------------------------------------------------- | --------------------------------------- |
|
|
73
|
+
| `trigger` | `{ open, value, displayText, placeholder, hasValue, icon, showIcon }` | Renderiza el botón trigger completo |
|
|
74
|
+
| `triggerIcon` | `{ open }` | Renderiza el icono del dropdown |
|
|
75
|
+
| `placeholder` | `{ text, hasValue }` | Renderiza el texto del placeholder |
|
|
76
|
+
| `displayValue` | `{ text, value }` | Renderiza el valor seleccionado |
|
|
77
|
+
| `option` | `{ option, isSelected, selectedFeedback }` | Renderiza una opción completa |
|
|
78
|
+
| `optionLabel` | `{ option }` | Renderiza solo la etiqueta de la opción |
|
|
79
|
+
| `selectedFeedback` | `{ option, isSelected, type }` | Renderiza el indicador de selección |
|
|
80
|
+
| `empty` | `{ text }` | Renderiza el estado vacío |
|
|
81
|
+
| `searchInput` | `{ placeholder }` | Renderiza el input de búsqueda |
|
|
82
|
+
|
|
63
83
|
## Patrones de Uso
|
|
64
84
|
|
|
65
85
|
### Básico (Sin Búsqueda)
|
|
@@ -77,6 +97,55 @@ const frameworks = [
|
|
|
77
97
|
/>;
|
|
78
98
|
```
|
|
79
99
|
|
|
100
|
+
### Con Icono
|
|
101
|
+
|
|
102
|
+
```tsx
|
|
103
|
+
import { CalendarIcon } from "lucide-react";
|
|
104
|
+
|
|
105
|
+
<Combobox
|
|
106
|
+
searchable
|
|
107
|
+
showIcon
|
|
108
|
+
icon={CalendarIcon}
|
|
109
|
+
options={frameworks}
|
|
110
|
+
labels={{ placeholder: "Select framework..." }}
|
|
111
|
+
/>;
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Placeholder Persistente
|
|
115
|
+
|
|
116
|
+
Útil para usar el placeholder como etiqueta que permanece visible.
|
|
117
|
+
|
|
118
|
+
```tsx
|
|
119
|
+
<Combobox
|
|
120
|
+
searchable
|
|
121
|
+
alwaysShowPlaceholder
|
|
122
|
+
options={frameworks}
|
|
123
|
+
value={value}
|
|
124
|
+
onValueChange={setValue}
|
|
125
|
+
labels={{ placeholder: "Framework" }}
|
|
126
|
+
/>
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**Comportamiento**:
|
|
130
|
+
|
|
131
|
+
- Sin valor: Muestra solo "Framework"
|
|
132
|
+
- Con valor: Muestra "Framework: Next.js" (placeholder + valor separados)
|
|
133
|
+
|
|
134
|
+
### Icono + Placeholder Persistente
|
|
135
|
+
|
|
136
|
+
```tsx
|
|
137
|
+
<Combobox
|
|
138
|
+
searchable
|
|
139
|
+
showIcon
|
|
140
|
+
alwaysShowPlaceholder
|
|
141
|
+
icon={CalendarIcon}
|
|
142
|
+
options={frameworks}
|
|
143
|
+
value={value}
|
|
144
|
+
onValueChange={setValue}
|
|
145
|
+
labels={{ placeholder: "Framework" }}
|
|
146
|
+
/>
|
|
147
|
+
```
|
|
148
|
+
|
|
80
149
|
### Con Búsqueda
|
|
81
150
|
|
|
82
151
|
```tsx
|
|
@@ -249,6 +318,200 @@ const [values, setValues] = useState<string[]>([]);
|
|
|
249
318
|
</div>;
|
|
250
319
|
```
|
|
251
320
|
|
|
321
|
+
## Renderizado Personalizado
|
|
322
|
+
|
|
323
|
+
El prop `renders` permite personalizar completamente la UI usando el patrón render prop. Todas las funciones son opcionales.
|
|
324
|
+
|
|
325
|
+
### Custom Option Label
|
|
326
|
+
|
|
327
|
+
```tsx
|
|
328
|
+
<Combobox
|
|
329
|
+
searchable
|
|
330
|
+
options={frameworks}
|
|
331
|
+
value={value}
|
|
332
|
+
onValueChange={setValue}
|
|
333
|
+
renders={{
|
|
334
|
+
optionLabel: ({ option }) => (
|
|
335
|
+
<div className="flex items-center gap-2">
|
|
336
|
+
<span className="font-semibold text-blue-600">🚀</span>
|
|
337
|
+
<span>{option.label}</span>
|
|
338
|
+
</div>
|
|
339
|
+
),
|
|
340
|
+
}}
|
|
341
|
+
/>
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
### Custom Display Value
|
|
345
|
+
|
|
346
|
+
```tsx
|
|
347
|
+
<Combobox
|
|
348
|
+
searchable
|
|
349
|
+
options={frameworks}
|
|
350
|
+
value={value}
|
|
351
|
+
onValueChange={setValue}
|
|
352
|
+
renders={{
|
|
353
|
+
displayValue: ({ text }) => (
|
|
354
|
+
<span className="font-semibold text-blue-600">{text}</span>
|
|
355
|
+
),
|
|
356
|
+
}}
|
|
357
|
+
/>
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
### Custom Trigger Completo
|
|
361
|
+
|
|
362
|
+
```tsx
|
|
363
|
+
<Combobox
|
|
364
|
+
searchable
|
|
365
|
+
options={frameworks}
|
|
366
|
+
value={value}
|
|
367
|
+
onValueChange={setValue}
|
|
368
|
+
renders={{
|
|
369
|
+
trigger: ({ open, displayText, placeholder, hasValue }) => (
|
|
370
|
+
<button
|
|
371
|
+
type="button"
|
|
372
|
+
className="flex items-center justify-between w-full px-4 py-2 text-sm bg-linear-to-r from-purple-500 to-pink-500 text-white rounded-lg shadow-md hover:shadow-lg transition-all"
|
|
373
|
+
>
|
|
374
|
+
<span>{hasValue ? displayText : placeholder}</span>
|
|
375
|
+
<span className={`transition-transform ${open ? "rotate-180" : ""}`}>
|
|
376
|
+
▼
|
|
377
|
+
</span>
|
|
378
|
+
</button>
|
|
379
|
+
),
|
|
380
|
+
}}
|
|
381
|
+
/>
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
### Custom Empty State
|
|
385
|
+
|
|
386
|
+
```tsx
|
|
387
|
+
<Combobox
|
|
388
|
+
searchable
|
|
389
|
+
options={[]}
|
|
390
|
+
renders={{
|
|
391
|
+
empty: ({ text }) => (
|
|
392
|
+
<div className="py-8 text-center">
|
|
393
|
+
<div className="text-4xl mb-2">🔍</div>
|
|
394
|
+
<p className="text-sm font-medium text-muted-foreground">{text}</p>
|
|
395
|
+
<p className="text-xs text-muted-foreground mt-1">
|
|
396
|
+
Try adjusting your search criteria
|
|
397
|
+
</p>
|
|
398
|
+
</div>
|
|
399
|
+
),
|
|
400
|
+
}}
|
|
401
|
+
/>
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
### Custom Selected Feedback
|
|
405
|
+
|
|
406
|
+
```tsx
|
|
407
|
+
<Combobox
|
|
408
|
+
searchable
|
|
409
|
+
multiple
|
|
410
|
+
options={frameworks}
|
|
411
|
+
value={values}
|
|
412
|
+
onValueChange={setValues}
|
|
413
|
+
renders={{
|
|
414
|
+
selectedFeedback: ({ isSelected }) => (
|
|
415
|
+
<span className="text-lg">{isSelected ? "✅" : "⬜"}</span>
|
|
416
|
+
),
|
|
417
|
+
}}
|
|
418
|
+
/>
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
### Custom Placeholder
|
|
422
|
+
|
|
423
|
+
```tsx
|
|
424
|
+
<Combobox
|
|
425
|
+
searchable
|
|
426
|
+
alwaysShowPlaceholder
|
|
427
|
+
options={frameworks}
|
|
428
|
+
value={value}
|
|
429
|
+
onValueChange={setValue}
|
|
430
|
+
renders={{
|
|
431
|
+
placeholder: ({ text, hasValue }) => (
|
|
432
|
+
<span className={hasValue ? "opacity-50 italic" : ""}>{text}</span>
|
|
433
|
+
),
|
|
434
|
+
}}
|
|
435
|
+
/>
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
### Custom Trigger Icon
|
|
439
|
+
|
|
440
|
+
```tsx
|
|
441
|
+
<Combobox
|
|
442
|
+
searchable
|
|
443
|
+
options={frameworks}
|
|
444
|
+
value={value}
|
|
445
|
+
onValueChange={setValue}
|
|
446
|
+
renders={{
|
|
447
|
+
triggerIcon: ({ open }) => (
|
|
448
|
+
<span className={`transition-transform ${open ? "rotate-90" : ""}`}>
|
|
449
|
+
→
|
|
450
|
+
</span>
|
|
451
|
+
),
|
|
452
|
+
}}
|
|
453
|
+
/>
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
### Custom Search Input
|
|
457
|
+
|
|
458
|
+
```tsx
|
|
459
|
+
<Combobox
|
|
460
|
+
searchable
|
|
461
|
+
options={frameworks}
|
|
462
|
+
value={value}
|
|
463
|
+
onValueChange={setValue}
|
|
464
|
+
renders={{
|
|
465
|
+
searchInput: ({ placeholder }) => (
|
|
466
|
+
<div className="flex items-center px-3 py-2 border-b">
|
|
467
|
+
<span className="mr-2">🔍</span>
|
|
468
|
+
<input
|
|
469
|
+
type="text"
|
|
470
|
+
placeholder={placeholder}
|
|
471
|
+
className="flex-1 outline-none text-sm"
|
|
472
|
+
/>
|
|
473
|
+
</div>
|
|
474
|
+
),
|
|
475
|
+
}}
|
|
476
|
+
/>
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
### Combinando Múltiples Renders
|
|
480
|
+
|
|
481
|
+
```tsx
|
|
482
|
+
<Combobox
|
|
483
|
+
searchable
|
|
484
|
+
multiple
|
|
485
|
+
options={frameworks}
|
|
486
|
+
value={values}
|
|
487
|
+
onValueChange={setValues}
|
|
488
|
+
labels={{
|
|
489
|
+
placeholder: "Select frameworks...",
|
|
490
|
+
searchPlaceholder: "Search...",
|
|
491
|
+
}}
|
|
492
|
+
renders={{
|
|
493
|
+
optionLabel: ({ option }) => (
|
|
494
|
+
<div className="flex items-center gap-2">
|
|
495
|
+
<span>🚀</span>
|
|
496
|
+
<span className="font-medium">{option.label}</span>
|
|
497
|
+
</div>
|
|
498
|
+
),
|
|
499
|
+
displayValue: ({ text }) => (
|
|
500
|
+
<span className="font-semibold text-purple-600">{text}</span>
|
|
501
|
+
),
|
|
502
|
+
selectedFeedback: ({ isSelected }) => (
|
|
503
|
+
<span className="text-lg">{isSelected ? "✅" : "⬜"}</span>
|
|
504
|
+
),
|
|
505
|
+
empty: ({ text }) => (
|
|
506
|
+
<div className="py-6 text-center">
|
|
507
|
+
<div className="text-3xl mb-2">😕</div>
|
|
508
|
+
<p className="text-sm text-gray-500">{text}</p>
|
|
509
|
+
</div>
|
|
510
|
+
),
|
|
511
|
+
}}
|
|
512
|
+
/>
|
|
513
|
+
```
|
|
514
|
+
|
|
252
515
|
## Modos de Operación
|
|
253
516
|
|
|
254
517
|
### Single Selection
|
|
@@ -273,7 +536,10 @@ const [values, setValues] = useState<string[]>([]);
|
|
|
273
536
|
**Tags/Categories**: Selección múltiple de categorías
|
|
274
537
|
**Settings filters**: Filtros multi-selección en dashboards
|
|
275
538
|
**User assignment**: Asignar múltiples usuarios a tarea
|
|
276
|
-
**Language selector**: Selección de idioma con búsqueda
|
|
539
|
+
**Language selector**: Selección de idioma con búsqueda
|
|
540
|
+
**Status selector con icono**: Usar `icon` + `alwaysShowPlaceholder` para selectores etiquetados
|
|
541
|
+
**Rich options**: Usar `renders.optionLabel` para mostrar avatares, badges, etc.
|
|
542
|
+
**Custom UI**: Usar `renders.trigger` para triggers completamente personalizados
|
|
277
543
|
|
|
278
544
|
## Estados Internos
|
|
279
545
|
|
|
@@ -281,8 +547,11 @@ const [values, setValues] = useState<string[]>([]);
|
|
|
281
547
|
|
|
282
548
|
- **Sin selección**: Muestra `labels.placeholder`
|
|
283
549
|
- **Single selection**: Muestra `label` de la opción seleccionada
|
|
550
|
+
- **Single selection + alwaysShowPlaceholder**: Muestra `placeholder: label` separados
|
|
284
551
|
- **Multiple (1 item)**: Muestra `label` del único item seleccionado
|
|
552
|
+
- **Multiple (1 item) + alwaysShowPlaceholder**: Muestra `placeholder: label` separados
|
|
285
553
|
- **Multiple (>1 items)**: Muestra resultado de `labels.multipleSelected(count)`
|
|
554
|
+
- **Multiple (>1 items) + alwaysShowPlaceholder**: Muestra `placeholder: X items selected` separados
|
|
286
555
|
|
|
287
556
|
### Popover State
|
|
288
557
|
|
|
@@ -308,8 +577,12 @@ const [values, setValues] = useState<string[]>([]);
|
|
|
308
577
|
- `"checkbox"`: Muestra Checkbox a la izquierda de cada opción
|
|
309
578
|
- `"check"`: Muestra CheckIcon a la derecha (agrega `pr-8` automáticamente)
|
|
310
579
|
- **Popover alignment**: `align="start"` por defecto para alinear con trigger
|
|
311
|
-
- **ChevronDownIcon**: Se muestra en trigger con `opacity-50`
|
|
580
|
+
- **ChevronDownIcon**: Se muestra en trigger con `opacity-50` (puede sobrescribirse con `renders.triggerIcon`)
|
|
312
581
|
- **No animation**: Selección instantánea, sin delays
|
|
582
|
+
- **alwaysShowPlaceholder**: Renderiza placeholder y valor como elementos separados con gap
|
|
583
|
+
- **icon**: Se muestra con `opacity-50` por defecto, solo visible si `showIcon={true}`
|
|
584
|
+
- **Render props**: Tienen prioridad sobre renderizado por defecto, permiten personalización completa
|
|
585
|
+
- **Composición de renders**: Puedes combinar múltiples render props para personalización granular
|
|
313
586
|
|
|
314
587
|
## Troubleshooting
|
|
315
588
|
|
|
@@ -319,10 +592,14 @@ const [values, setValues] = useState<string[]>([]);
|
|
|
319
592
|
**Labels incorrectas en multiple**: Usa función `multipleSelected` para pluralización
|
|
320
593
|
**Tipo de value incorrecto**: Single usa `string`, Multiple usa `string[]`
|
|
321
594
|
**Checkboxes no aparecen**: Solo aparecen cuando `selectedFeedback="checkbox"` (default)
|
|
322
|
-
**Check icon no visible**: Solo aparece cuando `selectedFeedback="check"`
|
|
595
|
+
**Check icon no visible**: Solo aparece cuando `selectedFeedback="check"`
|
|
596
|
+
**Icon no se muestra**: Asegúrate de pasar tanto `icon` como `showIcon={true}`
|
|
597
|
+
**Placeholder desaparece al seleccionar**: Si quieres mantenerlo visible, usa `alwaysShowPlaceholder={true}`
|
|
598
|
+
**Render prop no funciona**: Verifica que el render prop retorne un `ReactNode` válido
|
|
599
|
+
**Custom trigger pierde funcionalidad**: Cuando usas `renders.trigger`, debes manejar el click manualmente o envolver en `PopoverTrigger`
|
|
323
600
|
|
|
324
601
|
## Referencias
|
|
325
602
|
|
|
326
|
-
- **Radix UI Popover**: https://www.radix-ui.com/primitives/docs/components/popover
|
|
603
|
+
- **Radix UI Popover**: <https://www.radix-ui.com/primitives/docs/components/popover>
|
|
327
604
|
- **Command Component**: Ver documentación de Command
|
|
328
|
-
- **ARIA Combobox**: https://www.w3.org/WAI/ARIA/apg/patterns/combobox
|
|
605
|
+
- **ARIA Combobox**: <https://www.w3.org/WAI/ARIA/apg/patterns/combobox/>
|