@giddaa-housing/ui 0.1.0 → 1.0.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 +18 -6
- package/css/base.css +37 -0
- package/css/components.css +135 -0
- package/css/generated/shared.css +1 -0
- package/css/giddaa.css +402 -0
- package/css/preset.css +77 -0
- package/css/styles.css +2 -0
- package/css/theme.css +255 -0
- package/dist/accordion.js +5 -35
- package/dist/accordion.js.map +1 -1
- package/dist/activity-timeline.d.ts +33 -0
- package/dist/activity-timeline.js +212 -0
- package/dist/activity-timeline.js.map +1 -0
- package/dist/alert.js +5 -35
- package/dist/alert.js.map +1 -1
- package/dist/auth-layout.d.ts +23 -0
- package/dist/auth-layout.js +304 -0
- package/dist/auth-layout.js.map +1 -0
- package/dist/avatar.js +10 -142
- package/dist/avatar.js.map +1 -1
- package/dist/badge.d.ts +3 -2
- package/dist/badge.js +6 -114
- package/dist/badge.js.map +1 -1
- package/dist/bar-chart.d.ts +101 -77
- package/dist/bar-chart.js +142 -220
- package/dist/bar-chart.js.map +1 -1
- package/dist/breadcrumb.js +5 -35
- package/dist/breadcrumb.js.map +1 -1
- package/dist/bullet-chart.js +15 -48
- package/dist/bullet-chart.js.map +1 -1
- package/dist/button-group.js +14 -90
- package/dist/button-group.js.map +1 -1
- package/dist/button.d.ts +5 -5
- package/dist/button.js +7 -140
- package/dist/button.js.map +1 -1
- package/dist/calendar.js +12 -287
- package/dist/calendar.js.map +1 -1
- package/dist/card.js +5 -35
- package/dist/card.js.map +1 -1
- package/dist/carousel.js +12 -386
- package/dist/carousel.js.map +1 -1
- package/dist/chart.js +16 -480
- package/dist/chart.js.map +1 -1
- package/dist/checkbox.d.ts +1 -1
- package/dist/checkbox.js +13 -48
- package/dist/checkbox.js.map +1 -1
- package/dist/chunk-322YCNVL.js +278 -0
- package/dist/chunk-322YCNVL.js.map +1 -0
- package/dist/chunk-3ACQVT7A.js +25 -0
- package/dist/chunk-3ACQVT7A.js.map +1 -0
- package/dist/chunk-3T65TLJX.js +334 -0
- package/dist/chunk-3T65TLJX.js.map +1 -0
- package/dist/chunk-6ZSGQHH2.js +192 -0
- package/dist/chunk-6ZSGQHH2.js.map +1 -0
- package/dist/chunk-7TBMLFGW.js +41 -0
- package/dist/chunk-7TBMLFGW.js.map +1 -0
- package/dist/chunk-B4H6RNDH.js +135 -0
- package/dist/chunk-B4H6RNDH.js.map +1 -0
- package/dist/chunk-BUXCGZ6X.js +219 -0
- package/dist/chunk-BUXCGZ6X.js.map +1 -0
- package/dist/chunk-CHII2QHH.js +58 -0
- package/dist/chunk-CHII2QHH.js.map +1 -0
- package/dist/chunk-DMNOXRRW.js +147 -0
- package/dist/chunk-DMNOXRRW.js.map +1 -0
- package/dist/chunk-EFSOSSIC.js +130 -0
- package/dist/chunk-EFSOSSIC.js.map +1 -0
- package/dist/chunk-FZDSVMKY.js +363 -0
- package/dist/chunk-FZDSVMKY.js.map +1 -0
- package/dist/chunk-GJOFIJS3.js +246 -0
- package/dist/chunk-GJOFIJS3.js.map +1 -0
- package/dist/chunk-HL3ZSYES.js +23 -0
- package/dist/chunk-HL3ZSYES.js.map +1 -0
- package/dist/chunk-JVLUBAPB.js +129 -0
- package/dist/chunk-JVLUBAPB.js.map +1 -0
- package/dist/chunk-KDPYSOYZ.js +64 -0
- package/dist/chunk-KDPYSOYZ.js.map +1 -0
- package/dist/chunk-KSMDANKI.js +43 -0
- package/dist/chunk-KSMDANKI.js.map +1 -0
- package/dist/chunk-MEKCCOP5.js +46 -0
- package/dist/chunk-MEKCCOP5.js.map +1 -0
- package/dist/chunk-NOFXVRWL.js +451 -0
- package/dist/chunk-NOFXVRWL.js.map +1 -0
- package/dist/chunk-PC5MHNVA.js +171 -0
- package/dist/chunk-PC5MHNVA.js.map +1 -0
- package/dist/chunk-QKAQZ2GU.js +122 -0
- package/dist/chunk-QKAQZ2GU.js.map +1 -0
- package/dist/chunk-QZHSHSVV.js +26 -0
- package/dist/chunk-QZHSHSVV.js.map +1 -0
- package/dist/chunk-RBMK26XD.js +19 -0
- package/dist/chunk-RBMK26XD.js.map +1 -0
- package/dist/chunk-SFNJGF6M.js +262 -0
- package/dist/chunk-SFNJGF6M.js.map +1 -0
- package/dist/chunk-UJJNLGTM.js +112 -0
- package/dist/chunk-UJJNLGTM.js.map +1 -0
- package/dist/chunk-VGR4ZWJ3.js +418 -0
- package/dist/chunk-VGR4ZWJ3.js.map +1 -0
- package/dist/chunk-XG47P6D4.js +99 -0
- package/dist/chunk-XG47P6D4.js.map +1 -0
- package/dist/chunk-XZZAHNVM.js +21 -0
- package/dist/chunk-XZZAHNVM.js.map +1 -0
- package/dist/chunk-Y4TTYVNE.js +36 -0
- package/dist/chunk-Y4TTYVNE.js.map +1 -0
- package/dist/chunk-YDWIHW6Q.js +69 -0
- package/dist/chunk-YDWIHW6Q.js.map +1 -0
- package/dist/collapsible.js +6 -35
- package/dist/collapsible.js.map +1 -1
- package/dist/combobox.js +26 -694
- package/dist/combobox.js.map +1 -1
- package/dist/cta.d.ts +66 -0
- package/dist/cta.js +358 -0
- package/dist/cta.js.map +1 -0
- package/dist/currency-selector.d.ts +42 -0
- package/dist/currency-selector.js +192 -0
- package/dist/currency-selector.js.map +1 -0
- package/dist/date-picker.d.ts +18 -10
- package/dist/date-picker.js +105 -430
- package/dist/date-picker.js.map +1 -1
- package/dist/details-card.d.ts +19 -0
- package/dist/details-card.js +267 -0
- package/dist/details-card.js.map +1 -0
- package/dist/dialog.js +36 -146
- package/dist/dialog.js.map +1 -1
- package/dist/dropdown-menu.d.ts +1 -1
- package/dist/dropdown-menu.js +20 -358
- package/dist/dropdown-menu.js.map +1 -1
- package/dist/dropzone.js +13 -40
- package/dist/dropzone.js.map +1 -1
- package/dist/editorial-card.d.ts +29 -0
- package/dist/editorial-card.js +311 -0
- package/dist/editorial-card.js.map +1 -0
- package/dist/empty-state.js +5 -35
- package/dist/empty-state.js.map +1 -1
- package/dist/field.js +30 -135
- package/dist/field.js.map +1 -1
- package/dist/footer.d.ts +47 -0
- package/dist/footer.js +430 -0
- package/dist/footer.js.map +1 -0
- package/dist/funnel-chart.js +42 -415
- package/dist/funnel-chart.js.map +1 -1
- package/dist/gallery-indicator.d.ts +18 -0
- package/dist/gallery-indicator.js +12 -0
- package/dist/gallery-indicator.js.map +1 -0
- package/dist/heatmap-chart.d.ts +98 -0
- package/dist/heatmap-chart.js +248 -0
- package/dist/heatmap-chart.js.map +1 -0
- package/dist/infotip.d.ts +11 -0
- package/dist/infotip.js +66 -0
- package/dist/infotip.js.map +1 -0
- package/dist/input-group.d.ts +2 -1
- package/dist/input-group.js +15 -371
- package/dist/input-group.js.map +1 -1
- package/dist/input-size-context.js +5 -19
- package/dist/input-size-context.js.map +1 -1
- package/dist/input.js +6 -78
- package/dist/input.js.map +1 -1
- package/dist/item.js +5 -35
- package/dist/item.js.map +1 -1
- package/dist/kpi-card.js +12 -52
- package/dist/kpi-card.js.map +1 -1
- package/dist/label.js +5 -64
- package/dist/label.js.map +1 -1
- package/dist/line-chart.js +9 -166
- package/dist/line-chart.js.map +1 -1
- package/dist/logo.js +4 -141
- package/dist/logo.js.map +1 -1
- package/dist/map-indicator.d.ts +13 -0
- package/dist/map-indicator.js +109 -0
- package/dist/map-indicator.js.map +1 -0
- package/dist/match.d.ts +16 -0
- package/dist/match.js +113 -0
- package/dist/match.js.map +1 -0
- package/dist/media-gallery-hero.d.ts +60 -0
- package/dist/media-gallery-hero.js +362 -0
- package/dist/media-gallery-hero.js.map +1 -0
- package/dist/media-player.d.ts +60 -0
- package/dist/media-player.js +1394 -0
- package/dist/media-player.js.map +1 -0
- package/dist/number-input.js +30 -325
- package/dist/number-input.js.map +1 -1
- package/dist/page-header.js +4 -32
- package/dist/page-header.js.map +1 -1
- package/dist/pagination.d.ts +1 -0
- package/dist/pagination.js +27 -161
- package/dist/pagination.js.map +1 -1
- package/dist/password-input.d.ts +1 -0
- package/dist/password-input.js +21 -319
- package/dist/password-input.js.map +1 -1
- package/dist/phone-input.d.ts +2 -1
- package/dist/phone-input.js +148 -359
- package/dist/phone-input.js.map +1 -1
- package/dist/photo-gallery.d.ts +1 -1
- package/dist/photo-gallery.js +97 -393
- package/dist/photo-gallery.js.map +1 -1
- package/dist/pie-chart.js +17 -52
- package/dist/pie-chart.js.map +1 -1
- package/dist/popover.js +13 -158
- package/dist/popover.js.map +1 -1
- package/dist/price-tag.d.ts +35 -0
- package/dist/price-tag.js +178 -0
- package/dist/price-tag.js.map +1 -0
- package/dist/progress.d.ts +5 -2
- package/dist/progress.js +14 -303
- package/dist/progress.js.map +1 -1
- package/dist/property-listing-card.d.ts +32 -0
- package/dist/property-listing-card.js +235 -0
- package/dist/property-listing-card.js.map +1 -0
- package/dist/radar-chart.d.ts +110 -0
- package/dist/radar-chart.js +147 -0
- package/dist/radar-chart.js.map +1 -0
- package/dist/radio-group.js +15 -50
- package/dist/radio-group.js.map +1 -1
- package/dist/review-block.d.ts +20 -0
- package/dist/review-block.js +10 -0
- package/dist/review-block.js.map +1 -0
- package/dist/rich-text-editor.js +172 -433
- package/dist/rich-text-editor.js.map +1 -1
- package/dist/scatter-chart.d.ts +142 -0
- package/dist/scatter-chart.js +252 -0
- package/dist/scatter-chart.js.map +1 -0
- package/dist/search-input.d.ts +1 -0
- package/dist/search-input.js +22 -320
- package/dist/search-input.js.map +1 -1
- package/dist/select.js +15 -292
- package/dist/select.js.map +1 -1
- package/dist/separator.js +5 -68
- package/dist/separator.js.map +1 -1
- package/dist/sheet.js +14 -271
- package/dist/sheet.js.map +1 -1
- package/dist/sidebar.d.ts +1 -1
- package/dist/sidebar.js +89 -494
- package/dist/sidebar.js.map +1 -1
- package/dist/size-context.js +5 -17
- package/dist/size-context.js.map +1 -1
- package/dist/skeleton.js +4 -44
- package/dist/skeleton.js.map +1 -1
- package/dist/slider.d.ts +28 -0
- package/dist/slider.js +152 -0
- package/dist/slider.js.map +1 -0
- package/dist/sparkline.js +33 -341
- package/dist/sparkline.js.map +1 -1
- package/dist/stepper.js +5 -35
- package/dist/stepper.js.map +1 -1
- package/dist/styles.css +9593 -2
- package/dist/switch.js +13 -48
- package/dist/switch.js.map +1 -1
- package/dist/tab-list.js +35 -306
- package/dist/tab-list.js.map +1 -1
- package/dist/table.js +5 -32
- package/dist/table.js.map +1 -1
- package/dist/tabs.js +10 -150
- package/dist/tabs.js.map +1 -1
- package/dist/tag.d.ts +7 -6
- package/dist/tag.js +101 -97
- package/dist/tag.js.map +1 -1
- package/dist/testimonial-block.d.ts +34 -0
- package/dist/testimonial-block.js +377 -0
- package/dist/testimonial-block.js.map +1 -0
- package/dist/textarea.js +6 -73
- package/dist/textarea.js.map +1 -1
- package/dist/time-picker.js +119 -279
- package/dist/time-picker.js.map +1 -1
- package/dist/toast.js +27 -132
- package/dist/toast.js.map +1 -1
- package/dist/tooltip.d.ts +5 -5
- package/dist/tooltip.js +7 -90
- package/dist/tooltip.js.map +1 -1
- package/dist/tree-map.js +41 -414
- package/dist/tree-map.js.map +1 -1
- package/dist/waterfall-chart.d.ts +129 -0
- package/dist/waterfall-chart.js +577 -0
- package/dist/waterfall-chart.js.map +1 -0
- package/package.json +98 -28
- package/dist/base.css +0 -32
- package/dist/files/red-hat-display-latin-300-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-300-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-300-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-300-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-400-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-400-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-400-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-400-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-500-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-500-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-500-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-500-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-600-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-600-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-600-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-600-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-700-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-700-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-700-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-700-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-800-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-800-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-800-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-800-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-900-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-900-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-900-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-900-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-300-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-300-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-300-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-300-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-400-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-400-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-400-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-400-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-500-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-500-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-500-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-500-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-600-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-600-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-600-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-600-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-700-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-700-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-700-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-700-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-800-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-800-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-800-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-800-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-900-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-900-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-900-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-900-normal.woff2 +0 -0
- package/dist/index.d.ts +0 -87
- package/dist/index.js +0 -10448
- package/dist/index.js.map +0 -1
- package/dist/red-hat-display.css +0 -2
- package/dist/theme/giddaa.css +0 -2
package/dist/switch.js
CHANGED
|
@@ -1,50 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
useComponentSize
|
|
4
|
+
} from "./chunk-HL3ZSYES.js";
|
|
5
|
+
import {
|
|
6
|
+
cn
|
|
7
|
+
} from "./chunk-Y4TTYVNE.js";
|
|
8
|
+
|
|
9
|
+
// src/switch.tsx
|
|
2
10
|
import { Switch as SwitchPrimitive } from "@base-ui/react/switch";
|
|
3
11
|
import { cva } from "class-variance-authority";
|
|
4
|
-
|
|
5
|
-
// src/lib/cn.ts
|
|
6
|
-
import { clsx } from "clsx";
|
|
7
|
-
import { extendTailwindMerge } from "tailwind-merge";
|
|
8
|
-
var twMerge = extendTailwindMerge({
|
|
9
|
-
extend: {
|
|
10
|
-
classGroups: {
|
|
11
|
-
"font-size": [
|
|
12
|
-
{
|
|
13
|
-
text: [
|
|
14
|
-
"gdt-display",
|
|
15
|
-
"gdt-h1",
|
|
16
|
-
"gdt-h2",
|
|
17
|
-
"gdt-h3",
|
|
18
|
-
"gdt-h4",
|
|
19
|
-
"gdt-h5",
|
|
20
|
-
"gdt-xl",
|
|
21
|
-
"gdt-lg",
|
|
22
|
-
"gdt-md",
|
|
23
|
-
"gdt-sm",
|
|
24
|
-
"gdt-xs",
|
|
25
|
-
"gdt-subtext",
|
|
26
|
-
"gdt-capitalized"
|
|
27
|
-
]
|
|
28
|
-
}
|
|
29
|
-
]
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
function cn(...inputs) {
|
|
34
|
-
return twMerge(clsx(inputs));
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// src/components/ui/size-context.tsx
|
|
38
|
-
import { createContext, useContext } from "react";
|
|
39
|
-
import { Fragment, jsx } from "react/jsx-runtime";
|
|
40
|
-
var SizeContext = createContext(void 0);
|
|
41
|
-
function useComponentSize(size, fallback = "md") {
|
|
42
|
-
const inheritedSize = useContext(SizeContext);
|
|
43
|
-
return size ?? inheritedSize ?? fallback;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
// src/components/ui/switch.tsx
|
|
47
|
-
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
12
|
+
import { jsx } from "react/jsx-runtime";
|
|
48
13
|
var switchVariants = cva(
|
|
49
14
|
"peer group/switch relative inline-flex shrink-0 items-center rounded-full border bg-clip-padding p-0.5 transition-[background-color,border-color,box-shadow,opacity] outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-line-focus focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] aria-invalid:border-line-danger aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-checked:border-action-primary data-checked:bg-action-primary data-unchecked:border-line data-unchecked:bg-transparent data-[loading=true]:border-action-primary data-[loading=true]:bg-action-primary data-disabled:border-line-subtle! data-disabled:bg-transparent! data-disabled:cursor-not-allowed data-disabled:opacity-60 h-6 w-10 [--switch-spinner-size:0.75rem] [--switch-thumb-size:18px] [--switch-track-width:2.5rem] group-data-[size=sm]/field:h-5 group-data-[size=sm]/field:w-8 group-data-[size=sm]/field:[--switch-spinner-size:0.625rem] group-data-[size=sm]/field:[--switch-thumb-size:14px] group-data-[size=sm]/field:[--switch-track-width:2rem] group-data-[size=md]/field:h-6 group-data-[size=md]/field:w-10 group-data-[size=md]/field:[--switch-spinner-size:0.75rem] group-data-[size=md]/field:[--switch-thumb-size:18px] group-data-[size=md]/field:[--switch-track-width:2.5rem] group-data-[size=lg]/field:h-7 group-data-[size=lg]/field:w-12 group-data-[size=lg]/field:[--switch-spinner-size:0.875rem] group-data-[size=lg]/field:[--switch-thumb-size:22px] group-data-[size=lg]/field:[--switch-track-width:3rem]",
|
|
50
15
|
{
|
|
@@ -68,7 +33,7 @@ function Switch({
|
|
|
68
33
|
const resolvedSize = useComponentSize(size);
|
|
69
34
|
const isDisabled = disabled;
|
|
70
35
|
const isReadOnly = readOnly || loading;
|
|
71
|
-
return /* @__PURE__ */
|
|
36
|
+
return /* @__PURE__ */ jsx(
|
|
72
37
|
SwitchPrimitive.Root,
|
|
73
38
|
{
|
|
74
39
|
"aria-busy": loading || void 0,
|
|
@@ -79,7 +44,7 @@ function Switch({
|
|
|
79
44
|
readOnly: isReadOnly,
|
|
80
45
|
className: cn(switchVariants({ size: resolvedSize }), className),
|
|
81
46
|
...props,
|
|
82
|
-
children: /* @__PURE__ */
|
|
47
|
+
children: /* @__PURE__ */ jsx(
|
|
83
48
|
SwitchPrimitive.Thumb,
|
|
84
49
|
{
|
|
85
50
|
"data-slot": "switch-thumb",
|
|
@@ -88,7 +53,7 @@ function Switch({
|
|
|
88
53
|
loading && "translate-x-[calc(var(--switch-track-width)-var(--switch-thumb-size)-4px)]",
|
|
89
54
|
isDisabled && "translate-x-0! bg-line text-fg-caption-placeholder"
|
|
90
55
|
),
|
|
91
|
-
children: loading && !isDisabled && /* @__PURE__ */
|
|
56
|
+
children: loading && !isDisabled && /* @__PURE__ */ jsx(
|
|
92
57
|
"span",
|
|
93
58
|
{
|
|
94
59
|
"aria-hidden": "true",
|
package/dist/switch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/
|
|
1
|
+
{"version":3,"sources":["../src/switch.tsx"],"sourcesContent":["\"use client\";\n\nimport { Switch as SwitchPrimitive } from \"@base-ui/react/switch\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"./lib/cn\";\nimport { useComponentSize } from \"./size-context\";\n\nconst switchVariants = cva(\n\t\"peer group/switch relative inline-flex shrink-0 items-center rounded-full border bg-clip-padding p-0.5 transition-[background-color,border-color,box-shadow,opacity] outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-line-focus focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] aria-invalid:border-line-danger aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-checked:border-action-primary data-checked:bg-action-primary data-unchecked:border-line data-unchecked:bg-transparent data-[loading=true]:border-action-primary data-[loading=true]:bg-action-primary data-disabled:border-line-subtle! data-disabled:bg-transparent! data-disabled:cursor-not-allowed data-disabled:opacity-60 h-6 w-10 [--switch-spinner-size:0.75rem] [--switch-thumb-size:18px] [--switch-track-width:2.5rem] group-data-[size=sm]/field:h-5 group-data-[size=sm]/field:w-8 group-data-[size=sm]/field:[--switch-spinner-size:0.625rem] group-data-[size=sm]/field:[--switch-thumb-size:14px] group-data-[size=sm]/field:[--switch-track-width:2rem] group-data-[size=md]/field:h-6 group-data-[size=md]/field:w-10 group-data-[size=md]/field:[--switch-spinner-size:0.75rem] group-data-[size=md]/field:[--switch-thumb-size:18px] group-data-[size=md]/field:[--switch-track-width:2.5rem] group-data-[size=lg]/field:h-7 group-data-[size=lg]/field:w-12 group-data-[size=lg]/field:[--switch-spinner-size:0.875rem] group-data-[size=lg]/field:[--switch-thumb-size:22px] group-data-[size=lg]/field:[--switch-track-width:3rem]\",\n\t{\n\t\tvariants: {\n\t\t\tsize: {\n\t\t\t\tsm: \"h-5 w-8 [--switch-spinner-size:0.625rem] [--switch-thumb-size:14px] [--switch-track-width:2rem]\",\n\t\t\t\tmd: \"h-6 w-10 [--switch-spinner-size:0.75rem] [--switch-thumb-size:18px] [--switch-track-width:2.5rem]\",\n\t\t\t\tlg: \"h-7 w-12 [--switch-spinner-size:0.875rem] [--switch-thumb-size:22px] [--switch-track-width:3rem]\",\n\t\t\t},\n\t\t},\n\t},\n);\n\ntype SwitchSize = NonNullable<VariantProps<typeof switchVariants>[\"size\"]>;\ntype SwitchProps = Omit<SwitchPrimitive.Root.Props, \"children\"> & {\n\tloading?: boolean;\n\tsize?: SwitchSize;\n};\n\n/**\n * Compose with the shared field primitives for label and helper text.\n *\n * ```tsx\n * <Field orientation=\"horizontal\" size=\"sm\">\n * <Switch id=\"notifications\" />\n * <FieldContent>\n * <FieldLabel htmlFor=\"notifications\">Notifications</FieldLabel>\n * <FieldDescription>Receive product update emails.</FieldDescription>\n * </FieldContent>\n * </Field>\n * ```\n */\nfunction Switch({\n\tclassName,\n\tdisabled = false,\n\tloading = false,\n\treadOnly = false,\n\tsize,\n\t...props\n}: SwitchProps) {\n\tconst resolvedSize = useComponentSize(size);\n\tconst isDisabled = disabled;\n\tconst isReadOnly = readOnly || loading;\n\n\treturn (\n\t\t<SwitchPrimitive.Root\n\t\t\taria-busy={loading || undefined}\n\t\t\tdata-slot=\"switch\"\n\t\t\tdata-loading={loading}\n\t\t\tdata-size={resolvedSize}\n\t\t\tdisabled={isDisabled}\n\t\t\treadOnly={isReadOnly}\n\t\t\tclassName={cn(switchVariants({ size: resolvedSize }), className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<SwitchPrimitive.Thumb\n\t\t\t\tdata-slot=\"switch-thumb\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"pointer-events-none grid size-(--switch-thumb-size) translate-x-0 place-items-center rounded-full bg-fg-on-brand text-fg-brand ring-0 transition-transform duration-200 ease-out data-checked:translate-x-[calc(var(--switch-track-width)-var(--switch-thumb-size)-4px)]\",\n\t\t\t\t\tloading &&\n\t\t\t\t\t\t\"translate-x-[calc(var(--switch-track-width)-var(--switch-thumb-size)-4px)]\",\n\t\t\t\t\tisDisabled && \"translate-x-0! bg-line text-fg-caption-placeholder\",\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{loading && !isDisabled && (\n\t\t\t\t\t<span\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\tdata-slot=\"switch-spinner\"\n\t\t\t\t\t\tclassName=\"size-(--switch-spinner-size) animate-spin rounded-full border-2 border-current border-r-transparent\"\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</SwitchPrimitive.Thumb>\n\t\t</SwitchPrimitive.Root>\n\t);\n}\n\nexport { Switch, switchVariants };\n"],"mappings":";;;;;;;;;AAEA,SAAS,UAAU,uBAAuB;AAC1C,SAAS,WAA8B;AAsElC;AAjEL,IAAM,iBAAiB;AAAA,EACtB;AAAA,EACA;AAAA,IACC,UAAU;AAAA,MACT,MAAM;AAAA,QACL,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACL;AAAA,IACD;AAAA,EACD;AACD;AAqBA,SAAS,OAAO;AAAA,EACf;AAAA,EACA,WAAW;AAAA,EACX,UAAU;AAAA,EACV,WAAW;AAAA,EACX;AAAA,EACA,GAAG;AACJ,GAAgB;AACf,QAAM,eAAe,iBAAiB,IAAI;AAC1C,QAAM,aAAa;AACnB,QAAM,aAAa,YAAY;AAE/B,SACC;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACA,aAAW,WAAW;AAAA,MACtB,aAAU;AAAA,MACV,gBAAc;AAAA,MACd,aAAW;AAAA,MACX,UAAU;AAAA,MACV,UAAU;AAAA,MACV,WAAW,GAAG,eAAe,EAAE,MAAM,aAAa,CAAC,GAAG,SAAS;AAAA,MAC9D,GAAG;AAAA,MAEJ;AAAA,QAAC,gBAAgB;AAAA,QAAhB;AAAA,UACA,aAAU;AAAA,UACV,WAAW;AAAA,YACV;AAAA,YACA,WACC;AAAA,YACD,cAAc;AAAA,UACf;AAAA,UAEC,qBAAW,CAAC,cACZ;AAAA,YAAC;AAAA;AAAA,cACA,eAAY;AAAA,cACZ,aAAU;AAAA,cACV,WAAU;AAAA;AAAA,UACX;AAAA;AAAA,MAEF;AAAA;AAAA,EACD;AAEF;","names":[]}
|
package/dist/tab-list.js
CHANGED
|
@@ -1,299 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
"gdt-lg",
|
|
22
|
-
"gdt-md",
|
|
23
|
-
"gdt-sm",
|
|
24
|
-
"gdt-xs",
|
|
25
|
-
"gdt-subtext",
|
|
26
|
-
"gdt-capitalized"
|
|
27
|
-
]
|
|
28
|
-
}
|
|
29
|
-
]
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
function cn(...inputs) {
|
|
34
|
-
return twMerge(clsx(inputs));
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// src/lib/use-mobile.ts
|
|
38
|
-
import * as React from "react";
|
|
39
|
-
var DEFAULT_MOBILE_BREAKPOINT = 1024;
|
|
40
|
-
function useIsMobile(breakpoint = DEFAULT_MOBILE_BREAKPOINT) {
|
|
41
|
-
const [isMobile, setIsMobile] = React.useState(false);
|
|
42
|
-
React.useEffect(() => {
|
|
43
|
-
const mediaQuery = window.matchMedia(`(max-width: ${breakpoint - 1}px)`);
|
|
44
|
-
const update = () => setIsMobile(window.innerWidth < breakpoint);
|
|
45
|
-
update();
|
|
46
|
-
mediaQuery.addEventListener("change", update);
|
|
47
|
-
return () => mediaQuery.removeEventListener("change", update);
|
|
48
|
-
}, [breakpoint]);
|
|
49
|
-
return isMobile;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// src/components/ui/dropdown-menu.tsx
|
|
53
|
-
import { Menu as MenuPrimitive } from "@base-ui/react/menu";
|
|
54
|
-
import { cva } from "class-variance-authority";
|
|
55
|
-
import { CheckIcon, ChevronRightIcon } from "lucide-react";
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
Tabs,
|
|
4
|
+
TabsCount,
|
|
5
|
+
TabsList,
|
|
6
|
+
TabsTrigger
|
|
7
|
+
} from "./chunk-EFSOSSIC.js";
|
|
8
|
+
import {
|
|
9
|
+
useIsMobile
|
|
10
|
+
} from "./chunk-RBMK26XD.js";
|
|
11
|
+
import {
|
|
12
|
+
DropdownMenu,
|
|
13
|
+
DropdownMenuContent,
|
|
14
|
+
DropdownMenuItem,
|
|
15
|
+
DropdownMenuTrigger
|
|
16
|
+
} from "./chunk-3T65TLJX.js";
|
|
17
|
+
import "./chunk-HL3ZSYES.js";
|
|
18
|
+
import {
|
|
19
|
+
cn
|
|
20
|
+
} from "./chunk-Y4TTYVNE.js";
|
|
56
21
|
|
|
57
|
-
// src/
|
|
58
|
-
import {
|
|
59
|
-
import {
|
|
60
|
-
|
|
61
|
-
function SizeProvider({
|
|
62
|
-
children,
|
|
63
|
-
size
|
|
64
|
-
}) {
|
|
65
|
-
if (!size) {
|
|
66
|
-
return /* @__PURE__ */ jsx(Fragment, { children });
|
|
67
|
-
}
|
|
68
|
-
return /* @__PURE__ */ jsx(SizeContext.Provider, { value: size, children });
|
|
69
|
-
}
|
|
70
|
-
function useComponentSize(size, fallback = "md") {
|
|
71
|
-
const inheritedSize = useContext(SizeContext);
|
|
72
|
-
return size ?? inheritedSize ?? fallback;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
// src/components/ui/dropdown-menu.tsx
|
|
76
|
-
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
77
|
-
function DropdownMenu({
|
|
78
|
-
children,
|
|
79
|
-
size,
|
|
80
|
-
...props
|
|
81
|
-
}) {
|
|
82
|
-
return /* @__PURE__ */ jsx2(SizeProvider, { size, children: /* @__PURE__ */ jsx2(MenuPrimitive.Root, { "data-slot": "dropdown-menu", ...props, children }) });
|
|
83
|
-
}
|
|
84
|
-
function DropdownMenuTrigger({ ...props }) {
|
|
85
|
-
return /* @__PURE__ */ jsx2(MenuPrimitive.Trigger, { "data-slot": "dropdown-menu-trigger", ...props });
|
|
86
|
-
}
|
|
87
|
-
var dropdownMenuContentVariants = cva(
|
|
88
|
-
"relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto border border-line-subtle bg-canvas text-fg-primary shadow-(--elevation-e1-shadow) duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
89
|
-
{
|
|
90
|
-
variants: {
|
|
91
|
-
size: {
|
|
92
|
-
sm: "rounded-lg p-1",
|
|
93
|
-
md: "rounded-xl p-1.5",
|
|
94
|
-
lg: "rounded-[18px] p-2"
|
|
95
|
-
}
|
|
96
|
-
},
|
|
97
|
-
defaultVariants: {
|
|
98
|
-
size: "md"
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
);
|
|
102
|
-
var dropdownMenuItemVariants = cva(
|
|
103
|
-
"group/dropdown-menu-item relative flex w-full cursor-pointer items-center font-normal text-fg-primary outline-none transition-colors select-none focus:bg-surface focus:text-fg-primary data-highlighted:bg-surface data-highlighted:text-fg-primary data-[variant=destructive]:text-fg-danger data-[variant=destructive]:focus:bg-surface-danger-subtle data-[variant=destructive]:focus:text-fg-danger data-[variant=destructive]:data-highlighted:bg-surface-danger-subtle data-[variant=destructive]:data-highlighted:text-fg-danger data-disabled:pointer-events-none data-disabled:text-fg-caption-placeholder data-disabled:opacity-100 [&_svg]:pointer-events-none [&_svg]:shrink-0 data-[variant=destructive]:[&_svg]:text-fg-danger",
|
|
104
|
-
{
|
|
105
|
-
variants: {
|
|
106
|
-
size: {
|
|
107
|
-
sm: "gap-1.5 rounded-md px-3 py-1.5 text-gdt-xs [&_svg:not([class*='size-'])]:size-3.5",
|
|
108
|
-
md: "gap-2 rounded-md px-4 py-2 text-gdt-sm [&_svg:not([class*='size-'])]:size-4",
|
|
109
|
-
lg: "gap-2.5 rounded-md px-4 py-2.5 text-gdt-md [&_svg:not([class*='size-'])]:size-4.5"
|
|
110
|
-
}
|
|
111
|
-
},
|
|
112
|
-
defaultVariants: {
|
|
113
|
-
size: "md"
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
);
|
|
117
|
-
var dropdownMenuLabelVariants = cva(
|
|
118
|
-
"font-medium text-fg-secondary data-inset:pl-8",
|
|
119
|
-
{
|
|
120
|
-
variants: {
|
|
121
|
-
size: {
|
|
122
|
-
sm: "px-3 py-1 text-gdt-xs",
|
|
123
|
-
md: "px-3 py-1 text-gdt-xs",
|
|
124
|
-
lg: "px-4 py-1.5 text-gdt-sm"
|
|
125
|
-
}
|
|
126
|
-
},
|
|
127
|
-
defaultVariants: {
|
|
128
|
-
size: "md"
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
);
|
|
132
|
-
function DropdownMenuContent({
|
|
133
|
-
align = "start",
|
|
134
|
-
alignOffset = 0,
|
|
135
|
-
side = "bottom",
|
|
136
|
-
sideOffset = 6,
|
|
137
|
-
className,
|
|
138
|
-
...props
|
|
139
|
-
}) {
|
|
140
|
-
const resolvedSize = useComponentSize();
|
|
141
|
-
return /* @__PURE__ */ jsx2(MenuPrimitive.Portal, { children: /* @__PURE__ */ jsx2(
|
|
142
|
-
MenuPrimitive.Positioner,
|
|
143
|
-
{
|
|
144
|
-
className: "isolate z-50 outline-none",
|
|
145
|
-
align,
|
|
146
|
-
alignOffset,
|
|
147
|
-
side,
|
|
148
|
-
sideOffset,
|
|
149
|
-
children: /* @__PURE__ */ jsx2(
|
|
150
|
-
MenuPrimitive.Popup,
|
|
151
|
-
{
|
|
152
|
-
"data-slot": "dropdown-menu-content",
|
|
153
|
-
"data-size": resolvedSize,
|
|
154
|
-
className: cn(
|
|
155
|
-
dropdownMenuContentVariants({ size: resolvedSize }),
|
|
156
|
-
className
|
|
157
|
-
),
|
|
158
|
-
...props
|
|
159
|
-
}
|
|
160
|
-
)
|
|
161
|
-
}
|
|
162
|
-
) });
|
|
163
|
-
}
|
|
164
|
-
function DropdownMenuItem({
|
|
165
|
-
className,
|
|
166
|
-
inset,
|
|
167
|
-
variant = "default",
|
|
168
|
-
...props
|
|
169
|
-
}) {
|
|
170
|
-
const resolvedSize = useComponentSize();
|
|
171
|
-
return /* @__PURE__ */ jsx2(
|
|
172
|
-
MenuPrimitive.Item,
|
|
173
|
-
{
|
|
174
|
-
"data-slot": "dropdown-menu-item",
|
|
175
|
-
"data-inset": inset,
|
|
176
|
-
"data-size": resolvedSize,
|
|
177
|
-
"data-variant": variant,
|
|
178
|
-
className: cn(
|
|
179
|
-
dropdownMenuItemVariants({ size: resolvedSize }),
|
|
180
|
-
"data-inset:pl-8",
|
|
181
|
-
className
|
|
182
|
-
),
|
|
183
|
-
...props
|
|
184
|
-
}
|
|
185
|
-
);
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
// src/components/ui/tabs.tsx
|
|
189
|
-
import { Tabs as TabsPrimitive } from "@base-ui/react/tabs";
|
|
190
|
-
import { cva as cva2 } from "class-variance-authority";
|
|
191
|
-
import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
192
|
-
function resolveTabsListVariant(variant) {
|
|
193
|
-
return variant === "default" ? "secondary" : variant === "line" ? "underline" : variant;
|
|
194
|
-
}
|
|
195
|
-
function Tabs({
|
|
196
|
-
className,
|
|
197
|
-
orientation = "horizontal",
|
|
198
|
-
...props
|
|
199
|
-
}) {
|
|
200
|
-
return /* @__PURE__ */ jsx3(
|
|
201
|
-
TabsPrimitive.Root,
|
|
202
|
-
{
|
|
203
|
-
"data-slot": "tabs",
|
|
204
|
-
"data-orientation": orientation,
|
|
205
|
-
className: cn(
|
|
206
|
-
"group/tabs flex gap-3 data-[orientation=horizontal]:flex-col",
|
|
207
|
-
className
|
|
208
|
-
),
|
|
209
|
-
...props
|
|
210
|
-
}
|
|
211
|
-
);
|
|
212
|
-
}
|
|
213
|
-
var tabsListVariants = cva2(
|
|
214
|
-
"group/tabs-list relative inline-flex w-fit shrink-0 items-center gap-1 text-fg-secondary group-data-[orientation=horizontal]/tabs:border-b group-data-[orientation=horizontal]/tabs:border-line-subtle group-data-[orientation=vertical]/tabs:flex-col group-data-[orientation=vertical]/tabs:border-l group-data-[orientation=vertical]/tabs:border-line-subtle",
|
|
215
|
-
{
|
|
216
|
-
variants: {
|
|
217
|
-
variant: {
|
|
218
|
-
underline: "rounded-none bg-transparent p-0",
|
|
219
|
-
secondary: "rounded-4xl bg-transparent p-0"
|
|
220
|
-
}
|
|
221
|
-
},
|
|
222
|
-
defaultVariants: {
|
|
223
|
-
variant: "underline"
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
);
|
|
227
|
-
function TabsList({
|
|
228
|
-
className,
|
|
229
|
-
variant = "underline",
|
|
230
|
-
children,
|
|
231
|
-
...props
|
|
232
|
-
}) {
|
|
233
|
-
const resolvedVariant = resolveTabsListVariant(variant);
|
|
234
|
-
return /* @__PURE__ */ jsxs2(
|
|
235
|
-
TabsPrimitive.List,
|
|
236
|
-
{
|
|
237
|
-
"data-slot": "tabs-list",
|
|
238
|
-
"data-variant": resolvedVariant,
|
|
239
|
-
className: cn(tabsListVariants({ variant: resolvedVariant }), className),
|
|
240
|
-
...props,
|
|
241
|
-
children: [
|
|
242
|
-
children,
|
|
243
|
-
/* @__PURE__ */ jsx3(
|
|
244
|
-
TabsPrimitive.Indicator,
|
|
245
|
-
{
|
|
246
|
-
className: cn(
|
|
247
|
-
"pointer-events-none absolute left-0 top-0 z-0 h-(--active-tab-height) w-(--active-tab-width) translate-x-(--active-tab-left) translate-y-(--active-tab-top) transition-[transform,width,height] duration-200 ease-in-out",
|
|
248
|
-
"group-data-[variant=secondary]/tabs-list:hidden",
|
|
249
|
-
"group-data-[variant=underline]/tabs-list:rounded-none group-data-[variant=underline]/tabs-list:bg-line-focus group-data-[variant=underline]/tabs-list:shadow-none",
|
|
250
|
-
"group-data-[orientation=horizontal]/tabs:group-data-[variant=underline]/tabs-list:top-auto group-data-[orientation=horizontal]/tabs:group-data-[variant=underline]/tabs-list:bottom-[-1px] group-data-[orientation=horizontal]/tabs:group-data-[variant=underline]/tabs-list:h-0.5! group-data-[orientation=horizontal]/tabs:group-data-[variant=underline]/tabs-list:translate-y-0",
|
|
251
|
-
"group-data-[orientation=vertical]/tabs:group-data-[variant=underline]/tabs-list:left-auto group-data-[orientation=vertical]/tabs:group-data-[variant=underline]/tabs-list:right-[-1px] group-data-[orientation=vertical]/tabs:group-data-[variant=underline]/tabs-list:w-0.5! group-data-[orientation=vertical]/tabs:group-data-[variant=underline]/tabs-list:translate-x-0"
|
|
252
|
-
)
|
|
253
|
-
}
|
|
254
|
-
)
|
|
255
|
-
]
|
|
256
|
-
}
|
|
257
|
-
);
|
|
258
|
-
}
|
|
259
|
-
function TabsTrigger({
|
|
260
|
-
className,
|
|
261
|
-
nativeButton = true,
|
|
262
|
-
...props
|
|
263
|
-
}) {
|
|
264
|
-
return /* @__PURE__ */ jsx3(
|
|
265
|
-
TabsPrimitive.Tab,
|
|
266
|
-
{
|
|
267
|
-
"data-slot": "tabs-trigger",
|
|
268
|
-
nativeButton,
|
|
269
|
-
className: cn(
|
|
270
|
-
"group/tabs-trigger relative inline-flex shrink-0 items-center justify-center gap-2 whitespace-nowrap border border-transparent font-semibold outline-none transition-[background-color,color,box-shadow] focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:text-current [&_svg:not([class*='size-'])]:size-4",
|
|
271
|
-
"group-data-[variant=underline]/tabs-list:-mb-px group-data-[variant=underline]/tabs-list:rounded-none group-data-[variant=underline]/tabs-list:px-4 group-data-[variant=underline]/tabs-list:py-3 group-data-[variant=underline]/tabs-list:text-gdt-md group-data-[variant=underline]/tabs-list:text-fg-secondary group-data-[variant=underline]/tabs-list:hover:text-fg-primary group-data-[variant=underline]/tabs-list:data-active:text-fg-primary max-sm:group-data-[variant=underline]/tabs-list:px-3 max-sm:group-data-[variant=underline]/tabs-list:py-2.5 max-sm:group-data-[variant=underline]/tabs-list:text-gdt-sm",
|
|
272
|
-
"group-data-[variant=secondary]/tabs-list:rounded-4xl group-data-[variant=secondary]/tabs-list:bg-surface-raised group-data-[variant=secondary]/tabs-list:px-4 group-data-[variant=secondary]/tabs-list:py-3 group-data-[variant=secondary]/tabs-list:text-gdt-md group-data-[variant=secondary]/tabs-list:text-fg-secondary group-data-[variant=secondary]/tabs-list:hover:bg-surface group-data-[variant=secondary]/tabs-list:hover:text-fg-primary group-data-[variant=secondary]/tabs-list:data-active:bg-surface-brand group-data-[variant=secondary]/tabs-list:data-active:text-fg-on-brand group-data-[variant=secondary]/tabs-list:data-active:shadow-(--elevation-e1-shadow) group-data-[variant=secondary]/tabs-list:data-active:hover:bg-surface-brand group-data-[variant=secondary]/tabs-list:data-active:hover:text-fg-on-brand max-sm:group-data-[variant=secondary]/tabs-list:px-3 max-sm:group-data-[variant=secondary]/tabs-list:py-2.5 max-sm:group-data-[variant=secondary]/tabs-list:text-gdt-sm",
|
|
273
|
-
className
|
|
274
|
-
),
|
|
275
|
-
...props
|
|
276
|
-
}
|
|
277
|
-
);
|
|
278
|
-
}
|
|
279
|
-
function TabsCount({ className, ...props }) {
|
|
280
|
-
return /* @__PURE__ */ jsx3(
|
|
281
|
-
"span",
|
|
282
|
-
{
|
|
283
|
-
"data-slot": "tabs-count",
|
|
284
|
-
className: cn(
|
|
285
|
-
"inline-flex min-w-5 items-center justify-center rounded-full px-1.5 py-0.5 text-[11px] leading-none font-semibold transition-[background-color,color]",
|
|
286
|
-
"group-data-[variant=underline]/tabs-list:bg-surface-raised group-data-[variant=underline]/tabs-list:text-fg-secondary group-data-[variant=underline]/tabs-list:group-data-[active]/tabs-trigger:bg-surface-brand-subtle group-data-[variant=underline]/tabs-list:group-data-[active]/tabs-trigger:text-fg-brand",
|
|
287
|
-
"group-data-[variant=secondary]/tabs-list:bg-surface-overlay group-data-[variant=secondary]/tabs-list:text-fg-secondary group-data-[variant=secondary]/tabs-list:group-data-[active]/tabs-trigger:bg-surface-brand-subtle group-data-[variant=secondary]/tabs-list:group-data-[active]/tabs-trigger:text-fg-brand",
|
|
288
|
-
className
|
|
289
|
-
),
|
|
290
|
-
...props
|
|
291
|
-
}
|
|
292
|
-
);
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
// src/components/ui/tab-list.tsx
|
|
296
|
-
import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
22
|
+
// src/tab-list.tsx
|
|
23
|
+
import { ChevronDownIcon } from "lucide-react";
|
|
24
|
+
import { useState } from "react";
|
|
25
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
297
26
|
function TabList({
|
|
298
27
|
items,
|
|
299
28
|
value,
|
|
@@ -309,7 +38,7 @@ function TabList({
|
|
|
309
38
|
...rootProps
|
|
310
39
|
}) {
|
|
311
40
|
const isMobile = useIsMobile();
|
|
312
|
-
const [internalValue, setInternalValue] =
|
|
41
|
+
const [internalValue, setInternalValue] = useState(
|
|
313
42
|
value ?? defaultValue ?? items[0]?.value
|
|
314
43
|
);
|
|
315
44
|
const currentValue = value ?? internalValue;
|
|
@@ -323,7 +52,7 @@ function TabList({
|
|
|
323
52
|
const isOverflowActive = overflowItems.some(
|
|
324
53
|
(item) => item.value === currentValue
|
|
325
54
|
);
|
|
326
|
-
return /* @__PURE__ */
|
|
55
|
+
return /* @__PURE__ */ jsxs(
|
|
327
56
|
Tabs,
|
|
328
57
|
{
|
|
329
58
|
value: currentValue,
|
|
@@ -331,8 +60,8 @@ function TabList({
|
|
|
331
60
|
className,
|
|
332
61
|
...rootProps,
|
|
333
62
|
children: [
|
|
334
|
-
/* @__PURE__ */
|
|
335
|
-
visibleItems.map((item) => /* @__PURE__ */
|
|
63
|
+
/* @__PURE__ */ jsxs(TabsList, { variant, className: listClassName, children: [
|
|
64
|
+
visibleItems.map((item) => /* @__PURE__ */ jsxs(
|
|
336
65
|
TabsTrigger,
|
|
337
66
|
{
|
|
338
67
|
value: item.value,
|
|
@@ -341,16 +70,16 @@ function TabList({
|
|
|
341
70
|
render: item.render,
|
|
342
71
|
children: [
|
|
343
72
|
item.label,
|
|
344
|
-
item.count != null && /* @__PURE__ */
|
|
73
|
+
item.count != null && /* @__PURE__ */ jsx(TabsCount, { children: item.count })
|
|
345
74
|
]
|
|
346
75
|
},
|
|
347
76
|
item.value
|
|
348
77
|
)),
|
|
349
|
-
overflowItems.length > 0 && /* @__PURE__ */
|
|
350
|
-
/* @__PURE__ */
|
|
78
|
+
overflowItems.length > 0 && /* @__PURE__ */ jsxs(DropdownMenu, { children: [
|
|
79
|
+
/* @__PURE__ */ jsxs(
|
|
351
80
|
DropdownMenuTrigger,
|
|
352
81
|
{
|
|
353
|
-
render: /* @__PURE__ */
|
|
82
|
+
render: /* @__PURE__ */ jsx(
|
|
354
83
|
"button",
|
|
355
84
|
{
|
|
356
85
|
type: "button",
|
|
@@ -362,11 +91,11 @@ function TabList({
|
|
|
362
91
|
),
|
|
363
92
|
children: [
|
|
364
93
|
moreLabel,
|
|
365
|
-
/* @__PURE__ */
|
|
94
|
+
/* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-4 transition-transform duration-200 group-data-[popup-open]/tab-list-more:rotate-180" })
|
|
366
95
|
]
|
|
367
96
|
}
|
|
368
97
|
),
|
|
369
|
-
/* @__PURE__ */
|
|
98
|
+
/* @__PURE__ */ jsx(DropdownMenuContent, { align: "end", children: overflowItems.map((item) => /* @__PURE__ */ jsxs(
|
|
370
99
|
DropdownMenuItem,
|
|
371
100
|
{
|
|
372
101
|
disabled: item.disabled,
|
|
@@ -376,7 +105,7 @@ function TabList({
|
|
|
376
105
|
onClick: () => selectValue(item.value),
|
|
377
106
|
children: [
|
|
378
107
|
item.label,
|
|
379
|
-
item.count != null && /* @__PURE__ */
|
|
108
|
+
item.count != null && /* @__PURE__ */ jsx("span", { className: "ml-auto inline-flex min-w-5 items-center justify-center rounded-full bg-surface-raised px-1.5 py-0.5 text-[11px] leading-none font-semibold text-fg-secondary", children: item.count })
|
|
380
109
|
]
|
|
381
110
|
},
|
|
382
111
|
item.value
|
package/dist/tab-list.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ui/tab-list.tsx","../src/lib/cn.ts","../src/lib/use-mobile.ts","../src/components/ui/dropdown-menu.tsx","../src/components/ui/size-context.tsx","../src/components/ui/tabs.tsx"],"sourcesContent":["\"use client\";\n\nimport type { Tabs as TabsPrimitive } from \"@base-ui/react/tabs\";\nimport { ChevronDownIcon } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { useIsMobile } from \"../../lib/use-mobile\";\nimport {\n\tDropdownMenu,\n\tDropdownMenuContent,\n\tDropdownMenuItem,\n\tDropdownMenuTrigger,\n} from \"./dropdown-menu\";\nimport { Tabs, TabsCount, TabsList, TabsTrigger } from \"./tabs\";\n\ntype TabsListVariant = \"default\" | \"line\" | \"secondary\" | \"underline\";\n\ntype TabListItem = {\n\t/** Stable value used to match the active tab. */\n\tvalue: string;\n\t/** Visible label. */\n\tlabel: React.ReactNode;\n\t/** Optional count badge rendered after the label. */\n\tcount?: number;\n\tdisabled?: boolean;\n\t/**\n\t * Optional element to render the trigger as (e.g. a router `<Link>`).\n\t * Used for both the in-bar tab and its overflow menu item.\n\t */\n\trender?: React.ReactElement;\n};\n\ntype TabListProps = Omit<\n\tTabsPrimitive.Root.Props,\n\t\"children\" | \"value\" | \"defaultValue\" | \"onValueChange\"\n> & {\n\titems: TabListItem[];\n\tvalue?: string;\n\tdefaultValue?: string;\n\tonValueChange?: (value: string) => void;\n\tvariant?: TabsListVariant;\n\t/** Max tabs shown inline on small screens before collapsing into \"More\". */\n\tmaxVisibleMobile?: number;\n\t/** Max tabs shown inline on larger screens before collapsing into \"More\". */\n\tmaxVisibleDesktop?: number;\n\t/** Label for the overflow trigger. */\n\tmoreLabel?: React.ReactNode;\n\tclassName?: string;\n\tlistClassName?: string;\n\t/** Tab panels (`TabsContent`) to render under the bar. */\n\tchildren?: React.ReactNode;\n};\n\nfunction TabList({\n\titems,\n\tvalue,\n\tdefaultValue,\n\tonValueChange,\n\tvariant = \"line\",\n\tmaxVisibleMobile = 2,\n\tmaxVisibleDesktop = 4,\n\tmoreLabel = \"More\",\n\tclassName,\n\tlistClassName,\n\tchildren,\n\t...rootProps\n}: TabListProps) {\n\tconst isMobile = useIsMobile();\n\tconst [internalValue, setInternalValue] = useState(\n\t\tvalue ?? defaultValue ?? items[0]?.value,\n\t);\n\n\tconst currentValue = value ?? internalValue;\n\n\tconst selectValue = (next: string) => {\n\t\tif (value === undefined) setInternalValue(next);\n\t\tonValueChange?.(next);\n\t};\n\n\tconst maxVisible = isMobile ? maxVisibleMobile : maxVisibleDesktop;\n\tconst visibleItems = items.slice(0, maxVisible);\n\tconst overflowItems = items.slice(maxVisible);\n\tconst isOverflowActive = overflowItems.some(\n\t\t(item) => item.value === currentValue,\n\t);\n\n\treturn (\n\t\t<Tabs\n\t\t\tvalue={currentValue}\n\t\t\tonValueChange={(next) => selectValue(next as string)}\n\t\t\tclassName={className}\n\t\t\t{...rootProps}\n\t\t>\n\t\t\t<TabsList variant={variant} className={listClassName}>\n\t\t\t\t{visibleItems.map((item) => (\n\t\t\t\t\t<TabsTrigger\n\t\t\t\t\t\tkey={item.value}\n\t\t\t\t\t\tvalue={item.value}\n\t\t\t\t\t\tdisabled={item.disabled}\n\t\t\t\t\t\tnativeButton={item.render ? false : undefined}\n\t\t\t\t\t\trender={item.render}\n\t\t\t\t\t>\n\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t{item.count != null && <TabsCount>{item.count}</TabsCount>}\n\t\t\t\t\t</TabsTrigger>\n\t\t\t\t))}\n\n\t\t\t\t{overflowItems.length > 0 && (\n\t\t\t\t\t<DropdownMenu>\n\t\t\t\t\t\t<DropdownMenuTrigger\n\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tdata-active={isOverflowActive || undefined}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\"group/tab-list-more relative inline-flex shrink-0 items-center justify-center gap-1.5 whitespace-nowrap border border-transparent px-4 py-3 text-gdt-md font-semibold text-fg-secondary outline-none transition-colors hover:text-fg-primary focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] data-active:text-fg-primary max-sm:px-3 max-sm:py-2.5 max-sm:text-gdt-sm\",\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{moreLabel}\n\t\t\t\t\t\t\t<ChevronDownIcon className=\"size-4 transition-transform duration-200 group-data-[popup-open]/tab-list-more:rotate-180\" />\n\t\t\t\t\t\t</DropdownMenuTrigger>\n\t\t\t\t\t\t<DropdownMenuContent align=\"end\">\n\t\t\t\t\t\t\t{overflowItems.map((item) => (\n\t\t\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\t\t\tkey={item.value}\n\t\t\t\t\t\t\t\t\tdisabled={item.disabled}\n\t\t\t\t\t\t\t\t\tdata-active={item.value === currentValue || undefined}\n\t\t\t\t\t\t\t\t\tclassName=\"justify-between gap-3 data-active:text-fg-brand\"\n\t\t\t\t\t\t\t\t\trender={item.render}\n\t\t\t\t\t\t\t\t\tonClick={() => selectValue(item.value)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t\t{item.count != null && (\n\t\t\t\t\t\t\t\t\t\t<span className=\"ml-auto inline-flex min-w-5 items-center justify-center rounded-full bg-surface-raised px-1.5 py-0.5 text-[11px] leading-none font-semibold text-fg-secondary\">\n\t\t\t\t\t\t\t\t\t\t\t{item.count}\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</DropdownMenuContent>\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t)}\n\t\t\t</TabsList>\n\n\t\t\t{children}\n\t\t</Tabs>\n\t);\n}\n\nexport { TabList, type TabListItem };\n","import { type ClassValue, clsx } from \"clsx\";\nimport { extendTailwindMerge } from \"tailwind-merge\";\n\nconst twMerge = extendTailwindMerge({\n\textend: {\n\t\tclassGroups: {\n\t\t\t\"font-size\": [\n\t\t\t\t{\n\t\t\t\t\ttext: [\n\t\t\t\t\t\t\"gdt-display\",\n\t\t\t\t\t\t\"gdt-h1\",\n\t\t\t\t\t\t\"gdt-h2\",\n\t\t\t\t\t\t\"gdt-h3\",\n\t\t\t\t\t\t\"gdt-h4\",\n\t\t\t\t\t\t\"gdt-h5\",\n\t\t\t\t\t\t\"gdt-xl\",\n\t\t\t\t\t\t\"gdt-lg\",\n\t\t\t\t\t\t\"gdt-md\",\n\t\t\t\t\t\t\"gdt-sm\",\n\t\t\t\t\t\t\"gdt-xs\",\n\t\t\t\t\t\t\"gdt-subtext\",\n\t\t\t\t\t\t\"gdt-capitalized\",\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n});\n\nexport function cn(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs));\n}\n","import * as React from \"react\";\n\nconst DEFAULT_MOBILE_BREAKPOINT = 1024;\n\nfunction useIsMobile(breakpoint = DEFAULT_MOBILE_BREAKPOINT) {\n\tconst [isMobile, setIsMobile] = React.useState(false);\n\n\tReact.useEffect(() => {\n\t\tconst mediaQuery = window.matchMedia(`(max-width: ${breakpoint - 1}px)`);\n\t\tconst update = () => setIsMobile(window.innerWidth < breakpoint);\n\n\t\tupdate();\n\t\tmediaQuery.addEventListener(\"change\", update);\n\n\t\treturn () => mediaQuery.removeEventListener(\"change\", update);\n\t}, [breakpoint]);\n\n\treturn isMobile;\n}\n\nexport { DEFAULT_MOBILE_BREAKPOINT, useIsMobile };\n","\"use client\";\n\nimport { Menu as MenuPrimitive } from \"@base-ui/react/menu\";\nimport { cva } from \"class-variance-authority\";\nimport { CheckIcon, ChevronRightIcon } from \"lucide-react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport {\n\ttype ComponentSize,\n\tSizeProvider,\n\tuseComponentSize,\n} from \"./size-context\";\n\ntype DropdownMenuSize = ComponentSize;\n\nfunction DropdownMenu({\n\tchildren,\n\tsize,\n\t...props\n}: MenuPrimitive.Root.Props & {\n\tsize?: DropdownMenuSize;\n}) {\n\treturn (\n\t\t<SizeProvider size={size}>\n\t\t\t<MenuPrimitive.Root data-slot=\"dropdown-menu\" {...props}>\n\t\t\t\t{children}\n\t\t\t</MenuPrimitive.Root>\n\t\t</SizeProvider>\n\t);\n}\n\nfunction DropdownMenuPortal({ ...props }: MenuPrimitive.Portal.Props) {\n\treturn <MenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />;\n}\n\nfunction DropdownMenuTrigger({ ...props }: MenuPrimitive.Trigger.Props) {\n\treturn <MenuPrimitive.Trigger data-slot=\"dropdown-menu-trigger\" {...props} />;\n}\n\nconst dropdownMenuContentVariants = cva(\n\t\"relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto border border-line-subtle bg-canvas text-fg-primary shadow-(--elevation-e1-shadow) duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95\",\n\t{\n\t\tvariants: {\n\t\t\tsize: {\n\t\t\t\tsm: \"rounded-lg p-1\",\n\t\t\t\tmd: \"rounded-xl p-1.5\",\n\t\t\t\tlg: \"rounded-[18px] p-2\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tsize: \"md\",\n\t\t},\n\t},\n);\n\nconst dropdownMenuItemVariants = cva(\n\t\"group/dropdown-menu-item relative flex w-full cursor-pointer items-center font-normal text-fg-primary outline-none transition-colors select-none focus:bg-surface focus:text-fg-primary data-highlighted:bg-surface data-highlighted:text-fg-primary data-[variant=destructive]:text-fg-danger data-[variant=destructive]:focus:bg-surface-danger-subtle data-[variant=destructive]:focus:text-fg-danger data-[variant=destructive]:data-highlighted:bg-surface-danger-subtle data-[variant=destructive]:data-highlighted:text-fg-danger data-disabled:pointer-events-none data-disabled:text-fg-caption-placeholder data-disabled:opacity-100 [&_svg]:pointer-events-none [&_svg]:shrink-0 data-[variant=destructive]:[&_svg]:text-fg-danger\",\n\t{\n\t\tvariants: {\n\t\t\tsize: {\n\t\t\t\tsm: \"gap-1.5 rounded-md px-3 py-1.5 text-gdt-xs [&_svg:not([class*='size-'])]:size-3.5\",\n\t\t\t\tmd: \"gap-2 rounded-md px-4 py-2 text-gdt-sm [&_svg:not([class*='size-'])]:size-4\",\n\t\t\t\tlg: \"gap-2.5 rounded-md px-4 py-2.5 text-gdt-md [&_svg:not([class*='size-'])]:size-4.5\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tsize: \"md\",\n\t\t},\n\t},\n);\n\nconst dropdownMenuLabelVariants = cva(\n\t\"font-medium text-fg-secondary data-inset:pl-8\",\n\t{\n\t\tvariants: {\n\t\t\tsize: {\n\t\t\t\tsm: \"px-3 py-1 text-gdt-xs\",\n\t\t\t\tmd: \"px-3 py-1 text-gdt-xs\",\n\t\t\t\tlg: \"px-4 py-1.5 text-gdt-sm\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tsize: \"md\",\n\t\t},\n\t},\n);\n\nfunction DropdownMenuContent({\n\talign = \"start\",\n\talignOffset = 0,\n\tside = \"bottom\",\n\tsideOffset = 6,\n\tclassName,\n\t...props\n}: MenuPrimitive.Popup.Props &\n\tPick<\n\t\tMenuPrimitive.Positioner.Props,\n\t\t\"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n\t>) {\n\tconst resolvedSize = useComponentSize();\n\n\treturn (\n\t\t<MenuPrimitive.Portal>\n\t\t\t<MenuPrimitive.Positioner\n\t\t\t\tclassName=\"isolate z-50 outline-none\"\n\t\t\t\talign={align}\n\t\t\t\talignOffset={alignOffset}\n\t\t\t\tside={side}\n\t\t\t\tsideOffset={sideOffset}\n\t\t\t>\n\t\t\t\t<MenuPrimitive.Popup\n\t\t\t\t\tdata-slot=\"dropdown-menu-content\"\n\t\t\t\t\tdata-size={resolvedSize}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\tdropdownMenuContentVariants({ size: resolvedSize }),\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t\t{...props}\n\t\t\t\t/>\n\t\t\t</MenuPrimitive.Positioner>\n\t\t</MenuPrimitive.Portal>\n\t);\n}\n\nfunction DropdownMenuGroup({ className, ...props }: MenuPrimitive.Group.Props) {\n\treturn (\n\t\t<MenuPrimitive.Group\n\t\t\tdata-slot=\"dropdown-menu-group\"\n\t\t\tclassName={cn(\"scroll-my-1 space-y-0.5\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DropdownMenuLabel({\n\tclassName,\n\tinset,\n\t...props\n}: MenuPrimitive.GroupLabel.Props & {\n\tinset?: boolean;\n}) {\n\tconst resolvedSize = useComponentSize();\n\n\treturn (\n\t\t<MenuPrimitive.GroupLabel\n\t\t\tdata-slot=\"dropdown-menu-label\"\n\t\t\tdata-inset={inset}\n\t\t\tclassName={cn(\n\t\t\t\tdropdownMenuLabelVariants({ size: resolvedSize }),\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DropdownMenuItem({\n\tclassName,\n\tinset,\n\tvariant = \"default\",\n\t...props\n}: MenuPrimitive.Item.Props & {\n\tinset?: boolean;\n\tvariant?: \"default\" | \"destructive\";\n}) {\n\tconst resolvedSize = useComponentSize();\n\n\treturn (\n\t\t<MenuPrimitive.Item\n\t\t\tdata-slot=\"dropdown-menu-item\"\n\t\t\tdata-inset={inset}\n\t\t\tdata-size={resolvedSize}\n\t\t\tdata-variant={variant}\n\t\t\tclassName={cn(\n\t\t\t\tdropdownMenuItemVariants({ size: resolvedSize }),\n\t\t\t\t\"data-inset:pl-8\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DropdownMenuSub({ ...props }: MenuPrimitive.SubmenuRoot.Props) {\n\treturn <MenuPrimitive.SubmenuRoot data-slot=\"dropdown-menu-sub\" {...props} />;\n}\n\nfunction DropdownMenuSubTrigger({\n\tclassName,\n\tinset,\n\tchildren,\n\t...props\n}: MenuPrimitive.SubmenuTrigger.Props & {\n\tinset?: boolean;\n}) {\n\tconst resolvedSize = useComponentSize();\n\n\treturn (\n\t\t<MenuPrimitive.SubmenuTrigger\n\t\t\tdata-slot=\"dropdown-menu-sub-trigger\"\n\t\t\tdata-inset={inset}\n\t\t\tdata-size={resolvedSize}\n\t\t\tclassName={cn(\n\t\t\t\tdropdownMenuItemVariants({ size: resolvedSize }),\n\t\t\t\t\"data-inset:pl-8 data-open:bg-surface data-open:text-fg-primary data-popup-open:bg-surface data-popup-open:text-fg-primary\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t\t<ChevronRightIcon className=\"cn-rtl-flip ml-auto\" />\n\t\t</MenuPrimitive.SubmenuTrigger>\n\t);\n}\n\nfunction DropdownMenuSubContent({\n\talign = \"start\",\n\talignOffset = -3,\n\tside = \"right\",\n\tsideOffset = 4,\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof DropdownMenuContent>) {\n\treturn (\n\t\t<DropdownMenuContent\n\t\t\tdata-slot=\"dropdown-menu-sub-content\"\n\t\t\tclassName={cn(\n\t\t\t\t\"w-auto min-w-28 shadow-(--elevation-e2-shadow)\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\talign={align}\n\t\t\talignOffset={alignOffset}\n\t\t\tside={side}\n\t\t\tsideOffset={sideOffset}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DropdownMenuCheckboxItem({\n\tclassName,\n\tchildren,\n\tchecked,\n\tinset,\n\t...props\n}: MenuPrimitive.CheckboxItem.Props & {\n\tinset?: boolean;\n}) {\n\tconst resolvedSize = useComponentSize();\n\n\treturn (\n\t\t<MenuPrimitive.CheckboxItem\n\t\t\tdata-slot=\"dropdown-menu-checkbox-item\"\n\t\t\tdata-inset={inset}\n\t\t\tdata-size={resolvedSize}\n\t\t\tclassName={cn(\n\t\t\t\tdropdownMenuItemVariants({ size: resolvedSize }),\n\t\t\t\t\"pr-10 data-inset:pl-8\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\tchecked={checked}\n\t\t\t{...props}\n\t\t>\n\t\t\t<span\n\t\t\t\tclassName=\"pointer-events-none absolute right-3 flex items-center justify-center text-fg-brand\"\n\t\t\t\tdata-slot=\"dropdown-menu-checkbox-item-indicator\"\n\t\t\t>\n\t\t\t\t<MenuPrimitive.CheckboxItemIndicator>\n\t\t\t\t\t<CheckIcon />\n\t\t\t\t</MenuPrimitive.CheckboxItemIndicator>\n\t\t\t</span>\n\t\t\t{children}\n\t\t</MenuPrimitive.CheckboxItem>\n\t);\n}\n\nfunction DropdownMenuRadioGroup({ ...props }: MenuPrimitive.RadioGroup.Props) {\n\treturn (\n\t\t<MenuPrimitive.RadioGroup\n\t\t\tdata-slot=\"dropdown-menu-radio-group\"\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DropdownMenuRadioItem({\n\tclassName,\n\tchildren,\n\tinset,\n\t...props\n}: MenuPrimitive.RadioItem.Props & {\n\tinset?: boolean;\n}) {\n\tconst resolvedSize = useComponentSize();\n\n\treturn (\n\t\t<MenuPrimitive.RadioItem\n\t\t\tdata-slot=\"dropdown-menu-radio-item\"\n\t\t\tdata-inset={inset}\n\t\t\tdata-size={resolvedSize}\n\t\t\tclassName={cn(\n\t\t\t\tdropdownMenuItemVariants({ size: resolvedSize }),\n\t\t\t\t\"pr-10 data-inset:pl-8\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<span\n\t\t\t\tclassName=\"pointer-events-none absolute right-3 flex items-center justify-center text-fg-brand\"\n\t\t\t\tdata-slot=\"dropdown-menu-radio-item-indicator\"\n\t\t\t>\n\t\t\t\t<MenuPrimitive.RadioItemIndicator>\n\t\t\t\t\t<CheckIcon />\n\t\t\t\t</MenuPrimitive.RadioItemIndicator>\n\t\t\t</span>\n\t\t\t{children}\n\t\t</MenuPrimitive.RadioItem>\n\t);\n}\n\nfunction DropdownMenuSeparator({\n\tclassName,\n\t...props\n}: MenuPrimitive.Separator.Props) {\n\treturn (\n\t\t<MenuPrimitive.Separator\n\t\t\tdata-slot=\"dropdown-menu-separator\"\n\t\t\tclassName={cn(\"pointer-events-none my-1 h-px bg-line-subtle\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DropdownMenuShortcut({\n\tclassName,\n\t...props\n}: React.ComponentProps<\"span\">) {\n\treturn (\n\t\t<span\n\t\t\tdata-slot=\"dropdown-menu-shortcut\"\n\t\t\tclassName={cn(\n\t\t\t\t\"ml-auto text-gdt-xs tracking-widest text-fg-secondary group-focus/dropdown-menu-item:text-fg-primary group-data-highlighted/dropdown-menu-item:text-fg-primary\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport {\n\tDropdownMenu,\n\tDropdownMenuPortal,\n\tDropdownMenuTrigger,\n\tDropdownMenuContent,\n\tDropdownMenuGroup,\n\tDropdownMenuLabel,\n\tDropdownMenuItem,\n\tDropdownMenuCheckboxItem,\n\tDropdownMenuRadioGroup,\n\tDropdownMenuRadioItem,\n\tDropdownMenuSeparator,\n\tDropdownMenuShortcut,\n\tDropdownMenuSub,\n\tDropdownMenuSubTrigger,\n\tDropdownMenuSubContent,\n\ttype DropdownMenuSize,\n};\n","\"use client\";\n\nimport { createContext, type ReactNode, useContext } from \"react\";\n\ntype ComponentSize = \"sm\" | \"md\" | \"lg\";\n\nconst SizeContext = createContext<ComponentSize | undefined>(undefined);\n\nfunction SizeProvider({\n\tchildren,\n\tsize,\n}: {\n\tchildren: ReactNode;\n\tsize?: ComponentSize | null;\n}) {\n\tif (!size) {\n\t\treturn <>{children}</>;\n\t}\n\n\treturn <SizeContext.Provider value={size}>{children}</SizeContext.Provider>;\n}\n\nfunction useComponentSize(\n\tsize?: ComponentSize | null,\n\tfallback: ComponentSize = \"md\",\n) {\n\tconst inheritedSize = useContext(SizeContext);\n\treturn size ?? inheritedSize ?? fallback;\n}\n\nexport { SizeProvider, useComponentSize, type ComponentSize };\n","\"use client\";\n\nimport { Tabs as TabsPrimitive } from \"@base-ui/react/tabs\";\nimport { cva } from \"class-variance-authority\";\nimport type { ComponentPropsWithoutRef } from \"react\";\n\nimport { cn } from \"../../lib/cn\";\n\ntype TabsListVariant = \"default\" | \"line\" | \"secondary\" | \"underline\";\n\nfunction resolveTabsListVariant(variant: TabsListVariant) {\n\treturn variant === \"default\"\n\t\t? \"secondary\"\n\t\t: variant === \"line\"\n\t\t\t? \"underline\"\n\t\t\t: variant;\n}\n\nfunction Tabs({\n\tclassName,\n\torientation = \"horizontal\",\n\t...props\n}: TabsPrimitive.Root.Props) {\n\treturn (\n\t\t<TabsPrimitive.Root\n\t\t\tdata-slot=\"tabs\"\n\t\t\tdata-orientation={orientation}\n\t\t\tclassName={cn(\n\t\t\t\t\"group/tabs flex gap-3 data-[orientation=horizontal]:flex-col\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nconst tabsListVariants = cva(\n\t\"group/tabs-list relative inline-flex w-fit shrink-0 items-center gap-1 text-fg-secondary group-data-[orientation=horizontal]/tabs:border-b group-data-[orientation=horizontal]/tabs:border-line-subtle group-data-[orientation=vertical]/tabs:flex-col group-data-[orientation=vertical]/tabs:border-l group-data-[orientation=vertical]/tabs:border-line-subtle\",\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tunderline: \"rounded-none bg-transparent p-0\",\n\t\t\t\tsecondary: \"rounded-4xl bg-transparent p-0\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tvariant: \"underline\",\n\t\t},\n\t},\n);\n\nfunction TabsList({\n\tclassName,\n\tvariant = \"underline\",\n\tchildren,\n\t...props\n}: TabsPrimitive.List.Props & {\n\tvariant?: TabsListVariant;\n}) {\n\tconst resolvedVariant = resolveTabsListVariant(variant);\n\n\treturn (\n\t\t<TabsPrimitive.List\n\t\t\tdata-slot=\"tabs-list\"\n\t\t\tdata-variant={resolvedVariant}\n\t\t\tclassName={cn(tabsListVariants({ variant: resolvedVariant }), className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t\t<TabsPrimitive.Indicator\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"pointer-events-none absolute left-0 top-0 z-0 h-(--active-tab-height) w-(--active-tab-width) translate-x-(--active-tab-left) translate-y-(--active-tab-top) transition-[transform,width,height] duration-200 ease-in-out\",\n\t\t\t\t\t\"group-data-[variant=secondary]/tabs-list:hidden\",\n\t\t\t\t\t\"group-data-[variant=underline]/tabs-list:rounded-none group-data-[variant=underline]/tabs-list:bg-line-focus group-data-[variant=underline]/tabs-list:shadow-none\",\n\t\t\t\t\t\"group-data-[orientation=horizontal]/tabs:group-data-[variant=underline]/tabs-list:top-auto group-data-[orientation=horizontal]/tabs:group-data-[variant=underline]/tabs-list:bottom-[-1px] group-data-[orientation=horizontal]/tabs:group-data-[variant=underline]/tabs-list:h-0.5! group-data-[orientation=horizontal]/tabs:group-data-[variant=underline]/tabs-list:translate-y-0\",\n\t\t\t\t\t\"group-data-[orientation=vertical]/tabs:group-data-[variant=underline]/tabs-list:left-auto group-data-[orientation=vertical]/tabs:group-data-[variant=underline]/tabs-list:right-[-1px] group-data-[orientation=vertical]/tabs:group-data-[variant=underline]/tabs-list:w-0.5! group-data-[orientation=vertical]/tabs:group-data-[variant=underline]/tabs-list:translate-x-0\",\n\t\t\t\t)}\n\t\t\t/>\n\t\t</TabsPrimitive.List>\n\t);\n}\n\nfunction TabsTrigger({\n\tclassName,\n\tnativeButton = true,\n\t...props\n}: TabsPrimitive.Tab.Props) {\n\treturn (\n\t\t<TabsPrimitive.Tab\n\t\t\tdata-slot=\"tabs-trigger\"\n\t\t\tnativeButton={nativeButton}\n\t\t\tclassName={cn(\n\t\t\t\t\"group/tabs-trigger relative inline-flex shrink-0 items-center justify-center gap-2 whitespace-nowrap border border-transparent font-semibold outline-none transition-[background-color,color,box-shadow] focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:text-current [&_svg:not([class*='size-'])]:size-4\",\n\t\t\t\t\"group-data-[variant=underline]/tabs-list:-mb-px group-data-[variant=underline]/tabs-list:rounded-none group-data-[variant=underline]/tabs-list:px-4 group-data-[variant=underline]/tabs-list:py-3 group-data-[variant=underline]/tabs-list:text-gdt-md group-data-[variant=underline]/tabs-list:text-fg-secondary group-data-[variant=underline]/tabs-list:hover:text-fg-primary group-data-[variant=underline]/tabs-list:data-active:text-fg-primary max-sm:group-data-[variant=underline]/tabs-list:px-3 max-sm:group-data-[variant=underline]/tabs-list:py-2.5 max-sm:group-data-[variant=underline]/tabs-list:text-gdt-sm\",\n\t\t\t\t\"group-data-[variant=secondary]/tabs-list:rounded-4xl group-data-[variant=secondary]/tabs-list:bg-surface-raised group-data-[variant=secondary]/tabs-list:px-4 group-data-[variant=secondary]/tabs-list:py-3 group-data-[variant=secondary]/tabs-list:text-gdt-md group-data-[variant=secondary]/tabs-list:text-fg-secondary group-data-[variant=secondary]/tabs-list:hover:bg-surface group-data-[variant=secondary]/tabs-list:hover:text-fg-primary group-data-[variant=secondary]/tabs-list:data-active:bg-surface-brand group-data-[variant=secondary]/tabs-list:data-active:text-fg-on-brand group-data-[variant=secondary]/tabs-list:data-active:shadow-(--elevation-e1-shadow) group-data-[variant=secondary]/tabs-list:data-active:hover:bg-surface-brand group-data-[variant=secondary]/tabs-list:data-active:hover:text-fg-on-brand max-sm:group-data-[variant=secondary]/tabs-list:px-3 max-sm:group-data-[variant=secondary]/tabs-list:py-2.5 max-sm:group-data-[variant=secondary]/tabs-list:text-gdt-sm\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction TabsCount({ className, ...props }: ComponentPropsWithoutRef<\"span\">) {\n\treturn (\n\t\t<span\n\t\t\tdata-slot=\"tabs-count\"\n\t\t\tclassName={cn(\n\t\t\t\t\"inline-flex min-w-5 items-center justify-center rounded-full px-1.5 py-0.5 text-[11px] leading-none font-semibold transition-[background-color,color]\",\n\t\t\t\t\"group-data-[variant=underline]/tabs-list:bg-surface-raised group-data-[variant=underline]/tabs-list:text-fg-secondary group-data-[variant=underline]/tabs-list:group-data-[active]/tabs-trigger:bg-surface-brand-subtle group-data-[variant=underline]/tabs-list:group-data-[active]/tabs-trigger:text-fg-brand\",\n\t\t\t\t\"group-data-[variant=secondary]/tabs-list:bg-surface-overlay group-data-[variant=secondary]/tabs-list:text-fg-secondary group-data-[variant=secondary]/tabs-list:group-data-[active]/tabs-trigger:bg-surface-brand-subtle group-data-[variant=secondary]/tabs-list:group-data-[active]/tabs-trigger:text-fg-brand\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction TabsContent({ className, ...props }: TabsPrimitive.Panel.Props) {\n\treturn (\n\t\t<TabsPrimitive.Panel\n\t\t\tdata-slot=\"tabs-content\"\n\t\t\tclassName={cn(\"flex-1 text-sm outline-none\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport {\n\tTabs,\n\tTabsList,\n\tTabsTrigger,\n\tTabsCount,\n\tTabsContent,\n\ttabsListVariants,\n};\n"],"mappings":"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","names":["useState","jsx","jsx","jsx","cva","jsx","jsxs","cva","jsx","jsxs","useState"]}
|
|
1
|
+
{"version":3,"sources":["../src/tab-list.tsx"],"sourcesContent":["\"use client\";\n\nimport type { Tabs as TabsPrimitive } from \"@base-ui/react/tabs\";\nimport { ChevronDownIcon } from \"lucide-react\";\nimport { useState } from \"react\";\nimport {\n\tDropdownMenu,\n\tDropdownMenuContent,\n\tDropdownMenuItem,\n\tDropdownMenuTrigger,\n} from \"./dropdown-menu\";\nimport { cn } from \"./lib/cn\";\nimport { useIsMobile } from \"./lib/use-mobile\";\nimport { Tabs, TabsCount, TabsList, TabsTrigger } from \"./tabs\";\n\ntype TabsListVariant = \"default\" | \"line\" | \"secondary\" | \"underline\";\n\ntype TabListItem = {\n\t/** Stable value used to match the active tab. */\n\tvalue: string;\n\t/** Visible label. */\n\tlabel: React.ReactNode;\n\t/** Optional count badge rendered after the label. */\n\tcount?: number;\n\tdisabled?: boolean;\n\t/**\n\t * Optional element to render the trigger as (e.g. a router `<Link>`).\n\t * Used for both the in-bar tab and its overflow menu item.\n\t */\n\trender?: React.ReactElement;\n};\n\ntype TabListProps = Omit<\n\tTabsPrimitive.Root.Props,\n\t\"children\" | \"value\" | \"defaultValue\" | \"onValueChange\"\n> & {\n\titems: TabListItem[];\n\tvalue?: string;\n\tdefaultValue?: string;\n\tonValueChange?: (value: string) => void;\n\tvariant?: TabsListVariant;\n\t/** Max tabs shown inline on small screens before collapsing into \"More\". */\n\tmaxVisibleMobile?: number;\n\t/** Max tabs shown inline on larger screens before collapsing into \"More\". */\n\tmaxVisibleDesktop?: number;\n\t/** Label for the overflow trigger. */\n\tmoreLabel?: React.ReactNode;\n\tclassName?: string;\n\tlistClassName?: string;\n\t/** Tab panels (`TabsContent`) to render under the bar. */\n\tchildren?: React.ReactNode;\n};\n\nfunction TabList({\n\titems,\n\tvalue,\n\tdefaultValue,\n\tonValueChange,\n\tvariant = \"line\",\n\tmaxVisibleMobile = 2,\n\tmaxVisibleDesktop = 4,\n\tmoreLabel = \"More\",\n\tclassName,\n\tlistClassName,\n\tchildren,\n\t...rootProps\n}: TabListProps) {\n\tconst isMobile = useIsMobile();\n\tconst [internalValue, setInternalValue] = useState(\n\t\tvalue ?? defaultValue ?? items[0]?.value,\n\t);\n\n\tconst currentValue = value ?? internalValue;\n\n\tconst selectValue = (next: string) => {\n\t\tif (value === undefined) setInternalValue(next);\n\t\tonValueChange?.(next);\n\t};\n\n\tconst maxVisible = isMobile ? maxVisibleMobile : maxVisibleDesktop;\n\tconst visibleItems = items.slice(0, maxVisible);\n\tconst overflowItems = items.slice(maxVisible);\n\tconst isOverflowActive = overflowItems.some(\n\t\t(item) => item.value === currentValue,\n\t);\n\n\treturn (\n\t\t<Tabs\n\t\t\tvalue={currentValue}\n\t\t\tonValueChange={(next) => selectValue(next as string)}\n\t\t\tclassName={className}\n\t\t\t{...rootProps}\n\t\t>\n\t\t\t<TabsList variant={variant} className={listClassName}>\n\t\t\t\t{visibleItems.map((item) => (\n\t\t\t\t\t<TabsTrigger\n\t\t\t\t\t\tkey={item.value}\n\t\t\t\t\t\tvalue={item.value}\n\t\t\t\t\t\tdisabled={item.disabled}\n\t\t\t\t\t\tnativeButton={item.render ? false : undefined}\n\t\t\t\t\t\trender={item.render}\n\t\t\t\t\t>\n\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t{item.count != null && <TabsCount>{item.count}</TabsCount>}\n\t\t\t\t\t</TabsTrigger>\n\t\t\t\t))}\n\n\t\t\t\t{overflowItems.length > 0 && (\n\t\t\t\t\t<DropdownMenu>\n\t\t\t\t\t\t<DropdownMenuTrigger\n\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tdata-active={isOverflowActive || undefined}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\"group/tab-list-more relative inline-flex shrink-0 items-center justify-center gap-1.5 whitespace-nowrap border border-transparent px-4 py-3 text-gdt-md font-semibold text-fg-secondary outline-none transition-colors hover:text-fg-primary focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] data-active:text-fg-primary max-sm:px-3 max-sm:py-2.5 max-sm:text-gdt-sm\",\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{moreLabel}\n\t\t\t\t\t\t\t<ChevronDownIcon className=\"size-4 transition-transform duration-200 group-data-[popup-open]/tab-list-more:rotate-180\" />\n\t\t\t\t\t\t</DropdownMenuTrigger>\n\t\t\t\t\t\t<DropdownMenuContent align=\"end\">\n\t\t\t\t\t\t\t{overflowItems.map((item) => (\n\t\t\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\t\t\tkey={item.value}\n\t\t\t\t\t\t\t\t\tdisabled={item.disabled}\n\t\t\t\t\t\t\t\t\tdata-active={item.value === currentValue || undefined}\n\t\t\t\t\t\t\t\t\tclassName=\"justify-between gap-3 data-active:text-fg-brand\"\n\t\t\t\t\t\t\t\t\trender={item.render}\n\t\t\t\t\t\t\t\t\tonClick={() => selectValue(item.value)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t\t{item.count != null && (\n\t\t\t\t\t\t\t\t\t\t<span className=\"ml-auto inline-flex min-w-5 items-center justify-center rounded-full bg-surface-raised px-1.5 py-0.5 text-[11px] leading-none font-semibold text-fg-secondary\">\n\t\t\t\t\t\t\t\t\t\t\t{item.count}\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</DropdownMenuContent>\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t)}\n\t\t\t</TabsList>\n\n\t\t\t{children}\n\t\t</Tabs>\n\t);\n}\n\nexport { TabList, type TabListItem };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAGA,SAAS,uBAAuB;AAChC,SAAS,gBAAgB;AA2FpB,SAQwB,KARxB;AA1CL,SAAS,QAAQ;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,mBAAmB;AAAA,EACnB,oBAAoB;AAAA,EACpB,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACJ,GAAiB;AAChB,QAAM,WAAW,YAAY;AAC7B,QAAM,CAAC,eAAe,gBAAgB,IAAI;AAAA,IACzC,SAAS,gBAAgB,MAAM,CAAC,GAAG;AAAA,EACpC;AAEA,QAAM,eAAe,SAAS;AAE9B,QAAM,cAAc,CAAC,SAAiB;AACrC,QAAI,UAAU,OAAW,kBAAiB,IAAI;AAC9C,oBAAgB,IAAI;AAAA,EACrB;AAEA,QAAM,aAAa,WAAW,mBAAmB;AACjD,QAAM,eAAe,MAAM,MAAM,GAAG,UAAU;AAC9C,QAAM,gBAAgB,MAAM,MAAM,UAAU;AAC5C,QAAM,mBAAmB,cAAc;AAAA,IACtC,CAAC,SAAS,KAAK,UAAU;AAAA,EAC1B;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA,OAAO;AAAA,MACP,eAAe,CAAC,SAAS,YAAY,IAAc;AAAA,MACnD;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,6BAAC,YAAS,SAAkB,WAAW,eACrC;AAAA,uBAAa,IAAI,CAAC,SAClB;AAAA,YAAC;AAAA;AAAA,cAEA,OAAO,KAAK;AAAA,cACZ,UAAU,KAAK;AAAA,cACf,cAAc,KAAK,SAAS,QAAQ;AAAA,cACpC,QAAQ,KAAK;AAAA,cAEZ;AAAA,qBAAK;AAAA,gBACL,KAAK,SAAS,QAAQ,oBAAC,aAAW,eAAK,OAAM;AAAA;AAAA;AAAA,YAPzC,KAAK;AAAA,UAQX,CACA;AAAA,UAEA,cAAc,SAAS,KACvB,qBAAC,gBACA;AAAA;AAAA,cAAC;AAAA;AAAA,gBACA,QACC;AAAA,kBAAC;AAAA;AAAA,oBACA,MAAK;AAAA,oBACL,eAAa,oBAAoB;AAAA,oBACjC,WAAW;AAAA,sBACV;AAAA,oBACD;AAAA;AAAA,gBACD;AAAA,gBAGA;AAAA;AAAA,kBACD,oBAAC,mBAAgB,WAAU,6FAA4F;AAAA;AAAA;AAAA,YACxH;AAAA,YACA,oBAAC,uBAAoB,OAAM,OACzB,wBAAc,IAAI,CAAC,SACnB;AAAA,cAAC;AAAA;AAAA,gBAEA,UAAU,KAAK;AAAA,gBACf,eAAa,KAAK,UAAU,gBAAgB;AAAA,gBAC5C,WAAU;AAAA,gBACV,QAAQ,KAAK;AAAA,gBACb,SAAS,MAAM,YAAY,KAAK,KAAK;AAAA,gBAEpC;AAAA,uBAAK;AAAA,kBACL,KAAK,SAAS,QACd,oBAAC,UAAK,WAAU,iKACd,eAAK,OACP;AAAA;AAAA;AAAA,cAXI,KAAK;AAAA,YAaX,CACA,GACF;AAAA,aACD;AAAA,WAEF;AAAA,QAEC;AAAA;AAAA;AAAA,EACF;AAEF;","names":[]}
|
package/dist/table.js
CHANGED
|
@@ -1,36 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
extend: {
|
|
6
|
-
classGroups: {
|
|
7
|
-
"font-size": [
|
|
8
|
-
{
|
|
9
|
-
text: [
|
|
10
|
-
"gdt-display",
|
|
11
|
-
"gdt-h1",
|
|
12
|
-
"gdt-h2",
|
|
13
|
-
"gdt-h3",
|
|
14
|
-
"gdt-h4",
|
|
15
|
-
"gdt-h5",
|
|
16
|
-
"gdt-xl",
|
|
17
|
-
"gdt-lg",
|
|
18
|
-
"gdt-md",
|
|
19
|
-
"gdt-sm",
|
|
20
|
-
"gdt-xs",
|
|
21
|
-
"gdt-subtext",
|
|
22
|
-
"gdt-capitalized"
|
|
23
|
-
]
|
|
24
|
-
}
|
|
25
|
-
]
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
function cn(...inputs) {
|
|
30
|
-
return twMerge(clsx(inputs));
|
|
31
|
-
}
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
cn
|
|
4
|
+
} from "./chunk-Y4TTYVNE.js";
|
|
32
5
|
|
|
33
|
-
// src/
|
|
6
|
+
// src/table.tsx
|
|
34
7
|
import { jsx } from "react/jsx-runtime";
|
|
35
8
|
function Table({
|
|
36
9
|
className,
|