@netfoundry/docusaurus-theme 0.1.8 → 0.2.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.
Files changed (87) hide show
  1. package/css/legacy.css +2 -46
  2. package/css/tabs-v1-gradient.css +92 -0
  3. package/css/tabs-v2-glass.css +116 -0
  4. package/css/tabs-v3-minimal.css +86 -0
  5. package/css/tabs-v4-segmented.css +85 -0
  6. package/css/tabs-v5-neon.css +99 -0
  7. package/css/tabs-v6-neumorphic.css +89 -0
  8. package/css/tabs-v7-brutalist.css +81 -0
  9. package/css/tabs-v8-float.css +114 -0
  10. package/css/tabs-v9-line.css +104 -0
  11. package/css/theme.css +72 -20
  12. package/dist/css/legacy.css +2 -46
  13. package/dist/css/tabs-v1-gradient.css +92 -0
  14. package/dist/css/tabs-v2-glass.css +116 -0
  15. package/dist/css/tabs-v3-minimal.css +86 -0
  16. package/dist/css/tabs-v4-segmented.css +85 -0
  17. package/dist/css/tabs-v5-neon.css +99 -0
  18. package/dist/css/tabs-v6-neumorphic.css +89 -0
  19. package/dist/css/tabs-v7-brutalist.css +81 -0
  20. package/dist/css/tabs-v8-float.css +114 -0
  21. package/dist/css/tabs-v9-line.css +104 -0
  22. package/dist/css/theme.css +72 -20
  23. package/dist/src/components/NetFoundryFooter/defaults.d.ts +19 -0
  24. package/dist/src/components/NetFoundryFooter/defaults.d.ts.map +1 -0
  25. package/dist/src/components/NetFoundryFooter/defaults.js +24 -0
  26. package/dist/src/components/NetFoundryFooter/defaults.js.map +1 -0
  27. package/dist/src/components/NetFoundryLayout/NetFoundryLayout.d.ts.map +1 -1
  28. package/dist/src/components/NetFoundryLayout/NetFoundryLayout.js +3 -1
  29. package/dist/src/components/NetFoundryLayout/NetFoundryLayout.js.map +1 -1
  30. package/dist/src/components/ProductSearch/ProductSearch.d.ts +10 -0
  31. package/dist/src/components/ProductSearch/ProductSearch.d.ts.map +1 -0
  32. package/dist/src/components/ProductSearch/ProductSearch.js +140 -0
  33. package/dist/src/components/ProductSearch/ProductSearch.js.map +1 -0
  34. package/dist/src/components/ProductSearch/ProductSearch.module.css +189 -0
  35. package/dist/src/components/ProductSearch/index.d.ts +4 -0
  36. package/dist/src/components/ProductSearch/index.d.ts.map +1 -0
  37. package/dist/src/components/ProductSearch/index.js +4 -0
  38. package/dist/src/components/ProductSearch/index.js.map +1 -0
  39. package/dist/src/components/index.d.ts +1 -0
  40. package/dist/src/components/index.d.ts.map +1 -1
  41. package/dist/src/components/index.js +1 -0
  42. package/dist/src/components/index.js.map +1 -1
  43. package/dist/src/index.js +1 -1
  44. package/dist/src/index.js.map +1 -1
  45. package/dist/src/options.d.ts +20 -30
  46. package/dist/src/options.d.ts.map +1 -1
  47. package/dist/theme/BlogPostPage/Metadata.d.ts +2 -0
  48. package/dist/theme/BlogPostPage/Metadata.d.ts.map +1 -0
  49. package/dist/theme/BlogPostPage/Metadata.js +2 -0
  50. package/dist/theme/BlogPostPage/Metadata.js.map +1 -0
  51. package/dist/theme/BlogPostPage/StructuredData.d.ts +2 -0
  52. package/dist/theme/BlogPostPage/StructuredData.d.ts.map +1 -0
  53. package/dist/theme/BlogPostPage/StructuredData.js +2 -0
  54. package/dist/theme/BlogPostPage/StructuredData.js.map +1 -0
  55. package/dist/theme/BlogPostPage/index.d.ts +14 -0
  56. package/dist/theme/BlogPostPage/index.d.ts.map +1 -0
  57. package/dist/theme/BlogPostPage/index.js +27 -0
  58. package/dist/theme/BlogPostPage/index.js.map +1 -0
  59. package/dist/theme/BlogPostPage/index.module.css +53 -0
  60. package/dist/theme/DocSearch/index.d.ts +3 -0
  61. package/dist/theme/DocSearch/index.d.ts.map +1 -0
  62. package/dist/theme/DocSearch/index.js +30 -0
  63. package/dist/theme/DocSearch/index.js.map +1 -0
  64. package/dist/theme/DocSearch/styles.module.css +12 -0
  65. package/dist/theme/Layout/index.d.ts +0 -9
  66. package/dist/theme/Layout/index.d.ts.map +1 -1
  67. package/dist/theme/Layout/index.js +17 -19
  68. package/dist/theme/Layout/index.js.map +1 -1
  69. package/dist/theme/Navbar/Content/index.d.ts +6 -0
  70. package/dist/theme/Navbar/Content/index.d.ts.map +1 -0
  71. package/dist/theme/Navbar/Content/index.js +27 -0
  72. package/dist/theme/Navbar/Content/index.js.map +1 -0
  73. package/dist/theme/Navbar/Content/index.module.css +0 -0
  74. package/dist/theme/Navbar/Logo/index.d.ts +3 -0
  75. package/dist/theme/Navbar/Logo/index.d.ts.map +1 -0
  76. package/dist/theme/Navbar/Logo/index.js +44 -0
  77. package/dist/theme/Navbar/Logo/index.js.map +1 -0
  78. package/dist/theme/OsTabs/index.d.ts +13 -0
  79. package/dist/theme/OsTabs/index.d.ts.map +1 -0
  80. package/dist/theme/OsTabs/index.js +20 -0
  81. package/dist/theme/OsTabs/index.js.map +1 -0
  82. package/dist/theme/SearchBar/SearchBar.module.css +37 -0
  83. package/dist/theme/SearchBar/index.d.ts +2 -0
  84. package/dist/theme/SearchBar/index.d.ts.map +1 -0
  85. package/dist/theme/SearchBar/index.js +36 -0
  86. package/dist/theme/SearchBar/index.js.map +1 -0
  87. package/package.json +9 -3
