analytica-frontend-lib 1.0.36 → 1.0.38

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/Select/Select.tsx"],"sourcesContent":["// app/components/Select.tsx\n'use client';\n\nimport { create, StoreApi, useStore } from 'zustand';\nimport {\n ReactNode,\n useEffect,\n useRef,\n ButtonHTMLAttributes,\n forwardRef,\n HTMLAttributes,\n KeyboardEvent,\n MouseEvent,\n ReactElement,\n isValidElement,\n Children,\n cloneElement,\n} from 'react';\nimport { CaretDown, Check } from 'phosphor-react';\n\nconst VARIANT_CLASSES = {\n outlined: 'border-2 rounded-sm focus:border-primary-950',\n underlined: 'border-b-2 focus:border-primary-950',\n rounded: 'border-2 rounded-4xl focus:border-primary-950',\n} as const;\n\nconst SIZE_CLASSES = {\n small: 'text-sm',\n medium: 'text-md',\n large: 'text-lg',\n} as const;\n\nconst SIDE_CLASSES = {\n top: 'bottom-full -translate-y-1',\n right: 'top-full translate-y-1',\n bottom: 'top-full translate-y-1',\n left: 'top-full translate-y-1',\n};\nconst ALIGN_CLASSES = {\n start: 'left-0',\n center: 'left-1/2 -translate-x-1/2',\n end: 'right-0',\n};\n\ninterface SelectStore {\n open: boolean;\n setOpen: (open: boolean) => void;\n value: string;\n setValue: (value: string) => void;\n selectedLabel: ReactNode;\n setSelectedLabel: (label: ReactNode) => void;\n}\n\ntype SelectStoreApi = StoreApi<SelectStore>;\n\nexport function createSelectStore(): SelectStoreApi {\n return create<SelectStore>((set) => ({\n open: false,\n setOpen: (open) => set({ open }),\n value: '',\n setValue: (value) => set({ value }),\n selectedLabel: '',\n setSelectedLabel: (label) => set({ selectedLabel: label }),\n }));\n}\n\nexport const useSelectStore = (externalStore?: SelectStoreApi) => {\n if (!externalStore) {\n throw new Error(\n 'Component must be used within a Select (store is missing)'\n );\n }\n\n return externalStore;\n};\n\nexport function getLabelAsNode(children: ReactNode): ReactNode {\n if (typeof children === 'string' || typeof children === 'number') {\n return children;\n }\n const flattened = Children.toArray(children);\n\n if (flattened.length === 1) return flattened[0];\n\n return <>{flattened}</>;\n}\n\ninterface SelectProps {\n children: ReactNode;\n defaultValue?: string;\n value?: string;\n onValueChange?: (value: string) => void;\n size?: 'small' | 'medium' | 'large';\n}\n\nconst injectStore = (children: ReactNode, store: SelectStoreApi): ReactNode => {\n return Children.map(children, (child) => {\n if (isValidElement(child)) {\n const typedChild = child as ReactElement<{\n store?: SelectStoreApi;\n children?: ReactNode;\n }>;\n\n const newProps: Partial<{ store: SelectStoreApi; children: ReactNode }> =\n {\n store,\n };\n\n if (typedChild.props.children) {\n newProps.children = injectStore(typedChild.props.children, store);\n }\n\n return cloneElement(typedChild, newProps);\n }\n return child;\n });\n};\n\nconst Select = ({\n children,\n defaultValue = '',\n value: propValue,\n onValueChange,\n size = 'small',\n}: SelectProps) => {\n const storeRef = useRef<SelectStoreApi | null>(null);\n storeRef.current ??= createSelectStore();\n const store = storeRef.current;\n\n const selectRef = useRef<HTMLDivElement>(null);\n const { open, setOpen, setValue, value, selectedLabel } = useStore(\n store,\n (s) => s\n );\n\n const isControlled = propValue !== undefined;\n const currentValue = isControlled ? propValue : value;\n\n const findLabelForValue = (\n children: ReactNode,\n targetValue: string\n ): string | null => {\n let found: string | null = null;\n const search = (nodes: ReactNode) => {\n Children.forEach(nodes, (child) => {\n if (!isValidElement(child)) return;\n const typedChild = child as ReactElement<{\n value?: string;\n children?: ReactNode;\n }>;\n if (\n typedChild.type === SelectItem &&\n typedChild.props.value === targetValue\n ) {\n if (typeof typedChild.props.children === 'string')\n found = typedChild.props.children;\n }\n if (typedChild.props.children && !found)\n search(typedChild.props.children);\n });\n };\n search(children);\n return found;\n };\n\n useEffect(() => {\n if (!selectedLabel && defaultValue) {\n const label = findLabelForValue(children, defaultValue);\n if (label) store.setState({ selectedLabel: label });\n }\n }, [children, defaultValue, selectedLabel]);\n\n useEffect(() => {\n setValue(currentValue);\n const handleClickOutside = (event: globalThis.MouseEvent) => {\n if (\n selectRef.current &&\n !selectRef.current.contains(event.target as Node)\n ) {\n setOpen(false);\n }\n };\n\n const handleArrowKeys = (event: globalThis.KeyboardEvent) => {\n const selectContent = selectRef.current?.querySelector('[role=\"menu\"]');\n if (selectContent) {\n event.preventDefault();\n const items = Array.from(\n selectContent.querySelectorAll(\n '[role=\"menuitem\"]:not([aria-disabled=\"true\"])'\n )\n ).filter((el): el is HTMLElement => el instanceof HTMLElement);\n\n const focused = document.activeElement as HTMLElement;\n const currentIndex = items.findIndex((item) => item === focused);\n\n let nextIndex = 0;\n if (event.key === 'ArrowDown') {\n nextIndex =\n currentIndex === -1 ? 0 : (currentIndex + 1) % items.length;\n } else {\n nextIndex =\n currentIndex === -1\n ? items.length - 1\n : (currentIndex - 1 + items.length) % items.length;\n }\n items[nextIndex]?.focus();\n }\n };\n\n if (open) {\n document.addEventListener('mousedown', handleClickOutside);\n document.addEventListener('keydown', handleArrowKeys);\n }\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n document.removeEventListener('keydown', handleArrowKeys);\n };\n }, [open]);\n\n useEffect(() => {\n if (onValueChange) {\n onValueChange(value);\n }\n }, [value]);\n\n const sizeClasses = SIZE_CLASSES[size];\n\n return (\n <div className={`relative ${sizeClasses} w-[288px]`} ref={selectRef}>\n {injectStore(children, store)}\n </div>\n );\n};\n\nconst SelectValue = ({\n placeholder,\n store: externalStore,\n}: {\n placeholder?: string;\n store?: SelectStoreApi;\n}) => {\n const store = useSelectStore(externalStore);\n\n const selectedLabel = useStore(store, (s) => s.selectedLabel);\n const value = useStore(store, (s) => s.value);\n return (\n <span className=\"text-inherit\">\n {selectedLabel || placeholder || value}\n </span>\n );\n};\n\ninterface SelectTriggerProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n className?: string;\n invalid?: boolean;\n variant?: 'outlined' | 'underlined' | 'rounded';\n store?: SelectStoreApi;\n}\n\nconst SelectTrigger = forwardRef<HTMLButtonElement, SelectTriggerProps>(\n (\n {\n className,\n invalid = false,\n variant = 'outlined',\n store: externalStore,\n disabled,\n ...props\n },\n ref\n ) => {\n const store = useSelectStore(externalStore);\n\n const open = useStore(store, (s) => s.open);\n const toggleOpen = () => store.setState({ open: !open });\n\n const variantClasses = VARIANT_CLASSES[variant];\n\n return (\n <button\n ref={ref}\n className={`\n flex h-9 min-w-[220px] w-full items-center justify-between border-border-300 px-3 py-2\n ${invalid && 'border-indicator-error text-text-600'}\n ${\n disabled\n ? 'cursor-not-allowed text-text-400 pointer-events-none opacity-50'\n : 'cursor-pointer hover:bg-background-50 focus:bg-accent focus:text-accent-foreground hover:bg-accent hover:text-accent-foreground'\n }\n ${!invalid && !disabled ? 'text-text-700' : ''}\n ${variantClasses}\n ${className}\n `}\n onClick={toggleOpen}\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n aria-controls={open ? 'select-content' : undefined}\n {...props}\n >\n {props.children}\n <CaretDown\n className={`h-[1em] w-[1em] opacity-50 transition-transform ${open ? 'rotate-180' : ''}`}\n />\n </button>\n );\n }\n);\nSelectTrigger.displayName = 'SelectTrigger';\n\ninterface SelectContentProps extends HTMLAttributes<HTMLDivElement> {\n className?: string;\n align?: 'start' | 'center' | 'end';\n side?: 'top' | 'right' | 'bottom' | 'left';\n store?: SelectStoreApi;\n}\n\nconst SelectContent = forwardRef<HTMLDivElement, SelectContentProps>(\n (\n {\n children,\n className,\n align = 'start',\n side = 'bottom',\n store: externalStore,\n ...props\n },\n ref\n ) => {\n const store = useSelectStore(externalStore);\n\n const open = useStore(store, (s) => s.open);\n if (!open) return null;\n\n const getPositionClasses = () =>\n `w-full min-w-full absolute ${SIDE_CLASSES[side]} ${ALIGN_CLASSES[align]}`;\n\n return (\n <div\n role=\"menu\"\n ref={ref}\n className={`bg-background z-50 min-w-[210px] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md border-border-100 ${getPositionClasses()} ${className}`}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nSelectContent.displayName = 'SelectContent';\n\ninterface SelectItemProps extends HTMLAttributes<HTMLDivElement> {\n value: string;\n disabled?: boolean;\n store?: SelectStoreApi;\n}\n\nconst SelectItem = forwardRef<HTMLDivElement, SelectItemProps>(\n (\n {\n className,\n children,\n value,\n disabled = false,\n store: externalStore,\n ...props\n },\n ref\n ) => {\n const store = useSelectStore(externalStore);\n\n const selectedValue = useStore(store, (s) => s.value);\n const { setValue, setSelectedLabel, setOpen } = store.getState();\n\n const handleClick = (\n e: MouseEvent<HTMLDivElement> | KeyboardEvent<HTMLDivElement>\n ) => {\n const labelNode = getLabelAsNode(children);\n if (!disabled) {\n setValue(value);\n setSelectedLabel(labelNode);\n setOpen(false);\n }\n props.onClick?.(e as MouseEvent<HTMLDivElement>);\n };\n\n return (\n <div\n role=\"menuitem\"\n aria-disabled={disabled}\n ref={ref}\n className={`\n focus-visible:bg-background-50\n relative flex select-none items-center gap-2 rounded-sm p-3 outline-none transition-colors [&>svg]:size-4 [&>svg]:shrink-0\n ${className}\n ${\n disabled\n ? 'cursor-not-allowed text-text-400 pointer-events-none opacity-50'\n : 'cursor-pointer hover:bg-background-50 text-text-700 focus:bg-accent focus:text-accent-foreground hover:bg-accent hover:text-accent-foreground'\n }\n ${selectedValue === value && 'bg-background-50'}\n `}\n onClick={handleClick}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') handleClick(e);\n }}\n tabIndex={disabled ? -1 : 0}\n {...props}\n >\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n {selectedValue === value && <Check className=\"\" />}\n </span>\n {children}\n </div>\n );\n }\n);\n\nSelectItem.displayName = 'SelectItem';\n\nexport default Select;\nexport { SelectTrigger, SelectContent, SelectItem, SelectValue };\n"],"mappings":"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","names":["children"]}
package/dist/index.css CHANGED
@@ -26,9 +26,12 @@
26
26
  --color-gray-800: oklch(27.8% 0.033 256.848);
