diff --git a/apps/website/src/components/menu/menu.tsx b/apps/website/src/components/menu/menu.tsx index 15caa9101..629e4feaf 100644 --- a/apps/website/src/components/menu/menu.tsx +++ b/apps/website/src/components/menu/menu.tsx @@ -19,6 +19,10 @@ export const Menu = component$(({ onClose$ }) => { label: 'Alert', path: `/docs/${appState.theme.toLowerCase()}/alert`, }, + { + label: 'Badge', + path: `/docs/${appState.theme.toLowerCase()}/badge`, + }, { label: 'Breadcrumb', path: `/docs/${appState.theme.toLowerCase()}/breadcrumb`, diff --git a/apps/website/src/routes/docs/daisy/badge/index.tsx b/apps/website/src/routes/docs/daisy/badge/index.tsx new file mode 100644 index 000000000..dfe37f381 --- /dev/null +++ b/apps/website/src/routes/docs/daisy/badge/index.tsx @@ -0,0 +1,177 @@ +import { component$, useStylesScoped$ } from '@builder.io/qwik'; +import { Badge, Button } from '@qwik-ui/theme-daisy'; + +export default component$(() => { + useStylesScoped$(` + h1 { margin: 0.5rem 0 1rem 0; padding-top: 1rem; font-weight: bold; } + `); + return ( + <> +

This is the documentation for the Badge

+ +

Badge Example

+ + badge + +

Variant

+ +
+ neutral + primary + secondary + accent + ghost + info + success + warning + error +
+ +

Outline

+
+ neutral + + primary + + + secondary + + + accent + + + ghost + + + info + + + success + + + warning + + + error + +
+ +

Badge sizes

+
+ Badge lg + Badge md + Badge sm + Badge xs +
+ +

Empty badge

+
+ + + + +
+ +

Badge with state colors

+
+ + + + + info + + + + + + + success + + + + + + warning + + + + + + error + +
+ +

Badge in a text

+
+

+ Heading + NEW +

+

+ Heading + NEW +

+

+ Heading + NEW +

+
+ Heading + NEW +
+
+ +

Badge in a button

+
+ + +
+ + ); +}); diff --git a/apps/website/src/routes/docs/headless/badge/index.tsx b/apps/website/src/routes/docs/headless/badge/index.tsx new file mode 100644 index 000000000..a05e58b95 --- /dev/null +++ b/apps/website/src/routes/docs/headless/badge/index.tsx @@ -0,0 +1,65 @@ +import { component$, useStylesScoped$ } from '@builder.io/qwik'; +import { Badge, Button } from '@qwik-ui/headless'; + +export default component$(() => { + useStylesScoped$(` + h1 { margin: 0.5rem 0 1rem 0; padding-top: 1rem; font-weight: bold; } + .container { display: flex; gap: 10px; } .customBtnCls { background-color: lightcoral;} + svg { width: 1rem; height: 1rem; stroke: currentColor } + .badge-lg {height: 1.5rem; + font-size: 1rem; + line-height: 1.5rem; + padding-left: 0.688rem; + padding-right: 0.688rem; + } + `); + return ( + <> +

This is the documentation for the Badge

+ +

Badge Example

+ + badge + +

Color

+ +
+ neutral + + lightblue + +
+ +

Badge sizes

+ Badge lg + +

Empty badge

+ + +

Badge with state colors

+ + + + + info + + +

Badge in a text

+

+ Heading + NEW +

+ +

Badge in a button

+ + + ); +}); diff --git a/packages/daisy/src/components/badge/badge.tsx b/packages/daisy/src/components/badge/badge.tsx new file mode 100644 index 000000000..545709e66 --- /dev/null +++ b/packages/daisy/src/components/badge/badge.tsx @@ -0,0 +1,71 @@ +import { component$, HTMLAttributes, Slot } from '@builder.io/qwik'; +import { Badge as HeadlessBadge } from '@qwik-ui/headless'; +import { clsq } from '@qwik-ui/shared'; + +export type DaisyBadgeProps = { + variant?: DaisyBadgeVariants; + size?: DaisyBadgeSizes; + outline?: boolean; +}; + +export type DaisyBadgeVariants = + | 'primary' + | 'secondary' + | 'accent' + | 'ghost' + | 'info' + | 'success' + | 'warning' + | 'error'; +export type DaisyBadgeSizes = 'xs' | 'sm' | 'md' | 'lg'; +export type BadgeProps = HTMLAttributes & DaisyBadgeProps; + +export const Badge = component$((props: BadgeProps) => { + const { + size = 'md', + variant = 'neutral', + class: classNames, + outline, + ...rest + } = props; + + const { variants, sizes, options } = { + variants: { + neutral: '', + primary: 'badge-primary', + secondary: 'badge-secondary', + accent: 'badge-accent', + ghost: 'badge-ghost', + info: 'badge-info', + success: 'badge-success', + warning: 'badge-warning', + error: 'badge-error', + }, + sizes: { + xs: 'badge-xs', + sm: 'badge-sm', + md: 'badge-md', + lg: 'badge-lg', + }, + options: { + outline: 'badge-outline', + }, + }; + + return ( + + + + ); +}); diff --git a/packages/daisy/src/index.ts b/packages/daisy/src/index.ts index bef57aa08..e4eaa9d00 100644 --- a/packages/daisy/src/index.ts +++ b/packages/daisy/src/index.ts @@ -1,5 +1,6 @@ export * from './components/accordion/accordion'; export * from './components/alert/alert'; +export * from './components/badge/badge'; export * from './components/button/button'; export * from './components/progress/progress'; export * from './components/button-group/button-group'; diff --git a/packages/headless/src/components/badge/badge.tsx b/packages/headless/src/components/badge/badge.tsx new file mode 100644 index 000000000..d80d137f3 --- /dev/null +++ b/packages/headless/src/components/badge/badge.tsx @@ -0,0 +1,11 @@ +import { component$, HTMLAttributes, Slot } from '@builder.io/qwik'; + +export type BadgeProps = HTMLAttributes; + +export const Badge = component$((props: BadgeProps) => { + return ( +
+ +
+ ); +}); diff --git a/packages/headless/src/index.ts b/packages/headless/src/index.ts index cc32eee09..7b46d7348 100644 --- a/packages/headless/src/index.ts +++ b/packages/headless/src/index.ts @@ -1,5 +1,6 @@ export * from './components/accordion/accordion'; export * from './components/alert/alert'; +export * from './components/badge/badge'; export * from './components/button/button'; export * from './components/progress/progress'; export * from './components/button-group/button-group';