@santi020k/lumen-astro 0.1.0 → 0.3.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 (127) hide show
  1. package/README.md +28 -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/CodeTabs.astro +92 -0
  31. package/components/Collapsible.astro +1 -1
  32. package/components/ColorPicker.astro +1 -1
  33. package/components/Combobox.astro +1 -1
  34. package/components/Command.astro +1 -1
  35. package/components/ContextMenu.astro +1 -1
  36. package/components/CoverImage.astro +1 -1
  37. package/components/DataTable.astro +1 -1
  38. package/components/DatePicker.astro +1 -1
  39. package/components/DateRangePicker.astro +1 -1
  40. package/components/Descriptions.astro +1 -1
  41. package/components/Dialog.astro +5 -1
  42. package/components/Direction.astro +1 -1
  43. package/components/Drawer.astro +1 -1
  44. package/components/DropdownMenu.astro +1 -1
  45. package/components/Empty.astro +1 -1
  46. package/components/Eyebrow.astro +1 -1
  47. package/components/Field.astro +1 -1
  48. package/components/FileUpload.astro +1 -1
  49. package/components/FloatingBadge.astro +1 -1
  50. package/components/FormattedDate.astro +1 -1
  51. package/components/GradientDivider.astro +1 -1
  52. package/components/HoverCard.astro +1 -1
  53. package/components/Icon.astro +5 -1
  54. package/components/Image.astro +1 -1
  55. package/components/Input.astro +1 -1
  56. package/components/InputGroup.astro +1 -1
  57. package/components/InputOTP.astro +1 -1
  58. package/components/Item.astro +1 -1
  59. package/components/Kbd.astro +1 -1
  60. package/components/Label.astro +1 -1
  61. package/components/LanguageToggle.astro +1 -1
  62. package/components/Link.astro +16 -2
  63. package/components/Marker.astro +1 -1
  64. package/components/Mentions.astro +1 -1
  65. package/components/Menubar.astro +1 -1
  66. package/components/Message.astro +1 -1
  67. package/components/MessageScroller.astro +1 -1
  68. package/components/NativeSelect.astro +1 -1
  69. package/components/NavigationMenu.astro +5 -1
  70. package/components/NumberField.astro +1 -1
  71. package/components/Pagination.astro +1 -1
  72. package/components/Particles.astro +1 -1
  73. package/components/PhoneInput.astro +1 -1
  74. package/components/Pill.astro +13 -8
  75. package/components/Popconfirm.astro +1 -1
  76. package/components/Popover.astro +1 -1
  77. package/components/Progress.astro +1 -1
  78. package/components/Prose.astro +1 -1
  79. package/components/QRCode.astro +1 -1
  80. package/components/RadioGroup.astro +1 -1
  81. package/components/Resizable.astro +1 -1
  82. package/components/RevealGroup.astro +1 -1
  83. package/components/RichTextEditor.astro +1 -1
  84. package/components/Schedule.astro +1 -1
  85. package/components/ScrollArea.astro +1 -1
  86. package/components/ScrollReveal.astro +1 -1
  87. package/components/SearchField.astro +1 -1
  88. package/components/Segmented.astro +1 -1
  89. package/components/Select.astro +1 -1
  90. package/components/Separator.astro +1 -1
  91. package/components/Sheet.astro +1 -1
  92. package/components/Sidebar.astro +5 -1
  93. package/components/Skeleton.astro +1 -1
  94. package/components/SkipLink.astro +1 -1
  95. package/components/Slider.astro +1 -1
  96. package/components/Sonner.astro +1 -1
  97. package/components/SpeedDial.astro +1 -1
  98. package/components/Spinner.astro +1 -1
  99. package/components/Stat.astro +1 -1
  100. package/components/Stepper.astro +1 -1
  101. package/components/Switch.astro +1 -1
  102. package/components/Table.astro +1 -1
  103. package/components/Tabs.astro +7 -1
  104. package/components/TagGroup.astro +1 -1
  105. package/components/Textarea.astro +1 -1
  106. package/components/ThemeBuilder.astro +1 -1
  107. package/components/ThemeToggle.astro +13 -1
  108. package/components/TimeField.astro +1 -1
  109. package/components/Toast.astro +1 -1
  110. package/components/Toggle.astro +12 -4
  111. package/components/ToggleGroup.astro +1 -1
  112. package/components/Toolbar.astro +1 -1
  113. package/components/Tooltip.astro +1 -1
  114. package/components/Tour.astro +1 -1
  115. package/components/Transfer.astro +1 -1
  116. package/components/Tree.astro +1 -1
  117. package/components/TreeGrid.astro +1 -1
  118. package/components/TreeSelect.astro +1 -1
  119. package/components/Typography.astro +1 -1
  120. package/components/VirtualList.astro +1 -1
  121. package/components/Watermark.astro +1 -1
  122. package/index.d.ts +1 -0
  123. package/index.ts +1 -0
  124. package/package.json +5 -4
  125. package/runtime/UIPrimitives.astro +255 -146
  126. package/runtime/controllers/motion.ts +145 -0
  127. package/styles/layers.css +1 -0
