@tenerife.music/ui 1.0.12 → 1.0.13

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.
@@ -3331,8 +3331,9 @@ var TOAST_TOKENS = {
3331
3331
  },
3332
3332
  /**
3333
3333
  * Animation tokens for toast enter/exit animations
3334
- * Maps to Motion V2 utility classes
3334
+ * Maps to Motion V2 utility classes and Radix data attributes
3335
3335
  * Uses CSS-only animations from motion/v2.ts
3336
+ * Radix Toast provides data-[state=open] and data-[state=closed] attributes
3336
3337
  */
3337
3338
  animation: {
3338
3339
  enter: {
@@ -3350,6 +3351,24 @@ var TOAST_TOKENS = {
3350
3351
  // Motion V2 fade out
3351
3352
  combined: "tm-motion-fade-slide-left-out"
3352
3353
  // Motion V2 fade + slide left out
3354
+ },
3355
+ /**
3356
+ * Radix Toast data attribute classes
3357
+ * These are applied automatically by Radix based on toast state
3358
+ */
3359
+ radix: {
3360
+ /**
3361
+ * Base classes for Radix Toast Root
3362
+ * Includes swipe handling and state-based animations
3363
+ */
3364
+ root: "data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out",
3365
+ /**
3366
+ * State-based animation classes
3367
+ */
3368
+ state: {
3369
+ open: "data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",
3370
+ closed: "data-[state=closed]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full"
3371
+ }
3353
3372
  }
3354
3373
  },
3355
3374
  /**
@@ -4272,6 +4291,511 @@ var TOOLTIP_TOKENS = {
4272
4291
  }
4273
4292
  };
4274
4293
 
4294
+ // src/tokens/components/select.ts
4295
+ var SELECT_TOKENS = {
4296
+ /**
4297
+ * Select trigger heights by size
4298
+ * Supports xs, sm, md, lg, xl sizes
4299
+ */
4300
+ trigger: {
4301
+ height: {
4302
+ xs: "h-7",
4303
+ // 28px (1.75rem)
4304
+ sm: "h-8",
4305
+ // 32px (2rem)
4306
+ md: "h-9",
4307
+ // 36px (2.25rem) - default
4308
+ lg: "h-10",
4309
+ // 40px (2.5rem)
4310
+ xl: "h-11"
4311
+ // 44px (2.75rem)
4312
+ },
4313
+ padding: {
4314
+ horizontal: {
4315
+ xs: "px-xs",
4316
+ // 4px (0.25rem)
4317
+ sm: "px-sm",
4318
+ // 8px (0.5rem)
4319
+ md: "px-sm",
4320
+ // 8px (0.5rem) - default
4321
+ lg: "px-md",
4322
+ // 16px (1rem)
4323
+ xl: "px-lg"
4324
+ // 24px (1.5rem)
4325
+ },
4326
+ vertical: {
4327
+ xs: "py-xs",
4328
+ // 4px (0.25rem)
4329
+ sm: "py-xs",
4330
+ // 4px (0.25rem)
4331
+ md: "py-xs",
4332
+ // 4px (0.25rem) - default
4333
+ lg: "py-sm",
4334
+ // 8px (0.5rem)
4335
+ xl: "py-md"
4336
+ // 16px (1rem)
4337
+ }
4338
+ },
4339
+ radius: {
4340
+ xs: "rounded-sm",
4341
+ // 4px (0.25rem)
4342
+ sm: "rounded-md",
4343
+ // 6px (0.375rem)
4344
+ md: "rounded-md",
4345
+ // 6px (0.375rem) - default
4346
+ lg: "rounded-md",
4347
+ // 6px (0.375rem)
4348
+ xl: "rounded-lg"
4349
+ // 8px (0.5rem)
4350
+ },
4351
+ fontSize: {
4352
+ xs: "text-xs",
4353
+ // Maps to fontSize.xs[0]
4354
+ sm: "text-sm",
4355
+ // Maps to fontSize.sm[0]
4356
+ md: "text-base",
4357
+ // Maps to fontSize.base[0] - default
4358
+ lg: "text-base",
4359
+ // Maps to fontSize.base[0]
4360
+ xl: "text-lg"
4361
+ // Maps to fontSize.lg[0]
4362
+ },
4363
+ icon: {
4364
+ size: "size-4",
4365
+ // 16px (1rem)
4366
+ gap: "gap-sm",
4367
+ // 8px (0.5rem)
4368
+ color: "text-[hsl(var(--muted-foreground))]"
4369
+ // Icon color using CSS variable
4370
+ }
4371
+ },
4372
+ /**
4373
+ * Select content (dropdown) tokens
4374
+ */
4375
+ content: {
4376
+ padding: {
4377
+ xs: "p-xs",
4378
+ // 4px (0.25rem)
4379
+ sm: "p-sm",
4380
+ // 8px (0.5rem)
4381
+ md: "p-sm",
4382
+ // 8px (0.5rem) - default
4383
+ lg: "p-md",
4384
+ // 16px (1rem)
4385
+ xl: "p-lg"
4386
+ // 24px (1.5rem)
4387
+ },
4388
+ radius: {
4389
+ xs: "rounded-sm",
4390
+ // 4px (0.25rem)
4391
+ sm: "rounded-md",
4392
+ // 6px (0.375rem)
4393
+ md: "rounded-md",
4394
+ // 6px (0.375rem) - default
4395
+ lg: "rounded-md",
4396
+ // 6px (0.375rem)
4397
+ xl: "rounded-lg"
4398
+ // 8px (0.5rem)
4399
+ },
4400
+ shadow: "shadow-md",
4401
+ // Maps to elevationShadows.md
4402
+ background: "bg-[hsl(var(--popover))]",
4403
+ // Background using CSS var
4404
+ text: "text-[hsl(var(--popover-foreground))]",
4405
+ // Text color using CSS var
4406
+ border: "border border-[hsl(var(--border))]",
4407
+ // Border color using CSS var
4408
+ maxHeight: "max-h-[384px]",
4409
+ // Maximum height for scrollable content (24rem = 384px)
4410
+ minWidth: "min-w-[128px]"
4411
+ // Minimum width (8rem = 128px)
4412
+ },
4413
+ /**
4414
+ * Select item tokens
4415
+ */
4416
+ item: {
4417
+ padding: {
4418
+ horizontal: {
4419
+ xs: "px-xs",
4420
+ // 4px (0.25rem)
4421
+ sm: "px-sm",
4422
+ // 8px (0.5rem)
4423
+ md: "px-sm",
4424
+ // 8px (0.5rem) - default
4425
+ lg: "px-md",
4426
+ // 16px (1rem)
4427
+ xl: "px-lg"
4428
+ // 24px (1.5rem)
4429
+ },
4430
+ vertical: {
4431
+ xs: "py-xs",
4432
+ // 4px (0.25rem)
4433
+ sm: "py-xs",
4434
+ // 4px (0.25rem)
4435
+ md: "py-xs",
4436
+ // 4px (0.25rem) - default
4437
+ lg: "py-sm",
4438
+ // 8px (0.5rem)
4439
+ xl: "py-sm"
4440
+ // 8px (0.5rem)
4441
+ }
4442
+ },
4443
+ radius: {
4444
+ xs: "rounded-[4px]",
4445
+ // 4px (0.25rem) - using explicit value to avoid numeric class
4446
+ sm: "rounded-[4px]",
4447
+ // 4px (0.25rem)
4448
+ md: "rounded-[4px]",
4449
+ // 4px (0.25rem) - default
4450
+ lg: "rounded-[4px]",
4451
+ // 4px (0.25rem)
4452
+ xl: "rounded-md"
4453
+ // 6px (0.375rem)
4454
+ },
4455
+ fontSize: {
4456
+ xs: "text-xs",
4457
+ // Maps to fontSize.xs[0]
4458
+ sm: "text-sm",
4459
+ // Maps to fontSize.sm[0]
4460
+ md: "text-sm",
4461
+ // Maps to fontSize.sm[0] - default
4462
+ lg: "text-sm",
4463
+ // Maps to fontSize.sm[0]
4464
+ xl: "text-base"
4465
+ // Maps to fontSize.base[0]
4466
+ },
4467
+ indicator: {
4468
+ size: "size-4",
4469
+ // 16px (1rem)
4470
+ position: "left-sm"
4471
+ // 8px (0.5rem) from left
4472
+ },
4473
+ focus: {
4474
+ background: "focus:bg-[hsl(var(--accent))]",
4475
+ // Focus background using CSS var
4476
+ text: "focus:text-[hsl(var(--accent-foreground))]"
4477
+ // Focus text using CSS var
4478
+ },
4479
+ selected: {
4480
+ background: "bg-[hsl(var(--accent))]",
4481
+ // Selected background using CSS var
4482
+ text: "text-[hsl(var(--accent-foreground))]"
4483
+ // Selected text using CSS var
4484
+ },
4485
+ disabled: {
4486
+ opacity: "opacity-50",
4487
+ // Disabled opacity
4488
+ pointerEvents: "pointer-events-none"
4489
+ // Disable pointer events
4490
+ }
4491
+ },
4492
+ /**
4493
+ * Select label tokens
4494
+ */
4495
+ label: {
4496
+ padding: {
4497
+ horizontal: {
4498
+ xs: "px-xs",
4499
+ // 4px (0.25rem)
4500
+ sm: "px-sm",
4501
+ // 8px (0.5rem)
4502
+ md: "px-sm",
4503
+ // 8px (0.5rem) - default
4504
+ lg: "px-md",
4505
+ // 16px (1rem)
4506
+ xl: "px-lg"
4507
+ // 24px (1.5rem)
4508
+ },
4509
+ vertical: {
4510
+ xs: "py-xs",
4511
+ // 4px (0.25rem)
4512
+ sm: "py-xs",
4513
+ // 4px (0.25rem)
4514
+ md: "py-xs",
4515
+ // 4px (0.25rem) - default
4516
+ lg: "py-sm",
4517
+ // 8px (0.5rem)
4518
+ xl: "py-sm"
4519
+ // 8px (0.5rem)
4520
+ }
4521
+ },
4522
+ fontSize: {
4523
+ xs: "text-xs",
4524
+ // Maps to fontSize.xs[0]
4525
+ sm: "text-sm",
4526
+ // Maps to fontSize.sm[0]
4527
+ md: "text-sm",
4528
+ // Maps to fontSize.sm[0] - default
4529
+ lg: "text-sm",
4530
+ // Maps to fontSize.sm[0]
4531
+ xl: "text-base"
4532
+ // Maps to fontSize.base[0]
4533
+ },
4534
+ fontWeight: "font-semibold"
4535
+ // Semibold weight for labels
4536
+ },
4537
+ /**
4538
+ * Select separator tokens
4539
+ */
4540
+ separator: {
4541
+ margin: {
4542
+ horizontal: {
4543
+ xs: "-mx-xs",
4544
+ // -4px
4545
+ sm: "-mx-xs",
4546
+ // -4px
4547
+ md: "-mx-xs",
4548
+ // -4px - default
4549
+ lg: "-mx-sm",
4550
+ // -8px
4551
+ xl: "-mx-sm"
4552
+ // -8px
4553
+ },
4554
+ vertical: {
4555
+ xs: "my-xs",
4556
+ // 4px (0.25rem)
4557
+ sm: "my-xs",
4558
+ // 4px (0.25rem)
4559
+ md: "my-xs",
4560
+ // 4px (0.25rem) - default
4561
+ lg: "my-sm",
4562
+ // 8px (0.5rem)
4563
+ xl: "my-sm"
4564
+ // 8px (0.5rem)
4565
+ }
4566
+ },
4567
+ height: "h-px",
4568
+ // 1px height
4569
+ background: "bg-[hsl(var(--muted))]"
4570
+ // Background using CSS var
4571
+ },
4572
+ /**
4573
+ * Variant-based tokens
4574
+ * Border, background, and text colors for different variants
4575
+ * All use CSS variable references for theme support
4576
+ */
4577
+ variant: {
4578
+ primary: {
4579
+ border: "border-[hsl(var(--tm-primary))]",
4580
+ // Primary border color
4581
+ background: "bg-[hsl(var(--tm-primary))]",
4582
+ // Primary background
4583
+ text: "text-[hsl(var(--tm-primary-foreground))]",
4584
+ // Primary text color
4585
+ focus: "focus-visible:shadow-[var(--focus-ring-primary)]"
4586
+ // Primary focus ring
4587
+ },
4588
+ secondary: {
4589
+ border: "border-[hsl(var(--tm-secondary))]",
4590
+ // Secondary border color
4591
+ background: "bg-[hsl(var(--tm-secondary))]",
4592
+ // Secondary background
4593
+ text: "text-[hsl(var(--tm-secondary-foreground))]",
4594
+ // Secondary text color
4595
+ focus: "focus-visible:shadow-[var(--focus-ring-default)]"
4596
+ // Default focus ring
4597
+ },
4598
+ outline: {
4599
+ border: "border-[hsl(var(--input))]",
4600
+ // Input border color
4601
+ background: "bg-transparent",
4602
+ // Transparent background
4603
+ text: "text-[hsl(var(--foreground))]",
4604
+ // Foreground text color
4605
+ focus: "focus-visible:shadow-[var(--focus-ring-default)]"
4606
+ // Default focus ring
4607
+ },
4608
+ ghost: {
4609
+ border: "border-transparent",
4610
+ // Transparent border
4611
+ background: "bg-transparent",
4612
+ // Transparent background
4613
+ text: "text-[hsl(var(--foreground))]",
4614
+ // Foreground text color
4615
+ focus: "focus-visible:shadow-[var(--focus-ring-default)]"
4616
+ // Default focus ring
4617
+ },
4618
+ destructive: {
4619
+ border: "border-[hsl(var(--destructive))]",
4620
+ // Destructive border color
4621
+ background: "bg-[hsl(var(--destructive))]",
4622
+ // Destructive background
4623
+ text: "text-[hsl(var(--destructive-foreground))]",
4624
+ // Destructive text color
4625
+ focus: "focus-visible:shadow-[var(--focus-ring-default)]"
4626
+ // Default focus ring
4627
+ }
4628
+ },
4629
+ /**
4630
+ * State-based tokens
4631
+ * Border, background, and text colors for different states
4632
+ * All use CSS variable references for theme support
4633
+ */
4634
+ state: {
4635
+ default: {
4636
+ border: "border-[hsl(var(--input))]",
4637
+ // Default border color using CSS var
4638
+ background: "bg-transparent",
4639
+ // Default background
4640
+ text: "text-[hsl(var(--foreground))]"
4641
+ // Default text color using CSS var
4642
+ },
4643
+ disabled: {
4644
+ border: "border-[hsl(var(--input))]",
4645
+ // Disabled state border (same as default)
4646
+ background: "bg-transparent",
4647
+ // Disabled background (same as default)
4648
+ text: "text-[hsl(var(--foreground))] disabled:opacity-50",
4649
+ // Disabled text opacity
4650
+ cursor: "cursor-not-allowed"
4651
+ // Disabled cursor
4652
+ },
4653
+ open: {
4654
+ border: "border-[hsl(var(--ring))]",
4655
+ // Open state border
4656
+ focus: "focus-visible:shadow-[var(--focus-ring-default)]"
4657
+ // Focus ring using CSS var
4658
+ },
4659
+ closed: {
4660
+ border: "border-[hsl(var(--input))]"
4661
+ // Closed state border
4662
+ }
4663
+ },
4664
+ /**
4665
+ * Width tokens
4666
+ */
4667
+ width: {
4668
+ auto: "w-auto",
4669
+ // Auto width
4670
+ full: "w-full",
4671
+ // Full width (100%)
4672
+ sm: "w-48",
4673
+ // 192px (12rem)
4674
+ md: "w-64",
4675
+ // 256px (16rem)
4676
+ lg: "w-80",
4677
+ // 320px (20rem)
4678
+ xl: "w-96"
4679
+ // 384px (24rem)
4680
+ },
4681
+ /**
4682
+ * Size-based token structure
4683
+ * Organized by size for easy access
4684
+ */
4685
+ size: {
4686
+ xs: {
4687
+ trigger: {
4688
+ height: "h-7",
4689
+ padding: {
4690
+ horizontal: "px-xs",
4691
+ vertical: "py-xs"
4692
+ },
4693
+ radius: "rounded-sm",
4694
+ fontSize: "text-xs"
4695
+ },
4696
+ item: {
4697
+ padding: {
4698
+ horizontal: "px-xs",
4699
+ vertical: "py-xs"
4700
+ },
4701
+ fontSize: "text-xs"
4702
+ },
4703
+ content: {
4704
+ padding: "p-xs",
4705
+ radius: "rounded-sm"
4706
+ }
4707
+ },
4708
+ sm: {
4709
+ trigger: {
4710
+ height: "h-8",
4711
+ padding: {
4712
+ horizontal: "px-sm",
4713
+ vertical: "py-xs"
4714
+ },
4715
+ radius: "rounded-md",
4716
+ fontSize: "text-sm"
4717
+ },
4718
+ item: {
4719
+ padding: {
4720
+ horizontal: "px-sm",
4721
+ vertical: "py-xs"
4722
+ },
4723
+ fontSize: "text-sm"
4724
+ },
4725
+ content: {
4726
+ padding: "p-sm",
4727
+ radius: "rounded-md"
4728
+ }
4729
+ },
4730
+ md: {
4731
+ trigger: {
4732
+ height: "h-9",
4733
+ padding: {
4734
+ horizontal: "px-sm",
4735
+ vertical: "py-xs"
4736
+ },
4737
+ radius: "rounded-md",
4738
+ fontSize: "text-base"
4739
+ },
4740
+ item: {
4741
+ padding: {
4742
+ horizontal: "px-sm",
4743
+ vertical: "py-xs"
4744
+ },
4745
+ fontSize: "text-sm"
4746
+ },
4747
+ content: {
4748
+ padding: "p-sm",
4749
+ radius: "rounded-md"
4750
+ }
4751
+ },
4752
+ lg: {
4753
+ trigger: {
4754
+ height: "h-10",
4755
+ padding: {
4756
+ horizontal: "px-md",
4757
+ vertical: "py-sm"
4758
+ },
4759
+ radius: "rounded-md",
4760
+ fontSize: "text-base"
4761
+ },
4762
+ item: {
4763
+ padding: {
4764
+ horizontal: "px-md",
4765
+ vertical: "py-sm"
4766
+ },
4767
+ fontSize: "text-sm"
4768
+ },
4769
+ content: {
4770
+ padding: "p-md",
4771
+ radius: "rounded-md"
4772
+ }
4773
+ },
4774
+ xl: {
4775
+ trigger: {
4776
+ height: "h-11",
4777
+ padding: {
4778
+ horizontal: "px-lg",
4779
+ vertical: "py-md"
4780
+ },
4781
+ radius: "rounded-lg",
4782
+ fontSize: "text-lg"
4783
+ },
4784
+ item: {
4785
+ padding: {
4786
+ horizontal: "px-lg",
4787
+ vertical: "py-sm"
4788
+ },
4789
+ fontSize: "text-base"
4790
+ },
4791
+ content: {
4792
+ padding: "p-lg",
4793
+ radius: "rounded-lg"
4794
+ }
4795
+ }
4796
+ }
4797
+ };
4798
+
4275
4799
  // src/tokens/motion/v2.ts
