@toife/vue 3.1.2 → 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 (112) hide show
  1. package/package.json +1 -1
  2. package/src/components/action/action.html +1 -1
  3. package/src/components/app/app.type.ts +6 -0
  4. package/src/components/app/app.vue +7 -1
  5. package/src/components/avatar/avatar.scss +3 -2
  6. package/src/components/button/button.scss +9 -6
  7. package/src/components/button/button.type.ts +3 -1
  8. package/src/components/card/card/card.scss +3 -1
  9. package/src/components/checkbox/checkbox.scss +9 -14
  10. package/src/components/checkbox/checkbox.type.ts +4 -0
  11. package/src/components/checkbox/checkbox.vue +2 -0
  12. package/src/components/decision-modal/decision-modal.scss +3 -1
  13. package/src/components/divider/divider.type.ts +2 -2
  14. package/src/components/divider/divider.vue +2 -2
  15. package/src/components/divider/index.ts +1 -1
  16. package/src/components/dropdown/dropdown.scss +5 -2
  17. package/src/components/dropdown/dropdown.type.ts +4 -1
  18. package/src/components/dropdown/dropdown.vue +4 -0
  19. package/src/components/field/field.type.ts +2 -2
  20. package/src/components/field/outline/outline.scss +9 -8
  21. package/src/components/form-group/form-group.type.ts +2 -2
  22. package/src/components/form-group/form-group.vue +2 -2
  23. package/src/components/gesture-indicator/gesture-indicator.scss +3 -1
  24. package/src/components/index.ts +1 -0
  25. package/src/components/layout/flex/flex.scss +0 -2
  26. package/src/components/layout/flex/flex.type.ts +3 -1
  27. package/src/components/layout/flex-item/flex-item.html +1 -0
  28. package/src/components/layout/flex-item/flex-item.scss +48 -0
  29. package/src/components/layout/flex-item/flex-item.type.ts +11 -0
  30. package/src/components/layout/flex-item/flex-item.vue +27 -0
  31. package/src/components/layout/flex-item/index.ts +2 -0
  32. package/src/components/layout/grid/grid.scss +0 -2
  33. package/src/components/layout/grid/grid.type.ts +1 -1
  34. package/src/components/layout/grid-item/grid-item.html +1 -0
  35. package/src/components/layout/grid-item/grid-item.scss +49 -0
  36. package/src/components/layout/grid-item/grid-item.type.ts +14 -0
  37. package/src/components/layout/grid-item/grid-item.vue +27 -0
  38. package/src/components/layout/grid-item/index.ts +2 -0
  39. package/src/components/layout/index.ts +2 -1
  40. package/src/components/modal/modal.scss +3 -1
  41. package/src/components/radio/radio/radio.scss +7 -5
  42. package/src/components/radio/radio/radio.type.ts +4 -0
  43. package/src/components/radio/radio/radio.vue +2 -0
  44. package/src/components/radio/radio-group/index.ts +1 -1
  45. package/src/components/radio/radio-group/radio-group.type.ts +2 -2
  46. package/src/components/radio/radio-group/radio-group.vue +2 -2
  47. package/src/components/refresher/refresher.html +4 -4
  48. package/src/components/refresher/refresher.scss +10 -4
  49. package/src/components/refresher/refresher.vue +3 -3
  50. package/src/components/skeleton/skeleton.scss +3 -1
  51. package/src/components/slide-range/index.ts +2 -0
  52. package/src/components/slide-range/slide-range.html +20 -0
  53. package/src/components/slide-range/slide-range.scss +161 -0
  54. package/src/components/slide-range/slide-range.type.ts +16 -0
  55. package/src/components/slide-range/slide-range.vue +229 -0
  56. package/src/components/switch/switch.scss +11 -22
  57. package/src/components/switch/switch.type.ts +5 -0
  58. package/src/components/switch/switch.vue +2 -0
  59. package/src/components/tabs/tabs/tabs.scss +135 -95
  60. package/src/components/tabs/tabs/tabs.type.ts +0 -1
  61. package/src/components/tabs/tabs/tabs.vue +6 -10
  62. package/src/components/toast/toast-content/toast-content.scss +3 -2
  63. package/src/components/toolbar/toolbar.html +1 -3
  64. package/src/components/toolbar/toolbar.scss +25 -40
  65. package/src/components/toolbar/toolbar.type.ts +2 -2
  66. package/src/components/toolbar/toolbar.vue +6 -6
  67. package/src/factory.ts +6 -2
  68. package/src/index.ts +1 -1
  69. package/src/components/action/action.md +0 -115
  70. package/src/components/app/app.md +0 -77
  71. package/src/components/avatar/avatar.md +0 -64
  72. package/src/components/button/button.md +0 -66
  73. package/src/components/cable/cable.md +0 -57
  74. package/src/components/card/card/card.md +0 -57
  75. package/src/components/card/card-body/card-body.md +0 -34
  76. package/src/components/card/card-footer/card-footer.md +0 -42
  77. package/src/components/card/card-header/card-header.md +0 -44
  78. package/src/components/checkbox/checkbox.md +0 -60
  79. package/src/components/collapse/collapse.md +0 -59
  80. package/src/components/container/container.md +0 -38
  81. package/src/components/decision-modal/decision-modal.md +0 -79
  82. package/src/components/divider/divider.md +0 -42
  83. package/src/components/field/field.md +0 -68
  84. package/src/components/field/outline/outline-field.md +0 -44
  85. package/src/components/form-group/form-group.md +0 -41
  86. package/src/components/gesture-indicator/gesture-indicator.md +0 -42
  87. package/src/components/image/image.md +0 -41
  88. package/src/components/layout/cell/cell.html +0 -1
  89. package/src/components/layout/cell/cell.md +0 -47
  90. package/src/components/layout/cell/cell.scss +0 -54
  91. package/src/components/layout/cell/cell.type.ts +0 -19
  92. package/src/components/layout/cell/cell.vue +0 -35
  93. package/src/components/layout/cell/index.ts +0 -2
  94. package/src/components/layout/grid/grid.md +0 -50
  95. package/src/components/modal/modal.md +0 -65
  96. package/src/components/page/page.md +0 -39
  97. package/src/components/present/present.md +0 -60
  98. package/src/components/radio/radio/radio.md +0 -53
  99. package/src/components/radio/radio-group/radio-group.md +0 -62
  100. package/src/components/refresher/refresher.md +0 -53
  101. package/src/components/route/route-navigator/route-navigator.md +0 -50
  102. package/src/components/route/route-outlet/route-outlet.md +0 -30
  103. package/src/components/route/route-provider/route-provider.md +0 -46
  104. package/src/components/route/route-wrapper/route-wrapper.md +0 -45
  105. package/src/components/segmented-field/segmented-field.md +0 -58
  106. package/src/components/skeleton/skeleton.md +0 -47
  107. package/src/components/switch/switch.md +0 -57
  108. package/src/components/tabs/tab/tab.md +0 -52
  109. package/src/components/tabs/tabs/tabs.md +0 -59
  110. package/src/components/toast/toast/toast.md +0 -56
  111. package/src/components/toast/toast-content/toast-content.md +0 -41
  112. package/src/components/toolbar/toolbar.md +0 -57
