@vitinnczk/onyx-ui 0.0.0-stage → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/LICENSE +21 -0
- package/README.md +330 -2
- package/dist/components/Accordion/Accordion.d.ts +42 -0
- package/dist/components/Accordion/Accordion.js +105 -0
- package/dist/components/Accordion/Accordion.js.map +1 -0
- package/dist/components/Accordion/Accordion.module.js +14 -0
- package/dist/components/Accordion/Accordion.module.js.map +1 -0
- package/dist/components/Accordion/index.d.ts +2 -0
- package/dist/components/Alert/Alert.d.ts +26 -0
- package/dist/components/Alert/Alert.js +58 -0
- package/dist/components/Alert/Alert.js.map +1 -0
- package/dist/components/Alert/Alert.module.js +19 -0
- package/dist/components/Alert/Alert.module.js.map +1 -0
- package/dist/components/Alert/index.d.ts +2 -0
- package/dist/components/Avatar/Avatar.d.ts +16 -0
- package/dist/components/Avatar/Avatar.js +33 -0
- package/dist/components/Avatar/Avatar.js.map +1 -0
- package/dist/components/Avatar/Avatar.module.js +15 -0
- package/dist/components/Avatar/Avatar.module.js.map +1 -0
- package/dist/components/Avatar/index.d.ts +2 -0
- package/dist/components/Badge/Badge.d.ts +15 -0
- package/dist/components/Badge/Badge.js +17 -0
- package/dist/components/Badge/Badge.js.map +1 -0
- package/dist/components/Badge/Badge.module.js +18 -0
- package/dist/components/Badge/Badge.module.js.map +1 -0
- package/dist/components/Badge/index.d.ts +2 -0
- package/dist/components/Breadcrumb/Breadcrumb.d.ts +26 -0
- package/dist/components/Breadcrumb/Breadcrumb.js +44 -0
- package/dist/components/Breadcrumb/Breadcrumb.js.map +1 -0
- package/dist/components/Breadcrumb/Breadcrumb.module.js +11 -0
- package/dist/components/Breadcrumb/Breadcrumb.module.js.map +1 -0
- package/dist/components/Breadcrumb/index.d.ts +2 -0
- package/dist/components/Button/Button.d.ts +29 -0
- package/dist/components/Button/Button.js +40 -0
- package/dist/components/Button/Button.js.map +1 -0
- package/dist/components/Button/Button.module.js +18 -0
- package/dist/components/Button/Button.module.js.map +1 -0
- package/dist/components/Button/index.d.ts +2 -0
- package/dist/components/Card/Card.d.ts +24 -0
- package/dist/components/Card/Card.js +34 -0
- package/dist/components/Card/Card.js.map +1 -0
- package/dist/components/Card/Card.module.js +17 -0
- package/dist/components/Card/Card.module.js.map +1 -0
- package/dist/components/Card/index.d.ts +2 -0
- package/dist/components/Checkbox/Checkbox.d.ts +21 -0
- package/dist/components/Checkbox/Checkbox.js +52 -0
- package/dist/components/Checkbox/Checkbox.js.map +1 -0
- package/dist/components/Checkbox/Checkbox.module.js +9 -0
- package/dist/components/Checkbox/Checkbox.module.js.map +1 -0
- package/dist/components/Checkbox/index.d.ts +2 -0
- package/dist/components/Divider/Divider.d.ts +18 -0
- package/dist/components/Divider/Divider.js +24 -0
- package/dist/components/Divider/Divider.js.map +1 -0
- package/dist/components/Divider/Divider.module.js +12 -0
- package/dist/components/Divider/Divider.module.js.map +1 -0
- package/dist/components/Divider/index.d.ts +2 -0
- package/dist/components/Drawer/Drawer.d.ts +18 -0
- package/dist/components/Drawer/Drawer.js +27 -0
- package/dist/components/Drawer/Drawer.js.map +1 -0
- package/dist/components/Drawer/Drawer.module.js +17 -0
- package/dist/components/Drawer/Drawer.module.js.map +1 -0
- package/dist/components/Drawer/index.d.ts +2 -0
- package/dist/components/DropdownMenu/DropdownMenu.d.ts +65 -0
- package/dist/components/DropdownMenu/DropdownMenu.js +159 -0
- package/dist/components/DropdownMenu/DropdownMenu.js.map +1 -0
- package/dist/components/DropdownMenu/DropdownMenu.module.js +16 -0
- package/dist/components/DropdownMenu/DropdownMenu.module.js.map +1 -0
- package/dist/components/DropdownMenu/index.d.ts +2 -0
- package/dist/components/EmptyState/EmptyState.d.ts +20 -0
- package/dist/components/EmptyState/EmptyState.js +36 -0
- package/dist/components/EmptyState/EmptyState.js.map +1 -0
- package/dist/components/EmptyState/EmptyState.module.js +12 -0
- package/dist/components/EmptyState/EmptyState.module.js.map +1 -0
- package/dist/components/EmptyState/index.d.ts +2 -0
- package/dist/components/FormField/FormField.d.ts +24 -0
- package/dist/components/FormField/FormField.js +49 -0
- package/dist/components/FormField/FormField.js.map +1 -0
- package/dist/components/FormField/FormField.module.js +10 -0
- package/dist/components/FormField/FormField.module.js.map +1 -0
- package/dist/components/FormField/formFieldContext.d.ts +24 -0
- package/dist/components/FormField/formFieldContext.js +18 -0
- package/dist/components/FormField/formFieldContext.js.map +1 -0
- package/dist/components/FormField/index.d.ts +2 -0
- package/dist/components/Heading/Heading.d.ts +14 -0
- package/dist/components/Heading/Heading.js +32 -0
- package/dist/components/Heading/Heading.js.map +1 -0
- package/dist/components/Heading/Heading.module.js +14 -0
- package/dist/components/Heading/Heading.module.js.map +1 -0
- package/dist/components/Heading/index.d.ts +2 -0
- package/dist/components/Icon/Icon.d.ts +16 -0
- package/dist/components/Icon/Icon.js +28 -0
- package/dist/components/Icon/Icon.js.map +1 -0
- package/dist/components/Icon/Icon.module.js +13 -0
- package/dist/components/Icon/Icon.module.js.map +1 -0
- package/dist/components/Icon/icons.d.ts +17 -0
- package/dist/components/Icon/icons.js +47 -0
- package/dist/components/Icon/icons.js.map +1 -0
- package/dist/components/Icon/index.d.ts +3 -0
- package/dist/components/IconButton/IconButton.d.ts +12 -0
- package/dist/components/IconButton/IconButton.js +25 -0
- package/dist/components/IconButton/IconButton.js.map +1 -0
- package/dist/components/IconButton/IconButton.module.js +11 -0
- package/dist/components/IconButton/IconButton.module.js.map +1 -0
- package/dist/components/IconButton/index.d.ts +2 -0
- package/dist/components/Input/Input.d.ts +18 -0
- package/dist/components/Input/Input.js +47 -0
- package/dist/components/Input/Input.js.map +1 -0
- package/dist/components/Input/Input.module.js +5 -0
- package/dist/components/Input/Input.module.js.map +1 -0
- package/dist/components/Input/index.d.ts +2 -0
- package/dist/components/Label/Label.d.ts +15 -0
- package/dist/components/Label/Label.js +22 -0
- package/dist/components/Label/Label.js.map +1 -0
- package/dist/components/Label/Label.module.js +10 -0
- package/dist/components/Label/Label.module.js.map +1 -0
- package/dist/components/Label/index.d.ts +2 -0
- package/dist/components/Link/Link.d.ts +23 -0
- package/dist/components/Link/Link.js +27 -0
- package/dist/components/Link/Link.js.map +1 -0
- package/dist/components/Link/Link.module.js +11 -0
- package/dist/components/Link/Link.module.js.map +1 -0
- package/dist/components/Link/index.d.ts +2 -0
- package/dist/components/Modal/DialogSurface.d.ts +39 -0
- package/dist/components/Modal/DialogSurface.js +69 -0
- package/dist/components/Modal/DialogSurface.js.map +1 -0
- package/dist/components/Modal/DialogSurface.module.js +16 -0
- package/dist/components/Modal/DialogSurface.module.js.map +1 -0
- package/dist/components/Modal/Modal.d.ts +34 -0
- package/dist/components/Modal/Modal.js +44 -0
- package/dist/components/Modal/Modal.js.map +1 -0
- package/dist/components/Modal/Modal.module.js +13 -0
- package/dist/components/Modal/Modal.module.js.map +1 -0
- package/dist/components/Modal/index.d.ts +3 -0
- package/dist/components/Pagination/Pagination.d.ts +46 -0
- package/dist/components/Pagination/Pagination.js +71 -0
- package/dist/components/Pagination/Pagination.js.map +1 -0
- package/dist/components/Pagination/Pagination.module.js +13 -0
- package/dist/components/Pagination/Pagination.module.js.map +1 -0
- package/dist/components/Pagination/index.d.ts +2 -0
- package/dist/components/Popover/Popover.d.ts +46 -0
- package/dist/components/Popover/Popover.js +89 -0
- package/dist/components/Popover/Popover.js.map +1 -0
- package/dist/components/Popover/Popover.module.js +12 -0
- package/dist/components/Popover/Popover.module.js.map +1 -0
- package/dist/components/Popover/index.d.ts +2 -0
- package/dist/components/Portal/Portal.d.ts +10 -0
- package/dist/components/Portal/Portal.js +13 -0
- package/dist/components/Portal/Portal.js.map +1 -0
- package/dist/components/Portal/index.d.ts +2 -0
- package/dist/components/Progress/Progress.d.ts +28 -0
- package/dist/components/Progress/Progress.js +42 -0
- package/dist/components/Progress/Progress.js.map +1 -0
- package/dist/components/Progress/Progress.module.js +18 -0
- package/dist/components/Progress/Progress.module.js.map +1 -0
- package/dist/components/Progress/index.d.ts +2 -0
- package/dist/components/RadioGroup/RadioGroup.d.ts +41 -0
- package/dist/components/RadioGroup/RadioGroup.js +112 -0
- package/dist/components/RadioGroup/RadioGroup.js.map +1 -0
- package/dist/components/RadioGroup/RadioGroup.module.js +16 -0
- package/dist/components/RadioGroup/RadioGroup.module.js.map +1 -0
- package/dist/components/RadioGroup/index.d.ts +2 -0
- package/dist/components/Select/Select.d.ts +19 -0
- package/dist/components/Select/Select.js +44 -0
- package/dist/components/Select/Select.js.map +1 -0
- package/dist/components/Select/Select.module.js +10 -0
- package/dist/components/Select/Select.module.js.map +1 -0
- package/dist/components/Select/index.d.ts +2 -0
- package/dist/components/Skeleton/Skeleton.d.ts +22 -0
- package/dist/components/Skeleton/Skeleton.js +33 -0
- package/dist/components/Skeleton/Skeleton.js.map +1 -0
- package/dist/components/Skeleton/Skeleton.module.js +12 -0
- package/dist/components/Skeleton/Skeleton.module.js.map +1 -0
- package/dist/components/Skeleton/index.d.ts +2 -0
- package/dist/components/Slider/Slider.d.ts +38 -0
- package/dist/components/Slider/Slider.js +55 -0
- package/dist/components/Slider/Slider.js.map +1 -0
- package/dist/components/Slider/Slider.module.js +11 -0
- package/dist/components/Slider/Slider.module.js.map +1 -0
- package/dist/components/Slider/index.d.ts +2 -0
- package/dist/components/Spinner/Spinner.d.ts +22 -0
- package/dist/components/Spinner/Spinner.js +34 -0
- package/dist/components/Spinner/Spinner.js.map +1 -0
- package/dist/components/Spinner/Spinner.module.js +17 -0
- package/dist/components/Spinner/Spinner.module.js.map +1 -0
- package/dist/components/Spinner/index.d.ts +2 -0
- package/dist/components/Switch/Switch.d.ts +17 -0
- package/dist/components/Switch/Switch.js +48 -0
- package/dist/components/Switch/Switch.js.map +1 -0
- package/dist/components/Switch/Switch.module.js +9 -0
- package/dist/components/Switch/Switch.module.js.map +1 -0
- package/dist/components/Switch/index.d.ts +2 -0
- package/dist/components/Table/Table.d.ts +84 -0
- package/dist/components/Table/Table.js +105 -0
- package/dist/components/Table/Table.js.map +1 -0
- package/dist/components/Table/Table.module.js +23 -0
- package/dist/components/Table/Table.module.js.map +1 -0
- package/dist/components/Table/index.d.ts +2 -0
- package/dist/components/Tabs/Tabs.d.ts +41 -0
- package/dist/components/Tabs/Tabs.js +86 -0
- package/dist/components/Tabs/Tabs.js.map +1 -0
- package/dist/components/Tabs/Tabs.module.js +14 -0
- package/dist/components/Tabs/Tabs.module.js.map +1 -0
- package/dist/components/Tabs/index.d.ts +2 -0
- package/dist/components/Text/Text.d.ts +22 -0
- package/dist/components/Text/Text.js +37 -0
- package/dist/components/Text/Text.js.map +1 -0
- package/dist/components/Text/Text.module.js +30 -0
- package/dist/components/Text/Text.module.js.map +1 -0
- package/dist/components/Text/index.d.ts +2 -0
- package/dist/components/Textarea/Textarea.d.ts +17 -0
- package/dist/components/Textarea/Textarea.js +36 -0
- package/dist/components/Textarea/Textarea.js.map +1 -0
- package/dist/components/Textarea/Textarea.module.js +11 -0
- package/dist/components/Textarea/Textarea.module.js.map +1 -0
- package/dist/components/Textarea/index.d.ts +2 -0
- package/dist/components/ThemeProvider/ThemeProvider.d.ts +39 -0
- package/dist/components/ThemeProvider/ThemeProvider.js +36 -0
- package/dist/components/ThemeProvider/ThemeProvider.js.map +1 -0
- package/dist/components/ThemeProvider/index.d.ts +2 -0
- package/dist/components/ThemeProvider/themeStore.d.ts +8 -0
- package/dist/components/ThemeProvider/themeStore.js +36 -0
- package/dist/components/ThemeProvider/themeStore.js.map +1 -0
- package/dist/components/Toast/Toast.d.ts +66 -0
- package/dist/components/Toast/Toast.js +166 -0
- package/dist/components/Toast/Toast.js.map +1 -0
- package/dist/components/Toast/Toast.module.js +27 -0
- package/dist/components/Toast/Toast.module.js.map +1 -0
- package/dist/components/Toast/index.d.ts +2 -0
- package/dist/components/Tooltip/Tooltip.d.ts +40 -0
- package/dist/components/Tooltip/Tooltip.js +63 -0
- package/dist/components/Tooltip/Tooltip.js.map +1 -0
- package/dist/components/Tooltip/Tooltip.module.js +8 -0
- package/dist/components/Tooltip/Tooltip.module.js.map +1 -0
- package/dist/components/Tooltip/index.d.ts +2 -0
- package/dist/components/VisuallyHidden/VisuallyHidden.d.ts +4 -0
- package/dist/components/VisuallyHidden/VisuallyHidden.js +16 -0
- package/dist/components/VisuallyHidden/VisuallyHidden.js.map +1 -0
- package/dist/components/VisuallyHidden/VisuallyHidden.module.js +5 -0
- package/dist/components/VisuallyHidden/VisuallyHidden.module.js.map +1 -0
- package/dist/components/VisuallyHidden/index.d.ts +2 -0
- package/dist/hooks/index.d.ts +10 -0
- package/dist/hooks/useClickOutside.d.ts +10 -0
- package/dist/hooks/useClickOutside.js +21 -0
- package/dist/hooks/useClickOutside.js.map +1 -0
- package/dist/hooks/useControllableState.d.ts +10 -0
- package/dist/hooks/useControllableState.js +16 -0
- package/dist/hooks/useControllableState.js.map +1 -0
- package/dist/hooks/useEscapeKey.d.ts +9 -0
- package/dist/hooks/useEscapeKey.js +21 -0
- package/dist/hooks/useEscapeKey.js.map +1 -0
- package/dist/hooks/useFocusTrap.d.ts +19 -0
- package/dist/hooks/useFocusTrap.js +42 -0
- package/dist/hooks/useFocusTrap.js.map +1 -0
- package/dist/hooks/useLatestRef.d.ts +1 -0
- package/dist/hooks/useLatestRef.js +12 -0
- package/dist/hooks/useLatestRef.js.map +1 -0
- package/dist/hooks/useScrollLock.d.ts +10 -0
- package/dist/hooks/useScrollLock.js +19 -0
- package/dist/hooks/useScrollLock.js.map +1 -0
- package/dist/hooks/useTimeout.d.ts +5 -0
- package/dist/hooks/useTimeout.js +16 -0
- package/dist/hooks/useTimeout.js.map +1 -0
- package/dist/index.d.ts +83 -0
- package/dist/index.js +59 -0
- package/dist/styles/choice.module.js +15 -0
- package/dist/styles/choice.module.js.map +1 -0
- package/dist/styles/field.module.js +11 -0
- package/dist/styles/field.module.js.map +1 -0
- package/dist/styles.css +2 -0
- package/dist/tokens/breakpoints.d.ts +12 -0
- package/dist/tokens/breakpoints.js +11 -0
- package/dist/tokens/breakpoints.js.map +1 -0
- package/dist/tokens/colors.d.ts +82 -0
- package/dist/tokens/colors.js +92 -0
- package/dist/tokens/colors.js.map +1 -0
- package/dist/tokens/focus.d.ts +4 -0
- package/dist/tokens/focus.js +8 -0
- package/dist/tokens/focus.js.map +1 -0
- package/dist/tokens/index.d.ts +22 -0
- package/dist/tokens/index.js +37 -0
- package/dist/tokens/index.js.map +1 -0
- package/dist/tokens/motion.d.ts +21 -0
- package/dist/tokens/motion.js +16 -0
- package/dist/tokens/motion.js.map +1 -0
- package/dist/tokens/radius.d.ts +9 -0
- package/dist/tokens/radius.js +13 -0
- package/dist/tokens/radius.js.map +1 -0
- package/dist/tokens/shadows.d.ts +12 -0
- package/dist/tokens/shadows.js +12 -0
- package/dist/tokens/shadows.js.map +1 -0
- package/dist/tokens/sizes.d.ts +22 -0
- package/dist/tokens/sizes.js +23 -0
- package/dist/tokens/sizes.js.map +1 -0
- package/dist/tokens/spacing.d.ts +19 -0
- package/dist/tokens/spacing.js +19 -0
- package/dist/tokens/spacing.js.map +1 -0
- package/dist/tokens/themes.d.ts +256 -0
- package/dist/tokens/themes.js +120 -0
- package/dist/tokens/themes.js.map +1 -0
- package/dist/tokens/typography.d.ts +37 -0
- package/dist/tokens/typography.js +35 -0
- package/dist/tokens/typography.js.map +1 -0
- package/dist/tokens/z-index.d.ts +8 -0
- package/dist/tokens/z-index.js +11 -0
- package/dist/tokens/z-index.js.map +1 -0
- package/dist/utils/cn.d.ts +8 -0
- package/dist/utils/cn.js +14 -0
- package/dist/utils/cn.js.map +1 -0
- package/dist/utils/floating.d.ts +20 -0
- package/dist/utils/floating.js +31 -0
- package/dist/utils/floating.js.map +1 -0
- package/dist/utils/getElementRef.d.ts +3 -0
- package/dist/utils/getElementRef.js +8 -0
- package/dist/utils/getElementRef.js.map +1 -0
- package/dist/utils/mergeRefs.d.ts +2 -0
- package/dist/utils/mergeRefs.js +9 -0
- package/dist/utils/mergeRefs.js.map +1 -0
- package/dist/utils/polymorphic.d.ts +13 -0
- package/dist/utils/refocusIfLost.d.ts +6 -0
- package/dist/utils/refocusIfLost.js +10 -0
- package/dist/utils/refocusIfLost.js.map +1 -0
- package/package.json +106 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Alert.js","names":["styles","Alert_module_default","icons","InfoIcon","SuccessIcon","WarningIcon","ErrorIcon","Alert","forwardRef","props","titleId","useId","hasTitle","title","intent","cn","variant","className","icon","children","action","onDismiss","IconButton","dismissLabel","CloseIcon"],"sources":["../../../src/components/Alert/Alert.tsx"],"sourcesContent":["import { forwardRef, useId, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '@/utils/cn';\nimport { CloseIcon, ErrorIcon, InfoIcon, SuccessIcon, WarningIcon } from '../Icon';\nimport { IconButton } from '../IconButton';\nimport styles from './Alert.module.css';\n\nexport type AlertIntent = 'info' | 'success' | 'warning' | 'danger';\n\nexport interface AlertProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n /** @default 'info' */\n intent?: AlertIntent;\n /** @default 'subtle' */\n variant?: 'subtle' | 'solid';\n /** Short summary shown in bold above the content. */\n title?: ReactNode;\n /** Replaces the intent icon. `false` hides it. */\n icon?: ReactNode;\n /** Controls placed after the content, such as a button or a link. */\n action?: ReactNode;\n /** Shows a dismiss button that calls this function. */\n onDismiss?: () => void;\n /**\n * Accessible name of the dismiss button.\n * @default 'Dismiss'\n */\n dismissLabel?: string;\n}\n\nconst icons: Record<AlertIntent, ReactNode> = {\n info: <InfoIcon />,\n success: <SuccessIcon />,\n warning: <WarningIcon />,\n danger: <ErrorIcon />,\n};\n\n/**\n * Highlighted message about the page or a task. Warnings and errors use `role=\"alert\"`, so they\n * are announced as soon as they appear; the others use `role=\"status\"`. Override with `role`.\n */\nexport const Alert = forwardRef<HTMLDivElement, AlertProps>(function Alert(\n {\n intent = 'info',\n variant = 'subtle',\n title,\n icon,\n action,\n onDismiss,\n dismissLabel = 'Dismiss',\n className,\n children,\n ...props\n },\n ref,\n) {\n const titleId = useId();\n const hasTitle = title !== undefined && title !== null;\n\n return (\n <div\n ref={ref}\n role={intent === 'warning' || intent === 'danger' ? 'alert' : 'status'}\n aria-labelledby={hasTitle ? titleId : undefined}\n className={cn(styles.alert, styles[intent], styles[variant], className)}\n {...props}\n >\n {icon !== false && (\n <span className={styles.icon} aria-hidden=\"true\">\n {icon ?? icons[intent]}\n </span>\n )}\n <div className={styles.content}>\n {hasTitle && (\n <p id={titleId} className={styles.title}>\n {title}\n </p>\n )}\n {children !== undefined && <div className={styles.description}>{children}</div>}\n {action !== undefined && <div className={styles.action}>{action}</div>}\n </div>\n {onDismiss && (\n <IconButton label={dismissLabel} size=\"sm\" className={styles.dismiss} onClick={onDismiss}>\n <CloseIcon />\n </IconButton>\n )}\n </div>\n );\n});\n"],"mappings":";;;;;;;;AA4BA,IAAME,IAAwC;CAC5C,MAAM,kBAACC,GAAD,CAAW,CAAA;CACjB,SAAS,kBAACC,GAAD,CAAc,CAAA;CACvB,SAAS,kBAACC,GAAD,CAAc,CAAA;CACvB,QAAQ,kBAACC,GAAD,CAAY,CAAA;AACtB,GAMaC,IAAQC,EAAuC,SAC1D,EACE,YAAS,QACT,aAAU,UACV,UACA,SACA,WACA,cACA,kBAAe,WACf,cACA,aACA,GAAGC,KAEL,GACA;CACA,IAAMC,IAAUC,EAAM,GAChBC,IAAWC,KAAiC;CAElD,OACE,kBAAC,OAAD;EACO;EACL,MAAMC,MAAW,aAAaA,MAAW,WAAW,UAAU;EAC9D,mBAAiBF,IAAWF,IAAU,KAAA;EACtC,WAAWK,EAAGf,EAAO,OAAOA,EAAOc,IAASd,EAAOgB,IAAUC,CAAS;EACtE,GAAIR;EALN,UAAA;GAOGS,MAAS,MACR,kBAAC,QAAD;IAAM,WAAWlB,EAAO;IAAM,eAAY;IACvC,UAAAkB,KAAQhB,EAAMY;GACX,CAAA;GAER,kBAAC,OAAD;IAAK,WAAWd,EAAO;IAAvB,UAAA;KACGY,KACC,kBAAC,KAAD;MAAG,IAAIF;MAAS,WAAWV,EAAO;MAC/B,UAAAa;KACA,CAAA;KAEJM,MAAa,KAAA,KAAa,kBAAC,OAAD;MAAK,WAAWnB,EAAO;MAAc;KAAc,CAAA;KAC7EoB,MAAW,KAAA,KAAa,kBAAC,OAAD;MAAK,WAAWpB,EAAO;MAAS,UAAAoB;KAAY,CAAA;IAClE;;GACJC,KACC,kBAACC,GAAD;IAAY,OAAOC;IAAc,MAAK;IAAK,WAAWvB,EAAO;IAAS,SAASqB;IAC7E,UAAA,kBAACG,GAAD,CAAY,CAAA;GACF,CAAA;EAEX;;AAET,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// src/components/Alert/Alert.module.css
|
|
2
|
+
var e = "onyx-alert-7cYyI", t = "onyx-info-9r3r1", n = "onyx-success-1bzoB", r = "onyx-warning-q-j1Q", i = "onyx-danger-CiZkW", a = "onyx-subtle-XhGd-", o = "onyx-icon-Zg6SB", s = "onyx-title-abGgF", c = "onyx-solid-s-oW5", l = "onyx-content-UXnmZ", u = "onyx-description-pXPvw", d = "onyx-action-WeFR6", f = "onyx-dismiss-dQPPE", p = {
|
|
3
|
+
alert: e,
|
|
4
|
+
info: t,
|
|
5
|
+
success: n,
|
|
6
|
+
warning: r,
|
|
7
|
+
danger: i,
|
|
8
|
+
subtle: a,
|
|
9
|
+
icon: o,
|
|
10
|
+
title: s,
|
|
11
|
+
solid: c,
|
|
12
|
+
content: l,
|
|
13
|
+
description: u,
|
|
14
|
+
action: d,
|
|
15
|
+
dismiss: f
|
|
16
|
+
};
|
|
17
|
+
export { d as action, e as alert, l as content, i as danger, p as default, u as description, f as dismiss, o as icon, t as info, c as solid, a as subtle, n as success, s as title, r as warning };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=Alert.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Alert.module.js","names":["alert","info","success","warning","danger","subtle","icon","title","solid","content","description","action","dismiss","Alert_module_default"],"sources":["../../../src/components/Alert/Alert.module.css"],"sourcesContent":[".alert {\n display: flex;\n gap: var(--space-3);\n align-items: flex-start;\n padding: var(--space-3) var(--space-4);\n font-size: var(--font-size-sm);\n line-height: var(--line-height-normal);\n border: var(--border-width-thin) solid transparent;\n border-radius: var(--radius-lg);\n}\n\n.info {\n --alert-solid: var(--color-info);\n --alert-on-solid: var(--color-on-info);\n --alert-subtle: var(--color-info-subtle);\n --alert-text: var(--color-info-text);\n --alert-border: var(--color-info-border);\n}\n\n.success {\n --alert-solid: var(--color-success);\n --alert-on-solid: var(--color-on-success);\n --alert-subtle: var(--color-success-subtle);\n --alert-text: var(--color-success-text);\n --alert-border: var(--color-success-border);\n}\n\n.warning {\n --alert-solid: var(--color-warning);\n --alert-on-solid: var(--color-on-warning);\n --alert-subtle: var(--color-warning-subtle);\n --alert-text: var(--color-warning-text);\n --alert-border: var(--color-warning-border);\n}\n\n.danger {\n --alert-solid: var(--color-danger);\n --alert-on-solid: var(--color-on-danger);\n --alert-subtle: var(--color-danger-subtle);\n --alert-text: var(--color-danger-text);\n --alert-border: var(--color-danger-border);\n}\n\n.subtle {\n color: var(--color-text);\n background-color: var(--alert-subtle);\n border-color: var(--alert-border);\n}\n\n.subtle .icon,\n.subtle .title {\n color: var(--alert-text);\n}\n\n.solid {\n color: var(--alert-on-solid);\n background-color: var(--alert-solid);\n}\n\n.icon {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n height: 1lh;\n}\n\n.icon > svg {\n width: var(--size-icon-md);\n height: var(--size-icon-md);\n}\n\n.content {\n display: grid;\n flex: 1;\n gap: var(--space-1);\n min-width: 0;\n}\n\n.title {\n margin: 0;\n font-weight: var(--font-weight-semibold);\n}\n\n.description {\n min-width: 0;\n}\n\n.description > :where(p) {\n margin: 0;\n}\n\n.action {\n display: flex;\n flex-wrap: wrap;\n gap: var(--space-2);\n margin-top: var(--space-2);\n}\n\n.dismiss {\n margin-block: calc(var(--space-1) * -1);\n margin-inline-end: calc(var(--space-2) * -1);\n color: inherit;\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { HTMLAttributes } from 'react';
|
|
2
|
+
export type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
3
|
+
export interface AvatarProps extends HTMLAttributes<HTMLSpanElement> {
|
|
4
|
+
/** Name of the person or entity. Names the avatar and provides the initials fallback. */
|
|
5
|
+
name: string;
|
|
6
|
+
/** Image URL. The initials show while it is missing or fails to load. */
|
|
7
|
+
src?: string;
|
|
8
|
+
/** Alternative text of the image. @default name */
|
|
9
|
+
alt?: string;
|
|
10
|
+
/** @default 'md' */
|
|
11
|
+
size?: AvatarSize;
|
|
12
|
+
/** @default 'circle' */
|
|
13
|
+
shape?: 'circle' | 'square';
|
|
14
|
+
}
|
|
15
|
+
/** Picture of a person or entity, with their initials as a fallback. */
|
|
16
|
+
export declare const Avatar: import('react').ForwardRefExoticComponent<AvatarProps & import('react').RefAttributes<HTMLSpanElement>>;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn as e } from "../../utils/cn.js";
|
|
3
|
+
import t from "./Avatar.module.js";
|
|
4
|
+
import { forwardRef as n, useState as r } from "react";
|
|
5
|
+
import { jsx as i } from "react/jsx-runtime";
|
|
6
|
+
// src/components/Avatar/Avatar.tsx
|
|
7
|
+
function a(e) {
|
|
8
|
+
let t = e.trim().split(/\s+/).filter(Boolean);
|
|
9
|
+
return (t.length > 1 ? [t[0], t.at(-1)] : [t[0]]).map((e) => e ? String.fromCodePoint(e.codePointAt(0)) : "").join("").toUpperCase();
|
|
10
|
+
}
|
|
11
|
+
var o = n(function({ name: n, src: o, alt: s = n, size: c = "md", shape: l = "circle", className: u, ...d }, f) {
|
|
12
|
+
let [p, m] = r(), h = o !== void 0 && o !== p;
|
|
13
|
+
return /* @__PURE__ */ i("span", {
|
|
14
|
+
ref: f,
|
|
15
|
+
role: h ? void 0 : "img",
|
|
16
|
+
"aria-label": h ? void 0 : n,
|
|
17
|
+
className: e(t.avatar, t[c], t[l], u),
|
|
18
|
+
...d,
|
|
19
|
+
children: h ? /* @__PURE__ */ i("img", {
|
|
20
|
+
className: t.image,
|
|
21
|
+
src: o,
|
|
22
|
+
alt: s,
|
|
23
|
+
onError: () => m(o)
|
|
24
|
+
}) : /* @__PURE__ */ i("span", {
|
|
25
|
+
className: t.initials,
|
|
26
|
+
"aria-hidden": "true",
|
|
27
|
+
children: a(n)
|
|
28
|
+
})
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
export { o as Avatar };
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=Avatar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Avatar.js","names":["styles","Avatar_module_default","getInitials","words","name","word","Avatar","forwardRef","props","failedSrc","setFailedSrc","useState","showImage","src","cn","size","shape","className"],"sources":["../../../src/components/Avatar/Avatar.tsx"],"sourcesContent":["import { forwardRef, useState, type HTMLAttributes } from 'react';\nimport { cn } from '@/utils/cn';\nimport styles from './Avatar.module.css';\n\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface AvatarProps extends HTMLAttributes<HTMLSpanElement> {\n /** Name of the person or entity. Names the avatar and provides the initials fallback. */\n name: string;\n /** Image URL. The initials show while it is missing or fails to load. */\n src?: string;\n /** Alternative text of the image. @default name */\n alt?: string;\n /** @default 'md' */\n size?: AvatarSize;\n /** @default 'circle' */\n shape?: 'circle' | 'square';\n}\n\nfunction getInitials(name: string) {\n const words = name.trim().split(/\\s+/).filter(Boolean);\n const letters = words.length > 1 ? [words[0], words.at(-1)] : [words[0]];\n\n return letters\n .map((word) => (word ? String.fromCodePoint(word.codePointAt(0)!) : ''))\n .join('')\n .toUpperCase();\n}\n\n/** Picture of a person or entity, with their initials as a fallback. */\nexport const Avatar = forwardRef<HTMLSpanElement, AvatarProps>(function Avatar(\n { name, src, alt = name, size = 'md', shape = 'circle', className, ...props },\n ref,\n) {\n const [failedSrc, setFailedSrc] = useState<string>();\n const showImage = src !== undefined && src !== failedSrc;\n\n return (\n <span\n ref={ref}\n role={showImage ? undefined : 'img'}\n aria-label={showImage ? undefined : name}\n className={cn(styles.avatar, styles[size], styles[shape], className)}\n {...props}\n >\n {showImage ? (\n <img className={styles.image} src={src} alt={alt} onError={() => setFailedSrc(src)} />\n ) : (\n <span className={styles.initials} aria-hidden=\"true\">\n {getInitials(name)}\n </span>\n )}\n </span>\n );\n});\n"],"mappings":";;;;;;AAmBA,SAASE,EAAY,GAAc;CACjC,IAAMC,IAAQC,EAAK,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,OAAO,OAAO;CAGrD,QAFgBD,EAAM,SAAS,IAAI,CAACA,EAAM,IAAIA,EAAM,GAAG,EAAE,CAAC,IAAI,CAACA,EAAM,EAAE,EAAA,CAGpE,KAAK,MAAUE,IAAO,OAAO,cAAcA,EAAK,YAAY,CAAC,CAAE,IAAI,EAAG,CAAC,CACvE,KAAK,EAAE,CAAC,CACR,YAAY;AACjB;AAGA,IAAaC,IAASC,EAAyC,SAC7D,EAAE,SAAM,QAAK,SAAMH,GAAM,UAAO,MAAM,WAAQ,UAAU,cAAW,GAAGI,KACtE,GACA;CACA,IAAM,CAACC,GAAWC,KAAgBC,EAAiB,GAC7CC,IAAYC,MAAQ,KAAA,KAAaA,MAAQJ;CAE/C,OACE,kBAAC,QAAD;EACO;EACL,MAAMG,IAAY,KAAA,IAAY;EAC9B,cAAYA,IAAY,KAAA,IAAYR;EACpC,WAAWU,EAAGd,EAAO,QAAQA,EAAOe,IAAOf,EAAOgB,IAAQC,CAAS;EACnE,GAAIT;EAEH,UAAAI,IACC,kBAAC,OAAD;GAAK,WAAWZ,EAAO;GAAY;GAAU;GAAK,eAAeU,EAAaG,CAAG;EAAI,CAAA,IAErF,kBAAC,QAAD;GAAM,WAAWb,EAAO;GAAU,eAAY;GAC3C,UAAAE,EAAYE,CAAI;EACb,CAAA;CAEJ,CAAA;AAEV,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// src/components/Avatar/Avatar.module.css
|
|
2
|
+
var e = "onyx-avatar-3xMuZ", t = "onyx-circle-O2tJa", n = "onyx-square-KXudv", r = "onyx-image-ieqGp", i = "onyx-xs-oSaLL", a = "onyx-sm-sZ2bk", o = "onyx-md-Fdkbz", s = "onyx-lg-pTTUA", c = "onyx-xl-mW58F", l = {
|
|
3
|
+
avatar: e,
|
|
4
|
+
circle: t,
|
|
5
|
+
square: n,
|
|
6
|
+
image: r,
|
|
7
|
+
xs: i,
|
|
8
|
+
sm: a,
|
|
9
|
+
md: o,
|
|
10
|
+
lg: s,
|
|
11
|
+
xl: c
|
|
12
|
+
};
|
|
13
|
+
export { e as avatar, t as circle, l as default, r as image, s as lg, o as md, a as sm, n as square, c as xl, i as xs };
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=Avatar.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Avatar.module.js","names":["avatar","circle","square","image","xs","sm","md","lg","xl","Avatar_module_default"],"sources":["../../../src/components/Avatar/Avatar.module.css"],"sourcesContent":[".avatar {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n font-weight: var(--font-weight-medium);\n line-height: var(--line-height-none);\n color: var(--color-primary-text);\n vertical-align: middle;\n user-select: none;\n background-color: var(--color-primary-subtle);\n}\n\n.circle {\n border-radius: var(--radius-full);\n}\n\n.square {\n border-radius: var(--radius-md);\n}\n\n.image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.xs {\n width: var(--space-6);\n height: var(--space-6);\n font-size: var(--font-size-xs);\n}\n\n.sm {\n width: var(--size-control-sm);\n height: var(--size-control-sm);\n font-size: var(--font-size-xs);\n}\n\n.md {\n width: var(--size-control-md);\n height: var(--size-control-md);\n font-size: var(--font-size-sm);\n}\n\n.lg {\n width: var(--size-control-lg);\n height: var(--size-control-lg);\n font-size: var(--font-size-md);\n}\n\n.xl {\n width: var(--space-16);\n height: var(--space-16);\n font-size: var(--font-size-xl);\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
export type BadgeIntent = 'neutral' | 'primary' | 'success' | 'warning' | 'danger' | 'info';
|
|
3
|
+
export type BadgeVariant = 'subtle' | 'solid' | 'outline';
|
|
4
|
+
export interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {
|
|
5
|
+
/** @default 'neutral' */
|
|
6
|
+
intent?: BadgeIntent;
|
|
7
|
+
/** @default 'subtle' */
|
|
8
|
+
variant?: BadgeVariant;
|
|
9
|
+
/** @default 'md' */
|
|
10
|
+
size?: 'sm' | 'md';
|
|
11
|
+
/** Element rendered before the label, usually an icon. */
|
|
12
|
+
icon?: ReactNode;
|
|
13
|
+
}
|
|
14
|
+
/** Short status or category label. Not interactive: put it next to a control, not inside one. */
|
|
15
|
+
export declare const Badge: import('react').ForwardRefExoticComponent<BadgeProps & import('react').RefAttributes<HTMLSpanElement>>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn as e } from "../../utils/cn.js";
|
|
3
|
+
import t from "./Badge.module.js";
|
|
4
|
+
import { forwardRef as n } from "react";
|
|
5
|
+
import { jsxs as r } from "react/jsx-runtime";
|
|
6
|
+
// src/components/Badge/Badge.tsx
|
|
7
|
+
var i = n(function({ intent: n = "neutral", variant: i = "subtle", size: a = "md", icon: o, className: s, children: c, ...l }, u) {
|
|
8
|
+
return /* @__PURE__ */ r("span", {
|
|
9
|
+
ref: u,
|
|
10
|
+
className: e(t.badge, t[n], t[i], t[a], s),
|
|
11
|
+
...l,
|
|
12
|
+
children: [o, c]
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
export { i as Badge };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=Badge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Badge.js","names":["styles","Badge_module_default","Badge","forwardRef","props","cn","intent","variant","size","className","icon","children"],"sources":["../../../src/components/Badge/Badge.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '@/utils/cn';\nimport styles from './Badge.module.css';\n\nexport type BadgeIntent = 'neutral' | 'primary' | 'success' | 'warning' | 'danger' | 'info';\nexport type BadgeVariant = 'subtle' | 'solid' | 'outline';\n\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\n /** @default 'neutral' */\n intent?: BadgeIntent;\n /** @default 'subtle' */\n variant?: BadgeVariant;\n /** @default 'md' */\n size?: 'sm' | 'md';\n /** Element rendered before the label, usually an icon. */\n icon?: ReactNode;\n}\n\n/** Short status or category label. Not interactive: put it next to a control, not inside one. */\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\n { intent = 'neutral', variant = 'subtle', size = 'md', icon, className, children, ...props },\n ref,\n) {\n return (\n <span\n ref={ref}\n className={cn(styles.badge, styles[intent], styles[variant], styles[size], className)}\n {...props}\n >\n {icon}\n {children}\n </span>\n );\n});\n"],"mappings":";;;;;;AAmBA,IAAaE,IAAQC,EAAwC,SAC3D,EAAE,YAAS,WAAW,aAAU,UAAU,UAAO,MAAM,SAAM,cAAW,aAAU,GAAGC,KACrF,GACA;CACA,OACE,kBAAC,QAAD;EACO;EACL,WAAWC,EAAGL,EAAO,OAAOA,EAAOM,IAASN,EAAOO,IAAUP,EAAOQ,IAAOC,CAAS;EACpF,GAAIL;EAHN,UAAA,CAKGM,GACAC,CACG;;AAEV,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// src/components/Badge/Badge.module.css
|
|
2
|
+
var e = "onyx-badge-RsuMz", t = "onyx-sm-LYsCn", n = "onyx-md-4Or8q", r = "onyx-neutral-lulSm", i = "onyx-primary-S0WCS", a = "onyx-success-u9JiS", o = "onyx-warning-nsGp-", s = "onyx-danger-PD2hz", c = "onyx-info-na6DQ", l = "onyx-subtle-boe3x", u = "onyx-solid-0Leug", d = "onyx-outline-x06HL", f = {
|
|
3
|
+
badge: e,
|
|
4
|
+
sm: t,
|
|
5
|
+
md: n,
|
|
6
|
+
neutral: r,
|
|
7
|
+
primary: i,
|
|
8
|
+
success: a,
|
|
9
|
+
warning: o,
|
|
10
|
+
danger: s,
|
|
11
|
+
info: c,
|
|
12
|
+
subtle: l,
|
|
13
|
+
solid: u,
|
|
14
|
+
outline: d
|
|
15
|
+
};
|
|
16
|
+
export { e as badge, s as danger, f as default, c as info, n as md, r as neutral, d as outline, i as primary, t as sm, u as solid, l as subtle, a as success, o as warning };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=Badge.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Badge.module.js","names":["badge","sm","md","neutral","primary","success","warning","danger","info","subtle","solid","outline","Badge_module_default"],"sources":["../../../src/components/Badge/Badge.module.css"],"sourcesContent":[".badge {\n display: inline-flex;\n gap: var(--space-1);\n align-items: center;\n max-width: 100%;\n font-weight: var(--font-weight-medium);\n line-height: var(--line-height-tight);\n white-space: nowrap;\n vertical-align: middle;\n border: var(--border-width-thin) solid transparent;\n border-radius: var(--radius-full);\n}\n\n.sm {\n padding: 0 var(--space-2);\n font-size: var(--font-size-xs);\n}\n\n.md {\n padding: var(--space-1) var(--space-3);\n font-size: var(--font-size-sm);\n}\n\n.neutral {\n --badge-solid: var(--color-bg-inverse);\n --badge-on-solid: var(--color-text-inverse);\n --badge-subtle: var(--color-bg-muted);\n --badge-text: var(--color-text);\n --badge-border: var(--color-border-strong);\n}\n\n.primary {\n --badge-solid: var(--color-primary);\n --badge-on-solid: var(--color-on-primary);\n --badge-subtle: var(--color-primary-subtle);\n --badge-text: var(--color-primary-text);\n --badge-border: var(--color-primary);\n}\n\n.success {\n --badge-solid: var(--color-success);\n --badge-on-solid: var(--color-on-success);\n --badge-subtle: var(--color-success-subtle);\n --badge-text: var(--color-success-text);\n --badge-border: var(--color-success);\n}\n\n.warning {\n --badge-solid: var(--color-warning);\n --badge-on-solid: var(--color-on-warning);\n --badge-subtle: var(--color-warning-subtle);\n --badge-text: var(--color-warning-text);\n --badge-border: var(--color-warning);\n}\n\n.danger {\n --badge-solid: var(--color-danger);\n --badge-on-solid: var(--color-on-danger);\n --badge-subtle: var(--color-danger-subtle);\n --badge-text: var(--color-danger-text);\n --badge-border: var(--color-danger);\n}\n\n.info {\n --badge-solid: var(--color-info);\n --badge-on-solid: var(--color-on-info);\n --badge-subtle: var(--color-info-subtle);\n --badge-text: var(--color-info-text);\n --badge-border: var(--color-info);\n}\n\n.subtle {\n color: var(--badge-text);\n background-color: var(--badge-subtle);\n}\n\n.solid {\n color: var(--badge-on-solid);\n background-color: var(--badge-solid);\n}\n\n.outline {\n color: var(--badge-text);\n border-color: var(--badge-border);\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ElementType, HTMLAttributes, LiHTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
import { PolymorphicComponent, PolymorphicPropsWithRef } from '../../utils/polymorphic.js';
|
|
3
|
+
export interface BreadcrumbProps extends HTMLAttributes<HTMLElement> {
|
|
4
|
+
/** Element shown between items. Defaults to a chevron. */
|
|
5
|
+
separator?: ReactNode;
|
|
6
|
+
/**
|
|
7
|
+
* Accessible name of the navigation landmark.
|
|
8
|
+
* @default 'Breadcrumb'
|
|
9
|
+
*/
|
|
10
|
+
'aria-label'?: string;
|
|
11
|
+
}
|
|
12
|
+
/** Trail of links from the home page to the current page. */
|
|
13
|
+
export declare const Breadcrumb: import('react').ForwardRefExoticComponent<BreadcrumbProps & import('react').RefAttributes<HTMLElement>>;
|
|
14
|
+
export type BreadcrumbItemProps = LiHTMLAttributes<HTMLLIElement>;
|
|
15
|
+
/** One step of the trail. Holds a `BreadcrumbLink`. */
|
|
16
|
+
export declare const BreadcrumbItem: import('react').ForwardRefExoticComponent<BreadcrumbItemProps & import('react').RefAttributes<HTMLLIElement>>;
|
|
17
|
+
export interface BreadcrumbLinkOwnProps {
|
|
18
|
+
/**
|
|
19
|
+
* Marks the link as the current page with `aria-current="page"`.
|
|
20
|
+
* @default false
|
|
21
|
+
*/
|
|
22
|
+
current?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export type BreadcrumbLinkProps<As extends ElementType = 'a'> = PolymorphicPropsWithRef<As, BreadcrumbLinkOwnProps>;
|
|
25
|
+
/** Link of a `BreadcrumbItem`. Use `as` to render a router link. */
|
|
26
|
+
export declare const BreadcrumbLink: PolymorphicComponent<"a", BreadcrumbLinkOwnProps>;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn as e } from "../../utils/cn.js";
|
|
3
|
+
import { ChevronRightIcon as t } from "../Icon/icons.js";
|
|
4
|
+
import n from "./Breadcrumb.module.js";
|
|
5
|
+
import { createContext as r, forwardRef as i, useContext as a } from "react";
|
|
6
|
+
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
7
|
+
// src/components/Breadcrumb/Breadcrumb.tsx
|
|
8
|
+
var c = r(null), l = i(function({ separator: r = /* @__PURE__ */ o(t, {}), "aria-label": i = "Breadcrumb", className: a, children: s, ...l }, u) {
|
|
9
|
+
return /* @__PURE__ */ o("nav", {
|
|
10
|
+
ref: u,
|
|
11
|
+
"aria-label": i,
|
|
12
|
+
className: e(n.breadcrumb, a),
|
|
13
|
+
...l,
|
|
14
|
+
children: /* @__PURE__ */ o("ol", {
|
|
15
|
+
className: n.list,
|
|
16
|
+
children: /* @__PURE__ */ o(c.Provider, {
|
|
17
|
+
value: r,
|
|
18
|
+
children: s
|
|
19
|
+
})
|
|
20
|
+
})
|
|
21
|
+
});
|
|
22
|
+
}), u = i(function({ className: t, children: r, ...i }, l) {
|
|
23
|
+
let u = a(c);
|
|
24
|
+
return /* @__PURE__ */ s("li", {
|
|
25
|
+
ref: l,
|
|
26
|
+
className: e(n.item, t),
|
|
27
|
+
...i,
|
|
28
|
+
children: [/* @__PURE__ */ o("span", {
|
|
29
|
+
className: n.separator,
|
|
30
|
+
"aria-hidden": "true",
|
|
31
|
+
children: u
|
|
32
|
+
}), r]
|
|
33
|
+
});
|
|
34
|
+
}), d = i(function({ as: t = "a", current: r = !1, className: i, ...a }, s) {
|
|
35
|
+
return /* @__PURE__ */ o(t, {
|
|
36
|
+
ref: s,
|
|
37
|
+
"aria-current": r ? "page" : void 0,
|
|
38
|
+
className: e(n.link, i),
|
|
39
|
+
...a
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
export { l as Breadcrumb, u as BreadcrumbItem, d as BreadcrumbLink };
|
|
43
|
+
|
|
44
|
+
//# sourceMappingURL=Breadcrumb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Breadcrumb.js","names":["styles","Breadcrumb_module_default","SeparatorContext","createContext","Breadcrumb","forwardRef","ChevronRightIcon","ariaLabel","props","cn","className","separator","BreadcrumbItem","useContext","children","BreadcrumbLink","Component","current"],"sources":["../../../src/components/Breadcrumb/Breadcrumb.tsx"],"sourcesContent":["import {\n createContext,\n forwardRef,\n useContext,\n type ElementType,\n type HTMLAttributes,\n type LiHTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cn } from '@/utils/cn';\nimport type {\n PolymorphicComponent,\n PolymorphicProps,\n PolymorphicPropsWithRef,\n} from '@/utils/polymorphic';\nimport { ChevronRightIcon } from '../Icon';\nimport styles from './Breadcrumb.module.css';\n\nconst SeparatorContext = createContext<ReactNode>(null);\n\nexport interface BreadcrumbProps extends HTMLAttributes<HTMLElement> {\n /** Element shown between items. Defaults to a chevron. */\n separator?: ReactNode;\n /**\n * Accessible name of the navigation landmark.\n * @default 'Breadcrumb'\n */\n 'aria-label'?: string;\n}\n\n/** Trail of links from the home page to the current page. */\nexport const Breadcrumb = forwardRef<HTMLElement, BreadcrumbProps>(function Breadcrumb(\n {\n separator = <ChevronRightIcon />,\n 'aria-label': ariaLabel = 'Breadcrumb',\n className,\n children,\n ...props\n },\n ref,\n) {\n return (\n <nav ref={ref} aria-label={ariaLabel} className={cn(styles.breadcrumb, className)} {...props}>\n <ol className={styles.list}>\n <SeparatorContext.Provider value={separator}>{children}</SeparatorContext.Provider>\n </ol>\n </nav>\n );\n});\n\nexport type BreadcrumbItemProps = LiHTMLAttributes<HTMLLIElement>;\n\n/** One step of the trail. Holds a `BreadcrumbLink`. */\nexport const BreadcrumbItem = forwardRef<HTMLLIElement, BreadcrumbItemProps>(\n function BreadcrumbItem({ className, children, ...props }, ref) {\n const separator = useContext(SeparatorContext);\n\n return (\n <li ref={ref} className={cn(styles.item, className)} {...props}>\n <span className={styles.separator} aria-hidden=\"true\">\n {separator}\n </span>\n {children}\n </li>\n );\n },\n);\n\nexport interface BreadcrumbLinkOwnProps {\n /**\n * Marks the link as the current page with `aria-current=\"page\"`.\n * @default false\n */\n current?: boolean;\n}\n\nexport type BreadcrumbLinkProps<As extends ElementType = 'a'> = PolymorphicPropsWithRef<\n As,\n BreadcrumbLinkOwnProps\n>;\n\n/** Link of a `BreadcrumbItem`. Use `as` to render a router link. */\nexport const BreadcrumbLink = forwardRef<\n HTMLAnchorElement,\n PolymorphicProps<'a', BreadcrumbLinkOwnProps>\n>(function BreadcrumbLink({ as: Component = 'a', current = false, className, ...props }, ref) {\n return (\n <Component\n ref={ref}\n aria-current={current ? 'page' : undefined}\n className={cn(styles.link, className)}\n {...props}\n />\n );\n}) as PolymorphicComponent<'a', BreadcrumbLinkOwnProps>;\n"],"mappings":";;;;;;;AAkBA,IAAME,IAAmBC,EAAyB,IAAI,GAazCC,IAAaC,EAAyC,SACjE,EACE,eAAY,kBAACC,GAAD,CAAmB,CAAA,GAC/B,cAAcC,IAAY,cAC1B,cACA,aACA,GAAGC,KAEL,GACA;CACA,OACE,kBAAC,OAAD;EAAU;EAAK,cAAYD;EAAW,WAAWE,EAAGT,EAAO,YAAYU,CAAS;EAAG,GAAIF;EACrF,UAAA,kBAAC,MAAD;GAAI,WAAWR,EAAO;GACpB,UAAA,kBAACE,EAAiB,UAAlB;IAA2B,OAAOS;IAAY;GAAoC,CAAA;EAChF,CAAA;CACD,CAAA;AAET,CAAC,GAKYC,IAAiBP,EAC5B,SAAwB,EAAE,cAAW,aAAU,GAAGG,KAAS,GAAK;CAC9D,IAAMG,IAAYE,EAAWX,CAAgB;CAE7C,OACE,kBAAC,MAAD;EAAS;EAAK,WAAWO,EAAGT,EAAO,MAAMU,CAAS;EAAG,GAAIF;EAAzD,UAAA,CACE,kBAAC,QAAD;GAAM,WAAWR,EAAO;GAAW,eAAY;GAC5C,UAAAW;EACG,CAAA,GACLG,CACC;;AAER,CACF,GAgBaC,IAAiBV,EAG5B,SAAwB,EAAE,IAAIW,IAAY,KAAK,aAAU,IAAO,cAAW,GAAGR,KAAS,GAAK;CAC5F,OACE,kBAACQ,GAAD;EACO;EACL,gBAAcC,IAAU,SAAS,KAAA;EACjC,WAAWR,EAAGT,EAAO,MAAMU,CAAS;EACpC,GAAIF;CACL,CAAA;AAEL,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// src/components/Breadcrumb/Breadcrumb.module.css
|
|
2
|
+
var e = "onyx-breadcrumb-TVagK", t = "onyx-list-0leIR", n = "onyx-item-ZczhA", r = "onyx-separator-qrUX-", i = "onyx-link-nDu8Y onyx-focusRing-qmcYD", a = {
|
|
3
|
+
breadcrumb: e,
|
|
4
|
+
list: t,
|
|
5
|
+
item: n,
|
|
6
|
+
separator: r,
|
|
7
|
+
link: i
|
|
8
|
+
};
|
|
9
|
+
export { e as breadcrumb, a as default, n as item, i as link, t as list, r as separator };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=Breadcrumb.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Breadcrumb.module.js","names":["breadcrumb","list","item","separator","link","Breadcrumb_module_default"],"sources":["../../../src/components/Breadcrumb/Breadcrumb.module.css"],"sourcesContent":[".breadcrumb {\n min-width: 0;\n font-size: var(--font-size-sm);\n}\n\n.list {\n display: flex;\n flex-wrap: wrap;\n row-gap: var(--space-1);\n align-items: center;\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n.item {\n display: inline-flex;\n align-items: center;\n min-width: 0;\n}\n\n.separator {\n display: inline-flex;\n margin-inline: var(--space-2);\n color: var(--color-text-muted);\n}\n\n.item:first-child .separator {\n display: none;\n}\n\n:dir(rtl) .separator > svg {\n scale: -1 1;\n}\n\n.link {\n composes: focusRing from '../../styles/focus-ring.module.css';\n overflow: hidden;\n color: var(--color-text-muted);\n text-decoration-line: none;\n text-overflow: ellipsis;\n white-space: nowrap;\n border-radius: var(--radius-sm);\n transition: color var(--duration-fast) var(--easing-standard);\n}\n\n.link:is(a[href]):hover {\n color: var(--color-text);\n text-decoration-line: underline;\n text-underline-offset: 0.2em;\n}\n\n.link[aria-current='page'] {\n font-weight: var(--font-weight-medium);\n color: var(--color-text);\n}\n\n@media (pointer: coarse) {\n .link {\n display: inline-block;\n line-height: var(--size-touch-target);\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ButtonHTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
export type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger';
|
|
3
|
+
export type ButtonSize = 'sm' | 'md' | 'lg';
|
|
4
|
+
export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
5
|
+
/** @default 'primary' */
|
|
6
|
+
variant?: ButtonVariant;
|
|
7
|
+
/** @default 'md' */
|
|
8
|
+
size?: ButtonSize;
|
|
9
|
+
/**
|
|
10
|
+
* Shows a spinner and ignores clicks while keeping the button focusable and its width stable.
|
|
11
|
+
* @default false
|
|
12
|
+
*/
|
|
13
|
+
loading?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Added to the accessible name while `loading`.
|
|
16
|
+
* @default 'Loading'
|
|
17
|
+
*/
|
|
18
|
+
loadingLabel?: string;
|
|
19
|
+
/** Element rendered before the label, usually an icon. */
|
|
20
|
+
startIcon?: ReactNode;
|
|
21
|
+
/** Element rendered after the label, usually an icon. */
|
|
22
|
+
endIcon?: ReactNode;
|
|
23
|
+
/**
|
|
24
|
+
* Stretches the button to the width of its container.
|
|
25
|
+
* @default false
|
|
26
|
+
*/
|
|
27
|
+
fullWidth?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export declare const Button: import('react').ForwardRefExoticComponent<ButtonProps & import('react').RefAttributes<HTMLButtonElement>>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn as e } from "../../utils/cn.js";
|
|
3
|
+
import { VisuallyHidden as t } from "../VisuallyHidden/VisuallyHidden.js";
|
|
4
|
+
import { Spinner as n } from "../Spinner/Spinner.js";
|
|
5
|
+
import r from "./Button.module.js";
|
|
6
|
+
import { forwardRef as i } from "react";
|
|
7
|
+
import { Fragment as a, jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
8
|
+
// src/components/Button/Button.tsx
|
|
9
|
+
var c = i(function({ variant: i = "primary", size: c = "md", loading: l = !1, loadingLabel: u = "Loading", startIcon: d, endIcon: f, fullWidth: p = !1, type: m = "button", className: h, children: g, onClick: _, ...v }, y) {
|
|
10
|
+
return /* @__PURE__ */ s("button", {
|
|
11
|
+
ref: y,
|
|
12
|
+
type: m,
|
|
13
|
+
"aria-disabled": l || void 0,
|
|
14
|
+
"data-loading": l || void 0,
|
|
15
|
+
className: e(r.button, r[i], r[c], p && r.fullWidth, h),
|
|
16
|
+
onClick: (e) => {
|
|
17
|
+
l ? e.preventDefault() : _?.(e);
|
|
18
|
+
},
|
|
19
|
+
...v,
|
|
20
|
+
children: [/* @__PURE__ */ s("span", {
|
|
21
|
+
className: r.content,
|
|
22
|
+
children: [
|
|
23
|
+
d,
|
|
24
|
+
g,
|
|
25
|
+
f
|
|
26
|
+
]
|
|
27
|
+
}), l && /* @__PURE__ */ s(a, { children: [
|
|
28
|
+
/* @__PURE__ */ o(n, {
|
|
29
|
+
decorative: !0,
|
|
30
|
+
size: "inherit",
|
|
31
|
+
className: r.spinner
|
|
32
|
+
}),
|
|
33
|
+
" ",
|
|
34
|
+
/* @__PURE__ */ o(t, { children: u })
|
|
35
|
+
] })]
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
export { c as Button };
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=Button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.js","names":["styles","_Fragment","Button_module_default","Button","forwardRef","props","loading","cn","variant","size","fullWidth","className","event","onClick","startIcon","children","endIcon","Fragment","Spinner","VisuallyHidden","loadingLabel"],"sources":["../../../src/components/Button/Button.tsx"],"sourcesContent":["import { forwardRef, type ButtonHTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '@/utils/cn';\nimport { Spinner } from '../Spinner';\nimport { VisuallyHidden } from '../VisuallyHidden';\nimport styles from './Button.module.css';\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger';\nexport type ButtonSize = 'sm' | 'md' | 'lg';\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** @default 'primary' */\n variant?: ButtonVariant;\n /** @default 'md' */\n size?: ButtonSize;\n /**\n * Shows a spinner and ignores clicks while keeping the button focusable and its width stable.\n * @default false\n */\n loading?: boolean;\n /**\n * Added to the accessible name while `loading`.\n * @default 'Loading'\n */\n loadingLabel?: string;\n /** Element rendered before the label, usually an icon. */\n startIcon?: ReactNode;\n /** Element rendered after the label, usually an icon. */\n endIcon?: ReactNode;\n /**\n * Stretches the button to the width of its container.\n * @default false\n */\n fullWidth?: boolean;\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n variant = 'primary',\n size = 'md',\n loading = false,\n loadingLabel = 'Loading',\n startIcon,\n endIcon,\n fullWidth = false,\n type = 'button',\n className,\n children,\n onClick,\n ...props\n },\n ref,\n) {\n return (\n <button\n ref={ref}\n type={type}\n aria-disabled={loading || undefined}\n data-loading={loading || undefined}\n className={cn(\n styles.button,\n styles[variant],\n styles[size],\n fullWidth && styles.fullWidth,\n className,\n )}\n onClick={(event) => {\n if (loading) {\n event.preventDefault();\n return;\n }\n onClick?.(event);\n }}\n {...props}\n >\n <span className={styles.content}>\n {startIcon}\n {children}\n {endIcon}\n </span>\n {loading && (\n <>\n <Spinner decorative size=\"inherit\" className={styles.spinner} />{' '}\n <VisuallyHidden>{loadingLabel}</VisuallyHidden>\n </>\n )}\n </button>\n );\n});\n"],"mappings":";;;;;;;;AAmCA,IAAaG,IAASC,EAA2C,SAC/D,EACE,aAAU,WACV,UAAO,MACP,aAAU,IACV,kBAAe,WACf,cACA,YACA,eAAY,IACZ,UAAO,UACP,cACA,aACA,YACA,GAAGC,KAEL,GACA;CACA,OACE,kBAAC,UAAD;EACO;EACC;EACN,iBAAeC,KAAW,KAAA;EAC1B,gBAAcA,KAAW,KAAA;EACzB,WAAWC,EACTP,EAAO,QACPA,EAAOQ,IACPR,EAAOS,IACPC,KAAaV,EAAO,WACpBW,CACF;EACA,UAAU,MAAU;GAClB,AAAIL,IACFM,EAAM,eAAe,IAGvBC,IAAUD,CAAK;EACjB;EACA,GAAIP;EAnBN,UAAA,CAqBE,kBAAC,QAAD;GAAM,WAAWL,EAAO;GAAxB,UAAA;IACGc;IACAC;IACAC;GACG;EACL,CAAA,GAAAV,KACC,kBAAAL,GAAA,EAAA,UAAA;GACE,kBAACiB,GAAD;IAAS,YAAA;IAAW,MAAK;IAAU,WAAWlB,EAAO;GAAU,CAAA;GAAE;GACjE,kBAACmB,GAAD,EAAA,UAAiBC,EAA6B,CAAA;EAC9C,EAAA,CAAA,CAEE;;AAEZ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// src/components/Button/Button.module.css
|
|
2
|
+
var e = "onyx-button-2ZuB7 onyx-focusRing-qmcYD", t = "onyx-content-EKXmF", n = "onyx-spinner-ZExvW", r = "onyx-sm-NhG0g", i = "onyx-md-hH4h3", a = "onyx-lg-2plQf", o = "onyx-fullWidth-36oJT", s = "onyx-primary-s1sM6", c = "onyx-danger-V4fX8", l = "onyx-secondary-R0waJ", u = "onyx-outline-F5jq-", d = "onyx-ghost-1KINV", f = {
|
|
3
|
+
button: e,
|
|
4
|
+
content: t,
|
|
5
|
+
spinner: n,
|
|
6
|
+
sm: r,
|
|
7
|
+
md: i,
|
|
8
|
+
lg: a,
|
|
9
|
+
fullWidth: o,
|
|
10
|
+
primary: s,
|
|
11
|
+
danger: c,
|
|
12
|
+
secondary: l,
|
|
13
|
+
outline: u,
|
|
14
|
+
ghost: d
|
|
15
|
+
};
|
|
16
|
+
export { e as button, t as content, c as danger, f as default, o as fullWidth, d as ghost, a as lg, i as md, u as outline, s as primary, l as secondary, r as sm, n as spinner };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=Button.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.module.js","names":["button","content","spinner","sm","md","lg","fullWidth","primary","danger","secondary","outline","ghost","Button_module_default"],"sources":["../../../src/components/Button/Button.module.css"],"sourcesContent":[".button {\n composes: focusRing from '../../styles/focus-ring.module.css';\n position: relative;\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n font-weight: var(--font-weight-medium);\n line-height: var(--line-height-tight);\n white-space: nowrap;\n text-decoration: none;\n cursor: pointer;\n user-select: none;\n background-color: transparent;\n border: var(--border-width-thin) solid transparent;\n border-radius: var(--radius-md);\n transition-timing-function: var(--easing-standard);\n transition-duration: var(--duration-fast);\n transition-property: background-color, border-color, color;\n}\n\n.content {\n display: inline-flex;\n gap: var(--space-2);\n align-items: center;\n justify-content: center;\n min-width: 0;\n}\n\n.button[data-loading] {\n cursor: progress;\n}\n\n.button[data-loading] .content {\n opacity: 0;\n}\n\n.spinner {\n position: absolute;\n inset: 0;\n margin: auto;\n}\n\n.sm {\n min-height: var(--size-control-sm);\n padding-inline: var(--space-3);\n font-size: var(--font-size-sm);\n}\n\n.md {\n min-height: var(--size-control-md);\n padding-inline: var(--space-4);\n font-size: var(--font-size-sm);\n}\n\n.lg {\n min-height: var(--size-control-lg);\n padding-inline: var(--space-5);\n font-size: var(--font-size-md);\n}\n\n.fullWidth {\n width: 100%;\n}\n\n.primary {\n color: var(--color-on-primary);\n background-color: var(--color-primary);\n}\n\n.primary:hover:not(:disabled, [aria-disabled='true']) {\n background-color: var(--color-primary-hover);\n}\n\n.primary:active:not(:disabled, [aria-disabled='true']) {\n background-color: var(--color-primary-active);\n}\n\n.danger {\n color: var(--color-on-danger);\n background-color: var(--color-danger);\n}\n\n.danger:hover:not(:disabled, [aria-disabled='true']) {\n background-color: var(--color-danger-hover);\n}\n\n.danger:active:not(:disabled, [aria-disabled='true']) {\n background-color: var(--color-danger-active);\n}\n\n.secondary {\n color: var(--color-text);\n background-color: var(--color-bg-muted);\n}\n\n.outline {\n color: var(--color-text);\n border-color: var(--color-border-strong);\n}\n\n.ghost {\n color: var(--color-text);\n}\n\n:is(.secondary, .outline, .ghost):hover:not(:disabled, [aria-disabled='true']) {\n background-image: linear-gradient(var(--color-state-hover), var(--color-state-hover));\n}\n\n:is(.secondary, .outline, .ghost):active:not(:disabled, [aria-disabled='true']) {\n background-image: linear-gradient(var(--color-state-active), var(--color-state-active));\n}\n\n.button:disabled {\n color: var(--color-text-disabled);\n cursor: not-allowed;\n background-color: var(--color-bg-muted);\n border-color: transparent;\n}\n\n:is(.outline, .ghost):disabled {\n background-color: transparent;\n}\n\n.outline:disabled {\n border-color: var(--color-border);\n}\n\n@media (pointer: coarse) {\n .button {\n min-height: var(--size-touch-target);\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ElementType, HTMLAttributes } from 'react';
|
|
2
|
+
import { PolymorphicComponent, PolymorphicPropsWithRef } from '../../utils/polymorphic.js';
|
|
3
|
+
export interface CardOwnProps {
|
|
4
|
+
/** @default 'outline' */
|
|
5
|
+
variant?: 'outline' | 'elevated' | 'filled';
|
|
6
|
+
/**
|
|
7
|
+
* Inner spacing, shared by the header, body and footer.
|
|
8
|
+
* @default 'md'
|
|
9
|
+
*/
|
|
10
|
+
padding?: 'none' | 'sm' | 'md' | 'lg';
|
|
11
|
+
}
|
|
12
|
+
export type CardProps<As extends ElementType = 'div'> = PolymorphicPropsWithRef<As, CardOwnProps>;
|
|
13
|
+
/**
|
|
14
|
+
* Surface that groups related content. Use `as="article"` or `as="section"` when the content
|
|
15
|
+
* stands on its own, and `CardHeader`, `CardBody` and `CardFooter` to lay it out.
|
|
16
|
+
*/
|
|
17
|
+
export declare const Card: PolymorphicComponent<"div", CardOwnProps>;
|
|
18
|
+
export type CardSectionProps = HTMLAttributes<HTMLDivElement>;
|
|
19
|
+
/** Top of a card, usually a heading with an optional action beside it. */
|
|
20
|
+
export declare const CardHeader: import('react').ForwardRefExoticComponent<CardSectionProps & import('react').RefAttributes<HTMLDivElement>>;
|
|
21
|
+
/** Main content of a card. */
|
|
22
|
+
export declare const CardBody: import('react').ForwardRefExoticComponent<CardSectionProps & import('react').RefAttributes<HTMLDivElement>>;
|
|
23
|
+
/** Bottom of a card, usually actions. */
|
|
24
|
+
export declare const CardFooter: import('react').ForwardRefExoticComponent<CardSectionProps & import('react').RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn as e } from "../../utils/cn.js";
|
|
3
|
+
import t from "./Card.module.js";
|
|
4
|
+
import { forwardRef as n } from "react";
|
|
5
|
+
import { jsx as r } from "react/jsx-runtime";
|
|
6
|
+
// src/components/Card/Card.tsx
|
|
7
|
+
var i = n(function({ as: n = "div", variant: i = "outline", padding: a = "md", className: o, ...s }, c) {
|
|
8
|
+
return /* @__PURE__ */ r(n, {
|
|
9
|
+
ref: c,
|
|
10
|
+
className: e(t.card, t[i], t[a], o),
|
|
11
|
+
...s
|
|
12
|
+
});
|
|
13
|
+
}), a = n(function({ className: n, ...i }, a) {
|
|
14
|
+
return /* @__PURE__ */ r("div", {
|
|
15
|
+
ref: a,
|
|
16
|
+
className: e(t.header, n),
|
|
17
|
+
...i
|
|
18
|
+
});
|
|
19
|
+
}), o = n(function({ className: n, ...i }, a) {
|
|
20
|
+
return /* @__PURE__ */ r("div", {
|
|
21
|
+
ref: a,
|
|
22
|
+
className: e(t.body, n),
|
|
23
|
+
...i
|
|
24
|
+
});
|
|
25
|
+
}), s = n(function({ className: n, ...i }, a) {
|
|
26
|
+
return /* @__PURE__ */ r("div", {
|
|
27
|
+
ref: a,
|
|
28
|
+
className: e(t.footer, n),
|
|
29
|
+
...i
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
export { i as Card, o as CardBody, s as CardFooter, a as CardHeader };
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=Card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Card.js","names":["styles","Card_module_default","Card","forwardRef","Component","props","cn","variant","padding","className","CardHeader","CardBody","CardFooter"],"sources":["../../../src/components/Card/Card.tsx"],"sourcesContent":["import { forwardRef, type ElementType, type HTMLAttributes } from 'react';\nimport { cn } from '@/utils/cn';\nimport type {\n PolymorphicComponent,\n PolymorphicProps,\n PolymorphicPropsWithRef,\n} from '@/utils/polymorphic';\nimport styles from './Card.module.css';\n\nexport interface CardOwnProps {\n /** @default 'outline' */\n variant?: 'outline' | 'elevated' | 'filled';\n /**\n * Inner spacing, shared by the header, body and footer.\n * @default 'md'\n */\n padding?: 'none' | 'sm' | 'md' | 'lg';\n}\n\nexport type CardProps<As extends ElementType = 'div'> = PolymorphicPropsWithRef<As, CardOwnProps>;\n\n/**\n * Surface that groups related content. Use `as=\"article\"` or `as=\"section\"` when the content\n * stands on its own, and `CardHeader`, `CardBody` and `CardFooter` to lay it out.\n */\nexport const Card = forwardRef<HTMLDivElement, PolymorphicProps<'div', CardOwnProps>>(function Card(\n { as: Component = 'div', variant = 'outline', padding = 'md', className, ...props },\n ref,\n) {\n return (\n <Component\n ref={ref}\n className={cn(styles.card, styles[variant], styles[padding], className)}\n {...props}\n />\n );\n}) as PolymorphicComponent<'div', CardOwnProps>;\n\nexport type CardSectionProps = HTMLAttributes<HTMLDivElement>;\n\n/** Top of a card, usually a heading with an optional action beside it. */\nexport const CardHeader = forwardRef<HTMLDivElement, CardSectionProps>(function CardHeader(\n { className, ...props },\n ref,\n) {\n return <div ref={ref} className={cn(styles.header, className)} {...props} />;\n});\n\n/** Main content of a card. */\nexport const CardBody = forwardRef<HTMLDivElement, CardSectionProps>(function CardBody(\n { className, ...props },\n ref,\n) {\n return <div ref={ref} className={cn(styles.body, className)} {...props} />;\n});\n\n/** Bottom of a card, usually actions. */\nexport const CardFooter = forwardRef<HTMLDivElement, CardSectionProps>(function CardFooter(\n { className, ...props },\n ref,\n) {\n return <div ref={ref} className={cn(styles.footer, className)} {...props} />;\n});\n"],"mappings":";;;;;;AAyBA,IAAaE,IAAOC,EAAkE,SACpF,EAAE,IAAIC,IAAY,OAAO,aAAU,WAAW,aAAU,MAAM,cAAW,GAAGC,KAC5E,GACA;CACA,OACE,kBAACD,GAAD;EACO;EACL,WAAWE,EAAGN,EAAO,MAAMA,EAAOO,IAAUP,EAAOQ,IAAUC,CAAS;EACtE,GAAIJ;CACL,CAAA;AAEL,CAAC,GAKYK,IAAaP,EAA6C,SACrE,EAAE,cAAW,GAAGE,KAChB,GACA;CACA,OAAO,kBAAC,OAAD;EAAU;EAAK,WAAWC,EAAGN,EAAO,QAAQS,CAAS;EAAG,GAAIJ;CAAQ,CAAA;AAC7E,CAAC,GAGYM,IAAWR,EAA6C,SACnE,EAAE,cAAW,GAAGE,KAChB,GACA;CACA,OAAO,kBAAC,OAAD;EAAU;EAAK,WAAWC,EAAGN,EAAO,MAAMS,CAAS;EAAG,GAAIJ;CAAQ,CAAA;AAC3E,CAAC,GAGYO,IAAaT,EAA6C,SACrE,EAAE,cAAW,GAAGE,KAChB,GACA;CACA,OAAO,kBAAC,OAAD;EAAU;EAAK,WAAWC,EAAGN,EAAO,QAAQS,CAAS;EAAG,GAAIJ;CAAQ,CAAA;AAC7E,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// src/components/Card/Card.module.css
|
|
2
|
+
var e = "onyx-card-Cb1o4", t = "onyx-outline-5JlQf", n = "onyx-elevated-5VEDw", r = "onyx-filled-wikYw", i = "onyx-none-GcNRH", a = "onyx-sm-J1U3g", o = "onyx-md-hGw-i", s = "onyx-lg-Qu3G6", c = "onyx-header-PTXf2", l = "onyx-body-W441Z", u = "onyx-footer-Mu-JC", d = {
|
|
3
|
+
card: e,
|
|
4
|
+
outline: t,
|
|
5
|
+
elevated: n,
|
|
6
|
+
filled: r,
|
|
7
|
+
none: i,
|
|
8
|
+
sm: a,
|
|
9
|
+
md: o,
|
|
10
|
+
lg: s,
|
|
11
|
+
header: c,
|
|
12
|
+
body: l,
|
|
13
|
+
footer: u
|
|
14
|
+
};
|
|
15
|
+
export { l as body, e as card, d as default, n as elevated, r as filled, u as footer, c as header, s as lg, o as md, i as none, t as outline, a as sm };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=Card.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Card.module.js","names":["card","outline","elevated","filled","none","sm","md","lg","header","body","footer","Card_module_default"],"sources":["../../../src/components/Card/Card.module.css"],"sourcesContent":[".card {\n --card-padding: var(--space-5);\n\n display: flex;\n flex-direction: column;\n min-width: 0;\n overflow: hidden;\n color: var(--color-text);\n border: var(--border-width-thin) solid transparent;\n border-radius: var(--radius-xl);\n}\n\n.outline {\n background-color: var(--color-surface);\n border-color: var(--color-border);\n}\n\n.elevated {\n background-color: var(--color-surface-raised);\n border-color: var(--color-border);\n box-shadow: var(--shadow-md);\n}\n\n.filled {\n background-color: var(--color-bg-subtle);\n}\n\n.none {\n --card-padding: 0;\n}\n\n.sm {\n --card-padding: var(--space-3);\n}\n\n.md {\n --card-padding: var(--space-5);\n}\n\n.lg {\n --card-padding: var(--space-8);\n}\n\n.header,\n.body,\n.footer {\n padding: var(--card-padding);\n}\n\n.header {\n display: flex;\n flex-wrap: wrap;\n gap: var(--space-2) var(--space-4);\n align-items: flex-start;\n justify-content: space-between;\n}\n\n.header + .body {\n padding-top: 0;\n}\n\n.body {\n display: grid;\n flex: 1;\n gap: var(--space-3);\n align-content: start;\n}\n\n.footer {\n display: flex;\n flex-wrap: wrap;\n gap: var(--space-3);\n align-items: center;\n justify-content: flex-end;\n border-top: var(--border-width-thin) solid var(--color-border);\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { InputHTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
export type ChoiceSize = 'sm' | 'md' | 'lg';
|
|
3
|
+
export interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {
|
|
4
|
+
/** Label shown next to the box. Without it, name the checkbox with `aria-label`. */
|
|
5
|
+
children?: ReactNode;
|
|
6
|
+
/** Extra text below the label, linked with `aria-describedby`. */
|
|
7
|
+
description?: ReactNode;
|
|
8
|
+
/**
|
|
9
|
+
* Shows a dash for a "some selected" state. It is visual and announced as mixed, but clicking
|
|
10
|
+
* still toggles `checked`.
|
|
11
|
+
* @default false
|
|
12
|
+
*/
|
|
13
|
+
indeterminate?: boolean;
|
|
14
|
+
/** Marks the checkbox as invalid. */
|
|
15
|
+
invalid?: boolean;
|
|
16
|
+
/** @default 'md' */
|
|
17
|
+
size?: ChoiceSize;
|
|
18
|
+
/** Called with the new checked state. */
|
|
19
|
+
onCheckedChange?: (checked: boolean) => void;
|
|
20
|
+
}
|
|
21
|
+
export declare const Checkbox: import('react').ForwardRefExoticComponent<CheckboxProps & import('react').RefAttributes<HTMLInputElement>>;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn as e } from "../../utils/cn.js";
|
|
3
|
+
import { CheckIcon as t, MinusIcon as n } from "../Icon/icons.js";
|
|
4
|
+
import { mergeRefs as r } from "../../utils/mergeRefs.js";
|
|
5
|
+
import i from "../../styles/choice.module.js";
|
|
6
|
+
import a from "./Checkbox.module.js";
|
|
7
|
+
import { forwardRef as o, useEffect as s, useId as c, useMemo as l, useRef as u } from "react";
|
|
8
|
+
import { jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
9
|
+
// src/components/Checkbox/Checkbox.tsx
|
|
10
|
+
var p = o(function({ children: o, description: p, indeterminate: m = !1, invalid: h = !1, size: g = "md", onCheckedChange: _, onChange: v, className: y, style: b, id: x, "aria-describedby": S, ...C }, w) {
|
|
11
|
+
let T = c(), E = x ?? T, D = `${E}-description`, O = u(null), k = l(() => r(w, O), [w]);
|
|
12
|
+
return s(() => {
|
|
13
|
+
O.current && (O.current.indeterminate = m);
|
|
14
|
+
}), /* @__PURE__ */ f("div", {
|
|
15
|
+
className: e(i.choice, i[g], y),
|
|
16
|
+
style: b,
|
|
17
|
+
children: [
|
|
18
|
+
/* @__PURE__ */ f("span", {
|
|
19
|
+
className: i.control,
|
|
20
|
+
children: [/* @__PURE__ */ d("input", {
|
|
21
|
+
ref: k,
|
|
22
|
+
type: "checkbox",
|
|
23
|
+
id: E,
|
|
24
|
+
"aria-invalid": h || void 0,
|
|
25
|
+
"aria-describedby": e(p !== void 0 && D, S) || void 0,
|
|
26
|
+
className: i.input,
|
|
27
|
+
onChange: (e) => {
|
|
28
|
+
v?.(e), _?.(e.target.checked);
|
|
29
|
+
},
|
|
30
|
+
...C
|
|
31
|
+
}), /* @__PURE__ */ f("span", {
|
|
32
|
+
className: e(i.box, a.box),
|
|
33
|
+
"aria-hidden": "true",
|
|
34
|
+
children: [/* @__PURE__ */ d(t, { className: a.check }), /* @__PURE__ */ d(n, { className: a.dash })]
|
|
35
|
+
})]
|
|
36
|
+
}),
|
|
37
|
+
o !== void 0 && /* @__PURE__ */ d("label", {
|
|
38
|
+
htmlFor: E,
|
|
39
|
+
className: i.label,
|
|
40
|
+
children: o
|
|
41
|
+
}),
|
|
42
|
+
p !== void 0 && /* @__PURE__ */ d("span", {
|
|
43
|
+
id: D,
|
|
44
|
+
className: i.description,
|
|
45
|
+
children: p
|
|
46
|
+
})
|
|
47
|
+
]
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
export { p as Checkbox };
|
|
51
|
+
|
|
52
|
+
//# sourceMappingURL=Checkbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Checkbox.js","names":["choice","styles","choice_module_default","Checkbox_module_default","Checkbox","forwardRef","describedBy","props","generatedId","useId","inputId","id","descriptionId","inputRef","useRef","mergedRef","useMemo","mergeRefs","ref","useEffect","indeterminate","cn","size","className","invalid","description","onChange","event","onCheckedChange","CheckIcon","MinusIcon","children"],"sources":["../../../src/components/Checkbox/Checkbox.tsx"],"sourcesContent":["import {\n forwardRef,\n useEffect,\n useId,\n useMemo,\n useRef,\n type InputHTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cn } from '@/utils/cn';\nimport { mergeRefs } from '@/utils/mergeRefs';\nimport choice from '@/styles/choice.module.css';\nimport { CheckIcon, MinusIcon } from '../Icon';\nimport styles from './Checkbox.module.css';\n\nexport type ChoiceSize = 'sm' | 'md' | 'lg';\n\nexport interface CheckboxProps extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'type' | 'size'\n> {\n /** Label shown next to the box. Without it, name the checkbox with `aria-label`. */\n children?: ReactNode;\n /** Extra text below the label, linked with `aria-describedby`. */\n description?: ReactNode;\n /**\n * Shows a dash for a \"some selected\" state. It is visual and announced as mixed, but clicking\n * still toggles `checked`.\n * @default false\n */\n indeterminate?: boolean;\n /** Marks the checkbox as invalid. */\n invalid?: boolean;\n /** @default 'md' */\n size?: ChoiceSize;\n /** Called with the new checked state. */\n onCheckedChange?: (checked: boolean) => void;\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(\n {\n children,\n description,\n indeterminate = false,\n invalid = false,\n size = 'md',\n onCheckedChange,\n onChange,\n className,\n style,\n id,\n 'aria-describedby': describedBy,\n ...props\n },\n ref,\n) {\n const generatedId = useId();\n const inputId = id ?? generatedId;\n const descriptionId = `${inputId}-description`;\n const inputRef = useRef<HTMLInputElement>(null);\n const mergedRef = useMemo(() => mergeRefs(ref, inputRef), [ref]);\n\n useEffect(() => {\n if (inputRef.current) inputRef.current.indeterminate = indeterminate;\n });\n\n return (\n <div className={cn(choice.choice, choice[size], className)} style={style}>\n <span className={choice.control}>\n <input\n ref={mergedRef}\n type=\"checkbox\"\n id={inputId}\n aria-invalid={invalid || undefined}\n aria-describedby={\n cn(description !== undefined && descriptionId, describedBy) || undefined\n }\n className={choice.input}\n onChange={(event) => {\n onChange?.(event);\n onCheckedChange?.(event.target.checked);\n }}\n {...props}\n />\n <span className={cn(choice.box, styles.box)} aria-hidden=\"true\">\n <CheckIcon className={styles.check} />\n <MinusIcon className={styles.dash} />\n </span>\n </span>\n {children !== undefined && (\n <label htmlFor={inputId} className={choice.label}>\n {children}\n </label>\n )}\n {description !== undefined && (\n <span id={descriptionId} className={choice.description}>\n {description}\n </span>\n )}\n </div>\n );\n});\n"],"mappings":";;;;;;;;;AAuCA,IAAaI,IAAWC,EAA4C,SAClE,EACE,aACA,gBACA,mBAAgB,IAChB,aAAU,IACV,UAAO,MACP,oBACA,aACA,cACA,UACA,OACA,oBAAoBC,GACpB,GAAGC,KAEL,GACA;CACA,IAAMC,IAAcC,EAAM,GACpBC,IAAUC,KAAMH,GAChBI,IAAgB,GAAGF,EAAQ,eAC3BG,IAAWC,EAAyB,IAAI,GACxCC,IAAYC,QAAcC,EAAUC,GAAKL,CAAQ,GAAG,CAACK,CAAG,CAAC;CAM/D,OAJAC,QAAgB;EACd,AAAIN,EAAS,YAAS,EAAS,QAAQ,gBAAgBO;CACzD,CAAC,GAGC,kBAAC,OAAD;EAAK,WAAWC,EAAGrB,EAAO,QAAQA,EAAOsB,IAAOC,CAAS;EAAU;EAAnE,UAAA;GACE,kBAAC,QAAD;IAAM,WAAWvB,EAAO;IAAxB,UAAA,CACE,kBAAC,SAAD;KACE,KAAKe;KACL,MAAK;KACL,IAAIL;KACJ,gBAAcc,KAAW,KAAA;KACzB,oBACEH,EAAGI,MAAgB,KAAA,KAAab,GAAeN,CAAW,KAAK,KAAA;KAEjE,WAAWN,EAAO;KAClB,WAAW,MAAU;MAEnB,AADA0B,IAAWC,CAAK,GAChBC,IAAkBD,EAAM,OAAO,OAAO;KACxC;KACA,GAAIpB;IACL,CAAA,GACD,kBAAC,QAAD;KAAM,WAAWc,EAAGrB,EAAO,KAAKC,EAAO,GAAG;KAAG,eAAY;KAAzD,UAAA,CACE,kBAAC4B,GAAD,EAAW,WAAW5B,EAAO,MAAQ,CAAA,GACrC,kBAAC6B,GAAD,EAAW,WAAW7B,EAAO,KAAO,CAAA,CAChC;IACF,CAAA,CAAA;;GACL8B,MAAa,KAAA,KACZ,kBAAC,SAAD;IAAO,SAASrB;IAAS,WAAWV,EAAO;IACxC;GACI,CAAA;GAERyB,MAAgB,KAAA,KACf,kBAAC,QAAD;IAAM,IAAIb;IAAe,WAAWZ,EAAO;IACxC,UAAAyB;GACG,CAAA;EAEL;;AAET,CAAC"}
|