@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.
Files changed (61) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +47 -0
  3. package/dist/buttons/Button.d.ts +7 -0
  4. package/dist/data/Avatar.d.ts +4 -0
  5. package/dist/feedback/Alert.d.ts +6 -0
  6. package/dist/feedback/Badge.d.ts +7 -0
  7. package/dist/feedback/Loading.d.ts +6 -0
  8. package/dist/feedback/Modal.d.ts +48 -0
  9. package/dist/feedback/Progress.d.ts +4 -0
  10. package/dist/feedback/Skeleton.d.ts +3 -0
  11. package/dist/feedback/Steps.d.ts +37 -0
  12. package/dist/forms/Checkbox.d.ts +5 -0
  13. package/dist/forms/FormField.d.ts +5 -0
  14. package/dist/forms/Input.d.ts +6 -0
  15. package/dist/forms/Radio.d.ts +48 -0
  16. package/dist/forms/Select.d.ts +10 -0
  17. package/dist/forms/Textarea.d.ts +6 -0
  18. package/dist/forms/Toggle.d.ts +5 -0
  19. package/dist/index.d.ts +52 -0
  20. package/dist/index.js +552 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/layout/Card.d.ts +51 -0
  23. package/dist/layout/Center.d.ts +5 -0
  24. package/dist/layout/Col.d.ts +6 -0
  25. package/dist/layout/Divider.d.ts +3 -0
  26. package/dist/layout/Row.d.ts +6 -0
  27. package/dist/layout/ScrollView.d.ts +5 -0
  28. package/dist/layout/Spacer.d.ts +3 -0
  29. package/dist/navigation/Tabs.d.ts +39 -0
  30. package/dist/preset/index.d.ts +2 -0
  31. package/dist/preset/index.js +26 -0
  32. package/dist/preset/index.js.map +1 -0
  33. package/dist/shared/styles.d.ts +19 -0
  34. package/dist/styles/base.css +6 -0
  35. package/dist/styles/components/alert.css +17 -0
  36. package/dist/styles/components/avatar.css +16 -0
  37. package/dist/styles/components/badge.css +44 -0
  38. package/dist/styles/components/button.css +79 -0
  39. package/dist/styles/components/card.css +39 -0
  40. package/dist/styles/components/checkbox.css +44 -0
  41. package/dist/styles/components/divider.css +14 -0
  42. package/dist/styles/components/form-field.css +25 -0
  43. package/dist/styles/components/input.css +31 -0
  44. package/dist/styles/components/loading.css +33 -0
  45. package/dist/styles/components/modal.css +41 -0
  46. package/dist/styles/components/progress.css +24 -0
  47. package/dist/styles/components/radio.css +50 -0
  48. package/dist/styles/components/select.css +56 -0
  49. package/dist/styles/components/skeleton.css +6 -0
  50. package/dist/styles/components/steps.css +40 -0
  51. package/dist/styles/components/tabs.css +23 -0
  52. package/dist/styles/components/textarea.css +31 -0
  53. package/dist/styles/components/toggle.css +46 -0
  54. package/dist/styles/components/typography.css +32 -0
  55. package/dist/styles/index.css +31 -0
  56. package/dist/styles/themes/dark.css +95 -0
  57. package/dist/styles/themes/light.css +95 -0
  58. package/dist/styles/themes/shapes.css +20 -0
  59. package/dist/typography/Heading.d.ts +6 -0
  60. package/dist/typography/Text.d.ts +8 -0
  61. 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,3 @@
1
+ import { type Define } from '@sigx/lynx';
2
+ export type SpacerProps = Define.Prop<'size', number, false> & Define.Prop<'class', string, false>;
3
+ export declare const Spacer: import("@sigx/runtime-core").ComponentFactory<SpacerProps, void, {}>;
@@ -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,2 @@
1
+ import type { Config } from 'tailwindcss';
2
+ export declare const DaisyLynxPreset: Partial<Config>;
@@ -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,6 @@
1
+ /* Lynx element reset */
2
+
3
+ page, view, text, scroll-view, image, input, textarea, list, list-item {
4
+ border-color: transparent;
5
+ border-width: 0;
6
+ }
@@ -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
+ }