opui-css 5.1.2 → 5.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.
- package/CHANGELOG.md +8 -0
- package/README.md +4 -5
- package/components/AGENTS.md +12 -13
- package/components/Accordion/Accordion.astro +5 -9
- package/components/Accordion/types.astro.ts +4 -0
- package/components/Accordion/types.d.vue.ts +15 -0
- package/components/Accordion/types.solid.ts +6 -0
- package/components/Accordion/types.svelte.ts +7 -0
- package/components/Accordion/types.ts +10 -0
- package/components/Anchor/Anchor.astro +1 -7
- package/components/Anchor/types.astro.ts +4 -0
- package/components/Anchor/types.d.vue.ts +10 -0
- package/components/Anchor/types.solid.ts +6 -0
- package/components/Anchor/types.svelte.ts +7 -0
- package/components/Anchor/types.ts +9 -0
- package/components/Avatar/Avatar.astro +4 -13
- package/components/Avatar/types.astro.ts +10 -0
- package/components/Avatar/types.d.vue.ts +11 -0
- package/components/Avatar/types.solid.ts +11 -0
- package/components/Avatar/types.svelte.ts +12 -0
- package/components/Avatar/types.ts +29 -0
- package/components/Badge/Badge.astro +3 -11
- package/components/Badge/types.astro.ts +4 -0
- package/components/Badge/types.d.vue.ts +10 -0
- package/components/Badge/types.solid.ts +4 -0
- package/components/Badge/types.svelte.ts +4 -0
- package/components/Badge/types.ts +8 -0
- package/components/Button/Button.astro +18 -27
- package/components/Button/types.astro.ts +6 -0
- package/components/Button/types.d.vue.ts +10 -0
- package/components/Button/types.solid.ts +8 -0
- package/components/Button/types.svelte.ts +6 -0
- package/components/Button/types.ts +19 -0
- package/components/ButtonGroup/ButtonGroup.astro +1 -8
- package/components/ButtonGroup/types.astro.ts +4 -0
- package/components/ButtonGroup/types.d.vue.ts +10 -0
- package/components/ButtonGroup/types.solid.ts +4 -0
- package/components/ButtonGroup/types.svelte.ts +4 -0
- package/components/ButtonGroup/types.ts +7 -0
- package/components/Callout/Callout.astro +10 -9
- package/components/Callout/types.astro.ts +4 -0
- package/components/Callout/types.d.vue.ts +10 -0
- package/components/Callout/types.solid.ts +6 -0
- package/components/Callout/types.svelte.ts +7 -0
- package/components/Callout/types.ts +10 -0
- package/components/Card/Card.astro +1 -5
- package/components/Card/types.astro.ts +4 -0
- package/components/Card/types.d.vue.ts +10 -0
- package/components/Card/types.solid.ts +6 -0
- package/components/Card/types.svelte.ts +7 -0
- package/components/Card/types.ts +10 -0
- package/components/Checkbox/Checkbox.astro +6 -36
- package/components/Checkbox/CheckboxInput.astro +2 -18
- package/components/Checkbox/types.astro.ts +8 -0
- package/components/Checkbox/types.d.vue.ts +11 -0
- package/components/Checkbox/types.solid.ts +9 -0
- package/components/Checkbox/types.svelte.ts +12 -0
- package/components/Checkbox/types.ts +17 -0
- package/components/Chip/Chip.astro +6 -12
- package/components/Chip/types.astro.ts +9 -0
- package/components/Chip/types.d.vue.ts +10 -0
- package/components/Chip/types.solid.ts +10 -0
- package/components/Chip/types.svelte.ts +14 -0
- package/components/Chip/types.ts +13 -0
- package/components/ClassicSelect/ClassicSelect.astro +5 -28
- package/components/ClassicSelect/types.astro.ts +8 -0
- package/components/ClassicSelect/types.d.vue.ts +10 -0
- package/components/ClassicSelect/types.solid.ts +5 -0
- package/components/ClassicSelect/types.svelte.ts +5 -0
- package/components/ClassicSelect/types.ts +19 -0
- package/components/DescriptionList/Description.astro +1 -4
- package/components/DescriptionList/DescriptionList.astro +1 -5
- package/components/DescriptionList/Item.astro +1 -4
- package/components/DescriptionList/Term.astro +1 -4
- package/components/DescriptionList/types.astro.ts +10 -0
- package/components/DescriptionList/types.d.vue.ts +10 -0
- package/components/DescriptionList/types.solid.ts +4 -0
- package/components/DescriptionList/types.svelte.ts +4 -0
- package/components/DescriptionList/types.ts +3 -0
- package/components/Dialog/Dialog.astro +1 -6
- package/components/Dialog/types.astro.ts +4 -0
- package/components/Dialog/types.d.vue.ts +10 -0
- package/components/Dialog/types.solid.ts +8 -0
- package/components/Dialog/types.svelte.ts +7 -0
- package/components/Dialog/types.ts +9 -0
- package/components/Divider/Divider.astro +1 -6
- package/components/Divider/types.astro.ts +4 -0
- package/components/Divider/types.d.vue.ts +6 -0
- package/components/Divider/types.solid.ts +4 -0
- package/components/Divider/types.svelte.ts +4 -0
- package/components/Divider/types.ts +3 -0
- package/components/Drawer/Drawer.astro +1 -9
- package/components/Drawer/DrawerFooter.astro +1 -4
- package/components/Drawer/DrawerHeader.astro +1 -5
- package/components/Drawer/types.astro.ts +8 -0
- package/components/Drawer/types.d.vue.ts +29 -0
- package/components/Drawer/types.solid.ts +12 -0
- package/components/Drawer/types.svelte.ts +15 -0
- package/components/Drawer/types.ts +19 -0
- package/components/FieldDescription/FieldDescription.astro +1 -5
- package/components/FieldDescription/types.astro.ts +4 -0
- package/components/FieldDescription/types.d.vue.ts +10 -0
- package/components/FieldDescription/types.solid.ts +5 -0
- package/components/FieldDescription/types.svelte.ts +4 -0
- package/components/FieldDescription/types.ts +1 -0
- package/components/FieldGroup/FieldGroup.astro +1 -8
- package/components/FieldGroup/types.astro.ts +4 -0
- package/components/FieldGroup/types.d.vue.ts +12 -0
- package/components/FieldGroup/types.solid.ts +5 -0
- package/components/FieldGroup/types.svelte.ts +4 -0
- package/components/FieldGroup/types.ts +4 -0
- package/components/FieldLegend/FieldLegend.astro +4 -8
- package/components/FieldLegend/types.astro.ts +6 -0
- package/components/FieldLegend/types.d.vue.ts +11 -0
- package/components/FieldLegend/types.solid.ts +5 -0
- package/components/FieldLegend/types.svelte.ts +6 -0
- package/components/FieldLegend/types.ts +1 -0
- package/components/FieldSet/FieldSet.astro +1 -5
- package/components/FieldSet/types.astro.ts +6 -0
- package/components/FieldSet/types.d.vue.ts +11 -0
- package/components/FieldSet/types.solid.ts +5 -0
- package/components/FieldSet/types.svelte.ts +8 -0
- package/components/FieldSet/types.ts +5 -0
- package/components/Form/Form.astro +1 -6
- package/components/Form/types.astro.ts +6 -0
- package/components/Form/types.d.vue.ts +11 -0
- package/components/Form/types.solid.ts +5 -0
- package/components/Form/types.svelte.ts +7 -0
- package/components/Form/types.ts +1 -0
- package/components/IconButton/IconButton.astro +18 -20
- package/components/IconButton/types.astro.ts +6 -0
- package/components/IconButton/types.d.vue.ts +10 -0
- package/components/IconButton/types.solid.ts +8 -0
- package/components/IconButton/types.svelte.ts +6 -0
- package/components/IconButton/types.ts +16 -0
- package/components/List/List.astro +1 -8
- package/components/List/types.astro.ts +4 -0
- package/components/List/types.d.vue.ts +10 -0
- package/components/List/types.solid.ts +4 -0
- package/components/List/types.svelte.ts +4 -0
- package/components/List/types.ts +7 -0
- package/components/ListItem/ListItem.astro +3 -13
- package/components/ListItem/types.astro.ts +10 -0
- package/components/ListItem/types.d.vue.ts +10 -0
- package/components/ListItem/types.solid.ts +12 -0
- package/components/ListItem/types.svelte.ts +14 -0
- package/components/ListItem/types.ts +32 -0
- package/components/Progress/Progress.astro +1 -11
- package/components/Progress/types.astro.ts +4 -0
- package/components/Progress/types.d.vue.ts +10 -0
- package/components/Progress/types.solid.ts +4 -0
- package/components/Progress/types.svelte.ts +4 -0
- package/components/Progress/types.ts +10 -0
- package/components/Radio/Radio.astro +6 -32
- package/components/Radio/RadioInput.astro +3 -20
- package/components/Radio/types.astro.ts +6 -0
- package/components/Radio/types.d.vue.ts +11 -0
- package/components/Radio/types.solid.ts +9 -0
- package/components/Radio/types.svelte.ts +12 -0
- package/components/Radio/types.ts +13 -0
- package/components/Range/Range.astro +23 -31
- package/components/Range/types.astro.ts +6 -0
- package/components/Range/types.d.vue.ts +14 -0
- package/components/Range/types.solid.ts +6 -0
- package/components/Range/types.svelte.ts +9 -0
- package/components/Range/types.ts +30 -0
- package/components/Select/Select.astro +42 -34
- package/components/Select/types.astro.ts +4 -0
- package/components/Select/types.d.vue.ts +17 -0
- package/components/Select/types.solid.ts +6 -0
- package/components/Select/types.svelte.ts +7 -0
- package/components/Select/types.ts +27 -0
- package/components/Switch/Switch.astro +14 -39
- package/components/Switch/SwitchInput.astro +3 -21
- package/components/Switch/types.astro.ts +5 -0
- package/components/Switch/types.d.vue.ts +13 -0
- package/components/Switch/types.solid.ts +9 -0
- package/components/Switch/types.svelte.ts +9 -0
- package/components/Switch/types.ts +16 -0
- package/components/Table/Body.astro +1 -3
- package/components/Table/Cell.astro +1 -3
- package/components/Table/Column.astro +1 -4
- package/components/Table/ColumnGroup.astro +1 -3
- package/components/Table/Head.astro +1 -3
- package/components/Table/HeaderCell.astro +1 -3
- package/components/Table/Row.astro +1 -3
- package/components/Table/Table.astro +1 -5
- package/components/Table/types.astro.ts +16 -0
- package/components/Table/types.d.vue.ts +10 -0
- package/components/Table/types.solid.ts +8 -0
- package/components/Table/types.svelte.ts +11 -0
- package/components/Table/types.ts +9 -0
- package/components/Tabs/Tabs.astro +1 -5
- package/components/Tabs/TabsItem.astro +1 -8
- package/components/Tabs/TabsPanel.astro +1 -6
- package/components/Tabs/TabsTab.astro +1 -5
- package/components/Tabs/types.astro.ts +11 -0
- package/components/Tabs/types.d.vue.ts +31 -0
- package/components/Tabs/types.solid.ts +12 -0
- package/components/Tabs/types.svelte.ts +10 -0
- package/components/Tabs/types.ts +19 -0
- package/components/TextField/TextField.astro +45 -49
- package/components/TextField/types.astro.ts +17 -0
- package/components/TextField/types.d.vue.ts +18 -0
- package/components/TextField/types.solid.ts +22 -0
- package/components/TextField/types.svelte.ts +22 -0
- package/components/TextField/types.ts +35 -0
- package/components/Textarea/Textarea.astro +50 -38
- package/components/Textarea/types.astro.ts +10 -0
- package/components/Textarea/types.d.vue.ts +18 -0
- package/components/Textarea/types.solid.ts +6 -0
- package/components/Textarea/types.svelte.ts +21 -0
- package/components/Textarea/types.ts +33 -0
- package/components/ToggleButton/ToggleButton.astro +1 -11
- package/components/ToggleButton/types.astro.ts +4 -0
- package/components/ToggleButton/types.d.vue.ts +10 -0
- package/components/ToggleButton/types.solid.ts +7 -0
- package/components/ToggleButton/types.svelte.ts +7 -0
- package/components/ToggleButton/types.ts +10 -0
- package/components/ToggleGroup/ToggleGroup.astro +1 -8
- package/components/ToggleGroup/types.astro.ts +4 -0
- package/components/ToggleGroup/types.d.vue.ts +15 -0
- package/components/ToggleGroup/types.solid.ts +4 -0
- package/components/ToggleGroup/types.svelte.ts +9 -0
- package/components/ToggleGroup/types.ts +15 -0
- package/components/Tooltip/Tooltip.astro +2 -9
- package/components/Tooltip/types.astro.ts +4 -0
- package/components/Tooltip/types.d.vue.ts +10 -0
- package/components/Tooltip/types.solid.ts +6 -0
- package/components/Tooltip/types.svelte.ts +7 -0
- package/components/Tooltip/types.ts +11 -0
- package/css/theme.css +0 -1
- package/dist/opui.css +0 -1
- package/dist/opui.css.map +1 -1
- package/package.json +4 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 5.2.0 - 2026-06-03
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
|
|
7
|
+
- Broke out types for components into their own files. All frameworks now have their own types file. Yes you read that right, there will be more frameworks soon. Svelte, Vue and Solid are coming soon (in that order).
|
|
8
|
+
|
|
9
|
+
Thank you to [somephic](https://github.com/somephic) for the contribution and discussions!
|
|
10
|
+
|
|
3
11
|
## 5.1.2 - 2026-05-29
|
|
4
12
|
|
|
5
13
|
### Fixed
|
package/README.md
CHANGED
|
@@ -36,7 +36,10 @@ import { Button, Card } from "opui-css/astro"
|
|
|
36
36
|
Drop a pre-bundled stylesheet into any page and use the documented class names:
|
|
37
37
|
|
|
38
38
|
```html
|
|
39
|
-
<link
|
|
39
|
+
<link
|
|
40
|
+
rel="stylesheet"
|
|
41
|
+
href="https://cdn.jsdelivr.net/npm/opui-css/dist/opui.css"
|
|
42
|
+
/>
|
|
40
43
|
|
|
41
44
|
<button class="ui-button ui-primary">Click me</button>
|
|
42
45
|
```
|
|
@@ -78,10 +81,6 @@ Wrap your own styles in a layer above `utils` (or unlayered) to override.
|
|
|
78
81
|
| `opui-css/astro` | All Astro components |
|
|
79
82
|
| `opui-css/components/*` | Individual Astro component sources |
|
|
80
83
|
|
|
81
|
-
## Contributing
|
|
82
|
-
|
|
83
|
-
See [`CONTRIBUTING.md`](./CONTRIBUTING.md) for the component-authoring pattern.
|
|
84
|
-
|
|
85
84
|
## License
|
|
86
85
|
|
|
87
86
|
[MIT](./LICENSE) © Felix Bohlin
|
package/components/AGENTS.md
CHANGED
|
@@ -8,7 +8,7 @@ This guide defines the standards for implementing reusable Astro UI components i
|
|
|
8
8
|
|
|
9
9
|
When implementing or updating a component, ensure:
|
|
10
10
|
- [ ] **Title Export**: `export const title = "Component Name"` is present.
|
|
11
|
-
- [ ] **Props Type**:
|
|
11
|
+
- [ ] **Props Type**: Imported `Props` from `./types.astro` (avoid interfaces).
|
|
12
12
|
- [ ] **Sorting**: Props, Destructuring, and Classes are sorted alphabetically.
|
|
13
13
|
- [ ] **Rest Props**: `...rest` is captured and spread onto the root element.
|
|
14
14
|
- [ ] **Class Management**: Used `class:list` for all class manipulations.
|
|
@@ -20,18 +20,17 @@ When implementing or updating a component, ensure:
|
|
|
20
20
|
|
|
21
21
|
## 1. Frontmatter Structure
|
|
22
22
|
|
|
23
|
+
Every component uses layered type files:
|
|
24
|
+
|
|
25
|
+
- `types.ts` — shared, framework-agnostic props (component-specific only; no `HTMLAttributes`)
|
|
26
|
+
- `types.astro.ts` — Astro props = base + `HTMLAttributes<element>`
|
|
27
|
+
- `types.d.vue.ts` / `types.svelte.ts` / `types.solid.ts` — framework-specific extensions (for merge parity)
|
|
28
|
+
|
|
23
29
|
Every component must follow this exact frontmatter layout:
|
|
24
30
|
|
|
25
31
|
```astro
|
|
26
32
|
---
|
|
27
|
-
type Props
|
|
28
|
-
[key: string]: any // Required for ...rest support
|
|
29
|
-
class?: string
|
|
30
|
-
disabled?: boolean
|
|
31
|
-
label?: string
|
|
32
|
-
size?: "small" | "large"
|
|
33
|
-
variant?: "outlined" | "tonal" | "filled"
|
|
34
|
-
}
|
|
33
|
+
import type { Props } from "./types.astro"
|
|
35
34
|
|
|
36
35
|
export const title = "My Component"
|
|
37
36
|
|
|
@@ -40,15 +39,15 @@ const {
|
|
|
40
39
|
disabled,
|
|
41
40
|
label,
|
|
42
41
|
size,
|
|
43
|
-
variant = "outlined",
|
|
42
|
+
variant = "outlined",
|
|
44
43
|
...rest
|
|
45
44
|
} = Astro.props
|
|
46
45
|
---
|
|
47
46
|
```
|
|
48
47
|
|
|
49
48
|
### Key Rules:
|
|
50
|
-
- **Alphabetical Sorting**: Sort property definitions in `
|
|
51
|
-
- **REST Support**:
|
|
49
|
+
- **Alphabetical Sorting**: Sort property definitions in `types.ts` and variables in the destructuring statement.
|
|
50
|
+
- **REST Support**: Use `HTMLAttributes` in `types.astro.ts` and `...rest` in destructuring. Do not add `[key: string]: any` to `types.ts` — native attributes belong in the framework type files.
|
|
52
51
|
- **Title Export**: This is mandatory for documentation generation.
|
|
53
52
|
|
|
54
53
|
---
|
|
@@ -137,7 +136,7 @@ Use named slots for specific functional areas. Check for existence before render
|
|
|
137
136
|
Most inputs should be wrapped in a `<label>` to provide a larger hit area and built-in accessibility.
|
|
138
137
|
|
|
139
138
|
```astro
|
|
140
|
-
<label class:list={["ui-field", { "ui-disabled": disabled
|
|
139
|
+
<label class:list={["ui-field", { "ui-disabled": disabled }]} data-invalid={error || undefined}>
|
|
141
140
|
<span class="ui-label">{label}</span>
|
|
142
141
|
<input type="text" {...rest} />
|
|
143
142
|
{endText && <span class="ui-end-text">{endText}</span>}
|
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
type Props
|
|
3
|
-
class?: string
|
|
4
|
-
name?: string
|
|
5
|
-
open?: boolean
|
|
6
|
-
variant?: "default" | "outlined" | "elevated" | "tonal"
|
|
7
|
-
[key: string]: any
|
|
8
|
-
}
|
|
2
|
+
import type { Props } from "./types.astro"
|
|
9
3
|
|
|
10
4
|
export const title = "Accordion"
|
|
11
5
|
|
|
@@ -28,8 +22,10 @@ const contentId = $id("content")
|
|
|
28
22
|
{...rest}
|
|
29
23
|
>
|
|
30
24
|
<!-- Summary -->
|
|
31
|
-
|
|
32
|
-
<summary id={summaryId} aria-controls={contentId}
|
|
25
|
+
|
|
26
|
+
<summary id={summaryId} aria-controls={contentId}
|
|
27
|
+
><slot name="summary" /><slot name="marker" /></summary
|
|
28
|
+
>
|
|
33
29
|
|
|
34
30
|
<!-- Content -->
|
|
35
31
|
<div
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { HTMLAttributes, Slot } from "vue"
|
|
2
|
+
import type { Props as BaseProps } from "./types"
|
|
3
|
+
|
|
4
|
+
export type Props = BaseProps & {
|
|
5
|
+
class?: HTMLAttributes["class"]
|
|
6
|
+
name?: string
|
|
7
|
+
open?: boolean
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export type Slots = {
|
|
11
|
+
actions?: Slot
|
|
12
|
+
default?: Slot
|
|
13
|
+
marker?: Slot
|
|
14
|
+
summary?: Slot
|
|
15
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { HTMLAttributes, Slot } from "vue"
|
|
2
|
+
import type { Props as BaseProps, Slots as BaseSlots } from "./types"
|
|
3
|
+
|
|
4
|
+
export type Props = BaseProps & {
|
|
5
|
+
class?: HTMLAttributes["class"]
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export type Slots = BaseSlots<Slot> & {
|
|
9
|
+
default?: Slot
|
|
10
|
+
}
|
|
@@ -1,14 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
type Props
|
|
3
|
-
[key: string]: any
|
|
4
|
-
alt?: string
|
|
5
|
-
as?: "div" | "a" | "button" | string
|
|
6
|
-
class?: string
|
|
7
|
-
href?: string
|
|
8
|
-
isGroup?: boolean
|
|
9
|
-
src?: string
|
|
10
|
-
variant?: "squared" | "rounded" | "squircle"
|
|
11
|
-
}
|
|
2
|
+
import type { Props } from "./types.astro"
|
|
12
3
|
|
|
13
4
|
export const title = "Avatar"
|
|
14
5
|
|
|
@@ -23,10 +14,9 @@ const {
|
|
|
23
14
|
...rest
|
|
24
15
|
} = Astro.props
|
|
25
16
|
|
|
26
|
-
const Tag = as || (href ? "a" : "div")
|
|
17
|
+
const Tag = (as || (href ? "a" : "div")) as any
|
|
27
18
|
---
|
|
28
19
|
|
|
29
|
-
<!-- prettier-ignore -->
|
|
30
20
|
<Tag
|
|
31
21
|
class:list={[
|
|
32
22
|
{ "ui-avatar": !isGroup },
|
|
@@ -35,4 +25,5 @@ const Tag = as || (href ? "a" : "div")
|
|
|
35
25
|
]}
|
|
36
26
|
href={href}
|
|
37
27
|
role={isGroup ? "group" : undefined}
|
|
38
|
-
{...rest}>{src ? <img src={src} alt={alt} /> : <slot />}</Tag
|
|
28
|
+
{...rest}>{src ? <img src={src} alt={alt} /> : <slot />}</Tag
|
|
29
|
+
>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type * as Base from "./types"
|
|
2
|
+
import type { HTMLAttributes } from "astro/types"
|
|
3
|
+
|
|
4
|
+
export type Props = Base.Props &
|
|
5
|
+
Pick<HTMLAttributes<"img">, Base.ImageProps> &
|
|
6
|
+
(
|
|
7
|
+
| ({ as?: "div" } & HTMLAttributes<"div">)
|
|
8
|
+
| ({ as?: "button" } & HTMLAttributes<"button">)
|
|
9
|
+
| ({ as?: "a" } & HTMLAttributes<"a">)
|
|
10
|
+
)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { HTMLAttributes, ImgHTMLAttributes, Slot } from "vue"
|
|
2
|
+
import type { ImageProps, Props as BaseProps } from "./types"
|
|
3
|
+
|
|
4
|
+
export type Props = BaseProps &
|
|
5
|
+
Pick<ImgHTMLAttributes, ImageProps> & {
|
|
6
|
+
class?: HTMLAttributes["class"]
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export type Slots = {
|
|
10
|
+
default?: Slot
|
|
11
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type * as Base from "./types"
|
|
2
|
+
import type { JSX } from "solid-js"
|
|
3
|
+
|
|
4
|
+
export type Props = Base.Props &
|
|
5
|
+
Base.Slots<JSX.Element> &
|
|
6
|
+
Pick<JSX.ImgHTMLAttributes<HTMLImageElement>, Base.ImageProps> &
|
|
7
|
+
(
|
|
8
|
+
| ({ as?: "div" } & JSX.HTMLAttributes<HTMLDivElement>)
|
|
9
|
+
| ({ as?: "button" } & JSX.ButtonHTMLAttributes<HTMLButtonElement>)
|
|
10
|
+
| ({ as?: "a" } & JSX.AnchorHTMLAttributes<HTMLAnchorElement>)
|
|
11
|
+
)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type * as Base from "./types"
|
|
2
|
+
import type { SvelteHTMLElements } from "svelte/elements"
|
|
3
|
+
import type { Snippet } from "svelte"
|
|
4
|
+
|
|
5
|
+
export type Props = Base.Props &
|
|
6
|
+
Base.Slots<Snippet> &
|
|
7
|
+
Pick<SvelteHTMLElements["img"], Base.ImageProps> &
|
|
8
|
+
(
|
|
9
|
+
| ({ as?: "div" } & SvelteHTMLElements["div"])
|
|
10
|
+
| ({ as?: "button" } & SvelteHTMLElements["button"])
|
|
11
|
+
| ({ as?: "a" } & SvelteHTMLElements["a"])
|
|
12
|
+
)
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export type Props = {
|
|
2
|
+
command?: string
|
|
3
|
+
commandfor?: string
|
|
4
|
+
interestfor?: string
|
|
5
|
+
isGroup?: boolean
|
|
6
|
+
variant?: "squared" | "rounded" | "squircle"
|
|
7
|
+
} & (
|
|
8
|
+
| {
|
|
9
|
+
as?: "div"
|
|
10
|
+
href: never
|
|
11
|
+
disabled?: never
|
|
12
|
+
}
|
|
13
|
+
| {
|
|
14
|
+
as?: "a"
|
|
15
|
+
href: string
|
|
16
|
+
disabled?: never
|
|
17
|
+
}
|
|
18
|
+
| {
|
|
19
|
+
as?: "button"
|
|
20
|
+
href?: never
|
|
21
|
+
disabled?: boolean
|
|
22
|
+
}
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
export type Slots<S> = {
|
|
26
|
+
children?: S
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export type ImageProps = "src" | "alt"
|
|
@@ -1,15 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
import
|
|
2
|
+
import type { Props } from "./types.astro"
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
[key: string]: any
|
|
6
|
-
alignment?: "start-start" | "end-start" | "end-end"
|
|
7
|
-
class?: string
|
|
8
|
-
color?: "critical" | "info" | "neutral" | "success" | "warning"
|
|
9
|
-
dot?: boolean
|
|
10
|
-
invisible?: boolean
|
|
11
|
-
label?: string | number
|
|
12
|
-
}
|
|
4
|
+
import Anchor from "../Anchor/Anchor.astro"
|
|
13
5
|
|
|
14
6
|
export const title = "Badge"
|
|
15
7
|
|
|
@@ -45,7 +37,7 @@ const positionArea =
|
|
|
45
37
|
className,
|
|
46
38
|
color && `ui-${color}`,
|
|
47
39
|
]}
|
|
48
|
-
{...rest}
|
|
40
|
+
{...rest as any}
|
|
49
41
|
>
|
|
50
42
|
<slot />
|
|
51
43
|
<span
|
|
@@ -1,45 +1,36 @@
|
|
|
1
1
|
---
|
|
2
|
-
type
|
|
3
|
-
[key: string]: any
|
|
4
|
-
as?: string
|
|
5
|
-
class?: string
|
|
6
|
-
color?: "critical" | "primary"
|
|
7
|
-
size?: "x-small" | "small" | "large"
|
|
8
|
-
variant?: "outlined" | "tonal" | "filled"
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
type AnchorProps = CommonProps & {
|
|
12
|
-
disabled?: never
|
|
13
|
-
href: string
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
type ButtonProps = CommonProps & {
|
|
17
|
-
disabled?: boolean
|
|
18
|
-
href?: undefined
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
type Props = AnchorProps | ButtonProps
|
|
2
|
+
import type { Props } from "./types.astro"
|
|
22
3
|
|
|
23
4
|
export const title = "Button"
|
|
24
5
|
|
|
6
|
+
const props = Astro.props as Props
|
|
25
7
|
const {
|
|
26
8
|
as,
|
|
27
9
|
class: className,
|
|
28
10
|
color,
|
|
29
|
-
disabled,
|
|
30
|
-
href,
|
|
31
11
|
size,
|
|
32
12
|
variant,
|
|
13
|
+
disabled,
|
|
14
|
+
href,
|
|
33
15
|
...rest
|
|
34
|
-
} =
|
|
16
|
+
} = props
|
|
35
17
|
|
|
36
|
-
const Tag = as || (href ? "a" : "button")
|
|
18
|
+
const Tag = (as || (href ? "a" : "button")) as any
|
|
37
19
|
const isButton = Tag === "button"
|
|
38
20
|
---
|
|
39
21
|
|
|
40
|
-
<!-- prettier-ignore -->
|
|
41
22
|
<Tag
|
|
42
|
-
class:list={[
|
|
23
|
+
class:list={[
|
|
24
|
+
"ui-button",
|
|
25
|
+
{ "ui-disabled": isButton && disabled },
|
|
26
|
+
size && `ui-${size}`,
|
|
27
|
+
variant && `ui-${variant}`,
|
|
28
|
+
color && `ui-${color}`,
|
|
29
|
+
className,
|
|
30
|
+
]}
|
|
43
31
|
disabled={isButton ? disabled : undefined}
|
|
44
32
|
href={href}
|
|
45
|
-
{...rest}
|
|
33
|
+
{...rest as any}
|
|
34
|
+
>
|
|
35
|
+
<slot />
|
|
36
|
+
</Tag>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type Props = {
|
|
2
|
+
color?: "critical" | "primary"
|
|
3
|
+
command?: string
|
|
4
|
+
commandfor?: string
|
|
5
|
+
interestfor?: string
|
|
6
|
+
size?: "x-small" | "small" | "large"
|
|
7
|
+
variant?: "outlined" | "tonal" | "filled"
|
|
8
|
+
} & (
|
|
9
|
+
| {
|
|
10
|
+
as?: "a"
|
|
11
|
+
href: string
|
|
12
|
+
disabled?: never
|
|
13
|
+
}
|
|
14
|
+
| {
|
|
15
|
+
as?: "button"
|
|
16
|
+
href?: never
|
|
17
|
+
disabled?: boolean
|
|
18
|
+
}
|
|
19
|
+
)
|
|
@@ -1,12 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
type Props
|
|
3
|
-
[key: string]: any
|
|
4
|
-
class?: string
|
|
5
|
-
color?: "critical" | "primary"
|
|
6
|
-
orientation?: "vertical"
|
|
7
|
-
size?: "small" | "large"
|
|
8
|
-
variant?: "outlined" | "tonal" | "filled"
|
|
9
|
-
}
|
|
2
|
+
import type { Props } from "./types.astro"
|
|
10
3
|
|
|
11
4
|
export const title = "Button Group"
|
|
12
5
|
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
type Props
|
|
3
|
-
[key: string]: any
|
|
4
|
-
class?: string
|
|
5
|
-
severity?: "critical" | "info" | "neutral" | "success" | "warning"
|
|
6
|
-
variant?: "tonal" | "outlined"
|
|
7
|
-
}
|
|
2
|
+
import type { Props } from "./types.astro"
|
|
8
3
|
|
|
9
4
|
export const title = "Callout"
|
|
10
5
|
|
|
@@ -13,7 +8,12 @@ const { class: className, severity, variant, ...rest } = Astro.props
|
|
|
13
8
|
|
|
14
9
|
<article
|
|
15
10
|
role="note"
|
|
16
|
-
class:list={[
|
|
11
|
+
class:list={[
|
|
12
|
+
"ui-callout",
|
|
13
|
+
variant && `ui-${variant}`,
|
|
14
|
+
severity && `ui-${severity}`,
|
|
15
|
+
className,
|
|
16
|
+
]}
|
|
17
17
|
{...rest}
|
|
18
18
|
>
|
|
19
19
|
<slot name="icon">
|
|
@@ -66,8 +66,9 @@ const { class: className, severity, variant, ...rest } = Astro.props
|
|
|
66
66
|
<div class="ui-content">
|
|
67
67
|
{
|
|
68
68
|
Astro.slots.has("title") && (
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
<h3 class="ui-title">
|
|
70
|
+
<slot name="title" />
|
|
71
|
+
</h3>
|
|
71
72
|
)
|
|
72
73
|
}
|
|
73
74
|
<slot />
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { HTMLAttributes, Slot } from "vue"
|
|
2
|
+
import type { Props as BaseProps, Slots as BaseSlots } from "./types"
|
|
3
|
+
|
|
4
|
+
export type Props = BaseProps & {
|
|
5
|
+
class?: HTMLAttributes["class"]
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export type Slots = BaseSlots<Slot> & {
|
|
9
|
+
default?: Slot
|
|
10
|
+
}
|