@@ -0,0 +1,86 @@
1
+ /* ==========================================================================
2
+ TABS V3 - Minimal / Apple-style
3
+ Ultra clean, typography-focused, subtle and refined
4
+ ========================================================================== */
5
+
6
+ :root {
7
+ --nf-tab-text: #86868b;
8
+ --nf-tab-text-hover: #1d1d1f;
9
+ --nf-tab-text-active: #1d1d1f;
10
+ --nf-tab-border: #d2d2d7;
11
+ --nf-tab-panel-bg: #fafafa;
12
+ --nf-tab-panel-border: #e5e5e5;
13
+ }
14
+
15
+ html[data-theme="dark"] {
16
+ --nf-tab-text: #86868b;
17
+ --nf-tab-text-hover: #f5f5f7;
18
+ --nf-tab-text-active: #f5f5f7;
19
+ --nf-tab-border: #424245;
20
+ --nf-tab-panel-bg: rgba(28, 28, 30, 0.6);
21
+ --nf-tab-panel-border: #38383a;
22
+ }
23
+
24
+ .tabs {
25
+ display: flex;
26
+ flex-wrap: wrap;
27
+ gap: 0;
28
+ padding: 0;
29
+ margin-bottom: 0;
30
+ background: transparent;
31
+ border: none;
32
+ border-bottom: 1px solid var(--nf-tab-border);
33
+ }
34
+
35
+ .tabs__item {
36
+ position: relative;
37
+ padding: 12px 20px;
38
+ font-size: 0.9375rem;
39
+ font-weight: 400;
40
+ color: var(--nf-tab-text);
41
+ background: transparent;
42
+ border: none;
43
+ border-radius: 0;
44
+ cursor: pointer;
45
+ transition: color 0.2s ease;
46
+ }
47
+
48
+ .tabs__item:hover {
49
+ color: var(--nf-tab-text-hover);
50
+ background: transparent;
51
+ }
52
+
53
+ .tabs__item.tabs__item--active {
54
+ color: var(--nf-tab-text-active);
55
+ font-weight: 600;
56
+ background: transparent;
57
+ }
58
+
59
+ /* Clean bottom highlight bar */
60
+ .tabs__item.tabs__item--active::after {
61
+ content: '';
62
+ position: absolute;
63
+ bottom: -1px;
64
+ left: 0;
65
+ right: 0;
66
+ height: 2px;
67
+ background: var(--nf-tab-text-active);
68
+ border-radius: 2px 2px 0 0;
69
+ }
70
+
71
+ [class*="tabItem_"][role="tabpanel"] {
72
+ background: var(--nf-tab-panel-bg);
73
+ border: 1px solid var(--nf-tab-panel-border);
74
+ border-top: none;
75
+ border-radius: 0 0 8px 8px;
76
+ padding: 1.5rem;
77
+ animation: minimalFade 0.2s ease;
78
+ }
79
+
80
+ @keyframes minimalFade {
81
+ from { opacity: 0; }
82
+ to { opacity: 1; }
83
+ }
84
+
85
+ .margin-top--md { margin-top: 0 !important; }
86
+ [hidden] { display: none !important; }
@@ -0,0 +1,85 @@
1
+ /* ==========================================================================
2
+ TABS V4 - Segmented Control
3
+ iOS-style segmented control with sliding background
4
+ ========================================================================== */
5
+
6
+ :root {
7
+ --nf-tabs-bg: #e5e5ea;
8
+ --nf-tab-text: #3a3a3c;
9
+ --nf-tab-text-active: #000000;
10
+ --nf-tab-slider-bg: #ffffff;
11
+ --nf-tab-slider-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.08);
12
+ --nf-tab-panel-bg: #ffffff;
13
+ --nf-tab-panel-border: #e5e5ea;
14
+ --nf-tab-panel-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
15
+ }
16
+
17
+ html[data-theme="dark"] {
18
+ --nf-tabs-bg: #2c2c2e;
19
+ --nf-tab-text: #98989d;
20
+ --nf-tab-text-active: #ffffff;
21
+ --nf-tab-slider-bg: #636366;
22
+ --nf-tab-slider-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
23
+ --nf-tab-panel-bg: #1c1c1e;
24
+ --nf-tab-panel-border: #38383a;
25
+ --nf-tab-panel-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
26
+ }
27
+
28
+ .tabs {
29
+ display: inline-flex;
30
+ flex-wrap: wrap;
31
+ gap: 0;
32
+ padding: 3px;
33
+ margin-bottom: 0;
34
+ background: var(--nf-tabs-bg);
35
+ border-radius: 10px;
36
+ border: none;
37
+ position: relative;
38
+ }
39
+
40
+ .tabs__item {
41
+ position: relative;
42
+ padding: 8px 16px;
43
+ font-size: 0.8125rem;
44
+ font-weight: 500;
45
+ color: var(--nf-tab-text);
46
+ background: transparent;
47
+ border: none;
48
+ border-radius: 8px;
49
+ cursor: pointer;
50
+ transition: color 0.2s ease;
51
+ z-index: 1;
52
+ min-width: 80px;
53
+ text-align: center;
54
+ }
55
+
56
+ .tabs__item:hover {
57
+ color: var(--nf-tab-text-active);
58
+ background: transparent;
59
+ }
60
+
61
+ .tabs__item.tabs__item--active {
62
+ color: var(--nf-tab-text-active);
63
+ font-weight: 600;
64
+ background: var(--nf-tab-slider-bg);
65
+ box-shadow: var(--nf-tab-slider-shadow);
66
+ transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
67
+ }
68
+
69
+ [class*="tabItem_"][role="tabpanel"] {
70
+ background: var(--nf-tab-panel-bg);
71
+ border: 1px solid var(--nf-tab-panel-border);
72
+ border-radius: 12px;
73
+ padding: 1.5rem;
74
+ margin-top: 12px;
75
+ box-shadow: var(--nf-tab-panel-shadow);
76
+ animation: segmentSlide 0.25s ease-out;
77
+ }
78
+
79
+ @keyframes segmentSlide {
80
+ from { opacity: 0; transform: translateX(-8px); }
81
+ to { opacity: 1; transform: translateX(0); }
82
+ }
83
+
84
+ .margin-top--md { margin-top: 0 !important; }
85
+ [hidden] { display: none !important; }
@@ -0,0 +1,99 @@
1
+ /* ==========================================================================
2
+ TABS V5 - Neon Cyberpunk
3
+ Glowing edges, electric colors, dark-first aesthetic
4
+ ========================================================================== */
5
+
6
+ :root {
7
+ --nf-tabs-bg: #0a0a0f;
8
+ --nf-tab-text: #6b7280;
9
+ --nf-tab-text-hover: #a78bfa;
10
+ --nf-tab-text-active: #f0abfc;
11
+ --nf-tab-glow: #c084fc;
12
+ --nf-tab-glow-secondary: #22d3ee;
13
+ --nf-tab-panel-bg: linear-gradient(145deg, #0f0f18 0%, #0a0a0f 100%);
14
+ --nf-tab-panel-border: rgba(192, 132, 252, 0.2);
15
+ }
16
+
17
+ html[data-theme="dark"] {
18
+ --nf-tabs-bg: #0a0a0f;
19
+ --nf-tab-text: #6b7280;
20
+ --nf-tab-text-hover: #a78bfa;
21
+ --nf-tab-text-active: #f0abfc;
22
+ --nf-tab-glow: #c084fc;
23
+ --nf-tab-glow-secondary: #22d3ee;
24
+ --nf-tab-panel-bg: linear-gradient(145deg, #0f0f18 0%, #0a0a0f 100%);
25
+ --nf-tab-panel-border: rgba(192, 132, 252, 0.2);
26
+ }
27
+
28
+ html:not([data-theme="dark"]) {
29
+ --nf-tabs-bg: #fafafa;
30
+ --nf-tab-text: #71717a;
31
+ --nf-tab-text-hover: #7c3aed;
32
+ --nf-tab-text-active: #9333ea;
33
+ --nf-tab-glow: #a855f7;
34
+ --nf-tab-glow-secondary: #06b6d4;
35
+ --nf-tab-panel-bg: linear-gradient(145deg, #ffffff 0%, #f4f4f5 100%);
36
+ --nf-tab-panel-border: rgba(168, 85, 247, 0.25);
37
+ }
38
+
39
+ .tabs {
40
+ display: flex;
41
+ flex-wrap: wrap;
42
+ gap: 6px;
43
+ padding: 10px 12px;
44
+ background: var(--nf-tabs-bg);
45
+ border-radius: 4px 4px 0 0;
46
+ border: 1px solid rgba(128, 128, 128, 0.15);
47
+ border-bottom: none;
48
+ }
49
+
50
+ .tabs__item {
51
+ position: relative;
52
+ padding: 10px 22px;
53
+ font-size: 0.85rem;
54
+ font-weight: 500;
55
+ letter-spacing: 0.05em;
56
+ text-transform: uppercase;
57
+ color: var(--nf-tab-text);
58
+ background: transparent;
59
+ border: 1px solid transparent;
60
+ border-radius: 4px;
61
+ cursor: pointer;
62
+ transition: all 0.2s ease;
63
+ }
64
+
65
+ .tabs__item:hover {
66
+ color: var(--nf-tab-text-hover);
67
+ border-color: rgba(128, 128, 128, 0.3);
68
+ text-shadow: 0 0 12px var(--nf-tab-glow);
69
+ }
70
+
71
+ .tabs__item.tabs__item--active {
72
+ color: var(--nf-tab-text-active);
73
+ border-color: var(--nf-tab-glow);
74
+ background: rgba(192, 132, 252, 0.08);
75
+ box-shadow:
76
+ 0 0 10px rgba(192, 132, 252, 0.3),
77
+ 0 0 20px rgba(192, 132, 252, 0.15),
78
+ inset 0 0 15px rgba(192, 132, 252, 0.05);
79
+ text-shadow: 0 0 20px var(--nf-tab-glow);
80
+ }
81
+
82
+ [class*="tabItem_"][role="tabpanel"] {
83
+ background: var(--nf-tab-panel-bg);
84
+ border: 1px solid var(--nf-tab-panel-border);
85
+ border-radius: 0 0 4px 4px;
86
+ padding: 1.5rem;
87
+ box-shadow:
88
+ 0 4px 20px rgba(0, 0, 0, 0.2),
89
+ inset 0 1px 0 rgba(255, 255, 255, 0.03);
90
+ animation: neonFade 0.3s ease;
91
+ }
92
+
93
+ @keyframes neonFade {
94
+ from { opacity: 0; filter: brightness(1.5); }
95
+ to { opacity: 1; filter: brightness(1); }
96
+ }
97
+
98
+ .margin-top--md { margin-top: 0 !important; }
99
+ [hidden] { display: none !important; }
@@ -0,0 +1,89 @@
1
+ /* ==========================================================================
2
+ TABS V6 - Neumorphism
3
+ Soft UI with embossed/debossed shadows, tactile feel
4
+ ========================================================================== */
5
+
6
+ :root {
7
+ --nf-neu-bg: #e4e8ec;
8
+ --nf-neu-shadow-dark: #c8ccd0;
9
+ --nf-neu-shadow-light: #ffffff;
10
+ --nf-tab-text: #6b7280;
11
+ --nf-tab-text-active: #374151;
12
+ --nf-tab-accent: #3b82f6;
13
+ --nf-tab-panel-bg: #e4e8ec;
14
+ }
15
+
16
+ html[data-theme="dark"] {
17
+ --nf-neu-bg: #2a2d35;
18
+ --nf-neu-shadow-dark: #1e2028;
19
+ --nf-neu-shadow-light: #363942;
20
+ --nf-tab-text: #9ca3af;
21
+ --nf-tab-text-active: #e5e7eb;
22
+ --nf-tab-accent: #60a5fa;
23
+ --nf-tab-panel-bg: #2a2d35;
24
+ }
25
+
26
+ .tabs {
27
+ display: flex;
28
+ flex-wrap: wrap;
29
+ gap: 12px;
30
+ padding: 16px;
31
+ background: var(--nf-neu-bg);
32
+ border-radius: 20px 20px 0 0;
33
+ border: none;
34
+ box-shadow:
35
+ inset 4px 4px 8px var(--nf-neu-shadow-dark),
36
+ inset -4px -4px 8px var(--nf-neu-shadow-light);
37
+ }
38
+
39
+ .tabs__item {
40
+ padding: 12px 24px;
41
+ font-size: 0.875rem;
42
+ font-weight: 500;
43
+ color: var(--nf-tab-text);
44
+ background: var(--nf-neu-bg);
45
+ border: none;
46
+ border-radius: 12px;
47
+ cursor: pointer;
48
+ transition: all 0.2s ease;
49
+ box-shadow:
50
+ 4px 4px 8px var(--nf-neu-shadow-dark),
51
+ -4px -4px 8px var(--nf-neu-shadow-light);
52
+ }
53
+
54
+ .tabs__item:hover {
55
+ color: var(--nf-tab-accent);
56
+ }
57
+
58
+ .tabs__item:active {
59
+ box-shadow:
60
+ inset 3px 3px 6px var(--nf-neu-shadow-dark),
61
+ inset -3px -3px 6px var(--nf-neu-shadow-light);
62
+ }
63
+
64
+ .tabs__item.tabs__item--active {
65
+ color: var(--nf-tab-accent);
66
+ font-weight: 600;
67
+ box-shadow:
68
+ inset 4px 4px 8px var(--nf-neu-shadow-dark),
69
+ inset -4px -4px 8px var(--nf-neu-shadow-light);
70
+ }
71
+
72
+ [class*="tabItem_"][role="tabpanel"] {
73
+ background: var(--nf-tab-panel-bg);
74
+ border: none;
75
+ border-radius: 0 0 20px 20px;
76
+ padding: 1.75rem;
77
+ box-shadow:
78
+ inset 4px 4px 8px var(--nf-neu-shadow-dark),
79
+ inset -4px -4px 8px var(--nf-neu-shadow-light);
80
+ animation: neuReveal 0.25s ease-out;
81
+ }
82
+
83
+ @keyframes neuReveal {
84
+ from { opacity: 0; transform: scale(0.98); }
85
+ to { opacity: 1; transform: scale(1); }
86
+ }
87
+
88
+ .margin-top--md { margin-top: 0 !important; }
89
+ [hidden] { display: none !important; }
@@ -0,0 +1,81 @@
1
+ /* ==========================================================================
2
+ TABS V7 - Brutalist
3
+ Raw, bold, unapologetic. Heavy borders, stark contrast
4
+ ========================================================================== */
5
+
6
+ :root {
7
+ --nf-brutal-bg: #ffffff;
8
+ --nf-brutal-border: #000000;
9
+ --nf-brutal-accent: #ff3366;
10
+ --nf-brutal-text: #000000;
11
+ --nf-brutal-text-muted: #666666;
12
+ --nf-brutal-shadow: 4px 4px 0 #000000;
13
+ --nf-brutal-panel-bg: #f5f5f5;
14
+ }
15
+
16
+ html[data-theme="dark"] {
17
+ --nf-brutal-bg: #000000;
18
+ --nf-brutal-border: #ffffff;
19
+ --nf-brutal-accent: #00ff88;
20
+ --nf-brutal-text: #ffffff;
21
+ --nf-brutal-text-muted: #999999;
22
+ --nf-brutal-shadow: 4px 4px 0 #ffffff;
23
+ --nf-brutal-panel-bg: #111111;
24
+ }
25
+
26
+ .tabs {
27
+ display: flex;
28
+ flex-wrap: wrap;
29
+ gap: 0;
30
+ padding: 0;
31
+ background: var(--nf-brutal-bg);
32
+ border: 3px solid var(--nf-brutal-border);
33
+ border-bottom: none;
34
+ border-radius: 0;
35
+ }
36
+
37
+ .tabs__item {
38
+ padding: 14px 28px;
39
+ font-size: 0.9rem;
40
+ font-weight: 700;
41
+ text-transform: uppercase;
42
+ letter-spacing: 0.08em;
43
+ color: var(--nf-brutal-text-muted);
44
+ background: transparent;
45
+ border: none;
46
+ border-right: 3px solid var(--nf-brutal-border);
47
+ border-radius: 0;
48
+ cursor: pointer;
49
+ transition: all 0.1s ease;
50
+ }
51
+
52
+ .tabs__item:last-child {
53
+ border-right: none;
54
+ }
55
+
56
+ .tabs__item:hover {
57
+ color: var(--nf-brutal-text);
58
+ background: var(--nf-brutal-accent);
59
+ }
60
+
61
+ .tabs__item.tabs__item--active {
62
+ color: var(--nf-brutal-bg);
63
+ background: var(--nf-brutal-text);
64
+ }
65
+
66
+ [class*="tabItem_"][role="tabpanel"] {
67
+ background: var(--nf-brutal-panel-bg);
68
+ border: 3px solid var(--nf-brutal-border);
69
+ border-radius: 0;
70
+ padding: 1.5rem;
71
+ box-shadow: var(--nf-brutal-shadow);
72
+ animation: brutalSlam 0.15s ease-out;
73
+ }
74
+
75
+ @keyframes brutalSlam {
76
+ from { transform: translateY(-10px); opacity: 0; }
77
+ to { transform: translateY(0); opacity: 1; }
78
+ }
79
+
80
+ .margin-top--md { margin-top: 0 !important; }
81
+ [hidden] { display: none !important; }
@@ -0,0 +1,114 @@
1
+ /* ==========================================================================
2
+ TABS V8 - Floating Cards
3
+ Each tab as independent floating card, elevation on select
4
+ ========================================================================== */
5
+
6
+ :root {
7
+ --nf-float-bg: transparent;
8
+ --nf-card-bg: #ffffff;
9
+ --nf-card-bg-hover: #f8fafc;
10
+ --nf-card-bg-active: #ffffff;
11
+ --nf-card-text: #64748b;
12
+ --nf-card-text-active: #0f172a;
13
+ --nf-card-border: rgba(0, 0, 0, 0.08);
14
+ --nf-card-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
15
+ --nf-card-shadow-hover: 0 4px 12px rgba(0, 0, 0, 0.08);
16
+ --nf-card-shadow-active: 0 8px 24px rgba(0, 0, 0, 0.12);
17
+ --nf-card-accent: linear-gradient(135deg, #0068f9 0%, #00d4ff 100%);
18
+ --nf-panel-bg: #ffffff;
19
+ --nf-panel-shadow: 0 4px 24px rgba(0, 0, 0, 0.08);
20
+ }
21
+
22
+ html[data-theme="dark"] {
23
+ --nf-float-bg: transparent;
24
+ --nf-card-bg: #1e293b;
25
+ --nf-card-bg-hover: #334155;
26
+ --nf-card-bg-active: #1e293b;
27
+ --nf-card-text: #94a3b8;
28
+ --nf-card-text-active: #f1f5f9;
29
+ --nf-card-border: rgba(255, 255, 255, 0.06);
30
+ --nf-card-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
31
+ --nf-card-shadow-hover: 0 4px 12px rgba(0, 0, 0, 0.3);
32
+ --nf-card-shadow-active: 0 8px 24px rgba(0, 0, 0, 0.4);
33
+ --nf-card-accent: linear-gradient(135deg, #38bdf8 0%, #818cf8 100%);
34
+ --nf-panel-bg: #1e293b;
35
+ --nf-panel-shadow: 0 4px 24px rgba(0, 0, 0, 0.3);
36
+ }
37
+
38
+ .tabs {
39
+ display: flex;
40
+ flex-wrap: wrap;
41
+ gap: 10px;
42
+ padding: 8px 4px;
43
+ background: var(--nf-float-bg);
44
+ border: none;
45
+ border-radius: 0;
46
+ margin-bottom: 10px;
47
+ }
48
+
49
+ .tabs__item {
50
+ position: relative;
51
+ padding: 14px 24px;
52
+ font-size: 0.875rem;
53
+ font-weight: 500;
54
+ color: var(--nf-card-text);
55
+ background: var(--nf-card-bg);
56
+ border: 1px solid var(--nf-card-border);
57
+ border-radius: 12px;
58
+ cursor: pointer;
59
+ box-shadow: var(--nf-card-shadow);
60
+ transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
61
+ overflow: hidden;
62
+ }
63
+
64
+ .tabs__item::before {
65
+ content: '';
66
+ position: absolute;
67
+ top: 0;
68
+ left: 0;
69
+ right: 0;
70
+ height: 3px;
71
+ background: var(--nf-card-accent);
72
+ transform: scaleX(0);
73
+ transition: transform 0.25s ease;
74
+ }
75
+
76
+ .tabs__item:hover {
77
+ color: var(--nf-card-text-active);
78
+ background: var(--nf-card-bg-hover);
79
+ box-shadow: var(--nf-card-shadow-hover);
80
+ transform: translateY(-2px);
81
+ }
82
+
83
+ .tabs__item:hover::before {
84
+ transform: scaleX(0.5);
85
+ }
86
+
87
+ .tabs__item.tabs__item--active {
88
+ color: var(--nf-card-text-active);
89
+ background: var(--nf-card-bg-active);
90
+ font-weight: 600;
91
+ box-shadow: var(--nf-card-shadow-active);
92
+ transform: translateY(-4px);
93
+ }
94
+
95
+ .tabs__item.tabs__item--active::before {
96
+ transform: scaleX(1);
97
+ }
98
+
99
+ [class*="tabItem_"][role="tabpanel"] {
100
+ background: var(--nf-panel-bg);
101
+ border: 1px solid var(--nf-card-border);
102
+ border-radius: 16px;
103
+ padding: 1.75rem;
104
+ box-shadow: var(--nf-panel-shadow);
105
+ animation: floatUp 0.3s ease-out;
106
+ }
107
+
108
+ @keyframes floatUp {
109
+ from { opacity: 0; transform: translateY(12px); }
110
+ to { opacity: 1; transform: translateY(0); }
111
+ }
112
+
113
+ .margin-top--md { margin-top: 0 !important; }
114
+ [hidden] { display: none !important; }
@@ -0,0 +1,104 @@
1
+ /* ==========================================================================
2
+ TABS V9 - Sliding Line
3
+ Clean text tabs with animated line that slides between items
4
+ ========================================================================== */
5
+
6
+ :root {
7
+ --nf-line-bg: transparent;
8
+ --nf-line-border: #e5e7eb;
9
+ --nf-line-text: #6b7280;
10
+ --nf-line-text-hover: #374151;
11
+ --nf-line-text-active: #111827;
12
+ --nf-line-accent: #0068f9;
13
+ --nf-line-accent-glow: rgba(0, 104, 249, 0.15);
14
+ --nf-panel-bg: #fafafa;
15
+ --nf-panel-border: #e5e7eb;
16
+ }
17
+
18
+ html[data-theme="dark"] {
19
+ --nf-line-bg: transparent;
20
+ --nf-line-border: #374151;
21
+ --nf-line-text: #9ca3af;
22
+ --nf-line-text-hover: #d1d5db;
23
+ --nf-line-text-active: #f9fafb;
24
+ --nf-line-accent: #38bdf8;
25
+ --nf-line-accent-glow: rgba(56, 189, 248, 0.15);
26
+ --nf-panel-bg: #1f2937;
27
+ --nf-panel-border: #374151;
28
+ }
29
+
30
+ .tabs {
31
+ display: flex;
32
+ flex-wrap: wrap;
33
+ gap: 0;
34
+ padding: 0;
35
+ background: var(--nf-line-bg);
36
+ border: none;
37
+ border-bottom: 2px solid var(--nf-line-border);
38
+ border-radius: 0;
39
+ position: relative;
40
+ }
41
+
42
+ .tabs__item {
43
+ position: relative;
44
+ padding: 16px 28px;
45
+ font-size: 0.9375rem;
46
+ font-weight: 500;
47
+ color: var(--nf-line-text);
48
+ background: transparent;
49
+ border: none;
50
+ border-radius: 0;
51
+ cursor: pointer;
52
+ transition: color 0.2s ease;
53
+ }
54
+
55
+ .tabs__item:hover {
56
+ color: var(--nf-line-text-hover);
57
+ }
58
+
59
+ .tabs__item.tabs__item--active {
60
+ color: var(--nf-line-text-active);
61
+ font-weight: 600;
62
+ }
63
+
64
+ /* Animated underline */
65
+ .tabs__item::after {
66
+ content: '';
67
+ position: absolute;
68
+ bottom: -2px;
69
+ left: 50%;
70
+ width: 0;
71
+ height: 3px;
72
+ background: var(--nf-line-accent);
73
+ border-radius: 3px 3px 0 0;
74
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
75
+ transform: translateX(-50%);
76
+ }
77
+
78
+ .tabs__item:hover::after {
79
+ width: 30%;
80
+ background: var(--nf-line-text-hover);
81
+ }
82
+
83
+ .tabs__item.tabs__item--active::after {
84
+ width: calc(100% - 24px);
85
+ background: var(--nf-line-accent);
86
+ box-shadow: 0 0 12px var(--nf-line-accent-glow);
87
+ }
88
+
89
+ [class*="tabItem_"][role="tabpanel"] {
90
+ background: var(--nf-panel-bg);
91
+ border: 1px solid var(--nf-panel-border);
92
+ border-top: none;
93
+ border-radius: 0 0 10px 10px;
94
+ padding: 1.5rem;
95
+ animation: lineSlide 0.25s ease-out;
96
+ }
97
+
98
+ @keyframes lineSlide {
99
+ from { opacity: 0; transform: translateX(-10px); }
100
+ to { opacity: 1; transform: translateX(0); }
101
+ }
102
+
103
+ .margin-top--md { margin-top: 0 !important; }
104
+ [hidden] { display: none !important; }