@@ -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`
@@ -1,62 +0,0 @@
1
- # `<t-radio-group>`
2
-
3
- > Default prefix is `t-` — change via `createToife({ prefix: "..." })`.
4
-
5
- ## Description
6
-
7
- Radio group with shared `v-model`; provides variant/readonly/disabled/shadow to child `t-radio` via provide/inject.
8
-
9
- ## Requirements / dependencies
10
-
11
- | Item | Notes |
12
- | ----- | ------------------------------------ |
13
- | Vue | ^3.5 |
14
- | Other | Wrap one or more `t-radio` children. |
15
-
16
- ## Basic usage
17
-
18
- ```vue
19
- <t-radio-group v-model="choice" orientation="vertical">
20
- <t-radio value="a">A</t-radio>
21
- <t-radio value="b">B</t-radio>
22
- </t-radio-group>
23
- ```
24
-
25
- ## Props
26
-
27
- | Prop | Type | Default | Description |
28
- | ------------- | ---------------------------- | ------------ | ------------------------------------- |
29
- | `modelValue` | `string \| number` | — | Selected value (`v-model`). |
30
- | `role` | `string` | — | Theme; default from app. |
31
- | `variant` | `RadioVariant` | `"fill"` | Default for radios unless overridden. |
32
- | `disabled` | `boolean` | `false` | Whole group. |
33
- | `readonly` | `boolean` | `false` | |
34
- | `shadow` | `boolean` | — | Default from app. |
35
- | `orientation` | `"horizontal" \| "vertical"` | `"vertical"` | Flex layout. |
36
-
37
- **Type source:** `src/components/radio/radio-group/radio-group.type.ts`
38
-
39
- ## Events (emits)
40
-
41
- | Event | Payload | Description |
42
- | ------------------- | ------------------ | ------------------------------- |
43
- | `update:modelValue` | `string \| number` | When a child radio is selected. |
44
-
45
- ## Slots
46
-
47
- | Slot | Description |
48
- | --------- | ------------------- |
49
- | `default` | `t-radio` children. |
50
-
51
- ## `v-model`
52
-
53
- `modelValue` / `update:modelValue`.
54
-
55
- ## Provide / inject
56
-
57
- `RADIO_GROUP_PROVIDER_STATE_KEY`: `modelValue`, `role`, `variant`, `disabled`, `readonly`, `shadow`, `setValue`.
58
-
59
- ## See also
60
-
61
- - Source: `src/components/radio/radio-group`
62
- - [radio.md](../radio/radio.md)
@@ -1,53 +0,0 @@
1
- # `<t-refresher>`
2
-
3
- > Default prefix is `t-` — change via `createToife({ prefix: "..." })`.
4
-
5
- ## Description
6
-
7
- Pull-to-refresh using `@toife/gesture` on the scroll container; two variants control when refresh fires (`max` vs `up`).
8
-
9
- ## Requirements / dependencies
10
-
11
- | Item | Notes |
12
- | ----- | ----------------- |
13
- | Vue | ^3.5 |
14
- | Other | `@toife/gesture`. |
15
-
16
- ## Basic usage
17
-
18
- ```vue
19
- <t-refresher variant="up" :threshold="120" @refresh="(done) => load().finally(done)">
20
- <template #icon="{ offset, refreshing }">…</template>
21
- <div class="scroll-area">…</div>
22
- </t-refresher>
23
- ```
24
-
25
- ## Props
26
-
27
- | Prop | Type | Default | Description |
28
- | ----------- | --------------- | ------- | ---------------------------------------------------------------------------------------- |
29
- | `threshold` | `number` | `120` | Pull threshold (px) depending on `variant`. |
30
- | `variant` | `"max" \| "up"` | `"max"` | `max`: fire during `move` when threshold reached; `up`: fire on `up` when threshold met. |
31
- | `offset` | `number` | — | Override displayed offset (default `moveOffset / 2`). |
32
-
33
- **Type source:** `src/components/refresher/refresher.type.ts`
34
-
35
- ## Events (emits)
36
-
37
- | Event | Payload | Description |
38
- | --------- | ------------------- | ------------------------------------------------- |
39
- | `refresh` | `close: () => void` | Call `close()` when refresh finishes to reset UI. |
40
- | `move` | `offset: number` | While pulling. |
41
- | `cancel` | — | Pull cancelled. |
42
- | `start` | — | Gesture started. |
43
-
44
- ## Slots
45
-
46
- | Slot | Slot props | Description |
47
- | --------- | ------------------------ | ----------------------------------------- |
48
- | `icon` | `{ offset, refreshing }` | Indicator above the scroll area. |
49
- | `default` | — | Scroll region (internal ref for gesture). |
50
-
51
- ## See also
52
-
53
- - Source: `src/components/refresher`
@@ -1,50 +0,0 @@
1
- # `<t-route-navigator>`
2
-
3
- > Default prefix is `t-` — change via `createToife({ prefix: "..." })`.
4
-
5
- ## Description
6
-
7
- Displays a stack of screens with transitions and optional edge swipe to `router.back()` when `variant="swipe"`. Listens to `stack` from `RouteProvider`.
8
-
9
- ## Requirements / dependencies
10
-
11
- | Item | Notes |
12
- | ------------ | ------------------------------------------------------------------------ |
13
- | Vue | ^3.5 |
14
- | `vue-router` | **Required** |
15
- | Other | `@toife/gesture`; `RouteProvider` ancestor (usually via `RouteWrapper`). |
16
-
17
- ## Basic usage
18
-
19
- ```vue
20
- <t-route-wrapper>
21
- <t-route-navigator variant="swipe" direction="right" />
22
- </t-route-wrapper>
23
- ```
24
-
25
- ## Props
26
-
27
- | Prop | Type | Default | Description |
28
- | ----------- | ------------------- | --------- | ----------------------------------------- |
29
- | `direction` | `"left" \| "right"` | `"right"` | Gesture / animation direction. |
30
- | `variant` | `"none" \| "swipe"` | `"none"` | Enables swipe navigation when not `none`. |
31
- | `keepalive` | `boolean` | `false` | Reserved for stack/DOM retention. |
32
-
33
- **Type source:** `src/components/route/route-navigator/route-navigator.type.ts`
34
-
35
- ## Events (emits)
36
-
37
- _None._
38
-
39
- ## Slots
40
-
41
- _None_ — fixed structure: stack loop → `RouteProvider` + `RouteOutlet`.
42
-
43
- ## Special behavior
44
-
45
- - Swipe along `direction`: preview transform; release past ~60% width → `goBack()`.
46
- - `fast` swipe calls `router.back()`.
47
-
48
- ## See also
49
-
50
- - Source: `src/components/route/route-navigator`
@@ -1,30 +0,0 @@
1
- # `<t-route-outlet>`
2
-
3
- > Default prefix is `t-` — change via `createToife({ prefix: "..." })`.
4
-
5
- ## Description
6
-
7
- Resolves and renders a route component (sync or async dynamic import).
8
-
9
- ## Requirements / dependencies
10
-
11
- | Item | Notes |
12
- | ----- | ------------------------------------------------------------- |
13
- | Vue | ^3.5 |
14
- | Other | Used inside `RouteNavigator` with `component` from the stack. |
15
-
16
- ## Props
17
-
18
- | Prop | Type | Description |
19
- | ----------- | --------- | ---------------------------------------------------------- |
20
- | `component` | `unknown` | Route component (may be `{ default: () => import(...) }`). |
21
-
22
- _(Inline type in `route-outlet.vue`.)_
23
-
24
- ## Slots
25
-
26
- _None_ — renders `<component :is="…">`.
27
-
28
- ## See also
29
-
30
- - Source: `src/components/route/route-outlet`
@@ -1,46 +0,0 @@
1
- # `<t-route-provider>`
2
-
3
- > Default prefix is `t-` — change via `createToife({ prefix: "..." })`.
4
-
5
- ## Description
6
-
7
- Provides `stack` (`RouteStack[]`) to `RouteNavigator` / children via inject.
8
-
9
- ## Requirements / dependencies
10
-
11
- | Item | Notes |
12
- | ----- | ------------------------------------------------------ |
13
- | Vue | ^3.5 |
14
- | Other | Usually created by `RouteWrapper` or `RouteNavigator`. |
15
-
16
- ## Basic usage
17
-
18
- ```vue
19
- <!-- Rarely used directly; RouteNavigator wraps children -->
20
- <t-route-provider :stack="myStack">
21
- <slot />
22
- </t-route-provider>
23
- ```
24
-
25
- ## Props
26
-
27
- | Prop | Type | Description |
28
- | ------- | -------------- | ---------------------------------- |
29
- | `stack` | `RouteStack[]` | Route stack (see `route.type.ts`). |
30
-
31
- **Type source:** `src/components/route/route-provider/route-provider.type.ts`
32
-
33
- ## Slots
34
-
35
- | Slot | Description |
36
- | --------- | ------------------------------------- |
37
- | `default` | Children (often outlet or navigator). |
38
-
39
- ## Provide / inject
40
-
41
- `ROUTE_PROVIDER_STATE_KEY` → `{ stack }` (computed).
42
-
43
- ## See also
44
-
45
- - Source: `src/components/route/route-provider`
46
- - `src/components/route/route.type.ts`
@@ -1,45 +0,0 @@
1
- # `<t-route-wrapper>`
2
-
3
- > Default prefix is `t-` — change via `createToife({ prefix: "..." })`.
4
-
5
- ## Description
6
-
7
- Syncs the route stack with `vue-router` and wraps content in `RouteProvider` — main entry for stack-based navigation (with `RouteNavigator`).
8
-
9
- ## Requirements / dependencies
10
-
11
- | Item | Notes |
12
- | ------------ | ---------------------------------------- |
13
- | Vue | ^3.5 |
14
- | `vue-router` | **Required** — `useRoute` / `useRouter`. |
15
-
16
- ## Basic usage
17
-
18
- ```vue
19
- <t-route-wrapper home-route-name="home">
20
- <t-route-navigator />
21
- </t-route-wrapper>
22
- ```
23
-
24
- ## Props
25
-
26
- | Prop | Type | Default | Description |
27
- | --------------- | -------- | -------- | ---------------------------------------------- |
28
- | `homeRouteName` | `string` | `"home"` | Name of the root route used to seed the stack. |
29
-
30
- **Type source:** `src/components/route/route-wrapper/route-wrapper.type.ts`
31
-
32
- ## Slots
33
-
34
- | Slot | Description |
35
- | --------- | ---------------------------------- |
36
- | `default` | Child tree (navigator, layout, …). |
37
-
38
- ## Provide / inject
39
-
40
- Renders `RouteProvider` with `stack` from `useRouteWrapper`.
41
-
42
- ## See also
43
-
44
- - Source: `src/components/route/route-wrapper`
45
- - [route-provider.md](../route-provider/route-provider.md), [route-navigator.md](../route-navigator/route-navigator.md)