@mattermost/compass-ui 0.1.0-alpha.14 → 0.1.0-alpha.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/action-button/ActionButton.cjs +1 -1
- package/dist/components/action-button/ActionButton.cjs.map +1 -1
- package/dist/components/action-button/ActionButton.css +1 -1
- package/dist/components/action-button/ActionButton.d.ts +41 -5
- package/dist/components/action-button/ActionButton.d.ts.map +1 -1
- package/dist/components/action-button/ActionButton.js +68 -35
- package/dist/components/action-button/ActionButton.js.map +1 -1
- package/dist/components/action-button/ActionButton.module.scss.cjs +1 -1
- package/dist/components/action-button/ActionButton.module.scss.js +6 -5
- package/dist/components/action-button/ActionButton.module.scss.js.map +1 -1
- package/dist/components/action-button/index.d.ts +1 -1
- package/dist/components/action-button/index.d.ts.map +1 -1
- package/dist/components/admin-console-footer/AdminConsoleFooter.cjs +2 -0
- package/dist/components/admin-console-footer/AdminConsoleFooter.cjs.map +1 -0
- package/dist/components/admin-console-footer/AdminConsoleFooter.css +1 -0
- package/dist/components/admin-console-footer/AdminConsoleFooter.d.ts +27 -0
- package/dist/components/admin-console-footer/AdminConsoleFooter.d.ts.map +1 -0
- package/dist/components/admin-console-footer/AdminConsoleFooter.js +84 -0
- package/dist/components/admin-console-footer/AdminConsoleFooter.js.map +1 -0
- package/dist/components/admin-console-footer/AdminConsoleFooter.module.scss.cjs +2 -0
- package/dist/components/admin-console-footer/AdminConsoleFooter.module.scss.cjs.map +1 -0
- package/dist/components/admin-console-footer/AdminConsoleFooter.module.scss.js +13 -0
- package/dist/components/admin-console-footer/AdminConsoleFooter.module.scss.js.map +1 -0
- package/dist/components/admin-console-footer/index.cjs +2 -0
- package/dist/components/admin-console-footer/index.cjs.map +1 -0
- package/dist/components/admin-console-footer/index.d.ts +3 -0
- package/dist/components/admin-console-footer/index.d.ts.map +1 -0
- package/dist/components/admin-console-footer/index.js +5 -0
- package/dist/components/admin-console-footer/index.js.map +1 -0
- package/dist/components/admin-panel/AdminPanel.cjs +1 -1
- package/dist/components/admin-panel/AdminPanel.cjs.map +1 -1
- package/dist/components/admin-panel/AdminPanel.d.ts +41 -9
- package/dist/components/admin-panel/AdminPanel.d.ts.map +1 -1
- package/dist/components/admin-panel/AdminPanel.js +91 -81
- package/dist/components/admin-panel/AdminPanel.js.map +1 -1
- package/dist/components/admin-panel-footer/AdminPanelFooter.cjs +1 -1
- package/dist/components/admin-panel-footer/AdminPanelFooter.cjs.map +1 -1
- package/dist/components/admin-panel-footer/AdminPanelFooter.css +1 -1
- package/dist/components/admin-panel-footer/AdminPanelFooter.d.ts +18 -21
- package/dist/components/admin-panel-footer/AdminPanelFooter.d.ts.map +1 -1
- package/dist/components/admin-panel-footer/AdminPanelFooter.js +24 -61
- package/dist/components/admin-panel-footer/AdminPanelFooter.js.map +1 -1
- package/dist/components/admin-panel-footer/AdminPanelFooter.module.scss.cjs +1 -1
- package/dist/components/admin-panel-footer/AdminPanelFooter.module.scss.js +7 -9
- package/dist/components/admin-panel-footer/AdminPanelFooter.module.scss.js.map +1 -1
- package/dist/components/admin-panel-footer/index.d.ts +1 -1
- package/dist/components/admin-panel-footer/index.d.ts.map +1 -1
- package/dist/components/admin-panel-header/AdminPanelHeader.cjs.map +1 -1
- package/dist/components/admin-panel-header/AdminPanelHeader.d.ts +3 -2
- package/dist/components/admin-panel-header/AdminPanelHeader.d.ts.map +1 -1
- package/dist/components/admin-panel-header/AdminPanelHeader.js.map +1 -1
- package/dist/components/button/Button.cjs +1 -1
- package/dist/components/button/Button.cjs.map +1 -1
- package/dist/components/button/Button.css +1 -1
- package/dist/components/button/Button.d.ts +37 -6
- package/dist/components/button/Button.d.ts.map +1 -1
- package/dist/components/button/Button.js +106 -44
- package/dist/components/button/Button.js.map +1 -1
- package/dist/components/button/Button.module.scss.cjs +1 -1
- package/dist/components/button/Button.module.scss.js +16 -15
- package/dist/components/button/Button.module.scss.js.map +1 -1
- package/dist/components/button/index.d.ts +1 -1
- package/dist/components/button/index.d.ts.map +1 -1
- package/dist/components/channel-sidebar-item/ChannelSidebarItem.css +1 -1
- package/dist/components/channel-sidebar-item/ChannelSidebarItem.module.scss.cjs +1 -1
- package/dist/components/channel-sidebar-item/ChannelSidebarItem.module.scss.js +22 -22
- package/dist/components/checkbox/Checkbox.css +1 -1
- package/dist/components/checkbox/Checkbox.module.scss.cjs +1 -1
- package/dist/components/checkbox/Checkbox.module.scss.js +10 -10
- package/dist/components/chip/Chip.css +1 -1
- package/dist/components/chip/Chip.module.scss.cjs +1 -1
- package/dist/components/chip/Chip.module.scss.js +12 -12
- package/dist/components/combobox/Combobox.cjs +1 -1
- package/dist/components/combobox/Combobox.cjs.map +1 -1
- package/dist/components/combobox/Combobox.css +1 -1
- package/dist/components/combobox/Combobox.d.ts +14 -0
- package/dist/components/combobox/Combobox.d.ts.map +1 -1
- package/dist/components/combobox/Combobox.js +240 -224
- package/dist/components/combobox/Combobox.js.map +1 -1
- package/dist/components/combobox/Combobox.module.scss.cjs +1 -1
- package/dist/components/combobox/Combobox.module.scss.js +21 -21
- package/dist/components/icon-button/IconButton.cjs +1 -1
- package/dist/components/icon-button/IconButton.cjs.map +1 -1
- package/dist/components/icon-button/IconButton.css +1 -1
- package/dist/components/icon-button/IconButton.d.ts +48 -7
- package/dist/components/icon-button/IconButton.d.ts.map +1 -1
- package/dist/components/icon-button/IconButton.js +136 -62
- package/dist/components/icon-button/IconButton.js.map +1 -1
- package/dist/components/icon-button/IconButton.module.scss.cjs +1 -1
- package/dist/components/icon-button/IconButton.module.scss.js +16 -15
- package/dist/components/icon-button/IconButton.module.scss.js.map +1 -1
- package/dist/components/icon-button/index.d.ts +1 -1
- package/dist/components/icon-button/index.d.ts.map +1 -1
- package/dist/components/menu-item/MenuItem.cjs.map +1 -1
- package/dist/components/menu-item/MenuItem.css +1 -1
- package/dist/components/menu-item/MenuItem.d.ts +20 -0
- package/dist/components/menu-item/MenuItem.d.ts.map +1 -1
- package/dist/components/menu-item/MenuItem.js.map +1 -1
- package/dist/components/menu-item/MenuItem.module.scss.cjs +1 -1
- package/dist/components/menu-item/MenuItem.module.scss.js +16 -16
- package/dist/components/menu-item/index.d.ts +1 -1
- package/dist/components/menu-item/index.d.ts.map +1 -1
- package/dist/components/radio/Radio.css +1 -1
- package/dist/components/radio/Radio.module.scss.cjs +1 -1
- package/dist/components/radio/Radio.module.scss.js +12 -12
- package/dist/components/right-sidebar-header/RightSidebarHeader.cjs +1 -1
- package/dist/components/right-sidebar-header/RightSidebarHeader.cjs.map +1 -1
- package/dist/components/right-sidebar-header/RightSidebarHeader.d.ts +5 -1
- package/dist/components/right-sidebar-header/RightSidebarHeader.d.ts.map +1 -1
- package/dist/components/right-sidebar-header/RightSidebarHeader.js +60 -48
- package/dist/components/right-sidebar-header/RightSidebarHeader.js.map +1 -1
- package/dist/components/section-notice/SectionNotice.cjs +1 -1
- package/dist/components/section-notice/SectionNotice.cjs.map +1 -1
- package/dist/components/section-notice/SectionNotice.css +1 -1
- package/dist/components/section-notice/SectionNotice.js +17 -17
- package/dist/components/section-notice/SectionNotice.js.map +1 -1
- package/dist/components/section-notice/SectionNotice.module.scss.cjs +1 -1
- package/dist/components/section-notice/SectionNotice.module.scss.js +12 -12
- package/dist/components/select/Select.cjs +1 -1
- package/dist/components/select/Select.cjs.map +1 -1
- package/dist/components/select/Select.css +1 -1
- package/dist/components/select/Select.d.ts +16 -0
- package/dist/components/select/Select.d.ts.map +1 -1
- package/dist/components/select/Select.js +177 -157
- package/dist/components/select/Select.js.map +1 -1
- package/dist/components/select/Select.module.scss.cjs +1 -1
- package/dist/components/select/Select.module.scss.js +20 -20
- package/dist/components/switch/Switch.css +1 -1
- package/dist/components/switch/Switch.module.scss.cjs +1 -1
- package/dist/components/switch/Switch.module.scss.js +9 -9
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +168 -166
- package/dist/index.js.map +1 -1
- package/dist/utils/menuItemProps.cjs +2 -0
- package/dist/utils/menuItemProps.cjs.map +1 -0
- package/dist/utils/menuItemProps.d.ts +5 -0
- package/dist/utils/menuItemProps.d.ts.map +1 -0
- package/dist/utils/menuItemProps.js +12 -0
- package/dist/utils/menuItemProps.js.map +1 -0
- package/dist/utils/slot.cjs +2 -0
- package/dist/utils/slot.cjs.map +1 -0
- package/dist/utils/slot.d.ts +46 -0
- package/dist/utils/slot.d.ts.map +1 -0
- package/dist/utils/slot.js +88 -0
- package/dist/utils/slot.js.map +1 -0
- package/package.json +5 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/admin-panel-footer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/admin-panel-footer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminPanelHeader.cjs","sources":["../../../src/components/admin-panel-header/AdminPanelHeader.tsx"],"sourcesContent":["import { type ChangeEvent, type ReactNode } from 'react';\nimport ChevronDownIcon from '@mattermost/compass-icons/components/chevron-down';\nimport ChevronUpIcon from '@mattermost/compass-icons/components/chevron-up';\nimport CogOutlineIcon from '@mattermost/compass-icons/components/cog-outline';\nimport MattermostIcon from '@mattermost/compass-icons/components/mattermost';\nimport Button from '@/components/button/Button';\nimport Icon from '@/components/icon/Icon';\nimport { IconSlotContext } from '@/components/icon/Icon';\nimport IconButton from '@/components/icon-button/IconButton';\nimport Tag from '@/components/tag/Tag';\nimport Switch from '@/components/switch/Switch';\nimport styles from './AdminPanelHeader.module.scss';\n\n/** System Console admin panel expand/collapse (`expandedState` in Figma). */\nexport type AdminPanelExpandedState = 'collapsed' | 'expanded';\n\nexport interface AdminPanelHeaderProps {\n /** Passed to the title `h2` for `aria-labelledby` on the parent panel. */\n titleId: string;\n title: ReactNode;\n subtitle?: ReactNode;\n /** Trailing accessory actions rendered after Switch / Primary button and before expand. */\n headerActions?: ReactNode;\n iconLeft?: boolean;\n /** Icon for the 44×44 circular pill. Pass `<Icon glyph={<SomeIcon />} />` — AdminPanelHeader provides the correct size via context. */\n leadingIcon?: ReactNode;\n showBeta?: boolean;\n /** Default: \"Beta\". Accepts translated nodes. */\n betaLabel?: ReactNode;\n showEnterpriseLabel?: boolean;\n /** Default: \"Enterprise\". Accepts translated nodes. */\n enterpriseLabel?: ReactNode;\n showButton?: boolean;\n /** Default: \"Button\". Accepts translated nodes. */\n buttonLabel?: ReactNode;\n onButtonClick?: () => void;\n showSwitch?: boolean;\n switchLabel?: ReactNode;\n switchChecked?: boolean;\n defaultSwitchChecked?: boolean;\n onSwitchChange?: (\n checked: boolean,\n event: ChangeEvent<HTMLInputElement>,\n ) => void;\n switchDisabled?: boolean;\n expandable?: boolean;\n isExpanded?: boolean;\n onToggleExpand?: () => void;\n /** Accessible name for the expand button while collapsed. Default: \"Expand section\". */\n expandLabel?: string;\n /** Accessible name for the expand button while expanded. Default: \"Collapse section\". */\n collapseLabel?: string;\n /** Bottom border under the header row (hidden when expandable and collapsed). */\n showDivider?: boolean;\n className?: string;\n}\n\n/**\n * Admin Panel Header is the titled rail for a System Console settings section: optional\n * leading icon, title with optional tags, subtitle, and trailing controls. It is composed\n * inside the [`Admin Panel`](/patterns/admin-panel) pattern
|
|
1
|
+
{"version":3,"file":"AdminPanelHeader.cjs","sources":["../../../src/components/admin-panel-header/AdminPanelHeader.tsx"],"sourcesContent":["import { type ChangeEvent, type ReactNode } from 'react';\nimport ChevronDownIcon from '@mattermost/compass-icons/components/chevron-down';\nimport ChevronUpIcon from '@mattermost/compass-icons/components/chevron-up';\nimport CogOutlineIcon from '@mattermost/compass-icons/components/cog-outline';\nimport MattermostIcon from '@mattermost/compass-icons/components/mattermost';\nimport Button from '@/components/button/Button';\nimport Icon from '@/components/icon/Icon';\nimport { IconSlotContext } from '@/components/icon/Icon';\nimport IconButton from '@/components/icon-button/IconButton';\nimport Tag from '@/components/tag/Tag';\nimport Switch from '@/components/switch/Switch';\nimport styles from './AdminPanelHeader.module.scss';\n\n/** System Console admin panel expand/collapse (`expandedState` in Figma). */\nexport type AdminPanelExpandedState = 'collapsed' | 'expanded';\n\nexport interface AdminPanelHeaderProps {\n /** Passed to the title `h2` for `aria-labelledby` on the parent panel. */\n titleId: string;\n title: ReactNode;\n subtitle?: ReactNode;\n /** Trailing accessory actions rendered after Switch / Primary button and before expand. */\n headerActions?: ReactNode;\n iconLeft?: boolean;\n /** Icon for the 44×44 circular pill. Pass `<Icon glyph={<SomeIcon />} />` — AdminPanelHeader provides the correct size via context. */\n leadingIcon?: ReactNode;\n showBeta?: boolean;\n /** Default: \"Beta\". Accepts translated nodes. */\n betaLabel?: ReactNode;\n showEnterpriseLabel?: boolean;\n /** Default: \"Enterprise\". Accepts translated nodes. */\n enterpriseLabel?: ReactNode;\n showButton?: boolean;\n /** Default: \"Button\". Accepts translated nodes. */\n buttonLabel?: ReactNode;\n onButtonClick?: () => void;\n showSwitch?: boolean;\n switchLabel?: ReactNode;\n switchChecked?: boolean;\n defaultSwitchChecked?: boolean;\n onSwitchChange?: (\n checked: boolean,\n event: ChangeEvent<HTMLInputElement>,\n ) => void;\n switchDisabled?: boolean;\n expandable?: boolean;\n isExpanded?: boolean;\n onToggleExpand?: () => void;\n /** Accessible name for the expand button while collapsed. Default: \"Expand section\". */\n expandLabel?: string;\n /** Accessible name for the expand button while expanded. Default: \"Collapse section\". */\n collapseLabel?: string;\n /** Bottom border under the header row (hidden when expandable and collapsed). */\n showDivider?: boolean;\n className?: string;\n}\n\n/**\n * Admin Panel Header is the titled rail for a System Console settings section: optional\n * leading icon, title with optional tags, subtitle, and trailing controls. It is composed\n * inside the [`Admin Panel`](/patterns/admin-panel) pattern whenever that panel has a\n * `title` (Admin Panel may omit the header when it has a body only). Document the header on\n * its own when adjusting anatomy or behaviour.\n */\nexport default function AdminPanelHeader({\n titleId,\n title,\n subtitle,\n headerActions,\n iconLeft = false,\n leadingIcon,\n showBeta = false,\n betaLabel = 'Beta',\n showEnterpriseLabel = false,\n enterpriseLabel = 'Enterprise',\n showButton = false,\n buttonLabel = 'Button',\n onButtonClick,\n showSwitch = false,\n switchLabel = 'Off',\n switchChecked,\n defaultSwitchChecked,\n onSwitchChange,\n switchDisabled,\n expandable = false,\n isExpanded = false,\n onToggleExpand,\n expandLabel = 'Expand section',\n collapseLabel = 'Collapse section',\n showDivider = true,\n className = '',\n}: AdminPanelHeaderProps) {\n const hasActions =\n showSwitch || showButton || headerActions != null || expandable;\n\n const defaultLeading = <Icon size=\"20\" glyph={<CogOutlineIcon />} />;\n\n return (\n <header\n className={[\n styles['admin-panel-header'],\n showDivider ? styles['admin-panel-header--divided'] : '',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n .trim()}\n >\n <div className={styles['admin-panel-header__main']}>\n <div className={styles['admin-panel-header__start']}>\n {iconLeft ? (\n <div className={styles['admin-panel-header__leading']} aria-hidden>\n <IconSlotContext.Provider value={{ size: '20' }}>\n {leadingIcon ?? defaultLeading}\n </IconSlotContext.Provider>\n </div>\n ) : null}\n <div className={styles['admin-panel-header__title-stack']}>\n <div className={styles['admin-panel-header__title-row']}>\n <h2 id={titleId} className={styles['admin-panel-header__title']}>\n {title}\n </h2>\n {showEnterpriseLabel ? (\n <Tag\n label={enterpriseLabel}\n size=\"x-small\"\n type=\"default\"\n leadingIcon={<Icon size=\"10\" glyph={<MattermostIcon />} />}\n />\n ) : null}\n {showBeta ? (\n <Tag label={betaLabel} size=\"x-small\" type=\"default\" />\n ) : null}\n </div>\n {subtitle != null ? (\n <p className={styles['admin-panel-header__subtitle']}>\n {subtitle}\n </p>\n ) : null}\n </div>\n </div>\n {hasActions ? (\n <div className={styles['admin-panel-header__actions']}>\n {showSwitch ? (\n <Switch\n size=\"medium\"\n checked={switchChecked}\n defaultChecked={defaultSwitchChecked}\n disabled={switchDisabled}\n onChange={(e) => {\n onSwitchChange?.(e.target.checked, e);\n }}\n >\n {switchLabel}\n </Switch>\n ) : null}\n {showButton ? (\n <Button\n type=\"button\"\n size=\"medium\"\n emphasis=\"primary\"\n onClick={onButtonClick}\n >\n {buttonLabel}\n </Button>\n ) : null}\n {headerActions}\n {expandable ? (\n <IconButton\n type=\"button\"\n style=\"default\"\n size=\"medium\"\n aria-label={isExpanded ? collapseLabel : expandLabel}\n aria-expanded={isExpanded}\n onClick={onToggleExpand}\n icon={\n <Icon\n size=\"20\"\n glyph={isExpanded ? <ChevronUpIcon /> : <ChevronDownIcon />}\n />\n }\n />\n ) : null}\n </div>\n ) : null}\n </div>\n </header>\n );\n}\n"],"names":["AdminPanelHeader","titleId","title","subtitle","headerActions","iconLeft","leadingIcon","showBeta","betaLabel","showEnterpriseLabel","enterpriseLabel","showButton","buttonLabel","onButtonClick","showSwitch","switchLabel","switchChecked","defaultSwitchChecked","onSwitchChange","switchDisabled","expandable","isExpanded","onToggleExpand","expandLabel","collapseLabel","showDivider","className","hasActions","defaultLeading","Icon","jsx","CogOutlineIcon","styles","jsxs","IconSlotContext","Tag","MattermostIcon","Switch","e","Button","IconButton","ChevronUpIcon","ChevronDownIcon"],"mappings":"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"}
|
|
@@ -41,8 +41,9 @@ export interface AdminPanelHeaderProps {
|
|
|
41
41
|
/**
|
|
42
42
|
* Admin Panel Header is the titled rail for a System Console settings section: optional
|
|
43
43
|
* leading icon, title with optional tags, subtitle, and trailing controls. It is composed
|
|
44
|
-
* inside the [`Admin Panel`](/patterns/admin-panel) pattern
|
|
45
|
-
*
|
|
44
|
+
* inside the [`Admin Panel`](/patterns/admin-panel) pattern whenever that panel has a
|
|
45
|
+
* `title` (Admin Panel may omit the header when it has a body only). Document the header on
|
|
46
|
+
* its own when adjusting anatomy or behaviour.
|
|
46
47
|
*/
|
|
47
48
|
export default function AdminPanelHeader({ titleId, title, subtitle, headerActions, iconLeft, leadingIcon, showBeta, betaLabel, showEnterpriseLabel, enterpriseLabel, showButton, buttonLabel, onButtonClick, showSwitch, switchLabel, switchChecked, defaultSwitchChecked, onSwitchChange, switchDisabled, expandable, isExpanded, onToggleExpand, expandLabel, collapseLabel, showDivider, className, }: AdminPanelHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
48
49
|
//# sourceMappingURL=AdminPanelHeader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminPanelHeader.d.ts","sourceRoot":"","sources":["../../../src/components/admin-panel-header/AdminPanelHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAazD,6EAA6E;AAC7E,MAAM,MAAM,uBAAuB,GAAG,WAAW,GAAG,UAAU,CAAC;AAE/D,MAAM,WAAW,qBAAqB;IACpC,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,2FAA2F;IAC3F,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uIAAuI;IACvI,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iDAAiD;IACjD,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,uDAAuD;IACvD,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mDAAmD;IACnD,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,cAAc,CAAC,EAAE,CACf,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,KACjC,IAAI,CAAC;IACV,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,wFAAwF;IACxF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yFAAyF;IACzF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iFAAiF;IACjF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED
|
|
1
|
+
{"version":3,"file":"AdminPanelHeader.d.ts","sourceRoot":"","sources":["../../../src/components/admin-panel-header/AdminPanelHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAazD,6EAA6E;AAC7E,MAAM,MAAM,uBAAuB,GAAG,WAAW,GAAG,UAAU,CAAC;AAE/D,MAAM,WAAW,qBAAqB;IACpC,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,2FAA2F;IAC3F,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uIAAuI;IACvI,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iDAAiD;IACjD,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,uDAAuD;IACvD,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mDAAmD;IACnD,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,cAAc,CAAC,EAAE,CACf,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,KACjC,IAAI,CAAC;IACV,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,wFAAwF;IACxF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yFAAyF;IACzF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iFAAiF;IACjF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,OAAO,EACP,KAAK,EACL,QAAQ,EACR,aAAa,EACb,QAAgB,EAChB,WAAW,EACX,QAAgB,EAChB,SAAkB,EAClB,mBAA2B,EAC3B,eAA8B,EAC9B,UAAkB,EAClB,WAAsB,EACtB,aAAa,EACb,UAAkB,EAClB,WAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,UAAkB,EAClB,UAAkB,EAClB,cAAc,EACd,WAA8B,EAC9B,aAAkC,EAClC,WAAkB,EAClB,SAAc,GACf,EAAE,qBAAqB,2CAiGvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminPanelHeader.js","sources":["../../../src/components/admin-panel-header/AdminPanelHeader.tsx"],"sourcesContent":["import { type ChangeEvent, type ReactNode } from 'react';\nimport ChevronDownIcon from '@mattermost/compass-icons/components/chevron-down';\nimport ChevronUpIcon from '@mattermost/compass-icons/components/chevron-up';\nimport CogOutlineIcon from '@mattermost/compass-icons/components/cog-outline';\nimport MattermostIcon from '@mattermost/compass-icons/components/mattermost';\nimport Button from '@/components/button/Button';\nimport Icon from '@/components/icon/Icon';\nimport { IconSlotContext } from '@/components/icon/Icon';\nimport IconButton from '@/components/icon-button/IconButton';\nimport Tag from '@/components/tag/Tag';\nimport Switch from '@/components/switch/Switch';\nimport styles from './AdminPanelHeader.module.scss';\n\n/** System Console admin panel expand/collapse (`expandedState` in Figma). */\nexport type AdminPanelExpandedState = 'collapsed' | 'expanded';\n\nexport interface AdminPanelHeaderProps {\n /** Passed to the title `h2` for `aria-labelledby` on the parent panel. */\n titleId: string;\n title: ReactNode;\n subtitle?: ReactNode;\n /** Trailing accessory actions rendered after Switch / Primary button and before expand. */\n headerActions?: ReactNode;\n iconLeft?: boolean;\n /** Icon for the 44×44 circular pill. Pass `<Icon glyph={<SomeIcon />} />` — AdminPanelHeader provides the correct size via context. */\n leadingIcon?: ReactNode;\n showBeta?: boolean;\n /** Default: \"Beta\". Accepts translated nodes. */\n betaLabel?: ReactNode;\n showEnterpriseLabel?: boolean;\n /** Default: \"Enterprise\". Accepts translated nodes. */\n enterpriseLabel?: ReactNode;\n showButton?: boolean;\n /** Default: \"Button\". Accepts translated nodes. */\n buttonLabel?: ReactNode;\n onButtonClick?: () => void;\n showSwitch?: boolean;\n switchLabel?: ReactNode;\n switchChecked?: boolean;\n defaultSwitchChecked?: boolean;\n onSwitchChange?: (\n checked: boolean,\n event: ChangeEvent<HTMLInputElement>,\n ) => void;\n switchDisabled?: boolean;\n expandable?: boolean;\n isExpanded?: boolean;\n onToggleExpand?: () => void;\n /** Accessible name for the expand button while collapsed. Default: \"Expand section\". */\n expandLabel?: string;\n /** Accessible name for the expand button while expanded. Default: \"Collapse section\". */\n collapseLabel?: string;\n /** Bottom border under the header row (hidden when expandable and collapsed). */\n showDivider?: boolean;\n className?: string;\n}\n\n/**\n * Admin Panel Header is the titled rail for a System Console settings section: optional\n * leading icon, title with optional tags, subtitle, and trailing controls. It is composed\n * inside the [`Admin Panel`](/patterns/admin-panel) pattern; it can also be documented on\n * its own when adjusting header anatomy or behaviour.\n */\nexport default function AdminPanelHeader({\n titleId,\n title,\n subtitle,\n headerActions,\n iconLeft = false,\n leadingIcon,\n showBeta = false,\n betaLabel = 'Beta',\n showEnterpriseLabel = false,\n enterpriseLabel = 'Enterprise',\n showButton = false,\n buttonLabel = 'Button',\n onButtonClick,\n showSwitch = false,\n switchLabel = 'Off',\n switchChecked,\n defaultSwitchChecked,\n onSwitchChange,\n switchDisabled,\n expandable = false,\n isExpanded = false,\n onToggleExpand,\n expandLabel = 'Expand section',\n collapseLabel = 'Collapse section',\n showDivider = true,\n className = '',\n}: AdminPanelHeaderProps) {\n const hasActions =\n showSwitch || showButton || headerActions != null || expandable;\n\n const defaultLeading = <Icon size=\"20\" glyph={<CogOutlineIcon />} />;\n\n return (\n <header\n className={[\n styles['admin-panel-header'],\n showDivider ? styles['admin-panel-header--divided'] : '',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n .trim()}\n >\n <div className={styles['admin-panel-header__main']}>\n <div className={styles['admin-panel-header__start']}>\n {iconLeft ? (\n <div className={styles['admin-panel-header__leading']} aria-hidden>\n <IconSlotContext.Provider value={{ size: '20' }}>\n {leadingIcon ?? defaultLeading}\n </IconSlotContext.Provider>\n </div>\n ) : null}\n <div className={styles['admin-panel-header__title-stack']}>\n <div className={styles['admin-panel-header__title-row']}>\n <h2 id={titleId} className={styles['admin-panel-header__title']}>\n {title}\n </h2>\n {showEnterpriseLabel ? (\n <Tag\n label={enterpriseLabel}\n size=\"x-small\"\n type=\"default\"\n leadingIcon={<Icon size=\"10\" glyph={<MattermostIcon />} />}\n />\n ) : null}\n {showBeta ? (\n <Tag label={betaLabel} size=\"x-small\" type=\"default\" />\n ) : null}\n </div>\n {subtitle != null ? (\n <p className={styles['admin-panel-header__subtitle']}>\n {subtitle}\n </p>\n ) : null}\n </div>\n </div>\n {hasActions ? (\n <div className={styles['admin-panel-header__actions']}>\n {showSwitch ? (\n <Switch\n size=\"medium\"\n checked={switchChecked}\n defaultChecked={defaultSwitchChecked}\n disabled={switchDisabled}\n onChange={(e) => {\n onSwitchChange?.(e.target.checked, e);\n }}\n >\n {switchLabel}\n </Switch>\n ) : null}\n {showButton ? (\n <Button\n type=\"button\"\n size=\"medium\"\n emphasis=\"primary\"\n onClick={onButtonClick}\n >\n {buttonLabel}\n </Button>\n ) : null}\n {headerActions}\n {expandable ? (\n <IconButton\n type=\"button\"\n style=\"default\"\n size=\"medium\"\n aria-label={isExpanded ? collapseLabel : expandLabel}\n aria-expanded={isExpanded}\n onClick={onToggleExpand}\n icon={\n <Icon\n size=\"20\"\n glyph={isExpanded ? <ChevronUpIcon /> : <ChevronDownIcon />}\n />\n }\n />\n ) : null}\n </div>\n ) : null}\n </div>\n </header>\n );\n}\n"],"names":["AdminPanelHeader","titleId","title","subtitle","headerActions","iconLeft","leadingIcon","showBeta","betaLabel","showEnterpriseLabel","enterpriseLabel","showButton","buttonLabel","onButtonClick","showSwitch","switchLabel","switchChecked","defaultSwitchChecked","onSwitchChange","switchDisabled","expandable","isExpanded","onToggleExpand","expandLabel","collapseLabel","showDivider","className","hasActions","defaultLeading","Icon","jsx","CogOutlineIcon","styles","jsxs","IconSlotContext","Tag","MattermostIcon","Switch","e","Button","IconButton","ChevronUpIcon","ChevronDownIcon"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AdminPanelHeader.js","sources":["../../../src/components/admin-panel-header/AdminPanelHeader.tsx"],"sourcesContent":["import { type ChangeEvent, type ReactNode } from 'react';\nimport ChevronDownIcon from '@mattermost/compass-icons/components/chevron-down';\nimport ChevronUpIcon from '@mattermost/compass-icons/components/chevron-up';\nimport CogOutlineIcon from '@mattermost/compass-icons/components/cog-outline';\nimport MattermostIcon from '@mattermost/compass-icons/components/mattermost';\nimport Button from '@/components/button/Button';\nimport Icon from '@/components/icon/Icon';\nimport { IconSlotContext } from '@/components/icon/Icon';\nimport IconButton from '@/components/icon-button/IconButton';\nimport Tag from '@/components/tag/Tag';\nimport Switch from '@/components/switch/Switch';\nimport styles from './AdminPanelHeader.module.scss';\n\n/** System Console admin panel expand/collapse (`expandedState` in Figma). */\nexport type AdminPanelExpandedState = 'collapsed' | 'expanded';\n\nexport interface AdminPanelHeaderProps {\n /** Passed to the title `h2` for `aria-labelledby` on the parent panel. */\n titleId: string;\n title: ReactNode;\n subtitle?: ReactNode;\n /** Trailing accessory actions rendered after Switch / Primary button and before expand. */\n headerActions?: ReactNode;\n iconLeft?: boolean;\n /** Icon for the 44×44 circular pill. Pass `<Icon glyph={<SomeIcon />} />` — AdminPanelHeader provides the correct size via context. */\n leadingIcon?: ReactNode;\n showBeta?: boolean;\n /** Default: \"Beta\". Accepts translated nodes. */\n betaLabel?: ReactNode;\n showEnterpriseLabel?: boolean;\n /** Default: \"Enterprise\". Accepts translated nodes. */\n enterpriseLabel?: ReactNode;\n showButton?: boolean;\n /** Default: \"Button\". Accepts translated nodes. */\n buttonLabel?: ReactNode;\n onButtonClick?: () => void;\n showSwitch?: boolean;\n switchLabel?: ReactNode;\n switchChecked?: boolean;\n defaultSwitchChecked?: boolean;\n onSwitchChange?: (\n checked: boolean,\n event: ChangeEvent<HTMLInputElement>,\n ) => void;\n switchDisabled?: boolean;\n expandable?: boolean;\n isExpanded?: boolean;\n onToggleExpand?: () => void;\n /** Accessible name for the expand button while collapsed. Default: \"Expand section\". */\n expandLabel?: string;\n /** Accessible name for the expand button while expanded. Default: \"Collapse section\". */\n collapseLabel?: string;\n /** Bottom border under the header row (hidden when expandable and collapsed). */\n showDivider?: boolean;\n className?: string;\n}\n\n/**\n * Admin Panel Header is the titled rail for a System Console settings section: optional\n * leading icon, title with optional tags, subtitle, and trailing controls. It is composed\n * inside the [`Admin Panel`](/patterns/admin-panel) pattern whenever that panel has a\n * `title` (Admin Panel may omit the header when it has a body only). Document the header on\n * its own when adjusting anatomy or behaviour.\n */\nexport default function AdminPanelHeader({\n titleId,\n title,\n subtitle,\n headerActions,\n iconLeft = false,\n leadingIcon,\n showBeta = false,\n betaLabel = 'Beta',\n showEnterpriseLabel = false,\n enterpriseLabel = 'Enterprise',\n showButton = false,\n buttonLabel = 'Button',\n onButtonClick,\n showSwitch = false,\n switchLabel = 'Off',\n switchChecked,\n defaultSwitchChecked,\n onSwitchChange,\n switchDisabled,\n expandable = false,\n isExpanded = false,\n onToggleExpand,\n expandLabel = 'Expand section',\n collapseLabel = 'Collapse section',\n showDivider = true,\n className = '',\n}: AdminPanelHeaderProps) {\n const hasActions =\n showSwitch || showButton || headerActions != null || expandable;\n\n const defaultLeading = <Icon size=\"20\" glyph={<CogOutlineIcon />} />;\n\n return (\n <header\n className={[\n styles['admin-panel-header'],\n showDivider ? styles['admin-panel-header--divided'] : '',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n .trim()}\n >\n <div className={styles['admin-panel-header__main']}>\n <div className={styles['admin-panel-header__start']}>\n {iconLeft ? (\n <div className={styles['admin-panel-header__leading']} aria-hidden>\n <IconSlotContext.Provider value={{ size: '20' }}>\n {leadingIcon ?? defaultLeading}\n </IconSlotContext.Provider>\n </div>\n ) : null}\n <div className={styles['admin-panel-header__title-stack']}>\n <div className={styles['admin-panel-header__title-row']}>\n <h2 id={titleId} className={styles['admin-panel-header__title']}>\n {title}\n </h2>\n {showEnterpriseLabel ? (\n <Tag\n label={enterpriseLabel}\n size=\"x-small\"\n type=\"default\"\n leadingIcon={<Icon size=\"10\" glyph={<MattermostIcon />} />}\n />\n ) : null}\n {showBeta ? (\n <Tag label={betaLabel} size=\"x-small\" type=\"default\" />\n ) : null}\n </div>\n {subtitle != null ? (\n <p className={styles['admin-panel-header__subtitle']}>\n {subtitle}\n </p>\n ) : null}\n </div>\n </div>\n {hasActions ? (\n <div className={styles['admin-panel-header__actions']}>\n {showSwitch ? (\n <Switch\n size=\"medium\"\n checked={switchChecked}\n defaultChecked={defaultSwitchChecked}\n disabled={switchDisabled}\n onChange={(e) => {\n onSwitchChange?.(e.target.checked, e);\n }}\n >\n {switchLabel}\n </Switch>\n ) : null}\n {showButton ? (\n <Button\n type=\"button\"\n size=\"medium\"\n emphasis=\"primary\"\n onClick={onButtonClick}\n >\n {buttonLabel}\n </Button>\n ) : null}\n {headerActions}\n {expandable ? (\n <IconButton\n type=\"button\"\n style=\"default\"\n size=\"medium\"\n aria-label={isExpanded ? collapseLabel : expandLabel}\n aria-expanded={isExpanded}\n onClick={onToggleExpand}\n icon={\n <Icon\n size=\"20\"\n glyph={isExpanded ? <ChevronUpIcon /> : <ChevronDownIcon />}\n />\n }\n />\n ) : null}\n </div>\n ) : null}\n </div>\n </header>\n );\n}\n"],"names":["AdminPanelHeader","titleId","title","subtitle","headerActions","iconLeft","leadingIcon","showBeta","betaLabel","showEnterpriseLabel","enterpriseLabel","showButton","buttonLabel","onButtonClick","showSwitch","switchLabel","switchChecked","defaultSwitchChecked","onSwitchChange","switchDisabled","expandable","isExpanded","onToggleExpand","expandLabel","collapseLabel","showDivider","className","hasActions","defaultLeading","Icon","jsx","CogOutlineIcon","styles","jsxs","IconSlotContext","Tag","MattermostIcon","Switch","e","Button","IconButton","ChevronUpIcon","ChevronDownIcon"],"mappings":";;;;;;;;;;;AAgEA,SAAwBA,EAAiB;AAAA,EACvC,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,eAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,aAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,WAAAC,IAAY;AAAA,EACZ,qBAAAC,IAAsB;AAAA,EACtB,iBAAAC,IAAkB;AAAA,EAClB,YAAAC,IAAa;AAAA,EACb,aAAAC,IAAc;AAAA,EACd,eAAAC;AAAA,EACA,YAAAC,IAAa;AAAA,EACb,aAAAC,IAAc;AAAA,EACd,eAAAC;AAAA,EACA,sBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,YAAAC,IAAa;AAAA,EACb,YAAAC,IAAa;AAAA,EACb,gBAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,eAAAC,IAAgB;AAAA,EAChB,aAAAC,IAAc;AAAA,EACd,WAAAC,IAAY;AACd,GAA0B;AACxB,QAAMC,IACJb,KAAcH,KAAcP,KAAiB,QAAQgB,GAEjDQ,sBAAkBC,GAAA,EAAK,MAAK,MAAK,OAAO,gBAAAC,EAACC,KAAe,EAAA,CAAI;AAElE,SACE,gBAAAD;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACTE,EAAO,oBAAoB;AAAA,QAC3BP,IAAcO,EAAO,6BAA6B,IAAI;AAAA,QACtDN;AAAA,MAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,EACR,KAAA;AAAA,MAEH,UAAA,gBAAAO,EAAC,OAAA,EAAI,WAAWD,EAAO,0BAA0B,GAC/C,UAAA;AAAA,QAAA,gBAAAC,EAAC,OAAA,EAAI,WAAWD,EAAO,2BAA2B,GAC/C,UAAA;AAAA,UAAA3B,IACC,gBAAAyB,EAAC,SAAI,WAAWE,EAAO,6BAA6B,GAAG,eAAW,IAChE,UAAA,gBAAAF,EAACI,EAAgB,UAAhB,EAAyB,OAAO,EAAE,MAAM,KAAA,GACtC,UAAA5B,KAAesB,GAClB,GACF,IACE;AAAA,UACJ,gBAAAK,EAAC,OAAA,EAAI,WAAWD,EAAO,iCAAiC,GACtD,UAAA;AAAA,YAAA,gBAAAC,EAAC,OAAA,EAAI,WAAWD,EAAO,+BAA+B,GACpD,UAAA;AAAA,cAAA,gBAAAF,EAAC,QAAG,IAAI7B,GAAS,WAAW+B,EAAO,2BAA2B,GAC3D,UAAA9B,GACH;AAAA,cACCO,IACC,gBAAAqB;AAAA,gBAACK;AAAA,gBAAA;AAAA,kBACC,OAAOzB;AAAA,kBACP,MAAK;AAAA,kBACL,MAAK;AAAA,kBACL,+BAAcmB,GAAA,EAAK,MAAK,MAAK,OAAO,gBAAAC,EAACM,KAAe,EAAA,CAAI;AAAA,gBAAA;AAAA,cAAA,IAExD;AAAA,cACH7B,sBACE4B,GAAA,EAAI,OAAO3B,GAAW,MAAK,WAAU,MAAK,UAAA,CAAU,IACnD;AAAA,YAAA,GACN;AAAA,YACCL,KAAY,OACX,gBAAA2B,EAAC,KAAA,EAAE,WAAWE,EAAO,8BAA8B,GAChD,UAAA7B,EAAA,CACH,IACE;AAAA,UAAA,EAAA,CACN;AAAA,QAAA,GACF;AAAA,QACCwB,IACC,gBAAAM,EAAC,OAAA,EAAI,WAAWD,EAAO,6BAA6B,GACjD,UAAA;AAAA,UAAAlB,IACC,gBAAAgB;AAAA,YAACO;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,SAASrB;AAAA,cACT,gBAAgBC;AAAA,cAChB,UAAUE;AAAA,cACV,UAAU,CAACmB,MAAM;AACf,gBAAApB,KAAA,QAAAA,EAAiBoB,EAAE,OAAO,SAASA;AAAA,cACrC;AAAA,cAEC,UAAAvB;AAAA,YAAA;AAAA,UAAA,IAED;AAAA,UACHJ,IACC,gBAAAmB;AAAA,YAACS;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,MAAK;AAAA,cACL,UAAS;AAAA,cACT,SAAS1B;AAAA,cAER,UAAAD;AAAA,YAAA;AAAA,UAAA,IAED;AAAA,UACHR;AAAA,UACAgB,IACC,gBAAAU;AAAA,YAACU;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,OAAM;AAAA,cACN,MAAK;AAAA,cACL,cAAYnB,IAAaG,IAAgBD;AAAA,cACzC,iBAAeF;AAAA,cACf,SAASC;AAAA,cACT,MACE,gBAAAQ;AAAA,gBAACD;AAAA,gBAAA;AAAA,kBACC,MAAK;AAAA,kBACL,OAAOR,IAAa,gBAAAS,EAACW,GAAA,CAAA,CAAc,sBAAMC,GAAA,CAAA,CAAgB;AAAA,gBAAA;AAAA,cAAA;AAAA,YAC3D;AAAA,UAAA,IAGF;AAAA,QAAA,EAAA,CACN,IACE;AAAA,MAAA,EAAA,CACN;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),n=require("react"),d=require("../icon/Icon.cjs"),j=require("../spinner/Spinner.cjs"),G=require("../../utils/slot.cjs"),N=require("../../utils/string.cjs"),t=require("./Button.module.scss.cjs"),C={"x-small":"12",small:"12",medium:"16",large:"20"};function z({appearance:m="default",className:s="",destructive:l=!1,emphasis:i="primary",size:r="medium"}){return[t.default.button,t.default[`button--emphasis-${N.toKebab(i)}`],t.default[`button--size-${N.toKebab(r)}`],m==="inverted"?t.default["button--appearance-inverted"]:"",l?t.default["button--destructive"]:"",s].filter(Boolean).join(" ")}const I=n.forwardRef(function(s,l){if(s.asChild){const{appearance:p="default",className:M="",destructive:A=!1,emphasis:D="primary",children:K,leadingIcon:v,loading:a=!1,size:x="medium",trailingIcon:g,disabled:L,asChild:J,...O}=s,$=z({appearance:p,className:M,destructive:A,emphasis:D,size:x}),u=C[x],F=a||n.isValidElement(v),T=!!(L||a),_=K,Z=F?e.jsx("span",{className:t.default["button__icon-slot"],"aria-hidden":!0,children:a?e.jsx(j.default,{size:u,inverted:p==="inverted"}):e.jsx(d.IconSlotContext.Provider,{value:{size:u},children:v})}):null,k=!a&&n.isValidElement(g)?e.jsx("span",{className:t.default["button__icon-slot"],"aria-hidden":!0,children:e.jsx(d.IconSlotContext.Provider,{value:{size:u},children:g})}):null;return G.renderAsChild({child:_,props:{...O,className:$,...a?{"aria-busy":!0}:null},ref:l,content:e.jsxs(e.Fragment,{children:[Z,e.jsx("span",{className:t.default.button__label,children:_.props.children}),k]}),disabled:T,disabledClassName:t.default["button--disabled"]})}const{appearance:i="default",className:r="",destructive:S=!1,emphasis:q="primary",children:y,leadingIcon:b,loading:o=!1,size:h="medium",trailingIcon:f,disabled:B,type:P="button",asChild:H,...E}=s,R=z({appearance:i,className:r,destructive:S,emphasis:q,size:h}),c=C[h],V=o||n.isValidElement(b),w=!!(B||o);return e.jsxs("button",{ref:l,className:R,type:P,disabled:w,...E,children:[V?e.jsx("span",{className:t.default["button__icon-slot"],"aria-hidden":!0,children:o?e.jsx(j.default,{size:c,inverted:i==="inverted"}):e.jsx(d.IconSlotContext.Provider,{value:{size:c},children:b})}):null,e.jsx("span",{className:t.default.button__label,children:y}),!o&&n.isValidElement(f)?e.jsx("span",{className:t.default["button__icon-slot"],"aria-hidden":!0,children:e.jsx(d.IconSlotContext.Provider,{value:{size:c},children:f})}):null]})});I.displayName="Button";exports.default=I;
|
|
2
2
|
//# sourceMappingURL=Button.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.cjs","sources":["../../../src/components/button/Button.tsx"],"sourcesContent":["import {\n forwardRef,\n isValidElement,\n type ButtonHTMLAttributes,\n type ReactNode,\n} from 'react';\nimport type { IconSize } from '@/components/icon/Icon';\nimport { IconSlotContext } from '@/components/icon/Icon';\nimport Spinner from '@/components/spinner/Spinner';\nimport type { SpinnerSize } from '@/components/spinner/Spinner';\nimport { toKebab } from '@/utils/string';\nimport styles from './Button.module.scss';\n\nexport type ButtonEmphasis =\n | 'primary'\n | 'secondary'\n | 'tertiary'\n | 'quaternary'\n | 'link';\n\nexport type ButtonSize = 'x-small' | 'small' | 'medium' | 'large';\n\nexport type ButtonAppearance = 'default' | 'inverted';\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** default | inverted (for use on dark backgrounds). Maps to Figma \"Style\". */\n appearance?: ButtonAppearance;\n /** Optional CSS class name. */\n className?: string;\n /** Button label. */\n children: ReactNode;\n /** When true, uses destructive (danger) styling. */\n destructive?: boolean;\n /** Visual emphasis. Default: primary. */\n emphasis?: ButtonEmphasis;\n /** Leading icon — pass `<Icon glyph={<YourIcon />} />`. Button provides the correct size via context; no `size` prop needed on the Icon. */\n leadingIcon?: ReactNode;\n /** When true, shows a Spinner in the leading slot and disables the button. */\n loading?: boolean;\n /** Size variant. Default: medium. */\n size?: ButtonSize;\n /** Trailing icon — pass `<Icon glyph={<YourIcon />} />`. Button provides the correct size via context; no `size` prop needed on the Icon. */\n trailingIcon?: ReactNode;\n}\n\nconst SIZE_ICON_MAP: Record<ButtonSize, IconSize> = {\n 'x-small': '12',\n small: '12',\n medium: '16',\n large: '20',\n};\n\n/**\n * Buttons let people take actions or make decisions with a single tap or click — saving a\n * form, sending a message, confirming a dialog. Compass ships several button variants, each\n * with the same anatomy and rhythm so they feel like members of the same family.\n */\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n appearance = 'default',\n className = '',\n destructive = false,\n emphasis = 'primary',\n children,\n leadingIcon,\n loading = false,\n size = 'medium',\n trailingIcon,\n disabled,\n type = 'button',\n ...rest\n },\n ref,\n) {\n const iconSize = SIZE_ICON_MAP[size];\n const emphasisClass = styles[`button--emphasis-${toKebab(emphasis)}`];\n const sizeClass = styles[`button--size-${toKebab(size)}`];\n const appearanceClass =\n appearance === 'inverted' ? styles['button--appearance-inverted'] : '';\n const destructiveClass = destructive ? styles['button--destructive'] : '';\n\n const rootClass = [\n styles.button,\n emphasisClass,\n sizeClass,\n appearanceClass,\n destructiveClass,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const supportsIcons = emphasis !== 'link';\n const showLeadingSlot =\n loading || (supportsIcons && isValidElement(leadingIcon));\n\n return (\n <button\n ref={ref}\n className={rootClass}\n type={type}\n disabled={disabled || loading}\n {...rest}\n >\n {showLeadingSlot ? (\n <span className={styles['button__icon-slot']} aria-hidden>\n {loading ? (\n <Spinner\n size={iconSize as SpinnerSize}\n inverted={appearance === 'inverted'}\n />\n ) : (\n <IconSlotContext.Provider value={{ size: iconSize }}>\n {leadingIcon}\n </IconSlotContext.Provider>\n )}\n </span>\n ) : null}\n <span className={styles['button__label']}>{children}</span>\n {supportsIcons && !loading && isValidElement(trailingIcon) ? (\n <span className={styles['button__icon-slot']} aria-hidden>\n <IconSlotContext.Provider value={{ size: iconSize }}>\n {trailingIcon}\n </IconSlotContext.Provider>\n </span>\n ) : null}\n </button>\n );\n});\n\nButton.displayName = 'Button';\n\nexport default Button;\n"],"names":["SIZE_ICON_MAP","Button","forwardRef","appearance","className","destructive","emphasis","children","leadingIcon","loading","size","trailingIcon","disabled","type","rest","ref","iconSize","emphasisClass","styles","toKebab","sizeClass","appearanceClass","destructiveClass","rootClass","supportsIcons","showLeadingSlot","isValidElement","jsxs","jsx","Spinner","IconSlotContext"],"mappings":"gTA6CMA,EAA8C,CAClD,UAAW,KACX,MAAO,KACP,OAAQ,KACR,MAAO,IACT,EAOMC,EAASC,EAAAA,WAA2C,SACxD,CACE,WAAAC,EAAa,UACb,UAAAC,EAAY,GACZ,YAAAC,EAAc,GACd,SAAAC,EAAW,UACX,SAAAC,EACA,YAAAC,EACA,QAAAC,EAAU,GACV,KAAAC,EAAO,SACP,aAAAC,EACA,SAAAC,EACA,KAAAC,EAAO,SACP,GAAGC,CACL,EACAC,EACA,CACA,MAAMC,EAAWhB,EAAcU,CAAI,EAC7BO,EAAgBC,EAAAA,QAAO,oBAAoBC,EAAAA,QAAQb,CAAQ,CAAC,EAAE,EAC9Dc,EAAYF,EAAAA,QAAO,gBAAgBC,EAAAA,QAAQT,CAAI,CAAC,EAAE,EAClDW,EACJlB,IAAe,WAAae,EAAAA,QAAO,6BAA6B,EAAI,GAChEI,EAAmBjB,EAAca,UAAO,qBAAqB,EAAI,GAEjEK,EAAY,CAChBL,EAAAA,QAAO,OACPD,EACAG,EACAC,EACAC,EACAlB,CAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,EAELoB,EAAgBlB,IAAa,OAC7BmB,EACJhB,GAAYe,GAAiBE,EAAAA,eAAelB,CAAW,EAEzD,OACEmB,EAAAA,KAAC,SAAA,CACC,IAAAZ,EACA,UAAWQ,EACX,KAAAV,EACA,SAAUD,GAAYH,EACrB,GAAGK,EAEH,SAAA,CAAAW,EACCG,EAAAA,IAAC,QAAK,UAAWV,EAAAA,QAAO,mBAAmB,EAAG,cAAW,GACtD,SAAAT,EACCmB,EAAAA,IAACC,EAAAA,QAAA,CACC,KAAMb,EACN,SAAUb,IAAe,UAAA,CAAA,EAG3ByB,EAAAA,IAACE,EAAAA,gBAAgB,SAAhB,CAAyB,MAAO,CAAE,KAAMd,CAAA,EACtC,SAAAR,EACH,CAAA,CAEJ,EACE,WACH,OAAA,CAAK,UAAWU,EAAAA,QAAO,cAAmB,SAAAX,EAAS,EACnDiB,GAAiB,CAACf,GAAWiB,EAAAA,eAAef,CAAY,EACvDiB,EAAAA,IAAC,OAAA,CAAK,UAAWV,EAAAA,QAAO,mBAAmB,EAAG,cAAW,GACvD,SAAAU,MAACE,EAAAA,gBAAgB,SAAhB,CAAyB,MAAO,CAAE,KAAMd,CAAA,EACtC,SAAAL,CAAA,CACH,CAAA,CACF,EACE,IAAA,CAAA,CAAA,CAGV,CAAC,EAEDV,EAAO,YAAc"}
|
|
1
|
+
{"version":3,"file":"Button.cjs","sources":["../../../src/components/button/Button.tsx"],"sourcesContent":["import {\n forwardRef,\n isValidElement,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type ReactElement,\n type ReactNode,\n type Ref,\n type RefAttributes,\n} from 'react';\nimport type { IconSize } from '@/components/icon/Icon';\nimport { IconSlotContext } from '@/components/icon/Icon';\nimport Spinner from '@/components/spinner/Spinner';\nimport type { SpinnerSize } from '@/components/spinner/Spinner';\nimport { renderAsChild } from '@/utils/slot';\nimport { toKebab } from '@/utils/string';\nimport styles from './Button.module.scss';\n\nexport type ButtonEmphasis =\n | 'primary'\n | 'secondary'\n | 'tertiary'\n | 'quaternary'\n | 'link';\n\nexport type ButtonSize = 'x-small' | 'small' | 'medium' | 'large';\n\nexport type ButtonAppearance = 'default' | 'inverted';\n\ninterface ButtonOwnProps {\n /** default | inverted (for use on dark backgrounds). Maps to Figma \"Style\". */\n appearance?: ButtonAppearance;\n /** Optional CSS class name. */\n className?: string;\n /** When true, uses destructive (danger) styling. */\n destructive?: boolean;\n /** Visual emphasis. Default: primary. */\n emphasis?: ButtonEmphasis;\n /** Leading icon — pass `<Icon glyph={<YourIcon />} />`. Button provides the correct size via context; no `size` prop needed on the Icon. */\n leadingIcon?: ReactNode;\n /** When true, shows a Spinner in the leading slot and disables the button (or blocks navigation when `asChild`). */\n loading?: boolean;\n /** Size variant. Default: medium. */\n size?: ButtonSize;\n /** Trailing icon — pass `<Icon glyph={<YourIcon />} />`. Button provides the correct size via context; no `size` prop needed on the Icon. */\n trailingIcon?: ReactNode;\n /**\n * When true, disables the control. On a native `<button>`, sets the `disabled`\n * attribute. With `asChild`, sets `aria-disabled`, applies disabled styles, and\n * blocks click / middle-click navigation (the link stays focusable).\n */\n disabled?: boolean;\n}\n\nexport interface ButtonProps\n extends ButtonOwnProps, ButtonHTMLAttributes<HTMLButtonElement> {\n /**\n * When true, merges Button props onto the single child element instead of\n * rendering a `<button>`. Use with `<a>` or a router `Link`. Default: false.\n */\n asChild?: false;\n /** Button label. */\n children: ReactNode;\n}\n\nexport interface ButtonAsChildProps\n extends\n ButtonOwnProps,\n Omit<HTMLAttributes<HTMLElement>, 'children' | 'color'> {\n /**\n * Merges Button props onto the single child element instead of rendering a\n * `<button>`. The child's own props (`href`, `to`, `target`, …) stay on the\n * child. Do not pass `type` — it is not forwarded.\n */\n asChild: true;\n /** Single element to render as the Button (e.g. `<a>` or `<Link>`). Its children become the label. */\n children: ReactElement;\n}\n\nconst SIZE_ICON_MAP: Record<ButtonSize, IconSize> = {\n 'x-small': '12',\n small: '12',\n medium: '16',\n large: '20',\n};\n\ntype ButtonComponent = {\n (props: ButtonAsChildProps & RefAttributes<HTMLElement>): ReactElement | null;\n (props: ButtonProps & RefAttributes<HTMLButtonElement>): ReactElement | null;\n displayName?: string;\n};\n\nfunction buildRootClass({\n appearance = 'default',\n className = '',\n destructive = false,\n emphasis = 'primary',\n size = 'medium',\n}: {\n appearance?: ButtonAppearance;\n className?: string;\n destructive?: boolean;\n emphasis?: ButtonEmphasis;\n size?: ButtonSize;\n}): string {\n return [\n styles.button,\n styles[`button--emphasis-${toKebab(emphasis)}`],\n styles[`button--size-${toKebab(size)}`],\n appearance === 'inverted' ? styles['button--appearance-inverted'] : '',\n destructive ? styles['button--destructive'] : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n}\n\n/**\n * Buttons let people take actions or make decisions with a single tap or click — saving a\n * form, sending a message, confirming a dialog. Compass ships several button variants, each\n * with the same anatomy and rhythm so they feel like members of the same family.\n *\n * Pass `asChild` with a single `<a>` or router `Link` child to render a navigational CTA\n * with Button styling and anatomy (no nested `<button>`).\n */\nconst Button = forwardRef(function Button(\n props: ButtonProps | ButtonAsChildProps,\n ref: Ref<HTMLButtonElement | HTMLElement>,\n) {\n if (props.asChild) {\n const {\n appearance = 'default',\n className = '',\n destructive = false,\n emphasis = 'primary',\n children,\n leadingIcon,\n loading = false,\n size = 'medium',\n trailingIcon,\n disabled,\n asChild,\n ...rest\n } = props;\n void asChild;\n\n const rootClass = buildRootClass({\n appearance,\n className,\n destructive,\n emphasis,\n size,\n });\n const iconSize = SIZE_ICON_MAP[size];\n const showLeadingSlot = loading || isValidElement(leadingIcon);\n const isDisabled = Boolean(disabled || loading);\n const child = children as ReactElement<{ children?: ReactNode }>;\n\n const leading = showLeadingSlot ? (\n <span className={styles['button__icon-slot']} aria-hidden>\n {loading ? (\n <Spinner\n size={iconSize as SpinnerSize}\n inverted={appearance === 'inverted'}\n />\n ) : (\n <IconSlotContext.Provider value={{ size: iconSize }}>\n {leadingIcon}\n </IconSlotContext.Provider>\n )}\n </span>\n ) : null;\n\n const trailing =\n !loading && isValidElement(trailingIcon) ? (\n <span className={styles['button__icon-slot']} aria-hidden>\n <IconSlotContext.Provider value={{ size: iconSize }}>\n {trailingIcon}\n </IconSlotContext.Provider>\n </span>\n ) : null;\n\n return renderAsChild({\n child,\n props: {\n ...rest,\n className: rootClass,\n ...(loading ? { 'aria-busy': true } : null),\n },\n ref,\n content: (\n <>\n {leading}\n <span className={styles['button__label']}>\n {child.props.children}\n </span>\n {trailing}\n </>\n ),\n disabled: isDisabled,\n disabledClassName: styles['button--disabled'],\n });\n }\n\n const {\n appearance = 'default',\n className = '',\n destructive = false,\n emphasis = 'primary',\n children,\n leadingIcon,\n loading = false,\n size = 'medium',\n trailingIcon,\n disabled,\n type = 'button',\n asChild,\n ...rest\n } = props;\n void asChild;\n\n const rootClass = buildRootClass({\n appearance,\n className,\n destructive,\n emphasis,\n size,\n });\n const iconSize = SIZE_ICON_MAP[size];\n const showLeadingSlot = loading || isValidElement(leadingIcon);\n const isDisabled = Boolean(disabled || loading);\n\n return (\n <button\n ref={ref as Ref<HTMLButtonElement>}\n className={rootClass}\n type={type}\n disabled={isDisabled}\n {...rest}\n >\n {showLeadingSlot ? (\n <span className={styles['button__icon-slot']} aria-hidden>\n {loading ? (\n <Spinner\n size={iconSize as SpinnerSize}\n inverted={appearance === 'inverted'}\n />\n ) : (\n <IconSlotContext.Provider value={{ size: iconSize }}>\n {leadingIcon}\n </IconSlotContext.Provider>\n )}\n </span>\n ) : null}\n <span className={styles['button__label']}>{children}</span>\n {!loading && isValidElement(trailingIcon) ? (\n <span className={styles['button__icon-slot']} aria-hidden>\n <IconSlotContext.Provider value={{ size: iconSize }}>\n {trailingIcon}\n </IconSlotContext.Provider>\n </span>\n ) : null}\n </button>\n );\n}) as ButtonComponent;\n\nButton.displayName = 'Button';\n\nexport default Button;\n"],"names":["SIZE_ICON_MAP","buildRootClass","appearance","className","destructive","emphasis","size","styles","toKebab","Button","forwardRef","props","ref","children","leadingIcon","loading","trailingIcon","disabled","asChild","rest","rootClass","iconSize","showLeadingSlot","isValidElement","isDisabled","child","leading","jsx","Spinner","IconSlotContext","trailing","renderAsChild","jsxs","Fragment","type"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
._button_doayp_2{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-xs);font-family:var(--font-family-body);font-weight:var(--font-weight-semibold);border-radius:var(--radius-s);border:0;white-space:nowrap;cursor:pointer;transition:background-color var(--duration-quick) var(--ease-transition),color var(--duration-quick) var(--ease-transition),box-shadow var(--duration-quick) var(--ease-transition),outline-color var(--duration-quick) var(--ease-transition),outline-offset var(--duration-quick) var(--ease-transition);outline:2px solid color-mix(in srgb,var(--focus-ring-color) 0%,transparent);outline-offset:0}._button_doayp_2:focus-visible{outline-color:var(--focus-ring-color);outline-offset:3px}._button_doayp_2:disabled{cursor:not-allowed}._button__label_doayp_24{line-height:1}._button__icon-slot_doayp_27{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}._button--size-x-small_doayp_33{padding:var(--spacing-xxxs) var(--spacing-m)}._button--size-x-small_doayp_33 ._button__label_doayp_24{font-size:var(--font-size-75);line-height:var(--line-height-75)}._button--size-small_doayp_40{padding:var(--spacing-xs) var(--spacing-l)}._button--size-small_doayp_40 ._button__label_doayp_24{font-size:var(--font-size-75);line-height:var(--line-height-75)}._button--size-medium_doayp_47{padding:var(--spacing-s) var(--spacing-xl)}._button--size-medium_doayp_47 ._button__label_doayp_24{font-size:var(--font-size-100);line-height:var(--line-height-100)}._button--size-large_doayp_54{padding:var(--spacing-m) var(--spacing-xxl)}._button--size-large_doayp_54 ._button__label_doayp_24{font-size:var(--font-size-200);line-height:var(--line-height-200)}._button--emphasis-primary_doayp_61{background-color:var(--button-bg);color:var(--button-color)}._button--emphasis-primary_doayp_61:hover:not(:disabled){background-color:color-mix(in srgb,black 8%,var(--button-bg))}._button--emphasis-primary_doayp_61:active:not(:disabled){background-color:color-mix(in srgb,black 16%,var(--button-bg))}._button--emphasis-primary_doayp_61:disabled{background-color:rgba(var(--center-channel-color-rgb),.08);color:rgba(var(--center-channel-color-rgb),.32)}._button--emphasis-secondary_doayp_75{--focus-ring-color: var(--link-color);background-color:transparent;color:var(--link-color);box-shadow:inset 0 0 0 1px var(--link-color)}._button--emphasis-secondary_doayp_75:hover:not(:disabled){background-color:rgba(var(--link-color-rgb),.08)}._button--emphasis-secondary_doayp_75:active:not(:disabled){background-color:rgba(var(--link-color-rgb),.16)}._button--emphasis-secondary_doayp_75:disabled{box-shadow:inset 0 0 0 1px rgba(var(--center-channel-color-rgb),.32);color:rgba(var(--center-channel-color-rgb),.32)}._button--emphasis-tertiary_doayp_91{background-color:rgba(var(--link-color-rgb),.08);color:var(--link-color)}._button--emphasis-tertiary_doayp_91:hover:not(:disabled){background-color:rgba(var(--link-color-rgb),.12)}._button--emphasis-tertiary_doayp_91:active:not(:disabled){background-color:rgba(var(--link-color-rgb),.16)}._button--emphasis-tertiary_doayp_91:disabled{background-color:rgba(var(--center-channel-color-rgb),.08);color:rgba(var(--center-channel-color-rgb),.32)}._button--emphasis-quaternary_doayp_105{background-color:transparent;color:var(--link-color)}._button--emphasis-quaternary_doayp_105:hover:not(:disabled){background-color:rgba(var(--link-color-rgb),.08)}._button--emphasis-quaternary_doayp_105:active:not(:disabled){background-color:rgba(var(--link-color-rgb),.12)}._button--emphasis-quaternary_doayp_105:disabled{color:rgba(var(--center-channel-color-rgb),.32)}._button--emphasis-link_doayp_118{--focus-ring-color: var(--link-color);padding:0;background-color:transparent;color:var(--link-color)}._button--emphasis-link_doayp_118:hover:not(:disabled) ._button__label_doayp_24{text-decoration:underline}._button--emphasis-link_doayp_118:disabled{color:rgba(var(--center-channel-color-rgb),.32)}._button--destructive_doayp_130{--focus-ring-color: var(--error-text, var(--color-danger))}._button--destructive_doayp_130._button--emphasis-primary_doayp_61{background-color:var(--error-text, var(--color-danger));color:var(--button-color)}._button--destructive_doayp_130._button--emphasis-primary_doayp_61:hover:not(:disabled){background-color:color-mix(in srgb,black 8%,var(--error-text, var(--color-danger)))}._button--destructive_doayp_130._button--emphasis-primary_doayp_61:active:not(:disabled){background-color:color-mix(in srgb,black 16%,var(--error-text, var(--color-danger)))}._button--destructive_doayp_130._button--emphasis-primary_doayp_61:disabled{background-color:rgba(var(--center-channel-color-rgb),.08);color:rgba(var(--center-channel-color-rgb),.32)}._button--destructive_doayp_130._button--emphasis-secondary_doayp_75{color:var(--error-text, var(--color-danger));box-shadow:inset 0 0 0 1px var(--error-text, var(--color-danger))}._button--destructive_doayp_130._button--emphasis-secondary_doayp_75:hover:not(:disabled){background-color:rgba(var(--error-text-color-rgb, var(--color-danger-rgb)),.08)}._button--destructive_doayp_130._button--emphasis-secondary_doayp_75:active:not(:disabled){background-color:rgba(var(--error-text-color-rgb, var(--color-danger-rgb)),.16)}._button--destructive_doayp_130._button--emphasis-secondary_doayp_75:disabled{box-shadow:inset 0 0 0 1px rgba(var(--center-channel-color-rgb),.32);color:rgba(var(--center-channel-color-rgb),.32)}._button--destructive_doayp_130._button--emphasis-tertiary_doayp_91{background-color:rgba(var(--error-text-color-rgb, var(--color-danger-rgb)),.08);color:var(--error-text, var(--color-danger))}._button--destructive_doayp_130._button--emphasis-tertiary_doayp_91:hover:not(:disabled){background-color:rgba(var(--error-text-color-rgb, var(--color-danger-rgb)),.12)}._button--destructive_doayp_130._button--emphasis-tertiary_doayp_91:active:not(:disabled){background-color:rgba(var(--error-text-color-rgb, var(--color-danger-rgb)),.16)}._button--destructive_doayp_130._button--emphasis-tertiary_doayp_91:disabled{background-color:rgba(var(--center-channel-color-rgb),.08);color:rgba(var(--center-channel-color-rgb),.32)}._button--destructive_doayp_130._button--emphasis-quaternary_doayp_105{color:var(--error-text, var(--color-danger))}._button--destructive_doayp_130._button--emphasis-quaternary_doayp_105:hover:not(:disabled){background-color:rgba(var(--error-text-color-rgb, var(--color-danger-rgb)),.08)}._button--destructive_doayp_130._button--emphasis-quaternary_doayp_105:active:not(:disabled){background-color:rgba(var(--error-text-color-rgb, var(--color-danger-rgb)),.16)}._button--destructive_doayp_130._button--emphasis-quaternary_doayp_105:disabled{color:rgba(var(--center-channel-color-rgb),.32)}._button--destructive_doayp_130._button--emphasis-link_doayp_118{color:var(--error-text, var(--color-danger))}._button--destructive_doayp_130._button--emphasis-link_doayp_118:disabled{color:rgba(var(--center-channel-color-rgb),.32)}._button--appearance-inverted_doayp_193._button--emphasis-primary_doayp_61{background-color:var(--sidebar-text);color:var(--sidebar-bg)}._button--appearance-inverted_doayp_193._button--emphasis-primary_doayp_61:hover:not(:disabled){background-color:rgba(var(--sidebar-text-rgb),.92)}._button--appearance-inverted_doayp_193._button--emphasis-primary_doayp_61:active:not(:disabled){background-color:rgba(var(--sidebar-text-rgb),.88)}._button--appearance-inverted_doayp_193._button--emphasis-primary_doayp_61:disabled{background-color:rgba(var(--sidebar-text-rgb),.08);color:rgba(var(--sidebar-text-rgb),.32)}._button--appearance-inverted_doayp_193._button--emphasis-secondary_doayp_75{color:var(--sidebar-text);box-shadow:inset 0 0 0 1px var(--sidebar-text)}._button--appearance-inverted_doayp_193._button--emphasis-secondary_doayp_75:hover:not(:disabled){background-color:rgba(var(--sidebar-text-rgb),.12)}._button--appearance-inverted_doayp_193._button--emphasis-secondary_doayp_75:active:not(:disabled){background-color:rgba(var(--sidebar-text-rgb),.2)}._button--appearance-inverted_doayp_193._button--emphasis-secondary_doayp_75:disabled{box-shadow:inset 0 0 0 1px rgba(var(--center-channel-color-rgb),.32);color:rgba(var(--center-channel-color-rgb),.32)}._button--appearance-inverted_doayp_193._button--emphasis-tertiary_doayp_91{background-color:rgba(var(--sidebar-text-rgb),.08);color:var(--sidebar-text)}._button--appearance-inverted_doayp_193._button--emphasis-tertiary_doayp_91:hover:not(:disabled){background-color:rgba(var(--sidebar-text-rgb),.12)}._button--appearance-inverted_doayp_193._button--emphasis-tertiary_doayp_91:active:not(:disabled){background-color:rgba(var(--sidebar-text-rgb),.16)}._button--appearance-inverted_doayp_193._button--emphasis-tertiary_doayp_91:disabled{background-color:rgba(var(--sidebar-text-rgb),.08);color:rgba(var(--sidebar-text-rgb),.32)}._button--appearance-inverted_doayp_193._button--emphasis-quaternary_doayp_105{color:var(--sidebar-text)}._button--appearance-inverted_doayp_193._button--emphasis-quaternary_doayp_105:hover:not(:disabled){background-color:rgba(var(--sidebar-text-rgb),.12)}._button--appearance-inverted_doayp_193._button--emphasis-quaternary_doayp_105:active:not(:disabled){background-color:rgba(var(--sidebar-text-rgb),.2)}._button--appearance-inverted_doayp_193._button--emphasis-quaternary_doayp_105:disabled{color:rgba(var(--sidebar-text-rgb),.32)}._button--appearance-inverted_doayp_193._button--emphasis-link_doayp_118{color:var(--sidebar-text)}._button--appearance-inverted_doayp_193._button--emphasis-link_doayp_118:disabled{color:rgba(var(--sidebar-text-rgb),.32)}
|
|
1
|
+
._button_aa8j5_2{--button-fg: inherit;display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-xs);font-family:var(--font-family-body);font-weight:var(--font-weight-semibold);border-radius:var(--radius-s);border:0;white-space:nowrap;cursor:pointer;text-decoration:none;color:var(--button-fg);transition:background-color var(--duration-quick) var(--ease-transition),color var(--duration-quick) var(--ease-transition),box-shadow var(--duration-quick) var(--ease-transition),outline-color var(--duration-quick) var(--ease-transition),outline-offset var(--duration-quick) var(--ease-transition);outline:2px solid color-mix(in srgb,var(--focus-ring-color) 0%,transparent);outline-offset:0}._button_aa8j5_2:any-link,._button_aa8j5_2:hover,._button_aa8j5_2:focus,._button_aa8j5_2:active,._button_aa8j5_2:visited{color:var(--button-fg);text-decoration:none}._button_aa8j5_2:focus-visible{outline-color:var(--focus-ring-color);outline-offset:3px}._button_aa8j5_2:is(:disabled,._button--disabled_aa8j5_28){cursor:not-allowed}._button__label_aa8j5_31{line-height:1;color:var(--button-fg)}._button__icon-slot_aa8j5_35{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--button-fg)}._button--size-x-small_aa8j5_42{padding:var(--spacing-xxxs) var(--spacing-m)}._button--size-x-small_aa8j5_42 ._button__label_aa8j5_31{font-size:var(--font-size-75);line-height:var(--line-height-75)}._button--size-small_aa8j5_49{padding:var(--spacing-xs) var(--spacing-l)}._button--size-small_aa8j5_49 ._button__label_aa8j5_31{font-size:var(--font-size-75);line-height:var(--line-height-75)}._button--size-medium_aa8j5_56{padding:var(--spacing-s) var(--spacing-xl)}._button--size-medium_aa8j5_56 ._button__label_aa8j5_31{font-size:var(--font-size-100);line-height:var(--line-height-100)}._button--size-large_aa8j5_63{padding:var(--spacing-m) var(--spacing-xxl)}._button--size-large_aa8j5_63 ._button__label_aa8j5_31{font-size:var(--font-size-200);line-height:var(--line-height-200)}._button--emphasis-primary_aa8j5_70{--button-fg: var(--button-color);background-color:var(--button-bg)}._button--emphasis-primary_aa8j5_70:hover:not(:disabled,._button--disabled_aa8j5_28){background-color:color-mix(in srgb,black 8%,var(--button-bg))}._button--emphasis-primary_aa8j5_70:active:not(:disabled,._button--disabled_aa8j5_28){background-color:color-mix(in srgb,black 16%,var(--button-bg))}._button--emphasis-primary_aa8j5_70:is(:disabled,._button--disabled_aa8j5_28){--button-fg: rgba(var(--center-channel-color-rgb), .32);background-color:rgba(var(--center-channel-color-rgb),.08)}._button--emphasis-secondary_aa8j5_84{--focus-ring-color: var(--link-color);--button-fg: var(--link-color);background-color:transparent;box-shadow:inset 0 0 0 1px var(--link-color)}._button--emphasis-secondary_aa8j5_84:hover:not(:disabled,._button--disabled_aa8j5_28){background-color:rgba(var(--link-color-rgb),.08)}._button--emphasis-secondary_aa8j5_84:active:not(:disabled,._button--disabled_aa8j5_28){background-color:rgba(var(--link-color-rgb),.16)}._button--emphasis-secondary_aa8j5_84:is(:disabled,._button--disabled_aa8j5_28){--button-fg: rgba(var(--center-channel-color-rgb), .32);box-shadow:inset 0 0 0 1px rgba(var(--center-channel-color-rgb),.32)}._button--emphasis-tertiary_aa8j5_100{--button-fg: var(--link-color);background-color:rgba(var(--link-color-rgb),.08)}._button--emphasis-tertiary_aa8j5_100:hover:not(:disabled,._button--disabled_aa8j5_28){background-color:rgba(var(--link-color-rgb),.12)}._button--emphasis-tertiary_aa8j5_100:active:not(:disabled,._button--disabled_aa8j5_28){background-color:rgba(var(--link-color-rgb),.16)}._button--emphasis-tertiary_aa8j5_100:is(:disabled,._button--disabled_aa8j5_28){--button-fg: rgba(var(--center-channel-color-rgb), .32);background-color:rgba(var(--center-channel-color-rgb),.08)}._button--emphasis-quaternary_aa8j5_114{--button-fg: var(--link-color);background-color:transparent}._button--emphasis-quaternary_aa8j5_114:hover:not(:disabled,._button--disabled_aa8j5_28){background-color:rgba(var(--link-color-rgb),.08)}._button--emphasis-quaternary_aa8j5_114:active:not(:disabled,._button--disabled_aa8j5_28){background-color:rgba(var(--link-color-rgb),.12)}._button--emphasis-quaternary_aa8j5_114:is(:disabled,._button--disabled_aa8j5_28){--button-fg: rgba(var(--center-channel-color-rgb), .32)}._button--emphasis-link_aa8j5_127{--focus-ring-color: var(--link-color);--button-fg: var(--link-color);padding:0;background-color:transparent;align-self:flex-start;height:fit-content}._button--emphasis-link_aa8j5_127:hover:not(:disabled,._button--disabled_aa8j5_28) ._button__label_aa8j5_31{text-decoration:underline}._button--emphasis-link_aa8j5_127:is(:disabled,._button--disabled_aa8j5_28){--button-fg: rgba(var(--center-channel-color-rgb), .32)}._button--destructive_aa8j5_141{--focus-ring-color: var(--error-text, var(--color-danger))}._button--destructive_aa8j5_141._button--emphasis-primary_aa8j5_70{--button-fg: var(--button-color);background-color:var(--error-text, var(--color-danger))}._button--destructive_aa8j5_141._button--emphasis-primary_aa8j5_70:hover:not(:disabled,._button--disabled_aa8j5_28){background-color:color-mix(in srgb,black 8%,var(--error-text, var(--color-danger)))}._button--destructive_aa8j5_141._button--emphasis-primary_aa8j5_70:active:not(:disabled,._button--disabled_aa8j5_28){background-color:color-mix(in srgb,black 16%,var(--error-text, var(--color-danger)))}._button--destructive_aa8j5_141._button--emphasis-primary_aa8j5_70:is(:disabled,._button--disabled_aa8j5_28){--button-fg: rgba(var(--center-channel-color-rgb), .32);background-color:rgba(var(--center-channel-color-rgb),.08)}._button--destructive_aa8j5_141._button--emphasis-secondary_aa8j5_84{--button-fg: var(--error-text, var(--color-danger));box-shadow:inset 0 0 0 1px var(--error-text, var(--color-danger))}._button--destructive_aa8j5_141._button--emphasis-secondary_aa8j5_84:hover:not(:disabled,._button--disabled_aa8j5_28){background-color:rgba(var(--error-text-color-rgb, var(--color-danger-rgb)),.08)}._button--destructive_aa8j5_141._button--emphasis-secondary_aa8j5_84:active:not(:disabled,._button--disabled_aa8j5_28){background-color:rgba(var(--error-text-color-rgb, var(--color-danger-rgb)),.16)}._button--destructive_aa8j5_141._button--emphasis-secondary_aa8j5_84:is(:disabled,._button--disabled_aa8j5_28){--button-fg: rgba(var(--center-channel-color-rgb), .32);box-shadow:inset 0 0 0 1px rgba(var(--center-channel-color-rgb),.32)}._button--destructive_aa8j5_141._button--emphasis-tertiary_aa8j5_100{--button-fg: var(--error-text, var(--color-danger));background-color:rgba(var(--error-text-color-rgb, var(--color-danger-rgb)),.08)}._button--destructive_aa8j5_141._button--emphasis-tertiary_aa8j5_100:hover:not(:disabled,._button--disabled_aa8j5_28){background-color:rgba(var(--error-text-color-rgb, var(--color-danger-rgb)),.12)}._button--destructive_aa8j5_141._button--emphasis-tertiary_aa8j5_100:active:not(:disabled,._button--disabled_aa8j5_28){background-color:rgba(var(--error-text-color-rgb, var(--color-danger-rgb)),.16)}._button--destructive_aa8j5_141._button--emphasis-tertiary_aa8j5_100:is(:disabled,._button--disabled_aa8j5_28){--button-fg: rgba(var(--center-channel-color-rgb), .32);background-color:rgba(var(--center-channel-color-rgb),.08)}._button--destructive_aa8j5_141._button--emphasis-quaternary_aa8j5_114{--button-fg: var(--error-text, var(--color-danger))}._button--destructive_aa8j5_141._button--emphasis-quaternary_aa8j5_114:hover:not(:disabled,._button--disabled_aa8j5_28){background-color:rgba(var(--error-text-color-rgb, var(--color-danger-rgb)),.08)}._button--destructive_aa8j5_141._button--emphasis-quaternary_aa8j5_114:active:not(:disabled,._button--disabled_aa8j5_28){background-color:rgba(var(--error-text-color-rgb, var(--color-danger-rgb)),.16)}._button--destructive_aa8j5_141._button--emphasis-quaternary_aa8j5_114:is(:disabled,._button--disabled_aa8j5_28){--button-fg: rgba(var(--center-channel-color-rgb), .32)}._button--destructive_aa8j5_141._button--emphasis-link_aa8j5_127{--button-fg: var(--error-text, var(--color-danger))}._button--destructive_aa8j5_141._button--emphasis-link_aa8j5_127:is(:disabled,._button--disabled_aa8j5_28){--button-fg: rgba(var(--center-channel-color-rgb), .32)}._button--appearance-inverted_aa8j5_204._button--emphasis-primary_aa8j5_70{--button-fg: var(--sidebar-bg);background-color:var(--sidebar-text)}._button--appearance-inverted_aa8j5_204._button--emphasis-primary_aa8j5_70:hover:not(:disabled,._button--disabled_aa8j5_28){background-color:rgba(var(--sidebar-text-rgb),.92)}._button--appearance-inverted_aa8j5_204._button--emphasis-primary_aa8j5_70:active:not(:disabled,._button--disabled_aa8j5_28){background-color:rgba(var(--sidebar-text-rgb),.88)}._button--appearance-inverted_aa8j5_204._button--emphasis-primary_aa8j5_70:is(:disabled,._button--disabled_aa8j5_28){--button-fg: rgba(var(--sidebar-text-rgb), .32);background-color:rgba(var(--sidebar-text-rgb),.08)}._button--appearance-inverted_aa8j5_204._button--emphasis-secondary_aa8j5_84{--button-fg: var(--sidebar-text);box-shadow:inset 0 0 0 1px var(--sidebar-text)}._button--appearance-inverted_aa8j5_204._button--emphasis-secondary_aa8j5_84:hover:not(:disabled,._button--disabled_aa8j5_28){background-color:rgba(var(--sidebar-text-rgb),.12)}._button--appearance-inverted_aa8j5_204._button--emphasis-secondary_aa8j5_84:active:not(:disabled,._button--disabled_aa8j5_28){background-color:rgba(var(--sidebar-text-rgb),.2)}._button--appearance-inverted_aa8j5_204._button--emphasis-secondary_aa8j5_84:is(:disabled,._button--disabled_aa8j5_28){--button-fg: rgba(var(--center-channel-color-rgb), .32);box-shadow:inset 0 0 0 1px rgba(var(--center-channel-color-rgb),.32)}._button--appearance-inverted_aa8j5_204._button--emphasis-tertiary_aa8j5_100{--button-fg: var(--sidebar-text);background-color:rgba(var(--sidebar-text-rgb),.08)}._button--appearance-inverted_aa8j5_204._button--emphasis-tertiary_aa8j5_100:hover:not(:disabled,._button--disabled_aa8j5_28){background-color:rgba(var(--sidebar-text-rgb),.12)}._button--appearance-inverted_aa8j5_204._button--emphasis-tertiary_aa8j5_100:active:not(:disabled,._button--disabled_aa8j5_28){background-color:rgba(var(--sidebar-text-rgb),.16)}._button--appearance-inverted_aa8j5_204._button--emphasis-tertiary_aa8j5_100:is(:disabled,._button--disabled_aa8j5_28){--button-fg: rgba(var(--sidebar-text-rgb), .32);background-color:rgba(var(--sidebar-text-rgb),.08)}._button--appearance-inverted_aa8j5_204._button--emphasis-quaternary_aa8j5_114{--button-fg: var(--sidebar-text)}._button--appearance-inverted_aa8j5_204._button--emphasis-quaternary_aa8j5_114:hover:not(:disabled,._button--disabled_aa8j5_28){background-color:rgba(var(--sidebar-text-rgb),.12)}._button--appearance-inverted_aa8j5_204._button--emphasis-quaternary_aa8j5_114:active:not(:disabled,._button--disabled_aa8j5_28){background-color:rgba(var(--sidebar-text-rgb),.2)}._button--appearance-inverted_aa8j5_204._button--emphasis-quaternary_aa8j5_114:is(:disabled,._button--disabled_aa8j5_28){--button-fg: rgba(var(--sidebar-text-rgb), .32)}._button--appearance-inverted_aa8j5_204._button--emphasis-link_aa8j5_127{--button-fg: var(--sidebar-text)}._button--appearance-inverted_aa8j5_204._button--emphasis-link_aa8j5_127:is(:disabled,._button--disabled_aa8j5_28){--button-fg: rgba(var(--sidebar-text-rgb), .32)}
|
|
@@ -1,32 +1,63 @@
|
|
|
1
|
-
import { ButtonHTMLAttributes, ReactNode } from 'react';
|
|
1
|
+
import { ButtonHTMLAttributes, HTMLAttributes, ReactElement, ReactNode, RefAttributes } from 'react';
|
|
2
2
|
export type ButtonEmphasis = 'primary' | 'secondary' | 'tertiary' | 'quaternary' | 'link';
|
|
3
3
|
export type ButtonSize = 'x-small' | 'small' | 'medium' | 'large';
|
|
4
4
|
export type ButtonAppearance = 'default' | 'inverted';
|
|
5
|
-
|
|
5
|
+
interface ButtonOwnProps {
|
|
6
6
|
/** default | inverted (for use on dark backgrounds). Maps to Figma "Style". */
|
|
7
7
|
appearance?: ButtonAppearance;
|
|
8
8
|
/** Optional CSS class name. */
|
|
9
9
|
className?: string;
|
|
10
|
-
/** Button label. */
|
|
11
|
-
children: ReactNode;
|
|
12
10
|
/** When true, uses destructive (danger) styling. */
|
|
13
11
|
destructive?: boolean;
|
|
14
12
|
/** Visual emphasis. Default: primary. */
|
|
15
13
|
emphasis?: ButtonEmphasis;
|
|
16
14
|
/** Leading icon — pass `<Icon glyph={<YourIcon />} />`. Button provides the correct size via context; no `size` prop needed on the Icon. */
|
|
17
15
|
leadingIcon?: ReactNode;
|
|
18
|
-
/** When true, shows a Spinner in the leading slot and disables the button. */
|
|
16
|
+
/** When true, shows a Spinner in the leading slot and disables the button (or blocks navigation when `asChild`). */
|
|
19
17
|
loading?: boolean;
|
|
20
18
|
/** Size variant. Default: medium. */
|
|
21
19
|
size?: ButtonSize;
|
|
22
20
|
/** Trailing icon — pass `<Icon glyph={<YourIcon />} />`. Button provides the correct size via context; no `size` prop needed on the Icon. */
|
|
23
21
|
trailingIcon?: ReactNode;
|
|
22
|
+
/**
|
|
23
|
+
* When true, disables the control. On a native `<button>`, sets the `disabled`
|
|
24
|
+
* attribute. With `asChild`, sets `aria-disabled`, applies disabled styles, and
|
|
25
|
+
* blocks click / middle-click navigation (the link stays focusable).
|
|
26
|
+
*/
|
|
27
|
+
disabled?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export interface ButtonProps extends ButtonOwnProps, ButtonHTMLAttributes<HTMLButtonElement> {
|
|
30
|
+
/**
|
|
31
|
+
* When true, merges Button props onto the single child element instead of
|
|
32
|
+
* rendering a `<button>`. Use with `<a>` or a router `Link`. Default: false.
|
|
33
|
+
*/
|
|
34
|
+
asChild?: false;
|
|
35
|
+
/** Button label. */
|
|
36
|
+
children: ReactNode;
|
|
37
|
+
}
|
|
38
|
+
export interface ButtonAsChildProps extends ButtonOwnProps, Omit<HTMLAttributes<HTMLElement>, 'children' | 'color'> {
|
|
39
|
+
/**
|
|
40
|
+
* Merges Button props onto the single child element instead of rendering a
|
|
41
|
+
* `<button>`. The child's own props (`href`, `to`, `target`, …) stay on the
|
|
42
|
+
* child. Do not pass `type` — it is not forwarded.
|
|
43
|
+
*/
|
|
44
|
+
asChild: true;
|
|
45
|
+
/** Single element to render as the Button (e.g. `<a>` or `<Link>`). Its children become the label. */
|
|
46
|
+
children: ReactElement;
|
|
24
47
|
}
|
|
48
|
+
type ButtonComponent = {
|
|
49
|
+
(props: ButtonAsChildProps & RefAttributes<HTMLElement>): ReactElement | null;
|
|
50
|
+
(props: ButtonProps & RefAttributes<HTMLButtonElement>): ReactElement | null;
|
|
51
|
+
displayName?: string;
|
|
52
|
+
};
|
|
25
53
|
/**
|
|
26
54
|
* Buttons let people take actions or make decisions with a single tap or click — saving a
|
|
27
55
|
* form, sending a message, confirming a dialog. Compass ships several button variants, each
|
|
28
56
|
* with the same anatomy and rhythm so they feel like members of the same family.
|
|
57
|
+
*
|
|
58
|
+
* Pass `asChild` with a single `<a>` or router `Link` child to render a navigational CTA
|
|
59
|
+
* with Button styling and anatomy (no nested `<button>`).
|
|
29
60
|
*/
|
|
30
|
-
declare const Button:
|
|
61
|
+
declare const Button: ButtonComponent;
|
|
31
62
|
export default Button;
|
|
32
63
|
//# sourceMappingURL=Button.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/components/button/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,oBAAoB,EACzB,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/components/button/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,SAAS,EAEd,KAAK,aAAa,EACnB,MAAM,OAAO,CAAC;AASf,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,WAAW,GACX,UAAU,GACV,YAAY,GACZ,MAAM,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAElE,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,UAAU,CAAC;AAEtD,UAAU,cAAc;IACtB,+EAA+E;IAC/E,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,+BAA+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,4IAA4I;IAC5I,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,oHAAoH;IACpH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qCAAqC;IACrC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,6IAA6I;IAC7I,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,WACf,SAAQ,cAAc,EAAE,oBAAoB,CAAC,iBAAiB,CAAC;IAC/D;;;OAGG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,oBAAoB;IACpB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,WAAW,kBACf,SACE,cAAc,EACd,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;IACzD;;;;OAIG;IACH,OAAO,EAAE,IAAI,CAAC;IACd,sGAAsG;IACtG,QAAQ,EAAE,YAAY,CAAC;CACxB;AASD,KAAK,eAAe,GAAG;IACrB,CAAC,KAAK,EAAE,kBAAkB,GAAG,aAAa,CAAC,WAAW,CAAC,GAAG,YAAY,GAAG,IAAI,CAAC;IAC9E,CAAC,KAAK,EAAE,WAAW,GAAG,aAAa,CAAC,iBAAiB,CAAC,GAAG,YAAY,GAAG,IAAI,CAAC;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AA2BF;;;;;;;GAOG;AACH,QAAA,MAAM,MAAM,EA2IN,eAAe,CAAC;AAItB,eAAe,MAAM,CAAC"}
|
|
@@ -1,60 +1,122 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { forwardRef as
|
|
3
|
-
import { IconSlotContext as
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
|
|
1
|
+
import { jsx as e, jsxs as z, Fragment as G } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as H, isValidElement as o } from "react";
|
|
3
|
+
import { IconSlotContext as r } from "../icon/Icon.js";
|
|
4
|
+
import C from "../spinner/Spinner.js";
|
|
5
|
+
import { renderAsChild as J } from "../../utils/slot.js";
|
|
6
|
+
import { toKebab as I } from "../../utils/string.js";
|
|
7
|
+
import a from "./Button.module.scss.js";
|
|
8
|
+
const y = {
|
|
8
9
|
"x-small": "12",
|
|
9
10
|
small: "12",
|
|
10
11
|
medium: "16",
|
|
11
12
|
large: "20"
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
13
|
+
};
|
|
14
|
+
function S({
|
|
15
|
+
appearance: m = "default",
|
|
16
|
+
className: i = "",
|
|
17
|
+
destructive: n = !1,
|
|
18
|
+
emphasis: t = "primary",
|
|
19
|
+
size: d = "medium"
|
|
20
|
+
}) {
|
|
21
|
+
return [
|
|
22
|
+
a.button,
|
|
23
|
+
a[`button--emphasis-${I(t)}`],
|
|
24
|
+
a[`button--size-${I(d)}`],
|
|
25
|
+
m === "inverted" ? a["button--appearance-inverted"] : "",
|
|
26
|
+
n ? a["button--destructive"] : "",
|
|
27
|
+
i
|
|
28
|
+
].filter(Boolean).join(" ");
|
|
29
|
+
}
|
|
30
|
+
const Q = H(function(i, n) {
|
|
31
|
+
if (i.asChild) {
|
|
32
|
+
const {
|
|
33
|
+
appearance: f = "default",
|
|
34
|
+
className: L = "",
|
|
35
|
+
destructive: R = !1,
|
|
36
|
+
emphasis: $ = "primary",
|
|
37
|
+
children: F,
|
|
38
|
+
leadingIcon: v,
|
|
39
|
+
loading: s = !1,
|
|
40
|
+
size: g = "medium",
|
|
41
|
+
trailingIcon: N,
|
|
42
|
+
disabled: K,
|
|
43
|
+
asChild: W,
|
|
44
|
+
...M
|
|
45
|
+
} = i, O = S({
|
|
46
|
+
appearance: f,
|
|
47
|
+
className: L,
|
|
48
|
+
destructive: R,
|
|
49
|
+
emphasis: $,
|
|
50
|
+
size: g
|
|
51
|
+
}), u = y[g], V = s || o(v), Z = !!(K || s), _ = F, k = V ? /* @__PURE__ */ e("span", { className: a["button__icon-slot"], "aria-hidden": !0, children: s ? /* @__PURE__ */ e(
|
|
52
|
+
C,
|
|
53
|
+
{
|
|
54
|
+
size: u,
|
|
55
|
+
inverted: f === "inverted"
|
|
56
|
+
}
|
|
57
|
+
) : /* @__PURE__ */ e(r.Provider, { value: { size: u }, children: v }) }) : null, q = !s && o(N) ? /* @__PURE__ */ e("span", { className: a["button__icon-slot"], "aria-hidden": !0, children: /* @__PURE__ */ e(r.Provider, { value: { size: u }, children: N }) }) : null;
|
|
58
|
+
return J({
|
|
59
|
+
child: _,
|
|
60
|
+
props: {
|
|
61
|
+
...M,
|
|
62
|
+
className: O,
|
|
63
|
+
...s ? { "aria-busy": !0 } : null
|
|
64
|
+
},
|
|
65
|
+
ref: n,
|
|
66
|
+
content: /* @__PURE__ */ z(G, { children: [
|
|
67
|
+
k,
|
|
68
|
+
/* @__PURE__ */ e("span", { className: a.button__label, children: _.props.children }),
|
|
69
|
+
q
|
|
70
|
+
] }),
|
|
71
|
+
disabled: Z,
|
|
72
|
+
disabledClassName: a["button--disabled"]
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
const {
|
|
76
|
+
appearance: t = "default",
|
|
77
|
+
className: d = "",
|
|
78
|
+
destructive: B = !1,
|
|
79
|
+
emphasis: x = "primary",
|
|
80
|
+
children: P,
|
|
81
|
+
leadingIcon: p,
|
|
82
|
+
loading: l = !1,
|
|
83
|
+
size: h = "medium",
|
|
84
|
+
trailingIcon: b,
|
|
85
|
+
disabled: j,
|
|
86
|
+
type: w = "button",
|
|
87
|
+
asChild: T,
|
|
88
|
+
...D
|
|
89
|
+
} = i, A = S({
|
|
90
|
+
appearance: t,
|
|
91
|
+
className: d,
|
|
92
|
+
destructive: B,
|
|
93
|
+
emphasis: x,
|
|
94
|
+
size: h
|
|
95
|
+
}), c = y[h], E = l || o(p);
|
|
96
|
+
return /* @__PURE__ */ z(
|
|
35
97
|
"button",
|
|
36
98
|
{
|
|
37
|
-
ref:
|
|
38
|
-
className:
|
|
39
|
-
type:
|
|
40
|
-
disabled:
|
|
41
|
-
...
|
|
99
|
+
ref: n,
|
|
100
|
+
className: A,
|
|
101
|
+
type: w,
|
|
102
|
+
disabled: !!(j || l),
|
|
103
|
+
...D,
|
|
42
104
|
children: [
|
|
43
|
-
|
|
44
|
-
|
|
105
|
+
E ? /* @__PURE__ */ e("span", { className: a["button__icon-slot"], "aria-hidden": !0, children: l ? /* @__PURE__ */ e(
|
|
106
|
+
C,
|
|
45
107
|
{
|
|
46
|
-
size:
|
|
47
|
-
inverted:
|
|
108
|
+
size: c,
|
|
109
|
+
inverted: t === "inverted"
|
|
48
110
|
}
|
|
49
|
-
) : /* @__PURE__ */ e(
|
|
50
|
-
/* @__PURE__ */ e("span", { className:
|
|
51
|
-
|
|
111
|
+
) : /* @__PURE__ */ e(r.Provider, { value: { size: c }, children: p }) }) : null,
|
|
112
|
+
/* @__PURE__ */ e("span", { className: a.button__label, children: P }),
|
|
113
|
+
!l && o(b) ? /* @__PURE__ */ e("span", { className: a["button__icon-slot"], "aria-hidden": !0, children: /* @__PURE__ */ e(r.Provider, { value: { size: c }, children: b }) }) : null
|
|
52
114
|
]
|
|
53
115
|
}
|
|
54
116
|
);
|
|
55
117
|
});
|
|
56
|
-
|
|
118
|
+
Q.displayName = "Button";
|
|
57
119
|
export {
|
|
58
|
-
|
|
120
|
+
Q as default
|
|
59
121
|
};
|
|
60
122
|
//# sourceMappingURL=Button.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.js","sources":["../../../src/components/button/Button.tsx"],"sourcesContent":["import {\n forwardRef,\n isValidElement,\n type ButtonHTMLAttributes,\n type ReactNode,\n} from 'react';\nimport type { IconSize } from '@/components/icon/Icon';\nimport { IconSlotContext } from '@/components/icon/Icon';\nimport Spinner from '@/components/spinner/Spinner';\nimport type { SpinnerSize } from '@/components/spinner/Spinner';\nimport { toKebab } from '@/utils/string';\nimport styles from './Button.module.scss';\n\nexport type ButtonEmphasis =\n | 'primary'\n | 'secondary'\n | 'tertiary'\n | 'quaternary'\n | 'link';\n\nexport type ButtonSize = 'x-small' | 'small' | 'medium' | 'large';\n\nexport type ButtonAppearance = 'default' | 'inverted';\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** default | inverted (for use on dark backgrounds). Maps to Figma \"Style\". */\n appearance?: ButtonAppearance;\n /** Optional CSS class name. */\n className?: string;\n /** Button label. */\n children: ReactNode;\n /** When true, uses destructive (danger) styling. */\n destructive?: boolean;\n /** Visual emphasis. Default: primary. */\n emphasis?: ButtonEmphasis;\n /** Leading icon — pass `<Icon glyph={<YourIcon />} />`. Button provides the correct size via context; no `size` prop needed on the Icon. */\n leadingIcon?: ReactNode;\n /** When true, shows a Spinner in the leading slot and disables the button. */\n loading?: boolean;\n /** Size variant. Default: medium. */\n size?: ButtonSize;\n /** Trailing icon — pass `<Icon glyph={<YourIcon />} />`. Button provides the correct size via context; no `size` prop needed on the Icon. */\n trailingIcon?: ReactNode;\n}\n\nconst SIZE_ICON_MAP: Record<ButtonSize, IconSize> = {\n 'x-small': '12',\n small: '12',\n medium: '16',\n large: '20',\n};\n\n/**\n * Buttons let people take actions or make decisions with a single tap or click — saving a\n * form, sending a message, confirming a dialog. Compass ships several button variants, each\n * with the same anatomy and rhythm so they feel like members of the same family.\n */\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n appearance = 'default',\n className = '',\n destructive = false,\n emphasis = 'primary',\n children,\n leadingIcon,\n loading = false,\n size = 'medium',\n trailingIcon,\n disabled,\n type = 'button',\n ...rest\n },\n ref,\n) {\n const iconSize = SIZE_ICON_MAP[size];\n const emphasisClass = styles[`button--emphasis-${toKebab(emphasis)}`];\n const sizeClass = styles[`button--size-${toKebab(size)}`];\n const appearanceClass =\n appearance === 'inverted' ? styles['button--appearance-inverted'] : '';\n const destructiveClass = destructive ? styles['button--destructive'] : '';\n\n const rootClass = [\n styles.button,\n emphasisClass,\n sizeClass,\n appearanceClass,\n destructiveClass,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const supportsIcons = emphasis !== 'link';\n const showLeadingSlot =\n loading || (supportsIcons && isValidElement(leadingIcon));\n\n return (\n <button\n ref={ref}\n className={rootClass}\n type={type}\n disabled={disabled || loading}\n {...rest}\n >\n {showLeadingSlot ? (\n <span className={styles['button__icon-slot']} aria-hidden>\n {loading ? (\n <Spinner\n size={iconSize as SpinnerSize}\n inverted={appearance === 'inverted'}\n />\n ) : (\n <IconSlotContext.Provider value={{ size: iconSize }}>\n {leadingIcon}\n </IconSlotContext.Provider>\n )}\n </span>\n ) : null}\n <span className={styles['button__label']}>{children}</span>\n {supportsIcons && !loading && isValidElement(trailingIcon) ? (\n <span className={styles['button__icon-slot']} aria-hidden>\n <IconSlotContext.Provider value={{ size: iconSize }}>\n {trailingIcon}\n </IconSlotContext.Provider>\n </span>\n ) : null}\n </button>\n );\n});\n\nButton.displayName = 'Button';\n\nexport default Button;\n"],"names":["SIZE_ICON_MAP","Button","forwardRef","appearance","className","destructive","emphasis","children","leadingIcon","loading","size","trailingIcon","disabled","type","rest","ref","iconSize","emphasisClass","styles","toKebab","sizeClass","appearanceClass","destructiveClass","rootClass","supportsIcons","showLeadingSlot","isValidElement","jsxs","jsx","Spinner","IconSlotContext"],"mappings":";;;;;;AA6CA,MAAMA,IAA8C;AAAA,EAClD,WAAW;AAAA,EACX,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AACT,GAOMC,IAASC,EAA2C,SACxD;AAAA,EACE,YAAAC,IAAa;AAAA,EACb,WAAAC,IAAY;AAAA,EACZ,aAAAC,IAAc;AAAA,EACd,UAAAC,IAAW;AAAA,EACX,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,MAAAC,IAAO;AAAA,EACP,cAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,GAAGC;AACL,GACAC,GACA;AACA,QAAMC,IAAWhB,EAAcU,CAAI,GAC7BO,IAAgBC,EAAO,oBAAoBC,EAAQb,CAAQ,CAAC,EAAE,GAC9Dc,IAAYF,EAAO,gBAAgBC,EAAQT,CAAI,CAAC,EAAE,GAClDW,IACJlB,MAAe,aAAae,EAAO,6BAA6B,IAAI,IAChEI,IAAmBjB,IAAca,EAAO,qBAAqB,IAAI,IAEjEK,IAAY;AAAA,IAChBL,EAAO;AAAA,IACPD;AAAA,IACAG;AAAA,IACAC;AAAA,IACAC;AAAA,IACAlB;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,GAELoB,IAAgBlB,MAAa,QAC7BmB,IACJhB,KAAYe,KAAiBE,EAAelB,CAAW;AAEzD,SACE,gBAAAmB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAZ;AAAA,MACA,WAAWQ;AAAA,MACX,MAAAV;AAAA,MACA,UAAUD,KAAYH;AAAA,MACrB,GAAGK;AAAA,MAEH,UAAA;AAAA,QAAAW,IACC,gBAAAG,EAAC,UAAK,WAAWV,EAAO,mBAAmB,GAAG,eAAW,IACtD,UAAAT,IACC,gBAAAmB;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,MAAMb;AAAA,YACN,UAAUb,MAAe;AAAA,UAAA;AAAA,QAAA,IAG3B,gBAAAyB,EAACE,EAAgB,UAAhB,EAAyB,OAAO,EAAE,MAAMd,EAAA,GACtC,UAAAR,GACH,EAAA,CAEJ,IACE;AAAA,0BACH,QAAA,EAAK,WAAWU,EAAO,eAAmB,UAAAX,GAAS;AAAA,QACnDiB,KAAiB,CAACf,KAAWiB,EAAef,CAAY,IACvD,gBAAAiB,EAAC,QAAA,EAAK,WAAWV,EAAO,mBAAmB,GAAG,eAAW,IACvD,UAAA,gBAAAU,EAACE,EAAgB,UAAhB,EAAyB,OAAO,EAAE,MAAMd,EAAA,GACtC,UAAAL,EAAA,CACH,EAAA,CACF,IACE;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGV,CAAC;AAEDV,EAAO,cAAc;"}
|
|
1
|
+
{"version":3,"file":"Button.js","sources":["../../../src/components/button/Button.tsx"],"sourcesContent":["import {\n forwardRef,\n isValidElement,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type ReactElement,\n type ReactNode,\n type Ref,\n type RefAttributes,\n} from 'react';\nimport type { IconSize } from '@/components/icon/Icon';\nimport { IconSlotContext } from '@/components/icon/Icon';\nimport Spinner from '@/components/spinner/Spinner';\nimport type { SpinnerSize } from '@/components/spinner/Spinner';\nimport { renderAsChild } from '@/utils/slot';\nimport { toKebab } from '@/utils/string';\nimport styles from './Button.module.scss';\n\nexport type ButtonEmphasis =\n | 'primary'\n | 'secondary'\n | 'tertiary'\n | 'quaternary'\n | 'link';\n\nexport type ButtonSize = 'x-small' | 'small' | 'medium' | 'large';\n\nexport type ButtonAppearance = 'default' | 'inverted';\n\ninterface ButtonOwnProps {\n /** default | inverted (for use on dark backgrounds). Maps to Figma \"Style\". */\n appearance?: ButtonAppearance;\n /** Optional CSS class name. */\n className?: string;\n /** When true, uses destructive (danger) styling. */\n destructive?: boolean;\n /** Visual emphasis. Default: primary. */\n emphasis?: ButtonEmphasis;\n /** Leading icon — pass `<Icon glyph={<YourIcon />} />`. Button provides the correct size via context; no `size` prop needed on the Icon. */\n leadingIcon?: ReactNode;\n /** When true, shows a Spinner in the leading slot and disables the button (or blocks navigation when `asChild`). */\n loading?: boolean;\n /** Size variant. Default: medium. */\n size?: ButtonSize;\n /** Trailing icon — pass `<Icon glyph={<YourIcon />} />`. Button provides the correct size via context; no `size` prop needed on the Icon. */\n trailingIcon?: ReactNode;\n /**\n * When true, disables the control. On a native `<button>`, sets the `disabled`\n * attribute. With `asChild`, sets `aria-disabled`, applies disabled styles, and\n * blocks click / middle-click navigation (the link stays focusable).\n */\n disabled?: boolean;\n}\n\nexport interface ButtonProps\n extends ButtonOwnProps, ButtonHTMLAttributes<HTMLButtonElement> {\n /**\n * When true, merges Button props onto the single child element instead of\n * rendering a `<button>`. Use with `<a>` or a router `Link`. Default: false.\n */\n asChild?: false;\n /** Button label. */\n children: ReactNode;\n}\n\nexport interface ButtonAsChildProps\n extends\n ButtonOwnProps,\n Omit<HTMLAttributes<HTMLElement>, 'children' | 'color'> {\n /**\n * Merges Button props onto the single child element instead of rendering a\n * `<button>`. The child's own props (`href`, `to`, `target`, …) stay on the\n * child. Do not pass `type` — it is not forwarded.\n */\n asChild: true;\n /** Single element to render as the Button (e.g. `<a>` or `<Link>`). Its children become the label. */\n children: ReactElement;\n}\n\nconst SIZE_ICON_MAP: Record<ButtonSize, IconSize> = {\n 'x-small': '12',\n small: '12',\n medium: '16',\n large: '20',\n};\n\ntype ButtonComponent = {\n (props: ButtonAsChildProps & RefAttributes<HTMLElement>): ReactElement | null;\n (props: ButtonProps & RefAttributes<HTMLButtonElement>): ReactElement | null;\n displayName?: string;\n};\n\nfunction buildRootClass({\n appearance = 'default',\n className = '',\n destructive = false,\n emphasis = 'primary',\n size = 'medium',\n}: {\n appearance?: ButtonAppearance;\n className?: string;\n destructive?: boolean;\n emphasis?: ButtonEmphasis;\n size?: ButtonSize;\n}): string {\n return [\n styles.button,\n styles[`button--emphasis-${toKebab(emphasis)}`],\n styles[`button--size-${toKebab(size)}`],\n appearance === 'inverted' ? styles['button--appearance-inverted'] : '',\n destructive ? styles['button--destructive'] : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n}\n\n/**\n * Buttons let people take actions or make decisions with a single tap or click — saving a\n * form, sending a message, confirming a dialog. Compass ships several button variants, each\n * with the same anatomy and rhythm so they feel like members of the same family.\n *\n * Pass `asChild` with a single `<a>` or router `Link` child to render a navigational CTA\n * with Button styling and anatomy (no nested `<button>`).\n */\nconst Button = forwardRef(function Button(\n props: ButtonProps | ButtonAsChildProps,\n ref: Ref<HTMLButtonElement | HTMLElement>,\n) {\n if (props.asChild) {\n const {\n appearance = 'default',\n className = '',\n destructive = false,\n emphasis = 'primary',\n children,\n leadingIcon,\n loading = false,\n size = 'medium',\n trailingIcon,\n disabled,\n asChild,\n ...rest\n } = props;\n void asChild;\n\n const rootClass = buildRootClass({\n appearance,\n className,\n destructive,\n emphasis,\n size,\n });\n const iconSize = SIZE_ICON_MAP[size];\n const showLeadingSlot = loading || isValidElement(leadingIcon);\n const isDisabled = Boolean(disabled || loading);\n const child = children as ReactElement<{ children?: ReactNode }>;\n\n const leading = showLeadingSlot ? (\n <span className={styles['button__icon-slot']} aria-hidden>\n {loading ? (\n <Spinner\n size={iconSize as SpinnerSize}\n inverted={appearance === 'inverted'}\n />\n ) : (\n <IconSlotContext.Provider value={{ size: iconSize }}>\n {leadingIcon}\n </IconSlotContext.Provider>\n )}\n </span>\n ) : null;\n\n const trailing =\n !loading && isValidElement(trailingIcon) ? (\n <span className={styles['button__icon-slot']} aria-hidden>\n <IconSlotContext.Provider value={{ size: iconSize }}>\n {trailingIcon}\n </IconSlotContext.Provider>\n </span>\n ) : null;\n\n return renderAsChild({\n child,\n props: {\n ...rest,\n className: rootClass,\n ...(loading ? { 'aria-busy': true } : null),\n },\n ref,\n content: (\n <>\n {leading}\n <span className={styles['button__label']}>\n {child.props.children}\n </span>\n {trailing}\n </>\n ),\n disabled: isDisabled,\n disabledClassName: styles['button--disabled'],\n });\n }\n\n const {\n appearance = 'default',\n className = '',\n destructive = false,\n emphasis = 'primary',\n children,\n leadingIcon,\n loading = false,\n size = 'medium',\n trailingIcon,\n disabled,\n type = 'button',\n asChild,\n ...rest\n } = props;\n void asChild;\n\n const rootClass = buildRootClass({\n appearance,\n className,\n destructive,\n emphasis,\n size,\n });\n const iconSize = SIZE_ICON_MAP[size];\n const showLeadingSlot = loading || isValidElement(leadingIcon);\n const isDisabled = Boolean(disabled || loading);\n\n return (\n <button\n ref={ref as Ref<HTMLButtonElement>}\n className={rootClass}\n type={type}\n disabled={isDisabled}\n {...rest}\n >\n {showLeadingSlot ? (\n <span className={styles['button__icon-slot']} aria-hidden>\n {loading ? (\n <Spinner\n size={iconSize as SpinnerSize}\n inverted={appearance === 'inverted'}\n />\n ) : (\n <IconSlotContext.Provider value={{ size: iconSize }}>\n {leadingIcon}\n </IconSlotContext.Provider>\n )}\n </span>\n ) : null}\n <span className={styles['button__label']}>{children}</span>\n {!loading && isValidElement(trailingIcon) ? (\n <span className={styles['button__icon-slot']} aria-hidden>\n <IconSlotContext.Provider value={{ size: iconSize }}>\n {trailingIcon}\n </IconSlotContext.Provider>\n </span>\n ) : null}\n </button>\n );\n}) as ButtonComponent;\n\nButton.displayName = 'Button';\n\nexport default Button;\n"],"names":["SIZE_ICON_MAP","buildRootClass","appearance","className","destructive","emphasis","size","styles","toKebab","Button","forwardRef","props","ref","children","leadingIcon","loading","trailingIcon","disabled","asChild","rest","rootClass","iconSize","showLeadingSlot","isValidElement","isDisabled","child","leading","jsx","Spinner","IconSlotContext","trailing","renderAsChild","jsxs","Fragment","type"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./Button.css');const t="
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./Button.css');const t="_button_aa8j5_2",a="_button__label_aa8j5_31",e={button:t,"button--disabled":"_button--disabled_aa8j5_28",button__label:a,"button__icon-slot":"_button__icon-slot_aa8j5_35","button--size-x-small":"_button--size-x-small_aa8j5_42","button--size-small":"_button--size-small_aa8j5_49","button--size-medium":"_button--size-medium_aa8j5_56","button--size-large":"_button--size-large_aa8j5_63","button--emphasis-primary":"_button--emphasis-primary_aa8j5_70","button--emphasis-secondary":"_button--emphasis-secondary_aa8j5_84","button--emphasis-tertiary":"_button--emphasis-tertiary_aa8j5_100","button--emphasis-quaternary":"_button--emphasis-quaternary_aa8j5_114","button--emphasis-link":"_button--emphasis-link_aa8j5_127","button--destructive":"_button--destructive_aa8j5_141","button--appearance-inverted":"_button--appearance-inverted_aa8j5_204"};exports.button=t;exports.button__label=a;exports.default=e;
|
|
2
2
|
//# sourceMappingURL=Button.module.scss.cjs.map
|