@agimon-ai/doompi-web-components 0.0.1-alpha.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/LICENSE +22 -0
- package/README.md +106 -0
- package/dist/_virtual/_rolldown/runtime.cjs +1 -0
- package/dist/components/Accordion.d.cts +11 -0
- package/dist/components/Accordion.d.cts.map +1 -0
- package/dist/components/Avatar.d.cts +10 -0
- package/dist/components/Avatar.d.cts.map +1 -0
- package/dist/components/Badge.d.cts +18 -0
- package/dist/components/Badge.d.cts.map +1 -0
- package/dist/components/Button.d.cts +25 -0
- package/dist/components/Button.d.cts.map +1 -0
- package/dist/components/Checkbox.d.cts +8 -0
- package/dist/components/Checkbox.d.cts.map +1 -0
- package/dist/components/Collapsible.d.cts +10 -0
- package/dist/components/Collapsible.d.cts.map +1 -0
- package/dist/components/Command.d.cts +42 -0
- package/dist/components/Command.d.cts.map +1 -0
- package/dist/components/Dialog.d.cts +39 -0
- package/dist/components/Dialog.d.cts.map +1 -0
- package/dist/components/Dot.d.cts +16 -0
- package/dist/components/Dot.d.cts.map +1 -0
- package/dist/components/DropdownMenu.d.cts +34 -0
- package/dist/components/DropdownMenu.d.cts.map +1 -0
- package/dist/components/EmptyState.d.cts +18 -0
- package/dist/components/EmptyState.d.cts.map +1 -0
- package/dist/components/Input.d.cts +20 -0
- package/dist/components/Input.d.cts.map +1 -0
- package/dist/components/Kbd.d.cts +7 -0
- package/dist/components/Kbd.d.cts.map +1 -0
- package/dist/components/Label.d.cts +8 -0
- package/dist/components/Label.d.cts.map +1 -0
- package/dist/components/Markdown.d.cts +8 -0
- package/dist/components/Markdown.d.cts.map +1 -0
- package/dist/components/MessageItem.d.cts +71 -0
- package/dist/components/MessageItem.d.cts.map +1 -0
- package/dist/components/MessageLines.d.cts +24 -0
- package/dist/components/MessageLines.d.cts.map +1 -0
- package/dist/components/OptionList.d.cts +50 -0
- package/dist/components/OptionList.d.cts.map +1 -0
- package/dist/components/Panel.d.cts +15 -0
- package/dist/components/Panel.d.cts.map +1 -0
- package/dist/components/Popover.d.cts +19 -0
- package/dist/components/Popover.d.cts.map +1 -0
- package/dist/components/Progress.d.cts +8 -0
- package/dist/components/Progress.d.cts.map +1 -0
- package/dist/components/RadioGroup.d.cts +15 -0
- package/dist/components/RadioGroup.d.cts.map +1 -0
- package/dist/components/ScrollArea.d.cts +13 -0
- package/dist/components/ScrollArea.d.cts.map +1 -0
- package/dist/components/SectionLabel.d.cts +7 -0
- package/dist/components/SectionLabel.d.cts.map +1 -0
- package/dist/components/Select.d.cts +19 -0
- package/dist/components/Select.d.cts.map +1 -0
- package/dist/components/Separator.d.cts +13 -0
- package/dist/components/Separator.d.cts.map +1 -0
- package/dist/components/Skeleton.d.cts +11 -0
- package/dist/components/Skeleton.d.cts.map +1 -0
- package/dist/components/Spinner.d.cts +15 -0
- package/dist/components/Spinner.d.cts.map +1 -0
- package/dist/components/StatusBadge.d.cts +24 -0
- package/dist/components/StatusBadge.d.cts.map +1 -0
- package/dist/components/StreamCursor.d.cts +7 -0
- package/dist/components/StreamCursor.d.cts.map +1 -0
- package/dist/components/Switch.d.cts +8 -0
- package/dist/components/Switch.d.cts.map +1 -0
- package/dist/components/Tabs.d.cts +36 -0
- package/dist/components/Tabs.d.cts.map +1 -0
- package/dist/components/Textarea.d.cts +10 -0
- package/dist/components/Textarea.d.cts.map +1 -0
- package/dist/components/Toast.d.cts +24 -0
- package/dist/components/Toast.d.cts.map +1 -0
- package/dist/components/Tooltip.d.cts +11 -0
- package/dist/components/Tooltip.d.cts.map +1 -0
- package/dist/icons/icons.d.cts +2 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.cts +42 -0
- package/dist/index.d.mts +42 -0
- package/dist/index.mjs +1 -0
- package/dist/lib/cn.d.cts +7 -0
- package/dist/lib/cn.d.cts.map +1 -0
- package/dist/lib/collapse.d.cts +15 -0
- package/dist/lib/collapse.d.cts.map +1 -0
- package/dist/lib/optionList.d.cts +22 -0
- package/dist/lib/optionList.d.cts.map +1 -0
- package/dist/lib/tone.d.cts +26 -0
- package/dist/lib/tone.d.cts.map +1 -0
- package/dist/src/components/Accordion.cjs +2 -0
- package/dist/src/components/Accordion.cjs.map +1 -0
- package/dist/src/components/Accordion.d.mts +11 -0
- package/dist/src/components/Accordion.d.mts.map +1 -0
- package/dist/src/components/Accordion.mjs +2 -0
- package/dist/src/components/Accordion.mjs.map +1 -0
- package/dist/src/components/Avatar.cjs +2 -0
- package/dist/src/components/Avatar.cjs.map +1 -0
- package/dist/src/components/Avatar.d.mts +10 -0
- package/dist/src/components/Avatar.d.mts.map +1 -0
- package/dist/src/components/Avatar.mjs +2 -0
- package/dist/src/components/Avatar.mjs.map +1 -0
- package/dist/src/components/Badge.cjs +2 -0
- package/dist/src/components/Badge.cjs.map +1 -0
- package/dist/src/components/Badge.d.mts +18 -0
- package/dist/src/components/Badge.d.mts.map +1 -0
- package/dist/src/components/Badge.mjs +2 -0
- package/dist/src/components/Badge.mjs.map +1 -0
- package/dist/src/components/Button.cjs +2 -0
- package/dist/src/components/Button.cjs.map +1 -0
- package/dist/src/components/Button.d.mts +25 -0
- package/dist/src/components/Button.d.mts.map +1 -0
- package/dist/src/components/Button.mjs +2 -0
- package/dist/src/components/Button.mjs.map +1 -0
- package/dist/src/components/Checkbox.cjs +2 -0
- package/dist/src/components/Checkbox.cjs.map +1 -0
- package/dist/src/components/Checkbox.d.mts +8 -0
- package/dist/src/components/Checkbox.d.mts.map +1 -0
- package/dist/src/components/Checkbox.mjs +2 -0
- package/dist/src/components/Checkbox.mjs.map +1 -0
- package/dist/src/components/Collapsible.cjs +2 -0
- package/dist/src/components/Collapsible.cjs.map +1 -0
- package/dist/src/components/Collapsible.d.mts +10 -0
- package/dist/src/components/Collapsible.d.mts.map +1 -0
- package/dist/src/components/Collapsible.mjs +2 -0
- package/dist/src/components/Collapsible.mjs.map +1 -0
- package/dist/src/components/Command.cjs +2 -0
- package/dist/src/components/Command.cjs.map +1 -0
- package/dist/src/components/Command.d.mts +42 -0
- package/dist/src/components/Command.d.mts.map +1 -0
- package/dist/src/components/Command.mjs +2 -0
- package/dist/src/components/Command.mjs.map +1 -0
- package/dist/src/components/Dialog.cjs +2 -0
- package/dist/src/components/Dialog.cjs.map +1 -0
- package/dist/src/components/Dialog.d.mts +39 -0
- package/dist/src/components/Dialog.d.mts.map +1 -0
- package/dist/src/components/Dialog.mjs +2 -0
- package/dist/src/components/Dialog.mjs.map +1 -0
- package/dist/src/components/Dot.cjs +2 -0
- package/dist/src/components/Dot.cjs.map +1 -0
- package/dist/src/components/Dot.d.mts +16 -0
- package/dist/src/components/Dot.d.mts.map +1 -0
- package/dist/src/components/Dot.mjs +2 -0
- package/dist/src/components/Dot.mjs.map +1 -0
- package/dist/src/components/DropdownMenu.cjs +2 -0
- package/dist/src/components/DropdownMenu.cjs.map +1 -0
- package/dist/src/components/DropdownMenu.d.mts +34 -0
- package/dist/src/components/DropdownMenu.d.mts.map +1 -0
- package/dist/src/components/DropdownMenu.mjs +2 -0
- package/dist/src/components/DropdownMenu.mjs.map +1 -0
- package/dist/src/components/EmptyState.cjs +2 -0
- package/dist/src/components/EmptyState.cjs.map +1 -0
- package/dist/src/components/EmptyState.d.mts +18 -0
- package/dist/src/components/EmptyState.d.mts.map +1 -0
- package/dist/src/components/EmptyState.mjs +2 -0
- package/dist/src/components/EmptyState.mjs.map +1 -0
- package/dist/src/components/Input.cjs +2 -0
- package/dist/src/components/Input.cjs.map +1 -0
- package/dist/src/components/Input.d.mts +20 -0
- package/dist/src/components/Input.d.mts.map +1 -0
- package/dist/src/components/Input.mjs +2 -0
- package/dist/src/components/Input.mjs.map +1 -0
- package/dist/src/components/Kbd.cjs +2 -0
- package/dist/src/components/Kbd.cjs.map +1 -0
- package/dist/src/components/Kbd.d.mts +7 -0
- package/dist/src/components/Kbd.d.mts.map +1 -0
- package/dist/src/components/Kbd.mjs +2 -0
- package/dist/src/components/Kbd.mjs.map +1 -0
- package/dist/src/components/Label.cjs +2 -0
- package/dist/src/components/Label.cjs.map +1 -0
- package/dist/src/components/Label.d.mts +8 -0
- package/dist/src/components/Label.d.mts.map +1 -0
- package/dist/src/components/Label.mjs +2 -0
- package/dist/src/components/Label.mjs.map +1 -0
- package/dist/src/components/Markdown.cjs +2 -0
- package/dist/src/components/Markdown.cjs.map +1 -0
- package/dist/src/components/Markdown.d.mts +8 -0
- package/dist/src/components/Markdown.d.mts.map +1 -0
- package/dist/src/components/Markdown.mjs +2 -0
- package/dist/src/components/Markdown.mjs.map +1 -0
- package/dist/src/components/MessageItem.cjs +2 -0
- package/dist/src/components/MessageItem.cjs.map +1 -0
- package/dist/src/components/MessageItem.d.mts +71 -0
- package/dist/src/components/MessageItem.d.mts.map +1 -0
- package/dist/src/components/MessageItem.mjs +2 -0
- package/dist/src/components/MessageItem.mjs.map +1 -0
- package/dist/src/components/MessageLines.cjs +2 -0
- package/dist/src/components/MessageLines.cjs.map +1 -0
- package/dist/src/components/MessageLines.d.mts +24 -0
- package/dist/src/components/MessageLines.d.mts.map +1 -0
- package/dist/src/components/MessageLines.mjs +2 -0
- package/dist/src/components/MessageLines.mjs.map +1 -0
- package/dist/src/components/OptionList.cjs +2 -0
- package/dist/src/components/OptionList.cjs.map +1 -0
- package/dist/src/components/OptionList.d.mts +50 -0
- package/dist/src/components/OptionList.d.mts.map +1 -0
- package/dist/src/components/OptionList.mjs +2 -0
- package/dist/src/components/OptionList.mjs.map +1 -0
- package/dist/src/components/Panel.cjs +2 -0
- package/dist/src/components/Panel.cjs.map +1 -0
- package/dist/src/components/Panel.d.mts +15 -0
- package/dist/src/components/Panel.d.mts.map +1 -0
- package/dist/src/components/Panel.mjs +2 -0
- package/dist/src/components/Panel.mjs.map +1 -0
- package/dist/src/components/Popover.cjs +2 -0
- package/dist/src/components/Popover.cjs.map +1 -0
- package/dist/src/components/Popover.d.mts +19 -0
- package/dist/src/components/Popover.d.mts.map +1 -0
- package/dist/src/components/Popover.mjs +2 -0
- package/dist/src/components/Popover.mjs.map +1 -0
- package/dist/src/components/Progress.cjs +2 -0
- package/dist/src/components/Progress.cjs.map +1 -0
- package/dist/src/components/Progress.d.mts +8 -0
- package/dist/src/components/Progress.d.mts.map +1 -0
- package/dist/src/components/Progress.mjs +2 -0
- package/dist/src/components/Progress.mjs.map +1 -0
- package/dist/src/components/RadioGroup.cjs +2 -0
- package/dist/src/components/RadioGroup.cjs.map +1 -0
- package/dist/src/components/RadioGroup.d.mts +15 -0
- package/dist/src/components/RadioGroup.d.mts.map +1 -0
- package/dist/src/components/RadioGroup.mjs +2 -0
- package/dist/src/components/RadioGroup.mjs.map +1 -0
- package/dist/src/components/ScrollArea.cjs +2 -0
- package/dist/src/components/ScrollArea.cjs.map +1 -0
- package/dist/src/components/ScrollArea.d.mts +13 -0
- package/dist/src/components/ScrollArea.d.mts.map +1 -0
- package/dist/src/components/ScrollArea.mjs +2 -0
- package/dist/src/components/ScrollArea.mjs.map +1 -0
- package/dist/src/components/SectionLabel.cjs +2 -0
- package/dist/src/components/SectionLabel.cjs.map +1 -0
- package/dist/src/components/SectionLabel.d.mts +7 -0
- package/dist/src/components/SectionLabel.d.mts.map +1 -0
- package/dist/src/components/SectionLabel.mjs +2 -0
- package/dist/src/components/SectionLabel.mjs.map +1 -0
- package/dist/src/components/Select.cjs +2 -0
- package/dist/src/components/Select.cjs.map +1 -0
- package/dist/src/components/Select.d.mts +19 -0
- package/dist/src/components/Select.d.mts.map +1 -0
- package/dist/src/components/Select.mjs +2 -0
- package/dist/src/components/Select.mjs.map +1 -0
- package/dist/src/components/Separator.cjs +2 -0
- package/dist/src/components/Separator.cjs.map +1 -0
- package/dist/src/components/Separator.d.mts +13 -0
- package/dist/src/components/Separator.d.mts.map +1 -0
- package/dist/src/components/Separator.mjs +2 -0
- package/dist/src/components/Separator.mjs.map +1 -0
- package/dist/src/components/Skeleton.cjs +2 -0
- package/dist/src/components/Skeleton.cjs.map +1 -0
- package/dist/src/components/Skeleton.d.mts +11 -0
- package/dist/src/components/Skeleton.d.mts.map +1 -0
- package/dist/src/components/Skeleton.mjs +2 -0
- package/dist/src/components/Skeleton.mjs.map +1 -0
- package/dist/src/components/Spinner.cjs +2 -0
- package/dist/src/components/Spinner.cjs.map +1 -0
- package/dist/src/components/Spinner.d.mts +15 -0
- package/dist/src/components/Spinner.d.mts.map +1 -0
- package/dist/src/components/Spinner.mjs +2 -0
- package/dist/src/components/Spinner.mjs.map +1 -0
- package/dist/src/components/StatusBadge.cjs +2 -0
- package/dist/src/components/StatusBadge.cjs.map +1 -0
- package/dist/src/components/StatusBadge.d.mts +24 -0
- package/dist/src/components/StatusBadge.d.mts.map +1 -0
- package/dist/src/components/StatusBadge.mjs +2 -0
- package/dist/src/components/StatusBadge.mjs.map +1 -0
- package/dist/src/components/StreamCursor.cjs +2 -0
- package/dist/src/components/StreamCursor.cjs.map +1 -0
- package/dist/src/components/StreamCursor.d.mts +7 -0
- package/dist/src/components/StreamCursor.d.mts.map +1 -0
- package/dist/src/components/StreamCursor.mjs +2 -0
- package/dist/src/components/StreamCursor.mjs.map +1 -0
- package/dist/src/components/Switch.cjs +2 -0
- package/dist/src/components/Switch.cjs.map +1 -0
- package/dist/src/components/Switch.d.mts +8 -0
- package/dist/src/components/Switch.d.mts.map +1 -0
- package/dist/src/components/Switch.mjs +2 -0
- package/dist/src/components/Switch.mjs.map +1 -0
- package/dist/src/components/Tabs.cjs +2 -0
- package/dist/src/components/Tabs.cjs.map +1 -0
- package/dist/src/components/Tabs.d.mts +36 -0
- package/dist/src/components/Tabs.d.mts.map +1 -0
- package/dist/src/components/Tabs.mjs +2 -0
- package/dist/src/components/Tabs.mjs.map +1 -0
- package/dist/src/components/Textarea.cjs +2 -0
- package/dist/src/components/Textarea.cjs.map +1 -0
- package/dist/src/components/Textarea.d.mts +10 -0
- package/dist/src/components/Textarea.d.mts.map +1 -0
- package/dist/src/components/Textarea.mjs +2 -0
- package/dist/src/components/Textarea.mjs.map +1 -0
- package/dist/src/components/Toast.cjs +2 -0
- package/dist/src/components/Toast.cjs.map +1 -0
- package/dist/src/components/Toast.d.mts +24 -0
- package/dist/src/components/Toast.d.mts.map +1 -0
- package/dist/src/components/Toast.mjs +2 -0
- package/dist/src/components/Toast.mjs.map +1 -0
- package/dist/src/components/Tooltip.cjs +2 -0
- package/dist/src/components/Tooltip.cjs.map +1 -0
- package/dist/src/components/Tooltip.d.mts +11 -0
- package/dist/src/components/Tooltip.d.mts.map +1 -0
- package/dist/src/components/Tooltip.mjs +2 -0
- package/dist/src/components/Tooltip.mjs.map +1 -0
- package/dist/src/icons/icons.cjs +1 -0
- package/dist/src/icons/icons.d.mts +2 -0
- package/dist/src/icons/icons.mjs +1 -0
- package/dist/src/lib/cn.cjs +2 -0
- package/dist/src/lib/cn.cjs.map +1 -0
- package/dist/src/lib/cn.d.mts +7 -0
- package/dist/src/lib/cn.d.mts.map +1 -0
- package/dist/src/lib/cn.mjs +2 -0
- package/dist/src/lib/cn.mjs.map +1 -0
- package/dist/src/lib/collapse.cjs +2 -0
- package/dist/src/lib/collapse.cjs.map +1 -0
- package/dist/src/lib/collapse.d.mts +15 -0
- package/dist/src/lib/collapse.d.mts.map +1 -0
- package/dist/src/lib/collapse.mjs +2 -0
- package/dist/src/lib/collapse.mjs.map +1 -0
- package/dist/src/lib/optionList.cjs +2 -0
- package/dist/src/lib/optionList.cjs.map +1 -0
- package/dist/src/lib/optionList.d.mts +22 -0
- package/dist/src/lib/optionList.d.mts.map +1 -0
- package/dist/src/lib/optionList.mjs +2 -0
- package/dist/src/lib/optionList.mjs.map +1 -0
- package/dist/src/lib/tone.cjs +2 -0
- package/dist/src/lib/tone.cjs.map +1 -0
- package/dist/src/lib/tone.d.mts +26 -0
- package/dist/src/lib/tone.d.mts.map +1 -0
- package/dist/src/lib/tone.mjs +2 -0
- package/dist/src/lib/tone.mjs.map +1 -0
- package/dist/src/theme/apply.cjs +3 -0
- package/dist/src/theme/apply.cjs.map +1 -0
- package/dist/src/theme/apply.d.mts +26 -0
- package/dist/src/theme/apply.d.mts.map +1 -0
- package/dist/src/theme/apply.mjs +3 -0
- package/dist/src/theme/apply.mjs.map +1 -0
- package/dist/src/theme/builtinThemes.cjs +2 -0
- package/dist/src/theme/builtinThemes.cjs.map +1 -0
- package/dist/src/theme/builtinThemes.d.mts +12 -0
- package/dist/src/theme/builtinThemes.d.mts.map +1 -0
- package/dist/src/theme/builtinThemes.mjs +2 -0
- package/dist/src/theme/builtinThemes.mjs.map +1 -0
- package/dist/src/theme/derive.cjs +2 -0
- package/dist/src/theme/derive.cjs.map +1 -0
- package/dist/src/theme/derive.d.mts +15 -0
- package/dist/src/theme/derive.d.mts.map +1 -0
- package/dist/src/theme/derive.mjs +2 -0
- package/dist/src/theme/derive.mjs.map +1 -0
- package/dist/src/theme/parse.cjs +2 -0
- package/dist/src/theme/parse.cjs.map +1 -0
- package/dist/src/theme/parse.d.mts +11 -0
- package/dist/src/theme/parse.d.mts.map +1 -0
- package/dist/src/theme/parse.mjs +2 -0
- package/dist/src/theme/parse.mjs.map +1 -0
- package/dist/src/theme/piTheme.cjs +2 -0
- package/dist/src/theme/piTheme.cjs.map +1 -0
- package/dist/src/theme/piTheme.d.mts +20 -0
- package/dist/src/theme/piTheme.d.mts.map +1 -0
- package/dist/src/theme/piTheme.mjs +2 -0
- package/dist/src/theme/piTheme.mjs.map +1 -0
- package/dist/src/theme/preference.cjs +2 -0
- package/dist/src/theme/preference.cjs.map +1 -0
- package/dist/src/theme/preference.d.mts +16 -0
- package/dist/src/theme/preference.d.mts.map +1 -0
- package/dist/src/theme/preference.mjs +2 -0
- package/dist/src/theme/preference.mjs.map +1 -0
- package/dist/src/types/theme.cjs +2 -0
- package/dist/src/types/theme.cjs.map +1 -0
- package/dist/src/types/theme.d.mts +39 -0
- package/dist/src/types/theme.d.mts.map +1 -0
- package/dist/src/types/theme.mjs +2 -0
- package/dist/src/types/theme.mjs.map +1 -0
- package/dist/src/types/tone.cjs +2 -0
- package/dist/src/types/tone.cjs.map +1 -0
- package/dist/src/types/tone.d.mts +29 -0
- package/dist/src/types/tone.d.mts.map +1 -0
- package/dist/src/types/tone.mjs +2 -0
- package/dist/src/types/tone.mjs.map +1 -0
- package/dist/theme/apply.d.cts +26 -0
- package/dist/theme/apply.d.cts.map +1 -0
- package/dist/theme/builtinThemes.d.cts +12 -0
- package/dist/theme/builtinThemes.d.cts.map +1 -0
- package/dist/theme/derive.d.cts +15 -0
- package/dist/theme/derive.d.cts.map +1 -0
- package/dist/theme/parse.d.cts +11 -0
- package/dist/theme/parse.d.cts.map +1 -0
- package/dist/theme/piTheme.d.cts +20 -0
- package/dist/theme/piTheme.d.cts.map +1 -0
- package/dist/theme/preference.d.cts +16 -0
- package/dist/theme/preference.d.cts.map +1 -0
- package/dist/theme.cjs +1 -0
- package/dist/theme.d.cts +8 -0
- package/dist/theme.d.mts +8 -0
- package/dist/theme.mjs +1 -0
- package/dist/themes/doom-nord-dark.cjs +2 -0
- package/dist/themes/doom-nord-dark.cjs.map +1 -0
- package/dist/themes/doom-nord-dark.mjs +2 -0
- package/dist/themes/doom-nord-dark.mjs.map +1 -0
- package/dist/themes/doom-one-dark.cjs +2 -0
- package/dist/themes/doom-one-dark.cjs.map +1 -0
- package/dist/themes/doom-one-dark.mjs +2 -0
- package/dist/themes/doom-one-dark.mjs.map +1 -0
- package/dist/themes/doom-one-light.cjs +2 -0
- package/dist/themes/doom-one-light.cjs.map +1 -0
- package/dist/themes/doom-one-light.mjs +2 -0
- package/dist/themes/doom-one-light.mjs.map +1 -0
- package/dist/types/theme.d.cts +39 -0
- package/dist/types/theme.d.cts.map +1 -0
- package/dist/types/tone.d.cts +29 -0
- package/dist/types/tone.d.cts.map +1 -0
- package/llms.txt +8 -0
- package/package.json +95 -0
- package/styles/tokens.css +202 -0
- package/themes/doom-nord-dark.json +27 -0
- package/themes/doom-one-dark.json +39 -0
- package/themes/doom-one-light.json +27 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ComponentProps } from "react";
|
|
2
|
+
//#region src/components/Skeleton.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* The shape of content that has not arrived. It has no Radix counterpart; it
|
|
5
|
+
* is a pulsing block, and it is aria-hidden because the live region that
|
|
6
|
+
* announces the wait belongs to the surface, not to each placeholder.
|
|
7
|
+
*/
|
|
8
|
+
declare function Skeleton({ className, ...props }: ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { Skeleton };
|
|
11
|
+
//# sourceMappingURL=Skeleton.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Skeleton.d.mts","names":[],"sources":["../../../src/components/Skeleton.tsx"],"mappings":";;;;;;;iBAQgB,WAAW,cAAc,SAAS,oDAAqB,IAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{cn as e}from"../lib/cn.mjs";import{jsx as t}from"react/jsx-runtime";function n({className:n,...r}){return t(`div`,{"data-slot":`skeleton`,"aria-hidden":!0,className:e(`animate-pulse rounded bg-doom-border-soft`,n),...r})}export{n as Skeleton};
|
|
2
|
+
//# sourceMappingURL=Skeleton.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Skeleton.mjs","names":[],"sources":["../../../src/components/Skeleton.tsx"],"sourcesContent":["import type { ComponentProps } from 'react';\nimport { cn } from '../lib/cn.ts';\n\n/**\n * The shape of content that has not arrived. It has no Radix counterpart; it\n * is a pulsing block, and it is aria-hidden because the live region that\n * announces the wait belongs to the surface, not to each placeholder.\n */\nexport function Skeleton({ className, ...props }: ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"skeleton\"\n aria-hidden\n className={cn('animate-pulse rounded bg-doom-border-soft', className)}\n {...props}\n />\n );\n}\n"],"mappings":"2EAQA,SAAgB,EAAS,CAAE,YAAW,GAAG,GAAgC,CACvE,OACE,EAAC,MAAD,CACE,YAAU,WACV,cAAA,GACA,UAAW,EAAG,4CAA6C,CAAS,EACpE,GAAI,CACL,CAAA,CAEL"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
require("../icons/icons.cjs");const e=require("../lib/cn.cjs");let t=require("react/jsx-runtime"),n=require("lucide-react");function r({className:r,label:i,...a}){let o=(0,t.jsx)(n.Loader2,{"data-slot":`spinner`,"aria-hidden":!0,className:e.cn(`h-3 w-3 animate-spin`,r),...a});return i===void 0?o:(0,t.jsxs)(`span`,{"data-slot":`spinner-status`,role:`status`,className:`inline-flex items-center`,children:[o,(0,t.jsx)(`span`,{className:`sr-only`,children:i})]})}exports.Spinner=r;
|
|
2
|
+
//# sourceMappingURL=Spinner.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Spinner.cjs","names":["LoaderIcon","cn"],"sources":["../../../src/components/Spinner.tsx"],"sourcesContent":["import type { ComponentProps } from 'react';\nimport { LoaderIcon } from '../icons/icons.ts';\nimport { cn } from '../lib/cn.ts';\n\nexport interface SpinnerProps extends ComponentProps<'svg'> {\n /**\n * What the wait is for. Given one, the spinner announces itself as a live\n * status instead of staying silent, which is the difference between a\n * screen reader saying \"loading providers\" and saying nothing at all.\n */\n label?: string;\n}\n\n/** A turning loader in the current text colour; decorative unless it is given a label. */\nexport function Spinner({ className, label, ...props }: SpinnerProps) {\n const icon = (\n <LoaderIcon data-slot=\"spinner\" aria-hidden className={cn('h-3 w-3 animate-spin', className)} {...props} />\n );\n if (label === undefined) return icon;\n return (\n <span data-slot=\"spinner-status\" role=\"status\" className=\"inline-flex items-center\">\n {icon}\n <span className=\"sr-only\">{label}</span>\n </span>\n );\n}\n"],"mappings":"4HAcA,SAAgB,EAAQ,CAAE,YAAW,QAAO,GAAG,GAAuB,CACpE,IAAM,GACJ,EAAA,EAAA,IAAA,CAACA,EAAAA,QAAD,CAAY,YAAU,UAAU,cAAA,GAAY,UAAWC,EAAAA,GAAG,uBAAwB,CAAS,EAAG,GAAI,CAAQ,CAAA,EAG5G,OADI,IAAU,IAAA,GAAkB,GAE9B,EAAA,EAAA,KAAA,CAAC,OAAD,CAAM,YAAU,iBAAiB,KAAK,SAAS,UAAU,2BAAzD,SAAA,CACG,GACD,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAU,UAAW,SAAA,CAAY,CAAA,CACnC,GAEV"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ComponentProps } from "react";
|
|
2
|
+
//#region src/components/Spinner.d.ts
|
|
3
|
+
interface SpinnerProps extends ComponentProps<'svg'> {
|
|
4
|
+
/**
|
|
5
|
+
* What the wait is for. Given one, the spinner announces itself as a live
|
|
6
|
+
* status instead of staying silent, which is the difference between a
|
|
7
|
+
* screen reader saying "loading providers" and saying nothing at all.
|
|
8
|
+
*/
|
|
9
|
+
label?: string;
|
|
10
|
+
}
|
|
11
|
+
/** A turning loader in the current text colour; decorative unless it is given a label. */
|
|
12
|
+
declare function Spinner({ className, label, ...props }: SpinnerProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { Spinner, SpinnerProps };
|
|
15
|
+
//# sourceMappingURL=Spinner.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Spinner.d.mts","names":[],"sources":["../../../src/components/Spinner.tsx"],"mappings":";;UAIiB,qBAAqB;;;;;;EAMpC;;;iBAIc,UAAU,WAAW,UAAU,SAAS,2CAAY,IAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{LoaderIcon as e}from"../icons/icons.mjs";import{cn as t}from"../lib/cn.mjs";import{jsx as n,jsxs as r}from"react/jsx-runtime";function i({className:i,label:a,...o}){let s=n(e,{"data-slot":`spinner`,"aria-hidden":!0,className:t(`h-3 w-3 animate-spin`,i),...o});return a===void 0?s:r(`span`,{"data-slot":`spinner-status`,role:`status`,className:`inline-flex items-center`,children:[s,n(`span`,{className:`sr-only`,children:a})]})}export{i as Spinner};
|
|
2
|
+
//# sourceMappingURL=Spinner.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Spinner.mjs","names":[],"sources":["../../../src/components/Spinner.tsx"],"sourcesContent":["import type { ComponentProps } from 'react';\nimport { LoaderIcon } from '../icons/icons.ts';\nimport { cn } from '../lib/cn.ts';\n\nexport interface SpinnerProps extends ComponentProps<'svg'> {\n /**\n * What the wait is for. Given one, the spinner announces itself as a live\n * status instead of staying silent, which is the difference between a\n * screen reader saying \"loading providers\" and saying nothing at all.\n */\n label?: string;\n}\n\n/** A turning loader in the current text colour; decorative unless it is given a label. */\nexport function Spinner({ className, label, ...props }: SpinnerProps) {\n const icon = (\n <LoaderIcon data-slot=\"spinner\" aria-hidden className={cn('h-3 w-3 animate-spin', className)} {...props} />\n );\n if (label === undefined) return icon;\n return (\n <span data-slot=\"spinner-status\" role=\"status\" className=\"inline-flex items-center\">\n {icon}\n <span className=\"sr-only\">{label}</span>\n </span>\n );\n}\n"],"mappings":"qIAcA,SAAgB,EAAQ,CAAE,YAAW,QAAO,GAAG,GAAuB,CACpE,IAAM,EACJ,EAAC,EAAD,CAAY,YAAU,UAAU,cAAA,GAAY,UAAW,EAAG,uBAAwB,CAAS,EAAG,GAAI,CAAQ,CAAA,EAG5G,OADI,IAAU,IAAA,GAAkB,EAE9B,EAAC,OAAD,CAAM,YAAU,iBAAiB,KAAK,SAAS,UAAU,2BAAzD,SAAA,CACG,EACD,EAAC,OAAD,CAAM,UAAU,UAAW,SAAA,CAAY,CAAA,CACnC,GAEV"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("../lib/cn.cjs");let t=require("radix-ui"),n=require("react/jsx-runtime");const r=(0,require("class-variance-authority").cva)(`inline-flex shrink-0 items-center gap-1.5 whitespace-nowrap rounded-[3px] font-mono font-bold uppercase`,{variants:{tone:{neutral:`bg-doom-panel text-doom-faint`,running:`bg-doom-tint-yellow text-doom-yellow`,ok:`bg-doom-tint-green text-doom-green`,error:`bg-doom-tint-red text-doom-red`,info:`bg-doom-tint-blue text-doom-blue`,accent:`bg-doom-tint-magenta text-doom-magenta`},size:{xs:`px-1.5 py-0.5 text-[8px]`,sm:`px-[7px] py-[3px] text-[9px]`,md:`h-[21px] px-2 text-[10px] normal-case`,lg:`h-6 px-2.5 text-[11px] normal-case`}},defaultVariants:{tone:`neutral`,size:`sm`}}),i={neutral:`border-doom-border`,running:`border-doom-edge-yellow`,ok:`border-doom-edge-green`,error:`border-doom-edge-red`,info:`border-doom-edge-blue`,accent:`border-doom-edge-magenta`};function a({className:i,tone:a,size:o,asChild:s=!1,...c}){let l=s?t.Slot.Root:`span`;return(0,n.jsx)(l,{"data-slot":`status-badge`,className:e.cn(r({tone:a,size:o}),i),...c})}exports.STATUS_EDGE=i,exports.StatusBadge=a,exports.statusBadgeVariants=r;
|
|
2
|
+
//# sourceMappingURL=StatusBadge.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusBadge.cjs","names":["cva","Slot","cn"],"sources":["../../../src/components/StatusBadge.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport { Slot } from 'radix-ui';\nimport type { ComponentProps } from 'react';\nimport { cn } from '../lib/cn.ts';\nimport type { StatusTone as Tone } from '../types/tone.ts';\n\nexport const statusBadgeVariants = cva(\n 'inline-flex shrink-0 items-center gap-1.5 whitespace-nowrap rounded-[3px] font-mono font-bold uppercase',\n {\n variants: {\n tone: {\n neutral: 'bg-doom-panel text-doom-faint',\n running: 'bg-doom-tint-yellow text-doom-yellow',\n ok: 'bg-doom-tint-green text-doom-green',\n error: 'bg-doom-tint-red text-doom-red',\n info: 'bg-doom-tint-blue text-doom-blue',\n accent: 'bg-doom-tint-magenta text-doom-magenta',\n } satisfies Record<Tone, string>,\n size: {\n xs: 'px-1.5 py-0.5 text-[8px]',\n sm: 'px-[7px] py-[3px] text-[9px]',\n md: 'h-[21px] px-2 text-[10px] normal-case',\n lg: 'h-6 px-2.5 text-[11px] normal-case',\n },\n },\n defaultVariants: { tone: 'neutral', size: 'sm' },\n },\n);\n\nexport type StatusTone = Tone;\n\n/**\n * The border a card wears for a status, the same tint family as the badge.\n * MessageItem builds its frame variants from this table, so a tone's edge is\n * named once and a card and its badge can never disagree about it.\n */\nexport const STATUS_EDGE: Readonly<Record<StatusTone, string>> = {\n neutral: 'border-doom-border',\n running: 'border-doom-edge-yellow',\n ok: 'border-doom-edge-green',\n error: 'border-doom-edge-red',\n info: 'border-doom-edge-blue',\n accent: 'border-doom-edge-magenta',\n};\n\nexport interface StatusBadgeProps extends ComponentProps<'span'>, VariantProps<typeof statusBadgeVariants> {\n /** Render the child element instead of a <span>, so a link can look like a pill. */\n asChild?: boolean;\n}\n\n/** The tinted outcome pill: RUNNING, OK, ERROR and their kin, as every run card draws it. */\nexport function StatusBadge({ className, tone, size, asChild = false, ...props }: StatusBadgeProps) {\n const Component = asChild ? Slot.Root : 'span';\n return (\n <Component data-slot=\"status-badge\" className={cn(statusBadgeVariants({ tone, size }), className)} {...props} />\n );\n}\n"],"mappings":"0FAMA,MAAa,GAAA,oCAAsBA,CAAAA,CAAAA,IAAAA,CACjC,0GACA,CACE,SAAU,CACR,KAAM,CACJ,QAAS,gCACT,QAAS,uCACT,GAAI,qCACJ,MAAO,iCACP,KAAM,mCACN,OAAQ,wCACV,EACA,KAAM,CACJ,GAAI,2BACJ,GAAI,+BACJ,GAAI,wCACJ,GAAI,oCACN,CACF,EACA,gBAAiB,CAAE,KAAM,UAAW,KAAM,IAAK,CACjD,CACF,EASa,EAAoD,CAC/D,QAAS,qBACT,QAAS,0BACT,GAAI,yBACJ,MAAO,uBACP,KAAM,wBACN,OAAQ,0BACV,EAQA,SAAgB,EAAY,CAAE,YAAW,OAAM,OAAM,UAAU,GAAO,GAAG,GAA2B,CAClG,IAAM,EAAY,EAAUC,EAAAA,KAAK,KAAO,OACxC,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAW,YAAU,eAAe,UAAWC,EAAAA,GAAG,EAAoB,CAAE,OAAM,MAAK,CAAC,EAAG,CAAS,EAAG,GAAI,CAAQ,CAAA,CAEnH"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { StatusTone as StatusTone$1 } from "../types/tone.mjs";
|
|
2
|
+
import { VariantProps } from "class-variance-authority";
|
|
3
|
+
import { ComponentProps } from "react";
|
|
4
|
+
//#region src/components/StatusBadge.d.ts
|
|
5
|
+
declare const statusBadgeVariants: (props?: ({
|
|
6
|
+
tone?: "accent" | "error" | "info" | "neutral" | "ok" | "running" | null | undefined;
|
|
7
|
+
size?: "lg" | "md" | "sm" | "xs" | null | undefined;
|
|
8
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
9
|
+
type StatusTone = StatusTone$1;
|
|
10
|
+
/**
|
|
11
|
+
* The border a card wears for a status, the same tint family as the badge.
|
|
12
|
+
* MessageItem builds its frame variants from this table, so a tone's edge is
|
|
13
|
+
* named once and a card and its badge can never disagree about it.
|
|
14
|
+
*/
|
|
15
|
+
declare const STATUS_EDGE: Readonly<Record<StatusTone, string>>;
|
|
16
|
+
interface StatusBadgeProps extends ComponentProps<'span'>, VariantProps<typeof statusBadgeVariants> {
|
|
17
|
+
/** Render the child element instead of a <span>, so a link can look like a pill. */
|
|
18
|
+
asChild?: boolean;
|
|
19
|
+
}
|
|
20
|
+
/** The tinted outcome pill: RUNNING, OK, ERROR and their kin, as every run card draws it. */
|
|
21
|
+
declare function StatusBadge({ className, tone, size, asChild, ...props }: StatusBadgeProps): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
//#endregion
|
|
23
|
+
export { STATUS_EDGE, StatusBadge, StatusBadgeProps, StatusTone, statusBadgeVariants };
|
|
24
|
+
//# sourceMappingURL=StatusBadge.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusBadge.d.mts","names":[],"sources":["../../../src/components/StatusBadge.tsx"],"mappings":";;;;cAMa,sBAAmB;;;6CAqB/B;KAEW,aAAa;;;;;;cAOZ,aAAa,SAAS,OAAO;UASzB,yBAAyB,wBAAwB,oBAAoB;;EAEpF;;;iBAIc,cAAc,WAAW,MAAM,MAAM,YAAoB,SAAS,+CAAgB,IAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{cn as e}from"../lib/cn.mjs";import{Slot as t}from"radix-ui";import{jsx as n}from"react/jsx-runtime";import{cva as r}from"class-variance-authority";const i=r(`inline-flex shrink-0 items-center gap-1.5 whitespace-nowrap rounded-[3px] font-mono font-bold uppercase`,{variants:{tone:{neutral:`bg-doom-panel text-doom-faint`,running:`bg-doom-tint-yellow text-doom-yellow`,ok:`bg-doom-tint-green text-doom-green`,error:`bg-doom-tint-red text-doom-red`,info:`bg-doom-tint-blue text-doom-blue`,accent:`bg-doom-tint-magenta text-doom-magenta`},size:{xs:`px-1.5 py-0.5 text-[8px]`,sm:`px-[7px] py-[3px] text-[9px]`,md:`h-[21px] px-2 text-[10px] normal-case`,lg:`h-6 px-2.5 text-[11px] normal-case`}},defaultVariants:{tone:`neutral`,size:`sm`}}),a={neutral:`border-doom-border`,running:`border-doom-edge-yellow`,ok:`border-doom-edge-green`,error:`border-doom-edge-red`,info:`border-doom-edge-blue`,accent:`border-doom-edge-magenta`};function o({className:r,tone:a,size:o,asChild:s=!1,...c}){let l=s?t.Root:`span`;return n(l,{"data-slot":`status-badge`,className:e(i({tone:a,size:o}),r),...c})}export{a as STATUS_EDGE,o as StatusBadge,i as statusBadgeVariants};
|
|
2
|
+
//# sourceMappingURL=StatusBadge.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusBadge.mjs","names":[],"sources":["../../../src/components/StatusBadge.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport { Slot } from 'radix-ui';\nimport type { ComponentProps } from 'react';\nimport { cn } from '../lib/cn.ts';\nimport type { StatusTone as Tone } from '../types/tone.ts';\n\nexport const statusBadgeVariants = cva(\n 'inline-flex shrink-0 items-center gap-1.5 whitespace-nowrap rounded-[3px] font-mono font-bold uppercase',\n {\n variants: {\n tone: {\n neutral: 'bg-doom-panel text-doom-faint',\n running: 'bg-doom-tint-yellow text-doom-yellow',\n ok: 'bg-doom-tint-green text-doom-green',\n error: 'bg-doom-tint-red text-doom-red',\n info: 'bg-doom-tint-blue text-doom-blue',\n accent: 'bg-doom-tint-magenta text-doom-magenta',\n } satisfies Record<Tone, string>,\n size: {\n xs: 'px-1.5 py-0.5 text-[8px]',\n sm: 'px-[7px] py-[3px] text-[9px]',\n md: 'h-[21px] px-2 text-[10px] normal-case',\n lg: 'h-6 px-2.5 text-[11px] normal-case',\n },\n },\n defaultVariants: { tone: 'neutral', size: 'sm' },\n },\n);\n\nexport type StatusTone = Tone;\n\n/**\n * The border a card wears for a status, the same tint family as the badge.\n * MessageItem builds its frame variants from this table, so a tone's edge is\n * named once and a card and its badge can never disagree about it.\n */\nexport const STATUS_EDGE: Readonly<Record<StatusTone, string>> = {\n neutral: 'border-doom-border',\n running: 'border-doom-edge-yellow',\n ok: 'border-doom-edge-green',\n error: 'border-doom-edge-red',\n info: 'border-doom-edge-blue',\n accent: 'border-doom-edge-magenta',\n};\n\nexport interface StatusBadgeProps extends ComponentProps<'span'>, VariantProps<typeof statusBadgeVariants> {\n /** Render the child element instead of a <span>, so a link can look like a pill. */\n asChild?: boolean;\n}\n\n/** The tinted outcome pill: RUNNING, OK, ERROR and their kin, as every run card draws it. */\nexport function StatusBadge({ className, tone, size, asChild = false, ...props }: StatusBadgeProps) {\n const Component = asChild ? Slot.Root : 'span';\n return (\n <Component data-slot=\"status-badge\" className={cn(statusBadgeVariants({ tone, size }), className)} {...props} />\n );\n}\n"],"mappings":"0JAMA,MAAa,EAAsB,EACjC,0GACA,CACE,SAAU,CACR,KAAM,CACJ,QAAS,gCACT,QAAS,uCACT,GAAI,qCACJ,MAAO,iCACP,KAAM,mCACN,OAAQ,wCACV,EACA,KAAM,CACJ,GAAI,2BACJ,GAAI,+BACJ,GAAI,wCACJ,GAAI,oCACN,CACF,EACA,gBAAiB,CAAE,KAAM,UAAW,KAAM,IAAK,CACjD,CACF,EASa,EAAoD,CAC/D,QAAS,qBACT,QAAS,0BACT,GAAI,yBACJ,MAAO,uBACP,KAAM,wBACN,OAAQ,0BACV,EAQA,SAAgB,EAAY,CAAE,YAAW,OAAM,OAAM,UAAU,GAAO,GAAG,GAA2B,CAClG,IAAM,EAAY,EAAU,EAAK,KAAO,OACxC,OACE,EAAC,EAAD,CAAW,YAAU,eAAe,UAAW,EAAG,EAAoB,CAAE,OAAM,MAAK,CAAC,EAAG,CAAS,EAAG,GAAI,CAAQ,CAAA,CAEnH"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("../lib/cn.cjs");let t=require("react/jsx-runtime");function n({className:n,...r}){return(0,t.jsx)(`span`,{"data-slot":`stream-cursor`,"aria-hidden":!0,className:e.cn(`ml-0.5 inline-block h-3.5 w-2 translate-y-0.5 animate-doom-blink bg-doom-blue`,n),...r})}exports.StreamCursor=n;
|
|
2
|
+
//# sourceMappingURL=StreamCursor.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StreamCursor.cjs","names":["cn"],"sources":["../../../src/components/StreamCursor.tsx"],"sourcesContent":["import type { ComponentProps } from 'react';\nimport { cn } from '../lib/cn.ts';\n\n/** The blinking block that marks text still arriving. */\nexport function StreamCursor({ className, ...props }: ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"stream-cursor\"\n aria-hidden\n className={cn('ml-0.5 inline-block h-3.5 w-2 translate-y-0.5 animate-doom-blink bg-doom-blue', className)}\n {...props}\n />\n );\n}\n"],"mappings":"oEAIA,SAAgB,EAAa,CAAE,YAAW,GAAG,GAAiC,CAC5E,OACE,EAAA,EAAA,IAAA,CAAC,OAAD,CACE,YAAU,gBACV,cAAA,GACA,UAAWA,EAAAA,GAAG,gFAAiF,CAAS,EACxG,GAAI,CACL,CAAA,CAEL"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ComponentProps } from "react";
|
|
2
|
+
//#region src/components/StreamCursor.d.ts
|
|
3
|
+
/** The blinking block that marks text still arriving. */
|
|
4
|
+
declare function StreamCursor({ className, ...props }: ComponentProps<'span'>): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { StreamCursor };
|
|
7
|
+
//# sourceMappingURL=StreamCursor.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StreamCursor.d.mts","names":[],"sources":["../../../src/components/StreamCursor.tsx"],"mappings":";;;iBAIgB,eAAe,cAAc,SAAS,qDAAsB,IAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{cn as e}from"../lib/cn.mjs";import{jsx as t}from"react/jsx-runtime";function n({className:n,...r}){return t(`span`,{"data-slot":`stream-cursor`,"aria-hidden":!0,className:e(`ml-0.5 inline-block h-3.5 w-2 translate-y-0.5 animate-doom-blink bg-doom-blue`,n),...r})}export{n as StreamCursor};
|
|
2
|
+
//# sourceMappingURL=StreamCursor.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StreamCursor.mjs","names":[],"sources":["../../../src/components/StreamCursor.tsx"],"sourcesContent":["import type { ComponentProps } from 'react';\nimport { cn } from '../lib/cn.ts';\n\n/** The blinking block that marks text still arriving. */\nexport function StreamCursor({ className, ...props }: ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"stream-cursor\"\n aria-hidden\n className={cn('ml-0.5 inline-block h-3.5 w-2 translate-y-0.5 animate-doom-blink bg-doom-blue', className)}\n {...props}\n />\n );\n}\n"],"mappings":"2EAIA,SAAgB,EAAa,CAAE,YAAW,GAAG,GAAiC,CAC5E,OACE,EAAC,OAAD,CACE,YAAU,gBACV,cAAA,GACA,UAAW,EAAG,gFAAiF,CAAS,EACxG,GAAI,CACL,CAAA,CAEL"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("../lib/cn.cjs");let t=require("radix-ui"),n=require("react/jsx-runtime");function r({className:r,...i}){return(0,n.jsx)(t.Switch.Root,{"data-slot":`switch`,className:e.cn(`inline-flex h-4 w-7 shrink-0 cursor-pointer items-center rounded-full border border-doom-border bg-doom-deep p-px outline-none transition-colors focus-visible:ring-2 focus-visible:ring-doom-blue/50 disabled:pointer-events-none disabled:opacity-40 data-[state=checked]:border-doom-blue data-[state=checked]:bg-doom-tint-blue`,r),...i,children:(0,n.jsx)(t.Switch.Thumb,{"data-slot":`switch-thumb`,className:`block h-3 w-3 rounded-full bg-doom-faint transition-transform data-[state=checked]:translate-x-3 data-[state=checked]:bg-doom-blue`})})}exports.Switch=r;
|
|
2
|
+
//# sourceMappingURL=Switch.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Switch.cjs","names":["SwitchPrimitive","cn"],"sources":["../../../src/components/Switch.tsx"],"sourcesContent":["import { Switch as SwitchPrimitive } from 'radix-ui';\nimport type { ComponentProps } from 'react';\nimport { cn } from '../lib/cn.ts';\n\n/** An on/off track; use it where the change takes effect immediately, a checkbox where it needs a save. */\nexport function Switch({ className, ...props }: ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n 'inline-flex h-4 w-7 shrink-0 cursor-pointer items-center rounded-full border border-doom-border bg-doom-deep p-px outline-none transition-colors focus-visible:ring-2 focus-visible:ring-doom-blue/50 disabled:pointer-events-none disabled:opacity-40 data-[state=checked]:border-doom-blue data-[state=checked]:bg-doom-tint-blue',\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className=\"block h-3 w-3 rounded-full bg-doom-faint transition-transform data-[state=checked]:translate-x-3 data-[state=checked]:bg-doom-blue\"\n />\n </SwitchPrimitive.Root>\n );\n}\n"],"mappings":"0FAKA,SAAgB,EAAO,CAAE,YAAW,GAAG,GAAsD,CAC3F,OACE,EAAA,EAAA,IAAA,CAACA,EAAAA,OAAgB,KAAjB,CACE,YAAU,SACV,UAAWC,EAAAA,GACT,sUACA,CACF,EACA,GAAI,EAEJ,UAAA,EAAA,EAAA,IAAA,CAACD,EAAAA,OAAgB,MAAjB,CACE,YAAU,eACV,UAAU,oIACX,CAAA,CACmB,CAAA,CAE1B"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Switch } from "radix-ui";
|
|
2
|
+
import { ComponentProps } from "react";
|
|
3
|
+
//#region src/components/Switch.d.ts
|
|
4
|
+
/** An on/off track; use it where the change takes effect immediately, a checkbox where it needs a save. */
|
|
5
|
+
declare function Switch$1({ className, ...props }: ComponentProps<typeof Switch.Root>): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { Switch$1 as Switch };
|
|
8
|
+
//# sourceMappingURL=Switch.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Switch.d.mts","names":[],"sources":["../../../src/components/Switch.tsx"],"mappings":";;;;iBAKgB,WAAS,cAAc,SAAS,sBAAsB,OAAgB,oCAAK,IAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{cn as e}from"../lib/cn.mjs";import{Switch as t}from"radix-ui";import{jsx as n}from"react/jsx-runtime";function r({className:r,...i}){return n(t.Root,{"data-slot":`switch`,className:e(`inline-flex h-4 w-7 shrink-0 cursor-pointer items-center rounded-full border border-doom-border bg-doom-deep p-px outline-none transition-colors focus-visible:ring-2 focus-visible:ring-doom-blue/50 disabled:pointer-events-none disabled:opacity-40 data-[state=checked]:border-doom-blue data-[state=checked]:bg-doom-tint-blue`,r),...i,children:n(t.Thumb,{"data-slot":`switch-thumb`,className:`block h-3 w-3 rounded-full bg-doom-faint transition-transform data-[state=checked]:translate-x-3 data-[state=checked]:bg-doom-blue`})})}export{r as Switch};
|
|
2
|
+
//# sourceMappingURL=Switch.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Switch.mjs","names":["Switch","SwitchPrimitive"],"sources":["../../../src/components/Switch.tsx"],"sourcesContent":["import { Switch as SwitchPrimitive } from 'radix-ui';\nimport type { ComponentProps } from 'react';\nimport { cn } from '../lib/cn.ts';\n\n/** An on/off track; use it where the change takes effect immediately, a checkbox where it needs a save. */\nexport function Switch({ className, ...props }: ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n 'inline-flex h-4 w-7 shrink-0 cursor-pointer items-center rounded-full border border-doom-border bg-doom-deep p-px outline-none transition-colors focus-visible:ring-2 focus-visible:ring-doom-blue/50 disabled:pointer-events-none disabled:opacity-40 data-[state=checked]:border-doom-blue data-[state=checked]:bg-doom-tint-blue',\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className=\"block h-3 w-3 rounded-full bg-doom-faint transition-transform data-[state=checked]:translate-x-3 data-[state=checked]:bg-doom-blue\"\n />\n </SwitchPrimitive.Root>\n );\n}\n"],"mappings":"6GAKA,SAAgBA,EAAO,CAAE,YAAW,GAAG,GAAsD,CAC3F,OACE,EAACC,EAAgB,KAAjB,CACE,YAAU,SACV,UAAW,EACT,sUACA,CACF,EACA,GAAI,EAEJ,SAAA,EAACA,EAAgB,MAAjB,CACE,YAAU,eACV,UAAU,oIACX,CAAA,CACmB,CAAA,CAE1B"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("../lib/cn.cjs");let t=require("radix-ui"),n=require("react/jsx-runtime"),r=require("class-variance-authority");const i=(0,r.cva)(`flex cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-[10px] transition-colors outline-none`,{variants:{active:{true:`bg-doom-tint-blue font-bold text-doom-blue`,false:`text-doom-dim hover:bg-doom-panel hover:text-doom-hi`}},defaultVariants:{active:!1}}),a=(0,r.cva)(`flex h-[15px] min-w-[15px] items-center justify-center rounded-full px-1 text-[8px] font-bold`,{variants:{active:{true:`bg-doom-blue text-doom-rail`,false:`bg-doom-panel text-doom-dim`}},defaultVariants:{active:!1}});function o({className:r,active:a,asChild:o=!1,...s}){let c=o?t.Slot.Root:`a`;return(0,n.jsx)(c,{"data-slot":`nav-tab`,"data-active":a??!1,className:e.cn(i({active:a}),r),...s})}function s({className:t,active:r,...i}){return(0,n.jsx)(`span`,{"data-slot":`nav-tab-badge`,className:e.cn(a({active:r}),t),...i})}function c(e){return(0,n.jsx)(t.Tabs.Root,{"data-slot":`tabs`,...e})}function l({className:r,...i}){return(0,n.jsx)(t.Tabs.List,{"data-slot":`tabs-list`,className:e.cn(`flex items-center gap-1`,r),...i})}function u({className:r,...a}){return(0,n.jsx)(t.Tabs.Trigger,{"data-slot":`tabs-trigger`,className:e.cn(i({active:!1}),`data-[state=active]:bg-doom-tint-blue data-[state=active]:font-bold data-[state=active]:text-doom-blue`,r),...a})}function d({className:r,...i}){return(0,n.jsx)(t.Tabs.Content,{"data-slot":`tabs-content`,className:e.cn(`min-h-0 flex-1`,r),...i})}exports.NavTab=o,exports.NavTabBadge=s,exports.Tabs=c,exports.TabsContent=d,exports.TabsList=l,exports.TabsTrigger=u,exports.tabBadgeVariants=a,exports.tabVariants=i;
|
|
2
|
+
//# sourceMappingURL=Tabs.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tabs.cjs","names":["cva","Slot","cn","TabsPrimitive"],"sources":["../../../src/components/Tabs.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport { Tabs as TabsPrimitive } from 'radix-ui';\nimport { Slot } from 'radix-ui';\nimport type { ComponentProps } from 'react';\nimport { cn } from '../lib/cn.ts';\n\n/**\n * The look a tab wears, whether Radix drives it or a router link does. It is\n * exported because the cockpit's own tabs navigate routes rather than swap\n * panels, and a link that looks like a tab must not be a second implementation.\n */\nexport const tabVariants = cva(\n 'flex cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-[10px] transition-colors outline-none',\n {\n variants: {\n active: {\n true: 'bg-doom-tint-blue font-bold text-doom-blue',\n false: 'text-doom-dim hover:bg-doom-panel hover:text-doom-hi',\n },\n },\n defaultVariants: { active: false },\n },\n);\n\n/** The count a tab carries; it inverts on the active tab so it stays readable on the tint. */\nexport const tabBadgeVariants = cva(\n 'flex h-[15px] min-w-[15px] items-center justify-center rounded-full px-1 text-[8px] font-bold',\n {\n variants: {\n active: { true: 'bg-doom-blue text-doom-rail', false: 'bg-doom-panel text-doom-dim' },\n },\n defaultVariants: { active: false },\n },\n);\n\nexport interface NavTabProps extends ComponentProps<'a'>, VariantProps<typeof tabVariants> {\n /** Render the child element instead of an <a>, so a router Link can be the tab. */\n asChild?: boolean;\n}\n\n/**\n * A tab that navigates. Radix Tabs owns panels and roving focus over content\n * it renders; a route-driven tab strip has neither, so it gets the styling and\n * leaves the semantics to the router.\n */\nexport function NavTab({ className, active, asChild = false, ...props }: NavTabProps) {\n const Component = asChild ? Slot.Root : 'a';\n return (\n <Component\n data-slot=\"nav-tab\"\n data-active={active ?? false}\n className={cn(tabVariants({ active }), className)}\n {...props}\n />\n );\n}\n\n/** The count beside a tab's label. */\nexport function NavTabBadge({\n className,\n active,\n ...props\n}: ComponentProps<'span'> & VariantProps<typeof tabBadgeVariants>) {\n return <span data-slot=\"nav-tab-badge\" className={cn(tabBadgeVariants({ active }), className)} {...props} />;\n}\n\n/** Radix Tabs, for a surface that swaps panels in place rather than navigating. */\nexport function Tabs(props: ComponentProps<typeof TabsPrimitive.Root>) {\n return <TabsPrimitive.Root data-slot=\"tabs\" {...props} />;\n}\n\nexport function TabsList({ className, ...props }: ComponentProps<typeof TabsPrimitive.List>) {\n return <TabsPrimitive.List data-slot=\"tabs-list\" className={cn('flex items-center gap-1', className)} {...props} />;\n}\n\nexport function TabsTrigger({ className, ...props }: ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n tabVariants({ active: false }),\n 'data-[state=active]:bg-doom-tint-blue data-[state=active]:font-bold data-[state=active]:text-doom-blue',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function TabsContent({ className, ...props }: ComponentProps<typeof TabsPrimitive.Content>) {\n return <TabsPrimitive.Content data-slot=\"tabs-content\" className={cn('min-h-0 flex-1', className)} {...props} />;\n}\n"],"mappings":"gIAWA,MAAa,GAAA,EAAcA,EAAAA,IAAAA,CACzB,wGACA,CACE,SAAU,CACR,OAAQ,CACN,KAAM,6CACN,MAAO,sDACT,CACF,EACA,gBAAiB,CAAE,OAAQ,EAAM,CACnC,CACF,EAGa,GAAA,EAAmBA,EAAAA,IAAAA,CAC9B,gGACA,CACE,SAAU,CACR,OAAQ,CAAE,KAAM,8BAA+B,MAAO,6BAA8B,CACtF,EACA,gBAAiB,CAAE,OAAQ,EAAM,CACnC,CACF,EAYA,SAAgB,EAAO,CAAE,YAAW,SAAQ,UAAU,GAAO,GAAG,GAAsB,CACpF,IAAM,EAAY,EAAUC,EAAAA,KAAK,KAAO,IACxC,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,YAAU,UACV,cAAa,GAAU,GACvB,UAAWC,EAAAA,GAAG,EAAY,CAAE,QAAO,CAAC,EAAG,CAAS,EAChD,GAAI,CACL,CAAA,CAEL,CAGA,SAAgB,EAAY,CAC1B,YACA,SACA,GAAG,GAC8D,CACjE,OAAO,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,YAAU,gBAAgB,UAAWA,EAAAA,GAAG,EAAiB,CAAE,QAAO,CAAC,EAAG,CAAS,EAAG,GAAI,CAAQ,CAAA,CAC7G,CAGA,SAAgB,EAAK,EAAkD,CACrE,OAAO,EAAA,EAAA,IAAA,CAACC,EAAAA,KAAc,KAAf,CAAoB,YAAU,OAAO,GAAI,CAAQ,CAAA,CAC1D,CAEA,SAAgB,EAAS,CAAE,YAAW,GAAG,GAAoD,CAC3F,OAAO,EAAA,EAAA,IAAA,CAACA,EAAAA,KAAc,KAAf,CAAoB,YAAU,YAAY,UAAWD,EAAAA,GAAG,0BAA2B,CAAS,EAAG,GAAI,CAAQ,CAAA,CACpH,CAEA,SAAgB,EAAY,CAAE,YAAW,GAAG,GAAuD,CACjG,OACE,EAAA,EAAA,IAAA,CAACC,EAAAA,KAAc,QAAf,CACE,YAAU,eACV,UAAWD,EAAAA,GACT,EAAY,CAAE,OAAQ,EAAM,CAAC,EAC7B,yGACA,CACF,EACA,GAAI,CACL,CAAA,CAEL,CAEA,SAAgB,EAAY,CAAE,YAAW,GAAG,GAAuD,CACjG,OAAO,EAAA,EAAA,IAAA,CAACC,EAAAA,KAAc,QAAf,CAAuB,YAAU,eAAe,UAAWD,EAAAA,GAAG,iBAAkB,CAAS,EAAG,GAAI,CAAQ,CAAA,CACjH"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Tabs } from "radix-ui";
|
|
2
|
+
import { VariantProps } from "class-variance-authority";
|
|
3
|
+
import { ComponentProps } from "react";
|
|
4
|
+
//#region src/components/Tabs.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* The look a tab wears, whether Radix drives it or a router link does. It is
|
|
7
|
+
* exported because the cockpit's own tabs navigate routes rather than swap
|
|
8
|
+
* panels, and a link that looks like a tab must not be a second implementation.
|
|
9
|
+
*/
|
|
10
|
+
declare const tabVariants: (props?: ({
|
|
11
|
+
active?: boolean | null | undefined;
|
|
12
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
13
|
+
/** The count a tab carries; it inverts on the active tab so it stays readable on the tint. */
|
|
14
|
+
declare const tabBadgeVariants: (props?: ({
|
|
15
|
+
active?: boolean | null | undefined;
|
|
16
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
17
|
+
interface NavTabProps extends ComponentProps<'a'>, VariantProps<typeof tabVariants> {
|
|
18
|
+
/** Render the child element instead of an <a>, so a router Link can be the tab. */
|
|
19
|
+
asChild?: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* A tab that navigates. Radix Tabs owns panels and roving focus over content
|
|
23
|
+
* it renders; a route-driven tab strip has neither, so it gets the styling and
|
|
24
|
+
* leaves the semantics to the router.
|
|
25
|
+
*/
|
|
26
|
+
declare function NavTab({ className, active, asChild, ...props }: NavTabProps): import("react/jsx-runtime").JSX.Element;
|
|
27
|
+
/** The count beside a tab's label. */
|
|
28
|
+
declare function NavTabBadge({ className, active, ...props }: ComponentProps<'span'> & VariantProps<typeof tabBadgeVariants>): import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
/** Radix Tabs, for a surface that swaps panels in place rather than navigating. */
|
|
30
|
+
declare function Tabs$1(props: ComponentProps<typeof Tabs.Root>): import("react/jsx-runtime").JSX.Element;
|
|
31
|
+
declare function TabsList({ className, ...props }: ComponentProps<typeof Tabs.List>): import("react/jsx-runtime").JSX.Element;
|
|
32
|
+
declare function TabsTrigger({ className, ...props }: ComponentProps<typeof Tabs.Trigger>): import("react/jsx-runtime").JSX.Element;
|
|
33
|
+
declare function TabsContent({ className, ...props }: ComponentProps<typeof Tabs.Content>): import("react/jsx-runtime").JSX.Element;
|
|
34
|
+
//#endregion
|
|
35
|
+
export { NavTab, NavTabBadge, NavTabProps, Tabs$1 as Tabs, TabsContent, TabsList, TabsTrigger, tabBadgeVariants, tabVariants };
|
|
36
|
+
//# sourceMappingURL=Tabs.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tabs.d.mts","names":[],"sources":["../../../src/components/Tabs.tsx"],"mappings":";;;;;;;;;cAWa,cAAW;;6CAWvB;;cAGY,mBAAgB;;6CAQ5B;UAEgB,oBAAoB,qBAAqB,oBAAoB;;EAE5E;;;;;;;iBAQc,SAAS,WAAW,QAAQ,YAAoB,SAAS,0CAAW,IAAA;;iBAapE,cACd,WACA,WACG,SACF,yBAAyB,oBAAoB,gDAAiB,IAAA;;iBAKjD,OAAK,OAAO,sBAAsB,KAAc,oCAAK,IAAA;iBAIrD,WAAW,cAAc,SAAS,sBAAsB,KAAc,oCAAK,IAAA;iBAI3E,cAAc,cAAc,SAAS,sBAAsB,KAAc,uCAAQ,IAAA;iBAcjF,cAAc,cAAc,SAAS,sBAAsB,KAAc,uCAAQ,IAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{cn as e}from"../lib/cn.mjs";import{Slot as t,Tabs as n}from"radix-ui";import{jsx as r}from"react/jsx-runtime";import{cva as i}from"class-variance-authority";const a=i(`flex cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-[10px] transition-colors outline-none`,{variants:{active:{true:`bg-doom-tint-blue font-bold text-doom-blue`,false:`text-doom-dim hover:bg-doom-panel hover:text-doom-hi`}},defaultVariants:{active:!1}}),o=i(`flex h-[15px] min-w-[15px] items-center justify-center rounded-full px-1 text-[8px] font-bold`,{variants:{active:{true:`bg-doom-blue text-doom-rail`,false:`bg-doom-panel text-doom-dim`}},defaultVariants:{active:!1}});function s({className:n,active:i,asChild:o=!1,...s}){let c=o?t.Root:`a`;return r(c,{"data-slot":`nav-tab`,"data-active":i??!1,className:e(a({active:i}),n),...s})}function c({className:t,active:n,...i}){return r(`span`,{"data-slot":`nav-tab-badge`,className:e(o({active:n}),t),...i})}function l(e){return r(n.Root,{"data-slot":`tabs`,...e})}function u({className:t,...i}){return r(n.List,{"data-slot":`tabs-list`,className:e(`flex items-center gap-1`,t),...i})}function d({className:t,...i}){return r(n.Trigger,{"data-slot":`tabs-trigger`,className:e(a({active:!1}),`data-[state=active]:bg-doom-tint-blue data-[state=active]:font-bold data-[state=active]:text-doom-blue`,t),...i})}function f({className:t,...i}){return r(n.Content,{"data-slot":`tabs-content`,className:e(`min-h-0 flex-1`,t),...i})}export{s as NavTab,c as NavTabBadge,l as Tabs,f as TabsContent,u as TabsList,d as TabsTrigger,o as tabBadgeVariants,a as tabVariants};
|
|
2
|
+
//# sourceMappingURL=Tabs.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tabs.mjs","names":["Tabs","TabsPrimitive"],"sources":["../../../src/components/Tabs.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport { Tabs as TabsPrimitive } from 'radix-ui';\nimport { Slot } from 'radix-ui';\nimport type { ComponentProps } from 'react';\nimport { cn } from '../lib/cn.ts';\n\n/**\n * The look a tab wears, whether Radix drives it or a router link does. It is\n * exported because the cockpit's own tabs navigate routes rather than swap\n * panels, and a link that looks like a tab must not be a second implementation.\n */\nexport const tabVariants = cva(\n 'flex cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-[10px] transition-colors outline-none',\n {\n variants: {\n active: {\n true: 'bg-doom-tint-blue font-bold text-doom-blue',\n false: 'text-doom-dim hover:bg-doom-panel hover:text-doom-hi',\n },\n },\n defaultVariants: { active: false },\n },\n);\n\n/** The count a tab carries; it inverts on the active tab so it stays readable on the tint. */\nexport const tabBadgeVariants = cva(\n 'flex h-[15px] min-w-[15px] items-center justify-center rounded-full px-1 text-[8px] font-bold',\n {\n variants: {\n active: { true: 'bg-doom-blue text-doom-rail', false: 'bg-doom-panel text-doom-dim' },\n },\n defaultVariants: { active: false },\n },\n);\n\nexport interface NavTabProps extends ComponentProps<'a'>, VariantProps<typeof tabVariants> {\n /** Render the child element instead of an <a>, so a router Link can be the tab. */\n asChild?: boolean;\n}\n\n/**\n * A tab that navigates. Radix Tabs owns panels and roving focus over content\n * it renders; a route-driven tab strip has neither, so it gets the styling and\n * leaves the semantics to the router.\n */\nexport function NavTab({ className, active, asChild = false, ...props }: NavTabProps) {\n const Component = asChild ? Slot.Root : 'a';\n return (\n <Component\n data-slot=\"nav-tab\"\n data-active={active ?? false}\n className={cn(tabVariants({ active }), className)}\n {...props}\n />\n );\n}\n\n/** The count beside a tab's label. */\nexport function NavTabBadge({\n className,\n active,\n ...props\n}: ComponentProps<'span'> & VariantProps<typeof tabBadgeVariants>) {\n return <span data-slot=\"nav-tab-badge\" className={cn(tabBadgeVariants({ active }), className)} {...props} />;\n}\n\n/** Radix Tabs, for a surface that swaps panels in place rather than navigating. */\nexport function Tabs(props: ComponentProps<typeof TabsPrimitive.Root>) {\n return <TabsPrimitive.Root data-slot=\"tabs\" {...props} />;\n}\n\nexport function TabsList({ className, ...props }: ComponentProps<typeof TabsPrimitive.List>) {\n return <TabsPrimitive.List data-slot=\"tabs-list\" className={cn('flex items-center gap-1', className)} {...props} />;\n}\n\nexport function TabsTrigger({ className, ...props }: ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n tabVariants({ active: false }),\n 'data-[state=active]:bg-doom-tint-blue data-[state=active]:font-bold data-[state=active]:text-doom-blue',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function TabsContent({ className, ...props }: ComponentProps<typeof TabsPrimitive.Content>) {\n return <TabsPrimitive.Content data-slot=\"tabs-content\" className={cn('min-h-0 flex-1', className)} {...props} />;\n}\n"],"mappings":"oKAWA,MAAa,EAAc,EACzB,wGACA,CACE,SAAU,CACR,OAAQ,CACN,KAAM,6CACN,MAAO,sDACT,CACF,EACA,gBAAiB,CAAE,OAAQ,EAAM,CACnC,CACF,EAGa,EAAmB,EAC9B,gGACA,CACE,SAAU,CACR,OAAQ,CAAE,KAAM,8BAA+B,MAAO,6BAA8B,CACtF,EACA,gBAAiB,CAAE,OAAQ,EAAM,CACnC,CACF,EAYA,SAAgB,EAAO,CAAE,YAAW,SAAQ,UAAU,GAAO,GAAG,GAAsB,CACpF,IAAM,EAAY,EAAU,EAAK,KAAO,IACxC,OACE,EAAC,EAAD,CACE,YAAU,UACV,cAAa,GAAU,GACvB,UAAW,EAAG,EAAY,CAAE,QAAO,CAAC,EAAG,CAAS,EAChD,GAAI,CACL,CAAA,CAEL,CAGA,SAAgB,EAAY,CAC1B,YACA,SACA,GAAG,GAC8D,CACjE,OAAO,EAAC,OAAD,CAAM,YAAU,gBAAgB,UAAW,EAAG,EAAiB,CAAE,QAAO,CAAC,EAAG,CAAS,EAAG,GAAI,CAAQ,CAAA,CAC7G,CAGA,SAAgBA,EAAK,EAAkD,CACrE,OAAO,EAACC,EAAc,KAAf,CAAoB,YAAU,OAAO,GAAI,CAAQ,CAAA,CAC1D,CAEA,SAAgB,EAAS,CAAE,YAAW,GAAG,GAAoD,CAC3F,OAAO,EAACA,EAAc,KAAf,CAAoB,YAAU,YAAY,UAAW,EAAG,0BAA2B,CAAS,EAAG,GAAI,CAAQ,CAAA,CACpH,CAEA,SAAgB,EAAY,CAAE,YAAW,GAAG,GAAuD,CACjG,OACE,EAACA,EAAc,QAAf,CACE,YAAU,eACV,UAAW,EACT,EAAY,CAAE,OAAQ,EAAM,CAAC,EAC7B,yGACA,CACF,EACA,GAAI,CACL,CAAA,CAEL,CAEA,SAAgB,EAAY,CAAE,YAAW,GAAG,GAAuD,CACjG,OAAO,EAACA,EAAc,QAAf,CAAuB,YAAU,eAAe,UAAW,EAAG,iBAAkB,CAAS,EAAG,GAAI,CAAQ,CAAA,CACjH"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("../lib/cn.cjs"),t=require("./Input.cjs");let n=require("react/jsx-runtime");function r({className:r,variant:i,size:a,...o}){return(0,n.jsx)(`textarea`,{"data-slot":`textarea`,className:e.cn(`resize-none`,t.fieldVariants({variant:i,size:a}),r),...o})}exports.Textarea=r;
|
|
2
|
+
//# sourceMappingURL=Textarea.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Textarea.cjs","names":["cn","fieldVariants"],"sources":["../../../src/components/Textarea.tsx"],"sourcesContent":["import type { VariantProps } from 'class-variance-authority';\nimport type { ComponentProps } from 'react';\nimport { cn } from '../lib/cn.ts';\nimport { fieldVariants } from './Input.tsx';\n\nexport interface TextareaProps extends Omit<ComponentProps<'textarea'>, 'size'>, VariantProps<typeof fieldVariants> {}\n\n/** The multi-line field, styled as the Input; `bare` drops the well for a composer that draws its own. */\nexport function Textarea({ className, variant, size, ...props }: TextareaProps) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn('resize-none', fieldVariants({ variant, size }), className)}\n {...props}\n />\n );\n}\n"],"mappings":"6FAQA,SAAgB,EAAS,CAAE,YAAW,UAAS,OAAM,GAAG,GAAwB,CAC9E,OACE,EAAA,EAAA,IAAA,CAAC,WAAD,CACE,YAAU,WACV,UAAWA,EAAAA,GAAG,cAAeC,EAAAA,cAAc,CAAE,UAAS,MAAK,CAAC,EAAG,CAAS,EACxE,GAAI,CACL,CAAA,CAEL"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { fieldVariants } from "./Input.mjs";
|
|
2
|
+
import { VariantProps } from "class-variance-authority";
|
|
3
|
+
import { ComponentProps } from "react";
|
|
4
|
+
//#region src/components/Textarea.d.ts
|
|
5
|
+
interface TextareaProps extends Omit<ComponentProps<'textarea'>, 'size'>, VariantProps<typeof fieldVariants> {}
|
|
6
|
+
/** The multi-line field, styled as the Input; `bare` drops the well for a composer that draws its own. */
|
|
7
|
+
declare function Textarea({ className, variant, size, ...props }: TextareaProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//#endregion
|
|
9
|
+
export { Textarea, TextareaProps };
|
|
10
|
+
//# sourceMappingURL=Textarea.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Textarea.d.mts","names":[],"sources":["../../../src/components/Textarea.tsx"],"mappings":";;;;UAKiB,sBAAsB,KAAK,qCAAqC,oBAAoB;;iBAGrF,WAAW,WAAW,SAAS,SAAS,SAAS,4CAAa,IAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{cn as e}from"../lib/cn.mjs";import{fieldVariants as t}from"./Input.mjs";import{jsx as n}from"react/jsx-runtime";function r({className:r,variant:i,size:a,...o}){return n(`textarea`,{"data-slot":`textarea`,className:e(`resize-none`,t({variant:i,size:a}),r),...o})}export{r as Textarea};
|
|
2
|
+
//# sourceMappingURL=Textarea.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Textarea.mjs","names":[],"sources":["../../../src/components/Textarea.tsx"],"sourcesContent":["import type { VariantProps } from 'class-variance-authority';\nimport type { ComponentProps } from 'react';\nimport { cn } from '../lib/cn.ts';\nimport { fieldVariants } from './Input.tsx';\n\nexport interface TextareaProps extends Omit<ComponentProps<'textarea'>, 'size'>, VariantProps<typeof fieldVariants> {}\n\n/** The multi-line field, styled as the Input; `bare` drops the well for a composer that draws its own. */\nexport function Textarea({ className, variant, size, ...props }: TextareaProps) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn('resize-none', fieldVariants({ variant, size }), className)}\n {...props}\n />\n );\n}\n"],"mappings":"uHAQA,SAAgB,EAAS,CAAE,YAAW,UAAS,OAAM,GAAG,GAAwB,CAC9E,OACE,EAAC,WAAD,CACE,YAAU,WACV,UAAW,EAAG,cAAe,EAAc,CAAE,UAAS,MAAK,CAAC,EAAG,CAAS,EACxE,GAAI,CACL,CAAA,CAEL"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
require("../icons/icons.cjs");const e=require("../lib/cn.cjs");let t=require("radix-ui"),n=require("react/jsx-runtime"),r=require("class-variance-authority"),i=require("lucide-react");function a(e){return(0,n.jsx)(t.Toast.Provider,{...e})}function o({className:r,...i}){return(0,n.jsx)(t.Toast.Viewport,{"data-slot":`toast-viewport`,className:e.cn(`fixed right-4 bottom-4 z-50 flex w-[360px] max-w-full flex-col gap-2 outline-none`,r),...i})}const s=(0,r.cva)(`flex items-start gap-3 rounded-md border bg-doom-panel px-3 py-2.5 font-mono shadow-2xl data-[state=open]:animate-doom-rise`,{variants:{tone:{neutral:`border-doom-border`,running:`border-doom-edge-yellow`,ok:`border-doom-edge-green`,error:`border-doom-edge-red`,info:`border-doom-edge-blue`,accent:`border-doom-edge-magenta`}},defaultVariants:{tone:`neutral`}});function c({className:r,tone:i,...a}){return(0,n.jsx)(t.Toast.Root,{"data-slot":`toast`,className:e.cn(s({tone:i}),r),...a})}function l({className:r,...i}){return(0,n.jsx)(t.Toast.Title,{"data-slot":`toast-title`,className:e.cn(`text-[11px] font-bold text-doom-hi`,r),...i})}function u({className:r,...i}){return(0,n.jsx)(t.Toast.Description,{"data-slot":`toast-description`,className:e.cn(`text-[11px] leading-relaxed text-doom-dim`,r),...i})}function d(e){return(0,n.jsx)(t.Toast.Action,{"data-slot":`toast-action`,...e})}function f({className:r,...a}){return(0,n.jsx)(t.Toast.Close,{"data-slot":`toast-close`,"aria-label":`dismiss`,className:e.cn(`shrink-0 cursor-pointer text-doom-faint transition-colors hover:text-doom-hi`,r),...a,children:(0,n.jsx)(i.X,{className:`h-3 w-3`})})}exports.Toast=c,exports.ToastAction=d,exports.ToastClose=f,exports.ToastDescription=u,exports.ToastProvider=a,exports.ToastTitle=l,exports.ToastViewport=o,exports.toastVariants=s;
|
|
2
|
+
//# sourceMappingURL=Toast.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toast.cjs","names":["ToastPrimitive","cn","cva","CloseIcon"],"sources":["../../../src/components/Toast.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport { Toast as ToastPrimitive } from 'radix-ui';\nimport type { ComponentProps } from 'react';\nimport { CloseIcon } from '../icons/icons.ts';\nimport { cn } from '../lib/cn.ts';\nimport type { StatusTone } from '../types/tone.ts';\n\n/**\n * A transient notice. Radix owns the part that is easy to get wrong: it\n * announces through a live region, pauses its timer on hover and on window\n * blur, and restores focus when it leaves. Mount one ToastProvider and one\n * ToastViewport per page.\n */\nexport function ToastProvider(props: ComponentProps<typeof ToastPrimitive.Provider>) {\n return <ToastPrimitive.Provider {...props} />;\n}\n\nexport function ToastViewport({ className, ...props }: ComponentProps<typeof ToastPrimitive.Viewport>) {\n return (\n <ToastPrimitive.Viewport\n data-slot=\"toast-viewport\"\n className={cn('fixed right-4 bottom-4 z-50 flex w-[360px] max-w-full flex-col gap-2 outline-none', className)}\n {...props}\n />\n );\n}\n\nexport const toastVariants = cva(\n 'flex items-start gap-3 rounded-md border bg-doom-panel px-3 py-2.5 font-mono shadow-2xl data-[state=open]:animate-doom-rise',\n {\n variants: {\n tone: {\n neutral: 'border-doom-border',\n running: 'border-doom-edge-yellow',\n ok: 'border-doom-edge-green',\n error: 'border-doom-edge-red',\n info: 'border-doom-edge-blue',\n accent: 'border-doom-edge-magenta',\n } satisfies Record<StatusTone, string>,\n },\n defaultVariants: { tone: 'neutral' },\n },\n);\n\nexport interface ToastProps extends ComponentProps<typeof ToastPrimitive.Root>, VariantProps<typeof toastVariants> {}\n\nexport function Toast({ className, tone, ...props }: ToastProps) {\n return <ToastPrimitive.Root data-slot=\"toast\" className={cn(toastVariants({ tone }), className)} {...props} />;\n}\n\nexport function ToastTitle({ className, ...props }: ComponentProps<typeof ToastPrimitive.Title>) {\n return (\n <ToastPrimitive.Title\n data-slot=\"toast-title\"\n className={cn('text-[11px] font-bold text-doom-hi', className)}\n {...props}\n />\n );\n}\n\nexport function ToastDescription({ className, ...props }: ComponentProps<typeof ToastPrimitive.Description>) {\n return (\n <ToastPrimitive.Description\n data-slot=\"toast-description\"\n className={cn('text-[11px] leading-relaxed text-doom-dim', className)}\n {...props}\n />\n );\n}\n\nexport function ToastAction(props: ComponentProps<typeof ToastPrimitive.Action>) {\n return <ToastPrimitive.Action data-slot=\"toast-action\" {...props} />;\n}\n\nexport function ToastClose({ className, ...props }: ComponentProps<typeof ToastPrimitive.Close>) {\n return (\n <ToastPrimitive.Close\n data-slot=\"toast-close\"\n aria-label=\"dismiss\"\n className={cn('shrink-0 cursor-pointer text-doom-faint transition-colors hover:text-doom-hi', className)}\n {...props}\n >\n <CloseIcon className=\"h-3 w-3\" />\n </ToastPrimitive.Close>\n );\n}\n"],"mappings":"wLAaA,SAAgB,EAAc,EAAuD,CACnF,OAAO,EAAA,EAAA,IAAA,CAACA,EAAAA,MAAe,SAAhB,CAAyB,GAAI,CAAQ,CAAA,CAC9C,CAEA,SAAgB,EAAc,CAAE,YAAW,GAAG,GAAyD,CACrG,OACE,EAAA,EAAA,IAAA,CAACA,EAAAA,MAAe,SAAhB,CACE,YAAU,iBACV,UAAWC,EAAAA,GAAG,oFAAqF,CAAS,EAC5G,GAAI,CACL,CAAA,CAEL,CAEA,MAAa,GAAA,EAAgBC,EAAAA,IAAAA,CAC3B,8HACA,CACE,SAAU,CACR,KAAM,CACJ,QAAS,qBACT,QAAS,0BACT,GAAI,yBACJ,MAAO,uBACP,KAAM,wBACN,OAAQ,0BACV,CACF,EACA,gBAAiB,CAAE,KAAM,SAAU,CACrC,CACF,EAIA,SAAgB,EAAM,CAAE,YAAW,OAAM,GAAG,GAAqB,CAC/D,OAAO,EAAA,EAAA,IAAA,CAACF,EAAAA,MAAe,KAAhB,CAAqB,YAAU,QAAQ,UAAWC,EAAAA,GAAG,EAAc,CAAE,MAAK,CAAC,EAAG,CAAS,EAAG,GAAI,CAAQ,CAAA,CAC/G,CAEA,SAAgB,EAAW,CAAE,YAAW,GAAG,GAAsD,CAC/F,OACE,EAAA,EAAA,IAAA,CAACD,EAAAA,MAAe,MAAhB,CACE,YAAU,cACV,UAAWC,EAAAA,GAAG,qCAAsC,CAAS,EAC7D,GAAI,CACL,CAAA,CAEL,CAEA,SAAgB,EAAiB,CAAE,YAAW,GAAG,GAA4D,CAC3G,OACE,EAAA,EAAA,IAAA,CAACD,EAAAA,MAAe,YAAhB,CACE,YAAU,oBACV,UAAWC,EAAAA,GAAG,4CAA6C,CAAS,EACpE,GAAI,CACL,CAAA,CAEL,CAEA,SAAgB,EAAY,EAAqD,CAC/E,OAAO,EAAA,EAAA,IAAA,CAACD,EAAAA,MAAe,OAAhB,CAAuB,YAAU,eAAe,GAAI,CAAQ,CAAA,CACrE,CAEA,SAAgB,EAAW,CAAE,YAAW,GAAG,GAAsD,CAC/F,OACE,EAAA,EAAA,IAAA,CAACA,EAAAA,MAAe,MAAhB,CACE,YAAU,cACV,aAAW,UACX,UAAWC,EAAAA,GAAG,+EAAgF,CAAS,EACvG,GAAI,EAEJ,UAAA,EAAA,EAAA,IAAA,CAACE,EAAAA,EAAD,CAAW,UAAU,SAAW,CAAA,CACZ,CAAA,CAE1B"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Toast } from "radix-ui";
|
|
2
|
+
import { VariantProps } from "class-variance-authority";
|
|
3
|
+
import { ComponentProps } from "react";
|
|
4
|
+
//#region src/components/Toast.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* A transient notice. Radix owns the part that is easy to get wrong: it
|
|
7
|
+
* announces through a live region, pauses its timer on hover and on window
|
|
8
|
+
* blur, and restores focus when it leaves. Mount one ToastProvider and one
|
|
9
|
+
* ToastViewport per page.
|
|
10
|
+
*/
|
|
11
|
+
declare function ToastProvider(props: ComponentProps<typeof Toast.Provider>): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
declare function ToastViewport({ className, ...props }: ComponentProps<typeof Toast.Viewport>): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
declare const toastVariants: (props?: ({
|
|
14
|
+
tone?: "accent" | "error" | "info" | "neutral" | "ok" | "running" | null | undefined;
|
|
15
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
16
|
+
interface ToastProps extends ComponentProps<typeof Toast.Root>, VariantProps<typeof toastVariants> {}
|
|
17
|
+
declare function Toast$1({ className, tone, ...props }: ToastProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
declare function ToastTitle({ className, ...props }: ComponentProps<typeof Toast.Title>): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
declare function ToastDescription({ className, ...props }: ComponentProps<typeof Toast.Description>): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
declare function ToastAction(props: ComponentProps<typeof Toast.Action>): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
declare function ToastClose({ className, ...props }: ComponentProps<typeof Toast.Close>): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
//#endregion
|
|
23
|
+
export { Toast$1 as Toast, ToastAction, ToastClose, ToastDescription, ToastProps, ToastProvider, ToastTitle, ToastViewport, toastVariants };
|
|
24
|
+
//# sourceMappingURL=Toast.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toast.d.mts","names":[],"sources":["../../../src/components/Toast.tsx"],"mappings":";;;;;;;;;;iBAagB,cAAc,OAAO,sBAAsB,MAAe,wCAAS,IAAA;iBAInE,gBAAgB,cAAc,SAAS,sBAAsB,MAAe,wCAAS,IAAA;cAUxF,gBAAa;;6CAezB;UAEgB,mBAAmB,sBAAsB,MAAe,OAAO,oBAAoB;iBAEpF,UAAQ,WAAW,SAAS,SAAS,yCAAU,IAAA;iBAI/C,aAAa,cAAc,SAAS,sBAAsB,MAAe,qCAAM,IAAA;iBAU/E,mBAAmB,cAAc,SAAS,sBAAsB,MAAe,2CAAY,IAAA;iBAU3F,YAAY,OAAO,sBAAsB,MAAe,sCAAO,IAAA;iBAI/D,aAAa,cAAc,SAAS,sBAAsB,MAAe,qCAAM,IAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{CloseIcon as e}from"../icons/icons.mjs";import{cn as t}from"../lib/cn.mjs";import{Toast as n}from"radix-ui";import{jsx as r}from"react/jsx-runtime";import{cva as i}from"class-variance-authority";function a(e){return r(n.Provider,{...e})}function o({className:e,...i}){return r(n.Viewport,{"data-slot":`toast-viewport`,className:t(`fixed right-4 bottom-4 z-50 flex w-[360px] max-w-full flex-col gap-2 outline-none`,e),...i})}const s=i(`flex items-start gap-3 rounded-md border bg-doom-panel px-3 py-2.5 font-mono shadow-2xl data-[state=open]:animate-doom-rise`,{variants:{tone:{neutral:`border-doom-border`,running:`border-doom-edge-yellow`,ok:`border-doom-edge-green`,error:`border-doom-edge-red`,info:`border-doom-edge-blue`,accent:`border-doom-edge-magenta`}},defaultVariants:{tone:`neutral`}});function c({className:e,tone:i,...a}){return r(n.Root,{"data-slot":`toast`,className:t(s({tone:i}),e),...a})}function l({className:e,...i}){return r(n.Title,{"data-slot":`toast-title`,className:t(`text-[11px] font-bold text-doom-hi`,e),...i})}function u({className:e,...i}){return r(n.Description,{"data-slot":`toast-description`,className:t(`text-[11px] leading-relaxed text-doom-dim`,e),...i})}function d(e){return r(n.Action,{"data-slot":`toast-action`,...e})}function f({className:i,...a}){return r(n.Close,{"data-slot":`toast-close`,"aria-label":`dismiss`,className:t(`shrink-0 cursor-pointer text-doom-faint transition-colors hover:text-doom-hi`,i),...a,children:r(e,{className:`h-3 w-3`})})}export{c as Toast,d as ToastAction,f as ToastClose,u as ToastDescription,a as ToastProvider,l as ToastTitle,o as ToastViewport,s as toastVariants};
|
|
2
|
+
//# sourceMappingURL=Toast.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toast.mjs","names":["ToastPrimitive","Toast"],"sources":["../../../src/components/Toast.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport { Toast as ToastPrimitive } from 'radix-ui';\nimport type { ComponentProps } from 'react';\nimport { CloseIcon } from '../icons/icons.ts';\nimport { cn } from '../lib/cn.ts';\nimport type { StatusTone } from '../types/tone.ts';\n\n/**\n * A transient notice. Radix owns the part that is easy to get wrong: it\n * announces through a live region, pauses its timer on hover and on window\n * blur, and restores focus when it leaves. Mount one ToastProvider and one\n * ToastViewport per page.\n */\nexport function ToastProvider(props: ComponentProps<typeof ToastPrimitive.Provider>) {\n return <ToastPrimitive.Provider {...props} />;\n}\n\nexport function ToastViewport({ className, ...props }: ComponentProps<typeof ToastPrimitive.Viewport>) {\n return (\n <ToastPrimitive.Viewport\n data-slot=\"toast-viewport\"\n className={cn('fixed right-4 bottom-4 z-50 flex w-[360px] max-w-full flex-col gap-2 outline-none', className)}\n {...props}\n />\n );\n}\n\nexport const toastVariants = cva(\n 'flex items-start gap-3 rounded-md border bg-doom-panel px-3 py-2.5 font-mono shadow-2xl data-[state=open]:animate-doom-rise',\n {\n variants: {\n tone: {\n neutral: 'border-doom-border',\n running: 'border-doom-edge-yellow',\n ok: 'border-doom-edge-green',\n error: 'border-doom-edge-red',\n info: 'border-doom-edge-blue',\n accent: 'border-doom-edge-magenta',\n } satisfies Record<StatusTone, string>,\n },\n defaultVariants: { tone: 'neutral' },\n },\n);\n\nexport interface ToastProps extends ComponentProps<typeof ToastPrimitive.Root>, VariantProps<typeof toastVariants> {}\n\nexport function Toast({ className, tone, ...props }: ToastProps) {\n return <ToastPrimitive.Root data-slot=\"toast\" className={cn(toastVariants({ tone }), className)} {...props} />;\n}\n\nexport function ToastTitle({ className, ...props }: ComponentProps<typeof ToastPrimitive.Title>) {\n return (\n <ToastPrimitive.Title\n data-slot=\"toast-title\"\n className={cn('text-[11px] font-bold text-doom-hi', className)}\n {...props}\n />\n );\n}\n\nexport function ToastDescription({ className, ...props }: ComponentProps<typeof ToastPrimitive.Description>) {\n return (\n <ToastPrimitive.Description\n data-slot=\"toast-description\"\n className={cn('text-[11px] leading-relaxed text-doom-dim', className)}\n {...props}\n />\n );\n}\n\nexport function ToastAction(props: ComponentProps<typeof ToastPrimitive.Action>) {\n return <ToastPrimitive.Action data-slot=\"toast-action\" {...props} />;\n}\n\nexport function ToastClose({ className, ...props }: ComponentProps<typeof ToastPrimitive.Close>) {\n return (\n <ToastPrimitive.Close\n data-slot=\"toast-close\"\n aria-label=\"dismiss\"\n className={cn('shrink-0 cursor-pointer text-doom-faint transition-colors hover:text-doom-hi', className)}\n {...props}\n >\n <CloseIcon className=\"h-3 w-3\" />\n </ToastPrimitive.Close>\n );\n}\n"],"mappings":"0MAaA,SAAgB,EAAc,EAAuD,CACnF,OAAO,EAACA,EAAe,SAAhB,CAAyB,GAAI,CAAQ,CAAA,CAC9C,CAEA,SAAgB,EAAc,CAAE,YAAW,GAAG,GAAyD,CACrG,OACE,EAACA,EAAe,SAAhB,CACE,YAAU,iBACV,UAAW,EAAG,oFAAqF,CAAS,EAC5G,GAAI,CACL,CAAA,CAEL,CAEA,MAAa,EAAgB,EAC3B,8HACA,CACE,SAAU,CACR,KAAM,CACJ,QAAS,qBACT,QAAS,0BACT,GAAI,yBACJ,MAAO,uBACP,KAAM,wBACN,OAAQ,0BACV,CACF,EACA,gBAAiB,CAAE,KAAM,SAAU,CACrC,CACF,EAIA,SAAgBC,EAAM,CAAE,YAAW,OAAM,GAAG,GAAqB,CAC/D,OAAO,EAACD,EAAe,KAAhB,CAAqB,YAAU,QAAQ,UAAW,EAAG,EAAc,CAAE,MAAK,CAAC,EAAG,CAAS,EAAG,GAAI,CAAQ,CAAA,CAC/G,CAEA,SAAgB,EAAW,CAAE,YAAW,GAAG,GAAsD,CAC/F,OACE,EAACA,EAAe,MAAhB,CACE,YAAU,cACV,UAAW,EAAG,qCAAsC,CAAS,EAC7D,GAAI,CACL,CAAA,CAEL,CAEA,SAAgB,EAAiB,CAAE,YAAW,GAAG,GAA4D,CAC3G,OACE,EAACA,EAAe,YAAhB,CACE,YAAU,oBACV,UAAW,EAAG,4CAA6C,CAAS,EACpE,GAAI,CACL,CAAA,CAEL,CAEA,SAAgB,EAAY,EAAqD,CAC/E,OAAO,EAACA,EAAe,OAAhB,CAAuB,YAAU,eAAe,GAAI,CAAQ,CAAA,CACrE,CAEA,SAAgB,EAAW,CAAE,YAAW,GAAG,GAAsD,CAC/F,OACE,EAACA,EAAe,MAAhB,CACE,YAAU,cACV,aAAW,UACX,UAAW,EAAG,+EAAgF,CAAS,EACvG,GAAI,EAEJ,SAAA,EAAC,EAAD,CAAW,UAAU,SAAW,CAAA,CACZ,CAAA,CAE1B"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("../lib/cn.cjs");let t=require("radix-ui"),n=require("react/jsx-runtime");function r({delayDuration:e=300,...r}){return(0,n.jsx)(t.Tooltip.Provider,{"data-slot":`tooltip-provider`,delayDuration:e,...r})}function i(e){return(0,n.jsx)(t.Tooltip.Root,{"data-slot":`tooltip`,...e})}function a(e){return(0,n.jsx)(t.Tooltip.Trigger,{"data-slot":`tooltip-trigger`,...e})}function o({className:r,sideOffset:i=4,children:a,...o}){return(0,n.jsx)(t.Tooltip.Portal,{children:(0,n.jsx)(t.Tooltip.Content,{"data-slot":`tooltip-content`,sideOffset:i,className:e.cn(`z-50 rounded border border-doom-border bg-doom-deep px-2 py-1 font-mono text-[10px] text-doom-text shadow-lg data-[state=delayed-open]:animate-doom-fade`,r),...o,children:a})})}exports.Tooltip=i,exports.TooltipContent=o,exports.TooltipProvider=r,exports.TooltipTrigger=a;
|
|
2
|
+
//# sourceMappingURL=Tooltip.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tooltip.cjs","names":["TooltipPrimitive","cn"],"sources":["../../../src/components/Tooltip.tsx"],"sourcesContent":["import { Tooltip as TooltipPrimitive } from 'radix-ui';\nimport type { ComponentProps } from 'react';\nimport { cn } from '../lib/cn.ts';\n\n/** Mount once near the root; every Tooltip below shares its delay. */\nexport function TooltipProvider({ delayDuration = 300, ...props }: ComponentProps<typeof TooltipPrimitive.Provider>) {\n return <TooltipPrimitive.Provider data-slot=\"tooltip-provider\" delayDuration={delayDuration} {...props} />;\n}\n\nexport function Tooltip(props: ComponentProps<typeof TooltipPrimitive.Root>) {\n return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />;\n}\n\nexport function TooltipTrigger(props: ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nexport function TooltipContent({\n className,\n sideOffset = 4,\n children,\n ...props\n}: ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n 'z-50 rounded border border-doom-border bg-doom-deep px-2 py-1 font-mono text-[10px] text-doom-text shadow-lg data-[state=delayed-open]:animate-doom-fade',\n className,\n )}\n {...props}\n >\n {children}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n}\n"],"mappings":"0FAKA,SAAgB,EAAgB,CAAE,gBAAgB,IAAK,GAAG,GAA2D,CACnH,OAAO,EAAA,EAAA,IAAA,CAACA,EAAAA,QAAiB,SAAlB,CAA2B,YAAU,mBAAkC,gBAAe,GAAI,CAAQ,CAAA,CAC3G,CAEA,SAAgB,EAAQ,EAAqD,CAC3E,OAAO,EAAA,EAAA,IAAA,CAACA,EAAAA,QAAiB,KAAlB,CAAuB,YAAU,UAAU,GAAI,CAAQ,CAAA,CAChE,CAEA,SAAgB,EAAe,EAAwD,CACrF,OAAO,EAAA,EAAA,IAAA,CAACA,EAAAA,QAAiB,QAAlB,CAA0B,YAAU,kBAAkB,GAAI,CAAQ,CAAA,CAC3E,CAEA,SAAgB,EAAe,CAC7B,YACA,aAAa,EACb,WACA,GAAG,GAC+C,CAClD,OACE,EAAA,EAAA,IAAA,CAACA,EAAAA,QAAiB,OAAlB,CAAA,UACE,EAAA,EAAA,IAAA,CAACA,EAAAA,QAAiB,QAAlB,CACE,YAAU,kBACE,aACZ,UAAWC,EAAAA,GACT,2JACA,CACF,EACA,GAAI,EAEH,UACuB,CAAA,CACH,CAAA,CAE7B"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Tooltip } from "radix-ui";
|
|
2
|
+
import { ComponentProps } from "react";
|
|
3
|
+
//#region src/components/Tooltip.d.ts
|
|
4
|
+
/** Mount once near the root; every Tooltip below shares its delay. */
|
|
5
|
+
declare function TooltipProvider({ delayDuration, ...props }: ComponentProps<typeof Tooltip.Provider>): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
declare function Tooltip$1(props: ComponentProps<typeof Tooltip.Root>): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
declare function TooltipTrigger(props: ComponentProps<typeof Tooltip.Trigger>): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
declare function TooltipContent({ className, sideOffset, children, ...props }: ComponentProps<typeof Tooltip.Content>): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { Tooltip$1 as Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
|
|
11
|
+
//# sourceMappingURL=Tooltip.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tooltip.d.mts","names":[],"sources":["../../../src/components/Tooltip.tsx"],"mappings":";;;;iBAKgB,kBAAkB,kBAAwB,SAAS,sBAAsB,QAAiB,wCAAS,IAAA;iBAInG,UAAQ,OAAO,sBAAsB,QAAiB,oCAAK,IAAA;iBAI3D,eAAe,OAAO,sBAAsB,QAAiB,uCAAQ,IAAA;iBAIrE,iBACd,WACA,YACA,aACG,SACF,sBAAsB,QAAiB,uCAAQ,IAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{cn as e}from"../lib/cn.mjs";import{Tooltip as t}from"radix-ui";import{jsx as n}from"react/jsx-runtime";function r({delayDuration:e=300,...r}){return n(t.Provider,{"data-slot":`tooltip-provider`,delayDuration:e,...r})}function i(e){return n(t.Root,{"data-slot":`tooltip`,...e})}function a(e){return n(t.Trigger,{"data-slot":`tooltip-trigger`,...e})}function o({className:r,sideOffset:i=4,children:a,...o}){return n(t.Portal,{children:n(t.Content,{"data-slot":`tooltip-content`,sideOffset:i,className:e(`z-50 rounded border border-doom-border bg-doom-deep px-2 py-1 font-mono text-[10px] text-doom-text shadow-lg data-[state=delayed-open]:animate-doom-fade`,r),...o,children:a})})}export{i as Tooltip,o as TooltipContent,r as TooltipProvider,a as TooltipTrigger};
|
|
2
|
+
//# sourceMappingURL=Tooltip.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tooltip.mjs","names":["TooltipPrimitive","Tooltip"],"sources":["../../../src/components/Tooltip.tsx"],"sourcesContent":["import { Tooltip as TooltipPrimitive } from 'radix-ui';\nimport type { ComponentProps } from 'react';\nimport { cn } from '../lib/cn.ts';\n\n/** Mount once near the root; every Tooltip below shares its delay. */\nexport function TooltipProvider({ delayDuration = 300, ...props }: ComponentProps<typeof TooltipPrimitive.Provider>) {\n return <TooltipPrimitive.Provider data-slot=\"tooltip-provider\" delayDuration={delayDuration} {...props} />;\n}\n\nexport function Tooltip(props: ComponentProps<typeof TooltipPrimitive.Root>) {\n return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />;\n}\n\nexport function TooltipTrigger(props: ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nexport function TooltipContent({\n className,\n sideOffset = 4,\n children,\n ...props\n}: ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n 'z-50 rounded border border-doom-border bg-doom-deep px-2 py-1 font-mono text-[10px] text-doom-text shadow-lg data-[state=delayed-open]:animate-doom-fade',\n className,\n )}\n {...props}\n >\n {children}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n}\n"],"mappings":"8GAKA,SAAgB,EAAgB,CAAE,gBAAgB,IAAK,GAAG,GAA2D,CACnH,OAAO,EAACA,EAAiB,SAAlB,CAA2B,YAAU,mBAAkC,gBAAe,GAAI,CAAQ,CAAA,CAC3G,CAEA,SAAgBC,EAAQ,EAAqD,CAC3E,OAAO,EAACD,EAAiB,KAAlB,CAAuB,YAAU,UAAU,GAAI,CAAQ,CAAA,CAChE,CAEA,SAAgB,EAAe,EAAwD,CACrF,OAAO,EAACA,EAAiB,QAAlB,CAA0B,YAAU,kBAAkB,GAAI,CAAQ,CAAA,CAC3E,CAEA,SAAgB,EAAe,CAC7B,YACA,aAAa,EACb,WACA,GAAG,GAC+C,CAClD,OACE,EAACA,EAAiB,OAAlB,CAAA,SACE,EAACA,EAAiB,QAAlB,CACE,YAAU,kBACE,aACZ,UAAW,EACT,2JACA,CACF,EACA,GAAI,EAEH,UACuB,CAAA,CACH,CAAA,CAE7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
let e=require("lucide-react");Object.defineProperty(exports,"ActivityIcon",{enumerable:!0,get:function(){return e.Activity}}),Object.defineProperty(exports,"AlertIcon",{enumerable:!0,get:function(){return e.CircleAlert}}),Object.defineProperty(exports,"BranchIcon",{enumerable:!0,get:function(){return e.GitBranch}}),Object.defineProperty(exports,"CheckIcon",{enumerable:!0,get:function(){return e.Check}}),Object.defineProperty(exports,"ChevronDownIcon",{enumerable:!0,get:function(){return e.ChevronDown}}),Object.defineProperty(exports,"ChevronRightIcon",{enumerable:!0,get:function(){return e.ChevronRight}}),Object.defineProperty(exports,"ChevronUpIcon",{enumerable:!0,get:function(){return e.ChevronUp}}),Object.defineProperty(exports,"CloseIcon",{enumerable:!0,get:function(){return e.X}}),Object.defineProperty(exports,"EnterIcon",{enumerable:!0,get:function(){return e.CornerDownLeft}}),Object.defineProperty(exports,"ExternalLinkIcon",{enumerable:!0,get:function(){return e.ExternalLink}}),Object.defineProperty(exports,"FileIcon",{enumerable:!0,get:function(){return e.FileText}}),Object.defineProperty(exports,"GearIcon",{enumerable:!0,get:function(){return e.Settings}}),Object.defineProperty(exports,"KebabIcon",{enumerable:!0,get:function(){return e.MoreVertical}}),Object.defineProperty(exports,"LoaderIcon",{enumerable:!0,get:function(){return e.Loader2}}),Object.defineProperty(exports,"PaletteIcon",{enumerable:!0,get:function(){return e.Palette}}),Object.defineProperty(exports,"PlusIcon",{enumerable:!0,get:function(){return e.Plus}}),Object.defineProperty(exports,"RefreshIcon",{enumerable:!0,get:function(){return e.RefreshCw}}),Object.defineProperty(exports,"SearchIcon",{enumerable:!0,get:function(){return e.Search}}),Object.defineProperty(exports,"ShieldIcon",{enumerable:!0,get:function(){return e.ShieldCheck}}),Object.defineProperty(exports,"StopIcon",{enumerable:!0,get:function(){return e.Square}});
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { Activity as ActivityIcon, Check as CheckIcon, ChevronDown as ChevronDownIcon, ChevronRight as ChevronRightIcon, ChevronUp as ChevronUpIcon, CircleAlert as AlertIcon, CornerDownLeft as EnterIcon, ExternalLink as ExternalLinkIcon, FileText as FileIcon, GitBranch as BranchIcon, Loader2 as LoaderIcon, MoreVertical as KebabIcon, Palette as PaletteIcon, Plus as PlusIcon, RefreshCw as RefreshIcon, Search as SearchIcon, Settings as GearIcon, ShieldCheck as ShieldIcon, Square as StopIcon, X as CloseIcon } from "lucide-react";
|
|
2
|
+
export { ActivityIcon, AlertIcon, BranchIcon, CheckIcon, ChevronDownIcon, ChevronRightIcon, ChevronUpIcon, CloseIcon, EnterIcon, ExternalLinkIcon, FileIcon, GearIcon, KebabIcon, LoaderIcon, PaletteIcon, PlusIcon, RefreshIcon, SearchIcon, ShieldIcon, StopIcon };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Activity as e,Check as t,ChevronDown as n,ChevronRight as r,ChevronUp as i,CircleAlert as a,CornerDownLeft as o,ExternalLink as s,FileText as c,GitBranch as l,Loader2 as u,MoreVertical as d,Palette as f,Plus as p,RefreshCw as m,Search as h,Settings as g,ShieldCheck as _,Square as v,X as y}from"lucide-react";export{e as ActivityIcon,a as AlertIcon,l as BranchIcon,t as CheckIcon,n as ChevronDownIcon,r as ChevronRightIcon,i as ChevronUpIcon,y as CloseIcon,o as EnterIcon,s as ExternalLinkIcon,c as FileIcon,g as GearIcon,d as KebabIcon,u as LoaderIcon,f as PaletteIcon,p as PlusIcon,m as RefreshIcon,h as SearchIcon,_ as ShieldIcon,v as StopIcon};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cn.cjs","names":["twMerge"],"sources":["../../../src/lib/cn.ts"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\n/** Merges class lists the shadcn way: conditional joins, then Tailwind conflict resolution. */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n"],"mappings":"kDAIA,SAAgB,EAAG,GAAG,EAA8B,CAClD,OAAA,EAAOA,EAAAA,QAAAA,EAAAA,EAAQ,EAAA,KAAA,CAAK,CAAM,CAAC,CAC7B"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ClassValue } from "clsx";
|
|
2
|
+
//#region src/lib/cn.d.ts
|
|
3
|
+
/** Merges class lists the shadcn way: conditional joins, then Tailwind conflict resolution. */
|
|
4
|
+
declare function cn(...inputs: ClassValue[]): string;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { cn };
|
|
7
|
+
//# sourceMappingURL=cn.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cn.d.mts","names":[],"sources":["../../../src/lib/cn.ts"],"mappings":";;;iBAIgB,MAAM,QAAQ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cn.mjs","names":[],"sources":["../../../src/lib/cn.ts"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\n/** Merges class lists the shadcn way: conditional joins, then Tailwind conflict resolution. */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n"],"mappings":"qEAIA,SAAgB,EAAG,GAAG,EAA8B,CAClD,OAAO,EAAQ,EAAK,CAAM,CAAC,CAC7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collapse.cjs","names":[],"sources":["../../../src/lib/collapse.ts"],"sourcesContent":["export interface CollapsedLines<T> {\n shown: T[];\n /** How many lines the collapse holds back; 0 once expanded or when nothing was clipped. */\n hidden: number;\n}\n\n/**\n * The first `limit` lines until expanded. Head-only on purpose: a card that\n * shows the tail (a running command) keeps its own slice and reports the\n * count it hid.\n */\nexport function collapseLines<T>(lines: readonly T[], limit: number, expanded: boolean): CollapsedLines<T> {\n if (expanded || lines.length <= limit) return { shown: [...lines], hidden: 0 };\n return { shown: lines.slice(0, limit), hidden: lines.length - limit };\n}\n"],"mappings":"AAWA,SAAgB,EAAiB,EAAqB,EAAe,EAAsC,CAEzG,OADI,GAAY,EAAM,QAAU,EAAc,CAAE,MAAO,CAAC,GAAG,CAAK,EAAG,OAAQ,CAAE,EACtE,CAAE,MAAO,EAAM,MAAM,EAAG,CAAK,EAAG,OAAQ,EAAM,OAAS,CAAM,CACtE"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//#region src/lib/collapse.d.ts
|
|
2
|
+
interface CollapsedLines<T> {
|
|
3
|
+
shown: T[];
|
|
4
|
+
/** How many lines the collapse holds back; 0 once expanded or when nothing was clipped. */
|
|
5
|
+
hidden: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* The first `limit` lines until expanded. Head-only on purpose: a card that
|
|
9
|
+
* shows the tail (a running command) keeps its own slice and reports the
|
|
10
|
+
* count it hid.
|
|
11
|
+
*/
|
|
12
|
+
declare function collapseLines<T>(lines: readonly T[], limit: number, expanded: boolean): CollapsedLines<T>;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { CollapsedLines, collapseLines };
|
|
15
|
+
//# sourceMappingURL=collapse.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collapse.d.mts","names":[],"sources":["../../../src/lib/collapse.ts"],"mappings":";UAAiB,eAAe;EAC9B,OAAO;;EAEP;;;;;;;iBAQc,cAAc,GAAG,gBAAgB,KAAK,eAAe,oBAAoB,eAAe"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collapse.mjs","names":[],"sources":["../../../src/lib/collapse.ts"],"sourcesContent":["export interface CollapsedLines<T> {\n shown: T[];\n /** How many lines the collapse holds back; 0 once expanded or when nothing was clipped. */\n hidden: number;\n}\n\n/**\n * The first `limit` lines until expanded. Head-only on purpose: a card that\n * shows the tail (a running command) keeps its own slice and reports the\n * count it hid.\n */\nexport function collapseLines<T>(lines: readonly T[], limit: number, expanded: boolean): CollapsedLines<T> {\n if (expanded || lines.length <= limit) return { shown: [...lines], hidden: 0 };\n return { shown: lines.slice(0, limit), hidden: lines.length - limit };\n}\n"],"mappings":"AAWA,SAAgB,EAAiB,EAAqB,EAAe,EAAsC,CAEzG,OADI,GAAY,EAAM,QAAU,EAAc,CAAE,MAAO,CAAC,GAAG,CAAK,EAAG,OAAQ,CAAE,EACtE,CAAE,MAAO,EAAM,MAAM,EAAG,CAAK,EAAG,OAAQ,EAAM,OAAS,CAAM,CACtE"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function e(e,t){let{options:n,cursor:r,onCursorChange:i,onSelect:a}=t,o=n.length;if(o===0)return;if(e.key===`ArrowDown`||e.key===`ArrowUp`){e.preventDefault(),e.stopPropagation(),i((r+(e.key===`ArrowDown`?1:-1)+o)%o);return}if(e.key===`Enter`){let t=n[r];if(t===void 0)return;e.preventDefault(),e.stopPropagation(),a(t);return}let s=Number.parseInt(e.key,10)-1,c=Number.isInteger(s)&&s<9?n[s]:void 0;c!==void 0&&(e.preventDefault(),e.stopPropagation(),a(c))}function t(e){return e>9?`up/down move · enter select · 1-9 jump`:`1-9 select · enter confirm`}function n(e){return e<9?String(e+1):`·`}exports.MAX_DIGIT_SHORTCUT=9,exports.handleOptionListKey=e,exports.optionListHint=t,exports.optionMarker=n;
|
|
2
|
+
//# sourceMappingURL=optionList.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optionList.cjs","names":[],"sources":["../../../src/lib/optionList.ts"],"sourcesContent":["import type { KeyboardEvent } from 'react';\n\n/** Digits are a shortcut, not the only way in: only the first nine can have one. */\nexport const MAX_DIGIT_SHORTCUT = 9;\n\n/**\n * The keyboard an option list answers to, handled on whichever element the\n * surrounding overlay focuses. Every key it claims is consumed, so a digit\n * that answers the agent never also reaches the rail's session shortcuts.\n */\nexport function handleOptionListKey(\n event: KeyboardEvent,\n input: {\n options: readonly string[];\n cursor: number;\n onCursorChange: (cursor: number) => void;\n onSelect: (option: string) => void;\n },\n): void {\n const { options, cursor, onCursorChange, onSelect } = input;\n const count = options.length;\n if (count === 0) return;\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n event.stopPropagation();\n onCursorChange((cursor + (event.key === 'ArrowDown' ? 1 : -1) + count) % count);\n return;\n }\n if (event.key === 'Enter') {\n const option = options[cursor];\n if (option === undefined) return;\n event.preventDefault();\n event.stopPropagation();\n onSelect(option);\n return;\n }\n const index = Number.parseInt(event.key, 10) - 1;\n const option = Number.isInteger(index) && index < MAX_DIGIT_SHORTCUT ? options[index] : undefined;\n if (option === undefined) return;\n event.preventDefault();\n event.stopPropagation();\n onSelect(option);\n}\n\n/** What the footer should promise, given how many options there are. */\nexport function optionListHint(count: number): string {\n return count > MAX_DIGIT_SHORTCUT ? 'up/down move · enter select · 1-9 jump' : '1-9 select · enter confirm';\n}\n\n/** The digit a row answers to, or the bullet that says it has none. */\nexport function optionMarker(index: number): string {\n return index < MAX_DIGIT_SHORTCUT ? String(index + 1) : '·';\n}\n"],"mappings":"AAUA,SAAgB,EACd,EACA,EAMM,CACN,GAAM,CAAE,UAAS,SAAQ,iBAAgB,YAAa,EAChD,EAAQ,EAAQ,OACtB,GAAI,IAAU,EAAG,OAEjB,GAAI,EAAM,MAAQ,aAAe,EAAM,MAAQ,UAAW,CACxD,EAAM,eAAe,EACrB,EAAM,gBAAgB,EACtB,GAAgB,GAAU,EAAM,MAAQ,YAAc,EAAI,IAAM,GAAS,CAAK,EAC9E,MACF,CACA,GAAI,EAAM,MAAQ,QAAS,CACzB,IAAM,EAAS,EAAQ,GACvB,GAAI,IAAW,IAAA,GAAW,OAC1B,EAAM,eAAe,EACrB,EAAM,gBAAgB,EACtB,EAAS,CAAM,EACf,MACF,CACA,IAAM,EAAQ,OAAO,SAAS,EAAM,IAAK,EAAE,EAAI,EACzC,EAAS,OAAO,UAAU,CAAK,GAAK,EAAA,EAA6B,EAAQ,GAAS,IAAA,GACpF,IAAW,IAAA,KACf,EAAM,eAAe,EACrB,EAAM,gBAAgB,EACtB,EAAS,CAAM,EACjB,CAGA,SAAgB,EAAe,EAAuB,CACpD,OAAO,EAAA,EAA6B,yCAA2C,4BACjF,CAGA,SAAgB,EAAa,EAAuB,CAClD,OAAO,EAAA,EAA6B,OAAO,EAAQ,CAAC,EAAI,GAC1D"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { KeyboardEvent } from "react";
|
|
2
|
+
//#region src/lib/optionList.d.ts
|
|
3
|
+
/** Digits are a shortcut, not the only way in: only the first nine can have one. */
|
|
4
|
+
declare const MAX_DIGIT_SHORTCUT = 9;
|
|
5
|
+
/**
|
|
6
|
+
* The keyboard an option list answers to, handled on whichever element the
|
|
7
|
+
* surrounding overlay focuses. Every key it claims is consumed, so a digit
|
|
8
|
+
* that answers the agent never also reaches the rail's session shortcuts.
|
|
9
|
+
*/
|
|
10
|
+
declare function handleOptionListKey(event: KeyboardEvent, input: {
|
|
11
|
+
options: readonly string[];
|
|
12
|
+
cursor: number;
|
|
13
|
+
onCursorChange: (cursor: number) => void;
|
|
14
|
+
onSelect: (option: string) => void;
|
|
15
|
+
}): void;
|
|
16
|
+
/** What the footer should promise, given how many options there are. */
|
|
17
|
+
declare function optionListHint(count: number): string;
|
|
18
|
+
/** The digit a row answers to, or the bullet that says it has none. */
|
|
19
|
+
declare function optionMarker(index: number): string;
|
|
20
|
+
//#endregion
|
|
21
|
+
export { MAX_DIGIT_SHORTCUT, handleOptionListKey, optionListHint, optionMarker };
|
|
22
|
+
//# sourceMappingURL=optionList.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optionList.d.mts","names":[],"sources":["../../../src/lib/optionList.ts"],"mappings":";;;cAGa;;;;;;iBAOG,oBACd,OAAO,eACP;EACE;EACA;EACA,iBAAiB;EACjB,WAAW;;;iBA8BC,eAAe;;iBAKf,aAAa"}
|