@wheelhouse/ui 0.2.1 → 0.2.3

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 (199) hide show
  1. package/dist/blocks/columns/columns-types.d.ts +40 -0
  2. package/dist/blocks/columns/columns-types.d.ts.map +1 -0
  3. package/dist/blocks/columns/columns-types.js +10 -0
  4. package/dist/blocks/columns/columns-utils.d.ts +13 -0
  5. package/dist/blocks/columns/columns-utils.d.ts.map +1 -0
  6. package/dist/blocks/columns/columns-utils.js +85 -0
  7. package/dist/blocks/columns/columns.d.ts +3 -0
  8. package/dist/blocks/columns/columns.d.ts.map +1 -0
  9. package/dist/blocks/columns/columns.js +79 -0
  10. package/dist/blocks/columns/columns.stories.d.ts +12 -0
  11. package/dist/blocks/columns/columns.stories.d.ts.map +1 -0
  12. package/dist/blocks/columns/columns.stories.js +67 -0
  13. package/dist/blocks/columns/index.d.ts +6 -0
  14. package/dist/blocks/columns/index.d.ts.map +1 -0
  15. package/dist/blocks/columns/index.js +3 -0
  16. package/dist/blocks/date-selector/date-selector-context.d.ts.map +1 -0
  17. package/dist/blocks/date-selector/date-selector-default-i18n.d.ts +10 -0
  18. package/dist/blocks/date-selector/date-selector-default-i18n.d.ts.map +1 -0
  19. package/dist/blocks/date-selector/date-selector-default-i18n.js +29 -0
  20. package/dist/blocks/date-selector/date-selector-i18n-resources.d.ts +11 -0
  21. package/dist/blocks/date-selector/date-selector-i18n-resources.d.ts.map +1 -0
  22. package/dist/blocks/date-selector/date-selector-i18n-resources.js +248 -0
  23. package/dist/blocks/date-selector/date-selector-i18n.shared.d.ts +12 -0
  24. package/dist/blocks/date-selector/date-selector-i18n.shared.d.ts.map +1 -0
  25. package/dist/blocks/date-selector/date-selector-i18n.shared.js +84 -0
  26. package/dist/{components → blocks}/date-selector/date-selector-parts.d.ts +9 -0
  27. package/dist/blocks/date-selector/date-selector-parts.d.ts.map +1 -0
  28. package/dist/{components → blocks}/date-selector/date-selector-parts.js +21 -6
  29. package/dist/{components → blocks}/date-selector/date-selector-types.d.ts +70 -0
  30. package/dist/blocks/date-selector/date-selector-types.d.ts.map +1 -0
  31. package/dist/{components → blocks}/date-selector/date-selector-types.js +22 -0
  32. package/dist/blocks/date-selector/date-selector-value.d.ts +81 -0
  33. package/dist/blocks/date-selector/date-selector-value.d.ts.map +1 -0
  34. package/dist/blocks/date-selector/date-selector-value.js +423 -0
  35. package/dist/{components → blocks}/date-selector/date-selector.d.ts +1 -1
  36. package/dist/blocks/date-selector/date-selector.d.ts.map +1 -0
  37. package/dist/blocks/date-selector/date-selector.js +191 -0
  38. package/dist/{components → blocks}/date-selector/date-selector.stories.d.ts +14 -0
  39. package/dist/blocks/date-selector/date-selector.stories.d.ts.map +1 -0
  40. package/dist/blocks/date-selector/date-selector.stories.js +299 -0
  41. package/dist/blocks/date-selector/index.d.ts +11 -0
  42. package/dist/blocks/date-selector/index.d.ts.map +1 -0
  43. package/dist/blocks/date-selector/index.js +8 -0
  44. package/dist/{components → blocks}/date-selector/use-date-selector.d.ts +4 -3
  45. package/dist/blocks/date-selector/use-date-selector.d.ts.map +1 -0
  46. package/dist/{components → blocks}/date-selector/use-date-selector.js +14 -8
  47. package/dist/blocks/index.d.ts +2 -0
  48. package/dist/blocks/index.d.ts.map +1 -1
  49. package/dist/blocks/index.js +2 -0
  50. package/dist/blocks/navigation/index.d.ts +4 -1
  51. package/dist/blocks/navigation/index.d.ts.map +1 -1
  52. package/dist/blocks/navigation/index.js +2 -1
  53. package/dist/blocks/navigation/navigation-types.d.ts +60 -0
  54. package/dist/blocks/navigation/navigation-types.d.ts.map +1 -0
  55. package/dist/blocks/navigation/navigation-types.js +1 -0
  56. package/dist/blocks/navigation/navigation.d.ts +9 -0
  57. package/dist/blocks/navigation/navigation.d.ts.map +1 -0
  58. package/dist/blocks/navigation/navigation.demo.d.ts +4 -0
  59. package/dist/blocks/navigation/navigation.demo.d.ts.map +1 -0
  60. package/dist/blocks/navigation/navigation.demo.js +46 -0
  61. package/dist/blocks/navigation/navigation.js +98 -0
  62. package/dist/blocks/navigation/navigation.stories.d.ts +14 -0
  63. package/dist/blocks/navigation/navigation.stories.d.ts.map +1 -0
  64. package/dist/blocks/navigation/navigation.stories.js +16 -0
  65. package/dist/components/accordion/accordion.stories.js +1 -1
  66. package/dist/components/alert/alert.stories.js +1 -1
  67. package/dist/components/alert-dialog/alert-dialog.stories.js +1 -1
  68. package/dist/components/aspect-ratio/aspect-ratio.stories.js +1 -1
  69. package/dist/components/avatar/avatar.stories.js +1 -1
  70. package/dist/components/badge/badge.d.ts +1 -1
  71. package/dist/components/badge/badge.stories.js +1 -1
  72. package/dist/components/breadcrumb/breadcrumb.stories.js +1 -1
  73. package/dist/components/button/button.d.ts +2 -2
  74. package/dist/components/button/button.stories.js +1 -1
  75. package/dist/components/button-group/button-group.d.ts +10 -4
  76. package/dist/components/button-group/button-group.d.ts.map +1 -1
  77. package/dist/components/button-group/button-group.js +15 -3
  78. package/dist/components/button-group/button-group.stories.js +1 -1
  79. package/dist/components/button-group/index.d.ts +2 -2
  80. package/dist/components/button-group/index.d.ts.map +1 -1
  81. package/dist/components/button-group/index.js +1 -1
  82. package/dist/components/calendar/calendar.stories.js +1 -1
  83. package/dist/components/card/card.stories.js +1 -1
  84. package/dist/components/checkbox/checkbox.stories.js +1 -1
  85. package/dist/components/collapsible/collapsible.stories.js +1 -1
  86. package/dist/components/combobox/combobox.stories.js +1 -1
  87. package/dist/components/command/command.stories.js +1 -1
  88. package/dist/components/context-menu/context-menu.stories.js +1 -1
  89. package/dist/components/dialog/dialog.stories.js +1 -1
  90. package/dist/components/direction/direction.stories.js +1 -1
  91. package/dist/components/drawer/drawer.stories.js +1 -1
  92. package/dist/components/dropdown-menu/dropdown-menu.d.ts +9 -2
  93. package/dist/components/dropdown-menu/dropdown-menu.d.ts.map +1 -1
  94. package/dist/components/dropdown-menu/dropdown-menu.js +4 -1
  95. package/dist/components/dropdown-menu/dropdown-menu.stories.js +1 -1
  96. package/dist/components/dropdown-menu/index.d.ts +2 -2
  97. package/dist/components/dropdown-menu/index.d.ts.map +1 -1
  98. package/dist/components/dropdown-menu/index.js +1 -1
  99. package/dist/components/empty/empty.stories.js +1 -1
  100. package/dist/components/field/field.stories.js +1 -1
  101. package/dist/components/filters/filter-date-metric-value.d.ts +32 -0
  102. package/dist/components/filters/filter-date-metric-value.d.ts.map +1 -0
  103. package/dist/components/filters/filter-date-metric-value.js +331 -0
  104. package/dist/components/filters/filters-defaults.d.ts +4 -0
  105. package/dist/components/filters/filters-defaults.d.ts.map +1 -1
  106. package/dist/components/filters/filters-defaults.js +59 -1
  107. package/dist/components/filters/filters-i18n-resources.d.ts +277 -0
  108. package/dist/components/filters/filters-i18n-resources.d.ts.map +1 -0
  109. package/dist/components/filters/filters-i18n-resources.js +276 -0
  110. package/dist/components/filters/filters-i18n.shared.d.ts +16 -0
  111. package/dist/components/filters/filters-i18n.shared.d.ts.map +1 -0
  112. package/dist/components/filters/filters-i18n.shared.js +111 -0
  113. package/dist/components/filters/filters-types.d.ts +33 -1
  114. package/dist/components/filters/filters-types.d.ts.map +1 -1
  115. package/dist/components/filters/filters-utils.d.ts +28 -1
  116. package/dist/components/filters/filters-utils.d.ts.map +1 -1
  117. package/dist/components/filters/filters-utils.js +102 -0
  118. package/dist/components/filters/filters.d.ts +21 -3
  119. package/dist/components/filters/filters.d.ts.map +1 -1
  120. package/dist/components/filters/filters.js +493 -290
  121. package/dist/components/filters/filters.stories.d.ts +107 -2
  122. package/dist/components/filters/filters.stories.d.ts.map +1 -1
  123. package/dist/components/filters/filters.stories.js +364 -29
  124. package/dist/components/filters/index.d.ts +3 -1
  125. package/dist/components/filters/index.d.ts.map +1 -1
  126. package/dist/components/filters/index.js +3 -1
  127. package/dist/components/frame/frame.d.ts +1 -1
  128. package/dist/components/frame/frame.stories.js +1 -1
  129. package/dist/components/hover-card/hover-card.stories.js +1 -1
  130. package/dist/components/index.d.ts +0 -1
  131. package/dist/components/index.d.ts.map +1 -1
  132. package/dist/components/index.js +0 -1
  133. package/dist/components/input/input.stories.js +1 -1
  134. package/dist/components/input-group/input-group.d.ts +2 -2
  135. package/dist/components/input-group/input-group.stories.js +1 -1
  136. package/dist/components/item/item.d.ts +2 -2
  137. package/dist/components/item/item.stories.js +1 -1
  138. package/dist/components/kbd/kbd.stories.js +1 -1
  139. package/dist/components/label/label.stories.js +1 -1
  140. package/dist/components/menubar/menubar.stories.js +1 -1
  141. package/dist/components/native-select/native-select.stories.js +1 -1
  142. package/dist/components/navigation-menu/navigation-menu.stories.js +1 -1
  143. package/dist/components/pagination/pagination.stories.js +1 -1
  144. package/dist/components/popover/popover.stories.js +1 -1
  145. package/dist/components/progress/progress.stories.js +1 -1
  146. package/dist/components/radio-group/radio-group.stories.js +1 -1
  147. package/dist/components/resizable/resizable.stories.js +1 -1
  148. package/dist/components/scroll-area/scroll-area.stories.js +1 -1
  149. package/dist/components/select/select.stories.js +1 -1
  150. package/dist/components/separator/separator.stories.js +1 -1
  151. package/dist/components/sheet/sheet.stories.js +1 -1
  152. package/dist/components/slider/slider.stories.js +1 -1
  153. package/dist/components/sonner/sonner.stories.js +1 -1
  154. package/dist/components/sortable/sortable.stories.js +1 -1
  155. package/dist/components/spinner/spinner.stories.js +1 -1
  156. package/dist/components/status-indicator/status-indicator.stories.js +1 -1
  157. package/dist/components/switch/switch.stories.js +1 -1
  158. package/dist/components/tabs/tabs.d.ts +1 -1
  159. package/dist/components/tabs/tabs.stories.js +1 -1
  160. package/dist/components/text/text.d.ts +1 -1
  161. package/dist/components/text/text.stories.js +1 -1
  162. package/dist/components/textarea/textarea.stories.js +1 -1
  163. package/dist/components/toggle/toggle.stories.js +1 -1
  164. package/dist/components/toggle-group/toggle-group.stories.js +1 -1
  165. package/dist/components/tooltip/tooltip.stories.js +1 -1
  166. package/dist/index.d.ts +1 -1
  167. package/dist/index.d.ts.map +1 -1
  168. package/dist/index.js +1 -1
  169. package/dist/tsconfig.tsbuildinfo +1 -1
  170. package/llms.txt +8 -10
  171. package/package.json +6 -2
  172. package/dist/blocks/navigation/pattern-1/index.d.ts +0 -3
  173. package/dist/blocks/navigation/pattern-1/index.d.ts.map +0 -1
  174. package/dist/blocks/navigation/pattern-1/index.js +0 -1
  175. package/dist/blocks/navigation/pattern-1/pattern-1.config.d.ts +0 -47
  176. package/dist/blocks/navigation/pattern-1/pattern-1.config.d.ts.map +0 -1
  177. package/dist/blocks/navigation/pattern-1/pattern-1.config.js +0 -55
  178. package/dist/blocks/navigation/pattern-1/pattern-1.d.ts +0 -7
  179. package/dist/blocks/navigation/pattern-1/pattern-1.d.ts.map +0 -1
  180. package/dist/blocks/navigation/pattern-1/pattern-1.js +0 -50
  181. package/dist/blocks/navigation/pattern-1/pattern-1.stories.d.ts +0 -16
  182. package/dist/blocks/navigation/pattern-1/pattern-1.stories.d.ts.map +0 -1
  183. package/dist/blocks/navigation/pattern-1/pattern-1.stories.js +0 -20
  184. package/dist/components/date-selector/date-selector-context.d.ts.map +0 -1
  185. package/dist/components/date-selector/date-selector-parts.d.ts.map +0 -1
  186. package/dist/components/date-selector/date-selector-types.d.ts.map +0 -1
  187. package/dist/components/date-selector/date-selector-value.d.ts +0 -47
  188. package/dist/components/date-selector/date-selector-value.d.ts.map +0 -1
  189. package/dist/components/date-selector/date-selector-value.js +0 -183
  190. package/dist/components/date-selector/date-selector.d.ts.map +0 -1
  191. package/dist/components/date-selector/date-selector.js +0 -144
  192. package/dist/components/date-selector/date-selector.stories.d.ts.map +0 -1
  193. package/dist/components/date-selector/date-selector.stories.js +0 -144
  194. package/dist/components/date-selector/index.d.ts +0 -7
  195. package/dist/components/date-selector/index.d.ts.map +0 -1
  196. package/dist/components/date-selector/index.js +0 -5
  197. package/dist/components/date-selector/use-date-selector.d.ts.map +0 -1
  198. /package/dist/{components → blocks}/date-selector/date-selector-context.d.ts +0 -0
  199. /package/dist/{components → blocks}/date-selector/date-selector-context.js +0 -0
