@santi020k/lumen-astro 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -51,6 +51,15 @@ import { Button, Card, Input } from '@santi020k/lumen-astro'
51
51
  </Card>
52
52
  ```
53
53
 
54
+ `Input` and `NativeSelect` preserve the native numeric `size` attribute. Use `visualSize="sm"` or
55
+ `visualSize="lg"` for presentation. The pre-1.0 `size="sm|lg"` visual alias remains available for
56
+ incremental migrations, but new code should keep native behavior and visual styling separate.
57
+
58
+ ```astro
59
+ <Input size={32} visualSize="sm" />
60
+ <NativeSelect size={8} visualSize="lg" />
61
+ ```
62
+
54
63
  ## Forms and Astro Actions
55
64
 
56
65
  `Form` renders a semantic form and preserves native `method`, `action`, `enctype`, autocomplete,
@@ -6,20 +6,33 @@ import { resolveLumenAstroProps } from '@santi020k/lumen-core'
6
6
  interface Props extends Omit<HTMLAttributes<'input'>, 'size'> {
7
7
  class?: string | null
8
8
  className?: string
9
- size?: 'default' | 'lg' | 'sm'
9
+ size?: HTMLAttributes<'input'>['size']
10
+ visualSize?: 'default' | 'lg' | 'sm'
10
11
  }
11
12
 
12
- const { class: classProp = '', className = '', size = 'default', type = 'text', ...rest } = Astro.props
13
+ const {
14
+ class: classProp = '',
15
+ className = '',
16
+ size,
17
+ type = 'text',
18
+ visualSize,
19
+ ...rest
20
+ } = Astro.props
21
+
22
+ const legacyVisualSize = size === 'default' || size === 'lg' || size === 'sm' ? size : undefined
23
+ const resolvedVisualSize = visualSize ?? legacyVisualSize ?? 'default'
24
+ const nativeSize = legacyVisualSize ? undefined : size
13
25
 
14
26
  const { classList, passthrough } = resolveLumenAstroProps(rest, [
15
27
  'ui-input',
16
- size === 'sm' && 'ui-input--sm',
17
- size === 'lg' && 'ui-input--lg'
28
+ resolvedVisualSize === 'sm' && 'ui-input--sm',
29
+ resolvedVisualSize === 'lg' && 'ui-input--lg'
18
30
  ], classProp, className)
19
31
  ---
20
32
 
21
33
  <input
22
34
  class:list={classList}
35
+ size={nativeSize}
23
36
  type={type}
24
37
  {...passthrough}
25
38
  />
@@ -14,20 +14,33 @@ type SelectOption = Option | string
14
14
  interface Props extends Omit<HTMLAttributes<'select'>, 'size'> {
15
15
  class?: string | null
16
16
  className?: string
17
- size?: 'default' | 'lg' | 'sm'
17
+ size?: HTMLAttributes<'select'>['size']
18
18
  options?: SelectOption[]
19
19
  placeholder?: string
20
+ visualSize?: 'default' | 'lg' | 'sm'
20
21
  }
21
22
 
22
- const { class: classProp = '', className = '', options = [], placeholder, size = 'default', ...rest } = Astro.props
23
+ const {
24
+ class: classProp = '',
25
+ className = '',
26
+ options = [],
27
+ placeholder,
28
+ size,
29
+ visualSize,
30
+ ...rest
31
+ } = Astro.props
32
+
23
33
  const hasValue = Object.hasOwn(rest, 'value')
24
34
  const normalizedOptions = options.map(option => typeof option === 'string' ? { label: option, value: option } : option)
35
+ const legacyVisualSize = size === 'default' || size === 'lg' || size === 'sm' ? size : undefined
36
+ const resolvedVisualSize = visualSize ?? legacyVisualSize ?? 'default'
37
+ const nativeSize = legacyVisualSize ? undefined : size
25
38
 
26
- const { classList, passthrough } = resolveLumenAstroProps(rest, ['ui-select', size === 'sm' && 'ui-select--sm', size === 'lg' && 'ui-select--lg'
39
+ const { classList, passthrough } = resolveLumenAstroProps(rest, ['ui-select', resolvedVisualSize === 'sm' && 'ui-select--sm', resolvedVisualSize === 'lg' && 'ui-select--lg'
27
40
  ], classProp, className)
28
41
  ---
29
42
 
30
- <select class:list={classList} {...passthrough}>
43
+ <select class:list={classList} size={nativeSize} {...passthrough}>
31
44
  {placeholder && <option disabled selected={!hasValue} value="">{placeholder}</option>}
32
45
  <slot />
33
46
  {normalizedOptions.map(option => (
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@santi020k/lumen-astro",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -37,12 +37,12 @@
37
37
  ],
38
38
  "dependencies": {
39
39
  "uqr": "^0.1.3",
40
- "@santi020k/lumen": "^1.0.0",
41
- "@santi020k/lumen-core": "^1.0.0"
40
+ "@santi020k/lumen": "^1.1.0",
41
+ "@santi020k/lumen-core": "^1.1.0"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@astrojs/ts-plugin": "^1.10.10",
45
- "astro": "^7.1.3",
45
+ "astro": "^7.2.0",
46
46
  "typescript": "^6.0.3",
47
47
  "vitest": "^4.1.10"
48
48
  },