@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,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; }
package/css/theme.css CHANGED
@@ -1,20 +1,72 @@
1
- /**
2
- * NetFoundry Docusaurus Theme - Combined Styles
3
- *
4
- * This file is automatically loaded by the theme via getClientModules().
5
- *
6
- * Consuming projects no longer need to manually add these imports
7
- * to their custom.css files.
8
- */
9
-
10
- /* CSS variables for light mode */
11
- @import "./vars.css";
12
-
13
- /* CSS variables for dark mode */
14
- @import "./vars-dark.css";
15
-
16
- /* Layout styles */
17
- @import "./layout.css";
18
-
19
- /* Legacy design system variables and comprehensive styling */
20
- @import "./legacy.css";
1
+ /**
2
+ * NetFoundry Docusaurus Theme - Combined Styles
3
+ *
4
+ * This file is automatically loaded by the theme via getClientModules().
5
+ *
6
+ * Consuming projects no longer need to manually add these imports
7
+ * to their custom.css files.
8
+ */
9
+
10
+ /* CSS variables for light mode */
11
+ @import "./vars.css";
12
+
13
+ /* CSS variables for dark mode */
14
+ @import "./vars-dark.css";
15
+
16
+ /* Layout styles */
17
+ @import "./layout.css";
18
+
19
+ /* Legacy design system variables and comprehensive styling */
20
+ @import "./legacy.css";
21
+
22
+ /* Migrated from unified-doc custom.css */
23
+ :root {
24
+ --ziti-landing-max-width: 1800px;
25
+ --ifm-container-width-xl: 1400px;
26
+ --ziti-star-us-height: 1px;
27
+ }
28
+
29
+ .navbar__brand {
30
+ margin-right: 0;
31
+ display:flex;
32
+ align-items:center;
33
+ justify-content: end;
34
+ }
35
+ .navbar__logo_nf {
36
+ margin-right: 0;
37
+ height: var(--ifm-navbar-height);
38
+ }
39
+ .navbar__logo {
40
+ margin-right: 0;
41
+ height: 40px;
42
+ width: 40px;
43
+ margin-left: 10px;
44
+ }
45
+ .clean-btn svg {
46
+ height: 30px;
47
+ width: 30px;
48
+ }
49
+
50
+ .DocSearch-Button {
51
+ background: #ebedf0;
52
+ color: var(--ifm-color-primary);
53
+ }
54
+
55
+ .main-wrapper {
56
+ article {
57
+ padding-bottom: 2em;
58
+ }
59
+ > div {
60
+ max-width: var(--ziti-landing-max-width);
61
+ width: 100%;
62
+ }
63
+ }
64
+
65
+ .navbar .navbar__inner {
66
+ margin: 0 auto;
67
+ max-width: var(--ziti-landing-max-width);
68
+ }
69
+
70
+ .navbar {
71
+ padding-top: 0;
72
+ }
@@ -86,8 +86,6 @@
86
86
  --ziti-code-block-border-color: rgb(197, 199, 201);
87
87
  --ziti-code-block-font-color: rgb(57, 58, 52);
88
88
  --ifm-code-padding-horizontal: 7px;
89
- --nf-tab-color: 222, 222, 222;
90
- --nf-tab-color-rgb: rgb(var(--nf-tab-color));
91
89
  }