4276
4800
  var motionV2Durations = {
4277
4801
  fast: "150ms",
@@ -5590,4 +6114,4 @@ var tokenSystemSummary = {
5590
6114
  // src/tokens/theme.ts
5591
6115
  var UI_COLORS = tailwindThemeColors;
5592
6116
 
5593
- export { ALERT_TOKENS, BUTTON_TOKENS, CARD_TOKENS, CHECKBOX_TOKENS, DATA_TOKENS, DOMAIN_TOKENS, DROPDOWN_TOKENS, ICON_TOKENS, INPUT_TOKENS, MENU_TOKENS, MOTION_TOKENS, NAVIGATION_TOKENS, NOTIFICATION_TOKENS, OVERLAY_TOKENS, POPOVER_TOKENS, RADIO_TOKENS, SECTION_TOKENS, SURFACE_TOKENS, SWITCH_TOKENS, TEXT_TOKENS, TOAST_TOKENS, TOOLTIP_TOKENS, UI_COLORS, accentColoredShadows, accentColors, allCSSVariables, allCSSVariablesCSS, animations, baseColors, borderRadius, chartColors, colorCSSVariables, componentRadius, componentShadowMapping, cssVariableColorTokens, durations, easings, elevationShadows, focusRings, fontFamily, fontSize, fontSizeWithMd, fontWeight, generateCSSVariablesCSS, glowEffects, keyframes, layoutSpacing, letterSpacing, lineHeight, motionCSSVariables, motionV2CSSVariables, motionV2Combined, motionV2Durations, motionV2Easings, motionV2Fade, motionV2Scale, motionV2Slide, motionV2TailwindConfig, motionV2Transitions, primaryColoredShadows, primaryColors, radiusCSSVariables, reducedMotion, secondaryColors, semanticColors, semanticSpacing, shadowBase, shadowCSSVariables, shadowOpacity, spacing, spacingCSSVariables, springs, surfaceColors, tailwindMotionConfig, tailwindRadiusConfig, tailwindShadowConfig, tailwindSpacingConfig, tailwindThemeColors, tailwindTypographyConfig, textColors, textStyles, tokenSystemSummary, transitions, typographyCSSVariables };
6117
+ export { ALERT_TOKENS, BUTTON_TOKENS, CARD_TOKENS, CHECKBOX_TOKENS, DATA_TOKENS, DOMAIN_TOKENS, DROPDOWN_TOKENS, ICON_TOKENS, INPUT_TOKENS, MENU_TOKENS, MOTION_TOKENS, NAVIGATION_TOKENS, NOTIFICATION_TOKENS, OVERLAY_TOKENS, POPOVER_TOKENS, RADIO_TOKENS, SECTION_TOKENS, SELECT_TOKENS, SURFACE_TOKENS, SWITCH_TOKENS, TEXT_TOKENS, TOAST_TOKENS, TOOLTIP_TOKENS, UI_COLORS, accentColoredShadows, accentColors, allCSSVariables, allCSSVariablesCSS, animations, baseColors, borderRadius, chartColors, colorCSSVariables, componentRadius, componentShadowMapping, cssVariableColorTokens, durations, easings, elevationShadows, focusRings, fontFamily, fontSize, fontSizeWithMd, fontWeight, generateCSSVariablesCSS, glowEffects, keyframes, layoutSpacing, letterSpacing, lineHeight, motionCSSVariables, motionV2CSSVariables, motionV2Combined, motionV2Durations, motionV2Easings, motionV2Fade, motionV2Scale, motionV2Slide, motionV2TailwindConfig, motionV2Transitions, primaryColoredShadows, primaryColors, radiusCSSVariables, reducedMotion, secondaryColors, semanticColors, semanticSpacing, shadowBase, shadowCSSVariables, shadowOpacity, spacing, spacingCSSVariables, springs, surfaceColors, tailwindMotionConfig, tailwindRadiusConfig, tailwindShadowConfig, tailwindSpacingConfig, tailwindThemeColors, tailwindTypographyConfig, textColors, textStyles, tokenSystemSummary, transitions, typographyCSSVariables };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tenerife.music/ui",
3
- "version": "1.0.12",
3
+ "version": "1.0.13",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "sideEffects": [
@@ -39,6 +39,7 @@
39
39
  "access": "public"
40
40
  },
41
41
  "scripts": {
42
+ "storybook": "storybook dev -p 6006",
42
43
  "format": "prettier . --write",
43
44
  "lint:fix": "./scripts/lint-local.sh",
44
45
  "typecheck": "tsc --noEmit && tsc --noEmit --project tsconfig.vite.json",
@@ -50,17 +51,16 @@
50
51
  "dev": "vite build --watch",
51
52
  "clean": "rimraf dist",
52
53
  "format:check": "prettier . --check",
53
- "lint": "eslint . --ext .ts,.tsx --fix --ignore-pattern '**/*.stories.*' --ignore-pattern '.storybook/**' --ignore-pattern 'storybook-static/**'",
54
- "lint:check": "eslint . --ext .ts,.tsx --ignore-pattern '**/*.stories.*' --ignore-pattern '.storybook/**' --ignore-pattern 'storybook-static/**'",
54
+ "lint": "eslint . --ext .ts,.tsx --fix --ignore-pattern '**/*.stories.*' --ignore-pattern '.storybook/**' --ignore-pattern 'storybook-static/**' --ignore-pattern 'docs/**' --ignore-pattern '.cursor/**'",
55
+ "lint:check": "eslint . --ext .ts,.tsx --ignore-pattern '**/*.stories.*' --ignore-pattern '.storybook/**' --ignore-pattern 'storybook-static/**' --ignore-pattern 'docs/**' --ignore-pattern '.cursor/**'",
55
56
  "lint:ci": "./scripts/lint-ci.sh",
56
- "lint:strict": "eslint . --ext .ts,.tsx --max-warnings=0 --ignore-pattern '**/*.stories.*' --ignore-pattern '.storybook/**' --ignore-pattern 'storybook-static/**'",
57
- "lint:errors": "eslint . --ext .ts,.tsx --format stylish --ignore-pattern '**/*.stories.*' --ignore-pattern '.storybook/**' --ignore-pattern 'storybook-static/**'",
58
- "precommit:lint": "eslint . --ext .ts,.tsx --fix --ignore-pattern '**/*.stories.*' --ignore-pattern '.storybook/**' --ignore-pattern 'storybook-static/**'",
57
+ "lint:strict": "eslint . --ext .ts,.tsx --max-warnings=0 --ignore-pattern '**/*.stories.*' --ignore-pattern '.storybook/**' --ignore-pattern 'storybook-static/**' --ignore-pattern 'docs/**' --ignore-pattern '.cursor/**'",
58
+ "lint:errors": "eslint . --ext .ts,.tsx --format stylish --ignore-pattern '**/*.stories.*' --ignore-pattern '.storybook/**' --ignore-pattern 'storybook-static/**' --ignore-pattern 'docs/**' --ignore-pattern '.cursor/**'",
59
+ "precommit:lint": "eslint . --ext .ts,.tsx --fix --ignore-pattern '**/*.stories.*' --ignore-pattern '.storybook/**' --ignore-pattern 'storybook-static/**' --ignore-pattern 'docs/**' --ignore-pattern '.cursor/**'",
59
60
  "test:watch": "vitest",
60
61
  "test:coverage": "vitest run --coverage",
61
62
  "test:a11y": "vitest run a11y.test",
62
63
  "a11y:contrast": "tsx scripts/a11y-contrast-check.js",
63
- "storybook": "storybook dev -p 6006",
64
64
  "build-storybook": "storybook build",
65
65
  "preview": "vite preview",
66
66
  "prepublishOnly": "npm run clean && npm run build && npm run typecheck",
@@ -88,6 +88,7 @@
88
88
  "@radix-ui/react-avatar": "^1.1.0",
89
89
  "@radix-ui/react-checkbox": "^1.1.2",
90
90
  "@radix-ui/react-collapsible": "^1.1.1",
91
+ "@radix-ui/react-context-menu": "^2.2.1",
91
92
  "@radix-ui/react-dialog": "^1.1.15",
92
93
  "@radix-ui/react-dropdown-menu": "^2.1.1",
93
94
  "@radix-ui/react-icons": "^1.3.2",