@@ -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
  }
@@ -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'>, 'size'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  size?: 'default' | 'lg' | 'sm'
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 } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends Omit<HTMLAttributes<'input'>, 'size'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  length?: number
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
  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<'kbd'> {
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<'label'> {
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<'button'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  }
10
10
 
@@ -4,23 +4,37 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
4
4
  import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'a'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
+ newTab?: boolean
10
+ variant?: 'default' | 'inherit'
9
11
  }
10
12
 
11
13
  const {
12
14
  class: classProp = '',
13
15
  className = '',
16
+ newTab = false,
17
+ rel,
18
+ target,
19
+ variant = 'default',
14
20
  ...rest
15
21
  } = Astro.props
16
22
 
17
23
  const { classList, passthrough } = resolveLumenAstroProps(rest, [
18
- 'ui-link'
24
+ 'ui-link',
25
+ variant === 'inherit' && 'ui-link--inherit'
19
26
  ], classProp, className)
27
+
28
+ const safeRel = newTab
29
+ ? [...new Set(`${rel ?? ''} noopener noreferrer`.trim().split(/\s+/))].join(' ')
30
+ : rel
20
31
  ---
21
32
 
22
33
  <a
23
34
  class:list={classList}
35
+ data-variant={variant}
36
+ rel={safeRel}
37
+ target={newTab ? '_blank' : target}
24
38
  {...passthrough}
25
39
  >
26
40
  <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<'span'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  variant?: 'default' | 'success' | 'warning' | 'danger'
10
10
  }
@@ -6,7 +6,7 @@ import type { HTMLAttributes } from 'astro/types'
6
6
  type MentionOption = string | { label: string; value: string }
7
7
 