27
27
  --color-white: #fff;
28
28
  --spacing: 0.25rem;
29
+ --container-xs: 20rem;
29
30
  --container-md: 28rem;
30
31
  --container-lg: 32rem;
32
+ --container-2xl: 42rem;
31
33
  --container-4xl: 56rem;
34
+ --container-6xl: 72rem;
32
35
  --text-xs: 0.75rem;
33
36
  --text-xs--line-height: calc(1 / 0.75);
34
37
  --text-sm: 0.875rem;
@@ -56,6 +59,7 @@
56
59
  --font-weight-bold: 700;
57
60
  --font-weight-extrabold: 800;
58
61
  --font-weight-black: 900;
62
+ --tracking-wide: 0.025em;
59
63
  --leading-normal: 1.5;
60
64
  --radius-xs: 0.125rem;
61
65
  --radius-sm: 0.25rem;
@@ -416,6 +420,9 @@
416
420
  .left-4 {
417
421
  left: calc(var(--spacing) * 4);
418
422
  }
423
+ .z-10 {
424
+ z-index: 10;
425
+ }
419
426
  .z-50 {
420
427
  z-index: 50;
421
428
  }
@@ -440,6 +447,9 @@
440
447
  .mx-2 {
441
448
  margin-inline: calc(var(--spacing) * 2);
442
449
  }
