rei-kit 3.0.0 → 3.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/README.md CHANGED
@@ -56,9 +56,17 @@ users. There is no hex value inside a component, and a test fails if one
56
56
  appears. That is what lets a phone journal, a phone ledger and a wide
57
57
  course site share one kit and look nothing alike.
58
58
 
59
+ One component can leave the system without forking it: set the token on that
60
+ element. `[--radius-card:0px]` squares one card, `[--spacing:0.35rem]`
61
+ tightens one, `[--surface-shadow:var(--shadow-raised)]` lifts one. A class
62
+ cannot do this — `class="rounded-[2px]"` against the kit's `rounded-card`
63
+ silently renders at 16px, because two utilities of equal specificity are
64
+ resolved by Tailwind's output order rather than by you. The showcase
65
+ demonstrates both, including the one that does not work.
66
+
59
67
  ### 2. The smallest of six, measured, with the trade stated
60
68
 
61
- At ten components — a real screen — **31.3 KB against 104 to 195** for the
69
+ At ten components — a real screen — **31.7 KB against 104 to 195** for the
62
70
  five kits measured beside it. The gap is not the total, it is the slope:
63
71
  seven components past the first three cost this kit 5 KB and cost them 60 to
64
72
  125, because the stylesheet here is flat and theirs is inside the JavaScript.
@@ -157,7 +165,7 @@ app, and the case *least* favourable to this kit:
157
165
 
158
166
  | Kit | JS | CSS | Total |
159
167
  | -------------------- | ---------: | ----------: | ----------: |
160
- | **rei-kit 3.0.0** | **3.4 KB** | **23.1 KB** | **26.5 KB** |
168
+ | **rei-kit 3.2.0** | **3.6 KB** | **23.1 KB** | **26.8 KB** |
161
169
  | element-plus 2.14.6 | 27.3 KB | 6.0 KB | 33.3 KB |
162
170
  | naive-ui 2.45.3 | 51.2 KB | — | 51.2 KB |
163
171
  | primevue 5.0.1 | 53.6 KB | — | 53.6 KB |
@@ -169,7 +177,7 @@ a data table, a tooltip and a card. A screen rather than a demo:
169
177
 
170
178
  | Kit | JS | CSS | Total |
171
179
  | -------------------- | ---------: | ----------: | -----------: |
172
- | **rei-kit 3.0.0** | **8.4 KB** | **23.1 KB** | **31.4 KB** |
180
+ | **rei-kit 3.2.0** | **8.6 KB** | **23.1 KB** | **31.7 KB** |
173
181
  | element-plus 2.14.6 | 90.1 KB | 14.0 KB | 104.1 KB |
174
182
  | naive-ui 2.45.3 | 132.4 KB | — | 132.4 KB |
175
183
  | primevue 5.0.1 | 135.8 KB | — | 135.8 KB |
@@ -177,7 +185,7 @@ a data table, a tooltip and a card. A screen rather than a demo:
177
185
  | ant-design-vue 4.2.6 | 195.4 KB | — | 195.4 KB |
178
186
 
179
187
  **The slope is the point, not the total.** Seven more components cost this kit
180
- **5.0 KB**, because the stylesheet does not move and only the JavaScript grows.
188
+ **4.9 KB**, because the stylesheet does not move and only the JavaScript grows.
181
189
  The kits that put their styles in the JavaScript have no flat part at all, so
182
190
  the same seven cost them **60 to 125 KB**. A quarter smaller at three
183
191
  components; **3.3× smaller at ten**.
@@ -226,7 +234,7 @@ Each claim here is enforced by something that fails, not by a promise.
226
234
 
227
235
  ## Status
228
236
 
229
- **v3.0.0 — three consumers.**
237
+ **v3.2.0 — three consumers.**
230
238
 
231
239
  | | |
232
240
  | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