@@ -1,8 +1,113 @@
1
- import type { Meta, StoryObj } from '@storybook/react';
1
+ import type { StoryObj } from '@storybook/react';
2
2
  import { Filters } from '.';
3
- declare const meta: Meta<typeof Filters>;
3
+ declare const meta: {
4
+ title: string;
5
+ component: typeof Filters;
6
+ tags: string[];
7
+ parameters: {
8
+ layout: string;
9
+ };
10
+ args: {
11
+ className: string;
12
+ size: "sm";
13
+ radius: "default";
14
+ showSearchInput: true;
15
+ submenuSearchMinOptions: number;
16
+ allowMultiple: true;
17
+ menuPopupClassName: string;
18
+ collapsibleAddFilterGroups: false;
19
+ defaultAddFilterGroupsCollapsed: false;
20
+ nestedAddFilterGroups: false;
21
+ collapseAddButton: false;
22
+ enableShortcut: false;
23
+ shortcutKey: string;
24
+ shortcutLabel: string;
25
+ };
26
+ argTypes: {
27
+ className: {
28
+ readonly control: "text";
29
+ readonly description: "Optional class on the filters container.";
30
+ };
31
+ size: {
32
+ readonly control: "inline-radio";
33
+ readonly options: ("default" | "sm" | "lg")[];
34
+ readonly description: "Control density for filter rows and add-filter trigger.";
35
+ };
36
+ radius: {
37
+ readonly control: "inline-radio";
38
+ readonly options: ("default" | "full")[];
39
+ readonly description: "Corner radius for each filter row’s grouped controls (label, operator, value, remove).";
40
+ };
41
+ showSearchInput: {
42
+ readonly control: "boolean";
43
+ readonly description: "Search field at the top of the add-filter menu.";
44
+ };
45
+ submenuSearchMinOptions: {
46
+ readonly control: {
47
+ readonly type: "number";
48
+ readonly min: 0;
49
+ readonly max: 100;
50
+ readonly step: 1;
51
+ };
52
+ readonly description: "Minimum options before search in value popovers and add-filter option submenus (0 = always when searchable).";
53
+ };
54
+ allowMultiple: {
55
+ readonly control: "boolean";
56
+ readonly description: "Allow more than one filter per field key.";
57
+ };
58
+ menuPopupClassName: {
59
+ readonly control: "text";
60
+ readonly description: "Extra classes on the add-filter dropdown surface.";
61
+ };
62
+ collapsibleAddFilterGroups: {
63
+ readonly control: "boolean";
64
+ readonly description: "Grouped config only: accordion headers per section (ignored when **Nested** mode is used in grouped story).";
65
+ };
66
+ defaultAddFilterGroupsCollapsed: {
67
+ readonly control: "boolean";
68
+ readonly description: "Grouped + accordion: start every section collapsed when the menu opens.";
69
+ };
70
+ nestedAddFilterGroups: {
71
+ readonly control: "boolean";
72
+ readonly description: "Grouped config only: category rows open a side submenu (ignored when grouped story uses **Grouped menu mode**).";
73
+ };
74
+ collapseAddButton: {
75
+ readonly control: "boolean";
76
+ readonly description: "Collapse the add-filter control into a compact trigger when filters exist.";
77
+ };
78
+ enableShortcut: {
79
+ readonly control: "boolean";
80
+ readonly description: "Open add-filter menu with a global key (see shortcut keys).";
81
+ };
82
+ shortcutKey: {
83
+ readonly control: "text";
84
+ readonly description: "Key to listen for when **Enable shortcut** is on (e.g. `f`).";
85
+ };
86
+ shortcutLabel: {
87
+ readonly control: "text";
88
+ readonly description: "Label shown in the add-filter menu for the shortcut (e.g. `F`).";
89
+ };
90
+ filters: {
91
+ readonly control: false;
92
+ };
93
+ fields: {
94
+ readonly control: false;
95
+ };
96
+ onChange: {
97
+ readonly control: false;
98
+ };
99
+ trigger: {
100
+ readonly control: false;
101
+ };
102
+ i18n: {
103
+ readonly control: false;
104
+ };
105
+ };
106
+ };
4
107
  export default meta;
