rei-kit 2.2.0 → 2.3.1

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
@@ -1,6 +1,6 @@
1
1
  # rei-kit
2
2
 
3
- **One kit. Every look.** 53 accessible components for Vue 3 and Tailwind 4.
3
+ **One kit. Every look.** 59 accessible components for Vue 3 and Tailwind 4.
4
4
  Change the **material** with one attribute and the **palette** with another —
5
5
  every component follows, and none of them knows your brand.
6
6
 
@@ -34,6 +34,7 @@ That line is the whole redesign. Three axes, each changed on its own:
34
34
  | **`rei-kit/web`** | Wide-site parts: dialogs, tabs, tooltips, pagination, breadcrumbs |
35
35
  | **`rei-kit/app`** | Phone-app parts: the shell, the tab transition, the sign-in form |
36
36
  | **`rei-kit/pwa`** | Installing and updating |
37
+ | **`rei-kit/motion`** | Numbers that count and roll, words that rotate and type, content that arrives |
37
38
  | **`rei-kit/supabase`** | An optional Supabase entry — auth errors, a remember-me client |
38
39
 
39
40
  Three apps run on it and no two resemble each other. Every component is typed,
@@ -86,7 +87,7 @@ styles included and Vue left out. Minified, gzip -9:
86
87
 
87
88
  | Kit | JS | CSS | Total |
88
89
  | -------------------- | ---------: | ----------: | ----------: |
89
- | **rei-kit 2.2.0** | **3.1 KB** | **14.5 KB** | **17.6 KB** |
90
+ | **rei-kit 2.3.1** | **3.1 KB** | **15.2 KB** | **18.4 KB** |
90
91
  | element-plus 2.14.6 | 27.3 KB | 6.0 KB | 33.3 KB |
91
92
  | naive-ui 2.45.3 | 51.2 KB | — | 51.2 KB |
92
93
  | primevue 5.0.1 | 53.6 KB | — | 53.6 KB |
@@ -111,7 +112,7 @@ Each claim here is enforced by something that fails, not by a promise.
111
112
 
112
113
  | Standard | How it is held |
113
114
  | ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
114
- | **Open for extension, closed for edits** | A new look is a token, a material or a palette — never an edit to a component. Materials and palettes restyle all 53 without touching one, and a test fails if a component holds a colour. |
115
+ | **Open for extension, closed for edits** | A new look is a token, a material or a palette — never an edit to a component. Materials and palettes restyle all 59 without touching one, and a test fails if a component holds a colour. |
115
116
  | **Single responsibility** | One part, one job. Label-and-error wiring lives in `FormField`, not in five inputs; taking the page behind a layer out of reach lives in one helper the modal, the sheet and the guide share. |
116
117
  | **Depend on roles, not values** | Components read `primary`, `surface`, `--shadow-card` — never a hex or a pixel shadow. An app's brand wins in both modes, tested. |
117
118
  | **WAI-ARIA Authoring Practices** | Menus, comboboxes, tabs, sliders, dialogs and accordions follow their APG pattern: arrows move, Tab leaves, Escape closes, focus returns. Behaviour tests drive each with the keyboard. |
@@ -123,11 +124,11 @@ Each claim here is enforced by something that fails, not by a promise.
123
124
 
124
125
  ## Status
125
126
 
126
- **v2.2.0 — three consumers.**
127
+ **v2.3.1 — three consumers.**
127
128
 
128
129
  | | |
129
130
  | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
