@toife/vue 3.1.3 → 3.1.4
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/package.json +1 -1
- package/src/components/app/app.type.ts +6 -0
- package/src/components/app/app.vue +7 -1
- package/src/components/avatar/avatar.scss +3 -2
- package/src/components/button/button.scss +9 -6
- package/src/components/button/button.type.ts +3 -1
- package/src/components/card/card/card.scss +3 -1
- package/src/components/checkbox/checkbox.scss +9 -14
- package/src/components/checkbox/checkbox.type.ts +4 -0
- package/src/components/checkbox/checkbox.vue +2 -0
- package/src/components/decision-modal/decision-modal.scss +3 -1
- package/src/components/dropdown/dropdown.scss +5 -2
- package/src/components/dropdown/dropdown.type.ts +4 -1
- package/src/components/dropdown/dropdown.vue +4 -0
- package/src/components/field/field.type.ts +2 -2
- package/src/components/field/outline/outline.scss +9 -8
- package/src/components/gesture-indicator/gesture-indicator.scss +3 -1
- package/src/components/index.ts +1 -0
- package/src/components/layout/flex/flex.scss +0 -2
- package/src/components/layout/flex-item/flex-item.html +1 -0
- package/src/components/layout/flex-item/flex-item.scss +48 -0
- package/src/components/layout/flex-item/flex-item.type.ts +11 -0
- package/src/components/layout/flex-item/flex-item.vue +27 -0
- package/src/components/layout/flex-item/index.ts +2 -0
- package/src/components/layout/grid/grid.scss +0 -2
- package/src/components/layout/grid-item/grid-item.html +1 -0
- package/src/components/layout/grid-item/grid-item.scss +49 -0
- package/src/components/layout/grid-item/grid-item.type.ts +14 -0
- package/src/components/layout/grid-item/grid-item.vue +27 -0
- package/src/components/layout/grid-item/index.ts +2 -0
- package/src/components/layout/index.ts +2 -1
- package/src/components/modal/modal.scss +3 -1
- package/src/components/radio/radio/radio.scss +7 -5
- package/src/components/radio/radio/radio.type.ts +4 -0
- package/src/components/radio/radio/radio.vue +2 -0
- package/src/components/refresher/refresher.html +4 -4
- package/src/components/refresher/refresher.scss +10 -4
- package/src/components/refresher/refresher.vue +3 -3
- package/src/components/skeleton/skeleton.scss +3 -1
- package/src/components/slide-range/index.ts +2 -0
- package/src/components/slide-range/slide-range.html +20 -0
- package/src/components/slide-range/slide-range.scss +161 -0
- package/src/components/slide-range/slide-range.type.ts +16 -0
- package/src/components/slide-range/slide-range.vue +229 -0
- package/src/components/switch/switch.scss +11 -22
- package/src/components/switch/switch.type.ts +5 -0
- package/src/components/switch/switch.vue +2 -0
- package/src/components/tabs/tabs/tabs.scss +135 -95
- package/src/components/tabs/tabs/tabs.type.ts +0 -1
- package/src/components/tabs/tabs/tabs.vue +6 -10
- package/src/components/toast/toast-content/toast-content.scss +3 -2
- package/src/components/toolbar/toolbar.scss +1 -1
- package/src/components/toolbar/toolbar.type.ts +1 -1
- package/src/components/toolbar/toolbar.vue +2 -2
- package/src/factory.ts +6 -2
- package/src/index.ts +1 -1
- package/src/components/action/action.md +0 -115
- package/src/components/app/app.md +0 -77
- package/src/components/avatar/avatar.md +0 -64
- package/src/components/button/button.md +0 -66
- package/src/components/cable/cable.md +0 -57
- package/src/components/card/card/card.md +0 -57
- package/src/components/card/card-body/card-body.md +0 -34
- package/src/components/card/card-footer/card-footer.md +0 -42
- package/src/components/card/card-header/card-header.md +0 -44
- package/src/components/checkbox/checkbox.md +0 -60
- package/src/components/collapse/collapse.md +0 -59
- package/src/components/container/container.md +0 -38
- package/src/components/decision-modal/decision-modal.md +0 -79
- package/src/components/divider/divider.md +0 -42
- package/src/components/field/field.md +0 -68
- package/src/components/field/outline/outline-field.md +0 -44
- package/src/components/form-group/form-group.md +0 -41
- package/src/components/gesture-indicator/gesture-indicator.md +0 -42
- package/src/components/image/image.md +0 -41
- package/src/components/layout/cell/cell.html +0 -1
- package/src/components/layout/cell/cell.md +0 -47
- package/src/components/layout/cell/cell.scss +0 -54
- package/src/components/layout/cell/cell.type.ts +0 -19
- package/src/components/layout/cell/cell.vue +0 -35
- package/src/components/layout/cell/index.ts +0 -2
- package/src/components/layout/grid/grid.md +0 -50
- package/src/components/modal/modal.md +0 -65
- package/src/components/page/page.md +0 -39
- package/src/components/present/present.md +0 -60
- package/src/components/radio/radio/radio.md +0 -53
- package/src/components/radio/radio-group/radio-group.md +0 -62
- package/src/components/refresher/refresher.md +0 -53
- package/src/components/route/route-navigator/route-navigator.md +0 -50
- package/src/components/route/route-outlet/route-outlet.md +0 -30
- package/src/components/route/route-provider/route-provider.md +0 -46
- package/src/components/route/route-wrapper/route-wrapper.md +0 -45
- package/src/components/segmented-field/segmented-field.md +0 -58
- package/src/components/skeleton/skeleton.md +0 -47
- package/src/components/switch/switch.md +0 -57
- package/src/components/tabs/tab/tab.md +0 -52
- package/src/components/tabs/tabs/tabs.md +0 -59
- package/src/components/toast/toast/toast.md +0 -56
- package/src/components/toast/toast-content/toast-content.md +0 -41
- package/src/components/toolbar/toolbar.md +0 -54
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
# `<t-field>`
|
|
2
|
-
|
|
3
|
-
> Default prefix is `t-` — change via `createToife({ prefix: "..." })`.
|
|
4
|
-
|
|
5
|
-
## Description
|
|
6
|
-
|
|
7
|
-
Text input field. The current implementation only renders `OutlineField` when `variant === 'outline'`. Supports `v-model`, validation message, help text, and many input options.
|
|
8
|
-
|
|
9
|
-
## Requirements / dependencies
|
|
10
|
-
|
|
11
|
-
| Item | Notes |
|
|
12
|
-
| ----- | -------------------- |
|
|
13
|
-
| Vue | ^3.5 |
|
|
14
|
-
| Other | `t-app` recommended. |
|
|
15
|
-
|
|
16
|
-
## Basic usage
|
|
17
|
-
|
|
18
|
-
```vue
|
|
19
|
-
<t-field v-model="text" placeholder="Type…" />
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
## Props
|
|
23
|
-
|
|
24
|
-
| Prop | Type | Default | Description |
|
|
25
|
-
| ----------------------- | ------------------ | ------------ | ----------------------------------------------------------------- |
|
|
26
|
-
| `modelValue` | `string` | `""` | Value (`v-model`). |
|
|
27
|
-
| `name` | `string` | — | Input `name`. |
|
|
28
|
-
| `variant` | `FieldVariant` | `"outline"` | Only `outline` is wired in the current UI. |
|
|
29
|
-
| `role` / `shape` | `string` | — | Theme; default from app. |
|
|
30
|
-
| `size` | `FieldSize` | `"standard"` | Field size. |
|
|
31
|
-
| `shadow` | `boolean` | — | Default from app. |
|
|
32
|
-
| `direction` | `AppDirection` | — | Default from app or `left`. |
|
|
33
|
-
| `id` | `string` | — | Element id. |
|
|
34
|
-
| `value` | `string` | — | May mirror model (`OutlineField` uses `value \|\| modelValue`). |
|
|
35
|
-
| `placeholder` | `string` | `""` | Placeholder. |
|
|
36
|
-
| `disabled` / `readonly` | `boolean` | `false` | |
|
|
37
|
-
| `autocomplete` | `string` | — | |
|
|
38
|
-
| `maxLength` | `number \| string` | — | |
|
|
39
|
-
| `tabindex` | `number \| string` | — | |
|
|
40
|
-
| `type` | `FieldType` | `"text"` | `text`, `number`, `email`, `password`, `tel`, `url`, `paragraph`. |
|
|
41
|
-
| `line` / `maxLine` | `number \| string` | `1` / — | Lines (paragraph). |
|
|
42
|
-
| `message` | `string` | `""` | Validation / warning message. |
|
|
43
|
-
| `help` | `string` | `""` | Help hint. |
|
|
44
|
-
|
|
45
|
-
**Type source:** `src/components/field/field.type.ts`
|
|
46
|
-
|
|
47
|
-
## Events (emits)
|
|
48
|
-
|
|
49
|
-
| Event | Payload | Description |
|
|
50
|
-
| ------------------- | ------------ | ------------- |
|
|
51
|
-
| `update:modelValue` | `string` | Model update. |
|
|
52
|
-
| `focus` | `FocusEvent` | |
|
|
53
|
-
| `blur` | `FocusEvent` | |
|
|
54
|
-
| `input` | `Event` | |
|
|
55
|
-
| `beforeinput` | `Event` | |
|
|
56
|
-
|
|
57
|
-
## Slots
|
|
58
|
-
|
|
59
|
-
_None_ — content is owned by `OutlineField` (which may expose a default slot in the implementation).
|
|
60
|
-
|
|
61
|
-
## `v-model`
|
|
62
|
-
|
|
63
|
-
`modelValue` / `update:modelValue`.
|
|
64
|
-
|
|
65
|
-
## See also
|
|
66
|
-
|
|
67
|
-
- Source: `src/components/field`
|
|
68
|
-
- [outline-field.md](./outline/outline-field.md) — implementation detail when `variant="outline"`
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
# `OutlineField`
|
|
2
|
-
|
|
3
|
-
> **Not** registered by `createToife()` — named import: `import { OutlineField } from "@toife/vue"` or register manually: `app.component("t-outline-field", OutlineField)`.
|
|
4
|
-
|
|
5
|
-
## Description
|
|
6
|
-
|
|
7
|
-
Outline field implementation (contenteditable or password `<input>`), used internally by `t-field` when `variant === 'outline'`. Import directly if you need it without the `Field` wrapper.
|
|
8
|
-
|
|
9
|
-
## Requirements / dependencies
|
|
10
|
-
|
|
11
|
-
| Item | Notes |
|
|
12
|
-
| ----- | --------------------------------------------------- |
|
|
13
|
-
| Vue | ^3.5 |
|
|
14
|
-
| Other | Same `FieldProps` / `FieldEmit` as `field.type.ts`. |
|
|
15
|
-
|
|
16
|
-
## Basic usage
|
|
17
|
-
|
|
18
|
-
```vue
|
|
19
|
-
<script setup lang="ts">
|
|
20
|
-
import { OutlineField } from "@toife/vue";
|
|
21
|
-
</script>
|
|
22
|
-
<template>
|
|
23
|
-
<OutlineField v-model="x" variant="outline" type="text" />
|
|
24
|
-
</template>
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
## Props / events
|
|
28
|
-
|
|
29
|
-
Same as `FieldProps` / `FieldEmit` — see [field.md](../field.md) and `field.type.ts`.
|
|
30
|
-
|
|
31
|
-
## Slots
|
|
32
|
-
|
|
33
|
-
| Slot | Description |
|
|
34
|
-
| --------- | ------------------------------------------------------- |
|
|
35
|
-
| `default` | Extra content after help (see `outline.html` template). |
|
|
36
|
-
|
|
37
|
-
## Behavior notes
|
|
38
|
-
|
|
39
|
-
- When `type !== 'password'`: contenteditable region with `v-text` and caret handling.
|
|
40
|
-
- When `password`: native `<input type="password">`.
|
|
41
|
-
|
|
42
|
-
## See also
|
|
43
|
-
|
|
44
|
-
- Source: `src/components/field/outline`
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# `<t-form-group>`
|
|
2
|
-
|
|
3
|
-
> Default prefix is `t-` — change via `createToife({ prefix: "..." })`.
|
|
4
|
-
|
|
5
|
-
## Description
|
|
6
|
-
|
|
7
|
-
Groups controls in a horizontal or vertical flex layout; used by `Action` to stack button rows.
|
|
8
|
-
|
|
9
|
-
## Requirements / dependencies
|
|
10
|
-
|
|
11
|
-
| Item | Notes |
|
|
12
|
-
| ----- | ----- |
|
|
13
|
-
| Vue | ^3.5 |
|
|
14
|
-
| Other | None. |
|
|
15
|
-
|
|
16
|
-
## Basic usage
|
|
17
|
-
|
|
18
|
-
```vue
|
|
19
|
-
<t-form-group direction="vertical">
|
|
20
|
-
<t-button>A</t-button>
|
|
21
|
-
<t-button>B</t-button>
|
|
22
|
-
</t-form-group>
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## Props
|
|
26
|
-
|
|
27
|
-
| Prop | Type | Default | Description |
|
|
28
|
-
| ----------- | ---------------------------- | -------------- | ------------ |
|
|
29
|
-
| `direction` | `"horizontal" \| "vertical"` | `"horizontal"` | Layout axis. |
|
|
30
|
-
|
|
31
|
-
**Type source:** `src/components/form-group/form-group.type.ts`
|
|
32
|
-
|
|
33
|
-
## Slots
|
|
34
|
-
|
|
35
|
-
| Slot | Description |
|
|
36
|
-
| --------- | --------------- |
|
|
37
|
-
| `default` | Child controls. |
|
|
38
|
-
|
|
39
|
-
## See also
|
|
40
|
-
|
|
41
|
-
- Source: `src/components/form-group`
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
# `<t-gesture-indicator>`
|
|
2
|
-
|
|
3
|
-
> Default prefix is `t-` — change via `createToife({ prefix: "..." })`.
|
|
4
|
-
|
|
5
|
-
## Description
|
|
6
|
-
|
|
7
|
-
Small visual stroke hint for swipe placement; usually rendered inside `Modal` when swipe-to-dismiss is enabled.
|
|
8
|
-
|
|
9
|
-
## Requirements / dependencies
|
|
10
|
-
|
|
11
|
-
| Item | Notes |
|
|
12
|
-
| ----- | ------------------- |
|
|
13
|
-
| Vue | ^3.5 |
|
|
14
|
-
| Other | `t-app` for `role`. |
|
|
15
|
-
|
|
16
|
-
## Basic usage
|
|
17
|
-
|
|
18
|
-
```vue
|
|
19
|
-
<!-- Rarely used standalone; Modal renders it when gesture + indicator -->
|
|
20
|
-
<t-gesture-indicator placement="bottom" />
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
## Props
|
|
24
|
-
|
|
25
|
-
| Prop | Type | Default | Description |
|
|
26
|
-
| ----------- | -------- | ---------- | --------------------------------------- |
|
|
27
|
-
| `placement` | `string` | `"bottom"` | Placement class (e.g. `bottom`, `top`). |
|
|
28
|
-
|
|
29
|
-
**Type source:** `src/components/gesture-indicator/gesture-indicator.type.ts`
|
|
30
|
-
|
|
31
|
-
## Events (emits)
|
|
32
|
-
|
|
33
|
-
_None._
|
|
34
|
-
|
|
35
|
-
## Slots
|
|
36
|
-
|
|
37
|
-
_None_ — decorative empty element.
|
|
38
|
-
|
|
39
|
-
## See also
|
|
40
|
-
|
|
41
|
-
- Source: `src/components/gesture-indicator`
|
|
42
|
-
- [modal.md](../../modal/modal.md)
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# `<t-image>`
|
|
2
|
-
|
|
3
|
-
> Default prefix is `t-` — change via `createToife({ prefix: "..." })`.
|
|
4
|
-
|
|
5
|
-
## Description
|
|
6
|
-
|
|
7
|
-
`<img>` with fallback to `defaultSrc` on load error.
|
|
8
|
-
|
|
9
|
-
## Requirements / dependencies
|
|
10
|
-
|
|
11
|
-
| Item | Notes |
|
|
12
|
-
| ----- | ----- |
|
|
13
|
-
| Vue | ^3.5 |
|
|
14
|
-
| Other | None. |
|
|
15
|
-
|
|
16
|
-
## Basic usage
|
|
17
|
-
|
|
18
|
-
```vue
|
|
19
|
-
<t-image src="/a.webp" default-src="/placeholder.png" />
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
## Props
|
|
23
|
-
|
|
24
|
-
| Prop | Type | Default | Description |
|
|
25
|
-
| ------------ | -------- | ------- | -------------------------------------- |
|
|
26
|
-
| `src` | `string` | — | Primary image URL (assigned on mount). |
|
|
27
|
-
| `defaultSrc` | `string` | — | Fallback URL on `@error`. |
|
|
28
|
-
|
|
29
|
-
**Type source:** `src/components/image/image.type.ts`
|
|
30
|
-
|
|
31
|
-
## Events (emits)
|
|
32
|
-
|
|
33
|
-
_None declared_ — internal `@error` handler.
|
|
34
|
-
|
|
35
|
-
## Slots
|
|
36
|
-
|
|
37
|
-
_None._
|
|
38
|
-
|
|
39
|
-
## See also
|
|
40
|
-
|
|
41
|
-
- Source: `src/components/image`
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<div v-bind="cellAttrs"><slot /></div>
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
# `<t-grid-item>`
|
|
2
|
-
|
|
3
|
-
> Default prefix is `t-` — change via `createToife({ prefix: "..." })`.
|
|
4
|
-
|
|
5
|
-
## Description
|
|
6
|
-
|
|
7
|
-
Cell inside `<t-grid>`. Placement uses `grid-column` / `grid-row` via props or raw CSS strings.
|
|
8
|
-
|
|
9
|
-
## Requirements / dependencies
|
|
10
|
-
|
|
11
|
-
| Item | Notes |
|
|
12
|
-
| ------ | ---------------------------------------------- |
|
|
13
|
-
| Vue | ^3.5 |
|
|
14
|
-
| Parent | `<t-grid>` (or any `display: grid` container). |
|
|
15
|
-
|
|
16
|
-
## Basic usage
|
|
17
|
-
|
|
18
|
-
```vue
|
|
19
|
-
<t-grid :columns="3">
|
|
20
|
-
<t-grid-item :column-span="2">Wide</t-grid-item>
|
|
21
|
-
<t-grid-item>Narrow</t-grid-item>
|
|
22
|
-
</t-grid>
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## Props
|
|
26
|
-
|
|
27
|
-
| Prop | Type | Description |
|
|
28
|
-
| ------------- | -------- | --------------------------------------------- |
|
|
29
|
-
| `column` | `string` | Raw `grid-column` (overrides span/start/end). |
|
|
30
|
-
| `row` | `string` | Raw `grid-row`. |
|
|
31
|
-
| `columnSpan` | `number` | `span n` on the column axis. |
|
|
32
|
-
| `rowSpan` | `number` | `span n` on the row axis. |
|
|
33
|
-
| `columnStart` | `number` | Grid line start (column). |
|
|
34
|
-
| `columnEnd` | `number` | Grid line end (column). |
|
|
35
|
-
| `rowStart` | `number` | Grid line start (row). |
|
|
36
|
-
| `rowEnd` | `number` | Grid line end (row). |
|
|
37
|
-
|
|
38
|
-
## Slots
|
|
39
|
-
|
|
40
|
-
| Slot | Description |
|
|
41
|
-
| --------- | ------------- |
|
|
42
|
-
| `default` | Cell content. |
|
|
43
|
-
|
|
44
|
-
## See also
|
|
45
|
-
|
|
46
|
-
- Source: `src/components/grid/grid-item`
|
|
47
|
-
- `<t-grid>`
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
@use "@toife/sass-layer" as sass;
|
|
2
|
-
@use "sass:map";
|
|
3
|
-
@use "sass:list";
|
|
4
|
-
|
|
5
|
-
// Class name
|
|
6
|
-
$cell: sass.fn-naming-prefix("cell");
|
|
7
|
-
|
|
8
|
-
// Base tokens (breakpoint "")
|
|
9
|
-
$cell-row: sass.fn-naming-var("cell", "row");
|
|
10
|
-
$cell-column: sass.fn-naming-var("cell", "column");
|
|
11
|
-
$cell-justify: sass.fn-naming-var("cell", "justify");
|
|
12
|
-
$cell-align: sass.fn-naming-var("cell", "align");
|
|
13
|
-
$cell-grow: sass.fn-naming-var("cell", "grow");
|
|
14
|
-
$cell-shrink: sass.fn-naming-var("cell", "shrink");
|
|
15
|
-
$cell-basis: sass.fn-naming-var("cell", "basis");
|
|
16
|
-
$cell-order: sass.fn-naming-var("cell", "order");
|
|
17
|
-
|
|
18
|
-
.#{$cell} {
|
|
19
|
-
display: grid;
|
|
20
|
-
box-sizing: border-box;
|
|
21
|
-
min-width: 0;
|
|
22
|
-
grid-column: #{$cell-column};
|
|
23
|
-
grid-row: #{$cell-row};
|
|
24
|
-
justify-self: #{$cell-justify};
|
|
25
|
-
align-self: #{$cell-align};
|
|
26
|
-
flex-grow: #{$cell-grow};
|
|
27
|
-
flex-shrink: #{$cell-shrink};
|
|
28
|
-
flex-basis: #{$cell-basis};
|
|
29
|
-
order: #{$cell-order};
|
|
30
|
-
|
|
31
|
-
$bp-names: map.keys(sass.$breakpoints);
|
|
32
|
-
$bp-count: list.length($bp-names);
|
|
33
|
-
|
|
34
|
-
@for $i from 1 through $bp-count {
|
|
35
|
-
$bp-name: list.nth($bp-names, $i);
|
|
36
|
-
$bp-min: map.get(sass.$breakpoints, $bp-name);
|
|
37
|
-
|
|
38
|
-
@media (min-width: $bp-min) {
|
|
39
|
-
grid-column: #{sass.fn-naming-cascade-dvar(("cell", "column"), $bp-names, $i, $cell-column)};
|
|
40
|
-
grid-row: #{sass.fn-naming-cascade-dvar(("cell", "row"), $bp-names, $i, $cell-row)};
|
|
41
|
-
justify-self: #{sass.fn-naming-cascade-dvar(
|
|
42
|
-
("cell", "justify"),
|
|
43
|
-
$bp-names,
|
|
44
|
-
$i,
|
|
45
|
-
$cell-justify
|
|
46
|
-
)};
|
|
47
|
-
align-self: #{sass.fn-naming-cascade-dvar(("cell", "align"), $bp-names, $i, $cell-align)};
|
|
48
|
-
flex-grow: #{sass.fn-naming-cascade-dvar(("cell", "grow"), $bp-names, $i, $cell-grow)};
|
|
49
|
-
flex-shrink: #{sass.fn-naming-cascade-dvar(("cell", "shrink"), $bp-names, $i, $cell-shrink)};
|
|
50
|
-
flex-basis: #{sass.fn-naming-cascade-dvar(("cell", "basis"), $bp-names, $i, $cell-basis)};
|
|
51
|
-
order: #{sass.fn-naming-cascade-dvar(("cell", "order"), $bp-names, $i, $cell-order)};
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export type CellJustify = "start" | "end" | "center" | "stretch";
|
|
2
|
-
export type CellAlign = "start" | "end" | "center" | "stretch";
|
|
3
|
-
|
|
4
|
-
export type CellOption = {
|
|
5
|
-
breakpoint?: string;
|
|
6
|
-
row?: number;
|
|
7
|
-
column?: number;
|
|
8
|
-
justify?: CellJustify;
|
|
9
|
-
align?: CellAlign;
|
|
10
|
-
grow?: number;
|
|
11
|
-
shrink?: number;
|
|
12
|
-
basis?: string;
|
|
13
|
-
order?: number;
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
// Type definitions
|
|
17
|
-
export type CellProps = {
|
|
18
|
-
options?: CellOption[];
|
|
19
|
-
};
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
<style lang="scss" src="./cell.scss" scoped></style>
|
|
2
|
-
<template src="./cell.html"></template>
|
|
3
|
-
<script lang="ts" setup>
|
|
4
|
-
import { computed } from "vue";
|
|
5
|
-
import { withPrefix, property } from "../../../utils";
|
|
6
|
-
import type { CellProps } from "./cell.type";
|
|
7
|
-
|
|
8
|
-
// Component setup (props, emits, injects)
|
|
9
|
-
// ----------------------------------------------------------------------------
|
|
10
|
-
const props = withDefaults(defineProps<CellProps>(), {
|
|
11
|
-
options: () => [],
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
// Computed properties
|
|
15
|
-
// ----------------------------------------------------------------------------
|
|
16
|
-
const cellAttrs = computed(() => {
|
|
17
|
-
const style = props.options.map((option) => {
|
|
18
|
-
return {
|
|
19
|
-
[property(["cell", "row", option?.breakpoint || ""])]: option.row,
|
|
20
|
-
[property(["cell", "column", option?.breakpoint || ""])]: option.column,
|
|
21
|
-
[property(["cell", "justify", option?.breakpoint || ""])]: option.justify,
|
|
22
|
-
[property(["cell", "align", option?.breakpoint || ""])]: option.align,
|
|
23
|
-
[property(["cell", "flex-grow", option?.breakpoint || ""])]: option.grow,
|
|
24
|
-
[property(["cell", "flex-shrink", option?.breakpoint || ""])]: option.shrink,
|
|
25
|
-
[property(["cell", "flex-basis", option?.breakpoint || ""])]: option.basis,
|
|
26
|
-
[property(["cell", "order", option?.breakpoint || ""])]: option.order,
|
|
27
|
-
};
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
return {
|
|
31
|
-
class: [withPrefix("cell")],
|
|
32
|
-
style,
|
|
33
|
-
};
|
|
34
|
-
});
|
|
35
|
-
</script>
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
# `<t-grid>`
|
|
2
|
-
|
|
3
|
-
> Default prefix is `t-` — change via `createToife({ prefix: "..." })`.
|
|
4
|
-
|
|
5
|
-
## Description
|
|
6
|
-
|
|
7
|
-
CSS Grid wrapper with theme-based default gap. Use with `<t-grid-item>` for placement.
|
|
8
|
-
|
|
9
|
-
## Requirements / dependencies
|
|
10
|
-
|
|
11
|
-
| Item | Notes |
|
|
12
|
-
| ------------------- | ------------------------------- |
|
|
13
|
-
| Vue | ^3.5 |
|
|
14
|
-
| `@toife/sass-layer` | Theme tokens for default `gap`. |
|
|
15
|
-
|
|
16
|
-
## Basic usage
|
|
17
|
-
|
|
18
|
-
```vue
|
|
19
|
-
<t-grid :columns="3">
|
|
20
|
-
<t-grid-item>One</t-grid-item>
|
|
21
|
-
<t-grid-item>Two</t-grid-item>
|
|
22
|
-
<t-grid-item>Three</t-grid-item>
|
|
23
|
-
</t-grid>
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## Props
|
|
27
|
-
|
|
28
|
-
| Prop | Type | Default | Description |
|
|
29
|
-
| ---------------- | ------------------ | ------- | --------------------------------------------------------------- |
|
|
30
|
-
| `columns` | `number \| string` | `1` | Column count (`repeat(n, 1fr)`) or raw `grid-template-columns`. |
|
|
31
|
-
| `rows` | `number \| string` | — | `grid-template-rows`. |
|
|
32
|
-
| `gap` | `string` | — | Sets `gap` (overrides SCSS default when non-empty). |
|
|
33
|
-
| `columnGap` | `string` | — | `column-gap`. |
|
|
34
|
-
| `rowGap` | `string` | — | `row-gap`. |
|
|
35
|
-
| `alignItems` | `string` | — | `align-items`. |
|
|
36
|
-
| `justifyItems` | `string` | — | `justify-items`. |
|
|
37
|
-
| `alignContent` | `string` | — | `align-content`. |
|
|
38
|
-
| `justifyContent` | `string` | — | `justify-content`. |
|
|
39
|
-
| `autoFlow` | `string` | — | `grid-auto-flow`. |
|
|
40
|
-
|
|
41
|
-
## Slots
|
|
42
|
-
|
|
43
|
-
| Slot | Description |
|
|
44
|
-
| --------- | ----------- |
|
|
45
|
-
| `default` | Grid cells. |
|
|
46
|
-
|
|
47
|
-
## See also
|
|
48
|
-
|
|
49
|
-
- Source: `src/components/grid/grid`
|
|
50
|
-
- `<t-grid-item>`
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
# `<t-modal>`
|
|
2
|
-
|
|
3
|
-
> Default prefix is `t-` — change via `createToife({ prefix: "..." })`.
|
|
4
|
-
|
|
5
|
-
## Description
|
|
6
|
-
|
|
7
|
-
Modal content inside `Present`, integrated with `@toife/gesture` for swipe-to-dismiss along `placement` (except `center`). Optional fullscreen and gesture indicator.
|
|
8
|
-
|
|
9
|
-
## Requirements / dependencies
|
|
10
|
-
|
|
11
|
-
| Item | Notes |
|
|
12
|
-
| ----- | ------------------------------------ |
|
|
13
|
-
| Vue | ^3.5 |
|
|
14
|
-
| Other | `@toife/gesture`; `t-app` for theme. |
|
|
15
|
-
|
|
16
|
-
## Basic usage
|
|
17
|
-
|
|
18
|
-
```vue
|
|
19
|
-
<t-modal :visible="open" placement="bottom" @close="() => (open = false)">
|
|
20
|
-
<p>Content</p>
|
|
21
|
-
</t-modal>
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
## Props
|
|
25
|
-
|
|
26
|
-
| Prop | Type | Default | Description |
|
|
27
|
-
| ----------------- | -------------------------------------- | ----------- | -------------------------------------------- |
|
|
28
|
-
| `visible` | `boolean` | `false` | Visibility. |
|
|
29
|
-
| `placement` | `PresentPlacement` | `"bottom"` | Position + gesture direction. |
|
|
30
|
-
| `backdrop` | `"display" \| "none" \| "transparent"` | `"display"` | Backdrop. |
|
|
31
|
-
| `keepalive` | `boolean` | `true` | Keep DOM when closed (`Present`). |
|
|
32
|
-
| `gesture` | `boolean` | `true` | Enable swipe to close. |
|
|
33
|
-
| `fullscreen` | `boolean` | `false` | Full-screen panel. |
|
|
34
|
-
| `indicator` | `boolean` | `true` | Show `GestureIndicator` (when not `center`). |
|
|
35
|
-
| `duration` | `number` | `200` | `Present` transition (ms). |
|
|
36
|
-
| `bounce` | `number \| string` | `0` | `Present` bounce. |
|
|
37
|
-
| `role` / `shape` | `string` | — | Theme. |
|
|
38
|
-
| `class` / `style` | `unknown` | — | Passed to `Present` / root. |
|
|
39
|
-
|
|
40
|
-
**Type source:** `src/components/modal/modal.type.ts`
|
|
41
|
-
|
|
42
|
-
## Events (emits)
|
|
43
|
-
|
|
44
|
-
| Event | Payload | Description |
|
|
45
|
-
| ------- | --------------- | ----------------------------------------------------- |
|
|
46
|
-
| `close` | `type?: string` | From `Present` or gesture (`backdrop`, `gesture`, …). |
|
|
47
|
-
|
|
48
|
-
## Slots
|
|
49
|
-
|
|
50
|
-
| Slot | Description |
|
|
51
|
-
| --------- | ----------- |
|
|
52
|
-
| `default` | Modal body. |
|
|
53
|
-
|
|
54
|
-
## Expose
|
|
55
|
-
|
|
56
|
-
Nothing public (internal refs to `Present` / gesture).
|
|
57
|
-
|
|
58
|
-
## Accessibility (a11y)
|
|
59
|
-
|
|
60
|
-
Add focus trap / `aria-modal` at the app layer if you need strict WCAG compliance.
|
|
61
|
-
|
|
62
|
-
## See also
|
|
63
|
-
|
|
64
|
-
- Source: `src/components/modal`
|
|
65
|
-
- [present.md](../../present/present.md)
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
# `<t-page>`
|
|
2
|
-
|
|
3
|
-
> Default prefix is `t-` — change via `createToife({ prefix: "..." })`.
|
|
4
|
-
|
|
5
|
-
## Description
|
|
6
|
-
|
|
7
|
-
Simple page wrapper with the themed `page` class.
|
|
8
|
-
|
|
9
|
-
## Requirements / dependencies
|
|
10
|
-
|
|
11
|
-
| Item | Notes |
|
|
12
|
-
| ----- | ----- |
|
|
13
|
-
| Vue | ^3.5 |
|
|
14
|
-
| Other | None. |
|
|
15
|
-
|
|
16
|
-
## Basic usage
|
|
17
|
-
|
|
18
|
-
```vue
|
|
19
|
-
<t-app>
|
|
20
|
-
<t-page>
|
|
21
|
-
<t-toolbar />
|
|
22
|
-
<t-container>Content</t-container>
|
|
23
|
-
</t-page>
|
|
24
|
-
</t-app>
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
## Props
|
|
28
|
-
|
|
29
|
-
_None._
|
|
30
|
-
|
|
31
|
-
## Slots
|
|
32
|
-
|
|
33
|
-
| Slot | Description |
|
|
34
|
-
| --------- | --------------- |
|
|
35
|
-
| `default` | Page structure. |
|
|
36
|
-
|
|
37
|
-
## See also
|
|
38
|
-
|
|
39
|
-
- Source: `src/components/page`
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
# `Present` _(named export; not in default `createToife`)_
|
|
2
|
-
|
|
3
|
-
> **Not** registered by `createToife()` — import: `import { Present } from "@toife/vue"` and register globally yourself if needed.
|
|
4
|
-
|
|
5
|
-
## Description
|
|
6
|
-
|
|
7
|
-
Overlay layer: backdrop + animated panel, stacking z-index via `usePresent`. Used internally by `Modal`, `Action`, `DecisionModal`.
|
|
8
|
-
|
|
9
|
-
## Requirements / dependencies
|
|
10
|
-
|
|
11
|
-
| Item | Notes |
|
|
12
|
-
| ----- | ----- |
|
|
13
|
-
| Vue | ^3.5 |
|
|
14
|
-
| Other | None. |
|
|
15
|
-
|
|
16
|
-
## Basic usage
|
|
17
|
-
|
|
18
|
-
```vue
|
|
19
|
-
<Present :visible="show" placement="bottom" backdrop="display" @close="onClose">
|
|
20
|
-
<div>Content</div>
|
|
21
|
-
</Present>
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
## Props
|
|
25
|
-
|
|
26
|
-
| Prop | Type | Default | Description |
|
|
27
|
-
| ----------------- | -------------------------------------- | ----------- | ----------------------------------- |
|
|
28
|
-
| `visible` | `boolean` | `false` | Open/close (with `duration` delay). |
|
|
29
|
-
| `backdrop` | `"display" \| "none" \| "transparent"` | `"display"` | Backdrop. |
|
|
30
|
-
| `placement` | `PresentPlacement` | `"bottom"` | Animation direction. |
|
|
31
|
-
| `keepalive` | `boolean` | `false` | Keep DOM when closed. |
|
|
32
|
-
| `duration` | `number` | `200` | ms. |
|
|
33
|
-
| `bounce` | `number \| string \| boolean` | `false` | Open bounce. |
|
|
34
|
-
| `class` / `style` | `unknown` | — | Panel. |
|
|
35
|
-
|
|
36
|
-
**Type source:** `src/components/present/present.type.ts`
|
|
37
|
-
|
|
38
|
-
## Events (emits)
|
|
39
|
-
|
|
40
|
-
| Event | Payload | Description |
|
|
41
|
-
| ------- | --------------- | ------------------------------------------- |
|
|
42
|
-
| `close` | `type?: string` | e.g. `'backdrop'` when backdrop is clicked. |
|
|
43
|
-
|
|
44
|
-
## Slots
|
|
45
|
-
|
|
46
|
-
| Slot | Description |
|
|
47
|
-
| --------- | -------------- |
|
|
48
|
-
| `default` | Panel content. |
|
|
49
|
-
|
|
50
|
-
## Expose (template ref)
|
|
51
|
-
|
|
52
|
-
| API | Description |
|
|
53
|
-
| -------------------------------- | ------------------------------------------------- |
|
|
54
|
-
| `render(options: RenderOptions)` | Update transition styles (translate, opacity, …). |
|
|
55
|
-
| `open()` / `close()` | Manual animation control. |
|
|
56
|
-
|
|
57
|
-
## See also
|
|
58
|
-
|
|
59
|
-
- Source: `src/components/present`
|
|
60
|
-
- `present.composable.ts` — `usePresent` (z-index stack)
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
# `<t-radio>`
|
|
2
|
-
|
|
3
|
-
> Default prefix is `t-` — change via `createToife({ prefix: "..." })`.
|
|
4
|
-
|
|
5
|
-
## Description
|
|
6
|
-
|
|
7
|
-
Single choice in a group — **must** be used inside `t-radio-group` so selection updates via inject.
|
|
8
|
-
|
|
9
|
-
## Requirements / dependencies
|
|
10
|
-
|
|
11
|
-
| Item | Notes |
|
|
12
|
-
| ----- | -------------------------------- |
|
|
13
|
-
| Vue | ^3.5 |
|
|
14
|
-
| Other | Parent `t-radio-group` required. |
|
|
15
|
-
|
|
16
|
-
## Basic usage
|
|
17
|
-
|
|
18
|
-
```vue
|
|
19
|
-
<t-radio-group v-model="x">
|
|
20
|
-
<t-radio value="1">One</t-radio>
|
|
21
|
-
</t-radio-group>
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
## Props
|
|
25
|
-
|
|
26
|
-
| Prop | Type | Default | Description |
|
|
27
|
-
| ---------- | ------------------ | ------------ | ------------------------- |
|
|
28
|
-
| `value` | `string \| number` | _(required)_ | Value when selected. |
|
|
29
|
-
| `role` | `string` | — | Overrides group/app role. |
|
|
30
|
-
| `variant` | `RadioVariant` | — | Overrides group variant. |
|
|
31
|
-
| `disabled` | `boolean` | `false` | Or from group. |
|
|
32
|
-
| `readonly` | `boolean` | `false` | Or from group. |
|
|
33
|
-
| `shadow` | `boolean` | — | Group/app default. |
|
|
34
|
-
|
|
35
|
-
**Type source:** `src/components/radio/radio/radio.type.ts`
|
|
36
|
-
|
|
37
|
-
## Events (emits)
|
|
38
|
-
|
|
39
|
-
_None_ — selection goes through the group’s `setValue`.
|
|
40
|
-
|
|
41
|
-
## Slots
|
|
42
|
-
|
|
43
|
-
| Slot | Description |
|
|
44
|
-
| --------- | ----------- |
|
|
45
|
-
| `default` | Label. |
|
|
46
|
-
|
|
47
|
-
## Accessibility (a11y)
|
|
48
|
-
|
|
49
|
-
`tabindex` 0/-1; Space/Enter selects. Consider `role="radiogroup"` on the container in your app if needed.
|
|
50
|
-
|
|
51
|
-
## See also
|
|
52
|
-
|
|
53
|
-
- Source: `src/components/radio/radio`
|