92
90
  @media (max-height: 1024px) {
93
91
  /*for smaller screens, reduce space definitions*/
@@ -140,7 +138,6 @@ html[data-theme="dark"] {
140
138
  --ziti-code-block-background-color: rgb(33, 47, 77);
141
139
  --ziti-code-block-border-color: rgb(33, 47, 77);
142
140
  --ziti-code-block-font-color: rgb(148, 163, 184);
143
- --nf-tab-color: 67, 72, 98;
144
141
  }
145
142
 
146
143
  html[data-theme=dark] #Wizardly code {
@@ -1994,55 +1991,14 @@ li a code {
1994
1991
  color: rgba(117, 82, 136, 0.98);
1995
1992
  }
1996
1993
 
1997
- .tabItem_node_modules {
1998
- background-color: rgba(117, 82, 136, 0.2) !important;
1999
- border: 1px solid rgba(117, 82, 136, 0.98);
2000
- color: rgba(117, 82, 136, 0.98);
2001
-
2002
- }
2003
-
2004
- [class*="tabItem_"] {
2005
- background-color: rgb(142,142,142, .2);
2006
- position: relative;
2007
- padding: 5px 10px;
2008
- border-radius: 7px;
2009
- }
2010
- [class*="tabItem_"][role="tabpanel"] {
2011
- background-color: var(--nf-tab-color-rgb);
2012
- padding: 1em 0.5em;
2013
- }
2014
-
2015
-
2016
- .tabs__item:hover {
2017
- background-color: rgba(var(--nf-tab-color), 0.5);
2018
- }
2019
-
2020
- .tabs__item {
2021
- background-color: rgba(225,225,225, 0.3);
2022
- border-bottom-left-radius: 0;
2023
- border-bottom-right-radius: 0;
2024
- margin-right: 10px;
2025
- pointer-events: all;
1994
+ .margin-top--md {
1995
+ margin-top: 0 !important;
2026
1996
  }
2027
1997
 
2028
1998
  [hidden] {
2029
1999
  display: none !important;
2030
2000
  }
2031
2001
 
2032
- .tabs {
2033
- padding-left: 10px;
2034
- }
2035
-
2036
- .tabs__item.tabs__item--active {
2037
- background-color: var(--nf-tab-color-rgb);
2038
- border-bottom-width: 0;
2039
- pointer-events: none;
2040
- }
2041
-
2042
- .margin-top--md {
2043
- margin-top: 0 !important;
2044
- }
2045
-
2046
2002
  #Wizardly div {
2047
2003
  color: rgba(44,55,65) !important;
2048
2004
  }
@@ -0,0 +1,92 @@
1
+ /* ==========================================================================
2
+ TABS V1 - Gradient Pills
3
+ Floating pill tabs with gradient container, no underline
4
+ ========================================================================== */
5
+
6
+ :root {
7
+ --nf-tabs-bg: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);
8
+ --nf-tabs-border: rgba(0, 0, 0, 0.06);
9
+ --nf-tab-bg: rgba(255, 255, 255, 0.5);
10
+ --nf-tab-bg-hover: rgba(255, 255, 255, 0.8);
11
+ --nf-tab-bg-active: #ffffff;
12
+ --nf-tab-text: #64748b;
13
+ --nf-tab-text-hover: #334155;
14
+ --nf-tab-text-active: #0068f9;
15
+ --nf-tab-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
16
+ --nf-tab-shadow-active: 0 4px 12px -2px rgba(0, 104, 249, 0.25), 0 2px 4px rgba(0, 0, 0, 0.05);
17
+ --nf-tab-panel-bg: #ffffff;
18
+ --nf-tab-panel-border: rgba(0, 0, 0, 0.06);
19
+ --nf-tab-panel-shadow: 0 4px 24px -4px rgba(0, 0, 0, 0.1);
20
+ }
21
+
22
+ html[data-theme="dark"] {
23
+ --nf-tabs-bg: linear-gradient(135deg, #1e293b 0%, #0f172a 100%);
24
+ --nf-tabs-border: rgba(255, 255, 255, 0.06);
25
+ --nf-tab-bg: rgba(255, 255, 255, 0.03);
26
+ --nf-tab-bg-hover: rgba(255, 255, 255, 0.08);
27
+ --nf-tab-bg-active: rgba(21, 142, 237, 0.2);
28
+ --nf-tab-text: #94a3b8;
29
+ --nf-tab-text-hover: #cbd5e1;
30
+ --nf-tab-text-active: #38bdf8;
31
+ --nf-tab-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
32
+ --nf-tab-shadow-active: 0 4px 12px -2px rgba(21, 142, 237, 0.3), 0 0 0 1px rgba(56, 189, 248, 0.2);
33
+ --nf-tab-panel-bg: rgba(30, 41, 59, 0.8);
34
+ --nf-tab-panel-border: rgba(255, 255, 255, 0.06);
35
+ --nf-tab-panel-shadow: 0 4px 24px -4px rgba(0, 0, 0, 0.4);
36
+ }
37
+
38
+ .tabs {
39
+ display: flex;
40
+ flex-wrap: wrap;
41
+ gap: 8px;
42
+ padding: 8px;
43
+ margin-bottom: 0;
44
+ background: var(--nf-tabs-bg);
45
+ border-radius: 16px 16px 0 0;
46
+ border: 1px solid var(--nf-tabs-border);
47
+ border-bottom: none;
48
+ }
49
+
50
+ .tabs__item {
51
+ padding: 10px 20px;
52
+ font-size: 0.875rem;
53
+ font-weight: 500;
54
+ color: var(--nf-tab-text);
55
+ background: var(--nf-tab-bg);
56
+ border: none;
57
+ border-radius: 10px;
58
+ cursor: pointer;
59
+ transition: all 0.2s ease;
60
+ box-shadow: var(--nf-tab-shadow);
61
+ }
62
+
63
+ .tabs__item:hover {
64
+ color: var(--nf-tab-text-hover);
65
+ background: var(--nf-tab-bg-hover);
66
+ transform: translateY(-1px);
67
+ }
68
+
69
+ .tabs__item.tabs__item--active {
70
+ color: var(--nf-tab-text-active);
71
+ background: var(--nf-tab-bg-active);
72
+ font-weight: 600;
73
+ box-shadow: var(--nf-tab-shadow-active);
74
+ transform: translateY(-2px);
75
+ }
76
+
77
+ [class*="tabItem_"][role="tabpanel"] {
78
+ background: var(--nf-tab-panel-bg);
79
+ border: 1px solid var(--nf-tab-panel-border);
80
+ border-radius: 0 0 16px 16px;
81
+ padding: 1.5rem;
82
+ box-shadow: var(--nf-tab-panel-shadow);
83
+ animation: fadeSlideIn 0.25s ease-out;
84
+ }
85
+
86
+ @keyframes fadeSlideIn {
87
+ from { opacity: 0; transform: translateY(-8px); }
88
+ to { opacity: 1; transform: translateY(0); }
89
+ }
90
+
91
+ .margin-top--md { margin-top: 0 !important; }
92
+ [hidden] { display: none !important; }
@@ -0,0 +1,116 @@
1
+ /* ==========================================================================
2
+ TABS V2 - Glassmorphism
3
+ Frosted glass effect with blur, floating aesthetic
4
+ ========================================================================== */
5
+
6
+ :root {
7
+ --nf-tabs-bg: rgba(255, 255, 255, 0.7);
8
+ --nf-tabs-blur: 12px;
9
+ --nf-tabs-border: rgba(255, 255, 255, 0.3);
10
+ --nf-tab-bg: transparent;
11
+ --nf-tab-bg-hover: rgba(0, 104, 249, 0.08);
12
+ --nf-tab-bg-active: rgba(0, 104, 249, 0.12);
13
+ --nf-tab-text: #475569;
14
+ --nf-tab-text-hover: #0068f9;
15
+ --nf-tab-text-active: #0068f9;
16
+ --nf-tab-glow: 0 0 20px rgba(0, 104, 249, 0.15);
17
+ --nf-tab-panel-bg: rgba(255, 255, 255, 0.85);
18
+ --nf-tab-panel-blur: 16px;
19
+ --nf-tab-panel-border: rgba(255, 255, 255, 0.4);
20
+ --nf-tab-panel-shadow: 0 8px 32px rgba(0, 0, 0, 0.08);
21
+ }
22
+
23
+ html[data-theme="dark"] {
24
+ --nf-tabs-bg: rgba(15, 23, 42, 0.75);
25
+ --nf-tabs-blur: 12px;
26
+ --nf-tabs-border: rgba(255, 255, 255, 0.08);
27
+ --nf-tab-bg: transparent;
28
+ --nf-tab-bg-hover: rgba(56, 189, 248, 0.1);
29
+ --nf-tab-bg-active: rgba(56, 189, 248, 0.15);
30
+ --nf-tab-text: #94a3b8;
31
+ --nf-tab-text-hover: #38bdf8;
32
+ --nf-tab-text-active: #38bdf8;
33
+ --nf-tab-glow: 0 0 30px rgba(56, 189, 248, 0.2);
34
+ --nf-tab-panel-bg: rgba(15, 23, 42, 0.8);
35
+ --nf-tab-panel-blur: 16px;
36
+ --nf-tab-panel-border: rgba(255, 255, 255, 0.06);
37
+ --nf-tab-panel-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
38
+ }
39
+
40
+ .tabs {
41
+ display: flex;
42
+ flex-wrap: wrap;
43
+ gap: 4px;
44
+ padding: 6px;
45
+ margin-bottom: 0;
46
+ background: var(--nf-tabs-bg);
47
+ backdrop-filter: blur(var(--nf-tabs-blur));
48
+ -webkit-backdrop-filter: blur(var(--nf-tabs-blur));
49
+ border-radius: 14px 14px 0 0;
50
+ border: 1px solid var(--nf-tabs-border);
51
+ border-bottom: none;
52
+ }
53
+
54
+ .tabs__item {
55
+ position: relative;
56
+ padding: 12px 24px;
57
+ font-size: 0.875rem;
58
+ font-weight: 500;
59
+ letter-spacing: 0.01em;
60
+ color: var(--nf-tab-text);
61
+ background: var(--nf-tab-bg);
62
+ border: none;
63
+ border-radius: 10px;
64
+ cursor: pointer;
65
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
66
+ }
67
+
68
+ .tabs__item:hover {
69
+ color: var(--nf-tab-text-hover);
70
+ background: var(--nf-tab-bg-hover);
71
+ }
72
+
73
+ .tabs__item.tabs__item--active {
74
+ color: var(--nf-tab-text-active);
75
+ background: var(--nf-tab-bg-active);
76
+ font-weight: 600;
77
+ box-shadow: var(--nf-tab-glow);
78
+ }
79
+
80
+ /* Subtle dot indicator for active tab */
81
+ .tabs__item.tabs__item--active::before {
82
+ content: '';
83
+ position: absolute;
84
+ top: 6px;
85
+ right: 6px;
86
+ width: 6px;
87
+ height: 6px;
88
+ background: currentColor;
89
+ border-radius: 50%;
90
+ opacity: 0.8;
91
+ animation: pulse 2s infinite;
92
+ }
93
+
94
+ @keyframes pulse {
95
+ 0%, 100% { transform: scale(1); opacity: 0.8; }
96
+ 50% { transform: scale(1.2); opacity: 0.5; }
97
+ }
98
+
99
+ [class*="tabItem_"][role="tabpanel"] {
100
+ background: var(--nf-tab-panel-bg);
101
+ backdrop-filter: blur(var(--nf-tab-panel-blur));
102
+ -webkit-backdrop-filter: blur(var(--nf-tab-panel-blur));
103
+ border: 1px solid var(--nf-tab-panel-border);
104
+ border-radius: 0 0 14px 14px;
105
+ padding: 1.75rem;
106
+ box-shadow: var(--nf-tab-panel-shadow);
107
+ animation: glassReveal 0.35s ease-out;
108
+ }
109
+
110
+ @keyframes glassReveal {
111
+ from { opacity: 0; transform: scale(0.98); }
112
+ to { opacity: 1; transform: scale(1); }
113
+ }
114
+
115
+ .margin-top--md { margin-top: 0 !important; }
116
+ [hidden] { display: none !important; }