130
- | Components | 53 (`AuthForm`, `BaseTable`, `BaseCombobox`, `BaseSlider`, `TabShell`, `BaseModal`, `BaseTabs`, `BaseTooltip`, `BasePagination`, `BaseBreadcrumb`, `BaseDisclosure`, `BaseAccordion`, `NavLinks`, `OfflineBanner`, `FabButton`, `BaseButton`, `BaseCard`, `BaseInput`, `BaseSelect`, `BaseTextarea`, `BaseCheckbox`, `BaseSwitch`, `BaseRadioGroup`, `BaseMenu`, `BaseAvatar`, `BaseSpinner`, `BaseAlert`, `BaseBadge`, `BaseSheet`, `ProgressBar`, `PriceCard`, `ToastHost`, `TabBar`, `GoogleButton`, `LocaleLinks`, `LocaleSheet`, `AuthShell`, `TourShell`, `InstallPrompt`, `UpdatePrompt`, `InstallSettings`, `SkeletonList`, `PageContainer`, `ErrorBoundary`, etc.) |
131
+ | Components | 59 (`AuthForm`, `BaseTable`, `BaseCombobox`, `BaseSlider`, `TabShell`, `BaseModal`, `BaseTabs`, `BaseTooltip`, `BasePagination`, `BaseBreadcrumb`, `BaseDisclosure`, `BaseAccordion`, `NavLinks`, `OfflineBanner`, `FabButton`, `BaseButton`, `BaseCard`, `BaseInput`, `BaseSelect`, `BaseTextarea`, `BaseCheckbox`, `BaseSwitch`, `BaseRadioGroup`, `BaseMenu`, `BaseAvatar`, `BaseSpinner`, `BaseAlert`, `BaseBadge`, `BaseSheet`, `ProgressBar`, `PriceCard`, `ToastHost`, `TabBar`, `GoogleButton`, `LocaleLinks`, `LocaleSheet`, `AuthShell`, `TourShell`, `InstallPrompt`, `UpdatePrompt`, `InstallSettings`, `SkeletonList`, `PageContainer`, `ErrorBoundary`, etc.) |
131
132
  | Composables | 16 (`useToast`, `useTheme`, `useMaterial`, `usePalette`, `useToday`, `useMediaQuery`, `useInstall`, `watchInstallability`, `createTabTransition`, `useThemeSync`, `useVisualViewport`, etc.) |
132
133
  | Utilities | 33 (`applyTheme`, `applyMaterial`, `applyPalette`, `MATERIALS`, `PALETTES`, `formatDate`, `fieldErrors`, `toAuthMessageKey`, `createAuthGuard`, `createQueryDefaults`, `createWriteReport`, `toRedirectPath`, `Supabase error mapper`, i18n runtime, etc.) |
133
134
  | Entry Points | `rei-kit`, `rei-kit/app`, `rei-kit/web`, `rei-kit/pwa`, `rei-kit/supabase`, `rei-kit/mobile.css`, `rei-kit/web.css`, and each stylesheet on its own |
@@ -139,10 +140,72 @@ the package's promise written down.
139
140
 
140
141
  ## Install
141
142
 
