@santi020k/lumen-astro 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/README.md +5 -0
  2. package/components/Accordion.astro +8 -2
  3. package/components/Affix.astro +1 -1
  4. package/components/Agenda.astro +1 -1
  5. package/components/Alert.astro +1 -1
  6. package/components/AlertDialog.astro +1 -1
  7. package/components/Anchor.astro +1 -1
  8. package/components/AnimatedLogo.astro +1 -1
  9. package/components/AnimatedNumber.astro +1 -1
  10. package/components/AnimatedPortrait.astro +1 -1
  11. package/components/AspectRatio.astro +1 -1
  12. package/components/Attachment.astro +1 -1
  13. package/components/Autocomplete.astro +1 -1
  14. package/components/Avatar.astro +1 -1
  15. package/components/BackToTop.astro +1 -1
  16. package/components/Badge.astro +1 -1
  17. package/components/Breadcrumb.astro +1 -1
  18. package/components/Bubble.astro +1 -1
  19. package/components/Button.astro +1 -1
  20. package/components/ButtonGroup.astro +1 -1
  21. package/components/ButtonLink.astro +5 -4
  22. package/components/Calendar.astro +1 -1
  23. package/components/Callout.astro +1 -1
  24. package/components/Card.astro +3 -2
  25. package/components/Carousel.astro +1 -1
  26. package/components/Cascader.astro +1 -1
  27. package/components/Chart.astro +1 -1
  28. package/components/Checkbox.astro +1 -1
  29. package/components/Code.astro +5 -2
  30. package/components/Collapsible.astro +1 -1
  31. package/components/ColorPicker.astro +1 -1
  32. package/components/Combobox.astro +1 -1
  33. package/components/Command.astro +1 -1
  34. package/components/ContextMenu.astro +1 -1
  35. package/components/CoverImage.astro +1 -1
  36. package/components/DataTable.astro +1 -1
  37. package/components/DatePicker.astro +1 -1
  38. package/components/DateRangePicker.astro +1 -1
  39. package/components/Descriptions.astro +1 -1
  40. package/components/Dialog.astro +1 -1
  41. package/components/Direction.astro +1 -1
  42. package/components/Drawer.astro +1 -1
  43. package/components/DropdownMenu.astro +1 -1
  44. package/components/Empty.astro +1 -1
  45. package/components/Eyebrow.astro +1 -1
  46. package/components/Field.astro +1 -1
  47. package/components/FileUpload.astro +1 -1
  48. package/components/FloatingBadge.astro +1 -1
  49. package/components/FormattedDate.astro +1 -1
  50. package/components/GradientDivider.astro +1 -1
  51. package/components/HoverCard.astro +1 -1
  52. package/components/Icon.astro +5 -1
  53. package/components/Image.astro +1 -1
  54. package/components/Input.astro +1 -1
  55. package/components/InputGroup.astro +1 -1
  56. package/components/InputOTP.astro +1 -1
  57. package/components/Item.astro +1 -1
  58. package/components/Kbd.astro +1 -1
  59. package/components/Label.astro +1 -1
  60. package/components/LanguageToggle.astro +1 -1
  61. package/components/Link.astro +16 -2
  62. package/components/Marker.astro +1 -1
  63. package/components/Mentions.astro +1 -1
  64. package/components/Menubar.astro +1 -1
  65. package/components/Message.astro +1 -1
  66. package/components/MessageScroller.astro +1 -1
  67. package/components/NativeSelect.astro +1 -1
  68. package/components/NavigationMenu.astro +5 -1
  69. package/components/NumberField.astro +1 -1
  70. package/components/Pagination.astro +1 -1
  71. package/components/Particles.astro +1 -1
  72. package/components/PhoneInput.astro +1 -1
  73. package/components/Pill.astro +13 -8
  74. package/components/Popconfirm.astro +1 -1
  75. package/components/Popover.astro +1 -1
  76. package/components/Progress.astro +1 -1
  77. package/components/Prose.astro +1 -1
  78. package/components/QRCode.astro +1 -1
  79. package/components/RadioGroup.astro +1 -1
  80. package/components/Resizable.astro +1 -1
  81. package/components/RevealGroup.astro +1 -1
  82. package/components/RichTextEditor.astro +1 -1
  83. package/components/Schedule.astro +1 -1
  84. package/components/ScrollArea.astro +1 -1
  85. package/components/ScrollReveal.astro +1 -1
  86. package/components/SearchField.astro +1 -1
  87. package/components/Segmented.astro +1 -1
  88. package/components/Select.astro +1 -1
  89. package/components/Separator.astro +1 -1
  90. package/components/Sheet.astro +1 -1
  91. package/components/Sidebar.astro +5 -1
  92. package/components/Skeleton.astro +1 -1
  93. package/components/SkipLink.astro +1 -1
  94. package/components/Slider.astro +1 -1
  95. package/components/Sonner.astro +1 -1
  96. package/components/SpeedDial.astro +1 -1
  97. package/components/Spinner.astro +1 -1
  98. package/components/Stat.astro +1 -1
  99. package/components/Stepper.astro +1 -1
  100. package/components/Switch.astro +1 -1
  101. package/components/Table.astro +1 -1
  102. package/components/Tabs.astro +7 -1
  103. package/components/TagGroup.astro +1 -1
  104. package/components/Textarea.astro +1 -1
  105. package/components/ThemeBuilder.astro +1 -1
  106. package/components/ThemeToggle.astro +13 -1
  107. package/components/TimeField.astro +1 -1
  108. package/components/Toast.astro +1 -1
  109. package/components/Toggle.astro +12 -4
  110. package/components/ToggleGroup.astro +1 -1
  111. package/components/Toolbar.astro +1 -1
  112. package/components/Tooltip.astro +1 -1
  113. package/components/Tour.astro +1 -1
  114. package/components/Transfer.astro +1 -1
  115. package/components/Tree.astro +1 -1
  116. package/components/TreeGrid.astro +1 -1
  117. package/components/TreeSelect.astro +1 -1
  118. package/components/Typography.astro +1 -1
  119. package/components/VirtualList.astro +1 -1
  120. package/components/Watermark.astro +1 -1
  121. package/package.json +5 -4
  122. package/runtime/UIPrimitives.astro +255 -146
  123. package/runtime/controllers/motion.ts +145 -0
  124. package/styles/layers.css +1 -0