5
108
  type Story = StoryObj<typeof meta>;
6
109
  export declare const Default: Story;
7
110
  export declare const WithOneFilter: Story;
111
+ export declare const GroupedFieldsAndSearch: Story;
112
+ export declare const DateMetricAdjRevpar: Story;
8
113
  //# sourceMappingURL=filters.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"filters.stories.d.ts","sourceRoot":"","sources":["../../../src/components/filters/filters.stories.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAKvD,OAAO,EAAqD,OAAO,EAAE,MAAM,GAAG,CAAC;AA0C/E,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,OAAO,CAOC,CAAC;AAEjC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAE3B,CAAC"}
1
+ {"version":3,"file":"filters.stories.d.ts","sourceRoot":"","sources":["../../../src/components/filters/filters.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAQvD,OAAO,EAAkH,OAAO,EAAE,MAAM,GAAG,CAAC;AA0R5I,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BsB,CAAC;AAEjC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAEJ,KAAK,CAAC;AAEtB,eAAO,MAAM,aAAa,EAEV,KAAK,CAAC;AA0DtB,eAAO,MAAM,sBAAsB,EA4CnB,KAAK,CAAC;AA8CtB,eAAO,MAAM,mBAAmB,EAgChB,KAAK,CAAC"}
@@ -1,48 +1,383 @@
1
1
  'use client';
2
- import { jsx as _jsx } from "react/jsx-runtime";
3
- import { useState } from 'react';
4
- import { Filter as FilterIcon, Tag } from 'lucide-react';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useMemo, useState } from 'react';
4
+ import { useTranslation } from 'react-i18next';
5
+ import { Activity, BarChart3, Filter as FilterIcon, Home, Tag, Users } from 'lucide-react';
6
+ import { buildDateSelectorI18nFromT, DATE_SELECTOR_NAMESPACE } from '../../blocks/date-selector';
5
7
  import { Button } from '../button';
