@krizaka/ui 3.1.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.
Files changed (135) hide show
  1. package/dist/achievement.js +1 -1
  2. package/dist/action-bar.js +1 -1
  3. package/dist/app-shell.js +1 -1
  4. package/dist/argument-card.js +2 -2
  5. package/dist/card-grid.js +1 -1
  6. package/dist/card.js +1 -1
  7. package/dist/choice-grid.js +1 -1
  8. package/dist/{chunk-OGJI5X4W.js → chunk-2PUDI7JS.js} +2 -2
  9. package/dist/chunk-4LOMIQVX.js +21 -0
  10. package/dist/chunk-4LOMIQVX.js.map +1 -0
  11. package/dist/{chunk-K3SWZXYT.js → chunk-DGQMDJXK.js} +2 -2
  12. package/dist/chunk-G3ETON2A.js +22 -0
  13. package/dist/chunk-G3ETON2A.js.map +1 -0
  14. package/dist/chunk-I5RVM5CW.js +27 -0
  15. package/dist/chunk-I5RVM5CW.js.map +1 -0
  16. package/dist/chunk-IZ7MV6HM.js +26 -0
  17. package/dist/chunk-IZ7MV6HM.js.map +1 -0
  18. package/dist/chunk-ZNMFG62E.js +20 -0
  19. package/dist/chunk-ZNMFG62E.js.map +1 -0
  20. package/dist/cn.d.ts +9 -1
  21. package/dist/cn.js +5 -3
  22. package/dist/code-block.js +1 -1
  23. package/dist/command.js +1 -1
  24. package/dist/confirm-button.js +1 -1
  25. package/dist/continue-prompt.js +1 -1
  26. package/dist/cta-panel.js +1 -1
  27. package/dist/data-table.js +2 -2
  28. package/dist/date-picker.d.ts +650 -61
  29. package/dist/date-picker.js +918 -122
  30. package/dist/date-picker.js.map +1 -1
  31. package/dist/decision-list.js +1 -1
  32. package/dist/dropdown-menu.js +1 -1
  33. package/dist/error-page.js +1 -1
  34. package/dist/field.js +1 -1
  35. package/dist/filter-bar.js +2 -2
  36. package/dist/form.js.map +1 -1
  37. package/dist/gallery-page.js +1 -1
  38. package/dist/glow-card.js +1 -1
  39. package/dist/goal-gauge.js +1 -1
  40. package/dist/how-it-works-page.js +1 -1
  41. package/dist/landscape.js +1 -1
  42. package/dist/link-card.js +1 -1
  43. package/dist/longform-page.js +1 -1
  44. package/dist/marquee.js +1 -1
  45. package/dist/mascot-quote.js +1 -1
  46. package/dist/motion.css +18 -1
  47. package/dist/native/form.js.map +1 -1
  48. package/dist/native.d.ts +239 -2
  49. package/dist/native.js +955 -379
  50. package/dist/native.js.map +1 -1
  51. package/dist/nav-bar.js +1 -1
  52. package/dist/page-hero.js +2 -2
  53. package/dist/page.js +2 -2
  54. package/dist/popover.js +1 -1
  55. package/dist/pricing-page.js +1 -1
  56. package/dist/product-page.js +1 -1
  57. package/dist/profile-card.js +1 -1
  58. package/dist/promise-card.js +1 -1
  59. package/dist/scroll-stage.js +1 -1
  60. package/dist/stage-banner.js +1 -1
  61. package/dist/terminal-replay.js +1 -1
  62. package/dist/toast.js +1 -1
  63. package/dist/toc.js +1 -1
  64. package/dist/tooltip.js +1 -1
  65. package/package.json +7 -7
  66. package/registry/cn.json +1 -1
  67. package/registry/date-picker.json +1721 -284
  68. package/registry/examples/date-picker/birth-date-wheel.d.ts +4 -0
  69. package/registry/examples/date-picker/birth-date-wheel.js +13 -0
  70. package/registry/examples/date-picker/birth-date-wheel.tsx +11 -0
  71. package/registry/examples/date-picker/birth-date.d.ts +4 -0
  72. package/registry/examples/date-picker/birth-date.js +25 -0
  73. package/registry/examples/date-picker/birth-date.tsx +21 -0
  74. package/registry/examples/date-picker/calendar.js +1 -1
  75. package/registry/examples/date-picker/calendar.tsx +2 -6
  76. package/registry/examples/date-picker/day-strip.d.ts +4 -0
  77. package/registry/examples/date-picker/day-strip.js +28 -0
  78. package/registry/examples/date-picker/day-strip.tsx +27 -0
  79. package/registry/examples/date-picker/month-year.d.ts +4 -0
  80. package/registry/examples/date-picker/month-year.js +13 -0
  81. package/registry/examples/date-picker/month-year.tsx +10 -0
  82. package/registry/examples/date-picker/native/birth-date-wheel.d.ts +4 -0
  83. package/registry/examples/date-picker/native/birth-date-wheel.dark.png +0 -0
  84. package/registry/examples/date-picker/native/birth-date-wheel.js +13 -0
  85. package/registry/examples/date-picker/native/birth-date-wheel.light.png +0 -0
  86. package/registry/examples/date-picker/native/birth-date-wheel.tsx +9 -0
  87. package/registry/examples/date-picker/native/calendar.d.ts +4 -0
  88. package/registry/examples/date-picker/native/calendar.dark.png +0 -0
  89. package/registry/examples/date-picker/native/calendar.js +13 -0
  90. package/registry/examples/date-picker/native/calendar.light.png +0 -0
  91. package/registry/examples/date-picker/native/calendar.tsx +8 -0
  92. package/registry/examples/date-picker/native/day-strip.d.ts +4 -0
  93. package/registry/examples/date-picker/native/day-strip.dark.png +0 -0
  94. package/registry/examples/date-picker/native/day-strip.js +29 -0
  95. package/registry/examples/date-picker/native/day-strip.light.png +0 -0
  96. package/registry/examples/date-picker/native/day-strip.tsx +26 -0
  97. package/registry/examples/date-picker/native/month-year.d.ts +4 -0
  98. package/registry/examples/date-picker/native/month-year.dark.png +0 -0
  99. package/registry/examples/date-picker/native/month-year.js +13 -0
  100. package/registry/examples/date-picker/native/month-year.light.png +0 -0
  101. package/registry/examples/date-picker/native/month-year.tsx +8 -0
  102. package/registry/examples/date-picker/native/time-slots.d.ts +4 -0
  103. package/registry/examples/date-picker/native/time-slots.dark.png +0 -0
  104. package/registry/examples/date-picker/native/time-slots.js +15 -0
  105. package/registry/examples/date-picker/native/time-slots.light.png +0 -0
  106. package/registry/examples/date-picker/native/time-slots.tsx +15 -0
  107. package/registry/examples/date-picker/native/time-wheel.d.ts +4 -0
  108. package/registry/examples/date-picker/native/time-wheel.dark.png +0 -0
  109. package/registry/examples/date-picker/native/time-wheel.js +13 -0
  110. package/registry/examples/date-picker/native/time-wheel.light.png +0 -0
  111. package/registry/examples/date-picker/native/time-wheel.tsx +8 -0
  112. package/registry/examples/date-picker/time-slots.d.ts +4 -0
  113. package/registry/examples/date-picker/time-slots.js +26 -0
  114. package/registry/examples/date-picker/time-slots.tsx +25 -0
  115. package/registry/examples/date-picker/time-wheel.d.ts +4 -0
  116. package/registry/examples/date-picker/time-wheel.js +13 -0
  117. package/registry/examples/date-picker/time-wheel.tsx +10 -0
  118. package/registry/examples/date-picker/wheel.d.ts +4 -0
  119. package/registry/examples/date-picker/wheel.js +14 -0
  120. package/registry/examples/date-picker/wheel.tsx +16 -0
  121. package/registry/index.json +6 -5
  122. package/registry/theme.json +7 -0
  123. package/skills/date-picker/SKILL.md +43 -0
  124. package/dist/chunk-2USC2YT6.js +0 -17
  125. package/dist/chunk-2USC2YT6.js.map +0 -1
  126. package/dist/chunk-5AXLA4LK.js +0 -13
  127. package/dist/chunk-5AXLA4LK.js.map +0 -1
  128. package/dist/chunk-FJDSLNXK.js +0 -11
  129. package/dist/chunk-FJDSLNXK.js.map +0 -1
  130. package/dist/chunk-KNBYZGSQ.js +0 -11
  131. package/dist/chunk-KNBYZGSQ.js.map +0 -1
  132. package/dist/chunk-VCAAHCHL.js +0 -17
  133. package/dist/chunk-VCAAHCHL.js.map +0 -1
  134. /package/dist/{chunk-OGJI5X4W.js.map → chunk-2PUDI7JS.js.map} +0 -0
  135. /package/dist/{chunk-K3SWZXYT.js.map → chunk-DGQMDJXK.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@krizaka/ui",
3
- "version": "3.1.0",
3
+ "version": "3.2.0",
4
4
  "items": [
5
5
  {
6
6
  "name": "achievement",
@@ -592,20 +592,21 @@
592
592
  "name": "date-picker",
593
593
  "type": "primitive",
594
594
  "title": "Date picker",
595
- "summary": "A date or a period chosen on a calendar — ISO values (`2026-10-11`) the form, the address and the API share, read in the locale's own words through @krizaka/intl.",
596
- "description": "A date or a period chosen on a calendar — ISO values (`2026-10-11`) the form, the address and the API share, read in the locale's own words through @krizaka/intl.",
595
+ "summary": "Dates and times chosen the way the task asks — a calendar, a period with presets, a strip of days, wheels, time slots, a month, a date of birth — as ISO values (`2026-10-11`, `2026-10`, `18:30`) the form, the address and the API share, in the locale's own words.",
596
+ "description": "Dates and times chosen the way the task asks — a calendar, a period with presets, a strip of days, wheels, time slots, a month, a date of birth — as ISO values (`2026-10-11`, `2026-10`, `18:30`) the form, the address and the API share, in the locale's own words.",
597
597
  "status": "beta",
598
598
  "category": "forms",
599
599
  "platforms": "both",
600
600
  "examples": {
601
- "web": 5,
602
- "native": 1
601
+ "web": 12,
602
+ "native": 7
603
603
  },
604
604
  "dependencies": [
605
605
  "@krizaka/intl@^0.1.0",
606
606
  "tailwind-variants@^3.3.1"
607
607
  ],
608
608
  "registryDependencies": [
609
+ "cn",
609
610
  "popover"
610
611
  ]
611
612
  },
@@ -153,6 +153,13 @@
153
153
  "description": "Font families the app has loaded (`expo-font`…); absent: the system font.",
154
154
  "required": false
155
155
  },
156
+ {
157
+ "name": "haptics",
158
+ "type": "((kind: HapticKind) => void)",
159
+ "default": null,
160
+ "description": "Plays the haptics of the controls (a wheel's tick, a slider's step, a tactile button). The platform has no module:\nthe app passes one — `(kind) => kind === \"selection\" ? Haptics.selectionAsync() : Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light)`\nwith expo-haptics. Absent: no haptics.",
161
+ "required": false
162
+ },
156
163
  {
157
164
  "name": "mode",
158
165
  "type": "Mode",
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: krizaka-date-picker
3
+ description: Dates and times in a Krizaka app (Next.js or Expo) with @krizaka/ui/date-picker and @krizaka/ui/native — DatePicker, DateRangePicker (presets, two months), Calendar inline, MonthPicker, DayStrip, WheelPicker + Wheel, TimePicker (wheels or slots), DateField (typed) and DateWheel (an age gate), with ISO values (YYYY-MM-DD, YYYY-MM, HH:mm) and the helpers (latestBirthDate, timeSlots, ageOn, formatTime). Use it instead of <input type="date">, a date library's picker, @react-native-community/datetimepicker or a hand-made calendar.
4
+ ---
5
+
6
+ # @krizaka/ui/date-picker · @krizaka/ui/native
7
+
8
+ ## Rules
9
+
10
+ 1. Values are ISO strings everywhere — state, address, form, API: a day `YYYY-MM-DD`, a month `YYYY-MM`, a time `HH:mm`
11
+ (24 hours, whatever the locale shows). Format only for display (`formatTime`, `@krizaka/intl`'s `formatDate`).
12
+ 2. Always pass the person's `locale`: month and day names, the first day of the week, the order of day · month · year
13
+ and 12 / 24 hours follow it. Words of the controls (`labels`) arrive translated.
14
+ 3. Pick by the task, not by habit:
15
+ - a day near today in a form → `DatePicker`; a period → `DateRangePicker` with `presets`;
16
+ - the month is the interface (availability, booking) → `<Calendar variant="card">` (native: `Calendar`);
17
+ - the next days (delivery, session, agenda) → `DayStrip` (`isDateDisabled`, `isDateMarked`);
18
+ - a time to set → `TimePicker` (wheels, `minuteStep`); a time to book → `<TimePicker variant="slots" slots={timeSlots("09:00", "17:00", 30)} isTimeDisabled={…}>`;
19
+ - a month (billing, expiry, report) → `MonthPicker`;
20
+ - a date of birth or any date years away → `DateField` (typed, `autoComplete="bday"`) or `DateWheel` — never a calendar.
21
+ 4. Bound rather than refuse: `min` / `max`, `isDateDisabled`, `isTimeDisabled`. An age gate is
22
+ `max={latestBirthDate(18)}` on `DateWheel`, and the same rule in the schema (`d <= latestBirthDate(18)`), checked again by the server.
23
+ 5. Native haptics come from the app: `<ThemeProvider haptics={(k) => k === "selection" ? Haptics.selectionAsync() : Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light)}>`
24
+ (expo-haptics). The platform has no native module.
25
+ 6. In a form, use the form's `DateField` (`@krizaka/ui/form`: `entry="calendar" | "parts" | "wheel"`; native: wheels by
26
+ default) — never wire a picker to a field by hand.
27
+
28
+ ## Recipes
29
+
30
+ ```tsx
31
+ import { DateRangePicker, DayStrip, TimePicker, timeSlots, DateWheel, latestBirthDate } from "@krizaka/ui/date-picker";
32
+
33
+ <DateRangePicker label={t("report.period")} locale={locale} value={period} onValueChange={setPeriod} max={today}
34
+ presets={[{ label: t("report.last7"), start: addDays(today, -6), end: today }]} />
35
+ <DayStrip label={t("delivery.day")} locale={locale} value={day} onValueChange={setDay} isDateDisabled={isSunday} />
36
+ <TimePicker variant="slots" label={t("booking.time")} locale={locale} slots={timeSlots("09:00", "17:00", 30)}
37
+ isTimeDisabled={(t) => taken.has(t)} value={time} onValueChange={setTime} />
38
+ <DateWheel label={t("signUp.birth")} locale={locale} max={latestBirthDate(18)} value={birth} onValueChange={setBirth} />
39
+ ```
40
+
41
+ - Native has no popover field: put `Calendar`, `DayStrip` or the wheels in the screen or in a `Sheet`.
42
+ - A wheel is a `spinbutton` (web: ↑ ↓, Page Up / Down, Home / End) and an adjustable control on iOS / Android (swipe up
43
+ or down with VoiceOver / TalkBack): always give each `Wheel` its `label`.
@@ -1,17 +0,0 @@
1
- "use client";
2
-
3
- // src/cn.ts
4
- import { clsx } from "clsx";
5
- import { cn as merge } from "tailwind-variants";
6
- function cn(...inputs) {
7
- return merge(clsx(inputs)) ?? "";
8
- }
9
-
10
- // src/floating.ts
11
- var floating = "kz-pop z-50 rounded-lg border border-border-default bg-surface-2 text-fg shadow-lg outline-hidden";
12
-
13
- export {
14
- cn,
15
- floating
16
- };
17
- //# sourceMappingURL=chunk-2USC2YT6.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cn.ts","../src/floating.ts"],"sourcesContent":["import { type ClassValue, clsx } from \"clsx\";\nimport { cn as merge } from \"tailwind-variants\";\n\nexport type { ClassValue };\n\n/**\n * Merges Tailwind classes: the last one wins — a product's `className` overrides the primitive's. The merge engine is\n * tailwind-merge as tailwind-variants ships it (the one `tv` uses), so the platform carries a single copy of it.\n * tailwind-variants bundles that engine since 3.3 (it never imports the `tailwind-merge` package, an optional peer):\n * hence `tailwind-variants ^3.3.1` and no `tailwind-merge` dependency — `scripts/consumer.mjs` checks it on a clean\n * install of the packed package.\n */\nexport function cn(...inputs: ClassValue[]): string {\n return merge(clsx(inputs)) ?? \"\";\n}\n","// The one surface of everything that floats next to its trigger (popover, menu, tooltip): a raised surface, a border,\n// the large shadow and the `kz-pop` entrance from the side Radix measured (`--radix-*-transform-origin`).\nexport const floating =\n \"kz-pop z-50 rounded-lg border border-border-default bg-surface-2 text-fg shadow-lg outline-hidden\";\n"],"mappings":";;;AAAA,SAA0B,YAAY;AACtC,SAAS,MAAM,aAAa;AAWrB,SAAS,MAAM,QAA8B;AAClD,SAAO,MAAM,KAAK,MAAM,CAAC,KAAK;AAChC;;;ACZO,IAAM,WACX;","names":[]}
@@ -1,13 +0,0 @@
1
- "use client";
2
-
3
- // src/cn.ts
4
- import { clsx } from "clsx";
5
- import { cn as merge } from "tailwind-variants";
6
- function cn(...inputs) {
7
- return merge(clsx(inputs)) ?? "";
8
- }
9
-
10
- export {
11
- cn
12
- };
13
- //# sourceMappingURL=chunk-5AXLA4LK.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cn.ts"],"sourcesContent":["import { type ClassValue, clsx } from \"clsx\";\nimport { cn as merge } from \"tailwind-variants\";\n\nexport type { ClassValue };\n\n/**\n * Merges Tailwind classes: the last one wins — a product's `className` overrides the primitive's. The merge engine is\n * tailwind-merge as tailwind-variants ships it (the one `tv` uses), so the platform carries a single copy of it.\n * tailwind-variants bundles that engine since 3.3 (it never imports the `tailwind-merge` package, an optional peer):\n * hence `tailwind-variants ^3.3.1` and no `tailwind-merge` dependency — `scripts/consumer.mjs` checks it on a clean\n * install of the packed package.\n */\nexport function cn(...inputs: ClassValue[]): string {\n return merge(clsx(inputs)) ?? \"\";\n}\n"],"mappings":";;;AAAA,SAA0B,YAAY;AACtC,SAAS,MAAM,aAAa;AAWrB,SAAS,MAAM,QAA8B;AAClD,SAAO,MAAM,KAAK,MAAM,CAAC,KAAK;AAChC;","names":[]}
@@ -1,11 +0,0 @@
1
- // src/cn.ts
2
- import { clsx } from "clsx";
3
- import { cn as merge } from "tailwind-variants";
4
- function cn(...inputs) {
5
- return merge(clsx(inputs)) ?? "";
6
- }
7
-
8
- export {
9
- cn
10
- };
11
- //# sourceMappingURL=chunk-FJDSLNXK.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cn.ts"],"sourcesContent":["import { type ClassValue, clsx } from \"clsx\";\nimport { cn as merge } from \"tailwind-variants\";\n\nexport type { ClassValue };\n\n/**\n * Merges Tailwind classes: the last one wins — a product's `className` overrides the primitive's. The merge engine is\n * tailwind-merge as tailwind-variants ships it (the one `tv` uses), so the platform carries a single copy of it.\n * tailwind-variants bundles that engine since 3.3 (it never imports the `tailwind-merge` package, an optional peer):\n * hence `tailwind-variants ^3.3.1` and no `tailwind-merge` dependency — `scripts/consumer.mjs` checks it on a clean\n * install of the packed package.\n */\nexport function cn(...inputs: ClassValue[]): string {\n return merge(clsx(inputs)) ?? \"\";\n}\n"],"mappings":";AAAA,SAA0B,YAAY;AACtC,SAAS,MAAM,aAAa;AAWrB,SAAS,MAAM,QAA8B;AAClD,SAAO,MAAM,KAAK,MAAM,CAAC,KAAK;AAChC;","names":[]}
@@ -1,11 +0,0 @@
1
- // src/cn.ts
2
- import { clsx } from "clsx";
3
- import { cn as merge } from "tailwind-variants";
4
- function cn(...inputs) {
5
- return merge(clsx(inputs)) ?? "";
6
- }
7
-
8
- export {
9
- cn
10
- };
11
- //# sourceMappingURL=chunk-KNBYZGSQ.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cn.ts"],"sourcesContent":["import { type ClassValue, clsx } from \"clsx\";\nimport { cn as merge } from \"tailwind-variants\";\n\nexport type { ClassValue };\n\n/**\n * Merges Tailwind classes: the last one wins — a product's `className` overrides the primitive's. The merge engine is\n * tailwind-merge as tailwind-variants ships it (the one `tv` uses), so the platform carries a single copy of it.\n * tailwind-variants bundles that engine since 3.3 (it never imports the `tailwind-merge` package, an optional peer):\n * hence `tailwind-variants ^3.3.1` and no `tailwind-merge` dependency — `scripts/consumer.mjs` checks it on a clean\n * install of the packed package.\n */\nexport function cn(...inputs: ClassValue[]): string {\n return merge(clsx(inputs)) ?? \"\";\n}\n"],"mappings":";AAAA,SAA0B,YAAY;AACtC,SAAS,MAAM,aAAa;AAWrB,SAAS,MAAM,QAA8B;AAClD,SAAO,MAAM,KAAK,MAAM,CAAC,KAAK;AAChC;","names":[]}
@@ -1,17 +0,0 @@
1
- // src/cn.ts
2
- import { clsx } from "clsx";
3
- import { cn as merge } from "tailwind-variants";
4
- function cn(...inputs) {
5
- return merge(clsx(inputs)) ?? "";
6
- }
7
-
8
- // src/story-variant.ts
9
- var storyVariantClass = (variant) => variant === "arcade" ? "kzs-arcade" : void 0;
10
- var brandClass = (brand) => brand ? `brand-${brand}` : void 0;
11
-
12
- export {
13
- cn,
14
- storyVariantClass,
15
- brandClass
16
- };
17
- //# sourceMappingURL=chunk-VCAAHCHL.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cn.ts","../src/story-variant.ts"],"sourcesContent":["import { type ClassValue, clsx } from \"clsx\";\nimport { cn as merge } from \"tailwind-variants\";\n\nexport type { ClassValue };\n\n/**\n * Merges Tailwind classes: the last one wins — a product's `className` overrides the primitive's. The merge engine is\n * tailwind-merge as tailwind-variants ships it (the one `tv` uses), so the platform carries a single copy of it.\n * tailwind-variants bundles that engine since 3.3 (it never imports the `tailwind-merge` package, an optional peer):\n * hence `tailwind-variants ^3.3.1` and no `tailwind-merge` dependency — `scripts/consumer.mjs` checks it on a clean\n * install of the packed package.\n */\nexport function cn(...inputs: ClassValue[]): string {\n return merge(clsx(inputs)) ?? \"\";\n}\n","// The two looks of the storytelling kit (story.css), shared by its entries. Server-safe.\n\n/** The look of the storytelling kit: `default` (sober, for any app) or `arcade` (the opt-in cabinet flavour). */\nexport type StoryVariant = \"default\" | \"arcade\";\n\n/** The class a storytelling component adds for its look (`kzs-arcade` for the arcade flavour). */\nexport const storyVariantClass = (variant: StoryVariant | undefined) => (variant === \"arcade\" ? \"kzs-arcade\" : undefined);\n\n/** The class of a brand scope (`brand-orochia`): the accent and the gradient become that brand's. */\nexport const brandClass = (brand: string | undefined) => (brand ? `brand-${brand}` : undefined);\n"],"mappings":";AAAA,SAA0B,YAAY;AACtC,SAAS,MAAM,aAAa;AAWrB,SAAS,MAAM,QAA8B;AAClD,SAAO,MAAM,KAAK,MAAM,CAAC,KAAK;AAChC;;;ACRO,IAAM,oBAAoB,CAAC,YAAuC,YAAY,WAAW,eAAe;AAGxG,IAAM,aAAa,CAAC,UAA+B,QAAQ,SAAS,KAAK,KAAK;","names":[]}