@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.
Files changed (100) hide show
  1. package/package.json +1 -1
  2. package/src/components/app/app.type.ts +6 -0
  3. package/src/components/app/app.vue +7 -1
  4. package/src/components/avatar/avatar.scss +3 -2
  5. package/src/components/button/button.scss +9 -6
  6. package/src/components/button/button.type.ts +3 -1
  7. package/src/components/card/card/card.scss +3 -1
  8. package/src/components/checkbox/checkbox.scss +9 -14
  9. package/src/components/checkbox/checkbox.type.ts +4 -0
  10. package/src/components/checkbox/checkbox.vue +2 -0
  11. package/src/components/decision-modal/decision-modal.scss +3 -1
  12. package/src/components/dropdown/dropdown.scss +5 -2
  13. package/src/components/dropdown/dropdown.type.ts +4 -1
  14. package/src/components/dropdown/dropdown.vue +4 -0
  15. package/src/components/field/field.type.ts +2 -2
  16. package/src/components/field/outline/outline.scss +9 -8
  17. package/src/components/gesture-indicator/gesture-indicator.scss +3 -1
  18. package/src/components/index.ts +1 -0
  19. package/src/components/layout/flex/flex.scss +0 -2
  20. package/src/components/layout/flex-item/flex-item.html +1 -0
  21. package/src/components/layout/flex-item/flex-item.scss +48 -0
  22. package/src/components/layout/flex-item/flex-item.type.ts +11 -0
  23. package/src/components/layout/flex-item/flex-item.vue +27 -0
  24. package/src/components/layout/flex-item/index.ts +2 -0
  25. package/src/components/layout/grid/grid.scss +0 -2
  26. package/src/components/layout/grid-item/grid-item.html +1 -0
  27. package/src/components/layout/grid-item/grid-item.scss +49 -0
  28. package/src/components/layout/grid-item/grid-item.type.ts +14 -0
  29. package/src/components/layout/grid-item/grid-item.vue +27 -0
  30. package/src/components/layout/grid-item/index.ts +2 -0
  31. package/src/components/layout/index.ts +2 -1
  32. package/src/components/modal/modal.scss +3 -1
  33. package/src/components/radio/radio/radio.scss +7 -5
  34. package/src/components/radio/radio/radio.type.ts +4 -0
  35. package/src/components/radio/radio/radio.vue +2 -0
  36. package/src/components/refresher/refresher.html +4 -4
  37. package/src/components/refresher/refresher.scss +10 -4
  38. package/src/components/refresher/refresher.vue +3 -3
  39. package/src/components/skeleton/skeleton.scss +3 -1
  40. package/src/components/slide-range/index.ts +2 -0
  41. package/src/components/slide-range/slide-range.html +20 -0
  42. package/src/components/slide-range/slide-range.scss +161 -0
  43. package/src/components/slide-range/slide-range.type.ts +16 -0
  44. package/src/components/slide-range/slide-range.vue +229 -0
  45. package/src/components/switch/switch.scss +11 -22
  46. package/src/components/switch/switch.type.ts +5 -0
  47. package/src/components/switch/switch.vue +2 -0
  48. package/src/components/tabs/tabs/tabs.scss +135 -95
  49. package/src/components/tabs/tabs/tabs.type.ts +0 -1
  50. package/src/components/tabs/tabs/tabs.vue +6 -10
  51. package/src/components/toast/toast-content/toast-content.scss +3 -2
  52. package/src/components/toolbar/toolbar.scss +1 -1
  53. package/src/components/toolbar/toolbar.type.ts +1 -1
  54. package/src/components/toolbar/toolbar.vue +2 -2
  55. package/src/factory.ts +6 -2
  56. package/src/index.ts +1 -1
  57. package/src/components/action/action.md +0 -115
  58. package/src/components/app/app.md +0 -77
  59. package/src/components/avatar/avatar.md +0 -64
  60. package/src/components/button/button.md +0 -66
  61. package/src/components/cable/cable.md +0 -57
  62. package/src/components/card/card/card.md +0 -57
  63. package/src/components/card/card-body/card-body.md +0 -34
  64. package/src/components/card/card-footer/card-footer.md +0 -42
  65. package/src/components/card/card-header/card-header.md +0 -44
  66. package/src/components/checkbox/checkbox.md +0 -60
  67. package/src/components/collapse/collapse.md +0 -59
  68. package/src/components/container/container.md +0 -38
  69. package/src/components/decision-modal/decision-modal.md +0 -79
  70. package/src/components/divider/divider.md +0 -42
  71. package/src/components/field/field.md +0 -68
  72. package/src/components/field/outline/outline-field.md +0 -44
  73. package/src/components/form-group/form-group.md +0 -41
  74. package/src/components/gesture-indicator/gesture-indicator.md +0 -42
  75. package/src/components/image/image.md +0 -41
  76. package/src/components/layout/cell/cell.html +0 -1
  77. package/src/components/layout/cell/cell.md +0 -47
  78. package/src/components/layout/cell/cell.scss +0 -54
  79. package/src/components/layout/cell/cell.type.ts +0 -19
  80. package/src/components/layout/cell/cell.vue +0 -35
  81. package/src/components/layout/cell/index.ts +0 -2
  82. package/src/components/layout/grid/grid.md +0 -50
  83. package/src/components/modal/modal.md +0 -65
  84. package/src/components/page/page.md +0 -39
  85. package/src/components/present/present.md +0 -60
  86. package/src/components/radio/radio/radio.md +0 -53
  87. package/src/components/radio/radio-group/radio-group.md +0 -62
  88. package/src/components/refresher/refresher.md +0 -53
  89. package/src/components/route/route-navigator/route-navigator.md +0 -50
  90. package/src/components/route/route-outlet/route-outlet.md +0 -30
  91. package/src/components/route/route-provider/route-provider.md +0 -46
  92. package/src/components/route/route-wrapper/route-wrapper.md +0 -45
  93. package/src/components/segmented-field/segmented-field.md +0 -58
  94. package/src/components/skeleton/skeleton.md +0 -47
  95. package/src/components/switch/switch.md +0 -57
  96. package/src/components/tabs/tab/tab.md +0 -52
  97. package/src/components/tabs/tabs/tabs.md +0 -59
  98. package/src/components/toast/toast/toast.md +0 -56
  99. package/src/components/toast/toast-content/toast-content.md +0 -41
  100. 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,2 +0,0 @@
1
- export { default as Cell } from "./cell.vue";
2
- export * from "./cell.type";
@@ -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`