6
- import { createFilter, Filters } from '.';
7
- const demoFields = [
8
- {
9
- key: 'status',
10
- label: 'Status',
11
- type: 'select',
12
- icon: _jsx(FilterIcon, { className: "size-4" }),
13
- options: [
14
- { value: 'active', label: 'Active' },
15
- { value: 'draft', label: 'Draft' },
16
- ],
17
- },
18
- {
19
- key: 'name',
20
- label: 'Name',
21
- type: 'text',
22
- placeholder: 'Contains…',
23
- icon: _jsx(Tag, { className: "size-4" }),
24
- },
8
+ import { buildFilterI18nFromT, FILTERS_NAMESPACE } from './filters-i18n.shared';
9
+ import { createFilter, DEFAULT_SUBMENU_SEARCH_MIN_OPTIONS, Filters } from '.';
10
+ const teamMemberOptions = [
11
+ { value: 'alex', label: 'Alex Johnson' },
12
+ { value: 'jamie', label: 'Jamie Lee' },
13
+ { value: 'sam', label: 'Sam Rivera' },
14
+ { value: 'taylor', label: 'Taylor Chen' },
15
+ { value: 'jordan', label: 'Jordan Patel' },
16
+ { value: 'casey', label: 'Casey Morgan' },
17
+ { value: 'riley', label: 'Riley Brooks' },
18
+ { value: 'quinn', label: 'Quinn Foster' },
19
+ { value: 'avery', label: 'Avery Scott' },
20
+ { value: 'morgan', label: 'Morgan Wells' },
21
+ ];
22
+ function useFiltersStoryLocale() {
23
+ const { t, i18n } = useTranslation(FILTERS_NAMESPACE);
24
+ const filterI18n = useMemo(() => buildFilterI18nFromT(t, i18n.language), [t, i18n.language]);
25
+ const dateSelectorI18n = useMemo(() => {
26
+ const dateT = i18n.getFixedT(i18n.language, DATE_SELECTOR_NAMESPACE);
27
+ return buildDateSelectorI18nFromT(dateT);
28
+ }, [i18n]);
29
+ return { t, i18n, filterI18n, dateSelectorI18n };
30
+ }
31
+ function buildDemoFields(t) {
32
+ return [
33
+ {
34
+ key: 'status',
35
+ label: t('story.fields.status', { defaultValue: 'Status' }),
36
+ type: 'select',
37
+ icon: _jsx(FilterIcon, { className: "size-4" }),
38
+ options: [
39
+ { value: 'active', label: t('story.options.active', { defaultValue: 'Active' }) },
40
+ { value: 'draft', label: t('story.options.draft', { defaultValue: 'Draft' }) },
41
+ ],
42
+ },
43
+ {
44
+ key: 'name',
45
+ label: t('story.fields.name', { defaultValue: 'Name' }),
46
+ type: 'text',
47
+ placeholder: t('story.namePlaceholder', { defaultValue: 'Contains…' }),
48
+ icon: _jsx(Tag, { className: "size-4" }),
49
+ },
50
+ ];
51
+ }
52
+ function buildGroupedFieldsWithSearch(t, dateSelectorI18n, i18n) {
53
+ return [
54
+ {
55
+ group: t('story.groups.listingFeatures', { defaultValue: 'Listing Features' }),
56
+ fields: [
57
+ {
58
+ key: 'propertyType',
59
+ label: t('story.fields.propertyType', { defaultValue: 'Property Type' }),
60
+ type: 'multiselect',
61
+ icon: _jsx(Home, { className: "size-4" }),
62
+ options: [
63
+ { value: 'house', label: t('story.options.house', { defaultValue: 'House' }) },
64
+ { value: 'condo', label: t('story.options.condo', { defaultValue: 'Condo' }) },
65
+ { value: 'townhome', label: t('story.options.townhome', { defaultValue: 'Townhome' }) },
66
+ { value: 'land', label: t('story.options.land', { defaultValue: 'Land' }) },
67
+ ],
68
+ },
69
+ {
70
+ key: 'hasPool',
71
+ label: t('story.fields.hasPool', { defaultValue: 'Has Pool' }),
72
+ type: 'select',
73
+ icon: _jsx(Home, { className: "size-4" }),
74
+ options: [
75
+ { value: 'yes', label: t('story.options.yes', { defaultValue: 'Yes' }) },
76
+ { value: 'no', label: t('story.options.no', { defaultValue: 'No' }) },
77
+ ],
78
+ },
79
+ ],
80
+ },
81
+ {
82
+ group: t('story.groups.listingStatus', { defaultValue: 'Listing Status' }),
83
+ fields: [
84
+ {
85
+ key: 'listingStatus',
86
+ label: t('story.fields.listingStatus', { defaultValue: 'Listing Status' }),
87
+ type: 'multiselect',
88
+ icon: _jsx(Activity, { className: "size-4" }),
89
+ options: [
90
+ { value: 'active', label: t('story.options.active', { defaultValue: 'Active' }) },
91
+ { value: 'pending', label: t('story.options.pending', { defaultValue: 'Pending' }) },
92
+ { value: 'sold', label: t('story.options.sold', { defaultValue: 'Sold' }) },
93
+ { value: 'withdrawn', label: t('story.options.withdrawn', { defaultValue: 'Withdrawn' }) },
94
+ { value: 'expired', label: t('story.options.expired', { defaultValue: 'Expired' }) },
95
+ ],
96
+ },
97
+ ],
98
+ },
99
+ {
100
+ group: t('story.groups.teamAccess', { defaultValue: 'Team & Access' }),
101
+ fields: [
102
+ {
103
+ key: 'teamMember',
104
+ label: t('story.fields.teamMember', { defaultValue: 'Team Member' }),
105
+ type: 'multiselect',
106
+ icon: _jsx(Users, { className: "size-4" }),
107
+ options: teamMemberOptions,
108
+ },
109
+ {
110
+ key: 'yourAccess',
111
+ label: t('story.fields.yourAccess', { defaultValue: 'Your Access' }),
112
+ type: 'select',
113
+ icon: _jsx(Users, { className: "size-4" }),
114
+ options: [
115
+ { value: 'owner', label: t('story.options.owner', { defaultValue: 'Owner' }) },
116
+ { value: 'editor', label: t('story.options.editor', { defaultValue: 'Editor' }) },
117
+ { value: 'viewer', label: t('story.options.viewer', { defaultValue: 'Viewer' }) },
118
+ ],
119
+ },
120
+ {
121
+ key: 'listingAdmin',
122
+ label: t('story.fields.listingAdmin', { defaultValue: 'Admin of Listing' }),
123
+ type: 'select',
124
+ icon: _jsx(Users, { className: "size-4" }),
125
+ options: [
126
+ { value: 'me', label: t('story.options.me', { defaultValue: 'Me' }) },
127
+ { value: 'broker', label: t('story.options.broker', { defaultValue: 'Broker' }) },
128
+ ],
129
+ },
130
+ ],
131
+ },
132
+ {
133
+ group: t('story.groups.listingPerformance', { defaultValue: 'Listing Performance' }),
134
+ fields: [
135
+ {
136
+ key: 'adjRevpar',
137
+ label: t('story.fields.adjRevpar', { defaultValue: 'Adj. RevPAR' }),
138
+ type: 'date_metric',
139
+ icon: _jsx(BarChart3, { className: "size-4" }),
140
+ dateMetricProps: {
141
+ showRollingPresets: true,
142
+ i18nInstance: i18n,
143
+ i18n: dateSelectorI18n,
144
+ },
145
+ },
146
+ {
147
+ key: 'performanceTier',
148
+ label: t('story.fields.performanceTier', { defaultValue: 'Performance Tier' }),
149
+ type: 'select',
150
+ icon: _jsx(BarChart3, { className: "size-4" }),
151
+ options: [
152
+ { value: 'top', label: t('story.options.top', { defaultValue: 'Top quartile' }) },
153
+ { value: 'mid', label: t('story.options.mid', { defaultValue: 'Mid' }) },
154
+ { value: 'low', label: t('story.options.low', { defaultValue: 'Needs attention' }) },
155
+ ],
156
+ },
157
+ ],
158
+ },
159
+ ];
160
+ }
161
+ const FILTER_PLAYGROUND_KEYS = [
162
+ 'className',
163
+ 'size',
164
+ 'radius',
165
+ 'showSearchInput',
166
+ 'submenuSearchMinOptions',
167
+ 'allowMultiple',
168
+ 'menuPopupClassName',
169
+ 'collapsibleAddFilterGroups',
170
+ 'defaultAddFilterGroupsCollapsed',
171
+ 'nestedAddFilterGroups',
172
+ 'collapseAddButton',
173
+ 'enableShortcut',
174
+ 'shortcutKey',
175
+ 'shortcutLabel',
25
176
  ];
26
- function FiltersStoryHost() {
177
+ function pickFiltersPlaygroundArgs(args) {
178
+ const src = args;
179
+ const out = {};
180
+ for (const key of FILTER_PLAYGROUND_KEYS) {
181
+ if (src[key] !== undefined) {
182
+ out[key] = src[key];
183
+ }
184
+ }
185
+ return out;
186
+ }
187
+ /** `Filters` props that stay wired inside story hosts (not controllable). */
188
+ const filtersStoryReadonlyArgTypes = {
189
+ filters: { control: false },
190
+ fields: { control: false },
191
+ onChange: { control: false },
192
+ trigger: { control: false },
193
+ i18n: { control: false },
194
+ };
195
+ /** Shared Controls for `Filters` layout and add-menu behavior (use on stories that forward `args`). */
196
+ const filtersPlaygroundArgTypes = {
197
+ className: { control: 'text', description: 'Optional class on the filters container.' },
198
+ size: {
199
+ control: 'inline-radio',
200
+ options: ['sm', 'default', 'lg'],
201
+ description: 'Control density for filter rows and add-filter trigger.',
202
+ },
203
+ radius: {
204
+ control: 'inline-radio',
205
+ options: ['default', 'full'],
206
+ description: 'Corner radius for each filter row’s grouped controls (label, operator, value, remove).',
207
+ },
208
+ showSearchInput: { control: 'boolean', description: 'Search field at the top of the add-filter menu.' },
209
+ submenuSearchMinOptions: {
210
+ control: { type: 'number', min: 0, max: 100, step: 1 },
211
+ description: 'Minimum options before search in value popovers and add-filter option submenus (0 = always when searchable).',
212
+ },
213
+ allowMultiple: { control: 'boolean', description: 'Allow more than one filter per field key.' },
214
+ menuPopupClassName: { control: 'text', description: 'Extra classes on the add-filter dropdown surface.' },
215
+ collapsibleAddFilterGroups: {
216
+ control: 'boolean',
217
+ description: 'Grouped config only: accordion headers per section (ignored when **Nested** mode is used in grouped story).',
218
+ },
219
+ defaultAddFilterGroupsCollapsed: {
220
+ control: 'boolean',
221
+ description: 'Grouped + accordion: start every section collapsed when the menu opens.',
222
+ },
223
+ nestedAddFilterGroups: {
224
+ control: 'boolean',
225
+ description: 'Grouped config only: category rows open a side submenu (ignored when grouped story uses **Grouped menu mode**).',
226
+ },
227
+ collapseAddButton: { control: 'boolean', description: 'Collapse the add-filter control into a compact trigger when filters exist.' },
228
+ enableShortcut: { control: 'boolean', description: 'Open add-filter menu with a global key (see shortcut keys).' },
229
+ shortcutKey: { control: 'text', description: 'Key to listen for when **Enable shortcut** is on (e.g. `f`).' },
230
+ shortcutLabel: { control: 'text', description: 'Label shown in the add-filter menu for the shortcut (e.g. `F`).' },
231
+ };
232
+ function addFilterTriggerButtonLabel(size, label) {
233
+ const btnSize = size === 'sm' ? 'sm' : size === 'lg' ? 'lg' : 'default';
234
+ return (_jsx(Button, { variant: "outline", size: btnSize, children: label }));
235
+ }
236
+ function FiltersStoryHost(playground) {
27
237
  const [filters, setFilters] = useState([]);
28
- return (_jsx("div", { className: "flex min-h-32 min-w-[min(100%,28rem)] flex-wrap items-start gap-2 p-4", children: _jsx(Filters, { filters: filters, fields: demoFields, onChange: setFilters, trigger: _jsx(Button, { variant: "outline", children: "Add filter" }), allowMultiple: true }) }));
238
+ const { t, filterI18n } = useFiltersStoryLocale();
239
+ const fields = useMemo(() => buildDemoFields(t), [t]);
240
+ return (_jsx("div", { className: "flex min-h-32 min-w-[min(100%,28rem)] flex-wrap items-start gap-2 p-4", children: _jsx(Filters, { filters: filters, fields: fields, onChange: setFilters, i18n: filterI18n, trigger: addFilterTriggerButtonLabel(playground.size, filterI18n.addFilterTitle), ...playground }) }));
29
241
  }
30
- function FiltersWithInitialState() {
242
+ function FiltersWithInitialStateHost(playground) {
31
243
  const [filters, setFilters] = useState(() => [createFilter('status', 'is', ['active'])]);
32
- return (_jsx("div", { className: "flex min-h-32 min-w-[min(100%,28rem)] flex-wrap items-start gap-2 p-4", children: _jsx(Filters, { filters: filters, fields: demoFields, onChange: setFilters, trigger: _jsx(Button, { variant: "outline", children: "Add filter" }), allowMultiple: true }) }));
244
+ const { t, filterI18n } = useFiltersStoryLocale();
245
+ const fields = useMemo(() => buildDemoFields(t), [t]);
246
+ return (_jsx("div", { className: "flex min-h-32 min-w-[min(100%,28rem)] flex-wrap items-start gap-2 p-4", children: _jsx(Filters, { filters: filters, fields: fields, onChange: setFilters, i18n: filterI18n, trigger: addFilterTriggerButtonLabel(playground.size, filterI18n.addFilterTitle), ...playground }) }));
33
247
  }
34
248
  const meta = {
35
- title: 'UI/Filters',
249
+ title: 'Blocks/Filters',
36
250
  component: Filters,
37
251
  tags: ['autodocs'],
38
252
  parameters: {
39
253
  layout: 'centered',
40
254
  },
255
+ args: {
256
+ className: '',
257
+ size: 'sm',
258
+ radius: 'default',
259
+ showSearchInput: true,
260
+ submenuSearchMinOptions: DEFAULT_SUBMENU_SEARCH_MIN_OPTIONS,
261
+ allowMultiple: true,
262
+ menuPopupClassName: '',
263
+ collapsibleAddFilterGroups: false,
264
+ defaultAddFilterGroupsCollapsed: false,
265
+ nestedAddFilterGroups: false,
266
+ collapseAddButton: false,
267
+ enableShortcut: false,
268
+ shortcutKey: 'f',
269
+ shortcutLabel: 'F',
270
+ },
271
+ argTypes: {
272
+ ...filtersStoryReadonlyArgTypes,
273
+ ...filtersPlaygroundArgTypes,
274
+ },
41
275
  };
42
276
  export default meta;
43
277
  export const Default = {
44
- render: () => _jsx(FiltersStoryHost, {}),
278
+ render: (args) => _jsx(FiltersStoryHost, { ...pickFiltersPlaygroundArgs(args) }),
45
279
  };
46
280
  export const WithOneFilter = {
47
- render: () => _jsx(FiltersWithInitialState, {}),
281
+ render: (args) => _jsx(FiltersWithInitialStateHost, { ...pickFiltersPlaygroundArgs(args) }),
282
+ };
283
+ function FiltersGroupedAndSearchHost(props) {
284
+ const [filters, setFilters] = useState([]);
285
+ const { groupedMenuMode, defaultAddFilterGroupsCollapsed, ...raw } = props;
286
+ const { nestedAddFilterGroups: _omitNested, collapsibleAddFilterGroups: _omitCollapsible, defaultAddFilterGroupsCollapsed: _omitDefaultCollapsed, ...playground } = pickFiltersPlaygroundArgs(raw);
287
+ const { t, i18n, filterI18n, dateSelectorI18n } = useFiltersStoryLocale();
288
+ const groupedFieldsWithSearch = useMemo(() => buildGroupedFieldsWithSearch(t, dateSelectorI18n, i18n), [t, dateSelectorI18n, i18n]);
289
+ const groupedI18n = useMemo(() => ({
290
+ ...filterI18n,
291
+ searchFields: t('story.searchFieldsGrouped', { defaultValue: 'Filter by…' }),
292
+ }), [filterI18n, t]);
293
+ const nestedAddFilterGroups = groupedMenuMode === 'nested';
294
+ const collapsibleAddFilterGroups = groupedMenuMode === 'accordion';
295
+ return (_jsxs("div", { className: "flex min-h-32 min-w-[min(100%,28rem)] flex-col gap-4 p-4", children: [_jsx("div", { className: "flex flex-wrap items-start gap-2", children: _jsx(Filters, { filters: filters, fields: groupedFieldsWithSearch, onChange: setFilters, i18n: groupedI18n, ...playground, nestedAddFilterGroups: nestedAddFilterGroups, collapsibleAddFilterGroups: collapsibleAddFilterGroups, defaultAddFilterGroupsCollapsed: defaultAddFilterGroupsCollapsed, trigger: addFilterTriggerButtonLabel(playground.size, groupedI18n.addFilterTitle) }, `${groupedMenuMode}-${defaultAddFilterGroupsCollapsed}`) }), _jsx("p", { className: "text-xs text-muted-foreground", children: t('story.currentFiltersCaption', { defaultValue: 'Current filters:' }) }), _jsx("pre", { className: "max-h-80 max-w-full overflow-auto rounded-md border border-border bg-muted/50 p-3 font-mono text-xs leading-relaxed break-all whitespace-pre-wrap", children: JSON.stringify(filters, null, 2) })] }));
296
+ }
297
+ export const GroupedFieldsAndSearch = {
298
+ args: {
299
+ groupedMenuMode: 'nested',
300
+ defaultAddFilterGroupsCollapsed: true,
301
+ },
302
+ argTypes: {
303
+ ...filtersStoryReadonlyArgTypes,
304
+ ...filtersPlaygroundArgTypes,
305
+ nestedAddFilterGroups: { control: false },
306
+ collapsibleAddFilterGroups: { control: false },
307
+ groupedMenuMode: {
308
+ name: 'Grouped menu mode',
309
+ control: 'inline-radio',
310
+ options: ['nested', 'accordion', 'flat'],
311
+ description: '**Nested** — category rows open a side submenu (hover or keyboard). **Accordion** — click section headers to expand/collapse. **Flat** — section labels only, all fields listed inline. Select/multiselect still use option submenus.',
312
+ },
313
+ defaultAddFilterGroupsCollapsed: {
314
+ name: 'Accordion: start collapsed',
315
+ control: 'boolean',
316
+ if: { arg: 'groupedMenuMode', eq: 'accordion' },
317
+ description: 'When mode is Accordion, start with every group collapsed each time the add-filter menu opens.',
318
+ },
319
+ },
320
+ render: (args) => {
321
+ const a = args;
322
+ return (_jsx(FiltersGroupedAndSearchHost, { ...pickFiltersPlaygroundArgs(a), groupedMenuMode: a.groupedMenuMode ?? 'nested', defaultAddFilterGroupsCollapsed: a.defaultAddFilterGroupsCollapsed ?? true }));
323
+ },
324
+ parameters: {
325
+ controls: {
326
+ sort: 'none',
327
+ },
328
+ docs: {
329
+ description: {
330
+ story: 'Grouped `FilterFieldsConfig` with section labels and search. Use **Grouped menu mode** in **Controls** to switch **Nested** (side submenus), **Accordion** (expand/collapse headers), or **Flat** (labels + inline fields). The **Accordion: start collapsed** control appears when mode is Accordion. Select and multiselect fields still open an options submenu. Use the Storybook **Locale** toolbar to switch languages.',
331
+ },
332
+ },
333
+ },
334
+ };
335
+ function FiltersDateMetricStoryHost(props) {
336
+ const [filters, setFilters] = useState([]);
337
+ const { rollingRangeDisplay, ...raw } = props;
338
+ const playground = pickFiltersPlaygroundArgs(raw);
339
+ const { t, i18n, filterI18n, dateSelectorI18n } = useFiltersStoryLocale();
340
+ const adjRevparOnlyFields = useMemo(() => [
341
+ {
342
+ key: 'adjRevpar',
343
+ label: t('story.fields.adjRevpar', { defaultValue: 'Adj. RevPAR' }),
344
+ type: 'date_metric',
345
+ icon: _jsx(BarChart3, { className: "size-4" }),
346
+ dateMetricProps: {
347
+ showRollingPresets: true,
348
+ showTwoMonths: true,
349
+ rollingRangeDisplay,
350
+ i18nInstance: i18n,
351
+ i18n: dateSelectorI18n,
352
+ },
353
+ },
354
+ ], [rollingRangeDisplay, t, i18n, dateSelectorI18n]);
355
+ return (_jsx("div", { className: "flex min-h-32 min-w-[min(100%,28rem)] flex-wrap items-start gap-2 p-4", children: _jsx(Filters, { filters: filters, fields: adjRevparOnlyFields, onChange: setFilters, i18n: filterI18n, ...playground, trigger: addFilterTriggerButtonLabel(playground.size, filterI18n.addFilterTitle) }) }));
356
+ }
357
+ export const DateMetricAdjRevpar = {
358
+ args: {
359
+ rollingRangeDisplay: 'inline',
360
+ size: 'sm',
361
+ },
362
+ argTypes: {
363
+ ...filtersStoryReadonlyArgTypes,
364
+ ...filtersPlaygroundArgTypes,
365
+ rollingRangeDisplay: {
366
+ name: 'Rolling range display',
367
+ control: 'inline-radio',
368
+ options: ['inline', 'tooltip'],
369
+ description: 'Passed through field config as `dateMetricProps.rollingRangeDisplay`. Inline shows calendar detail on the trigger; Tooltip shows a short rolling phrase with detail on hover.',
370
+ },
371
+ },
372
+ render: (args) => (_jsx(FiltersDateMetricStoryHost, { rollingRangeDisplay: args.rollingRangeDisplay ?? 'inline', ...pickFiltersPlaygroundArgs(args) })),
373
+ parameters: {
374
+ controls: {
375
+ sort: 'none',
376
+ },
377
+ docs: {
378
+ description: {
379
+ story: '`type: "date_metric"`: date range uses Next/Last submenus plus Custom (full `DateSelector` in a dialog). Value range operators (Any value, greater than, less than, between). Values live in `filter.values[0]` as `DateMetricFilterPayload`. Use the **Rolling range display** control at the top of the **Controls** panel to set `dateMetricProps.rollingRangeDisplay` — tooltip mode shows the short rolling phrase on the trigger and the resolved calendar detail on hover. The Storybook **Locale** toolbar updates filter and date strings.',
380
+ },
381
+ },
382
+ },
48
383
  };
@@ -1,5 +1,7 @@
1
1
  export * from './filters-defaults';
2
+ export * from './filters-i18n.shared';
2
3
  export * from './filters-types';
3
4
  export * from './filters-utils';
4
- export { Filters, FiltersContent } from './filters';
5
+ export { dateSegmentLabelForBar, FilterDateMetricBarPeriodSegments, FilterDateMetricBarValueSegment } from './filter-date-metric-value';
6
+ export { DEFAULT_SUBMENU_SEARCH_MIN_OPTIONS, Filters, FiltersContent } from './filters';
5
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/filters/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/filters/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,sBAAsB,EAAE,iCAAiC,EAAE,+BAA+B,EAAE,MAAM,4BAA4B,CAAC;AACxI,OAAO,EAAE,kCAAkC,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC"}
@@ -1,4 +1,6 @@
1
1
  export * from './filters-defaults';
2
+ export * from './filters-i18n.shared';
2
3
  export * from './filters-types';
3
4
  export * from './filters-utils';
4
- export { Filters, FiltersContent } from './filters';
5
+ export { dateSegmentLabelForBar, FilterDateMetricBarPeriodSegments, FilterDateMetricBarValueSegment } from './filter-date-metric-value';
6
+ export { DEFAULT_SUBMENU_SEARCH_MIN_OPTIONS, Filters, FiltersContent } from './filters';
@@ -25,7 +25,7 @@ import { type VariantProps } from 'class-variance-authority';
25
25
  */
26
26
  declare const frameVariants: (props?: ({
27
27
  variant?: "default" | "ghost" | "inverse" | null | undefined;
28
- spacing?: "default" | "sm" | "lg" | "xs" | null | undefined;
28
+ spacing?: "default" | "xs" | "sm" | "lg" | null | undefined;
29
29
  stacked?: boolean | null | undefined;
30
30
  dense?: boolean | null | undefined;
31
31
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Frame, FrameDescription, FrameFooter, FrameHeader, FramePanel, FrameTitle } from '.';
3
3
  const meta = {
4
- title: 'UI/Frame',
4
+ title: 'Components/Frame',
5
5
  component: Frame,
6
6
  tags: ['autodocs'],
7
7
  parameters: {
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Button } from '../button';
3
3
  import { HoverCard, HoverCardContent, HoverCardTrigger } from './hover-card';
4
4
  const meta = {
5
- title: 'UI/HoverCard',
5
+ title: 'Components/HoverCard',
6
6
  component: HoverCard,
7
7
  tags: ['autodocs'],
8
8
  parameters: {
@@ -14,7 +14,6 @@ export * from './collapsible';
14
14
  export * from './command';
15
15
  export * from './combobox';
16
16
  export * from './context-menu';
17
- export * from './date-selector';
18
17
  export * from './dialog';
19
18
  export * from './direction';
20
19
  export * from './drawer';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC"}
@@ -14,7 +14,6 @@ export * from './collapsible';
14
14
  export * from './command';
15
15
  export * from './combobox';
16
16
  export * from './context-menu';
17
- export * from './date-selector';
18
17
  export * from './dialog';
19
18
  export * from './direction';
20
19
  export * from './drawer';
@@ -3,7 +3,7 @@ import { Field } from '../field';
3
3
  import { Label } from '../label';
4
4
  import { Input, inputSizeKeys } from './input';
5
5
  const meta = {
6
- title: 'UI/Input',
6
+ title: 'Components/Input',
7
7
  component: Input,
8
8
  tags: ['autodocs'],
9
9
  parameters: {
@@ -6,13 +6,13 @@ import type { TextareaProps } from '../textarea';
6
6
  /** Props for `InputGroup`. */
7
7
  export type InputGroupProps = React.ComponentProps<'div'>;
8
8
  declare const inputGroupAddonVariants: (props?: ({
9
- align?: "inline-end" | "inline-start" | "block-start" | "block-end" | null | undefined;
9
+ align?: "inline-start" | "inline-end" | "block-start" | "block-end" | null | undefined;
10
10
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
11
11
  export declare const inputGroupAddonAlignKeys: readonly ["inline-start", "inline-end", "block-start", "block-end"];
12
12
  /** Props for `InputGroupAddon`. */
13
13
  export type InputGroupAddonProps = React.ComponentProps<'div'> & VariantProps<typeof inputGroupAddonVariants>;
14
14
  declare const inputGroupButtonVariants: (props?: ({
15
- size?: "sm" | "xs" | "icon-xs" | "icon-sm" | null | undefined;
15
+ size?: "xs" | "sm" | "icon-xs" | "icon-sm" | null | undefined;
16
16
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
17
17
  export declare const inputGroupButtonSizeKeys: readonly ["xs", "sm", "icon-xs", "icon-sm"];
18
18
  /** Props for `InputGroupButton` (ghost button sized for use inside a group). */