@@ -23,6 +23,8 @@
23
23
  type __VLS_Props = {
24
24
  /** Which slide, zero-based. */
25
25
  index: number;
26
+ /** How many slides there are, so the shell can say "3 of 5" and know when it
27
+ * is on the last one. */
26
28
  total: number;
27
29
  /** The dialog's accessible name. */
28
30
  dialogLabel: string;
@@ -9,20 +9,110 @@
9
9
  * `AuthShell` was thirty-seven lines with no difference at all between them,
10
10
  * the tab transition thirty-four. What differs between two phone apps is the
11
11
  * product; this is the part underneath it.
12
+ *
13
+ * @example
14
+ * ```vue
15
+ * <AuthForm
16
+ * v-model:remember="remember"
17
+ * mode="signUp"
18
+ * :labels="labels"
19
+ * :busy="busy"
20
+ * @submit="signUp"
21
+ * @google="signInWithGoogle"
22
+ * />
23
+ * ```
12
24
  */
13
25
  export { default as AuthForm } from './AuthForm.vue';
14
26
  export type { AuthFormLabels, AuthFormValues } from './auth-form';
15
- /** The frame every sign-in screen sits in. */
27
+ /**
28
+ * The frame every sign-in screen sits in.
29
+ *
30
+ * @example
31
+ * ```vue
32
+ * <AuthShell>
33
+ * <template #brand>My app</template>
34
+ *
35
+ * <AuthForm mode="signIn" :labels="labels" @submit="signIn" />
36
+ * </AuthShell>
37
+ * ```
38
+ */
16
39
  export { default as AuthShell } from './AuthShell.vue';
17
- /** The one action the app is built around, reachable from every screen. */
40
+ /**
41
+ * The one action the app is built around, reachable from every screen.
42
+ *
43
+ * @example
44
+ * ```vue
45
+ * <FabButton label="New entry" @click="create">+</FabButton>
46
+ * ```
47
+ */
18
48
  export { default as FabButton } from './FabButton.vue';
19
- /** Choosing the interface language, from a settings row. */
49
+ /**
50
+ * Choosing the interface language, from a settings row.
51
+ *
52
+ * @example
53
+ * ```vue
54
+ * <LocaleSheet
55
+ * v-model="locale"
56
+ * label="Language"
57
+ * system-label="Same as device"
58
+ * :options="[
59
+ * { value: 'en', label: 'English' },
60
+ * { value: 'tr', label: 'Türkçe' },
61
+ * ]"
62
+ * close-label="Close"
63
+ * />
64
+ * ```
65
+ */
20
66
  export { default as LocaleSheet } from './LocaleSheet.vue';
21
- /** A floating note that the connection has gone. */
67
+ /**
68
+ * A floating note that the connection has gone.
69
+ *
70
+ * @example
71
+ * ```vue
72
+ * <OfflineBanner label="You are offline. Changes will sync when you are back." />
73
+ * ```
74
+ */
22
75
  export { default as OfflineBanner } from './OfflineBanner.vue';
23
- /** The phone frame the whole app sits inside. */
76
+ /**
77
+ * The phone frame the whole app sits inside.
78
+ *
79
+ * @example
80
+ * ```vue
81
+ * <TabShell>
82
+ * <RouterView />
83
+ *
84
+ * <template #aside>
85
+ * <p>© 2026 My app</p>
86
+ * </template>
87
+ * </TabShell>
88
+ * ```
89
+ */
24
90
  export { default as TabShell } from './TabShell.vue';
25
- /** The frame an onboarding guide runs inside. */
91
+ /**
92
+ * The frame an onboarding guide runs inside.
93
+ *
94
+ * @example
95
+ * ```vue
96
+ * <TourShell
97
+ * v-model="open"
98
+ * :index="step"
99
+ * :total="3"
100
+ * dialog-label="Welcome tour"
101
+ * skip-label="Skip"
102
+ * back-label="Back"
103
+ * next-label="Next"
104
+ * last-label="Start"
105
+ * :step-label="(n) => `Step ${n}`"
106
+ * @next="step++"
107
+ * @back="step--"
108
+ * @dismiss="open = false"
109
+ * >
110
+ * <template #default="{ index }">
111
+ * <h2>Step {{ index + 1 }}</h2>
112
+ * </template>
113
+ * </TourShell>
114
+ * ```
115
+ */
26
116
  export { default as TourShell } from './TourShell.vue';
27
117
  export { createAuthGuard, createRouteAnnouncer, createTitleGuard } from './guards';
28
118
  export type { AuthGuardOptions } from './guards';
package/dist/app.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { a as BaseCheckbox_default, o as BaseSheet_default, r as horizontalStep, s as inertOutside, t as focusTarget } from "./focus-target-BtcoJdmz.js";
2
- import { _ as toRedirectPath, c as useToast, d as isThemePreference, g as safeRedirect, h as tapFeedback, i as BaseInput_default, l as useOnline, m as useTheme, r as GoogleButton_default, s as BaseAlert_default, t as announce } from "./use-announce-B_JGTXHZ.js";
2
+ import { _ as toRedirectPath, c as useToast, d as isThemePreference, g as safeRedirect, h as tapFeedback, i as BaseInput_default, l as useOnline, m as useTheme, r as GoogleButton_default, s as BaseAlert_default, t as announce } from "./use-announce-D8SKsiqn.js";
3
3
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BOaGB7Aw.js";
4
4
  import { t as BaseButton_default } from "./BaseButton-BD2HKB1L.js";
5
5
  import { t as SettingsRow_default } from "./SettingsRow-C6Spi7Np.js";
@@ -511,7 +511,7 @@ var TourShell_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
511
511
  })], 8, ["to"]);
512
512
  };
513
513
  }
514
- }), [["__scopeId", "data-v-8c293eec"]]);
514
+ }), [["__scopeId", "data-v-8daef303"]]);
515
515
  //#endregion
516
516
  //#region src/app/guards.ts
517
517
  /**