@optimum-intelligence/opti-ui 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -7
- package/dist/components/accordion/Accordion.d.ts +12 -0
- package/dist/components/accordion/Accordion.js +12 -0
- package/dist/components/accordion/Accordion.js.map +1 -1
- package/dist/components/alert/Alert.d.ts +4 -0
- package/dist/components/alert/Alert.js.map +1 -1
- package/dist/components/app-shell/AppShell.d.ts +96 -5
- package/dist/components/app-shell/AppShell.js +676 -185
- package/dist/components/app-shell/AppShell.js.map +1 -1
- package/dist/components/avatar/Avatar.d.ts +8 -0
- package/dist/components/avatar/Avatar.js +2 -0
- package/dist/components/avatar/Avatar.js.map +1 -1
- package/dist/components/badge/Badge.d.ts +10 -3
- package/dist/components/badge/Badge.js +17 -28
- package/dist/components/badge/Badge.js.map +1 -1
- package/dist/components/breadcrumbs/Breadcrumbs.d.ts +1 -0
- package/dist/components/breadcrumbs/Breadcrumbs.js.map +1 -1
- package/dist/components/button/Button.d.ts +8 -0
- package/dist/components/button/Button.js +6 -0
- package/dist/components/button/Button.js.map +1 -1
- package/dist/components/calendar/Calendar.d.ts +21 -7
- package/dist/components/calendar/Calendar.js +285 -212
- package/dist/components/calendar/Calendar.js.map +1 -1
- package/dist/components/calendar/DateConfig.d.ts +37 -0
- package/dist/components/calendar/DateConfig.js +75 -0
- package/dist/components/calendar/DateConfig.js.map +1 -0
- package/dist/components/calendar/date-utils.d.ts +41 -6
- package/dist/components/calendar/date-utils.js +119 -20
- package/dist/components/calendar/date-utils.js.map +1 -1
- package/dist/components/card/Card.d.ts +13 -0
- package/dist/components/card/Card.js +13 -0
- package/dist/components/card/Card.js.map +1 -1
- package/dist/components/choice/Choice.d.ts +13 -0
- package/dist/components/choice/Choice.js +10 -0
- package/dist/components/choice/Choice.js.map +1 -1
- package/dist/components/combobox/Combobox.d.ts +12 -0
- package/dist/components/combobox/Combobox.js.map +1 -1
- package/dist/components/command-palette/CommandPalette.d.ts +10 -0
- package/dist/components/command-palette/CommandPalette.js.map +1 -1
- package/dist/components/data-table/DataTable.d.ts +4 -0
- package/dist/components/data-table/DataTable.js.map +1 -1
- package/dist/components/data-table/DataTableContent.d.ts +1 -0
- package/dist/components/data-table/DataTableContent.js +3 -3
- package/dist/components/data-table/DataTableContent.js.map +1 -1
- package/dist/components/data-table/DataTableFilters.d.ts +3 -0
- package/dist/components/data-table/DataTableFilters.js.map +1 -1
- package/dist/components/data-table/types.d.ts +16 -0
- package/dist/components/date-picker/DatePicker.d.ts +33 -10
- package/dist/components/date-picker/DatePicker.js +315 -279
- package/dist/components/date-picker/DatePicker.js.map +1 -1
- package/dist/components/date-picker/DateRangePicker.d.ts +12 -4
- package/dist/components/date-picker/DateRangePicker.js +240 -206
- package/dist/components/date-picker/DateRangePicker.js.map +1 -1
- package/dist/components/date-picker/PickerField.d.ts +13 -0
- package/dist/components/date-picker/PickerField.js +1 -1
- package/dist/components/date-picker/PickerField.js.map +1 -1
- package/dist/components/dialog/Dialog.d.ts +5 -0
- package/dist/components/dialog/Dialog.js.map +1 -1
- package/dist/components/drawer/Drawer.d.ts +10 -0
- package/dist/components/drawer/Drawer.js.map +1 -1
- package/dist/components/empty-state/EmptyState.d.ts +5 -0
- package/dist/components/empty-state/EmptyState.js.map +1 -1
- package/dist/components/file-upload/FileUpload.d.ts +21 -0
- package/dist/components/file-upload/FileUpload.js.map +1 -1
- package/dist/components/input/Input.d.ts +7 -0
- package/dist/components/input/Input.js +3 -0
- package/dist/components/input/Input.js.map +1 -1
- package/dist/components/link/Link.d.ts +1 -0
- package/dist/components/link/Link.js.map +1 -1
- package/dist/components/menu/Menu.d.ts +6 -0
- package/dist/components/menu/Menu.js.map +1 -1
- package/dist/components/number-field/NumberField.d.ts +7 -0
- package/dist/components/number-field/NumberField.js.map +1 -1
- package/dist/components/pagination/Pagination.d.ts +4 -0
- package/dist/components/pagination/Pagination.js.map +1 -1
- package/dist/components/popover/Popover.d.ts +4 -0
- package/dist/components/popover/Popover.js.map +1 -1
- package/dist/components/preview-card/PreviewCard.d.ts +4 -0
- package/dist/components/preview-card/PreviewCard.js.map +1 -1
- package/dist/components/progress/Progress.d.ts +8 -0
- package/dist/components/progress/Progress.js.map +1 -1
- package/dist/components/scroll-area/ScrollArea.d.ts +1 -0
- package/dist/components/scroll-area/ScrollArea.js.map +1 -1
- package/dist/components/search-input/SearchInput.d.ts +2 -0
- package/dist/components/search-input/SearchInput.js.map +1 -1
- package/dist/components/select/Select.d.ts +11 -0
- package/dist/components/select/Select.js.map +1 -1
- package/dist/components/separator/Separator.d.ts +1 -0
- package/dist/components/separator/Separator.js +1 -0
- package/dist/components/separator/Separator.js.map +1 -1
- package/dist/components/skeleton/Skeleton.d.ts +7 -0
- package/dist/components/skeleton/Skeleton.js +1 -0
- package/dist/components/skeleton/Skeleton.js.map +1 -1
- package/dist/components/slider/Slider.d.ts +1 -0
- package/dist/components/slider/Slider.js.map +1 -1
- package/dist/components/spinner/Spinner.d.ts +2 -0
- package/dist/components/spinner/Spinner.js +1 -0
- package/dist/components/spinner/Spinner.js.map +1 -1
- package/dist/components/stat-card/StatCard.d.ts +4 -0
- package/dist/components/stat-card/StatCard.js.map +1 -1
- package/dist/components/stepper/Stepper.d.ts +4 -0
- package/dist/components/stepper/Stepper.js.map +1 -1
- package/dist/components/table/Table.d.ts +24 -1
- package/dist/components/table/Table.js +19 -2
- package/dist/components/table/Table.js.map +1 -1
- package/dist/components/tabs/Tabs.d.ts +1 -0
- package/dist/components/tabs/Tabs.js.map +1 -1
- package/dist/components/tag/Tag.d.ts +3 -0
- package/dist/components/tag/Tag.js.map +1 -1
- package/dist/components/toast/Toast.d.ts +2 -0
- package/dist/components/toast/Toast.js.map +1 -1
- package/dist/components/toggle/Toggle.d.ts +7 -0
- package/dist/components/toggle/Toggle.js +1 -0
- package/dist/components/toggle/Toggle.js.map +1 -1
- package/dist/components/tooltip/Tooltip.d.ts +8 -0
- package/dist/components/tooltip/Tooltip.js.map +1 -1
- package/dist/components/typography/Typography.d.ts +5 -0
- package/dist/components/typography/Typography.js +2 -0
- package/dist/components/typography/Typography.js.map +1 -1
- package/dist/components.json +5534 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +4 -3
- package/dist/llms-full.txt +2707 -0
- package/dist/llms.txt +177 -0
- package/dist/opti-ui.css +171 -81
- package/dist/theme/ThemeProvider.d.ts +1 -0
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/utils/portal.d.ts +4 -0
- package/dist/utils/portal.js +4 -0
- package/dist/utils/portal.js.map +1 -1
- package/package.json +7 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-utils.js","names":["DATE","pad","value","length","String","padStart","toTime","match","exec","year","month","day","Number","date","Date","UTC","setUTCFullYear","getUTCMonth","getUTCDate","getTime","fromDate","getUTCFullYear","datePart","time","timePart","formatDate","hours","minutes","seconds","split","slice","formatDateLong","locale","Intl","DateTimeFormat","timeZone","format","toUtcDate","todayIso","now","getFullYear","getMonth","getDate","addDays","amount","setUTCDate","addMonths","setUTCMonth","lastDay","Math","min","startOfMonth","weekday","getUTCDay","monthGrid","weekStartsOn","first","start","Array","from","_","index","clampDate","max","DateRange","end","toRange","a","b","second"],"sources":["../../../src/components/calendar/date-utils.ts"],"sourcesContent":["// Dates are plain ISO strings (\"2026-03-09\"), the same format native date\n// inputs and most APIs use. Arithmetic goes through UTC so it is unaffected by\n// the local time zone and daylight saving.\n\nconst DATE = /^(\\d{4})-(\\d{2})-(\\d{2})/;\n\nexport function pad(value: number, length = 2): string {\n return String(value).padStart(length, '0');\n}\n\n/** `\"2026-03-09…\"` → UTC timestamp, or `null` when the string is not a real date. */\nfunction toTime(value: string | null | undefined): number | null {\n const match = value ? DATE.exec(value) : null;\n if (!match) return null;\n const [year, month, day] = [Number(match[1]), Number(match[2]), Number(match[3])];\n const date = new Date(Date.UTC(year, month - 1, day));\n date.setUTCFullYear(year);\n return date.getUTCMonth() === month - 1 && date.getUTCDate() === day ? date.getTime() : null;\n}\n\nfunction fromDate(date: Date): string {\n return `${pad(date.getUTCFullYear(), 4)}-${pad(date.getUTCMonth() + 1)}-${pad(date.getUTCDate())}`;\n}\n\n/** The date part of an ISO date or date-time string, or `null` when invalid. */\nexport function datePart(value: string | null | undefined): string | null {\n const time = toTime(value);\n return time === null ? null : fromDate(new Date(time));\n}\n\n/** The time part (`\"14:30\"`, `\"14:30:05\"`, …) of an ISO date-time string. */\nexport function timePart(value: string | null | undefined): string | null {\n const match = value ? /T(\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,3})?)?)/.exec(value) : null;\n return match ? match[1] : null;\n}\n\n/** `\"2026-03-09\"`, or `\"2026-03-09 14:30:00\"` for a date-time: the same everywhere, on a 24-hour clock. */\nexport function formatDate(value: string | null | undefined): string {\n const date = datePart(value);\n if (!date) return '';\n const time = timePart(value);\n if (!time) return date;\n const [hours, minutes, seconds = '00'] = time.split(':');\n return `${date} ${hours}:${minutes}:${seconds.slice(0, 2)}`;\n}\n\n/**\n * The written form, `\"2026. March 9.\"`, or `\"2026. March 9. 14:30\"` for a date-time.\n * The order and the 24-hour clock are fixed; `locale` only translates the month name.\n */\nexport function formatDateLong(value: string | null | undefined, locale?: string): string {\n const date = datePart(value);\n if (!date) return '';\n const month = new Intl.DateTimeFormat(locale, { month: 'long', timeZone: 'UTC' }).format(toUtcDate(date));\n const time = timePart(value);\n return `${Number(date.slice(0, 4))}. ${month} ${Number(date.slice(8))}.${time ? ` ${time.slice(0, 5)}` : ''}`;\n}\n\nexport function todayIso(): string {\n const now = new Date();\n return `${pad(now.getFullYear(), 4)}-${pad(now.getMonth() + 1)}-${pad(now.getDate())}`;\n}\n\nexport function addDays(value: string, amount: number): string {\n const date = new Date(toTime(value) ?? 0);\n date.setUTCDate(date.getUTCDate() + amount);\n return fromDate(date);\n}\n\n/** Moves by whole months, clamping the day (31 Jan + 1 month → 28/29 Feb). */\nexport function addMonths(value: string, amount: number): string {\n const date = new Date(toTime(value) ?? 0);\n const day = date.getUTCDate();\n date.setUTCDate(1);\n date.setUTCMonth(date.getUTCMonth() + amount);\n const lastDay = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth() + 1, 0)).getUTCDate();\n date.setUTCDate(Math.min(day, lastDay));\n return fromDate(date);\n}\n\nexport function startOfMonth(value: string): string {\n return `${value.slice(0, 8)}01`;\n}\n\n/** 0 (Sunday) … 6 (Saturday). */\nexport function weekday(value: string): number {\n return new Date(toTime(value) ?? 0).getUTCDay();\n}\n\n/** The 42 days (six weeks) shown for the month containing `value`. */\nexport function monthGrid(value: string, weekStartsOn: number): string[] {\n const first = startOfMonth(value);\n const start = addDays(first, -((weekday(first) - weekStartsOn + 7) % 7));\n return Array.from({ length: 42 }, (_, index) => addDays(start, index));\n}\n\n/** A UTC `Date` for formatting an ISO date with `Intl` (pass `timeZone: 'UTC'`). */\nexport function toUtcDate(value: string): Date {\n return new Date(toTime(value) ?? 0);\n}\n\nexport function clampDate(value: string, min?: string | null, max?: string | null): string {\n if (min && value < min) return min;\n if (max && value > max) return max;\n return value;\n}\n\nexport interface DateRange {\n /** First day, as an ISO date. */\n start: string;\n /** Last day (inclusive), as an ISO date. */\n end: string;\n}\n\n/** Two days as an ordered range, or `null` when either is missing or invalid. */\nexport function toRange(a: string | null | undefined, b: string | null | undefined): DateRange | null {\n const [first, second] = [datePart(a), datePart(b)];\n if (!first || !second) return null;\n return first <= second ? { start: first, end: second } : { start: second, end: first };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"date-utils.js","names":["DATE","pad","value","length","String","padStart","toTime","match","exec","year","month","day","Number","date","Date","UTC","setUTCFullYear","getUTCMonth","getUTCDate","getTime","fromDate","getUTCFullYear","datePart","time","timePart","DateGranularity","UNITS","hasTime","granularity","indexOf","defaultFormats","Record","hour","minute","second","browserTimeZone","Intl","DateTimeFormat","resolvedOptions","timeZone","OFFSET","zoneFormats","Map","wallAt","format","get","hourCycle","set","part","Object","fromEntries","formatToParts","map","item","type","wallTime","wall","hours","minutes","seconds","split","Math","floor","instantOf","local","offsets","candidates","offset","exact","filter","min","toWall","slice","test","instant","isNaN","toInstant","toISOString","replace","truncate","FormatDateOptions","locale","formats","Partial","TOKENS","formatDate","options","unit","endsWith","pattern","style","toUtcDate","parts","YYYY","MMMM","MMM","MM","DD","HH","mm","ss","token","literal","todayIso","now","addDays","amount","setUTCDate","addMonths","setUTCMonth","lastDay","startOfMonth","weekday","getUTCDay","monthGrid","weekStartsOn","first","start","Array","from","_","index","clampDate","max","DateRange","end","toRange","a","b"],"sources":["../../../src/components/calendar/date-utils.ts"],"sourcesContent":["// Calendar dates are plain ISO strings (\"2026-03-09\"), the same format native date\n// inputs and most APIs use. Arithmetic goes through UTC so it is unaffected by\n// the local time zone and daylight saving. Date-times are UTC instants\n// (\"2026-03-09T13:30:00Z\"), turned into wall-clock strings in a time zone for\n// display and editing, and back into instants only on commit.\n\nconst DATE = /^(\\d{4})-(\\d{2})-(\\d{2})/;\n\nexport function pad(value: number, length = 2): string {\n return String(value).padStart(length, '0');\n}\n\n/** `\"2026-03-09…\"` → UTC timestamp, or `null` when the string is not a real date. */\nfunction toTime(value: string | null | undefined): number | null {\n const match = value ? DATE.exec(value) : null;\n if (!match) return null;\n const [year, month, day] = [Number(match[1]), Number(match[2]), Number(match[3])];\n const date = new Date(Date.UTC(year, month - 1, day));\n date.setUTCFullYear(year);\n return date.getUTCMonth() === month - 1 && date.getUTCDate() === day ? date.getTime() : null;\n}\n\nfunction fromDate(date: Date): string {\n return `${pad(date.getUTCFullYear(), 4)}-${pad(date.getUTCMonth() + 1)}-${pad(date.getUTCDate())}`;\n}\n\n/** The date part of an ISO date or date-time string, or `null` when invalid. */\nexport function datePart(value: string | null | undefined): string | null {\n const time = toTime(value);\n return time === null ? null : fromDate(new Date(time));\n}\n\n/** The time part (`\"14:30\"`, `\"14:30:05\"`, …) of an ISO date-time string. */\nexport function timePart(value: string | null | undefined): string | null {\n const match = value ? /T(\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,3})?)?)/.exec(value) : null;\n return match ? match[1] : null;\n}\n\n/** How precise a date value is, from a whole year down to the second. */\nexport type DateGranularity = 'year' | 'month' | 'day' | 'hour' | 'minute' | 'second';\n\nconst UNITS: DateGranularity[] = ['year', 'month', 'day', 'hour', 'minute', 'second'];\n\n/** Whether `granularity` includes a time of day. */\nexport function hasTime(granularity: DateGranularity): boolean {\n return UNITS.indexOf(granularity) > UNITS.indexOf('day');\n}\n\n/** Default display pattern for each granularity. */\nexport const defaultFormats: Record<DateGranularity, string> = {\n year: 'YYYY',\n month: 'YYYY-MM',\n day: 'YYYY-MM-DD',\n hour: 'YYYY-MM-DD HH',\n minute: 'YYYY-MM-DD HH:mm',\n second: 'YYYY-MM-DD HH:mm:ss',\n};\n\n/** The browser's IANA time zone, e.g. `\"Europe/Budapest\"`. */\nexport function browserTimeZone(): string {\n return Intl.DateTimeFormat().resolvedOptions().timeZone;\n}\n\nconst OFFSET = /(?:Z|[+-]\\d{2}:?\\d{2})$/i;\n\nconst zoneFormats = new Map<string, Intl.DateTimeFormat>();\n\n/** `\"2026-03-09T14:30:00\"`: the wall clock in `timeZone` at a UTC timestamp. */\nfunction wallAt(time: number, timeZone: string): string {\n let format = zoneFormats.get(timeZone);\n if (!format) {\n format = new Intl.DateTimeFormat('en-US', {\n timeZone,\n hourCycle: 'h23',\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n });\n zoneFormats.set(timeZone, format);\n }\n const part = Object.fromEntries(format.formatToParts(new Date(time)).map((item) => [item.type, item.value]));\n return `${pad(Number(part.year), 4)}-${part.month}-${part.day}T${part.hour}:${part.minute}:${part.second}`;\n}\n\n/** A wall-clock string read as if it were UTC, in milliseconds. */\nfunction wallTime(wall: string): number {\n const [hours = 0, minutes = 0, seconds = 0] = (timePart(wall) ?? '').split(':').map((item) => Math.floor(Number(item)) || 0);\n return (toTime(wall) ?? 0) + ((hours * 60 + minutes) * 60 + seconds) * 1000;\n}\n\n/**\n * The UTC timestamp of a wall clock in `timeZone`. In a daylight-saving overlap\n * the earlier offset wins; a time skipped by a gap is read with the offset before it.\n */\nfunction instantOf(wall: string, timeZone: string): number {\n const local = wallTime(wall);\n const offsets = [local - 86_400_000, local + 86_400_000].map((time) => wallTime(wallAt(time, timeZone)) - time);\n const candidates = offsets.map((offset) => local - offset);\n const exact = candidates.filter((time) => wallTime(wallAt(time, timeZone)) === local);\n return exact.length ? Math.min(...exact) : candidates[0];\n}\n\n/**\n * Normalises a value to the wall clock in `timeZone`: `\"2026-03-09\"` for a date,\n * `\"2026-03-09T14:30:00\"` for a date-time. Instants (with `Z` or an offset) are converted;\n * date-times without one are taken as already in `timeZone`. `null` when invalid.\n */\nexport function toWall(value: string | null | undefined, timeZone: string): string | null {\n const date = datePart(value);\n if (!date || !value) return null;\n const time = timePart(value);\n if (!time) return date;\n const local = `${date}T${pad(Number(time.slice(0, 2)))}:${time.slice(3, 5)}:${time.slice(6, 8) || '00'}`;\n if (!OFFSET.test(value)) return local;\n const instant = new Date(value).getTime();\n return Number.isNaN(instant) ? local : wallAt(instant, timeZone);\n}\n\n/** The UTC instant (`\"2026-03-09T13:30:00Z\"`) of a wall clock in `timeZone`. */\nexport function toInstant(wall: string, timeZone: string): string {\n return new Date(instantOf(wall, timeZone)).toISOString().replace(/\\.\\d{3}Z$/, 'Z');\n}\n\n/** Cuts a wall clock down to `granularity`: `\"2026-03-01\"` for a month, `\"2026-03-09T14:00:00\"` for an hour. */\nexport function truncate(wall: string, granularity: DateGranularity): string {\n const date = datePart(wall) ?? wall.slice(0, 10);\n if (granularity === 'year') return `${date.slice(0, 4)}-01-01`;\n if (granularity === 'month') return `${date.slice(0, 7)}-01`;\n if (granularity === 'day') return date;\n const [hours = '00', minutes = '00', seconds = '00'] = (timePart(wall) ?? '').split(':');\n const time = granularity === 'hour' ? `${hours}:00:00` : granularity === 'minute' ? `${hours}:${minutes}:00` : `${hours}:${minutes}:${seconds.slice(0, 2)}`;\n return `${date}T${time}`;\n}\n\n/** Options for `formatDate`. Pass `useDateConfig()` in to follow the app's `DateConfigProvider`. */\nexport interface FormatDateOptions {\n /** Token pattern: `YYYY`, `MM`, `MMM` / `MMMM` (month name in `locale`), `DD`, `HH` (24h), `mm`, `ss`. Text in `[brackets]` is kept as is. Wins over `formats`. */\n format?: string;\n /** Unit the default pattern stops at. Defaults to `day` for dates and `minute` (or `second` when set) for date-times. */\n granularity?: DateGranularity;\n /** IANA zone that instants are shown in. Defaults to the browser's. Values without an offset are not shifted. */\n timeZone?: string;\n /** BCP 47 locale for `MMM` / `MMMM`. */\n locale?: string;\n /** Default patterns per granularity, e.g. from `DateConfigProvider`. */\n formats?: Partial<Record<DateGranularity, string>>;\n}\n\nconst TOKENS = /\\[([^\\]]*)\\]|YYYY|MMMM|MMM|MM|DD|HH|mm|ss/g;\n\n/**\n * Formats a date or date-time the way the date pickers show it: ISO-style\n * (`2026-03-09 14:30`) on a 24-hour clock by default, or with a custom `format`.\n * Instants (`\"2026-03-09T13:30:00Z\"`) are shown in `timeZone`. Returns `\"\"` for an invalid value.\n *\n * @example\n * formatDate('2026-03-09T13:30:00Z', { timeZone: 'Europe/Budapest' }); // \"2026-03-09 14:30\"\n * formatDate('2026-03-01', { granularity: 'month', format: 'MMMM YYYY', locale: 'en' }); // \"March 2026\"\n */\nexport function formatDate(value: string | null | undefined, options: FormatDateOptions = {}): string {\n const { format, granularity, timeZone = browserTimeZone(), locale, formats } = options;\n const wall = toWall(value, timeZone);\n if (!wall) return '';\n const unit = granularity ?? (wall.length > 10 ? (wall.endsWith(':00') ? 'minute' : 'second') : 'day');\n const pattern = format ?? formats?.[unit] ?? defaultFormats[unit];\n const time = timePart(wall) ?? '00:00:00';\n const month = (style: 'short' | 'long') =>\n new Intl.DateTimeFormat(locale, { month: style, timeZone: 'UTC' }).format(toUtcDate(wall));\n const parts: Record<string, () => string> = {\n YYYY: () => wall.slice(0, 4),\n MMMM: () => month('long'),\n MMM: () => month('short'),\n MM: () => wall.slice(5, 7),\n DD: () => wall.slice(8, 10),\n HH: () => time.slice(0, 2),\n mm: () => time.slice(3, 5),\n ss: () => time.slice(6, 8),\n };\n return pattern.replace(TOKENS, (token, literal: string | undefined) => literal ?? parts[token]());\n}\n\n/** Today's date in `timeZone` (the browser's by default). */\nexport function todayIso(timeZone?: string): string {\n return wallAt(Date.now(), timeZone ?? browserTimeZone()).slice(0, 10);\n}\n\nexport function addDays(value: string, amount: number): string {\n const date = new Date(toTime(value) ?? 0);\n date.setUTCDate(date.getUTCDate() + amount);\n return fromDate(date);\n}\n\n/** Moves by whole months, clamping the day (31 Jan + 1 month → 28/29 Feb). */\nexport function addMonths(value: string, amount: number): string {\n const date = new Date(toTime(value) ?? 0);\n const day = date.getUTCDate();\n date.setUTCDate(1);\n date.setUTCMonth(date.getUTCMonth() + amount);\n const lastDay = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth() + 1, 0)).getUTCDate();\n date.setUTCDate(Math.min(day, lastDay));\n return fromDate(date);\n}\n\nexport function startOfMonth(value: string): string {\n return `${value.slice(0, 8)}01`;\n}\n\n/** 0 (Sunday) … 6 (Saturday). */\nexport function weekday(value: string): number {\n return new Date(toTime(value) ?? 0).getUTCDay();\n}\n\n/** The 42 days (six weeks) shown for the month containing `value`. */\nexport function monthGrid(value: string, weekStartsOn: number): string[] {\n const first = startOfMonth(value);\n const start = addDays(first, -((weekday(first) - weekStartsOn + 7) % 7));\n return Array.from({ length: 42 }, (_, index) => addDays(start, index));\n}\n\n/** A UTC `Date` for formatting an ISO date with `Intl` (pass `timeZone: 'UTC'`). */\nexport function toUtcDate(value: string): Date {\n return new Date(toTime(value) ?? 0);\n}\n\nexport function clampDate(value: string, min?: string | null, max?: string | null): string {\n if (min && value < min) return min;\n if (max && value > max) return max;\n return value;\n}\n\nexport interface DateRange {\n /** First day, as an ISO date. */\n start: string;\n /** Last day (inclusive), as an ISO date. */\n end: string;\n}\n\n/** Two days as an ordered range, or `null` when either is missing or invalid. */\nexport function toRange(a: string | null | undefined, b: string | null | undefined): DateRange | null {\n const [first, second] = [datePart(a), datePart(b)];\n if (!first || !second) return null;\n return first <= second ? { start: first, end: second } : { start: second, end: first };\n}\n"],"mappings":";;AAMA,IAAMA,OAAO;AAEb,SAAgBC,IAAIC,OAAeC,SAAS,GAAW;CACrD,OAAOC,OAAOF,KAAK,CAAC,CAACG,SAASF,QAAQ,GAAG;AAC3C;;AAGA,SAASG,OAAOJ,OAAiD;CAC/D,MAAMK,QAAQL,QAAQF,KAAKQ,KAAKN,KAAK,IAAI;CACzC,IAAI,CAACK,OAAO,OAAO;CACnB,MAAM,CAACE,MAAMC,OAAOC,OAAO;EAACC,OAAOL,MAAM,EAAE;EAAGK,OAAOL,MAAM,EAAE;EAAGK,OAAOL,MAAM,EAAE;CAAC;CAChF,MAAMM,OAAO,IAAIC,KAAKA,KAAKC,IAAIN,MAAMC,QAAQ,GAAGC,GAAG,CAAC;CACpDE,KAAKG,eAAeP,IAAI;CACxB,OAAOI,KAAKI,YAAY,MAAMP,QAAQ,KAAKG,KAAKK,WAAW,MAAMP,MAAME,KAAKM,QAAQ,IAAI;AAC1F;AAEA,SAASC,SAASP,MAAoB;CACpC,OAAO,GAAGZ,IAAIY,KAAKQ,eAAe,GAAG,CAAC,EAAC,GAAIpB,IAAIY,KAAKI,YAAY,IAAI,CAAC,EAAC,GAAIhB,IAAIY,KAAKK,WAAW,CAAC;AACjG;;AAGA,SAAgBI,SAASpB,OAAiD;CACxE,MAAMqB,OAAOjB,OAAOJ,KAAK;CACzB,OAAOqB,SAAS,OAAO,OAAOH,SAAS,IAAIN,KAAKS,IAAI,CAAC;AACvD;;AAGA,SAAgBC,SAAStB,OAAiD;CACxE,MAAMK,QAAQL,QAAQ,0CAA0CM,KAAKN,KAAK,IAAI;CAC9E,OAAOK,QAAQA,MAAM,KAAK;AAC5B;AAKA,IAAMmB,QAA2B;CAAC;CAAQ;CAAS;CAAO;CAAQ;CAAU;AAAQ;;AAGpF,SAAgBC,QAAQC,aAAuC;CAC7D,OAAOF,MAAMG,QAAQD,WAAW,IAAIF,MAAMG,QAAQ,KAAK;AACzD;;AAGA,IAAaC,iBAAkD;CAC7DrB,MAAM;CACNC,OAAO;CACPC,KAAK;CACLqB,MAAM;CACNC,QAAQ;CACRC,QAAQ;AACV;;AAGA,SAAgBC,kBAA0B;CACxC,OAAOC,KAAKC,eAAe,CAAC,CAACC,gBAAgB,CAAC,CAACC;AACjD;AAEA,IAAMC,SAAS;AAEf,IAAMC,8BAAc,IAAIC,IAAiC;;AAGzD,SAASC,OAAOpB,MAAcgB,UAA0B;CACtD,IAAIK,SAASH,YAAYI,IAAIN,QAAQ;CACrC,IAAI,CAACK,QAAQ;EACXA,SAAS,IAAIR,KAAKC,eAAe,SAAS;GACxCE;GACAO,WAAW;GACXrC,MAAM;GACNC,OAAO;GACPC,KAAK;GACLqB,MAAM;GACNC,QAAQ;GACRC,QAAQ;EACV,CAAC;EACDO,YAAYM,IAAIR,UAAUK,MAAM;CAClC;CACA,MAAMI,OAAOC,OAAOC,YAAYN,OAAOO,cAAc,IAAIrC,KAAKS,IAAI,CAAC,CAAC,CAAC6B,KAAKC,SAAS,CAACA,KAAKC,MAAMD,KAAKnD,KAAK,CAAC,CAAC;CAC3G,OAAO,GAAGD,IAAIW,OAAOoC,KAAKvC,IAAI,GAAG,CAAC,EAAC,GAAIuC,KAAKtC,MAAK,GAAIsC,KAAKrC,IAAG,GAAIqC,KAAKhB,KAAI,GAAIgB,KAAKf,OAAM,GAAIe,KAAKd;AACpG;;AAGA,SAASqB,SAASC,MAAsB;CACtC,MAAM,CAACC,QAAQ,GAAGC,UAAU,GAAGC,UAAU,MAAMnC,SAASgC,IAAI,KAAK,GAAA,CAAII,MAAM,GAAG,CAAC,CAACR,KAAKC,SAASQ,KAAKC,MAAMlD,OAAOyC,IAAI,CAAC,KAAK,CAAC;CAC3H,QAAQ/C,OAAOkD,IAAI,KAAK,OAAOC,QAAQ,KAAKC,WAAW,KAAKC,WAAW;AACzE;;;;;AAMA,SAASI,UAAUP,MAAcjB,UAA0B;CACzD,MAAMyB,QAAQT,SAASC,IAAI;CAE3B,MAAMU,aADU,CAACF,QAAQ,OAAYA,QAAQ,KAAU,CAAC,CAACZ,KAAK7B,SAASgC,SAASZ,OAAOpB,MAAMgB,QAAQ,CAAC,IAAIhB,IACvF0C,CAAAA,CAAQb,KAAKe,WAAWH,QAAQG,MAAM;CACzD,MAAMC,QAAQF,WAAWG,QAAQ9C,SAASgC,SAASZ,OAAOpB,MAAMgB,QAAQ,CAAC,MAAMyB,KAAK;CACpF,OAAOI,MAAMjE,SAAS0D,KAAKS,IAAI,GAAGF,KAAK,IAAIF,WAAW;AACxD;;;;;;AAOA,SAAgBK,OAAOrE,OAAkCqC,UAAiC;CACxF,MAAM1B,OAAOS,SAASpB,KAAK;CAC3B,IAAI,CAACW,QAAQ,CAACX,OAAO,OAAO;CAC5B,MAAMqB,OAAOC,SAAStB,KAAK;CAC3B,IAAI,CAACqB,MAAM,OAAOV;CAClB,MAAMmD,QAAQ,GAAGnD,KAAI,GAAIZ,IAAIW,OAAOW,KAAKiD,MAAM,GAAG,CAAC,CAAC,CAAC,EAAC,GAAIjD,KAAKiD,MAAM,GAAG,CAAC,EAAC,GAAIjD,KAAKiD,MAAM,GAAG,CAAC,KAAK;CAClG,IAAI,CAAChC,OAAOiC,KAAKvE,KAAK,GAAG,OAAO8D;CAChC,MAAMU,UAAU,IAAI5D,KAAKZ,KAAK,CAAC,CAACiB,QAAQ;CACxC,OAAOP,OAAO+D,MAAMD,OAAO,IAAIV,QAAQrB,OAAO+B,SAASnC,QAAQ;AACjE;;AAGA,SAAgBqC,UAAUpB,MAAcjB,UAA0B;CAChE,OAAO,IAAIzB,KAAKiD,UAAUP,MAAMjB,QAAQ,CAAC,CAAC,CAACsC,YAAY,CAAC,CAACC,QAAQ,aAAa,GAAG;AACnF;;AAGA,SAAgBC,SAASvB,MAAc5B,aAAsC;CAC3E,MAAMf,OAAOS,SAASkC,IAAI,KAAKA,KAAKgB,MAAM,GAAG,EAAE;CAC/C,IAAI5C,gBAAgB,QAAQ,OAAO,GAAGf,KAAK2D,MAAM,GAAG,CAAC,EAAC;CACtD,IAAI5C,gBAAgB,SAAS,OAAO,GAAGf,KAAK2D,MAAM,GAAG,CAAC,EAAC;CACvD,IAAI5C,gBAAgB,OAAO,OAAOf;CAClC,MAAM,CAAC4C,QAAQ,MAAMC,UAAU,MAAMC,UAAU,SAASnC,SAASgC,IAAI,KAAK,GAAA,CAAII,MAAM,GAAG;CAEvF,OAAO,GAAG/C,KAAI,GADDe,gBAAgB,SAAS,GAAG6B,MAAK,UAAW7B,gBAAgB,WAAW,GAAG6B,MAAK,GAAIC,QAAO,OAAQ,GAAGD,MAAK,GAAIC,QAAO,GAAIC,QAAQa,MAAM,GAAG,CAAC;AAE1J;AAgBA,IAAMY,SAAS;;;;;;;;;;AAWf,SAAgBC,WAAWnF,OAAkCoF,UAA6B,CAAC,GAAW;CACpG,MAAM,EAAE1C,QAAQhB,aAAaW,WAAWJ,gBAAgB,GAAG8C,QAAQC,YAAYI;CAC/E,MAAM9B,OAAOe,OAAOrE,OAAOqC,QAAQ;CACnC,IAAI,CAACiB,MAAM,OAAO;CAClB,MAAM+B,OAAO3D,gBAAgB4B,KAAKrD,SAAS,KAAMqD,KAAKgC,SAAS,KAAK,IAAI,WAAW,WAAY;CAC/F,MAAMC,UAAU7C,UAAUsC,UAAUK,SAASzD,eAAeyD;CAC5D,MAAMhE,OAAOC,SAASgC,IAAI,KAAK;CAC/B,MAAM9C,SAASgF,UACb,IAAItD,KAAKC,eAAe4C,QAAQ;EAAEvE,OAAOgF;EAAOnD,UAAU;CAAM,CAAC,CAAC,CAACK,OAAO+C,UAAUnC,IAAI,CAAC;CAC3F,MAAMoC,QAAsC;EAC1CC,YAAYrC,KAAKgB,MAAM,GAAG,CAAC;EAC3BsB,YAAYpF,MAAM,MAAM;EACxBqF,WAAWrF,MAAM,OAAO;EACxBsF,UAAUxC,KAAKgB,MAAM,GAAG,CAAC;EACzByB,UAAUzC,KAAKgB,MAAM,GAAG,EAAE;EAC1B0B,UAAU3E,KAAKiD,MAAM,GAAG,CAAC;EACzB2B,UAAU5E,KAAKiD,MAAM,GAAG,CAAC;EACzB4B,UAAU7E,KAAKiD,MAAM,GAAG,CAAC;CAC3B;CACA,OAAOiB,QAAQX,QAAQM,SAASiB,OAAOC,YAAgCA,WAAWV,MAAMS,MAAM,CAAC,CAAC;AAClG;;AAGA,SAAgBE,SAAShE,UAA2B;CAClD,OAAOI,OAAO7B,KAAK0F,IAAI,GAAGjE,YAAYJ,gBAAgB,CAAC,CAAC,CAACqC,MAAM,GAAG,EAAE;AACtE;AAEA,SAAgBiC,QAAQvG,OAAewG,QAAwB;CAC7D,MAAM7F,OAAO,IAAIC,KAAKR,OAAOJ,KAAK,KAAK,CAAC;CACxCW,KAAK8F,WAAW9F,KAAKK,WAAW,IAAIwF,MAAM;CAC1C,OAAOtF,SAASP,IAAI;AACtB;;AAGA,SAAgB+F,UAAU1G,OAAewG,QAAwB;CAC/D,MAAM7F,OAAO,IAAIC,KAAKR,OAAOJ,KAAK,KAAK,CAAC;CACxC,MAAMS,MAAME,KAAKK,WAAW;CAC5BL,KAAK8F,WAAW,CAAC;CACjB9F,KAAKgG,YAAYhG,KAAKI,YAAY,IAAIyF,MAAM;CAC5C,MAAMI,UAAU,IAAIhG,KAAKA,KAAKC,IAAIF,KAAKQ,eAAe,GAAGR,KAAKI,YAAY,IAAI,GAAG,CAAC,CAAC,CAAC,CAACC,WAAW;CAChGL,KAAK8F,WAAW9C,KAAKS,IAAI3D,KAAKmG,OAAO,CAAC;CACtC,OAAO1F,SAASP,IAAI;AACtB;AAEA,SAAgBkG,aAAa7G,OAAuB;CAClD,OAAO,GAAGA,MAAMsE,MAAM,GAAG,CAAC,EAAC;AAC7B;;AAGA,SAAgBwC,QAAQ9G,OAAuB;CAC7C,OAAO,IAAIY,KAAKR,OAAOJ,KAAK,KAAK,CAAC,CAAC,CAAC+G,UAAU;AAChD;;AAGA,SAAgBC,UAAUhH,OAAeiH,cAAgC;CACvE,MAAMC,QAAQL,aAAa7G,KAAK;CAChC,MAAMmH,QAAQZ,QAAQW,OAAO,GAAGJ,QAAQI,KAAK,IAAID,eAAe,KAAK,EAAE;CACvE,OAAOG,MAAMC,KAAK,EAAEpH,QAAQ,GAAG,IAAIqH,GAAGC,UAAUhB,QAAQY,OAAOI,KAAK,CAAC;AACvE;;AAGA,SAAgB9B,UAAUzF,OAAqB;CAC7C,OAAO,IAAIY,KAAKR,OAAOJ,KAAK,KAAK,CAAC;AACpC;AAEA,SAAgBwH,UAAUxH,OAAeoE,KAAqBqD,KAA6B;CACzF,IAAIrD,OAAOpE,QAAQoE,KAAK,OAAOA;CAC/B,IAAIqD,OAAOzH,QAAQyH,KAAK,OAAOA;CAC/B,OAAOzH;AACT;;AAUA,SAAgB4H,QAAQC,GAA8BC,GAAgD;CACpG,MAAM,CAACZ,OAAOlF,UAAU,CAACZ,SAASyG,CAAC,GAAGzG,SAAS0G,CAAC,CAAC;CACjD,IAAI,CAACZ,SAAS,CAAClF,QAAQ,OAAO;CAC9B,OAAOkF,SAASlF,SAAS;EAAEmF,OAAOD;EAAOS,KAAK3F;CAAO,IAAI;EAAEmF,OAAOnF;EAAQ2F,KAAKT;CAAM;AACvF"}
|
|
@@ -14,6 +14,19 @@ export interface CardProps extends useRender.ComponentProps<'div', CardState> {
|
|
|
14
14
|
/** Adds hover and focus states — use with `render={<a href=… />}` or a click handler. */
|
|
15
15
|
interactive?: boolean;
|
|
16
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* Surface that groups related content. Compose with `CardHeader` (`CardTitle`, `CardDescription`,
|
|
19
|
+
* `CardActions`), `CardContent` and `CardFooter`.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* <Card variant="elevated">
|
|
23
|
+
* <CardHeader>
|
|
24
|
+
* <CardTitle>Monthly energy</CardTitle>
|
|
25
|
+
* <CardDescription>Last 30 days</CardDescription>
|
|
26
|
+
* </CardHeader>
|
|
27
|
+
* <CardContent>…</CardContent>
|
|
28
|
+
* </Card>
|
|
29
|
+
*/
|
|
17
30
|
export declare function Card({ variant, padding, interactive, render, ref, ...props }: CardProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
|
|
18
31
|
export declare const CardHeader: {
|
|
19
32
|
(props: import("../../utils/primitive").PrimitiveProps<"div">): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
|
|
@@ -4,6 +4,19 @@ import { c } from "react/compiler-runtime";
|
|
|
4
4
|
import { useRender } from "@base-ui/react/use-render";
|
|
5
5
|
import { mergeProps } from "@base-ui/react/merge-props";
|
|
6
6
|
//#region src/components/card/Card.tsx
|
|
7
|
+
/**
|
|
8
|
+
* Surface that groups related content. Compose with `CardHeader` (`CardTitle`, `CardDescription`,
|
|
9
|
+
* `CardActions`), `CardContent` and `CardFooter`.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* <Card variant="elevated">
|
|
13
|
+
* <CardHeader>
|
|
14
|
+
* <CardTitle>Monthly energy</CardTitle>
|
|
15
|
+
* <CardDescription>Last 30 days</CardDescription>
|
|
16
|
+
* </CardHeader>
|
|
17
|
+
* <CardContent>…</CardContent>
|
|
18
|
+
* </Card>
|
|
19
|
+
*/
|
|
7
20
|
function Card(t0) {
|
|
8
21
|
const $ = c(17);
|
|
9
22
|
let t1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Card.js","names":["useRender","mergeProps","createPrimitive","CardVariant","CardPadding","CardState","variant","padding","interactive","CardProps","ComponentProps","Card","t0","$","_c","t1","t2","t3","t4","t5","t6","t7","t8","t9","render","ref","props","undefined","t10","state","className","defaultTagName","CardHeader","CardTitle","CardDescription","CardActions","CardContent","CardFooter","_c"],"sources":["../../../src/components/card/Card.tsx"],"sourcesContent":["import { useRender } from '@base-ui/react/use-render';\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport { createPrimitive } from '../../utils/primitive';\n\nexport type CardVariant = 'outlined' | 'elevated' | 'filled' | 'ghost';\nexport type CardPadding = 'none' | 'sm' | 'md' | 'lg';\n\nexport type CardState = {\n variant: CardVariant;\n padding: CardPadding;\n interactive: boolean;\n};\n\nexport interface CardProps extends useRender.ComponentProps<'div', CardState> {\n /** `outlined` (default) uses the card border, `elevated` a soft shadow. */\n variant?: CardVariant;\n /** Inner spacing. Override with `--oui-card-padding`. */\n padding?: CardPadding;\n /** Adds hover and focus states — use with `render={<a href=… />}` or a click handler. */\n interactive?: boolean;\n}\n\nexport function Card({ variant = 'outlined', padding = 'md', interactive = false, render, ref, ...props }: CardProps) {\n const state: CardState = { variant, padding, interactive };\n return useRender({\n defaultTagName: 'div',\n render,\n ref,\n state,\n props: mergeProps<'div'>({ className: 'oui-card' }, props),\n });\n}\n\nexport const CardHeader = createPrimitive('div', 'oui-card__header', 'CardHeader');\nexport const CardTitle = createPrimitive('h3', 'oui-card__title', 'CardTitle');\nexport const CardDescription = createPrimitive('p', 'oui-card__description', 'CardDescription');\n/** Right-aligned slot inside CardHeader for icon buttons or menus. */\nexport const CardActions = createPrimitive('div', 'oui-card__actions', 'CardActions');\nexport const CardContent = createPrimitive('div', 'oui-card__content', 'CardContent');\nexport const CardFooter = createPrimitive('div', 'oui-card__footer', 'CardFooter');\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Card.js","names":["useRender","mergeProps","createPrimitive","CardVariant","CardPadding","CardState","variant","padding","interactive","CardProps","ComponentProps","Card","t0","$","_c","t1","t2","t3","t4","t5","t6","t7","t8","t9","render","ref","props","undefined","t10","state","className","defaultTagName","CardHeader","CardTitle","CardDescription","CardActions","CardContent","CardFooter","_c"],"sources":["../../../src/components/card/Card.tsx"],"sourcesContent":["import { useRender } from '@base-ui/react/use-render';\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport { createPrimitive } from '../../utils/primitive';\n\nexport type CardVariant = 'outlined' | 'elevated' | 'filled' | 'ghost';\nexport type CardPadding = 'none' | 'sm' | 'md' | 'lg';\n\nexport type CardState = {\n variant: CardVariant;\n padding: CardPadding;\n interactive: boolean;\n};\n\nexport interface CardProps extends useRender.ComponentProps<'div', CardState> {\n /** `outlined` (default) uses the card border, `elevated` a soft shadow. */\n variant?: CardVariant;\n /** Inner spacing. Override with `--oui-card-padding`. */\n padding?: CardPadding;\n /** Adds hover and focus states — use with `render={<a href=… />}` or a click handler. */\n interactive?: boolean;\n}\n\n/**\n * Surface that groups related content. Compose with `CardHeader` (`CardTitle`, `CardDescription`,\n * `CardActions`), `CardContent` and `CardFooter`.\n *\n * @example\n * <Card variant=\"elevated\">\n * <CardHeader>\n * <CardTitle>Monthly energy</CardTitle>\n * <CardDescription>Last 30 days</CardDescription>\n * </CardHeader>\n * <CardContent>…</CardContent>\n * </Card>\n */\nexport function Card({ variant = 'outlined', padding = 'md', interactive = false, render, ref, ...props }: CardProps) {\n const state: CardState = { variant, padding, interactive };\n return useRender({\n defaultTagName: 'div',\n render,\n ref,\n state,\n props: mergeProps<'div'>({ className: 'oui-card' }, props),\n });\n}\n\nexport const CardHeader = createPrimitive('div', 'oui-card__header', 'CardHeader');\nexport const CardTitle = createPrimitive('h3', 'oui-card__title', 'CardTitle');\nexport const CardDescription = createPrimitive('p', 'oui-card__description', 'CardDescription');\n/** Right-aligned slot inside CardHeader for icon buttons or menus. */\nexport const CardActions = createPrimitive('div', 'oui-card__actions', 'CardActions');\nexport const CardContent = createPrimitive('div', 'oui-card__content', 'CardContent');\nexport const CardFooter = createPrimitive('div', 'oui-card__footer', 'CardFooter');\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAmCA,SAAOW,KAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAP,EAAA,OAAAD,IAAA;EAAc,MAAA,EAAAN,SAAAe,IAAAd,SAAAe,IAAAd,aAAAe,IAAAC,QAAAC,KAAA,GAAAC,UAAAd;EAAE,MAAAN,UAAAe,OAAAM,KAAAA,IAAA,aAAAN;EAAsB,MAAAd,UAAAe,OAAAK,KAAAA,IAAA,OAAAL;EAAgB,MAAAd,cAAAe,OAAAI,KAAAA,IAAA,QAAAJ;EAAmB,IAAAK;EAAA,IAAAf,EAAA,OAAAL,eAAAK,EAAA,OAAAN,WAAAM,EAAA,OAAAP,SAAA;GACrDsB,MAAA;IAAAtB;IAAAC;IAAAC;GAAgC;GAACK,EAAA,KAAAL;GAAAK,EAAA,KAAAN;GAAAM,EAAA,KAAAP;GAAAO,EAAA,MAAAe;EAAA,OAAAA,MAAAf,EAAA;EAA1D,MAAAgB,QAAyBD;EAClB5B,KAAAA;EACWe,KAAA;EAChBS,KAAAA;EACAC,KAAAA;EACAI,KAAAA;EACOV,KAAAlB,WAAkB,EAAA6B,WAAa,WAAW,GAAGJ,KAAK;EAACb,EAAA,KAAAD;EAAAC,EAAA,KAAAE;EAAAF,EAAA,KAAAG;EAAAH,EAAA,KAAAI;EAAAJ,EAAA,KAAAK;EAAAL,EAAA,KAAAM;EAAAN,EAAA,KAAAO;CAAA,OAAA;EAAAL,KAAAF,EAAA;EAAAG,KAAAH,EAAA;EAAAI,KAAAJ,EAAA;EAAAK,KAAAL,EAAA;EAAAM,KAAAN,EAAA;EAAAO,KAAAP,EAAA;CAAA;CAAA,IAAAQ;CAAA,IAAAR,EAAA,QAAAE,MAAAF,EAAA,QAAAG,MAAAH,EAAA,QAAAI,MAAAJ,EAAA,QAAAK,MAAAL,EAAA,QAAAM,IAAA;EAL3CE,KAAA;GAAAU,gBACChB;GAAKS,QACrBA;GAAMC,KACNA;GAAGI,OACHA;GAAKH,OACEP;EACT;EAACN,EAAA,MAAAE;EAAAF,EAAA,MAAAG;EAAAH,EAAA,MAAAI;EAAAJ,EAAA,MAAAK;EAAAL,EAAA,MAAAM;EAAAN,EAAA,MAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAAA,OANMb,GAAUqB,EAMhB;AAAC;AAGJ,IAAaW,aAAa9B,gBAAgB,OAAO,oBAAoB,YAAY;AACjF,IAAa+B,YAAY/B,gBAAgB,MAAM,mBAAmB,WAAW;AAC7E,IAAagC,kBAAkBhC,gBAAgB,KAAK,yBAAyB,iBAAiB;;AAE9F,IAAaiC,cAAcjC,gBAAgB,OAAO,qBAAqB,aAAa;AACpF,IAAakC,cAAclC,gBAAgB,OAAO,qBAAqB,aAAa;AACpF,IAAamC,aAAanC,gBAAgB,OAAO,oBAAoB,YAAY"}
|
|
@@ -10,23 +10,36 @@ interface ChoiceLabelProps {
|
|
|
10
10
|
label?: React.ReactNode;
|
|
11
11
|
/** Secondary text under the label. */
|
|
12
12
|
description?: React.ReactNode;
|
|
13
|
+
/** Control size. */
|
|
13
14
|
size?: ChoiceSize;
|
|
14
15
|
}
|
|
15
16
|
export interface CheckboxProps extends BaseCheckbox.Root.Props, ChoiceLabelProps {
|
|
16
17
|
}
|
|
18
|
+
/** Checkbox with optional `label` and `description`. Supports `indeterminate`. */
|
|
17
19
|
export declare function Checkbox({ label, description, size, className, ref, ...props }: CheckboxProps): React.JSX.Element;
|
|
18
20
|
export interface CheckboxGroupProps extends BaseCheckboxGroup.Props {
|
|
21
|
+
/** Layout direction of the checkboxes. */
|
|
19
22
|
orientation?: 'vertical' | 'horizontal';
|
|
20
23
|
}
|
|
24
|
+
/** Manages the checked values of several `Checkbox` children (`value` / `onValueChange`). */
|
|
21
25
|
export declare function CheckboxGroup({ orientation, className, ref, ...props }: CheckboxGroupProps): React.JSX.Element;
|
|
22
26
|
export interface RadioGroupProps extends BaseRadioGroup.Props {
|
|
27
|
+
/** Layout direction of the radios. */
|
|
23
28
|
orientation?: 'vertical' | 'horizontal';
|
|
24
29
|
}
|
|
30
|
+
/** Single-choice group for `Radio` children (`value` / `onValueChange`). */
|
|
25
31
|
export declare function RadioGroup({ orientation, className, ref, ...props }: RadioGroupProps): React.JSX.Element;
|
|
26
32
|
export interface RadioProps extends BaseRadio.Root.Props, ChoiceLabelProps {
|
|
27
33
|
}
|
|
34
|
+
/** Radio button with optional `label` and `description`. Use inside `RadioGroup`; each needs a `value`. */
|
|
28
35
|
export declare function Radio({ label, description, size, className, ref, ...props }: RadioProps): React.JSX.Element;
|
|
29
36
|
export interface SwitchProps extends BaseSwitch.Root.Props, ChoiceLabelProps {
|
|
30
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* On/off switch with optional `label` and `description`.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* <Switch label="Email alerts" checked={on} onCheckedChange={setOn} />
|
|
43
|
+
*/
|
|
31
44
|
export declare function Switch({ label, description, size, className, ref, ...props }: SwitchProps): React.JSX.Element;
|
|
32
45
|
export {};
|
|
@@ -59,6 +59,7 @@ function ChoiceLabel(t0) {
|
|
|
59
59
|
} else t5 = $[11];
|
|
60
60
|
return t5;
|
|
61
61
|
}
|
|
62
|
+
/** Checkbox with optional `label` and `description`. Supports `indeterminate`. */
|
|
62
63
|
function Checkbox$1(t0) {
|
|
63
64
|
const $ = c(21);
|
|
64
65
|
let className;
|
|
@@ -139,6 +140,7 @@ function _temp(indicatorProps, state) {
|
|
|
139
140
|
children: state.indeterminate ? /* @__PURE__ */ jsx(MinusIcon, { strokeWidth: 3 }) : /* @__PURE__ */ jsx(CheckIcon, { strokeWidth: 3 })
|
|
140
141
|
});
|
|
141
142
|
}
|
|
143
|
+
/** Manages the checked values of several `Checkbox` children (`value` / `onValueChange`). */
|
|
142
144
|
function CheckboxGroup$1(t0) {
|
|
143
145
|
const $ = c(12);
|
|
144
146
|
let className;
|
|
@@ -181,6 +183,7 @@ function CheckboxGroup$1(t0) {
|
|
|
181
183
|
} else t3 = $[11];
|
|
182
184
|
return t3;
|
|
183
185
|
}
|
|
186
|
+
/** Single-choice group for `Radio` children (`value` / `onValueChange`). */
|
|
184
187
|
function RadioGroup$1(t0) {
|
|
185
188
|
const $ = c(12);
|
|
186
189
|
let className;
|
|
@@ -223,6 +226,7 @@ function RadioGroup$1(t0) {
|
|
|
223
226
|
} else t3 = $[11];
|
|
224
227
|
return t3;
|
|
225
228
|
}
|
|
229
|
+
/** Radio button with optional `label` and `description`. Use inside `RadioGroup`; each needs a `value`. */
|
|
226
230
|
function Radio$1(t0) {
|
|
227
231
|
const $ = c(21);
|
|
228
232
|
let className;
|
|
@@ -294,6 +298,12 @@ function Radio$1(t0) {
|
|
|
294
298
|
} else t5 = $[20];
|
|
295
299
|
return t5;
|
|
296
300
|
}
|
|
301
|
+
/**
|
|
302
|
+
* On/off switch with optional `label` and `description`.
|
|
303
|
+
*
|
|
304
|
+
* @example
|
|
305
|
+
* <Switch label="Email alerts" checked={on} onCheckedChange={setOn} />
|
|
306
|
+
*/
|
|
297
307
|
function Switch$1(t0) {
|
|
298
308
|
const $ = c(21);
|
|
299
309
|
let className;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Choice.js","names":["React","Checkbox","BaseCheckbox","CheckboxGroup","BaseCheckboxGroup","Radio","BaseRadio","RadioGroup","BaseRadioGroup","Switch","BaseSwitch","withClass","CheckIcon","MinusIcon","ChoiceSize","ChoiceLabelProps","label","ReactNode","description","size","ChoiceLabel","t0","$","_c","control","disabled","t1","undefined","t2","t3","t4","t5","CheckboxProps","Root","Props","className","props","ref","Symbol","for","_temp","indicatorProps","state","indeterminate","CheckboxGroupProps","orientation","RadioGroupProps","RadioProps","SwitchProps","_c","Checkbox","BaseCheckbox","CheckboxGroup","BaseCheckboxGroup","RadioGroup","BaseRadioGroup","Radio","BaseRadio","Switch","BaseSwitch"],"sources":["../../../src/components/choice/Choice.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Checkbox as BaseCheckbox } from '@base-ui/react/checkbox';\nimport { CheckboxGroup as BaseCheckboxGroup } from '@base-ui/react/checkbox-group';\nimport { Radio as BaseRadio } from '@base-ui/react/radio';\nimport { RadioGroup as BaseRadioGroup } from '@base-ui/react/radio-group';\nimport { Switch as BaseSwitch } from '@base-ui/react/switch';\nimport { withClass } from '../../utils/cx';\nimport { CheckIcon, MinusIcon } from '../../icons';\n\nexport type ChoiceSize = 'sm' | 'md';\n\ninterface ChoiceLabelProps {\n /** Visible label. Wraps the control in a `<label>` when set. */\n label?: React.ReactNode;\n /** Secondary text under the label. */\n description?: React.ReactNode;\n size?: ChoiceSize;\n}\n\nfunction ChoiceLabel({\n control,\n label,\n description,\n size,\n disabled,\n}: ChoiceLabelProps & { control: React.ReactElement; disabled?: boolean }) {\n if (label == null && description == null) return control;\n return (\n <label className=\"oui-choice\" data-size={size} data-disabled={disabled || undefined}>\n {control}\n <span className=\"oui-choice__text\">\n {label != null && <span className=\"oui-choice__label\">{label}</span>}\n {description != null && <span className=\"oui-choice__description\">{description}</span>}\n </span>\n </label>\n );\n}\n\n// ─── Checkbox ────────────────────────────────────────────────────────────────\n\nexport interface CheckboxProps extends BaseCheckbox.Root.Props, ChoiceLabelProps {}\n\nexport function Checkbox({ label, description, size = 'md', className, ref, ...props }: CheckboxProps) {\n const control = (\n <BaseCheckbox.Root ref={ref} className={withClass('oui-checkbox', className)} data-size={size} {...props}>\n <BaseCheckbox.Indicator\n className=\"oui-checkbox__indicator\"\n render={(indicatorProps, state) => (\n <span {...indicatorProps}>{state.indeterminate ? <MinusIcon strokeWidth={3} /> : <CheckIcon strokeWidth={3} />}</span>\n )}\n />\n </BaseCheckbox.Root>\n );\n return <ChoiceLabel control={control} label={label} description={description} size={size} disabled={props.disabled} />;\n}\n\nexport interface CheckboxGroupProps extends BaseCheckboxGroup.Props {\n orientation?: 'vertical' | 'horizontal';\n}\n\nexport function CheckboxGroup({ orientation = 'vertical', className, ref, ...props }: CheckboxGroupProps) {\n return (\n <BaseCheckboxGroup\n ref={ref}\n className={withClass('oui-choice-group', className)}\n data-orientation={orientation}\n {...props}\n />\n );\n}\n\n// ─── Radio ───────────────────────────────────────────────────────────────────\n\nexport interface RadioGroupProps extends BaseRadioGroup.Props {\n orientation?: 'vertical' | 'horizontal';\n}\n\nexport function RadioGroup({ orientation = 'vertical', className, ref, ...props }: RadioGroupProps) {\n return (\n <BaseRadioGroup\n ref={ref}\n className={withClass('oui-choice-group', className)}\n data-orientation={orientation}\n {...props}\n />\n );\n}\n\nexport interface RadioProps extends BaseRadio.Root.Props, ChoiceLabelProps {}\n\nexport function Radio({ label, description, size = 'md', className, ref, ...props }: RadioProps) {\n const control = (\n <BaseRadio.Root ref={ref} className={withClass('oui-radio', className)} data-size={size} {...props}>\n <BaseRadio.Indicator className=\"oui-radio__indicator\" />\n </BaseRadio.Root>\n );\n return <ChoiceLabel control={control} label={label} description={description} size={size} disabled={props.disabled} />;\n}\n\n// ─── Switch ──────────────────────────────────────────────────────────────────\n\nexport interface SwitchProps extends BaseSwitch.Root.Props, ChoiceLabelProps {}\n\nexport function Switch({ label, description, size = 'md', className, ref, ...props }: SwitchProps) {\n const control = (\n <BaseSwitch.Root ref={ref} className={withClass('oui-switch', className)} data-size={size} {...props}>\n <BaseSwitch.Thumb className=\"oui-switch__thumb\" />\n </BaseSwitch.Root>\n );\n return (\n <ChoiceLabel\n control={control}\n label={label}\n description={description}\n size={size}\n disabled={props.disabled}\n />\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Choice.js","names":["React","Checkbox","BaseCheckbox","CheckboxGroup","BaseCheckboxGroup","Radio","BaseRadio","RadioGroup","BaseRadioGroup","Switch","BaseSwitch","withClass","CheckIcon","MinusIcon","ChoiceSize","ChoiceLabelProps","label","ReactNode","description","size","ChoiceLabel","t0","$","_c","control","disabled","t1","undefined","t2","t3","t4","t5","CheckboxProps","Root","Props","className","props","ref","Symbol","for","_temp","indicatorProps","state","indeterminate","CheckboxGroupProps","orientation","RadioGroupProps","RadioProps","SwitchProps","_c","Checkbox","BaseCheckbox","CheckboxGroup","BaseCheckboxGroup","RadioGroup","BaseRadioGroup","Radio","BaseRadio","Switch","BaseSwitch"],"sources":["../../../src/components/choice/Choice.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Checkbox as BaseCheckbox } from '@base-ui/react/checkbox';\nimport { CheckboxGroup as BaseCheckboxGroup } from '@base-ui/react/checkbox-group';\nimport { Radio as BaseRadio } from '@base-ui/react/radio';\nimport { RadioGroup as BaseRadioGroup } from '@base-ui/react/radio-group';\nimport { Switch as BaseSwitch } from '@base-ui/react/switch';\nimport { withClass } from '../../utils/cx';\nimport { CheckIcon, MinusIcon } from '../../icons';\n\nexport type ChoiceSize = 'sm' | 'md';\n\ninterface ChoiceLabelProps {\n /** Visible label. Wraps the control in a `<label>` when set. */\n label?: React.ReactNode;\n /** Secondary text under the label. */\n description?: React.ReactNode;\n /** Control size. */\n size?: ChoiceSize;\n}\n\nfunction ChoiceLabel({\n control,\n label,\n description,\n size,\n disabled,\n}: ChoiceLabelProps & { control: React.ReactElement; disabled?: boolean }) {\n if (label == null && description == null) return control;\n return (\n <label className=\"oui-choice\" data-size={size} data-disabled={disabled || undefined}>\n {control}\n <span className=\"oui-choice__text\">\n {label != null && <span className=\"oui-choice__label\">{label}</span>}\n {description != null && <span className=\"oui-choice__description\">{description}</span>}\n </span>\n </label>\n );\n}\n\n// ─── Checkbox ────────────────────────────────────────────────────────────────\n\nexport interface CheckboxProps extends BaseCheckbox.Root.Props, ChoiceLabelProps {}\n\n/** Checkbox with optional `label` and `description`. Supports `indeterminate`. */\nexport function Checkbox({ label, description, size = 'md', className, ref, ...props }: CheckboxProps) {\n const control = (\n <BaseCheckbox.Root ref={ref} className={withClass('oui-checkbox', className)} data-size={size} {...props}>\n <BaseCheckbox.Indicator\n className=\"oui-checkbox__indicator\"\n render={(indicatorProps, state) => (\n <span {...indicatorProps}>{state.indeterminate ? <MinusIcon strokeWidth={3} /> : <CheckIcon strokeWidth={3} />}</span>\n )}\n />\n </BaseCheckbox.Root>\n );\n return <ChoiceLabel control={control} label={label} description={description} size={size} disabled={props.disabled} />;\n}\n\nexport interface CheckboxGroupProps extends BaseCheckboxGroup.Props {\n /** Layout direction of the checkboxes. */\n orientation?: 'vertical' | 'horizontal';\n}\n\n/** Manages the checked values of several `Checkbox` children (`value` / `onValueChange`). */\nexport function CheckboxGroup({ orientation = 'vertical', className, ref, ...props }: CheckboxGroupProps) {\n return (\n <BaseCheckboxGroup\n ref={ref}\n className={withClass('oui-choice-group', className)}\n data-orientation={orientation}\n {...props}\n />\n );\n}\n\n// ─── Radio ───────────────────────────────────────────────────────────────────\n\nexport interface RadioGroupProps extends BaseRadioGroup.Props {\n /** Layout direction of the radios. */\n orientation?: 'vertical' | 'horizontal';\n}\n\n/** Single-choice group for `Radio` children (`value` / `onValueChange`). */\nexport function RadioGroup({ orientation = 'vertical', className, ref, ...props }: RadioGroupProps) {\n return (\n <BaseRadioGroup\n ref={ref}\n className={withClass('oui-choice-group', className)}\n data-orientation={orientation}\n {...props}\n />\n );\n}\n\nexport interface RadioProps extends BaseRadio.Root.Props, ChoiceLabelProps {}\n\n/** Radio button with optional `label` and `description`. Use inside `RadioGroup`; each needs a `value`. */\nexport function Radio({ label, description, size = 'md', className, ref, ...props }: RadioProps) {\n const control = (\n <BaseRadio.Root ref={ref} className={withClass('oui-radio', className)} data-size={size} {...props}>\n <BaseRadio.Indicator className=\"oui-radio__indicator\" />\n </BaseRadio.Root>\n );\n return <ChoiceLabel control={control} label={label} description={description} size={size} disabled={props.disabled} />;\n}\n\n// ─── Switch ──────────────────────────────────────────────────────────────────\n\nexport interface SwitchProps extends BaseSwitch.Root.Props, ChoiceLabelProps {}\n\n/**\n * On/off switch with optional `label` and `description`.\n *\n * @example\n * <Switch label=\"Email alerts\" checked={on} onCheckedChange={setOn} />\n */\nexport function Switch({ label, description, size = 'md', className, ref, ...props }: SwitchProps) {\n const control = (\n <BaseSwitch.Root ref={ref} className={withClass('oui-switch', className)} data-size={size} {...props}>\n <BaseSwitch.Thumb className=\"oui-switch__thumb\" />\n </BaseSwitch.Root>\n );\n return (\n <ChoiceLabel\n control={control}\n label={label}\n description={description}\n size={size}\n disabled={props.disabled}\n />\n );\n}\n"],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import * as React from 'react';
|
|
|
2
2
|
import { Combobox as BaseCombobox } from '@base-ui/react/combobox';
|
|
3
3
|
import type { ControlSize } from '../input/Input';
|
|
4
4
|
export interface ComboboxInputGroupProps extends BaseCombobox.InputGroup.Props {
|
|
5
|
+
/** Control height. */
|
|
5
6
|
size?: ControlSize;
|
|
6
7
|
}
|
|
7
8
|
declare function ComboboxInputGroup({ size, className, ref, ...props }: ComboboxInputGroupProps): React.JSX.Element;
|
|
@@ -9,9 +10,13 @@ declare function ComboboxInput({ className, ref, ...props }: BaseCombobox.Input.
|
|
|
9
10
|
declare function ComboboxTrigger({ className, children, ref, ...props }: BaseCombobox.Trigger.Props): React.JSX.Element;
|
|
10
11
|
declare function ComboboxClear({ className, children, ref, ...props }: BaseCombobox.Clear.Props): React.JSX.Element;
|
|
11
12
|
export interface ComboboxContentProps extends BaseCombobox.Popup.Props {
|
|
13
|
+
/** Which side of the input the list opens on. */
|
|
12
14
|
side?: BaseCombobox.Positioner.Props['side'];
|
|
15
|
+
/** Alignment along that side. */
|
|
13
16
|
align?: BaseCombobox.Positioner.Props['align'];
|
|
17
|
+
/** Distance from the input in px. */
|
|
14
18
|
sideOffset?: BaseCombobox.Positioner.Props['sideOffset'];
|
|
19
|
+
/** Props for the positioner element that places the popup. */
|
|
15
20
|
positionerProps?: BaseCombobox.Positioner.Props;
|
|
16
21
|
}
|
|
17
22
|
declare function ComboboxContent({ side, align, sideOffset, positionerProps, className, ref, ...props }: ComboboxContentProps): React.JSX.Element;
|
|
@@ -30,16 +35,23 @@ export interface ComboboxOption {
|
|
|
30
35
|
}
|
|
31
36
|
type RootProps = Omit<BaseCombobox.Root.Props<ComboboxOption, boolean | undefined>, 'items' | 'children'>;
|
|
32
37
|
export interface ComboboxProps extends RootProps {
|
|
38
|
+
/** Options to choose from. */
|
|
33
39
|
items: ComboboxOption[];
|
|
40
|
+
/** Visible field label. */
|
|
34
41
|
label?: React.ReactNode;
|
|
42
|
+
/** Help text under the input. */
|
|
35
43
|
description?: React.ReactNode;
|
|
44
|
+
/** Error message. When set, the field is marked invalid. */
|
|
36
45
|
error?: React.ReactNode;
|
|
46
|
+
/** Placeholder shown while nothing is typed or selected. */
|
|
37
47
|
placeholder?: string;
|
|
38
48
|
/** Shown when the filter matches nothing. */
|
|
39
49
|
emptyText?: React.ReactNode;
|
|
50
|
+
/** Control height. */
|
|
40
51
|
size?: ControlSize;
|
|
41
52
|
/** Hide the clear button. */
|
|
42
53
|
hideClear?: boolean;
|
|
54
|
+
/** Props for the text input. */
|
|
43
55
|
inputProps?: BaseCombobox.Input.Props;
|
|
44
56
|
}
|
|
45
57
|
declare function ComboboxComponent({ items, label, description, error, placeholder, emptyText, size, hideClear, inputProps, name, disabled, required, multiple, ...rootProps }: ComboboxProps): React.JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Combobox.js","names":["React","Combobox","BaseCombobox","withClass","usePortalContainer","CheckIcon","ChevronDownIcon","XIcon","Field","ControlSize","ComboboxInputGroupProps","InputGroup","Props","size","ComboboxInputGroup","t0","$","_c","className","props","ref","t1","undefined","t2","t3","ComboboxInput","ComboboxTrigger","children","ComboboxClear","ComboboxContentProps","Popup","side","Positioner","align","sideOffset","positionerProps","ComboboxContent","container","t4","t5","ComboboxList","ComboboxItem","Symbol","for","ComboboxEmpty","ComboboxChips","ComboboxChip","removeLabel","ComboboxGroupLabel","ComboboxOption","value","label","disabled","RootProps","Omit","Root","ComboboxProps","items","ReactNode","description","error","placeholder","emptyText","hideClear","inputProps","Input","ComboboxComponent","multiple","name","required","rootProps","t6","t7","map","_temp","length","t8","t9","t10","t11","t12","t13","_temp2","t14","t15","t16","t17","t18","item_0","item","Object","assign","Trigger","Clear","Value","Chips","Chip","Content","List","Item","Empty","Group","GroupLabel","Collection","useFilter","_c","BaseCombobox","Combobox"],"sources":["../../../src/components/combobox/Combobox.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Combobox as BaseCombobox } from '@base-ui/react/combobox';\nimport { withClass } from '../../utils/cx';\nimport { usePortalContainer } from '../../utils/portal';\nimport { CheckIcon, ChevronDownIcon, XIcon } from '../../icons';\nimport { Field } from '../field/Field';\nimport type { ControlSize } from '../input/Input';\n\n// ─── Parts ───────────────────────────────────────────────────────────────────\n\nexport interface ComboboxInputGroupProps extends BaseCombobox.InputGroup.Props {\n size?: ControlSize;\n}\n\nfunction ComboboxInputGroup({ size = 'md', className, ref, ...props }: ComboboxInputGroupProps) {\n return (\n <BaseCombobox.InputGroup\n ref={ref}\n className={withClass('oui-combobox__group', className)}\n data-size={size}\n {...props}\n />\n );\n}\n\nfunction ComboboxInput({ className, ref, ...props }: BaseCombobox.Input.Props) {\n return <BaseCombobox.Input ref={ref} className={withClass('oui-combobox__input', className)} {...props} />;\n}\n\nfunction ComboboxTrigger({ className, children, ref, ...props }: BaseCombobox.Trigger.Props) {\n return (\n <BaseCombobox.Trigger\n ref={ref}\n aria-label=\"Open list\"\n className={withClass('oui-combobox__action', className)}\n {...props}\n >\n {children ?? <ChevronDownIcon />}\n </BaseCombobox.Trigger>\n );\n}\n\nfunction ComboboxClear({ className, children, ref, ...props }: BaseCombobox.Clear.Props) {\n return (\n <BaseCombobox.Clear\n ref={ref}\n aria-label=\"Clear selection\"\n className={withClass('oui-combobox__action', className)}\n {...props}\n >\n {children ?? <XIcon />}\n </BaseCombobox.Clear>\n );\n}\n\nexport interface ComboboxContentProps extends BaseCombobox.Popup.Props {\n side?: BaseCombobox.Positioner.Props['side'];\n align?: BaseCombobox.Positioner.Props['align'];\n sideOffset?: BaseCombobox.Positioner.Props['sideOffset'];\n positionerProps?: BaseCombobox.Positioner.Props;\n}\n\nfunction ComboboxContent({\n side,\n align,\n sideOffset = 6,\n positionerProps,\n className,\n ref,\n ...props\n}: ComboboxContentProps) {\n const container = usePortalContainer();\n return (\n <BaseCombobox.Portal container={container}>\n <BaseCombobox.Positioner\n className=\"oui-combobox__positioner\"\n side={side}\n align={align}\n sideOffset={sideOffset}\n {...positionerProps}\n >\n <BaseCombobox.Popup ref={ref} className={withClass('oui-combobox__popup', className)} {...props} />\n </BaseCombobox.Positioner>\n </BaseCombobox.Portal>\n );\n}\n\nfunction ComboboxList({ className, ref, ...props }: BaseCombobox.List.Props) {\n return <BaseCombobox.List ref={ref} className={withClass('oui-combobox__list', className)} {...props} />;\n}\n\nfunction ComboboxItem({ className, children, ref, ...props }: BaseCombobox.Item.Props) {\n return (\n <BaseCombobox.Item ref={ref} className={withClass('oui-combobox__item', className)} {...props}>\n <span className=\"oui-combobox__item-text\">{children}</span>\n <BaseCombobox.ItemIndicator className=\"oui-combobox__item-indicator\">\n <CheckIcon />\n </BaseCombobox.ItemIndicator>\n </BaseCombobox.Item>\n );\n}\n\nfunction ComboboxEmpty({ className, ref, ...props }: BaseCombobox.Empty.Props) {\n return <BaseCombobox.Empty ref={ref} className={withClass('oui-combobox__empty', className)} {...props} />;\n}\n\nfunction ComboboxChips({ className, ref, ...props }: BaseCombobox.Chips.Props) {\n return <BaseCombobox.Chips ref={ref} className={withClass('oui-combobox__chips', className)} {...props} />;\n}\n\nfunction ComboboxChip({\n className,\n children,\n removeLabel = 'Remove',\n ref,\n ...props\n}: BaseCombobox.Chip.Props & { removeLabel?: string }) {\n return (\n <BaseCombobox.Chip ref={ref} className={withClass('oui-combobox__chip', className)} {...props}>\n {children}\n <BaseCombobox.ChipRemove className=\"oui-combobox__chip-remove\" aria-label={removeLabel}>\n <XIcon />\n </BaseCombobox.ChipRemove>\n </BaseCombobox.Chip>\n );\n}\n\nfunction ComboboxGroupLabel({ className, ref, ...props }: BaseCombobox.GroupLabel.Props) {\n return <BaseCombobox.GroupLabel ref={ref} className={withClass('oui-select__group-label', className)} {...props} />;\n}\n\n// ─── Convenience component ───────────────────────────────────────────────────\n\nexport interface ComboboxOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\ntype RootProps = Omit<BaseCombobox.Root.Props<ComboboxOption, boolean | undefined>, 'items' | 'children'>;\n\nexport interface ComboboxProps extends RootProps {\n items: ComboboxOption[];\n label?: React.ReactNode;\n description?: React.ReactNode;\n error?: React.ReactNode;\n placeholder?: string;\n /** Shown when the filter matches nothing. */\n emptyText?: React.ReactNode;\n size?: ControlSize;\n /** Hide the clear button. */\n hideClear?: boolean;\n inputProps?: BaseCombobox.Input.Props;\n}\n\nfunction ComboboxComponent({\n items,\n label,\n description,\n error,\n placeholder,\n emptyText = 'No results found.',\n size = 'md',\n hideClear,\n inputProps,\n name,\n disabled,\n required,\n multiple,\n ...rootProps\n}: ComboboxProps) {\n return (\n <Field.Root name={name} disabled={disabled} invalid={error ? true : undefined}>\n <BaseCombobox.Root\n items={items}\n multiple={multiple}\n disabled={disabled}\n required={required}\n {...(rootProps as BaseCombobox.Root.Props<ComboboxOption, boolean | undefined>)}\n >\n {label && <Field.Label required={required}>{label}</Field.Label>}\n <ComboboxInputGroup size={size} data-multiple={multiple || undefined}>\n {multiple ? (\n <BaseCombobox.Value>\n {(value: ComboboxOption[]) => (\n <ComboboxChips>\n {value.map((item) => (\n <ComboboxChip key={item.value} removeLabel={`Remove ${item.label}`}>\n {item.label}\n </ComboboxChip>\n ))}\n <ComboboxInput placeholder={value.length ? undefined : placeholder} {...inputProps} />\n </ComboboxChips>\n )}\n </BaseCombobox.Value>\n ) : (\n <ComboboxInput placeholder={placeholder} {...inputProps} />\n )}\n <span className=\"oui-combobox__actions\">\n {!hideClear && <ComboboxClear />}\n <ComboboxTrigger />\n </span>\n </ComboboxInputGroup>\n <ComboboxContent>\n <ComboboxEmpty>{emptyText}</ComboboxEmpty>\n <ComboboxList>\n {(item: ComboboxOption) => (\n <ComboboxItem key={item.value} value={item} disabled={item.disabled}>\n {item.label}\n </ComboboxItem>\n )}\n </ComboboxList>\n </ComboboxContent>\n </BaseCombobox.Root>\n {description && <Field.Description>{description}</Field.Description>}\n {error ? <Field.Error match>{error}</Field.Error> : <Field.Error />}\n </Field.Root>\n );\n}\n\n/**\n * Searchable select. `<Combobox items={…} />` covers single and `multiple`\n * (chips) selection; compose the parts for anything custom.\n */\nexport const Combobox = Object.assign(ComboboxComponent, {\n Root: BaseCombobox.Root,\n InputGroup: ComboboxInputGroup,\n Input: ComboboxInput,\n Trigger: ComboboxTrigger,\n Clear: ComboboxClear,\n Value: BaseCombobox.Value,\n Chips: ComboboxChips,\n Chip: ComboboxChip,\n Content: ComboboxContent,\n List: ComboboxList,\n Item: ComboboxItem,\n Empty: ComboboxEmpty,\n Group: BaseCombobox.Group,\n GroupLabel: ComboboxGroupLabel,\n Collection: BaseCombobox.Collection,\n useFilter: BaseCombobox.useFilter,\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Combobox.js","names":["React","Combobox","BaseCombobox","withClass","usePortalContainer","CheckIcon","ChevronDownIcon","XIcon","Field","ControlSize","ComboboxInputGroupProps","InputGroup","Props","size","ComboboxInputGroup","t0","$","_c","className","props","ref","t1","undefined","t2","t3","ComboboxInput","ComboboxTrigger","children","ComboboxClear","ComboboxContentProps","Popup","side","Positioner","align","sideOffset","positionerProps","ComboboxContent","container","t4","t5","ComboboxList","ComboboxItem","Symbol","for","ComboboxEmpty","ComboboxChips","ComboboxChip","removeLabel","ComboboxGroupLabel","ComboboxOption","value","label","disabled","RootProps","Omit","Root","ComboboxProps","items","ReactNode","description","error","placeholder","emptyText","hideClear","inputProps","Input","ComboboxComponent","multiple","name","required","rootProps","t6","t7","map","_temp","length","t8","t9","t10","t11","t12","t13","_temp2","t14","t15","t16","t17","t18","item_0","item","Object","assign","Trigger","Clear","Value","Chips","Chip","Content","List","Item","Empty","Group","GroupLabel","Collection","useFilter","_c","BaseCombobox","Combobox"],"sources":["../../../src/components/combobox/Combobox.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Combobox as BaseCombobox } from '@base-ui/react/combobox';\nimport { withClass } from '../../utils/cx';\nimport { usePortalContainer } from '../../utils/portal';\nimport { CheckIcon, ChevronDownIcon, XIcon } from '../../icons';\nimport { Field } from '../field/Field';\nimport type { ControlSize } from '../input/Input';\n\n// ─── Parts ───────────────────────────────────────────────────────────────────\n\nexport interface ComboboxInputGroupProps extends BaseCombobox.InputGroup.Props {\n /** Control height. */\n size?: ControlSize;\n}\n\nfunction ComboboxInputGroup({ size = 'md', className, ref, ...props }: ComboboxInputGroupProps) {\n return (\n <BaseCombobox.InputGroup\n ref={ref}\n className={withClass('oui-combobox__group', className)}\n data-size={size}\n {...props}\n />\n );\n}\n\nfunction ComboboxInput({ className, ref, ...props }: BaseCombobox.Input.Props) {\n return <BaseCombobox.Input ref={ref} className={withClass('oui-combobox__input', className)} {...props} />;\n}\n\nfunction ComboboxTrigger({ className, children, ref, ...props }: BaseCombobox.Trigger.Props) {\n return (\n <BaseCombobox.Trigger\n ref={ref}\n aria-label=\"Open list\"\n className={withClass('oui-combobox__action', className)}\n {...props}\n >\n {children ?? <ChevronDownIcon />}\n </BaseCombobox.Trigger>\n );\n}\n\nfunction ComboboxClear({ className, children, ref, ...props }: BaseCombobox.Clear.Props) {\n return (\n <BaseCombobox.Clear\n ref={ref}\n aria-label=\"Clear selection\"\n className={withClass('oui-combobox__action', className)}\n {...props}\n >\n {children ?? <XIcon />}\n </BaseCombobox.Clear>\n );\n}\n\nexport interface ComboboxContentProps extends BaseCombobox.Popup.Props {\n /** Which side of the input the list opens on. */\n side?: BaseCombobox.Positioner.Props['side'];\n /** Alignment along that side. */\n align?: BaseCombobox.Positioner.Props['align'];\n /** Distance from the input in px. */\n sideOffset?: BaseCombobox.Positioner.Props['sideOffset'];\n /** Props for the positioner element that places the popup. */\n positionerProps?: BaseCombobox.Positioner.Props;\n}\n\nfunction ComboboxContent({\n side,\n align,\n sideOffset = 6,\n positionerProps,\n className,\n ref,\n ...props\n}: ComboboxContentProps) {\n const container = usePortalContainer();\n return (\n <BaseCombobox.Portal container={container}>\n <BaseCombobox.Positioner\n className=\"oui-combobox__positioner\"\n side={side}\n align={align}\n sideOffset={sideOffset}\n {...positionerProps}\n >\n <BaseCombobox.Popup ref={ref} className={withClass('oui-combobox__popup', className)} {...props} />\n </BaseCombobox.Positioner>\n </BaseCombobox.Portal>\n );\n}\n\nfunction ComboboxList({ className, ref, ...props }: BaseCombobox.List.Props) {\n return <BaseCombobox.List ref={ref} className={withClass('oui-combobox__list', className)} {...props} />;\n}\n\nfunction ComboboxItem({ className, children, ref, ...props }: BaseCombobox.Item.Props) {\n return (\n <BaseCombobox.Item ref={ref} className={withClass('oui-combobox__item', className)} {...props}>\n <span className=\"oui-combobox__item-text\">{children}</span>\n <BaseCombobox.ItemIndicator className=\"oui-combobox__item-indicator\">\n <CheckIcon />\n </BaseCombobox.ItemIndicator>\n </BaseCombobox.Item>\n );\n}\n\nfunction ComboboxEmpty({ className, ref, ...props }: BaseCombobox.Empty.Props) {\n return <BaseCombobox.Empty ref={ref} className={withClass('oui-combobox__empty', className)} {...props} />;\n}\n\nfunction ComboboxChips({ className, ref, ...props }: BaseCombobox.Chips.Props) {\n return <BaseCombobox.Chips ref={ref} className={withClass('oui-combobox__chips', className)} {...props} />;\n}\n\nfunction ComboboxChip({\n className,\n children,\n removeLabel = 'Remove',\n ref,\n ...props\n}: BaseCombobox.Chip.Props & { removeLabel?: string }) {\n return (\n <BaseCombobox.Chip ref={ref} className={withClass('oui-combobox__chip', className)} {...props}>\n {children}\n <BaseCombobox.ChipRemove className=\"oui-combobox__chip-remove\" aria-label={removeLabel}>\n <XIcon />\n </BaseCombobox.ChipRemove>\n </BaseCombobox.Chip>\n );\n}\n\nfunction ComboboxGroupLabel({ className, ref, ...props }: BaseCombobox.GroupLabel.Props) {\n return <BaseCombobox.GroupLabel ref={ref} className={withClass('oui-select__group-label', className)} {...props} />;\n}\n\n// ─── Convenience component ───────────────────────────────────────────────────\n\nexport interface ComboboxOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\ntype RootProps = Omit<BaseCombobox.Root.Props<ComboboxOption, boolean | undefined>, 'items' | 'children'>;\n\nexport interface ComboboxProps extends RootProps {\n /** Options to choose from. */\n items: ComboboxOption[];\n /** Visible field label. */\n label?: React.ReactNode;\n /** Help text under the input. */\n description?: React.ReactNode;\n /** Error message. When set, the field is marked invalid. */\n error?: React.ReactNode;\n /** Placeholder shown while nothing is typed or selected. */\n placeholder?: string;\n /** Shown when the filter matches nothing. */\n emptyText?: React.ReactNode;\n /** Control height. */\n size?: ControlSize;\n /** Hide the clear button. */\n hideClear?: boolean;\n /** Props for the text input. */\n inputProps?: BaseCombobox.Input.Props;\n}\n\nfunction ComboboxComponent({\n items,\n label,\n description,\n error,\n placeholder,\n emptyText = 'No results found.',\n size = 'md',\n hideClear,\n inputProps,\n name,\n disabled,\n required,\n multiple,\n ...rootProps\n}: ComboboxProps) {\n return (\n <Field.Root name={name} disabled={disabled} invalid={error ? true : undefined}>\n <BaseCombobox.Root\n items={items}\n multiple={multiple}\n disabled={disabled}\n required={required}\n {...(rootProps as BaseCombobox.Root.Props<ComboboxOption, boolean | undefined>)}\n >\n {label && <Field.Label required={required}>{label}</Field.Label>}\n <ComboboxInputGroup size={size} data-multiple={multiple || undefined}>\n {multiple ? (\n <BaseCombobox.Value>\n {(value: ComboboxOption[]) => (\n <ComboboxChips>\n {value.map((item) => (\n <ComboboxChip key={item.value} removeLabel={`Remove ${item.label}`}>\n {item.label}\n </ComboboxChip>\n ))}\n <ComboboxInput placeholder={value.length ? undefined : placeholder} {...inputProps} />\n </ComboboxChips>\n )}\n </BaseCombobox.Value>\n ) : (\n <ComboboxInput placeholder={placeholder} {...inputProps} />\n )}\n <span className=\"oui-combobox__actions\">\n {!hideClear && <ComboboxClear />}\n <ComboboxTrigger />\n </span>\n </ComboboxInputGroup>\n <ComboboxContent>\n <ComboboxEmpty>{emptyText}</ComboboxEmpty>\n <ComboboxList>\n {(item: ComboboxOption) => (\n <ComboboxItem key={item.value} value={item} disabled={item.disabled}>\n {item.label}\n </ComboboxItem>\n )}\n </ComboboxList>\n </ComboboxContent>\n </BaseCombobox.Root>\n {description && <Field.Description>{description}</Field.Description>}\n {error ? <Field.Error match>{error}</Field.Error> : <Field.Error />}\n </Field.Root>\n );\n}\n\n/**\n * Searchable select. `<Combobox items={…} />` covers single and `multiple`\n * (chips) selection; compose the parts for anything custom.\n */\nexport const Combobox = Object.assign(ComboboxComponent, {\n Root: BaseCombobox.Root,\n InputGroup: ComboboxInputGroup,\n Input: ComboboxInput,\n Trigger: ComboboxTrigger,\n Clear: ComboboxClear,\n Value: BaseCombobox.Value,\n Chips: ComboboxChips,\n Chip: ComboboxChip,\n Content: ComboboxContent,\n List: ComboboxList,\n Item: ComboboxItem,\n Empty: ComboboxEmpty,\n Group: BaseCombobox.Group,\n GroupLabel: ComboboxGroupLabel,\n Collection: BaseCombobox.Collection,\n useFilter: BaseCombobox.useFilter,\n});\n"],"mappings":"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"}
|
|
@@ -15,14 +15,21 @@ export interface CommandItem {
|
|
|
15
15
|
onSelect?: () => void;
|
|
16
16
|
}
|
|
17
17
|
export interface CommandPaletteProps<T extends CommandItem = CommandItem> {
|
|
18
|
+
/** Commands to list. */
|
|
18
19
|
items: T[];
|
|
19
20
|
/** Called for any chosen item, after the item's own `onSelect`. */
|
|
20
21
|
onSelect?: (item: T) => void;
|
|
22
|
+
/** Whether the palette is open (controlled). */
|
|
21
23
|
open?: boolean;
|
|
24
|
+
/** Initial state when uncontrolled. */
|
|
22
25
|
defaultOpen?: boolean;
|
|
26
|
+
/** Called when the palette opens or closes. */
|
|
23
27
|
onOpenChange?: (open: boolean) => void;
|
|
28
|
+
/** Search text (controlled). */
|
|
24
29
|
search?: string;
|
|
30
|
+
/** Initial search text when uncontrolled. */
|
|
25
31
|
defaultSearch?: string;
|
|
32
|
+
/** Called when the search text changes. */
|
|
26
33
|
onSearchChange?: (search: string) => void;
|
|
27
34
|
/**
|
|
28
35
|
* Custom match function, or `false` when `items` are already filtered (server-side search).
|
|
@@ -37,12 +44,15 @@ export interface CommandPaletteProps<T extends CommandItem = CommandItem> {
|
|
|
37
44
|
keepOpenOnSelect?: boolean;
|
|
38
45
|
/** Accessible name of the dialog. */
|
|
39
46
|
title?: string;
|
|
47
|
+
/** Placeholder of the search input. */
|
|
40
48
|
placeholder?: string;
|
|
49
|
+
/** Shown when nothing matches. */
|
|
41
50
|
emptyText?: React.ReactNode;
|
|
42
51
|
/** Show a spinner in the search row while results load. */
|
|
43
52
|
loading?: boolean;
|
|
44
53
|
/** Content below the results (key hints, a retry button…). */
|
|
45
54
|
footer?: React.ReactNode;
|
|
55
|
+
/** Class name for the palette popup. */
|
|
46
56
|
className?: string;
|
|
47
57
|
}
|
|
48
58
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandPalette.js","names":["React","Dialog","BaseDialog","cx","usePortalContainer","matchesQuery","SearchIcon","Spinner","CommandItem","id","label","description","ReactNode","group","icon","keywords","shortcut","disabled","onSelect","CommandPaletteProps","items","T","item","open","defaultOpen","onOpenChange","search","defaultSearch","onSearchChange","filter","maxResults","hotkey","keepOpenOnSelect","title","placeholder","emptyText","loading","footer","className","useControlled","value","initial","onChange","$","_c","inner","setInner","useState","t0","next","set","t1","undefined","t2","const","CommandPalette","openProp","searchProp","t3","t4","t5","t6","t7","setOpen","setSearch","active","setActive","container","inputRef","useRef","listRef","baseId","useId","toggle","_temp","t8","current","useEffect","t10","t9","onKeyDown","event","metaKey","ctrlKey","altKey","key","toLowerCase","preventDefault","window","addEventListener","removeEventListener","matched","byGroup","Map","item_0","slice","get","groups","map","_temp2","results","flatMap","_temp3","activeIndex","Math","min","max","length","t11","index","optionId","t12","item_1","choose","move","step","i","querySelector","scrollIntoView","block","onKeyDown_0","event_0","nativeEvent","isComposing","index_0","t13","next_0","t14","next_1","t15","Symbol","for","t16","t17","t18","event_1","target","t19","t20","t21","t22","t23","group_0","groupIndex","heading","item_2","itemIndex","t24","t25","t26","groupItems","_c","BaseDialog"],"sources":["../../../src/components/command-palette/CommandPalette.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Dialog as BaseDialog } from '@base-ui/react/dialog';\nimport { cx } from '../../utils/cx';\nimport { usePortalContainer } from '../../utils/portal';\nimport { matchesQuery } from '../../utils/search';\nimport { SearchIcon } from '../../icons';\nimport { Spinner } from '../spinner/Spinner';\n\nexport interface CommandItem {\n id: string;\n label: string;\n /** Secondary text next to the label. */\n description?: React.ReactNode;\n /** Heading the item is listed under. Groups appear in first-seen order. */\n group?: string;\n icon?: React.ReactNode;\n /** Extra search terms that are not displayed. */\n keywords?: string;\n /** Hint shown on the right, e.g. `<kbd>G</kbd>` or an arrow icon. */\n shortcut?: React.ReactNode;\n disabled?: boolean;\n onSelect?: () => void;\n}\n\nexport interface CommandPaletteProps<T extends CommandItem = CommandItem> {\n items: T[];\n /** Called for any chosen item, after the item's own `onSelect`. */\n onSelect?: (item: T) => void;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n search?: string;\n defaultSearch?: string;\n onSearchChange?: (search: string) => void;\n /**\n * Custom match function, or `false` when `items` are already filtered (server-side search).\n * By default every term must occur in the label, keywords or group.\n */\n filter?: ((item: T, search: string) => boolean) | false;\n /** Cap on rendered results. */\n maxResults?: number;\n /** Key that toggles the palette together with Ctrl / ⌘. `false` disables the shortcut. */\n hotkey?: string | false;\n /** Keep the palette open after choosing an item. */\n keepOpenOnSelect?: boolean;\n /** Accessible name of the dialog. */\n title?: string;\n placeholder?: string;\n emptyText?: React.ReactNode;\n /** Show a spinner in the search row while results load. */\n loading?: boolean;\n /** Content below the results (key hints, a retry button…). */\n footer?: React.ReactNode;\n className?: string;\n}\n\nfunction useControlled<V>(value: V | undefined, initial: V, onChange?: (value: V) => void) {\n const [inner, setInner] = React.useState(initial);\n const set = (next: V) => {\n setInner(next);\n onChange?.(next);\n };\n return [value === undefined ? inner : value, set] as const;\n}\n\n/**\n * Searchable command menu in a dialog (Ctrl / ⌘ + K) for navigation and quick\n * actions. Keyboard: arrows move, Enter chooses, Esc closes.\n */\nexport function CommandPalette<T extends CommandItem = CommandItem>({\n items,\n onSelect,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n search: searchProp,\n defaultSearch = '',\n onSearchChange,\n filter,\n maxResults = 50,\n hotkey = 'k',\n keepOpenOnSelect,\n title = 'Command palette',\n placeholder = 'Search…',\n emptyText = 'No results found.',\n loading,\n footer,\n className,\n}: CommandPaletteProps<T>) {\n const [open, setOpen] = useControlled(openProp, defaultOpen, onOpenChange);\n const [search, setSearch] = useControlled(searchProp, defaultSearch, onSearchChange);\n const [active, setActive] = React.useState(0);\n const container = usePortalContainer();\n const inputRef = React.useRef<HTMLInputElement>(null);\n const listRef = React.useRef<HTMLDivElement>(null);\n const baseId = React.useId();\n\n // Latest state for the global shortcut without re-subscribing on every render.\n const toggle = React.useRef(() => {});\n React.useEffect(() => {\n toggle.current = () => setOpen(!open);\n });\n React.useEffect(() => {\n if (!hotkey) return;\n const onKeyDown = (event: KeyboardEvent) => {\n if ((event.metaKey || event.ctrlKey) && !event.altKey && event.key.toLowerCase() === hotkey.toLowerCase()) {\n event.preventDefault();\n toggle.current();\n }\n };\n window.addEventListener('keydown', onKeyDown);\n return () => window.removeEventListener('keydown', onKeyDown);\n }, [hotkey]);\n\n // Grouped, in first-seen group order; `results` is the flat keyboard order.\n const matched =\n filter === false\n ? items\n : items.filter((item) =>\n filter ? filter(item, search) : matchesQuery(`${item.label} ${item.keywords ?? ''} ${item.group ?? ''}`, search),\n );\n const byGroup = new Map<string, T[]>();\n for (const item of matched.slice(0, maxResults)) {\n const key = item.group ?? '';\n byGroup.set(key, [...(byGroup.get(key) ?? []), item]);\n }\n const groups = [...byGroup].map(([heading, groupItems]) => ({ heading, items: groupItems }));\n const results = groups.flatMap((group) => group.items);\n\n const activeIndex = Math.min(active, Math.max(0, results.length - 1));\n const optionId = (index: number) => `${baseId}-option-${index}`;\n\n const choose = (item: T | undefined) => {\n if (!item || item.disabled) return;\n item.onSelect?.();\n onSelect?.(item);\n if (!keepOpenOnSelect) setOpen(false);\n };\n\n const move = (step: 1 | -1) => {\n if (!results.length) return;\n let next = activeIndex;\n for (let i = 0; i < results.length; i++) {\n next = (next + step + results.length) % results.length;\n if (!results[next].disabled) break;\n }\n setActive(next);\n listRef.current?.querySelector(`[data-index=\"${next}\"]`)?.scrollIntoView({ block: 'nearest' });\n };\n\n const onKeyDown = (event: React.KeyboardEvent) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n move(event.key === 'ArrowDown' ? 1 : -1);\n } else if (event.key === 'Enter' && !event.nativeEvent.isComposing) {\n event.preventDefault();\n choose(results[activeIndex]);\n }\n };\n\n let index = -1;\n return (\n <BaseDialog.Root\n open={open}\n onOpenChange={(next) => setOpen(next)}\n onOpenChangeComplete={(next) => {\n // Start fresh next time, once the closing animation is done.\n if (!next) {\n setActive(0);\n if (search) setSearch('');\n }\n }}\n >\n <BaseDialog.Portal container={container}>\n <BaseDialog.Backdrop className=\"oui-dialog__backdrop\" />\n <BaseDialog.Popup className={cx('oui-command', className)} aria-label={title} initialFocus={inputRef}>\n <div className=\"oui-command__search\">\n <SearchIcon />\n <input\n ref={inputRef}\n className=\"oui-command__input\"\n role=\"combobox\"\n aria-expanded\n aria-autocomplete=\"list\"\n aria-controls={`${baseId}-list`}\n aria-activedescendant={results.length ? optionId(activeIndex) : undefined}\n aria-label={placeholder}\n placeholder={placeholder}\n autoComplete=\"off\"\n spellCheck={false}\n value={search}\n onChange={(event) => {\n setSearch(event.target.value);\n setActive(0);\n }}\n onKeyDown={onKeyDown}\n />\n {loading && <Spinner size=\"1rem\" />}\n </div>\n <div ref={listRef} id={`${baseId}-list`} role=\"listbox\" aria-label={title} className=\"oui-command__list\">\n {groups.map((group, groupIndex) => (\n <div\n key={group.heading}\n role=\"group\"\n aria-labelledby={group.heading ? `${baseId}-group-${groupIndex}` : undefined}\n className=\"oui-command__group\"\n >\n {group.heading && (\n <div id={`${baseId}-group-${groupIndex}`} className=\"oui-command__group-label\">\n {group.heading}\n </div>\n )}\n {group.items.map((item) => {\n index += 1;\n const itemIndex = index;\n return (\n <div\n key={item.id}\n id={optionId(itemIndex)}\n role=\"option\"\n className=\"oui-command__item\"\n aria-selected={itemIndex === activeIndex}\n aria-disabled={item.disabled || undefined}\n data-index={itemIndex}\n data-highlighted={itemIndex === activeIndex ? '' : undefined}\n data-disabled={item.disabled ? '' : undefined}\n onPointerMove={() => !item.disabled && itemIndex !== activeIndex && setActive(itemIndex)}\n onClick={() => choose(item)}\n >\n {item.icon && <span className=\"oui-command__item-icon\">{item.icon}</span>}\n <span className=\"oui-command__item-text\">\n <span className=\"oui-command__item-label\">{item.label}</span>\n {item.description && <span className=\"oui-command__item-description\">{item.description}</span>}\n </span>\n {item.shortcut && <span className=\"oui-command__item-shortcut\">{item.shortcut}</span>}\n </div>\n );\n })}\n </div>\n ))}\n {!results.length && <div className=\"oui-command__empty\">{emptyText}</div>}\n </div>\n {footer && <div className=\"oui-command__footer\">{footer}</div>}\n </BaseDialog.Popup>\n </BaseDialog.Portal>\n </BaseDialog.Root>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CommandPalette.js","names":["React","Dialog","BaseDialog","cx","usePortalContainer","matchesQuery","SearchIcon","Spinner","CommandItem","id","label","description","ReactNode","group","icon","keywords","shortcut","disabled","onSelect","CommandPaletteProps","items","T","item","open","defaultOpen","onOpenChange","search","defaultSearch","onSearchChange","filter","maxResults","hotkey","keepOpenOnSelect","title","placeholder","emptyText","loading","footer","className","useControlled","value","initial","onChange","$","_c","inner","setInner","useState","t0","next","set","t1","undefined","t2","const","CommandPalette","openProp","searchProp","t3","t4","t5","t6","t7","setOpen","setSearch","active","setActive","container","inputRef","useRef","listRef","baseId","useId","toggle","_temp","t8","current","useEffect","t10","t9","onKeyDown","event","metaKey","ctrlKey","altKey","key","toLowerCase","preventDefault","window","addEventListener","removeEventListener","matched","byGroup","Map","item_0","slice","get","groups","map","_temp2","results","flatMap","_temp3","activeIndex","Math","min","max","length","t11","index","optionId","t12","item_1","choose","move","step","i","querySelector","scrollIntoView","block","onKeyDown_0","event_0","nativeEvent","isComposing","index_0","t13","next_0","t14","next_1","t15","Symbol","for","t16","t17","t18","event_1","target","t19","t20","t21","t22","t23","group_0","groupIndex","heading","item_2","itemIndex","t24","t25","t26","groupItems","_c","BaseDialog"],"sources":["../../../src/components/command-palette/CommandPalette.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Dialog as BaseDialog } from '@base-ui/react/dialog';\nimport { cx } from '../../utils/cx';\nimport { usePortalContainer } from '../../utils/portal';\nimport { matchesQuery } from '../../utils/search';\nimport { SearchIcon } from '../../icons';\nimport { Spinner } from '../spinner/Spinner';\n\nexport interface CommandItem {\n id: string;\n label: string;\n /** Secondary text next to the label. */\n description?: React.ReactNode;\n /** Heading the item is listed under. Groups appear in first-seen order. */\n group?: string;\n icon?: React.ReactNode;\n /** Extra search terms that are not displayed. */\n keywords?: string;\n /** Hint shown on the right, e.g. `<kbd>G</kbd>` or an arrow icon. */\n shortcut?: React.ReactNode;\n disabled?: boolean;\n onSelect?: () => void;\n}\n\nexport interface CommandPaletteProps<T extends CommandItem = CommandItem> {\n /** Commands to list. */\n items: T[];\n /** Called for any chosen item, after the item's own `onSelect`. */\n onSelect?: (item: T) => void;\n /** Whether the palette is open (controlled). */\n open?: boolean;\n /** Initial state when uncontrolled. */\n defaultOpen?: boolean;\n /** Called when the palette opens or closes. */\n onOpenChange?: (open: boolean) => void;\n /** Search text (controlled). */\n search?: string;\n /** Initial search text when uncontrolled. */\n defaultSearch?: string;\n /** Called when the search text changes. */\n onSearchChange?: (search: string) => void;\n /**\n * Custom match function, or `false` when `items` are already filtered (server-side search).\n * By default every term must occur in the label, keywords or group.\n */\n filter?: ((item: T, search: string) => boolean) | false;\n /** Cap on rendered results. */\n maxResults?: number;\n /** Key that toggles the palette together with Ctrl / ⌘. `false` disables the shortcut. */\n hotkey?: string | false;\n /** Keep the palette open after choosing an item. */\n keepOpenOnSelect?: boolean;\n /** Accessible name of the dialog. */\n title?: string;\n /** Placeholder of the search input. */\n placeholder?: string;\n /** Shown when nothing matches. */\n emptyText?: React.ReactNode;\n /** Show a spinner in the search row while results load. */\n loading?: boolean;\n /** Content below the results (key hints, a retry button…). */\n footer?: React.ReactNode;\n /** Class name for the palette popup. */\n className?: string;\n}\n\nfunction useControlled<V>(value: V | undefined, initial: V, onChange?: (value: V) => void) {\n const [inner, setInner] = React.useState(initial);\n const set = (next: V) => {\n setInner(next);\n onChange?.(next);\n };\n return [value === undefined ? inner : value, set] as const;\n}\n\n/**\n * Searchable command menu in a dialog (Ctrl / ⌘ + K) for navigation and quick\n * actions. Keyboard: arrows move, Enter chooses, Esc closes.\n */\nexport function CommandPalette<T extends CommandItem = CommandItem>({\n items,\n onSelect,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n search: searchProp,\n defaultSearch = '',\n onSearchChange,\n filter,\n maxResults = 50,\n hotkey = 'k',\n keepOpenOnSelect,\n title = 'Command palette',\n placeholder = 'Search…',\n emptyText = 'No results found.',\n loading,\n footer,\n className,\n}: CommandPaletteProps<T>) {\n const [open, setOpen] = useControlled(openProp, defaultOpen, onOpenChange);\n const [search, setSearch] = useControlled(searchProp, defaultSearch, onSearchChange);\n const [active, setActive] = React.useState(0);\n const container = usePortalContainer();\n const inputRef = React.useRef<HTMLInputElement>(null);\n const listRef = React.useRef<HTMLDivElement>(null);\n const baseId = React.useId();\n\n // Latest state for the global shortcut without re-subscribing on every render.\n const toggle = React.useRef(() => {});\n React.useEffect(() => {\n toggle.current = () => setOpen(!open);\n });\n React.useEffect(() => {\n if (!hotkey) return;\n const onKeyDown = (event: KeyboardEvent) => {\n if ((event.metaKey || event.ctrlKey) && !event.altKey && event.key.toLowerCase() === hotkey.toLowerCase()) {\n event.preventDefault();\n toggle.current();\n }\n };\n window.addEventListener('keydown', onKeyDown);\n return () => window.removeEventListener('keydown', onKeyDown);\n }, [hotkey]);\n\n // Grouped, in first-seen group order; `results` is the flat keyboard order.\n const matched =\n filter === false\n ? items\n : items.filter((item) =>\n filter ? filter(item, search) : matchesQuery(`${item.label} ${item.keywords ?? ''} ${item.group ?? ''}`, search),\n );\n const byGroup = new Map<string, T[]>();\n for (const item of matched.slice(0, maxResults)) {\n const key = item.group ?? '';\n byGroup.set(key, [...(byGroup.get(key) ?? []), item]);\n }\n const groups = [...byGroup].map(([heading, groupItems]) => ({ heading, items: groupItems }));\n const results = groups.flatMap((group) => group.items);\n\n const activeIndex = Math.min(active, Math.max(0, results.length - 1));\n const optionId = (index: number) => `${baseId}-option-${index}`;\n\n const choose = (item: T | undefined) => {\n if (!item || item.disabled) return;\n item.onSelect?.();\n onSelect?.(item);\n if (!keepOpenOnSelect) setOpen(false);\n };\n\n const move = (step: 1 | -1) => {\n if (!results.length) return;\n let next = activeIndex;\n for (let i = 0; i < results.length; i++) {\n next = (next + step + results.length) % results.length;\n if (!results[next].disabled) break;\n }\n setActive(next);\n listRef.current?.querySelector(`[data-index=\"${next}\"]`)?.scrollIntoView({ block: 'nearest' });\n };\n\n const onKeyDown = (event: React.KeyboardEvent) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n move(event.key === 'ArrowDown' ? 1 : -1);\n } else if (event.key === 'Enter' && !event.nativeEvent.isComposing) {\n event.preventDefault();\n choose(results[activeIndex]);\n }\n };\n\n let index = -1;\n return (\n <BaseDialog.Root\n open={open}\n onOpenChange={(next) => setOpen(next)}\n onOpenChangeComplete={(next) => {\n // Start fresh next time, once the closing animation is done.\n if (!next) {\n setActive(0);\n if (search) setSearch('');\n }\n }}\n >\n <BaseDialog.Portal container={container}>\n <BaseDialog.Backdrop className=\"oui-dialog__backdrop\" />\n <BaseDialog.Popup className={cx('oui-command', className)} aria-label={title} initialFocus={inputRef}>\n <div className=\"oui-command__search\">\n <SearchIcon />\n <input\n ref={inputRef}\n className=\"oui-command__input\"\n role=\"combobox\"\n aria-expanded\n aria-autocomplete=\"list\"\n aria-controls={`${baseId}-list`}\n aria-activedescendant={results.length ? optionId(activeIndex) : undefined}\n aria-label={placeholder}\n placeholder={placeholder}\n autoComplete=\"off\"\n spellCheck={false}\n value={search}\n onChange={(event) => {\n setSearch(event.target.value);\n setActive(0);\n }}\n onKeyDown={onKeyDown}\n />\n {loading && <Spinner size=\"1rem\" />}\n </div>\n <div ref={listRef} id={`${baseId}-list`} role=\"listbox\" aria-label={title} className=\"oui-command__list\">\n {groups.map((group, groupIndex) => (\n <div\n key={group.heading}\n role=\"group\"\n aria-labelledby={group.heading ? `${baseId}-group-${groupIndex}` : undefined}\n className=\"oui-command__group\"\n >\n {group.heading && (\n <div id={`${baseId}-group-${groupIndex}`} className=\"oui-command__group-label\">\n {group.heading}\n </div>\n )}\n {group.items.map((item) => {\n index += 1;\n const itemIndex = index;\n return (\n <div\n key={item.id}\n id={optionId(itemIndex)}\n role=\"option\"\n className=\"oui-command__item\"\n aria-selected={itemIndex === activeIndex}\n aria-disabled={item.disabled || undefined}\n data-index={itemIndex}\n data-highlighted={itemIndex === activeIndex ? '' : undefined}\n data-disabled={item.disabled ? '' : undefined}\n onPointerMove={() => !item.disabled && itemIndex !== activeIndex && setActive(itemIndex)}\n onClick={() => choose(item)}\n >\n {item.icon && <span className=\"oui-command__item-icon\">{item.icon}</span>}\n <span className=\"oui-command__item-text\">\n <span className=\"oui-command__item-label\">{item.label}</span>\n {item.description && <span className=\"oui-command__item-description\">{item.description}</span>}\n </span>\n {item.shortcut && <span className=\"oui-command__item-shortcut\">{item.shortcut}</span>}\n </div>\n );\n })}\n </div>\n ))}\n {!results.length && <div className=\"oui-command__empty\">{emptyText}</div>}\n </div>\n {footer && <div className=\"oui-command__footer\">{footer}</div>}\n </BaseDialog.Popup>\n </BaseDialog.Portal>\n </BaseDialog.Root>\n );\n}\n"],"mappings":"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"}
|