143
+ rei-kit is the third thing you install, after a Vue app and Tailwind CSS.
144
+ From an empty folder:
145
+
146
+ **1. A Vue app** — skip this if you have one. `vue-ts` for TypeScript, `vue`
147
+ for JavaScript.
148
+
142
149
  ```sh
143
- pnpm add rei-kit
150
+ pnpm create vite my-app --template vue-ts
151
+ ```
152
+
153
+ **2. Tailwind CSS 4**, with its Vite plugin:
154
+
155
+ ```sh
156
+ pnpm add -D tailwindcss @tailwindcss/vite
157
+ ```
158
+
159
+ ```ts
160
+ // vite.config.ts
161
+ import { defineConfig } from 'vite'
162
+ import vue from '@vitejs/plugin-vue'
163
+ import tailwindcss from '@tailwindcss/vite'
164
+
165
+ export default defineConfig({
166
+ plugins: [vue(), tailwindcss()],
167
+ })
168
+ ```
169
+
170
+ **3. rei-kit**, with the icon set a few components draw with:
171
+
172
+ ```sh
173
+ pnpm add rei-kit lucide-vue-next
174
+ ```
175
+
176
+ **4. The styles** — replace your stylesheet's contents with two lines (more
177
+ under [Wiring the styles](#wiring-the-styles)):
178
+
179
+ ```css
180
+ @import 'tailwindcss';
181
+ @import 'rei-kit/mobile.css'; /* or rei-kit/web.css for a site */
182
+ ```
183
+
184
+ **5. A component:**
185
+
186
+ ```vue
187
+ <script setup lang="ts">
188
+ import { BaseButton, useToast, ToastHost } from 'rei-kit'
189
+
190
+ const toast = useToast()
191
+ </script>
192
+
193
+ <template>
194
+ <BaseButton @click="toast.success('Saved')">Save</BaseButton>
195
+ <ToastHost close-label="Close" />
196
+ </template>
144
197
  ```
145
198
 
199
+ **TypeScript or JavaScript.** The package ships its own declarations, so
200
+ TypeScript gets autocomplete and checking with no `@types` package, and every
201
+ prop's type shows in the editor. In JavaScript the same code works — drop
202
+ `lang="ts"`. [Every component has a copyable sample in both](https://ramazandogna.github.io/rei-kit/#api).
203
+
204
+ **Runs on** Vue 3.5+, Tailwind CSS 4, Vite 5.2+ (or any bundler Tailwind 4
205
+ supports), and the browsers Tailwind 4 targets: Safari 16.4+, Chrome 111+,
206
+ Firefox 128+. Server rendering and prerendering work — nothing touches the
207
+ browser on import.
208
+
146
209
  Everything the kit expects from the app is a peer dependency, so the app's copy
147
210
  is the only copy:
148
211
 
@@ -297,6 +360,39 @@ way in; each got the smallest nudge that clears the line.
297
360
  Palettes are generated from `src/palettes/palettes.source.json` by
298
361
  `pnpm palettes`; a test asserts the shipped CSS matches the source.
299
362
 
363
+ ### Motion
364
+
365
+ `rei-kit/motion` is for the parts of a page that move on purpose:
366
+
367
+ ```vue
368
+ <script setup lang="ts">
369
+ import { CountUp, NumberTicker, TextRotate } from 'rei-kit/motion'
370
+ </script>
371
+
372
+ <template>
373
+ <NumberTicker :value="balance" :format="{ style: 'currency', currency: 'TRY' }" />
374
+ <CountUp :value="12480" />
375
+ <h1>Build it <TextRotate :words="['glass', 'brutal', 'soft']" /></h1>
376
+ </template>
377
+ ```
378
+
379
+ | Component | What it does |
380
+ | -------------- | --------------------------------------------------------------- |
381
+ | `NumberTicker` | Rolls each digit into place, like an odometer or a note counter |
382
+ | `CountUp` | Counts through every value once it scrolls into view |
383
+ | `TextRotate` | One word in a sentence that changes on its own |
384
+ | `TypeWriter` | Types a line out, and deletes it for the next |
385
+ | `BaseReveal` | Fades or rises into view on scroll; staggers with `:delay` |
386
+ | `BaseMarquee` | An endless sideways row — logos, testimonials |
387
+
388
+ The presets also bring `animate-float`, `animate-pulse-soft`, `animate-glow`,
389
+ `animate-wiggle`, `animate-pop` and `text-shimmer`.
390
+
391
+ Every one of them renders its finished state on a server and for anyone who
392
+ has asked their system for less motion, reads only the final value to a
393
+ screen reader, and stops while hovered if it moves on its own. Six
394
+ components together add under 2 KB gzip.
395
+
300
396
  ### Colours
301
397
 
302
398
  `tokens.css` defines all eleven roles, the five `on-*` colours that sit on a
@@ -453,6 +549,12 @@ git push --follow-tags
453
549
  Then write the release into `PATCHNOTES.md` — what a consumer gains, and what
454
550
  they have to do to take it.
455
551
 
552
+ ## Author
553
+
554
+ Made by **Ramazan Doğan** — [github.com/ramazandogna](https://github.com/ramazandogna),
555
+ doganrmzn40 [ at ] gmail.com. Issues and ideas are welcome on
556
+ [GitHub](https://github.com/ramazandogna/rei-kit/issues).
557
+
456
558
  ## License
457
559
 
458
560
  MIT
@@ -0,0 +1,80 @@
1
+ import { ref } from "vue";
2
+ //#region src/utils/format.ts
3
+ /**
4
+ * The locale `Intl` formatting uses.
5
+ *
6
+ * Held here rather than imported from an i18n runtime so the utilities have no
7
+ * i18n dependency at all: an app that never installs vue-i18n still gets dates
8
+ * in the right language. `createI18nRuntime` sets this when it is used.
9
+ */
10
+ var locale = ref(typeof navigator === "undefined" ? "en" : navigator.language ?? "en");
11
+ /**
12
+ * Points every formatter at a new locale.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * setFormatLocale('tr-TR')
17
+ * ```
18
+ */
19
+ function setFormatLocale(next) {
20
+ locale.value = next;
21
+ }
22
+ /**
23
+ * `Intl.DateTimeFormat` is expensive to construct, so instances are cached per
24
+ * locale and option set. The key includes the locale, which is what lets the
25
+ * cache survive a language change instead of returning stale formatters.
26
+ */
27
+ var cache = /* @__PURE__ */ new Map();
28
+ /**
29
+ * Formats a date in the active locale.
30
+ *
31
+ * Reading the locale ref here is deliberate: called from a `computed`, the
32
+ * result re-evaluates when the language changes.
33
+ *
34
+ * @param date - Date to format.
35
+ * @param options - Passed straight to `Intl.DateTimeFormat`.
36
+ *
37
+ * @example
38
+ * ```ts
39
+ * formatDate(new Date(), { weekday: 'narrow' }) // 'T'
40
+ * ```
41
+ */
42
+ function formatDate(date, options) {
43
+ const tag = locale.value;
44
+ const key = `${tag}:${JSON.stringify(options)}`;
45
+ let formatter = cache.get(key);
46
+ if (!formatter) {
47
+ formatter = new Intl.DateTimeFormat(tag, options);
48
+ cache.set(key, formatter);
49
+ }
50
+ return formatter.format(date);
51
+ }
52
+ var numberCache = /* @__PURE__ */ new Map();
53
+ /**
54
+ * Formats a number in the active locale, or in `tag` when one is given.
55
+ *
56
+ * The same cache and the same locale as `formatDate`, so a counter and the
57
+ * date beside it change language together.
58
+ *
59
+ * @param value - Number to format.
60
+ * @param options - Passed straight to `Intl.NumberFormat`: currency, percent, decimals.
61
+ * @param tag - A BCP 47 tag that overrides the active locale for this call.
62
+ *
63
+ * @example
64
+ * ```ts
65
+ * formatNumber(48200, { style: 'currency', currency: 'JPY' }) // '¥48,200'
66
+ * ```
67
+ */
68
+ function formatNumber(value, options = {}, tag = locale.value) {
69
+ const key = `${tag}:${JSON.stringify(options)}`;
70
+ let formatter = numberCache.get(key);
71
+ if (!formatter) {
72
+ formatter = new Intl.NumberFormat(tag, options);
73
+ numberCache.set(key, formatter);
74
+ }
75
+ return formatter.format(value);
76
+ }
77
+ //#endregion
78
+ export { formatNumber as n, setFormatLocale as r, formatDate as t };
79
+
80
+ //# sourceMappingURL=format-BEvBK1SJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-BEvBK1SJ.js","names":[],"sources":["../src/utils/format.ts"],"sourcesContent":["import { ref } from 'vue'\n\n/**\n * The locale `Intl` formatting uses.\n *\n * Held here rather than imported from an i18n runtime so the utilities have no\n * i18n dependency at all: an app that never installs vue-i18n still gets dates\n * in the right language. `createI18nRuntime` sets this when it is used.\n */\nconst locale = ref<string>(typeof navigator === 'undefined' ? 'en' : (navigator.language ?? 'en'))\n\n/**\n * Points every formatter at a new locale.\n *\n * @example\n * ```ts\n * setFormatLocale('tr-TR')\n * ```\n */\nexport function setFormatLocale(next: string): void {\n locale.value = next\n}\n\n/**\n * `Intl.DateTimeFormat` is expensive to construct, so instances are cached per\n * locale and option set. The key includes the locale, which is what lets the\n * cache survive a language change instead of returning stale formatters.\n */\nconst cache = new Map<string, Intl.DateTimeFormat>()\n\n/**\n * Formats a date in the active locale.\n *\n * Reading the locale ref here is deliberate: called from a `computed`, the\n * result re-evaluates when the language changes.\n *\n * @param date - Date to format.\n * @param options - Passed straight to `Intl.DateTimeFormat`.\n *\n * @example\n * ```ts\n * formatDate(new Date(), { weekday: 'narrow' }) // 'T'\n * ```\n */\nexport function formatDate(date: Date, options: Intl.DateTimeFormatOptions): string {\n const tag = locale.value\n const key = `${tag}:${JSON.stringify(options)}`\n\n let formatter = cache.get(key)\n if (!formatter) {\n formatter = new Intl.DateTimeFormat(tag, options)\n cache.set(key, formatter)\n }\n\n return formatter.format(date)\n}\n\nconst numberCache = new Map<string, Intl.NumberFormat>()\n\n/**\n * Formats a number in the active locale, or in `tag` when one is given.\n *\n * The same cache and the same locale as `formatDate`, so a counter and the\n * date beside it change language together.\n *\n * @param value - Number to format.\n * @param options - Passed straight to `Intl.NumberFormat`: currency, percent, decimals.\n * @param tag - A BCP 47 tag that overrides the active locale for this call.\n *\n * @example\n * ```ts\n * formatNumber(48200, { style: 'currency', currency: 'JPY' }) // '¥48,200'\n * ```\n */\nexport function formatNumber(\n value: number,\n options: Intl.NumberFormatOptions = {},\n tag: string = locale.value,\n): string {\n const key = `${tag}:${JSON.stringify(options)}`\n\n let formatter = numberCache.get(key)\n if (!formatter) {\n formatter = new Intl.NumberFormat(tag, options)\n numberCache.set(key, formatter)\n }\n\n return formatter.format(value)\n}\n"],"mappings":";;;;;;;;;AASA,IAAM,SAAS,IAAY,OAAO,cAAc,cAAc,OAAQ,UAAU,YAAY,IAAK;;;;;;;;;AAUjG,SAAgB,gBAAgB,MAAoB;CAClD,OAAO,QAAQ;AACjB;;;;;;AAOA,IAAM,wBAAQ,IAAI,IAAiC;;;;;;;;;;;;;;;AAgBnD,SAAgB,WAAW,MAAY,SAA6C;CAClF,MAAM,MAAM,OAAO;CACnB,MAAM,MAAM,GAAG,IAAI,GAAG,KAAK,UAAU,OAAO;CAE5C,IAAI,YAAY,MAAM,IAAI,GAAG;CAC7B,IAAI,CAAC,WAAW;EACd,YAAY,IAAI,KAAK,eAAe,KAAK,OAAO;EAChD,MAAM,IAAI,KAAK,SAAS;CAC1B;CAEA,OAAO,UAAU,OAAO,IAAI;AAC9B;AAEA,IAAM,8BAAc,IAAI,IAA+B;;;;;;;;;;;;;;;;AAiBvD,SAAgB,aACd,OACA,UAAoC,CAAC,GACrC,MAAc,OAAO,OACb;CACR,MAAM,MAAM,GAAG,IAAI,GAAG,KAAK,UAAU,OAAO;CAE5C,IAAI,YAAY,YAAY,IAAI,GAAG;CACnC,IAAI,CAAC,WAAW;EACd,YAAY,IAAI,KAAK,aAAa,KAAK,OAAO;EAC9C,YAAY,IAAI,KAAK,SAAS;CAChC;CAEA,OAAO,UAAU,OAAO,KAAK;AAC/B"}
package/dist/index.d.ts CHANGED
@@ -22,7 +22,7 @@
22
22
  export declare const VERSION: string;
23
23
  export { addDays, eachDayOfYear, fromDateKey, lastNDays, leadingBlanks, startOfWeek, toDateKey, todayKey, } from './utils/date';
24
24
  export type { WeekStart } from './utils/date';
25
- export { formatDate, setFormatLocale } from './utils/format';
25
+ export { formatDate, formatNumber, setFormatLocale } from './utils/format';
26
26
  export { relativeDayLabel } from './utils/day-label';
27
27
  export type { DayLabels } from './utils/day-label';
28
28
  export { downloadJson } from './utils/download';
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { a as addDays, c as lastNDays, d as toDateKey, f as todayKey, i as needsIosInstall, l as leadingBlanks, n as isApplePortable, o as eachDayOfYear, r as isInstalled, s as fromDateKey, t as SettingsGroup_default, u as startOfWeek } from "./SettingsGroup-BXkajKGl.js";
2
+ import { n as formatNumber, r as setFormatLocale, t as formatDate } from "./format-BEvBK1SJ.js";
2
3
  import { _ as toRedirectPath, a as FormField_default, c as useVisualViewport, d as isThemePreference, f as readStoredTheme, g as safeRedirect, h as tapFeedback, i as BaseInput_default, l as useOnline, m as useTheme, n as BaseCheckbox_default, o as BaseAlert_default, p as setThemeStorageKey, r as BaseSheet_default, s as useToast, t as GoogleButton_default, u as applyTheme, v as SHEET_ROOT_ID, y as ensureSheetRoot } from "./GoogleButton-D82EoXSQ.js";
3
4
  import { n as registerErrorMapper, r as toAppError, t as AppError } from "./app-error-DF9cijE0.js";
4
5
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BOaGB7Aw.js";
@@ -7,57 +8,6 @@ import { Fragment, Teleport, TransitionGroup, computed, createBlock, createComme
7
8
  import { ArrowDown, ArrowRight, ArrowUp, CheckCircle2, ChevronDown, Info, TriangleAlert, X, XCircle } from "lucide-vue-next";
8
9
  import { RouterLink } from "vue-router";
9
10
  import { createI18n } from "vue-i18n";
10
- //#region src/utils/format.ts
11
- /**
12
- * The locale `Intl` formatting uses.
13
- *
14
- * Held here rather than imported from an i18n runtime so the utilities have no
15
- * i18n dependency at all: an app that never installs vue-i18n still gets dates
16
- * in the right language. `createI18nRuntime` sets this when it is used.
17
- */
18
- var locale = ref(typeof navigator === "undefined" ? "en" : navigator.language ?? "en");
19
- /**
20
- * Points every formatter at a new locale.
21
- *
22
- * @example
23
- * ```ts
24
- * setFormatLocale('tr-TR')
25
- * ```
26
- */
27
- function setFormatLocale(next) {
28
- locale.value = next;
29
- }
30
- /**
31
- * `Intl.DateTimeFormat` is expensive to construct, so instances are cached per
32
- * locale and option set. The key includes the locale, which is what lets the
33
- * cache survive a language change instead of returning stale formatters.
34
- */
35
- var cache = /* @__PURE__ */ new Map();
36
- /**
37
- * Formats a date in the active locale.
38
- *
39
- * Reading the locale ref here is deliberate: called from a `computed`, the
40
- * result re-evaluates when the language changes.
41
- *
42
- * @param date - Date to format.
43
- * @param options - Passed straight to `Intl.DateTimeFormat`.
44
- *
45
- * @example
46
- * ```ts
47
- * formatDate(new Date(), { weekday: 'narrow' }) // 'T'
48
- * ```
49
- */
50
- function formatDate(date, options) {
51
- const tag = locale.value;
52
- const key = `${tag}:${JSON.stringify(options)}`;
53
- let formatter = cache.get(key);
54
- if (!formatter) {
55
- formatter = new Intl.DateTimeFormat(tag, options);
56
- cache.set(key, formatter);
57
- }
58
- return formatter.format(date);
59
- }
60
- //#endregion
61
11
  //#region src/utils/day-label.ts
62
12
  /**
63
13
  * A short name for a day, relative to today.
@@ -2106,8 +2056,8 @@ function createI18nRuntime(options) {
2106
2056
  *
2107
2057
  * The fallback keeps `vitest` and `vite dev` honest, where no define runs.
2108
2058
  */
2109
- var VERSION = "2.2.0";
2059
+ var VERSION = "2.3.1";
2110
2060
  //#endregion
2111
- export { AppError, BaseAlert_default as BaseAlert, BaseAvatar_default as BaseAvatar, BaseBadge_default as BaseBadge, BaseButton_default as BaseButton, BaseCard_default as BaseCard, BaseCheckbox_default as BaseCheckbox, BaseCombobox_default as BaseCombobox, BaseInput_default as BaseInput, BaseMenu_default as BaseMenu, BaseRadioGroup_default as BaseRadioGroup, BaseSelect_default as BaseSelect, BaseSheet_default as BaseSheet, BaseSlider_default as BaseSlider, BaseSpinner_default as BaseSpinner, BaseSwitch_default as BaseSwitch, BaseTable_default as BaseTable, BaseTextarea_default as BaseTextarea, EmptyState_default as EmptyState, ErrorBoundary_default as ErrorBoundary, FormField_default as FormField, GoogleButton_default as GoogleButton, LocaleLinks_default as LocaleLinks, MATERIALS, PALETTES, PageContainer_default as PageContainer, PageHeader_default as PageHeader, PriceCard_default as PriceCard, ProgressBar_default as ProgressBar, SHEET_ROOT_ID, SectionHeading_default as SectionHeading, SegmentedControl_default as SegmentedControl, SettingsGroup_default as SettingsGroup, SettingsRow_default as SettingsRow, SkeletonList_default as SkeletonList, StatCard_default as StatCard, TabBar_default as TabBar, ToastHost_default as ToastHost, ToneDot_default as ToneDot, VERSION, addDays, applyMaterial, applyPalette, applyTheme, createI18nRuntime, downloadJson, eachDayOfYear, ensureSheetRoot, formatDate, fromDateKey, isApplePortable, isInstalled, isMaterial, isPaletteName, isThemePreference, lastNDays, leadingBlanks, needsIosInstall, readStoredTheme, registerErrorMapper, relativeDayLabel, safeRedirect, setFormatLocale, setMaterialStorageKey, setPaletteStorageKey, setThemeStorageKey, startOfWeek, tapFeedback, toAppError, toDateKey, toRedirectPath, todayKey, useDebouncedCallback, useDragScroll, useMaterial, useMediaQuery, useOnline, usePalette, useTheme, useToast, useToday, useVisualViewport };
2061
+ export { AppError, BaseAlert_default as BaseAlert, BaseAvatar_default as BaseAvatar, BaseBadge_default as BaseBadge, BaseButton_default as BaseButton, BaseCard_default as BaseCard, BaseCheckbox_default as BaseCheckbox, BaseCombobox_default as BaseCombobox, BaseInput_default as BaseInput, BaseMenu_default as BaseMenu, BaseRadioGroup_default as BaseRadioGroup, BaseSelect_default as BaseSelect, BaseSheet_default as BaseSheet, BaseSlider_default as BaseSlider, BaseSpinner_default as BaseSpinner, BaseSwitch_default as BaseSwitch, BaseTable_default as BaseTable, BaseTextarea_default as BaseTextarea, EmptyState_default as EmptyState, ErrorBoundary_default as ErrorBoundary, FormField_default as FormField, GoogleButton_default as GoogleButton, LocaleLinks_default as LocaleLinks, MATERIALS, PALETTES, PageContainer_default as PageContainer, PageHeader_default as PageHeader, PriceCard_default as PriceCard, ProgressBar_default as ProgressBar, SHEET_ROOT_ID, SectionHeading_default as SectionHeading, SegmentedControl_default as SegmentedControl, SettingsGroup_default as SettingsGroup, SettingsRow_default as SettingsRow, SkeletonList_default as SkeletonList, StatCard_default as StatCard, TabBar_default as TabBar, ToastHost_default as ToastHost, ToneDot_default as ToneDot, VERSION, addDays, applyMaterial, applyPalette, applyTheme, createI18nRuntime, downloadJson, eachDayOfYear, ensureSheetRoot, formatDate, formatNumber, fromDateKey, isApplePortable, isInstalled, isMaterial, isPaletteName, isThemePreference, lastNDays, leadingBlanks, needsIosInstall, readStoredTheme, registerErrorMapper, relativeDayLabel, safeRedirect, setFormatLocale, setMaterialStorageKey, setPaletteStorageKey, setThemeStorageKey, startOfWeek, tapFeedback, toAppError, toDateKey, toRedirectPath, todayKey, useDebouncedCallback, useDragScroll, useMaterial, useMediaQuery, useOnline, usePalette, useTheme, useToast, useToday, useVisualViewport };
2112
2062
 
2113
2063
  //# sourceMappingURL=index.js.map