@shipfox/react-ui 0.13.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.storybook/preview.tsx +7 -0
- package/.turbo/turbo-build.log +7 -7
- package/.turbo/turbo-check.log +2 -2
- package/.turbo/turbo-type.log +1 -1
- package/CHANGELOG.md +16 -0
- package/dist/components/avatar/avatar.js +1 -1
- package/dist/components/avatar/avatar.js.map +1 -1
- package/dist/components/button-group/button-group.d.ts +17 -0
- package/dist/components/button-group/button-group.d.ts.map +1 -0
- package/dist/components/button-group/button-group.js +74 -0
- package/dist/components/button-group/button-group.js.map +1 -0
- package/dist/components/button-group/button-group.stories.js +644 -0
- package/dist/components/button-group/button-group.stories.js.map +1 -0
- package/dist/components/button-group/index.d.ts +2 -0
- package/dist/components/button-group/index.d.ts.map +1 -0
- package/dist/components/button-group/index.js +3 -0
- package/dist/components/button-group/index.js.map +1 -0
- package/dist/components/code-block/code-block-footer.d.ts.map +1 -1
- package/dist/components/code-block/code-block-footer.js +13 -5
- package/dist/components/code-block/code-block-footer.js.map +1 -1
- package/dist/components/command/command.d.ts +28 -0
- package/dist/components/command/command.d.ts.map +1 -0
- package/dist/components/command/command.js +190 -0
- package/dist/components/command/command.js.map +1 -0
- package/dist/components/command/command.stories.js +228 -0
- package/dist/components/command/command.stories.js.map +1 -0
- package/dist/components/command/index.d.ts +2 -0
- package/dist/components/command/index.d.ts.map +1 -0
- package/dist/components/command/index.js +3 -0
- package/dist/components/command/index.js.map +1 -0
- package/dist/components/confetti/confetti.d.ts +21 -0
- package/dist/components/confetti/confetti.d.ts.map +1 -0
- package/dist/components/confetti/confetti.js +101 -0
- package/dist/components/confetti/confetti.js.map +1 -0
- package/dist/components/confetti/confetti.stories.js +41 -0
- package/dist/components/confetti/confetti.stories.js.map +1 -0
- package/dist/components/confetti/index.d.ts +2 -0
- package/dist/components/confetti/index.d.ts.map +1 -0
- package/dist/components/confetti/index.js +3 -0
- package/dist/components/confetti/index.js.map +1 -0
- package/dist/components/dashboard/components/analytics-content.d.ts +2 -0
- package/dist/components/dashboard/components/analytics-content.d.ts.map +1 -0
- package/dist/components/dashboard/components/analytics-content.js +180 -0
- package/dist/components/dashboard/components/analytics-content.js.map +1 -0
- package/dist/components/dashboard/components/animated-logo.d.ts +4 -0
- package/dist/components/dashboard/components/animated-logo.d.ts.map +1 -0
- package/dist/components/dashboard/components/animated-logo.js +23 -0
- package/dist/components/dashboard/components/animated-logo.js.map +1 -0
- package/dist/components/dashboard/components/complete-setup-button.d.ts +4 -0
- package/dist/components/dashboard/components/complete-setup-button.d.ts.map +1 -0
- package/dist/components/dashboard/components/complete-setup-button.js +28 -0
- package/dist/components/dashboard/components/complete-setup-button.js.map +1 -0
- package/dist/components/dashboard/components/jobs-content.d.ts +2 -0
- package/dist/components/dashboard/components/jobs-content.d.ts.map +1 -0
- package/dist/components/dashboard/components/jobs-content.js +69 -0
- package/dist/components/dashboard/components/jobs-content.js.map +1 -0
- package/dist/components/dashboard/components/mobile-menu.d.ts +2 -0
- package/dist/components/dashboard/components/mobile-menu.d.ts.map +1 -0
- package/dist/components/dashboard/components/mobile-menu.js +65 -0
- package/dist/components/dashboard/components/mobile-menu.js.map +1 -0
- package/dist/components/dashboard/components/organization-selector.d.ts +2 -0
- package/dist/components/dashboard/components/organization-selector.d.ts.map +1 -0
- package/dist/components/dashboard/components/organization-selector.js +92 -0
- package/dist/components/dashboard/components/organization-selector.js.map +1 -0
- package/dist/components/dashboard/components/top-menu.d.ts +5 -0
- package/dist/components/dashboard/components/top-menu.d.ts.map +1 -0
- package/dist/components/dashboard/components/top-menu.js +31 -0
- package/dist/components/dashboard/components/top-menu.js.map +1 -0
- package/dist/components/dashboard/components/topbar-button.d.ts +7 -0
- package/dist/components/dashboard/components/topbar-button.d.ts.map +1 -0
- package/dist/components/dashboard/components/topbar-button.js +18 -0
- package/dist/components/dashboard/components/topbar-button.js.map +1 -0
- package/dist/components/dashboard/components/topbar.d.ts +4 -0
- package/dist/components/dashboard/components/topbar.d.ts.map +1 -0
- package/dist/components/dashboard/components/topbar.js +62 -0
- package/dist/components/dashboard/components/topbar.js.map +1 -0
- package/dist/components/dashboard/components/user-profile.d.ts +2 -0
- package/dist/components/dashboard/components/user-profile.d.ts.map +1 -0
- package/dist/components/dashboard/components/user-profile.js +146 -0
- package/dist/components/dashboard/components/user-profile.js.map +1 -0
- package/dist/components/dashboard/dashboard.d.ts +2 -0
- package/dist/components/dashboard/dashboard.d.ts.map +1 -0
- package/dist/components/dashboard/dashboard.js +70 -0
- package/dist/components/dashboard/dashboard.js.map +1 -0
- package/dist/components/dashboard/dashboard.stories.js +23 -0
- package/dist/components/dashboard/dashboard.stories.js.map +1 -0
- package/dist/components/dashboard/index.d.ts +2 -0
- package/dist/components/dashboard/index.d.ts.map +1 -0
- package/dist/components/dashboard/index.js +3 -0
- package/dist/components/dashboard/index.js.map +1 -0
- package/dist/components/form/form.stories.js +6 -1
- package/dist/components/form/form.stories.js.map +1 -1
- package/dist/components/icon/icon.d.ts +3 -2
- package/dist/components/icon/icon.d.ts.map +1 -1
- package/dist/components/icon/icon.js +7 -2
- package/dist/components/icon/icon.js.map +1 -1
- package/dist/components/index.d.ts +9 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +9 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/kbd/index.d.ts +2 -0
- package/dist/components/kbd/index.d.ts.map +1 -0
- package/dist/components/kbd/index.js +3 -0
- package/dist/components/kbd/index.js.map +1 -0
- package/dist/components/kbd/kbd.d.ts +7 -0
- package/dist/components/kbd/kbd.d.ts.map +1 -0
- package/dist/components/kbd/kbd.js +18 -0
- package/dist/components/kbd/kbd.js.map +1 -0
- package/dist/components/kbd/kbd.stories.js +119 -0
- package/dist/components/kbd/kbd.stories.js.map +1 -0
- package/dist/components/modal/modal.stories.js +227 -168
- package/dist/components/modal/modal.stories.js.map +1 -1
- package/dist/components/search/index.d.ts +7 -0
- package/dist/components/search/index.d.ts.map +1 -0
- package/dist/components/search/index.js +8 -0
- package/dist/components/search/index.js.map +1 -0
- package/dist/components/search/search-context.d.ts +11 -0
- package/dist/components/search/search-context.d.ts.map +1 -0
- package/dist/components/search/search-context.js +56 -0
- package/dist/components/search/search-context.js.map +1 -0
- package/dist/components/search/search-inline.d.ts +9 -0
- package/dist/components/search/search-inline.d.ts.map +1 -0
- package/dist/components/search/search-inline.js +85 -0
- package/dist/components/search/search-inline.js.map +1 -0
- package/dist/components/search/search-modal.d.ts +25 -0
- package/dist/components/search/search-modal.d.ts.map +1 -0
- package/dist/components/search/search-modal.js +162 -0
- package/dist/components/search/search-modal.js.map +1 -0
- package/dist/components/search/search-trigger.d.ts +9 -0
- package/dist/components/search/search-trigger.d.ts.map +1 -0
- package/dist/components/search/search-trigger.js +37 -0
- package/dist/components/search/search-trigger.js.map +1 -0
- package/dist/components/search/search-variants.d.ts +14 -0
- package/dist/components/search/search-variants.d.ts.map +1 -0
- package/dist/components/search/search-variants.js +90 -0
- package/dist/components/search/search-variants.js.map +1 -0
- package/dist/components/search/search.d.ts +11 -0
- package/dist/components/search/search.d.ts.map +1 -0
- package/dist/components/search/search.js +35 -0
- package/dist/components/search/search.js.map +1 -0
- package/dist/components/search/search.stories.js +630 -0
- package/dist/components/search/search.stories.js.map +1 -0
- package/dist/components/select/index.d.ts +2 -0
- package/dist/components/select/index.d.ts.map +1 -0
- package/dist/components/select/index.js +3 -0
- package/dist/components/select/index.js.map +1 -0
- package/dist/components/select/select.d.ts +25 -0
- package/dist/components/select/select.d.ts.map +1 -0
- package/dist/components/select/select.js +153 -0
- package/dist/components/select/select.js.map +1 -0
- package/dist/components/select/select.stories.js +393 -0
- package/dist/components/select/select.stories.js.map +1 -0
- package/dist/components/shiny-text/index.d.ts +2 -0
- package/dist/components/shiny-text/index.d.ts.map +1 -0
- package/dist/components/shiny-text/index.js +3 -0
- package/dist/components/shiny-text/index.js.map +1 -0
- package/dist/components/shiny-text/shiny-text.d.ts +10 -0
- package/dist/components/shiny-text/shiny-text.d.ts.map +1 -0
- package/dist/components/shiny-text/shiny-text.js +17 -0
- package/dist/components/shiny-text/shiny-text.js.map +1 -0
- package/dist/components/skeleton/index.d.ts +2 -0
- package/dist/components/skeleton/index.d.ts.map +1 -0
- package/dist/components/skeleton/index.js +3 -0
- package/dist/components/skeleton/index.js.map +1 -0
- package/dist/components/skeleton/skeleton.d.ts +5 -0
- package/dist/components/skeleton/skeleton.d.ts.map +1 -0
- package/dist/components/skeleton/skeleton.js +11 -0
- package/dist/components/skeleton/skeleton.js.map +1 -0
- package/dist/components/skeleton/skeleton.stories.js +345 -0
- package/dist/components/skeleton/skeleton.stories.js.map +1 -0
- package/dist/components/table/data-table.d.ts +70 -0
- package/dist/components/table/data-table.d.ts.map +1 -0
- package/dist/components/table/data-table.js +159 -0
- package/dist/components/table/data-table.js.map +1 -0
- package/dist/components/table/index.d.ts +6 -0
- package/dist/components/table/index.d.ts.map +1 -0
- package/dist/components/table/index.js +6 -0
- package/dist/components/table/index.js.map +1 -0
- package/dist/components/table/table-column-header.d.ts +79 -0
- package/dist/components/table/table-column-header.d.ts.map +1 -0
- package/dist/components/table/table-column-header.js +99 -0
- package/dist/components/table/table-column-header.js.map +1 -0
- package/dist/components/table/table-pagination.d.ts +53 -0
- package/dist/components/table/table-pagination.d.ts.map +1 -0
- package/dist/components/table/table-pagination.js +139 -0
- package/dist/components/table/table-pagination.js.map +1 -0
- package/dist/components/table/table.d.ts +11 -0
- package/dist/components/table/table.d.ts.map +1 -0
- package/dist/components/table/table.js +64 -0
- package/dist/components/table/table.js.map +1 -0
- package/dist/components/table/table.stories.columns.d.ts +24 -0
- package/dist/components/table/table.stories.columns.d.ts.map +1 -0
- package/dist/components/table/table.stories.columns.js +310 -0
- package/dist/components/table/table.stories.columns.js.map +1 -0
- package/dist/components/table/table.stories.components.d.ts +14 -0
- package/dist/components/table/table.stories.components.d.ts.map +1 -0
- package/dist/components/table/table.stories.components.js +107 -0
- package/dist/components/table/table.stories.components.js.map +1 -0
- package/dist/components/table/table.stories.data.d.ts +54 -0
- package/dist/components/table/table.stories.data.d.ts.map +1 -0
- package/dist/components/table/table.stories.data.js +122 -0
- package/dist/components/table/table.stories.data.js.map +1 -0
- package/dist/components/table/table.stories.js +302 -0
- package/dist/components/table/table.stories.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/index.css +79 -0
- package/package.json +6 -2
- package/src/components/avatar/avatar.tsx +1 -1
- package/src/components/button-group/button-group.stories.tsx +361 -0
- package/src/components/button-group/button-group.tsx +111 -0
- package/src/components/button-group/index.ts +1 -0
- package/src/components/code-block/code-block-footer.tsx +19 -2
- package/src/components/command/command.stories.tsx +133 -0
- package/src/components/command/command.tsx +265 -0
- package/src/components/command/index.ts +1 -0
- package/src/components/confetti/confetti.stories.tsx +38 -0
- package/src/components/confetti/confetti.tsx +140 -0
- package/src/components/confetti/index.ts +1 -0
- package/src/components/dashboard/components/analytics-content.tsx +102 -0
- package/src/components/dashboard/components/animated-logo.tsx +25 -0
- package/src/components/dashboard/components/complete-setup-button.tsx +30 -0
- package/src/components/dashboard/components/jobs-content.tsx +51 -0
- package/src/components/dashboard/components/mobile-menu.tsx +50 -0
- package/src/components/dashboard/components/organization-selector.tsx +51 -0
- package/src/components/dashboard/components/top-menu.tsx +26 -0
- package/src/components/dashboard/components/topbar-button.tsx +27 -0
- package/src/components/dashboard/components/topbar.tsx +40 -0
- package/src/components/dashboard/components/user-profile.tsx +90 -0
- package/src/components/dashboard/dashboard.stories.tsx +25 -0
- package/src/components/dashboard/dashboard.tsx +61 -0
- package/src/components/dashboard/index.ts +1 -0
- package/src/components/form/form.stories.tsx +5 -0
- package/src/components/icon/icon.tsx +7 -3
- package/src/components/index.ts +9 -0
- package/src/components/kbd/index.ts +1 -0
- package/src/components/kbd/kbd.stories.tsx +64 -0
- package/src/components/kbd/kbd.tsx +32 -0
- package/src/components/modal/modal.stories.tsx +58 -4
- package/src/components/search/index.ts +28 -0
- package/src/components/search/search-context.tsx +78 -0
- package/src/components/search/search-inline.tsx +107 -0
- package/src/components/search/search-modal.tsx +198 -0
- package/src/components/search/search-trigger.tsx +47 -0
- package/src/components/search/search-variants.ts +88 -0
- package/src/components/search/search.stories.tsx +392 -0
- package/src/components/search/search.tsx +47 -0
- package/src/components/select/index.ts +1 -0
- package/src/components/select/select.stories.tsx +207 -0
- package/src/components/select/select.tsx +220 -0
- package/src/components/shiny-text/index.ts +1 -0
- package/src/components/shiny-text/shiny-text.tsx +21 -0
- package/src/components/skeleton/index.ts +1 -0
- package/src/components/skeleton/skeleton.stories.tsx +178 -0
- package/src/components/skeleton/skeleton.tsx +14 -0
- package/src/components/table/data-table.tsx +254 -0
- package/src/components/table/index.ts +5 -0
- package/src/components/table/table-column-header.tsx +141 -0
- package/src/components/table/table-pagination.tsx +161 -0
- package/src/components/table/table.stories.columns.tsx +198 -0
- package/src/components/table/table.stories.components.tsx +104 -0
- package/src/components/table/table.stories.data.ts +117 -0
- package/src/components/table/table.stories.tsx +256 -0
- package/src/components/table/table.tsx +95 -0
- package/src/index.ts +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/button-group/button-group.stories.tsx"],"sourcesContent":["import type {Meta, StoryObj} from '@storybook/react';\nimport {useState} from 'react';\nimport {Button} from '../button';\nimport {Icon} from '../icon';\nimport {Input} from '../input';\nimport {Popover, PopoverContent, PopoverTrigger} from '../popover';\nimport {Select, SelectContent, SelectItem, SelectTrigger, SelectValue} from '../select';\nimport {Textarea} from '../textarea';\nimport {Code, Header} from '../typography';\nimport {ButtonGroup, ButtonGroupSeparator, ButtonGroupText} from './button-group';\n\nconst meta = {\n title: 'Components/ButtonGroup',\n component: ButtonGroup,\n tags: ['autodocs'],\n parameters: {\n docs: {\n description: {\n component:\n 'A container that groups related buttons together with consistent styling. Automatically styles Button, Input, Select, and Textarea children without requiring manual className overrides. Separators are recommended for visual hierarchy.',\n },\n },\n },\n argTypes: {\n orientation: {\n control: 'select',\n options: ['horizontal', 'vertical'],\n description: 'The orientation of the button group',\n defaultValue: 'horizontal',\n },\n },\n} satisfies Meta<typeof ButtonGroup>;\n\nexport default meta;\n\ntype Story = StoryObj<typeof meta>;\n\nfunction SelectExample() {\n const [currency, setCurrency] = useState('$');\n\n return (\n <div className=\"inline-flex gap-8\">\n <ButtonGroup className=\"w-280\" aria-label=\"Currency converter\">\n <Select value={currency} onValueChange={setCurrency}>\n <SelectTrigger\n className=\"w-80 font-mono text-foreground-neutral-subtle\"\n aria-label=\"Select currency\"\n >\n <SelectValue />\n </SelectTrigger>\n <SelectContent align=\"start\">\n <SelectItem value=\"$\">$ USD</SelectItem>\n <SelectItem value=\"€\">€ EUR</SelectItem>\n <SelectItem value=\"£\">£ GBP</SelectItem>\n <SelectItem value=\"¥\">¥ JPY</SelectItem>\n </SelectContent>\n </Select>\n <ButtonGroupSeparator />\n <Input placeholder=\"10.00\" pattern=\"[0-9]*\" aria-label=\"Amount\" />\n </ButtonGroup>\n <ButtonGroup aria-label=\"Send action\">\n <Button variant=\"secondary\" aria-label=\"Send\">\n <Icon name=\"arrowRightLine\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n </ButtonGroup>\n </div>\n );\n}\n\nfunction PopoverExample() {\n const [open, setOpen] = useState(false);\n\n return (\n <ButtonGroup aria-label=\"Copilot actions\">\n <ButtonGroupText>\n <Icon name=\"sparklingLine\" className=\"size-16\" />\n Copilot\n </ButtonGroupText>\n <ButtonGroupSeparator />\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"secondary\"\n size=\"sm\"\n className=\"!text-foreground-neutral-subtle\"\n aria-label=\"Open Copilot options\"\n >\n <Icon name=\"arrowDownSLine\" className=\"size-16\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent align=\"end\" className=\"w-320 p-0 rounded-12\">\n <div className=\"px-16 py-12 border-b border-border-neutral-strong\">\n <Header variant=\"h4\" className=\"text-sm font-medium\">\n Agent Tasks\n </Header>\n </div>\n <div className=\"p-16 flex flex-col gap-12\">\n <Textarea\n placeholder=\"Describe your task in natural language.\"\n className=\"min-h-80 resize-none\"\n aria-label=\"Task description\"\n />\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"font-medium text-foreground-neutral-base\">\n Start a new task with Copilot\n </Code>\n <Code variant=\"paragraph\" className=\"text-foreground-neutral-subtle text-xs\">\n Describe your task in natural language. Copilot will work in the background and open\n a pull request for your review.\n </Code>\n </div>\n </div>\n </PopoverContent>\n </Popover>\n </ButtonGroup>\n );\n}\n\nexport const Default: Story = {\n render: () => (\n <div className=\"flex flex-col gap-24\">\n {/* Basic Button Group */}\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Basic Button Group\n </Code>\n <ButtonGroup aria-label=\"Text alignment\">\n <Button variant=\"secondary\" size=\"sm\" aria-label=\"Align left\">\n <Icon name=\"rewindFill\" className=\"size-14 text-foreground-neutral-subtle\" />\n </Button>\n <ButtonGroupSeparator />\n <Button variant=\"secondary\" size=\"sm\" aria-label=\"Align center\">\n <Icon name=\"playFill\" className=\"size-14 text-foreground-neutral-subtle\" />\n </Button>\n <ButtonGroupSeparator />\n <Button variant=\"secondary\" size=\"sm\" aria-label=\"Align right\">\n <Icon name=\"speedFill\" className=\"size-14 text-foreground-neutral-subtle\" />\n </Button>\n </ButtonGroup>\n </div>\n\n {/* Sizes */}\n <div className=\"flex flex-col gap-12\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Sizes\n </Code>\n <div className=\"flex flex-col gap-8\">\n <ButtonGroup aria-label=\"Small buttons\">\n <Button variant=\"secondary\" size=\"sm\" aria-label=\"Cut\">\n <Icon name=\"rewindFill\" className=\"size-14 text-foreground-neutral-subtle\" />\n </Button>\n <ButtonGroupSeparator />\n <Button variant=\"secondary\" size=\"sm\" aria-label=\"Copy\">\n <Icon name=\"playFill\" className=\"size-14 text-foreground-neutral-subtle\" />\n </Button>\n <ButtonGroupSeparator />\n <Button variant=\"secondary\" size=\"sm\" aria-label=\"Paste\">\n <Icon name=\"speedFill\" className=\"size-14 text-foreground-neutral-subtle\" />\n </Button>\n </ButtonGroup>\n <ButtonGroup aria-label=\"Medium buttons\">\n <Button variant=\"secondary\" size=\"md\" aria-label=\"Cut\">\n <Icon name=\"rewindFill\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n <ButtonGroupSeparator />\n <Button variant=\"secondary\" size=\"md\" aria-label=\"Copy\">\n <Icon name=\"playFill\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n <ButtonGroupSeparator />\n <Button variant=\"secondary\" size=\"md\" aria-label=\"Paste\">\n <Icon name=\"speedFill\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n </ButtonGroup>\n <ButtonGroup aria-label=\"Large buttons\">\n <Button variant=\"secondary\" size=\"lg\" aria-label=\"Cut\">\n <Icon name=\"rewindFill\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n <ButtonGroupSeparator />\n <Button variant=\"secondary\" size=\"lg\" aria-label=\"Copy\">\n <Icon name=\"playFill\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n <ButtonGroupSeparator />\n <Button variant=\"secondary\" size=\"lg\" aria-label=\"Paste\">\n <Icon name=\"speedFill\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n </ButtonGroup>\n </div>\n </div>\n\n {/* Orientation */}\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Orientation\n </Code>\n <div className=\"flex gap-24 items-start\">\n <ButtonGroup aria-label=\"Horizontal\">\n <Button variant=\"secondary\" size=\"sm\" aria-label=\"Zoom in\">\n <Icon name=\"addLine\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n <ButtonGroupSeparator />\n <Button variant=\"secondary\" size=\"sm\" aria-label=\"Zoom out\">\n <Icon name=\"subtractLine\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n </ButtonGroup>\n <ButtonGroup orientation=\"vertical\" className=\"h-fit w-fit\" aria-label=\"Vertical\">\n <Button variant=\"secondary\" size=\"sm\" aria-label=\"Increase\">\n <Icon name=\"addLine\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n <ButtonGroupSeparator orientation=\"horizontal\" />\n <Button variant=\"secondary\" size=\"sm\" aria-label=\"Decrease\">\n <Icon name=\"subtractLine\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n </ButtonGroup>\n </div>\n </div>\n\n {/* Split Button */}\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Split Button\n </Code>\n <ButtonGroup aria-label=\"Save actions\">\n <Button variant=\"secondary\" size=\"sm\" className=\" !text-foreground-neutral-subtle\">\n Save\n </Button>\n <ButtonGroupSeparator />\n <Button variant=\"secondary\" size=\"sm\" aria-label=\"More options\">\n <Icon name=\"arrowDownSLine\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n </ButtonGroup>\n </div>\n\n {/* With Input */}\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n With Input\n </Code>\n <ButtonGroup className=\"w-320\" aria-label=\"Search\">\n <Input placeholder=\"Search...\" aria-label=\"Search input\" />\n <ButtonGroupSeparator />\n <Button variant=\"secondary\" aria-label=\"Submit search\">\n <Icon name=\"searchLine\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n </ButtonGroup>\n </div>\n\n {/* Quantity Input */}\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Quantity Selector\n </Code>\n <ButtonGroup className=\"w-280\" aria-label=\"Quantity selector\">\n <Button variant=\"secondary\" aria-label=\"Decrease\">\n <Icon name=\"subtractLine\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n <ButtonGroupSeparator />\n <Input placeholder=\"1\" className=\"text-center\" aria-label=\"Quantity\" />\n <ButtonGroupSeparator />\n <Button variant=\"secondary\" aria-label=\"Increase\">\n <Icon name=\"addLine\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n </ButtonGroup>\n </div>\n\n {/* With Select */}\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n With Select\n </Code>\n <SelectExample />\n </div>\n\n {/* With Popover */}\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n With Popover\n </Code>\n <PopoverExample />\n </div>\n\n {/* Nested Groups */}\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Nested Groups\n </Code>\n <div className=\"inline-flex gap-8\">\n <ButtonGroup aria-label=\"Page selection\">\n <Button\n variant=\"transparent\"\n className=\"w-42 !text-foreground-neutral-subtle\"\n aria-label=\"Page 1\"\n >\n 1\n </Button>\n <ButtonGroupSeparator />\n <Button\n variant=\"transparent\"\n className=\"w-42 !text-foreground-neutral-subtle\"\n aria-label=\"Page 2\"\n >\n 2\n </Button>\n <ButtonGroupSeparator />\n <Button\n variant=\"transparent\"\n className=\"w-42 !text-foreground-neutral-subtle\"\n aria-label=\"Page 3\"\n >\n 3\n </Button>\n <ButtonGroupSeparator />\n <Button\n variant=\"transparent\"\n className=\"w-42 !text-foreground-neutral-subtle\"\n aria-label=\"Page 4\"\n >\n 4\n </Button>\n <ButtonGroupSeparator />\n <Button\n variant=\"transparent\"\n className=\"w-42 !text-foreground-neutral-subtle\"\n aria-label=\"Page 5\"\n >\n 5\n </Button>\n </ButtonGroup>\n <ButtonGroup aria-label=\"Pagination controls\">\n <Button variant=\"transparent\" aria-label=\"Previous page\">\n <Icon name=\"arrowLeftSLine\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n <ButtonGroupSeparator />\n <Button variant=\"transparent\" aria-label=\"Next page\">\n <Icon name=\"arrowRightSLine\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n </ButtonGroup>\n </div>\n </div>\n\n {/* Disabled State */}\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Disabled State\n </Code>\n <ButtonGroup aria-label=\"Button group with disabled state\">\n <Button variant=\"secondary\" size=\"sm\" className=\" !text-foreground-neutral-subtle\">\n Enabled\n </Button>\n <ButtonGroupSeparator />\n <Button variant=\"secondary\" size=\"sm\" disabled>\n Disabled\n </Button>\n <ButtonGroupSeparator />\n <Button variant=\"secondary\" size=\"sm\" className=\" !text-foreground-neutral-subtle\">\n Enabled\n </Button>\n </ButtonGroup>\n </div>\n </div>\n ),\n};\n"],"names":["useState","Button","Icon","Input","Popover","PopoverContent","PopoverTrigger","Select","SelectContent","SelectItem","SelectTrigger","SelectValue","Textarea","Code","Header","ButtonGroup","ButtonGroupSeparator","ButtonGroupText","meta","title","component","tags","parameters","docs","description","argTypes","orientation","control","options","defaultValue","SelectExample","currency","setCurrency","div","className","aria-label","value","onValueChange","align","placeholder","pattern","variant","name","PopoverExample","open","setOpen","onOpenChange","asChild","size","Default","render","disabled"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/button-group/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/button-group/index.ts"],"sourcesContent":["export * from './button-group';\n"],"names":[],"mappings":"AAAA,cAAc,iBAAiB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-block-footer.d.ts","sourceRoot":"","sources":["../../../src/components/code-block/code-block-footer.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"code-block-footer.d.ts","sourceRoot":"","sources":["../../../src/components/code-block/code-block-footer.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,cAAc,EAAE,cAAc,EAAE,SAAS,EAAC,MAAM,OAAO,CAAC;AAIrE,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAC,cAAc,CAAC,GAAG;IAClE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB,CAAC;AAEF,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,OAAe,EACf,KAAiB,EACjB,OAAO,EACP,WAAW,EACX,IAAI,EACJ,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,oBAAoB,2CAwDtB;AAED,MAAM,MAAM,wBAAwB,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG;IAC7D,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,EAClC,SAAS,EACT,OAAe,EACf,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,wBAAwB,2CAY1B;AAED,MAAM,MAAM,2BAA2B,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG;IAChE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,EACrC,SAAS,EACT,OAAe,EACf,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,2BAA2B,2CAY7B;AAED,MAAM,MAAM,2BAA2B,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG;IAChE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,EACrC,SAAS,EACT,OAAe,EACf,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,2BAA2B,2CAuB7B;AAED,MAAM,MAAM,+BAA+B,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG;IACpE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,wBAAgB,0BAA0B,CAAC,EACzC,SAAS,EACT,OAAe,EACf,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,+BAA+B,2CAuBjC"}
|
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Slot } from '@radix-ui/react-slot';
|
|
3
3
|
import { Icon } from '../../components/icon/icon.js';
|
|
4
|
+
import { ShinyText } from '../../components/shiny-text/index.js';
|
|
4
5
|
import { Text } from '../../components/typography/index.js';
|
|
6
|
+
import { useResolvedTheme } from '../../hooks/useResolvedTheme.js';
|
|
7
|
+
import { ShipfoxLoader } from 'shipfox-loader-react';
|
|
5
8
|
import { cn } from '../../utils/cn.js';
|
|
6
9
|
export function CodeBlockFooter({ className, asChild = false, state = 'running', message, description, icon, children, ...props }) {
|
|
7
10
|
const Comp = asChild ? Slot : 'div';
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
const resolvedTheme = useResolvedTheme();
|
|
12
|
+
const defaultIcon = icon ?? (state === 'running' ? /*#__PURE__*/ _jsx(ShipfoxLoader, {
|
|
13
|
+
size: 20,
|
|
14
|
+
animation: "circular",
|
|
15
|
+
color: resolvedTheme === 'dark' ? 'white' : 'orange',
|
|
16
|
+
background: resolvedTheme === 'dark' ? 'dark' : 'light'
|
|
12
17
|
}) : /*#__PURE__*/ _jsx(Icon, {
|
|
13
18
|
name: "checkCircleSolid",
|
|
14
19
|
className: "size-20 text-foreground-neutral-base",
|
|
@@ -34,7 +39,10 @@ export function CodeBlockFooter({ className, asChild = false, state = 'running',
|
|
|
34
39
|
(message || description) && /*#__PURE__*/ _jsxs(CodeBlockFooterContent, {
|
|
35
40
|
children: [
|
|
36
41
|
message && /*#__PURE__*/ _jsx(CodeBlockFooterMessage, {
|
|
37
|
-
children: message
|
|
42
|
+
children: state === 'running' && typeof message === 'string' ? /*#__PURE__*/ _jsx(ShinyText, {
|
|
43
|
+
text: message,
|
|
44
|
+
speed: 3
|
|
45
|
+
}) : message
|
|
38
46
|
}),
|
|
39
47
|
description && /*#__PURE__*/ _jsx(CodeBlockFooterDescription, {
|
|
40
48
|
children: description
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/code-block/code-block-footer.tsx"],"sourcesContent":["import {Slot} from '@radix-ui/react-slot';\nimport {Icon} from 'components/icon/icon';\nimport {Text} from 'components/typography';\nimport type {ComponentProps, HTMLAttributes, ReactNode} from 'react';\nimport {cn} from 'utils/cn';\n\nexport type CodeBlockFooterProps = HTMLAttributes<HTMLDivElement> & {\n asChild?: boolean;\n state?: 'running' | 'done';\n message?: ReactNode;\n description?: ReactNode;\n icon?: ReactNode;\n};\n\nexport function CodeBlockFooter({\n className,\n asChild = false,\n state = 'running',\n message,\n description,\n icon,\n children,\n ...props\n}: CodeBlockFooterProps) {\n const Comp = asChild ? Slot : 'div';\n\n const defaultIcon =\n icon ??\n (state === 'running' ? (\n <
|
|
1
|
+
{"version":3,"sources":["../../../src/components/code-block/code-block-footer.tsx"],"sourcesContent":["import {Slot} from '@radix-ui/react-slot';\nimport {Icon} from 'components/icon/icon';\nimport {ShinyText} from 'components/shiny-text';\nimport {Text} from 'components/typography';\nimport {useResolvedTheme} from 'hooks/useResolvedTheme';\nimport type {ComponentProps, HTMLAttributes, ReactNode} from 'react';\nimport {ShipfoxLoader} from 'shipfox-loader-react';\nimport {cn} from 'utils/cn';\n\nexport type CodeBlockFooterProps = HTMLAttributes<HTMLDivElement> & {\n asChild?: boolean;\n state?: 'running' | 'done';\n message?: ReactNode;\n description?: ReactNode;\n icon?: ReactNode;\n};\n\nexport function CodeBlockFooter({\n className,\n asChild = false,\n state = 'running',\n message,\n description,\n icon,\n children,\n ...props\n}: CodeBlockFooterProps) {\n const Comp = asChild ? Slot : 'div';\n const resolvedTheme = useResolvedTheme();\n\n const defaultIcon =\n icon ??\n (state === 'running' ? (\n <ShipfoxLoader\n size={20}\n animation=\"circular\"\n color={resolvedTheme === 'dark' ? 'white' : 'orange'}\n background={resolvedTheme === 'dark' ? 'dark' : 'light'}\n />\n ) : (\n <Icon\n name=\"checkCircleSolid\"\n className=\"size-20 text-foreground-neutral-base\"\n aria-hidden=\"true\"\n />\n ));\n\n if (asChild || children) {\n return (\n <Comp\n data-slot=\"code-block-footer\"\n className={cn('flex w-full items-center justify-start gap-12 px-16 py-12', className)}\n {...props}\n >\n {children}\n </Comp>\n );\n }\n\n return (\n <Comp\n data-slot=\"code-block-footer\"\n className={cn('flex w-full items-center justify-start gap-12 px-16 py-12', className)}\n {...props}\n >\n <CodeBlockFooterIcon className=\"text-tag-success-icon\">{defaultIcon}</CodeBlockFooterIcon>\n {(message || description) && (\n <CodeBlockFooterContent>\n {message && (\n <CodeBlockFooterMessage>\n {state === 'running' && typeof message === 'string' ? (\n <ShinyText text={message} speed={3} />\n ) : (\n message\n )}\n </CodeBlockFooterMessage>\n )}\n {description && <CodeBlockFooterDescription>{description}</CodeBlockFooterDescription>}\n </CodeBlockFooterContent>\n )}\n </Comp>\n );\n}\n\nexport type CodeBlockFooterIconProps = ComponentProps<'div'> & {\n asChild?: boolean;\n};\n\nexport function CodeBlockFooterIcon({\n className,\n asChild = false,\n children,\n ...props\n}: CodeBlockFooterIconProps) {\n const Comp = asChild ? Slot : 'div';\n\n return (\n <Comp\n data-slot=\"code-block-footer-icon\"\n className={cn('flex shrink-0 items-center justify-center size-20', className)}\n {...props}\n >\n {children}\n </Comp>\n );\n}\n\nexport type CodeBlockFooterContentProps = ComponentProps<'div'> & {\n asChild?: boolean;\n};\n\nexport function CodeBlockFooterContent({\n className,\n asChild = false,\n children,\n ...props\n}: CodeBlockFooterContentProps) {\n const Comp = asChild ? Slot : 'div';\n\n return (\n <Comp\n data-slot=\"code-block-footer-content\"\n className={cn('flex flex-col items-start justify-center gap-0 min-w-0 flex-1', className)}\n {...props}\n >\n {children}\n </Comp>\n );\n}\n\nexport type CodeBlockFooterMessageProps = ComponentProps<'div'> & {\n asChild?: boolean;\n};\n\nexport function CodeBlockFooterMessage({\n className,\n asChild = false,\n children,\n ...props\n}: CodeBlockFooterMessageProps) {\n if (asChild) {\n return (\n <Slot\n data-slot=\"code-block-footer-message\"\n className={cn('overflow-hidden text-ellipsis whitespace-nowrap text-xs', className)}\n {...props}\n >\n {children}\n </Slot>\n );\n }\n\n return (\n <Text\n data-slot=\"code-block-footer-message\"\n size=\"xs\"\n className={cn('overflow-hidden text-ellipsis whitespace-nowrap', className)}\n {...props}\n >\n {children}\n </Text>\n );\n}\n\nexport type CodeBlockFooterDescriptionProps = ComponentProps<'div'> & {\n asChild?: boolean;\n};\n\nexport function CodeBlockFooterDescription({\n className,\n asChild = false,\n children,\n ...props\n}: CodeBlockFooterDescriptionProps) {\n if (asChild) {\n return (\n <Slot\n data-slot=\"code-block-footer-description\"\n className={cn('text-xs text-foreground-neutral-subtle', className)}\n {...props}\n >\n {children}\n </Slot>\n );\n }\n\n return (\n <Text\n data-slot=\"code-block-footer-description\"\n size=\"xs\"\n className={cn('text-foreground-neutral-subtle', className)}\n {...props}\n >\n {children}\n </Text>\n );\n}\n"],"names":["Slot","Icon","ShinyText","Text","useResolvedTheme","ShipfoxLoader","cn","CodeBlockFooter","className","asChild","state","message","description","icon","children","props","Comp","resolvedTheme","defaultIcon","size","animation","color","background","name","aria-hidden","data-slot","CodeBlockFooterIcon","CodeBlockFooterContent","CodeBlockFooterMessage","text","speed","CodeBlockFooterDescription"],"mappings":";AAAA,SAAQA,IAAI,QAAO,uBAAuB;AAC1C,SAAQC,IAAI,QAAO,uBAAuB;AAC1C,SAAQC,SAAS,QAAO,wBAAwB;AAChD,SAAQC,IAAI,QAAO,wBAAwB;AAC3C,SAAQC,gBAAgB,QAAO,yBAAyB;AAExD,SAAQC,aAAa,QAAO,uBAAuB;AACnD,SAAQC,EAAE,QAAO,WAAW;AAU5B,OAAO,SAASC,gBAAgB,EAC9BC,SAAS,EACTC,UAAU,KAAK,EACfC,QAAQ,SAAS,EACjBC,OAAO,EACPC,WAAW,EACXC,IAAI,EACJC,QAAQ,EACR,GAAGC,OACkB;IACrB,MAAMC,OAAOP,UAAUT,OAAO;IAC9B,MAAMiB,gBAAgBb;IAEtB,MAAMc,cACJL,QACCH,CAAAA,UAAU,0BACT,KAACL;QACCc,MAAM;QACNC,WAAU;QACVC,OAAOJ,kBAAkB,SAAS,UAAU;QAC5CK,YAAYL,kBAAkB,SAAS,SAAS;uBAGlD,KAAChB;QACCsB,MAAK;QACLf,WAAU;QACVgB,eAAY;MAEhB;IAEF,IAAIf,WAAWK,UAAU;QACvB,qBACE,KAACE;YACCS,aAAU;YACVjB,WAAWF,GAAG,6DAA6DE;YAC1E,GAAGO,KAAK;sBAERD;;IAGP;IAEA,qBACE,MAACE;QACCS,aAAU;QACVjB,WAAWF,GAAG,6DAA6DE;QAC1E,GAAGO,KAAK;;0BAET,KAACW;gBAAoBlB,WAAU;0BAAyBU;;YACtDP,CAAAA,WAAWC,WAAU,mBACrB,MAACe;;oBACEhB,yBACC,KAACiB;kCACElB,UAAU,aAAa,OAAOC,YAAY,yBACzC,KAACT;4BAAU2B,MAAMlB;4BAASmB,OAAO;6BAEjCnB;;oBAILC,6BAAe,KAACmB;kCAA4BnB;;;;;;AAKvD;AAMA,OAAO,SAASc,oBAAoB,EAClClB,SAAS,EACTC,UAAU,KAAK,EACfK,QAAQ,EACR,GAAGC,OACsB;IACzB,MAAMC,OAAOP,UAAUT,OAAO;IAE9B,qBACE,KAACgB;QACCS,aAAU;QACVjB,WAAWF,GAAG,qDAAqDE;QAClE,GAAGO,KAAK;kBAERD;;AAGP;AAMA,OAAO,SAASa,uBAAuB,EACrCnB,SAAS,EACTC,UAAU,KAAK,EACfK,QAAQ,EACR,GAAGC,OACyB;IAC5B,MAAMC,OAAOP,UAAUT,OAAO;IAE9B,qBACE,KAACgB;QACCS,aAAU;QACVjB,WAAWF,GAAG,iEAAiEE;QAC9E,GAAGO,KAAK;kBAERD;;AAGP;AAMA,OAAO,SAASc,uBAAuB,EACrCpB,SAAS,EACTC,UAAU,KAAK,EACfK,QAAQ,EACR,GAAGC,OACyB;IAC5B,IAAIN,SAAS;QACX,qBACE,KAACT;YACCyB,aAAU;YACVjB,WAAWF,GAAG,2DAA2DE;YACxE,GAAGO,KAAK;sBAERD;;IAGP;IAEA,qBACE,KAACX;QACCsB,aAAU;QACVN,MAAK;QACLX,WAAWF,GAAG,mDAAmDE;QAChE,GAAGO,KAAK;kBAERD;;AAGP;AAMA,OAAO,SAASiB,2BAA2B,EACzCvB,SAAS,EACTC,UAAU,KAAK,EACfK,QAAQ,EACR,GAAGC,OAC6B;IAChC,IAAIN,SAAS;QACX,qBACE,KAACT;YACCyB,aAAU;YACVjB,WAAWF,GAAG,0CAA0CE;YACvD,GAAGO,KAAK;sBAERD;;IAGP;IAEA,qBACE,KAACX;QACCsB,aAAU;QACVN,MAAK;QACLX,WAAWF,GAAG,kCAAkCE;QAC/C,GAAGO,KAAK;kBAERD;;AAGP"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
2
|
+
import { Command as CommandPrimitive } from 'cmdk';
|
|
3
|
+
import { type ComponentProps } from 'react';
|
|
4
|
+
import { Kbd } from '../kbd';
|
|
5
|
+
declare const commandTriggerVariants: (props?: ({
|
|
6
|
+
variant?: "base" | "component" | null | undefined;
|
|
7
|
+
size?: "base" | "small" | null | undefined;
|
|
8
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
9
|
+
type CommandTriggerProps = ComponentProps<'button'> & VariantProps<typeof commandTriggerVariants> & {
|
|
10
|
+
placeholder?: string;
|
|
11
|
+
};
|
|
12
|
+
declare const CommandTrigger: import("react").ForwardRefExoticComponent<Omit<CommandTriggerProps, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
|
|
13
|
+
declare function Command({ className, ...props }: ComponentProps<typeof CommandPrimitive>): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
declare function CommandDialog({ children, ...props }: ComponentProps<typeof CommandPrimitive.Dialog>): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
type CommandInputProps = ComponentProps<typeof CommandPrimitive.Input> & {
|
|
16
|
+
showClearButton?: boolean;
|
|
17
|
+
onClear?: () => void;
|
|
18
|
+
};
|
|
19
|
+
declare function CommandInput({ className, value, onValueChange, onClear, showClearButton, ...props }: CommandInputProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
declare function CommandList({ className, ...props }: ComponentProps<typeof CommandPrimitive.List>): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
declare function CommandEmpty({ className, ...props }: ComponentProps<typeof CommandPrimitive.Empty>): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
declare function CommandGroup({ className, ...props }: ComponentProps<typeof CommandPrimitive.Group>): import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
declare function CommandSeparator({ className, ...props }: ComponentProps<typeof CommandPrimitive.Separator>): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
declare function CommandItem({ className, ...props }: ComponentProps<typeof CommandPrimitive.Item>): import("react/jsx-runtime").JSX.Element;
|
|
25
|
+
declare function CommandShortcut({ className, children, ...props }: ComponentProps<typeof Kbd>): import("react/jsx-runtime").JSX.Element;
|
|
26
|
+
export { Command, CommandTrigger, CommandDialog, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, CommandSeparator, CommandShortcut, commandTriggerVariants, };
|
|
27
|
+
export type { CommandTriggerProps, CommandInputProps };
|
|
28
|
+
//# sourceMappingURL=command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../src/components/command/command.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAC,OAAO,IAAI,gBAAgB,EAAC,MAAM,MAAM,CAAC;AACjD,OAAO,EAAC,KAAK,cAAc,EAAoC,MAAM,OAAO,CAAC;AAG7E,OAAO,EAAC,GAAG,EAAC,MAAM,QAAQ,CAAC;AAE3B,QAAA,MAAM,sBAAsB;;;8EA0B3B,CAAC;AAEF,KAAK,mBAAmB,GAAG,cAAc,CAAC,QAAQ,CAAC,GACjD,YAAY,CAAC,OAAO,sBAAsB,CAAC,GAAG;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEJ,QAAA,MAAM,cAAc,gIAsBnB,CAAC;AAGF,iBAAS,OAAO,CAAC,EAAC,SAAS,EAAE,GAAG,KAAK,EAAC,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,2CAY9E;AAED,iBAAS,aAAa,CAAC,EAAC,QAAQ,EAAE,GAAG,KAAK,EAAC,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,MAAM,CAAC,2CAS1F;AAED,KAAK,iBAAiB,GAAG,cAAc,CAAC,OAAO,gBAAgB,CAAC,KAAK,CAAC,GAAG;IACvE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,KAAK,EACL,aAAa,EACb,OAAO,EACP,eAAsB,EACtB,GAAG,KAAK,EACT,EAAE,iBAAiB,2CAkEnB;AAED,iBAAS,WAAW,CAAC,EAAC,SAAS,EAAE,GAAG,KAAK,EAAC,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,2CAQvF;AAED,iBAAS,YAAY,CAAC,EAAC,SAAS,EAAE,GAAG,KAAK,EAAC,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,KAAK,CAAC,2CAQzF;AAED,iBAAS,YAAY,CAAC,EAAC,SAAS,EAAE,GAAG,KAAK,EAAC,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,KAAK,CAAC,2CAezF;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,SAAS,CAAC,2CAcnD;AAED,iBAAS,WAAW,CAAC,EAAC,SAAS,EAAE,GAAG,KAAK,EAAC,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,2CAcvF;AAED,iBAAS,eAAe,CAAC,EAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAC,EAAE,cAAc,CAAC,OAAO,GAAG,CAAC,2CAMnF;AAED,OAAO,EACL,OAAO,EACP,cAAc,EACd,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,sBAAsB,GACvB,CAAC;AAEF,YAAY,EAAC,mBAAmB,EAAE,iBAAiB,EAAC,CAAC"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cva } from 'class-variance-authority';
|
|
3
|
+
import { Command as CommandPrimitive } from 'cmdk';
|
|
4
|
+
import { forwardRef, useCallback, useState } from 'react';
|
|
5
|
+
import { cn } from '../../utils/cn.js';
|
|
6
|
+
import { Icon } from '../icon/index.js';
|
|
7
|
+
import { Kbd } from '../kbd/index.js';
|
|
8
|
+
const commandTriggerVariants = cva([
|
|
9
|
+
'flex items-center justify-between gap-8',
|
|
10
|
+
'w-full rounded-6 px-8 text-sm leading-20',
|
|
11
|
+
'bg-background-field-base text-foreground-neutral-base',
|
|
12
|
+
'shadow-button-neutral transition-[color,box-shadow] outline-none',
|
|
13
|
+
'hover:bg-background-field-hover cursor-pointer',
|
|
14
|
+
'focus-visible:shadow-border-interactive-with-active',
|
|
15
|
+
'disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-background-neutral-disabled disabled:shadow-none disabled:text-foreground-neutral-disabled'
|
|
16
|
+
], {
|
|
17
|
+
variants: {
|
|
18
|
+
variant: {
|
|
19
|
+
base: 'bg-background-field-base',
|
|
20
|
+
component: 'bg-background-field-component'
|
|
21
|
+
},
|
|
22
|
+
size: {
|
|
23
|
+
small: 'h-28 py-4',
|
|
24
|
+
base: 'h-32 py-6'
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
defaultVariants: {
|
|
28
|
+
variant: 'base',
|
|
29
|
+
size: 'base'
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
const CommandTrigger = /*#__PURE__*/ forwardRef(({ className, variant, size, placeholder, children, ...props }, ref)=>{
|
|
33
|
+
const hasValue = Boolean(children);
|
|
34
|
+
return /*#__PURE__*/ _jsxs("button", {
|
|
35
|
+
ref: ref,
|
|
36
|
+
type: "button",
|
|
37
|
+
"data-slot": "command-trigger",
|
|
38
|
+
"data-placeholder": !hasValue || undefined,
|
|
39
|
+
className: cn(commandTriggerVariants({
|
|
40
|
+
variant,
|
|
41
|
+
size
|
|
42
|
+
}), 'data-placeholder:text-foreground-neutral-muted', className),
|
|
43
|
+
...props,
|
|
44
|
+
children: [
|
|
45
|
+
/*#__PURE__*/ _jsx("span", {
|
|
46
|
+
className: "flex-1 text-left truncate",
|
|
47
|
+
children: hasValue ? children : placeholder
|
|
48
|
+
}),
|
|
49
|
+
/*#__PURE__*/ _jsx(Icon, {
|
|
50
|
+
name: "arrowDownSLine",
|
|
51
|
+
className: "size-16 text-foreground-neutral-muted shrink-0"
|
|
52
|
+
})
|
|
53
|
+
]
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
CommandTrigger.displayName = 'CommandTrigger';
|
|
57
|
+
function Command({ className, ...props }) {
|
|
58
|
+
return /*#__PURE__*/ _jsx(CommandPrimitive, {
|
|
59
|
+
"data-slot": "command",
|
|
60
|
+
className: cn('flex h-full w-full flex-col overflow-hidden rounded-10', 'bg-background-neutral-overlay text-foreground-neutral-base', className),
|
|
61
|
+
...props
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
function CommandDialog({ children, ...props }) {
|
|
65
|
+
return /*#__PURE__*/ _jsxs(CommandPrimitive.Dialog, {
|
|
66
|
+
"data-slot": "command-dialog",
|
|
67
|
+
...props,
|
|
68
|
+
children: [
|
|
69
|
+
/*#__PURE__*/ _jsx("div", {
|
|
70
|
+
className: "fixed inset-0 z-50 bg-background-neutral-overlay/80 backdrop-blur-sm"
|
|
71
|
+
}),
|
|
72
|
+
/*#__PURE__*/ _jsx("div", {
|
|
73
|
+
className: "fixed left-1/2 top-1/2 z-50 w-full max-w-600 -translate-x-1/2 -translate-y-1/2 p-16",
|
|
74
|
+
children: /*#__PURE__*/ _jsx(Command, {
|
|
75
|
+
className: "shadow-tooltip",
|
|
76
|
+
children: children
|
|
77
|
+
})
|
|
78
|
+
})
|
|
79
|
+
]
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
function CommandInput({ className, value, onValueChange, onClear, showClearButton = true, ...props }) {
|
|
83
|
+
const [internalValue, setInternalValue] = useState('');
|
|
84
|
+
const isControlled = value !== undefined;
|
|
85
|
+
const inputValue = isControlled ? value : internalValue;
|
|
86
|
+
const hasValue = Boolean(inputValue);
|
|
87
|
+
const handleValueChange = useCallback((newValue)=>{
|
|
88
|
+
if (!isControlled) {
|
|
89
|
+
setInternalValue(newValue);
|
|
90
|
+
}
|
|
91
|
+
onValueChange?.(newValue);
|
|
92
|
+
}, [
|
|
93
|
+
isControlled,
|
|
94
|
+
onValueChange
|
|
95
|
+
]);
|
|
96
|
+
const handleClear = useCallback(()=>{
|
|
97
|
+
if (!isControlled) {
|
|
98
|
+
setInternalValue('');
|
|
99
|
+
}
|
|
100
|
+
onValueChange?.('');
|
|
101
|
+
onClear?.();
|
|
102
|
+
}, [
|
|
103
|
+
isControlled,
|
|
104
|
+
onValueChange,
|
|
105
|
+
onClear
|
|
106
|
+
]);
|
|
107
|
+
const handleKeyDown = useCallback((e)=>{
|
|
108
|
+
if (e.key === 'Escape' && hasValue) {
|
|
109
|
+
e.preventDefault();
|
|
110
|
+
e.stopPropagation();
|
|
111
|
+
handleClear();
|
|
112
|
+
}
|
|
113
|
+
}, [
|
|
114
|
+
hasValue,
|
|
115
|
+
handleClear
|
|
116
|
+
]);
|
|
117
|
+
return /*#__PURE__*/ _jsxs("div", {
|
|
118
|
+
className: "flex items-center gap-8 border-b border-border-neutral-strong p-8",
|
|
119
|
+
children: [
|
|
120
|
+
/*#__PURE__*/ _jsx(Icon, {
|
|
121
|
+
name: "searchLine",
|
|
122
|
+
className: "size-16 shrink-0 text-foreground-neutral-muted"
|
|
123
|
+
}),
|
|
124
|
+
/*#__PURE__*/ _jsx(CommandPrimitive.Input, {
|
|
125
|
+
"data-slot": "command-input",
|
|
126
|
+
value: inputValue,
|
|
127
|
+
onValueChange: handleValueChange,
|
|
128
|
+
onKeyDown: handleKeyDown,
|
|
129
|
+
className: cn('flex-1 bg-transparent text-sm leading-20 outline-none', 'placeholder:text-foreground-neutral-muted', 'disabled:cursor-not-allowed disabled:text-foreground-neutral-disabled', className),
|
|
130
|
+
...props
|
|
131
|
+
}),
|
|
132
|
+
showClearButton && hasValue && /*#__PURE__*/ _jsx("button", {
|
|
133
|
+
type: "button",
|
|
134
|
+
onClick: handleClear,
|
|
135
|
+
className: cn('shrink-0 cursor-pointer rounded-4 p-2', 'text-foreground-neutral-muted hover:text-foreground-neutral-subtle transition-colors'),
|
|
136
|
+
"aria-label": "Clear search",
|
|
137
|
+
children: /*#__PURE__*/ _jsx(Icon, {
|
|
138
|
+
name: "closeLine",
|
|
139
|
+
className: "size-16"
|
|
140
|
+
})
|
|
141
|
+
})
|
|
142
|
+
]
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
function CommandList({ className, ...props }) {
|
|
146
|
+
return /*#__PURE__*/ _jsx(CommandPrimitive.List, {
|
|
147
|
+
"data-slot": "command-list",
|
|
148
|
+
className: cn('max-h-300 overflow-y-auto overflow-x-hidden p-4 scrollbar', className),
|
|
149
|
+
...props
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
function CommandEmpty({ className, ...props }) {
|
|
153
|
+
return /*#__PURE__*/ _jsx(CommandPrimitive.Empty, {
|
|
154
|
+
"data-slot": "command-empty",
|
|
155
|
+
className: cn('py-24 text-center text-sm text-foreground-neutral-muted', className),
|
|
156
|
+
...props
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
function CommandGroup({ className, ...props }) {
|
|
160
|
+
return /*#__PURE__*/ _jsx(CommandPrimitive.Group, {
|
|
161
|
+
"data-slot": "command-group",
|
|
162
|
+
className: cn('overflow-hidden', '[&_[cmdk-group-heading]]:px-8 [&_[cmdk-group-heading]]:py-4', '[&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:leading-20', '[&_[cmdk-group-heading]]:text-foreground-neutral-subtle', '[&_[cmdk-group-heading]]:select-none', className),
|
|
163
|
+
...props
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
function CommandSeparator({ className, ...props }) {
|
|
167
|
+
return /*#__PURE__*/ _jsx(CommandPrimitive.Separator, {
|
|
168
|
+
"data-slot": "command-separator",
|
|
169
|
+
className: cn('relative -mx-4 my-4 h-px', 'bg-border-neutral-menu-top', 'after:absolute after:inset-x-0 after:top-px after:h-px', 'after:bg-border-neutral-menu-bottom', className),
|
|
170
|
+
...props
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
function CommandItem({ className, ...props }) {
|
|
174
|
+
return /*#__PURE__*/ _jsx(CommandPrimitive.Item, {
|
|
175
|
+
"data-slot": "command-item",
|
|
176
|
+
className: cn('relative flex cursor-pointer select-none items-center gap-8 rounded-6 px-8 py-6', 'text-sm leading-20 text-foreground-neutral-subtle outline-none transition-colors', 'aria-selected:bg-background-components-hover aria-selected:text-foreground-neutral-base', 'data-[disabled=true]:pointer-events-none data-[disabled=true]:text-foreground-neutral-disabled', className),
|
|
177
|
+
...props
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
function CommandShortcut({ className, children, ...props }) {
|
|
181
|
+
return /*#__PURE__*/ _jsx(Kbd, {
|
|
182
|
+
"data-slot": "command-shortcut",
|
|
183
|
+
className: cn('ml-auto', className),
|
|
184
|
+
...props,
|
|
185
|
+
children: children
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
export { Command, CommandTrigger, CommandDialog, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, CommandSeparator, CommandShortcut, commandTriggerVariants };
|
|
189
|
+
|
|
190
|
+
//# sourceMappingURL=command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/command/command.tsx"],"sourcesContent":["import {cva, type VariantProps} from 'class-variance-authority';\nimport {Command as CommandPrimitive} from 'cmdk';\nimport {type ComponentProps, forwardRef, useCallback, useState} from 'react';\nimport {cn} from 'utils/cn';\nimport {Icon} from '../icon';\nimport {Kbd} from '../kbd';\n\nconst commandTriggerVariants = cva(\n [\n 'flex items-center justify-between gap-8',\n 'w-full rounded-6 px-8 text-sm leading-20',\n 'bg-background-field-base text-foreground-neutral-base',\n 'shadow-button-neutral transition-[color,box-shadow] outline-none',\n 'hover:bg-background-field-hover cursor-pointer',\n 'focus-visible:shadow-border-interactive-with-active',\n 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-background-neutral-disabled disabled:shadow-none disabled:text-foreground-neutral-disabled',\n ],\n {\n variants: {\n variant: {\n base: 'bg-background-field-base',\n component: 'bg-background-field-component',\n },\n size: {\n small: 'h-28 py-4',\n base: 'h-32 py-6',\n },\n },\n defaultVariants: {\n variant: 'base',\n size: 'base',\n },\n },\n);\n\ntype CommandTriggerProps = ComponentProps<'button'> &\n VariantProps<typeof commandTriggerVariants> & {\n placeholder?: string;\n };\n\nconst CommandTrigger = forwardRef<HTMLButtonElement, CommandTriggerProps>(\n ({className, variant, size, placeholder, children, ...props}, ref) => {\n const hasValue = Boolean(children);\n\n return (\n <button\n ref={ref}\n type=\"button\"\n data-slot=\"command-trigger\"\n data-placeholder={!hasValue || undefined}\n className={cn(\n commandTriggerVariants({variant, size}),\n 'data-placeholder:text-foreground-neutral-muted',\n className,\n )}\n {...props}\n >\n <span className=\"flex-1 text-left truncate\">{hasValue ? children : placeholder}</span>\n <Icon name=\"arrowDownSLine\" className=\"size-16 text-foreground-neutral-muted shrink-0\" />\n </button>\n );\n },\n);\nCommandTrigger.displayName = 'CommandTrigger';\n\nfunction Command({className, ...props}: ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n 'flex h-full w-full flex-col overflow-hidden rounded-10',\n 'bg-background-neutral-overlay text-foreground-neutral-base',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandDialog({children, ...props}: ComponentProps<typeof CommandPrimitive.Dialog>) {\n return (\n <CommandPrimitive.Dialog data-slot=\"command-dialog\" {...props}>\n <div className=\"fixed inset-0 z-50 bg-background-neutral-overlay/80 backdrop-blur-sm\" />\n <div className=\"fixed left-1/2 top-1/2 z-50 w-full max-w-600 -translate-x-1/2 -translate-y-1/2 p-16\">\n <Command className=\"shadow-tooltip\">{children}</Command>\n </div>\n </CommandPrimitive.Dialog>\n );\n}\n\ntype CommandInputProps = ComponentProps<typeof CommandPrimitive.Input> & {\n showClearButton?: boolean;\n onClear?: () => void;\n};\n\nfunction CommandInput({\n className,\n value,\n onValueChange,\n onClear,\n showClearButton = true,\n ...props\n}: CommandInputProps) {\n const [internalValue, setInternalValue] = useState('');\n const isControlled = value !== undefined;\n const inputValue = isControlled ? value : internalValue;\n const hasValue = Boolean(inputValue);\n\n const handleValueChange = useCallback(\n (newValue: string) => {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n onValueChange?.(newValue);\n },\n [isControlled, onValueChange],\n );\n\n const handleClear = useCallback(() => {\n if (!isControlled) {\n setInternalValue('');\n }\n onValueChange?.('');\n onClear?.();\n }, [isControlled, onValueChange, onClear]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Escape' && hasValue) {\n e.preventDefault();\n e.stopPropagation();\n handleClear();\n }\n },\n [hasValue, handleClear],\n );\n\n return (\n <div className=\"flex items-center gap-8 border-b border-border-neutral-strong p-8\">\n <Icon name=\"searchLine\" className=\"size-16 shrink-0 text-foreground-neutral-muted\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n value={inputValue}\n onValueChange={handleValueChange}\n onKeyDown={handleKeyDown}\n className={cn(\n 'flex-1 bg-transparent text-sm leading-20 outline-none',\n 'placeholder:text-foreground-neutral-muted',\n 'disabled:cursor-not-allowed disabled:text-foreground-neutral-disabled',\n className,\n )}\n {...props}\n />\n {showClearButton && hasValue && (\n <button\n type=\"button\"\n onClick={handleClear}\n className={cn(\n 'shrink-0 cursor-pointer rounded-4 p-2',\n 'text-foreground-neutral-muted hover:text-foreground-neutral-subtle transition-colors',\n )}\n aria-label=\"Clear search\"\n >\n <Icon name=\"closeLine\" className=\"size-16\" />\n </button>\n )}\n </div>\n );\n}\n\nfunction CommandList({className, ...props}: ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn('max-h-300 overflow-y-auto overflow-x-hidden p-4 scrollbar', className)}\n {...props}\n />\n );\n}\n\nfunction CommandEmpty({className, ...props}: ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className={cn('py-24 text-center text-sm text-foreground-neutral-muted', className)}\n {...props}\n />\n );\n}\n\nfunction CommandGroup({className, ...props}: ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n 'overflow-hidden',\n '[&_[cmdk-group-heading]]:px-8 [&_[cmdk-group-heading]]:py-4',\n '[&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:leading-20',\n '[&_[cmdk-group-heading]]:text-foreground-neutral-subtle',\n '[&_[cmdk-group-heading]]:select-none',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn(\n 'relative -mx-4 my-4 h-px',\n 'bg-border-neutral-menu-top',\n 'after:absolute after:inset-x-0 after:top-px after:h-px',\n 'after:bg-border-neutral-menu-bottom',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandItem({className, ...props}: ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n 'relative flex cursor-pointer select-none items-center gap-8 rounded-6 px-8 py-6',\n 'text-sm leading-20 text-foreground-neutral-subtle outline-none transition-colors',\n 'aria-selected:bg-background-components-hover aria-selected:text-foreground-neutral-base',\n 'data-[disabled=true]:pointer-events-none data-[disabled=true]:text-foreground-neutral-disabled',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandShortcut({className, children, ...props}: ComponentProps<typeof Kbd>) {\n return (\n <Kbd data-slot=\"command-shortcut\" className={cn('ml-auto', className)} {...props}>\n {children}\n </Kbd>\n );\n}\n\nexport {\n Command,\n CommandTrigger,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandSeparator,\n CommandShortcut,\n commandTriggerVariants,\n};\n\nexport type {CommandTriggerProps, CommandInputProps};\n"],"names":["cva","Command","CommandPrimitive","forwardRef","useCallback","useState","cn","Icon","Kbd","commandTriggerVariants","variants","variant","base","component","size","small","defaultVariants","CommandTrigger","className","placeholder","children","props","ref","hasValue","Boolean","button","type","data-slot","data-placeholder","undefined","span","name","displayName","CommandDialog","Dialog","div","CommandInput","value","onValueChange","onClear","showClearButton","internalValue","setInternalValue","isControlled","inputValue","handleValueChange","newValue","handleClear","handleKeyDown","e","key","preventDefault","stopPropagation","Input","onKeyDown","onClick","aria-label","CommandList","List","CommandEmpty","Empty","CommandGroup","Group","CommandSeparator","Separator","CommandItem","Item","CommandShortcut"],"mappings":"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"}
|