package/README.md CHANGED
@@ -21,6 +21,7 @@ enhances all matching Lumen markup on the page.
21
21
  With Tailwind, keep the Lumen import in the same shared CSS entry:
22
22
 
23
23
  ```css
24
+ @import "@santi020k/lumen-astro/layers.css";
24
25
  @import "tailwindcss";
25
26
  @import "@santi020k/lumen-astro/styles.css";
26
27
  ```
@@ -60,6 +61,10 @@ import { Button, Icon } from '@santi020k/lumen-astro'
60
61
  <Icon name="search" label="Search" />
61
62
  ```
62
63
 
64
+ Lucide intentionally excludes brand marks. For GitHub and other project-specific icons, put the
65
+ SVG in the default slot instead of passing an unsupported `name`; Astro warns about unknown named
66
+ icons during development.
67
+
63
68
  ## Optimized images
64
69
 
65
70
  Lumen's Astro `Image` delegates to `astro:assets`, so imported image metadata, responsive layouts,
@@ -3,24 +3,30 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
3
3
 
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
+ type AccordionVariant = 'default' | 'flush'
7
+
6
8
  interface Props extends HTMLAttributes<'div'> {
7
- class?: string
9
+ class?: string | null
8
10
  className?: string
11
+ variant?: AccordionVariant
9
12
  }
10
13
 
11
14
  const {
12
15
  class: classProp = '',
13
16
  className = '',
17
+ variant = 'default',
14
18
  ...rest
15
19
  } = Astro.props
16
20
 
17
21
  const { classList, passthrough } = resolveLumenAstroProps(rest, [
18
- 'ui-accordion'
22
+ 'ui-accordion',
23
+ variant === 'flush' && 'ui-accordion--flush'
19
24
  ], classProp, className)
20
25
  ---
21
26
 
22
27
  <div
23
28
  class:list={classList}
29
+ data-variant={variant}
24
30
  {...passthrough}
25
31
  >
26
32
  <slot />
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'div'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  offset?: number
10
10
  offsetBottom?: number
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'section'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  glass?: boolean | 'subtle' | 'strong'
10
10
  }
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'aside'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  glass?: boolean | 'subtle' | 'strong'
10
10
  variant?: 'default' | 'destructive' | 'success' | 'warning'
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps, resolveLumenGlass } from '@santi020k/lumen-core
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'dialog'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  glass?: boolean | 'subtle' | 'strong'
10
10
  /**
@@ -6,7 +6,7 @@ import type { HTMLAttributes } from 'astro/types'
6
6
  type AnchorLink = { href: string; label: string }
7
7
 
8
8
  export interface Props extends HTMLAttributes<'nav'> {
9
- class?: string
9
+ class?: string | null
10
10
  className?: string
11
11
  items?: AnchorLink[]
12
12
  }
@@ -4,7 +4,7 @@ import type { HTMLAttributes } from 'astro/types'
4
4
 
5
5
  interface Props extends HTMLAttributes<'span'> {
6
6
  animation?: 'reveal' | 'sequence'
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  }
10
10
 
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends Omit<HTMLAttributes<'span'>, 'prefix'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  decimals?: number
10
10
  duration?: 'fast' | 'standard' | 'slow'
@@ -17,7 +17,7 @@ interface Props extends HTMLAttributes<'div'> {
17
17
  text: string
18
18
  }
19
19
  }
20
- class?: string
20
+ class?: string | null
21
21
  className?: string
22
22
  showFloatingBadges?: boolean
23
23
  sizes?: string
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'div'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  ratio?: number | string
10
10
  }
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'article'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  glass?: boolean | 'subtle' | 'strong'
10
10
  href?: string
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'input'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  list: string
10
10
  }
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'span'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  alt?: string
10
10
  fallback?: string
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'button'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  }
10
10
 
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'span'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  variant?: 'default' | 'secondary' | 'outline' | 'destructive' | 'success' | 'warning'
10
10
  }
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'nav'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  }
10
10
 
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'article'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  from?: 'user' | 'assistant'
10
10
  glass?: boolean | 'subtle' | 'strong'
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'button'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  loading?: boolean
10
10
  size?: 'default' | 'sm' | 'lg' | 'icon'
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'div'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  }
10
10
 
@@ -6,13 +6,13 @@ import type { HTMLAttributes } from 'astro/types'
6
6
 
7
7
  interface Props extends HTMLAttributes<'a'> {
8
8
  ariaLabel?: string
9
- class?: string
9
+ class?: string | null
10
10
  className?: string
11
11
  href: string
12
12
  newTab?: boolean
13
13
  shape?: 'default' | 'icon'
14
14
  showArrow?: boolean
15
- variant?: 'ghost' | 'inline' | 'primary' | 'secondary'
15
+ variant?: 'ghost' | 'inline' | 'primary' | 'secondary' | 'unstyled'
16
16
  }
17
17
 
18
18
  const {
@@ -29,12 +29,13 @@ const {
29
29
 
30
30
  const { classList, passthrough } = resolveLumenAstroProps(rest, [
31
31
  'ui-button-link',
32
- 'group inline-flex cursor-pointer items-center justify-center gap-2 text-sm font-semibold tracking-[0.01em]',
33
- variant !== 'inline' && 'min-h-11 rounded-full border',
32
+ variant !== 'unstyled' && 'group inline-flex cursor-pointer items-center justify-center gap-2 text-sm font-semibold tracking-[0.01em]',
33
+ variant !== 'inline' && variant !== 'unstyled' && 'min-h-11 rounded-full border',
34
34
  variant === 'primary' && 'ui-button ui-button--primary',
35
35
  variant === 'secondary' && 'ui-button ui-button--secondary',
36
36
  variant === 'ghost' && 'ui-button ui-button--ghost',
37
37
  variant === 'inline' && 'ui-button ui-button--inline',
38
+ variant === 'unstyled' && 'ui-button-link--unstyled',
38
39
  shape === 'icon' && variant !== 'inline' && 'ui-button-link--icon'
39
40
  ], classProp, className)
40
41
  ---
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends Omit<HTMLAttributes<'div'>, 'value'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  disabled?: boolean
10
10
  glass?: boolean | 'subtle' | 'strong'
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'aside'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  }
10
10
 
@@ -5,10 +5,10 @@ import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'div'> {
7
7
  as?: 'article' | 'div' | 'section'
8
- class?: string
8
+ class?: string | null
9
9
  className?: string
10
10
  glass?: boolean | 'subtle' | 'strong'
11
- variant?: 'default' | 'glass' | 'interactive' | 'muted'
11
+ variant?: 'default' | 'glass' | 'interactive' | 'muted' | 'unstyled'
12
12
  }
13
13
 
14
14
  const {
@@ -23,6 +23,7 @@ const {
23
23
  const isGlass = glass || variant === 'glass'
24
24
  const { classList, passthrough } = resolveLumenAstroProps(rest, [
25
25
  'ui-card',
26
+ variant === 'unstyled' && 'ui-card--unstyled',
26
27
  variant === 'muted' && 'ui-card--muted',
27
28
  variant === 'interactive' && 'ui-card--interactive',
28
29
  isGlass && 'ui-card--glass',
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'section'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  glass?: boolean | 'subtle' | 'strong'
10
10
  }
@@ -10,7 +10,7 @@ interface CascaderOption {
10
10
  }
11
11
 
12
12
  export interface Props extends HTMLAttributes<'div'> {
13
- class?: string
13
+ class?: string | null
14
14
  className?: string
15
15
  name?: string
16
16
  options?: CascaderOption[]
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'figure'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  glass?: boolean | 'subtle' | 'strong'
10
10
  }
@@ -6,7 +6,7 @@ import type { HTMLAttributes } from 'astro/types'
6
6
  type HTMLInputAttributes = HTMLAttributes<'input'>
7
7
 
8
8
  interface Props extends Omit<HTMLInputAttributes, 'type'> {
9
- class?: string
9
+ class?: string | null
10
10
  className?: string
11
11
  }
12
12
 
@@ -7,7 +7,7 @@ type CodeTheme = 'auto' | 'lumen' | 'santi020k'
7
7
  type CodeVariant = 'block' | 'inline'
8
8
 
9
9
  interface Props extends HTMLAttributes<'code'> {
10
- class?: string
10
+ class?: string | null
11
11
  className?: string
12
12
  code?: string
13
13
  copy?: boolean
@@ -16,6 +16,7 @@ interface Props extends HTMLAttributes<'code'> {
16
16
  language?: string
17
17
  theme?: CodeTheme
18
18
  variant?: CodeVariant
19
+ wrap?: boolean
19
20
  }
20
21
 
21
22
  const {
@@ -28,12 +29,14 @@ const {
28
29
  language,
29
30
  theme = 'auto',
30
31
  variant = 'inline',
32
+ wrap = false,
31
33
  ...rest
32
34
  } = Astro.props
33
35
 
34
36
  const { classList: blockClassList, passthrough } = resolveLumenAstroProps(rest, [
35
37
  'ui-code',
36
- 'ui-code--block'
38
+ 'ui-code--block',
39
+ wrap && 'ui-code--wrap'
37
40
  ], classProp, className)
38
41
  const { classList: inlineClassList } = resolveLumenAstroProps(rest, [
39
42
  'ui-code',
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'details'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  }
10
10
 
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'input'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  }
10
10
 
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'input'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  label?: string
10
10
  list: string
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'div'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  glass?: boolean | 'subtle' | 'strong'
10
10
  }
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps, resolveLumenGlass } from '@santi020k/lumen-core
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'menu'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  glass?: boolean | 'subtle' | 'strong'
10
10
  /**
@@ -8,7 +8,7 @@ import type { HTMLAttributes } from 'astro/types'
8
8
  interface Props extends HTMLAttributes<'div'> {
9
9
  alt: string
10
10
  ariaHidden?: boolean
11
- class?: string
11
+ class?: string | null
12
12
  className?: string
13
13
  featured?: boolean
14
14
  featuredMinHeightClass?: string
@@ -30,7 +30,7 @@ type DataTableRow = Record<string, DataTableCell> & {
30
30
  }
31
31
 
32
32
  interface Props extends HTMLAttributes<'div'> {
33
- class?: string
33
+ class?: string | null
34
34
  className?: string
35
35
  columns?: DataTableColumn[]
36
36
  glass?: boolean | 'subtle' | 'strong'
@@ -5,7 +5,7 @@ import Calendar from './Calendar.astro'
5
5
  import type { HTMLAttributes } from 'astro/types'
6
6
 
7
7
  interface Props extends HTMLAttributes<'input'> {
8
- class?: string
8
+ class?: string | null
9
9
  className?: string
10
10
  glass?: boolean | 'subtle' | 'strong'
11
11
  placeholder?: string
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'div'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  }
10
10
 
@@ -6,7 +6,7 @@ import type { HTMLAttributes } from 'astro/types'
6
6
  type DescriptionItem = { label: string; value: string }
7
7
 
8
8
  interface Props extends HTMLAttributes<'dl'> {
9
- class?: string
9
+ class?: string | null
10
10
  className?: string
11
11
  columns?: number
12
12
  items?: DescriptionItem[]
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps, resolveLumenGlass } from '@santi020k/lumen-core
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'dialog'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  glass?: boolean | 'subtle' | 'strong'
10
10
  /**
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'div'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  dir?: 'ltr' | 'rtl' | 'auto'
10
10
  }
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps, resolveLumenGlass } from '@santi020k/lumen-core
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'dialog'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  glass?: boolean | 'subtle' | 'strong'
10
10
  /**
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps, resolveLumenGlass } from '@santi020k/lumen-core
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'div'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  glass?: boolean | 'subtle' | 'strong'
10
10
  /**
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'section'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  glass?: boolean | 'subtle' | 'strong'
10
10
  }
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'p'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  }
10
10
 
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'div'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  controlId?: string
10
10
  describedBy?: string
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends Omit<HTMLAttributes<'input'>, 'type' | 'size'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  label?: string
10
10
  hint?: string
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'span'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  }
10
10
 
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'time'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  }
10
10
 
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'div'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  }
10
10
 
@@ -4,7 +4,7 @@ import { resolveLumenAstroProps, resolveLumenGlass } from '@santi020k/lumen-core
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'aside'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  glass?: boolean | 'subtle' | 'strong'
10
10
  /**
@@ -10,7 +10,7 @@ import type { HTMLAttributes } from 'astro/types'
10
10
  type IconSize = 'default' | 'lg' | 'sm' | 'xl'
11
11
 
12
12
  interface Props extends HTMLAttributes<'span'> {
13
- class?: string
13
+ class?: string | null
14
14
  className?: string
15
15
  decorative?: boolean
16
16
  label?: string
@@ -31,6 +31,10 @@ const {
31
31
  const isDecorative = decorative ?? !label
32
32
  const iconSvg = name ? renderLumenIconSvg(name) : ''
33
33
 
34
+ if (name && !iconSvg && import.meta.env.DEV) {
35
+ console.warn(`[Lumen Icon] Unknown Lucide icon "${name}". Use the default slot for brand or project-specific SVGs.`)
36
+ }
37
+
34
38
  const { classList, passthrough } = resolveLumenAstroProps(rest, [
35
39
  'ui-icon',
36
40
  size === 'sm' && 'ui-icon--sm',
@@ -7,7 +7,7 @@ import {
7
7
  } from 'astro:assets'
8
8
 
9
9
  type Props = (LocalImageProps | RemoteImageProps) & {
10
- class?: string
10
+ class?: string | null
11
11
  className?: string
12
12
  invertOnDark?: boolean
13
13
  }