@sigx/lynx-daisyui 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +47 -0
- package/dist/buttons/Button.d.ts +7 -0
- package/dist/data/Avatar.d.ts +4 -0
- package/dist/feedback/Alert.d.ts +6 -0
- package/dist/feedback/Badge.d.ts +7 -0
- package/dist/feedback/Loading.d.ts +6 -0
- package/dist/feedback/Modal.d.ts +48 -0
- package/dist/feedback/Progress.d.ts +4 -0
- package/dist/feedback/Skeleton.d.ts +3 -0
- package/dist/feedback/Steps.d.ts +37 -0
- package/dist/forms/Checkbox.d.ts +5 -0
- package/dist/forms/FormField.d.ts +5 -0
- package/dist/forms/Input.d.ts +6 -0
- package/dist/forms/Radio.d.ts +48 -0
- package/dist/forms/Select.d.ts +10 -0
- package/dist/forms/Textarea.d.ts +6 -0
- package/dist/forms/Toggle.d.ts +5 -0
- package/dist/index.d.ts +52 -0
- package/dist/index.js +552 -0
- package/dist/index.js.map +1 -0
- package/dist/layout/Card.d.ts +51 -0
- package/dist/layout/Center.d.ts +5 -0
- package/dist/layout/Col.d.ts +6 -0
- package/dist/layout/Divider.d.ts +3 -0
- package/dist/layout/Row.d.ts +6 -0
- package/dist/layout/ScrollView.d.ts +5 -0
- package/dist/layout/Spacer.d.ts +3 -0
- package/dist/navigation/Tabs.d.ts +39 -0
- package/dist/preset/index.d.ts +2 -0
- package/dist/preset/index.js +26 -0
- package/dist/preset/index.js.map +1 -0
- package/dist/shared/styles.d.ts +19 -0
- package/dist/styles/base.css +6 -0
- package/dist/styles/components/alert.css +17 -0
- package/dist/styles/components/avatar.css +16 -0
- package/dist/styles/components/badge.css +44 -0
- package/dist/styles/components/button.css +79 -0
- package/dist/styles/components/card.css +39 -0
- package/dist/styles/components/checkbox.css +44 -0
- package/dist/styles/components/divider.css +14 -0
- package/dist/styles/components/form-field.css +25 -0
- package/dist/styles/components/input.css +31 -0
- package/dist/styles/components/loading.css +33 -0
- package/dist/styles/components/modal.css +41 -0
- package/dist/styles/components/progress.css +24 -0
- package/dist/styles/components/radio.css +50 -0
- package/dist/styles/components/select.css +56 -0
- package/dist/styles/components/skeleton.css +6 -0
- package/dist/styles/components/steps.css +40 -0
- package/dist/styles/components/tabs.css +23 -0
- package/dist/styles/components/textarea.css +31 -0
- package/dist/styles/components/toggle.css +46 -0
- package/dist/styles/components/typography.css +32 -0
- package/dist/styles/index.css +31 -0
- package/dist/styles/themes/dark.css +95 -0
- package/dist/styles/themes/light.css +95 -0
- package/dist/styles/themes/shapes.css +20 -0
- package/dist/typography/Heading.d.ts +6 -0
- package/dist/typography/Text.d.ts +8 -0
- package/package.json +65 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/feedback/Loading.tsx","../src/buttons/Button.tsx","../src/layout/Card.tsx","../src/shared/styles.ts","../src/layout/Row.tsx","../src/layout/Col.tsx","../src/layout/Center.tsx","../src/layout/Spacer.tsx","../src/layout/ScrollView.tsx","../src/layout/Divider.tsx","../src/forms/Input.tsx","../src/forms/Toggle.tsx","../src/forms/Checkbox.tsx","../src/forms/Select.tsx","../src/forms/Radio.tsx","../src/forms/Textarea.tsx","../src/forms/FormField.tsx","../src/feedback/Badge.tsx","../src/feedback/Alert.tsx","../src/feedback/Progress.tsx","../src/feedback/Modal.tsx","../src/feedback/Skeleton.tsx","../src/feedback/Steps.tsx","../src/navigation/Tabs.tsx","../src/data/Avatar.tsx","../src/typography/Text.tsx","../src/typography/Heading.tsx"],"sourcesContent":["import { component, type Define } from '@sigx/lynx';\n\nexport type LoadingType = 'spinner' | 'dots' | 'ring' | 'ball' | 'bars' | 'infinity';\nexport type LoadingSize = 'xs' | 'sm' | 'md' | 'lg';\nexport type LoadingColor = 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error';\n\nexport type LoadingProps =\n & Define.Prop<'type', LoadingType, false>\n & Define.Prop<'size', LoadingSize, false>\n & Define.Prop<'color', LoadingColor, false>\n & Define.Prop<'class', string, false>;\n\nexport const Loading = component<LoadingProps>(({ props }) => {\n const getClasses = () => {\n const c = ['loading'];\n c.push(`loading-${props.type ?? 'spinner'}`);\n if (props.size) c.push(`loading-${props.size}`);\n if (props.color) c.push(`text-${props.color}`);\n if (props.class) c.push(props.class);\n return c.join(' ');\n };\n\n return () => <view class={getClasses()} />;\n});\n","import { component, type Define } from '@sigx/lynx';\nimport { Loading } from '../feedback/Loading.js';\n\nexport type ButtonVariant =\n | 'primary' | 'secondary' | 'accent' | 'info'\n | 'success' | 'warning' | 'error' | 'ghost'\n | 'link' | 'neutral';\n\nexport type ButtonSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport type ButtonProps =\n & Define.Prop<'variant', ButtonVariant, false>\n & Define.Prop<'size', ButtonSize, false>\n & Define.Prop<'outline', boolean, false>\n & Define.Prop<'soft', boolean, false>\n & Define.Prop<'wide', boolean, false>\n & Define.Prop<'disabled', boolean, false>\n & Define.Prop<'loading', boolean, false>\n & Define.Prop<'block', boolean, false>\n & Define.Prop<'circle', boolean, false>\n & Define.Prop<'square', boolean, false>\n & Define.Prop<'active', boolean, false>\n & Define.Prop<'class', string, false>\n & Define.Slot<'default'>\n & Define.Event<'press', void>;\n\nconst variantClasses: Record<ButtonVariant, string> = {\n primary: 'btn-primary', secondary: 'btn-secondary', accent: 'btn-accent',\n info: 'btn-info', success: 'btn-success', warning: 'btn-warning',\n error: 'btn-error', ghost: 'btn-ghost', link: 'btn-link', neutral: 'btn-neutral',\n};\n\nconst sizeClasses: Record<ButtonSize, string> = {\n xs: 'btn-xs', sm: 'btn-sm', md: '', lg: 'btn-lg', xl: 'btn-xl',\n};\n\nexport const Button = component<ButtonProps>(({ props, slots, emit }) => {\n const getClasses = () => {\n const c = ['btn'];\n if (props.variant) c.push(variantClasses[props.variant]);\n if (props.size) { const s = sizeClasses[props.size]; if (s) c.push(s); }\n if (props.outline) c.push('btn-outline');\n if (props.soft) c.push('btn-soft');\n if (props.wide) c.push('btn-wide');\n if (props.loading) c.push('btn-loading');\n if (props.block) c.push('btn-block');\n if (props.circle) c.push('btn-circle');\n if (props.square) c.push('btn-square');\n if (props.active) c.push('btn-active');\n if (props.disabled) c.push('btn-disabled');\n if (props.class) c.push(props.class);\n return c.join(' ');\n };\n\n return () => (\n <view\n class={getClasses()}\n bindtap={() => { if (!props.disabled && !props.loading) emit('press'); }}\n >\n {props.loading\n ? <Loading type=\"spinner\" size=\"sm\" />\n : slots.default?.()}\n </view>\n );\n});\n","import { component, compound, type Define } from '@sigx/lynx';\n\nexport type CardProps =\n & Define.Prop<'bordered', boolean, false>\n & Define.Prop<'shadow', boolean | 'sm' | 'md' | 'lg', false>\n & Define.Prop<'compact', boolean, false>\n & Define.Prop<'class', string, false>\n & Define.Slot<'default'>;\n\nconst _Card = component<CardProps>(({ props, slots }) => {\n const getClasses = () => {\n const c = ['card'];\n if (props.bordered) c.push('card-bordered');\n if (props.compact) c.push('card-compact');\n if (props.shadow === true) c.push('shadow-md');\n else if (props.shadow === 'sm') c.push('shadow-sm');\n else if (props.shadow === 'md') c.push('shadow-md');\n else if (props.shadow === 'lg') c.push('shadow-lg');\n else if (props.shadow === undefined) c.push('shadow-md');\n if (props.class) c.push(props.class);\n return c.join(' ');\n };\n\n return () => <view class={getClasses()}>{slots.default?.()}</view>;\n});\n\ntype CardBodyProps = Define.Prop<'class', string, false> & Define.Slot<'default'>;\nconst CardBody = component<CardBodyProps>(({ props, slots }) => {\n return () => (\n <view class={`card-body${props.class ? ' ' + props.class : ''}`}>\n {slots.default?.()}\n </view>\n );\n});\n\ntype CardTitleProps = Define.Prop<'class', string, false> & Define.Slot<'default'>;\nconst CardTitle = component<CardTitleProps>(({ props, slots }) => {\n return () => (\n <text class={`card-title${props.class ? ' ' + props.class : ''}`}>\n {slots.default?.()}\n </text>\n );\n});\n\ntype CardActionsProps = Define.Prop<'class', string, false> & Define.Slot<'default'>;\nconst CardActions = component<CardActionsProps>(({ props, slots }) => {\n return () => (\n <view class={`card-actions${props.class ? ' ' + props.class : ''}`}>\n {slots.default?.()}\n </view>\n );\n});\n\nexport const Card = compound(_Card, {\n Body: CardBody,\n Title: CardTitle,\n Actions: CardActions,\n});\n","export type SpacingValue = number | {\n x?: number;\n y?: number;\n top?: number;\n right?: number;\n bottom?: number;\n left?: number;\n};\n\nexport interface BoxProps {\n width?: number | string;\n height?: number | string;\n flex?: number;\n background?: string;\n borderRadius?: number;\n padding?: SpacingValue;\n margin?: SpacingValue;\n}\n\nexport function resolveSpacing(\n value: SpacingValue | undefined,\n prefix: 'padding' | 'margin'\n): Record<string, number> {\n if (value === undefined) return {};\n\n if (typeof value === 'number') {\n return {\n [`${prefix}Top`]: value,\n [`${prefix}Right`]: value,\n [`${prefix}Bottom`]: value,\n [`${prefix}Left`]: value,\n };\n }\n\n const style: Record<string, number> = {};\n\n if (value.top !== undefined) style[`${prefix}Top`] = value.top;\n else if (value.y !== undefined) style[`${prefix}Top`] = value.y;\n\n if (value.bottom !== undefined) style[`${prefix}Bottom`] = value.bottom;\n else if (value.y !== undefined) style[`${prefix}Bottom`] = value.y;\n\n if (value.right !== undefined) style[`${prefix}Right`] = value.right;\n else if (value.x !== undefined) style[`${prefix}Right`] = value.x;\n\n if (value.left !== undefined) style[`${prefix}Left`] = value.left;\n else if (value.x !== undefined) style[`${prefix}Left`] = value.x;\n\n return style;\n}\n\nexport function resolveBoxStyle(props: BoxProps): Record<string, unknown> {\n const style: Record<string, unknown> = {};\n\n if (props.width !== undefined) style.width = props.width;\n if (props.height !== undefined) style.height = props.height;\n if (props.flex !== undefined) style.flex = props.flex;\n if (props.background !== undefined) style.backgroundColor = props.background;\n if (props.borderRadius !== undefined) style.borderRadius = props.borderRadius;\n\n Object.assign(style, resolveSpacing(props.padding, 'padding'));\n Object.assign(style, resolveSpacing(props.margin, 'margin'));\n\n return style;\n}\n","import { component, type Define } from '@sigx/lynx';\nimport { type SpacingValue, type BoxProps, resolveSpacing, resolveBoxStyle } from '../shared/styles.js';\n\nexport type RowProps =\n & Define.Prop<'gap', number, false>\n & Define.Prop<'align', 'flex-start' | 'center' | 'flex-end' | 'stretch' | 'baseline', false>\n & Define.Prop<'justify', 'flex-start' | 'center' | 'flex-end' | 'space-between' | 'space-around' | 'space-evenly', false>\n & Define.Prop<'wrap', boolean, false>\n & Define.Prop<'padding', SpacingValue, false>\n & Define.Prop<'margin', SpacingValue, false>\n & Define.Prop<'width', number | string, false>\n & Define.Prop<'height', number | string, false>\n & Define.Prop<'flex', number, false>\n & Define.Prop<'background', string, false>\n & Define.Prop<'borderRadius', number, false>\n & Define.Prop<'class', string, false>\n & Define.Slot<'default'>;\n\nexport const Row = component<RowProps>(({ props, slots }) => {\n const getStyle = (): Record<string, string | number> => {\n const style: Record<string, string | number> = {\n display: 'flex',\n flexDirection: 'row',\n };\n\n if (props.gap !== undefined) style.gap = props.gap;\n if (props.align) style.alignItems = props.align;\n if (props.justify) style.justifyContent = props.justify;\n if (props.wrap) style.flexWrap = 'wrap';\n\n const box = resolveBoxStyle({\n width: props.width,\n height: props.height,\n flex: props.flex,\n background: props.background,\n borderRadius: props.borderRadius,\n padding: props.padding,\n margin: props.margin,\n });\n for (const key in box) {\n style[key] = box[key] as string | number;\n }\n\n return style;\n };\n\n return () => (\n <view class={props.class} style={getStyle()}>\n {slots.default?.()}\n </view>\n );\n});\n","import { component, type Define } from '@sigx/lynx';\nimport { type SpacingValue, type BoxProps, resolveSpacing, resolveBoxStyle } from '../shared/styles.js';\n\nexport type ColProps =\n & Define.Prop<'gap', number, false>\n & Define.Prop<'align', 'flex-start' | 'center' | 'flex-end' | 'stretch' | 'baseline', false>\n & Define.Prop<'justify', 'flex-start' | 'center' | 'flex-end' | 'space-between' | 'space-around' | 'space-evenly', false>\n & Define.Prop<'wrap', boolean, false>\n & Define.Prop<'padding', SpacingValue, false>\n & Define.Prop<'margin', SpacingValue, false>\n & Define.Prop<'width', number | string, false>\n & Define.Prop<'height', number | string, false>\n & Define.Prop<'flex', number, false>\n & Define.Prop<'background', string, false>\n & Define.Prop<'borderRadius', number, false>\n & Define.Prop<'class', string, false>\n & Define.Slot<'default'>;\n\nexport const Col = component<ColProps>(({ props, slots }) => {\n const getStyle = (): Record<string, string | number> => {\n const style: Record<string, string | number> = {\n display: 'flex',\n flexDirection: 'column',\n };\n\n if (props.gap !== undefined) style.gap = props.gap;\n if (props.align) style.alignItems = props.align;\n if (props.justify) style.justifyContent = props.justify;\n if (props.wrap) style.flexWrap = 'wrap';\n\n const box = resolveBoxStyle({\n width: props.width,\n height: props.height,\n flex: props.flex,\n background: props.background,\n borderRadius: props.borderRadius,\n padding: props.padding,\n margin: props.margin,\n });\n for (const key in box) {\n style[key] = box[key] as string | number;\n }\n\n return style;\n };\n\n return () => (\n <view class={props.class} style={getStyle()}>\n {slots.default?.()}\n </view>\n );\n});\n","import { component, type Define } from '@sigx/lynx';\nimport { resolveBoxStyle } from '../shared/styles.js';\n\nexport type CenterProps =\n & Define.Prop<'width', number | string, false>\n & Define.Prop<'height', number | string, false>\n & Define.Prop<'flex', number, false>\n & Define.Prop<'background', string, false>\n & Define.Prop<'borderRadius', number, false>\n & Define.Prop<'class', string, false>\n & Define.Slot<'default'>;\n\nexport const Center = component<CenterProps>(({ props, slots }) => {\n const getStyle = (): Record<string, string | number> => {\n const style: Record<string, string | number> = {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n };\n\n const box = resolveBoxStyle({\n width: props.width,\n height: props.height,\n flex: props.flex,\n background: props.background,\n borderRadius: props.borderRadius,\n });\n for (const key in box) {\n style[key] = box[key] as string | number;\n }\n\n return style;\n };\n\n return () => (\n <view class={props.class} style={getStyle()}>\n {slots.default?.()}\n </view>\n );\n});\n","import { component, type Define } from '@sigx/lynx';\n\nexport type SpacerProps =\n & Define.Prop<'size', number, false>\n & Define.Prop<'class', string, false>;\n\nexport const Spacer = component<SpacerProps>(({ props }) => {\n const getStyle = (): Record<string, string | number> => {\n if (props.size !== undefined) {\n return { width: props.size, height: props.size };\n }\n return { flex: 1 };\n };\n\n return () => (\n <view class={props.class} style={getStyle()} />\n );\n});\n","import { component, type Define } from '@sigx/lynx';\n\nexport type ScrollViewProps =\n & Define.Prop<'direction', 'vertical' | 'horizontal', false>\n & Define.Prop<'height', number | string, false>\n & Define.Prop<'width', number | string, false>\n & Define.Prop<'flex', number, false>\n & Define.Prop<'showScrollbar', boolean, false>\n & Define.Prop<'bounces', boolean, false>\n & Define.Prop<'class', string, false>\n & Define.Slot<'default'>;\n\nexport const ScrollView = component<ScrollViewProps>(({ props, slots }) => {\n const getStyle = (): Record<string, string | number> => {\n const style: Record<string, string | number> = {};\n if (props.height !== undefined) style.height = props.height;\n if (props.width !== undefined) style.width = props.width;\n if (props.flex !== undefined) style.flex = props.flex;\n return style;\n };\n\n return () => {\n const dir = props.direction ?? 'vertical';\n return (\n <scroll-view\n class={props.class}\n style={getStyle()}\n scroll-orientation={dir}\n scroll-y={dir === 'vertical' ? true : undefined}\n scroll-x={dir === 'horizontal' ? true : undefined}\n show-scrollbar={props.showScrollbar}\n bounces={props.bounces}\n >\n {slots.default?.()}\n </scroll-view>\n );\n };\n});\n","import { component, type Define } from '@sigx/lynx';\n\nexport type DividerProps =\n & Define.Prop<'vertical', boolean, false>\n & Define.Prop<'color', string, false>\n & Define.Prop<'margin', number, false>\n & Define.Prop<'class', string, false>;\n\nexport const Divider = component<DividerProps>(({ props }) => {\n const getClasses = () => {\n const c = [props.vertical ? 'divider-vertical' : 'divider'];\n if (props.class) c.push(props.class);\n return c.join(' ');\n };\n\n const getStyle = (): Record<string, string | number> => {\n const style: Record<string, string | number> = {};\n if (props.color) style.backgroundColor = props.color;\n if (props.margin !== undefined) {\n if (props.vertical) {\n style.marginLeft = props.margin;\n style.marginRight = props.margin;\n } else {\n style.marginTop = props.margin;\n style.marginBottom = props.margin;\n }\n }\n return style;\n };\n\n return () => (\n <view class={getClasses()} style={getStyle()} />\n );\n});\n","import { component, type Define, type Model } from '@sigx/lynx';\n\nexport type InputSize = 'xs' | 'sm' | 'md' | 'lg';\nexport type InputVariant = 'bordered' | 'ghost';\nexport type InputColor = 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error';\n\nexport type InputProps =\n & Define.Prop<'placeholder', string, false>\n & Define.Prop<'size', InputSize, false>\n & Define.Prop<'variant', InputVariant, false>\n & Define.Prop<'color', InputColor, false>\n & Define.Prop<'disabled', boolean, false>\n & Define.Prop<'type', 'text' | 'number' | 'password', false>\n & Define.Prop<'class', string, false>\n & Define.Model<string>;\n\nconst sizeClasses: Record<InputSize, string> = {\n xs: 'input-xs', sm: 'input-sm', md: '', lg: 'input-lg',\n};\n\nexport const Input = component<InputProps>(({ props }) => {\n const getClasses = () => {\n const c = ['input'];\n if (props.variant === 'bordered') c.push('input-bordered');\n if (props.variant === 'ghost') c.push('input-ghost');\n if (props.color) c.push(`input-${props.color}`);\n if (props.size) { const s = sizeClasses[props.size]; if (s) c.push(s); }\n if (props.class) c.push(props.class);\n return c.join(' ');\n };\n\n return () => (\n <input\n class={getClasses()}\n placeholder={props.placeholder}\n type={props.type ?? 'text'}\n disabled={props.disabled}\n model={props.model}\n />\n );\n});\n","import { component, type Define } from '@sigx/lynx';\n\nexport type ToggleColor = 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error';\nexport type ToggleSize = 'xs' | 'sm' | 'md' | 'lg';\n\nexport type ToggleProps =\n & Define.Prop<'checked', boolean, false>\n & Define.Prop<'color', ToggleColor, false>\n & Define.Prop<'size', ToggleSize, false>\n & Define.Prop<'disabled', boolean, false>\n & Define.Prop<'class', string, false>\n & Define.Event<'change', boolean>;\n\nconst thumbOffsetMap: Record<ToggleSize, number> = {\n xs: 10, sm: 16, md: 20, lg: 24,\n};\n\nexport const Toggle = component<ToggleProps>(({ props, emit }) => {\n const getClasses = () => {\n const c = ['toggle'];\n const size = props.size ?? 'md';\n c.push(`toggle-${size}`);\n if (props.color) c.push(`toggle-${props.color}`);\n if (props.checked) c.push('toggle-checked');\n if (props.disabled) c.push('toggle-disabled');\n if (props.class) c.push(props.class);\n return c.join(' ');\n };\n\n return () => {\n const checked = !!props.checked;\n const size = props.size ?? 'md';\n const offset = checked ? thumbOffsetMap[size] : 0;\n\n return (\n <view\n class={getClasses()}\n bindtap={() => {\n if (!props.disabled) emit('change', !checked);\n }}\n >\n <view\n class=\"toggle-thumb\"\n style={{ transform: `translateX(${offset}px)` }}\n />\n </view>\n );\n };\n});\n","import { component, type Define } from '@sigx/lynx';\n\nexport type CheckboxColor = 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error';\nexport type CheckboxSize = 'xs' | 'sm' | 'md' | 'lg';\n\nexport type CheckboxProps =\n & Define.Prop<'checked', boolean, false>\n & Define.Prop<'color', CheckboxColor, false>\n & Define.Prop<'size', CheckboxSize, false>\n & Define.Prop<'disabled', boolean, false>\n & Define.Prop<'class', string, false>\n & Define.Event<'change', boolean>;\n\nconst checkmarkSizeMap: Record<CheckboxSize, number> = {\n xs: 10, sm: 12, md: 14, lg: 19,\n};\n\nexport const Checkbox = component<CheckboxProps>(({ props, emit }) => {\n const getClasses = () => {\n const c = ['checkbox'];\n const size = props.size ?? 'md';\n if (size !== 'md') c.push(`checkbox-${size}`);\n if (props.color) c.push(`checkbox-${props.color}`);\n if (props.checked) c.push('checkbox-checked');\n if (props.disabled) c.push('checkbox-disabled');\n if (props.class) c.push(props.class);\n return c.join(' ');\n };\n\n return () => {\n const checked = !!props.checked;\n const size = props.size ?? 'md';\n\n return (\n <view\n class={getClasses()}\n bindtap={() => {\n if (!props.disabled) emit('change', !checked);\n }}\n >\n {checked ? (\n <text class=\"checkbox-mark\" style={{ fontSize: checkmarkSizeMap[size] }}>✓</text>\n ) : null}\n </view>\n );\n };\n});\n","import { component, signal, type Define } from '@sigx/lynx';\n\nexport type SelectSize = 'xs' | 'sm' | 'md' | 'lg';\nexport type SelectVariant = 'bordered' | 'ghost';\nexport type SelectColor = 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error';\n\nexport interface SelectOption {\n label: string;\n value: string;\n}\n\nexport type SelectProps =\n & Define.Prop<'options', SelectOption[], false>\n & Define.Prop<'value', string, false>\n & Define.Prop<'placeholder', string, false>\n & Define.Prop<'size', SelectSize, false>\n & Define.Prop<'variant', SelectVariant, false>\n & Define.Prop<'color', SelectColor, false>\n & Define.Prop<'disabled', boolean, false>\n & Define.Prop<'class', string, false>\n & Define.Event<'change', string>;\n\nexport const Select = component<SelectProps>(({ props, emit }) => {\n const state = signal({ open: false });\n\n const getClasses = () => {\n const c = ['select'];\n if (props.variant === 'bordered') c.push('select-bordered');\n if (props.variant === 'ghost') c.push('select-ghost');\n if (props.color) c.push(`select-${props.color}`);\n if (props.size) c.push(`select-${props.size}`);\n if (props.class) c.push(props.class);\n return c.join(' ');\n };\n\n const getSelectedLabel = () => {\n const opts = props.options ?? [];\n const found = opts.find((o) => o.value === props.value);\n return found ? found.label : (props.placeholder ?? 'Select...');\n };\n\n return () => (\n <view style={{ position: 'relative', opacity: props.disabled ? 0.5 : 1 }}>\n <view\n class={getClasses()}\n bindtap={() => {\n if (!props.disabled) state.open = !state.open;\n }}\n >\n <text>{getSelectedLabel()}</text>\n <view style={{ marginLeft: 'auto' }}><text>{state.open ? '▲' : '▼'}</text></view>\n </view>\n\n {state.open && !props.disabled && (\n <view class=\"select-dropdown\" style={{ position: 'absolute', top: '100%', left: 0, right: 0, zIndex: 10 }}>\n {(props.options ?? []).map((option) => (\n <view\n class={`select-option${option.value === props.value ? ' select-option-active' : ''}`}\n bindtap={() => {\n emit('change', option.value);\n state.open = false;\n }}\n >\n <text>{option.label}</text>\n </view>\n ))}\n </view>\n )}\n </view>\n );\n});\n","import { component, compound, type Define } from '@sigx/lynx';\n\nexport type RadioColor = 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error';\nexport type RadioSize = 'xs' | 'sm' | 'md' | 'lg';\n\nexport type RadioGroupProps =\n & Define.Prop<'value', string, false>\n & Define.Prop<'color', RadioColor, false>\n & Define.Prop<'size', RadioSize, false>\n & Define.Prop<'class', string, false>\n & Define.Slot<'default'>\n & Define.Event<'change', string>;\n\nexport type RadioItemProps =\n & Define.Prop<'value', string, false>\n & Define.Prop<'label', string, false>\n & Define.Prop<'disabled', boolean, false>\n & Define.Prop<'checked', boolean, false>\n & Define.Prop<'color', RadioColor, false>\n & Define.Prop<'size', RadioSize, false>\n & Define.Prop<'class', string, false>\n & Define.Event<'select', string>;\n\nconst RadioItem = component<RadioItemProps>(({ props, emit }) => {\n const getClasses = () => {\n const c = ['radio'];\n if (props.color) c.push(`radio-${props.color}`);\n if (props.size) c.push(`radio-${props.size}`);\n if (props.checked) c.push('radio-checked');\n if (props.class) c.push(props.class);\n return c.join(' ');\n };\n\n return () => (\n <view\n style={{ flexDirection: 'row', alignItems: 'center', gap: 8, opacity: props.disabled ? 0.5 : 1 }}\n bindtap={() => {\n if (!props.disabled && props.value != null) emit('select', props.value);\n }}\n >\n <view class={getClasses()}>\n {props.checked && <view class=\"radio-mark\" />}\n </view>\n {props.label && <text>{props.label}</text>}\n </view>\n );\n});\n\nconst _RadioGroup = component<RadioGroupProps>(({ props, slots }) => {\n return () => (\n <view class={props.class ?? ''} style={{ gap: 8 }}>\n {slots.default?.()}\n </view>\n );\n});\n\nexport const Radio = compound(_RadioGroup, {\n Item: RadioItem,\n});\n","import { component, type Define, type Model } from '@sigx/lynx';\n\nexport type TextareaSize = 'xs' | 'sm' | 'md' | 'lg';\nexport type TextareaVariant = 'bordered' | 'ghost';\nexport type TextareaColor = 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error';\n\nexport type TextareaProps =\n & Define.Prop<'placeholder', string, false>\n & Define.Prop<'rows', number, false>\n & Define.Prop<'size', TextareaSize, false>\n & Define.Prop<'variant', TextareaVariant, false>\n & Define.Prop<'color', TextareaColor, false>\n & Define.Prop<'disabled', boolean, false>\n & Define.Prop<'class', string, false>\n & Define.Model<string>;\n\nconst sizeClasses: Record<TextareaSize, string> = {\n xs: 'textarea-xs', sm: 'textarea-sm', md: '', lg: 'textarea-lg',\n};\n\nexport const Textarea = component<TextareaProps>(({ props }) => {\n const getClasses = () => {\n const c = ['textarea'];\n if (props.variant === 'bordered') c.push('textarea-bordered');\n if (props.variant === 'ghost') c.push('textarea-ghost');\n if (props.color) c.push(`textarea-${props.color}`);\n if (props.size) { const s = sizeClasses[props.size]; if (s) c.push(s); }\n if (props.class) c.push(props.class);\n return c.join(' ');\n };\n\n const getHeight = () => {\n const rows = props.rows ?? 3;\n const lineHeight = 20;\n const padding = 16;\n return rows * lineHeight + padding;\n };\n\n return () => (\n <textarea\n class={getClasses()}\n placeholder={props.placeholder}\n disabled={props.disabled}\n model={props.model}\n style={{ height: getHeight() }}\n />\n );\n});\n","import { component, type Define } from '@sigx/lynx';\n\nexport type FormFieldProps =\n & Define.Prop<'label', string, false>\n & Define.Prop<'error', string, false>\n & Define.Prop<'required', boolean, false>\n & Define.Prop<'class', string, false>\n & Define.Slot<'default'>;\n\nexport const FormField = component<FormFieldProps>(({ props, slots }) => {\n return () => (\n <view class={['form-control', props.class].filter(Boolean).join(' ')} style={{ gap: 4 }}>\n {props.label && (\n <view class=\"label\">\n <text class=\"label-text\">\n {props.required ? `${props.label} *` : props.label}\n </text>\n </view>\n )}\n {slots.default?.()}\n {props.error && (\n <view class=\"label\">\n <text class=\"label-text-error\">\n {props.error}\n </text>\n </view>\n )}\n </view>\n );\n});\n","import { component, type Define } from '@sigx/lynx';\n\nexport type BadgeVariant = 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error' | 'neutral' | 'ghost';\nexport type BadgeSize = 'xs' | 'sm' | 'md' | 'lg';\n\nexport type BadgeProps =\n & Define.Prop<'variant', BadgeVariant, false>\n & Define.Prop<'size', BadgeSize, false>\n & Define.Prop<'outline', boolean, false>\n & Define.Prop<'class', string, false>\n & Define.Slot<'default'>;\n\nexport const Badge = component<BadgeProps>(({ props, slots }) => {\n const getClasses = () => {\n const c = ['badge'];\n if (props.variant) c.push(`badge-${props.variant}`);\n if (props.size) c.push(`badge-${props.size}`);\n if (props.outline) c.push('badge-outline');\n if (props.class) c.push(props.class);\n return c.join(' ');\n };\n\n return () => <view class={getClasses()}>{slots.default?.()}</view>;\n});\n","import { component, type Define } from '@sigx/lynx';\n\nexport type AlertVariant = 'info' | 'success' | 'warning' | 'error';\n\nexport type AlertProps =\n & Define.Prop<'variant', AlertVariant, false>\n & Define.Prop<'class', string, false>\n & Define.Slot<'default'>;\n\nexport const Alert = component<AlertProps>(({ props, slots }) => {\n const getClasses = () => {\n const c = ['alert'];\n if (props.variant) c.push(`alert-${props.variant}`);\n if (props.class) c.push(props.class);\n return c.join(' ');\n };\n\n return () => <view class={getClasses()}>{slots.default?.()}</view>;\n});\n","import { component, type Define } from '@sigx/lynx';\n\nexport type ProgressColor = 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error';\n\nexport type ProgressProps =\n & Define.Prop<'value', number, false>\n & Define.Prop<'max', number, false>\n & Define.Prop<'color', ProgressColor, false>\n & Define.Prop<'class', string, false>;\n\nexport const Progress = component<ProgressProps>(({ props }) => {\n const getClasses = () => {\n const c = ['progress'];\n if (props.color) c.push(`progress-${props.color}`);\n if (props.class) c.push(props.class);\n return c.join(' ');\n };\n\n return () => {\n const max = props.max ?? 100;\n const pct = Math.min(Math.max((props.value ?? 0) / max, 0), 1) * 100;\n\n return (\n <view class={getClasses()}>\n <view\n class=\"progress-bar\"\n style={{ width: `${pct}%` }}\n />\n </view>\n );\n };\n});\n","import { component, compound, type Define } from '@sigx/lynx';\n\nexport type ModalProps =\n & Define.Prop<'open', boolean, false>\n & Define.Prop<'onClose', () => void, false>\n & Define.Prop<'class', string, false>\n & Define.Slot<'default'>;\n\nconst _Modal = component<ModalProps>(({ props, slots }) => {\n return () => {\n if (!props.open) return <view style={{ display: 'none' }} />;\n\n return (\n <view\n class=\"modal-overlay\"\n bindtap={() => { props.onClose?.(); }}\n >\n <view\n class={`modal-box${props.class ? ' ' + props.class : ''}`}\n bindtap={(e: any) => { e?.stopPropagation?.(); }}\n >\n {slots.default?.()}\n </view>\n </view>\n );\n };\n});\n\ntype ModalHeaderProps = Define.Prop<'class', string, false> & Define.Slot<'default'>;\nconst ModalHeader = component<ModalHeaderProps>(({ props, slots }) => {\n return () => (\n <view class={`modal-header${props.class ? ' ' + props.class : ''}`}>\n {slots.default?.()}\n </view>\n );\n});\n\ntype ModalBodyProps = Define.Prop<'class', string, false> & Define.Slot<'default'>;\nconst ModalBody = component<ModalBodyProps>(({ props, slots }) => {\n return () => (\n <view class={`modal-body${props.class ? ' ' + props.class : ''}`}>\n {slots.default?.()}\n </view>\n );\n});\n\ntype ModalActionsProps = Define.Prop<'class', string, false> & Define.Slot<'default'>;\nconst ModalActions = component<ModalActionsProps>(({ props, slots }) => {\n return () => (\n <view class={`modal-action${props.class ? ' ' + props.class : ''}`}>\n {slots.default?.()}\n </view>\n );\n});\n\nexport const Modal = compound(_Modal, {\n Header: ModalHeader,\n Body: ModalBody,\n Actions: ModalActions,\n});\n","import { component, type Define } from '@sigx/lynx';\n\nexport type SkeletonProps =\n & Define.Prop<'width', number | string, false>\n & Define.Prop<'height', number | string, false>\n & Define.Prop<'circle', boolean, false>\n & Define.Prop<'class', string, false>;\n\nexport const Skeleton = component<SkeletonProps>(({ props }) => {\n return () => {\n const style: Record<string, any> = {};\n\n if (props.width != null) style.width = props.width;\n if (props.height != null) style.height = props.height;\n\n if (props.circle) {\n const size = props.width ?? props.height ?? 48;\n style.width = size;\n style.height = size;\n style.borderRadius = typeof size === 'number' ? size / 2 : '50%';\n }\n\n return (\n <view\n class={`skeleton${props.class ? ' ' + props.class : ''}`}\n style={style}\n />\n );\n };\n});\n","import { component, compound, type Define } from '@sigx/lynx';\n\nexport type StepColor = 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error' | 'neutral';\n\nexport type StepsProps =\n & Define.Prop<'vertical', boolean, false>\n & Define.Prop<'class', string, false>\n & Define.Slot<'default'>;\n\nexport type StepProps =\n & Define.Prop<'color', StepColor, false>\n & Define.Prop<'content', string, false>\n & Define.Prop<'class', string, false>\n & Define.Slot<'default'>;\n\nconst _Steps = component<StepsProps>(({ props, slots }) => {\n return () => {\n const isVertical = props.vertical ?? false;\n\n return (\n <view\n class={`steps${isVertical ? ' steps-vertical' : ' steps-horizontal'}${props.class ? ' ' + props.class : ''}`}\n >\n {slots.default?.()}\n </view>\n );\n };\n});\n\nconst Step = component<StepProps>(({ props, slots }) => {\n return () => {\n const color = props.color;\n const colorClass = color ? ` step-${color}` : '';\n\n return (\n <view class={`step${colorClass}${props.class ? ' ' + props.class : ''}`}>\n <view class={`step-indicator${colorClass}`}>\n {props.content ? <text style={{ fontSize: 14 }}>{props.content}</text> : null}\n </view>\n {slots.default?.()}\n </view>\n );\n };\n});\n\nexport const Steps = compound(_Steps, { Step });\n","import { component, compound, type Define } from '@sigx/lynx';\n\nexport type TabsProps =\n & Define.Prop<'activeTab', string, false>\n & Define.Prop<'onChange', (value: string) => void, false>\n & Define.Prop<'class', string, false>\n & Define.Slot<'default'>;\n\nexport type TabProps =\n & Define.Prop<'value', string>\n & Define.Prop<'label', string, false>\n & Define.Prop<'active', boolean, false>\n & Define.Prop<'onPress', () => void, false>\n & Define.Prop<'class', string, false>\n & Define.Slot<'default'>;\n\nconst _Tabs = component<TabsProps>(({ props, slots }) => {\n return () => (\n <view class={`tabs${props.class ? ' ' + props.class : ''}`}>\n {slots.default?.()}\n </view>\n );\n});\n\nconst Tab = component<TabProps>(({ props, slots }) => {\n return () => {\n const isActive = props.active ?? false;\n\n return (\n <view\n class={`tab${isActive ? ' tab-active' : ''}${props.class ? ' ' + props.class : ''}`}\n bindtap={() => {\n props.onPress?.();\n }}\n >\n {slots.default?.()}\n {props.label ? <text>{props.label}</text> : null}\n </view>\n );\n };\n});\n\nexport const Tabs = compound(_Tabs, {\n Tab,\n});\n","import { component, type Define } from '@sigx/lynx';\n\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport type AvatarProps =\n & Define.Prop<'src', string, false>\n & Define.Prop<'size', AvatarSize, false>\n & Define.Prop<'rounded', boolean | 'full', false>\n & Define.Prop<'placeholder', string, false>\n & Define.Prop<'online', boolean, false>\n & Define.Prop<'offline', boolean, false>\n & Define.Prop<'class', string, false>;\n\nconst sizeMap: Record<AvatarSize, number> = {\n xs: 24,\n sm: 32,\n md: 48,\n lg: 64,\n xl: 96,\n};\n\nconst fontSizeMap: Record<AvatarSize, number> = {\n xs: 10,\n sm: 12,\n md: 18,\n lg: 24,\n xl: 36,\n};\n\nexport const Avatar = component<AvatarProps>(({ props }) => {\n return () => {\n const size = props.size || 'md';\n const dim = sizeMap[size];\n\n const classes: string[] = ['avatar'];\n if (props.online) classes.push('online');\n if (props.offline) classes.push('offline');\n if (props.placeholder && !props.src) classes.push('placeholder');\n if (props.class) classes.push(props.class);\n\n const rounded = props.rounded;\n const borderRadius = rounded === 'full' || rounded === true ? dim / 2 : 8;\n\n const innerStyle = {\n width: dim,\n height: dim,\n borderRadius,\n overflow: 'hidden' as any,\n alignItems: 'center',\n justifyContent: 'center',\n display: 'flex',\n };\n\n if (props.src) {\n return (\n <view class={classes.join(' ')}>\n <view style={innerStyle}>\n <image\n src={props.src}\n style={{ width: dim, height: dim, borderRadius }}\n />\n </view>\n </view>\n );\n }\n\n return (\n <view class={classes.join(' ')}>\n <view class=\"avatar-placeholder\" style={innerStyle}>\n <text style={{ fontSize: fontSizeMap[size] }}>{props.placeholder || '?'}</text>\n </view>\n </view>\n );\n };\n});\n","import { component, type Define } from '@sigx/lynx';\n\nexport type TextSize = 'xs' | 'sm' | 'base' | 'lg' | 'xl' | '2xl' | '3xl';\nexport type TextWeight = 'light' | 'normal' | 'medium' | 'semibold' | 'bold';\nexport type TextColor = 'base-content' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error';\n\nexport type TextProps =\n & Define.Prop<'size', TextSize, false>\n & Define.Prop<'weight', TextWeight, false>\n & Define.Prop<'color', TextColor, false>\n & Define.Prop<'class', string, false>\n & Define.Slot<'default'>;\n\nconst sizeClasses: Record<TextSize, string> = {\n xs: 'text-xs', sm: 'text-sm', base: 'text-base', lg: 'text-lg',\n xl: 'text-xl', '2xl': 'text-2xl', '3xl': 'text-3xl',\n};\n\nconst weightClasses: Record<TextWeight, string> = {\n light: 'font-light', normal: 'font-normal', medium: 'font-medium',\n semibold: 'font-semibold', bold: 'font-bold',\n};\n\nexport const Text = component<TextProps>(({ props, slots }) => {\n const getClasses = () => {\n const c: string[] = [];\n if (props.size) c.push(sizeClasses[props.size]);\n if (props.weight) c.push(weightClasses[props.weight]);\n if (props.color) c.push(`text-${props.color}`);\n if (props.class) c.push(props.class);\n return c.join(' ');\n };\n\n return () => <text class={getClasses()}>{slots.default?.()}</text>;\n});\n","import { component, type Define } from '@sigx/lynx';\n\nexport type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\n\nexport type HeadingProps =\n & Define.Prop<'level', HeadingLevel, false>\n & Define.Prop<'class', string, false>\n & Define.Slot<'default'>;\n\nconst levelClasses: Record<HeadingLevel, string> = {\n 1: 'text-3xl font-bold',\n 2: 'text-2xl font-bold',\n 3: 'text-xl font-semibold',\n 4: 'text-lg font-semibold',\n 5: 'text-base font-semibold',\n 6: 'text-sm font-semibold',\n};\n\nexport const Heading = component<HeadingProps>(({ props, slots }) => {\n const getClasses = () => {\n const c = [levelClasses[props.level ?? 2], 'text-base-content'];\n if (props.class) c.push(props.class);\n return c.join(' ');\n };\n\n return () => <text class={getClasses()}>{slots.default?.()}</text>;\n});\n"],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { type Define } from '@sigx/lynx';
|
|
2
|
+
export type CardProps = Define.Prop<'bordered', boolean, false> & Define.Prop<'shadow', boolean | 'sm' | 'md' | 'lg', false> & Define.Prop<'compact', boolean, false> & Define.Prop<'class', string, false> & Define.Slot<'default'>;
|
|
3
|
+
type CardBodyProps = Define.Prop<'class', string, false> & Define.Slot<'default'>;
|
|
4
|
+
type CardTitleProps = Define.Prop<'class', string, false> & Define.Slot<'default'>;
|
|
5
|
+
type CardActionsProps = Define.Prop<'class', string, false> & Define.Slot<'default'>;
|
|
6
|
+
export declare const Card: ((props: {
|
|
7
|
+
bordered?: boolean | undefined;
|
|
8
|
+
class?: string | undefined;
|
|
9
|
+
compact?: boolean | undefined;
|
|
10
|
+
shadow?: "lg" | "md" | "sm" | boolean | undefined;
|
|
11
|
+
} & {} & {
|
|
12
|
+
slots?: Partial<{
|
|
13
|
+
default: () => import("@sigx/runtime-core").JSXElement | import("@sigx/runtime-core").JSXElement[] | null;
|
|
14
|
+
}> | undefined;
|
|
15
|
+
} & {} & JSX.IntrinsicAttributes & import("@sigx/runtime-core").ComponentAttributeExtensions & {
|
|
16
|
+
ref?: import("@sigx/runtime-core").Ref<void> | undefined;
|
|
17
|
+
children?: any;
|
|
18
|
+
}) => import("@sigx/runtime-core").JSXElement) & {
|
|
19
|
+
__setup: import("@sigx/runtime-core").SetupFn<{
|
|
20
|
+
bordered?: boolean | undefined;
|
|
21
|
+
class?: string | undefined;
|
|
22
|
+
compact?: boolean | undefined;
|
|
23
|
+
shadow?: "lg" | "md" | "sm" | boolean | undefined;
|
|
24
|
+
}, CardProps, void, {
|
|
25
|
+
default: () => import("@sigx/runtime-core").JSXElement | import("@sigx/runtime-core").JSXElement[] | null;
|
|
26
|
+
}>;
|
|
27
|
+
__name?: string;
|
|
28
|
+
__islandId?: string;
|
|
29
|
+
__props: {
|
|
30
|
+
bordered?: boolean | undefined;
|
|
31
|
+
class?: string | undefined;
|
|
32
|
+
compact?: boolean | undefined;
|
|
33
|
+
shadow?: "lg" | "md" | "sm" | boolean | undefined;
|
|
34
|
+
};
|
|
35
|
+
__events: CardProps;
|
|
36
|
+
__ref: void;
|
|
37
|
+
__slots: {
|
|
38
|
+
default: () => import("@sigx/runtime-core").JSXElement | import("@sigx/runtime-core").JSXElement[] | null;
|
|
39
|
+
};
|
|
40
|
+
} & {
|
|
41
|
+
Body: import("@sigx/runtime-core").ComponentFactory<CardBodyProps, void, {
|
|
42
|
+
default: () => import("@sigx/runtime-core").JSXElement | import("@sigx/runtime-core").JSXElement[] | null;
|
|
43
|
+
}>;
|
|
44
|
+
Title: import("@sigx/runtime-core").ComponentFactory<CardTitleProps, void, {
|
|
45
|
+
default: () => import("@sigx/runtime-core").JSXElement | import("@sigx/runtime-core").JSXElement[] | null;
|
|
46
|
+
}>;
|
|
47
|
+
Actions: import("@sigx/runtime-core").ComponentFactory<CardActionsProps, void, {
|
|
48
|
+
default: () => import("@sigx/runtime-core").JSXElement | import("@sigx/runtime-core").JSXElement[] | null;
|
|
49
|
+
}>;
|
|
50
|
+
};
|
|
51
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type Define } from '@sigx/lynx';
|
|
2
|
+
export type CenterProps = Define.Prop<'width', number | string, false> & Define.Prop<'height', number | string, false> & Define.Prop<'flex', number, false> & Define.Prop<'background', string, false> & Define.Prop<'borderRadius', number, false> & Define.Prop<'class', string, false> & Define.Slot<'default'>;
|
|
3
|
+
export declare const Center: import("@sigx/runtime-core").ComponentFactory<CenterProps, void, {
|
|
4
|
+
default: () => import("@sigx/runtime-core").JSXElement | import("@sigx/runtime-core").JSXElement[] | null;
|
|
5
|
+
}>;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type Define } from '@sigx/lynx';
|
|
2
|
+
import { type SpacingValue } from '../shared/styles.js';
|
|
3
|
+
export type ColProps = Define.Prop<'gap', number, false> & Define.Prop<'align', 'flex-start' | 'center' | 'flex-end' | 'stretch' | 'baseline', false> & Define.Prop<'justify', 'flex-start' | 'center' | 'flex-end' | 'space-between' | 'space-around' | 'space-evenly', false> & Define.Prop<'wrap', boolean, false> & Define.Prop<'padding', SpacingValue, false> & Define.Prop<'margin', SpacingValue, false> & Define.Prop<'width', number | string, false> & Define.Prop<'height', number | string, false> & Define.Prop<'flex', number, false> & Define.Prop<'background', string, false> & Define.Prop<'borderRadius', number, false> & Define.Prop<'class', string, false> & Define.Slot<'default'>;
|
|
4
|
+
export declare const Col: import("@sigx/runtime-core").ComponentFactory<ColProps, void, {
|
|
5
|
+
default: () => import("@sigx/runtime-core").JSXElement | import("@sigx/runtime-core").JSXElement[] | null;
|
|
6
|
+
}>;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { type Define } from '@sigx/lynx';
|
|
2
|
+
export type DividerProps = Define.Prop<'vertical', boolean, false> & Define.Prop<'color', string, false> & Define.Prop<'margin', number, false> & Define.Prop<'class', string, false>;
|
|
3
|
+
export declare const Divider: import("@sigx/runtime-core").ComponentFactory<DividerProps, void, {}>;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type Define } from '@sigx/lynx';
|
|
2
|
+
import { type SpacingValue } from '../shared/styles.js';
|
|
3
|
+
export type RowProps = Define.Prop<'gap', number, false> & Define.Prop<'align', 'flex-start' | 'center' | 'flex-end' | 'stretch' | 'baseline', false> & Define.Prop<'justify', 'flex-start' | 'center' | 'flex-end' | 'space-between' | 'space-around' | 'space-evenly', false> & Define.Prop<'wrap', boolean, false> & Define.Prop<'padding', SpacingValue, false> & Define.Prop<'margin', SpacingValue, false> & Define.Prop<'width', number | string, false> & Define.Prop<'height', number | string, false> & Define.Prop<'flex', number, false> & Define.Prop<'background', string, false> & Define.Prop<'borderRadius', number, false> & Define.Prop<'class', string, false> & Define.Slot<'default'>;
|
|
4
|
+
export declare const Row: import("@sigx/runtime-core").ComponentFactory<RowProps, void, {
|
|
5
|
+
default: () => import("@sigx/runtime-core").JSXElement | import("@sigx/runtime-core").JSXElement[] | null;
|
|
6
|
+
}>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type Define } from '@sigx/lynx';
|
|
2
|
+
export type ScrollViewProps = Define.Prop<'direction', 'vertical' | 'horizontal', false> & Define.Prop<'height', number | string, false> & Define.Prop<'width', number | string, false> & Define.Prop<'flex', number, false> & Define.Prop<'showScrollbar', boolean, false> & Define.Prop<'bounces', boolean, false> & Define.Prop<'class', string, false> & Define.Slot<'default'>;
|
|
3
|
+
export declare const ScrollView: import("@sigx/runtime-core").ComponentFactory<ScrollViewProps, void, {
|
|
4
|
+
default: () => import("@sigx/runtime-core").JSXElement | import("@sigx/runtime-core").JSXElement[] | null;
|
|
5
|
+
}>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { type Define } from '@sigx/lynx';
|
|
2
|
+
export type TabsProps = Define.Prop<'activeTab', string, false> & Define.Prop<'onChange', (value: string) => void, false> & Define.Prop<'class', string, false> & Define.Slot<'default'>;
|
|
3
|
+
export type TabProps = Define.Prop<'value', string> & Define.Prop<'label', string, false> & Define.Prop<'active', boolean, false> & Define.Prop<'onPress', () => void, false> & Define.Prop<'class', string, false> & Define.Slot<'default'>;
|
|
4
|
+
export declare const Tabs: ((props: {
|
|
5
|
+
activeTab?: string | undefined;
|
|
6
|
+
class?: string | undefined;
|
|
7
|
+
onChange?: ((value: string) => void) | undefined;
|
|
8
|
+
} & {} & {
|
|
9
|
+
slots?: Partial<{
|
|
10
|
+
default: () => import("@sigx/runtime-core").JSXElement | import("@sigx/runtime-core").JSXElement[] | null;
|
|
11
|
+
}> | undefined;
|
|
12
|
+
} & {} & JSX.IntrinsicAttributes & import("@sigx/runtime-core").ComponentAttributeExtensions & {
|
|
13
|
+
ref?: import("@sigx/runtime-core").Ref<void> | undefined;
|
|
14
|
+
children?: any;
|
|
15
|
+
}) => import("@sigx/runtime-core").JSXElement) & {
|
|
16
|
+
__setup: import("@sigx/runtime-core").SetupFn<{
|
|
17
|
+
activeTab?: string | undefined;
|
|
18
|
+
class?: string | undefined;
|
|
19
|
+
onChange?: ((value: string) => void) | undefined;
|
|
20
|
+
}, TabsProps, void, {
|
|
21
|
+
default: () => import("@sigx/runtime-core").JSXElement | import("@sigx/runtime-core").JSXElement[] | null;
|
|
22
|
+
}>;
|
|
23
|
+
__name?: string;
|
|
24
|
+
__islandId?: string;
|
|
25
|
+
__props: {
|
|
26
|
+
activeTab?: string | undefined;
|
|
27
|
+
class?: string | undefined;
|
|
28
|
+
onChange?: ((value: string) => void) | undefined;
|
|
29
|
+
};
|
|
30
|
+
__events: TabsProps;
|
|
31
|
+
__ref: void;
|
|
32
|
+
__slots: {
|
|
33
|
+
default: () => import("@sigx/runtime-core").JSXElement | import("@sigx/runtime-core").JSXElement[] | null;
|
|
34
|
+
};
|
|
35
|
+
} & {
|
|
36
|
+
Tab: import("@sigx/runtime-core").ComponentFactory<TabProps, void, {
|
|
37
|
+
default: () => import("@sigx/runtime-core").JSXElement | import("@sigx/runtime-core").JSXElement[] | null;
|
|
38
|
+
}>;
|
|
39
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
var e = { theme: { extend: { colors: {
|
|
2
|
+
primary: "var(--color-primary)",
|
|
3
|
+
"primary-content": "var(--color-primary-content)",
|
|
4
|
+
secondary: "var(--color-secondary)",
|
|
5
|
+
"secondary-content": "var(--color-secondary-content)",
|
|
6
|
+
accent: "var(--color-accent)",
|
|
7
|
+
"accent-content": "var(--color-accent-content)",
|
|
8
|
+
neutral: "var(--color-neutral)",
|
|
9
|
+
"neutral-content": "var(--color-neutral-content)",
|
|
10
|
+
"base-100": "var(--color-base-100)",
|
|
11
|
+
"base-200": "var(--color-base-200)",
|
|
12
|
+
"base-300": "var(--color-base-300)",
|
|
13
|
+
"base-content": "var(--color-base-content)",
|
|
14
|
+
info: "var(--color-info)",
|
|
15
|
+
"info-content": "var(--color-info-content)",
|
|
16
|
+
success: "var(--color-success)",
|
|
17
|
+
"success-content": "var(--color-success-content)",
|
|
18
|
+
warning: "var(--color-warning)",
|
|
19
|
+
"warning-content": "var(--color-warning-content)",
|
|
20
|
+
error: "var(--color-error)",
|
|
21
|
+
"error-content": "var(--color-error-content)"
|
|
22
|
+
} } } };
|
|
23
|
+
//#endregion
|
|
24
|
+
export { e as DaisyLynxPreset };
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/preset/index.ts"],"sourcesContent":["import type { Config } from 'tailwindcss';\n\n/**\n * DaisyUI Lynx Tailwind Preset\n *\n * Maps DaisyUI semantic color tokens to CSS custom properties\n * defined in @sigx/lynx-daisyui/styles. Consumers add this\n * preset to their tailwind.config.ts so utilities like\n * `bg-primary` and `text-base-content` resolve to our tokens.\n */\nconst daisyColors: Record<string, string> = {\n 'primary': 'var(--color-primary)',\n 'primary-content': 'var(--color-primary-content)',\n 'secondary': 'var(--color-secondary)',\n 'secondary-content': 'var(--color-secondary-content)',\n 'accent': 'var(--color-accent)',\n 'accent-content': 'var(--color-accent-content)',\n 'neutral': 'var(--color-neutral)',\n 'neutral-content': 'var(--color-neutral-content)',\n 'base-100': 'var(--color-base-100)',\n 'base-200': 'var(--color-base-200)',\n 'base-300': 'var(--color-base-300)',\n 'base-content': 'var(--color-base-content)',\n 'info': 'var(--color-info)',\n 'info-content': 'var(--color-info-content)',\n 'success': 'var(--color-success)',\n 'success-content': 'var(--color-success-content)',\n 'warning': 'var(--color-warning)',\n 'warning-content': 'var(--color-warning-content)',\n 'error': 'var(--color-error)',\n 'error-content': 'var(--color-error-content)',\n};\n\nexport const DaisyLynxPreset: Partial<Config> = {\n theme: {\n extend: {\n colors: daisyColors,\n },\n },\n};\n"],"mappings":"AAiCA,IAAa,IAAmC,EAC9C,OAAO,EACL,QAAQ,EACN,QAAQ;CAzBZ,SAAW;CACX,mBAAmB;CACnB,WAAa;CACb,qBAAqB;CACrB,QAAU;CACV,kBAAkB;CAClB,SAAW;CACX,mBAAmB;CACnB,YAAY;CACZ,YAAY;CACZ,YAAY;CACZ,gBAAgB;CAChB,MAAQ;CACR,gBAAgB;CAChB,SAAW;CACX,mBAAmB;CACnB,SAAW;CACX,mBAAmB;CACnB,OAAS;CACT,iBAAiB;CAML,EACT,EACF,EACF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type SpacingValue = number | {
|
|
2
|
+
x?: number;
|
|
3
|
+
y?: number;
|
|
4
|
+
top?: number;
|
|
5
|
+
right?: number;
|
|
6
|
+
bottom?: number;
|
|
7
|
+
left?: number;
|
|
8
|
+
};
|
|
9
|
+
export interface BoxProps {
|
|
10
|
+
width?: number | string;
|
|
11
|
+
height?: number | string;
|
|
12
|
+
flex?: number;
|
|
13
|
+
background?: string;
|
|
14
|
+
borderRadius?: number;
|
|
15
|
+
padding?: SpacingValue;
|
|
16
|
+
margin?: SpacingValue;
|
|
17
|
+
}
|
|
18
|
+
export declare function resolveSpacing(value: SpacingValue | undefined, prefix: 'padding' | 'margin'): Record<string, number>;
|
|
19
|
+
export declare function resolveBoxStyle(props: BoxProps): Record<string, unknown>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/* Alert — .alert + status variants */
|
|
2
|
+
|
|
3
|
+
.alert {
|
|
4
|
+
display: flex;
|
|
5
|
+
flex-direction: row;
|
|
6
|
+
align-items: center;
|
|
7
|
+
padding: var(--padding-box);
|
|
8
|
+
border-radius: var(--rounded-box);
|
|
9
|
+
gap: 12px;
|
|
10
|
+
background-color: var(--color-base-200);
|
|
11
|
+
color: var(--color-base-content);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.alert-info { background-color: var(--color-info); color: var(--color-info-content); }
|
|
15
|
+
.alert-success { background-color: var(--color-success); color: var(--color-success-content); }
|
|
16
|
+
.alert-warning { background-color: var(--color-warning); color: var(--color-warning-content); }
|
|
17
|
+
.alert-error { background-color: var(--color-error); color: var(--color-error-content); }
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/* Avatar — .avatar + placeholder */
|
|
2
|
+
|
|
3
|
+
.avatar {
|
|
4
|
+
display: flex;
|
|
5
|
+
align-items: center;
|
|
6
|
+
justify-content: center;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/* Placeholder background */
|
|
10
|
+
.avatar-placeholder {
|
|
11
|
+
background-color: var(--color-neutral);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.avatar-placeholder text {
|
|
15
|
+
color: var(--color-neutral-content);
|
|
16
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/* Badge — .badge + variants, sizes, outline */
|
|
2
|
+
|
|
3
|
+
.badge {
|
|
4
|
+
display: flex;
|
|
5
|
+
align-items: center;
|
|
6
|
+
justify-content: center;
|
|
7
|
+
height: var(--badge-md);
|
|
8
|
+
padding-left: 10px;
|
|
9
|
+
padding-right: 10px;
|
|
10
|
+
border-radius: var(--rounded-badge);
|
|
11
|
+
font-size: var(--font-md);
|
|
12
|
+
font-weight: 600;
|
|
13
|
+
background-color: var(--color-base-200);
|
|
14
|
+
color: var(--color-base-content);
|
|
15
|
+
border-width: 0;
|
|
16
|
+
border-color: transparent;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/* Color variants */
|
|
20
|
+
.badge-primary { background-color: var(--color-primary); color: var(--color-primary-content); }
|
|
21
|
+
.badge-secondary { background-color: var(--color-secondary); color: var(--color-secondary-content); }
|
|
22
|
+
.badge-accent { background-color: var(--color-accent); color: var(--color-accent-content); }
|
|
23
|
+
.badge-neutral { background-color: var(--color-neutral); color: var(--color-neutral-content); }
|
|
24
|
+
.badge-info { background-color: var(--color-info); color: var(--color-info-content); }
|
|
25
|
+
.badge-success { background-color: var(--color-success); color: var(--color-success-content); }
|
|
26
|
+
.badge-warning { background-color: var(--color-warning); color: var(--color-warning-content); }
|
|
27
|
+
.badge-error { background-color: var(--color-error); color: var(--color-error-content); }
|
|
28
|
+
.badge-ghost { background-color: transparent; color: var(--color-base-content); }
|
|
29
|
+
|
|
30
|
+
/* Sizes */
|
|
31
|
+
.badge-xs { height: var(--badge-xs); padding-left: 6px; padding-right: 6px; font-size: 10px; }
|
|
32
|
+
.badge-sm { height: var(--badge-sm); padding-left: 8px; padding-right: 8px; font-size: var(--font-xs); }
|
|
33
|
+
.badge-lg { height: var(--badge-lg); padding-left: 12px; padding-right: 12px; font-size: 16px; }
|
|
34
|
+
|
|
35
|
+
/* Outline */
|
|
36
|
+
.badge-outline { background-color: transparent; border-width: 1px; }
|
|
37
|
+
.badge-outline.badge-primary { border-color: var(--color-primary); color: var(--color-primary); }
|
|
38
|
+
.badge-outline.badge-secondary { border-color: var(--color-secondary); color: var(--color-secondary); }
|
|
39
|
+
.badge-outline.badge-accent { border-color: var(--color-accent); color: var(--color-accent); }
|
|
40
|
+
.badge-outline.badge-neutral { border-color: var(--color-neutral); color: var(--color-neutral); }
|
|
41
|
+
.badge-outline.badge-info { border-color: var(--color-info); color: var(--color-info); }
|
|
42
|
+
.badge-outline.badge-success { border-color: var(--color-success); color: var(--color-success); }
|
|
43
|
+
.badge-outline.badge-warning { border-color: var(--color-warning); color: var(--color-warning); }
|
|
44
|
+
.badge-outline.badge-error { border-color: var(--color-error); color: var(--color-error); }
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/* Button — .btn + variants, sizes, modifiers, states */
|
|
2
|
+
|
|
3
|
+
.btn {
|
|
4
|
+
display: flex;
|
|
5
|
+
align-items: center;
|
|
6
|
+
justify-content: center;
|
|
7
|
+
height: var(--size-md);
|
|
8
|
+
min-height: var(--size-md);
|
|
9
|
+
padding-left: var(--padding-btn-md);
|
|
10
|
+
padding-right: var(--padding-btn-md);
|
|
11
|
+
border-radius: var(--rounded-btn);
|
|
12
|
+
font-size: var(--font-md);
|
|
13
|
+
font-weight: 600;
|
|
14
|
+
line-height: 1;
|
|
15
|
+
background-color: var(--color-base-200);
|
|
16
|
+
color: var(--color-base-content);
|
|
17
|
+
border-width: 0;
|
|
18
|
+
border-color: transparent;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/* Color variants */
|
|
22
|
+
.btn-primary { background-color: var(--color-primary); color: var(--color-primary-content); }
|
|
23
|
+
.btn-secondary { background-color: var(--color-secondary); color: var(--color-secondary-content); }
|
|
24
|
+
.btn-accent { background-color: var(--color-accent); color: var(--color-accent-content); }
|
|
25
|
+
.btn-neutral { background-color: var(--color-neutral); color: var(--color-neutral-content); }
|
|
26
|
+
.btn-info { background-color: var(--color-info); color: var(--color-info-content); }
|
|
27
|
+
.btn-success { background-color: var(--color-success); color: var(--color-success-content); }
|
|
28
|
+
.btn-warning { background-color: var(--color-warning); color: var(--color-warning-content); }
|
|
29
|
+
.btn-error { background-color: var(--color-error); color: var(--color-error-content); }
|
|
30
|
+
.btn-ghost { background-color: transparent; border-color: transparent; color: var(--color-base-content); }
|
|
31
|
+
.btn-link { background-color: transparent; border-color: transparent; color: var(--color-primary); }
|
|
32
|
+
|
|
33
|
+
/* Sizes */
|
|
34
|
+
.btn-xs { height: var(--size-xs); min-height: var(--size-xs); padding-left: var(--padding-btn-xs); padding-right: var(--padding-btn-xs); font-size: var(--font-xs); }
|
|
35
|
+
.btn-sm { height: var(--size-sm); min-height: var(--size-sm); padding-left: var(--padding-btn-sm); padding-right: var(--padding-btn-sm); font-size: var(--font-sm); }
|
|
36
|
+
.btn-lg { height: var(--size-lg); min-height: var(--size-lg); padding-left: var(--padding-btn-lg); padding-right: var(--padding-btn-lg); font-size: var(--font-lg); }
|
|
37
|
+
.btn-xl { height: 80px; min-height: 80px; padding-left: 32px; padding-right: 32px; font-size: 20px; }
|
|
38
|
+
|
|
39
|
+
/* Outline modifier */
|
|
40
|
+
.btn-outline { background-color: transparent; border-width: var(--border-btn); border-color: var(--color-base-content); color: var(--color-base-content); }
|
|
41
|
+
.btn-outline.btn-primary { border-color: var(--color-primary); color: var(--color-primary); }
|
|
42
|
+
.btn-outline.btn-secondary { border-color: var(--color-secondary); color: var(--color-secondary); }
|
|
43
|
+
.btn-outline.btn-accent { border-color: var(--color-accent); color: var(--color-accent); }
|
|
44
|
+
.btn-outline.btn-neutral { border-color: var(--color-neutral); color: var(--color-neutral); }
|
|
45
|
+
.btn-outline.btn-info { border-color: var(--color-info); color: var(--color-info); }
|
|
46
|
+
.btn-outline.btn-success { border-color: var(--color-success); color: var(--color-success); }
|
|
47
|
+
.btn-outline.btn-warning { border-color: var(--color-warning); color: var(--color-warning); }
|
|
48
|
+
.btn-outline.btn-error { border-color: var(--color-error); color: var(--color-error); }
|
|
49
|
+
|
|
50
|
+
/* Soft modifier */
|
|
51
|
+
.btn-soft.btn-primary { background-color: var(--color-primary-content); color: var(--color-primary); }
|
|
52
|
+
.btn-soft.btn-secondary { background-color: var(--color-secondary-content); color: var(--color-secondary); }
|
|
53
|
+
.btn-soft.btn-accent { background-color: var(--color-accent-content); color: var(--color-accent); }
|
|
54
|
+
.btn-soft.btn-info { background-color: var(--color-info-content); color: var(--color-info); }
|
|
55
|
+
.btn-soft.btn-success { background-color: var(--color-success-content); color: var(--color-success); }
|
|
56
|
+
.btn-soft.btn-warning { background-color: var(--color-warning-content); color: var(--color-warning); }
|
|
57
|
+
.btn-soft.btn-error { background-color: var(--color-error-content); color: var(--color-error); }
|
|
58
|
+
|
|
59
|
+
/* Shape modifiers */
|
|
60
|
+
.btn-wide { width: 256px; }
|
|
61
|
+
.btn-block { width: 100%; }
|
|
62
|
+
.btn-circle { border-radius: 9999px; width: var(--size-md); padding-left: 0; padding-right: 0; }
|
|
63
|
+
.btn-square { width: var(--size-md); padding-left: 0; padding-right: 0; }
|
|
64
|
+
|
|
65
|
+
/* Circle/square size overrides */
|
|
66
|
+
.btn-circle.btn-xs { width: var(--size-xs); }
|
|
67
|
+
.btn-circle.btn-sm { width: var(--size-sm); }
|
|
68
|
+
.btn-circle.btn-lg { width: var(--size-lg); }
|
|
69
|
+
.btn-circle.btn-xl { width: 80px; }
|
|
70
|
+
.btn-square.btn-xs { width: var(--size-xs); }
|
|
71
|
+
.btn-square.btn-sm { width: var(--size-sm); }
|
|
72
|
+
.btn-square.btn-lg { width: var(--size-lg); }
|
|
73
|
+
.btn-square.btn-xl { width: 80px; }
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
/* States */
|
|
77
|
+
.btn-disabled { opacity: var(--disabled-opacity); }
|
|
78
|
+
.btn-active.btn-primary { background-color: var(--color-primary); color: var(--color-primary-content); }
|
|
79
|
+
.btn-active.btn-secondary { background-color: var(--color-secondary); color: var(--color-secondary-content); }
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/* Card — .card, .card-body, .card-title, .card-actions */
|
|
2
|
+
|
|
3
|
+
.card {
|
|
4
|
+
background-color: var(--color-base-200);
|
|
5
|
+
color: var(--color-base-content);
|
|
6
|
+
border-radius: var(--rounded-box);
|
|
7
|
+
overflow: hidden;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.card-bordered {
|
|
11
|
+
border-width: var(--border-card);
|
|
12
|
+
border-color: var(--color-base-300);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.card-compact .card-body {
|
|
16
|
+
padding: var(--padding-box-compact);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.card-body {
|
|
20
|
+
padding: var(--padding-box);
|
|
21
|
+
gap: var(--gap-box);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.card-title {
|
|
25
|
+
font-size: var(--font-lg);
|
|
26
|
+
font-weight: 600;
|
|
27
|
+
color: var(--color-base-content);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.card-actions {
|
|
31
|
+
flex-direction: row;
|
|
32
|
+
justify-content: flex-end;
|
|
33
|
+
gap: var(--gap-box);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/* Shadow utilities (Lynx may not support box-shadow, use border as fallback) */
|
|
37
|
+
.shadow-sm { border-width: var(--border-card); border-color: var(--color-base-300); }
|
|
38
|
+
.shadow-md { border-width: var(--border-card); border-color: var(--color-base-300); }
|
|
39
|
+
.shadow-lg { border-width: 2px; border-color: var(--color-base-300); }
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/* Checkbox — .checkbox + colors, sizes, states */
|
|
2
|
+
|
|
3
|
+
.checkbox {
|
|
4
|
+
width: var(--checkbox-md);
|
|
5
|
+
height: var(--checkbox-md);
|
|
6
|
+
border-radius: var(--rounded-selector);
|
|
7
|
+
border-width: 1px;
|
|
8
|
+
border-color: var(--color-base-300);
|
|
9
|
+
background-color: transparent;
|
|
10
|
+
justify-content: center;
|
|
11
|
+
align-items: center;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/* Size variants */
|
|
15
|
+
.checkbox-xs { width: var(--checkbox-xs); height: var(--checkbox-xs); }
|
|
16
|
+
.checkbox-sm { width: var(--checkbox-sm); height: var(--checkbox-sm); }
|
|
17
|
+
.checkbox-lg { width: var(--checkbox-lg); height: var(--checkbox-lg); }
|
|
18
|
+
|
|
19
|
+
/* Checked state */
|
|
20
|
+
.checkbox-checked { background-color: var(--color-primary); border-color: var(--color-primary); }
|
|
21
|
+
.checkbox-checked.checkbox-secondary { background-color: var(--color-secondary); border-color: var(--color-secondary); }
|
|
22
|
+
.checkbox-checked.checkbox-accent { background-color: var(--color-accent); border-color: var(--color-accent); }
|
|
23
|
+
.checkbox-checked.checkbox-info { background-color: var(--color-info); border-color: var(--color-info); }
|
|
24
|
+
.checkbox-checked.checkbox-success { background-color: var(--color-success); border-color: var(--color-success); }
|
|
25
|
+
.checkbox-checked.checkbox-warning { background-color: var(--color-warning); border-color: var(--color-warning); }
|
|
26
|
+
.checkbox-checked.checkbox-error { background-color: var(--color-error); border-color: var(--color-error); }
|
|
27
|
+
|
|
28
|
+
/* Color variants (unchecked border tint) */
|
|
29
|
+
.checkbox-primary { border-color: var(--color-primary); }
|
|
30
|
+
.checkbox-secondary { border-color: var(--color-secondary); }
|
|
31
|
+
.checkbox-accent { border-color: var(--color-accent); }
|
|
32
|
+
.checkbox-info { border-color: var(--color-info); }
|
|
33
|
+
.checkbox-success { border-color: var(--color-success); }
|
|
34
|
+
.checkbox-warning { border-color: var(--color-warning); }
|
|
35
|
+
.checkbox-error { border-color: var(--color-error); }
|
|
36
|
+
|
|
37
|
+
/* Disabled */
|
|
38
|
+
.checkbox-disabled { opacity: var(--disabled-opacity); }
|
|
39
|
+
|
|
40
|
+
/* Checkmark text styling */
|
|
41
|
+
.checkbox-mark {
|
|
42
|
+
font-weight: 700;
|
|
43
|
+
color: var(--color-base-100);
|
|
44
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/* Divider — horizontal and vertical */
|
|
2
|
+
|
|
3
|
+
.divider {
|
|
4
|
+
height: 1px;
|
|
5
|
+
align-self: stretch;
|
|
6
|
+
background-color: var(--color-base-300);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.divider-vertical {
|
|
10
|
+
width: 1px;
|
|
11
|
+
height: auto;
|
|
12
|
+
align-self: stretch;
|
|
13
|
+
background-color: var(--color-base-300);
|
|
14
|
+
}
|