450
+ .mx-auto {
451
+ margin-inline: auto;
452
+ }
443
453
  .my-1 {
444
454
  margin-block: calc(var(--spacing) * 1);
445
455
  }
@@ -464,6 +474,9 @@
464
474
  .mt-4 {
465
475
  margin-top: calc(var(--spacing) * 4);
466
476
  }
477
+ .mt-8 {
478
+ margin-top: calc(var(--spacing) * 8);
479
+ }
467
480
  .mt-12 {
468
481
  margin-top: calc(var(--spacing) * 12);
469
482
  }
@@ -473,6 +486,9 @@
473
486
  .mb-0\.5 {
474
487
  margin-bottom: calc(var(--spacing) * 0.5);
475
488
  }
489
+ .mb-1 {
490
+ margin-bottom: calc(var(--spacing) * 1);
491
+ }
476
492
  .mb-1\.5 {
477
493
  margin-bottom: calc(var(--spacing) * 1.5);
478
494
  }
@@ -539,6 +555,9 @@
539
555
  width: calc(var(--spacing) * 16);
540
556
  height: calc(var(--spacing) * 16);
541
557
  }
558
+ .h-0 {
559
+ height: calc(var(--spacing) * 0);
560
+ }
542
561
  .h-1 {
543
562
  height: calc(var(--spacing) * 1);
544
563
  }