8
8
  interface Props extends HTMLAttributes<'div'> {
9
- class?: string
9
+ class?: string | null
10
10
  className?: string
11
11
  name?: string
12
12
  options?: MentionOption[]
@@ -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<'nav'> {
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<'article'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  from?: 'user' | 'assistant'
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
  glass?: boolean | 'subtle' | 'strong'
10
10
  }
@@ -12,7 +12,7 @@ interface Option {
12
12
  type SelectOption = Option | string
13
13
 
14
14
  interface Props extends Omit<HTMLAttributes<'select'>, 'size'> {
15
- class?: string
15
+ class?: string | null
16
16
  className?: string
17
17
  size?: 'default' | 'lg' | 'sm'
18
18
  options?: SelectOption[]
@@ -4,9 +4,10 @@ import { resolveLumenAstroProps, resolveLumenGlass } 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
  glass?: boolean | 'subtle' | 'strong'
10
+ variant?: 'default' | 'unstyled'
10
11
  /**
11
12
  * @deprecated Use `glass` instead. `surface="glass"` maps to `glass={true}`.
12
13
  */
@@ -18,12 +19,14 @@ const {
18
19
  className = '',
19
20
  glass = false,
20
21
  surface = 'default',
22
+ variant = 'default',
21
23
  ...rest
22
24
  } = Astro.props
23
25
 
24
26
  const resolvedGlass = resolveLumenGlass(glass, surface)
25
27
  const { classList, passthrough } = resolveLumenAstroProps(rest, [
26
28
  'ui-navigation-menu',
29
+ variant === 'unstyled' && 'ui-navigation-menu--unstyled',
27
30
  resolvedGlass && 'ui-navigation-menu--glass',
28
31
  glass === 'subtle' && 'ui-glass-subtle',
29
32
  glass === 'strong' && 'ui-glass-strong'
@@ -33,6 +36,7 @@ const { classList, passthrough } = resolveLumenAstroProps(rest, [
33
36
  <nav
34
37
  data-surface={resolvedGlass ? 'glass' : 'default'}
35
38
  data-ui-navigation-menu
39
+ data-variant={variant}
36
40
  class:list={classList}
37
41
  {...passthrough}
38
42
  >
@@ -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<'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<'div'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  density?: 'low' | 'medium' | 'high'
10
10
  }
@@ -12,7 +12,7 @@ interface CountryOption {
12
12
  type Country = CountryOption | string
13
13
 
14
14
  interface Props extends Omit<HTMLAttributes<'div'>, 'size'> {
15
- class?: string
15
+ class?: string | null
16
16
  className?: string
17
17
  countries?: Country[]
18
18
  countryLabel?: string
@@ -4,15 +4,17 @@ 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
  count?: number | string
10
+ href?: string
10
11
  }
11
12
 
12
13
  const {
13
14
  class: classProp = '',
14
15
  className = '',
15
16
  count,
17
+ href,
16
18
  ...rest
17
19
  } = Astro.props
18
20
 
@@ -21,10 +23,13 @@ const { classList, passthrough } = resolveLumenAstroProps(rest, [
21
23
  ], classProp, className)
22
24
  ---
23
25
 
24
- <span
25
- class:list={classList}
26
- {...passthrough}
27
- >
28
- <slot />
29
- {count != null && <span class="ui-pill__count">{count}</span>}
30
- </span>
26
+ {href
27
+ ? <a class:list={classList} href={href} {...passthrough}>
28
+ <slot />
29
+ {count != null && <span class="ui-pill__count">{count}</span>}
30
+ </a>
31
+ : <span class:list={classList} {...passthrough}>
32
+ <slot />
33
+ {count != null && <span class="ui-pill__count">{count}</span>}
34
+ </span>
35
+ }
@@ -5,7 +5,7 @@ import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'div'> {
7
7
  cancelLabel?: string
8
- class?: string
8
+ class?: string | null
9
9
  className?: string
10
10
  confirmLabel?: string
11
11
  title?: string
@@ -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<'div'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  max?: number
10
10
  value?: 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<'div'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  }
10
10
 
@@ -5,7 +5,7 @@ import { renderSVG } from 'uqr'
5
5
  import type { HTMLAttributes } from 'astro/types'
6
6
 
7
7
  interface Props extends HTMLAttributes<'figure'> {
8
- class?: string
8
+ class?: string | null
9
9
  className?: string
10
10
  size?: number
11
11
  src?: 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<'fieldset'> {
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
  defaultSizes?: number[]
10
10
  direction?: 'horizontal' | 'vertical'
@@ -5,7 +5,7 @@ import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'div'> {
7
7
  animation?: 'fade' | 'slide-up' | 'scale'
8
- class?: string
8
+ class?: string | null
9
9
  className?: string
10
10
  delay?: number
11
11
  duration?: 'fast' | 'standard' | 'slow'
@@ -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<'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<'div'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  glass?: boolean | 'subtle' | 'strong'
10
10
  }
@@ -5,7 +5,7 @@ import type { HTMLAttributes } from 'astro/types'
5
5
 
6
6
  interface Props extends HTMLAttributes<'div'> {
7
7
  animation?: 'fade' | 'slide-up' | 'scale'
8
- class?: string
8
+ class?: string | null
9
9
  className?: string
10
10
  delay?: number
11
11
  duration?: 'fast' | 'standard' | 'slow'
@@ -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
 
@@ -6,7 +6,7 @@ import type { HTMLAttributes } from 'astro/types'
6
6
  type SegmentedOption = string | { disabled?: boolean; label: string; value: string }
7
7
 
8
8
  interface Props extends HTMLAttributes<'div'> {
9
- class?: string
9
+ class?: string | null
10
10
  className?: string
11
11
  defaultValue?: string
12
12
  name?: string
@@ -12,7 +12,7 @@ interface Option {
12
12
  type SelectOption = Option | string
13
13
 
14
14
  interface Props extends Omit<HTMLAttributes<'select'>, 'size'> {
15
- class?: string
15
+ class?: string | null
16
16
  className?: string
17
17
  glass?: boolean | 'subtle' | 'strong'
18
18
  options?: SelectOption[]
@@ -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<'hr'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  orientation?: 'horizontal' | 'vertical'
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,9 +4,10 @@ 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
+ variant?: 'default' | 'unstyled'
10
11
  /**
11
12
  * @deprecated Use `glass` instead. `surface="glass"` maps to `glass={true}`.
12
13
  */
@@ -18,12 +19,14 @@ const {
18
19
  className = '',
19
20
  glass = false,
20
21
  surface = 'default',
22
+ variant = 'default',
21
23
  ...rest
22
24
  } = Astro.props
23
25
 
24
26
  const resolvedGlass = resolveLumenGlass(glass, surface)
25
27
  const { classList, passthrough } = resolveLumenAstroProps(rest, [
26
28
  'ui-sidebar',
29
+ variant === 'unstyled' && 'ui-sidebar--unstyled',
27
30
  resolvedGlass && 'ui-sidebar--glass',
28
31
  glass === 'subtle' && 'ui-glass-subtle',
29
32
  glass === 'strong' && 'ui-glass-strong'
@@ -32,6 +35,7 @@ const { classList, passthrough } = resolveLumenAstroProps(rest, [
32
35
 
33
36
  <aside
34
37
  data-surface={resolvedGlass ? 'glass' : 'default'}
38
+ data-variant={variant}
35
39
  class:list={classList}
36
40
  {...passthrough}
37
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 HTMLAttributes<'div'> {
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<'a'> {
7
- class?: string
7
+ class?: string | null
8
8
  className?: string
9
9
  }
10
10