@@ -593,12 +612,30 @@
593
612
  .h-\[27px\] {
594
613
  height: 27px;
595
614
  }
615
+ .h-\[90px\] {
616
+ height: 90px;
617
+ }
618
+ .h-\[152px\] {
619
+ height: 152px;
620
+ }
596
621
  .h-full {
597
622
  height: 100%;
598
623
  }
599
624
  .h-px {
600
625
  height: 1px;
601
626
  }
627
+ .min-h-\[300px\] {
628
+ min-height: 300px;
629
+ }
630
+ .min-h-\[400px\] {
631
+ min-height: 400px;
632
+ }
633
+ .min-h-\[600px\] {
634
+ min-height: 600px;
635
+ }
636
+ .w-0 {
637
+ width: calc(var(--spacing) * 0);
638
+ }
602
639
  .w-1\.5 {
603
640
  width: calc(var(--spacing) * 1.5);
604
641
  }
@@ -641,6 +678,12 @@
641
678
  .w-\[70px\] {
642
679
  width: 70px;
643
680
  }
681
+ .w-\[90px\] {
682
+ width: 90px;
683
+ }
684
+ .w-\[152px\] {
685
+ width: 152px;
686
+ }
644
687
  .w-\[288px\] {
645
688
  width: 288px;
646
689
  }
@@ -653,9 +696,15 @@
653
696
  .w-px {
654
697
  width: 1px;
655
698
  }
699
+ .max-w-2xl {
700
+ max-width: var(--container-2xl);
701
+ }
656
702
  .max-w-4xl {
657
703
  max-width: var(--container-4xl);
658
704
  }
705
+ .max-w-6xl {
706
+ max-width: var(--container-6xl);
707
+ }
659
708
  .max-w-\[390px\] {
660
709
  max-width: 390px;
661
710
  }
@@ -665,14 +714,20 @@
665
714
  .max-w-md {
666
715
  max-width: var(--container-md);
667
716
  }
717
+ .max-w-xs {
718
+ max-width: var(--container-xs);
719
+ }
668
720
  .min-w-\[210px\] {
669
721
  min-width: 210px;
670
722
  }
671
723
  .min-w-\[220px\] {
672
724
  min-width: 220px;
673
725
  }
674
- .min-w-\[288px\] {
675
- min-width: 288px;
726
+ .min-w-\[320px\] {
727
+ min-width: 320px;
728
+ }
729
+ .min-w-full {
730
+ min-width: 100%;
676
731
  }
677
732
  .flex-1 {
678
733
  flex: 1;
@@ -702,6 +757,9 @@
702
757
  --tw-translate-y: calc(var(--spacing) * 1);
703
758
  translate: var(--tw-translate-x) var(--tw-translate-y);
704
759
  }
760
+ .-rotate-90 {
761
+ rotate: calc(90deg * -1);
762
+ }
705
763
  .rotate-180 {
706
764
  rotate: 180deg;
707
765
  }
@@ -720,9 +778,21 @@
720
778
  .resize-none {
721
779
  resize: none;
722
780
  }
781
+ .list-inside {
782
+ list-style-position: inside;
783
+ }
784
+ .list-disc {
785
+ list-style-type: disc;
786
+ }
787
+ .grid-cols-1 {
788
+ grid-template-columns: repeat(1, minmax(0, 1fr));
789
+ }
723
790
  .grid-cols-2 {
724
791
  grid-template-columns: repeat(2, minmax(0, 1fr));
725
792
  }
793
+ .grid-cols-3 {
794
+ grid-template-columns: repeat(3, minmax(0, 1fr));
795
+ }
726
796
  .flex-col {
727
797
  flex-direction: column;
728
798
  }
@@ -741,6 +811,9 @@
741
811
  .items-start {
742
812
  align-items: flex-start;
743
813
  }
814
+ .justify-around {
815
+ justify-content: space-around;
816
+ }
744
817
  .justify-between {
745
818
  justify-content: space-between;
746
819
  }
@@ -777,6 +850,9 @@
777
850
  .gap-12 {
778
851
  gap: calc(var(--spacing) * 12);
779
852
  }
853
+ .gap-16 {
854
+ gap: calc(var(--spacing) * 16);
855
+ }
780
856
  .space-y-2 {
781
857
  :where(& > :not(:last-child)) {
782
858
  --tw-space-y-reverse: 0;
@@ -1026,6 +1102,18 @@
1026
1102
  .bg-white {
1027
1103
  background-color: var(--color-white);
1028
1104
  }
1105
+ .stroke-background-300 {
1106
+ stroke: var(--color-background-300);
1107
+ }
1108
+ .stroke-primary-100 {
1109
+ stroke: var(--color-primary-100);
1110
+ }
1111
+ .stroke-primary-700 {
1112
+ stroke: var(--color-primary-700);
1113
+ }
1114
+ .stroke-success-200 {
1115
+ stroke: var(--color-success-200);
1116
+ }
1029
1117
  .p-0 {
1030
1118
  padding: calc(var(--spacing) * 0);
1031
1119
  }
@@ -1155,6 +1243,10 @@
1155
1243
  font-size: var(--text-xs);
1156
1244
  line-height: var(--tw-leading, var(--text-xs--line-height));
1157
1245
  }
1246
+ .leading-7 {
1247
+ --tw-leading: calc(var(--spacing) * 7);
1248
+ line-height: calc(var(--spacing) * 7);
1249
+ }
1158
1250
  .leading-\[150\%\] {
1159
1251
  --tw-leading: 150%;
1160
1252
  line-height: 150%;
@@ -1195,6 +1287,10 @@
1195
1287
  --tw-font-weight: var(--font-weight-semibold);
1196
1288
  font-weight: var(--font-weight-semibold);
1197
1289
  }
1290
+ .tracking-wide {
1291
+ --tw-tracking: var(--tracking-wide);
1292
+ letter-spacing: var(--tracking-wide);
1293
+ }
1198
1294
  .whitespace-nowrap {
1199
1295
  white-space: nowrap;
1200
1296
  }
@@ -1249,6 +1345,9 @@
1249
1345
  .text-primary-500 {
1250
1346
  color: var(--color-primary-500);
1251
1347
  }
1348
+ .text-primary-700 {
1349
+ color: var(--color-primary-700);
1350
+ }
1252
1351
  .text-primary-950 {
1253
1352
  color: var(--color-primary-950);
1254
1353
  }
@@ -1300,6 +1399,9 @@
1300
1399
  .capitalize {
1301
1400
  text-transform: capitalize;
1302
1401
  }
1402
+ .uppercase {
1403
+ text-transform: uppercase;
1404
+ }
1303
1405
  .italic {
1304
1406
  font-style: italic;
1305
1407
  }
@@ -1312,6 +1414,15 @@
1312
1414
  .opacity-50 {
1313
1415
  opacity: 50%;
1314
1416
  }
1417
+ .shadow {
1418
+ --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
1419
+ box-shadow:
1420
+ var(--tw-inset-shadow),
1421
+ var(--tw-inset-ring-shadow),
1422
+ var(--tw-ring-offset-shadow),
1423
+ var(--tw-ring-shadow),
1424
+ var(--tw-shadow);
1425
+ }
1315
1426
  .shadow-hard-shadow-3 {
1316
1427
  --tw-shadow: 2px 2px 8px var(--tw-shadow-color, rgba(38, 38, 38, 0.2));
1317
1428
  box-shadow:
@@ -1357,6 +1468,24 @@
1357
1468
  var(--tw-ring-shadow),
1358
1469
  var(--tw-shadow);
1359
1470
  }
1471
+ .shadow-soft-shadow-2 {
1472
+ --tw-shadow: 0px 0px 20px var(--tw-shadow-color, rgba(38, 38, 38, 0.1));
1473
+ box-shadow:
1474
+ var(--tw-inset-shadow),
1475
+ var(--tw-inset-ring-shadow),
1476
+ var(--tw-ring-offset-shadow),
1477
+ var(--tw-ring-shadow),
1478
+ var(--tw-shadow);
1479
+ }
1480
+ .shadow-soft-shadow-3 {
1481
+ --tw-shadow: 0px 0px 30px var(--tw-shadow-color, rgba(38, 38, 38, 0.1));
1482
+ box-shadow:
1483
+ var(--tw-inset-shadow),
1484
+ var(--tw-inset-ring-shadow),
1485
+ var(--tw-ring-offset-shadow),
1486
+ var(--tw-ring-shadow),
1487
+ var(--tw-shadow);
1488
+ }
1360
1489
  .ring-2 {
1361
1490
  --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
1362
1491
  box-shadow:
@@ -1393,6 +1522,35 @@
1393
1522
  .filter {
1394
1523
  filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
1395
1524
  }
1525
+ .transition {
1526
+ transition-property:
1527
+ color,
1528
+ background-color,
1529
+ border-color,
1530
+ outline-color,
1531
+ text-decoration-color,
1532
+ fill,
1533
+ stroke,
1534
+ --tw-gradient-from,
1535
+ --tw-gradient-via,
1536
+ --tw-gradient-to,
1537
+ opacity,
1538
+ box-shadow,
1539
+ transform,
1540
+ translate,
1541
+ scale,
1542
+ rotate,
1543
+ filter,
1544
+ -webkit-backdrop-filter,
1545
+ backdrop-filter,
1546
+ display,
1547
+ visibility,
1548
+ content-visibility,
1549
+ overlay,
1550
+ pointer-events;
1551
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
1552
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
1553
+ }
1396
1554
  .transition-all {
1397
1555
  transition-property: all;
1398
1556
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
@@ -1435,6 +1593,10 @@
1435
1593
  --tw-duration: 300ms;
1436
1594
  transition-duration: 300ms;
1437
1595
  }
1596
+ .duration-500 {
1597
+ --tw-duration: 500ms;
1598
+ transition-duration: 500ms;
1599
+ }
1438
1600
  .ease-out {
1439
1601
  --tw-ease: var(--ease-out);
1440
1602
  transition-timing-function: var(--ease-out);
@@ -1554,13 +1716,6 @@
1554
1716
  }
1555
1717
  }
1556
1718
  }
1557
- .hover\:bg-background-200 {
1558
- &:hover {
1559
- @media (hover: hover) {
1560
- background-color: var(--color-background-200);
1561
- }
1562
- }
1563
- }
1564
1719
  .hover\:bg-error-600 {
1565
1720
  &:hover {
1566
1721
  @media (hover: hover) {
@@ -1900,6 +2055,21 @@
1900
2055
  opacity: 50%;
1901
2056
  }
1902
2057
  }
2058
+ .md\:grid-cols-2 {
2059
+ @media (width >= 48rem) {
2060
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2061
+ }
2062
+ }
2063
+ .lg\:grid-cols-4 {
2064
+ @media (width >= 64rem) {
2065
+ grid-template-columns: repeat(4, minmax(0, 1fr));
2066
+ }
2067
+ }
2068
+ .lg\:flex-row {
2069
+ @media (width >= 64rem) {
2070
+ flex-direction: row;
2071
+ }
2072
+ }
1903
2073
  .\[\&_tr\:first-child\]\:border-0 {
1904
2074
  & tr:first-child {
1905
2075
  border-style: var(--tw-border-style);
@@ -2285,6 +2455,7 @@
2285
2455
  @property --tw-border-style { syntax: "*"; inherits: false; initial-value: solid; }
2286
2456
  @property --tw-leading { syntax: "*"; inherits: false; }
2287
2457
  @property --tw-font-weight { syntax: "*"; inherits: false; }
2458
+ @property --tw-tracking { syntax: "*"; inherits: false; }
2288
2459
  @property --tw-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }
2289
2460
  @property --tw-shadow-color { syntax: "*"; inherits: false; }
2290
2461
  @property --tw-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }
@@ -2333,6 +2504,7 @@
2333
2504
  --tw-border-style: solid;
2334
2505
  --tw-leading: initial;
2335
2506
  --tw-font-weight: initial;
2507
+ --tw-tracking: initial;
2336
2508
  --tw-shadow: 0 0 #0000;
2337
2509
  --tw-shadow-color: initial;
2338
2510
  --tw-shadow-alpha: 100%;